vue2-client 1.4.64 → 1.5.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.
- package/CHANGELOG.md +11 -0
- package/package.json +1 -1
- package/src/base-client/components/common/CreateQuery/CreateQuery.vue +602 -601
- package/src/base-client/components/common/CreateQuery/CreateQueryItem.vue +713 -782
- package/src/base-client/components/common/CreateSimpleFormQuery/CreateSimpleFormQuery.vue +436 -310
- package/src/base-client/components/common/CreateSimpleFormQuery/CreateSimpleFormQueryItem.vue +508 -553
- package/src/base-client/components/common/XAddForm/XAddForm.vue +325 -354
- package/src/base-client/components/common/XAddNativeForm/XAddNativeForm.vue +24 -74
- package/src/base-client/components/common/XForm/XForm.vue +25 -114
- package/src/base-client/components/common/XForm/XFormItem.vue +485 -538
- package/src/base-client/components/common/XForm/index.md +177 -196
- package/src/base-client/components/common/XFormTable/XFormTable.vue +144 -418
- package/src/base-client/components/common/XTable/XTable.vue +504 -262
- package/src/components/STable/index.js +1 -1
- package/src/config/CreateQueryConfig.js +307 -313
- package/src/layouts/SinglePageView.vue +1 -1
- package/src/layouts/header/HeaderAvatar.vue +61 -60
- package/src/pages/login/Login.vue +48 -33
- package/src/router/guards.js +11 -2
- package/src/utils/indexedDB.js +145 -146
- package/vue.config.js +106 -111
|
@@ -14,12 +14,10 @@
|
|
|
14
14
|
:files="files"
|
|
15
15
|
:form="form"
|
|
16
16
|
:images="images"
|
|
17
|
-
:selects-array="SelectsArray"
|
|
18
17
|
:service-name="serviceName"
|
|
19
18
|
:xl="12"
|
|
20
19
|
:xxl="8"
|
|
21
20
|
mode="新增/修改"
|
|
22
|
-
@selectsItemCheck="selectsItemCheck"
|
|
23
21
|
/>
|
|
24
22
|
</a-row>
|
|
25
23
|
</a-form-model>
|
|
@@ -41,21 +39,12 @@ export default {
|
|
|
41
39
|
// 内容加载是否完成
|
|
42
40
|
loaded: false,
|
|
43
41
|
// 表单Model
|
|
44
|
-
form:
|
|
42
|
+
form: {},
|
|
45
43
|
// 修改有文件得表单时使用
|
|
46
44
|
files: [],
|
|
47
45
|
images: [],
|
|
48
|
-
// 多层下拉框组 数据储存
|
|
49
|
-
SelectsArray: {},
|
|
50
|
-
// 多层下拉框组 各组数量
|
|
51
|
-
SelectsNumber: {},
|
|
52
46
|
// 校验
|
|
53
|
-
rules: {}
|
|
54
|
-
// 图标样式
|
|
55
|
-
iconStyle: {
|
|
56
|
-
position: 'relative',
|
|
57
|
-
top: '1px'
|
|
58
|
-
}
|
|
47
|
+
rules: {}
|
|
59
48
|
}
|
|
60
49
|
},
|
|
61
50
|
computed: {
|
|
@@ -121,59 +110,13 @@ export default {
|
|
|
121
110
|
visible (rel) {
|
|
122
111
|
if (rel) {
|
|
123
112
|
this.formItemLoad()
|
|
124
|
-
this.getSelectsArray()
|
|
125
113
|
}
|
|
126
114
|
}
|
|
127
115
|
},
|
|
128
116
|
mounted () {
|
|
129
117
|
this.formItemLoad()
|
|
130
|
-
this.getSelectsArray()
|
|
131
118
|
},
|
|
132
119
|
methods: {
|
|
133
|
-
// 初始化级联框数据
|
|
134
|
-
getSelectsArray () {
|
|
135
|
-
const selectSate = this.jsonData.filter(item => !item.isOnlyAddOrEdit && item.group)
|
|
136
|
-
const groupName = [...new Set(selectSate.map(item => item.group))]
|
|
137
|
-
// 初始化数据组
|
|
138
|
-
groupName.forEach(groupName => {
|
|
139
|
-
this.SelectsArray[groupName] = []
|
|
140
|
-
const SelectsItem = selectSate.filter(item => {
|
|
141
|
-
if (item.groupIndex === 1) {
|
|
142
|
-
if (item.keyName.substring(0, 6) === 'logic@') {
|
|
143
|
-
// 请求logic
|
|
144
|
-
post('/api/' + this.serviceName + '/logic/' + item.keyName.substring(6), {}).then(res => {
|
|
145
|
-
this.SelectsArray[item.group][item.groupIndex] = res
|
|
146
|
-
this.SelectsArray = JSON.parse(JSON.stringify(this.SelectsArray))
|
|
147
|
-
})
|
|
148
|
-
} else {
|
|
149
|
-
this.SelectsArray[item.group][item.groupIndex] = JSON.parse(item.keyName)
|
|
150
|
-
this.SelectsArray = JSON.parse(JSON.stringify(this.SelectsArray))
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
return item.group === groupName
|
|
154
|
-
}
|
|
155
|
-
)
|
|
156
|
-
this.SelectsNumber[groupName] = SelectsItem.length ? SelectsItem.length : 0
|
|
157
|
-
}
|
|
158
|
-
)
|
|
159
|
-
this.loaded = true
|
|
160
|
-
},
|
|
161
|
-
selectsItemCheck (callback, groupName, index, value) {
|
|
162
|
-
const tem = { }
|
|
163
|
-
const group = this.realJsonData.filter(item => item.addOrEdit && item.group && item.group === groupName)
|
|
164
|
-
// 获取当前下拉框子下拉框的数据
|
|
165
|
-
this.SelectsArray[groupName][index + 1] = this.SelectsArray[groupName][index].filter(item => item.value === value)[0].children
|
|
166
|
-
// 清空子下拉框的子们的数据
|
|
167
|
-
for (let i = index; i < this.SelectsNumber[groupName]; i++) {
|
|
168
|
-
tem[group[i].model] = undefined
|
|
169
|
-
}
|
|
170
|
-
this.form = Object.assign({}, this.form, tem)
|
|
171
|
-
// 清空子下拉框的子们的数据源
|
|
172
|
-
for (let i = index + 2; i <= this.SelectsNumber[groupName]; i++) {
|
|
173
|
-
this.SelectsArray[groupName][i] = []
|
|
174
|
-
}
|
|
175
|
-
callback(this.SelectsArray)
|
|
176
|
-
},
|
|
177
120
|
formItemLoad () {
|
|
178
121
|
const formData = Object.assign({}, this.fixedAddForm)
|
|
179
122
|
for (let i = 0; i < this.realJsonData.length; i++) {
|
|
@@ -251,12 +194,6 @@ export default {
|
|
|
251
194
|
return (this.businessType === '新增' && value.addOrEdit === 'edit') ||
|
|
252
195
|
(this.businessType === '修改' && value.addOrEdit === 'add')
|
|
253
196
|
},
|
|
254
|
-
itemDisabledPlus (group, index) {
|
|
255
|
-
return (!this.SelectsArray[group][index]) || (this.SelectsArray[group][index] && this.SelectsArray[group][index].length === 0)
|
|
256
|
-
},
|
|
257
|
-
resetForm () {
|
|
258
|
-
this.$refs.selectForm.resetFields()
|
|
259
|
-
},
|
|
260
197
|
async onSubmit () {
|
|
261
198
|
this.$refs.selectForm.validate(async valid => {
|
|
262
199
|
for (const key of Object.keys(this.form)) {
|
|
@@ -264,38 +201,47 @@ export default {
|
|
|
264
201
|
this.form[key] = undefined
|
|
265
202
|
}
|
|
266
203
|
}
|
|
267
|
-
const
|
|
204
|
+
const requestForm = Object.assign({}, this.form)
|
|
268
205
|
// 追加静默新增字段
|
|
269
206
|
if (this.businessType === '新增') {
|
|
270
207
|
for (const item of this.silenceAddJsonData) {
|
|
271
208
|
switch (item.silencePurpose) {
|
|
272
209
|
case 'createTime':
|
|
273
|
-
|
|
210
|
+
requestForm[item.model] = formatDate('now')
|
|
274
211
|
break
|
|
275
212
|
case 'operator':
|
|
276
|
-
|
|
213
|
+
requestForm[item.model] = this.currUser.name
|
|
277
214
|
break
|
|
278
215
|
case 'orgId':
|
|
279
|
-
|
|
216
|
+
requestForm[item.model] = this.currUser.orgid
|
|
280
217
|
break
|
|
281
218
|
}
|
|
282
219
|
}
|
|
283
220
|
// 通过请求追加静默新增:自定义字段
|
|
284
221
|
for (const item of this.silenceAddJsonData.filter((item) => item.silencePurpose === 'customize')) {
|
|
285
|
-
|
|
222
|
+
requestForm[item.model] = await this.getSilenceSource(item.silenceSource, requestForm)
|
|
286
223
|
}
|
|
287
224
|
}
|
|
288
225
|
const data = {
|
|
289
226
|
valid: valid,
|
|
290
|
-
form:
|
|
227
|
+
form: requestForm
|
|
291
228
|
}
|
|
292
229
|
this.$emit('onSubmit', data)
|
|
293
230
|
})
|
|
294
231
|
},
|
|
295
|
-
|
|
296
|
-
|
|
232
|
+
/**
|
|
233
|
+
* 获取通过logic静默新增的字段
|
|
234
|
+
* @param logicName logic名称
|
|
235
|
+
* @param requestParameters 请求参数
|
|
236
|
+
*/
|
|
237
|
+
async getSilenceSource (logicName, requestParameters) {
|
|
238
|
+
const result = await post('/api/' + this.serviceName + '/logic/' + logicName, requestParameters)
|
|
297
239
|
return result
|
|
298
240
|
},
|
|
241
|
+
/**
|
|
242
|
+
* 获取被修改记录数据
|
|
243
|
+
* @param modifyModelData 被修改记录的数据
|
|
244
|
+
*/
|
|
299
245
|
getModifyModelData () {
|
|
300
246
|
for (let i = 0; i < this.realJsonData.length; i++) {
|
|
301
247
|
if (['FilesId', 'Images'].includes(this.realJsonData[i])) {
|
|
@@ -305,7 +251,11 @@ export default {
|
|
|
305
251
|
}
|
|
306
252
|
const item = this.realJsonData[i]
|
|
307
253
|
if (this.modifyModelData.data[item.model] || this.modifyModelData.data[item.model] === 0) {
|
|
308
|
-
|
|
254
|
+
if (this.modifyModelData.data[item.model] instanceof Array) {
|
|
255
|
+
this.form[item.model] = this.modifyModelData.data[item.model]
|
|
256
|
+
} else {
|
|
257
|
+
this.form[item.model] = this.modifyModelData.data[item.model] + ''
|
|
258
|
+
}
|
|
309
259
|
} else {
|
|
310
260
|
this.form[item.model] = undefined
|
|
311
261
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div v-show="
|
|
2
|
+
<div v-show="visible" class="table-page-search-wrapper">
|
|
3
3
|
<div v-show="advanced" ref="drawerContainer"></div>
|
|
4
4
|
<a-form-model
|
|
5
5
|
v-if="loaded"
|
|
6
|
-
ref="
|
|
6
|
+
ref="form"
|
|
7
7
|
:model="form"
|
|
8
8
|
:rules="rules"
|
|
9
9
|
layout="inline">
|
|
@@ -13,9 +13,7 @@
|
|
|
13
13
|
:key="index"
|
|
14
14
|
:attr="item"
|
|
15
15
|
:form="form"
|
|
16
|
-
:selects-array="SelectsArray"
|
|
17
16
|
:service-name="serviceName"
|
|
18
|
-
@selectsItemCheck="selectsItemCheck"
|
|
19
17
|
/>
|
|
20
18
|
<a-drawer
|
|
21
19
|
:get-container="() => {return $refs.drawerContainer}"
|
|
@@ -32,9 +30,7 @@
|
|
|
32
30
|
:key="'advanced'+index"
|
|
33
31
|
:attr="item"
|
|
34
32
|
:form="form"
|
|
35
|
-
:selectsArray="SelectsArray"
|
|
36
33
|
:service-name="serviceName"
|
|
37
|
-
@selectsItemCheck="selectsItemCheck"
|
|
38
34
|
/>
|
|
39
35
|
</a-form-model>
|
|
40
36
|
</a-drawer>
|
|
@@ -49,7 +45,7 @@
|
|
|
49
45
|
<a-icon :style="iconStyle" type="redo" />重置
|
|
50
46
|
</a-button>
|
|
51
47
|
<slot></slot>
|
|
52
|
-
<a v-if="
|
|
48
|
+
<a v-if="realJsonData.length > 6" style="margin-left: 8px" @click="toggleAdvanced">
|
|
53
49
|
更多条件
|
|
54
50
|
<a-icon type="down"/>
|
|
55
51
|
</a>
|
|
@@ -62,7 +58,6 @@
|
|
|
62
58
|
</template>
|
|
63
59
|
<script>
|
|
64
60
|
import XFormItem from '@vue2-client/base-client/components/common/XForm/XFormItem'
|
|
65
|
-
import { post } from '@vue2-client/services/api'
|
|
66
61
|
|
|
67
62
|
export default {
|
|
68
63
|
name: 'XForm',
|
|
@@ -73,134 +68,46 @@ export default {
|
|
|
73
68
|
return {
|
|
74
69
|
// 内容加载是否完成
|
|
75
70
|
loaded: false,
|
|
71
|
+
// 服务名称
|
|
72
|
+
serviceName: 'af-system',
|
|
76
73
|
// 是否展开条件
|
|
77
74
|
advanced: false,
|
|
78
75
|
// 表单Model
|
|
79
76
|
form: undefined,
|
|
80
|
-
// 多层下拉框组 数据储存
|
|
81
|
-
SelectsArray: {},
|
|
82
|
-
// 多层下拉框组 各组数量
|
|
83
|
-
SelectsNumber: {},
|
|
84
77
|
// 校验
|
|
85
78
|
rules: {},
|
|
86
79
|
// 图标样式
|
|
87
80
|
iconStyle: {
|
|
88
81
|
position: 'relative',
|
|
89
82
|
top: '1px'
|
|
90
|
-
}
|
|
83
|
+
},
|
|
84
|
+
// 表单项集合
|
|
85
|
+
formItems: [],
|
|
86
|
+
// 是否显示
|
|
87
|
+
visible: true
|
|
91
88
|
}
|
|
92
89
|
},
|
|
93
90
|
computed: {
|
|
94
|
-
// 过滤掉仅用于新增/修改场景的表单项
|
|
91
|
+
// 过滤掉仅用于新增/修改场景的表单项
|
|
95
92
|
realJsonData: function () {
|
|
96
|
-
return this.
|
|
93
|
+
return this.formItems.filter(item => !item.isOnlyAddOrEdit)
|
|
97
94
|
},
|
|
98
95
|
},
|
|
99
|
-
props: {
|
|
100
|
-
jsonData: {
|
|
101
|
-
type: Array,
|
|
102
|
-
default: () => {
|
|
103
|
-
return []
|
|
104
|
-
}
|
|
105
|
-
},
|
|
106
|
-
isExports: {
|
|
107
|
-
type: Boolean,
|
|
108
|
-
default: () => {
|
|
109
|
-
return true
|
|
110
|
-
}
|
|
111
|
-
},
|
|
112
|
-
isShow: {
|
|
113
|
-
type: Boolean,
|
|
114
|
-
default: () => {
|
|
115
|
-
return true
|
|
116
|
-
}
|
|
117
|
-
},
|
|
118
|
-
serviceName: {
|
|
119
|
-
type: String,
|
|
120
|
-
default: 'af-system'
|
|
121
|
-
}
|
|
122
|
-
},
|
|
123
|
-
mounted () {
|
|
124
|
-
this.formItemLoad()
|
|
125
|
-
this.getSelectsArray()
|
|
126
|
-
},
|
|
127
96
|
methods: {
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
const SelectsItem = selectSate.filter(item => {
|
|
136
|
-
if (item.groupIndex === 1) {
|
|
137
|
-
if (item.keyName.substring(0, 6) === 'logic@') {
|
|
138
|
-
// 请求logic
|
|
139
|
-
post('/api/' + this.serviceName + '/logic/' + item.keyName.substring(6), {}).then(res => {
|
|
140
|
-
this.SelectsArray[item.group][item.groupIndex] = res
|
|
141
|
-
this.SelectsArray = JSON.parse(JSON.stringify(this.SelectsArray))
|
|
142
|
-
})
|
|
143
|
-
} else {
|
|
144
|
-
this.SelectsArray[item.group][item.groupIndex] = JSON.parse(item.keyName)
|
|
145
|
-
this.SelectsArray = JSON.parse(JSON.stringify(this.SelectsArray))
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
return item.group === groupName
|
|
149
|
-
}
|
|
150
|
-
)
|
|
151
|
-
this.SelectsNumber[groupName] = SelectsItem.length ? SelectsItem.length : 0
|
|
152
|
-
}
|
|
153
|
-
)
|
|
154
|
-
this.loaded = true
|
|
155
|
-
},
|
|
156
|
-
selectsItemCheck (callback, groupName, index, value) {
|
|
157
|
-
const tem = { }
|
|
158
|
-
const group = this.realJsonData.filter(item => !item.isOnlyAddOrEdit && item.group && item.group === groupName)
|
|
159
|
-
// 获取当前下拉框子下拉框的数据
|
|
160
|
-
this.SelectsArray[groupName][index + 1] = this.SelectsArray[groupName][index].filter(item => item.value === value)[0].children
|
|
161
|
-
// 清空子下拉框的子们的数据
|
|
162
|
-
for (let i = index; i < this.SelectsNumber[groupName]; i++) {
|
|
163
|
-
tem[group[i].model] = undefined
|
|
164
|
-
}
|
|
165
|
-
this.form = Object.assign({}, this.form, tem)
|
|
166
|
-
// 清空子下拉框的子们的数据源
|
|
167
|
-
for (let i = index + 2; i <= this.SelectsNumber[groupName]; i++) {
|
|
168
|
-
this.SelectsArray[groupName][i] = []
|
|
169
|
-
}
|
|
170
|
-
callback(this.SelectsArray)
|
|
171
|
-
},
|
|
172
|
-
formItemLoad () {
|
|
97
|
+
init (params) {
|
|
98
|
+
const {
|
|
99
|
+
formItems, serviceName = 'af-system'
|
|
100
|
+
} = params
|
|
101
|
+
this.loaded = false
|
|
102
|
+
this.formItems = JSON.parse(JSON.stringify(formItems))
|
|
103
|
+
this.serviceName = serviceName
|
|
173
104
|
const formData = {}
|
|
174
105
|
for (let i = 0; i < this.realJsonData.length; i++) {
|
|
175
106
|
const item = this.realJsonData[i]
|
|
176
107
|
formData[item.model] = undefined
|
|
177
|
-
if (item.keys && item.model === 'rowIdValue' && item.keys.length > 0) {
|
|
178
|
-
// 处理综合筛选下拉框默认值情况
|
|
179
|
-
formData.rowIdName = Object.keys(item.keys[0])[0]
|
|
180
|
-
}
|
|
181
108
|
// 处理表单校验情况
|
|
182
109
|
if (item.rule) {
|
|
183
110
|
this.rules[item.model] = []
|
|
184
|
-
// const required = item.rule.required ? item.rule.required === true || item.rule.required === 'true' : false
|
|
185
|
-
// let trigger
|
|
186
|
-
// let message
|
|
187
|
-
// if (required) {
|
|
188
|
-
// switch (item.type) {
|
|
189
|
-
// case 'select':
|
|
190
|
-
// message = '请选择' + item.name
|
|
191
|
-
// trigger = 'change'
|
|
192
|
-
// break
|
|
193
|
-
// default:
|
|
194
|
-
// message = '请输入' + item.name
|
|
195
|
-
// trigger = 'blur'
|
|
196
|
-
// }
|
|
197
|
-
// this.rules[item.model].push({
|
|
198
|
-
// required: true,
|
|
199
|
-
// message: message,
|
|
200
|
-
// trigger: trigger
|
|
201
|
-
// })
|
|
202
|
-
// }
|
|
203
|
-
|
|
204
111
|
switch (item.rule.type) {
|
|
205
112
|
case 'number':
|
|
206
113
|
case 'integer':
|
|
@@ -238,15 +145,19 @@ export default {
|
|
|
238
145
|
}
|
|
239
146
|
}
|
|
240
147
|
this.form = formData
|
|
148
|
+
this.loaded = true
|
|
241
149
|
},
|
|
242
150
|
toggleAdvanced () {
|
|
243
151
|
this.advanced = !this.advanced
|
|
244
152
|
},
|
|
153
|
+
toggleVisible () {
|
|
154
|
+
this.visible = !this.visible
|
|
155
|
+
},
|
|
245
156
|
resetForm () {
|
|
246
|
-
this.$refs.
|
|
157
|
+
this.$refs.form.resetFields()
|
|
247
158
|
},
|
|
248
159
|
onSubmit () {
|
|
249
|
-
this.$refs.
|
|
160
|
+
this.$refs.form.validate(valid => {
|
|
250
161
|
for (const key of Object.keys(this.form)) {
|
|
251
162
|
if (this.form[key] === null || this.form[key] === '') {
|
|
252
163
|
this.form[key] = undefined
|