user.js 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. import permision from "@/js_sdk/wa-permission/permission.js";
  2. import {
  3. getMacAddress
  4. } from "../../utils/util";
  5. import {
  6. systemList
  7. } from "@/utils/commonDicts.js";
  8. export default {
  9. namespaced: true,
  10. state: {
  11. userInfo: {},
  12. token: "",
  13. belongSystem: null, // 子系统实体类
  14. isDS: false, // 是否处于脱敏状态
  15. path: "", // 请求的前缀
  16. system: {}, // 当前选择的系统
  17. abcModel: false,
  18. spdbModel: false,
  19. ccbModel: false,
  20. dfklModel: false,
  21. publicModel: false,
  22. cibModel: false,
  23. icbcHModel: false,
  24. tjxtModel: false,
  25. homeOff: false, // 居家
  26. isOut: false, // 外访
  27. uuid: null, // 设备id
  28. netConfig: {
  29. // http://59.42.9.166:9520/proxy
  30. // http://10.0.7.100:9500
  31. ip: "https://crm.nanjingshiyu.com/prod-api", // ip
  32. // ip: "https://crmtest.nanjingshiyu.com/prod-api", // 测试环境ip
  33. // ip : "/api", // 测试环境ip
  34. // ip : "http://47.113.184.101", // 测试环境ip
  35. // ip: "http://172.16.7.200", // ip
  36. // port: "9500", // 端口
  37. isCallOff: "2", // 开关
  38. folder: "", // 文件夹
  39. webRtcIp: "", // 呼叫中心的ip
  40. webRtcPort: "", // 呼叫中心的端口s
  41. },
  42. systemList: [],
  43. redirectUrl: null,
  44. },
  45. mutations: {
  46. SET_REDIRECTURL(state, data) {
  47. state.redirectUrl = data;
  48. },
  49. SET_USER_ONLINE_STATUS: (state, data) => {
  50. state.userInfo.onlineStatus = data;
  51. },
  52. SET_USERINFO: (state, data) => {
  53. state.userInfo = data;
  54. // 动态设置 tabBar
  55. setTimeout(() => {
  56. setupTabBar(data);
  57. }, 100);
  58. },
  59. SET_TOKEN: (state, data) => {
  60. state.token = data;
  61. },
  62. SET_NETCONFIG: (state, data) => {
  63. state.netConfig = data;
  64. },
  65. SET_BELONGSYSTEM: (state, data) => {
  66. const system = state.userInfo.subsystemList.find(item => (item.systemCode == data.code));
  67. if (system) {
  68. state.belongSystem = system;
  69. data.callback && data.callback(true);
  70. } else {
  71. data.callback && data.callback(false);
  72. }
  73. },
  74. SET_ISDS: (state, value) => {
  75. state.isDS = value
  76. },
  77. SET_HOMEOFF: (state, value) => {
  78. state.homeOff = value
  79. },
  80. SET_ISOUT: (state, value) => {
  81. state.isOut = value
  82. },
  83. SET_SYSTEM(state, data) {
  84. state.path = data.path;
  85. state.system = data;
  86. state.abcModel = data.text == "农行催收";
  87. state.spdbModel = data.text == "浦发催收";
  88. state.ccbModel = data.text == "建行催收";
  89. state.publicModel = data.text == "专业催收";
  90. state.dfklModel = data.text == "商账催收";
  91. state.cibModel = data.text == "兴业催收";
  92. state.icbcHModel = data.text == "工行催收";
  93. state.tjxtModel = data.text == "调催系统";
  94. },
  95. SET_UUID(state, data) {
  96. state.uuid = data;
  97. },
  98. SET_SYSTEM_LIST(state, data) {
  99. state.systemList = data;
  100. }
  101. },
  102. actions: {
  103. setSystemlist({
  104. commit,
  105. state
  106. }, systemCodeList) {
  107. state.systemList = systemList.filter(v => systemCodeList.includes(v.value));
  108. },
  109. getUserInfo(store) {
  110. const {
  111. commit,
  112. state,
  113. dispatch
  114. } = store;
  115. return new Promise((resolve, reject) => {
  116. uni.$u.api.getInfo().then(res => {
  117. commit("SET_USERINFO", res.user);
  118. commit("SET_BELONGSYSTEM", {
  119. code: state.system.value,
  120. callback: (flag) => {
  121. resolve(res.user);
  122. }
  123. });
  124. });
  125. })
  126. },
  127. login({
  128. commit,
  129. dispatch,
  130. state
  131. }, form) {
  132. return new Promise((resolve, reject) => {
  133. uni.$u.api.login(form).then((loginRes) => {
  134. const token = loginRes.data.access_token;
  135. commit("SET_TOKEN", token);
  136. dispatch("getUserInfo").then((userInfo) => {
  137. const { userId } = userInfo;
  138. resolve(userId);
  139. }).catch(() => {
  140. commit("SET_TOKEN", "");
  141. commit("SET_USERINFO", {});
  142. reject();
  143. })
  144. })
  145. })
  146. },
  147. logout({
  148. commit,
  149. dispatch
  150. }) {
  151. return uni.$u.api.logout().then(() => {
  152. // 停止电话监听
  153. dispatch("call/stopPhoneListener", null, { root: true }).catch(error => {
  154. console.error('退出登录时停止电话监听失败:', error);
  155. });
  156. commit("SET_TOKEN", "");
  157. commit("SET_USERINFO", {});
  158. dispatch("app/logoutCloseData", null, {
  159. root: true
  160. });
  161. Promise.resolve();
  162. }).catch(() => {
  163. Promise.reject();
  164. })
  165. },
  166. }
  167. }
  168. function setupTabBar(userInfo) {
  169. if (!userInfo || !userInfo.roles) {
  170. return tabBarDefault;
  171. }
  172. const roles = userInfo.roles;
  173. // 销售线索、我的是所有用户都有的
  174. // 如果是销售经理SALESMAN,则也展示询价中心、核价中心
  175. // 如果是其他角色,则也展示首页、线索公海、仓库、接单中心
  176. // 下标index从0开始
  177. const hasSalesmanRole = roles.some(role => role.roleKey === 'SALESMAN');
  178. if (hasSalesmanRole) {
  179. uni.setTabBarItem({ index:3,visible: true });//询价中心
  180. uni.setTabBarItem({ index: 4,visible: true });//核价中心
  181. }else{
  182. // uni.setTabBarItem({ index:3,visible: true });//询价中心
  183. // uni.setTabBarItem({ index: 4,visible: true });//核价中心
  184. uni.setTabBarItem({ index:0,visible: true });//首页
  185. uni.setTabBarItem({ index: 1,visible: true });//线索公海
  186. uni.setTabBarItem({ index: 2,visible: true });//仓库
  187. uni.setTabBarItem({ index: 6,visible: true });//接单中心
  188. }
  189. }