Houjie
4 天以前 51c7896fd8e45085dd5cdfff11e79a00ee0a7379
store/index.js
@@ -19,7 +19,15 @@
      username: '',
      realname: '',
      welcome: '',
      avatar: ''
    avatar: '',
    user: {}, // 补充用户信息对象
    tenantId: '', // 补充租户ID
    // 产线管理相关状态
    lineList: [], // 产线列表
    currentLineId: uni.getStorageSync('currentLineId') || null, // 当前选中的产线ID
    currentLineName: uni.getStorageSync('currentLineName') || '', // 当前选中的产线名称
    currentLineInfo: null, // 当前选中的产线详细信息
    currentLineType: uni.getStorageSync('currentLineType') || '' // 新增:当前选中的产线类型
   },
   mutations: {
      SET_AUTH(state, auth) {
@@ -39,10 +47,51 @@
      },
      SET_AVATAR: (state, avatar) => {
         state.avatar = avatar
    },
    SET_ID: (state, id) => {
      state.userid = id
    },
    SET_INFO: (state, userInfo) => {
      state.user = userInfo
    },
    SET_TENANTID: (state, tenantId) => {
      state.tenantId = tenantId
    },
    // 产线相关mutations
    SET_LINE_LIST(state, list) {
      state.lineList = list
      console.log('Vuex SET_LINE_LIST: 产线列表已更新', list);
    },
    SET_CURRENT_LINE_ID(state, lineId) {
      state.currentLineId = lineId
      uni.setStorageSync('currentLineId', lineId)
      // 同步更新当前产线信息、名称和类型
      if (lineId && state.lineList.length > 0) {
        state.currentLineInfo = state.lineList.find(line => line.id === lineId) || null
        // 从产线信息中提取名称并保存
        state.currentLineName = state.currentLineInfo ? state.currentLineInfo.name : ''
        // 新增:从产线信息中提取类型并保存
        state.currentLineType = state.currentLineInfo ? state.currentLineInfo.type : ''
        uni.setStorageSync('currentLineName', state.currentLineName)
        // 新增:将类型同步保存到本地存储
        uni.setStorageSync('currentLineType', state.currentLineType)
      } else {
        state.currentLineInfo = null
        state.currentLineName = ''
        state.currentLineType = '' // 新增:清空类型
        uni.removeStorageSync('currentLineName')
        uni.removeStorageSync('currentLineType') // 新增:清除本地存储的类型
      }
      console.log('Vuex SET_CURRENT_LINE_ID: 当前产线ID已更新', lineId);
      console.log('Vuex SET_CURRENT_LINE_NAME: 当前产线名称已更新', state.currentLineName);
      console.log('Vuex SET_CURRENT_LINE_TYPE: 当前产线类型已更新', state.currentLineType); // 新增:打印类型信息
      }
   },
   actions: {
      // 登录
    // 账号登录
      mLogin({
         commit
      }, userInfo) {
@@ -61,12 +110,14 @@
                     username: userInfo.username,
                     realname: userInfo.realname
                  })
            commit('SET_ID', userInfo.id)
            commit('SET_INFO', userInfo)
                  resolve(response)
               } else {
                  resolve(response)
               }
            }).catch(error => {
               console.log("catch===>response", response)
          console.log("登录失败:", error)
               reject(error)
            })
         })
@@ -88,6 +139,8 @@
                     realname: userInfo.realname
                  })
                  commit('SET_AVATAR', userInfo.avatar)
            commit('SET_ID', userInfo.id)
            commit('SET_INFO', userInfo)
                  resolve(response)
               } else {
                  reject(response)
@@ -138,6 +191,10 @@
            let logoutToken = state.token;
            commit('SET_TOKEN', '')
            uni.removeStorageSync(ACCESS_TOKEN)
        uni.removeStorageSync("isLogin")
        uni.removeStorageSync("userId")
        // 清除产线选择状态
        commit('SET_CURRENT_LINE_ID', null)
            api.logout(logoutToken).then(() => {
               resolve()
            }).catch(() => {
@@ -149,26 +206,56 @@
         commit
      }, auth) {
         commit('SET_AUTH', auth)
    },
    // 获取产线列表(已包含type字段)
    fetchLineList({ commit, state }) {
      return new Promise((resolve, reject) => {
        api.getLineList({
          headers: {
            'Authorization': `Bearer ${state.token}`
          }
        }).then(response => {
          console.log('fetchLineList接口返回原始数据:', response);
          if (response.data.code === 200) {
            const lineList = (response.data.result || []).map(line => ({
              id: line.value,
              name: line.text,
              type: line.type // 确保映射type字段
            }));
            commit('SET_LINE_LIST', lineList);
            resolve(lineList);
          } else {
            reject(new Error(`获取产线列表失败: ${response.data.message || '未知错误'}`));
          }
        }).catch(error => {
          console.error('获取产线列表出错:', error);
          reject(error);
        });
      });
    },
    // 设置当前产线(保持不变,类型通过mutation自动同步)
    setCurrentLine({ commit }, lineId) {
      return new Promise((resolve) => {
        commit('SET_CURRENT_LINE_ID', lineId)
        resolve()
      })
      }
   },
   getters: {
      getAuth: state => state.auth,
      token: state => state.token,
      username: state => {
         state.userid = uni.getStorageSync(USER_INFO).username;
         return state.username
      },
      nickname: state => {
         state.userid = uni.getStorageSync(USER_INFO).realname;
         return state.user.realname
      },
      avatar: state => {
         state.userid = uni.getStorageSync(USER_INFO).avatar;
         return state.user.avatar
      },
      userid: state => {
         state.userid = uni.getStorageSync(USER_INFO).id;
         return state.userid
      },
    username: state => state.username || uni.getStorageSync(USER_INFO)?.username || '',
    nickname: state => state.realname || uni.getStorageSync(USER_INFO)?.realname || '',
    avatar: state => state.avatar || uni.getStorageSync(USER_INFO)?.avatar || '',
    userid: state => state.userid || uni.getStorageSync(USER_INFO)?.id || '',
    // 产线相关getters
    lineList: state => state.lineList,
    currentLineId: state => state.currentLineId,
    currentLineName: state => state.currentLineName,
    currentLineInfo: state => state.currentLineInfo,
    currentLineType: state => state.currentLineType, // 新增:获取当前产线类型的getter
    hasSelectedLine: state => !!state.currentLineId
   }
})