feat: 上报异常
This commit is contained in:
parent
353ea4b17a
commit
4bb1fcc37c
12
api/api.js
12
api/api.js
|
|
@ -91,6 +91,18 @@ class Api {
|
|||
let url = `${config.host}/worker/abnormal/index`;
|
||||
return fetch.request('GET', url, {}, true)
|
||||
}
|
||||
|
||||
// 获取订单异常详情
|
||||
static orderAbnormalInfo(data) {
|
||||
let url = `${config.host}/worker/order_abnormal/info`;
|
||||
return fetch.request('GET', url, data, true)
|
||||
}
|
||||
|
||||
// 上报异常
|
||||
static createOrderAbnormal(data) {
|
||||
let url = `${config.host}/worker/order_abnormal/create`;
|
||||
return fetch.request('postFrom', url, data, true)
|
||||
}
|
||||
}
|
||||
|
||||
export default Api
|
||||
|
|
|
|||
|
|
@ -47,6 +47,12 @@
|
|||
<view class="title flex-l">客户备注</view>
|
||||
<view class="value flex-l">{{data.remark ? data.remark : '无备注信息'}}</view>
|
||||
</view>
|
||||
<view class="report-order-exception flex-c" v-if="data.status !== enums.ORDER_DISPATCH_STATUS.STATUS_TOGET">
|
||||
<view @click="reportOrderException(data.order_info.id)" class="report-ctr flex-c" hover-class="auto-mask-layer-radius4" hover-start-time="0" hover-stay-time="50">
|
||||
<me-icon type="icon-arrow-up-line" color="var(--importantColor)" size="36rpx"></me-icon>
|
||||
<text class="text">上报异常</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 已拒接-->
|
||||
|
|
@ -91,7 +97,7 @@
|
|||
<text>{{data.order_info.online_amount}}元抵扣{{data.order_info.discount_amount}}元</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="item-row flex-sb line-after">
|
||||
<view class="item-row flex-sb line-after" v-if="data.offline_total_type !== 0">
|
||||
<view class="title flex-l">尾款收款方</view>
|
||||
<view class="value flex-r">
|
||||
<text>{{ data.offline_total_type === 1 ? '师傅收' : '公司收' }}</text>
|
||||
|
|
@ -164,6 +170,11 @@ const openLocation = () => {
|
|||
});
|
||||
}
|
||||
|
||||
//上报异常
|
||||
const reportOrderException = (orderId) => {
|
||||
helpers.jumpToPage('report-order-exception', `order_id=${orderId}`)
|
||||
}
|
||||
|
||||
//完成上门
|
||||
const arrivedOnSite = () => {
|
||||
helpers.jumpToPage('arrived-on-site', 'id=' + id.value)
|
||||
|
|
@ -228,7 +239,7 @@ onShow(() => {
|
|||
const data = ref(null)
|
||||
const init = () => {
|
||||
uni.showLoading({
|
||||
title: '获取中'
|
||||
title: '加载中'
|
||||
});
|
||||
api.orderInfo({order_dispatch_id: id.value}).then(res => {
|
||||
data.value = res
|
||||
|
|
@ -347,6 +358,19 @@ const previewImage = (url) => {
|
|||
line-height: 48rpx;
|
||||
}
|
||||
}
|
||||
.report-order-exception {
|
||||
width: 100%;
|
||||
height: 80rpx;
|
||||
.report-ctr {
|
||||
width: 198rpx;
|
||||
height: 64rpx;
|
||||
border-radius: 8rpx;
|
||||
.text {
|
||||
font-size: 28rpx;
|
||||
color: var(--importantColor);
|
||||
}
|
||||
}
|
||||
}
|
||||
.images {
|
||||
width: 100%;
|
||||
position: relative;
|
||||
|
|
|
|||
|
|
@ -1,23 +1,32 @@
|
|||
<template>
|
||||
<view class="ctr" v-if="data !== null">
|
||||
<view class="ctr" v-if="orderInfo !== null">
|
||||
<view class="form-group">
|
||||
<picker @change="bindPickerChange" range-key="title" :range="typeList">
|
||||
<template v-if="orderInfo.length === 0">
|
||||
<picker @change="bindPickerChange" range-key="title" :range="typeList">
|
||||
<view class="item input flex-sb line-after">
|
||||
<view class="title flex-l">异常原因</view>
|
||||
<view v-if="submitData.abnormal_id === 0" class="select-ctr flex-r">请选择异常原因</view>
|
||||
<view v-else class="select-ctr flex-r select">{{typeList[typeListIndex].title}}</view>
|
||||
</view>
|
||||
</picker>
|
||||
</template>
|
||||
<template v-else>
|
||||
<view class="item input flex-sb line-after">
|
||||
<view class="title flex-l">异常原因</view>
|
||||
<view v-if="submitData.abnormal_id === 0" class="select-ctr flex-r">请选择异常原因</view>
|
||||
<view v-else class="select-ctr flex-r select">{{typeList[typeListIndex].title}}</view>
|
||||
<view class="select-ctr flex-r select">{{orderInfo.abnormal_title}}</view>
|
||||
</view>
|
||||
</picker>
|
||||
</template>
|
||||
|
||||
<view class="textarea">
|
||||
<view class="title flex-l">异常说明</view>
|
||||
<view class="value">
|
||||
<textarea :disable-default-padding="true" class="input-textarea" v-model="submitData.detail" placeholder-class="placeholder-class" placeholder="请输入异常说明(200字以内)"/>
|
||||
<textarea v-if="orderInfo.length === 0" :disable-default-padding="true" class="input-textarea" v-model="submitData.detail" placeholder-class="placeholder-class" placeholder="请输入异常说明(200字以内)"/>
|
||||
<textarea v-else disabled="disabled" :disable-default-padding="true" class="input-textarea" v-model="orderInfo.detail" placeholder-class="placeholder-class" placeholder="请输入异常说明(200字以内)"/>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<me-empty-space height="376"></me-empty-space>
|
||||
<view class="bottom">
|
||||
<view class="bottom" v-if="orderInfo.length === 0">
|
||||
<me-button @click="submit()" text="立即上报" width="686rpx" icon-type="icon-arrow-up-line" margin-top="32rpx"></me-button>
|
||||
</view>
|
||||
</view>
|
||||
|
|
@ -49,48 +58,54 @@ const submit = throttle(() => {
|
|||
uni.showModal({
|
||||
title: '提示信息',
|
||||
confirmText: '确认',
|
||||
content: '确认已完成所有服务?',
|
||||
content: '确认上报异常?',
|
||||
success: function (res) {
|
||||
if (res.confirm) {
|
||||
uni.showLoading({
|
||||
title: '提交中'
|
||||
});
|
||||
|
||||
let data = helpers.deepObj(submitData)
|
||||
data.complete_images = (submitData.complete_images).join(',')
|
||||
data.order_dispatch_id = id.value
|
||||
submitData.order_id = orderId.value
|
||||
|
||||
api.completeService(data).then(() => {
|
||||
api.createOrderAbnormal(submitData).then(() => {
|
||||
uni.hideLoading();
|
||||
uni.showToast({
|
||||
title: '已完成服务',
|
||||
title: '完成上报',
|
||||
icon: "success"
|
||||
})
|
||||
setTimeout(() => {
|
||||
uni.navigateBack();
|
||||
}, 1000)
|
||||
init()
|
||||
}).catch(() => {})
|
||||
}
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
const id = ref(null)
|
||||
const orderId = ref(null)
|
||||
onLoad((params) => {
|
||||
id.value = params.id
|
||||
orderId.value = params.order_id
|
||||
uni.showLoading({
|
||||
title: '加载中'
|
||||
})
|
||||
init()
|
||||
})
|
||||
|
||||
const data = ref(null)
|
||||
const orderInfo = ref(null)
|
||||
const typeList = ref(null)
|
||||
const init = () => {
|
||||
api.orderInfo({order_dispatch_id: id.value}).then(res => {
|
||||
data.value = res
|
||||
api.orderAbnormalInfo({order_id: orderId.value}).then(res => {
|
||||
orderInfo.value = res
|
||||
|
||||
if (orderInfo.value.id !== undefined) {
|
||||
uni.setNavigationBarTitle({
|
||||
title: '上报详情',
|
||||
})
|
||||
}
|
||||
|
||||
uni.hideLoading()
|
||||
}).catch(() => {})
|
||||
|
||||
api.findExceptionTypeList().then(res => {
|
||||
typeList.value = res
|
||||
console.log(typeList.value)
|
||||
}).catch(() => {})
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@
|
|||
<text class="text">{{getOrderStatusText(item.status)}}</text>
|
||||
</view>
|
||||
<view class="operate flex-r">
|
||||
<view class="btn flex-c" @click="reportOrderException(item.id)" hover-class="auto-mask-layer-radius8" hover-start-time="0" hover-stay-time="50">
|
||||
<view class="btn flex-c" @click="reportOrderException(item.order_info.id)" hover-class="auto-mask-layer-radius8" hover-start-time="0" hover-stay-time="50">
|
||||
<me-icon type="icon-arrow-up-line" color="#FFFFFF" size="40rpx"></me-icon>
|
||||
<text>上报异常</text>
|
||||
</view>
|
||||
|
|
@ -89,8 +89,8 @@ const toDetail = (id) => {
|
|||
}
|
||||
|
||||
//上报异常
|
||||
const reportOrderException = (id) => {
|
||||
helpers.jumpToPage('report-order-exception', `id=${id}`)
|
||||
const reportOrderException = (orderId) => {
|
||||
helpers.jumpToPage('report-order-exception', `order_id=${orderId}`)
|
||||
}
|
||||
|
||||
//是否显示骨架屏
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@
|
|||
width: 100%;
|
||||
height: 80rpx;
|
||||
font-size: 30rpx;
|
||||
font-weight: 500;
|
||||
color: var(--titleColor);
|
||||
}
|
||||
.value {
|
||||
|
|
@ -46,6 +47,7 @@
|
|||
height: 100rpx;
|
||||
font-size: 30rpx;
|
||||
color: var(--titleColor);
|
||||
font-weight: 500;
|
||||
}
|
||||
.value {
|
||||
width: 446rpx;
|
||||
|
|
@ -73,6 +75,7 @@
|
|||
height: 80rpx;
|
||||
font-size: 30rpx;
|
||||
color: var(--titleColor);
|
||||
font-weight: 500;
|
||||
}
|
||||
.desc {
|
||||
margin-left: 8rpx;
|
||||
|
|
@ -122,6 +125,7 @@
|
|||
width: 200rpx;
|
||||
height: 100rpx;
|
||||
font-size: 30rpx;
|
||||
font-weight: 500;
|
||||
color: var(--titleColor);
|
||||
}
|
||||
.input-ctr {
|
||||
|
|
@ -148,4 +152,4 @@
|
|||
color: var(--titleColor);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user