This commit is contained in:
Lx 2025-09-25 15:53:50 +08:00
parent 5670512ba6
commit 48fd83ef53
2 changed files with 279 additions and 97 deletions

View File

@ -59,84 +59,99 @@
</view>
<view class="mubu">
<view class="hui-content">
<view class="jsy" v-if="singleList.length == 0">
<!-- <view class="jsy" v-if="singleList.length == 0">
<image src="http://www.nuoyunr.com/lananRsc/detection/qs.png" mode=""></image>
</view>
<view class="content-box" v-for="(item,index) in singleList" :key="index">
<view class="dis-bb">
<view class="changimg" v-if="item.rescueTypeStr == '拖车' ">
<image src="../../static/images/tche.png" mode=""></image>
</view>
<view class="changimg" v-if="item.rescueTypeStr == '扣车' ">
<image src="../../static/images/kouche.png" mode=""></image>
</view>
<view class="changimg" v-if="item.rescueTypeStr == '送油' ">
<image src="../../static/images/syou.png" mode=""></image>
</view>
<view class="changimg" v-if="item.rescueTypeStr == '搭电' ">
<image src="../../static/images/ddian.png" mode=""></image>
</view>
<view class="changimg" v-if="item.rescueTypeStr == '换胎' ">
<image src="../../static/images/htai.png" mode=""></image>
</view>
<view class="ja-you">{{item.rescuePosition || ''}}</view>
<view class="content-box" v-for="(item,index) in singleList" :key="index"> -->
<!-- 初始加载状态 -->
<view class="ques" v-if="initialLoading">
<view class="loading-container">
<view class="loading-spinner"></view>
<text class="loading-text">加载中请稍候...</text>
</view>
</view>
</view>
<view class="dix" style="margin: 10px auto;">
<view class="htzit">
<view class="shiwuimg">
<image src="../../static/images/lxr.png" mode=""></image>
<!-- 非加载中且无数据状态 -->
<view class="jsy" v-else-if="!initialLoading && singleList.length == 0">
<image src="http://www.nuoyunr.com/lananRsc/detection/qs.png" mode=""></image>
</view>
<view v-else>
<view class="content-box" v-for="(item,index) in singleList" :key="index">
<view class="dis-bb">
<view class="changimg" v-if="item.rescueTypeStr == '拖车' ">
<image src="../../static/images/tche.png" mode=""></image>
</view>
<text>故障车联系人</text>
</view>
<text class="xshui">{{item.connectionName || '' }}</text>
</view>
<view class="dix" style="margin: 10px auto;">
<view class="htzit">
<view class="shiwuimg">
<image src="../../static/images/lxr.png" mode=""></image>
<view class="changimg" v-if="item.rescueTypeStr == '扣车' ">
<image src="../../static/images/kouche.png" mode=""></image>
</view>
<text>故障车联系人电话</text>
</view>
<text class="xshui">{{item.connectionPhone || '' }}</text>
</view>
<view class="dix" style="margin: 10px auto;">
<view class="htzit">
<view class="shiwuimg">
<image src="../../static/images/cllx.png" mode=""></image>
<view class="changimg" v-if="item.rescueTypeStr == '送油' ">
<image src="../../static/images/syou.png" mode=""></image>
</view>
<text>车辆信息</text>
</view>
<text class="xshui">{{item.carTypeStr||''}} {{item.licenseNum || ''}}</text>
</view>
<view class="dix" style="margin: 10px auto;">
<view class="htzit">
<view class="shiwuimg">
<image src="../../static/images/fqsj.png" mode=""></image>
<view class="changimg" v-if="item.rescueTypeStr == '搭电' ">
<image src="../../static/images/ddian.png" mode=""></image>
</view>
<text>救援发起时间</text>
</view>
<text class="xshui">{{item.rescueTime || ''}}</text>
</view>
<view class="dis-tt" v-if="rescueStatus == 2">
<view class="inanniu" @click="dialogToggle(item.rescueDriverId, item.id)">
<uni-icons type="checkmarkempty" color="#3CBC6F" size="20"></uni-icons>
<text>接受</text>
</view>
<view class="caanniu" @click="inputDialogToggle(item.rescueDriverId)">
<uni-icons type="closeempty" color="#e43d33" size="20"></uni-icons>
<text>拒绝</text>
</view>
<view class="anniua" @click="GOdetails(item.id)">
<view class="shiwuimg">
<image src="../../static/images/cldd.png" mode=""></image>
<view class="changimg" v-if="item.rescueTypeStr == '换胎' ">
<image src="../../static/images/htai.png" mode=""></image>
</view>
<text>查看详情</text>
<view class="ja-you">{{item.rescuePosition || ''}}</view>
</view>
</view>
<view class="dis-tt" v-if="rescueStatus == 3">
<!-- <view class="inanniu" @click="diyshow(item.id)">
<view class="dix" style="margin: 10px auto;">
<view class="htzit">
<view class="shiwuimg">
<image src="../../static/images/lxr.png" mode=""></image>
</view>
<text>故障车联系人</text>
</view>
<text class="xshui">{{item.connectionName || '' }}</text>
</view>
<view class="dix" style="margin: 10px auto;">
<view class="htzit">
<view class="shiwuimg">
<image src="../../static/images/lxr.png" mode=""></image>
</view>
<text>故障车联系人电话</text>
</view>
<text class="xshui">{{item.connectionPhone || '' }}</text>
</view>
<view class="dix" style="margin: 10px auto;">
<view class="htzit">
<view class="shiwuimg">
<image src="../../static/images/cllx.png" mode=""></image>
</view>
<text>车辆信息</text>
</view>
<text class="xshui">{{item.carTypeStr||''}} {{item.licenseNum || ''}}</text>
</view>
<view class="dix" style="margin: 10px auto;">
<view class="htzit">
<view class="shiwuimg">
<image src="../../static/images/fqsj.png" mode=""></image>
</view>
<text>救援发起时间</text>
</view>
<text class="xshui">{{item.rescueTime || ''}}</text>
</view>
<view class="dis-tt" v-if="rescueStatus == 2">
<view class="inanniu" @click="dialogToggle(item.rescueDriverId, item.id)">
<uni-icons type="checkmarkempty" color="#3CBC6F" size="20"></uni-icons>
<text>接受</text>
</view>
<view class="caanniu" @click="inputDialogToggle(item.rescueDriverId)">
<uni-icons type="closeempty" color="#e43d33" size="20"></uni-icons>
<text>拒绝</text>
</view>
<view class="anniua" @click="GOdetails(item.id)">
<view class="shiwuimg">
<image src="../../static/images/cldd.png" mode=""></image>
</view>
<text>查看详情</text>
</view>
</view>
<view class="dis-tt" v-if="rescueStatus == 3">
<!-- <view class="inanniu" @click="diyshow(item.id)">
<uni-icons type="location" color="#3CBC6F" size="20"></uni-icons>
<text>记录</text>
</view>
@ -150,27 +165,37 @@
<uni-icons type="checkmarkempty" color="#3CBC6F" size="20"></uni-icons>
<text>完成</text>
</view> -->
<view class="anniua" @click="GOdetails(item.id)">
<view class="shiwuimg">
<image src="../../static/images/cldd.png" mode=""></image>
<view class="anniua" @click="GOdetails(item.id)">
<view class="shiwuimg">
<image src="../../static/images/cldd.png" mode=""></image>
</view>
<text>查看详情</text>
</view>
<text>查看详情</text>
</view>
</view>
<view class="dis-tt" v-if="rescueStatus == 5">
<!-- <view class="caanniu" @click="showRepair(item)" v-if="item.isWeiXiu!=='1'">
<view class="dis-tt" v-if="rescueStatus == 5">
<!-- <view class="caanniu" @click="showRepair(item)" v-if="item.isWeiXiu!=='1'">
<uni-icons type="wallet" color="#e43d33" size="20"></uni-icons>
<text>转维修</text>
</view> -->
<view class="anniua" @click="GOdetails(item.id)">
<view class="shiwuimg">
<image src="../../static/images/cldd.png" mode=""></image>
<view class="anniua" @click="GOdetails(item.id)">
<view class="shiwuimg">
<image src="../../static/images/cldd.png" mode=""></image>
</view>
<text>查看详情</text>
</view>
<text>查看详情</text>
</view>
</view>
</view>
</view>
<!-- 底部加载更多状态 -->
<view v-if="loadingMore" class="loading-more">
<view class="loading-spinner mini"></view>
<text>正在加载更多...</text>
</view>
<view v-if="!hasMore && singleList.length > 0" class="no-more-data">
<text>没有更多数据了</text>
</view>
<view style="width: 100%; height: 50px;"></view>
</view>
<uni-popup ref="alertDialog" type="dialog">
@ -374,6 +399,12 @@
searchKeyword: '', //
searchParams: {}, //
//
initialLoading: true, //
loadingMore: false, //
hasMore: true, //
scrollTop: 0, //
}
},
onLoad() {
@ -404,7 +435,7 @@
},
deep: true,
},
onReachBottom() {
/* onReachBottom() {
if (this.pageNum >= this.totalPages) {
uni.showToast({
title: '没有下一页数据',
@ -415,6 +446,19 @@
this.pageNum++
this.driverRescuePage()
}
}, */
onReachBottom() {
if (this.pageNum >= this.totalPages) {
this.hasMore = false;
} else if (!this.loadingMore) {
this.loadingMore = true;
this.pageNum++;
this.driverRescuePage();
}
},
onPageScroll(e) {
//
this.scrollTop = e.scrollTop;
},
onShow() {
this.permissions()
@ -423,6 +467,8 @@
this.pageNum = 1
this.singleList = []
this.driverRescuePage()
this.hasMore = true
this.initialLoading = true
},
components: {
tabBar,
@ -582,7 +628,7 @@
})
},
driverRescuePage() {
/* driverRescuePage() {
let data = {
rescueStatus: this.rescueStatus,
pageSize: this.pageSize,
@ -602,6 +648,53 @@
console.log('this.singleList', this.singleList);
}
})
}, */
driverRescuePage() {
let data = {
rescueStatus: this.rescueStatus,
pageSize: this.pageSize,
pageNum: this.pageNum,
...this.searchParams
}
this.getthreelist()
request({
url: '/app/driver/driverRescuePage',
method: 'get',
params: data
}).then((res) => {
if (res.code == 200) {
if (this.pageNum != 1) {
//
const currentScrollTop = this.scrollTop;
//
this.singleList = this.singleList.concat(res.rows);
//
this.$nextTick(() => {
uni.pageScrollTo({
scrollTop: currentScrollTop,
duration: 0
});
});
} else {
this.singleList = res.rows;
}
let total = res.total;
this.totalPages = Math.ceil(total / this.pageSize);
this.hasMore = this.pageNum < this.totalPages;
}
}).catch((error) => {
console.error('获取数据失败', error);
uni.showToast({
title: '数据加载失败',
icon: 'none'
});
}).finally(() => {
this.initialLoading = false;
this.loadingMore = false;
});
},
gettype() {
this.columns = []
@ -1024,7 +1117,7 @@
this.getStatus()
})
},
gettab(index, id) {
/* gettab(index, id) {
this.pageNum = 1
this.singleList = []
this.rescueStatus = id
@ -1041,6 +1134,26 @@
this.driverRescuePage(5)
}
}, */
gettab(index, id) {
this.pageNum = 1
this.singleList = []
this.rescueStatus = id
this.tabindex = index
this.hasMore = true
this.initialLoading = true
if (index == 0) {
this.driverRescuePage(2)
}
if (index == 1) {
this.driverRescuePage(3)
}
if (index == 2) {
this.searchKeyword = ''
this.searchParams = {}
this.driverRescuePage(5)
}
},
deletePic(event) {
this[`fileList${event.name}`].splice(event.index, 1)
@ -1631,4 +1744,74 @@
font-size: 14px;
white-space: nowrap;
}
/* 新增加载状态样式 */
.loading-container {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
padding: 60rpx 0;
}
.loading-spinner {
position: relative;
width: 60px;
height: 60px;
border: 4px solid #f3f3f3;
border-top: 4px solid #0D2E8D;
border-radius: 50%;
animation: spin 1s linear infinite;
margin-bottom: 15px;
display: flex;
justify-content: center;
align-items: center;
}
.loading-text {
font-size: 16px;
color: #666;
}
@keyframes spin {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
.loading-more {
display: flex;
justify-content: center;
align-items: center;
padding: 20rpx;
color: #999;
font-size: 26rpx;
background-color: #f4f4f4;
.mini {
width: 30px;
height: 30px;
border-width: 2px;
margin-right: 10rpx;
}
}
.no-more-data {
text-align: center;
padding: 20rpx;
color: #999;
font-size: 26rpx;
background-color: #f4f4f4;
}
.ques {
display: flex;
justify-content: center;
align-items: center;
height: 200px;
}
</style>

View File

@ -78,7 +78,7 @@
</view>
<view style="font-size: 28rpx; color:#999999; margin-bottom: 20rpx;">
目的地备注:<view style="color:black; font-weight: bold; font-size: 30rpx;">
{{ detailsData.remarkRescuePosition || '暂无备注' }}
{{ detailsData.remarkDestinationInfo || '暂无备注' }}
</view>
</view>
</view>
@ -335,7 +335,7 @@
调度电话:{{detailsData.secondDispatchPhone}}
</view>
<view class="beizh">
{{item.autoRemark}}
{{item.autoRemark && item.autoRemark.replace(/, /g, '\n')}}
</view>
<view class="beizh" style="margin-top: 10rpx;"
v-if="item.remark && item.remark !== '' && (item.type == 1 || item.title.includes('现场查勘'))">
@ -1039,13 +1039,13 @@
<u-picker :show="repairFactoryShow" :columns="[repairFactoryList]" keyName="label"
@confirm="onRepairFactoryConfirm" @cancel="repairFactoryShow = false"></u-picker>
<!-- // -->
<view class="fixed-bottom-button_1" v-if="detailsData.rescueStatusStr != '待救援' && this.currentStepIndex < 7">
<view class="fixed-bottom-button_1" v-if="detailsData.rescueStatusStr != '待救援' && currentStepIndex < 7">
<button @click="diyshow(detailsData.id)" :style="{backgroundColor: isProcessFinished ? '#999' : '#0D2E8D'}"
:disabled="isProcessFinished">
{{ nextStepName }}
</button>
</view>
<view class="fixed-bottom-button" v-if="detailsData.rescueStatusStr != '待救援' && this.currentStepIndex >= 7">
<view class="fixed-bottom-button" v-if="detailsData.rescueStatusStr != '待救援' && currentStepIndex >= 7">
<button class="fee-button" @click="showFeePopupFunction" v-if="!shouldShowFeeButton"
style="background-color: #e43d33;">
收费
@ -1283,8 +1283,6 @@
},
computed: {
shouldShowFeeButton() {
console.log('123', this.detailsData && this.currentStepIndex >= 7 &&
(!this.detailsData.orderStatus || this.detailsData.orderStatus == 2))
return this.detailsData && this.currentStepIndex >= 7 &&
(!this.detailsData.orderStatus || this.detailsData.orderStatus == 2);
}
@ -2208,17 +2206,18 @@
switch (this.selectedOption) {
case 'repair':
let autoRemarkTemp = '转维修' + ', ' + '修理厂: ' + this.repairFormData.repairFactoryName;
let autoRemarkTemp = '转维修';
if (!this.repairFormData.adviserId || !this.repairFormData.adviserName) {
if (this.repairFormData.adviserNameManual) {
autoRemarkTemp = '转维修, ' + '移交接车人: ' + this.repairFormData.adviserNameManual + ', ' +
'移交接车人电话: ' + this.repairFormData.adviserPhone + ', ' + '修理厂: ' + this.repairFormData
.repairFactoryName;
'移交接车人电话: ' + this.repairFormData.adviserPhone;
}
} else {
autoRemarkTemp = '转维修, ' + '移交接车人: ' + this.repairFormData.adviserName + ', ' +
'移交接车人电话: ' + this.repairFormData.adviserPhone + ', ' + '修理厂: ' + this.repairFormData
.repairFactoryName;
'移交接车人电话: ' + this.repairFormData.adviserPhone;
}
if (this.repairFormData.repairFactoryName) {
autoRemarkTemp = autoRemarkTemp + ', ' + '修理厂: ' + this.repairFormData.repairFactoryName
}
data.remark = this.repairFormData.remark;
data.autoRemark = autoRemarkTemp;
@ -2845,8 +2844,8 @@
});
return;
}
let autoRemarkTemp = '其中: 拖车费用 ' + this.towingFee + '元,吊车费用 ' + this.craneFee + '元,其他费用 ' + this.otherFee +
'元'
let autoRemarkTemp =
'其中: 拖车费用 ' + this.towingFee + '元, 吊车费用 ' + this.craneFee + '元, 其他费用 ' + this.otherFee + '元'
if (this.otherFeeRemark != '') {
autoRemarkTemp = autoRemarkTemp + ', 其他费用备注: ' + this.otherFeeRemark + ', '
} else {
@ -3087,7 +3086,7 @@
async confirmCashPayment() {
if (!this.setMoney) {
uni.showToast({
title: '请输入实收金额',
title: '请输入金额',
icon: 'none'
});
return;
@ -3144,7 +3143,7 @@
payRemark: this.creditRemark,
payImages: this.paymentImages.join(','),
payType: 'xj',
orderStatus: '2'
orderStatus: '2',
}
this.updateOrderInfo(orderData);
this.detailsData.feeType = '1'