vue2-client 1.6.63-single → 1.7.1

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 (127) hide show
  1. package/.env +15 -15
  2. package/CHANGELOG.md +6 -0
  3. package/Components.md +60 -0
  4. package/index.js +39 -30
  5. package/package.json +4 -2
  6. package/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox.vue +1 -1
  7. package/src/base-client/components/common/CitySelect/CitySelect.vue +247 -247
  8. package/src/base-client/components/common/CreateQuery/CreateQuery.vue +669 -669
  9. package/src/base-client/components/common/CreateQuery/CreateQueryItem.vue +735 -735
  10. package/src/base-client/components/common/CreateSimpleFormQuery/CreateSimpleFormQuery.vue +466 -460
  11. package/src/base-client/components/common/CreateSimpleFormQuery/CreateSimpleFormQueryItem.vue +510 -510
  12. package/src/base-client/components/common/FormGroupEdit/FormGroupEdit.vue +144 -138
  13. package/src/base-client/components/common/FormGroupQuery/FormGroupQuery.vue +165 -165
  14. package/src/base-client/components/common/JSONToTree/jsontotree.vue +275 -275
  15. package/src/base-client/components/common/Upload/Upload.vue +3 -3
  16. package/src/base-client/components/common/XAddForm/XAddForm.vue +72 -72
  17. package/src/base-client/components/common/XAddNativeForm/XAddNativeForm.vue +365 -365
  18. package/src/base-client/components/common/XAddNativeForm/index.md +96 -56
  19. package/src/base-client/components/common/XCard/XCard.vue +64 -64
  20. package/src/base-client/components/common/XDataDrawer/XDataDrawer.vue +180 -0
  21. package/src/base-client/components/common/XDataDrawer/index.js +3 -0
  22. package/src/base-client/components/common/XDataDrawer/index.md +41 -0
  23. package/src/base-client/components/common/XForm/XForm.vue +178 -178
  24. package/src/base-client/components/common/XForm/XFormItem.vue +521 -521
  25. package/src/base-client/components/common/XForm/XTreeSelect.vue +184 -184
  26. package/src/base-client/components/common/XFormCol/XFormCol.vue +38 -38
  27. package/src/base-client/components/common/XFormTable/XFormTable.vue +356 -348
  28. package/src/base-client/components/common/XFormTable/index.md +97 -97
  29. package/src/base-client/components/common/XImportExcel/XImportExcel.vue +1 -1
  30. package/src/base-client/components/common/XTable/XTable.vue +519 -519
  31. package/src/base-client/components/common/XTreeOne/XTreeOne.vue +111 -111
  32. package/src/base-client/components/system/DictionaryDetailsView/DictionaryDetailsView.vue +1 -1
  33. package/src/base-client/components/system/QueryParamsDetailsView/QueryParamsDetailsView.vue +1 -1
  34. package/src/base-client/components/ticket/TicketDetailsView/TicketDetailsView.vue +1 -1
  35. package/src/base-client/components/ticket/TicketDetailsView/index.md +29 -29
  36. package/src/base-client/components/ticket/TicketDetailsView/part/TicketDetailsFlow.vue +260 -260
  37. package/src/base-client/components/ticket/TicketSubmitSuccessView/TicketSubmitSuccessView.vue +1 -1
  38. package/src/base-client/components/ticket/TicketSubmitSuccessView/index.md +29 -29
  39. package/src/base-client/plugins/AppData.js +76 -76
  40. package/src/base-client/plugins/GetLoginInfoService.js +179 -179
  41. package/src/base-client/plugins/PagedList.js +177 -177
  42. package/src/base-client/plugins/compatible/LoginServiceOA.js +20 -20
  43. package/src/base-client/plugins/i18n-extend.js +32 -32
  44. package/src/components/Ellipsis/Ellipsis.vue +65 -65
  45. package/src/components/Ellipsis/index.md +38 -38
  46. package/src/components/NumberInfo/index.md +43 -43
  47. package/src/components/STable/README.md +341 -341
  48. package/src/components/STable/index.js +318 -318
  49. package/src/components/Trend/index.md +45 -45
  50. package/src/components/checkbox/ColorCheckbox.vue +157 -157
  51. package/src/components/checkbox/ImgCheckbox.vue +163 -163
  52. package/src/components/exception/ExceptionPage.vue +70 -70
  53. package/src/components/form/FormRow.vue +52 -52
  54. package/src/components/index.js +36 -36
  55. package/src/components/menu/SideMenu.vue +62 -62
  56. package/src/components/menu/menu.js +273 -273
  57. package/src/components/page/header/index.less +40 -40
  58. package/src/components/setting/Setting.vue +235 -235
  59. package/src/components/table/StandardTable.vue +141 -141
  60. package/src/components/table/advance/ActionColumns.vue +158 -158
  61. package/src/components/table/advance/SearchArea.vue +355 -355
  62. package/src/components/tool/AStepItem.vue +60 -60
  63. package/src/components/tool/AvatarList.vue +68 -68
  64. package/src/components/tool/Drawer.vue +142 -142
  65. package/src/components/tool/TagSelect.vue +83 -83
  66. package/src/components/transition/PageToggleTransition.vue +97 -97
  67. package/src/config/CreateQueryConfig.js +307 -307
  68. package/src/config/default/admin.config.js +18 -18
  69. package/src/config/default/setting.config.js +48 -48
  70. package/src/config/replacer/resolve.config.js +67 -67
  71. package/src/layouts/CommonLayout.vue +42 -42
  72. package/src/layouts/ComponentLayoutOne.vue +47 -47
  73. package/src/layouts/PageLayout.vue +151 -151
  74. package/src/layouts/SinglePageView.vue +116 -116
  75. package/src/layouts/footer/PageFooter.vue +49 -49
  76. package/src/layouts/header/AdminHeader.vue +134 -134
  77. package/src/layouts/header/HeaderAvatar.vue +64 -64
  78. package/src/layouts/header/HeaderNotice.vue +1 -1
  79. package/src/layouts/header/HeaderSearch.vue +67 -67
  80. package/src/layouts/header/InstitutionDetail.vue +2 -2
  81. package/src/layouts/header/index.less +92 -92
  82. package/src/layouts/tabs/TabsHead.vue +190 -190
  83. package/src/layouts/tabs/TabsView.vue +379 -379
  84. package/src/mock/goods/index.js +108 -108
  85. package/src/pages/CreateQueryPage.vue +2 -2
  86. package/src/pages/login/Login.vue +369 -369
  87. package/src/pages/report/ReportTable.js +124 -124
  88. package/src/pages/report/ReportTableHome.vue +1 -1
  89. package/src/pages/resourceManage/orgListManage.vue +98 -98
  90. package/src/pages/system/dictionary/index.vue +1 -1
  91. package/src/pages/system/file/index.vue +3 -3
  92. package/src/pages/system/monitor/loginInfor/index.vue +1 -1
  93. package/src/pages/system/monitor/operLog/index.vue +1 -1
  94. package/src/pages/system/settings/index.vue +126 -126
  95. package/src/pages/system/settings/modifyPassword.vue +109 -109
  96. package/src/router/async/config.async.js +28 -28
  97. package/src/router/async/router.map.js +66 -74
  98. package/src/router/guards.js +153 -153
  99. package/src/router/index.js +27 -27
  100. package/src/services/api/DictionaryDetailsViewApi.js +1 -1
  101. package/src/services/api/LogDetailsViewApi.js +3 -3
  102. package/src/services/api/QueryParamsDetailsViewApi.js +1 -1
  103. package/src/services/api/TicketDetailsViewApi.js +15 -15
  104. package/src/services/api/cas.js +79 -79
  105. package/src/services/api/common.js +18 -13
  106. package/src/services/api/commonTempTable.js +3 -3
  107. package/src/services/api/index.js +17 -17
  108. package/src/services/api/logininfor/index.js +1 -1
  109. package/src/services/api/manage.js +2 -2
  110. package/src/services/apiService.js +14 -14
  111. package/src/services/user.js +67 -67
  112. package/src/store/modules/index.js +4 -4
  113. package/src/theme/default/nprogress.less +76 -76
  114. package/src/theme/default/style.less +58 -58
  115. package/src/utils/EncryptUtil.js +53 -53
  116. package/src/utils/colors.js +107 -107
  117. package/src/utils/excel/Blob.js +180 -180
  118. package/src/utils/excel/Export2Excel.js +141 -141
  119. package/src/utils/formatter.js +68 -68
  120. package/src/utils/i18n.js +80 -80
  121. package/src/utils/login.js +138 -138
  122. package/src/utils/map-utils.js +37 -37
  123. package/src/utils/theme-color-replacer-extend.js +91 -91
  124. package/src/utils/themeUtil.js +100 -100
  125. package/src/utils/util.js +230 -230
  126. package/vue.config.js +106 -106
  127. package/src/pages/system/queryParams/index.vue +0 -43
