| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345 |
- import permision from "@/js_sdk/wa-permission/permission.js";
- import {
- getMacAddress
- } from "../../utils/util";
- import {
- systemList
- } from "@/utils/commonDicts.js";
- export default {
- namespaced: true,
- state: {
- userInfo: {},
- token: "",
- belongSystem: null, // 子系统实体类
- isDS: false, // 是否处于脱敏状态
- path: "", // 请求的前缀
- system: {}, // 当前选择的系统
- abcModel: false,
- spdbModel: false,
- ccbModel: false,
- dfklModel: false,
- publicModel: false,
- cibModel: false,
- icbcHModel: false,
- tjxtModel: false,
- homeOff: false, // 居家
- isOut: false, // 外访
- uuid: null, // 设备id
- permissions: [], // 权限列表
- netConfig: {
- // http://59.42.9.166:9520/proxy
- // http://10.0.7.100:9500
- // ip: "https://crm.nanjingshiyu.com/prod-api/", // ip
- ip: "https://crmtest.nanjingshiyu.com/prod-api", // 测试环境ip
- // ip : "/api", // 测试环境ip
- // ip : "http://47.113.184.101", // 测试环境ip
- // ip: "http://172.16.7.200", // ip
- // port: "9500", // 端口
- isCallOff: "2", // 开关
- folder: "", // 文件夹
- webRtcIp: "", // 呼叫中心的ip
- webRtcPort: "", // 呼叫中心的端口s
- },
- systemList: [],
- redirectUrl: null,
- availableRoles: [], // 可用的角色列表
- currentRoleIndex: 0, // 当前选中的角色索引
- showRoleSwitch: false, // 是否显示切换权限按钮
- warehouseFieldPermissions: [], // 仓库字段权限 [{ fieldName, read, edit }, ...],登录后按当前用户角色合并
- warehouseButtonPermissions: [], // 仓库按钮权限
- },
- mutations: {
- SET_REDIRECTURL(state, data) {
- state.redirectUrl = data;
- },
- SET_USER_ONLINE_STATUS: (state, data) => {
- state.userInfo.onlineStatus = data;
- },
- SET_USERINFO: (state, data) => {
- state.userInfo = data;
- const roles = data.roles || [];
-
- const validRoles = [];
-
- const hasAdminRole = roles.some(role => role.roleKey && role.roleKey.includes('admin' || 'ADMIN'));
- const hasCrmRole = roles.some(role => role.roleKey && role.roleKey.includes('CRM'));
- const hasWarehouser = roles.some(role => role.roleKey === 'WAREHOUSER');
- const hasSalesman = roles.some(role => role.roleKey === 'SALESMAN');
- if(hasAdminRole){//管理员
- validRoles.push('admin');
- state.showRoleSwitch = true;
- }else if( (hasCrmRole && hasWarehouser) || (hasCrmRole && hasSalesman)){//crm+仓库、crm+销售
- validRoles.push('CRM','WAREandSALE');
- state.showRoleSwitch = true;
- }else if(hasWarehouser && hasSalesman){
- validRoles.push('WAREandSALE');
- state.showRoleSwitch = false;
- }else if(hasCrmRole){//只有crm
- validRoles.push('CRM');
- state.showRoleSwitch = false;
- }else if(hasWarehouser || hasSalesman){//只有仓库或销售
- validRoles.push('WAREandSALE');
- state.showRoleSwitch = false;
- }
- state.availableRoles = validRoles;
- state.currentRoleIndex = validRoles.indexOf(uni.getStorageSync('activeTab') || '') || 0;
- setTimeout(() => {
- const allIndices = [0, 1, 2, 3, 4, 5, 6];
- allIndices.forEach(index => {
- uni.setTabBarItem({ index, visible: false });
- });
- const currentRole = validRoles[0] || '';
- const activeTab = uni.getStorageSync('activeTab') || currentRole;
- switch (activeTab) {
- case 'admin':
- // 展示首页、线索公海、销售线索、接单中心、我的
- uni.setTabBarItem({ index: 0, visible: true }); // 首页
- uni.setTabBarItem({ index: 1, visible: true }); // 线索公海
- uni.setTabBarItem({ index: 5, visible: true }); // 销售线索
- uni.setTabBarItem({ index: 6, visible: true }); // 接单中心
- break;
- case 'WAREandSALE':
- // 展示仓库、核价中心、询价中心、我的
- uni.setTabBarItem({ index: 2, visible: true }); // 仓库
- uni.setTabBarItem({ index: 3, visible: true }); // 询价中心
- uni.setTabBarItem({ index: 4, visible: true }); // 核价中心
- break;
- case 'CRM':
- // 展示首页、线索公海、销售线索、接单中心、我的
- uni.setTabBarItem({ index: 0, visible: true }); // 首页
- uni.setTabBarItem({ index: 1, visible: true }); // 线索公海
- uni.setTabBarItem({ index: 5, visible: true }); // 销售线索
- uni.setTabBarItem({ index: 6, visible: true }); // 接单中心
- break;
- }
-
- uni.setTabBarItem({ index: 7, visible: true }); // 我的
- }, 100);
- },
- SET_TOKEN: (state, data) => {
- state.token = data;
- },
- SET_NETCONFIG: (state, data) => {
- state.netConfig = data;
- },
- SET_BELONGSYSTEM: (state, data) => {
- const system = state.userInfo.subsystemList.find(item => (item.systemCode == data.code));
- if (system) {
- state.belongSystem = system;
- data.callback && data.callback(true);
- } else {
- data.callback && data.callback(false);
- }
- },
- SET_ISDS: (state, value) => {
- state.isDS = value
- },
- SET_HOMEOFF: (state, value) => {
- state.homeOff = value
- },
- SET_ISOUT: (state, value) => {
- state.isOut = value
- },
- SET_SYSTEM(state, data) {
- state.path = data.path;
- state.system = data;
- state.abcModel = data.text == "农行催收";
- state.spdbModel = data.text == "浦发催收";
- state.ccbModel = data.text == "建行催收";
- state.publicModel = data.text == "专业催收";
- state.dfklModel = data.text == "商账催收";
- state.cibModel = data.text == "兴业催收";
- state.icbcHModel = data.text == "工行催收";
- state.tjxtModel = data.text == "调催系统";
- },
- SET_UUID(state, data) {
- state.uuid = data;
- },
- SET_SYSTEM_LIST(state, data) {
- state.systemList = data;
- },
- // 权限相关mutations
- SET_AVAILABLE_ROLES(state, roles) {
- state.availableRoles = roles;
- },
- SET_CURRENT_ROLE_INDEX(state, index) {
- state.currentRoleIndex = index;
- },
- SET_SHOW_ROLE_SWITCH(state, show) {
- state.showRoleSwitch = show;
- },
- SET_PERMISSIONS: (state, permissions) => {
- state.permissions = permissions || [];
- },
- SET_WAREHOUSE_FIELD_PERMISSIONS: (state, list) => {
- state.warehouseFieldPermissions = Array.isArray(list) ? list : [];
- },
- SET_WAREHOUSE_BUTTON_PERMISSIONS: (state, list) => {
- state.warehouseButtonPermissions = Array.isArray(list) ? list : [];
- },
- SWITCH_ROLE({}, role) {
- setTimeout(() => {
- const allIndices = [0, 1, 2, 3, 4, 5, 6];
- allIndices.forEach(index => {
- uni.setTabBarItem({ index, visible: false });
- });
- uni.setStorageSync('activeTab', role.value || '');
- switch (role.value) {
- case 'WAREandSALE':
- // 展示仓库、核价中心、询价中心、我的
- uni.setTabBarItem({ index: 2, visible: true }); // 仓库
- uni.setTabBarItem({ index: 3, visible: true }); // 询价中心
- uni.setTabBarItem({ index: 4, visible: true }); // 核价中心
- break;
- case 'CRM':
- // 展示首页、线索公海、销售线索、接单中心、我的
- uni.setTabBarItem({ index: 0, visible: true }); // 首页
- uni.setTabBarItem({ index: 1, visible: true }); // 线索公海
- uni.setTabBarItem({ index: 5, visible: true }); // 销售线索
- uni.setTabBarItem({ index: 6, visible: true }); // 接单中心
- break;
- }
-
- uni.setTabBarItem({ index: 7, visible: true }); // 我的
- }, 100);
- }
- },
- actions: {
- setSystemlist({
- commit,
- state
- }, systemCodeList) {
- state.systemList = systemList.filter(v => systemCodeList.includes(v.value));
- },
- getUserInfo(store) {
- const {
- commit,
- state,
- dispatch
- } = store;
- return new Promise((resolve, reject) => {
- uni.$u.api.getInfo().then(res => {
- commit("SET_USERINFO", res.user);
- // 保存权限列表
- if (res.permissions && res.permissions.length > 0) {
- commit("SET_PERMISSIONS", res.permissions);
- } else {
- commit("SET_PERMISSIONS", []);
- }
- // 登录后拉取仓库字段权限并存到 store(按当前用户角色合并)
- uni.$u.api.wareHouseFieldPermissions({}).then((permRes) => {
- const list = (permRes && permRes.data && Array.isArray(permRes.data)) ? permRes.data : [];
- commit("SET_WAREHOUSE_FIELD_PERMISSIONS", list);
- }).catch(() => {
- commit("SET_WAREHOUSE_FIELD_PERMISSIONS", []);
- });
- // 登录后拉取仓库按钮权限并存到 store(按当前用户角色合并)
- uni.$u.api.wareHouseButtonPermissions({}).then((permRes) => {
- const list = (permRes && permRes.data && Array.isArray(permRes.data)) ? permRes.data : [];
- commit("SET_WAREHOUSE_BUTTON_PERMISSIONS", list);
- }).catch(() => {
- commit("SET_WAREHOUSE_BUTTON_PERMISSIONS", []);
- });
- commit("SET_BELONGSYSTEM", {
- code: state.system.value,
- callback: (flag) => {
- resolve(res.user);
- }
- });
- });
- })
- },
- login({
- commit,
- dispatch,
- state
- }, form) {
- return new Promise((resolve, reject) => {
- uni.$u.api.login(form).then((loginRes) => {
- const token = loginRes.data.access_token;
- commit("SET_TOKEN", token);
- dispatch("getUserInfo").then((userInfo) => {
- const { userId } = userInfo;
- resolve(userId);
- }).catch(() => {
- commit("SET_TOKEN", "");
- commit("SET_USERINFO", {});
- reject();
- })
- })
- })
- },
- logout({
- commit,
- dispatch
- }) {
- return uni.$u.api.logout().then(() => {
- // 停止电话监听
- dispatch("call/stopPhoneListener", null, { root: true }).catch(error => {
- console.error('退出登录时停止电话监听失败:', error);
- });
- commit("SET_TOKEN", "");
- commit("SET_USERINFO", {});
- commit("SET_PERMISSIONS", []); // 清空权限列表
- commit("SET_WAREHOUSE_FIELD_PERMISSIONS", []); // 清空仓库字段权限
- dispatch("app/logoutCloseData", null, {
- root: true
- });
- Promise.resolve();
- }).catch(() => {
- Promise.reject();
- })
- },
- }
- }
- export function setupTabBar(userInfo, availableRoles, currentRoleIndex) {
- // 隐藏所有tabbar项,然后根据当前角色显示对应的项
- // 下标index从0开始
- const allIndices = [0, 1, 2, 3, 4, 5, 6];
- allIndices.forEach(index => {
- uni.setTabBarItem({ index, visible: false });
- });
-
- // 获取当前角色
- const currentRole = availableRoles[currentRoleIndex] || '';
- const activeTab = uni.getStorageSync('activeTab') || currentRole;
- // 根据当前角色显示对应的tabbar
- switch (activeTab) {
- case 'WAREandSALE':
- // 展示仓库、核价中心、询价中心、我的
- uni.setTabBarItem({ index: 2, visible: true }); // 仓库
- uni.setTabBarItem({ index: 3, visible: true }); // 询价中心
- uni.setTabBarItem({ index: 4, visible: true }); // 核价中心
- break;
- case 'CRM':
- // 展示首页、线索公海、销售线索、接单中心、我的
- uni.setTabBarItem({ index: 0, visible: true }); // 首页
- uni.setTabBarItem({ index: 1, visible: true }); // 线索公海
- uni.setTabBarItem({ index: 5, visible: true }); // 销售线索
- uni.setTabBarItem({ index: 6, visible: true }); // 接单中心
- break;
- default:
- // 默认情况,显示CRM相关的tabbar
- uni.setTabBarItem({ index: 0, visible: true }); // 首页
- uni.setTabBarItem({ index: 1, visible: true }); // 线索公海
- uni.setTabBarItem({ index: 5, visible: true }); // 销售线索
- uni.setTabBarItem({ index: 6, visible: true }); // 接单中心
- break;
- }
-
- // "我的"tab默认都展示(假设我的tab是index为7的位置)
- // 注意:这里需要根据实际的tabbar配置来调整index
- // 如果"我的"tab的index不是7,请修改下面的代码
- uni.setTabBarItem({ index: 7, visible: true }); // 我的
- }
- // 导出切换权限的action
- export function switchRole({ commit, state }, currentRole) {
- commit('SWITCH_ROLE', currentRole);
- }
|