cloud-web-corejs 1.1.0-dev.6 → 1.1.0-dev.7

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 (45) hide show
  1. package/package.json +1 -1
  2. package/src/components/VabUpload/view.vue +27 -26
  3. package/src/components/excelImport/index.vue +156 -156
  4. package/src/components/mobile/wf/addTaskUserdialog.vue +23 -3
  5. package/src/components/mobile/wf/content.vue +110 -67
  6. package/src/components/mobile/wf/deleteTaskUserDialog.vue +22 -3
  7. package/src/components/mobile/wf/selectUserDialog.vue +122 -0
  8. package/src/components/mobile/wf/setCandidateDialog.vue +25 -4
  9. package/src/components/mobile/wf/urgingDialog.vue +26 -3
  10. package/src/components/mobile/wf/wfModifyDialog.vue +4 -0
  11. package/src/components/xform/form-designer/designer.js +36 -52
  12. package/src/components/xform/form-designer/form-widget/dialog/importDialog.vue +185 -185
  13. package/src/components/xform/form-designer/form-widget/field-widget/singleUpload-widget.vue +1 -1
  14. package/src/components/xform/form-designer/form-widget/field-widget/vabUpload-widget.vue +2 -2
  15. package/src/components/xform/form-designer/indexMixin.js +25 -0
  16. package/src/components/xform/form-designer/setting-panel/property-editor/container-list-h5/list-h5-editor.vue +833 -860
  17. package/src/components/xform/form-designer/toolbar-panel/index.vue +874 -874
  18. package/src/components/xform/form-designer/widget-panel/index.vue +11 -7
  19. package/src/components/xform/form-designer/widget-panel/indexMixin.js +15 -2
  20. package/src/components/xform/form-designer/widget-panel/widgetsConfig.js +53 -1
  21. package/src/components/xform/form-render/container-item/list-h5-item.vue +154 -27
  22. package/src/components/xform/form-render/indexMixin.js +23 -3
  23. package/src/components/xform/styles/h5.scss +774 -588
  24. package/src/directive/append-to-body/index.js +48 -0
  25. package/src/index.js +4 -0
  26. package/src/layout/components/Sidebar/default.vue +1655 -1655
  27. package/src/router/index.js +48 -48
  28. package/src/utils/vab.js +1283 -1283
  29. package/src/views/bd/setting/form_template/edit.vue +378 -356
  30. package/src/views/bd/setting/form_template/formDesignerDialog.vue +6 -0
  31. package/src/views/bd/setting/form_template/formTemplateType.js +43 -0
  32. package/src/views/bd/setting/form_template/list.vue +304 -303
  33. package/src/views/bd/setting/form_template/mixins/edit.js +344 -280
  34. package/src/views/bd/setting/form_template/mixins/list.js +748 -721
  35. package/src/views/user/file_view_ins/list.vue +970 -970
  36. package/src/views/user/form/vform/designer.vue +823 -821
  37. package/src/views/user/home/default.vue +1117 -1117
  38. package/src/views/user/home/index.vue +103 -103
  39. package/src/views/user/notify_message/dialog.vue +139 -139
  40. package/src/views/user/outLink/form_view.vue +202 -202
  41. package/src/views/user/outLink/index.vue +110 -110
  42. package/src/views/user/wf/iframe/index.vue +51 -51
  43. package/src/views/user/wf/iframe/index2.vue +64 -64
  44. package/src/views/user/wf/wf_manage/list2.vue +871 -871
  45. package/src/views/user/wf/wf_manage/wfContentDialog.vue +134 -134
@@ -6,7 +6,7 @@
6
6
  <el-tab-pane v-if="showComponentLib" name="componentLib">
7
7
  <span slot="label"><i class="el-icon-set-up"></i> {{ i18nt('designer.componentLib') }}</span>
8
8
 
9
- <el-collapse v-model="activeNames" class="widget-collapse">
9
+ <el-collapse v-model="activeNames" class="widget-collapse" :key="currentLayoutType">
10
10
  <el-collapse-item name="1" :title="i18nt('designer.containerTitle')">
