From 3d460140b7af3a281b54d17b457c8aff12b9d5c2 Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期一, 15 九月 2025 17:09:52 +0800
Subject: [PATCH] 前端
---
admin/src/components/business/OperaOrderDetailWindow.vue | 270 +++++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 255 insertions(+), 15 deletions(-)
diff --git a/admin/src/components/business/OperaOrderDetailWindow.vue b/admin/src/components/business/OperaOrderDetailWindow.vue
index 36eb0f9..0b41e51 100644
--- a/admin/src/components/business/OperaOrderDetailWindow.vue
+++ b/admin/src/components/business/OperaOrderDetailWindow.vue
@@ -11,9 +11,10 @@
<div class="renzheng" >
<div class="info" >
<span class="m10">璁㈠崟淇℃伅</span>
- <el-tag type="primary" class="ml10 tag2" v-if="info.status == 0||info.status == 1||info.status == 3">{{ info.statusName }}</el-tag>
+ <el-tag type="primary" class="ml10 tag2" v-if="info.status == 0||info.status == 1||info.status == 2||info.status == 3">{{ info.statusName }}</el-tag>
<el-tag type="success" class="ml10 tag2" v-if="info.status == 4">{{ info.statusName }}</el-tag>
<el-tag type="danger" class="ml10 tag2" v-if="info.status == 99">{{ info.statusName }}</el-tag>
+ <div style="display: inline-block;float: right;font-size: 12px"><el-button icon="el-icon-timer" type="primary" @click="showLogList" >璁㈠崟娴佽浆鏃ュ織</el-button></div>
</div>
<div class="detail" >
<div class="line">
@@ -55,17 +56,17 @@
<span class="txt" v-if="info.type==0">{{(info.workType==0?'閲囨憳宸�':(info.workType==1?'鍒嗘嫞宸�':'鍖呰宸�')) }}</span>
<span v-else>-</span>
</div>
- <div class="cont"><span class="label">閲囨憳鍝佺锛�</span> <span class="txt">{{info.categoryName || ''}}</span></div>
+ <div class="cont"><span class="label">鍝佺锛�</span> <span class="txt">{{info.categoryName || ''}}</span></div>
</div>
<div class="line">
- <div class="cont"><span class="label">閲囨憳閲嶉噺锛�</span> <span class="txt">{{info.priceNum1 || '' }}鏂�</span></div>
- <div class="cont"><span class="label">鐢ㄥ伐鏃堕棿锛�</span><span class="txt">{{info.startDate|| '' }}-{{info.endDate|| '' }}</span></div>
- <div class="cont"><span class="label">鐢ㄥ伐澶╂暟锛�</span><span class="txt">{{info.totalDays || 0 }}</span></div>
- </div>
- <div class="line">
+ <div class="cont" ><span class="label">鐢ㄥ伐鏃堕棿锛�</span><span class="txt">{{info.startDate|| '' }}-{{info.endDate|| '' }} 锛� {{info.totalDays || 0 }} 锛夊ぉ</span></div>
<div class="cont"><span class="label">鐢ㄥ伐鍦扮偣锛�</span> <span class="txt">{{info.location || '' }}</span></div>
+ <div class="cont"><span class="label">棰勪及鎬昏垂鐢細</span><span class="txt yellowbtn">{{((info.originEstimatedAccount||0)/100).toFixed(2) }}鍏�</span></div>
+ </div>
+ <div class="line">
<div class="cont"><span class="label">璐圭敤鏍囧噯锛�</span><span class="txt">{{((info.price||0)/100).toFixed(2) }}{{info.priceUnit || '' }}</span></div>
- <div class="cont"><span class="label">棰勪及鎬昏垂鐢細</span><span class="txt yellowbtn">{{((info.estimatedAccount||0)/100).toFixed(2) }}鍏�</span></div>
+ <div class="cont" :style="feeFrom.priceParam2.name!=null?'':'flex: 2'"><span class="label">{{feeFrom.priceParam1.name }}</span><span class="txt">{{info.originPriceNum1 || 0 }}{{feeFrom.priceParam1.unit }}</span></div>
+ <div class="cont" v-if="feeFrom.priceParam2.name!=null"><span class="label">{{feeFrom.priceParam2.name }}</span><span class="txt">{{info.originPriceNum2 || 0 }}{{feeFrom.priceParam2.unit }}</span></div>
</div>
<div class="line">
<div class="cont"><span class="label">鍦扮偣鎻忚堪锛�</span><span class="txt">{{info.locationRemark || '' }}</span></div>
@@ -82,9 +83,9 @@
<div class="line" v-if="info.multifileList && info.multifileList.length>0">
<div class="cont">
<template v-if="info.multifileList && info.multifileList.length>0">
- <div v-for="item in info.multifileList" style="display: inline-block" :key="item">
+ <div v-for="item in info.multifileList" style="display: inline-block" :key="'aaa'+item.id">
<el-image v-if="item.fileurlFull" style="width: 50px; height: 50px; margin-right: 10px" :src="item.fileurlFull"
- :preview-src-list="[info.fileurlFull]">
+ :preview-src-list="[item.fileurlFull]">
</el-image>
</div>
</template>
@@ -95,25 +96,186 @@
<div style="margin-top: 20px"> <span class="label"> 瀹℃牳淇℃伅锛�</span> <span class="txt">{{info.auditRemark || '' }}</span></div>
</div>
</div>
+ <div class="detail" v-if="info.type==1">
+ <div class="line">
+ <div class="cont"><span class="label"> 璁㈠崟绫诲瀷锛�</span> <span class="txt">{{(info.type==0?'鐢ㄥ伐鍗�':(info.type==1?'璐ц繍鍗�':'璁㈤鍗�')) }}</span></div>
+ <div class="cont"><span class="label">杞﹁締锛�</span> <span class="txt">{{info.categoryName || ''}}-{{info.carUnit || ''}}</span></div>
+ <div class="cont"><span class="label">鐢ㄨ溅鏃堕棿锛�</span> <span class="txt">{{info.startDate|| '' }}-{{info.endDate|| '' }}锛� {{info.totalDays || 0 }} 锛夊ぉ</span></div>
+ </div>
+ <div class="line">
+ <div class="cont" > <span class="label"> 鍦板潃淇℃伅锛�</span> <span class="label" v-if="!wayList || wayList.length==0">-</span> </div>
+ </div>
+ <div class="line" v-if="wayList && wayList.length>0">
+ <div class="cont" style="padding-left: 40px;background-color: #e4ecfe">
+ <div v-for="(item,index) in wayList" style="display: block;margin: 10px" :key="'bbb'+index">
+ <span v-if="index == 0">鐢ㄨ溅璧风偣锛歿{item.location || ''}}</span>
+ <span v-if="index >0 && index < wayList.length-1">閫旂粡鍦扮偣锛歿{item.location || ''}}</span>
+ <span v-if="index == wayList.length-1">鐢ㄨ溅缁堢偣锛歿{item.location || ''}}</span>
+ </div>
+ </div>
+ </div>
+ <div class="line">
+ <div class="cont"><span class="label">{{feeFrom.priceParam1.name }}</span><span class="txt">{{info.originPriceNum1 || 0 }}{{feeFrom.priceParam1.unit }}</span></div>
+ <div class="cont"><span class="label">杩愯緭閲嶉噺/鏁伴噺锛�</span> <span class="txt">{{info.transportNum || '' }}{{info.transportUnit || ''}}</span></div>
+ <div class="cont"><span class="label">璐圭敤鏍囧噯锛�</span><span class="txt">{{((info.price||0)/100).toFixed(2) }}{{info.priceUnit || '' }}</span></div>
+ </div>
+ <div class="line">
+ <div class="cont"><span class="label">棰勪及鎬昏垂鐢細</span><span class="txt yellowbtn">{{((info.originEstimatedAccount||0)/100).toFixed(2) }}鍏�</span></div>
+ </div>
+ <div class="line">
+ <div class="cont" ><span class="label">闇�姹傝ˉ鍏咃細</span><span class="txt">{{info.supplement || '' }}</span></div>
+ </div>
+ <div class="line">
+ <div class="cont">
+ <span class="label">鍥剧墖锛�</span>
+ <span class="txt" v-if="!info.multifileList || info.multifileList.length ==0">鏃�</span>
+ </div>
+ </div>
+ <div class="line" v-if="info.multifileList && info.multifileList.length>0">
+ <div class="cont">
+ <template v-if="info.multifileList && info.multifileList.length>0">
+ <div v-for="item in info.multifileList" style="display: inline-block" :key="item.id">
+ <el-image v-if="item.fileurlFull" style="width: 50px; height: 50px; margin-right: 10px" :src="item.fileurlFull"
+ :preview-src-list="[item.fileurlFull]">
+ </el-image>
+ </div>
+ </template>
+ </div>
+ </div>
+ </div>
+ <div class="detail" v-if="info.type==2">
+ <div class="line">
+ <div class="cont"><span class="label">璁㈠崟绫诲瀷锛�</span> <span class="txt">{{(info.type==0?'鐢ㄥ伐鍗�':(info.type==1?'璐ц繍鍗�':'璁㈠崟鍗�')) }}</span></div>
+ <div class="cont"><span class="label">鐢ㄩ鏃堕棿锛�</span><span class="txt">{{info.startDate|| '' }}-{{info.endDate|| '' }}</span></div>
+ <div class="cont"><span class="label">鐢ㄩ澶╂暟锛�</span><span class="txt">{{info.totalDays || 0 }}</span></div>
+ </div>
+ <div class="line">
+ <div class="cont"><span class="label">鐢ㄩ鍦扮偣锛�</span><span class="txt">{{info.location || '' }}</span></div>
+ <div class="cont" style="flex: 2" >
+ <span class="label"> 椁愭爣/浠芥暟锛�</span>
+ <span v-for="(item,index) in wayList" :key="'bbb'+index">
+ {{item.name || ''}}{{((item.price||0)/100).toFixed(2)}}鍏儃{item.num||0}}浠絳{index != wayList.length-1?'|':''}}
+ </span>
+ <span class="label" v-if="!wayList || wayList.length==0">-</span>
+ </div>
+ </div>
+ <div class="line">
+ <div class="cont" ><span class="label">鍦扮偣鎻忚堪锛�</span><span class="txt">{{info.locationRemark || '' }}</span></div>
+ </div>
+ <div class="line">
+ <div class="cont" ><span class="label">闇�姹傛弿杩帮細</span><span class="txt">{{info.supplement || '' }}</span></div>
+ </div>
+ <div class="line">
+ <div class="cont">
+ <span class="label">鍥剧墖锛�</span>
+ <span class="txt" v-if="!info.multifileList || info.multifileList.length ==0">鏃�</span>
+ </div>
+ </div>
+ <div class="line" v-if="info.multifileList && info.multifileList.length>0">
+ <div class="cont">
+ <template v-if="info.multifileList && info.multifileList.length>0">
+ <div v-for="item in info.multifileList" style="display: inline-block" :key="'aaa'+item.id">
+ <el-image v-if="item.fileurlFull" style="width: 50px; height: 50px; margin-right: 10px" :src="item.fileurlFull"
+ :preview-src-list="[item.fileurlFull]">
+ </el-image>
+ </div>
+ </template>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="renzheng" v-if="(info.type ===0 || info.type===1)&&(info.status===5|| info.status===4)" >
+ <div class="info" >
+ <span class="m10">璐圭敤纭</span>
+ </div>
+ <div class="detail" style=" ">
+ <div class="line">
+ <div class="cont"><span class="label">瀹為檯{{feeFrom.priceParam1.name }}</span><span class="txt">{{info.priceNum1 || 0 }}{{feeFrom.priceParam1.unit }}</span></div>
+ <div class="cont" v-if="feeFrom.priceParam2.name!=null"><span class="label">瀹為檯{{feeFrom.priceParam2.name }}</span><span class="txt">{{info.priceNum2 || 0 }}{{feeFrom.priceParam2.unit }}</span></div>
+ <div class="cont" :style="feeFrom.priceParam2.name!=null?'':'flex: 2'"><span class="label">鍏朵粬璐圭敤锛�</span> <span class="txt">{{((info.confirmOtherFee||0)/100).toFixed(2) }}鍏�</span></div>
+ </div>
+ <div class="line">
+ <div class="cont"><span class="label">瀹為檯鎬昏垂鐢細</span><span class="txt yellowbtn">{{((info.estimatedAccount||0)/100).toFixed(2) }}鍏�</span></div>
+ <div class="cont" style="flex: 2"><span class="label">澶囨敞锛�</span><span class="txt">{{info.confirmFeeRemark || '' }}</span></div>
+ </div>
+ </div>
+ </div>
+ <div class="renzheng" >
+ <div class="info" >
+ <span class="m10">鍙戝崟鏂逛俊鎭�</span>
+ </div>
+ <div class="detail" >
+ <div class="line">
+ <div class="cont"><span class="label">鏄电О锛�</span> <span class="txt">{{ info.releaseName||'' }}</span></div>
+ <div class="cont" ><span class="label">鑱旂郴鏂瑰紡锛�</span> <span class="txt ">{{ info.releasePhone||'' }}</span></div>
+ <div class="cont" ><span class="label">鍏朵粬鑱旂郴浜猴細</span> <span class="txt ">{{ info.linkName||'' }}-{{ info.linkPhone||'鏈缃�' }}</span></div>
+ </div>
+ </div>
+ </div>
+ <div class="renzheng" >
+ <div class="info" >
+ <span class="m10">鎺ュ崟鏂逛俊鎭�</span>
+ </div>
+ <div class="detail" >
+ <div class="line">
+ <div class="cont"><span class="label">濮撳悕/鍗曚綅锛�</span> <span class="txt">{{ info.acceptName||'' }}</span></div>
+ <div class="cont" style="flex: 2"><span class="label">鑱旂郴鏂瑰紡锛�</span> <span class="txt ">{{ info.acceptPhone||'' }}</span></div>
+ </div>
+ </div>
+ </div>
+ <div class="renzheng" >
+ <div class="info" >
+ <span class="m10">璇勪环淇℃伅</span>
+ </div>
+ <div class="detail" >
+ <div class="line">
+ <div class="cont"><span class="label">{{info.commentType ==1 ?'绯荤粺鑷姩璇勪环':'鍙戝崟鏂硅瘎浠�'}}</span> <span class="txt">{{ info.commentTime}}</span></div>
+ </div>
+ <div class="line">
+ <div class="cont">
+ <el-button class="label" :class="getScoreLevel(1)" style="border: none;cursor: default" icon="el-icon-star-on"></el-button>
+ <el-button class="label" :class="getScoreLevel(2)" style="border: grey;cursor: default" icon="el-icon-star-on"></el-button>
+ <el-button class="label" :class="getScoreLevel(3)" style="border: grey;cursor: default" icon="el-icon-star-on"></el-button>
+ <el-button class="label" :class="getScoreLevel(4)" style="border: grey;cursor: default" icon="el-icon-star-on"></el-button>
+ <el-button class="label" :class="getScoreLevel(5)" style="border: grey;cursor: default" icon="el-icon-star-on"></el-button>
+ </div>
+ </div>
+ <div class="line">
+ <div class="cont"><span class="label">璇勪环鍐呭锛�</span> <span class="txt">{{ info.commentInfo || '-'}}</span></div>
+ </div>
+ </div>
</div>
</div>
+ <orderProgress ref ='orderProgress'></orderProgress>
</GlobalWindow>
</template>
<script>
import GlobalWindow from '@/components/common/GlobalWindow'
import BaseOpera from '@/components/base/BaseOpera'
-import { getById,cancel } from '@/api/business/orders'
+import orderProgress from '@/components/business/orderProgress'
+import { getById, cancel } from '@/api/business/orders'
export default {
components: {
- GlobalWindow
+ GlobalWindow, orderProgress
},
extends: BaseOpera,
data () {
return {
id: '',
+ wayList: [],
info: {},
- loading: false
+ loading: false,
+ feeFrom: {
+ priceParam1: {
+ name: null,
+ unit: null
+ },
+ priceParam2: {
+ name: null,
+ unit: null
+ }
+ }
}
},
methods: {
@@ -122,6 +284,17 @@
this.visible = true
this.tableData2 = []
this.id = row.id
+ this.wayList = []
+ this.feeFrom = {
+ priceParam1: {
+ name: null,
+ unit: null
+ },
+ priceParam2: {
+ name: null,
+ unit: null
+ }
+ }
this.getData()
},
getData () {
@@ -129,11 +302,24 @@
.then(res => {
this.info = res
this.visible = true
- console.log(this.info)
+ if (this.info.wayInfo) {
+ this.wayList = JSON.parse(this.info.wayInfo)
+ }
+ this.initPriceNumParam()
+ console.log(this.wayList)
})
},
close () {
+ },
+ showLogList () {
+ this.$refs.orderProgress.open('璁㈠崟娴佽浆鏃ュ織', this.info.orderLogList || [])
+ },
+ getScoreLevel (num) {
+ if (this.info.commentLevel && this.info.commentLevel >= num) {
+ return 'staron'
+ }
+ return 'staroff'
},
checkDo (status) {
console.log(this.$refs.formCheck.length)
@@ -162,6 +348,54 @@
})
})
})
+ },
+ initPriceNumParam () {
+ this.feeFrom.priceParam1.name = null
+ this.feeFrom.priceParam1.unit = null
+ this.feeFrom.priceParam2.name = null
+ this.feeFrom.priceParam2.unit = null
+ if (this.info.type === 0 && this.info.workType === 1) {
+ // 鍒嗘嫞宸�
+ this.feeFrom.priceParam1.name = '鐢ㄥ伐澶╂暟锛�'
+ this.feeFrom.priceParam1.unit = '澶�'
+ this.feeFrom.priceParam2.name = '鐢ㄥ伐浜烘暟锛�'
+ this.feeFrom.priceParam2.unit = '浜�'
+ } else if (this.info.type === 0 && this.info.workType === 0) {
+ // 閲囨憳宸�
+ this.feeFrom.priceParam1.name = '閲囨憳閲嶉噺锛�'
+ this.feeFrom.priceParam1.unit = '鏂�'
+ this.feeFrom.priceParam2.name = null
+ this.feeFrom.priceParam2.unit = null
+ } else if (this.info.type === 0 && this.info.workType === 2) {
+ // 鍖呰宸�
+ if (this.info.carType === 0) {
+ // 鎸夊ぉ
+ this.feeFrom.priceParam1.name = '鐢ㄥ伐澶╂暟锛�'
+ this.feeFrom.priceParam1.unit = '澶�'
+ this.feeFrom.priceParam2.name = '鐢ㄥ伐浜烘暟锛�'
+ this.feeFrom.priceParam2.unit = '浜�'
+ } else if (this.info.carType === 1) {
+ // 鎸夊皬鏃�
+ this.feeFrom.priceParam1.name = '宸ヤ綔鏃堕暱锛�'
+ this.feeFrom.priceParam1.unit = '鏃�'
+ this.feeFrom.priceParam2.name = '鐢ㄥ伐浜烘暟'
+ this.feeFrom.priceParam2.unit = '浜�'
+ } else if (this.info.carType === 2) {
+ // 鎸夊皬鏃�
+ this.feeFrom.priceParam1.name = '鍖呰閲嶉噺锛�'
+ this.feeFrom.priceParam1.unit = '鏂�'
+ this.feeFrom.priceParam2.name = null
+ this.feeFrom.priceParam2.unit = null
+ }
+ } else if (this.info.type === 1 && this.info.carType === 0) {
+ // 杩愯揣鍗� 鎸夊ぉ鏁�
+ this.feeFrom.priceParam1.name = '鐢ㄨ溅澶╂暟锛�'
+ this.feeFrom.priceParam1.unit = '澶�'
+ } else if (this.info.type === 1 && this.info.carType === 1) {
+ // 杩愯揣鍗� 鎸夋鏁�
+ this.feeFrom.priceParam1.name = '鐢ㄨ溅娆℃暟锛�'
+ this.feeFrom.priceParam1.unit = '娆�'
+ }
}
}
}
@@ -178,8 +412,14 @@
z-index: 999;
padding: 16px;
}
+.staroff{
+ color: #8c939d !important;
+}
+.staron{
+ color: #ff4d00 !important;
+}
.renzheng{
- margin: 0px 0px 50px 20px;
+ margin: 0px 0px 30px 20px;
width: calc(100% - 60px);
.detail{
font-size: 14px;
--
Gitblit v1.9.3