cloud-web-corejs 1.0.281 → 1.1.0-dev.4

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.
Files changed (158) hide show
  1. package/package.json +6 -2
  2. package/src/components/VabUpload/image-viewer.vue +442 -442
  3. package/src/components/VabUpload/index.vue +44 -2
  4. package/src/components/VabUpload/mixins.js +126 -19
  5. package/src/components/VabUpload/view.vue +247 -209
  6. package/src/components/baseTabs/mixins.js +181 -181
  7. package/src/components/bizTab/BizBillActions.vue +129 -0
  8. package/src/components/bizTab/BizTabListPage.vue +391 -0
  9. package/src/components/bizTab/README.md +378 -0
  10. package/src/components/bizTab/billTableUtil.js +48 -0
  11. package/src/components/bizTab/billValidators.js +136 -0
  12. package/src/components/bizTab/bizBillDetailMixin.js +705 -0
  13. package/src/components/bizTab/index.js +24 -0
  14. package/src/components/excelExport/exportFieldDialog.vue +23 -12
  15. package/src/components/excelExport/exportItemConfigUtil.js +30 -0
  16. package/src/components/excelExport/mixins.js +3 -3
  17. package/src/components/mobile/statusTag/mixins.js +1 -61
  18. package/src/components/mobile/wf/content.vue +1662 -1556
  19. package/src/components/mobile/wf/mixins/wfModifyDialogMixin.js +8 -6
  20. package/src/components/table/config.js +78 -78
  21. package/src/components/table/index.js +1276 -1276
  22. package/src/components/table/plugins/cell-area/index.js +1055 -0
  23. package/src/components/table/plugins/cell-area/index.scss +77 -0
  24. package/src/components/table/plugins/cell-area/util.js +224 -0
  25. package/src/components/table/tableForm.vue +330 -330
  26. package/src/components/table/tableFormMixin.js +318 -318
  27. package/src/components/table/vxeFilter/index.js +163 -163
  28. package/src/components/table/vxeFilter/mixin.js +316 -316
  29. package/src/components/wf/content.vue +1188 -1188
  30. package/src/components/wf/wf.js +40 -20
  31. package/src/components/wf/wfActionDropdown.vue +1 -1
  32. package/src/components/wf/wfActionItems.js +1 -1
  33. package/src/components/xform/docs/2026-08 xform H5 P0 /345/256/236/347/216/260/350/247/204/346/240/274.md" +528 -0
  34. package/src/components/xform/docs/2026-08 xform H5 P1 /345/256/236/347/216/260/350/247/204/346/240/274.md" +412 -0
  35. package/src/components/xform/docs/2026-08 xform H5 P2 /345/256/236/347/216/260/350/247/204/346/240/274.md" +287 -0
  36. package/src/components/xform/docs/2026-08 xform /347/247/273/345/212/250/347/253/257/345/270/203/345/261/200/345/257/271/351/275/220 bill_setting /346/226/271/346/241/210.md" +400 -0
  37. package/src/components/xform/form-designer/designer.js +15 -0
  38. package/src/components/xform/form-designer/form-widget/container-widget/data-table-widget.vue +269 -269
  39. package/src/components/xform/form-designer/form-widget/container-widget/detail-temp-widget.vue +132 -0
  40. package/src/components/xform/form-designer/form-widget/container-widget/detail-widget.vue +250 -250
  41. package/src/components/xform/form-designer/form-widget/dialog/fileReferenceDialog.vue +319 -320
  42. package/src/components/xform/form-designer/form-widget/dialog/formDialog.vue +365 -365
  43. package/src/components/xform/form-designer/form-widget/dialog/searchFormDialog.vue +554 -555
  44. package/src/components/xform/form-designer/form-widget/dialog/vabSearchDialog.vue +409 -409
  45. package/src/components/xform/form-designer/form-widget/field-widget/a-link-widget.vue +150 -132
  46. package/src/components/xform/form-designer/form-widget/field-widget/date-range-widget.vue +114 -114
  47. package/src/components/xform/form-designer/form-widget/field-widget/date-widget.vue +154 -154
  48. package/src/components/xform/form-designer/form-widget/field-widget/form-item-wrapper.vue +47 -1
  49. package/src/components/xform/form-designer/form-widget/field-widget/mixins/date-limit-mixin.js +178 -178
  50. package/src/components/xform/form-designer/form-widget/field-widget/mixins/time-limit-mixin.js +77 -77
  51. package/src/components/xform/form-designer/form-widget/field-widget/select-export-item-button-widget.vue +6 -0
  52. package/src/components/xform/form-designer/form-widget/field-widget/select-widget.vue +139 -139
  53. package/src/components/xform/form-designer/form-widget/field-widget/time-range-widget.vue +106 -106
  54. package/src/components/xform/form-designer/form-widget/field-widget/time-widget.vue +134 -134
  55. package/src/components/xform/form-designer/form-widget/field-widget/vabUpload-widget.vue +1 -0
  56. package/src/components/xform/form-designer/setting-panel/form-setting.vue +39 -39
  57. package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/data-table-editor.vue +10 -10
  58. package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/exportItemColumns-dialog.vue +438 -432
  59. package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/table-column-dialog.vue +2103 -2103
  60. package/src/components/xform/form-designer/setting-panel/property-editor/container-detail/detail-temp-edito.vue +90 -0
  61. package/src/components/xform/form-designer/setting-panel/property-editor/container-grid/gutter-editor.vue +82 -82
  62. package/src/components/xform/form-designer/setting-panel/property-editor/container-list-h5/list-h5-editor.vue +19 -5
  63. package/src/components/xform/form-designer/setting-panel/property-editor/container-table/table-dynamicField-editor.vue +8 -8
  64. package/src/components/xform/form-designer/setting-panel/property-editor/dropdownFlag-editor.vue +137 -137
  65. package/src/components/xform/form-designer/setting-panel/property-editor/field-button/search-dialog-event-editor.vue +237 -237
  66. package/src/components/xform/form-designer/setting-panel/property-editor/field-date/date-defaultValue-editor.vue +43 -43
  67. package/src/components/xform/form-designer/setting-panel/property-editor/field-date-range/date-range-defaultValue-editor.vue +43 -43
  68. package/src/components/xform/form-designer/setting-panel/property-editor/field-import-button/import2-button-editor.vue +96 -96
  69. package/src/components/xform/form-designer/setting-panel/property-editor/field-table-export-button/select-export-item-button-editor.vue +51 -0
  70. package/src/components/xform/form-designer/setting-panel/property-editor/field-time/time-defaultValue-editor.vue +42 -42
  71. package/src/components/xform/form-designer/setting-panel/property-editor/field-time-range/time-range-defaultValue-editor.vue +43 -43
  72. package/src/components/xform/form-designer/setting-panel/property-editor/formScriptEnabled-editor.vue +158 -158
  73. package/src/components/xform/form-designer/setting-panel/property-editor/h5Span-editor.vue +51 -0
  74. package/src/components/xform/form-designer/setting-panel/property-editor/itemStyle-editor.vue +39 -0
  75. package/src/components/xform/form-designer/setting-panel/property-editor/name-editor.vue +188 -188
  76. package/src/components/xform/form-designer/setting-panel/property-editor/styleTempClass-editor.vue +51 -0
  77. package/src/components/xform/form-designer/setting-panel/property-editor/textFlag-editor.vue +347 -347
  78. package/src/components/xform/form-designer/setting-panel/propertyRegister.js +4 -0
  79. package/src/components/xform/form-designer/widget-panel/widgetsConfig.js +59 -3
  80. package/src/components/xform/form-render/container-item/data-table-mixin.js +151 -93
  81. package/src/components/xform/form-render/container-item/detail-h5-item.vue +183 -32
  82. package/src/components/xform/form-render/container-item/detail-temp-item.vue +110 -0
  83. package/src/components/xform/form-render/container-item/h5-card-pane-item.vue +160 -140
  84. package/src/components/xform/form-render/container-item/list-h5-item.vue +1688 -1700
  85. package/src/components/xform/form-render/index.vue +153 -147
  86. package/src/components/xform/form-render/indexMixin.js +12 -0
  87. package/src/components/xform/lang/en-US.js +10 -0
  88. package/src/components/xform/lang/zh-CN.js +12 -0
  89. package/src/components/xform/mixins/defaultHandle.js +707 -707
  90. package/src/components/xform/styles/h5.scss +1992 -0
  91. package/src/components/xform/utils/textMaskUtil.js +182 -179
  92. package/src/components/xform/utils/treeTableUtil.js +1292 -1265
  93. package/src/components/xform/utils/util.js +56 -11
  94. package/src/index.js +9 -4
  95. package/src/layout/components/extractedCode/viewDialog.vue +7 -7
  96. package/src/router/index.js +21 -0
  97. package/src/router/modules/customer.js +71 -14
  98. package/src/store/modules/permission.js +17 -18
  99. package/src/utils/pdfUtil.js +429 -429
  100. package/src/utils/resolveViewComponent.js +142 -16
  101. package/src/views/bd/project/branch/bd_branch/edit.vue +145 -0
  102. package/src/views/bd/project/branch/bd_branch/list.vue +72 -0
  103. package/src/views/bd/project/branch/bd_branch/menuKindDialog.vue +106 -0
  104. package/src/views/bd/project/branch/bd_branch/mixins/edit.js +189 -0
  105. package/src/views/bd/project/branch/bd_branch/mixins/list.js +124 -0
  106. package/src/views/bd/project/branch/bd_branch/mixins/menuKindDialog.js +85 -0
  107. package/src/views/bd/project/branch/form_script/list.vue +31 -0
  108. package/src/views/bd/project/branch/form_template/list.vue +30 -0
  109. package/src/views/bd/project/branch/menu_kind/list.vue +31 -0
  110. package/src/views/bd/project/common/form_script/list.vue +16 -0
  111. package/src/views/bd/project/common/form_template/list.vue +15 -0
  112. package/src/views/bd/project/common/menu_kind/list.vue +15 -0
  113. package/src/views/bd/project/core/branchContext.js +100 -0
  114. package/src/views/bd/project/core/branchPage.js +78 -0
  115. package/src/views/bd/project/core/branchPageWrap.vue +225 -0
  116. package/src/views/bd/project/core/branchScope.js +44 -0
  117. package/src/views/bd/project/core/branchSearchPage.js +285 -0
  118. package/src/views/bd/project/core/branchSelect.vue +85 -0
  119. package/src/views/bd/project/core/branchTreeBar.vue +81 -0
  120. package/src/views/bd/project/core/httpBranchPatch.js +58 -0
  121. package/src/views/bd/project/datatable/menu_kind/list.vue +15 -0
  122. package/src/views/bd/project/datatable/table_model/list.vue +15 -0
  123. package/src/views/bd/setting/bd_company_env/dialog.vue +174 -174
  124. package/src/views/bd/setting/table_model/edit.vue +1066 -1066
  125. package/src/views/bd/setting/table_model/mixins/edit.js +1455 -1455
  126. package/src/views/bd/setting/table_model/mixins/zdDialog.js +148 -148
  127. package/src/views/demo/bizTab/bill/billConfig.js +41 -0
  128. package/src/views/demo/bizTab/bill/detail.vue +436 -0
  129. package/src/views/demo/bizTab/bill/list.vue +288 -0
  130. package/src/views/demo/bizTab/bill/productDialog.vue +176 -0
  131. package/src/views/demo/bizTab/simple/billApi.js +123 -0
  132. package/src/views/demo/bizTab/simple/detail.vue +407 -0
  133. package/src/views/demo/bizTab/simple/list.vue +217 -0
  134. package/src/views/demo/bizTab/standalone/index.vue +121 -0
  135. package/src/views/demo/bizTab/wf/billConfig.js +44 -0
  136. package/src/views/demo/bizTab/wf/detail.vue +661 -0
  137. package/src/views/demo/bizTab/wf/list.vue +242 -0
  138. package/src/views/support/form-dialog-demo/demoPickerDialog.vue +72 -0
  139. package/src/views/support/form-dialog-demo/index.vue +537 -0
  140. package/src/views/user/file_view_ins/list.vue +3 -3
  141. package/src/views/user/home/index.vue +8 -6
  142. package/src/views/user/home/wjl/content.vue +1569 -0
  143. package/src/views/user/notify_message/dialog.vue +7 -5
  144. package/src/views/user/outLink/cc_form_view.vue +188 -0
  145. package/src/views/user/outLink/form_view.vue +2 -2
  146. package/src/views/user/outLink/index.vue +4 -4
  147. package/src/views/user/outLink/view.vue +3 -3
  148. package/src/views/user/role/edit.vue +632 -632
  149. package/src/views/user/role/list.vue +260 -260
  150. package/src/views/user/wf/iframe/index.vue +3 -3
  151. package/src/views/user/wf/iframe/index2.vue +3 -3
  152. package/src/views/user/wf/wf_manage/list.vue +1112 -1116
  153. package/src/views/user/wf/wf_manage/list2.vue +9 -13
  154. package/src/views/user/wf/wf_manage/wfContentDialog.vue +8 -5
  155. package/src/components/xform/form-designer/form-widget/field-widget/dropdown-menu-widget.vue +0 -106
  156. package/src/components/xform/form-designer/form-widget/field-widget/tableexportbuttonwidget.vue +0 -99
  157. package/src/components/xform/form-render/container-item/list-h5-item2.vue +0 -1340
  158. package/src/utils/wf.js +0 -766
