linwe
2024-08-08 3c738f4fe2762bba8087e5a22fc0dc06560eab0e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
import {
    dynamicMenu,
} from "@/api/system/role.js"
let lifeData = {};
 
try {
    // 尝试获取本地是否存在lifeData变量,第一次启动APP时是不存在的
    lifeData = uni.getStorageSync('lifeData');
} catch (e) {
 
}
 
// 需要永久存储,且下次APP启动需要取出的,在state中的变量名
let saveStateKeys = ['userInfo', 'accessToken', 'isLogin', 'adCodeBase'];
 
// 保存变量到本地存储中
const saveLifeData = function(key, value) {
    // 判断变量名是否在需要存储的数组中
    if (saveStateKeys.indexOf(key) != -1) {
        // 获取本地存储的lifeData对象,将变量添加到对象中
        let tmp = uni.getStorageSync('lifeData');
        // 第一次打开APP,不存在lifeData变量,故放一个{}空对象
        tmp = tmp ? tmp : {};
        tmp[key] = value;
        // 执行这一步后,所有需要存储的变量,都挂载在本地的lifeData对象中
        uni.setStorageSync(key, value);
        uni.setStorageSync('lifeData', tmp);
    }
    if (key == 'refreshToken') {
        uni.setStorageSync('token', {
            content: value,
            datetime: new Date().getTime()
        })
    }
}
const store = new Vuex.Store({
    // 下面这些值仅为示例,使用过程中请删除
    state: {
        // 如果上面从本地获取的lifeData对象下有对应的属性,就赋值给state中对应的变量
        userInfo: lifeData.userInfo ? lifeData.userInfo : {
            avatar: '',
            nick_name: '游客',
            tenant_id: '暂无'
        },
        accessToken: lifeData.accessToken ? lifeData.accessToken : '',
        isLogin: lifeData.isLogin ? lifeData.isLogin : false,
        // 如果version无需保存到本地永久存储,无需lifeData.version方式
        version: '1.0.0',
        activeRole: {},
        // tabBarList: [],
        adCodeBase: {},
        // tabbarIndex: uni.getStorageSync("tabbarIndex") || 0,
        hasUpdate: false, //true为不可登录,需要更新,false则是最新版
        menu: [],
        siteInfo: {}, //社区信息
        labelMenuList: [] //标签报事菜单
    },
 
    mutations: {
        $uStore(state, payload) {
            // 判断是否多层级调用,state中为对象存在的情况,诸如user.info.score = 1
            let nameArr = payload.name.split('.');
            let saveKey = '';
            let len = nameArr.length;
            if (nameArr.length >= 2) {
                let obj = state[nameArr[0]];
                for (let i = 1; i < len - 1; i++) {
                    obj = obj[nameArr[i]];
                }
                obj[nameArr[len - 1]] = payload.value;
                saveKey = nameArr[0];
            } else {
                // 单层级变量,在state就是一个普通变量的情况
                state[payload.name] = payload.value;
                saveKey = payload.name;
            }
            // 保存变量到本地,见顶部函数定义
            saveLifeData(saveKey, state[saveKey])
        },
        // // 设置菜单
        // setTabBarList(state, data) {
        //     let i = 0
        //     if (state.tabBarList.length > 0) {
        //         i = state.tabBarList.length
        //     }
        //     data.forEach(e => {
        //         e.i = i
        //         i++
        //     })
 
        //     state.tabBarList = data;
        //     uni.setStorageSync('tabBarList', data)
        //     // console.log(uni.getStorageSync('tabBarList'))
        // },
        //设置当前激活的角色
        setActiveRole(state, role) {
            console.log("role===>", role);
            state.activeRole = role
            uni.setStorageSync('activeRole', role)
        },
 
        SET_MENU(state, menuList) {
            state.menu = menuList
            uni.setStorageSync('menu', menuList)
        },
 
        //设置底部导航栏索引
        // SET_TABBAT_INDEX(state, index) {
        //     state.tabbarIndex = index
        //     uni.setStorageSync('tabbarIndex', index)
        // },
        SET_HAS_UPDATE(state, val) {
            state.hasUpdate = val
            uni.setStorageSync('hasUpdate', val)
        },
        SET_USER_INFO(state, data) {
            state.userInfo = data
            uni.setStorageSync('userInfo', data)
        },
        //设置社区位置
        setSiteInfo(state, val) {
            state.siteInfo = val;
            uni.setStorageSync('siteInfo', val)
        },
        //标签报事菜单
        setLabelReporMenutList(state, val) {
            state.labelMenuList = val;
            uni.setStorageSync('labelMenuList', val);
        }
 
    },
    actions: {
 
 
        getMenuList({
            commit
        }) {
            // let id = uni.getStorageSync("activeRole").id;
            let {
                id,
                roleName
            } = uni.getStorageSync("activeRole")
            return new Promise((resolve, reject) => {
                let param = {
                    roleId: id
                }
                if (uni.getStorageSync("siteInfo").addressType == 1 || roleName == "居民") {
                    param.labelType = uni.getStorageSync("siteInfo").addressType;
                    param.houseCode = uni.getStorageSync("siteInfo").houseCode;
                }
                param.roleName = roleName;
                dynamicMenu(param).then(res => {
                    if (res.code == 200) {
                        let data = res.data;
                        if (!data) return
                        let menu = data.filter(e => e.name == 'app')[0].children;
                        commit("SET_MENU", menu);
                        // let liveList = menu.filter(item=>item.name == '生活')
                        // let labelList = [];
                        // if(liveList.length && liveList[0].children){
                        //     for(let i of liveList[0].children){
                        //         if(i.name == "标签报事" && i.children.length){
                        //             commit("setLabelReporMenutList",i.children)
                        //             break;
                        //         }
                        //     }
                        // }
                        resolve(menu)
                    } else {
                        reject("fail")
                    }
                })
            })
        }
    }
})
 
export default store