11
11
  <draggable tag="ul" :list="containers" :group="{name: 'dragGroup', pull: 'clone', put: false}"
12
12
  :clone="handleContainerWidgetClone" ghost-class="ghost" :sort="false"
@@ -34,6 +34,7 @@
34
34
  </draggable>
35
35
  </el-collapse-item>
36
36
 
37
+ <template v-if="advancedFields.length">
37
38
  <el-collapse-item name="3" :title="i18nt('designer.advancedFieldTitle')">
38
39
  <draggable tag="ul" :list="advancedFields" :group="{name: 'dragGroup', pull: 'clone', put: false}"
39
40
  :move="checkFieldMove"
@@ -47,8 +48,9 @@
47
48
  </li>
48
49
  </draggable>
49
50
  </el-collapse-item>
51
+ </template>
50
52
 
51
- <!-- -->
53
+ <template v-if="customFields.length">
52
54
  <el-collapse-item name="4" :title="i18nt('designer.customFieldTitle')">
53
55
  <draggable tag="ul" :list="customFields" :group="{name: 'dragGroup', pull: 'clone', put: false}"
54
56
  :move="checkFieldMove"
@@ -62,7 +64,7 @@
62
64
  </li>
63
65
  </draggable>
64
66
  </el-collapse-item>
65
- <!-- -->
67
+ </template>
66
68
 
67
69
 
68
70
  </el-collapse>
@@ -71,7 +73,7 @@
71
73
  <el-tab-pane v-if="showMetadataLib" name="metadataLib">
72
74
  <span slot="label"><i class="el-icon-set-up"></i> {{ i18nt('designer.metadataLib') }}</span>
73
75
 
74
- <el-collapse v-model="metadataActiveNames" class="widget-collapse">
76
+ <el-collapse v-model="metadataActiveNames" class="widget-collapse" :key="currentLayoutType">
75
77
  <el-collapse-item name="0" :title="i18nt('designer.containerTitle')">
76
78
  <draggable tag="ul" :list="commonContainers" :group="{name: 'dragGroup', pull: 'clone', put: false}"
77
79
  :clone="handleContainerWidgetClone" ghost-class="ghost" :sort="false"
@@ -97,6 +99,7 @@
97
99
  </li>
98
100
  </draggable>
99
101
  </el-collapse-item>
102
+ <template v-if="commonAdvancedFields.length">
100
103
  <el-collapse-item name="3" :title="i18nt('designer.advancedFieldTitle')">
101
104
  <draggable tag="ul" :list="commonAdvancedFields" :group="{name: 'dragGroup', pull: 'clone', put: false}"
102
105
  :move="checkFieldMove"
@@ -110,6 +113,7 @@
110
113
  </li>
111
114
  </draggable>
112
115
  </el-collapse-item>
116
+ </template>
113
117
 
114
118
 
115
119
 
@@ -160,7 +164,7 @@
160
164
  </li>
161
165
  </draggable>
162
166
  </el-collapse-item>
163
- <el-collapse-item name="compare" :title="i18nt('对比组件')">
167
+ <el-collapse-item v-if="currentLayoutType !== 'H5'" name="compare" :title="i18nt('对比组件')">
164
168
  <draggable tag="ul" :list="compareFields" :group="{name: 'dragGroup', pull: 'clone', put: false}"
165
169
  :move="checkFieldMove"
166
170
  :clone="handleFieldWidgetClone" ghost-class="ghost" :sort="false">
