cloud-web-corejs 1.0.258 → 1.0.259

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 (248) hide show
  1. package/package.json +32 -25
  2. package/src/components/VabUpload/fileLibraryDialog.vue +296 -0
  3. package/src/components/VabUpload/index.js +22 -2
  4. package/src/components/VabUpload/index.vue +242 -231
  5. package/src/components/VabUpload/mixins/fileLibraryDialog.js +1112 -0
  6. package/src/components/VabUpload/mixins.js +1971 -1829
  7. package/src/components/VabUpload/privateProfileDialog.vue +2 -2
  8. package/src/components/baseArea/index.vue +1628 -0
  9. package/src/components/baseInputExport/mixins.js +48 -31
  10. package/src/components/baseInputNumber/index.vue +9 -9
  11. package/src/components/baseTabs/index.vue +16 -8
  12. package/src/components/code-editor/async.js +29 -0
  13. package/src/components/code-editor/index.vue +93 -4
  14. package/src/components/errorMsg/index.js +10 -9
  15. package/src/components/errorMsg/mixins.js +25 -23
  16. package/src/components/excelExport/exportFieldDialog.vue +40 -18
  17. package/src/components/excelExport/index.js +62 -3
  18. package/src/components/excelExport/index.vue +2 -1
  19. package/src/components/excelExport/mixins.js +496 -340
  20. package/src/components/excelImport/index.js +69 -7
  21. package/src/components/excelImport/mixins.js +841 -9
  22. package/src/components/fileLibrary/categoryMoveDialog.vue +109 -109
  23. package/src/components/fileLibrary/fileHistoryDialog.vue +1 -1
  24. package/src/components/fileLibrary/fileObjAuthDialog.vue +297 -298
  25. package/src/components/fileLibrary/fileObjAuthEdit.vue +1 -1
  26. package/src/components/fileLibrary/filterDialog.vue +1 -1
  27. package/src/components/fileLibrary/index.vue +1109 -1110
  28. package/src/components/fileLibrary/mixins/indexMixins.js +10 -0
  29. package/src/components/fileLibrary/propertiesDialog.vue +190 -190
  30. package/src/components/fileLibrary/recycleBinDialog.vue +237 -236
  31. package/src/components/formOplog/mixins.js +85 -80
  32. package/src/components/hiprint/view/design/index.vue +7 -2
  33. package/src/components/jsonImport/exportUtil.js +106 -0
  34. package/src/components/jsonImport/index.js +75 -50
  35. package/src/components/jsonImport/mixins.js +350 -348
  36. package/src/components/langImport/mixins.js +502 -500
  37. package/src/components/micro-view-host/contract.js +66 -0
  38. package/src/components/micro-view-host/index.vue +148 -0
  39. package/src/components/mobile/file/index.vue +10 -0
  40. package/src/components/mobile/wf/mixins/wfModifyDialogMixin.js +51 -47
  41. package/src/components/obsUpload/index.vue +234 -231
  42. package/src/components/obsUpload/mixins.js +1542 -1476
  43. package/src/components/onlineTalk/talkUserDialog.vue +1 -1
  44. package/src/components/table/CellSlot.vue +12 -10
  45. package/src/components/table/config.js +74 -1
  46. package/src/components/table/index.js +1208 -1
  47. package/src/components/table/tableFormMixin.js +285 -1
  48. package/src/components/table/util/index.js +38 -40
  49. package/src/components/table/vxeFilter/index.js +153 -2
  50. package/src/components/table/vxeFilter/mixin.js +305 -3
  51. package/src/components/tempStorage/tempStorageDialog.vue +1 -1
  52. package/src/components/vb-tabs/x-tabs.vue +10 -5
  53. package/src/components/wf/addTaskUserdialog.vue +1 -1
  54. package/src/components/wf/mixins/setCandidateDialog.js +217 -217
  55. package/src/components/wf/mixins/setCandidateDialog2.js +252 -252
  56. package/src/components/wf/wf.js +2224 -2203
  57. package/src/components/wf/wfUtil.js +2 -1
  58. package/src/components/xform/docs/2026-08 /345/210/227/350/241/250/345/257/274/345/207/272/350/204/261/346/225/217/345/210/227/345/211/224/351/231/244/350/220/275/345/234/260/346/226/207/346/241/243.md" +173 -0
  59. package/src/components/xform/form-designer/designer.js +1 -0
  60. package/src/components/xform/form-designer/form-widget/container-widget/containerMixin.js +110 -1
  61. package/src/components/xform/form-designer/form-widget/container-widget/data-table-mixin.js +282 -1
  62. package/src/components/xform/form-designer/form-widget/field-widget/area-select-widget.vue +272 -0
  63. package/src/components/xform/form-designer/form-widget/field-widget/autocomplete-widget.vue +119 -0
  64. package/src/components/xform/form-designer/form-widget/field-widget/fieldMixin.js +14 -0
  65. package/src/components/xform/form-designer/form-widget/field-widget/form-item-wrapper.vue +18 -73
  66. package/src/components/xform/form-designer/form-widget/field-widget/mixins/autocomplete-mixin.js +451 -0
  67. package/src/components/xform/form-designer/form-widget/field-widget/mixins/date-limit-mixin.js +157 -0
  68. package/src/components/xform/form-designer/form-widget/field-widget/mixins/utc-transform-mixin.js +75 -0
  69. package/src/components/xform/form-designer/form-widget/field-widget/save_submit_wf_button-widget.vue +112 -0
  70. package/src/components/xform/form-designer/form-widget/field-widget/script-input-widget.vue +149 -0
  71. package/src/components/xform/form-designer/form-widget/indexMixin.js +179 -1
  72. package/src/components/xform/form-designer/indexMixin.js +823 -1
  73. package/src/components/xform/form-designer/refMixinDesign.js +27 -1
  74. package/src/components/xform/form-designer/setting-panel/action-button-config-dialog.vue +241 -0
  75. package/src/components/xform/form-designer/setting-panel/form-dynamicField-setting.vue +601 -0
  76. package/src/components/xform/form-designer/setting-panel/form-setting.vue +6 -0
  77. package/src/components/xform/form-designer/setting-panel/index.vue +314 -309
  78. package/src/components/xform/form-designer/setting-panel/indexMixin.js +324 -1
  79. package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/data-table-editor.vue +8 -7
  80. package/src/components/xform/form-designer/setting-panel/property-editor/container-list-h5/list-h5-editor.vue +8 -7
  81. package/src/components/xform/form-designer/setting-panel/property-editor/container-table/table-dynamicField-editor.vue +344 -0
  82. package/src/components/xform/form-designer/setting-panel/property-editor/dropdownFlag-editor.vue +2 -2
  83. package/src/components/xform/form-designer/setting-panel/property-editor/field-area-select/areaDataType-editor.vue +25 -0
  84. package/src/components/xform/form-designer/setting-panel/property-editor/field-area-select/areaMinLevel-editor.vue +50 -0
  85. package/src/components/xform/form-designer/setting-panel/property-editor/field-area-select/areaName-editor.vue +20 -0
  86. package/src/components/xform/form-designer/setting-panel/property-editor/field-autocomplete/autocomplete-vabSearchName-editor.vue +199 -0
  87. package/src/components/xform/form-designer/setting-panel/property-editor/field-baseAttachment/baseAttachment-fileTypes-editor.vue +23 -0
  88. package/src/components/xform/form-designer/setting-panel/property-editor/field-cascader/showAllLevels-editor.vue +21 -0
  89. package/src/components/xform/form-designer/setting-panel/property-editor/field-date/date-dateLimit-editor.vue +157 -0
  90. package/src/components/xform/form-designer/setting-panel/property-editor/field-script-input/script-input-editor.vue +55 -0
  91. package/src/components/xform/form-designer/setting-panel/property-editor/field-vabUpload/vabUpload-fileTypes-editor.vue +23 -0
  92. package/src/components/xform/form-designer/setting-panel/property-editor/fileTypesEditorMixin.js +116 -0
  93. package/src/components/xform/form-designer/setting-panel/property-editor/fileTypesSelect.vue +176 -0
  94. package/src/components/xform/form-designer/setting-panel/property-editor/textFlag-editor.vue +3 -3
  95. package/src/components/xform/form-designer/setting-panel/property-editor/utcTransformEnabled-editor.vue +19 -0
  96. package/src/components/xform/form-designer/setting-panel/widgetPropertyDialogMixin.js +186 -0
  97. package/src/components/xform/form-designer/toolbar-panel/indexMixin.js +566 -1
  98. package/src/components/xform/form-designer/widget-panel/indexMixin.js +290 -1
  99. package/src/components/xform/form-render/compareDelList.vue +83 -0
  100. package/src/components/xform/form-render/compareView.vue +76 -0
  101. package/src/components/xform/form-render/container-item/containerItemMixin.js +378 -1
  102. package/src/components/xform/form-render/container-item/data-table-mixin.js +35 -0
  103. package/src/components/xform/form-render/container-item/detail-item.vue +41 -0
  104. package/src/components/xform/form-render/container-item/dynamicFieldEngine.js +285 -0
  105. package/src/components/xform/form-render/container-item/dynamicFieldMixin.js +416 -0
  106. package/src/components/xform/form-render/container-item/list-h5-item.vue +12 -0
  107. package/src/components/xform/form-render/dynamicDialogRender.js +195 -1
  108. package/src/components/xform/form-render/dynamicDrawerRender.js +229 -0
  109. package/src/components/xform/form-render/formDynamicFieldMixin.js +131 -0
  110. package/src/components/xform/form-render/refMixin.js +29 -1
  111. package/src/components/xform/mixins/scriptHttp.js +172 -1
  112. package/src/components/xform/utils/dynamicSchemaUtil.js +361 -0
  113. package/src/components/xform/utils/tableCellValidateUtil.js +148 -0
  114. package/src/components/xform/utils/textMaskUtil.js +179 -0
  115. package/src/components/xform/utils/treeTableUtil.js +1265 -0
  116. package/src/components/xform/utils/util.js +1 -0
  117. package/src/components/xform/utils/validators.js +133 -1
  118. package/src/directive/LimitNumber/index.js +143 -124
  119. package/src/microRouter/index.js +447 -0
  120. package/src/mixins/tableTree/index.js +77 -14
  121. package/src/permission.js +132 -107
  122. package/src/public-path.js +38 -0
  123. package/src/router/index.js +3 -3
  124. package/src/store/modules/micro.js +57 -0
  125. package/src/store/modules/permission.js +535 -371
  126. package/src/store/modules/tagsView.js +38 -21
  127. package/src/store/modules/user.js +409 -370
  128. package/src/utils/aes.js +9 -3
  129. package/src/utils/auth.js +1 -1
  130. package/src/utils/componentDialog.js +162 -40
  131. package/src/utils/global.js +35 -34
  132. package/src/utils/index.js +579 -579
  133. package/src/utils/keepAlive.js +8 -4
  134. package/src/utils/lazyPlugin.js +66 -0
  135. package/src/utils/menuAdapter.js +277 -0
  136. package/src/utils/repeatOpen.js +48 -0
  137. package/src/utils/request.js +417 -395
  138. package/src/utils/resolveViewComponent.js +203 -0
  139. package/src/utils/vab.js +14 -3
  140. package/src/utils/validate.js +104 -106
  141. package/src/views/bd/setting/bd_attach_setting/dialog.vue +1 -1
  142. package/src/views/bd/setting/bd_attach_setting/list.vue +1 -1
  143. package/src/views/bd/setting/bd_company_env/dialog.vue +1 -1
  144. package/src/views/bd/setting/bd_company_env/list.vue +1 -1
  145. package/src/views/bd/setting/formVersion/ftHistoryDialog.vue +488 -489
  146. package/src/views/bd/setting/form_import_log/list.vue +1 -1
  147. package/src/views/bd/setting/form_script/dialog.vue +1 -1
  148. package/src/views/bd/setting/form_script/form_list.vue +174 -166
  149. package/src/views/bd/setting/form_script/list.vue +1 -1
  150. package/src/views/bd/setting/form_script/list1.vue +1 -1
  151. package/src/views/bd/setting/form_script/mixins/form_list.js +330 -322
  152. package/src/views/bd/setting/form_template/dialog.vue +1 -1
  153. package/src/views/bd/setting/form_template/formDesignerDialog.vue +172 -171
  154. package/src/views/bd/setting/form_template/ftHistoryDialog.vue +1 -1
  155. package/src/views/bd/setting/form_template/itemList.vue +1 -1
  156. package/src/views/bd/setting/form_template/list.vue +3 -3
  157. package/src/views/bd/setting/form_template/mixins/edit.js +3 -3
  158. package/src/views/bd/setting/form_template/mixins/list.js +3 -3
  159. package/src/views/bd/setting/form_template/mixins/list2.js +3 -3
  160. package/src/views/bd/setting/form_template/mixins/wf_list.js +3 -3
  161. package/src/views/bd/setting/form_template/wfObjConfigDialog.vue +253 -254
  162. package/src/views/bd/setting/form_template/wf_list.vue +3 -3
  163. package/src/views/bd/setting/logic_param/edit.vue +20 -20
  164. package/src/views/bd/setting/logic_param/list.vue +1 -1
  165. package/src/views/bd/setting/menu_kind/dialog.vue +1 -1
  166. package/src/views/bd/setting/menu_kind/list.vue +1 -1
  167. package/src/views/bd/setting/push_data/list.vue +1 -1
  168. package/src/views/bd/setting/push_data_h/list.vue +1 -1
  169. package/src/views/bd/setting/request_async_setting/list.vue +1 -1
  170. package/src/views/bd/setting/request_setting/list.vue +1 -1
  171. package/src/views/bd/setting/table_model/dialog.vue +1 -1
  172. package/src/views/bd/setting/table_model/list.vue +1 -1
  173. package/src/views/bd/setting/table_model/zdDialog.vue +1 -1
  174. package/src/views/user/access_log/list.vue +1 -1
  175. package/src/views/user/access_log/list2.vue +1 -1
  176. package/src/views/user/api_request/list.vue +1 -1
  177. package/src/views/user/area/dialog.vue +1 -1
  178. package/src/views/user/area/list.vue +1 -1
  179. package/src/views/user/bill_setting/list.vue +1 -1
  180. package/src/views/user/bill_setting/userDialog.vue +1 -1
  181. package/src/views/user/code_rules/list.vue +1 -1
  182. package/src/views/user/commMenu/index.vue +2 -2
  183. package/src/views/user/common_attribute/list.vue +2 -2
  184. package/src/views/user/common_script/list.vue +1 -1
  185. package/src/views/user/company_info/dialog.vue +1 -1
  186. package/src/views/user/country/dialog.vue +1 -1
  187. package/src/views/user/country/list.vue +1 -1
  188. package/src/views/user/data_type_setting/dialog.vue +1 -1
  189. package/src/views/user/extend_datasource/dialog.vue +4 -1
  190. package/src/views/user/extend_datasource/edit.vue +2 -1
  191. package/src/views/user/extend_datasource/list.vue +4 -1
  192. package/src/views/user/fieldTranslation/list.vue +1 -1
  193. package/src/views/user/field_values_invisible/list.vue +1 -1
  194. package/src/views/user/file_type/list.vue +1 -1
  195. package/src/views/user/file_view_area/list.vue +1 -1
  196. package/src/views/user/file_view_ins/list.vue +22 -1
  197. package/src/views/user/form/view/list.vue +64 -1
  198. package/src/views/user/groups/dialog.vue +1 -1
  199. package/src/views/user/groups/list.vue +1 -1
  200. package/src/views/user/home/default.vue +2 -2
  201. package/src/views/user/home/default2.vue +1158 -1148
  202. package/src/views/user/home/index.vue +3 -10
  203. package/src/views/user/lang_tag/dialog.vue +1 -1
  204. package/src/views/user/lang_tag/list.vue +1 -1
  205. package/src/views/user/language_setting/list.vue +1 -1
  206. package/src/views/user/login/default.vue +0 -8
  207. package/src/views/user/login/indexMixin.js +547 -556
  208. package/src/views/user/menu/list.vue +25 -2
  209. package/src/views/user/menuFallback/index.vue +123 -0
  210. package/src/views/user/mobile_menu/list.vue +1 -1
  211. package/src/views/user/notify_message/dialog.vue +22 -1
  212. package/src/views/user/notify_message/list.vue +1 -1
  213. package/src/views/user/notify_template/list.vue +1 -1
  214. package/src/views/user/notify_template/list2.vue +1 -1
  215. package/src/views/user/oplog/list.vue +1 -1
  216. package/src/views/user/outLink/form_view.vue +5 -14
  217. package/src/views/user/outLink/index.vue +6 -1
  218. package/src/views/user/outLink/view.vue +5 -13
  219. package/src/views/user/position/dialog.vue +1 -1
  220. package/src/views/user/position/list.vue +1 -1
  221. package/src/views/user/project_tag/dialog.vue +1 -1
  222. package/src/views/user/project_tag/list.vue +1 -1
  223. package/src/views/user/push_setting/list.vue +1 -1
  224. package/src/views/user/request_setting/list.vue +1 -1
  225. package/src/views/user/role/dialog.vue +1 -1
  226. package/src/views/user/role/list.vue +1 -1
  227. package/src/views/user/sale_org/dialog.vue +1 -1
  228. package/src/views/user/sale_org/list.vue +1 -1
  229. package/src/views/user/system_notice/list.vue +1 -1
  230. package/src/views/user/system_parameter/list.vue +1 -1
  231. package/src/views/user/user/dialog.vue +1 -1
  232. package/src/views/user/user/edit.vue +306 -159
  233. package/src/views/user/user/form_dialog.vue +1 -1
  234. package/src/views/user/user/form_list.vue +1 -1
  235. package/src/views/user/user/list.vue +2 -2
  236. package/src/views/user/user_log_classify/list.vue +1 -1
  237. package/src/views/user/wf/iframe/index.vue +6 -1
  238. package/src/views/user/wf/iframe/index2.vue +6 -1
  239. package/src/views/user/wf/wfReport/index.vue +12 -6
  240. package/src/views/user/wf/wf_auto_submit_data/list.vue +2 -2
  241. package/src/views/user/wf/wf_manage/list.vue +97 -24
  242. package/src/views/user/wf/wf_manage/list2.vue +875 -0
  243. package/src/views/user/wf/wf_manage/wfContentDialog.vue +23 -1
  244. package/src/views/user/wf/wf_obj_config/dialog.vue +1 -1
  245. package/src/views/user/wf/wf_obj_config/list.vue +1 -1
  246. package/src/views/user/wf/wf_obj_config/list_form.vue +1 -1
  247. package/src/views/user/wf/wf_transfer_setting/list.vue +1 -1
  248. package/src/views/user/workbench_menu/list.vue +1 -1