@@ -1,432 +1,438 @@
1
- <template>
2
- <el-dialog
3
- custom-class="dialog-style list-dialog"
4
- title="明细导出列维护"
5
- :visible.sync="showDialog"
6
- :modal="false"
7
- :show-close="!0"
8
- :close-on-click-modal="!1"
9
- :close-on-press-escape="!1"
10
- :destroy-on-close="!0"
11
- top="5vh"
12
- width="1220px"
13
- v-dialog-drag
14
- @close="closeHandle"
15
- >
16
- <div class="cont">
17
- <el-table
18
- ref="singleTable"
19
- width="100%"
20
- row-key="id"
21
- :data="tableData"
22
- height="500"
23
- border=""
24
- stripe=""
25
- v-loading="pictLoading"
26
- element-loading-background="rgba(0, 0, 0, 0)"
27
- element-loading-text="数据正在加载中"
28
- element-loading-spinner="el-icon-loading"
29
- >
30
- <el-table-column label="" width="80" fixed="left">
31
- <template #default="scope">
32
- <span>{{ scope.$index + 1 }}</span>
33
- </template>
34
- </el-table-column>
35
- <el-table-column label="" width="35" fixed="left"
36
- ><i class="el-icon-s-operation drag-option"></i>
37
- </el-table-column>
38
- <el-table-column
39
- :label="i18nt('designer.setting.columnLabel')"
40
- width="150"
41
- prop="title"
42
- fixed="left"
43
- >
44
- <template #default="scope">
45
- <el-input
46
- v-model="scope.row.title"
47
- clearable=""
48
- :disabled="!!scope.row.formatS && userFields.includes(scope.row.formatS)"
49
- ></el-input>
50
- </template>
51
- </el-table-column>
52
- <el-table-column
53
- :label="i18nt('designer.setting.columnName')"
54
- width="150"
55
- prop="field"
56
- >
57
- <template #default="scope">
58
- <el-input
59
- v-model="scope.row.field"
60
- clearable=""
61
- :disabled="!!scope.row.formatS && userFields.includes(scope.row.formatS)"
62
- ></el-input>
63
- </template>
64
- </el-table-column>
65
- <el-table-column label="导出类型" width="150" prop="exportType">
66
- <template #default="scope">
67
- <el-select v-model="scope.row.exportType" clearable>
68
- <el-option value="Image2" label="图片"></el-option>
69
- <el-option value="Number" label="数值"></el-option>
70
- </el-select>
71
- </template>
72
- </el-table-column>
73
- <el-table-column
74
- :label="i18nt('designer.setting.formatOfColumn')"
75
- width="200"
76
- prop="formatS"
77
- >
78
- <template #default="scope">
79
- <el-select
80
- v-model="scope.row.formatS"
81
- @change="changeFormatS(scope.row)"
82
- clearable
83
- >
84
- <el-option-group v-for="t in op" :key="t.label" :label="t.label">
85
- <el-option
86
- v-for="e in t.options"
87
- :key="e.value"
88
- :value="e.value"
89
- :label="e.label"
90
- ></el-option>
91
- </el-option-group>
92
- </el-select>
93
- </template>
94
- </el-table-column>
95
-
96
- <el-table-column
97
- :label="i18nt('designer.setting.renderFunction')"
98
- width="100"
99
- align="center"
100
- >
101
- <template #default="scope">
102
- <el-button
103
- :disabled="'render' !== scope.row.formatS"
104
- size="mini"
105
- plain=""
106
- round=""
107
- icon="el-icon-edit"
108
- @click="showRenderDialog(scope.row)"
109
- >{{ scope.row.render ? "已维护" : "" }}</el-button
110
- >
111
- </template>
112
- </el-table-column>
113
- <el-table-column label="操作" width="150">
114
- <template slot="header">
115
- <el-tooltip
116
- :hide-after="500"
117
- class="item"
118
- effect="dark"
119
- content="添加根节点"
120
- placement="top"
121
- >
122
- <el-button
123
- size="mini"
124
- type=""
125
- circle=""
126
- icon="el-icon-plus"
127
- @click="onAddRoot"
128
- />
129
- </el-tooltip>
130
- </template>
131
- <template #default="{ row, $index }">
132
- <el-tooltip
133
- :hide-after="hideAfter"
134
- :open-delay="openDelay"
135
- effect="dark"
136
- content="删除"
137
- placement="top"
138
- >
139
- <el-button
140
- size="mini"
141
- type=""
142
- circle=""
143
- icon="el-icon-delete"
144
- @click="onDelete(row, $index)"
145
- />
146
- </el-tooltip>
147
- </template>
148
- </el-table-column>
149
- </el-table>
150
- </div>
151
- <div class="dialog-footer" slot="footer">
152
- <el-button @click="closeHandle" class="button-sty" icon="el-icon-close">
153
- {{ i18nt("designer.hint.cancel") }}
154
- </el-button>
155
- <el-button
156
- type="primary"
157
- @click="colSubmit"
158
- class="button-sty"
159
- icon="el-icon-check"
160
- >
161
- {{ i18nt("designer.hint.confirm") }}
162
- </el-button>
163
- </div>
164
- <el-dialog
165
- v-if="showRenderDialogFlag"
166
- :title="i18nt('designer.setting.renderFunction')"
167
- :visible.sync="showRenderDialogFlag"
168
- :modal="false"
169
- :show-close="!0"
170
- custom-class="dialog-style list-dialog"
171
- :close-on-click-modal="!1"
172
- :close-on-press-escape="!1"
173
- :destroy-on-close="!0"
174
- v-dialog-drag
175
- top="7vh"
176
- :append-to-body="true"
177
- >
178
- <el-alert type="info" :closable="!1" title="function customRender(params,h) {" />
179
- <code-editor
180
- ref="dsResultEditor"
181
- mode="javascript"
182
- :readonly="!1"
183
- v-model="renderJson"
184
- ></code-editor>
185
- <el-alert type="info" :closable="!1" title="}" />
186
- <div class="dialog-footer" slot="footer">
187
- <el-button
188
- @click="showRenderDialogFlag = !1"
189
- class="button-sty"
190
- icon="el-icon-close"
191
- >
192
- {{ i18nt("designer.hint.cancel") }}
193
- </el-button>
194
- <el-button
195
- type="primary"
196
- @click="saveColumnRender"
197
- class="button-sty"
198
- icon="el-icon-check"
199
- >
200
- {{ i18nt("designer.hint.confirm") }}
201
- </el-button>
202
- </div>
203
- </el-dialog>
204
- </el-dialog>
205
- </template>
206
- <script>
207
- import i18n from "../../../../../../components/xform/utils/i18n";
208
- import Sortable from "sortablejs";
209
- import { generateId } from "../../../../../../components/xform/utils/util";
210
- let businessOptions = [
211
- {
212
- value: "_createBy",
213
- label: "创建人",
214
- },
215
- {
216
- value: "_modifyBy",
217
- label: "更新人",
218
- },
219
- {
220
- value: "create_date",
221
- label: "创建时间",
222
- },
223
- {
224
- value: "modify_date",
225
- label: "更新时间",
226
- },
227
- ];
228
- let userFields = ["_createBy", "_modifyBy", "create_date", "modify_date"];
229
-
230
- export default {
231
- mixins: [i18n],
232
- props: {
233
- designer: Object,
234
- selectedWidget: Object,
235
- optionModel: Object,
236
- },
237
- data() {
238
- return {
239
- pictLoading: true,
240
- dragSort: null,
241
- showDialog: true,
242
- tableData: [],
243
- showRenderDialogFlag: !1,
244
- renderJson: "",
245
- currentTableColumn: null,
246
- businessOptions,
247
- userFields,
248
- hideAfter: 1500,
249
- openDelay: 500,
250
- op: [
251
- {
252
- label: "动态渲染",
253
- options: [
254
- {
255
- value: "render",
256
- label: "render",
257
- },
258
- ],
259
- },
260
- {
261
- label: "业务模块",
262
- options: businessOptions,
263
- },
264
- {
265
- label: "Date Format",
266
- options: [
267
- {
268
- value: "d1",
269
- label: "yyyy-MM-dd",
270
- },
271
- {
272
- value: "d2",
273
- label: "yyyy/MM/dd",
274
- },
275
- {
276
- value: "d3",
277
- label: "yyyy年MM月dd日",
278
- },
279
- {
280
- value: "d4",
281
- label: "yyyy-MM-dd HH:mm:ss",
282
- },
283
- {
284
- value: "d5",
285
- label: "yyyy-MM-dd hh:mm:ss",
286
- },
287
- ],
288
- },
289
- {
290
- label: "Number Format",
291
- options: [
292
- {
293
- value: "n1",
294
- label: "###,###,###,##0.######",
295
- },
296
- {
297
- value: "n2",
298
- label: "###,###,###,##0.00####",
299
- },
300
- {
301
- value: "n3",
302
- label: "###,###,###,##0.000000",
303
- },
304
- {
305
- value: "n4",
306
- label: "###,###,###,##0.000",
307
- },
308
- {
309
- value: "n5",
310
- label: "###,###,###,##0.00",
311
- },
312
- {
313
- value: "n6",
314
- label: "###,###,###,##0",
315
- },
316
- {
317
- value: "n7",
318
- label: "###,##0.00##%",
319
- },
320
- ],
321
- },
322
- ],
323
- };
324
- },
325
- beforeDestroy() {
326
- if (this.dragSort) this.dragSort.destroy();
327
- },
328
- created() {},
329
- mounted() {
330
- this.init();
331
- },
332
- methods: {
333
- init() {
334
- setTimeout(() => {
335
- this.tableData = this.$baseLodash.cloneDeep(
336
- this.optionModel.exportItemColumns || []
337
- );
338
- setTimeout(() => {
339
- this.rowDrop();
340
- this.pictLoading = false;
341
- }, 200);
342
- });
343
- },
344
- closeHandle() {
345
- this.showDialog = false;
346
- this.$emit("update:visiable", false);
347
- },
348
- colSubmit() {
349
- for (let i = 0; i < this.tableData.length; i++) {
350
- let row = this.tableData[i];
351
- if (!row.title || !row.field) {
352
- this.$message.error("请输入显示名称和字段名称");
353
- return;
354
- }
355
- }
356
- this.optionModel.exportItemColumns = this.$baseLodash.cloneDeep(this.tableData);
357
- this.closeHandle();
358
- },
359
- generateRow() {
360
- let tmpId = "column" + generateId();
361
- var row = {
362
- id: tmpId,
363
- field: null,
364
- title: null,
365
- formatS: null,
366
- render: null,
367
- exportType: null,
368
- };
369
- return row;
370
- },
371
- // 添加根节点
372
- onAddRoot() {
373
- this.tableData.push(this.generateRow());
374
- },
375
- // 删除当前节点及对应子节点数据
376
- onDelete(row, index) {
377
- this.tableData.splice(index, 1);
378
- },
379
- showRenderDialog: function (e) {
380
- (this.currentTableColumn = e),
381
- (this.renderJson = e.render || ""),
382
- (this.showRenderDialogFlag = !0);
383
- },
384
- saveColumnRender: function () {
385
- this.$set(this.currentTableColumn, "render", this.renderJson),
386
- (this.showRenderDialogFlag = !1);
387
- },
388
- changeFormatS(row) {
389
- if (this.userFields.includes(row.formatS)) {
390
- let item = this.businessOptions.find((item) => item.value == row.formatS);
391
- if (item) {
392
- row.field = item.value;
393
- row.title = item.label;
394
- }
395
- }
396
- },
397
- //行拖拽
398
- rowDrop() {
399
- if (this.dragSort) this.dragSort.destroy(); // 防止在Dom上重复绑定事件
400
- var tbody = this.$refs.singleTable.$el.querySelectorAll(
401
- ".el-table__fixed-body-wrapper > table > tbody"
402
- )[0];
403
- const _this = this;
404
- this.dragSort = Sortable.create(tbody, {
405
- ghostClass: "sortable-ghost",
406
- // draggable: ".drag-option", // 修改可拖拽元素
407
- handle: ".drag-option", // 指定拖动按钮
408
- setData: function (e) {
409
- e.setData("Text", "");
410
- },
411
- onEnd({ newIndex, oldIndex }) {
412
- _this.rowDropEnd(newIndex, oldIndex);
413
- },
414
- });
415
- },
416
- //行结束拖拽事件
417
- rowDropEnd(newIndex, oldIndex) {
418
- if (oldIndex === newIndex) return;
419
-
420
- const newData = [...this.tableData];
421
- const movedRow = newData.splice(oldIndex, 1)[0];
422
-
423
- // 关键:如果 oldIndex < newIndex,说明删除后 newIndex 需要 -1
424
- const insertIndex = oldIndex < newIndex ? newIndex - 1 : newIndex;
425
-
426
- newData.splice(insertIndex, 0, movedRow);
427
- this.tableData = newData; // 触发响应式更新
428
- },
429
- },
430
- };
431
- </script>
432
- <style lang="scss"></style>
1
+ <template>
2
+ <el-dialog
3
+ custom-class="dialog-style list-dialog"
4
+ title="明细导出列维护"
5
+ :visible.sync="showDialog"
6
+ :modal="false"
7
+ :show-close="!0"
8
+ :close-on-click-modal="!1"
9
+ :close-on-press-escape="!1"
10
+ :destroy-on-close="!0"
11
+ top="5vh"
12
+ width="1220px"
13
+ v-dialog-drag
14
+ @close="closeHandle"
15
+ >
16
+ <div class="cont">
17
+ <el-table
18
+ ref="singleTable"
19
+ width="100%"
20
+ row-key="id"
21
+ :data="tableData"
22
+ height="500"
23
+ border=""
24
+ stripe=""
25
+ v-loading="pictLoading"
26
+ element-loading-background="rgba(0, 0, 0, 0)"
27
+ element-loading-text="数据正在加载中"
28
+ element-loading-spinner="el-icon-loading"
29
+ >
30
+ <el-table-column label="" width="80" fixed="left">
31
+ <template #default="scope">
32
+ <span>{{ scope.$index + 1 }}</span>
33
+ </template>
34
+ </el-table-column>
35
+ <el-table-column label="" width="35" fixed="left"
36
+ ><i class="el-icon-s-operation drag-option"></i>
37
+ </el-table-column>
38
+ <el-table-column
39
+ :label="i18nt('designer.setting.columnLabel')"
40
+ width="150"
41
+ prop="title"
42
+ fixed="left"
43
+ >
44
+ <template #default="scope">
45
+ <el-input
46
+ v-model="scope.row.title"
47
+ clearable=""
48
+ :disabled="!!scope.row.formatS && userFields.includes(scope.row.formatS)"
49
+ ></el-input>
50
+ </template>
51
+ </el-table-column>
52
+ <el-table-column
53
+ :label="i18nt('designer.setting.columnName')"
54
+ width="150"
55
+ prop="field"
56
+ >
57
+ <template #default="scope">
58
+ <el-input
59
+ v-model="scope.row.field"
60
+ clearable=""
61
+ :disabled="!!scope.row.formatS && userFields.includes(scope.row.formatS)"
62
+ ></el-input>
63
+ </template>
64
+ </el-table-column>
65
+ <el-table-column label="导出类型" width="150" prop="exportType">
66
+ <template #default="scope">
67
+ <el-select v-model="scope.row.exportType" clearable>
68
+ <el-option value="Image2" label="图片"></el-option>
69
+ <el-option value="Number" label="数值"></el-option>
70
+ </el-select>
71
+ </template>
72
+ </el-table-column>
73
+ <el-table-column
74
+ :label="i18nt('designer.setting.formatOfColumn')"
75
+ width="200"
76
+ prop="formatS"
77
+ >
78
+ <template #default="scope">
79
+ <el-select
80
+ v-model="scope.row.formatS"
81
+ @change="changeFormatS(scope.row)"
82
+ clearable
83
+ >
84
+ <el-option-group v-for="t in op" :key="t.label" :label="t.label">
85
+ <el-option
86
+ v-for="e in t.options"
87
+ :key="e.value"
88
+ :value="e.value"
89
+ :label="e.label"
90
+ ></el-option>
91
+ </el-option-group>
92
+ </el-select>
93
+ </template>
94
+ </el-table-column>
95
+
96
+ <el-table-column
97
+ :label="i18nt('designer.setting.renderFunction')"
98
+ width="100"
99
+ align="center"
100
+ >
101
+ <template #default="scope">
102
+ <el-button
103
+ :disabled="'render' !== scope.row.formatS"
104
+ size="mini"
105
+ plain=""
106
+ round=""
107
+ icon="el-icon-edit"
108
+ @click="showRenderDialog(scope.row)"
109
+ >{{ scope.row.render ? "已维护" : "" }}</el-button
110
+ >
111
+ </template>
112
+ </el-table-column>
113
+ <el-table-column label="操作" width="150">
114
+ <template slot="header">
115
+ <el-tooltip
116
+ :hide-after="500"
117
+ class="item"
118
+ effect="dark"
119
+ content="添加根节点"
120
+ placement="top"
121
+ >
122
+ <el-button
123
+ size="mini"
124
+ type=""
125
+ circle=""
126
+ icon="el-icon-plus"
127
+ @click="onAddRoot"
128
+ />
129
+ </el-tooltip>
130
+ </template>
131
+ <template #default="{ row, $index }">
132
+ <el-tooltip
133
+ :hide-after="hideAfter"
134
+ :open-delay="openDelay"
135
+ effect="dark"
136
+ content="删除"
137
+ placement="top"
138
+ >
139
+ <el-button
140
+ size="mini"
141
+ type=""
142
+ circle=""
143
+ icon="el-icon-delete"
144
+ @click="onDelete(row, $index)"
145
+ />
146
+ </el-tooltip>
147
+ </template>
148
+ </el-table-column>
149
+ </el-table>
150
+ </div>
151
+ <div class="dialog-footer" slot="footer">
152
+ <el-button @click="closeHandle" class="button-sty" icon="el-icon-close">
153
+ {{ i18nt("designer.hint.cancel") }}
154
+ </el-button>
155
+ <el-button
156
+ type="primary"
157
+ @click="colSubmit"
158
+ class="button-sty"
159
+ icon="el-icon-check"
160
+ >
161
+ {{ i18nt("designer.hint.confirm") }}
162
+ </el-button>
163
+ </div>
164
+ <el-dialog
165
+ v-if="showRenderDialogFlag"
166
+ :title="i18nt('designer.setting.renderFunction')"
167
+ :visible.sync="showRenderDialogFlag"
168
+ :modal="false"
169
+ :show-close="!0"
170
+ custom-class="dialog-style list-dialog"
171
+ :close-on-click-modal="!1"
172
+ :close-on-press-escape="!1"
173
+ :destroy-on-close="!0"
174
+ v-dialog-drag
175
+ top="7vh"
176
+ :append-to-body="true"
177
+ >
178
+ <el-alert type="info" :closable="!1" title="function customRender(params,h) {" />
179
+ <code-editor
180
+ ref="dsResultEditor"
181
+ mode="javascript"
182
+ :readonly="!1"
183
+ v-model="renderJson"
184
+ ></code-editor>
185
+ <el-alert type="info" :closable="!1" title="}" />
186
+ <div class="dialog-footer" slot="footer">
187
+ <el-button
188
+ @click="showRenderDialogFlag = !1"
189
+ class="button-sty"
190
+ icon="el-icon-close"
191
+ >
192
+ {{ i18nt("designer.hint.cancel") }}
193
+ </el-button>
194
+ <el-button
195
+ type="primary"
196
+ @click="saveColumnRender"
197
+ class="button-sty"
198
+ icon="el-icon-check"
199
+ >
200
+ {{ i18nt("designer.hint.confirm") }}
201
+ </el-button>
202
+ </div>
203
+ </el-dialog>
204
+ </el-dialog>
205
+ </template>
206
+ <script>
207
+ import i18n from "../../../../../../components/xform/utils/i18n";
208
+ import Sortable from "sortablejs";
209
+ import { generateId } from "../../../../../../components/xform/utils/util";
210
+ let businessOptions = [
211
+ {
212
+ value: "_createBy",
213
+ label: "创建人",
214
+ },
215
+ {
216
+ value: "_modifyBy",
217
+ label: "更新人",
218
+ },
219
+ {
220
+ value: "create_date",
221
+ label: "创建时间",
222
+ },
223
+ {
224
+ value: "modify_date",
225
+ label: "更新时间",
226
+ },
227
+ ];
228
+ let userFields = ["_createBy", "_modifyBy", "create_date", "modify_date"];
229
+
230
+ export default {
231
+ mixins: [i18n],
232
+ props: {
233
+ designer: Object,
234
+ selectedWidget: Object,
235
+ optionModel: Object,
236
+ },
237
+ data() {
238
+ return {
239
+ pictLoading: true,
240
+ dragSort: null,
241
+ showDialog: true,
242
+ tableData: [],
243
+ showRenderDialogFlag: !1,
244
+ renderJson: "",
245
+ currentTableColumn: null,
246
+ businessOptions,
247
+ userFields,
248
+ hideAfter: 1500,
249
+ openDelay: 500,
250
+ op: [
251
+ {
252
+ label: "动态渲染",
253
+ options: [
254
+ {
255
+ value: "render",
256
+ label: "render",
257
+ },
258
+ ],
259
+ },
260
+ {
261
+ label: "业务模块",
262
+ options: businessOptions,
263
+ },
264
+ {
265
+ label: "Date Format",
266
+ options: [
267
+ {
268
+ value: "d1",
269
+ label: "yyyy-MM-dd",
270
+ },
271
+ {
272
+ value: "d2",
273
+ label: "yyyy/MM/dd",
274
+ },
275
+ {
276
+ value: "d3",
277
+ label: "yyyy年MM月dd日",
278
+ },
279
+ {
280
+ value: "d4",
281
+ label: "yyyy-MM-dd HH:mm:ss",
282
+ },
283
+ {
284
+ value: "d5",
285
+ label: "yyyy-MM-dd hh:mm:ss",
286
+ },
287
+ ],
288
+ },
289
+ {
290
+ label: "Number Format",
291
+ options: [
292
+ {
293
+ value: "n1",
294
+ label: "###,###,###,##0.######",
295
+ },
296
+ {
297
+ value: "n2",
298
+ label: "###,###,###,##0.00####",
299
+ },
300
+ {
301
+ value: "n3",
302
+ label: "###,###,###,##0.000000",
303
+ },
304
+ {
305
+ value: "n4",
306
+ label: "###,###,###,##0.000",
307
+ },
308
+ {
309
+ value: "n5",
310
+ label: "###,###,###,##0.00",
311
+ },
312
+ {
313
+ value: "n6",
314
+ label: "###,###,###,##0",
315
+ },
316
+ {
317
+ value: "n7",
318
+ label: "###,##0.00##%",
319
+ },
320
+ ],
321
+ },
322
+ ],
323
+ };
324
+ },
325
+ beforeDestroy() {
326
+ if (this.dragSort) this.dragSort.destroy();
327
+ },
328
+ created() {},
329
+ mounted() {
330
+ this.init();
331
+ },
332
+ methods: {
333
+ init() {
334
+ setTimeout(() => {
335
+ this.tableData = this.$baseLodash.cloneDeep(
336
+ this.optionModel.exportItemColumns || []
337
+ );
338
+ setTimeout(() => {
339
+ this.rowDrop();
340
+ this.pictLoading = false;
341
+ }, 200);
342
+ });
343
+ },
344
+ closeHandle() {
345
+ this.showDialog = false;
346
+ this.$emit("update:visiable", false);
347
+ },
348
+ colSubmit() {
349
+ for (let i = 0; i < this.tableData.length; i++) {
350
+ let row = this.tableData[i];
351
+ if (!row.title || !row.field) {
352
+ this.$message.error("请输入显示名称和字段名称");
353
+ return;
354
+ }
355
+ }
356
+ // 用 $set:导出按钮是后加的宿主,历史表单 JSON 里没有 exportItemColumns 这个键,
357
+ // 直接赋值不会触发「已维护」文案更新
358
+ this.$set(
359
+ this.optionModel,
360
+ "exportItemColumns",
361
+ this.$baseLodash.cloneDeep(this.tableData)
362
+ );
363
+ this.closeHandle();
364
+ },
365
+ generateRow() {
366
+ let tmpId = "column" + generateId();
367
+ var row = {
368
+ id: tmpId,
369
+ field: null,
370
+ title: null,
371
+ formatS: null,
372
+ render: null,
373
+ exportType: null,
374
+ };
375
+ return row;
376
+ },
377
+ // 添加根节点
378
+ onAddRoot() {
379
+ this.tableData.push(this.generateRow());
380
+ },
381
+ // 删除当前节点及对应子节点数据
382
+ onDelete(row, index) {
383
+ this.tableData.splice(index, 1);
384
+ },
385
+ showRenderDialog: function (e) {
386
+ (this.currentTableColumn = e),
387
+ (this.renderJson = e.render || ""),
388
+ (this.showRenderDialogFlag = !0);
389
+ },
390
+ saveColumnRender: function () {
391
+ this.$set(this.currentTableColumn, "render", this.renderJson),
392
+ (this.showRenderDialogFlag = !1);
393
+ },
394
+ changeFormatS(row) {
395
+ if (this.userFields.includes(row.formatS)) {
396
+ let item = this.businessOptions.find((item) => item.value == row.formatS);
397
+ if (item) {
398
+ row.field = item.value;
399
+ row.title = item.label;
400
+ }
401
+ }
402
+ },
403
+ //行拖拽
404
+ rowDrop() {
405
+ if (this.dragSort) this.dragSort.destroy(); // 防止在Dom上重复绑定事件
406
+ var tbody = this.$refs.singleTable.$el.querySelectorAll(
407
+ ".el-table__fixed-body-wrapper > table > tbody"
408
+ )[0];
409
+ const _this = this;
410
+ this.dragSort = Sortable.create(tbody, {
411
+ ghostClass: "sortable-ghost",
412
+ // draggable: ".drag-option", // 修改可拖拽元素
413
+ handle: ".drag-option", // 指定拖动按钮
414
+ setData: function (e) {
415
+ e.setData("Text", "");
416
+ },
417
+ onEnd({ newIndex, oldIndex }) {
418
+ _this.rowDropEnd(newIndex, oldIndex);
419
+ },
420
+ });
421
+ },
422
+ //行结束拖拽事件
423
+ rowDropEnd(newIndex, oldIndex) {
424
+ if (oldIndex === newIndex) return;
425
+
426
+ const newData = [...this.tableData];
427
+ const movedRow = newData.splice(oldIndex, 1)[0];
428
+
429
+ // 关键:如果 oldIndex < newIndex,说明删除后 newIndex 需要 -1
430
+ const insertIndex = oldIndex < newIndex ? newIndex - 1 : newIndex;
431
+
432
+ newData.splice(insertIndex, 0, movedRow);
433
+ this.tableData = newData; // 触发响应式更新
434
+ },
435
+ },
436
+ };
437
+ </script>
438
+ <style lang="scss"></style>