lanan-repair-app/pages-order/orderDetail/orderDetail.vue

1008 lines
30 KiB
Vue
Raw Normal View History

2024-10-09 13:34:36 +08:00
<template>
2024-10-13 23:24:23 +08:00
<view class="container">
<view class="containerBody">
<VNavigationBar background-color="#fff" title="工单详情" title-color="#333"></VNavigationBar>
2024-10-18 22:20:10 +08:00
<view class="body" v-if="null!=ticketInfo">
2024-10-18 17:33:58 +08:00
<view class="card cardInfo carCard">
2024-10-18 19:55:06 +08:00
<view :class="{'end': ticketInfo.ticketsStatus == '02'}" class="orderFlag">
2024-10-13 23:24:23 +08:00
<template>
2024-10-18 19:55:06 +08:00
<image v-if="ticketInfo.ticketsStatus == '02'" mode="aspectFit" src="/static/icons/orderEnd.png"
2024-10-15 23:40:11 +08:00
style="width: 48rpx;height: 48rpx"></image>
<image v-else mode="aspectFit" src="/static/icons/orderIng.png"
style="width: 48rpx;height: 48rpx"></image>
2024-10-13 23:24:23 +08:00
<view class="flagBody">
2024-10-18 19:55:06 +08:00
<text>{{ ticketInfo.ticketsStatus == '02' ? '已完成' : ticketInfo.statusStr }}</text>
<text class="flagDesc">当前工单维修项目{{ ticketInfo.flag == '02' ? '已全部完成' : ticketInfo.statusStr }}</text>
2024-10-13 23:24:23 +08:00
</view>
</template>
</view>
2024-10-19 16:07:31 +08:00
<view v-if="wares && wares.length>0" v-for="item in wares" class="noReviewPart" @click="showReviewList(item)">
2024-10-18 21:44:31 +08:00
<u-icon color="#E8A321" name="error-circle-fill" size="14"></u-icon>
<text class="messageText">当前项目有待审批的配件申请单</text>
<u-icon color="#E8A321" name="arrow-right" size="14"></u-icon>
</view>
2024-10-13 23:24:23 +08:00
<view class="carTitle">车辆信息</view>
<view class="carDetail">
<view class="carHeader">
2024-10-18 22:20:10 +08:00
<image v-show="ticketInfo.carInfo.logoImg" :src="imgUrlPrex + ticketInfo.carInfo.logoImg" class="carImage" mode="aspectFill"></image>
2024-10-13 23:24:23 +08:00
<view class="carHeaderRight">
2024-10-18 19:55:06 +08:00
<text class="carNumber">{{ ticketInfo.carNo }}</text>
<text class="carType">{{ ticketInfo.carBrandName }}</text>
2024-10-13 23:24:23 +08:00
</view>
</view>
<view class="carBody">
<view style="display: flex;align-items: center">
<view class="infoItem" style="flex: 1">
<view class="label">车架号</view>
2024-10-18 19:55:06 +08:00
<view class="value">{{ ticketInfo.carVin }}</view>
2024-10-13 23:24:23 +08:00
</view>
2024-10-18 19:55:06 +08:00
<!-- <view class="infoItem" style="flex: 1">-->
<!-- <view class="label">发动机号</view>-->
<!-- <view class="value">{{ ticketInfo.fdjNo }}</view>-->
<!-- </view>-->
2024-10-13 23:24:23 +08:00
<view class="infoItem" style="flex: 1">
2024-10-18 19:55:06 +08:00
<view class="label">注册日期</view>
<view class="value">{{ ticketInfo.carRegisterDate }}</view>
2024-10-13 23:24:23 +08:00
</view>
</view>
<template v-if="carInfo.showAll">
<view style="display: flex;align-items: center">
<view class="infoItem" style="flex: 1">
<view class="label">年检时间</view>
2024-10-18 19:55:06 +08:00
<view class="value">{{ ticketInfo.inspectionDate }}</view>
2024-10-13 23:24:23 +08:00
</view>
<view class="infoItem" style="flex: 1">
<view class="label">保险时间</view>
2024-10-18 19:55:06 +08:00
<view class="value">{{ ticketInfo.insuranceDate }}</view>
2024-10-13 23:24:23 +08:00
</view>
</view>
2024-10-18 19:55:06 +08:00
2024-10-13 23:24:23 +08:00
</template>
</view>
<view class="carFoot">
<template v-if="!carInfo.showAll">
<text @click="() => $set(carInfo, 'showAll', true)">展开</text>
<image mode="aspectFit" src="/static/icons/bottom.png" style="width: 28rpx;height: 28rpx"></image>
</template>
<template v-else>
<text @click="() => carInfo.showAll = false">收起</text>
<!--<image mode="aspectFit" src="/static/icons/bottom.png" style="width: 28rpx;height: 28rpx"></image>-->
</template>
</view>
</view>
2024-10-09 13:34:36 +08:00
</view>
2024-10-18 19:55:06 +08:00
<view class="card cardInfo userCard">
2024-10-13 23:24:23 +08:00
<view class="userTitle">客户信息</view>
<view class="userContainer">
<view style="display: flex;align-items: center">
<view class="infoItem" style="flex: 1">
<text class="label">姓名</text>
2024-10-18 19:55:06 +08:00
<text class="value">{{ ticketInfo.userName }}</text>
2024-10-13 23:24:23 +08:00
</view>
<view class="infoItem" style="flex: 1">
<text class="label">性别</text>
2024-10-18 19:55:06 +08:00
<text class="value">{{ ticketInfo.customerInfo.sex === '1' ? '女' : '男' }}</text>
2024-10-13 23:24:23 +08:00
</view>
</view>
<template v-if="userInfo.showAll">
<view style="display: flex;align-items: center">
<view class="infoItem" style="flex: 1">
<text class="label">联系方式</text>
2024-10-18 19:55:06 +08:00
<text class="value">{{ ticketInfo.userMobile }}</text>
2024-10-13 23:24:23 +08:00
</view>
<view class="infoItem" style="flex: 1">
2024-10-18 19:55:06 +08:00
<text class="label">生日</text>
<text class="value">{{ ticketInfo.birthday }}</text>
2024-10-13 23:24:23 +08:00
</view>
</view>
<view class="infoItem">
<text class="label">联系地址</text>
<text class="value">
2024-10-18 19:55:06 +08:00
{{ ticketInfo.customerInfo.address }}
2024-10-13 23:24:23 +08:00
</text>
</view>
</template>
</view>
2024-10-18 19:55:06 +08:00
<view v-if="loginUser.roleCodes.includes('weixiu') || loginUser.roleCodes.includes('service_advisor')||loginUser.roleCodes.includes('general_inspection')" class="userFoot">
2024-10-13 23:24:23 +08:00
<template v-if="!userInfo.showAll">
<text @click="() => $set(userInfo, 'showAll', true)">展开</text>
<image mode="aspectFit" src="/static/icons/bottom.png" style="width: 28rpx;height: 28rpx"></image>
</template>
<template v-else>
<text @click="() => userInfo.showAll = false">收起</text>
<!--<image mode="aspectFit" src="/static/icons/bottom.png" style="width: 28rpx;height: 28rpx"></image>-->
</template>
</view>
</view>
2024-10-18 23:47:27 +08:00
<view v-if="ticketInfo.projects && ticketInfo.projects.length > 0" class="card cardInfo projCard">
2024-10-13 23:24:23 +08:00
<view class="projTitle">维修项目</view>
<view class="projList">
2024-10-18 19:55:06 +08:00
<template>
2024-10-18 23:47:27 +08:00
<view v-for="item in ticketInfo.projects" :key="item.id" class="projEditItem">
2024-10-18 21:44:31 +08:00
2024-10-15 23:40:11 +08:00
<view class="projEditLine1">
2024-10-18 19:55:06 +08:00
<text>{{ item.itemName }}</text>
2024-10-18 22:20:10 +08:00
<text v-if="loginUser.roleCodes.includes('weixiu') || loginUser.roleCodes.includes('service_advisor')||loginUser.roleCodes.includes('general_inspection')" class="projAmount">{{ item.itemMoney }}</text>
2024-10-13 23:24:23 +08:00
</view>
2024-10-18 22:20:10 +08:00
<view class="projBaseInfo" v-if="loginUser.roleCodes.includes('weixiu') || loginUser.roleCodes.includes('service_advisor')||loginUser.roleCodes.includes('general_inspection')" >
2024-10-18 19:55:06 +08:00
<view>售价{{ item.itemPrice }}</view>
<view>数量{{ item.itemCount }}</view>
<view>单位{{ item.itemUnit}}</view>
<view>折扣{{ item.itemDiscount }}</view>
<view>金额{{ item.itemMoney }}</view>
2024-10-15 23:40:11 +08:00
</view>
<view class="projEditFoot">
<view class="block1">
2024-10-18 19:55:06 +08:00
<template>
2024-10-15 23:40:11 +08:00
<view class="editPeople">
<view class="editForm">
<text class="label">销售人员</text>
2024-10-18 19:55:06 +08:00
<text >{{item.saleName}}
2024-10-15 23:40:11 +08:00
</text>
</view>
2024-10-18 19:55:06 +08:00
<image v-if="isDetail == '0'" src="/static/icons/edit.png" style="width: 28rpx;height: 28rpx"
2024-10-15 23:40:11 +08:00
@click="editPeople('xs', item)"></image>
</view>
</template>
2024-10-18 19:55:06 +08:00
<template v-if="isDetail == '0'">
2024-10-15 23:40:11 +08:00
<image src="/pages-order/static/addIcon.png" style="width: 28rpx;height: 28rpx"></image>
<text class="addText" @click="editPeople('xs', item)">添加销售人员</text>
</template>
</view>
<view class="line"></view>
<view class="block2">
2024-10-18 19:55:06 +08:00
<template>
2024-10-15 23:40:11 +08:00
<view class="editPeople">
<view class="editForm">
<text class="label">施工人员</text>
2024-10-18 19:55:06 +08:00
<text >{{ item.repairNames }}</text>
2024-10-15 23:40:11 +08:00
</view>
2024-10-18 19:55:06 +08:00
<image v-if="isDetail == '0'" src="/static/icons/edit.png" style="width: 28rpx;height: 28rpx"
2024-10-15 23:40:11 +08:00
@click="editPeople('sg', item)"></image>
</view>
</template>
2024-10-18 19:55:06 +08:00
<template v-if="isDetail == '0'">
2024-10-15 23:40:11 +08:00
<image src="/pages-order/static/addIcon.png" style="width: 28rpx;height: 28rpx"></image>
<text class="addText" @click="editPeople('sg', item)">添加施工人员</text>
</template>
</view>
2024-10-13 23:24:23 +08:00
</view>
</view>
2024-10-15 23:40:11 +08:00
</template>
2024-10-13 23:24:23 +08:00
</view>
2024-10-09 13:34:36 +08:00
</view>
2024-10-18 21:44:31 +08:00
<view v-if="ticketInfo.wares && ticketInfo.wares.length > 0" class="card cardInfo projCard">
2024-10-18 23:47:27 +08:00
<view class="projTitle">维修配件 </view>
<view class="infoItem" style="flex: 1">
<view class="label"><text>是否开放给客户</text><switch :checked="ticketInfo.partShow == '1'" style="transform:scale(0.7)" @change="toPartShow" /></view>
</view>
2024-10-18 21:44:31 +08:00
<view class="projList">
<template>
<view v-for="item in ticketInfo.wares" :key="item.id" class="projEditItem">
<view class="projEditLine1">
<text>{{ item.itemName }}</text>
<text class="projAmount">{{ item.itemMoney }}</text>
</view>
<view class="projBaseInfo">
<view>售价{{ item.itemPrice }}</view>
<view>数量{{ item.itemCount }}</view>
<view>单位{{ item.itemUnit}}</view>
<view>折扣{{ item.itemDiscount }}</view>
<view>金额{{ item.itemMoney }}</view>
</view>
</view>
</template>
</view>
</view>
2024-10-18 19:55:06 +08:00
<view v-if="isDetail == '1'" class="card cardInfo projCard">
<view class="projTitle">维修记录</view>
<view class="projList">
<template>
<view v-for="item in ticketInfo.records" :key="item.id" class="projItem">
<view class="projTop">
2024-10-18 22:27:32 +08:00
<text class="projName">{{ item.typeStr }}{{item.dealUserName}}</text>
2024-10-18 19:55:06 +08:00
<!-- <text class="projAmount">${{ item.amount }}</text>-->
</view>
<view class="projBody">
<view class="projDate">
<image mode="aspectFit" src="/static/icons/date.png" style="width: 24rpx;height: 24rpx"></image>
<text class="projDateText">{{ item.createTime }}</text>
</view>
<template >
<view class="projDesc">
{{ item.remark }}
</view>
<view class="projImg">
2024-10-18 23:47:27 +08:00
<image v-for="(img, imgIndex) in item.itemList" :key="imgIndex" :src="imgUrlPrex + img.image"
2024-10-18 19:55:06 +08:00
class="projImgItem"></image>
</view>
<view class="projSend">
<template v-if="item.isSend">
<image mode="aspectFit" src="/static/icons/sendSuccess.png"
style="width: 28rpx;height: 28rpx"></image>
<text style="color: #858BA0">已发送客户</text>
</template>
<template v-else>
<image mode="aspectFit" src="/static/icons/send.png" style="width: 28rpx;height: 28rpx"></image>
<text style="color: #0174F6">发送给客户</text>
</template>
</view>
</template>
</view>
</view>
</template>
</view>
</view>
2024-10-09 13:34:36 +08:00
</view>
2024-10-18 19:55:06 +08:00
<view v-if="isDetail == '0'" class="foot">
2024-10-15 23:40:11 +08:00
<view class="submit">保存工单</view>
</view>
2024-10-13 23:24:23 +08:00
</view>
2024-10-18 23:46:57 +08:00
<!-- 悬浮操作-->
<uni-fab ref="fab" :pattern="pattern" :content="content" :horizontal="horizontal" :vertical="vertical"
:direction="direction" @trigger="trigger" @fabClick="fabClick" />
<!-- 普通弹窗---拍照上传 -->
<uni-popup ref="popup" background-color="#fff">
<view class="popup-content">
<view class="dl-avatar-box">
<uni-file-picker :value="fileList" :sizeType="sizeType" @select="afterRead" @delete="deleteFile" limit="9" title="最多选择9张图片"></uni-file-picker>
<!-- <u-upload-->
<!-- :action="uploadUrl"-->
<!-- :headers="headers"-->
<!-- :file-list="fileList"-->
<!-- :max-count="10"-->
<!-- :show-upload-btn="true"-->
<!-- @after-read="afterRead"-->
<!-- @delete="deleteFile"-->
<!-- ></u-upload>-->
</view>
<button type="primary" @click="saveWorkingItem">保存</button>
</view>
</uni-popup>
2024-10-13 23:24:23 +08:00
</view>
2024-10-09 13:34:36 +08:00
</template>
<script>
2024-10-13 23:24:23 +08:00
import VNavigationBar from '@/components/VNavigationBar.vue'
2024-10-15 23:40:11 +08:00
import {bus} from "@/utils/eventBus";
2024-10-18 17:33:58 +08:00
import request from '@/utils/request';
2024-10-18 23:46:57 +08:00
import upload from '@/utils/upload'
import {getOrderStatusText,formatDate,formatTimestamp,getDictTextByCodeAndValue,saveTicketsRecords} from "@/utils/utils";
2024-10-18 19:55:06 +08:00
import {getUserInfo} from '@/utils/auth'
import config from '@/config'
2024-10-13 23:24:23 +08:00
export default {
components: {
VNavigationBar,
},
data() {
return {
2024-10-18 23:46:57 +08:00
//以下是悬浮操作需要的参数
direction: 'vertical',
horizontal: 'right',
vertical: 'bottom',
pattern: {
color: '#7A7E83',
backgroundColor: '#fff',
selectedColor: '#007AFF',
buttonColor: '#007AFF',
iconColor: '#fff'
},
content: [],
2024-10-19 16:07:31 +08:00
//维修配件申请单
wares:[],
2024-10-18 23:46:57 +08:00
sizeType:['compressed'],
fileList: [],
2024-10-18 19:55:06 +08:00
imgUrlPrex:config.baseImageUrl,
2024-10-18 17:21:09 +08:00
//是否详情页(0否1是)
isDetail:'1',
2024-10-15 23:40:11 +08:00
// role: 'yewu',
2024-10-18 17:33:58 +08:00
ticketId: '',
2024-10-18 19:55:06 +08:00
//工单信息
2024-10-18 22:20:10 +08:00
ticketInfo: null,
2024-10-18 19:55:06 +08:00
carInfo: {},
userInfo: {},
loginUser:{},
2024-10-13 23:24:23 +08:00
selectedProj: [
{
projName: '清洗内饰',
amount: '280',
date: '2024-10-20 12:00',
desc: '车辆已到维修厂,工作人员正准备开始维修',
imageList: [{filePath: ''}, {filePath: ''}, {filePath: ''}, {filePath: ''}, {filePath: ''}],
isSend: true,
// 待审核部件
examinePart: [],
2024-10-15 23:40:11 +08:00
id: 'projId1',
// 销售
salesman: [
{
name: '魏书豪',
id: '11111'
}
],
// 施工
constructor: []
2024-10-13 23:24:23 +08:00
},
{
projName: '清洗内饰',
amount: '280',
date: '2024-10-20 12:00',
desc: '车辆已到维修厂,工作人员正准备开始维修',
imageList: [{filePath: ''}, {filePath: ''}, {filePath: ''}, {filePath: ''}, {filePath: ''}],
isSend: false,
// 待审核部件
2024-10-15 23:40:11 +08:00
hasNoReviewPart: false,
id: 'projId2',
salesman: [],
constructor: []
},
{
projName: '清洗内饰',
amount: '280',
date: '2024-10-20 12:00',
desc: '车辆已到维修厂,工作人员正准备开始维修',
imageList: [],
isSend: false,
// 待审核部件
hasNoReviewPart: true,
id: 'projId3',
salesman: [],
constructor: []
2024-10-13 23:24:23 +08:00
}
]
};
},
onLoad(data) {
2024-10-18 19:55:06 +08:00
this.loginUser = getUserInfo()
console.log(this.loginUser,294)
2024-10-13 23:24:23 +08:00
if (data.id) {
2024-10-18 17:33:58 +08:00
this.ticketId = data.id
2024-10-13 23:24:23 +08:00
}
2024-10-18 17:21:09 +08:00
if (data.isDetail){
this.isDetail = data.isDetail
}
2024-10-19 16:07:31 +08:00
//获取订单详情
2024-10-18 19:55:06 +08:00
this.getOrderDetail()
2024-10-19 16:07:31 +08:00
//获取当前订单是否有审批的配件
this.waresByTicket()
2024-10-13 23:24:23 +08:00
},
methods: {
2024-10-18 23:46:57 +08:00
afterRead(file) {
for (let i = 0; i < file.tempFilePaths.length; i++) {
upload({
url:'/admin-api/infra/file/upload',
filePath: file.tempFilePaths[i]
}).then((res)=>{
this.fileList.push({
url: config.baseImageUrl+res.data
})
console.log(this.fileList)
})
}
},
deleteFile(file, index) {
console.log('删除文件');
this.fileList.splice(index, 1);
},
/**
* 保存工作记录信息
*/
async saveWorkingItem(){
try {
let fileStr = this.fileList.map(item=>item.url.replace(config.baseImageUrl,"")).join(",")
const result = await saveTicketsRecords(this.ticketInfo.id,null,null,null,"sgz","施工中拍照记录",fileStr);
this.$refs.popup.close()
uni.showToast({
title: '操作成功',
icon: 'none'
})
console.error("result",result);
} catch (error) {
console.error(error);
}
},
/**
* 判断工单状态和角色控制显示什么操作按钮
*/
checkRoleOperate(){
if(this.loginUser.roleCodes.includes("service_advisor")){
//服务顾问
}
if(this.loginUser.roleCodes.includes("repair_staff")){
//维修工角色
if(this.ticketInfo.nowRepairId==this.loginUser.id){
//当前用户就是施工人,可以提交配件申请
this.content.push({
text: '配件申请', active: false,code:"apply"
})
if("02"==this.ticketInfo.ticketsWorkStatus){
//当前正在施工,可以随时上传图片
this.content.push({
text: '拍照上传', active: false,code:"working"
})
}
}
}
},
/**
* 操作按钮点击事件
*/
trigger(e) {
console.log(e)
this.content[e.index].active = !e.item.active
if("working"==e.item.code){
//维修过程中拍照上传
this.fileList=[]
this.$refs.popup.open("bottom")
}
// uni.showModal({
// title: '提示',
// content: `您${this.content[e.index].active ? '选中了' : '取消了'}${e.item.text}${e.item.code}`,
// success: function(res) {
// if (res.confirm) {
// console.log('用户点击确定')
// } else if (res.cancel) {
// console.log('用户点击取消')
// }
// }
// })
},
/**
* 点击悬浮操作按钮
*/
fabClick() {
2024-10-18 17:33:58 +08:00
2024-10-18 23:46:57 +08:00
},
2024-10-18 23:47:27 +08:00
/**
* 是否开放给用户
*/
toPartShow(row){
console.log(row.detail.value)
const show = row.detail.value?'1':'0'
request({
url: '/admin-api/repair/tickets/show',
method: 'get',
params:{id:this.ticketId,show:show}
}).then((res)=>{
uni.showToast({
title: '设置成功!',
icon: 'none'
})
})
},
2024-10-18 17:33:58 +08:00
/**
* 查看订单详情
*/
getOrderDetail(){
request({
url: '/admin-api/repair/tickets/get',
method: 'get',
params:{id:this.ticketId}
}).then((res)=>{
2024-10-18 22:20:10 +08:00
let resultObj = res.data
resultObj.statusStr = getOrderStatusText(res.data.ticketsStatus)
2024-10-18 19:55:06 +08:00
//注册日期
2024-10-18 22:20:10 +08:00
if (null != resultObj.carInfo.carRegisterDate){
resultObj.carRegisterDate = formatDate(resultObj.carInfo.carRegisterDate)
2024-10-18 19:55:06 +08:00
}
//年检时间
2024-10-18 22:20:10 +08:00
if (null != resultObj.carInfo.inspectionDate){
resultObj.inspectionDate = formatDate(resultObj.carInfo.inspectionDate)
2024-10-18 19:55:06 +08:00
} else {
2024-10-18 22:20:10 +08:00
resultObj.inspectionDate = '未知'
2024-10-18 19:55:06 +08:00
}
//保险时间
2024-10-18 22:20:10 +08:00
if (null != resultObj.carInfo.insuranceDate) {
resultObj.insuranceDate = formatDate(resultObj.carInfo.insuranceDate)
2024-10-18 19:55:06 +08:00
} else {
2024-10-18 22:20:10 +08:00
resultObj.insuranceDate = '未知'
2024-10-18 19:55:06 +08:00
}
//生日
2024-10-18 22:20:10 +08:00
if (null != resultObj.customerInfo.birthday) {
resultObj.birthday = formatDate(resultObj.customerInfo.birthday)
2024-10-18 19:55:06 +08:00
} else {
2024-10-18 22:20:10 +08:00
resultObj.birthday = '未知'
2024-10-18 19:55:06 +08:00
}
//维修记录匹配数据字典
2024-10-18 22:20:10 +08:00
if (null != resultObj.records){
resultObj.records.map((item)=>{
2024-10-18 19:55:06 +08:00
item.typeStr = getDictTextByCodeAndValue('repair_records_type',item.type)
item.createTime = formatTimestamp(item.createTime)
})
}
2024-10-18 22:20:10 +08:00
this.ticketInfo = resultObj
2024-10-18 23:46:57 +08:00
//判断当前角色及工单状态显示操作按钮
this.checkRoleOperate()
2024-10-18 17:33:58 +08:00
})
},
2024-10-18 17:21:09 +08:00
2024-10-19 16:07:31 +08:00
/**
* 查询当前工单下的审批单
*/
waresByTicket(){
request({
url: '/admin-api/repair/tw/list',
method: 'get',
params:{ticketId:this.ticketId,status:'01'}
}).then((res)=>{
if (res.code == 200){
this.wares = res.data
}
})
},
2024-10-15 23:40:11 +08:00
editPeople(type, proj) {
bus.$off('choosePeople')
bus.$on('choosePeople', (data) => {
console.log('choosePeople', data)
console.log('type', type)
if (type === 'xs') {
proj.salesman = data
} else if (type === 'sg') {
proj.constructor = data
}
console.log('proj', proj)
})
uni.navigateTo({
url: `/pages-order/choosePeople/choosePeople?type=${type}`
})
},
2024-10-19 16:07:31 +08:00
/**
* 点击配件申请单提醒查看相关配件
* @param wareId
*/
showReviewList(formData) {
2024-10-15 23:40:11 +08:00
uni.navigateTo({
2024-10-19 16:07:31 +08:00
url: '/pages-order/reviewList/reviewList?formData='+encodeURIComponent(JSON.stringify(formData))
2024-10-15 23:40:11 +08:00
})
2024-10-13 23:24:23 +08:00
}
}
}
</script>
<style lang="less" scoped>
2024-10-18 23:46:57 +08:00
.popup-content {
@include flex;
align-items: center;
justify-content: center;
padding: 15px;
height: auto;
background-color: #fff;
}
2024-10-13 23:24:23 +08:00
.container {
height: 100%;
background-color: #F3F5F7;
.containerBody {
height: 100%;
display: flex;
flex-direction: column;
}
.body {
flex: 1;
height: 0;
overflow: auto;
}
.card {
background: #FFFFFF;
border-radius: 8rpx 8rpx 8rpx 8rpx;
margin: 20rpx 32rpx;
}
.phone {
background: #0174F6;
.phoneHeader {
padding: 20rpx 30rpx;
.title {
font-weight: bold;
font-size: 32rpx;
color: #FFFFFF;
margin-bottom: 10rpx;
2024-10-09 13:34:36 +08:00
}
2024-10-13 23:24:23 +08:00
.desc {
font-weight: 500;
font-size: 24rpx;
color: rgba(255, 255, 255, 0.7);
2024-10-09 13:34:36 +08:00
}
2024-10-13 23:24:23 +08:00
}
.phoneBody {
background: #FFFFFF;
border-radius: 8rpx 8rpx 8rpx 8rpx;
padding: 0 30rpx;
.searchBox {
padding: 40rpx 0;
border-bottom: 1rpx solid #EEEEEE;
2024-10-09 13:34:36 +08:00
}
2024-10-13 23:24:23 +08:00
.btn {
padding: 40rpx 0;
display: flex;
align-items: center;
justify-content: center;
column-gap: 10rpx;
font-weight: 500;
font-size: 32rpx;
color: #0174F6;
.btnIcon {
width: 32rpx;
height: 32rpx;
}
}
}
}
.cardInfo {
2024-10-18 22:20:10 +08:00
.noReviewPart {
padding: 10rpx 36rpx 10rpx 36rpx;
display: flex;
align-items: center;
column-gap: 10rpx;
margin-top: 10rpx;
background: #FFF6E7;
border-radius: 4rpx 4rpx 4rpx 4rpx;
font-weight: 500;
font-size: 28rpx;
color: #E8A321;
.messageText {
flex: 1;
width: 0;
}
}
2024-10-13 23:24:23 +08:00
&.none {
position: relative;
display: flex;
flex-direction: column;
align-items: center;
.cardNoneIcon {
width: 336rpx;
2024-10-09 13:34:36 +08:00
}
2024-10-13 23:24:23 +08:00
.btn {
position: absolute;
bottom: 40rpx;
left: 50%;
transform: translateX(-50%);
display: flex;
align-items: center;
column-gap: 10rpx;
font-weight: 500;
font-size: 28rpx;
color: #0174F6;
}
}
}
.projTitle, .userTitle, .carTitle {
padding: 30rpx;
font-weight: bold;
font-size: 32rpx;
color: #333333;
}
.carCard {
.orderFlag {
display: flex;
align-items: center;
column-gap: 14rpx;
padding: 40rpx 30rpx;
background: #FFFBF3;
border-radius: 8rpx 8rpx 0rpx 0rpx;
border-top: 8rpx solid #E8A321;
&.end {
border-top: 8rpx solid #17DBB1;
background-color: #E3FFF9;
}
2024-10-15 23:40:11 +08:00
2024-10-13 23:24:23 +08:00
.flagBody {
display: flex;
flex-direction: column;
row-gap: 10rpx;
font-weight: bold;
font-size: 32rpx;
color: #333333;
2024-10-15 23:40:11 +08:00
2024-10-13 23:24:23 +08:00
.flagDesc {
font-weight: 500;
font-size: 24rpx;
color: #999999;
}
}
}
2024-10-15 23:40:11 +08:00
2024-10-13 23:24:23 +08:00
.carDetail {
background-size: 100% 184rpx;
padding: 0 30rpx;
.carHeader {
border-radius: 8rpx 8rpx 8rpx 8rpx;
display: flex;
align-items: center;
column-gap: 20rpx;
padding-bottom: 30rpx;
.carImage {
width: 192rpx;
height: 120rpx;
background: #F2F2F7;
border-radius: 8rpx 8rpx 8rpx 8rpx;
}
.carHeaderRight {
display: flex;
flex-direction: column;
row-gap: 20rpx;
font-weight: bold;
font-size: 32rpx;
color: #333333;
.carType {
font-weight: 500;
font-size: 28rpx;
color: #858BA0;
}
}
}
.carBody {
display: flex;
flex-direction: column;
row-gap: 30rpx;
padding-top: 30rpx;
border-top: 1rpx solid #DDDDDD;
}
.carFoot {
}
}
}
.projCard {
padding-bottom: 30rpx;
.projList {
padding: 0 30rpx;
display: flex;
flex-direction: column;
gap: 20rpx;
.projItem {
background: #FFFFFF;
border-radius: 4rpx 4rpx 4rpx 4rpx;
border: 2rpx solid #DDDDDD;
padding: 0 20rpx;
.projTop {
padding: 20rpx 0;
border-bottom: 1rpx solid #DDDDDD;
display: flex;
align-items: center;
justify-content: space-between;
font-weight: 500;
font-size: 28rpx;
color: #333333;
.projAmount {
font-weight: bold;
color: #0174F6;
}
}
.projBody {
padding-bottom: 20rpx;
.projDate {
font-weight: 500;
font-size: 24rpx;
color: #858BA0;
display: flex;
align-items: center;
column-gap: 10rpx;
padding: 20rpx 0;
}
.projDesc {
font-weight: 500;
font-size: 24rpx;
color: #858BA0;
}
.projImg {
width: 100%;
display: grid;
grid-template-columns: repeat(auto-fill, 120rpx);
justify-content: space-between;
gap: 20rpx;
padding: 20rpx 0;
.projImgItem {
width: 120rpx;
height: 120rpx;
background-color: #efefef;
}
}
.projSend {
display: flex;
align-items: center;
font-weight: 500;
font-size: 28rpx;
column-gap: 8rpx;
}
}
}
.projEditItem {
padding: 0 20rpx;
background: #F2F2F7;
border-radius: 4rpx 4rpx 4rpx 4rpx;
.projEditLine1 {
display: flex;
align-items: center;
justify-content: space-between;
font-weight: 500;
font-size: 28rpx;
color: #333333;
padding: 30rpx 0;
.projAmount {
color: #0174F6;
}
}
.projBaseInfo {
display: grid;
grid-template-columns: 1fr 1fr;
font-size: 24rpx;
color: #999999;
gap: 20rpx;
margin-bottom: 20rpx;
}
2024-10-15 23:40:11 +08:00
2024-10-13 23:24:23 +08:00
.projEditFoot {
padding: 30rpx 0;
border-top: 1px solid #DDDDDD;
display: flex;
align-items: center;
column-gap: 10rpx;
2024-10-15 23:40:11 +08:00
2024-10-13 23:24:23 +08:00
.block1, .block2 {
flex: 1;
width: 0;
display: flex;
align-items: center;
justify-content: center;
column-gap: 8rpx;
font-size: 28rpx;
color: #0174F6;
line-height: 28rpx;
.editPeople {
flex: 1;
width: 0;
display: flex;
justify-content: space-between;
align-items: center;
.editForm {
display: flex;
flex-direction: column;
row-gap: 10rpx;
font-size: 28rpx;
color: #333333;
2024-10-15 23:40:11 +08:00
2024-10-13 23:24:23 +08:00
.label {
font-size: 24rpx;
color: #999999;
}
}
}
}
2024-10-15 23:40:11 +08:00
2024-10-13 23:24:23 +08:00
.line {
height: 28rpx;
width: 2rpx;
background-color: #DDDDDD;
}
}
}
}
}
.userCard {
.userContainer {
display: flex;
flex-direction: column;
row-gap: 30rpx;
margin: 0 30rpx;
2024-10-18 22:20:10 +08:00
padding-bottom: 10rpx;
2024-10-13 23:24:23 +08:00
}
}
.infoItem {
display: flex;
flex-direction: column;
.label {
font-weight: 500;
font-size: 28rpx;
color: #858BA0;
}
.value {
font-weight: 500;
font-size: 28rpx;
color: #333333;
}
}
.projFoot, .userFoot, .carFoot {
padding: 30rpx;
font-weight: 500;
font-size: 28rpx;
color: #0174F6;
display: flex;
align-items: center;
justify-content: center;
column-gap: 6rpx;
}
2024-10-15 23:40:11 +08:00
.foot {
padding: 30rpx;
background-color: #fff;
.submit {
margin: 0 auto;
width: 510rpx;
height: 76rpx;
background: #0174F6;
border-radius: 38rpx 38rpx 38rpx 38rpx;
display: flex;
align-items: center;
justify-content: center;
font-size: 32rpx;
color: #FFFFFF;
}
}
2024-10-13 23:24:23 +08:00
}
2024-10-09 13:34:36 +08:00
</style>