| | |
| | | <template> |
| | | <view> |
| | | <view class="header"> |
| | | <search-bar class="mb-0" placeholder="输入会员姓名、手机号、订单号查询"></search-bar> |
| | | <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', |
| | |
| | | }" |
| | | /> |
| | | <view class="list"> |
| | | <navigator url="./serviceOrderDetail" class="list-item" v-for="item in 4"> |
| | | <navigator :url="'./serviceOrderDetail?id='+item.id" class="list-item" v-for="item in list"> |
| | | <view class="list-header"> |
| | | <text>订单号: N202012123556</text> |
| | | <text class="gray">2020-12-15 18:11</text> |
| | | <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>李广</text> |
| | | <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>肽补水·无创水光管理</text> |
| | | <text class="block mt-5">肽补水·无创水光管理</text> |
| | | <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>VIP-2(星海店)</text> |
| | | <text>{{item.bed || '-'}}</text> |
| | | </view> |
| | | |
| | | </view> |
| | | <view class="flex flex-v right"> |
| | | <text class="gray">90分钟</text> |
| | | <text class="gray mt-10">莉莉</text> |
| | | <text class="gray mt-5">雯雯</text> |
| | | <text class="blue mt-10">待付款</text> |
| | | <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="list-footer"> |
| | | <text class="white-btn small-btn">取消</text> |
| | | <text class="blue-btn small-btn ml-10">开始服务</text> |
| | | <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="confirmServiceOrder(item.id)"> |
| | | 确认预约 |
| | | </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 v-if="list.length"> |
| | | <uni-load-more :status="loadStatus" color="#a5abaf"></uni-load-more> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | |
| | | <script> |
| | | import HTabs from "@/components/liuyuno-tabs/liuyuno-tabs.vue"; |
| | | import searchBar from '../../components/searchBar/index.vue'; |
| | | import uniLoadMore from '@/components/uni-load-more/uni-load-more.vue'; |
| | | export default { |
| | | components: { |
| | | HTabs, |
| | | searchBar |
| | | searchBar, |
| | | uniLoadMore |
| | | }, |
| | | data() { |
| | | return { |
| | | queryKey: '', |
| | | orderStatus: 0, |
| | | tabs:[ |
| | | { |
| | | state: 1, |
| | | state: 0, |
| | | name: '全部' |
| | | }, |
| | | { |
| | | state: 1, |
| | | name: '待确认' |
| | | }, |
| | | { |
| | | state: 2, |
| | | name: '待预约' |
| | | name: '待排班' |
| | | }, |
| | | { |
| | | state: 3, |
| | |
| | | name: '已完成' |
| | | } |
| | | ], |
| | | list: [], |
| | | userId: '', |
| | | loadStatus: 'more', |
| | | pageNum: 1 |
| | | } |
| | | }, |
| | | onLoad(options) { |
| | | if(options.status){ |
| | | this.orderStatus = Number(options.status); |
| | | } |
| | | if(options.queryKey){ |
| | | this.queryKey = options.queryKey; |
| | | } |
| | | 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 |
| | | }, |
| | | onPullDownRefresh(){ |
| | | this.reloadData(); |
| | | let timer = setTimeout(function () { |
| | | uni.stopPullDownRefresh(); |
| | | clearTimeout(timer); |
| | | timer = null; |
| | | }, 800); |
| | | }, |
| | | onReachBottom(){ |
| | | this.loadList() |
| | | }, |
| | | onNavigationBarButtonTap(Object){ |
| | | if(Object.key === 'add'){ |
| | | uni.navigateTo({ |
| | | url: './selectCustomer?type=2' |
| | | }) |
| | | } |
| | | }, |
| | | methods:{ |
| | | reloadData(){ |
| | | this.list = []; |
| | | this.pageNum = 1; |
| | | this.loadStatus = 'more'; |
| | | this.loadList(); |
| | | }, |
| | | loadList(){ |
| | | if(this.loadStatus!=='more'){ |
| | | return; |
| | | } |
| | | this.$httpUtils.request('/api/serviceOrder/findServiceOrderList', { |
| | | pageNum: this.pageNum, |
| | | pageSize: 10, |
| | | queryKey: this.queryKey, |
| | | status: this.orderStatus |
| | | }, 'POST').then((res) => { |
| | | if(res.status == 200){ |
| | | let result = res.rows; |
| | | if(result.length < 10){ |
| | | this.loadStatus = 'noMore'; |
| | | } else { |
| | | this.pageNum ++ ; |
| | | this.loadStatus = 'more'; |
| | | } |
| | | this.list = this.list.concat(result); |
| | | } |
| | | }) |
| | | }, |
| | | // 是否显示操作按钮 |
| | | 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 == 9 && 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.reloadData(); |
| | | }, |
| | | tabChange(index){ |
| | | if(this.orderStatus === index){ |
| | | return; |
| | | } |
| | | this.orderStatus = index; |
| | | this.reloadData(); |
| | | }, |
| | | // 取消订单 |
| | | 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.reloadData() |
| | | } |
| | | this.$toast.info(res.info); |
| | | }) |
| | | } |
| | | } |
| | | }); |
| | | }, |
| | | // 确认预约 |
| | | confirmServiceOrder(id){ |
| | | uni.showModal({ |
| | | title: '提示', |
| | | content: '确认预约吗?', |
| | | success: (res) => { |
| | | if (res.confirm) { |
| | | this.$httpUtils.request('/api/serviceOrder/confirmServiceOrder', { |
| | | id:id |
| | | }, 'POST').then((res) => { |
| | | if(res.status == 200){ |
| | | this.reloadData() |
| | | } |
| | | 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.reloadData() |
| | | } |
| | | 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.reloadData() |
| | | } |
| | | 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 if(val == 9){ |
| | | return '待确认' |
| | | } else { |
| | | return '已取消' |
| | | } |
| | | }, |
| | | } |
| | | } |
| | | </script> |