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