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
<!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() {
                new StepsTableVue({
                    el: "#vbody",
                    data: {
                        // dataname: "so_order_available_delivery",
                        title: "客户列表",
                        steps: [
                            {name: "选择可开票列表", type: "table", dataurl: "root/data/getAvailables",
                                paramObjBydefault:{
                                    flowName: "sales",
                                    consumer: "so_invoice",
                                },
                                tableHeight: 240,
                            },
                            {name: "选择产品明细", type: "table", dataurl: "root/data/getAvailables",
                                paramObjBydefault:{
                                    flowName: "sales",
                                    consumer: "so_invoice_detail",
                                },
                                filterTxt: "1=1",
                                tableHeight: 240
                            },
                        ],
                        filterfieldClick: {},
                        tablefieldClick: {},
                        formfieldClick: {},
                        selectrow:{},
                        documentData:null,
                    },
                    created() {
                        var me = this;
                        this.popupParames = clone(Root.popupParames);
                        this.title = this.popupParames.title || this.popupParames.text
                        if (this.popupParames.filter) {
                            this.filterTxt = this.popupParames.filter
                        }
                        
                        if (this.popupParames.sceneCode) {
                            if (this.popupParames.sceneCode == "add") {//新增
                                this.isedit = true;
                            }
                        }
                    },
                    
                    mounted() {
                        var me = this;
                        this.activestep = 0;
                        
                        //获取数据
                        this.initStepsPage(function() {
                            me.initData();
                        });
                        this.$nextTick(() => { // 以服务的方式调用的 Loading 需要异步关闭
                            hideLoading();
                        });
                    },
                    
                    methods:{
                        //关闭弹窗
                        closeDialog() {
                            this.docloseDialog(true);
                        },
                        //关闭前调回调
                        saveAfter() {
                            var me = this;
                            if(this.popupParames.callback) {
                                let obj = {
                                    row: clone(me.documentData),
                                    product: clone(me.stepspageobj[1].selectedrow),
                                    pid: me.stepspageobj[0].selectedrow.id,
                                }
                                this.popupParames.callback(obj, function() {
                                    me.docloseDialog();
                                });
                            }
                            else {
                                me.docloseDialog();
                            }
                        },
                        
                        initData() {
                            var me = this;
                            if(this.activestep == 0 && this.popupParames.delta.fil){
                                me.selectTabObj.filterTxt = this.popupParames.delta.fil;
                            }
                            this.doQueryByStep(function(result, callback) {//查询后的回调,用于获取字段的
                                var metas;
                                if(result.meta){
                                    if(result.meta[me.selectTabObj.dataname]){
                                        metas = clone(result.meta[me.selectTabObj.dataname]);
                                    }
                                    else if(result.meta && result.meta.entityset){
                                        metas = clone(result.meta.entityset);
                                    }
                                }
                                
                                if (result && result.meta && (result.meta[me.selectTabObj.dataname]||result.meta.entityset)) {
                                    var filterFields_ = [];
                                    var tableFields_ = [];
                                    
                                    metas.map(f=>{
                                        f.isshow = "T";
                                        
                                        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_);
                                        
                                        //字段数组转字段obj,目的为了筛选时获取字段属性
                                        me.fieldsToFieldsObj();
                                    }
                                }
                                else {
                                    //设置字段事件
                                    me.tableFieldClick();
                                }
                                
                                if (callback) {
                                    callback();
                                }
                            });
                        },
                        onRowClick(obj) {
                            this.stepspageobj[this.activestep].selectedrow = obj.row;
                        },
                        
                        onRowDblClick(obj) {
                            if (this.activestep == 0) {
                                this.stepspageobj[0].selectedrow = obj.row;
                            }
                            else if(this.activestep == 1){
                                this.stepspageobj[1].selectedrow = obj.row;
                            }
                            
                            this.nextStepClick();
                        },
                        tableFieldClick() {
                            var me = this;
                            
                            //筛选字段事件设置
                            this.filterfieldClick = {
                                
                            };
                            
                            //表格字段事件设置
                            this.tablefieldClick = {
                                
                            };
                        
                            //表单字段事件设置
                            this.formfieldClick = {
                                
                            };
                        },
                        createDocument(){
                            var me = this;
                            var row = me.stepspageobj[0].selectedrow;
                            var row2 = me.stepspageobj[1].selectedrow;
                            let param = {
                                flowName: "sales",
                                dataName: "so_invoice",
                                ticket: {
                                    header: row.id,
                                    detail: [
                                        {detail_id: row2.id}
                                    ]
                                }
                            }
                            
                            Server.call("root/data/createDocument", param, function(result) {
                                console.log(result);
                                if (result && result.data) {
                                    me.documentData = result.data;
                                    me.saveAfter();
                                }
                            });
                        },
                        onStepClick() {
                            this.initData();
                        },
                        //下一步
                        onNextStepClick() {
                            var me = this;
                            
                            if (this.activestep == 0) {
                                
                                if(me.stepspageobj[0].selectedrow.id){
                                    this.activestep += 1;
                                    this.selectTabObj = this.stepspageobj[this.activestep];
                                    
                                    this.stepspageobj[1].filterTxt = "parent_id='" + me.stepspageobj[0].selectedrow.id + "'"
                                    this.onStepClick();
                                }
                                
                                else {
                                    if (!me.stepspageobj[0].selectedrow.id) {
                                        Root.message({
                                            type: 'error',
                                            message: '请先选择开票订单'
                                        });
                                    }
                                }
                            }
                            
                            if (this.activestep == 1) {
                                if (me.stepspageobj[1].selectedrow.id) {
                                    me.createDocument();
                                }
                                else {
                                    if (!me.stepspageobj[1].selectedrow) {
                                        Root.message({
                                            type: 'error',
                                            message: '请先选择产品'
                                        });
                                    }
                                }
                            }
                        },
                        
                        //上一步
                        onUpStepClick() {
                            this.activestep -= 1;
                            this.selectTabObj = this.stepspageobj[this.activestep];
                            if (this.selectTabObj.selectedrow && this.selectTabObj.selectedrow.id) {
                                this.$refs.table1.setCurrentRow(this.selectTabObj.selectedrow)
                            }
                        },
                    }
                });
            };
            
            loadJsCss(function () {
                initVue();
            });
        </script>
        <style>
            /* 在vue.js中 v-cloak 这个指令是防止页面加载时出现 vuejs 的变量名而设计的 */
            [v-cloak] {
                display: none !important;
            }
        </style>
        
    </head>
    
    <body style="margin: 0px;">
        <div v-cloak id="vbody">
            <div id="page_root">
                    <div ref="popup_body" style="padding: 0 20px;">
                        <!-- 标题 -->
                        <div class="el-dialog__header">
                            <div class="dialog-title">
                              <i class="iconfont icon-customermanagement"></i>
                              <span>{{title}}</span>
                            </div>
                        </div>    
                        <!-- 主体 -->
                        <div style="width: 100%;">
                            <div style="width: 80%; margin: 0 auto;">
                                <el-steps :direction= "direction" :active="activestep">
                                    <el-step v-for="(step, k) in steps" :key="k" :title="step.name" :icon="step.icon" :description="step.description"></el-step>
                                </el-steps>
                            </div>
                        </div>
                        
                        <div class="h_dialog__body">
                            <div v-if="activestep == 0||1">
                                <div class="query-bar">
                                    <h-form-filter v-if="selectTabObj.filterFields" ref="form1" 
                                        :form-attr="filterAttr" 
                                        :table-fields="selectTabObj.filterFields" 
                                        :form-data="selectTabObj.filterObj" 
                                        :table-field-click="selectTabObj.filterfieldClick"
                                        
                                        v-on:on-query="onStepClick"
                                        v-on:on-init-query="onInitFilter"
                                        >
                                    </h-form-filter>
                                </div>
                                <div>
                                    <h-table
                                        v-if="isRefresh && selectTabObj.tableFields"
                                        ref="table1"
                                        :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 - 30"
                                        :table-field-click="selectTabObj.tablefieldClick"
                                        :is-show-index="selectTabObj.isShowIndex"
                                        :tableloading="tableloading"
                                        :is-highlight-row="true"
                                        :isdraggableorder="true"
                                        
                                        v-on:get-data="getData"
                                        v-on:row-click="rowClick"
                                        v-on:row-dblclick="rowDblclick"
                                    >
                                    </h-table>
                                </div>
                            </div>
                        </div>
                    
                        <!-- 底部工具栏 -->
                        <div class="el-dialog__footer">
                            <el-button v-if="activestep > 0" size="small" @click="upStepClick">上一步</el-button>
                            <el-button v-if="activestep < steps.length" size="small" @click="nextStepClick">{{activestep == (steps.length - 1) ? '完 成' : '下一步'}}</el-button>
                            <el-button size="small" type="default" @click="closeDialog">取 消</el-button>
                        </div>
                    </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>