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
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
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
<!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 src="../../../../js/vue/vue.js"></script>
        <script src="../../../../js/vue/element-ui/lib/index.js"></script>
        <!-- <script src="../../../../js/vue/elementDefault.js"></script> -->
        <script src="../../../../js/vue/page.js?v=20220615"></script>
        <script src="../../../../js/myelement.js?v=20220615"></script>
        <!-- <script src="../../../../data/data.js?v=20220425"></script> -->
        
        <link href="../../../../js/vue/element-ui/lib/theme-chalk/index.css" rel="stylesheet">
        <link href="../../../../css/myelement.css?v=20220425" rel="stylesheet">
        <link href="../../../../css/iconfont.css" rel="stylesheet">
        <link href="../../../../css/page.css?v=20220425" rel="stylesheet">
        <link href="//at.alicdn.com/t/font_2374495_mkoo966o0uo.css" rel="stylesheet">
    </head>
    
    <body>
        <div id="vbody">
            <div id="page_root">
                <div ref="popup_body" style="width: 1000px;padding-right: 20px;">
                    <div class="el-dialog__header">
                        <div class="dialog-title">
                          <i class="iconfont icon-customermanagement"></i>
                          <span> {{formAttr.title}} </span>
                        </div>
                    </div>    
                    <div class="el-dialog__body">
                        <h-form
                            ref="form1"
                            :form-attr="formAttr"
                            :table-fields="formFields"
                            :form-data="formData"
                            v-on:show-popup="showPopup"
                        >
                        </h-form>
                        <el-button-group v-if="notdisabled && role.isshow_db" style="float: right;">
                            <el-button style="margin-right: 10px;"@click="showCredit()">资信查询</el-button>
                            <el-button @click="addTableData">新增数据</el-button>
                        </el-button-group>
                        <h-table
                            v-if="isRefresh"
                            ref="table2"
                            :table-fields="tableFields" 
                            :table-data="tableData2" 
                            :is-edit-table-data="isEditTableData"
                            :is-within-edit-table-data= "isWithinEditTableData"
                            :pagesize="pagesize"
                            :pagenum="pagenum"
                            :show-summary= "true"
                            :total="total"
                            :table-height="tableHeight2"
                            :is-pagination="false"
                            :is-show-index="true"
                            
                            v-on:edit-data="editData"
                            v-on:del-data="delData"
                            v-on:cell-input-change="cellInputChange"
                            v-on:cell-select-change="cellSelectChange"
                            v-on:cell-click="cellClick"
                        >
                        </h-table>
                    </div>
                    
                    <div class="el-dialog__footer">
                        <el-button v-if="disabled && role.isshow_jl" type="success" @click="passApproval">通过</el-button>
                        <el-button v-if="disabled && role.isshow_jl" type="danger" @click="refuseApproval">拒绝</el-button>
                        <el-button type="default" @click="closeDialog">取 消</el-button>
                        <el-button v-if="notdisabled && role.isshow_db" type="primary" @click="saveRowTable">保 存</el-button>
                    </div>
                </div>
                
                <el-dialog title="选择客户" :visible.sync="popupByFieldsDialog" top="20px" width="80%">
                    <div class="topbar-line">
                            <div class="query-icon">
                                <i class="iconfont icon-query"></i>
                            </div>
                            <div class="query-bar">
                                <el-form label-position='left' label-width="50px" :inline="true" :model="formInline" class="demo-form-inline">
                                    <el-form-item label="名称:" style="line-height: 40px;">
                                        <el-input size="mini" v-model="formInline.field2" placeholder="请输入" style="width: 140px;"></el-input>
                                    </el-form-item>
                                    <el-form-item>
                                        <el-button @click="onQuery">查 询</el-button>
                                        <el-button @click="onInitQuery">重 置</el-button>
                                    </el-form-item>
                                </el-form>
                            </div>
                        </div>
                        <h-table
                            v-if="isRefresh"
                            ref="table1"
                            :table-fields="tableFields1" 
                            :table-data="tableData_cus2" 
                            :pagesize="pagesize"
                            :pagenum="pagenum"
                            :total="total"
                            :table-height="tableHeight_cus"
                            :is-highlight-row="true"
                            v-on:row-click="rowClickCus"
                            v-on:edit-data="editData"
                            v-on:get-data="getData"
                        >
                        </h-table>
                        
                        <div slot="footer" class="dialog-footer" >
                          <el-button type="default" @click="popupByFieldsDialog = false">取 消</el-button>
                          <el-button type="primary" @click="saveFormValByField">确 定</el-button>
                        </div>
                </el-dialog>
                <el-dialog title="选择付款条款" :visible.sync="popupByFieldsDialog_term" top="20px" width="80%">
                    <h-table
                        v-if="isRefresh"
                        ref="table_terms"
                        :table-fields="tableFields_term" 
                        :table-data="tableData_term2" 
                        :pagesize="pagesize"
                        :pagenum="pagenum"
                        :total="total"
                        :table-height="tableHeight_term"
                        :is-highlight-row="true"
                        v-on:row-click="rowClickTerm"
                        v-on:get-data="getData_term"
                    >
                    </h-table>
                    
                    <div slot="footer" class="dialog-footer" >
                      <el-button type="default" @click="popupByFieldsDialog_term = false">取 消</el-button>
                      <el-button type="primary" @click="saveFormValByField_term">确 定</el-button>
                    </div>
                </el-dialog>
            </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">
            new Vue({
                el: "#vbody",
                data: {
                    role: RootRole,
                    disabled: false,
                    notdisabled: true,
                    formAttr: {
                        istitle: false,
                        title: "订单信息",
                        columnnumber: 2,
                        labelwidth: "100px",
                        labelposition: "right",
                        size: "medium",
                        border: "0px solid #c6c6c600"
                    },
                    formFields: [
                        {field: "field1", name: "订单编号", isshow: "T", align: "center", required: true, disabled: true},
                        {field: "field4", name: "单据日期", isshow: "T", type: "date", align: "center", required: true},
                        {field: "field13", name: "客户编码", isshow: "T", align: "center", width: "320", type: "popup"},
                        {field: "field2", name: "客户名称", isshow: "T", align: "center", width: "320", type: "popup"},
                        {field: "field14", name: "收货人姓名", isshow: "T", align: "center", width: "320"},
                        {field: "field15", name: "收货人电话", isshow: "T", align: "center", width: "320"},
                        {field: "field11", name: "收货地址", isshow: "T", align: "center", width: "320"},
                        {field: "field6", name: "订单类型", isshow: "T", align: "center", type: "select", options: dataRoot.database.orderType},
                        {field: "field8", name: "销售业务员", isshow: "T", align: "center"},
                        {field: "field10", name: "付款条款", isshow: "T", align: "center", type: "popup"},
                        {field: "field12", name: "资信检查", isshow: "T", align: "center", type: "select", disabled: true, options: [{label: "通过",value: "T"}, {label: "未通过",value: "F"}]},
                        {field: "field5", name: "金额", isshow: "T", align: "center", disabled: true},
                        
                        {field: "field9", name: "备注", isshow: "T", type: "textarea", align: "center"}
                    ],
                    authorize: {
                        edit: true,
                    },
                    tableFields: [
                        {field: "field1", name: "", isshow: "F"},
                        {field: "field2", name: "产品编号", isshow: "T", align: "center", width: "120", type: "select", options: dataRoot.database.productDetail, required: true, props:{value: "field1", label: "field1", checkStrictly: true}},
                        {field: "field3", name: "产品名称", isshow: "T", align: "center", required: true, type: "button", iscellclick: true},
                        {field: "field4", name: "DPT", isshow: "F", align: "center", width: "70", type: "input"},
                        {field: "field5", name: "CYL", isshow: "F", align: "center", width: "70", type: "input"},
                        {field: "field6", name: "单位", isshow: "T", align: "center", width: "80"},
                        {field: "field7", name: "数量", isshow: "T", align: "center", width: "80", type: "input"},
                        {field: "field8", name: "已配", isshow: "T", align: "center", width: "80"},
                        {field: "field9", name: "单价", isshow: "T", align: "center", width: "60"},
                        {field: "field10", name: "金额", isshow: "T", align: "right", width: "120", formatter: "formatter_money"}
                    ],
                    tableFields1: [
                        {field: "field1", name: "客户代码", isshow: "T", align: "center", width: "70", required: true},
                        {field: "field2", name: "客户名称", isshow: "T", align: "center", required: true},
                        {field: "field9", name: "客户地址", isshow: "T", align: "left", required: true},
                    ],
                    urlImg2: "./img/wushuju.png",
                    isEditTableData:true,
                    isWithinEditTableData:false,
                    formData: {},
                    isRefresh: true,
                    selectFormField: {},
                    popupByFieldsDialog: false,
                    selectrow: {},
                    
                    tableData_old: [],
                    tableData_new: [],
                    tableData2: [],
                    tableData: [],
                    tableHeight2: 250,
                    
                    pagesize: 10,
                    pagenum: 1,
                    total: 0,
                    tableData_cus_new: [],
                    tableData_cus: [],
                    tableData_cus2: [],
                    selectcusrow: {},
                    tableHeight_cus: 350,
                    formInline: {},
                    productDetailobj: {},
                    
                    tableFields_term: [
                        {field: "field1", name: "条款名称", isshow: "T", align: "center", width: "100", required: true},
                        {field: "field2", name: "付款天数", isshow: "T", align: "center", required: true},
                        {field: "field3", name: "是否分期", isshow: "T", align: "center", required: true},
                    ],
                    pagesize_term: 10,
                    pagenum_term: 1,
                    total_term: 0,
                    popupByFieldsDialog_term: false,
                    tableData_term_new: [],
                    tableData_term: [],
                    tableData_term2: [],
                    selecttermrow: {},
                    tableHeight_term: 350,
                    
                    creditLimit: 20600,
                },
                
                created() {
                    this.tableData_new = dataRoot.database.orderDetail;
                    this.tableData_old = clone(dataRoot.database.orderDetail);
                    
                    this.tableData_cus_new = dataRoot.database.customer;
                    this.tableData_cus = clone(this.tableData_cus_new);
                    
                    this.tableData_term_new = dataRoot.database.term;
                    this.tableData_term = clone(this.tableData_term_new);
                    
                    this.popupParames = clone(Root.popupParames);
                },
                
                mounted() {
                    //this.initTableData();
                    if (this.popupParames.disabled) {
                        this.formAttr.disabled = true;
                        this.isEditTableData = false;
                        this.isWithinEditTableData = false;
                        this.notdisabled = false;
                    }
                    if (this.popupParames.isjl) {
                        this.formAttr.disabled = true;
                        this.isEditTableData = false;
                        this.isWithinEditTableData = false;
                        this.disabled = true ;
                    }
                    if (this.popupParames.data) {
                        this.formData = clone(this.popupParames.data);
                        let  result = [];
                        if (this.formData.field1) {
                            result = this.tableData_new.filter(item => {
                                let bo = true;
                                let k_val = this.formData.field1;
                                let bo_ = item.field1.toLowerCase().indexOf(k_val.toLowerCase()) > -1;
                                if (!bo_) {
                                    return false;
                                }
                                return bo;
                            });
                        }
                        
                        this.tableData2 = result;
                    }
                    
                    dataRoot.database.productDetail.map(e=>{
                        this.productDetailobj[e.field1] = e;
                    });
                    
                    this.$nextTick(() => { // 以服务的方式调用的 Loading 需要异步关闭
                        document.getElementById('page_root').style.display =  "block";
                        document.getElementById('page_loading').style.display =  "none";
                        
                        //重新设置弹窗宽高
                        this.$nextTick(function(){
                            let w_ = this.$refs.popup_body.offsetWidth + "px";
                            let h_ = this.$refs.popup_body.offsetHeight + "px";
                            parent.setPopupWH(w_, h_, frameElement.parentNode);
                        })
                    });
                },
                
                methods:{
                    closeDialog() {
                        parent.hidePopup(frameElement.parentNode.parentNode);
                    },
                    saveRowTable() {
                        if(this.popupParames.callback) {
                            let obj = {
                                row: this.formData
                            }
                            this.popupParames.callback(obj, function() {
                                parent.hidePopup(frameElement.parentNode.parentNode);
                            });
                        }
                        else {
                            alert("该按键事件缺失!")
                        }
                    },
                    passApproval() {
                        if(this.popupParames.callback) {
                            this.formData.field7 = "审批通过";
                            let obj = {
                                row: this.formData
                            }
                            this.popupParames.callback(obj, function() {
                                parent.hidePopup(frameElement.parentNode.parentNode);
                            });
                        }
                        else {
                            alert("该按键事件缺失!")
                        }
                    },
                    refuseApproval() {
                        if(this.popupParames.callback) {
                            this.formData.field7 = "待修改";
                            let obj = {
                                row: this.formData
                            }
                            this.popupParames.callback(obj, function() {
                                parent.hidePopup(frameElement.parentNode.parentNode);
                            });
                        }
                        else {
                            alert("该按键事件缺失!")
                        }
                    },
                    showCredit (code, row) {
                        let me = this;
                        Root.popupParames = {
                            url: "../flow/home/popup/popup_creditStatus.html",
                        };
                        Root.showPopup();
                    },
                    addTableData() {
                        if (this.selectrow != {}) {
                            this.selectrow.isWithinEdit = false;
                        }
                        let row_ = {
                            isWithinEdit: true
                        };
                        for (var i = 0; i < this.tableFields.length; i++) {
                            let field_ = this.tableFields[i].field;
                            //设置已知值
                            if (field_ == "field1") {
                                row_[field_] = this.formData.field1;
                            }
                            
                            row_[field_]="";
                        } 
                        this.selectrow = row_;
                        this.tableData2.unshift(row_);
                        this.tableData_new.unshift(row_);
                        this.isRefresh = false;
                        this.$nextTick(function(){
                            this.isRefresh = true;
                        })
                    },
                    
                    editData(scope) {
                        if (this.selectrow != {}) {
                            this.selectrow.isWithinEdit = false;
                        }
                        this.selectrow = scope.row;
                        scope.row.isWithinEdit = scope.row.isWithinEdit ? false : true;
                        this.isRefresh = false;
                        this.$nextTick(function(){
                            this.isRefresh = true;
                        })
                    },
                    cellSelectChange(scope) {
                        let row = scope.row;
                        let field = scope.column.property;
                        if(field == "field2") {
                            let val = row[field];
                            let selectval = this.productDetailobj[val];
                            row.field3 = selectval.field2;
                            row.field6 = selectval.field5;
                            row.field9 = selectval.field6;
                            row.field8 = selectval.field4;
                            
                            row.field10 = (row.field7 ? row.field7 : 0) * row.field9;
                        }
                        let sum_noRate_ = 0 ;
                        this.tableData2.map(e=>{
                            sum_noRate_ += (e.field10 ? e.field10 : 0 ) * 1;
                        })
                        this.formData.field5 = sum_noRate_;
                        this.$refs.form1.refresh();
                    },
                    cellInputChange(scope) {
                        let row = scope.row;
                        let field = scope.column.property;
                        if(field == "field7") {
                            row.field10 = (row.field7 ? row.field7 : 0) * (row.field9 ? row.field9 : 0);
                        }
                        
                        let sum_noRate_ = 0 ;
                        this.tableData2.map(e=>{
                            sum_noRate_ += (e.field10 ? e.field10 : 0 ) * 1;
                        })
                        this.formData.field5 = sum_noRate_;
                        if (this.formData.field5 > this.creditLimit) {
                            this.formData.field12 = "F";
                        }
                        else {
                            this.formData.field12 = "T";
                        }
                        this.$refs.form1.refresh();
                    },
                    cellClick(obj) {
                        if(obj.column.property == "field3") {
                            this.selectrow = obj.row;
                            this.showPic("showPic", obj.row);
                        }
                    },
                    delData(scope) {
                        let me = this;
                        let row = scope.row;
                        let index_ = scope.$index;
                        Root.confirm('确定删除-' + row.field2 + '-吗?', '删除提示', {
                          confirmButtonText: '删除',
                          cancelButtonText: '取消',
                          type: 'warning'
                        }).then(() => {
                            me.tableData_new.remove(row);
                            me.tableData2.remove(row);
                            me.doQuery();
                            Root.message({
                                type: 'success',
                                message: '删除成功!'
                            });
                        }).catch(() => {
                            Root.message({
                                type: 'info',
                                message: '已取消删除'
                            });          
                        });
                    },
                    onInitQuery() {
                        this.formInline = {};
                        this.tableData_cus = this.tableData_cus_new;
                        this.onQuery();
                    },
                    onQuery() {
                        this.pagenum = 1;
                        this.doQuery_cus();
                    },
                    getData(page) {
                        this.pagesize = page.pagesize;
                        this.pagenum = page.pagenum;
                        this.doQuery_cus();
                    },
                    doQuery_cus() {
                        let result = this.tableData_cus_new.filter(item => {
                            let bo = true;
                            for(var k in this.formInline) {
                                let k_val = this.formInline[k];
                                let bo_ = item[k].toLowerCase().indexOf(k_val.toLowerCase()) > -1;
                                if (!bo_) {
                                    return false;
                                }
                            }
                            return bo;
                        });
                        this.tableData_cus = result;
                        this.getData_cus();
                    },
                    getData_cus() {
                        this.total = this.tableData_cus.length;
                        this.tableData_cus2 = this.tableData_cus.slice((this.pagenum-1)*this.pagesize, this.pagenum * this.pagesize);
                    },
                    rowClickCus(obj) {
                        this.selectcusrow = obj.row;
                    },
                    doQuery() {
                        let result = [];
                        if (this.formData.field1) {
                            result = this.tableData_new.filter(item => {
                                let bo = true;
                                let k_val = this.formData.field1;
                                let bo_ = item.field1.toLowerCase().indexOf(k_val.toLowerCase()) > -1;
                                if (!bo_) {
                                    return false;
                                }
                                return bo;
                            });
                        }
                        this.tableData2 = result;
                    },
                    getData_term() {
                        this.total_term = this.tableData_term.length;
                        this.tableData_term2 = this.tableData_term.slice((this.pagenum_term-1)*this.pagesize_term, this.pagenum_term * this.pagesize_term);
                    },
                    rowClickTerm(obj) {
                        this.selecttermrow = obj.row;
                    },
                    showPic(code, row) {
                        Root.popupParames = {
                            url: "../flow/home/popup/popup_productPic.html",
                        };
                        Root.showPopup();
                    },
                    //表单
                    showPopup(obj) {
                        this.selectFormField = obj.obj;
                        console.info(this.selectFormField)
                        if (this.selectFormField.field == "field13" || this.selectFormField.field == "field2") {
                            this.popupByFieldsDialog = true;
                            this.tableData_cus2 = this.tableData_cus;
                            this.getData_cus();
                        }
                        else if (this.selectFormField.field == "field10") {
                            this.popupByFieldsDialog_term = true;
                            this.tableData_term2 = this.tableData_cus;
                            this.getData_term();
                        }
                        
                    },
                    saveFormValByField() {
                        if (this.selectcusrow != {}) {
                            if(this.selectFormField.field == "field13" || this.selectFormField.field == "field2") {
                                this.$refs.form1.setFormValByField("field13", this.selectcusrow.field1);
                                this.$refs.form1.setFormValByField("field2", this.selectcusrow.field2);
                                this.$refs.form1.setFormValByField("field14", this.selectcusrow.field7);
                                this.$refs.form1.setFormValByField("field15", this.selectcusrow.field8);
                                this.$refs.form1.setFormValByField("field11", this.selectcusrow.field9);
                            }
                            this.popupByFieldsDialog = false;
                        }
                        else {
                            Root.message({
                                type: 'warning',
                                message: '请先选择一条数据'
                            })
                        }
                    },
                    saveFormValByField_term() {
                        if (this.selectcusrow != {}) {
                            if(this.selectFormField.field == "field10") {
                                this.$refs.form1.setFormValByField("field10", this.selecttermrow.field1);
                            }
                            this.popupByFieldsDialog_term = false;
                        }
                        else {
                            Root.message({
                                type: 'warning',
                                message: '请先选择一条数据'
                            })
                        }
                    },
                }
            });
        </script>
        
        <style>
            .el-input__inner{
                padding: 0 2px;
            }
        </style>
        
    </body>
</html>