flying-monkey/pages/workOrder/workOrderLlsit.vue

453 lines
11 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" @keydown.enter="getDatalist()" class="int" v-model="dataPage.keyword" value="" placeholder="请输入关键字" />
<image @click="getDatalist()" 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="'name'">
<view class="li">
<view class="text" v-if="workeOrderStatus!=''">{{workeOrderStatus}}</view>
<view class="text" v-else>{{array[workeOrderStatusIndex].name}}</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.order_number}}</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.project_name}}</view>
<view class="icon" :style="{backgroundColor: item.attributes.color}">{{item.attributes.text
}}</view>
</view>
<view class="disjb fc" style="margin-left: -20rpx;height: 70%;">
<view class="serial-number scal09">
<view class="type">#{{item.fault_type}}#</view>
<view class="date">{{item.failure_time}}</view>
</view>
<view class="specification scal09">
紧急程度<view class="text"> {{item.principal}}</view>
</view>
<view class="specification scal09">主负责人{{item.name}}</view>
<view class="installation-site scal09">故障描述{{item.failure_description}}</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: [
],
workeOrderStatusIndex: 0,
dataPage:{
list_rows:10,
page:1,
// order_status:"",
// order_times:"",
// keyword:""
},
dataList:[
]
}
},
onLoad(option) {
// 调用获取工单状态事件
this.getType(option);
},
methods: {
// 获取工单状态
getType(option){
this.$requst.get('/universal/api.order/order_type').then(res => {
// this.$toolAll.tools.showToast(res.msg);
if (res.code) {
this.array=[...res.data]
// 调用获取工单列表事件
if(option.status){
this.workeOrderStatusIndex = this.array.findIndex(item=>item.id==option.status);
if(this.workeOrderStatusIndex!=-1) this.workeOrderStatus = '';
}
this.getDatalist();
} else {
}
})
},
// 获取工单列表
getDatalist(){
this.$requst.get('/universal/api.order/order_list',this.dataPage).then(res => {
// this.$toolAll.tools.showToast(res.msg);
if (res.code) {
this.dataList = res.data.data
} else if(res.code == 0){
this.dataList = res.data.data
}
})
},
// 催一催事件
hurryUpEv(id) {
this.$toolAll.tools.showToast(`已催单成功`);
},
// 查看工单详情和进入接单页面
projectDetailsFun(status,id,statusText,statusColor) {
// if (uni.getStorageSync('type_id')==4 && status == 3) {
if (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) {
this.workeOrderStatus = '';
this.workeOrderStatusIndex = data.detail.value;
console.log( data.detail.value)
this.dataPage.order_status=this.array[data.detail.value].id-0
this.getDatalist()
},
bindDateChange(date) {
this.dataPage.order_times=date.detail.value
this.getDatalist()
},
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>