zhangyanpeng
2024-05-29 1f227a1cf627526701c652ba84bae3e430bba8d3
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
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
<!doctype html>
<html>
    <head>
        <meta charset="utf-8"><meta http-equiv="Expires" content="0"><meta http-equiv="Pragma" content="no-cache"><meta http-equiv="Cache-control" content="no-cache"><meta http-equiv="Cache" content="no-cache">
        <title>未分配数据分配</title>
        
        <script type="text/javascript">
            var pageVue = null;
            function loadJsCss(callback) {
                var jscss_urls = [];
                window.top.initJsCss(document, jscss_urls, callback);
            };
            
            function initVue() {
                pageVue = new TabTableVue({
                    el: "#vbody",
                    data: {
                        title: "岗位数据分配",
                        dataname: "",
                        //Tab项设置
                        tabs_d: [
                            {code: "account", name: "没有岗位客商", dataname: "version_preparatory_md_org_account_position_list", savedataname: "version_preparatory_md_org_account_position", filterTxt: "version_preparatory_md_position.id is null", orderby: ""},
                            {code: "hospital", name: "没有岗位医院", dataname: "version_preparatory_md_position_hospital", savedataname: "version_preparatory_md_position_hospital", filterTxt: "version_preparatory_md_position.id is null", orderby: ""},
                            {code: "employee", name: "没有岗位人员", dataname: "version_preparatory_md_position_employee", savedataname: "version_preparatory_md_position_employee", filterTxt: "version_preparatory_md_position.id is null", orderby: ""},
                        ],
                        d_tabs: {
                            account: true,
                            hospital: true,
                            employee: true,
                        },
                        tabsobj: {},
                        tabs: [],
                        cbuttons_r: {},
                        ctabs_r: {},
                        
                        postionData: {},
                        selectedrows: [],
                        markSelected: false,
                        isCustomer: false,
                        
                        formAttr: {
                            istitle: false,
                            title: "表单名称",
                            columnnumber: 2,
                            labelwidth: "100px",
                            labelposition: "left",//"left",// right//top
                            size: "mini",
                            border: "3px solid #c6c6c600"
                        },
                        formData: {},
                        formFields: [
                            {isshow: "F", field: "postion_path", name: "待分配岗位", type: "popup", required: true},
                            {isshow: "T", field: "assign_postion_path", name: "分配至岗位", type: "popup", required: true},
                        ],
                        formfieldClick: {},
                        isComplete: {}
                    },
                    created() {
                        this.popupParames = clone(Root.popupParames);
                        this.title = this.popupParames.title || this.popupParames.text
                        // if (this.popupParames.data) {
                        //     this.postionData = clone(this.popupParames.data);
                        //     let row_ = {};
                        //     row_.company_id = this.postionData.company_id;
                        //     row_.bu_id = this.postionData.bu_id;
                        //     row_.postion_id = this.postionData.id;
                        //     row_.postion_code = this.postionData.code;
                        //     row_.postion_name = this.postionData.name;
                        //     row_.postion_path = this.postionData.md_position_hierarchy__position_path;
                        //     this.formData = clone(row_);
                            
                        //     this.tabs_d.map(tab=>{
                        //         if (tab.dataname == "md_org_account_position_list") {
                        //             tab.filterTxt = "md_position.id='"+this.postionData.id+"'"
                        //         }
                        //         else if (tab.dataname == "md_position_hospital") {
                        //             tab.filterTxt = "md_position.id='"+this.postionData.id+"'"
                        //         }
                        //         else if (tab.dataname == "md_position_employee") {
                        //             tab.filterTxt = "md_position.id='"+this.postionData.id+"'"
                        //         }
                        //     })
                            
                        //     this.formFields.map(f=>{
                        //         if (f.field == "postion_path") {
                        //             f.readonly = true;
                        //         }
                        //     })
                        // }
                    },
                    
                    mounted() {
                        var me = this;
                        me.onFormFieldClick();
                        me.ctabs_r = me.d_tabs;
                        var tabsarr = [];
                        me.tabs_d.map(e=>{
                            if(me.ctabs_r[e.code]){
                                tabsarr.push(e)
                            }
                        })
                        me.tabs = tabsarr;
                        
                        if(me.tabs.length){
                            me.activeTabName = me.tabs[0].code;
                        }
                        
                        //初始化Tabs
                        me.initTabsPage(function() {
                            //获取数据
                            me.initData();
                        });
                        
                        me.$nextTick(() => { // 以服务的方式调用的 Loading 需要异步关闭
                            hideLoading();
                        });
                    },
                    
                    methods:{
                        //关闭弹窗
                        closeDialog() {
                            var me = this;
                            if (me.popupParames.totab){
                                Root.tab.removeItem(Root.tab.selected);
                                Root.tab.open(me.popupParames.parentOption, false); 
                            }
                            else {
                                Root.hidePopup();
                            }
                        },
                        //关闭前调回调
                        saveAfter() {
                            var me = this;
                            if(this.popupParames.callback) {
                                let obj = {
                                    //row: this.formData
                                }
                                this.popupParames.callback(obj, function() {
                                    me.closeDialog();
                                });
                            }
                            else {
                                me.closeDialog();
                            }
                        },
                        
                        onhandleClick() {
                            this.initData();
                        },
                        
                        onFormFieldClick() {
                            var me = this;
                            //表单字段事件设置
                            this.formfieldClick = {
                                // postion_path: {
                                //     popup: {
                                //         onclick: function(obj) {//弹窗点击事件
                                //             //打开主数据库弹窗
                                //             var filter = "";
                                //             me.openPositionTree("add", function(popupobj){
                                //                 let row_ = clone(me.formData);
                                //                 row_.company_id = popupobj.row.company_id;
                                //                 row_.bu_id = popupobj.row.bu_id;
                                                
                                //                 row_.postion_id = popupobj.row.id;
                                //                 row_.postion_code = popupobj.row.code;
                                //                 row_.postion_name = popupobj.row.name;
                                //                 row_.postion_path = popupobj.row.md_position_hierarchy__position_path;
                                                
                                //                 me.formData = clone(row_);
                                                
                                //                 me.getDataByPostion();
                                //             });
                                //         }
                                //     },
                                // },
                                assign_postion_path: {
                                    popup: {
                                        onclick: function(obj) {//弹窗点击事件
                                            me.openPositionTree("add", function(popupobj){
                                                let row_ = clone(me.formData);
                                                row_.assign_postion_id = popupobj.row.id;
                                                row_.assign_postion_code = popupobj.row.code;
                                                row_.assign_postion_name = popupobj.row.name;
                                                row_.assign_postion_path = popupobj.row.version_preparatory_md_position_hierarchy__position_path;
                                                
                                                me.formData = clone(row_);
                                            });
                                        }
                                    },
                                },
                            };
                        },
                        
                        // getDataByPostion() {
                        //     var me = this;
                        //     this.tabs.map(tab=>{
                        //         if (tab.dataname == "md_org_account_position_list") {
                        //             tab.filterTxt = "md_position.id='"+this.formData.postion_id+"'"
                        //         }
                        //         else if (tab.dataname == "md_position_hospital") {
                        //             tab.filterTxt = "md_position.id='"+this.formData.postion_id+"'"
                        //         }
                        //         else if (tab.dataname == "md_position_employee") {
                        //             tab.filterTxt = "md_position.id='"+this.formData.postion_id+"'"
                        //         }
                        //     })
                        //     //初始化Tabs
                        //     me.initTabsPage(function() {
                        //         //获取数据
                        //         me.initData();
                        //     });
                        // },
                        
                        openPositionTree(sceneCode, callback) {
                            var me = this;
                            var data_ = {}; 
                            var text_ = "岗位负责人"
                            var config = {
                                totab: false, //true: 以Tab导航的方式打开
                                width: "500px",
                                height: "80vh",
                                icon: "icon-product",
                                text: text_ + "选择",
                                id: "popup_position_preparatory",//totab: true时需设置,用于判断是否已打开此页面
                                url: "module/md/page/popup/page/popup_position_preparatory.html",
                                data: data_,
                                delta: {
                                    // company_id: me.formData.company_id,
                                    // bu_id: me.formData.bu_id,
                                    select_position: []
                                },
                                sceneCode: sceneCode,//"refuseedit",//"approval", //"add"//"browse",
                                callback: function(popupobj, popupcallback) {
                                    callback(popupobj)
                                    
                                    if (popupcallback) {
                                        popupcallback();
                                    }
                                }
                            };
                            me.doPopupByPublic(config);
                        },
                        
                        initData() {
                            var me = this;
                            this.doQueryByTab(function(result, callback) {//查询后的回调,用于获取字段的
                                if (result.meta && result.meta[me.selectTabObj.dataname] && result.meta[me.selectTabObj.dataname].fields) {
                                    var metas = clone(result.meta[me.selectTabObj.dataname].fields);
                                    var filterFields_ = [];
                                    var tableFields_ = [];
                                    
                                    metas.map(f=>{
                                        f.isshow = "T";
 
                                        if (me.selectTabObj.code == 'Input') {
                                            if (f.field == 'contract_attachment_name') {
                                                f.isshow = "F";
                                            }
                                        }
                                        
                                        if (me.isCustomer && (f.field == "contact_department" || f.field == "contact_phone" 
                                            || f.field == "template_attachment_name" || f.field == "logistics_code"  
                                            || f.field == "creator_name" || f.field == "create_time" || f.field == "update_time" 
                                        )) {
                                            f.isshow = "F"
                                            f.isfilter = false
                                        }
                                        
                                        if (me.isCustomer && me.selectTabObj.code != "Close" && (f.field == "suspend_date" || f.field == "suspend_remark")) {
                                            f.isshow = "F"
                                            f.isfilter = false
                                        }
                                        
                                        if (f.isfilter) {
                                            filterFields_.push(clone(f));
                                        }
                                        else {
                                            var filter_f = clone(f);
                                            filter_f.isshow = "F";
                                            filterFields_.push(filter_f);
                                        }
                                        
                                        tableFields_.push(clone(f));
                                    })
                                    if (!me.selectTabObj.filterFields || (me.selectTabObj.filterFields && me.selectTabObj.filterFields.length == 0)) {
                                        me.selectTabObj.filterFields = clone(filterFields_);
                                        me.selectTabObj.tableFields = clone(tableFields_);
 
                                        // me.selectTabObj.filterFields = clone(me.default_filterFields);
                                        // me.selectTabObj.tableFields = clone(me.default_tableFields);
                                        
                                        //字段数组转字段obj,目的为了筛选时获取字段属性
                                        me.fieldsToFieldsObj();
                                        
                                        //设置字段事件
                                        me.tableFieldClick();
                                    }
                                }
                                
                                if (callback) {
                                    callback();
                                }
                            });
                        },
                        
                        // 设置表格工具栏按键事件
                        tableButtonClick() {
                            var me = this;
                            this.selectTabObj.tablebuttonClick = [];
                        },
                        
                        tableFieldClick() {
                            var me = this;
                            var tablefieldClick = {};
                            this.selectTabObj.tablefieldClick = tablefieldClick;
                        },
                        
                        selectionChange(obj){
                            var me = this;
                            me.selectTabObj.selectedrows = obj;
                        },
                        saveShoppingcart(list) {
                            var me = this;
                            me.selectTabObj.selectedrows = list;
                        },
                        submitAssign() {
                            var me = this;
                            // 获取全部购物车中的数据
                            var s_account = this.tabspageobj["account"].selectedrows || []
                            var s_hospital = this.tabspageobj["hospital"].selectedrows || []
                            var s_employee = this.tabspageobj["employee"].selectedrows || []
                            
                            this.isComplete = {
                                account: s_account.length ? false : true,
                                hospital: s_hospital.length ? false : true,
                                employee: s_employee.length ? false : true,
                            }
                            if (s_account.length) {
                                // this.isComplete.account = false;
                                var ids_ = me.toinstring(s_account);
                                me.doSubmitAssign(me.tabspageobj["account"].savedataname, ids_, function() {
                                    me.isComplete.account = true;
                                    me.onIsComplete();
                                });
                            }
                            if (s_hospital.length) {
                                // this.isComplete.hospital = false;
                                var ids_ = me.toinstring(s_hospital);
                                me.doSubmitAssign(me.tabspageobj["hospital"].savedataname, ids_, function() {
                                    me.isComplete.hospital = true;
                                    me.onIsComplete();
                                });
                            }
                            if (s_employee.length) {
                                // this.isComplete.employee = false;
                                var ids_ = me.toinstring(s_employee);
                                me.doSubmitAssign(me.tabspageobj["employee"].savedataname, ids_, function() {
                                    me.isComplete.employee = true;
                                    me.onIsComplete();
                                });
                            }
                            
                        },
                        
                        toinstring(list) {
                            var ids_ = "";
                            list.map(sa=>{
                                if (!ids_) {
                                    ids_ = "('" + sa.id;
                                }
                                else {
                                    ids_ += "','" + sa.id;
                                }
                            });
                            ids_ += "')"
                            return ids_;
                        },
                        
                        doSubmitAssign(dataname, ids, callback) {
                            var me = this;
                            
                            var params = {
                                dataname: dataname,
                                data: {},
                                filter: dataname + ".id in " + ids,
                            }
                            params.data[dataname] = {
                                position_id: me.formData.assign_postion_id
                            }
                            Server.call("root/data/alterEntity", params, function(result) {
                                if (callback) {
                                    callback()
                                }
                            })
                        },
                        
                        // 刷新渠道关系
                        // updateChannelStructure(callback) {
                        //     var me = this;
                        //     Server.call("root/hospital/updateChannelStructure", {}, function(result) {
                        //         if (callback) {
                        //             callback()
                        //         }
                        //     })
                        // },
                        onIsComplete() {
                            var isAllComplete = true;
                            for (var k in this.isComplete) {
                                if (!this.isComplete[k]) {
                                    isAllComplete = false;
                                }
                            }
                            if (isAllComplete) {
                                this.saveAfter()
                            }
                        }
                        
                    }
                });
            };
            
            loadJsCss(function () {
                initVue();
            });
        </script>
        <style>
            [v-cloak] {
                display: none !important;
            }
            .el-tabs__nav-scroll {
                overflow: hidden;
                position: relative;
                padding-left: 20px;
            }
        </style>
        
    </head>
    
    <body style="margin: 0px;">
        <div v-cloak id="vbody">
            <div id="page_root">
                <div>
                    <h-form
                        ref="form1"
                        :form-attr="formAttr"
                        :table-fields="formFields"
                        :form-data="formData"
                        :table-field-click="formfieldClick"
                    >
                    </h-form>
                </div>
                <div>
                    <el-tabs v-model="activeTabName" @tab-click="handleClick">
                        <el-tab-pane v-for="(tab, k) in tabs" :label="tab.name" :name="tab.code" :key="k"></el-tab-pane>
                    </el-tabs>
                </div>
            
                <div class="h_dialog__body">
                    <h-table
                        v-if="isRefresh && selectTabObj.tableFields && selectTabObj.tableFields.length"
                        :ref="selectTabObj.code"
                        :table-fields="selectTabObj.tableFields" 
                        :table-data="selectTabObj.tableData" 
                        :is-edit-table-data="selectTabObj.isEditTableData"
                        :pagesize="selectTabObj.pagesize"
                        :pagenum="selectTabObj.pagenum"
                        :total="selectTabObj.total"
                        :table-height="selectTabObj.tableHeight - 35"
                        :table-field-click="selectTabObj.tablefieldClick"
                        :is-show-index="false"
                        :is-highlight-row="true"
                        :tableloading="tableloading"
                        :table-buttons-click="selectTabObj.tablebuttonClick"
                        :filtersobj="selectTabObj.filterObj"
                        
                        v-on:get-data="getData"
                        v-on:edit-data="editData"
                        v-on:del-data="delData"
                        v-on:row-click="rowClick" 
 
                        :select-table-data="selectTabObj.selectedrows"
                        :is-selection="true"
                        :isshow-shoppingcart="true"
                        v-on:selection-change="selectionChange"
                        v-on:save-shoppingcart="saveShoppingcart"
                        
                    >
                    </h-table>
                </div>
                
                <div class="el-dialog__footer">
                    <el-button size="small" type="default" @click="closeDialog">取 消</el-button>
                    <el-button size="small" type="success" @click="submitAssign">确认分配</el-button>
                </div>
            </div>
        </div>
        
        <div id="page_loading" style="position: absolute; top:0px; width: 100vw; height: 50vh;">
            <div class="spinner">
              <div class="cube1"></div>
              <div class="cube2"></div>
            </div>
        </div>
        
    </body>
</html>