vue2-client 1.7.0 → 1.7.2

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