<template>
|
<view>
|
<view class="header">
|
<search-bar @confirm="search" class="mb-0" placeholder="输入会员姓名、手机号、订单号查询"></search-bar>
|
</view>
|
<view>
|
<h-tabs
|
class="tab"
|
:activeIndex="orderStatus"
|
@tabClick="tabChange"
|
:tabData="tabs"
|
:config="{
|
color: '#abb1cc',
|
activeColor: '#518EFF',
|
underLineColor: '#518EFF',
|
underLineHeight: 4,
|
fontSize: '28',
|
underLineWidth: 60
|
}"
|
/>
|
<view class="list">
|
<navigator :url="'./serviceOrderDetail?id='+item.id" class="list-item" v-for="item in list">
|
<view class="list-header">
|
<text>订单号: {{item.serviceNo}}</text>
|
<text class="gray">{{item.time}}</text>
|
</view>
|
<view class="list-content">
|
<view class="flex flex-v">
|
<view>
|
<image src="../../static/images/order-icon1.png" class="icon"></image>
|
<text>{{item.vipName}}</text>
|
</view>
|
<view class="flex mt-10">
|
<image src="../../static/images/order-icon2.png" class="icon" style="padding-top: 3px;"></image>
|
<view>
|
<text class="block" :class="index===0?'':'mt-5'" v-for="(op, index) in item.projs">{{op.projName}}</text>
|
</view>
|
</view>
|
<view class="mt-10">
|
<image src="../../static/images/order-icon3.png" class="icon"></image>
|
<text>{{item.bed || '-'}}</text>
|
</view>
|
|
</view>
|
<view class="flex flex-v right" style="flex: 0 0 70px;">
|
<text class="gray mb-5">{{item.timeLength}}分钟</text>
|
<text class="gray mt-5" v-for="(op, index) in item.projs">{{op.beautyName || '-'}}</text>
|
<text class="mt-10" :class="item.status==7 || item.status==8?'gray':'blue'">{{item.status | formatStatus}}</text>
|
</view>
|
</view>
|
<view :class="isShowFooter(item.status, item.projs, item.staffId)?'list-footer':''">
|
<text class="white-btn small-btn"
|
v-if="isShowCancelBtn(item.status, item.projs, item.staffId)"
|
@click.stop="cancelOrder(item.id)">
|
取消
|
</text>
|
<text class="blue-btn small-btn ml-10"
|
v-if="isShowOrder(item.status)"
|
@click.stop="">
|
确认预约
|
</text>
|
<text class="blue-btn small-btn ml-10"
|
v-if="isShowStartServiceBtn(item.status, item.projs)"
|
@click.stop="startService(item.id)">
|
开始服务
|
</text>
|
<text class="blue-btn small-btn ml-10"
|
v-if="isShowEndServiceBtn(item.status, item.projs)"
|
@click.stop="endService(item.id)">
|
结束服务
|
</text>
|
</view>
|
</navigator>
|
<no-record :isShow="!list.length" txt="暂无服务单记录"></no-record>
|
</view>
|
</view>
|
</view>
|
</template>
|
|
<script>
|
import HTabs from "@/components/liuyuno-tabs/liuyuno-tabs.vue";
|
import searchBar from '../../components/searchBar/index.vue';
|
export default {
|
components: {
|
HTabs,
|
searchBar
|
},
|
data() {
|
return {
|
queryKey: '',
|
orderStatus: 0,
|
tabs:[
|
{
|
state: 0,
|
name: '全部'
|
},
|
{
|
state: 1,
|
name: '待确认'
|
},
|
{
|
state: 8,
|
name: '待排班'
|
},
|
{
|
state: 2,
|
name: '待配料'
|
},
|
{
|
state: 3,
|
name: '待服务'
|
},
|
{
|
state: 4,
|
name: '服务中'
|
},
|
{
|
state: 5,
|
name: '已完成'
|
}
|
],
|
list: [],
|
userId: ''
|
}
|
},
|
onLoad(options) {
|
if(options.status){
|
this.orderStatus = Number(options.status);
|
}
|
this.loadList();
|
this.userId = this.$httpUtils.getRoleInfo().id;
|
// 判断权限
|
// #ifdef APP-PLUS
|
if(!this.$utils.hasPermission('fwdgl.add')){
|
let webView = this.$mp.page.$getAppWebview();
|
webView.setTitleNViewButtonStyle(0, {
|
width: 0,
|
});
|
}
|
// #endif
|
},
|
onNavigationBarButtonTap(Object){
|
if(Object.key === 'add'){
|
uni.navigateTo({
|
url: './selectCustomer?type=2'
|
})
|
}
|
},
|
methods:{
|
loadList(){
|
this.$httpUtils.request('/api/serviceOrder/findServiceOrderList', {
|
pageNum: 1,
|
pageSize: 100,
|
queryKey: this.queryKey,
|
status: this.orderStatus
|
}, 'POST').then((res) => {
|
if(res.status == 200){
|
this.list = res.rows;
|
}
|
})
|
},
|
// 是否显示操作按钮
|
isShowFooter(status, items, staffId){
|
return this.isShowCancelBtn(status, items, staffId) ||
|
this.isShowStartServiceBtn(status, items) ||
|
this.isShowEndServiceBtn(status, items) ||
|
this.isShowOrder(status)
|
},
|
// 是否显示取消按钮
|
isShowCancelBtn(status, items, staffId){
|
// 美疗师和下单顾问可以取消服务
|
let isEnable = (items.some((item) => item.id == this.userId)) || (this.userId == staffId);
|
return status != 5 && status != 6 && status != 7 && status != 8 && isEnable && this.$utils.hasPermission('fwdgl.cancel');
|
},
|
// 是否显示确认预约
|
isShowOrder(status){
|
return status == 1 && this.$utils.hasPermission('fwdgl.qryy');
|
},
|
// 是否显示开始服务按钮
|
isShowStartServiceBtn(status, items){
|
// 只有美疗师本人才可以开始服务
|
let isEnable = items.some((item) => item.id == this.userId)
|
return status == 4 && isEnable && this.$utils.hasPermission('fwdgl.begin');
|
},
|
// 是否显示结束服务按钮
|
isShowEndServiceBtn(status, items){
|
// 只有美疗师本人才可以开始服务
|
let isEnable = items.some((item) => item.id == this.userId)
|
return status == 5 && isEnable && this.$utils.hasPermission('fwdgl.end');
|
},
|
search(val){
|
this.queryKey = val;
|
this.loadList();
|
},
|
tabChange(index){
|
if(this.orderStatus === index){
|
return;
|
}
|
this.orderStatus = index;
|
this.loadList();
|
},
|
// 取消订单
|
cancelOrder(id){
|
uni.showModal({
|
title: '提示',
|
content: '确定取消服务吗?',
|
success: (res) => {
|
if (res.confirm) {
|
this.$httpUtils.request('/api/serviceOrder/cancelService/'+id).then((res) => {
|
if(res.status == 200){
|
this.loadList()
|
}
|
this.$toast.info(res.info);
|
})
|
}
|
}
|
});
|
},
|
//开始服务
|
startService(id){
|
uni.showModal({
|
title: '提示',
|
content: '确定开始服务吗?',
|
success: (res) => {
|
if (res.confirm) {
|
this.$httpUtils.request('/api/serviceOrder/startService/'+id).then((res) => {
|
if(res.status == 200){
|
this.loadList()
|
}
|
this.$toast.info(res.info);
|
})
|
}
|
}
|
});
|
},
|
// 结束服务
|
endService(id){
|
uni.showModal({
|
title: '提示',
|
content: '确定结束服务吗?',
|
success: (res) => {
|
if (res.confirm) {
|
this.$httpUtils.request('/api/serviceOrder/stopService/'+id).then((res) => {
|
if(res.status == 200){
|
this.loadList()
|
}
|
this.$toast.info(res.info);
|
})
|
}
|
}
|
});
|
}
|
},
|
filters:{
|
// 状态 1-待预约 2-待派单 3-待配料 4-待服务 5-服务中 6-服务完成 7-服务单结束 8-服务单取消
|
formatStatus(val){
|
if(val==1){
|
return '待预约'
|
} else if(val == 2){
|
return '待派单'
|
} else if(val == 3){
|
return '待配料'
|
} else if(val == 4){
|
return '待服务'
|
} else if(val == 5){
|
return '服务中'
|
} else if(val == 6){
|
return '已完成'
|
} else if(val == 7){
|
return '服务单结束'
|
} else {
|
return '已取消'
|
}
|
},
|
}
|
}
|
</script>
|
|
<style>
|
page{
|
background: #F6F6F8;
|
}
|
.header{
|
padding: 10px 10px 5px;
|
background: #FFFFFF;
|
}
|
.tab{
|
background: #FFFFFF;
|
border-bottom: 1px solid #EDEAF4;
|
}
|
.list-item{
|
background: #FFFFFF;
|
border-radius: 4px;
|
margin: 10px;
|
color: #3a3f3f;
|
padding: 0 10px;
|
}
|
.list-header{
|
display: flex;
|
justify-content: space-between;
|
padding: 12px 0;
|
font-size: 15px;
|
border-bottom: 1px solid #EDEAF4;
|
}
|
.list-content{
|
display: flex;
|
justify-content: space-between;
|
align-items: center;
|
padding: 12px 0;
|
font-size: 14px;
|
}
|
.list-content .icon{
|
width: 16px;
|
height: 16px;
|
vertical-align: sub;
|
margin-right: 10px;
|
}
|
.list-footer{
|
display: flex;
|
justify-content: flex-end;
|
padding: 10px 0;
|
border-top: 1px solid #EDEAF4;
|
}
|
</style>
|