Zlpt_Portal/src/views/user/orderManagementCz/detail.vue

602 lines
20 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<script setup lang="ts">
import { ref } from 'vue'
import PagingComponent from 'components/PagingComponent/index.vue'
import { useRouter } from 'vue-router'
import { getOrderListInfoApi } from 'http/api/usercenter/seekorder'
const route = useRoute()
/* 查询参数 */
const cardList = ref<any>({})
const orderStatusTemp = ref<number>(0)
const idTemp = ref<string>('')
const titleStaus = ref<any>('')
//描述信息
const operationDetails = ref<any>({
1: { title: '已出库', preOutboundUser: '', preOutboundTime: '' },
2: { title: '已收货', takeOverUser: '', takeOverTime: '' },
3: { title: '租赁结束', rentOverUser: '', rentOverTime: '' },
})
// 获取数据列表
// const getList = async () => {
// const res: any = await getOrderListApi()
// console.log('获取数据列表***', res)
// tableData.value = res.rows
// total.value = res.total
// }
// 根据步骤的 Id 返回对应的标题
const getStepTitle = (stepId: number) => {
if (orderStatusTemp.value === 2) {
titleStaus.value = '待出库'
return stepId === 1 ? '待出库' : ''
} else if (orderStatusTemp.value === 3) {
titleStaus.value = '待收货'
return stepId === 1 ? '已出库' : stepId === 2 ? '待收货' : ''
} else if (orderStatusTemp.value === 4) {
titleStaus.value = '租赁中'
return stepId === 1 ? '已出库' : stepId === 2 ? '已收货' : stepId === 3 ? '租赁中' : ''
} else if (orderStatusTemp.value === 5) {
titleStaus.value = '已退租'
return stepId === 1
? '已出库'
: stepId === 2
? '已收货'
: stepId === 3
? '租赁结束'
: stepId === 4
? '已退租'
: ''
} else if (orderStatusTemp.value === 6) {
titleStaus.value = '已完成'
return stepId === 1
? '已出库'
: stepId === 2
? '已收货'
: stepId === 3
? '租赁结束'
: stepId === 4
? '已退租'
: stepId === 5
? '已完成'
: ''
} else if (orderStatusTemp.value === 7) {
titleStaus.value = '已驳回'
return stepId === 1 ? '已驳回' : ''
}
titleStaus.value = ''
return '' // 默认返回空字符串
}
// 根据步骤的 Id 返回对应的描述
const getDescription = (desId: number) => {
const operation = operationDetails.value[desId]
if (operation.title == '已出库' && titleStaus.value != '待出库') {
return `
操作人:${operation.preOutboundUser == null ? ' ' : operation.preOutboundUser}
操作时间:${operation.preOutboundTime == null ? ' ' : operation.preOutboundTime}
`
} else if (
operation.title == '已收货' &&
titleStaus.value != '待收货' &&
titleStaus.value != '待出库'
) {
return `
操作人:${operation.takeOverUser == null ? ' ' : operation.takeOverUser}
操作时间:${operation.takeOverTime == null ? ' ' : operation.takeOverTime}
`
} else if (
operation.title == '租赁结束' &&
titleStaus.value != '待收货' &&
titleStaus.value != '待出库' &&
titleStaus.value != '租赁中'
) {
return `
操作人:${operation.rentOverUser == null ? ' ' : operation.rentOverUser}
操作时间:${operation.rentOverTime == null ? ' ' : operation.rentOverTime}
`
}
return '' // 默认返回空描述
}
// 计算是否过期
const isExpired = (goods: any) => {
// 获取当前日期并去掉时间部分
const today = new Date()
today.setHours(0, 0, 0, 0)
// 将endtime转为Date对象
const endTime = new Date(goods.endTime.replace(/-/g, '/'))
// 判断endtime是否早于今天
return endTime < today
}
const getId = () => {
orderStatusTemp.value = Number(route.query.orderStatusTemp)
idTemp.value = String(route.query.idTemp)
}
/** 查询列表 */
const getList = async () => {
let params = {
orderId: idTemp.value,
}
const res: any = await getOrderListInfoApi(params)
cardList.value = res.data
operationDetails.value[1].preOutboundUser = res.data.detailsList[0].preOutboundUser
operationDetails.value[1].preOutboundTime = res.data.detailsList[0].preOutboundTime
operationDetails.value[2].takeOverUser = res.data.detailsList[0].takeOverUser
operationDetails.value[2].takeOverTime = res.data.detailsList[0].takeOverTime
operationDetails.value[3].rentOverUser = res.data.detailsList[0].rentOverUser
operationDetails.value[3].rentOverTime = res.data.detailsList[0].rentOverTime
}
onBeforeMount(() => {
getId()
})
onMounted(() => {
getList()
})
const time = ref([])
</script>
<template>
<!-- 订单管理 -->
<div class="container">
<el-breadcrumb separator="/">
<el-breadcrumb-item :to="{ name: 'orderManagementCz' }">订单管理</el-breadcrumb-item>
<el-breadcrumb-item>订单明细</el-breadcrumb-item>
</el-breadcrumb>
<div class="section">
<el-header>
<el-row type="flex" justify="space-between" align="middle">
<el-col :span="3">
<span>订单流程</span>
</el-col>
<el-col
:span="2"
style="text-align: right; margin-right: 80px; font-size: 20px"
>
<div style="color: green">{{ titleStaus }}</div>
</el-col>
</el-row>
</el-header>
<el-steps
class="step"
:space="600"
:active="orderStatusTemp === 7 ? 1 : orderStatusTemp - 1"
finish-status="success"
>
<el-step :title="getStepTitle(1)" :description="getDescription(1)"></el-step>
<el-step :title="getStepTitle(2)" :description="getDescription(2)"></el-step>
<el-step :title="getStepTitle(3)" :description="getDescription(3)"></el-step>
<el-step :title="getStepTitle(4)"></el-step>
<el-step :title="getStepTitle(5)"></el-step>
</el-steps>
</div>
<div class="section">
<el-header style="height: 30px">租赁信息 </el-header>
<div style="height: 80px">
<div class="info" style="margin-top: 5px; display: flex; flex-wrap: wrap">
<div
class="item"
style="
width: 30%;
flex-shrink: 0;
margin-bottom: 5px;
font-size: 14px;
margin-left: 40px;
opacity: 0.7;
"
>
<span>订单编号{{ cardList.code }}</span>
</div>
<div
class="item"
style="
width: 30%;
flex-shrink: 0;
margin-bottom: 5px;
font-size: 14px;
opacity: 0.7;
"
>
<span>下单时间{{ cardList.orderTime }}</span>
</div>
<div
class="item"
style="
width: 30%;
flex-shrink: 0;
margin-bottom: 5px;
font-size: 14px;
opacity: 0.7;
"
>
<span></span>
</div>
<div
class="item"
style="
width: 30%;
flex-shrink: 0;
margin-bottom: 5px;
font-size: 14px;
margin-left: 40px;
opacity: 0.7;
"
>
<span>出租单位{{ cardList.czcompanyName }}</span>
</div>
<div
class="item"
style="
width: 30%;
flex-shrink: 0;
margin-bottom: 5px;
font-size: 14px;
opacity: 0.7;
"
>
<span>出租人{{ cardList.person }}</span>
</div>
<div
class="item"
style="
width: 30%;
flex-shrink: 0;
margin-bottom: 5px;
font-size: 14px;
opacity: 0.7;
"
>
<span>出租人电话{{ cardList.personPhone }}</span>
</div>
<div
class="item"
style="
width: 30%;
flex-shrink: 0;
margin-bottom: 5px;
font-size: 14px;
margin-left: 40px;
opacity: 0.7;
"
>
<span>承租单位{{ cardList.companyName }}</span>
</div>
<div
class="item"
style="
width: 30%;
flex-shrink: 0;
margin-bottom: 5px;
font-size: 14px;
opacity: 0.7;
"
>
<span>承租人{{ cardList.nickName }}</span>
</div>
<div
class="item"
style="
width: 30%;
flex-shrink: 0;
margin-bottom: 5px;
font-size: 14px;
opacity: 0.7;
"
>
<span>承租人电话{{ cardList.phoneNumber }}</span>
</div>
<div
class="item"
style="
width: 30%;
flex-shrink: 0;
margin-bottom: 5px;
font-size: 14px;
margin-left: 40px;
opacity: 0.7;
"
>
<span>租赁协议</span>
</div>
</div>
</div>
<el-row
class="cart-listAll"
:style="{ background: cardList.orderStatus == '6' ? '#EBEEF5' : 'white' }"
>
<el-col :span="1">
<!-- <div style="text-align: center">
<el-checkbox :key="numberTemp" v-model="goods.isChecked" @change="onChangeGoods(index)" :disabled="goods.orderStatus!='2'">
</el-checkbox>
</div> -->
</el-col>
<el-col :span="7">
<el-row class="cart-list" v-for="(goods, j) in cardList.detailsList" :key="j">
<el-col class="goods-info">
<el-col :span="7">
<img :src="goods.url" alt="" />
</el-col>
<div class="goods-code">
<div style="font-size: 10px; font-weight: bold">
{{ goods.deviceName }}
</div>
<div>租期:{{ goods.days }}{{ ' ' + '天' }}</div>
<div
style="
display: flex;
justify-content: space-between;
width: 100%;
"
>
<div style="flex: 1; text-align: left; width: 220px">
租金:{{ goods.dayLeasePrice }}{{ ' ' + '元/天' }}
</div>
<div style="flex: 1; text-align: left">
数量:{{ goods.num }}{{ ' ' + '台' }}
</div>
</div>
</div>
</el-col>
</el-row>
</el-col>
<el-col :span="4">
<div style="font-size: 14px; font-weight: bold; margin-bottom: 10px">
总费用
</div>
<div class="red-font">{{ cardList.cost }}</div>
</el-col>
<el-col :span="7">
<div style="font-size: 14px; font-weight: bold; margin-bottom: 10px">租期</div>
<div style="color: black; font-weight: bold">
{{ cardList.startTime }}
</div>
<div style="margin-top: 3px; margin-bottom: 3px">{{ '至' }}</div>
<div style="color: black; font-weight: bold">{{ cardList.endTime }}</div>
</el-col>
<el-col :span="4">
<div
v-if="cardList.orderStatus == '2'"
style="font-size: 14px; font-weight: bold; margin-bottom: 10px; color: blue"
>
{{ '待出库' }}
</div>
<div
v-if="cardList.orderStatus == '3'"
style="
font-size: 14px;
font-weight: bold;
margin-bottom: 10px;
color: #c76f60;
"
>
{{ '待收货' }}
</div>
<div
v-if="cardList.orderStatus == '4' && isExpired(cardList)"
style="
font-size: 14px;
font-weight: bold;
margin-bottom: 10px;
color: #008d06;
"
>
{{ '租赁中' }}
<span style="color: red">(已过期)</span>
</div>
<div
v-if="cardList.orderStatus == '4' && !isExpired(cardList)"
style="
font-size: 14px;
font-weight: bold;
margin-bottom: 10px;
color: #008d06;
"
>
{{ '租赁中' }}
</div>
<div
v-if="cardList.orderStatus == '5'"
style="
font-size: 14px;
font-weight: bold;
margin-bottom: 10px;
color: #5b33cc;
"
>
{{ '已退租' }}
</div>
<div
v-if="cardList.orderStatus == '6'"
style="
font-size: 14px;
font-weight: bold;
margin-bottom: 10px;
color: #c00017;
"
>
{{ '已完成' }}
</div>
<div
v-if="cardList.orderStatus == '7'"
style="
font-size: 14px;
font-weight: bold;
margin-bottom: 10px;
color: #797979;
"
>
{{ '已驳回' }}
</div>
</el-col>
</el-row>
</div>
</div>
</template>
<style lang="scss" scoped>
.container {
// width: 800px;
margin: 0 auto;
padding: 10px;
// background: #eeeff6;
font-size: 14px;
.step {
margin-left: 80px;
}
.section {
margin-top: 20px;
margin-bottom: 20px;
}
.cart-tbody {
background: #fff;
padding: 8px 12px;
margin: 10px;
border: 1px solid #ccc;
border-radius: 20px;
.cart-user-info {
display: flex;
align-items: center;
font-size: 13px;
.user-name,
.user-phone {
padding: 3px 18px;
border: 1px solid #ccc;
}
.user-name {
margin-left: 20px;
border-right: none;
}
}
.cart-list {
margin: 15px 0;
display: flex;
align-items: center;
div {
text-align: center;
}
.goods-info {
display: flex;
align-content: center;
img {
width: 140px;
height: 80px;
}
.goods-code {
margin-left: 70px;
display: flex;
flex-direction: column;
justify-content: space-around;
div {
text-align: left;
}
}
}
.lease-date {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
font-size: 12px;
}
.red-font {
color: #ff4800;
font-weight: bold;
}
}
}
.cart-listAll {
margin: 15px 0;
display: flex;
align-items: center;
font-size: 13px;
div {
text-align: center;
}
.cart-list {
margin: 15px 0;
display: flex;
align-items: center;
font-size: 13px;
div {
text-align: center;
}
.goods-info {
display: flex;
align-content: center;
img {
width: 180px;
height: 80px;
}
.goods-code {
margin-left: 110px;
display: flex;
flex-direction: column;
justify-content: space-around;
div {
text-align: left;
}
}
}
.lease-date {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
font-size: 12px;
}
.red-font {
color: #ff4800;
font-weight: bold;
}
}
.lease-date {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
font-size: 12px;
}
.red-font {
color: #ff4800;
font-weight: bold;
}
}
}
</style>