@@ -311,8 +315,8 @@ export default {
311
315
  background: #f1f2f3;
312
316
  font-size: 12px;
313
317
  padding-left: 12px;
314
- > span{
315
- display: flex;align-items: center;white-space: normal;line-height: 1.2;height: 35px;
318
+ > span{
319
+ display: flex;align-items: center;white-space: normal;line-height: 1.2;height: 35px;
316
320
  }
317
321
  svg {
318
322
  display: inline-block;
@@ -6,7 +6,8 @@ import {
6
6
  advancedFields,
7
7
  customFields,
8
8
  businessFields,
9
- widgetPanelOrder
9
+ widgetPanelOrder,
10
+ h5PanelAllowTypes
10
11
  } from "./widgetsConfig"
11
12
  import {
12
13
  formTemplates
@@ -207,7 +208,7 @@ modules = {
207
208
  displayName: this.i18n2t(`designer.widgetLabel.${fld.type}`, `extension.widgetLabel.${fld.type}`)
208
209
  };
209
210
  }).filter(fld => {
210
- return !this.isBanned(fld.type) && this.getIsShow(fld);
211
+ return !fld.internal && !this.isBanned(fld.type) && this.getIsShow(fld);
211
212
  });
212
213
 
213
214
  /* 面板分组归一:表单数据字段(搜索框/自动完成/级联/凭证/状态等)展示在基础字段分组 */
@@ -268,6 +269,14 @@ modules = {
268
269
  return !this.isBanned(fld.type) && this.getIsShow(fld);
269
270
  });
270
271
 
272
+ /* 空分组不渲染(见 index.vue 的 v-if),展开项按当前版式重算:
273
+ 不能只做减法,否则从 H5 切回 PC 时分组回来了却是收起状态 */
274
+ this.activeNames = ["1", "2"]
275
+ .concat(this.advancedFields.length ? ["3"] : [])
276
+ .concat(this.customFields.length ? ["4"] : []);
277
+ this.metadataActiveNames = ["0", "1", "2", "4"]
278
+ .concat(this.commonAdvancedFields.length ? ["3"] : []);
279
+
271
280
  },
272
281
 
273
282
  /* 按 widgetPanelOrder 排序面板展示列表;未列出的类型(含扩展组件)排在末尾,保持原有相对顺序 */
@@ -354,6 +363,10 @@ modules = {
354
363
  let flag = !ftd.layoutType || ftd.layoutType === layoutType;
355
364
  let flag2 = this.checkColumnFlag(ftd)
356
365
  let flag3 = !!ftd.commonFlag
366
+ /* H5 面板按白名单收口,PC 不受影响 */
367
+ if (layoutType === "H5") {
368
+ flag = flag && h5PanelAllowTypes.indexOf(ftd.type) > -1;
369
+ }
357
370
  return flag && flag2 && flag3;
358
371
  }
359
372
  }
