|
@@ -1,5 +1,4 @@
|
|
|
<template>
|
|
|
- <!-- #ifdef H5 -->
|
|
|
<zj-page-layout :isScroll="true" :refresherTriggered="refresherTriggered" @refresherrefresh="refresherrefresh">
|
|
|
<template slot="header">
|
|
|
<view class="search-container" v-if="isWorkerUser">
|
|
@@ -15,26 +14,6 @@
|
|
|
</template>
|
|
|
|
|
|
<view class="all-container">
|
|
|
- <!-- <view class="order-container card">
|
|
|
- <view class="home-title">
|
|
|
- <view class="left">我的订单</view>
|
|
|
- <view class="right" @tap="navToPage('/packageMine/pages/order/list?tab=', 1)">
|
|
|
- <text class="text">全部订单</text>
|
|
|
- <text class="iconfont icon-jinru"></text>
|
|
|
- </view>
|
|
|
- </view>
|
|
|
- <view class="list">
|
|
|
- <view class="item" v-for="(item, index) in orderList" :key="index"
|
|
|
- @tap="navToPage(`/packageMine/pages/order/list?tab=${item.key}`, 1)">
|
|
|
- <view class="icon">
|
|
|
- <text class="iconfont" :class="item.icon"></text>
|
|
|
- <u-badge max="99" :value="item.num" :absolute="true" :offset="[-4, -4]"></u-badge>
|
|
|
- </view>
|
|
|
- <view class="title">{{ item.title }}</view>
|
|
|
- </view>
|
|
|
- </view>
|
|
|
- </view> -->
|
|
|
-
|
|
|
<view class="order-container card">
|
|
|
<view class="home-title">
|
|
|
<view class="left">我的服务单</view>
|
|
@@ -95,16 +74,10 @@
|
|
|
</block>
|
|
|
</view>
|
|
|
</zj-page-layout>
|
|
|
- <!-- #endif -->
|
|
|
-
|
|
|
- <!-- #ifndef H5 -->
|
|
|
- <web-view :src="webViewHref(`/pages/workorder/index`, pam, crossPagePam)" @message="crossPage.$listener"></web-view>
|
|
|
- <!-- #endif -->
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
-// #ifdef H5
|
|
|
-import { selectionChange } from '@/common/utils/util.js';
|
|
|
+import { selectionChange } from '@/common/utils/util.js'
|
|
|
|
|
|
export default {
|
|
|
data() {
|
|
@@ -114,14 +87,62 @@ export default {
|
|
|
keyword: '',
|
|
|
|
|
|
statsList: [
|
|
|
- { name: '待接单', num: 0, icon: 'icon-daiyuyue', color: '#D8F6D8', url: '/packageWorkorder/pages/orderList?tab=DJD' },
|
|
|
- { name: '服务中', num: 0, icon: 'icon-daishangmen', color: '#FFEBDF', url: '/packageWorkorder/pages/orderList?tab=FWZ' },
|
|
|
- { name: '异常单', num: 0, icon: 'icon-daiwangong', color: '#D7F1FF', url: '/packageWorkorder/pages/orderList?tab=YCD' },
|
|
|
- { name: '待抢单', num: 0, icon: 'icon-daijiesuan', color: '#FFEED1', url: '/packageWorkorder/pages/orderList?tab=DQD' },
|
|
|
- { name: '今日完工', num: 0, icon: 'icon-tuojigongdan', color: '#D7F1FF', url: '/packageWorkorder/pages/orderList?tab=YWG' },
|
|
|
- { name: '近半年完工', num: 0, icon: 'icon-bannianwangong', color: '#D8F6D8', url: '/packageWorkorder/pages/orderList?tab=YWG' },
|
|
|
- { name: '配件申请中', num: 0, icon: 'icon-bannianwangong', color: '#D8F6D8', url: '/packageMaterial/pages/partsApply/list?tab=ING' },
|
|
|
- { name: '配件已到货', num: 0, icon: 'icon-bannianwangong', color: '#D8F6D8', url: '/packageMaterial/pages/partsApply/list?tab=END' },
|
|
|
+ {
|
|
|
+ name: '待接单',
|
|
|
+ num: 0,
|
|
|
+ icon: 'icon-daiyuyue',
|
|
|
+ color: '#D8F6D8',
|
|
|
+ url: '/packageWorkorder/pages/orderList?tab=DJD'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '服务中',
|
|
|
+ num: 0,
|
|
|
+ icon: 'icon-daishangmen',
|
|
|
+ color: '#FFEBDF',
|
|
|
+ url: '/packageWorkorder/pages/orderList?tab=FWZ'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '异常单',
|
|
|
+ num: 0,
|
|
|
+ icon: 'icon-daiwangong',
|
|
|
+ color: '#D7F1FF',
|
|
|
+ url: '/packageWorkorder/pages/orderList?tab=YCD'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '待抢单',
|
|
|
+ num: 0,
|
|
|
+ icon: 'icon-daijiesuan',
|
|
|
+ color: '#FFEED1',
|
|
|
+ url: '/packageWorkorder/pages/orderList?tab=DQD'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '今日完工',
|
|
|
+ num: 0,
|
|
|
+ icon: 'icon-tuojigongdan',
|
|
|
+ color: '#D7F1FF',
|
|
|
+ url: '/packageWorkorder/pages/orderList?tab=YWG'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '近半年完工',
|
|
|
+ num: 0,
|
|
|
+ icon: 'icon-bannianwangong',
|
|
|
+ color: '#D8F6D8',
|
|
|
+ url: '/packageWorkorder/pages/orderList?tab=YWG'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '配件申请中',
|
|
|
+ num: 0,
|
|
|
+ icon: 'icon-bannianwangong',
|
|
|
+ color: '#D8F6D8',
|
|
|
+ url: '/packageMaterial/pages/partsApply/list?tab=ING'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '配件已到货',
|
|
|
+ num: 0,
|
|
|
+ icon: 'icon-bannianwangong',
|
|
|
+ color: '#D8F6D8',
|
|
|
+ url: '/packageMaterial/pages/partsApply/list?tab=END'
|
|
|
+ }
|
|
|
],
|
|
|
|
|
|
scheduleList: [],
|
|
@@ -138,112 +159,119 @@ export default {
|
|
|
{ title: '服务中', icon: 'icon-daifuwu', key: 2, num: 0 },
|
|
|
{ title: '待评价', icon: 'icon-daipingjia1', key: 3, num: 0 },
|
|
|
{ title: '已完成', icon: 'icon-shouhou', key: 4, num: 0 }
|
|
|
- ],
|
|
|
+ ]
|
|
|
}
|
|
|
},
|
|
|
|
|
|
- computed:{
|
|
|
- isWorkerUser() { // 是否师傅
|
|
|
- return this.userInfo && this.userInfo.type === 'WORKER';
|
|
|
- },
|
|
|
+ computed: {
|
|
|
+ isWorkerUser() {
|
|
|
+ // 是否师傅
|
|
|
+ return this.userInfo && this.userInfo.type === 'WORKER'
|
|
|
+ }
|
|
|
},
|
|
|
|
|
|
onLoad() {
|
|
|
this.crossPage.$on('refreshUserWorkorderList', data => {
|
|
|
- if(this.isWorkerUser) {
|
|
|
- this.getOrderStats();
|
|
|
- this.getPartsStats();
|
|
|
- this.getSchedule();
|
|
|
+ if (this.isWorkerUser) {
|
|
|
+ this.getOrderStats()
|
|
|
+ this.getPartsStats()
|
|
|
+ this.getSchedule()
|
|
|
}
|
|
|
})
|
|
|
},
|
|
|
|
|
|
async onShow() {
|
|
|
- selectionChange();
|
|
|
+ selectionChange()
|
|
|
|
|
|
- this.userInfo = await this.$getUserInfo();
|
|
|
+ this.userInfo = await this.$getUserInfo()
|
|
|
|
|
|
- if(this.isWorkerUser) {
|
|
|
- this.getOrderStats();
|
|
|
- this.getPartsStats();
|
|
|
- this.getSchedule();
|
|
|
+ if (this.isWorkerUser) {
|
|
|
+ this.getOrderStats()
|
|
|
+ this.getPartsStats()
|
|
|
+ this.getSchedule()
|
|
|
}
|
|
|
},
|
|
|
|
|
|
onUnload() {
|
|
|
- this.crossPage.$off('refreshUserWorkorderList');
|
|
|
+ this.crossPage.$off('refreshUserWorkorderList')
|
|
|
},
|
|
|
|
|
|
methods: {
|
|
|
// 获取工单统计
|
|
|
async getOrderStats() {
|
|
|
return new Promise((resolve, reject) => {
|
|
|
- this.$api.post('/pg/order/base/status/count')
|
|
|
- .then(res => {
|
|
|
- this.statsList[0].num = res.data.djd;
|
|
|
- this.statsList[1].num = res.data.fwz;
|
|
|
- this.statsList[2].num = res.data.ycd;
|
|
|
- this.statsList[3].num = res.data.dqd;
|
|
|
- this.statsList[4].num = res.data.jrwg;
|
|
|
- this.statsList[5].num = res.data.jbnwg;
|
|
|
- }).finally(res => {
|
|
|
- resolve(1);
|
|
|
- })
|
|
|
+ this.$api
|
|
|
+ .post('/pg/order/base/status/count')
|
|
|
+ .then(res => {
|
|
|
+ this.statsList[0].num = res.data.djd
|
|
|
+ this.statsList[1].num = res.data.fwz
|
|
|
+ this.statsList[2].num = res.data.ycd
|
|
|
+ this.statsList[3].num = res.data.dqd
|
|
|
+ this.statsList[4].num = res.data.jrwg
|
|
|
+ this.statsList[5].num = res.data.jbnwg
|
|
|
+ })
|
|
|
+ .finally(res => {
|
|
|
+ resolve(1)
|
|
|
+ })
|
|
|
})
|
|
|
},
|
|
|
|
|
|
// 获取配件申请统计
|
|
|
async getPartsStats() {
|
|
|
return new Promise((resolve, reject) => {
|
|
|
- this.$api.post('/material/parts/apply/count')
|
|
|
- .then(res => {
|
|
|
- this.statsList[6].num = res.data.partsIngCount;
|
|
|
- this.statsList[7].num = res.data.partsEndCount;
|
|
|
- }).finally(res => {
|
|
|
- resolve(1);
|
|
|
- })
|
|
|
+ this.$api
|
|
|
+ .post('/material/parts/apply/count')
|
|
|
+ .then(res => {
|
|
|
+ this.statsList[6].num = res.data.partsIngCount
|
|
|
+ this.statsList[7].num = res.data.partsEndCount
|
|
|
+ })
|
|
|
+ .finally(res => {
|
|
|
+ resolve(1)
|
|
|
+ })
|
|
|
})
|
|
|
},
|
|
|
|
|
|
// 获取日程
|
|
|
async getSchedule() {
|
|
|
return new Promise((resolve, reject) => {
|
|
|
- this.$api.post('/pg/order/base/my/schedule')
|
|
|
- .then(res => {
|
|
|
- let list = [];
|
|
|
- for (var i = 0; i < res.data.dayList.length; i++) {
|
|
|
- list.push({
|
|
|
- week: res.data.weekList[i],
|
|
|
- day: res.data.dayList[i],
|
|
|
- djd: res.data.djdList[i],
|
|
|
- fwz: res.data.fwzList[i]
|
|
|
- });
|
|
|
- }
|
|
|
- this.scheduleList = list;
|
|
|
- }).finally(res => {
|
|
|
- resolve(1);
|
|
|
- })
|
|
|
+ this.$api
|
|
|
+ .post('/pg/order/base/my/schedule')
|
|
|
+ .then(res => {
|
|
|
+ let list = []
|
|
|
+ for (var i = 0; i < res.data.dayList.length; i++) {
|
|
|
+ list.push({
|
|
|
+ week: res.data.weekList[i],
|
|
|
+ day: res.data.dayList[i],
|
|
|
+ djd: res.data.djdList[i],
|
|
|
+ fwz: res.data.fwzList[i]
|
|
|
+ })
|
|
|
+ }
|
|
|
+ this.scheduleList = list
|
|
|
+ })
|
|
|
+ .finally(res => {
|
|
|
+ resolve(1)
|
|
|
+ })
|
|
|
})
|
|
|
},
|
|
|
|
|
|
// 下拉刷新
|
|
|
async refresherrefresh() {
|
|
|
- this.refresherTriggered = true;
|
|
|
- if(this?.isWorkerUser && this?.type != 2) {
|
|
|
- await this.getOrderStats();
|
|
|
- await this.getPartsStats();
|
|
|
- await this.getSchedule();
|
|
|
+ this.refresherTriggered = true
|
|
|
+ if (this?.isWorkerUser && this?.type != 2) {
|
|
|
+ await this.getOrderStats()
|
|
|
+ await this.getPartsStats()
|
|
|
+ await this.getSchedule()
|
|
|
}
|
|
|
this.$nextTick(() => {
|
|
|
setTimeout(() => {
|
|
|
- this.refresherTriggered = false;
|
|
|
- },200)
|
|
|
+ this.refresherTriggered = false
|
|
|
+ }, 200)
|
|
|
})
|
|
|
},
|
|
|
|
|
|
clickItem(item) {
|
|
|
- if(!item.url) return false;
|
|
|
- this.navToPage(item.url);
|
|
|
+ if (!item.url) return false
|
|
|
+ this.navToPage(item.url)
|
|
|
},
|
|
|
|
|
|
searchData() {
|
|
@@ -254,29 +282,9 @@ export default {
|
|
|
this.$navToPage({
|
|
|
url
|
|
|
})
|
|
|
- },
|
|
|
- },
|
|
|
-}
|
|
|
-
|
|
|
-// #endif
|
|
|
-// #ifndef H5
|
|
|
-
|
|
|
-import { getNoticeNum, getOrderNum } from '@/common/utils/util.js';
|
|
|
-
|
|
|
-export default {
|
|
|
- data() {
|
|
|
- return {
|
|
|
- pam: {},
|
|
|
}
|
|
|
- },
|
|
|
- onLoad(pam) {
|
|
|
- this.pam = pam;
|
|
|
-
|
|
|
- getNoticeNum()
|
|
|
- getOrderNum()
|
|
|
}
|
|
|
}
|
|
|
-// #endif
|
|
|
</script>
|
|
|
|
|
|
<style lang="scss" scoped>
|