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

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 (175) 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 +45 -3
  4. package/src/components/VabUpload/mixins.js +126 -19
  5. package/src/components/VabUpload/view.vue +248 -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/excelImport/index.vue +156 -156
  18. package/src/components/jsonImport/index.vue +1 -1
  19. package/src/components/langImport/index.vue +1 -1
  20. package/src/components/mobile/statusTag/mixins.js +1 -61
  21. package/src/components/mobile/wf/addTaskUserdialog.vue +23 -3
  22. package/src/components/mobile/wf/content.vue +1705 -1556
  23. package/src/components/mobile/wf/deleteTaskUserDialog.vue +22 -3
  24. package/src/components/mobile/wf/mixins/wfModifyDialogMixin.js +8 -6
  25. package/src/components/mobile/wf/selectUserDialog.vue +118 -0
  26. package/src/components/mobile/wf/setCandidateDialog.vue +25 -4
  27. package/src/components/mobile/wf/urgingDialog.vue +26 -3
  28. package/src/components/mobile/wf/wfModifyDialog.vue +4 -0
  29. package/src/components/obsUpload/index.vue +1 -1
  30. package/src/components/table/config.js +78 -78
  31. package/src/components/table/index.js +1276 -1276
  32. package/src/components/table/plugins/cell-area/index.js +1055 -0
  33. package/src/components/table/plugins/cell-area/index.scss +77 -0
  34. package/src/components/table/plugins/cell-area/util.js +224 -0
  35. package/src/components/table/tableForm.vue +330 -330
  36. package/src/components/table/tableFormMixin.js +318 -318
  37. package/src/components/table/vxeFilter/index.js +163 -163
  38. package/src/components/table/vxeFilter/mixin.js +316 -316
  39. package/src/components/wf/content.vue +1188 -1188
  40. package/src/components/wf/wf.js +40 -20
  41. package/src/components/wf/wfActionDropdown.vue +1 -1
  42. package/src/components/wf/wfActionItems.js +1 -1
  43. package/src/components/xform/form-designer/designer.js +51 -52
  44. package/src/components/xform/form-designer/form-widget/container-widget/data-table-widget.vue +269 -269
  45. package/src/components/xform/form-designer/form-widget/container-widget/detail-h5-widget.vue +18 -2
  46. package/src/components/xform/form-designer/form-widget/container-widget/detail-temp-widget.vue +132 -0
  47. package/src/components/xform/form-designer/form-widget/container-widget/detail-widget.vue +250 -250
  48. package/src/components/xform/form-designer/form-widget/container-widget/h5-card-pane-widget.vue +23 -2
  49. package/src/components/xform/form-designer/form-widget/container-widget/h5-card-widget.vue +30 -1
  50. package/src/components/xform/form-designer/form-widget/dialog/fileReferenceDialog.vue +319 -320
  51. package/src/components/xform/form-designer/form-widget/dialog/formDialog.vue +365 -365
  52. package/src/components/xform/form-designer/form-widget/dialog/importDialog.vue +185 -185
  53. package/src/components/xform/form-designer/form-widget/dialog/searchFormDialog.vue +554 -555
  54. package/src/components/xform/form-designer/form-widget/dialog/vabSearchDialog.vue +409 -409
  55. package/src/components/xform/form-designer/form-widget/field-widget/a-link-widget.vue +150 -132
  56. package/src/components/xform/form-designer/form-widget/field-widget/date-range-widget.vue +114 -114
  57. package/src/components/xform/form-designer/form-widget/field-widget/date-widget.vue +154 -154
  58. package/src/components/xform/form-designer/form-widget/field-widget/form-item-wrapper.vue +47 -1
  59. package/src/components/xform/form-designer/form-widget/field-widget/mixins/date-limit-mixin.js +178 -178
  60. package/src/components/xform/form-designer/form-widget/field-widget/mixins/time-limit-mixin.js +77 -77
  61. package/src/components/xform/form-designer/form-widget/field-widget/select-export-item-button-widget.vue +6 -0
  62. package/src/components/xform/form-designer/form-widget/field-widget/select-widget.vue +139 -139
  63. package/src/components/xform/form-designer/form-widget/field-widget/singleUpload-widget.vue +1 -1
  64. package/src/components/xform/form-designer/form-widget/field-widget/time-range-widget.vue +106 -106
  65. package/src/components/xform/form-designer/form-widget/field-widget/time-widget.vue +134 -134
  66. package/src/components/xform/form-designer/form-widget/field-widget/vabUpload-widget.vue +3 -2
  67. package/src/components/xform/form-designer/indexMixin.js +35 -1
  68. package/src/components/xform/form-designer/setting-panel/form-setting.vue +39 -39
  69. package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/data-table-editor.vue +10 -10
  70. package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/exportItemColumns-dialog.vue +438 -432
  71. package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/table-column-dialog.vue +2103 -2103
  72. package/src/components/xform/form-designer/setting-panel/property-editor/container-detail/detail-temp-edito.vue +90 -0
  73. package/src/components/xform/form-designer/setting-panel/property-editor/container-grid/gutter-editor.vue +82 -82
  74. package/src/components/xform/form-designer/setting-panel/property-editor/container-list-h5/list-h5-editor.vue +833 -846
  75. package/src/components/xform/form-designer/setting-panel/property-editor/container-table/table-dynamicField-editor.vue +8 -8
  76. package/src/components/xform/form-designer/setting-panel/property-editor/dropdownFlag-editor.vue +137 -137
  77. package/src/components/xform/form-designer/setting-panel/property-editor/field-button/search-dialog-event-editor.vue +237 -237
  78. package/src/components/xform/form-designer/setting-panel/property-editor/field-date/date-defaultValue-editor.vue +43 -43
  79. package/src/components/xform/form-designer/setting-panel/property-editor/field-date-range/date-range-defaultValue-editor.vue +43 -43
  80. package/src/components/xform/form-designer/setting-panel/property-editor/field-import-button/import2-button-editor.vue +96 -96
  81. package/src/components/xform/form-designer/setting-panel/property-editor/field-table-export-button/select-export-item-button-editor.vue +51 -0
  82. package/src/components/xform/form-designer/setting-panel/property-editor/field-time/time-defaultValue-editor.vue +42 -42
  83. package/src/components/xform/form-designer/setting-panel/property-editor/field-time-range/time-range-defaultValue-editor.vue +43 -43
  84. package/src/components/xform/form-designer/setting-panel/property-editor/formScriptEnabled-editor.vue +158 -158
  85. package/src/components/xform/form-designer/setting-panel/property-editor/h5Span-editor.vue +51 -0
  86. package/src/components/xform/form-designer/setting-panel/property-editor/itemStyle-editor.vue +39 -0
  87. package/src/components/xform/form-designer/setting-panel/property-editor/name-editor.vue +188 -188
  88. package/src/components/xform/form-designer/setting-panel/property-editor/styleTempClass-editor.vue +51 -0
  89. package/src/components/xform/form-designer/setting-panel/property-editor/textFlag-editor.vue +347 -347
  90. package/src/components/xform/form-designer/setting-panel/propertyRegister.js +12 -0
  91. package/src/components/xform/form-designer/toolbar-panel/index.vue +884 -874
  92. package/src/components/xform/form-designer/toolbar-panel/indexMixin.js +14 -0
  93. package/src/components/xform/form-designer/widget-panel/index.vue +11 -7
  94. package/src/components/xform/form-designer/widget-panel/indexMixin.js +30 -6
  95. package/src/components/xform/form-designer/widget-panel/widgetsConfig.js +112 -4
  96. package/src/components/xform/form-render/container-item/data-table-mixin.js +151 -93
  97. package/src/components/xform/form-render/container-item/detail-h5-item.vue +204 -34
  98. package/src/components/xform/form-render/container-item/detail-temp-item.vue +110 -0
  99. package/src/components/xform/form-render/container-item/h5-card-pane-item.vue +160 -140
  100. package/src/components/xform/form-render/container-item/list-h5-item.vue +1913 -1699
  101. package/src/components/xform/form-render/index.vue +153 -147
  102. package/src/components/xform/form-render/indexMixin.js +35 -3
  103. package/src/components/xform/lang/en-US.js +14 -0
  104. package/src/components/xform/lang/zh-CN.js +17 -0
  105. package/src/components/xform/mixins/defaultHandle.js +707 -707
  106. package/src/components/xform/styles/h5.scss +2262 -0
  107. package/src/components/xform/utils/textMaskUtil.js +182 -179
  108. package/src/components/xform/utils/treeTableUtil.js +1292 -1265
  109. package/src/components/xform/utils/util.js +56 -11
  110. package/src/directive/append-to-body/index.js +48 -0
  111. package/src/index.js +13 -4
  112. package/src/layout/components/Sidebar/default.vue +1655 -1655
  113. package/src/layout/components/extractedCode/viewDialog.vue +7 -7
  114. package/src/router/index.js +48 -27
  115. package/src/router/modules/customer.js +71 -14
  116. package/src/store/modules/permission.js +17 -18
  117. package/src/utils/assetUrl.js +19 -0
  118. package/src/utils/pdfUtil.js +429 -429
  119. package/src/utils/resolveViewComponent.js +142 -16
  120. package/src/utils/vab.js +1283 -1279
  121. package/src/views/bd/project/branch/bd_branch/edit.vue +145 -0
  122. package/src/views/bd/project/branch/bd_branch/list.vue +72 -0
  123. package/src/views/bd/project/branch/bd_branch/menuKindDialog.vue +106 -0
  124. package/src/views/bd/project/branch/bd_branch/mixins/edit.js +189 -0
  125. package/src/views/bd/project/branch/bd_branch/mixins/list.js +124 -0
  126. package/src/views/bd/project/branch/bd_branch/mixins/menuKindDialog.js +85 -0
  127. package/src/views/bd/project/branch/form_script/list.vue +31 -0
  128. package/src/views/bd/project/branch/form_template/list.vue +30 -0
  129. package/src/views/bd/project/branch/menu_kind/list.vue +31 -0
  130. package/src/views/bd/project/common/form_script/list.vue +16 -0
  131. package/src/views/bd/project/common/form_template/list.vue +15 -0
  132. package/src/views/bd/project/common/menu_kind/list.vue +15 -0
  133. package/src/views/bd/project/core/branchContext.js +100 -0
  134. package/src/views/bd/project/core/branchPage.js +78 -0
  135. package/src/views/bd/project/core/branchPageWrap.vue +225 -0
  136. package/src/views/bd/project/core/branchScope.js +44 -0
  137. package/src/views/bd/project/core/branchSearchPage.js +285 -0
  138. package/src/views/bd/project/core/branchSelect.vue +85 -0
  139. package/src/views/bd/project/core/branchTreeBar.vue +81 -0
  140. package/src/views/bd/project/core/httpBranchPatch.js +58 -0
  141. package/src/views/bd/project/datatable/menu_kind/list.vue +15 -0
  142. package/src/views/bd/project/datatable/table_model/list.vue +15 -0
  143. package/src/views/bd/setting/bd_company_env/dialog.vue +174 -174
  144. package/src/views/bd/setting/form_template/edit.vue +378 -356
  145. package/src/views/bd/setting/form_template/formDesignerDialog.vue +6 -0
  146. package/src/views/bd/setting/form_template/formTemplateType.js +43 -0
  147. package/src/views/bd/setting/form_template/list.vue +304 -303
  148. package/src/views/bd/setting/form_template/mixins/edit.js +344 -280
  149. package/src/views/bd/setting/form_template/mixins/list.js +748 -721
  150. package/src/views/bd/setting/table_model/edit.vue +1066 -1066
  151. package/src/views/bd/setting/table_model/mixins/edit.js +1455 -1455
  152. package/src/views/bd/setting/table_model/mixins/zdDialog.js +148 -148
  153. package/src/views/support/form-dialog-demo/demoPickerDialog.vue +72 -0
  154. package/src/views/support/form-dialog-demo/index.vue +537 -0
  155. package/src/views/user/file_view_ins/list.vue +970 -970
  156. package/src/views/user/form/vform/designer.vue +823 -821
  157. package/src/views/user/home/default.vue +1117 -1117
  158. package/src/views/user/home/default2.vue +1 -1
  159. package/src/views/user/home/index.vue +103 -101
  160. package/src/views/user/notify_message/dialog.vue +139 -137
  161. package/src/views/user/outLink/form_view.vue +202 -202
  162. package/src/views/user/outLink/index.vue +110 -110
  163. package/src/views/user/outLink/view.vue +3 -3
  164. package/src/views/user/role/edit.vue +632 -632
  165. package/src/views/user/role/list.vue +260 -260
  166. package/src/views/user/wf/iframe/index.vue +51 -51
  167. package/src/views/user/wf/iframe/index2.vue +64 -64
  168. package/src/views/user/wf/wf_manage/list.vue +1112 -1116
  169. package/src/views/user/wf/wf_manage/list2.vue +871 -875
  170. package/src/views/user/wf/wf_manage/wfContentDialog.vue +134 -131
  171. package/src/views/user/wf/wf_obj_config/importItemDialog.vue +1 -1
  172. package/src/components/xform/form-designer/form-widget/field-widget/dropdown-menu-widget.vue +0 -106
  173. package/src/components/xform/form-designer/form-widget/field-widget/tableexportbuttonwidget.vue +0 -99
  174. package/src/components/xform/form-render/container-item/list-h5-item2.vue +0 -1340
  175. package/src/utils/wf.js +0 -766