@@ -0,0 +1,21 @@
1
+ <template>
2
+ <el-form-item :label="i18nt('designer.setting.showAllLevels')">
3
+ <el-switch v-model="optionModel.showAllLevels"></el-switch>
4
+ </el-form-item>
5
+ </template>
6
+
7
+ <script>
8
+ import i18n from "../../../../../../components/xform/utils/i18n";
9
+
10
+ export default {
11
+ name: "showAllLevels-editor",
12
+ mixins: [i18n],
13
+ props: {
14
+ designer: Object,
15
+ selectedWidget: Object,
16
+ optionModel: Object,
17
+ },
18
+ };
19
+ </script>
20
+
21
+ <style scoped></style>
@@ -0,0 +1,157 @@
1
+ <template>
2
+ <div>
3
+ <el-form-item label="关联开始字段">
4
+ <el-select
5
+ v-if="dateFieldOptions.length"
6
+ v-model="optionModel.limitStartField"
7
+ filterable
8
+ clearable
9
+ placeholder="不能小于该字段值"
10
+ >
11
+ <el-option
12
+ v-for="item in dateFieldOptions"
13
+ :key="item.value"
14
+ :label="item.label"
15
+ :value="item.value"
16
+ ></el-option>
17
+ </el-select>
18
+ <el-input
19
+ v-else
20
+ v-model="optionModel.limitStartField"
21
+ placeholder="请输入开始字段属性名"
22
+ clearable
23
+ ></el-input>
24
+ </el-form-item>
25
+ <el-form-item label="关联结束字段">
26
+ <el-select
27
+ v-if="dateFieldOptions.length"
28
+ v-model="optionModel.limitEndField"
29
+ filterable
30
+ clearable
31
+ placeholder="不能大于该字段值"
32
+ >
33
+ <el-option
34
+ v-for="item in dateFieldOptions"
35
+ :key="item.value"
36
+ :label="item.label"
37
+ :value="item.value"
38
+ ></el-option>
39
+ </el-select>
40
+ <el-input
41
+ v-else
42
+ v-model="optionModel.limitEndField"
43
+ placeholder="请输入结束字段属性名"
44
+ clearable
45
+ ></el-input>
46
+ </el-form-item>
47
+ <el-form-item label="最小日期">
48
+ <el-date-picker
49
+ v-model="optionModel.minDate"
50
+ :type="pickerType"
51
+ :format="optionModel.format"
52
+ :value-format="optionModel.valueFormat"
53
+ style="width: 100%"
54
+ clearable
55
+ placeholder="留空则不限制"
56
+ ></el-date-picker>
57
+ </el-form-item>
58
+ <el-form-item label="最大日期">
59
+ <el-date-picker
60
+ v-model="optionModel.maxDate"
61
+ :type="pickerType"
62
+ :format="optionModel.format"
63
+ :value-format="optionModel.valueFormat"
64
+ style="width: 100%"
65
+ clearable
66
+ placeholder="留空则不限制"
67
+ ></el-date-picker>
68
+ </el-form-item>
69
+ </div>
70
+ </template>
71
+
72
+ <script>
73
+ import i18n from "../../../../../../components/xform/utils/i18n";
74
+ import propertyMixin from "../../../../../../components/xform/form-designer/setting-panel/property-editor/propertyMixin";
75
+ import { loopHandleWidget } from "../../../../../../components/xform/utils/util";
76
+
77
+ export default {
78
+ name: "date-dateLimit-editor",
79
+ mixins: [i18n, propertyMixin],
80
+ props: {
81
+ designer: Object,
82
+ selectedWidget: Object,
83
+ optionModel: Object,
84
+ tableColumns: Array,
85
+ },
86
+ computed: {
87
+ pickerType() {
88
+ return this.optionModel.type || "date";
89
+ },
90
+ currentFieldKey() {
91
+ return this.getFieldKeyByOptions(this.optionModel);
92
+ },
93
+ dateFieldOptions() {
94
+ let options = [];
95
+ if (this.tableColumns && this.tableColumns.length) {
96
+ this.collectDateFieldsFromColumns(this.tableColumns, options);
97
+ } else if (this.designer && this.designer.widgetList) {
98
+ loopHandleWidget(this.designer.widgetList, (widget) => {
99
+ if (widget.type !== "date" || widget.id === this.selectedWidget.id) {
100
+ return;
101
+ }
102
+ let fieldKey = this.getFieldKeyByOptions(widget.options);
103
+ if (fieldKey && fieldKey !== this.currentFieldKey) {
104
+ options.push({
105
+ value: fieldKey,
106
+ label: widget.options.label || fieldKey,
107
+ });
108
+ }
109
+ });
110
+ }
111
+ return options;
112
+ },
113
+ },
114
+ methods: {
115
+ getFieldKeyByOptions(options) {
116
+ if (!options) {
117
+ return "";
118
+ }
119
+ return (options.keyNameEnabled && options.keyName) || options.name || "";
120
+ },
121
+ collectDateFieldsFromColumns(columns, options) {
122
+ columns.forEach((col) => {
123
+ if (col.children && col.children.length) {
124
+ this.collectDateFieldsFromColumns(col.children, options);
125
+ return;
126
+ }
127
+ if (!this.isDateColumn(col)) {
128
+ return;
129
+ }
130
+ let fieldKey = col.prop;
131
+ if (col.columnOption) {
132
+ fieldKey = this.getFieldKeyByOptions(col.columnOption) || fieldKey;
133
+ }
134
+ if (col.editColumnOption) {
135
+ fieldKey =
136
+ this.getFieldKeyByOptions(col.editColumnOption) || fieldKey;
137
+ }
138
+ if (fieldKey && fieldKey !== this.currentFieldKey) {
139
+ options.push({
140
+ value: fieldKey,
141
+ label: col.label || fieldKey,
142
+ });
143
+ }
144
+ });
145
+ },
146
+ isDateColumn(col) {
147
+ return (
148
+ col.formatS === "date" ||
149
+ col.formatS === "editDate" ||
150
+ col.editFormatS === "editDate" ||
151
+ col.widget?.type === "date" ||
152
+ col.editWidget?.type === "date"
153
+ );
154
+ },
155
+ },
156
+ };
157
+ </script>
@@ -0,0 +1,55 @@
1
+ <template>
2
+ <div>
3
+ <el-form-item label="编辑器语言">
4
+ <el-select v-model="optionModel.editorMode">
5
+ <el-option value="javascript" label="JavaScript"></el-option>
6
+ <el-option value="java" label="Java"></el-option>
7
+ <el-option value="json" label="JSON"></el-option>
8
+ <el-option value="text" label="文本"></el-option>
9
+ </el-select>
10
+ </el-form-item>
11
+ <el-form-item label="编辑器高度">
12
+ <el-input
13
+ v-model="optionModel.editorHeight"
14
+ placeholder="如 200px"
15
+ ></el-input>
16
+ </el-form-item>
17
+ <el-form-item label="最小行数">
18
+ <el-input-number
19
+ v-model="optionModel.editorMinLines"
20
+ :min="3"
21
+ :max="100"
22
+ controls-position="right"
23
+ style="width: 100%"
24
+ ></el-input-number>
25
+ </el-form-item>
26
+ <el-form-item label="最大行数">
27
+ <el-input-number
28
+ v-model="optionModel.editorMaxLines"
29
+ :min="3"
30
+ :max="200"
31
+ controls-position="right"
32
+ style="width: 100%"
33
+ ></el-input-number>
34
+ </el-form-item>
35
+ <el-form-item label="语法检查">
36
+ <el-switch v-model="optionModel.userWorker"></el-switch>
37
+ </el-form-item>
38
+ </div>
39
+ </template>
40
+
41
+ <script>
42
+ import i18n from "../../../../utils/i18n";
43
+
44
+ export default {
45
+ name: "script-input-editor",
46
+ mixins: [i18n],
47
+ props: {
48
+ designer: Object,
49
+ selectedWidget: Object,
50
+ optionModel: Object,
51
+ },
52
+ };
53
+ </script>
54
+
55
+ <style scoped></style>
@@ -0,0 +1,23 @@
1
+ <template>
2
+ <file-types-select :option-model="optionModel"></file-types-select>
3
+ </template>
4
+
5
+ <script>
6
+ import FileTypesSelect from "../fileTypesSelect.vue"
7
+
8
+ export default {
9
+ name: "vabUpload-fileTypes-editor",
10
+ components: {
11
+ FileTypesSelect,
12
+ },
13
+ props: {
14
+ designer: Object,
15
+ selectedWidget: Object,
16
+ optionModel: Object,
17
+ },
18
+ }
19
+ </script>
20
+
21
+ <style scoped>
22
+
23
+ </style>
@@ -0,0 +1,116 @@
1
+ /**
2
+ * 上传格式属性编辑器的共用逻辑。
3
+ *
4
+ * 存储格式仍是扁平的后缀数组(如 ['jpg','png','mp4']),分类只是勾选时的快捷方式:
5
+ * 勾"图片"等于把该分类下的后缀一次性并入,取消勾选则整组移除。这样运行期的格式
6
+ * 校验与 accept 生成都不必感知分类,已保存的老表单里的后缀数组也能原样沿用。
7
+ */
8
+
9
+ /* 每个分类内的后缀顺序即下拉分组里的展示顺序 */
10
+ export const FILE_TYPE_CATEGORIES = [
11
+ {
12
+ value: "image",
13
+ labelKey: "designer.setting.fileTypeCategory.image",
14
+ types: ["jpg", "jpeg", "png", "gif", "bmp", "webp", "svg"],
15
+ },
16
+ {
17
+ value: "video",
18
+ labelKey: "designer.setting.fileTypeCategory.video",
19
+ types: ["mp4", "avi", "mov", "wmv", "flv", "mkv", "rmvb"],
20
+ },
21
+ {
22
+ value: "audio",
23
+ labelKey: "designer.setting.fileTypeCategory.audio",
24
+ types: ["mp3", "wav", "wma", "aac", "flac"],
25
+ },
26
+ {
27
+ value: "word",
28
+ labelKey: "designer.setting.fileTypeCategory.word",
29
+ types: ["doc", "docx"],
30
+ },
31
+ {
32
+ value: "excel",
33
+ labelKey: "designer.setting.fileTypeCategory.excel",
34
+ types: ["xls", "xlsx", "csv"],
35
+ },
36
+ {
37
+ value: "ppt",
38
+ labelKey: "designer.setting.fileTypeCategory.ppt",
39
+ types: ["ppt", "pptx"],
40
+ },
41
+ {
42
+ value: "pdf",
43
+ labelKey: "designer.setting.fileTypeCategory.pdf",
44
+ types: ["pdf"],
45
+ },
46
+ {
47
+ value: "text",
48
+ labelKey: "designer.setting.fileTypeCategory.text",
49
+ types: ["txt"],
50
+ },
51
+ {
52
+ value: "archive",
53
+ labelKey: "designer.setting.fileTypeCategory.archive",
54
+ types: ["zip", "rar", "7z", "tar", "gz"],
55
+ },
56
+ ];
57
+
58
+ export default {
59
+ computed: {
60
+ fileTypeCategories() {
61
+ return FILE_TYPE_CATEGORIES.map((category) => {
62
+ return {
63
+ ...category,
64
+ label: this.i18nt(category.labelKey),
65
+ };
66
+ });
67
+ },
68
+ selectedFileTypes: {
69
+ get() {
70
+ return this.optionModel.fileTypes || [];
71
+ },
72
+ set(value) {
73
+ /* 老表单可能没有 fileTypes 键,用 $set 保证可响应 */
74
+ this.$set(this.optionModel, "fileTypes", this.normalizeFileTypes(value));
75
+ },
76
+ },
77
+ },
78
+ methods: {
79
+ /* 允许手工输入,统一成小写、去点号、去重的后缀 */
80
+ normalizeFileTypes(value) {
81
+ let result = [];
82
+ (value || []).forEach((item) => {
83
+ let fileType = String(item).trim().replace(/^\./, "").toLowerCase();
84
+ if (!!fileType && result.indexOf(fileType) < 0) {
85
+ result.push(fileType);
86
+ }
87
+ });
88
+ return result;
89
+ },
90
+ isCategoryChecked(category) {
91
+ let selected = this.selectedFileTypes;
92
+ return category.types.every((fileType) => {
93
+ return selected.indexOf(fileType) > -1;
94
+ });
95
+ },
96
+ isCategoryIndeterminate(category) {
97
+ if (this.isCategoryChecked(category)) {
98
+ return false;
99
+ }
100
+ let selected = this.selectedFileTypes;
101
+ return category.types.some((fileType) => {
102
+ return selected.indexOf(fileType) > -1;
103
+ });
104
+ },
105
+ toggleCategory(category, checked) {
106
+ let selected = this.selectedFileTypes;
107
+ if (checked) {
108
+ this.selectedFileTypes = [...selected, ...category.types];
109
+ } else {
110
+ this.selectedFileTypes = selected.filter((fileType) => {
111
+ return category.types.indexOf(fileType) < 0;
112
+ });
113
+ }
114
+ },
115
+ },
116
+ };
@@ -0,0 +1,176 @@
1
+ <template>
2
+ <!-- 分类勾选行放不进 120px 标签剩下的宽度里,故整块用 label-width="0" 占满属性面板 -->
3
+ <el-form-item class="file-types-item" label-width="0">
4
+ <div class="file-types-title">{{i18nt('designer.setting.fileTypes')}}
5
+ <el-tooltip effect="light" :content="i18nt('designer.setting.fileTypesCategoryHelp')">
6
+ <i class="el-icon-info"></i></el-tooltip>
7
+ </div>
8
+ <div class="file-types-category">
9
+ <el-checkbox v-for="category in fileTypeCategories"
10
+ :key="category.value"
11
+ :value="isCategoryChecked(category)"
12
+ :indeterminate="isCategoryIndeterminate(category)"
13
+ @change="toggleCategory(category, $event)">{{ category.label }}</el-checkbox>
14
+ </div>
15
+ <div class="file-types-select">
16
+ <el-select ref="fileTypesSelect" multiple allow-create filterable default-first-option clearable
17
+ popper-class="file-types-select-dropdown"
18
+ :placeholder="i18nt('designer.setting.fileTypesPlaceholder')"
19
+ v-model="selectedFileTypes" style="width: 100%">
20
+ <el-option-group v-for="category in fileTypeCategories"
21
+ :key="category.value"
22
+ :label="category.label">
23
+ <el-option v-for="fileType in category.types"
24
+ :key="fileType"
25
+ :label="fileType"
26
+ :value="fileType">
27
+ </el-option>
28
+ </el-option-group>
29
+ </el-select>
30
+ </div>
31
+ </el-form-item>
32
+ </template>
33
+
34
+ <script>
35
+ import i18n from "../../../../../components/xform/utils/i18n"
36
+ import fileTypesEditorMixin from "./fileTypesEditorMixin"
37
+
38
+ export default {
39
+ name: "file-types-select",
40
+ mixins: [i18n, fileTypesEditorMixin],
41
+ props: {
42
+ optionModel: Object,
43
+ },
44
+ mounted() {
45
+ this.syncSelectLayout()
46
+ },
47
+ watch: {
48
+ selectedFileTypes() {
49
+ this.syncSelectLayout()
50
+ },
51
+ },
52
+ methods: {
53
+ /*
54
+ * 两处都是 element 用 JS 量出来再写成内联样式的尺寸,在这里都不成立:
55
+ * 1. 标签区的 max-width 按挂载那一刻的控件宽度算,而本编辑器挂载在还没完成
56
+ * 布局的属性弹窗里,量到的值偏小;
57
+ * 2. 输入框高度由 resetInputHeight() 写成内联样式,但全局样式表里
58
+ * body .el-input .el-input__inner 把 height 写死成 28px !important,
59
+ * 内联样式压不过它,标签一换行就溢出到框外,展开的下拉面板还会盖住溢出部分。
60
+ * 所以这里等布局稳定后让宽度重算,并用同等优先级把高度补回去。
61
+ */
62
+ syncSelectLayout() {
63
+ this.$nextTick(() => {
64
+ let select = this.$refs.fileTypesSelect
65
+ if (!select || !select.$refs.reference) {
66
+ return
67
+ }
68
+ if (!!select.resetInputWidth) {
69
+ select.resetInputWidth()
70
+ }
71
+ let input = select.$refs.reference.$el.querySelector("input.el-input__inner")
72
+ let tags = select.$refs.tags
73
+ if (!input || !tags) {
74
+ return
75
+ }
76
+ let minHeight = select.initialInputHeight || input.offsetHeight
77
+ let tagsHeight = Math.round(tags.getBoundingClientRect().height)
78
+ let height = Math.max(tagsHeight > minHeight ? tagsHeight + 6 : tagsHeight, minHeight)
79
+ input.style.setProperty("height", height + "px", "important")
80
+ /* 高度变了要让下拉面板重新定位,否则还是按旧高度贴在原处 */
81
+ if (!!select.broadcast) {
82
+ select.broadcast("ElSelectDropdown", "updatePopper")
83
+ }
84
+ })
85
+ },
86
+ },
87
+ }
88
+ </script>
89
+
90
+ <style scoped>
91
+ .file-types-title {
92
+ color: #606266;
93
+ line-height: 22px;
94
+ }
95
+
96
+ .file-types-category {
97
+ margin-bottom: 4px;
98
+ line-height: 22px;
99
+ }
100
+
101
+ /* 独立的 el-checkbox 默认没有间距,且标签会跟着换行错位 */
102
+ .file-types-category .el-checkbox {
103
+ margin-right: 10px;
104
+ }
105
+
106
+ /*
107
+ * 全局样式表 src/resources/css/style.scss 在 body 作用域下写了
108
+ * .el-input{width:148px !important},画边框的 .el-input__inner 也跟着只有 148px,
109
+ * 所以这里必须从内容区一路 !important 压到最内层的 input 才能铺满。
110
+ */
111
+ .file-types-item ::v-deep .el-form-item__content {
112
+ display: block !important;
113
+ width: auto !important;
114
+ margin-left: 0 !important;
115
+ float: none;
116
+ }
117
+
118
+ .file-types-select {
119
+ display: block;
120
+ width: auto;
121
+ }
122
+
123
+ .file-types-select ::v-deep .el-select {
124
+ display: block !important;
125
+ width: 100% !important;
126
+ }
127
+
128
+ .file-types-select ::v-deep .el-select .el-input,
129
+ .file-types-select ::v-deep .el-select .el-input__inner {
130
+ width: 100% !important;
131
+ }
132
+
133
+ /*
134
+ * 标签区是绝对定位盖在输入框上的兄弟节点:
135
+ * max-width 是挂载时按控件宽度算出的内联值,弹窗里量到的偏小,用 !important 盖掉,
136
+ * 并和 element 一样留出右侧 32px 的图标位;
137
+ * pointer-events 置空则是因为清空按钮的显隐挂在 el-input 的 mouseenter/mouseleave 上,
138
+ * 标签层盖住的地方 hover 都算不到 el-input 头上,按钮就只在图标区才出现。
139
+ */
140
+ .file-types-select ::v-deep .el-select__tags {
141
+ max-width: calc(100% - 32px) !important;
142
+ pointer-events: none;
143
+ }
144
+
145
+ /* 标签上的删除按钮和手工输入框仍要能点 */
146
+ .file-types-select ::v-deep .el-select__tags .el-tag__close,
147
+ .file-types-select ::v-deep .el-select__input {
148
+ pointer-events: auto;
149
+ }
150
+
151
+ /* 手工输入用的内联 input 同样带着按旧宽度算出的内联 max-width,同样留出图标区 */
152
+ .file-types-select ::v-deep .el-select__input {
153
+ max-width: calc(100% - 42px) !important;
154
+ }
155
+
156
+ /*
157
+ * 全局样式表有 :focus-visible{outline:2px solid 主题色},展开下拉时焦点落在这个
158
+ * 内联输入框上,Chrome 对文本框恒判定 focus-visible,于是框里又套出一圈蓝边。
159
+ * 外层输入框自己已有聚焦态边框,这圈去掉。
160
+ */
161
+ .file-types-select ::v-deep .el-select__input:focus,
162
+ .file-types-select ::v-deep .el-select__input:focus-visible {
163
+ outline: none;
164
+ }
165
+ </style>
166
+
167
+ <style>
168
+ /*
169
+ * 下拉面板是挂到 body 上的,scoped 样式够不到,只能靠 popper-class 做全局约束。
170
+ * 全局样式表把 .el-select-dropdown__wrap 的 max-height 放大到了 474px,
171
+ * 而这里有 9 个分组共 27 个后缀,面板会高到底部放不下、翻上来盖住整块属性面板。
172
+ */
173
+ .file-types-select-dropdown .el-select-dropdown__wrap {
174
+ max-height: 320px;
175
+ }
176
+ </style>
@@ -315,9 +315,9 @@ export default {
315
315
  columnSelectedWidget: widget,
316
316
  // index: index,
317
317
  // columnEditFields: columnEditFields,
318
- callback: (columnOption) => {
319
- widget.options = columnOption
320
- // this.confirmFormatConfigDialog(columnOption, row);
318
+ callback: (columnSelectedWidget) => {
319
+ widget.options = columnSelectedWidget.options
320
+ // this.confirmFormatConfigDialog(columnSelectedWidget, row);
321
321
  },
322
322
  });
323
323
  },
@@ -0,0 +1,19 @@
1
+ <template>
2
+ <el-form-item label="UTC时差转换">
3
+ <el-switch v-model="optionModel.utcTransformEnabled"></el-switch>
4
+ </el-form-item>
5
+ </template>
6
+
7
+ <script>
8
+ import i18n from "../../../../../components/xform/utils/i18n";
9
+
10
+ export default {
11
+ name: "utcTransformEnabled-editor",
12
+ mixins: [i18n],
13
+ props: {
14
+ designer: Object,
15
+ selectedWidget: Object,
16
+ optionModel: Object,
17
+ },
18
+ };
19
+ </script>