|
@@ -5,32 +5,31 @@
|
5
|
5
|
<template v-for="(item, index) of baseFormData" :key="index">
|
6
|
6
|
<!-- 下拉 -->
|
7
|
7
|
<uni-forms-item v-if="item.type === '1'" class="formItem" :label="item.name" :required="item.required" :name="item.key">
|
8
|
|
- <uni-data-picker :placeholder="'请选择' + item.name" :popup-title="'请选择' + item.name" :localdata="item.list" v-model="formValues[item.key]">
|
|
8
|
+ <uni-data-picker :placeholder="'请选择' + item.name" :popup-title="'请选择' + item.name" :localdata="item.list" v-model="formValues[item.key]" @change="changeForm()">
|
9
|
9
|
</uni-data-picker>
|
10
|
10
|
</uni-forms-item>
|
11
|
11
|
<!-- 单选 -->
|
12
|
12
|
<uni-forms-item v-if="item.type === '2'" class="formItem" :label="item.name" :required="item.required" :name="item.key">
|
13
|
|
- <uni-data-checkbox v-model="formValues[item.key]" :localdata="item.list" />
|
|
13
|
+ <uni-data-checkbox v-model="formValues[item.key]" @change="changeForm()" :localdata="item.list" />
|
14
|
14
|
</uni-forms-item>
|
15
|
15
|
<!-- 多选 -->
|
16
|
16
|
<uni-forms-item v-if="item.type === '3'" class="formItem" :label="item.name" :required="item.required" :name="item.key">
|
17
|
|
- <uni-data-checkbox v-model="formValues[item.key]" multiple :localdata="item.list" />
|
|
17
|
+ <uni-data-checkbox v-model="formValues[item.key]" @change="changeForm()" multiple :localdata="item.list" />
|
18
|
18
|
</uni-forms-item>
|
19
|
19
|
<!-- 数字 -->
|
20
|
20
|
<uni-forms-item v-if="item.type === '4'" class="formItem" :label="item.name" :required="item.required" :name="item.key">
|
21
|
|
- <uni-number-box v-model="formValues[item.key]" :placeholder="'请输入' + item.name"></uni-number-box>
|
|
21
|
+ <uni-number-box v-model="formValues[item.key]" @change="changeForm()" :min="-9999" :max="9999" :placeholder="'请输入' + item.name"></uni-number-box>
|
22
|
22
|
</uni-forms-item>
|
23
|
23
|
<!-- 单行 -->
|
24
|
|
- <uni-forms-item v-if="item.type === '5'" class="formItem" :label="item.name" :required="item.required" :name="item.key">
|
|
24
|
+ <uni-forms-item v-if="item.type === '5' && item.isException" class="formItem" :label="item.name" :required="item.required" :name="item.key">
|
25
|
25
|
<uni-easyinput v-model="formValues[item.key]" :placeholder="'请输入' + item.name" />
|
26
|
26
|
</uni-forms-item>
|
27
|
27
|
<!-- 多行 -->
|
28
|
|
- <uni-forms-item v-if="item.type === '6'" class="formItem" :label="item.name" :required="item.required" :name="item.key">
|
|
28
|
+ <uni-forms-item v-if="item.type === '6' && item.isException" class="formItem" :label="item.name" :required="item.required" :name="item.key">
|
29
|
29
|
<uni-easyinput type="textarea" v-model="formValues[item.key]" :placeholder="'请输入' + item.name" />
|
30
|
30
|
</uni-forms-item>
|
31
|
|
-
|
32
|
31
|
<!-- 图片上传 -->
|
33
|
|
- <uni-forms-item v-if="item.type === '7'" class="formItem" :label="item.name" :required="item.required" :name="item.key">
|
|
32
|
+ <uni-forms-item v-if="item.type === '7' && item.isException" class="formItem" :label="item.name" :required="item.required" :name="item.key">
|
34
|
33
|
<DsFilePicker v-model="formValues[item.key]"></DsFilePicker>
|
35
|
34
|
</uni-forms-item>
|
36
|
35
|
<!-- 分割线 -->
|
|
@@ -70,6 +69,9 @@ import { forIn } from 'lodash-es';
|
70
|
69
|
// 主题颜色
|
71
|
70
|
const primaryColor = ref(defaultColor)
|
72
|
71
|
|
|
72
|
+ // 所有页码数据
|
|
73
|
+ const formPageList = reactive([]);
|
|
74
|
+
|
73
|
75
|
// 表单
|
74
|
76
|
const baseForm = ref()
|
75
|
77
|
|
|
@@ -103,6 +105,11 @@ import { forIn } from 'lodash-es';
|
103
|
105
|
// { type: 7, name: '', value: [], list: [], required: false, checkType: 0, valueMin: '', valueMax: '', },
|
104
|
106
|
])
|
105
|
107
|
|
|
108
|
+ // 修改
|
|
109
|
+ function changeForm(){
|
|
110
|
+ handleData(true);
|
|
111
|
+ }
|
|
112
|
+
|
106
|
113
|
// 保存
|
107
|
114
|
function submit(){
|
108
|
115
|
baseForm.value.validate().then(res => {
|
|
@@ -113,14 +120,15 @@ import { forIn } from 'lodash-es';
|
113
|
120
|
});
|
114
|
121
|
console.log(formValues);
|
115
|
122
|
let postData = {
|
|
123
|
+ account: loginUserStore.loginUser.user.account,
|
116
|
124
|
valuesList: [],
|
117
|
125
|
};
|
118
|
126
|
for(let key in formValues){
|
119
|
127
|
let name = baseFormData.find(v => v.key === key).name;
|
120
|
128
|
let itemId = baseFormData.find(v => v.key === key).id;
|
121
|
|
- let formPageList = dataInfo.inspectionFormDTO?.formPageList || [];
|
122
|
|
- formPageList = formPageList.map(v => v.formItemList).flat();
|
123
|
|
- let formItem = formPageList.find(v => v.id === itemId);
|
|
129
|
+ let _formPageList = dataInfo.inspectionFormDTO?.formPageList || [];
|
|
130
|
+ _formPageList = _formPageList.map(v => v.formItemList).flat();
|
|
131
|
+ let formItem = _formPageList.find(v => v.id === itemId);
|
124
|
132
|
postData.valuesList.push({
|
125
|
133
|
taskId: inspectionExecuteId.value,
|
126
|
134
|
nodeId: dataInfo.id,
|
|
@@ -155,7 +163,7 @@ import { forIn } from 'lodash-es';
|
155
|
163
|
}
|
156
|
164
|
|
157
|
165
|
// 处理数据
|
158
|
|
- function handleData(formPageList){
|
|
166
|
+ function handleData(isException = false){
|
159
|
167
|
// 目前只取第一页
|
160
|
168
|
let firstPage = formPageList[0]?.formItemList || [];
|
161
|
169
|
|
|
@@ -164,6 +172,8 @@ import { forIn } from 'lodash-es';
|
164
|
172
|
firstPage = firstPage.map((v, i) => {
|
165
|
173
|
let value = '';
|
166
|
174
|
v.formItemConfigList = v.formItemConfigList || [];
|
|
175
|
+
|
|
176
|
+ // value
|
167
|
177
|
if(v.type.value === '3'){
|
168
|
178
|
// 多选
|
169
|
179
|
value = v.formItemConfigList.filter(v => v.checkDefault === 1).map(v => v.id);
|
|
@@ -186,20 +196,79 @@ import { forIn } from 'lodash-es';
|
186
|
196
|
key: `field${i}`,
|
187
|
197
|
type: v.type.value,
|
188
|
198
|
name: v.name,
|
189
|
|
- value,
|
190
|
|
- list: v.formItemConfigList ? v.formItemConfigList.map(v => ({text: v.name, value: v.id})) : [],
|
|
199
|
+ value: isException ? formValues[`field${i}`] : value,
|
|
200
|
+ list: v.formItemConfigList ? v.formItemConfigList.map(v => ({text: v.name, value: v.id, checkException: v.checkException, uncheckException: v.uncheckException})) : [],
|
191
|
201
|
required: v.required === 1,
|
192
|
202
|
checkType: v.checkType,
|
|
203
|
+ showError: v.showError,
|
193
|
204
|
valueMin: v.checkType === 2 ? v.valueLow : ( v.checkType === 1 ? (v.valuex - v.valueGap) : undefined),
|
194
|
205
|
valueMax: v.checkType === 2 ? v.valueUp : ( v.checkType === 1 ? (v.valuex + v.valueGap) : undefined),
|
195
|
206
|
}
|
196
|
|
- }).filter(v => v.type !== '7');
|
|
207
|
+ });
|
|
208
|
+
|
|
209
|
+ let firstPageBottom = firstPage.filter(v => v.type === '5' || v.type === '6');
|
|
210
|
+ firstPage = firstPage.filter(v => v.type !== '5' && v.type !== '6' && v.type !== '7');
|
|
211
|
+
|
|
212
|
+ // 其他项
|
|
213
|
+ if(isException){
|
|
214
|
+ firstPage.forEach(v => {
|
|
215
|
+ // 下拉,单选
|
|
216
|
+ if(v.type === '1' || v.type === '2'){
|
|
217
|
+ v.isException = v.list.find(vv => formValues[v.key] === vv.value).checkException === 1;
|
|
218
|
+ } else if(v.type === '3'){
|
|
219
|
+ // 多选
|
|
220
|
+ v.isException = v.list.some(vv => {
|
|
221
|
+ if(formValues[v.key].includes(vv.value)){
|
|
222
|
+ return vv.checkException === 1;
|
|
223
|
+ }else{
|
|
224
|
+ return false;
|
|
225
|
+ }
|
|
226
|
+ })
|
|
227
|
+ } else if(v.type === '4'){
|
|
228
|
+ v.isException = (v.value < v.valueMin) || (v.value > v.valueMax);
|
|
229
|
+ }
|
|
230
|
+ })
|
|
231
|
+ }else{
|
|
232
|
+ firstPage.forEach(v => {
|
|
233
|
+ if(v.type === '1' || v.type === '2'){
|
|
234
|
+ // 下拉,单选
|
|
235
|
+ v.isException = v.list.find(vv => v.value === vv.value).checkException === 1;
|
|
236
|
+ } else if(v.type === '3'){
|
|
237
|
+ // 多选
|
|
238
|
+ v.isException = v.list.some(vv => {
|
|
239
|
+ if(v.value.includes(vv.value)){
|
|
240
|
+ return vv.checkException === 1;
|
|
241
|
+ }else{
|
|
242
|
+ return false;
|
|
243
|
+ }
|
|
244
|
+ })
|
|
245
|
+ } else if(v.type === '4'){
|
|
246
|
+ // 数值
|
|
247
|
+ v.isException = (formValues[v.key] < v.valueMin) || (formValues[v.key] > v.valueMax);
|
|
248
|
+ }
|
|
249
|
+ })
|
|
250
|
+ }
|
|
251
|
+
|
|
252
|
+ // 单行|多行|图片上传
|
|
253
|
+ let someIsException = firstPage.filter(v => v.type !== '8').some(v => v.isException);
|
|
254
|
+ console.log('someIsException=>', someIsException)
|
|
255
|
+ firstPageBottom.forEach(v => {
|
|
256
|
+ console.log('v.showError=>', v.showError)
|
|
257
|
+ v.isException = (v.showError === 1 && someIsException) || v.showError === 0;
|
|
258
|
+ })
|
|
259
|
+
|
|
260
|
+ firstPage = firstPage.concat(firstPageBottom);
|
|
261
|
+ console.log('firstPage=>', firstPage);
|
|
262
|
+
|
197
|
263
|
Object.assign(baseFormData, firstPage);
|
198
|
264
|
console.log('baseFormData=>', baseFormData);
|
|
265
|
+
|
199
|
266
|
Object.assign(formValues, fromPairs(firstPage.filter(v => v.type !== '8').map(v => ([v.key, v.value]))));
|
200
|
267
|
console.log('formValues=>', formValues);
|
|
268
|
+
|
201
|
269
|
let rulesObj = keyBy(firstPage.filter(v => v.type !== '8'), 'key');
|
202
|
270
|
console.log(rulesObj)
|
|
271
|
+
|
203
|
272
|
for(let key in rulesObj){
|
204
|
273
|
rulesObj[key] = {
|
205
|
274
|
rules: [
|
|
@@ -216,8 +285,8 @@ import { forIn } from 'lodash-es';
|
216
|
285
|
// 巡检项
|
217
|
286
|
if(inspectionValueStore.inspectionValue.data){
|
218
|
287
|
Object.assign(dataInfo, inspectionValueStore.inspectionValue.data);
|
219
|
|
- let formPageList = dataInfo.inspectionFormDTO?.formPageList || [];
|
220
|
|
- handleData(formPageList)
|
|
288
|
+ Object.assign(formPageList, dataInfo.inspectionFormDTO?.formPageList || []);
|
|
289
|
+ handleData()
|
221
|
290
|
}
|
222
|
291
|
})
|
223
|
292
|
</script>
|