tom
2023-12-06 9e968679ed2e6937aeb7b50a6c450d5d19251f42
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
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <title>人员角色</title>
        <script src="../../../js/vue/vue.js"></script>
        <script src="../../../js/vue/element-ui/lib/index.js"></script>
        <script src="../../../js/vue/axios/dist/axios.min.js"></script>
        <script src="../../../js/myelement.js"></script>
        <script src="../../../js/vue/page.js"></script>
        <script src="../../../js/common.js"></script>
        
        <link href="../../../js/vue/element-ui/lib/theme-chalk/index.css" rel="stylesheet">
        <link href="../../../css/myelement.css" rel="stylesheet">
        <link href="../../../css/iconfont.css" rel="stylesheet">
        <link href="../../../css/page.css" rel="stylesheet">
        <link href="//at.alicdn.com/t/font_2374495_13ltsxm2eor.css" rel="stylesheet">
    </head>
    
    <body>
        <div id="vbody">
            <div id="page_root">
                <div class="topbar">
                    <span>{{title}}</span>
                </div>
            
                <div style="padding: 0 20px; box-sizing: border-box;">
                    <div style="width: 59%; height: 100%; float: left; border: 1px solid #ccc;">
                        <div style="float: right; margin: 0px;">
                            <h-form-filter ref="form1"
                                :form-attr="filterAttr" 
                                :table-fields="filterFields" 
                                :form-data="filterObj" 
                                :isbuttonquery="true"
                                v-on:on-formchange="onQuery" 
                                v-on:show-popup="showFilterPopup"
                                v-on:on-query="onQuery"
                                v-on:on-init-query="onInitFilter"
                                v-on:on-edit-query="onEditFilter"
                                >
                            </h-form-filter>
                        </div>
                        <h-table
                            ref="table1" 
                            :tableloading="tableloading"
                            :table-fields="tableFields" 
                            :table-data="tableData"
                            :is-edit-table-data="isEditTableData" 
                            :table-height="tableHeight" 
                            :is-highlight-row="true"
                            :pagesize="pagesize"
                            :pagenum="pagenum"
                            :total="total"
                            v-on:get-data="getData"
                            v-on:row-click="rowClick">
                        </h-table>
                    </div>
                    <div
                        :style="{width: '40%', height: tableHeight + 120+'px', float: 'right', border: '1px solid #ccc'}">
                        <el-container >
                            
                            <el-main
                                :style="{height: tableHeight +300 +'px', 'border-left': '1px solid #ccc', padding: 0}">
                                <div style="border-bottom: 1px solid #ccc; height: 40px; padding-left: 20px;">
                                    <div style="float: left; margin-left: 10px; font-weight: bold; line-height: 40px;">
                                        <span>角色列表</span>
                                    </div>
                                    <div style="float: right; margin: 5px;">
                                        <el-button-group style="margin-left: 3px;">
                                            <el-button @click="onSaveResourceByPage">保存</el-button>
                                        </el-button-group>
                                    </div>
                                </div>
                                <div style="padding-left: 10px; padding-right: 10px; box-sizing: border-box;">
                                    <h-table ref="table_role" :table-fields="tableFields_Role"
                                        :table-data="tableData_role" :select-table-data="selectRole"
                                        :table-height="tab_tableHeight" :is-selection="true" row-key="id"
                                        :is-show-index="true" :is-pagination="false"
                                        v-on:selection-change="selectionRole">
                                    </h-table>
                                </div>
                            </el-main>
                        </el-container>
                    </div>
                </div>
            </div>
            <div id="page_loading" style="position: absolute; top:0px; width: 100vw; height: 100vh;">
                <div class="spinner">
                  <div class="cube1"></div>
                  <div class="cube2"></div>
                </div>
            </div>
        </div>    
        
        <script type="text/javascript">
            
            var initlized = false;
            
            new ListVue({
                el: "#vbody",
                data: {
                    dataname: "VEmployeeAndUser",
                    tabaleFieldsName: "empRoleConfig_",
                    filterFieldsName: "empRoleConfig_",
                    title: "人员角色",
                    filterObj:{
                        type:"employee"
                    },
                    filterAttr: {
                        columnnumber: 3,
                        labelwidth: "80px",
                        labelposition: "right",
                        size: "medium",
                        border: "3px solid #c6c6c600"
                    },
                    orderby: "",
                    emp_code:"",
                    emp_name:"",
                    tab_tableHeight:0,
                    selectMenu: [],    //需要添加的资源
                    selectMenu_old: [],    //需要添加的资源
                    tableHeight:420,
                    menuId:"",
                    selectRole: [],
                    tableData_role: [],
                    requestNum:0,
                    tableFields_Role: [
                        {isshow: "T", field: "id", name: "id", align: "center"},
                        {isshow: "T", field: "name", name: "名称", align: "left"},
                    ],
                    
                },
                created() {
                    this.pageCode = "A1-5";
                    this.getResoures();
                },
                
                mounted() {
                    let me = this;
                    this.initData();
                    var params = {
                        isClientMode: false,
                        dataname: "sysRole", //buttonByTab/buttonByPanel
                        filter: "1=1",
                    }
                    Server.call("root/data/getEntitySet", params, function(result) {
                        if (result && result.data) {
                            me.tableData_role = result.data.entityset;
                            me.$nextTick(()=>{
                                me.tab_tableHeight = me.tableHeight + 60;
                            })
                        }
                    })
                    this.$nextTick(() => { // 以服务的方式调用的 Loading 需要异步关闭
                        hideLoading();
                    });
                },
                
                methods:{
                    initData() {
                        if (initlized) { return; }
                        initlized = true;
                        
                        this.onQuery();
                    },
                    
                    onServerInitData(data) {
                        var me = this.data;
                        
                        me.tableFields = data.tableFields;
                        me.filterFields = data.filterFields;
                    
                        if(me.filterFields.length > 0) {
                            for(var i=0; i < me.filterFields.length; i++) {
                                let fieldObj_ = me.filterFields[i];
                                
                                me.filterFieldsObj[fieldObj_.field] = fieldObj_;
                            }
                        }    
                        if(me.tableFields.length > 0) {
                            for(var i=0; i < me.tableFields.length; i++) {
                                let fieldObj_ = me.tableFields[i];
                                
                                me.tableFieldsObj[fieldObj_.field] = fieldObj_;
                            }
                        }
                    },
                    
                    rowClick(obj) {
                        let me = this;
                        me.emp_code = obj.row.employee_code;
                        me.emp_name = obj.row.md_description;
                        me.selectRole = [];
                        me.selectMenu = [];
                        me.selectMenu_old = [];
                        me.getDefaultSelect();
                        
                    },
                    getDefaultSelect() {
                        let me = this;
                        filter_ = "sys_role_mapping.business_id='" + me.emp_code + "'";
                        param_ = {
                            isClientMode: false,
                            dataname: "getRoleByEmployee",
                            filter: filter_,
                        }
                        Server.call("root/data/getEntitySet", param_, function(result) {
                            console.log(result);
                            if (result && result.data) {
                                let data_ = result.data.entityset;
                                let arr = [];
                                for (let i = 0; i < data_.length; i++) {
                                    arr[i] = data_[i].id
                                    me.selectMenu_old.push(data_[i]);
                                }
                                me.selectRole = arr;
                                //me['select' + type] = arr;
                                
                                
                            }
                        });
                    },
                    
                    
                    selectionRole(arr) {
                        this.selectMenu = arr;
                    },
                    doQuery: function(total_tab) {
                        let me = this;
                        let filter_ = "1=1";
                        this.filterList = [];
                        this.selectedrow = {};
                        filter_ += this.filter_;
                        for(var k in this.filterObj) {
                            let k_val = this.filterObj[k];
                            
                            if (typeof(k_val) == "string") {
                                this.filterObj[k] = k_val = k_val.replace(/(^\s*)|(\s*$)/g, "");
                            }
                            
                            let fieldObj_ = this.filterFieldsObj[k];
                            
                            if (!fieldObj_) {
                                continue
                            }
                            
                            let type_ = fieldObj_.type;
                            let valfield_ = fieldObj_.valfield;
                            if (type_ == "popup" && valfield_) {
                                k_val = this.filterObj[valfield_];
                                if (!this.filterObj[valfield_] && this.filterObj[k]) {
                                    k_val = this.filterObj[k];
                                }
                            }
                            
                            let field_ = fieldObj_.field;
                            let fieldtype_ = "equal";
                            
                            
                            if (fieldObj_.fieldname) {
                                field_ = fieldObj_.fieldname
                            }
                            if (fieldObj_.fieldtype) {
                                fieldtype_ = fieldObj_.fieldtype
                            }
                            if (typeof(k_val) != "string") {
                                filter_ += " and " + field_ + " = " + k_val ;
                            }
                            else if (type_ != "daterange") {
                                //注释:type: equal(等于)/in(在多个数据中)/like(模糊)/minval(最小值)/maxval(最大值)/mininclude(最小且包含该值)/maxinclude(最大且包含该值)
                                if (fieldtype_ == "like" && field_ != 'type') {
                                    filter_ += " and " + field_ + " like '%" + k_val +"%'";
                                }else if(field_ == 'type') {
                                    if(k_val == 'employee') {
                                        this.dataname = 'VEmployeeAndUser'
                                        filter_ += " and sys_user.name not like 'CT%'";
                                    }else {
                                        this.dataname = 'VBusinessAndUser'
                                        filter_ += " and sys_user.name like 'CT%'";
                                    }
                                }
                                else {
                                    filter_ += " and " + field_ + " = '" + k_val +"'";
                                }
                            }
                            
                        }
                        
                        if (this.filterObjBydefault != {}) {
                            for(var k in this.filterObjBydefault) {
                                let k_val = this.filterObjBydefault[k];
                                filter_ += " and " + k + " = '" + k_val +"'";
                            }
                        }
                        
                        if (this.filterTxt) {
                            filter_ += " and " + this.filterTxt;
                        }
                        
                        let param_ = {
                            isClientMode: false,
                            dataname: this.dataname,
                            filterList: this.filterList,
                            filter: filter_,
                            orderby: this.orderby,
                            page: {
                                no: this.pagenum,
                                pagesize: this.pagesize
                            },
                            //attachmeta: true
                        }
                        
                        if (this.paramObjBydefault != {}) {
                            for(var k in this.paramObjBydefault) {
                                let k_val = this.paramObjBydefault[k];
                                param_[k] = k_val;
                            }
                        }
                        
                        me.tableData = [];
                        me.tableloading = true;
                        Server.call("root/data/getEntitySet", param_, function(result) {
                            console.log(result);
                            me.tableloading = false;
                            
                            if (me[total_tab] || me[total_tab] == 0) {
                                me[total_tab] = 0;
                                if (me.totaltab == total_tab) {
                                    me.total = me[total_tab];
                                }
                            }
                            else {
                                me.total = 0;
                            }
                            
                            if (result && result.data && result.data.entityset) {
                                var data_ = result.data.entityset;
                                if (me[total_tab] || me[total_tab] == 0) {
                                    me[total_tab] = result.data.page.recordcount;
                                    if (me.totaltab == total_tab) {
                                        me.total = me[total_tab];
                                    }
                                }
                                else {
                                    me.total = result.data.page.recordcount;
                                }
                                
                                me.tableData = data_;
                            }
                            
                            me.tableDataAfter();
                        });
                    },
                    onInitFilter: function() {
                        //清空
                        this.filterObj = {type:"employee"};
                        this.onQuery();
                    },
                    onSaveResourceByPage() {
                        
                        this.saveResourceByPage('Role');
                        
                        this.$message({
                            message: '保存成功',
                            type: 'success'
                        });
                    },
                    saveResourceByPage(type) {
                        let me = this;
                        let filter_ = "business_id='"+ me.emp_code +"'";
                        param_ = {
                            isClientMode: false,
                            dataname: "sysRoleMapping",
                            filter: filter_,
                        }
                        Server.call("root/data/deleteEntitySet", param_, function(result) {
                            console.log(result);
                            let arr_ = me.selectMenu;
                            
                            for (let i = 0; i < arr_.length; i++) {
                                let item = i;
                                param_ = {
                                    business_id: me.emp_code,
                                
                                    role_id: arr_[i].id,
                                    type: "employee",
                                }
                                param_.isClientMode = false,
                                param_.dataname = "sysRoleMapping",
                    
                                Server.call("root/data/insertEntity", param_, function(result) {
                                    if(item == arr_.length-1) {
                                        
                                        /* let logs = [];
                                        let bool = false;
                                        for (var i = 0; i < me.selectMenu.length; i++) {
                                            for (var j = 0; j < me.selectMenu_old.length; j++) {
                                                if(me.selectMenu_old[j].id ==  me.selectMenu[i].id) {
                                                    bool = true;
                                                    break;
                                                }else {
                                                    bool = false;
                                                }
                                            }
                                            if(bool) {
                                                
                                            }else { 
                                                let log = {
                                                    type:"userRoleChange",
                                                    operate_code:window.top.userinfo.employee.code,
                                                    operate_name:window.top.userinfo.employee.name,
                                                    business_id:me.selectMenu[i].id,
                                                    data_name:"sysRoleMapping",
                                                    business_name:me.selectMenu[i].name,
                                                    create_time:new Date,
                                                    source_type:"EC",
                                                    operate_remark:"用户-" + me.emp_code + " " + me.emp_name + "-添加角色-" + me.selectMenu[i].name
                                                }
                                                logs.push(log)
                                            }
                                        }
                                        for (var i = 0; i < me.selectMenu_old.length; i++) {
                                            for (var j = 0; j < me.selectMenu.length; j++) {
                                                if(me.selectMenu[j].id ==  me.selectMenu_old[i].id) {
                                                    bool = true;
                                                    break;
                                                }else {
                                                    bool = false;
                                                }
                                            }
                                            if(bool) {
                                                
                                            }else {
                                                let log = {
                                                    type:"userRoleChange",
                                                    operate_code:window.top.userinfo.employee.code,
                                                    operate_name:window.top.userinfo.employee.name,
                                                    business_id:me.selectMenu_old[i].id,
                                                    data_name:"sysRoleMapping",
                                                    business_name:me.selectMenu_old[i].name,
                                                    create_time:new Date,
                                                    source_type:"EC",
                                                    operate_remark:"用户-" + me.emp_code + " " + me.emp_name + "-删除角色"
                                                }
                                                logs.push(log)
                                            }
                                        }
                                        for (var i = 0; i < logs.length; i++) {
                                            let params_log = logs[i];
                                            params_log.dataname = "customerOperateLog";
                                            Server.call("root/data/insertEntity", params_log, function(result) {
                                                me.requestNum++;
                                                if(me.requestNum == logs.length) {
                                                    me.selectRole = [];
                                                    me.onQuery();
                                                }
                                            })
                                        } */
                                        Server.call("root/tool/delCache", {}, function(result) {
                                            
                                        })
                                    }
                                });
                            }
                        });
                    },
                    
                }
            });
        </script>
    </body>
</html>