问题清单修复

This commit is contained in:
BianLzhaoMin 2024-12-16 15:45:48 +08:00
parent 8d2d9bf7ad
commit a854312c1b
12 changed files with 550 additions and 335 deletions

2
components.d.ts vendored
View File

@ -26,7 +26,6 @@ declare module 'vue' {
ElEmpty: typeof import('element-plus/es')['ElEmpty']
ElForm: typeof import('element-plus/es')['ElForm']
ElFormItem: typeof import('element-plus/es')['ElFormItem']
ElHeader: typeof import('element-plus/es')['ElHeader']
ElIcon: typeof import('element-plus/es')['ElIcon']
ElImage: typeof import('element-plus/es')['ElImage']
ElInput: typeof import('element-plus/es')['ElInput']
@ -34,7 +33,6 @@ declare module 'vue' {
ElMenu: typeof import('element-plus/es')['ElMenu']
ElMenuItem: typeof import('element-plus/es')['ElMenuItem']
ElOption: typeof import('element-plus/es')['ElOption']
ElPageHeader: typeof import('element-plus/es')['ElPageHeader']
ElPagination: typeof import('element-plus/es')['ElPagination']
ElPopconfirm: typeof import('element-plus/es')['ElPopconfirm']
ElProgress: typeof import('element-plus/es')['ElProgress']

View File

@ -173,6 +173,41 @@
</div>
<div class="protocol-handle" v-if="cardList.length > 0">
<el-row style="margin: 15px 0">
<el-col :span="24">
<el-collapse v-model="activeNames">
<el-collapse-item :title="addressTitle" name="1">
<template v-if="addressList.length > 0">
<div
:key="index"
class="address-item"
@click="onSelectAddress(item.addressName)"
v-for="(item, index) in addressList"
>
{{ item.addressName }}
</div>
</template>
<template v-else>
<div style="width: 100%; text-align: center; font-size: 14px">
当前没有收货地址...
<a
style="
color: #00a288;
cursor: pointer;
margin-left: 5px;
text-decoration: underline;
"
@click="onAddAddress"
>
点击新增
</a>
</div>
</template>
</el-collapse-item>
</el-collapse>
</el-col>
</el-row>
<el-row style="display: flex; align-items: center">
<el-col :span="16">
<div class="checkbox-container">
@ -229,6 +264,7 @@ import {
import moment, { max } from 'moment'
import { InfoFilled } from '@element-plus/icons-vue'
import CustomDatePickerButton from './components/date-picker-button.vue'
import { getAddressListApi } from 'http/api/address-manage/index'
import { useRoute, useRouter } from 'vue-router'
import { useStore } from '../../store/user'
const userStore = useStore()
@ -236,6 +272,9 @@ const router = useRouter()
const protocolChecked = ref<boolean>(false)
const allKey = ref(0)
const cardList = ref<any>([])
const activeNames = ref('')
const addressTitle = ref('请选择收货地址')
const addressList = ref<any>([])
const getBookCarDetailsData = async () => {
const res: any = await getBookCarDetailsApi()
@ -410,6 +449,14 @@ const onCartSubmit = async () => {
})
return
}
if (addressTitle.value === '请选择收货地址') {
ElMessage({
showClose: false,
message: '请选择收货地址',
type: 'error',
})
return
}
let isDays = false
try {
@ -461,6 +508,7 @@ const onCartSubmit = async () => {
})
paramsList[index] = {
cost: 0,
address: addressTitle.value.split('')[1],
detailsList: itemsArray,
}
})
@ -495,6 +543,32 @@ const onCartSubmit = async () => {
}
// console.log(res, '')
}
//
const getReceiptGoodsAddress = async () => {
const res: any = await getAddressListApi({})
addressList.value = res.rows.map((e: any) => {
return {
addressName: `${e.provinceName}${e.cityName}${e.areaName}${e.address}`,
}
})
}
//
const onSelectAddress = (address: any) => {
addressTitle.value = '收货地址:' + address
activeNames.value = ''
}
//
const onAddAddress = () => {
userStore.editcurrentMenuItem('address-manage')
setTimeout(() => {
router.push({
name: 'my-user',
})
}, 500)
}
getReceiptGoodsAddress()
</script>
<style lang="scss" scoped>
@ -608,4 +682,13 @@ const onCartSubmit = async () => {
}
}
}
.address-item {
margin: 0 auto;
padding: 6px 10px;
cursor: pointer;
}
.address-item:hover {
background-color: #c9e7e5;
}
</style>