@@ -1,365 +1,365 @@
1
- <template>
2
- <a-form-model
3
- v-if="loaded"
4
- ref="selectForm"
5
- :zIndex="1001"
6
- :model="form"
7
- :rules="rules">
8
- <a-row :gutter="16">
9
- <x-form-item
10
- v-for="(item, index) in realJsonData"
11
- :key="index"
12
- :attr="item"
13
- :disabled="itemDisabled(item)"
14
- :files="files"
15
- :form="form"
16
- :images="images"
17
- :service-name="serviceName"
18
- mode="新增/修改"
19
- :get-data-params="getDataParams"
20
- />
21
- </a-row>
22
- <a-row :gutter="16" v-for="(item, key) in simpleFormJsonData" :key="'row' + key">
23
- <a-card :title="item.name" :bordered="false" size="small">
24
- <x-form-item
25
- v-for="(formItem, formItemIndex) in item.value"
26
- :key="key + formItemIndex"
27
- :attr="formItem"
28
- :disabled="itemDisabled(formItem)"
29
- :files="files"
30
- :form="form"
31
- :images="images"
32
- :service-name="serviceName"
33
- mode="新增/修改"
34
- :get-data-params="getDataParams"
35
- />
36
- </a-card>
37
- </a-row>
38
- </a-form-model>
39
- </template>
40
- <script>
41
- import XFormItem from '@vue2-client/base-client/components/common/XForm/XFormItem'
42
- import { formatDate } from '@vue2-client/utils/util'
43
- import { mapState } from 'vuex'
44
- import { post } from '@vue2-client/services/api'
45
-
46
- export default {
47
- name: 'XAddNativeForm',
48
- components: {
49
- XFormItem
50
- },
51
- props: {
52
- },
53
- data () {
54
- return {
55
- // 预览模式
56
- viewMode: false,
57
- // 是否处理表单Key值
58
- isHandleFormKey: true,
59
- // 内容加载是否完成
60
- loaded: false,
61
- // 业务类型
62
- businessType: '',
63
- // 业务标题
64
- title: '',
65
- // 新增或修改业务是否执行中
66
- loading: false,
67
- // 表单Model
68
- form: {},
69
- // 表单项集合
70
- formItems: [],
71
- // 服务名称
72
- serviceName: 'af-system',
73
- // 修改有文件的表单时使用
74
- files: [],
75
- images: [],
76
- // 校验
77
- rules: {},
78
- // 调用logic获取数据源的追加参数
79
- getDataParams: {},
80
- // 是否为临时表
81
- isTableTemp: false,
82
- // 动态简易表单集合
83
- simpleFormJsonData: {}
84
- }
85
- },
86
- computed: {
87
- businessTitle () {
88
- return this.businessType + this.title
89
- },
90
- // 过滤出用于新增/修改场景的表单项
91
- realJsonData: function () {
92
- return this.formItems.filter((item) => {
93
- return item.addOrEdit && item.addOrEdit !== 'no' && item.addOrEdit !== 'silenceAdd' && item.addOrEdit !== 'version' && !this.itemDisabled(item)
94
- })
95
- },
96
- // 过滤出用于静默新增场景的表单项
97
- silenceAddJsonData: function () {
98
- return this.formItems.filter(function (item) {
99
- return item.addOrEdit === 'silenceAdd'
100
- })
101
- },
102
- // 过滤出版本号表单项
103
- versionJsonData: function () {
104
- return this.formItems.filter(function (item) {
105
- return item.addOrEdit === 'version'
106
- })
107
- },
108
- ...mapState('account', { currUser: 'user' })
109
- },
110
- methods: {
111
- init (params) {
112
- const {
113
- formItems, viewMode, isHandleFormKey = true, serviceName = 'af-system', isTableTemp = false, modifyModelData = {}, businessType, title, fixedAddForm = {}, getDataParams = {}, simpleFormJsonData = {}
114
- } = params
115
- this.loaded = false
116
- this.formItems = JSON.parse(JSON.stringify(formItems))
117
- this.viewMode = viewMode
118
- this.isHandleFormKey = isHandleFormKey
119
- this.serviceName = serviceName
120
- this.businessType = businessType
121
- this.title = title
122
- this.getDataParams = getDataParams
123
- this.simpleFormJsonData = simpleFormJsonData
124
- this.isTableTemp = isTableTemp
125
- // 设置普通表单项的相关参数
126
- const formData = Object.assign({}, fixedAddForm)
127
- for (let i = 0; i < this.realJsonData.length; i++) {
128
- const item = this.realJsonData[i]
129
- this.setFormProps(formData, item)
130
- }
131
- // 设置动态简易表单项的相关参数
132
- for (const key in this.simpleFormJsonData) {
133
- for (const item of this.simpleFormJsonData[key].value) {
134
- item.model = key + '@' + item.model
135
- this.setFormProps(formData, item)
136
- }
137
- }
138
-
139
- this.form = formData
140
- // 修改场景下对表单项赋值
141
- if (modifyModelData && modifyModelData.data) {
142
- this.files = modifyModelData.files
143
- this.images = modifyModelData.images
144
- if (Object.keys(modifyModelData.data).length > 0) {
145
- this.getModifyModelData(modifyModelData)
146
- }
147
- }
148
- this.loaded = true
149
- },
150
- setFormProps (formData, item) {
151
- formData[item.model] = undefined
152
- // 处理表单校验情况
153
- if (item.rule) {
154
- this.rules[item.model] = []
155
- const required = item.rule.required ? item.rule.required === true || item.rule.required === 'true' : false
156
- let trigger
157
- let message
158
- if (required) {
159
- switch (item.type) {
160
- case 'select':
161
- case 'checkbox':
162
- case 'radio':
163
- case 'treeSelect':
164
- case 'rangePicker':
165
- case 'monthPicker':
166
- case 'yearPicker':
167
- case 'datePicker':
168
- case 'file':
169
- case 'image':
170
- case 'citySelect':
171
- case 'addressSearch':
172
- case 'personSetting':
173
- message = '请选择' + item.name
174
- trigger = 'change'
175
- break
176
- default:
177
- message = '请输入' + item.name
178
- trigger = 'blur'
179
- }
180
- this.rules[item.model].push({
181
- required: true,
182
- message: message,
183
- trigger: trigger
184
- })
185
- }
186
-
187
- switch (item.rule.type) {
188
- case 'number':
189
- case 'integer':
190
- case 'float':
191
- let defaultValue
192
- let message
193
- switch (item.rule.type) {
194
- case 'number':
195
- message = '数字'
196
- defaultValue = 0
197
- break
198
- case 'integer':
199
- message = '整数'
200
- defaultValue = 0
201
- break
202
- case 'float':
203
- message = '小数'
204
- defaultValue = 0.0
205
- break
206
- }
207
- this.rules[item.model].push({
208
- type: item.rule.type,
209
- message: item.name + '必须为' + message,
210
- transform: (value) => {
211
- if (value && value.length !== 0) {
212
- return Number(value)
213
- } else {
214
- return defaultValue
215
- }
216
- },
217
- trigger: 'blur'
218
- })
219
- break
220
- }
221
- }
222
- },
223
- itemDisabled (value) {
224
- return (this.businessType === '新增' && value.addOrEdit === 'edit') ||
225
- (this.businessType === '修改' && value.addOrEdit === 'add')
226
- },
227
- async onSubmit () {
228
- this.$refs.selectForm.validate(async valid => {
229
- // 验证未通过直接返回
230
- if (!valid) {
231
- return false
232
- }
233
- if (this.viewMode) {
234
- this.$message.info('预览模式禁止新增和修改')
235
- return false
236
- }
237
- this.loading = true
238
- for (const key of Object.keys(this.form)) {
239
- if (this.form[key] === null || this.form[key] === '') {
240
- this.form[key] = undefined
241
- }
242
- }
243
- const requestForm = Object.assign({}, this.form)
244
- // 追加静默新增字段
245
- if (this.businessType === '新增') {
246
- for (const item of this.silenceAddJsonData) {
247
- switch (item.silencePurpose) {
248
- case 'createTime':
249
- requestForm[item.model] = formatDate('now')
250
- break
251
- case 'operator':
252
- requestForm[item.model] = this.currUser.name
253
- break
254
- case 'orgId':
255
- requestForm[item.model] = this.currUser.orgid
256
- break
257
- }
258
- }
259
- // 通过请求追加静默新增:自定义字段
260
- for (const item of this.silenceAddJsonData.filter((item) => item.silencePurpose === 'customize')) {
261
- requestForm[item.model] = await this.getSilenceSource(item.silenceSource, requestForm)
262
- }
263
- }
264
- // 如果是临时表
265
- if (this.isTableTemp) {
266
- this.$emit('tempTableModify', {
267
- valid: valid,
268
- form: requestForm,
269
- businessType: this.businessType
270
- })
271
- return
272
- }
273
- // 处理表单键问题
274
- const realForm = {}
275
- for (const key of Object.keys(requestForm)) {
276
- const value = requestForm[key]
277
- const extraFormKeyTagIndex = key.indexOf('@')
278
- // 如果含有动态简易表单项,则将该项的值放入具体的动态表单配置字段中
279
- if (extraFormKeyTagIndex !== -1) {
280
- const extraFormKey = key.substring(0, extraFormKeyTagIndex)
281
- const realKey = key.substring(extraFormKeyTagIndex + 1)
282
- if (!realForm[extraFormKey]) {
283
- realForm[extraFormKey] = {}
284
- }
285
- realForm[extraFormKey][realKey] = value
286
- } else {
287
- const realKey = this.getRealKey(key)
288
- realForm[realKey] = value
289
- }
290
- }
291
- // 交由父级处理
292
- this.$emit('onSubmit', {
293
- businessType: this.businessType,
294
- serviceName: this.serviceName,
295
- realForm: realForm,
296
- currUserName: this.currUser.name
297
- })
298
- })
299
- },
300
- /**
301
- * 获取通过logic静默新增的字段
302
- * @param logicName logic名称
303
- * @param requestParameters 请求参数
304
- */
305
- async getSilenceSource (logicName, requestParameters) {
306
- const result = await post('/api/' + this.serviceName + '/logic/' + logicName, requestParameters)
307
- return result
308
- },
309
- // 获取表单字段实际值
310
- getRealKey (key) {
311
- if (this.isHandleFormKey) {
312
- return key.substring(key.indexOf('_') + 1)
313
- } else {
314
- return key
315
- }
316
- },
317
- /**
318
- * 获取被修改记录数据
319
- * @param modifyModelData 被修改记录的数据
320
- */
321
- getModifyModelData (modifyModelData) {
322
- if (modifyModelData.primaryKeyData) {
323
- this.form = Object.assign(this.form, modifyModelData.primaryKeyData)
324
- }
325
- // 对动态简易表单项特殊处理
326
- for (const key in modifyModelData.data) {
327
- const realKey = this.getRealKey(key)
328
- if (this.simpleFormJsonData[realKey]) {
329
- const extraForm = JSON.parse(modifyModelData.data[key])
330
- for (const key in extraForm) {
331
- const model = realKey + '@' + key
332
- this.form[model] = extraForm[key]
333
- }
334
- }
335
- }
336
- // 对普通表单项处理
337
- for (let i = 0; i < this.realJsonData.length; i++) {
338
- if (['FilesId', 'Images'].includes(this.realJsonData[i])) {
339
- // 附件需要跳过 因为会通过 modifyModelData中的files,images属性给upload赋值
340
- // 新增修改表单每次提交时只会提交最新添加的文件
341
- continue
342
- }
343
- const item = this.realJsonData[i]
344
- if (modifyModelData.data[item.model] || modifyModelData.data[item.model] === 0) {
345
- if (modifyModelData.data[item.model] instanceof Array) {
346
- this.form[item.model] = modifyModelData.data[item.model]
347
- } else {
348
- this.form[item.model] = modifyModelData.data[item.model] + ''
349
- }
350
- } else {
351
- this.form[item.model] = undefined
352
- }
353
- }
354
- // 追加版本号信息
355
- for (const item of this.versionJsonData) {
356
- if (!modifyModelData.data[item.model]) {
357
- this.form[item.model] = 0
358
- } else {
359
- this.form[item.model] = modifyModelData.data[item.model] + ''
360
- }
361
- }
362
- }
363
- }
364
- }
365
- </script>
1
+ <template>
2
+ <a-form-model
3
+ v-if="loaded"
4
+ ref="selectForm"
5
+ :zIndex="1001"
6
+ :model="form"
7
+ :rules="rules">
8
+ <a-row :gutter="16">
9
+ <x-form-item
10
+ v-for="(item, index) in realJsonData"
11
+ :key="index"
12
+ :attr="item"
13
+ :disabled="itemDisabled(item)"
14
+ :files="files"
15
+ :form="form"
16
+ :images="images"
17
+ :service-name="serviceName"
18
+ mode="新增/修改"
19
+ :get-data-params="getDataParams"
20
+ />
21
+ </a-row>
22
+ <a-row :gutter="16" v-for="(item, key) in simpleFormJsonData" :key="'row' + key">
23
+ <a-card :title="item.name" :bordered="false" size="small">
24
+ <x-form-item
25
+ v-for="(formItem, formItemIndex) in item.value"
26
+ :key="key + formItemIndex"
27
+ :attr="formItem"
28
+ :disabled="itemDisabled(formItem)"
29
+ :files="files"
30
+ :form="form"
31
+ :images="images"
32
+ :service-name="serviceName"
33
+ mode="新增/修改"
34
+ :get-data-params="getDataParams"
35
+ />
36
+ </a-card>
37
+ </a-row>
38
+ </a-form-model>
39
+ </template>
40
+ <script>
41
+ import XFormItem from '@vue2-client/base-client/components/common/XForm/XFormItem'
42
+ import { formatDate } from '@vue2-client/utils/util'
43
+ import { mapState } from 'vuex'
44
+ import { post } from '@vue2-client/services/api'
45
+
46
+ export default {
47
+ name: 'XAddNativeForm',
48
+ components: {
49
+ XFormItem
50
+ },
51
+ props: {
52
+ },
53
+ data () {
54
+ return {
55
+ // 预览模式
56
+ viewMode: false,
57
+ // 是否处理表单Key值
58
+ isHandleFormKey: true,
59
+ // 内容加载是否完成
60
+ loaded: false,
61
+ // 业务类型
62
+ businessType: '',
63
+ // 业务标题
64
+ title: '',
65
+ // 新增或修改业务是否执行中
66
+ loading: false,
67
+ // 表单Model
68
+ form: {},
69
+ // 表单项集合
70
+ formItems: [],
71
+ // 服务名称
72
+ serviceName: 'af-system',
73
+ // 修改有文件的表单时使用
74
+ files: [],
75
+ images: [],
76
+ // 校验
77
+ rules: {},
78
+ // 调用logic获取数据源的追加参数
79
+ getDataParams: {},
80
+ // 是否为临时表
81
+ isTableTemp: false,
82
+ // 动态简易表单集合
83
+ simpleFormJsonData: {}
84
+ }
85
+ },
86
+ computed: {
87
+ businessTitle () {
88
+ return this.businessType + this.title
89
+ },
90
+ // 过滤出用于新增/修改场景的表单项
91
+ realJsonData: function () {
92
+ return this.formItems.filter((item) => {
93
+ return item.addOrEdit && item.addOrEdit !== 'no' && item.addOrEdit !== 'silenceAdd' && item.addOrEdit !== 'version' && !this.itemDisabled(item)
94
+ })
95
+ },
96
+ // 过滤出用于静默新增场景的表单项
97
+ silenceAddJsonData: function () {
98
+ return this.formItems.filter(function (item) {
99
+ return item.addOrEdit === 'silenceAdd'
100
+ })
101
+ },
102
+ // 过滤出版本号表单项
103
+ versionJsonData: function () {
104
+ return this.formItems.filter(function (item) {
105
+ return item.addOrEdit === 'version'
106
+ })
107
+ },
108
+ ...mapState('account', { currUser: 'user' })
109
+ },
110
+ methods: {
111
+ init (params) {
112
+ const {
113
+ formItems, viewMode, isHandleFormKey = true, serviceName = 'af-system', isTableTemp = false, modifyModelData = {}, businessType, title, fixedAddForm = {}, getDataParams = {}, simpleFormJsonData = {}
114
+ } = params
115
+ this.loaded = false
116
+ this.formItems = JSON.parse(JSON.stringify(formItems))
117
+ this.viewMode = viewMode
118
+ this.isHandleFormKey = isHandleFormKey
119
+ this.serviceName = serviceName
120
+ this.businessType = businessType
121
+ this.title = title
122
+ this.getDataParams = getDataParams
123
+ this.simpleFormJsonData = simpleFormJsonData
124
+ this.isTableTemp = isTableTemp
125
+ // 设置普通表单项的相关参数
126
+ const formData = Object.assign({}, fixedAddForm)
127
+ for (let i = 0; i < this.realJsonData.length; i++) {
128
+ const item = this.realJsonData[i]
129
+ this.setFormProps(formData, item)
130
+ }
131
+ // 设置动态简易表单项的相关参数
132
+ for (const key in this.simpleFormJsonData) {
133
+ for (const item of this.simpleFormJsonData[key].value) {
134
+ item.model = key + '@' + item.model
135
+ this.setFormProps(formData, item)
136
+ }
137
+ }
138
+
139
+ this.form = formData
140
+ // 修改场景下对表单项赋值
141
+ if (modifyModelData && modifyModelData.data) {
142
+ this.files = modifyModelData.files
143
+ this.images = modifyModelData.images
144
+ if (Object.keys(modifyModelData.data).length > 0) {
145
+ this.getModifyModelData(modifyModelData)
146
+ }
147
+ }
148
+ this.loaded = true
149
+ },
150
+ setFormProps (formData, item) {
151
+ formData[item.model] = undefined
152
+ // 处理表单校验情况
153
+ if (item.rule) {
154
+ this.rules[item.model] = []
155
+ const required = item.rule.required ? item.rule.required === true || item.rule.required === 'true' : false
156
+ let trigger
157
+ let message
158
+ if (required) {
159
+ switch (item.type) {
160
+ case 'select':
161
+ case 'checkbox':
162
+ case 'radio':
163
+ case 'treeSelect':
164
+ case 'rangePicker':
165
+ case 'monthPicker':
166
+ case 'yearPicker':
167
+ case 'datePicker':
168
+ case 'file':
169
+ case 'image':
170
+ case 'citySelect':
171
+ case 'addressSearch':
172
+ case 'personSetting':
173
+ message = '请选择' + item.name
174
+ trigger = 'change'
175
+ break
176
+ default:
177
+ message = '请输入' + item.name
178
+ trigger = 'blur'
179
+ }
180
+ this.rules[item.model].push({
181
+ required: true,
182
+ message: message,
183
+ trigger: trigger
184
+ })
185
+ }
186
+
187
+ switch (item.rule.type) {
188
+ case 'number':
189
+ case 'integer':
190
+ case 'float':
191
+ let defaultValue
192
+ let message
193
+ switch (item.rule.type) {
194
+ case 'number':
195
+ message = '数字'
196
+ defaultValue = 0
197
+ break
198
+ case 'integer':
199
+ message = '整数'
200
+ defaultValue = 0
201
+ break
202
+ case 'float':
203
+ message = '小数'
204
+ defaultValue = 0.0
205
+ break
206
+ }
207
+ this.rules[item.model].push({
208
+ type: item.rule.type,
209
+ message: item.name + '必须为' + message,
210
+ transform: (value) => {
211
+ if (value && value.length !== 0) {
212
+ return Number(value)
213
+ } else {
214
+ return defaultValue
215
+ }
216
+ },
217
+ trigger: 'blur'
218
+ })
219
+ break
220
+ }
221
+ }
222
+ },
223
+ itemDisabled (value) {
224
+ return (this.businessType === '新增' && value.addOrEdit === 'edit') ||
225
+ (this.businessType === '修改' && value.addOrEdit === 'add')
226
+ },
227
+ async onSubmit () {
228
+ this.$refs.selectForm.validate(async valid => {
229
+ // 验证未通过直接返回
230
+ if (!valid) {
231
+ return false
232
+ }
233
+ if (this.viewMode) {
234
+ this.$message.info('预览模式禁止新增和修改')
235
+ return false
236
+ }
237
+ this.loading = true
238
+ for (const key of Object.keys(this.form)) {
239
+ if (this.form[key] === null || this.form[key] === '') {
240
+ this.form[key] = undefined
241
+ }
242
+ }
243
+ const requestForm = Object.assign({}, this.form)
244
+ // 追加静默新增字段
245
+ if (this.businessType === '新增') {
246
+ for (const item of this.silenceAddJsonData) {
247
+ switch (item.silencePurpose) {
248
+ case 'createTime':
249
+ requestForm[item.model] = formatDate('now')
250
+ break
251
+ case 'operator':
252
+ requestForm[item.model] = this.currUser.name
253
+ break
254
+ case 'orgId':
255
+ requestForm[item.model] = this.currUser.orgid
256
+ break
257
+ }
258
+ }
259
+ // 通过请求追加静默新增:自定义字段
260
+ for (const item of this.silenceAddJsonData.filter((item) => item.silencePurpose === 'customize')) {
261
+ requestForm[item.model] = await this.getSilenceSource(item.silenceSource, requestForm)
262
+ }
263
+ }
264
+ // 如果是临时表
265
+ if (this.isTableTemp) {
266
+ this.$emit('tempTableModify', {
267
+ valid: valid,
268
+ form: requestForm,
269
+ businessType: this.businessType
270
+ })
271
+ return
272
+ }
273
+ // 处理表单键问题
274
+ const realForm = {}
275
+ for (const key of Object.keys(requestForm)) {
276
+ const value = requestForm[key]
277
+ const extraFormKeyTagIndex = key.indexOf('@')
278
+ // 如果含有动态简易表单项,则将该项的值放入具体的动态表单配置字段中
279
+ if (extraFormKeyTagIndex !== -1) {
280
+ const extraFormKey = key.substring(0, extraFormKeyTagIndex)
281
+ const realKey = key.substring(extraFormKeyTagIndex + 1)
282
+ if (!realForm[extraFormKey]) {
283
+ realForm[extraFormKey] = {}
284
+ }
285
+ realForm[extraFormKey][realKey] = value
286
+ } else {
287
+ const realKey = this.getRealKey(key)
288
+ realForm[realKey] = value
289
+ }
290
+ }
291
+ // 交由父级处理
292
+ this.$emit('onSubmit', {
293
+ businessType: this.businessType,
294
+ serviceName: this.serviceName,
295
+ realForm: realForm,
296
+ currUserName: this.currUser.name
297
+ })
298
+ })
299
+ },
300
+ /**
301
+ * 获取通过logic静默新增的字段
302
+ * @param logicName logic名称
303
+ * @param requestParameters 请求参数
304
+ */
305
+ async getSilenceSource (logicName, requestParameters) {
306
+ const result = await post('/api/' + this.serviceName + '/logic/' + logicName, requestParameters)
307
+ return result
308
+ },
309
+ // 获取表单字段实际值
310
+ getRealKey (key) {
311
+ if (this.isHandleFormKey) {
312
+ return key.substring(key.indexOf('_') + 1)
313
+ } else {
314
+ return key
315
+ }
316
+ },
317
+ /**
318
+ * 获取被修改记录数据
319
+ * @param modifyModelData 被修改记录的数据
320
+ */
321
+ getModifyModelData (modifyModelData) {
322
+ if (modifyModelData.primaryKeyData) {
323
+ this.form = Object.assign(this.form, modifyModelData.primaryKeyData)
324
+ }
325
+ // 对动态简易表单项特殊处理
326
+ for (const key in modifyModelData.data) {
327
+ const realKey = this.getRealKey(key)
328
+ if (this.simpleFormJsonData[realKey]) {
329
+ const extraForm = JSON.parse(modifyModelData.data[key])
330
+ for (const key in extraForm) {
331
+ const model = realKey + '@' + key
332
+ this.form[model] = extraForm[key]
333
+ }
334
+ }
335
+ }
336
+ // 对普通表单项处理
337
+ for (let i = 0; i < this.realJsonData.length; i++) {
338
+ if (['FilesId', 'Images'].includes(this.realJsonData[i])) {
339
+ // 附件需要跳过 因为会通过 modifyModelData中的files,images属性给upload赋值
340
+ // 新增修改表单每次提交时只会提交最新添加的文件
341
+ continue
342
+ }
343
+ const item = this.realJsonData[i]
344
+ if (modifyModelData.data[item.model] || modifyModelData.data[item.model] === 0) {
345
+ if (modifyModelData.data[item.model] instanceof Array) {
346
+ this.form[item.model] = modifyModelData.data[item.model]
347
+ } else {
348
+ this.form[item.model] = modifyModelData.data[item.model] + ''
349
+ }
350
+ } else {
351
+ this.form[item.model] = undefined
352
+ }
353
+ }
354
+ // 追加版本号信息
355
+ for (const item of this.versionJsonData) {
356
+ if (!modifyModelData.data[item.model]) {
357
+ this.form[item.model] = 0
358
+ } else {
359
+ this.form[item.model] = modifyModelData.data[item.model] + ''
360
+ }
361
+ }
362
+ }
363
+ }
364
+ }
365
+ </script>