|
@@ -15,28 +15,32 @@
|
|
|
<u-input v-else v-model="form.orderId" placeholder="请输入订单编号" clearable></u-input>
|
|
<u-input v-else v-model="form.orderId" placeholder="请输入订单编号" clearable></u-input>
|
|
|
</u-form-item> -->
|
|
</u-form-item> -->
|
|
|
<u-form-item label="承运商:" prop="carrier" required>
|
|
<u-form-item label="承运商:" prop="carrier" required>
|
|
|
- <u-input v-model="carrierText" readonly suffixIcon="arrow-down" placeholder="请选择"
|
|
|
|
|
- @click="!isReadonly && (showCarrierPicker = true)"></u-input>
|
|
|
|
|
|
|
+ <view class="picker-field" @click="openCarrierPicker" @tap="openCarrierPicker">
|
|
|
|
|
+ <u-input v-model="carrierText" readonly suffixIcon="arrow-down" placeholder="请选择"></u-input>
|
|
|
|
|
+ </view>
|
|
|
</u-form-item>
|
|
</u-form-item>
|
|
|
<u-form-item label="验货状态:" prop="verifyStatus" required>
|
|
<u-form-item label="验货状态:" prop="verifyStatus" required>
|
|
|
- <u-input v-model="verifyText" readonly suffixIcon="arrow-down" placeholder="请选择"
|
|
|
|
|
- @click="showVerifyPicker = true"></u-input>
|
|
|
|
|
|
|
+ <view class="picker-field" @tap="showVerifyPicker = true">
|
|
|
|
|
+ <u-input v-model="verifyText" readonly suffixIcon="arrow-down" placeholder="请选择"></u-input>
|
|
|
|
|
+ </view>
|
|
|
</u-form-item>
|
|
</u-form-item>
|
|
|
<u-form-item label="任务类型:" prop="taskType" required>
|
|
<u-form-item label="任务类型:" prop="taskType" required>
|
|
|
- <u-input v-model="taskTypeText" readonly suffixIcon="arrow-down" placeholder="请选择"
|
|
|
|
|
- @click="showTaskTypePicker = true"></u-input>
|
|
|
|
|
|
|
+ <view class="picker-field" @tap="showTaskTypePicker = true">
|
|
|
|
|
+ <u-input v-model="taskTypeText" readonly suffixIcon="arrow-down" placeholder="请选择"></u-input>
|
|
|
|
|
+ </view>
|
|
|
</u-form-item>
|
|
</u-form-item>
|
|
|
<u-form-item label="任务详情:" prop="taskDetail" required>
|
|
<u-form-item label="任务详情:" prop="taskDetail" required>
|
|
|
<u-textarea v-model="form.taskDetail" placeholder="请输入" :height="120"
|
|
<u-textarea v-model="form.taskDetail" placeholder="请输入" :height="120"
|
|
|
:autoHeight="true"></u-textarea>
|
|
:autoHeight="true"></u-textarea>
|
|
|
</u-form-item>
|
|
</u-form-item>
|
|
|
<u-form-item label="上传图片:" prop="images" required>
|
|
<u-form-item label="上传图片:" prop="images" required>
|
|
|
- <cy-upload :filename="form.images" @update:filename="form.images = $event" />
|
|
|
|
|
|
|
+ <cy-upload :filename="form.images" @update:filename="form.images = $event" :multiple="true" :maxCount="9" />
|
|
|
</u-form-item>
|
|
</u-form-item>
|
|
|
<view class="divider"></view>
|
|
<view class="divider"></view>
|
|
|
<u-form-item label="指派给:" prop="assignTo">
|
|
<u-form-item label="指派给:" prop="assignTo">
|
|
|
- <u-input v-model="assignText" readonly suffixIcon="arrow-down" placeholder="请选择 (非必填)"
|
|
|
|
|
- @click="openAssignPicker"></u-input>
|
|
|
|
|
|
|
+ <view class="picker-field" @tap="openAssignPicker">
|
|
|
|
|
+ <u-input v-model="assignText" readonly suffixIcon="arrow-down" placeholder="请选择 (非必填)"></u-input>
|
|
|
|
|
+ </view>
|
|
|
</u-form-item>
|
|
</u-form-item>
|
|
|
</u-form>
|
|
</u-form>
|
|
|
</view>
|
|
</view>
|
|
@@ -127,6 +131,10 @@ const getCarrierOptions = async () => {
|
|
|
text: item.dictLabel,
|
|
text: item.dictLabel,
|
|
|
value: item.dictValue
|
|
value: item.dictValue
|
|
|
}))
|
|
}))
|
|
|
|
|
+ if (form.value.expressType !== '' && form.value.expressType !== undefined && form.value.expressType !== null) {
|
|
|
|
|
+ const matchedCarrier = carrierOptions.value.find(item => String(item.value) === String(form.value.expressType))
|
|
|
|
|
+ if (matchedCarrier) carrierText.value = matchedCarrier.text
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
} catch (e) {
|
|
} catch (e) {
|
|
|
console.error('获取快递公司失败', e)
|
|
console.error('获取快递公司失败', e)
|
|
@@ -202,8 +210,13 @@ const onPickTaskType = (e) => {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 打开指派人选择器时,初始化临时选中状态
|
|
// 打开指派人选择器时,初始化临时选中状态
|
|
|
|
|
+const openCarrierPicker = () => {
|
|
|
|
|
+ if (isEdit.value) return
|
|
|
|
|
+ showCarrierPicker.value = true
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
const openAssignPicker = () => {
|
|
const openAssignPicker = () => {
|
|
|
- if (isReadonly.value) return
|
|
|
|
|
|
|
+ if (isEdit.value) return
|
|
|
// 根据当前已选择的值,初始化 tempAssignIndexes
|
|
// 根据当前已选择的值,初始化 tempAssignIndexes
|
|
|
tempAssignIndexes.value = []
|
|
tempAssignIndexes.value = []
|
|
|
if (form.value.assignTo && form.value.assignTo.length > 0) {
|
|
if (form.value.assignTo && form.value.assignTo.length > 0) {
|
|
@@ -332,7 +345,7 @@ const onSubmit = async () => {
|
|
|
|
|
|
|
|
if (isEdit.value) {
|
|
if (isEdit.value) {
|
|
|
payload.id = workOrderId.value
|
|
payload.id = workOrderId.value
|
|
|
- payload.updateType = 1
|
|
|
|
|
|
|
+ payload.updateType = 2
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
const apiUrl = isEdit.value ? '/app/workOrder/update' : '/app/workOrder/createWorkOrder'
|
|
const apiUrl = isEdit.value ? '/app/workOrder/update' : '/app/workOrder/createWorkOrder'
|
|
@@ -340,21 +353,26 @@ const onSubmit = async () => {
|
|
|
try {
|
|
try {
|
|
|
const res = await uni.$u.http.post(apiUrl, payload)
|
|
const res = await uni.$u.http.post(apiUrl, payload)
|
|
|
if (res?.code === 200) {
|
|
if (res?.code === 200) {
|
|
|
|
|
+ uni.$u.ttsModule?.speak?.('提交成功')
|
|
|
uni.$u.toast('提交成功')
|
|
uni.$u.toast('提交成功')
|
|
|
- uni.navigateBack()
|
|
|
|
|
|
|
+ if (isEdit.value) {
|
|
|
|
|
+ uni.navigateBack()
|
|
|
|
|
+ } else {
|
|
|
|
|
+ uni.redirectTo({ url: '/pages/index/work-order/mall' })
|
|
|
|
|
+ }
|
|
|
} else {
|
|
} else {
|
|
|
uni.$u.toast(res?.msg || '提交失败')
|
|
uni.$u.toast(res?.msg || '提交失败')
|
|
|
}
|
|
}
|
|
|
} catch (err) {
|
|
} catch (err) {
|
|
|
- uni.$u.toast('网络错误,已本地保存')
|
|
|
|
|
|
|
+ uni.$u.toast(err?.data?.msg || err?.msg || '网络错误')
|
|
|
} finally {
|
|
} finally {
|
|
|
submitting.value = false
|
|
submitting.value = false
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
onLoad((options) => {
|
|
onLoad((options) => {
|
|
|
- form.value.waybillCode = options?.waybillCode || ''
|
|
|
|
|
- form.value.orderId = options?.orderId || ''
|
|
|
|
|
|
|
+ form.value.waybillCode = options?.waybillCode ? decodeURIComponent(options.waybillCode) : ''
|
|
|
|
|
+ form.value.orderId = options?.orderId ? decodeURIComponent(options.orderId) : ''
|
|
|
|
|
|
|
|
if (options?.readonly == 1) {
|
|
if (options?.readonly == 1) {
|
|
|
isReadonly.value = true
|
|
isReadonly.value = true
|
|
@@ -362,9 +380,15 @@ onLoad((options) => {
|
|
|
if (options?.expressType !== undefined && options?.expressType !== null) {
|
|
if (options?.expressType !== undefined && options?.expressType !== null) {
|
|
|
form.value.expressType = parseInt(options.expressType)
|
|
form.value.expressType = parseInt(options.expressType)
|
|
|
// 从字典中查找对应的文本
|
|
// 从字典中查找对应的文本
|
|
|
- const matchedCarrier = carrierOptions.value.find(item => item.value === options.expressType)
|
|
|
|
|
|
|
+ const matchedCarrier = carrierOptions.value.find(item => String(item.value) === String(options.expressType))
|
|
|
if (matchedCarrier) {
|
|
if (matchedCarrier) {
|
|
|
carrierText.value = matchedCarrier.text
|
|
carrierText.value = matchedCarrier.text
|
|
|
|
|
+ } else {
|
|
|
|
|
+ // 字典异步加载后再回显
|
|
|
|
|
+ setTimeout(() => {
|
|
|
|
|
+ const c = carrierOptions.value.find(item => String(item.value) === String(options.expressType))
|
|
|
|
|
+ if (c) carrierText.value = c.text
|
|
|
|
|
+ }, 300)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -496,4 +520,12 @@ onLoad((options) => {
|
|
|
color: #2979ff;
|
|
color: #2979ff;
|
|
|
line-height: 60rpx;
|
|
line-height: 60rpx;
|
|
|
}
|
|
}
|
|
|
|
|
+.picker-field {
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ min-height: 60rpx;
|
|
|
|
|
+}
|
|
|
|
|
+.picker-field :deep(.u-input),
|
|
|
|
|
+.picker-field :deep(input) {
|
|
|
|
|
+ pointer-events: none;
|
|
|
|
|
+}
|
|
|
</style>
|
|
</style>
|