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
<!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: "steps", name: "流程步骤", dataurl: "root/approve/getWorkSetps",
                                tableFields: [
                                    {isshow: "T", field: "name", name: "步骤名称", align: "left"},
                                    {isshow: "F", field: "is_active", name: "当前步骤", align: "center", type: "switch", width: "100"},
                                    {isshow: "T", field: "writer_name", name: "审批责任人", align: "left", width: "200"},
                                    {isshow: "T", field: "remark", name: "节点备注", align: "left", width: "200"},
                                    {isshow: "T", field: "begin_time", name: "开始时间", align: "center",width: "150"},//, formatter: "formatter_date", format_pattern: "yyyy-MM-dd hh:mm:ss"
                                    {isshow: "T", field: "end_time", name: "结束时间", align: "center",width: "150"},//, formatter: "formatter_date", format_pattern: "yyyy-MM-dd hh:mm:ss"
                                ],
                            },
                            {code: "histories", name: "审批历史", dataurl: "root/approve/getWorkHistory",
                                tableFields: [
                                    // {isshow: "T", field: "workflow_name", name: "流程名称", align: "left", width: "180"},
                                    // {isshow: "T", field: "step_name", name: "步骤名称", align: "left", width: "180"},
                                    {isshow: "T", field: "writer_name", name: "审批人", align: "left", width: "200"},
                                    {isshow: "T", field: "create_time", name: "审批时间", align: "center", width: "150"},//, formatter: "formatter_date", format_pattern: "yyyy-MM-dd hh:mm:ss"
                                    {isshow: "T", field: "result_name", name: "审批结果", align: "center", width: "100"},
                                    {isshow: "T", field: "remark", name: "节点备注", align: "left"},
                                    
                                    // {isshow: "T", field: "begin_time", name: "开始时间", align: "center",width: "150"},
                                    // {isshow: "T", field: "end_time", name: "开始时间", align: "center",width: "150"},
                                ],
                            },
                            {code: "flowchart", name: "流程图"},
                        ],
                        
                        d_tabs: {
                            steps: true,
                            histories: true,
                            flowchart: true,
                        },
                        
                        tabs: [],
                        tabsobj: {},
                        formData: {},
                        isedit: false,
                        
                        body_height: 0,
                        editor_url: "",
                        // flowchart: "workspace/process/instance/tabs?processInstanceId=70c07d38726647aab8781e11731fd510&type=doneTask",
                        flowchart: "workspace/process/instance/tabs", // "processInstanceId=70c07d38726647aab8781e11731fd510&type=doneTask",
                    },
                    created() {
                        var me = this;
                        this.tabs = this.tabs_d;
                        
                        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.delta && this.popupParames.delta.dataname) {
                            // this.dataname = this.popupParames.delta.dataname
                            this.dataname = "md_position"
                        }
                        if (this.popupParames.data && this.popupParames.data.id) {
                            this.formData = this.popupParames.data;
                            this.paramObjBydefault = {
                                id: this.formData.id,
                                dataname: this.dataname,
                            }
                            
                            // this.editor_url = window.top.config.url_act + this.flowchart; //  + "?id=" + this.formData.id + "&type=doneTask";
                            this.editor_url = window.top.config.url_act + this.flowchart + "?processInstanceId=" + this.formData.id + "&type=doneTask";
                        }
                        
                        // if (this.popupParames.delta && this.popupParames.delta.machine_code) {
                        //     this.paramObjBydefault = {
                        //         id: this.formData.id,
                        //         machine_code: this.popupParames.delta.machine_code
                        //     }
                        // }
                        
                        if (this.popupParames.sceneCode) {
                            if (this.popupParames.sceneCode == "add") {//新增
                                this.isedit = true;
                            }
                        }
                    },
                    
                    mounted() {
                        var me = this;
                        if(me.tabs.length>0){
                            me.activeTabName = me.tabs[0].code;
                        }
                        
                        //初始化Tabs
                        me.initTabsPage(function() {
                            //获取数据
                            me.initData();
                        });
                        
                        me.$nextTick(() => { // 以服务的方式调用的 Loading 需要异步关闭
                            hideLoading();
                            this.body_height = this.$refs.popup_body.offsetHeight - 32 - 50;
                            
                        });
                    },
                    
                    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();
                            }
                        },
                        
                        onhandleClick() {
                            if (this.activeTabName=='steps' || this.activeTabName=='histories') {
                                this.initData();
                            }
                        },
                        
                        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 (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(me.default_filterFields);
                                //         // me.selectTabObj.tableFields = clone(me.default_tableFields);
                                        
                                //         me.selectTabObj.filterFields = clone(filterFields_);
                                //         me.selectTabObj.tableFields = clone(tableFields_);
                                        
                                //         //字段数组转字段obj,目的为了筛选时获取字段属性
                                //         me.fieldsToFieldsObj();
                                        
                                //         //设置字段事件
                                //         me.tableFieldClick();
                                //     }
                                // }
                                if (me.selectTabObj.code == "steps") {//步骤
                                    result.data.map(s=>{
                                        if (s.is_active) {
                                            s.h_classname = "m_rowactive";
                                        }
                                        for (var k in s) {
                                            if (s[k] == "null") {
                                                s[k] = null;
                                            }
                                        }
                                    })
                                    me.selectTabObj.tableData = clone(result.data);
                                }
                                else if (me.selectTabObj.code == "histories") {//过程
                                    result.data.map(s=>{
                                        for (var k in s) {
                                            if (s[k] == "null") {
                                                s[k] = null;
                                            }
                                        }
                                    })
                                    // me.selectTabObj.tableData = clone(result.data.histories);
                                    me.selectTabObj.tableData = clone(result.data);
                                }
                                
                                // 字段数组转字段obj
                                me.fieldsToFieldsObj();
                                
                                //设置字段事件
                                me.tableFieldClick();
                                
                                if (callback) {
                                    callback();
                                }
                            }, function(errorresult, callback) {
                                console.log("错误信息", errorresult);
                                if (errorresult.messages && errorresult.messages.count && errorresult.messages.count.error) {
                                    me.iscommit = false;
                                    if (errorresult.messages.list) {
                                        var config = {
                                            totab: false,
                                            // width: "1200px",
                                            // height: 800,
                                            icon: "icon-product",
                                            text: "错误信息",
                                            url: "module/tool/page/popup_error_messages.html",
                                            data: {},
                                            delta: errorresult.messages.list,
                                            callback: function(obj, callback) {
                                                if (callback) {
                                                    callback();
                                                }
                                            }
                                        };
                                        me.doPopupByPublic(config);
                                    }
                                }
                                
                                if (callback) {
                                    callback();
                                }
                                
                            });
                        },
                        
                        tableFieldClick() {
                            var me = this;
                            var tablefieldClick = {};
                            //表格字段事件设置
                            tablefieldClick.steps = {
                                code: {//字段事件设置
                                    val: {//有值时的点击事件
                                        notclick_val: "PS-001",//不可点击的值,1、是数组["11","22"];2、以“;”分隔的字符串"111;222"
                                        notclick_bindfield: [],//当该字段值等于指定字段值时不可点击["filterfield": "111"]
                                        onclick: function(obj) {//数据值点击事件
                                            Root.message({
                                                type: 'success',
                                                message: obj.val + '点击事件'
                                            }); 
                                            //打开
                                            me.opentest(obj)
                                        },
                                    },
                                },
                            };
                            this.selectTabObj.tablefieldClick = tablefieldClick[this.activeTabName];
                        },
                        
                        opentest(obj) {
                            var me = this;
                            Root.message({
                                type: 'success',
                                message: '后缀点击事件'
                            });
                            
                            var config = {
                                totab: true, //true: 以Tab导航的方式打开
                                width: "900px",
                                height: "900px",
                                icon: "icon-product",
                                text: "表单样例页面",
                                id: "test_page" + obj.row.id,//totab: true时需设置,用于判断是否已打开此页面
                                url: "module/system/page/sample/sample_form.html",
                                data: obj.row,
                                delta: {},
                                sceneCode: "browse",//"refuseedit",//"approval", //"add"//"browse",
                                callback: function(obj, callback) {
                                    me.onQuery();
                                    if (callback) {
                                        callback();
                                    }
                                }
                            };
                            me.doPopupByPublic(config);
                        },
                        
                        
                    }
                });
            };
            
            loadJsCss(function () {
                initVue();
            });
        </script>
        <style>
            /* 在vue.js中 v-cloak 这个指令是防止页面加载时出现 vuejs 的变量名而设计的 */
            [v-cloak] {
                display: none !important;
            }
            .el-tabs__nav-scroll {
                overflow: hidden;
                position: relative;
                padding-left: 20px;
            }
            .m_rowactive {
                background-color: #f4e6f5 !important;
            }
            /* .h_dialog__body {
                position: absolute;
                top: 36px;
                bottom: 65px;
                left: 10px;
                right: 10px;
            } */
            .el-dialog__footer {
                position: absolute;
                bottom: 0px;
                left: 10px;
                right: 10px;
            }
        </style>
        
    </head>
    
    <body style="margin: 0px;">
        <div v-cloak id="vbody">
            <div id="page_root">
                <div ref="popup_body" style="padding: 0px; height: 100vh;">
                    <!-- <div class="popup_topbar">
                        <span>{{title}}</span>
                        
                    </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="topbar-line">
                        <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"
                                :isdraggableorder="true"
                                
                                v-on:on-query="onQuery"
                                v-on:on-init-query="onInitFilter"
                                v-on:on-edit-query="onEditFilter"
                                v-on:order-fields="orderFilterFields"
                                >
                            </h-form-filter>
                        </div>
                    </div> -->
                
                    <div v-if="activeTabName=='steps' || activeTabName=='histories'" class="h_dialog__body">
                        <h-table
                            v-if="isRefresh && selectTabObj.tableFields"
                            ref="table1"
                            :table-fields="selectTabObj.tableFields" 
                            :table-data="selectTabObj.tableData" 
                            :pagesize="selectTabObj.pagesize"
                            :pagenum="selectTabObj.pagenum"
                            :total="selectTabObj.total"
                            :table-height="selectTabObj.tableHeight"
                            :table-field-click="selectTabObj.tablefieldClick"
                            :is-show-index="selectTabObj.isShowIndex"
                            :tableloading="tableloading"
                            :isdraggableorder="false"
                            :is-pagination="false"
                            :isshowtool="false"
                            :isfilterfield="false"
                            :isbasicfilterfields="false"
                            :istablebuttons="false"
                            
                            v-on:get-data="getData"
                            v-on:order-fields="orderTableFields"
                        >
                        </h-table>
                    </div>
                    <div v-if="activeTabName=='flowchart'" class="h_dialog__body" :style="{width: '100%', height: body_height +'px'}">
                        <iframe style="width: 100%; height: 100%;" frameborder="0" :src="editor_url"></iframe>
                    </div>
                    <!-- 底部工具栏 -->
                    <div class="el-dialog__footer" >
                        <el-button size="small" :disabled = "!(selectedrow && selectedrow.id)" v-if="isedit" type="primary" @click="saveAfter">确 定</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>