flying-monkey/pages/workOrder/workOrderLlsit.vue

540 lines
14 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<view class="content">
<status-nav navBarTitle="工单列表" returnColor="#c2c2c2"></status-nav>
<container-subgroup-two>
<view slot="content" style="margin: -25rpx -25rpx -0rpx;">
<view class="project-list-input" :style="{top:statusBarHeight + 'px'}">
<input type="text" class="int" value="" placeholder="请输入关键字" />
<image class="search" src="../../static/iocn/ss.png" mode=""></image>
<view class="xian"></view>
</view>
<view class="screen">
<!-- 筛选状态查询日期查询 -->
<picker @change="bindPickerChange" :value="workeOrderStatusIndex" :range="array" :range-key="'title'">
<view class="li">
<view class="text" v-if="workeOrderStatus!=''">{{workeOrderStatus}}</view>
<view class="text" v-else>{{array[workeOrderStatusIndex].title}}</view>
<image class="img" src="../../static/iocn/xla.png" mode="aspectFill"></image>
</view>
</picker>
<picker mode="date" :value="date" @change="bindDateChange">
<view class="li">
<view class="text">工单日期</view>
<image class="img" src="../../static/iocn/xla.png" mode="aspectFill"></image>
</view>
</picker>
<view class="li">
<view class="text">筛选</view>
<image class="imgA" src="../../static/iocn/sx.png" mode="aspectFill"></image>
</view>
</view>
<view class="project-list">
<!-- 列表循环体 -->
<view class="li" @click="projectDetailsFun(item.status,item.id,item.statusText,item.backgroundColor)" v-for="(item,index) in dataList" :key="index">
<view class="work-order-code">工单编号{{item.orderNum}}</view>
<view class="message">
<image class="img" src="../../static/del/img001.png" mode="aspectFill"></image>
<view class="text">
<view class="title">
<view class="text clips1">{{item.title}}</view>
<view class="icon" :style="{backgroundColor: item.backgroundColor}">{{['','待受理','等待派工','待接单','待维修','维修中','待收款','待审批','已完成','待回访','异常单','逾期单','超时单'][item.status]}}</view>
</view>
<view class="disjb fc" style="margin-left: -20rpx;height: 70%;">
<view class="serial-number scal09">
<view class="type">{{item.faultType}}</view>
<view class="date">已故障{{item.faultTime}}</view>
</view>
<view class="specification scal09">
紧急程度<view class="text"> {{item.urgentText}}</view>
</view>
<view class="specification scal09">主负责人{{item.name}}</view>
<view class="installation-site scal09">故障描述{{item.describe}}</view>
</view>
</view>
</view>
<view class="project-list-address">
<view class="address clips2">
<image class="img" src="../../static/iocn/dz2.png" mode="aspectFill"></image>
<view class="text">{{item.address}}</view>
</view>
<!-- 订单不等于已完成和待回访并且访问人不是工程师 -->
<view @tap.stop="hurryUpEv(item.id)" class="date" v-if="item.status!=8 && item.status!=9 && role!=4">
催一催 <image class="img" src="../../static/iocn/ld.png" mode=""></image>
</view>
</view>
</view>
</view>
</view>
</container-subgroup-two>
</view>
</template>
<script>
import containerSubgroupTwo from '@/components/containers/container-subgroup-two.vue';
import statusNav from '../../components/status-nav.vue';
import footTabOne from "../../components/foot-tabs/foot-tab-one.vue"
export default {
components: {
footTabOne,
statusNav,
containerSubgroupTwo
},
data() {
const currentDate = this.getDate({
format: true
})
return {
statusBarHeight: uni.getSystemInfoSync().statusBarHeight + 40,
role: 1, // 1业务员 2:表示客户 3:表示客服 4表示工程师
date: currentDate,
workeOrderStatus:'工单状态',
array: [
{id:1,title:'待受理'},
{id:2,title:'待指派'},
{id:3,title:'待接单'},
{id:4,title:'待维修'},
{id:5,title:'维修中'},
{id:6,title:'待收款'},
{id:7,title:'待审批'},
{id:8,title:'已收款'},
{id:9,title:'待回访'},
{id:10,title:'异常单'},
{id:11,title:'逾期单'},
{id:12,title:'超时单'}
],
workeOrderStatusIndex: 0,
dataList:[
{
id:1,
orderNum:'222226666558',
title:'长沙市望城区xxxxxx项目名称',
status:1,
statusText:'待受理',
backgroundColor:'#ff0000',
faultType:'#网络故障#',
faultTime:'2小时37分',
urgentText:'加急',
name:'陈志远',
describe:'LED显示屏开机后闪屏不显示内容。主控电脑提示网络不通',
address:'湖南省长沙市高新开发区谷园路109号像素大厦1205'
},
{
id:2,
orderNum:'222226666558',
title:'长沙市望城区xxxxxx项目名称',
status:2,
statusText:'待指派',
backgroundColor:'#112233',
faultType:'#网络故障#',
faultTime:'2小时37分',
urgentText:'加急',
name:'陈志远',
describe:'LED显示屏开机后闪屏不显示内容。主控电脑提示网络不通',
address:'湖南省长沙市高新开发区谷园路109号像素大厦1205'
},
{
id:3,
orderNum:'222226666558',
title:'长沙市望城区xxxxxx项目名称',
status:3,
statusText:'待接单',
backgroundColor:'#ff00ff',
faultType:'#网络故障#',
faultTime:'2小时37分',
urgentText:'加急',
name:'陈志远',
describe:'LED显示屏开机后闪屏不显示内容。主控电脑提示网络不通',
address:'湖南省长沙市高新开发区谷园路109号像素大厦1205'
},
{
id:3,
orderNum:'222226666558',
title:'长沙市望城区xxxxxx项目名称',
status:4,
statusText:'待维修',
backgroundColor:'#303545',
faultType:'#网络故障#',
faultTime:'2小时37分',
urgentText:'加急',
name:'陈志远',
describe:'LED显示屏开机后闪屏不显示内容。主控电脑提示网络不通',
address:'湖南省长沙市高新开发区谷园路109号像素大厦1205'
},
{
id:3,
orderNum:'222226666558',
title:'长沙市望城区xxxxxx项目名称',
status:5,
statusText:'维修中',
backgroundColor:'#006677',
faultType:'#网络故障#',
faultTime:'2小时37分',
urgentText:'加急',
name:'陈志远',
describe:'LED显示屏开机后闪屏不显示内容。主控电脑提示网络不通',
address:'湖南省长沙市高新开发区谷园路109号像素大厦1205'
},
{
id:3,
orderNum:'222226666558',
title:'长沙市望城区xxxxxx项目名称',
status:6,
statusText:'待收款',
backgroundColor:'#669955',
faultType:'#网络故障#',
faultTime:'2小时37分',
urgentText:'加急',
name:'陈志远',
describe:'LED显示屏开机后闪屏不显示内容。主控电脑提示网络不通',
address:'湖南省长沙市高新开发区谷园路109号像素大厦1205'
},
{
id:3,
orderNum:'222226666558',
title:'长沙市望城区xxxxxx项目名称',
status:7,
statusText:'待审批',
backgroundColor:'#558899',
faultType:'#网络故障#',
faultTime:'2小时37分',
urgentText:'加急',
name:'陈志远',
describe:'LED显示屏开机后闪屏不显示内容。主控电脑提示网络不通',
address:'湖南省长沙市高新开发区谷园路109号像素大厦1205'
},
{
id:3,
orderNum:'222226666558',
title:'长沙市望城区xxxxxx项目名称',
status:8,
statusText:'已完成',
backgroundColor:'#336655',
faultType:'#网络故障#',
faultTime:'2小时37分',
urgentText:'加急',
name:'陈志远',
describe:'LED显示屏开机后闪屏不显示内容。主控电脑提示网络不通',
address:'湖南省长沙市高新开发区谷园路109号像素大厦1205'
},
{
id:3,
orderNum:'222226666558',
title:'长沙市望城区xxxxxx项目名称',
status:9,
statusText:'待回访',
backgroundColor:'#224455',
faultType:'#网络故障#',
faultTime:'2小时37分',
urgentText:'加急',
name:'陈志远',
describe:'LED显示屏开机后闪屏不显示内容。主控电脑提示网络不通',
address:'湖南省长沙市高新开发区谷园路109号像素大厦1205'
},
]
}
},
onLoad(op) {
this.workeOrderStatusIndex = this.array.findIndex(item=>item.title==op.status);
if(this.workeOrderStatusIndex!=-1) this.workeOrderStatus = '';
},
methods: {
// 催一催事件
hurryUpEv(id) {
this.$toolAll.tools.showToast(`已催单成功`);
},
// 查看工单详情和进入接单页面
projectDetailsFun(status,id,statusText,statusColor) {
if (uni.getStorageSync('type_id')==4 && status == 3) {
// 工程师点击待接单工单
uni.showModal({
cancelText:'取消',
cancelColor:'#999999',
confirmColor:'#03affb',
confirmText:'确认',
content:'确认接单',
success: (res) => {
if(res.confirm){
uni.navigateTo({
url: `/pages/workOrder/workOrder?id=${id}`
})
}
}
})
} else {
// 客户、客服、业务员、工程师点击查看详情
uni.navigateTo({
url: `/pages/workOrder/details?id=${id}&status=${status}&statusText=${statusText}&statusColor=${statusColor}`
})
}
},
bindPickerChange(data) {
console.log(data)
this.workeOrderStatus = '';
this.workeOrderStatusIndex = data.detail.value;
},
bindDateChange(date) {
console.log(date)
},
getDate(type) {
const date = new Date();
let year = date.getFullYear();
let month = date.getMonth() + 1;
let day = date.getDate();
if (type === 'start') {
year = year - 60;
} else if (type === 'end') {
year = year + 2;
}
month = month > 9 ? month : '0' + month;
day = day > 9 ? day : '0' + day;
console.log(year, month, day)
return `${year}-${month}-${day}`;
}
}
}
</script>
<style scoped>
page {
background-color: #F7F7F7;
}
.project-list-input .xian {
width: 3rpx;
height: 35rpx;
position: absolute;
background-color: #EAEAEA;
right: 100rpx;
top: 50%;
margin-top: -14rpx;
}
.project-list-input {
width: 100%;
height: 114rpx;
position: fixed;
z-index: 2;
padding: 20rpx 16rpx;
box-sizing: border-box;
background-color: #FFFFFF
}
.project-list-input .int {
width: 100%;
height: 100%;
background-color: #F7F7F7;
padding: 0 25rpx;
box-sizing: border-box;
border-radius: 36rpx;
}
.project-list-input .search {
width: 28rpx;
height: 28rpx;
position: absolute;
right: 43rpx;
top: 50%;
margin-top: -14rpx;
}
.screen {
display: flex;
justify-content: space-around;
padding: 25rpx 20rpx;
border-bottom: 2rpx solid #E6E6E6;
border-top: 2rpx solid #E6E6E6;
margin: 20rpx 0rpx;
margin-top: 57px;
}
.screen .li {
display: flex;
align-items: center;
}
.screen .li .text {
font-size: 32rpx;
color: #333333;
margin-right: 10rpx;
}
.screen .li .img {
width: 14rpx;
height: 8rpx;
position: relative;
z-index: 1;
}
.screen .li .imgA {
width: 24rpx;
height: 23rpx;
}
.project-list .li {
width: 710rpx;
box-sizing: border-box;
background-color: #FFFFFF;
position: relative;
margin: auto;
margin-bottom: 20rpx;
padding: 33rpx 23rpx;
}
.project-list .li .iconBer {
background-image: url(../../static/iocn/za.png);
}
.project-list .li .iconBera {
background-image: url(../../static/iocn/zaa.png);
}
.project-list .li .message {
display: flex;
}
.project-list .li .message .img {
width: 230rpx;
margin-right: 11rpx;
height: 180rpx;
}
.project-list .li .message .text {
flex: 1;
}
.project-list .li .message .text .title {
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
overflow: hidden;
text-overflow: ellipsis;
word-wrap: break-word;
word-break: break-all;
margin-bottom: 5rpx;
font-size: 24rpx;
display: flex;
align-items: center;
line-height: 29rpx;
color: #333333;
font-weight: bold;
}
.project-list .li .message .text .title .text {
width: 60%;
}
.project-list .li .message .text .title .icon {
font-size: 24rpx;
width: 120rpx;
height: 40rpx;
background-color: #ff5400;
border-radius: 50rpx;
color: #FFFFFF;
text-align: center;
line-height: 40rpx;
}
.project-list .li .message .text .title .icon1 {
background-color: #00a2e9;
}
.project-list .li .message .text .title .icon3 {
background-color: #009a44;
}
.project-list .li .message .serial-number {
color: #9b9ba3;
font-size: 24rpx;
margin-bottom: 10rpx;
line-height: 24rpx;
display: flex;
}
.project-list .li .message .serial-number .type {
margin-right: 60rpx;
}
.project-list .li .message .specification {
color: #9b9ba3;
font-size: 24rpx;
margin-bottom: 10rpx;
display: flex;
line-height: 24rpx;
}
.project-list .li .message .specification .text {
color: #e90000;
}
.project-list .li .message .installation-site {
color: #9b9ba3;
font-size: 24rpx;
line-height: 24rpx;
}
.project-list-address {
display: flex;
margin-top: 15rpx;
color: #9b9ba3;
align-items: center;
justify-content: space-between;
width: 100%;
}
.project-list-address .text {
font-size: 22rpx;
flex: 1;
}
.project-list-address .date {
font-size: 24rpx;
text-align: right;
margin-left: 20rpx;
align-items: center;
display: flex;
color: #e90000;
}
.project-list-address .date .img {
width: 26rpx;
height: 24rpx;
margin-left: 5rpx;
}
.project-list-address .address .img {
width: 22rpx;
height: 30rpx;
margin-right: 10rpx;
}
.project-list-address .address {
display: flex;
align-items: center;
width: 80%;
}
.project-list .work-order-code {
font-size: 24rpx;
color: #9b9ba3;
margin-bottom: 26rpx;
}
.pickerDate {
width: 300rpx;
height: 300rpx;
}
</style>