@@ -1,178 +1,178 @@
1
- /* 日期组件的最小日期支持配置为「当前时间」,此处统一解析。
2
- 默认值(含「当前时间」与相对偏移)已收敛到 relative-default-mixin,不在此处理。 */
3
- export const DATE_VALUE_TYPE_NOW = "now";
4
-
5
- export default {
6
- methods: {
7
- getDateLimitOptions() {
8
- return this.field.options || {};
9
- },
10
- isNowDateValueType(valueType) {
11
- return valueType === DATE_VALUE_TYPE_NOW;
12
- },
13
- /* 最小日期:固定日期或当前时间 */
14
- getDateLimitMinValue() {
15
- const options = this.getDateLimitOptions();
16
- if (this.isNowDateValueType(options.minDateType)) {
17
- return new Date();
18
- }
19
- return options.minDate;
20
- },
21
- initDateLimitPickerOptions() {
22
- const pickerOptions = { ...(this.pickerOptions || {}) };
23
- if (["year", "month", "date", "datetime"].includes(this.field.options.type)) {
24
- if (!pickerOptions.shortcuts) {
25
- pickerOptions.shortcuts = [
26
- {
27
- text: this.$t1("此刻"),
28
- onClick(picker) {
29
- picker.$emit("pick", new Date());
30
- },
31
- },
32
- ];
33
- }
34
- }
35
- pickerOptions.disabledDate = (time) => this.isDateLimitDisabled(time);
36
- this.pickerOptions = pickerOptions;
37
- },
38
- initDateLimitWatch() {
39
- if (this.designState) {
40
- return;
41
- }
42
- const { limitStartField, limitEndField } = this.getDateLimitOptions();
43
- if (limitStartField) {
44
- this.$watch(
45
- () => this.getDateLimitLinkedValue(limitStartField),
46
- () => {
47
- this.initDateLimitPickerOptions();
48
- }
49
- );
50
- }
51
- if (limitEndField) {
52
- this.$watch(
53
- () => this.getDateLimitLinkedValue(limitEndField),
54
- () => {
55
- this.initDateLimitPickerOptions();
56
- }
57
- );
58
- }
59
- },
60
- getDateLimitDataSource() {
61
- return this.tableParam && this.tableParam.row
62
- ? this.tableParam.row
63
- : this.formModel;
64
- },
65
- getDateLimitLinkedValue(fieldName) {
66
- if (!fieldName) {
67
- return null;
68
- }
69
- const dataSource = this.getDateLimitDataSource();
70
- return dataSource ? dataSource[fieldName] : null;
71
- },
72
- parseDateLimitValue(val) {
73
- if (val === null || val === undefined || val === "") {
74
- return null;
75
- }
76
- if (val instanceof Date) {
77
- return isNaN(val.getTime()) ? null : val.getTime();
78
- }
79
- if (typeof val === "number") {
80
- return isNaN(val) ? null : val;
81
- }
82
- const date = new Date(String(val).replace(/-/g, "/"));
83
- return isNaN(date.getTime()) ? null : date.getTime();
84
- },
85
- normalizeDateLimitDayTime(time, isEnd) {
86
- const date = new Date(time);
87
- if (this.field.options.type === "datetime") {
88
- return date.getTime();
89
- }
90
- date.setHours(isEnd ? 23 : 0, isEnd ? 59 : 0, isEnd ? 59 : 0, isEnd ? 999 : 0);
91
- return date.getTime();
92
- },
93
- isDateLimitDisabled(time) {
94
- const options = this.getDateLimitOptions();
95
- const currentTime = time.getTime();
96
-
97
- const minDate = this.parseDateLimitValue(this.getDateLimitMinValue());
98
- if (minDate !== null && currentTime < this.normalizeDateLimitDayTime(minDate, false)) {
99
- return true;
100
- }
101
-
102
- const maxDate = this.parseDateLimitValue(options.maxDate);
103
- if (maxDate !== null && currentTime > this.normalizeDateLimitDayTime(maxDate, true)) {
104
- return true;
105
- }
106
-
107
- if (options.limitStartField) {
108
- const startTime = this.parseDateLimitValue(
109
- this.getDateLimitLinkedValue(options.limitStartField)
110
- );
111
- if (startTime !== null && currentTime < this.normalizeDateLimitDayTime(startTime, false)) {
112
- return true;
113
- }
114
- }
115
-
116
- if (options.limitEndField) {
117
- const endTime = this.parseDateLimitValue(
118
- this.getDateLimitLinkedValue(options.limitEndField)
119
- );
120
- if (endTime !== null && currentTime > this.normalizeDateLimitDayTime(endTime, true)) {
121
- return true;
122
- }
123
- }
124
-
125
- return false;
126
- },
127
- isDateLimitViolated(value) {
128
- if (value === null || value === undefined || value === "") {
129
- return false;
130
- }
131
- const currentTime = this.parseDateLimitValue(value);
132
- if (currentTime === null) {
133
- return false;
134
- }
135
-
136
- const options = this.getDateLimitOptions();
137
- const minDate = this.parseDateLimitValue(this.getDateLimitMinValue());
138
- if (minDate !== null && currentTime < this.normalizeDateLimitDayTime(minDate, false)) {
139
- return true;
140
- }
141
-
142
- const maxDate = this.parseDateLimitValue(options.maxDate);
143
- if (maxDate !== null && currentTime > this.normalizeDateLimitDayTime(maxDate, true)) {
144
- return true;
145
- }
146
-
147
- if (options.limitStartField) {
148
- const startTime = this.parseDateLimitValue(
149
- this.getDateLimitLinkedValue(options.limitStartField)
150
- );
151
- if (startTime !== null && currentTime < this.normalizeDateLimitDayTime(startTime, false)) {
152
- return true;
153
- }
154
- }
155
-
156
- if (options.limitEndField) {
157
- const endTime = this.parseDateLimitValue(
158
- this.getDateLimitLinkedValue(options.limitEndField)
159
- );
160
- if (endTime !== null && currentTime > this.normalizeDateLimitDayTime(endTime, true)) {
161
- return true;
162
- }
163
- }
164
-
165
- return false;
166
- },
167
- getDateLimitViolationMessage() {
168
- const options = this.getDateLimitOptions();
169
- if (options.limitEndField && !options.limitStartField) {
170
- return "开始时间不能大于结束时间";
171
- }
172
- if (options.limitStartField && !options.limitEndField) {
173
- return "结束时间不能小于开始时间";
174
- }
175
- return "日期超出允许范围";
176
- },
177
- },
178
- };
1
+ /* 日期组件的最小日期支持配置为「当前时间」,此处统一解析。
2
+ 默认值(含「当前时间」与相对偏移)已收敛到 relative-default-mixin,不在此处理。 */
3
+ export const DATE_VALUE_TYPE_NOW = "now";
4
+
5
+ export default {
6
+ methods: {
7
+ getDateLimitOptions() {
8
+ return this.field.options || {};
9
+ },
10
+ isNowDateValueType(valueType) {
11
+ return valueType === DATE_VALUE_TYPE_NOW;
12
+ },
13
+ /* 最小日期:固定日期或当前时间 */
14
+ getDateLimitMinValue() {
15
+ const options = this.getDateLimitOptions();
16
+ if (this.isNowDateValueType(options.minDateType)) {
17
+ return new Date();
18
+ }
19
+ return options.minDate;
20
+ },
21
+ initDateLimitPickerOptions() {
22
+ const pickerOptions = { ...(this.pickerOptions || {}) };
23
+ if (["year", "month", "date", "datetime"].includes(this.field.options.type)) {
24
+ if (!pickerOptions.shortcuts) {
25
+ pickerOptions.shortcuts = [
26
+ {
27
+ text: this.$t1("此刻"),
28
+ onClick(picker) {
29
+ picker.$emit("pick", new Date());
30
+ },
31
+ },
32
+ ];
33
+ }
34
+ }
35
+ pickerOptions.disabledDate = (time) => this.isDateLimitDisabled(time);
36
+ this.pickerOptions = pickerOptions;
37
+ },
38
+ initDateLimitWatch() {
39
+ if (this.designState) {
40
+ return;
41
+ }
42
+ const { limitStartField, limitEndField } = this.getDateLimitOptions();
43
+ if (limitStartField) {
44
+ this.$watch(
45
+ () => this.getDateLimitLinkedValue(limitStartField),
46
+ () => {
47
+ this.initDateLimitPickerOptions();
48
+ }
49
+ );
50
+ }
51
+ if (limitEndField) {
52
+ this.$watch(
53
+ () => this.getDateLimitLinkedValue(limitEndField),
54
+ () => {
55
+ this.initDateLimitPickerOptions();
56
+ }
57
+ );
58
+ }
59
+ },
60
+ getDateLimitDataSource() {
61
+ return this.tableParam && this.tableParam.row
62
+ ? this.tableParam.row
63
+ : this.formModel;
64
+ },
65
+ getDateLimitLinkedValue(fieldName) {
66
+ if (!fieldName) {
67
+ return null;
68
+ }
69
+ const dataSource = this.getDateLimitDataSource();
70
+ return dataSource ? dataSource[fieldName] : null;
71
+ },
72
+ parseDateLimitValue(val) {
73
+ if (val === null || val === undefined || val === "") {
74
+ return null;
75
+ }
76
+ if (val instanceof Date) {
77
+ return isNaN(val.getTime()) ? null : val.getTime();
78
+ }
79
+ if (typeof val === "number") {
80
+ return isNaN(val) ? null : val;
81
+ }
82
+ const date = new Date(String(val).replace(/-/g, "/"));
83
+ return isNaN(date.getTime()) ? null : date.getTime();
84
+ },
85
+ normalizeDateLimitDayTime(time, isEnd) {
86
+ const date = new Date(time);
87
+ if (this.field.options.type === "datetime") {
88
+ return date.getTime();
89
+ }
90
+ date.setHours(isEnd ? 23 : 0, isEnd ? 59 : 0, isEnd ? 59 : 0, isEnd ? 999 : 0);
91
+ return date.getTime();
92
+ },
93
+ isDateLimitDisabled(time) {
94
+ const options = this.getDateLimitOptions();
95
+ const currentTime = time.getTime();
96
+
97
+ const minDate = this.parseDateLimitValue(this.getDateLimitMinValue());
98
+ if (minDate !== null && currentTime < this.normalizeDateLimitDayTime(minDate, false)) {
99
+ return true;
100
+ }
101
+
102
+ const maxDate = this.parseDateLimitValue(options.maxDate);
103
+ if (maxDate !== null && currentTime > this.normalizeDateLimitDayTime(maxDate, true)) {
104
+ return true;
105
+ }
106
+
107
+ if (options.limitStartField) {
108
+ const startTime = this.parseDateLimitValue(
109
+ this.getDateLimitLinkedValue(options.limitStartField)
110
+ );
111
+ if (startTime !== null && currentTime < this.normalizeDateLimitDayTime(startTime, false)) {
112
+ return true;
113
+ }
114
+ }
115
+
116
+ if (options.limitEndField) {
117
+ const endTime = this.parseDateLimitValue(
118
+ this.getDateLimitLinkedValue(options.limitEndField)
119
+ );
120
+ if (endTime !== null && currentTime > this.normalizeDateLimitDayTime(endTime, true)) {
121
+ return true;
122
+ }
123
+ }
124
+
125
+ return false;
126
+ },
127
+ isDateLimitViolated(value) {
128
+ if (value === null || value === undefined || value === "") {
129
+ return false;
130
+ }
131
+ const currentTime = this.parseDateLimitValue(value);
132
+ if (currentTime === null) {
133
+ return false;
134
+ }
135
+
136
+ const options = this.getDateLimitOptions();
137
+ const minDate = this.parseDateLimitValue(this.getDateLimitMinValue());
138
+ if (minDate !== null && currentTime < this.normalizeDateLimitDayTime(minDate, false)) {
139
+ return true;
140
+ }
141
+
142
+ const maxDate = this.parseDateLimitValue(options.maxDate);
143
+ if (maxDate !== null && currentTime > this.normalizeDateLimitDayTime(maxDate, true)) {
144
+ return true;
145
+ }
146
+
147
+ if (options.limitStartField) {
148
+ const startTime = this.parseDateLimitValue(
149
+ this.getDateLimitLinkedValue(options.limitStartField)
150
+ );
151
+ if (startTime !== null && currentTime < this.normalizeDateLimitDayTime(startTime, false)) {
152
+ return true;
153
+ }
154
+ }
155
+
156
+ if (options.limitEndField) {
157
+ const endTime = this.parseDateLimitValue(
158
+ this.getDateLimitLinkedValue(options.limitEndField)
159
+ );
160
+ if (endTime !== null && currentTime > this.normalizeDateLimitDayTime(endTime, true)) {
161
+ return true;
162
+ }
163
+ }
164
+
165
+ return false;
166
+ },
167
+ getDateLimitViolationMessage() {
168
+ const options = this.getDateLimitOptions();
169
+ if (options.limitEndField && !options.limitStartField) {
170
+ return "开始时间不能大于结束时间";
171
+ }
172
+ if (options.limitStartField && !options.limitEndField) {
173
+ return "结束时间不能小于开始时间";
174
+ }
175
+ return "日期超出允许范围";
176
+ },
177
+ },
178
+ };
@@ -1,77 +1,77 @@
1
- /* 时间组件的最小时间支持配置为「当前时间」,此处统一解析。
2
- 默认值(含「当前时间」与相对偏移)已收敛到 relative-default-mixin,不在此处理。 */
3
- export const TIME_VALUE_TYPE_NOW = "now";
4
-
5
- const MAX_TIME_VALUE = "23:59:59";
6
-
7
- export default {
8
- methods: {
9
- getTimeLimitOptions() {
10
- return this.field.options || {};
11
- },
12
- isNowTimeValueType(valueType) {
13
- return valueType === TIME_VALUE_TYPE_NOW;
14
- },
15
- getNowTimeValue() {
16
- const now = new Date();
17
- const pad = (val) => (val < 10 ? "0" + val : String(val));
18
- return `${pad(now.getHours())}:${pad(now.getMinutes())}:${pad(
19
- now.getSeconds()
20
- )}`;
21
- },
22
- normalizeTimeValue(val) {
23
- if (val === null || val === undefined || val === "") {
24
- return null;
25
- }
26
- const matched = /^(\d{1,2}):(\d{1,2})(?::(\d{1,2}))?$/.exec(String(val).trim());
27
- if (!matched) {
28
- return null;
29
- }
30
- const hour = Number(matched[1]);
31
- const minute = Number(matched[2]);
32
- const second = Number(matched[3] || 0);
33
- if (hour > 23 || minute > 59 || second > 59) {
34
- return null;
35
- }
36
- const pad = (v) => (v < 10 ? "0" + v : String(v));
37
- return `${pad(hour)}:${pad(minute)}:${pad(second)}`;
38
- },
39
- parseTimeLimitValue(val) {
40
- const normalized = this.normalizeTimeValue(val);
41
- if (normalized === null) {
42
- return null;
43
- }
44
- const parts = normalized.split(":");
45
- return Number(parts[0]) * 3600 + Number(parts[1]) * 60 + Number(parts[2]);
46
- },
47
- /* 最小时间:固定时间或当前时间 */
48
- getTimeLimitMinValue() {
49
- const options = this.getTimeLimitOptions();
50
- if (this.isNowTimeValueType(options.minTimeType)) {
51
- return this.getNowTimeValue();
52
- }
53
- return this.normalizeTimeValue(options.minTime);
54
- },
55
- initTimeLimitPickerOptions() {
56
- const pickerOptions = { ...(this.pickerOptions || {}) };
57
- const minTime = this.getTimeLimitMinValue();
58
- if (minTime === null) {
59
- delete pickerOptions.selectableRange;
60
- } else {
61
- pickerOptions.selectableRange = `${minTime} - ${MAX_TIME_VALUE}`;
62
- }
63
- this.pickerOptions = pickerOptions;
64
- },
65
- isTimeLimitViolated(value) {
66
- const currentTime = this.parseTimeLimitValue(value);
67
- if (currentTime === null) {
68
- return false;
69
- }
70
- const minTime = this.parseTimeLimitValue(this.getTimeLimitMinValue());
71
- return minTime !== null && currentTime < minTime;
72
- },
73
- getTimeLimitViolationMessage() {
74
- return `时间不能小于${this.getTimeLimitMinValue()}`;
75
- },
76
- },
77
- };
1
+ /* 时间组件的最小时间支持配置为「当前时间」,此处统一解析。
2
+ 默认值(含「当前时间」与相对偏移)已收敛到 relative-default-mixin,不在此处理。 */
3
+ export const TIME_VALUE_TYPE_NOW = "now";
4
+
5
+ const MAX_TIME_VALUE = "23:59:59";
6
+
7
+ export default {
8
+ methods: {
9
+ getTimeLimitOptions() {
10
+ return this.field.options || {};
11
+ },
12
+ isNowTimeValueType(valueType) {
13
+ return valueType === TIME_VALUE_TYPE_NOW;
14
+ },
15
+ getNowTimeValue() {
16
+ const now = new Date();
17
+ const pad = (val) => (val < 10 ? "0" + val : String(val));
18
+ return `${pad(now.getHours())}:${pad(now.getMinutes())}:${pad(
19
+ now.getSeconds()
20
+ )}`;
21
+ },
22
+ normalizeTimeValue(val) {
23
+ if (val === null || val === undefined || val === "") {
24
+ return null;
25
+ }
26
+ const matched = /^(\d{1,2}):(\d{1,2})(?::(\d{1,2}))?$/.exec(String(val).trim());
27
+ if (!matched) {
28
+ return null;
29
+ }
30
+ const hour = Number(matched[1]);
31
+ const minute = Number(matched[2]);
32
+ const second = Number(matched[3] || 0);
33
+ if (hour > 23 || minute > 59 || second > 59) {
34
+ return null;
35
+ }
36
+ const pad = (v) => (v < 10 ? "0" + v : String(v));
37
+ return `${pad(hour)}:${pad(minute)}:${pad(second)}`;
38
+ },
39
+ parseTimeLimitValue(val) {
40
+ const normalized = this.normalizeTimeValue(val);
41
+ if (normalized === null) {
42
+ return null;
43
+ }
44
+ const parts = normalized.split(":");
45
+ return Number(parts[0]) * 3600 + Number(parts[1]) * 60 + Number(parts[2]);
46
+ },
47
+ /* 最小时间:固定时间或当前时间 */
48
+ getTimeLimitMinValue() {
49
+ const options = this.getTimeLimitOptions();
50
+ if (this.isNowTimeValueType(options.minTimeType)) {
51
+ return this.getNowTimeValue();
52
+ }
53
+ return this.normalizeTimeValue(options.minTime);
54
+ },
55
+ initTimeLimitPickerOptions() {
56
+ const pickerOptions = { ...(this.pickerOptions || {}) };
57
+ const minTime = this.getTimeLimitMinValue();
58
+ if (minTime === null) {
59
+ delete pickerOptions.selectableRange;
60
+ } else {
61
+ pickerOptions.selectableRange = `${minTime} - ${MAX_TIME_VALUE}`;
62
+ }
63
+ this.pickerOptions = pickerOptions;
64
+ },
65
+ isTimeLimitViolated(value) {
66
+ const currentTime = this.parseTimeLimitValue(value);
67
+ if (currentTime === null) {
68
+ return false;
69
+ }
70
+ const minTime = this.parseTimeLimitValue(this.getTimeLimitMinValue());
71
+ return minTime !== null && currentTime < minTime;
72
+ },
73
+ getTimeLimitViolationMessage() {
74
+ return `时间不能小于${this.getTimeLimitMinValue()}`;
75
+ },
76
+ },
77
+ };
@@ -103,6 +103,12 @@ export default {
103
103
  targetRef: this.field.options.tableRef || null,
104
104
  pageSize: this.field.options.exportPageSize || null,
105
105
  showImageAtTable: this.field.options.showImageAtTable || null,
106
+ // 明细导出的列 / 脚本编码 / 取数参数三项各自独立:按钮上维护了哪项就以哪项为准,
107
+ // 留空的那项沿用数据表格属性上那套。参数脚本原样下发,由数据表格求值(this 是
108
+ // 表格组件,与配在表格属性上时同义)
109
+ exportItemColumns: this.field.options.exportItemColumns || null,
110
+ exportItemScriptCode: this.field.options.exportItemScriptCode || null,
111
+ exportItemParam: this.field.options.exportItemParam || null,
106
112
  };
107
113
  let tableExportParam = this.handleCustomEvent(this.field.options.tableExportParam);
108
114
  let options = { ...opt, ...tableExportParam, type: type };