@@ -51,6 +51,7 @@ export const containers = [
51
51
  category: "container",
52
52
  icon: "table",
53
53
  commonFlag: !0,
54
+ layoutType: "PC",
54
55
  columnFlag: true,
55
56
  rows: [],
56
57
  options: {
@@ -341,6 +342,7 @@ export const containers = [
341
342
  category: "container",
342
343
  icon: "text-field",
343
344
  commonFlag: !0,
345
+ layoutType: "PC",
344
346
  formItemFlag: !0,
345
347
  widgetList: [],
346
348
  options: {
@@ -716,6 +718,7 @@ export const containers = [
716
718
  category: "container",
717
719
  icon: "tree-pane",
718
720
  commonFlag: !0,
721
+ layoutType: "PC",
719
722
  leftWidgetList: [],
720
723
  widgetList: [],
721
724
  options: {
@@ -771,7 +774,7 @@ export const containers = [
771
774
  name: "",
772
775
  hidden: !1,
773
776
  customClass: "",
774
- fullWidth: false,
777
+ fullWidth: true,
775
778
  },
776
779
  },
777
780
  {
@@ -795,6 +798,7 @@ export const containers = [
795
798
  icon: "tree",
796
799
  category: "container",
797
800
  commonFlag: !0,
801
+ layoutType: "PC",
798
802
  widgetList: [],
799
803
  options: {
800
804
  name: "tree",
@@ -1174,6 +1178,7 @@ export const basicFields = [
1174
1178
  type: "input-batch",
1175
1179
  icon: "input-batch",
1176
1180
  commonFlag: !0,
1181
+ layoutType: "PC",
1177
1182
  formItemFlag: !0,
1178
1183
  columnFlag: true,
1179
1184
  tableField: null,
@@ -2071,6 +2076,7 @@ export const basicFields = [
2071
2076
  type: "html-text",
2072
2077
  icon: "html-text",
2073
2078
  commonFlag: !0,
2079
+ layoutType: "PC",
2074
2080
  formItemFlag: !1,
2075
2081
  columnFlag: false,
2076
2082
  options: {
@@ -2397,6 +2403,7 @@ export const advancedFields = [
2397
2403
  type: "echart-pie",
2398
2404
  icon: "echart-pie",
2399
2405
  commonFlag: !0,
2406
+ layoutType: "PC",
2400
2407
  formItemFlag: false,
2401
2408
  options: {
2402
2409
  name: "",
@@ -2501,6 +2508,7 @@ export const advancedFields = [
2501
2508
  type: "echart-bar",
2502
2509
  icon: "echart",
2503
2510
  commonFlag: !0,
2511
+ layoutType: "PC",
2504
2512
  formItemFlag: false,
2505
2513
  options: {
2506
2514
  name: "",
@@ -2691,6 +2699,7 @@ export const advancedFields = [
2691
2699
  type: "echart-category",
2692
2700
  icon: "echart-category",
2693
2701
  commonFlag: !0,
2702
+ layoutType: "PC",
2694
2703
  formItemFlag: false,
2695
2704
  options: {
2696
2705
  name: "",
@@ -3264,6 +3273,7 @@ export const advancedFields = [
3264
3273
  icon: "el-icon-upload",
3265
3274
  formItemFlag: !1,
3266
3275
  commonFlag: !0,
3276
+ layoutType: "PC",
3267
3277
  columnFlag: true,
3268
3278
  tableField: null,
3269
3279
  options: {
@@ -3293,6 +3303,7 @@ export const advancedFields = [
3293
3303
  icon: "el-icon-upload",
3294
3304
  formItemFlag: !1,
3295
3305
  commonFlag: !0,
3306
+ layoutType: "PC",
3296
3307
  columnFlag: true,
3297
3308
  options: {
3298
3309
  name: "",
@@ -3324,6 +3335,7 @@ export const advancedFields = [
3324
3335
  icon: "el-icon-upload",
3325
3336
  formItemFlag: !1,
3326
3337
  commonFlag: !0,
3338
+ layoutType: "PC",
3327
3339
  columnFlag: true,
3328
3340
  options: {
3329
3341
  name: "",
@@ -3396,6 +3408,7 @@ export const advancedFields = [
3396
3408
  type: "import-button",
3397
3409
  icon: "el-icon-download",
3398
3410
  commonFlag: !0,
3411
+ layoutType: "PC",
3399
3412
  columnFlag: true,
3400
3413
  formItemFlag: !1,
3401
3414
  options: {
@@ -3448,6 +3461,7 @@ export const advancedFields = [
3448
3461
  type: "import2-button",
3449
3462
  icon: "el-icon-download",
3450
3463
  commonFlag: !0,
3464
+ layoutType: "PC",
3451
3465
  columnFlag: true,
3452
3466
  formItemFlag: !1,
3453
3467
  options: {
@@ -3496,6 +3510,7 @@ export const advancedFields = [
3496
3510
  type: "print-button",
3497
3511
  icon: "el-icon-printer",
3498
3512
  commonFlag: !0,
3513
+ layoutType: "PC",
3499
3514
  columnFlag: true,
3500
3515
  formItemFlag: !1,
3501
3516
  options: {
@@ -3537,6 +3552,7 @@ export const advancedFields = [
3537
3552
  type: "print-detail-button",
3538
3553
  icon: "el-icon-printer",
3539
3554
  commonFlag: !0,
3555
+ layoutType: "PC",
3540
3556
  columnFlag: false,
3541
3557
  formItemFlag: !1,
3542
3558
  options: {
@@ -3654,6 +3670,7 @@ export const advancedFields = [
3654
3670
  type: "census",
3655
3671
  icon: "census",
3656
3672
  commonFlag: !0,
3673
+ layoutType: "PC",
3657
3674
  formItemFlag: false,
3658
3675
  options: {
3659
3676
  name: "",
@@ -3720,6 +3737,7 @@ export const advancedFields = [
3720
3737
  category: "container",
3721
3738
  icon: "tree-table",
3722
3739
  commonFlag: !0,
3740
+ layoutType: "PC",
3723
3741
  formItemFlag: !0,
3724
3742
  rows: [],
3725
3743
  options: {
@@ -3796,6 +3814,7 @@ export const advancedFields = [
3796
3814
  type: "gantt",
3797
3815
  icon: "chart",
3798
3816
  commonFlag: !0,
3817
+ layoutType: "PC",
3799
3818
  formItemFlag: !1,
3800
3819
  options: {
3801
3820
  name: "",
@@ -3818,6 +3837,7 @@ export const advancedFields = [
3818
3837
  type: "download-button",
3819
3838
  icon: "el-icon-download",
3820
3839
  commonFlag: !0,
3840
+ layoutType: "PC",
3821
3841
  columnFlag: true,
3822
3842
  formItemFlag: !1,
3823
3843
  options: {
@@ -3856,6 +3876,7 @@ export const advancedFields = [
3856
3876
  type: "vue-page",
3857
3877
  icon: "vue-sfc",
3858
3878
  commonFlag: !0,
3879
+ layoutType: "PC",
3859
3880
  formItemFlag: !1,
3860
3881
  columnFlag: false,
3861
3882
  options: {
@@ -4104,6 +4125,8 @@ export const businessFields = [
4104
4125
  commonFlag: !0,
4105
4126
  columnFlag: true,
4106
4127
  formItemFlag: !0,
4128
+ /* H5 业务组件只保留创建人/更新人/创建时间/更新时间 */
4129
+ layoutType: "PC",
4107
4130
  tableField: null,
4108
4131
  options: {
4109
4132
  ...vabsearchConfig,
@@ -4127,6 +4150,7 @@ export const businessFields = [
4127
4150
  commonFlag: !0,
4128
4151
  columnFlag: true,
4129
4152
  formItemFlag: !0,
4153
+ layoutType: "PC",
4130
4154
  tableField: null,
4131
4155
  options: {
4132
4156
  ...vabsearchConfig,
@@ -4151,6 +4175,7 @@ export const businessFields = [
4151
4175
  commonFlag: !0,
4152
4176
  columnFlag: true,
4153
4177
  formItemFlag: !0,
4178
+ layoutType: "PC",
4154
4179
  tableField: null,
4155
4180
  options: {
4156
4181
  ...projectTagConfig,
@@ -4172,6 +4197,7 @@ export const businessFields = [
4172
4197
  commonFlag: !0,
4173
4198
  columnFlag: true,
4174
4199
  formItemFlag: !0,
4200
+ layoutType: "PC",
4175
4201
  tableField: null,
4176
4202
  options: {
4177
4203
  ...projectTagConfig,
@@ -4234,6 +4260,7 @@ export const businessFields = [
4234
4260
  commonFlag: !0,
4235
4261
  columnFlag: true,
4236
4262
  formItemFlag: !1,
4263
+ layoutType: "PC",
4237
4264
  options: {
4238
4265
  name: "",
4239
4266
  label: "复制",
@@ -4264,6 +4291,7 @@ export const businessFields = [
4264
4291
  commonFlag: !0,
4265
4292
  columnFlag: true,
4266
4293
  formItemFlag: !1,
4294
+ layoutType: "PC",
4267
4295
  options: {
4268
4296
  name: "",
4269
4297
  // label: "暂存",
@@ -4286,6 +4314,7 @@ export const businessFields = [
4286
4314
  type: "oplog",
4287
4315
  icon: "list",
4288
4316
  commonFlag: !0,
4317
+ layoutType: "PC",
4289
4318
  formItemFlag: !1,
4290
4319
  options: {
4291
4320
  name: "",
@@ -4308,6 +4337,7 @@ export const businessFields = [
4308
4337
  icon: "file-upload-field",
4309
4338
  commonFlag: !0,
4310
4339
  formItemFlag: !0,
4340
+ layoutType: "PC",
4311
4341
  tableField: null,
4312
4342
  options: {
4313
4343
  name: "",
@@ -4653,6 +4683,28 @@ export const widgetPanelOrder = {
4653
4683
  ],
4654
4684
  };
4655
4685
 
4686
+ /**
4687
+ * H5 版式左侧组件面板白名单(仅影响面板展示,不影响已有模板渲染与按 type 查找)。
4688
+ * 容器:H5详情 / H5列表 / H5卡片 / h5表格
4689
+ * 基础字段:文本、状态、凭证、下拉选项
4690
+ * (status / vabUpload 定义在 advancedFields,面板会归入基础字段)
4691
+ * 业务组件:创建人、更新人、创建时间、更新时间
4692
+ */
4693
+ export const h5PanelAllowTypes = [
4694
+ "detail-h5",
4695
+ "list-h5",
4696
+ "h5-card",
4697
+ "h5-table",
4698
+ "text",
4699
+ "status",
4700
+ "vabUpload",
4701
+ "select",
4702
+ "create_by-text",
4703
+ "modify_by-text",
4704
+ "create_date-text",
4705
+ "modify_date-text",
4706
+ ];
4707
+
4656
4708
  /**
4657
4709
  * H5 版式:所有表单字段统一具备 h5Span(整宽/半宽)。
4658
4710
  *
@@ -111,7 +111,12 @@
111
111
  <template
112
112
  v-else-if="column.slots && column.slots.default == 'widget'"
113
113
  >
114
+ <!-- 临时只读:只出选中文本;关掉 H5_TEMP_READ_ONLY 后仍走下面的控件 -->
115
+ <template v-if="getReadMode()">
116
+ {{ getColumnDisplayText(column, row, rowIndex) }}
117
+ </template>
114
118
  <component
119
+ v-else
115
120
  :is="getColumnWidgetName(column.params.widget)"
116
121
  :field="column.params.widget"
117
122
  :form-model="globalModel.formModel"
@@ -230,12 +235,90 @@
230
235
  }}
231
236
  </template>
232
237
 
233
- <!-- 明细行只出纯文本:编辑控件(widget)与操作链接
234
- (editDelete/editButton)都不在行上渲染,点整行进详情,
235
- 详情弹框里才是可编辑的控件。 -->
236
- <template v-else>
238
+ <!-- 临时只读:行上只出选中文本。控件/操作链接不能删,
239
+ 关掉 H5_TEMP_READ_ONLY 后仍要能编辑。 -->
240
+ <template v-else-if="getReadMode()">
237
241
  {{ getColumnDisplayText(column, row, rowIndex) }}
238
242
  </template>
243
+ <template
244
+ v-else-if="
245
+ column.slots && column.slots.default == 'widget'
246
+ "
247
+ >
248
+ <component
249
+ :is="getColumnWidgetName(column.params.widget)"
250
+ :field="column.params.widget"
251
+ :form-model="globalModel.formModel"
252
+ :designer="null"
253
+ :key="rowIndex + '-' + columnIndex"
254
+ :parent-widget="widget"
255
+ :columnConfig="column.params.columnConfig"
256
+ :subFormRowIndex="rowIndex"
257
+ :formItemProp="
258
+ getColumnProp(widget, {
259
+ column: column,
260
+ rowIndex: rowIndex,
261
+ row: row,
262
+ items: fieldModel,
263
+ })
264
+ "
265
+ :tableParam="{
266
+ column: column,
267
+ rowIndex: rowIndex,
268
+ row: row,
269
+ items: fieldModel,
270
+ }"
271
+ ></component>
272
+ </template>
273
+ <template
274
+ v-else-if="column.params.formatS == 'editDelete'"
275
+ >
276
+ <a
277
+ href="javascript:void(0);"
278
+ class="a-link"
279
+ @click="deleteRow(row, rowIndex)"
280
+ >
281
+ <el-tooltip
282
+ :enterable="false"
283
+ effect="dark"
284
+ content="删除"
285
+ placement="top"
286
+ popper-class="tooltip-skin"
287
+ >
288
+ <i class="el-icon-delete" />
289
+ </el-tooltip>
290
+ </a>
291
+ </template>
292
+ <template
293
+ v-else-if="column.params.formatS == 'editButton'"
294
+ >
295
+ <a
296
+ href="javascript:void(0);"
297
+ class="a-link"
298
+ @click.stop="openEditDialog(row)"
299
+ >
300
+ <el-tooltip
301
+ :enterable="false"
302
+ effect="dark"
303
+ content="查看"
304
+ placement="top"
305
+ popper-class="tooltip-skin"
306
+ >
307
+ <i class="el-icon-edit" />
308
+ </el-tooltip>
309
+ </a>
310
+ </template>
311
+ <template v-else>
312
+ {{
313
+ column.formatter({
314
+ cellValue: row[column.field],
315
+ column: column,
316
+ rowIndex: rowIndex,
317
+ row: row,
318
+ items: fieldModel,
319
+ })
320
+ }}
321
+ </template>
239
322
  </dd>
240
323
  </div>
241
324
  </dl>
@@ -377,7 +460,8 @@
377
460
  width="100%"
378
461
  top="0px"
379
462
  v-el-drag-dialog
380
- v-el-dialog-center
463
+ v-el-dialog-center
464
+ :append-to-body ="true"
381
465
  :destroy-on-close="true"
382
466
  >
383
467
  <div class="cont" style="height: calc(100vh - 73px)">
@@ -699,6 +783,7 @@ export default {
699
783
  "globalModel",
700
784
  "getFormConfig",
701
785
  "getGlobalDsv",
786
+ "getReadMode",
702
787
  ],
703
788
  data: function () {
704
789
  let that = this;
@@ -1466,6 +1551,9 @@ export default {
1466
1551
  return newData;
1467
1552
  },
1468
1553
  addTableData(rows, field) {
1554
+ if (this.getReadMode && this.getReadMode()) {
1555
+ return;
1556
+ }
1469
1557
  let formDataModel = this.formModel;
1470
1558
  let tableRows = this.fieldModel;
1471
1559
  let fullData = this.fieldModel;
@@ -1500,30 +1588,33 @@ export default {
1500
1588
  },
1501
1589
  getColumnWidgetConfig(row) {
1502
1590
  let formRef = this.getFormRef();
1503
- let formatS = row.formatS;
1504
1591
  let columnSelectedWidget = null;
1505
1592
  let columnEditFields = null;
1506
-
1507
1593
  let type = this.columnFormatMap[row.formatS];
1508
1594
 
1509
1595
  if (type) {
1510
- columnSelectedWidget = this.$baseLodash.cloneDeep(
1511
- formRef.getFieldWidgetByType(type)
1512
- );
1513
- let tmpId = generateId();
1514
- let idVal = row.prop ? row.prop : type + tmpId;
1515
- columnSelectedWidget.id = idVal;
1516
- columnSelectedWidget.options.name = idVal;
1517
- if (row.columnOption && Object.keys(row.columnOption).length) {
1518
- row.columnOption.required = row.required || false;
1519
- columnSelectedWidget.options = row.columnOption;
1596
+ // 格式化配置写在 row.widget(含 optionItems);老数据才落在 columnOption。
1597
+ // 不能每次从字段模板重建,否则下拉选项丢失,行上只能看到 value。
1598
+ if (row.widget && row.widget.type) {
1599
+ columnSelectedWidget = this.$baseLodash.cloneDeep(row.widget);
1520
1600
  } else {
1521
- columnSelectedWidget.options.required = row.required || false;
1522
- row.columnOption = columnSelectedWidget.options;
1601
+ columnSelectedWidget = this.$baseLodash.cloneDeep(
1602
+ formRef.getFieldWidgetByType(type)
1603
+ );
1604
+ let tmpId = generateId();
1605
+ let idVal = row.prop ? row.prop : type + tmpId;
1606
+ columnSelectedWidget.id = idVal;
1607
+ if (row.columnOption && Object.keys(row.columnOption).length) {
1608
+ columnSelectedWidget.options = row.columnOption;
1609
+ }
1610
+ }
1611
+ if (!columnSelectedWidget.options) {
1612
+ columnSelectedWidget.options = {};
1523
1613
  }
1524
1614
  columnSelectedWidget.options.name = row.prop;
1525
1615
  columnSelectedWidget.options.label = row.label;
1526
1616
  columnSelectedWidget.options.labelHidden = true;
1617
+ columnSelectedWidget.options.required = row.required || false;
1527
1618
  }
1528
1619
  return { columnSelectedWidget, columnEditFields };
1529
1620
  },
@@ -1631,18 +1722,17 @@ export default {
1631
1722
  /**
1632
1723
  * 明细行的显示文本。
1633
1724
  *
1634
- * 行上不渲染编辑控件,所以有选项的列(下拉/状态/单选/多选)必须自己把
1635
- * value 换成 label —— 否则状态列会显示成 1 而不是「审核中」,
1636
- * 因为 formatterValue 只做日期与数字格式化,不查选项表。
1725
+ * H5 只读:行上不渲染下拉框,只出选中项文本。
1726
+ * 有选项的列必须自己把 value 换成 label,formatterValue 不做选项映射。
1637
1727
  */
1638
1728
  getColumnDisplayText(column, row, rowIndex) {
1639
1729
  let value = row[column.field];
1640
1730
  let columnWidget = column.params ? column.params.widget : null;
1641
- let widgetOptions = (columnWidget && columnWidget.options) || {};
1642
- let optionList = widgetOptions.optionItems || widgetOptions.statusParam;
1643
- if (optionList && optionList.length) {
1644
- let hit = optionList.filter((o) => String(o.value) === String(value))[0];
1645
- if (hit) return hit.label;
1731
+ if (columnWidget) {
1732
+ let mapped = this.getWidgetOptionLabel(columnWidget, value);
1733
+ if (mapped != null && mapped !== "") {
1734
+ return mapped;
1735
+ }
1646
1736
  }
1647
1737
  return column.formatter({
1648
1738
  cellValue: value,
@@ -1652,6 +1742,43 @@ export default {
1652
1742
  items: this.fieldModel,
1653
1743
  });
1654
1744
  },
1745
+ getOptionItemValueKey(widget) {
1746
+ let options = (widget && widget.options) || {};
1747
+ if (options.commonAttributeEnabled) {
1748
+ return options.valueKey || "sn";
1749
+ }
1750
+ return options.valueKey || "value";
1751
+ },
1752
+ getOptionItemLabelKey(widget) {
1753
+ let options = (widget && widget.options) || {};
1754
+ if (options.commonAttributeEnabled) {
1755
+ return options.labelKey || "value";
1756
+ }
1757
+ return options.labelKey || "label";
1758
+ },
1759
+ getWidgetOptionLabel(fieldWidget, fieldModel) {
1760
+ if (fieldModel === null || fieldModel === undefined || fieldModel === "") {
1761
+ return fieldModel;
1762
+ }
1763
+ let options = (fieldWidget && fieldWidget.options) || {};
1764
+ let optionList = options.optionItems || options.statusParam;
1765
+ if (!Array.isArray(optionList) || !optionList.length) {
1766
+ return null;
1767
+ }
1768
+ let labelField = this.getOptionItemLabelKey(fieldWidget);
1769
+ let valueField = this.getOptionItemValueKey(fieldWidget);
1770
+ let values = Array.isArray(fieldModel) ? fieldModel : [fieldModel];
1771
+ let labels = values.map((val) => {
1772
+ let item = optionList.find(
1773
+ (o) => o[valueField] === val || String(o[valueField]) === String(val)
1774
+ );
1775
+ if (!item) return null;
1776
+ let label = item[labelField];
1777
+ return this.$t1 ? this.$t1(label) : label;
1778
+ });
1779
+ let hit = labels.filter((x) => x != null && x !== "");
1780
+ return hit.length ? hit.join(",") : null;
1781
+ },
1655
1782
  /**
1656
1783
  * 行点击:
1657
1784
  * - 查询选择场景(isQueryTable):点行是勾选,保持原行为;