View File

@ -206,7 +206,7 @@
:preview-src-list="[item.fileUrl]"
:initial-index="0"
fit="cover"
z-index="9999999999"
:z-index="9999999999"
:preview-teleported="true"
/>
</div>
@ -230,7 +230,7 @@
:preview-src-list="[item.fileUrl]"
:initial-index="0"
fit="cover"
z-index="9999999999"
:z-index="9999999999"
:preview-teleported="true"
/>
</div>

View File

@ -35,7 +35,17 @@
active: val.isChecked,
}"
>
<span v-if="i != 4">{{ val.name }}</span>
<span v-else>
{{ val.name }}
{{
index == 0
? ''
: val.maCount
? `(${val.maCount})`
: '(0)'
}}
</span>
</div>
</template>

View File

@ -148,15 +148,9 @@
<div class="protocol-handle">
<el-row style="margin: 15px 0">
<el-col :span="24">
<!-- 收货地址
<el-button
size="small"
style="padding: 6px 24px; background-color: #1abc9c; color: #fff"
>选择收货地址</el-button
> -->
<el-collapse v-model="activeNames">
<el-collapse-item :title="addressTitle" name="1">
<template v-if="addressList.length > 0">
<div
:key="index"
class="address-item"
@ -165,6 +159,24 @@
>
{{ item.addressName }}
</div>
</template>
<template v-else>
<div style="width: 100%; text-align: center; font-size: 14px">
当前没有收货地址...
<a
style="
color: #00a288;
cursor: pointer;
margin-left: 5px;
text-decoration: underline;
"
@click="onAddAddress"
>
点击新增
</a>
</div>
</template>
</el-collapse-item>
</el-collapse>
</el-col>
@ -215,6 +227,7 @@ import FooterInfo from '../../components/FooterInfo/index.vue'
import { ElMessage } from 'element-plus'
import { getBookCarDetailByMaId, submitBookCarApi } from '../../http/api/order/index'
import CustomDatePickerButton from '../cart/components/date-picker-button.vue'
import { getAddressListApi } from 'http/api/address-manage/index'
import { getDetail } from 'http/api/equip'
import moment from 'moment'
import { useRoute, useRouter } from 'vue-router'
@ -229,12 +242,7 @@ const activeNames = ref('')
const protocolChecked = ref<boolean>(false)
const orderList = ref<any>([])
const addressTitle = ref('请选择收货地址')
const addressList = ref([
{ addressName: '安徽省合肥市蜀山区---' },
{ addressName: '安徽省合肥市庐阳区---' },
{ addressName: '安徽省合肥市滨湖区---' },
{ addressName: '安徽省合肥市瑶海区---' },
])
const addressList = ref<any>([])
const getOrderListData = async () => {
const addParams = {
@ -396,6 +404,15 @@ const onCartSubmit = async () => {
return
}
if (addressTitle.value === '请选择收货地址') {
ElMessage({
showClose: false,
message: '请选择收货地址',
type: 'error',
})
return
}
const orderInfo = orderList.value[0]
const submitInfo = {
maId: orderInfo.maId,
@ -410,6 +427,7 @@ const onCartSubmit = async () => {
const submitParams = {
cost: orderAmountPice.value,
address: addressTitle.value.split('')[1],
detailsList: [submitInfo],
}
// console.log('submitParams', submitParams)
@ -433,11 +451,32 @@ const onCartSubmit = async () => {
}
}
//
const getReceiptGoodsAddress = async () => {
const res: any = await getAddressListApi({})
addressList.value = res.rows.map((e: any) => {
return {
addressName: `${e.provinceName}${e.cityName}${e.areaName}${e.address}`,
}
})
}
//
const onAddAddress = () => {
userStore.editcurrentMenuItem('address-manage')
setTimeout(() => {
router.push({
name: 'my-user',
})
}, 500)
}
//
const onSelectAddress = (address: any) => {
addressTitle.value = address
addressTitle.value = '收货地址:' + address
activeNames.value = ''
}
getReceiptGoodsAddress()
</script>
<style lang="scss" scoped>

View File

@ -237,6 +237,7 @@ const getDetailData = async (row: any) => {
insurancePdf,
examinationPdf,
devInfoProperties,
identifyCode,
} = res
Object.assign(addAndEditForm, {
@ -265,8 +266,6 @@ const getDetailData = async (row: any) => {
Object.assign(addAndEditForm, {
maId: row.maId,
})
console.log(row.maId, '****')
}
descriptionFormList.value = []
@ -276,6 +275,7 @@ const getDetailData = async (row: any) => {
insuranceATempPdf: [],
examinationPdfs: [],
examinationTempPdf: [],
identifyCode,
})
descriptionFormList.value[0].insurancePdfs = insurancePdf
descriptionFormList.value[0].examinationPdfs = examinationPdf
@ -427,6 +427,7 @@ const dialogTypeChange = async () => {
isDisabled.value = true
addAndEditForm.unitName = deviceTypeList[0].data.unitName
addAndEditForm.dayLeasePrice = deviceTypeList[0].data.leasePrice
addAndEditFormRef.value.clearValidate(['unitName', 'dayLeasePrice'])
}
//
const getCompanyList = async () => {
@ -539,6 +540,7 @@ const getProertyValueRules = (item: any) => {
}
const descriptionRules = ref({
identifyCode: [{ required: true, message: '请填写装备唯一标识符', trigger: 'blur' }],
insurancePdfs: [{ required: true, message: '请上传合格证', trigger: 'change' }],
examinationPdfs: [{ required: true, message: '请上传检测证明', trigger: 'change' }],
})
@ -613,11 +615,13 @@ const submitFun = (type: any) => {
addAndEditFormRef.value.validate(async (valid: any) => {
if (valid) {
let isDescription = false
addAndEditForm.identifyCodes = []
descriptionFormList.value.forEach((e: any, index: number) => {
e.insurancePdfs = [...e.insurancePdfs, ...e.insuranceATempPdf]
e.examinationPdfs = [...e.examinationPdfs, ...e.examinationTempPdf]
if (type == 3 || type == 4) {
addAndEditForm.identifyCode = e.identifyCode
addAndEditForm.insurancePdf = e.insurancePdfs.map((e: any) => {
return { fileNam: e.fileName, fileUrl: e.fileUrl }
})
@ -627,6 +631,7 @@ const submitFun = (type: any) => {
} else {
addAndEditForm.insurancePdfs[index] = e.insurancePdfs
addAndEditForm.examinationPdfs[index] = e.examinationPdfs
addAndEditForm.identifyCodes.push(e.identifyCode)
}
})
@ -876,6 +881,7 @@ const onAddDescription = () => {
insuranceATempPdf: [],
examinationPdfs: [],
examinationTempPdf: [],
identifyCode: '',
})
}
@ -904,6 +910,7 @@ const addAndEditForm = reactive<any>({
insurancePdfs: [],
examinationPdfs: [],
devInfoProperties: [],
identifyCodes: [],
})
// const addAndEditFormTemp = reactive<any>()
const uploadUrl = import.meta.env.VITE_API_URL + '/file/upload'
@ -916,6 +923,7 @@ const descriptionFormList = ref<any>([
insuranceATempPdf: [],
examinationPdfs: [],
examinationTempPdf: [],
identifyCode: '',
},
])
const descriptionFormRefList = ref<any>([])
@ -1012,6 +1020,7 @@ const onDialogClose = () => {
examinationPdf: [],
insurancePdfs: [],
examinationPdfs: [],
identifyCodes: [],
})
}
const propertyNames = ref<any>([])
@ -1161,7 +1170,11 @@ const onPreviewImg = (fileUrl: any) => {
"
/>
<el-table-column label="序号" align="center" width="80" type="index"></el-table-column>
<el-table-column align="center" prop="deviceName" label="装备名称" />
<el-table-column align="center" label="装备名称">
<template #default="{ row }">
{{ `${row.deviceName} ${row.identifyCode}` }}
</template>
</el-table-column>
<el-table-column align="center" prop="code" label="装备编号" />
<el-table-column align="center" prop="typeName" label="装备类目">
<template #default="{ row }">
@ -1289,7 +1302,6 @@ const onPreviewImg = (fileUrl: any) => {
<el-form-item label="装备名称:" prop="deviceName">
<el-input
autocomplete="off"
style="width: 850px"
maxlength="30"
v-model="addAndEditForm.deviceName"
clearable
@ -1306,10 +1318,10 @@ const onPreviewImg = (fileUrl: any) => {
filterable
clearable
collapse-tags
style="width: 350px"
placeholder="请选择装备类目"
ref="dialogTypeCascader"
@change="dialogTypeChange"
style="width: 100%"
></el-cascader>
</el-form-item>
</el-col>
@ -1319,7 +1331,6 @@ const onPreviewImg = (fileUrl: any) => {
<el-form-item label="装备单位:" prop="unitName">
<el-input
autocomplete="off"
style="width: 350px"
maxlength="20"
v-model="addAndEditForm.unitName"
clearable
@ -1333,7 +1344,6 @@ const onPreviewImg = (fileUrl: any) => {
v-model="addAndEditForm.brand"
autocomplete="off"
maxlength="20"
style="width: 350px"
clearable
/>
</el-form-item>
@ -1347,7 +1357,7 @@ const onPreviewImg = (fileUrl: any) => {
placeholder="请选择出厂日期"
value-format="YYYY-MM-DD"
type="date"
style="width: 350px"
style="width: 100%"
>
</el-date-picker>
</el-form-item>
@ -1363,7 +1373,6 @@ const onPreviewImg = (fileUrl: any) => {
clearable
maxlength="20"
:disabled="isDisabled || isEditForm"
style="width: 350px"
/>
</el-form-item>
</el-col>
@ -1376,7 +1385,6 @@ const onPreviewImg = (fileUrl: any) => {
placeholder="请输入联系人"
clearable
maxlength="20"
style="width: 350px"
/>
</el-form-item>
</el-col>
@ -1387,7 +1395,6 @@ const onPreviewImg = (fileUrl: any) => {
placeholder="请输入联系电话"
clearable
maxlength="20"
style="width: 350px"
/>
</el-form-item>
</el-col>
@ -1400,7 +1407,7 @@ const onPreviewImg = (fileUrl: any) => {
placeholder="请选择校验日期"
value-format="YYYY-MM-DD"
type="date"
style="width: 350px"
style="width: 100%"
>
</el-date-picker>
</el-form-item>
@ -1415,7 +1422,6 @@ const onPreviewImg = (fileUrl: any) => {
placeholder="请输入校验周期(数字)"
clearable
maxlength="20"
style="width: 350px"
/>
</el-form-item>
</el-col>
@ -1452,7 +1458,6 @@ const onPreviewImg = (fileUrl: any) => {
v-model="item.propertyName"
placeholder="请输入"
maxlength="20"
style="width: 350px"
disabled
>
</el-input>
@ -1464,7 +1469,6 @@ const onPreviewImg = (fileUrl: any) => {
v-model="item.propertyValue"
placeholder="请输入"
maxlength="20"
style="width: 350px"
>
</el-input>
</el-form-item>
@ -1626,6 +1630,21 @@ const onPreviewImg = (fileUrl: any) => {
:model="item"
:key="item.newId"
>
<el-row :gutter="20" style="margin-top: 12px">
<el-col :span="12">
<el-form-item
style="font-weight: bold"
label="装备唯一标识符:"
prop="identifyCode"
>
<el-input
v-model="item.identifyCode"
placeholder="请输入"
maxlength="20"
/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20" v-if="!isViewForm">
<el-col :span="24">
<el-form-item label="1" style="margin-bottom: 0" class="upload-tip">

View File

@ -1,106 +1,21 @@
<script setup lang="ts">
import { ref } from 'vue'
import { getOrderListInfoApi } from 'http/api/usercenter/seekorder'
import { getOverhaulApi } from 'http/api/rent-termination/index'
import TitleTip from 'components/TitleTip/index.vue'
const route = useRoute()
/* 查询参数 */
const cardList = ref<any>({})
const orderDetailDtoList = ref<any>([])
const scrapRecordList = ref<any>([])
const lossRecordList = ref<any>([])
const repairRecordList = ref<any>([])
const fileListAll = ref<any>([])
const viewFileInfoList = ref<any>([])
const overhaulDetails = ref<any>({})
const innerVisible = ref(false)
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: '' },
})
// 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)
// endtimeDate
const endTime = new Date(goods.endTime.replace(/-/g, '/'))
// endtime
return endTime < today
}
const getId = () => {
orderStatusTemp.value = Number(route.query.orderStatusTemp)
@ -109,24 +24,19 @@ const getId = () => {
const orderDetails = ref<any>({})
/** 查询列表 */
const getList = async () => {
let params = {
orderId: idTemp.value,
}
console.log(props.orderId, 'props.orderId')
const res: any = await getOrderListInfoApi({ orderId: props.orderId })
console.log(res, '详情')
orderDetails.value = res.data
// setStepType(res.data.orderStatus)
// console.log(res, '---')
// 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
if (props.orderStatus == 20) {
const { data: result }: any = await getOverhaulApi(props.orderId)
orderDetailDtoList.value = result.orderDetailDtoList
repairRecordList.value = result.repairRecordList
scrapRecordList.value = result.scrapRecordList
lossRecordList.value = result.lossRecordList
fileListAll.value = result.fileInfoList
overhaulDetails.value = result
}
}
onBeforeMount(() => {
@ -155,7 +65,6 @@ const onOrderManage = () => {
console.log(props.orderStatus, 'orderStatus', props.orderId, 'orderId')
const time = ref([])
const currentActive = ref(0)
const stepList = ref([
{
@ -245,6 +154,12 @@ if (props.orderStatus == 99) {
stepList.value[6].title = '订单取消'
isReject.value = true
}
const onViewFileImg = (row: any, index: number) => {
viewFileInfoList.value = []
viewFileInfoList.value = fileListAll.value.filter((e: any) => e.fileType == index)
innerVisible.value = true
}
</script>
<template>
@ -275,36 +190,6 @@ if (props.orderStatus == 99) {
</el-steps>
</div>
<TitleTip :titleText="`租赁信息`" />
<!-- <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 - 2"
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> -->
<el-row style="padding: 4px 40px; font-size: 14px">
<el-col :span="8">
<span> 订单编号 </span>
@ -455,8 +340,158 @@ if (props.orderStatus == 99) {
<div class="red-font">{{ orderDetails.cost }} </div>
</el-col>
</el-row>
<TitleTip :titleText="`退租检测/费用结算信息`" v-if="props.orderStatus == 20" />
<div style="padding: 0 15px" v-if="props.orderStatus == 20">
<div style="padding: 6px 0 0 0; font-size: 18px; font-weight: bold; color: #eb190a">
总费用() <span>{{ overhaulDetails.totalCost }}</span>
</div>
<TitleTip :titleText="`租赁费用明细`" />
<el-table
border
:data="orderDetailDtoList"
show-overflow-tooltip
:header-cell-style="{
color: '#fff',
background: '#00a288',
}"
>
<el-table-column prop="deviceName" align="center" label="装备名称" />
<el-table-column prop="typeName" align="center" label="型号" />
<el-table-column prop="num" align="center" label="数量" />
<el-table-column align="center" label="租赁单价(元/天)">
<template #default="{ row }">
<span style="color: #eb190a">
{{ row.dayLeasePrice }}
</span>
</template>
</el-table-column>
<el-table-column prop="days" align="center" label="租赁天数" />
<el-table-column prop="days" align="center" label="租期">
<template #default="{ row }">
{{ `${row.preOutboundTime}${row.rentOverTime} ` }}
</template>
</el-table-column>
<el-table-column prop="costs" align="center" label="租赁费用(元)" width="160">
</el-table-column>
<el-table-column prop="changeCost" align="center" label="改价后费用(元)" />
</el-table>
<TitleTip :titleText="`维修费用明细`" />
<el-table
:data="repairRecordList"
border
show-overflow-tooltip
:header-cell-style="{
background: '#00a288',
color: '#fff',
}"
>
<el-table-column prop="deviceName" align="center" label="装备名称" />
<el-table-column prop="typeName" align="center" label="型号" />
<el-table-column prop="repairNum" align="center" label="维修数量" />
<el-table-column align="center" prop="repairPrice" label="维修费用(元)">
</el-table-column>
<el-table-column
prop="repairChangePrice"
align="center"
label="改价后费用(元)"
/>
<el-table-column align="center" label="附件" width="160">
<template #default="{ row }">
<el-button type="primary" size="small" @click="onViewFileImg(row, 0)"
>查看</el-button
>
</template>
</el-table-column>
</el-table>
<TitleTip :titleText="`报废费用明细`" />
<el-table
:data="scrapRecordList"
border
show-overflow-tooltip
:header-cell-style="{
background: '#00a288',
color: '#fff',
}"
>
<el-table-column prop="deviceName" align="center" label="装备名称" />
<el-table-column prop="typeName" align="center" label="型号" />
<el-table-column prop="scrapNum" align="center" label="报废数量" />
<el-table-column prop="scrapReason" align="center" label="报废原因" />
<el-table-column prop="scrapPrice" align="center" label="报废费用(元)">
</el-table-column>
<el-table-column
prop="scrapChangePrice"
align="center"
label="改价后费用(元)"
/>
<el-table-column align="center" label="附件" width="160">
<template #default="{ row }">
<el-button type="primary" size="small" @click="onViewFileImg(row, 1)"
>查看</el-button
>
</template>
</el-table-column>
</el-table>
<TitleTip :titleText="`丢失费用明细`" />
<el-table
:data="lossRecordList"
border
show-overflow-tooltip
:header-cell-style="{
background: '#00a288',
color: '#fff',
}"
>
<el-table-column prop="deviceName" align="center" label="装备名称" />
<el-table-column prop="typeName" align="center" label="型号" />
<el-table-column prop="lossNum" align="center" label="丢失数量" />
<el-table-column prop="lossPrice" align="center" label="丢失费用(元)">
</el-table-column>
<el-table-column prop="lossChangePrice" align="center" label="改价后费用(元)" />
<el-table-column align="center" label="附件" width="160">
<template #default="{ row }">
<el-button type="primary" size="small" @click="onViewFileImg(row, 2)">
查看
</el-button>
</template>
</el-table-column>
</el-table>
</div>
</div>
</div>
<el-dialog v-model="innerVisible" width="500" title="附件详情" append-to-body>
<el-table
:data="viewFileInfoList"
border
show-overflow-tooltip
:header-cell-style="{
background: '#00a288',
color: '#fff',
}"
>
<el-table-column prop="fileName" align="center" label="文件名称" />
<el-table-column align="center" label="操作" width="120">
<template #default="{ row }">
<el-image
style="width: 60px; height: 60px"
:src="row.fileUrl"
:zoom-rate="1.2"
:max-scale="7"
:min-scale="0.2"
:preview-src-list="[row.fileUrl]"
:initial-index="0"
fit="cover"
:z-index="9999999999"
:preview-teleported="true"
/>
</template>
</el-table-column>
</el-table>
</el-dialog>
</template>
<style lang="scss" scoped>

View File

@ -573,7 +573,7 @@ const costSubmit = () => {
<el-col :span="8">
<span> 承租方地址 </span>
<span>
{{ item.czcompanyName }}
{{ item.address }}
</span>
</el-col>
</el-row>

View File

@ -298,7 +298,7 @@
:preview-src-list="[row.fileUrl]"
:initial-index="0"
fit="cover"
z-index="9999999999"
:z-index="9999999999"
:preview-teleported="true"
/>
</template>

View File

@ -1,106 +1,21 @@
<script setup lang="ts">
import { ref } from 'vue'
import { getOrderListInfoApi } from 'http/api/usercenter/seekorder'
import { getOverhaulApi } from 'http/api/rent-termination/index'
import TitleTip from 'components/TitleTip/index.vue'
const route = useRoute()
/* 查询参数 */
const cardList = ref<any>({})
const orderDetailDtoList = ref<any>([])
const scrapRecordList = ref<any>([])
const lossRecordList = ref<any>([])
const repairRecordList = ref<any>([])
const fileListAll = ref<any>([])
const viewFileInfoList = ref<any>([])
const overhaulDetails = ref<any>({})
const innerVisible = ref(false)
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: '' },
})
// 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)
// endtimeDate
const endTime = new Date(goods.endTime.replace(/-/g, '/'))
// endtime
return endTime < today
}
const getId = () => {
orderStatusTemp.value = Number(route.query.orderStatusTemp)
@ -109,24 +24,19 @@ const getId = () => {
const orderDetails = ref<any>({})
/** 查询列表 */
const getList = async () => {
let params = {
orderId: idTemp.value,
}
console.log(props.orderId, 'props.orderId')
const res: any = await getOrderListInfoApi({ orderId: props.orderId })
console.log(res, '详情')
orderDetails.value = res.data
// setStepType(res.data.orderStatus)
// console.log(res, '---')
// 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
if (props.orderStatus == 20) {
const { data: result }: any = await getOverhaulApi(props.orderId)
orderDetailDtoList.value = result.orderDetailDtoList
repairRecordList.value = result.repairRecordList
scrapRecordList.value = result.scrapRecordList
lossRecordList.value = result.lossRecordList
fileListAll.value = result.fileInfoList
overhaulDetails.value = result
}
}
onBeforeMount(() => {
@ -155,7 +65,6 @@ const onOrderManage = () => {
console.log(props.orderStatus, 'orderStatus', props.orderId, 'orderId')
const time = ref([])
const currentActive = ref(0)
const stepList = ref([
{
@ -245,6 +154,12 @@ if (props.orderStatus == 99) {
stepList.value[6].title = '订单取消'
isReject.value = true
}
const onViewFileImg = (row: any, index: number) => {
viewFileInfoList.value = []
viewFileInfoList.value = fileListAll.value.filter((e: any) => e.fileType == index)
innerVisible.value = true
}
</script>
<template>
@ -275,36 +190,6 @@ if (props.orderStatus == 99) {
</el-steps>
</div>
<TitleTip :titleText="`租赁信息`" />
<!-- <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 - 2"
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> -->
<el-row style="padding: 4px 40px; font-size: 14px">
<el-col :span="8">
<span> 订单编号 </span>
@ -455,8 +340,158 @@ if (props.orderStatus == 99) {
<div class="red-font">{{ orderDetails.cost }} </div>
</el-col>
</el-row>
<TitleTip :titleText="`退租检测/费用结算信息`" v-if="props.orderStatus == 20" />
<div style="padding: 0 15px" v-if="props.orderStatus == 20">
<div style="padding: 6px 0 0 0; font-size: 18px; font-weight: bold; color: #eb190a">
总费用() <span>{{ overhaulDetails.totalCost }}</span>
</div>
<TitleTip :titleText="`租赁费用明细`" />
<el-table
border
:data="orderDetailDtoList"
show-overflow-tooltip
:header-cell-style="{
color: '#fff',
background: '#00a288',
}"
>
<el-table-column prop="deviceName" align="center" label="装备名称" />
<el-table-column prop="typeName" align="center" label="型号" />
<el-table-column prop="num" align="center" label="数量" />
<el-table-column align="center" label="租赁单价(元/天)">
<template #default="{ row }">
<span style="color: #eb190a">
{{ row.dayLeasePrice }}
</span>
</template>
</el-table-column>
<el-table-column prop="days" align="center" label="租赁天数" />
<el-table-column prop="days" align="center" label="租期">
<template #default="{ row }">
{{ `${row.preOutboundTime}${row.rentOverTime} ` }}
</template>
</el-table-column>
<el-table-column prop="costs" align="center" label="租赁费用(元)" width="160">
</el-table-column>
<el-table-column prop="changeCost" align="center" label="改价后费用(元)" />
</el-table>
<TitleTip :titleText="`维修费用明细`" />
<el-table
:data="repairRecordList"
border
show-overflow-tooltip
:header-cell-style="{
background: '#00a288',
color: '#fff',
}"
>
<el-table-column prop="deviceName" align="center" label="装备名称" />
<el-table-column prop="typeName" align="center" label="型号" />
<el-table-column prop="repairNum" align="center" label="维修数量" />
<el-table-column align="center" prop="repairPrice" label="维修费用(元)">
</el-table-column>
<el-table-column
prop="repairChangePrice"
align="center"
label="改价后费用(元)"
/>
<el-table-column align="center" label="附件" width="160">
<template #default="{ row }">
<el-button type="primary" size="small" @click="onViewFileImg(row, 0)"
>查看</el-button
>
</template>
</el-table-column>
</el-table>
<TitleTip :titleText="`报废费用明细`" />
<el-table
:data="scrapRecordList"
border
show-overflow-tooltip
:header-cell-style="{
background: '#00a288',
color: '#fff',
}"
>
<el-table-column prop="deviceName" align="center" label="装备名称" />
<el-table-column prop="typeName" align="center" label="型号" />
<el-table-column prop="scrapNum" align="center" label="报废数量" />
<el-table-column prop="scrapReason" align="center" label="报废原因" />
<el-table-column prop="scrapPrice" align="center" label="报废费用(元)">
</el-table-column>
<el-table-column
prop="scrapChangePrice"
align="center"
label="改价后费用(元)"
/>
<el-table-column align="center" label="附件" width="160">
<template #default="{ row }">
<el-button type="primary" size="small" @click="onViewFileImg(row, 1)"
>查看</el-button
>
</template>
</el-table-column>
</el-table>
<TitleTip :titleText="`丢失费用明细`" />
<el-table
:data="lossRecordList"
border
show-overflow-tooltip
:header-cell-style="{
background: '#00a288',
color: '#fff',
}"
>
<el-table-column prop="deviceName" align="center" label="装备名称" />
<el-table-column prop="typeName" align="center" label="型号" />
<el-table-column prop="lossNum" align="center" label="丢失数量" />
<el-table-column prop="lossPrice" align="center" label="丢失费用(元)">
</el-table-column>
<el-table-column prop="lossChangePrice" align="center" label="改价后费用(元)" />
<el-table-column align="center" label="附件" width="160">
<template #default="{ row }">
<el-button type="primary" size="small" @click="onViewFileImg(row, 2)">
查看
</el-button>
</template>
</el-table-column>
</el-table>
</div>
</div>
</div>
<el-dialog v-model="innerVisible" width="500" title="附件详情" append-to-body>
<el-table
:data="viewFileInfoList"
border
show-overflow-tooltip
:header-cell-style="{
background: '#00a288',
color: '#fff',
}"
>
<el-table-column prop="fileName" align="center" label="文件名称" />
<el-table-column align="center" label="操作" width="120">
<template #default="{ row }">
<el-image
style="width: 60px; height: 60px"
:src="row.fileUrl"
:zoom-rate="1.2"
:max-scale="7"
:min-scale="0.2"
:preview-src-list="[row.fileUrl]"
:initial-index="0"
fit="cover"
:z-index="9999999999"
:preview-teleported="true"
/>
</template>
</el-table-column>
</el-table>
</el-dialog>
</template>
<style lang="scss" scoped>

View File

@ -96,7 +96,7 @@ const getList = async () => {
const emit = defineEmits(['onOpenOrderDetails'])
//
const handleViewOrder = (index: Number, row: any) => {
const handleViewOrder = (row: any) => {
// router.push({
// name: 'orderManagementInfoBuy',
// query: { orderStatusTemp: Number(row.orderStatus), idTemp: row.orderId },
@ -964,11 +964,7 @@ const wordUrl = ref('')
>出库</el-button
>
<el-button
@click="handleViewOrder(j, item)"
type="primary"
size="small"
>
<el-button @click="handleViewOrder(item)" type="primary" size="small">
订单详情
</el-button>
<el-button @click="handleViewWord(j, item)" type="primary" size="small">

View File

@ -531,7 +531,7 @@
:min-scale="0.2"
:src="row.fileUrl"
:initial-index="0"
z-index="9999999999"
:z-index="9999999999"
:preview-teleported="true"
:preview-src-list="[row.fileUrl]"
style="width: 60px; height: 60px"