detection-business/pages/index/ordermanage.vue

506 lines
12 KiB
Vue
Raw Normal View History

2024-09-11 15:55:28 +08:00
<!-- 订单管理 -->
<template>
2025-04-12 14:14:32 +08:00
<view class="content">
<view style="width: 100%; height: 55px;"></view>
<headersVue titles="订单管理">
<u-icon name="arrow-left" color="#fff" size="18"></u-icon>
</headersVue>
<!-- <view class="top-heder">-->
<!-- </view>-->
<view class="search_box">
<u-search placeholder="搜索车牌号....." @clear="getList()" @search="getList()" :showAction="false"
v-model="carNum" searchIconColor="#427FFE"></u-search>
</view>
<!-- <view class="t-input">-->
<!-- <uni-icons type="search" color="#BCBCBC" size="22"></uni-icons>-->
<!-- <input type="text" v-model="carNum" placeholder="搜索车牌号.....">-->
<!-- </view>-->
<!-- <view class="sou" @click="getList()">搜索</view>-->
<view class="tap">
<view class="tap-box" v-for="(item,index) in tapList" :key="index" @click="tapqh(index,item)">
<view class="xhuihui" :class="{'xzhei':tapindex == index}">{{ item.text }}</view>
<view class="gang" v-if="tapindex == index"></view>
</view>
</view>
<view class="mub">
<view class="top-ail">
<scroll-view class="school-scroll-view" scroll-y @scrolltolower="onReachBottomCus"
:style="{ height: scrollHeight + 'px' }" refresher-enabled @refresherrefresh="onRefresherrefresh"
:refresher-triggered="isTriggered">
<view class="jsy" v-if="infoDatas.length == 0">
<image src="http://www.nuoyunr.com/lananRsc/detection/qs.png" mode=""></image>
</view>
<view class="m-box" v-for="(item,index) in infoDatas" :key="index">
<view class="sshi" v-if="item.isPass == '0'">
<image v-if="item.status == 1" :src="imgurl + '/noPass.png'" mode=""></image>
<view v-else class="csz">
<text>重审中</text>
</view>
</view>
<view class="sshi" v-if="item.isPass == '1'">
<image :src="imgurl + '/pass.png'" mode=""></image>
</view>
<view class="m-top">
<view class="top-left" style="display: flex;gap: 1.5rem">
<view class="dhei">车型{{ item.goodsName }}</view>
<view class="dhei">检测类型{{ item.skuName }}</view>
<!-- <text class="xhui">施工人员{{ item.workerName }}</text>-->
</view>
<view @click="callUser(item.buyPhone)" class="top-right">
<image src="/static/imgs/tel.png" style="width: 36rpx; height: 36rpx; " mode=""></image>
</view>
</view>
<view class="" @click="godetails(item.id)">
<view class="on-input">
<uni-icons type="person" color="#999999" size="16"></uni-icons>
<text>客户</text>
<text>{{ item.buyName ? item.buyName : "" }}</text>
</view>
<view class="on-input">
<uni-icons type="phone" color="#999999" size="16"></uni-icons>
<text>电话</text>
<text>{{ item.buyPhone }}</text>
</view>
<view class="on-input">
<uni-icons type="map" color="#999999" size="16"></uni-icons>
<text>车牌号</text>
<text>{{ item.carNum }}</text>
</view>
<view class="on-input">
<uni-icons type="more" color="#999999" size="16"></uni-icons>
<text>客户来源</text>
<text>{{ item.customerSource }}</text>
</view>
<view class="on-input" v-if="item.otherPhone">
<uni-icons type="more" color="#999999" size="16"></uni-icons>
<text>代办人手机号</text>
<text>{{ item.otherPhone }}</text>
</view>
<view class="on-input" v-if="item.nodeNames">
<uni-icons type="more" color="#999999" size="16"></uni-icons>
<text class="single-line" style="color: red;">需复检项目</text>
<text class="multi-line" :style="true ? 'color:red' : ''">{{ item.nodeNames }}</text>
</view>
<view class="bottom-di">
<text v-if="tapindex === 1">商品原价</text>
<text v-if="tapindex === 1" class="ju"
style="margin-right: 0.5rem">{{ item.goodsPrice / 100 }}</text>
<text>实付金额</text>
<text class="ju">{{ item.realPayMoney / 100 }}</text>
</view>
</view>
</view>
</scroll-view>
</view>
</view>
<view class="lanniu" @click="gogogo">
<text>+ 添加线下订单</text>
</view>
</view>
2024-09-11 15:55:28 +08:00
</template>
<script>
2025-04-12 14:14:32 +08:00
import config from '@/config'
import request from '../../utils/request';
import headersVue from "@/components/header/headers.vue";
export default {
components: {
headersVue
},
data() {
return {
imgurl: this.$imgeUrl,
baseUrl: this.$baseUrl,
infoDatas: [],
partnerId: uni.getStorageSync("partnerId"),
goodsTitle: '',
tapindex: 0,
tapValue: 0,
scrollHeight: 0,
isTriggered: false,
msg: 2,
carNum: '',
pageNum: 1, //第几页
pageSize: 20, //一页多少张
totalPages: 0, //总数
tapList: [{
text: "进行中",
value: "0"
},
{
text: "已完成",
value: "1",
},
{
text: "待重检",
value: "2"
},
{
text: "待复检",
value: "4"
}
]
}
},
onLoad() {
this.getList()
},
onShow() {
this.getList()
},
// onReachBottom() {
// if (this.pageNum >= this.totalPages) {
// uni.showToast({
// title: '没有下一页数据',
// icon: 'none'
// })
// } else {
// this.pageNum++
// this.getList()
// }
// },
onReady() {
// 动态计算滚动区域高度
this.calculateScrollHeight();
},
methods: {
calculateScrollHeight() {
// 获取屏幕高度
const screenHeight = uni.getSystemInfoSync().windowHeight;
// 获取顶部区域高度
const topHeight = 250;
// 计算滚动区域高度
this.scrollHeight = screenHeight - topHeight;
},
/**
* 上滑加载数据
*/
onReachBottomCus() {
//判断 如果页码*页容量大于等于总条数,提示该页数据加载完毕
if (this.pageNum >= this.totalPages) {
uni.$u.toast('没有更多数据了')
return
}
//页码+1,调用获取数据的方法获取第二页数据
this.pageNum++
//此处调用自己获取数据列表的方法
this.getList()
},
/**
* 下拉刷新数据
*/
onRefresherrefresh() {
this.isTriggered = true
this.pageNum = 1
this.total = 0
this.infoDatas = []
this.getList()
},
searchList() {
this.infoDatas = []
this.getList()
},
callUser(phone) {
uni.makePhoneCall({
phoneNumber: phone //仅为示例
});
},
async getList() {
let res = await request({
url: '/partnerOwn/partner/inspectionList',
method: 'get',
params: {
partnerId: this.partnerId,
status: this.tapValue,
carNum: this.carNum,
pageSize: this.pageSize,
pageNum: this.pageNum,
}
})
if (res.code == 200) {
if (this.pageNum != 1) {
this.infoDatas = this.infoDatas.concat(res.rows)
} else {
this.infoDatas = res.rows
}
if (this.tapValue == '4') {
const ids = this.infoDatas.filter(item => !item.nodeNames).map(item => item.id)
if (ids && ids.length > 0) {
const response = await request({
url: `/partnerOwn/partner/getProjectBelowStandardByIds`,
method: 'get',
params: {
ids: ids.join(','),
status: 3,
type: this.tapValue == '7' ? '0' : ''
}
})
if (response.data) {
const data = response.data
this.infoDatas.forEach(item => {
let nodeNamesArr = []
let nodeIds = []
if (data[item.id]) {
data[item.id].forEach(data => {
nodeNamesArr.push(data.name)
nodeIds.push(data.id)
})
const nodeNames = nodeNamesArr.join('、')
this.$set(item, 'nodeNames', nodeNames)
this.$set(item, 'nodeIds', nodeIds)
console.log('数据', item);
}
})
}
}
}
let total = res.total
this.totalPages = Math.ceil(total / this.pageSize);
}
this.isTriggered = false
},
getfan() {
uni.navigateBack()
},
godetails(inspectionInfoId) {
uni.navigateTo({
url: "/pages/index/orderdetails?inspectionInfoId=" + inspectionInfoId
})
},
gogogo() {
uni.navigateTo({
url: '/pages/index/Neworder'
})
},
tapqh(index, data) {
this.pageNum = 1
this.tapindex = index
this.tapValue = data.value
this.infoDatas = []
this.getList()
}
}
}
2024-09-11 15:55:28 +08:00
</script>
2024-11-06 10:25:31 +08:00
<style scoped lang="scss">
2025-04-12 14:14:32 +08:00
.content {
box-sizing: border-box;
width: 100%;
// height: calc(100vh);
background: white;
}
.search_box {
box-sizing: border-box;
padding: 0 20rpx;
border-bottom: 2rpx solid #F5F5F5;
margin-top: 130rpx;
}
.sshi {
position: absolute;
top: 180rpx;
right: 20px;
width: 115px;
height: 115px;
box-sizing: border-box;
padding: 10px;
image {
width: 100%;
height: 100%;
}
}
.top-heder {
width: 100%;
height: 46px;
background: white;
display: flex;
justify-content: space-between;
align-items: center;
box-sizing: border-box;
padding: 5px 15px;
}
.t-left {
width: 10%;
}
.t-input {
width: 75%;
height: 36px;
background: #F0F0F0;
border-radius: 50px;
box-sizing: border-box;
padding: 0 15px;
display: flex;
align-items: center;
margin-top: 120rpx;
}
.top-ail {
width: 100%;
box-sizing: border-box;
padding: 0 15px;
//background-color: #F4F4F4;
background: white;
}
.mub {
background-color: #F4F4F4;
// height: calc(100vh);
}
.tap {
width: 100%;
height: 44px;
background: #FFFFFF;
display: flex;
align-items: center;
justify-content: space-between;
}
.tap-box {
width: 50%;
}
.xhuihui {
width: 100%;
text-align: center;
font-size: 16px;
font-family: Source Han Sans CN-Regular, Source Han Sans CN;
font-weight: 400;
color: #666666;
}
.gang {
width: 24px;
height: 4px;
//background: #0D2E8D;
background: #327DFB;
border-radius: 4px;
margin: 2px auto;
}
.xzhei {
font-weight: bold !important;
color: #333333 !important;
}
.m-box {
position: relative;
background: #F7F8FC;
border-radius: 8px;
box-sizing: border-box;
padding: 15px 10px;
margin: 10px auto;
}
.m-top {
width: 100%;
box-sizing: border-box;
padding-bottom: 15px;
border-bottom: 1px solid #EEEEEE;
display: flex;
align-items: center;
justify-content: space-between;
}
.top-left {}
.top-right {
z-index: 9999;
width: 33px;
height: 33px;
//border-radius: 50%;
overflow: hidden;
image {
width: 100%;
height: 100%;
}
}
.dhei {
font-size: 16px;
font-weight: bold;
color: #333333;
margin-bottom: 5px;
}
.xhui {
font-size: 15px;
font-weight: 400;
color: #999999;
}
.on-input {
width: 100%;
display: flex;
align-items: center;
font-size: 15px;
font-family: Source Han Sans CN-Regular, Source Han Sans CN;
font-weight: 400;
color: #999999;
margin-bottom: 10px;
margin-top: 10px;
// justify-content: space-between;
}
.bottom-di {
padding-top: 10px;
box-sizing: border-box;
border-top: 1px solid #EEEEEE;
}
.ju {
font-size: 24px;
font-weight: 600;
color: #FF571A;
}
.lanniu {
width: 90%;
position: fixed;
bottom: 10px;
display: flex;
align-items: center;
justify-content: center;
//background: #0D2E8D;
background: #327DFB;
color: white;
height: 44px;
border-radius: 8px;
font-weight: bold;
transform: translate(-50%);
left: 50%;
z-index: 9999999999999999999999999999999999999999999999999999999;
}
.csz {
font-size: 20px;
font-weight: bold;
color: #FF571A;
}
</style>