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
<!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/myelement.js"></script>
        <script src="../../../../js/vue/page.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 ref="popup_body" style="padding-right: 20px;">
                    <div class="el-dialog__header">
                        <div class="dialog-title">
                            <i class="iconfont icon-customermanagement"></i>
                            <span>选择产品</span>
                        </div>
                    </div>    
                    <div style="height: 550px; overflow-y: auto;">
                        <div class="el-dialog__body">
                            <div class="topbar-line">
                                <div class="query-icon">
                                    <i class="iconfont icon-query"></i>
                                </div>
                                <div class="query-bar" style="width: 85%;">
                                    <h-form-filter ref="form1"
                                        :form-attr="filterAttr" 
                                        :table-fields="filterFields" 
                                        :form-data="filterObj" 
                                        :isbuttonquery="false"
                                        v-on:on-formchange="onQuery" 
                                        v-on:on-query="onQuery"
                                        v-on:on-init-query="onInitFilter"
                                        
                                        >
                                    </h-form-filter>
                                </div>
                            </div>
                            <h-table
                                v-if="isRefresh"
                                ref="table1"
                                :table-fields="tableFields" 
                                :tableloading="isTableLoading"
                                :table-data="tableData" 
                                :pagesize="pagesize"
                                :pagenum="pagenum"
                                :total="total"
                                :table-height="tableHeight1"
                                :is-highlight-row="true"
                                :is-selection="isSelection"
                                v-on:get-data="getData"
                                v-on:row-click="rowClick"
                                v-on:row-dblclick="rowDblClick"
                                v-on:selection-change="handleSelectionChange"
                                
                            >
                            </h-table>
                        </div>
                    </div>
                    <div class="el-dialog__footer">
                        <el-button v-if="closeSave" type="default" @click="close">取 消</el-button>
                        <el-button v-if="!closeSave" type="default" @click="close">关 闭</el-button>
                        <el-button v-if="closeSave" type="primary" @click="saveFormValByField">保 存</el-button>
                    </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">
            
            new ListVue({
                el: "#vbody",
                data: {
                    dataname: "factory_product",
                    isRefresh: true,
                    pagesize: 10,
                    pagenum: 1,
                    total: 0,
                    pageAttr: {
                       heightType: "page"
                    },
                    isTableLoading: true,
                    tableAttr: {},
                    tableFields: [],
                    tableFieldsObj: {},
                    
                    tableData: [],
                    tableHeight1: 320,
                    selectrow: {},
                    
                    formInline_gh: {},
                    popupParames: {},
                    
                    //查询功能
                    filterFields:[],
                    filterFieldsObj: {},
                    filterObj: {},
                    filterList:[],
                    filterAttr: {
                        columnnumber: 3,
                        labelwidth: "90px",
                        labelposition: "right",
                        size: "medium",
                        border: "3px solid #c6c6c600"
                    },
                    
                    dataRequest: [
                        {
                            isClientMode: false,
                            code: "code",
                            label: "name",
                            name: "delivery_part_code",
                            dataname: "deliveryOrganization",
                        },
                    ],
                    dataRequestObj: {},
                    isSelection:false,
                    closeSave:true,
                },
                
                created() {
                    this.popupParames = clone(Root.popupParames);
                    
                    if (this.popupParames.type == "onlySimple") {
                        this.tableHeight1 = 380;
                    }
                    
                    if(this.popupParames.sceneCode == "territory"){
                        this.closeSave = false;
                        if(this.popupParames.data.cnt > 0){
                            let me = this;
                            let param_ = {
                                isClientMode: false,
                                dataname: "popedomDetail",
                                filter: " popedom_detail.parent_id='"+this.popupParames.data.id+"'",
                                orderby: "",
                                page: {
                                    no: this.pagenum,
                                    pagesize: this.pagesize
                                },
                                //attachmeta: true
                            }
                            Server.call("root/data/getEntitySet", param_, function(result) {
                                me.total = 0;
                                me.tableData = [];
                                if (result && result.data) {
                                    var data_ = result.data.entityset;
                                    me.total = result.data.page.recordcount;
                                    me.tableData = data_;
                                }
                                me.tableDataAfter();
                            });
                        }else{
                        this.onQuery();
                        }
                    }else{
                        this.onQuery();
                    }
                },
                
                mounted() {
                    
                    this.initFields();
                    this.$nextTick(() => { // 以服务的方式调用的 Loading 需要异步关闭
                        document.getElementById('page_root').style.display =  "block";
                        document.getElementById('page_loading').style.display =  "none";
                        
                        //重新设置弹窗宽高
                        this.$nextTick(function(){
                           document.getElementById('page_root').classList.add("z_popup-page");
                           let w_ = this.$refs.popup_body.offsetWidth + "px";
                           let h_ = this.$refs.popup_body.offsetHeight + "px";
                           Root.setPopupWH(w_, h_);
                          })
                    });
                },
                
                methods:{
                    initFields() {
                        let me = this;
                        if (me.popupParames.isSelection){
                            this.isSelection = true
                        }
                        if(me.popupParames.type == "onlySimple" ){
                            me.tableFields = dataRootFields.tableFields.chooseproduct_;
                            me.filterFields = dataRootFields.filterFields.chooseproduct_simple;
                            
                        }
                        else{
                            me.filterFields = clone(dataRootFields.filterFields.chooseproduct_);
                            me.tableFields = dataRootFields.tableFields.choosesorderproduct_;
                            this.loadRequestData(this.dataRequest, {}, function(data) {
                                me.dataRequestObj = data;
                                if (me.filterFields.length) {
                                    var formFields_part_ = clone(me.filterFields);
                                    formFields_part_.map(e=>{
                                         if(e.field == "delivery_part_code") 
                                            e.options = me.dataRequestObj.delivery_part_code;
                                    });
                                    me.filterFields = formFields_part_;
                                }
                            });
                            me.filterAttr.labelwidth = "120px";
                        }
                    },
                    onServerInitData(data) {
                        
                    },
                    onQuery: function() {
                        this.pagenum = 1;
                        this.doQuery();
                    },
                    
                    onInitFilter: function() {
                        this.filterObj = {};
                        this.onQuery();
                    },
                    
                    doQuery() {
                        let me = this;
                        me.isTableLoading = true;
                        let filter_ = " 1=1 ";
                        if(me.filterFields.length > 0) {
                            for(var i=0; i < me.filterFields.length; i++) {
                                let fieldObj_ = me.filterFields[i];
                                me.filterFieldsObj[fieldObj_.field] = fieldObj_;
                            }
                        }    
                        
                        for(var k in this.filterObj) {
                            let k_val = this.filterObj[k];
                            let fieldObj_ = this.filterFieldsObj[k];
                            
                            let type_ = fieldObj_.type;
                            let field_ = fieldObj_.field;
                            let fieldtype_ = "equal";
                            if (fieldObj_.fieldname) {
                                field_ = fieldObj_.fieldname
                            }
                            if (fieldObj_.fieldtype) {
                                fieldtype_ = fieldObj_.fieldtype
                            }
                            if (fieldtype_ == "like") {
                                filter_ += " and " + field_ + " like '%" + k_val +"%'";
                            }
                            else {
                                filter_ += " and " + field_ + " = '" + k_val +"'";
                            }
                        }
                        
                        if (me.popupParames.dataname){
                            this.dataname = me.popupParames.dataname
                        }
                        if (me.popupParames.filter){
                            filter_ += me.popupParames.filter
                        }
                        let param_ = {
                            isClientMode: false,
                            dataname: this.dataname,
                            filter: filter_,
                            //empCode:localStorage.getItem("emp_code"),
                            orderby: "",
                            page: {
                                no: this.pagenum,
                                pagesize: this.pagesize
                            },
                            //attachmeta: true
                        }
                        Server.call("root/data/getEntitySet", param_, function(result) {
                            me.total = 0;
                            me.tableData = [];
                            me.isTableLoading = false;
                            if (result && result.data) {
                                var data_ = result.data.entityset;
                                me.total = result.data.page.recordcount;
                                me.tableData = data_;
                            }
                            
                            me.tableDataAfter();
                        });
                    },
                    handleSelectionChange(selection) {
                        if (selection.length > 0) {
                            for (var i = 0; i < selection.length; i++) {
                                
                                this.selectionList = selection;
                            }
                        }
                    },
                    getData: function(page) {
                        this.pagesize = page.pagesize;
                        this.pagenum = page.pagenum;
                        this.doQuery();
                    },
                    
                    rowDblClick(event) {
                        this.saveFormValByField();
                    },
                    
                    rowClick(event) {
                        this.selectrow = event.row;
                    },
                    
                    close: function() {
                        Root.hidePopup();
                    },
                    
                    saveFormValByField() {
                        if(this.popupParames.callback) {
                            document.getElementById('page_root').style.display =  "none";
                            document.getElementById('page_loading').style.display =  "block";
                            if(this.popupParames.isSelection){
                                let array = clone(this.selectionList)
                                this.popupParames.callback(array, function() {
                                    Root.hidePopup();
                                });
                            }else{
                                let obj = {
                                    row: this.selectrow
                                }
                                this.popupParames.callback(obj, function() {
                                    Root.hidePopup();
                                });
                            }
                        }
                        else {
                            alert("该按键事件缺失!")
                        }
                    },
                }
            });
                
        </script>    
    </body>
</html>