cloud-web-corejs 1.1.0-dev.6 → 1.1.0-dev.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/components/VabUpload/view.vue +27 -26
- package/src/components/excelImport/index.vue +156 -156
- package/src/components/mobile/wf/addTaskUserdialog.vue +23 -3
- package/src/components/mobile/wf/content.vue +110 -67
- package/src/components/mobile/wf/deleteTaskUserDialog.vue +22 -3
- package/src/components/mobile/wf/selectUserDialog.vue +122 -0
- package/src/components/mobile/wf/setCandidateDialog.vue +25 -4
- package/src/components/mobile/wf/urgingDialog.vue +26 -3
- package/src/components/mobile/wf/wfModifyDialog.vue +4 -0
- package/src/components/xform/form-designer/designer.js +36 -52
- package/src/components/xform/form-designer/form-widget/dialog/importDialog.vue +185 -185
- package/src/components/xform/form-designer/form-widget/field-widget/singleUpload-widget.vue +1 -1
- package/src/components/xform/form-designer/form-widget/field-widget/vabUpload-widget.vue +2 -2
- package/src/components/xform/form-designer/indexMixin.js +25 -0
- package/src/components/xform/form-designer/setting-panel/property-editor/container-list-h5/list-h5-editor.vue +833 -860
- package/src/components/xform/form-designer/toolbar-panel/index.vue +874 -874
- package/src/components/xform/form-designer/widget-panel/index.vue +11 -7
- package/src/components/xform/form-designer/widget-panel/indexMixin.js +15 -2
- package/src/components/xform/form-designer/widget-panel/widgetsConfig.js +53 -1
- package/src/components/xform/form-render/container-item/list-h5-item.vue +154 -27
- package/src/components/xform/form-render/indexMixin.js +23 -3
- package/src/components/xform/styles/h5.scss +775 -588
- package/src/directive/append-to-body/index.js +48 -0
- package/src/index.js +4 -0
- package/src/layout/components/Sidebar/default.vue +1655 -1655
- package/src/router/index.js +48 -48
- package/src/utils/vab.js +1283 -1283
- package/src/views/bd/setting/form_template/edit.vue +378 -356
- package/src/views/bd/setting/form_template/formDesignerDialog.vue +6 -0
- package/src/views/bd/setting/form_template/formTemplateType.js +43 -0
- package/src/views/bd/setting/form_template/list.vue +304 -303
- package/src/views/bd/setting/form_template/mixins/edit.js +344 -280
- package/src/views/bd/setting/form_template/mixins/list.js +748 -721
- package/src/views/user/file_view_ins/list.vue +970 -970
- package/src/views/user/form/vform/designer.vue +823 -821
- package/src/views/user/home/default.vue +1117 -1117
- package/src/views/user/home/index.vue +103 -103
- package/src/views/user/notify_message/dialog.vue +139 -139
- package/src/views/user/outLink/form_view.vue +202 -202
- package/src/views/user/outLink/index.vue +110 -110
- package/src/views/user/wf/iframe/index.vue +51 -51
- package/src/views/user/wf/iframe/index2.vue +64 -64
- package/src/views/user/wf/wf_manage/list2.vue +871 -871
- package/src/views/user/wf/wf_manage/wfContentDialog.vue +134 -134
|
@@ -74,75 +74,111 @@
|
|
|
74
74
|
<!-- 流程相关的弹框必须放在卡片外面。h5CardPane 折叠时会给 .cont 加
|
|
75
75
|
display:none,放在插槽里的弹框会被一起隐藏 —— 表现为「流程信息收起后,
|
|
76
76
|
通过/驳回/转办这些弹框点了没反应」(祖先 display:none 无法被后代覆盖)。 -->
|
|
77
|
-
<
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
<
|
|
93
|
-
<
|
|
94
|
-
|
|
95
|
-
}}
|
|
96
|
-
|
|
97
|
-
</
|
|
77
|
+
<el-dialog
|
|
78
|
+
title="流程图预览"
|
|
79
|
+
:modal-append-to-body="false"
|
|
80
|
+
:close-on-click-modal="false"
|
|
81
|
+
:visible.sync="showPreviewDialog"
|
|
82
|
+
:modal="false"
|
|
83
|
+
custom-class="dialog-style h5view-dialog"
|
|
84
|
+
width="100%"
|
|
85
|
+
top="0px"
|
|
86
|
+
v-el-drag-dialog
|
|
87
|
+
v-el-dialog-center
|
|
88
|
+
:append-to-body ="true"
|
|
89
|
+
:destroy-on-close="true"
|
|
90
|
+
>
|
|
91
|
+
<div class="flex">
|
|
92
|
+
<el-form label-position="top" class="form-box">
|
|
93
|
+
<div class="tit"><span>{{
|
|
94
|
+
(wfInfo.createDate ? wfInfo.createDate.substring(0, 10) : '') + wfInfo.name
|
|
95
|
+
}}</span></div>
|
|
96
|
+
<iframe style="width: 100%;flex:1" :src="wfImage"></iframe>
|
|
97
|
+
</el-form>
|
|
98
98
|
</div>
|
|
99
|
-
|
|
99
|
+
<span slot="footer" class="dialog-footer">
|
|
100
|
+
<el-button
|
|
101
|
+
type="primary"
|
|
102
|
+
plain
|
|
103
|
+
class="button-sty"
|
|
104
|
+
icon="el-icon-close"
|
|
105
|
+
@click="showPreviewDialog = false"
|
|
106
|
+
>{{$t2('关 闭', 'system.button.close2')}}</el-button
|
|
107
|
+
>
|
|
108
|
+
</span>
|
|
109
|
+
</el-dialog>
|
|
100
110
|
|
|
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
|
-
|
|
111
|
+
<el-dialog
|
|
112
|
+
title="任务情况预览"
|
|
113
|
+
:modal-append-to-body="false"
|
|
114
|
+
:close-on-click-modal="false"
|
|
115
|
+
:visible.sync="showRenwuDialog"
|
|
116
|
+
:modal="false"
|
|
117
|
+
custom-class="dialog-style h5view-dialog"
|
|
118
|
+
width="100%"
|
|
119
|
+
top="0px"
|
|
120
|
+
v-el-drag-dialog
|
|
121
|
+
v-el-dialog-center
|
|
122
|
+
:append-to-body ="true"
|
|
123
|
+
:destroy-on-close="true"
|
|
124
|
+
>
|
|
125
|
+
<div class="flex">
|
|
126
|
+
<div class="h5-process-info">
|
|
127
|
+
<div class="item" v-for="wftaskLineData in wftaskData" :key="wftaskLineData.id">
|
|
128
|
+
<div class="time">
|
|
129
|
+
{{ wftaskLineData.approveTime ? wftaskLineData.approveTime.substring(0, 10) : '' }}
|
|
130
|
+
<br/>
|
|
131
|
+
{{ wftaskLineData.approveTime ? wftaskLineData.approveTime.substring(11) : '' }}
|
|
132
|
+
</div>
|
|
133
|
+
<div class="status"
|
|
134
|
+
:class="taskStatuses[wftaskLineData.type]?taskStatuses[wftaskLineData.type].class:''">
|
|
135
|
+
{{ taskStatuses[wftaskLineData.type] ? taskStatuses[wftaskLineData.type].value : null }}
|
|
136
|
+
</div>
|
|
137
|
+
<i class="circle"></i>
|
|
138
|
+
<div class="info">
|
|
139
|
+
<p>
|
|
140
|
+
<span class="name">{{ wftaskLineData.taskName }}</span>
|
|
141
|
+
<span>{{ $t2('执行人', 'components.wf.approverName') }}:{{ wftaskLineData.approverName }}</span>
|
|
142
|
+
<span>
|
|
143
|
+
{{ $t2('候选人', 'components.wf.candidateName') }}:
|
|
144
|
+
<span class="">{{ wftaskLineData.candidateNames }}</span>
|
|
145
|
+
</span>
|
|
146
|
+
</p>
|
|
147
|
+
<p class="t"><span class="t1">{{ $t2('备注/意见', 'components.wf.opinion') }}:</span><span>{{
|
|
148
|
+
wftaskLineData.opinion
|
|
149
|
+
}}</span></p>
|
|
132
150
|
</div>
|
|
133
151
|
</div>
|
|
134
152
|
</div>
|
|
135
|
-
<!-- 同上:只读预览,合成一个「关 闭」 -->
|
|
136
|
-
<div class="fixed-bottom-btns">
|
|
137
|
-
<el-button type="primary" plain class="btn" @click="showRenwuDialog=false" icon="el-icon-close">{{
|
|
138
|
-
$t2('关 闭', 'system.button.close2')
|
|
139
|
-
}}
|
|
140
|
-
</el-button>
|
|
141
|
-
</div>
|
|
142
153
|
</div>
|
|
143
|
-
|
|
154
|
+
<!-- 同上:只读预览,合成一个「关 闭」 -->
|
|
155
|
+
<span slot="footer" class="dialog-footer">
|
|
156
|
+
<el-button
|
|
157
|
+
type="primary"
|
|
158
|
+
plain
|
|
159
|
+
class="button-sty"
|
|
160
|
+
icon="el-icon-close"
|
|
161
|
+
@click="showRenwuDialog = false"
|
|
162
|
+
>{{$t2('关 闭', 'system.button.close2')}}</el-button
|
|
163
|
+
>
|
|
164
|
+
</span>
|
|
165
|
+
</el-dialog>
|
|
166
|
+
<!-- 下面 5 个确认框(中断 / 驳回 / 通过 / 转办 / 加签)都走 v-append-to-body:
|
|
167
|
+
节点搬到 document.body 下,不再靠 position:fixed 在宿主子树里侥幸生效。
|
|
168
|
+
它们保持 .pop-tipsBox 的原造型,没有改成 el-dialog——那个圆角卡片 + 顶部
|
|
169
|
+
溢出圆形图标的样子要用 el-dialog 复刻,得把 header/body/footer 三段默认
|
|
170
|
+
样式全推翻,样式量不减反增。
|
|
144
171
|
|
|
145
|
-
|
|
172
|
+
三条约束,改动前先看 directive/append-to-body/index.js 的说明:
|
|
173
|
+
1. 必须是 v-show,不能换回 v-if(Vue 的 insert() 会静默跳过以被搬走的
|
|
174
|
+
节点为参照物的插入,兄弟顺序会错乱);
|
|
175
|
+
2. 内联 style="display: block;" 不能删(v-show 的 originalDisplay 取自
|
|
176
|
+
它,删了「显示」态会退回各应用 h5.scss 里 .pop-tipsBox{display:none});
|
|
177
|
+
3. 多挂的 h5-pop-tips 类是样式作用域锚点——搬到 body 后 .xform-h5 前缀
|
|
178
|
+
全部失配,样式改挂在 .pop-tipsBox.h5-pop-tips 上,既保住原有优先级,
|
|
179
|
+
又不会误伤同样用 .pop-tipsBox 的 confirmDialog / baseAlert / errorMsg。 -->
|
|
180
|
+
<div class="pop-tipsBox h5-pop-tips" style="display: block;" v-show="showWfManualDialog"
|
|
181
|
+
v-append-to-body>
|
|
146
182
|
<div>
|
|
147
183
|
<i class="icon"></i>
|
|
148
184
|
<div class="cont">
|
|
@@ -166,7 +202,8 @@
|
|
|
166
202
|
</div>
|
|
167
203
|
</div>
|
|
168
204
|
</div>
|
|
169
|
-
<div class="pop-tipsBox" style="display: block;" v-
|
|
205
|
+
<div class="pop-tipsBox h5-pop-tips" style="display: block;" v-show="rejectDialogVisible"
|
|
206
|
+
v-append-to-body>
|
|
170
207
|
<div>
|
|
171
208
|
<i class="icon"></i>
|
|
172
209
|
<div class="cont">
|
|
@@ -202,7 +239,8 @@
|
|
|
202
239
|
</div>
|
|
203
240
|
</div>
|
|
204
241
|
</div>
|
|
205
|
-
<div class="pop-tipsBox" style="display: block;" v-
|
|
242
|
+
<div class="pop-tipsBox h5-pop-tips" style="display: block;" v-show="agreeDialogVisible"
|
|
243
|
+
v-append-to-body>
|
|
206
244
|
<div>
|
|
207
245
|
<i class="icon"></i>
|
|
208
246
|
<div class="cont">
|
|
@@ -244,7 +282,8 @@
|
|
|
244
282
|
</div>
|
|
245
283
|
</div>
|
|
246
284
|
</div>
|
|
247
|
-
<div class="pop-tipsBox" style="display: block;" v-
|
|
285
|
+
<div class="pop-tipsBox h5-pop-tips" style="display: block;" v-show="changeWfDialogVisible"
|
|
286
|
+
v-append-to-body>
|
|
248
287
|
<div>
|
|
249
288
|
<i class="icon"></i>
|
|
250
289
|
<div class="cont">
|
|
@@ -287,7 +326,8 @@
|
|
|
287
326
|
</div>
|
|
288
327
|
</div>
|
|
289
328
|
</div>
|
|
290
|
-
<div class="pop-tipsBox" style="display: block;" v-
|
|
329
|
+
<div class="pop-tipsBox h5-pop-tips" style="display: block;" v-show="showAddIncreaseSignDialog"
|
|
330
|
+
v-append-to-body>
|
|
291
331
|
<div>
|
|
292
332
|
<i class="icon"></i>
|
|
293
333
|
<div class="cont">
|
|
@@ -399,7 +439,10 @@ export default {
|
|
|
399
439
|
自身 components 与全局注册、不查父组件的局部注册,所以被别处(如 xform 的
|
|
400
440
|
detail-h5-item)引用时会渲染不出来。补上自己的依赖声明。 */
|
|
401
441
|
h5CardPane: () => import('../h5Card/h5CardPane.vue'),
|
|
402
|
-
|
|
442
|
+
/* 选用户弹层用包内的 selectUserDialog(el-dialog + append-to-body 版)。
|
|
443
|
+
原来引的 views/mobile/user/user/dialog.vue 仍是 .pop-box 就地渲染版,
|
|
444
|
+
且 src/views 不随包发布(被包内组件引用属隐式依赖),保持原样不动。 */
|
|
445
|
+
UserDialog: () => import('./selectUserDialog.vue'),
|
|
403
446
|
urgingDialog: () => import('./urgingDialog'),
|
|
404
447
|
deleteTaskUserDialog: () => import('./deleteTaskUserDialog'),
|
|
405
448
|
addTaskUserdialog: () => import('./addTaskUserdialog'),
|
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
|
|
2
|
+
<!-- 外壳改成 el-dialog + append-to-body,说明见 urgingDialog.vue。
|
|
3
|
+
原来的 :style="'z-index:'+zIndex" 去掉了:层级由 element 的 PopupManager
|
|
4
|
+
统一分配给 .el-dialog__wrapper,再手写一层反而会和它打架。 -->
|
|
5
|
+
<el-dialog
|
|
6
|
+
:visible.sync="dialogVisible"
|
|
7
|
+
:append-to-body="true"
|
|
8
|
+
:modal="false"
|
|
9
|
+
:show-close="false"
|
|
10
|
+
:close-on-click-modal="false"
|
|
11
|
+
:destroy-on-close="true"
|
|
12
|
+
custom-class="h5-pop-dialog"
|
|
13
|
+
width="100%"
|
|
14
|
+
top="0px"
|
|
15
|
+
@close="dialogClose"
|
|
16
|
+
>
|
|
3
17
|
<div>
|
|
4
18
|
<div class="header-box">
|
|
5
19
|
<i class="back el-icon-close" @click="dialogClose"></i>
|
|
@@ -40,7 +54,7 @@
|
|
|
40
54
|
<el-button type="primary" class="btn" @click="dialogPrimary" icon="el-icon-check">确 定</el-button>
|
|
41
55
|
</div>
|
|
42
56
|
</div>
|
|
43
|
-
</
|
|
57
|
+
</el-dialog>
|
|
44
58
|
</template>
|
|
45
59
|
|
|
46
60
|
<script>
|
|
@@ -49,6 +63,11 @@ import mixin from './mixins/deleteTaskUserDialogMixin';
|
|
|
49
63
|
|
|
50
64
|
export default {
|
|
51
65
|
name: 'deleteTaskUserDialog',
|
|
52
|
-
mixins: [selectDialogMixins, mixin]
|
|
66
|
+
mixins: [selectDialogMixins, mixin],
|
|
67
|
+
data() {
|
|
68
|
+
return {
|
|
69
|
+
dialogVisible: true
|
|
70
|
+
};
|
|
71
|
+
}
|
|
53
72
|
};
|
|
54
73
|
</script>
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<!-- 移动版「选择用户」弹层(转办人 / 沟通对象 / 候选人)。
|
|
3
|
+
来源是 views/mobile/user/user/dialog.vue,那份仍被手写移动页用着、且
|
|
4
|
+
src/views 不随包发布,所以这里另起一份收进包内,原文件保持原样不动。
|
|
5
|
+
|
|
6
|
+
与原文件的差别只有三处:
|
|
7
|
+
1. 外壳从 <div class="pop-box"> 换成 el-dialog + append-to-body —— 节点挂到
|
|
8
|
+
document.body,不再依赖 position:fixed 在宿主子树里侥幸生效(祖先一旦有
|
|
9
|
+
transform / display:none 就废),层级交给 element 的 PopupManager;
|
|
10
|
+
2. 去掉 :style="'z-index:'+zIndex",同上,避免和 PopupManager 打架;
|
|
11
|
+
3. 不再 @import resources/css/h5.scss —— 那份不随包发布,且原文件用的是
|
|
12
|
+
非 scoped 的 <style>,等于把整份手写移动页样式泄成全局。本组件的骨架样式
|
|
13
|
+
走 xform/styles/h5.scss 的 .h5-pop-dialog(顶层选择器,body 挂载后才命中)。 -->
|
|
14
|
+
<el-dialog
|
|
15
|
+
:visible.sync="dialogVisible"
|
|
16
|
+
:append-to-body="true"
|
|
17
|
+
:modal="false"
|
|
18
|
+
:show-close="false"
|
|
19
|
+
:close-on-click-modal="false"
|
|
20
|
+
:destroy-on-close="true"
|
|
21
|
+
custom-class="h5-pop-dialog"
|
|
22
|
+
width="100%"
|
|
23
|
+
top="0px"
|
|
24
|
+
@close="dialogClose"
|
|
25
|
+
>
|
|
26
|
+
<div>
|
|
27
|
+
<div class="header-box">
|
|
28
|
+
<i class="back el-icon-close" @click="dialogClose"></i>
|
|
29
|
+
{{ $t1('选择用户') }}
|
|
30
|
+
</div>
|
|
31
|
+
<div class="search-H5box">
|
|
32
|
+
<div class="txt">
|
|
33
|
+
<el-input placeholder="姓名" suffix-icon="el-icon-search" v-model="formData.nickName"
|
|
34
|
+
@keyup.enter.native="searchEvent">
|
|
35
|
+
<el-button slot="append" @click="searchEvent"> 搜索</el-button>
|
|
36
|
+
</el-input>
|
|
37
|
+
</div>
|
|
38
|
+
<div class="icon-screen" @click="popStatus = true">
|
|
39
|
+
<i class="iconfont icon-shaixuan1"></i>
|
|
40
|
+
<span>{{ $t1('高级筛选') }}</span>
|
|
41
|
+
</div>
|
|
42
|
+
</div>
|
|
43
|
+
<div class="flex">
|
|
44
|
+
<div class="checkbox-all_list" @scroll="handleScroll">
|
|
45
|
+
<div v-for="(row,rowIndex) in page.records" :key="rowIndex" class="order-item"
|
|
46
|
+
:class="{on:isChecked(row)}" @click="changeCheck(row,rowIndex)">
|
|
47
|
+
<div class="is-checked" v-if="isChecked(row)"><i class="el-icon-check"></i>已选择</div>
|
|
48
|
+
<div class="t1">
|
|
49
|
+
<i class="icon"></i>
|
|
50
|
+
<span>{{ row.nickName }}</span>
|
|
51
|
+
</div>
|
|
52
|
+
<div class="t2">
|
|
53
|
+
<p>登录名:{{ row.loginAccount }}</p>
|
|
54
|
+
<p>角色:{{ row.roleNames }}</p>
|
|
55
|
+
<p>机构:{{ row.saleOrgNames }}</p>
|
|
56
|
+
<p>邮编:{{ row.zipCode }}</p>
|
|
57
|
+
<p>地址:{{ row.address }}</p>
|
|
58
|
+
<p>性别:{{ genderMap[row.gender] }}</p>
|
|
59
|
+
<p>所属组织:{{ row.companyNames }}</p>
|
|
60
|
+
</div>
|
|
61
|
+
</div>
|
|
62
|
+
</div>
|
|
63
|
+
<div class="checkbox-all">
|
|
64
|
+
<div class='ca-t'>已选择用户:</div>
|
|
65
|
+
<div class="ca-c">
|
|
66
|
+
<span v-for="(checkRow, rowIndex) in checkRows" :key="rowIndex">{{ checkRow.nickName }}<i
|
|
67
|
+
class="el-icon-delete" @click="changeCheck(checkRow)"></i></span>
|
|
68
|
+
</div>
|
|
69
|
+
</div>
|
|
70
|
+
</div>
|
|
71
|
+
<div class="fixed-bottom-btns">
|
|
72
|
+
<el-button type="primary" plain class="btn" @click="dialogClose" icon="el-icon-close">{{ $t1('取 消') }}
|
|
73
|
+
</el-button>
|
|
74
|
+
<el-button type="primary" class="btn" @click="dialogPrimary" icon="el-icon-check">{{ $t1('确 定') }}</el-button>
|
|
75
|
+
</div>
|
|
76
|
+
<h5SearchDialog v-if="popStatus" :visiable.sync="popStatus" @searchEvent="confirmSearchDialog"
|
|
77
|
+
@resetEvent="resetSearchDialog">
|
|
78
|
+
<el-form label-position="top">
|
|
79
|
+
<el-form-item label="登录名">
|
|
80
|
+
<el-input v-model="formData.loginAccount" class="txt" clearable/>
|
|
81
|
+
</el-form-item>
|
|
82
|
+
<el-form-item label="姓名">
|
|
83
|
+
<el-input v-model="formData.nickName" class="txt" clearable/>
|
|
84
|
+
</el-form-item>
|
|
85
|
+
</el-form>
|
|
86
|
+
</h5SearchDialog>
|
|
87
|
+
</div>
|
|
88
|
+
</el-dialog>
|
|
89
|
+
</template>
|
|
90
|
+
|
|
91
|
+
<script>
|
|
92
|
+
import mixin from "@base/mixins/mobile/selectDialog/index";
|
|
93
|
+
|
|
94
|
+
export default {
|
|
95
|
+
name: 'selectUserDialog',
|
|
96
|
+
mixins: [mixin],
|
|
97
|
+
props: ['visiable', 'multi', 'rows', 'param'],
|
|
98
|
+
data() {
|
|
99
|
+
return {
|
|
100
|
+
// 父级用 v-if 控制存活,组件一挂载就是「已打开」。关闭统一走 dialogClose()
|
|
101
|
+
// 向父级 $emit('update:visiable', false),由父级的 v-if 销毁本组件。
|
|
102
|
+
dialogVisible: true,
|
|
103
|
+
genderMap: {1: '男', 2: '女'}
|
|
104
|
+
};
|
|
105
|
+
},
|
|
106
|
+
created() {
|
|
107
|
+
this.initSetting({
|
|
108
|
+
url: USER_PREFIX + '/user/listCurrentPage',
|
|
109
|
+
param: () => {
|
|
110
|
+
return {
|
|
111
|
+
enabled: true,
|
|
112
|
+
...this.formData,
|
|
113
|
+
...this.param,
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
})
|
|
117
|
+
},
|
|
118
|
+
mounted() {
|
|
119
|
+
this.searchEvent();
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
</script>
|
|
@@ -1,6 +1,20 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div>
|
|
3
|
-
|
|
3
|
+
<!-- 外壳改成 el-dialog + append-to-body,说明见 urgingDialog.vue。
|
|
4
|
+
下面的选用户弹层是本弹层里再弹一层,两层都由 PopupManager 递增发号,
|
|
5
|
+
后开的天然在上,不用手写 z-index。 -->
|
|
6
|
+
<el-dialog
|
|
7
|
+
:visible.sync="dialogVisible"
|
|
8
|
+
:append-to-body="true"
|
|
9
|
+
:modal="false"
|
|
10
|
+
:show-close="false"
|
|
11
|
+
:close-on-click-modal="false"
|
|
12
|
+
:destroy-on-close="true"
|
|
13
|
+
custom-class="h5-pop-dialog"
|
|
14
|
+
width="100%"
|
|
15
|
+
top="0px"
|
|
16
|
+
@close="dialogClose"
|
|
17
|
+
>
|
|
4
18
|
<div>
|
|
5
19
|
<div class="header-box">
|
|
6
20
|
<i class="back el-icon-close" @click="dialogClose"></i>
|
|
@@ -30,7 +44,7 @@
|
|
|
30
44
|
<el-button type="primary" class="btn" @click="dialogClose" icon="el-icon-check">确 定</el-button>
|
|
31
45
|
</div>
|
|
32
46
|
</div>
|
|
33
|
-
</
|
|
47
|
+
</el-dialog>
|
|
34
48
|
<user-dialog v-if="showUserDialog" :visiable.sync="showUserDialog" @close="showUserDialog = false"
|
|
35
49
|
@confirm="userConfirm" multi="true" :rows="userRows"></user-dialog>
|
|
36
50
|
</div>
|
|
@@ -39,10 +53,17 @@
|
|
|
39
53
|
<script>
|
|
40
54
|
import selectDialogMixins from '../../../mixins/mobile/selectDialog/index.js';
|
|
41
55
|
import mixin from './mixins/setCandidateDialogMixin';
|
|
42
|
-
|
|
56
|
+
// 选用户弹层改用包内的 selectUserDialog(el-dialog 版)。原来引的
|
|
57
|
+
// views/mobile/user/user/dialog.vue 仍是 .pop-box 版、且不随包发布,保持原样不动。
|
|
58
|
+
import userDialog from "./selectUserDialog.vue";
|
|
43
59
|
|
|
44
60
|
export default {
|
|
45
61
|
mixins: [selectDialogMixins, mixin],
|
|
46
|
-
components: {userDialog}
|
|
62
|
+
components: {userDialog},
|
|
63
|
+
data() {
|
|
64
|
+
return {
|
|
65
|
+
dialogVisible: true
|
|
66
|
+
};
|
|
67
|
+
}
|
|
47
68
|
};
|
|
48
69
|
</script>
|
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
|
|
2
|
+
<!-- 外壳是 el-dialog + append-to-body:节点挂到 document.body,不再依赖
|
|
3
|
+
`position:fixed` 在宿主子树里侥幸生效(祖先一旦有 transform/display:none 就废),
|
|
4
|
+
层级也交给 element 的 PopupManager,不用再手写 z-index。
|
|
5
|
+
el-dialog 自带的表头关掉——标题和关闭按钮都在下面的 .header-box 里。
|
|
6
|
+
骨架样式见 xform/styles/h5.scss 的 .h5-pop-dialog(必须是顶层选择器)。 -->
|
|
7
|
+
<el-dialog
|
|
8
|
+
:visible.sync="dialogVisible"
|
|
9
|
+
:append-to-body="true"
|
|
10
|
+
:modal="false"
|
|
11
|
+
:show-close="false"
|
|
12
|
+
:close-on-click-modal="false"
|
|
13
|
+
:destroy-on-close="true"
|
|
14
|
+
custom-class="h5-pop-dialog"
|
|
15
|
+
width="100%"
|
|
16
|
+
top="0px"
|
|
17
|
+
@close="dialogClose"
|
|
18
|
+
>
|
|
3
19
|
<div>
|
|
4
20
|
<div class="header-box">
|
|
5
21
|
<i class="back el-icon-close" @click="dialogClose"></i>
|
|
@@ -38,7 +54,7 @@
|
|
|
38
54
|
</el-button>
|
|
39
55
|
</div>
|
|
40
56
|
</div>
|
|
41
|
-
</
|
|
57
|
+
</el-dialog>
|
|
42
58
|
</template>
|
|
43
59
|
|
|
44
60
|
<script>
|
|
@@ -47,6 +63,13 @@ import mixin from './mixins/urgingDialogMixin';
|
|
|
47
63
|
|
|
48
64
|
export default {
|
|
49
65
|
name: 'urgingDialog',
|
|
50
|
-
mixins: [selectDialogMixins, mixin]
|
|
66
|
+
mixins: [selectDialogMixins, mixin],
|
|
67
|
+
data() {
|
|
68
|
+
// 父级用 v-if 控制存活,组件一挂载就是「已打开」。关闭统一走 dialogClose()
|
|
69
|
+
// 向父级 $emit('update:visiable', false),由父级的 v-if 销毁本组件。
|
|
70
|
+
return {
|
|
71
|
+
dialogVisible: true
|
|
72
|
+
};
|
|
73
|
+
}
|
|
51
74
|
};
|
|
52
75
|
</script>
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
<template>
|
|
2
|
+
<!-- 注意:这一个没有跟着「移动版流程弹层改 el-dialog + append-to-body」那一轮走,
|
|
3
|
+
仍是 .pop-box 就地渲染。原因是 H5 不需要「修改单据」——xform H5 底栏明确
|
|
4
|
+
不放这个按钮(见 form-render/container-item/detail-h5-item.vue 的说明),
|
|
5
|
+
它只从手写移动页的 buttonGroup 进。样式仍走各应用自己的 h5.scss。 -->
|
|
2
6
|
<div class="pop-box">
|
|
3
7
|
<div>
|
|
4
8
|
<div class="header-box">
|
|
@@ -148,12 +148,17 @@ let chartContainers = [],
|
|
|
148
148
|
|
|
149
149
|
clearDesigner(skipHistoryChange) {
|
|
150
150
|
let emptyWidgetListFlag = this.widgetList.length === 0;
|
|
151
|
+
/* 版式是"当前在设计哪一端",不是表单内容的一部分。defaultFormConfig 里没有
|
|
152
|
+
layoutType,overwriteObj 之后 getLayoutType() 会退回 "PC" —— 在 H5 模板里
|
|
153
|
+
点一下「清空」,左侧面板就跳回 PC 组件列表了。先存后还。 */
|
|
154
|
+
let keepLayoutType = this.getLayoutType();
|
|
151
155
|
this.widgetList = [];
|
|
152
156
|
this.selectedId = null;
|
|
153
157
|
this.selectedWidgetName = null;
|
|
154
158
|
this.selectedWidget = {}; //this.selectedWidget = null
|
|
155
159
|
baseRefUtil.overwriteObj(this.formConfig, defaultFormConfig); //
|
|
156
160
|
this.formConfig.gridConfig = defaultFormConfig.gridConfig;
|
|
161
|
+
this.formConfig.layoutType = keepLayoutType;
|
|
157
162
|
|
|
158
163
|
if (!!skipHistoryChange) {
|
|
159
164
|
//什么也不做!!
|
|
@@ -1543,57 +1548,35 @@ let chartContainers = [],
|
|
|
1543
1548
|
newCol.options.label = "基本信息";
|
|
1544
1549
|
newCon.panes.push(newCol);
|
|
1545
1550
|
} else if (newCon.type === "detail-h5") {
|
|
1546
|
-
|
|
1547
|
-
newCon.panes.push(newTab)
|
|
1548
|
-
|
|
1549
|
-
newTab.options.tabClass = "tab-box";
|
|
1550
|
-
let newTabPane = newTab.tabs[0];
|
|
1551
|
-
newTabPane.options.label = '基本信息';*/
|
|
1552
|
-
|
|
1553
|
-
//基本信息
|
|
1551
|
+
// 一张 h5-card:基础信息 / 明细信息 / 附件信息
|
|
1554
1552
|
let newCard = this.copyNewContainerWidget(
|
|
1555
1553
|
this.getContainerByType("h5-card")
|
|
1556
1554
|
);
|
|
1557
|
-
// newTabPane.widgetList.push(newCard);
|
|
1558
1555
|
newCon.panes.push(newCard);
|
|
1559
1556
|
|
|
1560
|
-
|
|
1557
|
+
// 基础信息:默认放 h5 表格(一行两列),对齐 PC 详情的「基础信息 + 表格」
|
|
1558
|
+
let basicPane = newCard.panes[0];
|
|
1559
|
+
if (basicPane) {
|
|
1560
|
+
basicPane.options.label = "基础信息";
|
|
1561
|
+
let h5Table = this.copyNewContainerWidget(
|
|
1562
|
+
this.getContainerByType("h5-table")
|
|
1563
|
+
);
|
|
1564
|
+
basicPane.widgetList.push(h5Table);
|
|
1565
|
+
}
|
|
1566
|
+
|
|
1567
|
+
// 明细信息:H5 列表;只读阶段不预置新增/查看按钮(点行仍可进详情)
|
|
1561
1568
|
let newCardPane = this.copyNewContainerWidget(
|
|
1562
1569
|
this.getContainerByType("h5-card-pane")
|
|
1563
1570
|
);
|
|
1564
1571
|
newCardPane.options.label = "明细信息";
|
|
1565
1572
|
newCard.panes.push(newCardPane);
|
|
1566
1573
|
|
|
1567
|
-
//列表
|
|
1568
1574
|
let listH5 = this.copyNewContainerWidget(
|
|
1569
1575
|
this.getContainerByType("list-h5")
|
|
1570
|
-
); //vabUpload
|
|
1571
|
-
newCardPane.widgetList.push(listH5);
|
|
1572
|
-
|
|
1573
|
-
//列表新增按钮
|
|
1574
|
-
let buttonCon = this.copyNewFieldWidget(
|
|
1575
|
-
this.getFieldWidgetByType("button")
|
|
1576
|
-
);
|
|
1577
|
-
buttonCon.options.label = "新增";
|
|
1578
|
-
buttonCon.options.icon = "el-icon-search";
|
|
1579
|
-
buttonCon.options.onClick =
|
|
1580
|
-
"this.getWidgetRef('" + listH5.options.name + "').addTableData();";
|
|
1581
|
-
newCardPane.buttonWidgetList.push(buttonCon);
|
|
1582
|
-
|
|
1583
|
-
//列表行查看按钮
|
|
1584
|
-
buttonCon = this.copyNewFieldWidget(
|
|
1585
|
-
this.getFieldWidgetByType("button")
|
|
1586
1576
|
);
|
|
1587
|
-
|
|
1588
|
-
buttonCon.options.label = "查看";
|
|
1589
|
-
buttonCon.options.icon = "el-icon-edit";
|
|
1590
|
-
buttonCon.options.onClick =
|
|
1591
|
-
"this.getWidgetRef('" +
|
|
1592
|
-
listH5.options.name +
|
|
1593
|
-
"').openRowDetailDialog(row);";
|
|
1594
|
-
listH5.lineButtons.push(buttonCon);
|
|
1577
|
+
newCardPane.widgetList.push(listH5);
|
|
1595
1578
|
|
|
1596
|
-
|
|
1579
|
+
// 附件信息
|
|
1597
1580
|
newCardPane = this.copyNewContainerWidget(
|
|
1598
1581
|
this.getContainerByType("h5-card-pane")
|
|
1599
1582
|
);
|
|
@@ -1602,30 +1585,31 @@ let chartContainers = [],
|
|
|
1602
1585
|
|
|
1603
1586
|
let vabUploadCon = this.copyNewFieldWidget(
|
|
1604
1587
|
this.getFieldWidgetByType("vabUpload")
|
|
1605
|
-
);
|
|
1588
|
+
);
|
|
1606
1589
|
newCardPane.widgetList.push(vabUploadCon);
|
|
1607
1590
|
} else if (newCon.type === "h5-table") {
|
|
1608
|
-
|
|
1591
|
+
/* 默认 4 行 × 2 列,对齐 H5「一行两个」的紧凑版式。
|
|
1592
|
+
不再预置 input:H5 面板已下架单行输入,空单元格由设计者拖入字段。 */
|
|
1593
|
+
const h5TableCols = 2;
|
|
1594
|
+
const h5TableRows = 4;
|
|
1595
|
+
for (let i = 0; i < h5TableRows; i++) {
|
|
1609
1596
|
let newRow = {
|
|
1610
1597
|
cols: [],
|
|
1611
1598
|
};
|
|
1612
1599
|
newRow.id = "table-row-" + baseRefUtil.generateId();
|
|
1613
1600
|
newRow.merged = false;
|
|
1614
1601
|
|
|
1615
|
-
let
|
|
1616
|
-
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
|
|
1622
|
-
|
|
1623
|
-
|
|
1624
|
-
|
|
1625
|
-
|
|
1626
|
-
this.getFieldWidgetByType("input")
|
|
1627
|
-
);
|
|
1628
|
-
newCell.widgetList.push(newInput);
|
|
1602
|
+
for (let j = 0; j < h5TableCols; j++) {
|
|
1603
|
+
let newCell = baseRefUtil.deepClone(
|
|
1604
|
+
this.getContainerByType("h5-table-cell")
|
|
1605
|
+
);
|
|
1606
|
+
newCell.id = "table-cell-" + baseRefUtil.generateId();
|
|
1607
|
+
newCell.options.name = newCell.id;
|
|
1608
|
+
newCell.merged = false;
|
|
1609
|
+
newCell.options.colspan = 1;
|
|
1610
|
+
newCell.options.rowspan = 1;
|
|
1611
|
+
newRow.cols.push(newCell);
|
|
1612
|
+
}
|
|
1629
1613
|
|
|
1630
1614
|
newCon.rows.push(newRow);
|
|
1631
1615
|
}
|