bike/page_fix/repair/repair_index.vue
2024-09-02 17:13:16 +08:00

640 lines
16 KiB
Vue

<template>
<view class="page">
<u-navbar title="报修单" :border-bottom="false" :background="bgc" title-color='#000' title-size='36'
height='45'></u-navbar>
<view class="top">
<view class="search_box">
<view class="search_center">
<input type="text" class="ips" v-model="code" placeholder="编码/报修单号"
placeholder-style='font-weight: 400;font-size: 36rpx;color: #808080;' />
</view>
<view class="search_right">
搜索
</view>
</view>
<view class="tap">
<view class="tap_cont " :class="curtitidx==0?'act1':''" @click="changeidx(0)">
全部
</view>
<view class="tap_cont" :class="curtitidx==1?'act1':''" @click="changeidx(1)">
换电工单
</view>
<view class="tap_cont" :class="curtitidx==2?'act1':''" @click="changeidx(2)">
维修工单
</view>
<view class="tap_cont" :class="curtitidx==3?'act1':''" @click="changeidx(3)">
已完成
</view>
</view>
</view>
<view class="warp_box">
<swiper class="swiper" :style="{ height: swiperHeight + 'rpx' }" :current='curtitidx' @change="swiperchange"
next-margin='-20rpx'>
<swiper-item>
<view class="swiper-item ">
<view class="card" v-for="(item, index) in filteredListData" :key="index" v-if="item.status!=1"
@click="todetail(item.id)">
<view class="card_top">
<view class="card_top_left">
<image src="https://lxnapi.ccttiot.com/bike/img/static/uacJ7fdNpS3llY54ZaUi" mode=""></image>
电单车
</view>
<view class="card_top_right">
{{item.createTime}}
</view>
</view>
<view class="cont_info">
<view class="cont_info_left">
报修单号
</view>
<view class="cont_info_right">
{{item.orderNo}}
</view>
</view>
<view class="cont_info">
<view class="cont_info_left">
设备编号
</view>
<view class="cont_info_right">
{{item.sn}}
</view>
</view>
<view class="cont_info">
<view class="cont_info_left">
故障部位
</view>
<view class="cont_info_right" v-if="item.faultTypeStr">
{{item.faultTypeStr}}
</view>
<view class="cont_info_right" v-else>
--
</view>
</view>
<view class="card_bot">
<image src="https://lxnapi.ccttiot.com/bike/img/static/uklW7KIegcLR6E7DTOGO" mode=""></image>
<view class="card_bot_txt">
{{item.address}}
</view>
<view class="stause" v-if="item.status==4" style="background-color: #3BBBA1 ;">
已完成
</view>
<view class="stause" v-if="item.status==2&&item.type==2" style="background-color: #F76D6D ;">
待换电
</view>
<view class="stause" v-if="item.status==2&&item.type==1" style="background-color: #F76D6D ;">
待维修
</view>
<view class="stause" v-if="item.status==3&&item.type==2" style="background-color: #4C97E7 ;">
换电中
</view>
<view class="stause" v-if="item.status==3&&item.type==1" style="background-color: #4C97E7 ;">
维修中
</view>
</view>
</view>
</view>
</swiper-item>
<swiper-item>
<view class="swiper-item ">
<view class="card" v-for="(item, index) in filteredEleData" :key="index" v-if="item.status!=1"
@click="todetail(item.id)">
<view class="card_top">
<view class="card_top_left">
<image src="https://lxnapi.ccttiot.com/bike/img/static/uacJ7fdNpS3llY54ZaUi" mode=""></image>
电单车
</view>
<view class="card_top_right">
{{item.createTime}}
</view>
</view>
<view class="cont_info">
<view class="cont_info_left">
报修单号
</view>
<view class="cont_info_right">
{{item.orderNo}}
</view>
</view>
<view class="cont_info">
<view class="cont_info_left">
设备编号
</view>
<view class="cont_info_right">
{{item.sn}}
</view>
</view>
<view class="cont_info">
<view class="cont_info_left">
故障部位
</view>
<view class="cont_info_right">
{{item.faultTypeStr}}
</view>
</view>
<view class="card_bot">
<image src="https://lxnapi.ccttiot.com/bike/img/static/uklW7KIegcLR6E7DTOGO" mode=""></image>
嵛山岛芦竹村三沙路68号
<view class="stause" v-if="item.status==4">
已完成
</view>
<view class="stause" v-if="item.status==4" style="background-color: #3BBBA1 ;">
已完成
</view>
<view class="stause" v-if="item.status==2&&item.type==2" style="background-color: #F76D6D ;">
待换电
</view>
<view class="stause" v-if="item.status==2&&item.type==1" style="background-color: #F76D6D ;">
待维修
</view>
<view class="stause" v-if="item.status==3&&item.type==2" style="background-color: #4C97E7 ;">
换电中
</view>
<view class="stause" v-if="item.status==3&&item.type==1" style="background-color: #4C97E7 ;">
维修中
</view>
</view>
</view>
</view>
</swiper-item>
<swiper-item>
<view class="swiper-item ">
<view class="card" v-for="(item, index) in filteredFixData" :key="index" v-if="item.status!=1"
@click="todetail(item.id)">
<view class="card_top">
<view class="card_top_left">
<image src="https://lxnapi.ccttiot.com/bike/img/static/uacJ7fdNpS3llY54ZaUi" mode=""></image>
电单车
</view>
<view class="card_top_right">
{{item.createTime}}
</view>
</view>
<view class="cont_info">
<view class="cont_info_left">
报修单号
</view>
<view class="cont_info_right">
{{item.orderNo}}
</view>
</view>
<view class="cont_info">
<view class="cont_info_left">
设备编号
</view>
<view class="cont_info_right">
{{item.sn}}
</view>
</view>
<view class="cont_info">
<view class="cont_info_left">
故障部位
</view>
<view class="cont_info_right">
{{item.faultTypeStr}}
</view>
</view>
<view class="card_bot">
<image src="https://lxnapi.ccttiot.com/bike/img/static/uklW7KIegcLR6E7DTOGO" mode=""></image>
嵛山岛芦竹村三沙路68号
<view class="stause" v-if="item.status==4" style="background-color: #3BBBA1 ;">
已完成
</view>
<view class="stause" v-if="item.status==2&&item.type==2" style="background-color: #F76D6D ;">
待换电
</view>
<view class="stause" v-if="item.status==2&&item.type==1" style="background-color: #F76D6D ;">
待维修
</view>
<view class="stause" v-if="item.status==3&&item.type==2" style="background-color: #4C97E7 ;">
换电中
</view>
<view class="stause" v-if="item.status==3&&item.type==1" style="background-color: #4C97E7 ;">
维修中
</view>
</view>
</view>
</view>
</swiper-item>
<swiper-item>
<view class="swiper-item ">
<view class="card" v-for="(item, index) in filteredAlreadyList" :key="index" @click="todetail(item.id)">
<view class="card_top">
<view class="card_top_left">
<image src="https://lxnapi.ccttiot.com/bike/img/static/uacJ7fdNpS3llY54ZaUi" mode=""></image>
电单车
</view>
<view class="card_top_right">
{{item.createTime}}
</view>
</view>
<view class="cont_info">
<view class="cont_info_left">
{{item.orderNo}}
</view>
<view class="cont_info_right">
</view>
</view>
<view class="cont_info">
<view class="cont_info_left">
设备编号
</view>
<view class="cont_info_right">
{{item.sn}}
</view>
</view>
<view class="cont_info">
<view class="cont_info_left">
故障部位
</view>
<view class="cont_info_right">
【车把】【刹车】
</view>
</view>
<view class="card_bot">
<image src="https://lxnapi.ccttiot.com/bike/img/static/uklW7KIegcLR6E7DTOGO" mode=""></image>
嵛山岛芦竹村三沙路68号
<view class="stause" v-if="item.status==4" style="background-color: #3BBBA1 ;">
已完成
</view>
<view class="stause" v-if="item.status==2&&item.type==2" style="background-color: #F76D6D ;">
待换电
</view>
<view class="stause" v-if="item.status==2&&item.type==1" style="background-color: #F76D6D ;">
待维修
</view>
<view class="stause" v-if="item.status==3&&item.type==2" style="background-color: #4C97E7 ;">
换电中
</view>
<view class="stause" v-if="item.status==3&&item.type==1" style="background-color: #4C97E7 ;">
维修中
</view>
</view>
</view>
</view>
</swiper-item>
</swiper>
</view>
</view>
</template>
<script>
export default {
data() {
return {
bgc: {
backgroundColor: "#fff",
},
code: '',
curtitidx: 0,
swiperHeight: 408,
fixdata: [],
eledata: [],
listData: [],
alreadyList: [],
areaId:0,
}
},
onShow() {
if(uni.getStorageSync('adminAreaid')){
this.areaId = uni.getStorageSync('adminAreaid')
this.getmarks();
}
},
watch: {
curtitidx(newValue, oldValue) {
console.log('curtitidx 发生变化', newValue, oldValue);
this.updateSwiperHeight();
},
code(newValue, oldValue) {
console.log('code 发生变化', newValue, oldValue);
this.updateSwiperHeight();
}
},
computed: {
filteredListData() {
return this.filterData(this.listData);
},
filteredEleData() {
return this.filterData(this.eledata);
},
filteredFixData() {
return this.filterData(this.fixdata);
},
filteredAlreadyList() {
return this.filterData(this.alreadyList);
}
},
methods: {
updateSwiperHeight() {
if (this.curtitidx == 0) {
this.swiperHeight = (this.filteredListData.length * 440);
} else if (this.curtitidx == 1) {
this.swiperHeight = (this.filteredEleData.length * 440);
} else if (this.curtitidx == 2) {
this.swiperHeight = (this.filteredFixData.length * 440);
} else if (this.curtitidx == 3) {
this.swiperHeight = (this.filteredAlreadyList.length * 440);
}
},
filterData(data) {
if (this.code) {
const regex = new RegExp(this.code, 'i');
return data.filter(item => regex.test(item.orderNo) || regex.test(item.sn));
}
return data;
},
todetail(id) {
uni.navigateTo({
url: '/page_fix/repair/repair_detail?id=' + id
});
},
changeidx(idx) {
this.curtitidx = idx;
},
swiperchange(e) {
this.curtitidx = e.detail.current;
},
getmarks() {
let data ={
areaId:this.areaId
}
this.$u.get(`/appVerify/adminOrder/list?`,data).then((res) => {
if (res.code == 200) {
this.listData = res.rows;
this.fixdata = [];
this.eledata = [];
this.alreadyList = [];
res.rows.forEach(item => {
if (item.type == 1 && item.status != 4) {
this.fixdata.push(item);
} else if (item.type == 2 && item.status != 4) {
this.eledata.push(item);
} else if (item.status == 4) {
this.alreadyList.push(item);
}
});
this.updateSwiperHeight();
} else {
// 处理接口返回错误的情况
}
}).catch(error => {
// 处理接口请求失败的情况
});
},
},
onLoad(e) {
console.log(e,'eeeeee');
if(e.id){
this.code = e.id;
}
},
}
</script>
<style lang="scss">
page {
background-color: #F3F3F3;
}
.page {
width: 750rpx;
.tip_box {
position: fixed;
left: 72rpx;
top: 628rpx;
width: 610rpx;
height: 282rpx;
background: #FFFFFF;
border-radius: 30rpx 30rpx 30rpx 30rpx;
z-index: 110;
.top {
padding: 52rpx 38rpx 42rpx 36rpx;
.txt {
width: 100%;
text-align: center;
font-weight: 500;
font-size: 32rpx;
color: #3D3D3D;
}
}
.bot {
border-top: 2rpx solid #D8D8D8;
display: flex;
flex-wrap: nowrap;
height: 100%;
.bot_left {
width: 50%;
height: 98rpx;
display: flex;
align-items: center;
justify-content: center;
font-weight: 500;
font-size: 36rpx;
color: #3D3D3D;
}
.bot_right {
width: 50%;
height: 98rpx;
display: flex;
align-items: center;
justify-content: center;
border-left: 2rpx solid #D8D8D8;
font-weight: 500;
font-size: 36rpx;
color: #4C97E7;
}
}
}
.top {
width: 750rpx;
background: #fff;
padding-top: 26rpx;
.tap {
margin-top: 24rpx;
width: 750rpx;
display: flex;
flex-wrap: nowrap;
align-items: center;
justify-content: space-around;
.tap_cont {
text-align: center;
padding-bottom: 15rpx;
width: 140rpx;
font-weight: 500;
font-size: 32rpx;
color: #3D3D3D;
border-bottom: 6rpx solid #fff;
}
.act1 {
border-bottom: 6rpx solid #4C97E7;
color: #4C97E7;
}
}
.search_box {
margin: 0 auto;
display: flex;
flex-wrap: nowrap;
align-items: center;
width: 680rpx;
height: 68rpx;
border: 2rpx solid #4C97E7;
border-radius: 20rpx;
// .search_left{
// image{
// width: 56rpx;
// height: 56rpx;
// }
// }
.search_center {
margin-left: 40rpx;
width: 490rpx;
}
.search_right {
display: flex;
align-items: center;
justify-content: center;
margin-left: auto;
width: 112rpx;
height: 68rpx;
background: #4C97E7;
border: 2rpx solid #4C97E7;
border-radius: 0 20rpx 20rpx 0;
font-weight: 400;
font-size: 32rpx;
color: #FFFFFF;
}
}
}
.warp_box {
.swiper {
.swiper-item {
.card {
margin: 16rpx auto;
width: 752rpx;
height: 408rpx;
background: #FFFFFF;
border-radius: 0rpx 0rpx 0rpx 0rpx;
.card_top {
padding: 32rpx 38rpx 28rpx 38rpx;
display: flex;
flex-wrap: nowrap;
align-items: center;
.card_top_left {
display: flex;
flex-wrap: nowrap;
align-items: center;
image {
width: 42rpx;
height: 42rpx;
margin-right: 18rpx;
}
font-weight: 500;
font-size: 32rpx;
color: #3D3D3D;
}
.card_top_right {
margin-left: auto;
font-weight: 400;
font-size: 28rpx;
color: #808080;
}
}
.cont_info {
margin-left: 38rpx;
margin-bottom: 28rpx;
display: flex;
flex-wrap: nowrap;
align-items: center;
.cont_info_left {
margin-right: 44rpx;
font-weight: 400;
font-size: 28rpx;
color: #808080;
}
.cont_info_right {
font-weight: 400;
font-size: 28rpx;
color: #3D3D3D;
}
}
.card_bot {
display: flex;
align-items: center;
border-top: 2rpx dashed #D8D8D8;
height: 102rpx;
image {
margin-left: 20rpx;
margin-right: 18rpx;
width: 46rpx;
height: 48rpx;
}
.card_bot_txt {
width: 60%;
white-space: nowrap;
/* 禁止换行 */
overflow: hidden;
/* 超出部分隐藏 */
text-overflow: ellipsis;
font-weight: 400;
font-size: 28rpx;
color: #3D3D3D;
}
font-weight: 400;
font-size: 28rpx;
color: #3D3D3D;
.stause {
display: flex;
align-items: center;
justify-content: center;
margin-left: auto;
margin-right: 38rpx;
width: 132rpx;
height: 54rpx;
background: #979797;
font-weight: 400;
font-size: 28rpx;
color: #FFFFFF;
border-radius: 8rpx;
}
}
}
}
}
}
}
</style>