zhangjq
2026-01-27 6f51f667ae7b13dca029045c221d0b1722cf98df
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
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
/**
 * initData组件 - 初始化数据组件
 * 功能:处理登录后的用户数据初始化,包括社区信息加载、权限加载等
 * @param {Object} vc - 框架核心对象
 */
(function (vc) {
    vc.extends({
        data: {
            initDataInfo: {
                loginUsers: [], // 登录用户列表,支持多用户选择
                pageUrl: '' // 登录后跳转的页面URL
            }
        },
        /**
         * 组件初始化方法
         * 在组件创建时自动调用,这里为空实现
         */
        _initMethod: function () {
 
        },
        /**
         * 组件事件初始化方法
         * 注册组件事件监听器,处理外部事件通知
         */
        _initEvent: function () {
            // 监听initData组件的loadCommunityInfo事件,用于处理登录后的社区信息加载
            vc.on('initData', 'loadCommunityInfo', function (_param) {
                // 将参数中的登录用户列表和页面URL保存到组件数据中
                $that.initDataInfo.loginUsers = _param.loginUsers;
                $that.initDataInfo.pageUrl = _param.url;
                
                // 如果有多个登录用户,打开选择弹框让用户选择
                if ($that.initDataInfo.loginUsers.length > 1) {
                    $that._initOpenModal();
                    return;
                }
                
                // 如果只有一个登录用户,直接初始化用户信息
                $that._initLoginUserInfo($that.initDataInfo.loginUsers[0]);
            })
        },
        methods: {
            /**
             * 初始化打开用户选择弹框
             * 当存在多个登录用户时,显示选择界面让用户选择要使用的账号
             */
            _initOpenModal: function () {
                // 构建用户选择表格的HTML内容
                var content = '<div style="padding: 20px;">';
                content += '<table class="layui-table">';
                content += '<thead><tr><th>选择</th><th>账号</th><th>隶属</th><th>角色</th></tr></thead>';
                content += '<tbody>';
                
                // 遍历登录用户列表,生成表格行
                $that.initDataInfo.loginUsers.forEach(function (item) {
                    content += `<tr>
                    <td><input type="radio" name="selectedItem" value='${JSON.stringify(item)}'></td>
                    <td>${item.userName}(${item.userId})</td>
                    <td>${item.storeName}</td>
                    <td>${item.relCdName}</td>
                  </tr>`;
                });
                
                content += '</tbody></table>';
                content += '</div>';
 
                // 使用layer.open打开用户选择弹框
                layer.open({
                    type: 1, // 1表示页面层
                    title: '请选择账号', // 弹框标题
                    content: content, // 弹框内容,即上面构建的HTML
                    area: ['600px', '400px'], // 弹框大小
                    btn: ['确定', '取消'], // 弹框按钮
                    // 确定按钮回调函数
                    yes: function (index, layero) {
                        // 获取用户选择的radio按钮
                        let selected = document.querySelector('input[name="selectedItem"]:checked');
                        if (selected) {
                            // 解析选中的值,获取用户信息
                            let selectedData = JSON.parse(selected.value);
                            // 初始化选中的用户信息
                            $that._initLoginUserInfo(selectedData);
                        } else {
                            // 如果没有选择,提示用户
                            vc.toast('请选择');
                        }
                        layer.close(index); // 关闭弹框
                    },
                    // 取消按钮回调函数
                    btn2: function (index, layero) {
                        layer.close(index); // 关闭弹框
                    }
                });
            },
            /**
             * 初始化登录用户信息
             * @param {Object} _user - 用户信息对象,包含token等关键信息
             */
            _initLoginUserInfo: function (_user) {
                // 将用户token保存到缓存中,供其他组件使用
                vc.saveData('hc_accessToken', {
                    token: _user.token
                });
                // 验证用户是否有权限访问门店
                $that._validateHasStore();
            },
            /**
             * 加载社区信息
             * 从服务器获取用户所属的社区列表,并设置当前社区
             */
            _loadCommunityInfo: function () {
                // 请求参数
                let param = {
                    params: {
                        _uId: 'ccdd00opikookjuhyyttvhnnjuuu', // 用户ID标识
                        page: 1, // 页码
                        row: 3 // 每页记录数
                    }
                };
                
                // 调用HTTP API获取社区列表
                vc.http.apiGet('/community.listMyEnteredCommunitys',
                    param,
                    // 请求成功回调
                    function (json, res) {
                        let _json = JSON.parse(json);
                        // 如果返回码为0,表示请求成功
                        if (_json.code == 0) {
                            let _communityInfos = _json.communitys;
                            // 如果有社区信息,设置当前社区和社区列表
                            if (_communityInfos && _communityInfos.length > 0) {
                                vc.setCurrentCommunity(_communityInfos[0]);
                                vc.setCommunitys(_communityInfos);
                            } else {
                                // 如果没有社区信息,提示用户
                                vc.toast('运营团队未分配小区,请联系运营团队');
                                return;
                            }
                            // 跳转到指定页面
                            vc.jumpToPage($that.initDataInfo.pageUrl);
                        }
                    },
                    // 请求失败回调
                    function () {
                        // 无论失败与否,都跳转到指定页面
                        vc.jumpToPage($that.initDataInfo.pageUrl);
                    }
                );
            },
            /**
             * 验证用户是否有权限访问门店
             * 调用API检查用户所属门店信息
             */
            _validateHasStore: function () {
                // 请求参数
                let param = {
                    params: {
                        _uId: 'ccdd00opikookjuhyyttvhnnjuuu' // 用户ID标识
                    }
                };
                
                // 调用HTTP API查询用户所属门店
                vc.http.apiGet('/query.store.byuser',
                    param,
                    // 请求成功回调
                    function (json, res) {
                        if (res.status == 200) {
                            // 如果请求成功,加载用户权限
                            $that._loadStaffPrivileges();
                        } else {
                            // 如果请求失败,提示错误信息
                            vc.toast(json);
                        }
                    },
                    // 请求失败回调
                    function (e, res) {
                        console.log('请求失败处理', e);
                        // 提示错误信息
                        vc.toast(e);
                    }
                );
            },
            /**
             * 加载员工权限
             * 获取当前用户的操作权限列表,并保存到缓存中
             */
            _loadStaffPrivileges: function (_param) {
                // 请求参数
                let param = {
                    params: {
                        a: 'HC' // 应用标识
                    }
                };
                
                // 发送get请求获取用户权限
                vc.http.apiGet('/query.user.privilege',
                    param,
                    // 请求成功回调
                    function (json) {
                        let _json = JSON.parse(json);
                        
                        // 提取权限ID列表
                        let _privilege = [];
                        _json.datas.forEach(item => {
                            _privilege.push(item.pId);
                        });
                        
                        // 将权限列表保存到缓存中
                        vc.saveData('hc_staff_privilege', _privilege);
                        // 加载社区信息
                        $that._loadCommunityInfo();
                    },
                    // 请求失败回调
                    function () {
                        console.log('请求失败处理');
                    });
            },
        }
    });
 
 
})(window.vc);