vue2-client 1.6.49 → 1.7.0

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