9b30ab8c
刘淇
新增快速工单,原版
|
1
|
<template>
|
c7df828a
刘淇
快速工单 样式优化
|
2
|
<view class="page-container">
|
8ee2a923
刘淇
新增快速工单,原版
|
3
|
<!-- 核心:将所有 up-form-item 包裹在同一个 up-form 内 -->
|
0d1a4181
刘淇
个人中心
|
4
|
<view class="work-order-form-content commonPageLRpadding">
|
3cbb8754
刘淇
动态字典
|
5
6
7
8
9
|
<up-form label-position="left" :model="workOrderForm" ref="workOrderFormRef" labelWidth="160rpx">
<up-form-item label="业务线" prop="busiLine" border-bottom required>
<up-radio-group v-model="busiLineDisplay" placement="row" @change="handleBusiLineChange">
<up-radio v-for="item in busiLineOptions" :key="item.value" :label="item.label" :name="item.label"
> </up-radio>
|
3d474e84
刘淇
快速工单 加上业务线
|
10
|
</up-radio-group>
|
3d474e84
刘淇
快速工单 加上业务线
|
11
|
</up-form-item>
|
9b30ab8c
刘淇
新增快速工单,原版
|
12
|
<!-- 1. 工单位置(地图选择) -->
|
3cbb8754
刘淇
动态字典
|
13
14
15
16
|
<up-form-item label="工单位置" prop="workLocation" border-bottom required
@click="chooseWorkLocation(); hideKeyboard()">
<up-input v-model="workOrderForm.workLocation" border="none" readonly suffix-icon="map-fill"
placeholder="点击选择工单位置"></up-input>
|
9b30ab8c
刘淇
新增快速工单,原版
|
17
|
</up-form-item>
|
9b30ab8c
刘淇
新增快速工单,原版
|
18
|
<!-- 2. 道路名称(下拉框:位置选择后才可点击) -->
|
3cbb8754
刘淇
动态字典
|
19
20
21
22
|
<up-form-item label="道路名称" prop="roadName" border-bottom required
@click="workOrderForm.workLocation ? (showRoadName = true, hideKeyboard()) : uni.showToast({ title: '请先选择工单位置', icon: 'none' })">
<up-input v-model="workOrderForm.roadName" readonly disabled-color="#ffffff" placeholder="请先选择工单位置"
border="none"></up-input>
|
9b30ab8c
刘淇
新增快速工单,原版
|
23
|
<template #right>
|
3cbb8754
刘淇
动态字典
|
24
|
<up-icon name="arrow-right" size="16"></up-icon>
|
9b30ab8c
刘淇
新增快速工单,原版
|
25
26
|
</template>
</up-form-item>
|
c64da17b
刘淇
新的业务线
|
27
|
<!-- 3. 问题类型(下拉框) -->
|
3cbb8754
刘淇
动态字典
|
28
29
30
31
|
<up-form-item label="问题类型" prop="orderName" border-bottom required
@click="showOrderName = true; hideKeyboard()">
<up-input v-model="workOrderForm.orderName" disabled disabled-color="#ffffff" placeholder="请选择问题类型"
border="none"></up-input>
|
9b30ab8c
刘淇
新增快速工单,原版
|
32
33
34
35
|
<template #right>
<up-icon name="arrow-right" size="16"></up-icon>
</template>
</up-form-item>
|
9b30ab8c
刘淇
新增快速工单,原版
|
36
|
<!-- 4. 情况描述(文本域) -->
|
3cbb8754
刘淇
动态字典
|
37
38
39
|
<up-form-item label="情况描述" prop="problemDesc" required>
<up-textarea placeholder="请输入情况描述(最多200字)" v-model.trim="workOrderForm.problemDesc" count maxlength="200"
rows="4" @blur="() => $refs.workOrderFormRef.validateField('problemDesc')"></up-textarea>
|
9b30ab8c
刘淇
新增快速工单,原版
|
40
|
</up-form-item>
|
0d1a4181
刘淇
个人中心
|
41
|
<!-- 问题照片 -->
|
8ee2a923
刘淇
新增快速工单,原版
|
42
|
<up-form-item label="问题照片" prop="problemImgs" required>
|
3cbb8754
刘淇
动态字典
|
43
44
45
|
<up-upload :file-list="problemImgsList" @after-read="(event) => uploadImgs(event, 'problemImgsList')"
@delete="(event) => deleteImg(event, 'problemImgsList')" multiple width="70" height="70" :max-count="3"
upload-text="选择问题照片"></up-upload>
|
8ee2a923
刘淇
新增快速工单,原版
|
46
|
</up-form-item>
|
0d1a4181
刘淇
个人中心
|
47
48
|
<!-- 完成照片 -->
<up-form-item label="完成照片" prop="completeImgs" required class="mt-20">
|
3cbb8754
刘淇
动态字典
|
49
50
51
|
<up-upload :file-list="completeImgsList" @after-read="(event) => uploadImgs(event, 'completeImgsList')"
@delete="(event) => deleteImg(event, 'completeImgsList')" multiple width="70" height="70" :max-count="3"
:sizeType="['compressed']" upload-text="选择完成照片"></up-upload>
|
8ee2a923
刘淇
新增快速工单,原版
|
52
|
</up-form-item>
|
0d1a4181
刘淇
个人中心
|
53
|
<!-- 处理结果(不必填) -->
|
5cb33b90
刘淇
完成巡查计划 详情
|
54
|
<up-form-item label="处理结果" prop="handleResult" class="mt-20">
|
3cbb8754
刘淇
动态字典
|
55
56
|
<up-textarea placeholder="请输入处理结果描述(最多200字,选填)" v-model.trim="workOrderForm.handleResult" count
maxlength="200" rows="4" @blur="() => $refs.workOrderFormRef.validateField('handleResult')"></up-textarea>
|
8ee2a923
刘淇
新增快速工单,原版
|
57
|
</up-form-item>
|
0d1a4181
刘淇
个人中心
|
58
59
60
|
</up-form>
</view>
<!-- 底部提交按钮(移除loading和disabled属性) -->
|
9b30ab8c
刘淇
新增快速工单,原版
|
61
|
<view class="fixed-bottom-btn-wrap">
|
3cbb8754
刘淇
动态字典
|
62
|
<up-button type="primary" size="large" text="提交工单" @click="submitWorkOrder"></up-button>
|
9b30ab8c
刘淇
新增快速工单,原版
|
63
|
</view>
|
8ee2a923
刘淇
新增快速工单,原版
|
64
|
<!-- 道路名称下拉弹窗 -->
|
3cbb8754
刘淇
动态字典
|
65
66
|
<up-action-sheet :show="showRoadName" :actions="roadNameList" title="请选择道路名称" @close="showRoadName = false"
@select="handleRoadNameSelect"></up-action-sheet>
|
c64da17b
刘淇
新的业务线
|
67
|
<!-- 问题类型下拉弹窗 -->
|
3cbb8754
刘淇
动态字典
|
68
69
|
<up-action-sheet :show="showOrderName" :actions="orderNameList" title="请选择问题类型" @close="showOrderName = false"
@select="handleOrderNameSelect"></up-action-sheet>
|
9b30ab8c
刘淇
新增快速工单,原版
|
70
71
|
</view>
</template>
|
0d1a4181
刘淇
个人中心
|
72
|
<script lang="ts">
|
3d474e84
刘淇
快速工单 加上业务线
|
73
74
75
76
|
import { getRoadListByLatLng } from '@/api/common'
import { uploadImages } from '@/common/utils/upload';
import { createQuick } from '@/api/quick-order/quick-order'
import { useUserStore } from '@/pinia/user';
|
0d1a4181
刘淇
个人中心
|
77
|
export default {
|
3cbb8754
刘淇
动态字典
|
78
79
80
81
82
83
|
computed: {
busiLineOptions() {
const userStore = useUserStore();
return userStore.dictList || []
}
},
|
0d1a4181
刘淇
个人中心
|
84
85
|
data() {
return {
|
3cbb8754
刘淇
动态字典
|
86
|
busiLineDisplay: '', // 单选框展示用,存中文label
|
0d1a4181
刘淇
个人中心
|
87
88
89
90
91
92
93
94
95
|
// 问题照片列表
problemImgsList: [],
// 完成照片列表
completeImgsList: [],
// 弹窗显隐控制
showRoadName: false,
showOrderName: false,
// 下拉列表数据
roadNameList: [],
|
3d474e84
刘淇
快速工单 加上业务线
|
96
|
orderNameList: [],
|
0d1a4181
刘淇
个人中心
|
97
98
|
// 工单表单数据
workOrderForm: {
|
3cbb8754
刘淇
动态字典
|
99
|
busiLine: '', // 业务线value yl / sz / wy
|
0d1a4181
刘淇
个人中心
|
100
101
102
|
roadId: 0, // 道路ID
roadName: '', // 道路名称
workLocation: '', // 工单位置
|
c64da17b
刘淇
新的业务线
|
103
|
orderName: '', // 问题类型
|
0d1a4181
刘淇
个人中心
|
104
|
problemDesc: '', // 情况描述
|
3d474e84
刘淇
快速工单 加上业务线
|
105
|
handleResult: '', // 处理结果描述(不必填)
|
0d1a4181
刘淇
个人中心
|
106
107
108
109
110
|
lat: 0, // 纬度
lon: 0 // 经度
},
// 表单校验规则
workOrderFormRules: {
|
3cbb8754
刘淇
动态字典
|
111
|
busiLine: [
|
3d474e84
刘淇
快速工单 加上业务线
|
112
113
|
{ type: 'string', required: true, message: '请选择业务线', trigger: ['change', 'blur'] }
],
|
0d1a4181
刘淇
个人中心
|
114
|
workLocation: [
|
3d474e84
刘淇
快速工单 加上业务线
|
115
|
{ type: 'string', required: true, message: '请选择工单位置', trigger: ['change', 'blur'] }
|
0d1a4181
刘淇
个人中心
|
116
117
|
],
roadName: [
|
3d474e84
刘淇
快速工单 加上业务线
|
118
|
{ type: 'string', required: true, message: '请选择道路名称', trigger: ['change', 'blur'] }
|
0d1a4181
刘淇
个人中心
|
119
120
|
],
orderName: [
|
c64da17b
刘淇
新的业务线
|
121
|
{ type: 'string', required: true, message: '请选择问题类型', trigger: ['change', 'blur'] }
|
0d1a4181
刘淇
个人中心
|
122
123
|
],
problemDesc: [
|
3d474e84
刘淇
快速工单 加上业务线
|
124
125
|
{ type: 'string', required: true, message: '请输入情况描述', trigger: ['change', 'blur'] },
{ type: 'string', min: 3, max: 200, message: '情况描述需3-200字', trigger: ['change', 'blur'] }
|
0d1a4181
刘淇
个人中心
|
126
127
128
129
130
131
132
|
],
problemImgs: [
{
required: true,
message: '请上传问题照片',
trigger: 'change',
validator: (rule, value, callback) => {
|
0d1a4181
刘淇
个人中心
|
133
134
135
136
137
138
139
140
141
142
143
|
const hasSuccessImg = this.problemImgsList.some(item => item.status === 'success')
hasSuccessImg ? callback() : callback(new Error('请上传至少1张问题照片'))
}
}
],
completeImgs: [
{
required: true,
message: '请上传完成照片',
trigger: 'change',
validator: (rule, value, callback) => {
|
0d1a4181
刘淇
个人中心
|
144
145
146
147
|
const hasSuccessImg = this.completeImgsList.some(item => item.status === 'success')
hasSuccessImg ? callback() : callback(new Error('请上传至少1张完成照片'))
}
}
|
3d474e84
刘淇
快速工单 加上业务线
|
148
|
]
|
9b30ab8c
刘淇
新增快速工单,原版
|
149
|
}
|
9b30ab8c
刘淇
新增快速工单,原版
|
150
|
}
|
0d1a4181
刘淇
个人中心
|
151
|
},
|
3d474e84
刘淇
快速工单 加上业务线
|
152
|
onLoad() {
|
3d474e84
刘淇
快速工单 加上业务线
|
153
154
|
// 默认选中第一个业务线
if (this.busiLineOptions && this.busiLineOptions.length > 0) {
|
3cbb8754
刘淇
动态字典
|
155
156
157
|
this.workOrderForm.busiLine = this.busiLineOptions[0].value;
this.busiLineDisplay = this.busiLineOptions[0].label;
console.log('默认选中业务线value:', this.workOrderForm.busiLine);
|
3d474e84
刘淇
快速工单 加上业务线
|
158
159
|
}
},
|
0d1a4181
刘淇
个人中心
|
160
|
onReady() {
|
3d474e84
刘淇
快速工单 加上业务线
|
161
162
163
|
// 设置表单校验规则
this.$refs.workOrderFormRef.setRules(this.workOrderFormRules);
console.log('工单表单规则初始化完成');
|
0d1a4181
刘淇
个人中心
|
164
|
},
|
3d474e84
刘淇
快速工单 加上业务线
|
165
166
|
onShow() {
this.orderNameList = uni.$dict.transformLabelValueToNameValue(uni.$dict.getDictSimpleList('work_name'));
|
c64da17b
刘淇
新的业务线
|
167
|
console.log('问题类型列表:', this.orderNameList);
|
5cb33b90
刘淇
完成巡查计划 详情
|
168
|
},
|
0d1a4181
刘淇
个人中心
|
169
|
methods: {
|
3d474e84
刘淇
快速工单 加上业务线
|
170
|
// 业务线切换事件
|
3cbb8754
刘淇
动态字典
|
171
172
173
174
175
176
|
handleBusiLineChange(selectedLabel) {
// 根据选中的中文label反向找到value,存入表单
const selectedItem = this.busiLineOptions.find(item => item.label === selectedLabel)
if (selectedItem) {
this.workOrderForm.busiLine = selectedItem.value;
}
|
3d474e84
刘淇
快速工单 加上业务线
|
177
178
179
180
181
182
183
184
185
186
187
|
// 清空道路信息
this.workOrderForm.roadName = '';
this.workOrderForm.roadId = 0;
this.roadNameList = [];
// 若已选择位置,重新请求对应业务线的道路列表
if (this.workOrderForm.workLocation) {
this.getRoadListByBusiLine();
}
},
// 根据选中业务线请求道路列表
async getRoadListByBusiLine() {
|
3cbb8754
刘淇
动态字典
|
188
|
if (!this.workOrderForm.lat || !this.workOrderForm.lon || !this.workOrderForm.busiLine) {
|
3d474e84
刘淇
快速工单 加上业务线
|
189
190
|
return;
}
|
3d474e84
刘淇
快速工单 加上业务线
|
191
192
193
|
try {
uni.showLoading({ title: '获取道路名称中...' });
const roadRes = await getRoadListByLatLng({
|
3cbb8754
刘淇
动态字典
|
194
|
busiLine: this.workOrderForm.busiLine, // 直接传递value
|
3d474e84
刘淇
快速工单 加上业务线
|
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
|
latitude: this.workOrderForm.lat,
longitude: this.workOrderForm.lon
});
uni.hideLoading();
if (Array.isArray(roadRes)) {
this.roadNameList = roadRes.map((item) => ({
name: item.roadName || '',
code: item.roadCode || '',
id: item.roadId || 0
}));
} else {
this.roadNameList = [{ name: '未查询到道路名称', code: '', id: 0 }];
uni.showToast({ title: '未查询到该位置的道路信息', icon: 'none' });
}
} catch (err) {
uni.hideLoading();
console.error('获取道路名称失败:', err);
uni.showToast({ title: '获取道路名称失败,请重试', icon: 'none' });
this.roadNameList = [{ name: '获取失败,请重新选择位置', code: '', id: 0 }];
}
},
|
0d1a4181
刘淇
个人中心
|
216
217
218
219
|
/**
* 返回上一页
*/
navigateBack() {
|
3d474e84
刘淇
快速工单 加上业务线
|
220
|
uni.navigateBack();
|
0d1a4181
刘淇
个人中心
|
221
222
223
224
225
|
},
/**
* 删除图片
*/
deleteImg(event, type) {
|
3d474e84
刘淇
快速工单 加上业务线
|
226
|
console.log('删除图片事件:', event, '类型:', type);
|
0d1a4181
刘淇
个人中心
|
227
|
if (type === 'problemImgsList') {
|
3d474e84
刘淇
快速工单 加上业务线
|
228
|
this.problemImgsList.splice(event.index, 1);
|
0d1a4181
刘淇
个人中心
|
229
|
} else if (type === 'completeImgsList') {
|
3d474e84
刘淇
快速工单 加上业务线
|
230
|
this.completeImgsList.splice(event.index, 1);
|
9b30ab8c
刘淇
新增快速工单,原版
|
231
|
}
|
0d1a4181
刘淇
个人中心
|
232
233
|
// 删除图片后重新校验图片字段
if (type === 'problemImgsList') {
|
3d474e84
刘淇
快速工单 加上业务线
|
234
|
this.$refs.workOrderFormRef.validateField('problemImgs');
|
0d1a4181
刘淇
个人中心
|
235
|
} else if (type === 'completeImgsList') {
|
3d474e84
刘淇
快速工单 加上业务线
|
236
|
this.$refs.workOrderFormRef.validateField('completeImgs');
|
0d1a4181
刘淇
个人中心
|
237
|
}
|
3d474e84
刘淇
快速工单 加上业务线
|
238
|
uni.showToast({ title: '图片删除成功', icon: 'success' });
|
0d1a4181
刘淇
个人中心
|
239
240
241
242
243
|
},
/**
* 上传图片
*/
async uploadImgs(event, type) {
|
3d474e84
刘淇
快速工单 加上业务线
|
244
245
246
|
console.log('上传图片事件:', event, '类型:', type);
const fileList = Array.isArray(event.file) ? event.file : [event.file];
const targetImgList = type === 'problemImgsList' ? this.problemImgsList : this.completeImgsList;
|
3d474e84
刘淇
快速工单 加上业务线
|
247
|
const filePaths = fileList.map(item => item.url);
|
0d1a4181
刘淇
个人中心
|
248
249
250
251
|
const tempItems = fileList.map(item => ({
...item,
status: 'uploading',
message: '上传中'
|
3d474e84
刘淇
快速工单 加上业务线
|
252
253
254
|
}));
const startIndex = targetImgList.length;
targetImgList.push(...tempItems);
|
0d1a4181
刘淇
个人中心
|
255
256
257
258
|
try {
const uploadResultUrls = await uploadImages({
filePaths: filePaths,
ignoreError: true
|
3d474e84
刘淇
快速工单 加上业务线
|
259
260
|
});
console.log('上传成功的URL列表:', uploadResultUrls);
|
0d1a4181
刘淇
个人中心
|
261
262
263
264
265
266
267
|
uploadResultUrls.forEach((url, index) => {
if (targetImgList[startIndex + index]) {
targetImgList.splice(startIndex + index, 1, {
...fileList[index],
status: 'success',
message: '',
url: url
|
3d474e84
刘淇
快速工单 加上业务线
|
268
|
});
|
0d1a4181
刘淇
个人中心
|
269
|
}
|
3d474e84
刘淇
快速工单 加上业务线
|
270
|
});
|
0d1a4181
刘淇
个人中心
|
271
|
if (uploadResultUrls.length < fileList.length) {
|
3d474e84
刘淇
快速工单 加上业务线
|
272
|
const failCount = fileList.length - uploadResultUrls.length;
|
0d1a4181
刘淇
个人中心
|
273
274
275
276
277
278
|
for (let i = uploadResultUrls.length; i < fileList.length; i++) {
if (targetImgList[startIndex + i]) {
targetImgList.splice(startIndex + i, 1, {
...fileList[i],
status: 'failed',
message: '上传失败'
|
3d474e84
刘淇
快速工单 加上业务线
|
279
|
});
|
0d1a4181
刘淇
个人中心
|
280
281
|
}
}
|
3d474e84
刘淇
快速工单 加上业务线
|
282
|
uni.showToast({ title: `成功上传${uploadResultUrls.length}张,失败${failCount}张`, icon: 'none' });
|
0d1a4181
刘淇
个人中心
|
283
|
} else {
|
3d474e84
刘淇
快速工单 加上业务线
|
284
|
uni.showToast({ title: `成功上传${fileList.length}张图片`, icon: 'success' });
|
0d1a4181
刘淇
个人中心
|
285
|
}
|
0d1a4181
刘淇
个人中心
|
286
287
|
// 上传完成后重新校验图片字段
if (type === 'problemImgsList') {
|
3d474e84
刘淇
快速工单 加上业务线
|
288
|
this.$refs.workOrderFormRef.validateField('problemImgs');
|
0d1a4181
刘淇
个人中心
|
289
|
} else if (type === 'completeImgsList') {
|
3d474e84
刘淇
快速工单 加上业务线
|
290
|
this.$refs.workOrderFormRef.validateField('completeImgs');
|
0d1a4181
刘淇
个人中心
|
291
292
|
}
} catch (err) {
|
0d1a4181
刘淇
个人中心
|
293
294
295
296
297
298
|
for (let i = 0; i < fileList.length; i++) {
if (targetImgList[startIndex + i]) {
targetImgList.splice(startIndex + i, 1, {
...fileList[i],
status: 'failed',
message: '上传失败'
|
3d474e84
刘淇
快速工单 加上业务线
|
299
|
});
|
0d1a4181
刘淇
个人中心
|
300
301
|
}
}
|
3d474e84
刘淇
快速工单 加上业务线
|
302
|
uni.showToast({ title: '图片上传失败,请重试', icon: 'none' });
|
0d1a4181
刘淇
个人中心
|
303
304
|
// 上传失败后重新校验图片字段
if (type === 'problemImgsList') {
|
3d474e84
刘淇
快速工单 加上业务线
|
305
|
this.$refs.workOrderFormRef.validateField('problemImgs');
|
0d1a4181
刘淇
个人中心
|
306
|
} else if (type === 'completeImgsList') {
|
3d474e84
刘淇
快速工单 加上业务线
|
307
|
this.$refs.workOrderFormRef.validateField('completeImgs');
|
0d1a4181
刘淇
个人中心
|
308
309
310
311
|
}
}
},
/**
|
3d474e84
刘淇
快速工单 加上业务线
|
312
|
* 选择工单位置
|
0d1a4181
刘淇
个人中心
|
313
314
|
*/
chooseWorkLocation() {
|
3d474e84
刘淇
快速工单 加上业务线
|
315
|
let that = this;
|
9b30ab8c
刘淇
新增快速工单,原版
|
316
317
|
uni.chooseLocation({
success: async (res) => {
|
3d474e84
刘淇
快速工单 加上业务线
|
318
319
320
|
that.workOrderForm.roadName = '';
that.workOrderForm.roadId = 0;
that.roadNameList = [];
|
3d474e84
刘淇
快速工单 加上业务线
|
321
322
323
|
that.workOrderForm.workLocation = res.name;
that.workOrderForm.lat = res.latitude;
that.workOrderForm.lon = res.longitude;
|
3d474e84
刘淇
快速工单 加上业务线
|
324
325
|
that.$refs.workOrderFormRef.validateField('workLocation');
that.$refs.workOrderFormRef.validateField('roadName');
|
3d474e84
刘淇
快速工单 加上业务线
|
326
327
|
// 调用封装的方法,自动携带业务线
await that.getRoadListByBusiLine();
|
9b30ab8c
刘淇
新增快速工单,原版
|
328
329
|
},
fail: (err) => {
|
3d474e84
刘淇
快速工单 加上业务线
|
330
331
|
console.error('选择位置失败:', err);
uni.showToast({ title: '选择位置失败:' + err.errMsg, icon: 'none' });
|
9b30ab8c
刘淇
新增快速工单,原版
|
332
|
}
|
3d474e84
刘淇
快速工单 加上业务线
|
333
|
});
|
9b30ab8c
刘淇
新增快速工单,原版
|
334
|
},
|
0d1a4181
刘淇
个人中心
|
335
336
337
338
|
/**
* 选择道路名称
*/
handleRoadNameSelect(e) {
|
3d474e84
刘淇
快速工单 加上业务线
|
339
340
341
342
343
|
console.log('选择道路名称:', e);
this.workOrderForm.roadName = e.name;
this.workOrderForm.roadId = e.code;
this.showRoadName = false;
this.$refs.workOrderFormRef.validateField('roadName');
|
0d1a4181
刘淇
个人中心
|
344
345
|
},
/**
|
c64da17b
刘淇
新的业务线
|
346
|
* 选择问题类型
|
0d1a4181
刘淇
个人中心
|
347
348
|
*/
handleOrderNameSelect(e) {
|
3d474e84
刘淇
快速工单 加上业务线
|
349
350
351
352
|
console.log(e);
this.workOrderForm.orderName = e.name;
this.showOrderName = false;
this.$refs.workOrderFormRef.validateField('orderName');
|
0d1a4181
刘淇
个人中心
|
353
354
355
356
357
|
},
/**
* 隐藏键盘
*/
hideKeyboard() {
|
3d474e84
刘淇
快速工单 加上业务线
|
358
|
uni.hideKeyboard();
|
0d1a4181
刘淇
个人中心
|
359
360
361
362
363
|
},
/**
* 提取图片URL数组
*/
getImgUrlList(imgList) {
|
3d474e84
刘淇
快速工单 加上业务线
|
364
|
return imgList.filter(item => item.status === 'success').map(item => item.url);
|
0d1a4181
刘淇
个人中心
|
365
366
|
},
/**
|
3d474e84
刘淇
快速工单 加上业务线
|
367
|
* 提交工单
|
0d1a4181
刘淇
个人中心
|
368
369
370
|
*/
async submitWorkOrder() {
try {
|
3d474e84
刘淇
快速工单 加上业务线
|
371
372
|
// 先执行表单校验
await this.$refs.workOrderFormRef.validate();
|
3cbb8754
刘淇
动态字典
|
373
|
if (!this.workOrderForm.busiLine) {
|
3d474e84
刘淇
快速工单 加上业务线
|
374
375
376
|
uni.showToast({ title: '业务线选择异常,请重新选择', icon: 'none' });
return;
}
|
3cbb8754
刘淇
动态字典
|
377
378
|
// 根据value找到中文label
const sourceName = this.busiLineOptions.find(item => item.value === this.workOrderForm.busiLine)?.label || '';
|
0d1a4181
刘淇
个人中心
|
379
380
381
|
const submitData = {
roadId: this.workOrderForm.roadId,
roadName: this.workOrderForm.roadName,
|
2f1e3176
刘淇
图片参数处理
|
382
|
problemsImgs: this.getImgUrlList(this.problemImgsList),
|
3d474e84
刘淇
快速工单 加上业务线
|
383
|
endImgs: this.getImgUrlList(this.completeImgsList),
|
c7df828a
刘淇
快速工单 样式优化
|
384
385
|
remark: this.workOrderForm.problemDesc.trim(),
handleResult: this.workOrderForm.handleResult.trim(),
|
0d1a4181
刘淇
个人中心
|
386
387
388
389
390
391
392
|
latLonType: 2,
lat: this.workOrderForm.lat,
lon: this.workOrderForm.lon,
lonLatAddress: this.workOrderForm.workLocation,
pressingType: 2,
orderName: this.workOrderForm.orderName,
sourceId: 1,
|
3cbb8754
刘淇
动态字典
|
393
|
sourceName: sourceName, // 业务线中文名称
|
7b1f488f
刘淇
封装下图片上传
|
394
|
thirdWorkNo: '',
|
3cbb8754
刘淇
动态字典
|
395
|
busiLine: this.workOrderForm.busiLine // 业务线英文标识(yl/sz/wy)
|
3d474e84
刘淇
快速工单 加上业务线
|
396
|
};
|
0d1a4181
刘淇
个人中心
|
397
|
// 显示加载中
|
3d474e84
刘淇
快速工单 加上业务线
|
398
|
uni.showLoading({ title: '提交中...' });
|
3d474e84
刘淇
快速工单 加上业务线
|
399
400
|
// 调用提交接口
const res = await createQuick(submitData);
|
3d474e84
刘淇
快速工单 加上业务线
|
401
|
uni.hideLoading();
|
0d1a4181
刘淇
个人中心
|
402
403
404
|
uni.showToast({
title: '工单提交成功',
icon: 'success',
|
5cb33b90
刘淇
完成巡查计划 详情
|
405
|
duration: 1000
|
3d474e84
刘淇
快速工单 加上业务线
|
406
|
});
|
3d474e84
刘淇
快速工单 加上业务线
|
407
|
// 延迟跳转
|
0d1a4181
刘淇
个人中心
|
408
|
setTimeout(() => {
|
4fa8cf12
刘淇
巡查员结束工单
|
409
|
uni.reLaunch({
|
0d1a4181
刘淇
个人中心
|
410
|
url: '/pages-sub/daily/quick-order/index'
|
3d474e84
刘淇
快速工单 加上业务线
|
411
412
|
});
}, 1000);
|
0d1a4181
刘淇
个人中心
|
413
414
|
} catch (error) {
// 隐藏加载框
|
3d474e84
刘淇
快速工单 加上业务线
|
415
|
uni.hideLoading();
|
0d1a4181
刘淇
个人中心
|
416
|
// 区分是表单校验失败还是接口调用失败
|
3d474e84
刘淇
快速工单 加上业务线
|
417
|
if (!Array.isArray(error)) {
|
0d1a4181
刘淇
个人中心
|
418
|
// 接口调用失败
|
3d474e84
刘淇
快速工单 加上业务线
|
419
|
console.error('工单提交失败:', error);
|
0d1a4181
刘淇
个人中心
|
420
421
422
423
|
uni.showToast({
title: '提交失败,请重试',
icon: 'none',
duration: 2000
|
3d474e84
刘淇
快速工单 加上业务线
|
424
|
});
|
0d1a4181
刘淇
个人中心
|
425
|
}
|
8ee2a923
刘淇
新增快速工单,原版
|
426
|
}
|
9b30ab8c
刘淇
新增快速工单,原版
|
427
|
}
|
9b30ab8c
刘淇
新增快速工单,原版
|
428
429
|
}
}
|
9b30ab8c
刘淇
新增快速工单,原版
|
430
|
</script>
|
9b30ab8c
刘淇
新增快速工单,原版
|
431
432
|
<style lang="scss" scoped>
// 全局页面样式
|
c7df828a
刘淇
快速工单 样式优化
|
433
|
.page-container {
|
9b30ab8c
刘淇
新增快速工单,原版
|
434
|
min-height: 100vh;
|
9b30ab8c
刘淇
新增快速工单,原版
|
435
|
}
|
8ee2a923
刘淇
新增快速工单,原版
|
436
|
// 工单表单内容容器
|
9b30ab8c
刘淇
新增快速工单,原版
|
437
438
|
.work-order-form-content {
background: #fff;
|
c7df828a
刘淇
快速工单 样式优化
|
439
|
margin-bottom: 100rpx;
|
9b30ab8c
刘淇
新增快速工单,原版
|
440
|
}
|
3cbb8754
刘淇
动态字典
|
441
|
</style>
|