fb13622a
刘淇
养护计划列表 样式 差去一个卡片的头部
|
1
|
<template>
|
d433e7f6
刘淇
工单
|
2
3
|
<view class="page-container">
<view class="inspect-form-content commonPageLRpadding">
|
fb13622a
刘淇
养护计划列表 样式 差去一个卡片的头部
|
4
5
|
<up-form
label-position="left"
|
d433e7f6
刘淇
工单
|
6
7
8
|
:model="inspectForm"
ref="inspectFormRef"
labelWidth="140rpx"
|
fb13622a
刘淇
养护计划列表 样式 差去一个卡片的头部
|
9
|
>
|
fa775c6b
刘淇
养护计划调整
|
10
|
<!-- 1. 养护描述(文本域) -->
|
fb13622a
刘淇
养护计划列表 样式 差去一个卡片的头部
|
11
|
<up-form-item
|
fa775c6b
刘淇
养护计划调整
|
12
|
prop="remark"
|
d433e7f6
刘淇
工单
|
13
|
class="form-item"
|
fb13622a
刘淇
养护计划列表 样式 差去一个卡片的头部
|
14
|
>
|
d433e7f6
刘淇
工单
|
15
|
<up-textarea
|
ff65dc6c
刘淇
快速工单 样式优化
|
16
17
|
v-model.trim="inspectForm.remark"
placeholder="请输入养护描述"
|
d433e7f6
刘淇
工单
|
18
19
20
|
maxlength="200"
count
></up-textarea>
|
fb13622a
刘淇
养护计划列表 样式 差去一个卡片的头部
|
21
22
|
</up-form-item>
|
d433e7f6
刘淇
工单
|
23
|
<!-- 2. 上传图片 -->
|
fb13622a
刘淇
养护计划列表 样式 差去一个卡片的头部
|
24
|
<up-form-item
|
d433e7f6
刘淇
工单
|
25
26
|
label="上传图片"
prop="images"
|
fb13622a
刘淇
养护计划列表 样式 差去一个卡片的头部
|
27
|
required
|
ff65dc6c
刘淇
快速工单 样式优化
|
28
|
|
d433e7f6
刘淇
工单
|
29
|
class="form-item"
|
fb13622a
刘淇
养护计划列表 样式 差去一个卡片的头部
|
30
|
>
|
fb13622a
刘淇
养护计划列表 样式 差去一个卡片的头部
|
31
|
<up-upload
|
d433e7f6
刘淇
工单
|
32
33
34
35
|
:file-list="imagesList"
@after-read="(event) => uploadImgs(event)"
@delete="(event) => deleteImg(event)"
@on-exceed="handleExceed"
|
fb13622a
刘淇
养护计划列表 样式 差去一个卡片的头部
|
36
|
multiple
|
d433e7f6
刘淇
工单
|
37
38
39
40
|
:max-count="3"
upload-text="选择图片"
del-color="#ff4d4f"
class="upload-wrap"
|
fb13622a
刘淇
养护计划列表 样式 差去一个卡片的头部
|
41
42
43
|
></up-upload>
</up-form-item>
|
ff65dc6c
刘淇
快速工单 样式优化
|
44
45
46
47
|
<!-- <!– 3. 完成进度(滑块) –>-->
<!-- <up-form-item-->
<!-- label="完成进度"-->
<!-- prop="progress"-->
|
b0e2f1a9
刘淇
快速工单和巡查计划样式优化
|
48
|
|
ff65dc6c
刘淇
快速工单 样式优化
|
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
<!-- class="form-item"-->
<!-- >-->
<!-- <view class="progress-wrap">-->
<!-- <up-slider-->
<!-- v-model="inspectForm.progress"-->
<!-- :min="initProgress"-->
<!-- :max="100"-->
<!-- active-color="#1989fa"-->
<!-- inactive-color="#e5e5e5"-->
<!-- block-size="24"-->
<!-- :showValue="true"-->
<!-- class="progress-slider"-->
<!-- @changing="handleProgressChange"-->
<!-- ></up-slider>-->
<!-- </view>-->
<!-- </up-form-item>-->
|
fb13622a
刘淇
养护计划列表 样式 差去一个卡片的头部
|
65
66
67
68
69
70
71
|
</up-form>
</view>
<!-- 底部提交按钮 -->
<view class="fixed-bottom-btn-wrap">
<up-button
type="primary"
|
d433e7f6
刘淇
工单
|
72
73
74
|
text="提交"
@click="submitInspect"
:style="{ width: '100%', height: '88rpx', fontSize: '32rpx', borderRadius: 0 }"
|
fb13622a
刘淇
养护计划列表 样式 差去一个卡片的头部
|
75
76
|
></up-button>
</view>
|
fb13622a
刘淇
养护计划列表 样式 差去一个卡片的头部
|
77
78
79
80
|
</view>
</template>
<script setup lang="ts">
|
d433e7f6
刘淇
工单
|
81
|
import { ref } from 'vue'
|
fb13622a
刘淇
养护计划列表 样式 差去一个卡片的头部
|
82
|
import type { UniFormRef } from '@/uni_modules/uview-plus/types'
|
d433e7f6
刘淇
工单
|
83
84
|
const inspectFormRef = ref<UniFormRef>(null)
</script>
|
7b1f488f
刘淇
封装下图片上传
|
85
|
|
d433e7f6
刘淇
工单
|
86
87
88
89
90
91
92
93
94
95
96
|
<script lang="ts">
import { uploadImages } from '@/common/utils/upload'
import { maintainCreate } from "@/api/maintain-manage/maintain-manage"
export default {
data() {
return {
imagesList: [],
initProgress: 0,
inspectForm: {
remark: '',
|
ff65dc6c
刘淇
快速工单 样式优化
|
97
|
// progress: 0
|
d433e7f6
刘淇
工单
|
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
},
paramsOptins: {},
inspectFormRules: {
images: [
{
required: true,
message: '请上传图片',
trigger: 'change',
validator: (rule, value, callback) => {
const hasSuccessImg = this.imagesList.some(item => item.status === 'success')
const imgCount = this.imagesList.filter(item => item.status === 'success').length
if (!hasSuccessImg || imgCount < 1) {
callback(new Error('最少需要上传1张图片'))
} else if (imgCount > 3) {
callback(new Error('最多只能上传3张图片'))
} else {
callback()
}
}
}
],
|
2f1e3176
刘淇
图片参数处理
|
119
|
|
d433e7f6
刘淇
工单
|
120
121
122
123
124
125
|
}
}
},
onLoad(option) {
console.log('页面参数:', option)
this.paramsOptins = option
|
2f1e3176
刘淇
图片参数处理
|
126
|
|
fa775c6b
刘淇
养护计划调整
|
127
|
|
d433e7f6
刘淇
工单
|
128
129
130
131
132
133
134
135
136
|
},
onReady() {
this.$refs.inspectFormRef.setRules(this.inspectFormRules)
console.log('巡查表单规则初始化完成')
},
methods: {
/**
* 进度滑块变化处理 - 核心优化:实时触发校验 + 状态更新
*/
|
2f1e3176
刘淇
图片参数处理
|
137
|
|
7b1f488f
刘淇
封装下图片上传
|
138
|
|
d433e7f6
刘淇
工单
|
139
140
141
142
143
144
145
146
147
|
/**
* 删除图片
*/
deleteImg(event) {
console.log('删除图片事件:', event)
this.imagesList.splice(event.index, 1)
this.$refs.inspectFormRef.validateField('images')
uni.showToast({ title: '图片删除成功', icon: 'success' })
},
|
fb13622a
刘淇
养护计划列表 样式 差去一个卡片的头部
|
148
|
|
d433e7f6
刘淇
工单
|
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
|
/**
* 上传图片
*/
async uploadImgs(event) {
console.log('上传图片事件:', event)
const fileList = Array.isArray(event.file) ? event.file : [event.file]
const targetImgList = this.imagesList
const filePaths = fileList.map(item => item.url)
const tempItems = fileList.map(item => ({
...item,
status: 'uploading',
message: '上传中'
}))
const startIndex = targetImgList.length
targetImgList.push(...tempItems)
|
fb13622a
刘淇
养护计划列表 样式 差去一个卡片的头部
|
164
165
|
try {
|
d433e7f6
刘淇
工单
|
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
|
const uploadResultUrls = await uploadImages({
filePaths: filePaths,
ignoreError: true
})
console.log('上传成功的URL列表:', uploadResultUrls)
uploadResultUrls.forEach((url, index) => {
if (targetImgList[startIndex + index]) {
targetImgList.splice(startIndex + index, 1, {
...fileList[index],
status: 'success',
message: '',
url: url
})
}
|
fb13622a
刘淇
养护计划列表 样式 差去一个卡片的头部
|
181
|
})
|
fb13622a
刘淇
养护计划列表 样式 差去一个卡片的头部
|
182
|
|
d433e7f6
刘淇
工单
|
183
184
185
186
187
188
189
190
191
192
193
194
|
if (uploadResultUrls.length < fileList.length) {
const failCount = fileList.length - uploadResultUrls.length
for (let i = uploadResultUrls.length; i < fileList.length; i++) {
if (targetImgList[startIndex + i]) {
targetImgList.splice(startIndex + i, 1, {
...fileList[i],
status: 'failed',
message: '上传失败'
})
}
}
uni.showToast({ title: `成功上传${uploadResultUrls.length}张,失败${failCount}张`, icon: 'none' })
|
fb13622a
刘淇
养护计划列表 样式 差去一个卡片的头部
|
195
|
} else {
|
d433e7f6
刘淇
工单
|
196
|
uni.showToast({ title: `成功上传${fileList.length}张图片`, icon: 'success' })
|
fb13622a
刘淇
养护计划列表 样式 差去一个卡片的头部
|
197
|
}
|
d433e7f6
刘淇
工单
|
198
199
|
this.$refs.inspectFormRef.validateField('images')
|
fb13622a
刘淇
养护计划列表 样式 差去一个卡片的头部
|
200
|
} catch (err) {
|
d433e7f6
刘淇
工单
|
201
202
203
204
205
206
207
208
209
210
211
212
|
console.error('图片上传失败:', err)
for (let i = 0; i < fileList.length; i++) {
if (targetImgList[startIndex + i]) {
targetImgList.splice(startIndex + i, 1, {
...fileList[i],
status: 'failed',
message: '上传失败'
})
}
}
uni.showToast({ title: '图片上传失败,请重试', icon: 'none' })
this.$refs.inspectFormRef.validateField('images')
|
fb13622a
刘淇
养护计划列表 样式 差去一个卡片的头部
|
213
214
|
}
},
|
fb13622a
刘淇
养护计划列表 样式 差去一个卡片的头部
|
215
|
|
d433e7f6
刘淇
工单
|
216
217
218
219
220
221
|
/**
* 处理图片超出数量限制
*/
handleExceed() {
uni.showToast({ title: '最多只能上传3张图片', icon: 'none' })
},
|
fb13622a
刘淇
养护计划列表 样式 差去一个卡片的头部
|
222
|
|
d433e7f6
刘淇
工单
|
223
224
225
226
227
228
|
/**
* 提取图片URL数组
*/
getImgUrlList(imgList) {
return imgList.filter(item => item.status === 'success').map(item => item.url)
},
|
b0e2f1a9
刘淇
快速工单和巡查计划样式优化
|
229
|
|
d433e7f6
刘淇
工单
|
230
231
232
233
|
/**
* 提交巡查表单
*/
async submitInspect() {
|
ff65dc6c
刘淇
快速工单 样式优化
|
234
|
// console.log('当前完成进度:', this.inspectForm.progress)
|
d433e7f6
刘淇
工单
|
235
236
237
238
239
|
try {
await this.$refs.inspectFormRef.validate()
console.log('图片列表:', this.imagesList)
const submitData = {
|
d433e7f6
刘淇
工单
|
240
241
242
243
|
"planNo": this.paramsOptins.planNo,
"imgHost": "1",
"beginImg": this.getImgUrlList(this.imagesList),
"commonUserList": [],
|
ff65dc6c
刘淇
快速工单 样式优化
|
244
|
"remark": this.inspectForm.remark.trim()
|
d433e7f6
刘淇
工单
|
245
|
}
|
b0e2f1a9
刘淇
快速工单和巡查计划样式优化
|
246
|
|
d433e7f6
刘淇
工单
|
247
248
249
|
uni.showLoading({ title: '提交中...' })
await maintainCreate(submitData)
uni.hideLoading()
|
fb13622a
刘淇
养护计划列表 样式 差去一个卡片的头部
|
250
|
|
d433e7f6
刘淇
工单
|
251
252
253
254
255
|
uni.showToast({
title: '提交成功',
icon: 'success',
duration: 1000
})
|
7b1f488f
刘淇
封装下图片上传
|
256
|
|
d433e7f6
刘淇
工单
|
257
|
setTimeout(() => {
|
4fa8cf12
刘淇
巡查员结束工单
|
258
|
uni.reLaunch({
|
d433e7f6
刘淇
工单
|
259
260
261
|
url: '/pages-sub/daily/maintain-manage/index'
})
}, 1000)
|
7b1f488f
刘淇
封装下图片上传
|
262
|
|
d433e7f6
刘淇
工单
|
263
264
265
266
267
268
269
270
271
272
273
|
} catch (error) {
uni.hideLoading()
if (!Array.isArray(error)) {
console.error('巡查表单提交失败:', error)
uni.showToast({
title: '提交失败,请重试',
icon: 'none',
duration: 2000
})
}
}
|
fb13622a
刘淇
养护计划列表 样式 差去一个卡片的头部
|
274
275
276
277
278
279
|
}
}
}
</script>
<style lang="scss" scoped>
|
d433e7f6
刘淇
工单
|
280
|
.inspect-form-content {
|
fb13622a
刘淇
养护计划列表 样式 差去一个卡片的头部
|
281
|
background: #fff;
|
d433e7f6
刘淇
工单
|
282
283
|
padding: 20rpx;
margin-bottom: 20rpx;
|
fb13622a
刘淇
养护计划列表 样式 差去一个卡片的头部
|
284
285
|
}
|
d433e7f6
刘淇
工单
|
286
287
|
.progress-wrap {
width: 83%;
|
fb13622a
刘淇
养护计划列表 样式 差去一个卡片的头部
|
288
|
}
|
d433e7f6
刘淇
工单
|
289
|
</style>
|