问题清单修复

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

View File

@ -173,6 +173,41 @@
</div> </div>
<div class="protocol-handle" v-if="cardList.length > 0"> <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-row style="display: flex; align-items: center">
<el-col :span="16"> <el-col :span="16">
<div class="checkbox-container"> <div class="checkbox-container">
@ -229,6 +264,7 @@ import {
import moment, { max } from 'moment' import moment, { max } from 'moment'
import { InfoFilled } from '@element-plus/icons-vue' import { InfoFilled } from '@element-plus/icons-vue'
import CustomDatePickerButton from './components/date-picker-button.vue' import CustomDatePickerButton from './components/date-picker-button.vue'
import { getAddressListApi } from 'http/api/address-manage/index'
import { useRoute, useRouter } from 'vue-router' import { useRoute, useRouter } from 'vue-router'
import { useStore } from '../../store/user' import { useStore } from '../../store/user'
const userStore = useStore() const userStore = useStore()
@ -236,6 +272,9 @@ const router = useRouter()
const protocolChecked = ref<boolean>(false) const protocolChecked = ref<boolean>(false)
const allKey = ref(0) const allKey = ref(0)
const cardList = ref<any>([]) const cardList = ref<any>([])
const activeNames = ref('')
const addressTitle = ref('请选择收货地址')
const addressList = ref<any>([])
const getBookCarDetailsData = async () => { const getBookCarDetailsData = async () => {
const res: any = await getBookCarDetailsApi() const res: any = await getBookCarDetailsApi()
@ -410,6 +449,14 @@ const onCartSubmit = async () => {
}) })
return return
} }
if (addressTitle.value === '请选择收货地址') {
ElMessage({
showClose: false,
message: '请选择收货地址',
type: 'error',
})
return
}
let isDays = false let isDays = false
try { try {
@ -461,6 +508,7 @@ const onCartSubmit = async () => {
}) })
paramsList[index] = { paramsList[index] = {
cost: 0, cost: 0,
address: addressTitle.value.split('')[1],
detailsList: itemsArray, detailsList: itemsArray,
} }
}) })
@ -495,6 +543,32 @@ const onCartSubmit = async () => {
} }
// console.log(res, '') // 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> </script>
<style lang="scss" scoped> <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> </style>

View File

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

View File

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

View File

@ -148,23 +148,35 @@
<div class="protocol-handle"> <div class="protocol-handle">
<el-row style="margin: 15px 0"> <el-row style="margin: 15px 0">
<el-col :span="24"> <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 v-model="activeNames">
<el-collapse-item :title="addressTitle" name="1"> <el-collapse-item :title="addressTitle" name="1">
<div <template v-if="addressList.length > 0">
:key="index" <div
class="address-item" :key="index"
@click="onSelectAddress(item.addressName)" class="address-item"
v-for="(item, index) in addressList" @click="onSelectAddress(item.addressName)"
> v-for="(item, index) in addressList"
{{ item.addressName }} >
</div> {{ 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-item>
</el-collapse> </el-collapse>
</el-col> </el-col>
@ -215,6 +227,7 @@ import FooterInfo from '../../components/FooterInfo/index.vue'
import { ElMessage } from 'element-plus' import { ElMessage } from 'element-plus'
import { getBookCarDetailByMaId, submitBookCarApi } from '../../http/api/order/index' import { getBookCarDetailByMaId, submitBookCarApi } from '../../http/api/order/index'
import CustomDatePickerButton from '../cart/components/date-picker-button.vue' import CustomDatePickerButton from '../cart/components/date-picker-button.vue'
import { getAddressListApi } from 'http/api/address-manage/index'
import { getDetail } from 'http/api/equip' import { getDetail } from 'http/api/equip'
import moment from 'moment' import moment from 'moment'
import { useRoute, useRouter } from 'vue-router' import { useRoute, useRouter } from 'vue-router'
@ -229,12 +242,7 @@ const activeNames = ref('')
const protocolChecked = ref<boolean>(false) const protocolChecked = ref<boolean>(false)
const orderList = ref<any>([]) const orderList = ref<any>([])
const addressTitle = ref('请选择收货地址') const addressTitle = ref('请选择收货地址')
const addressList = ref([ const addressList = ref<any>([])
{ addressName: '安徽省合肥市蜀山区---' },
{ addressName: '安徽省合肥市庐阳区---' },
{ addressName: '安徽省合肥市滨湖区---' },
{ addressName: '安徽省合肥市瑶海区---' },
])
const getOrderListData = async () => { const getOrderListData = async () => {
const addParams = { const addParams = {
@ -396,6 +404,15 @@ const onCartSubmit = async () => {
return return
} }
if (addressTitle.value === '请选择收货地址') {
ElMessage({
showClose: false,
message: '请选择收货地址',
type: 'error',
})
return
}
const orderInfo = orderList.value[0] const orderInfo = orderList.value[0]
const submitInfo = { const submitInfo = {
maId: orderInfo.maId, maId: orderInfo.maId,
@ -410,6 +427,7 @@ const onCartSubmit = async () => {
const submitParams = { const submitParams = {
cost: orderAmountPice.value, cost: orderAmountPice.value,
address: addressTitle.value.split('')[1],
detailsList: [submitInfo], detailsList: [submitInfo],
} }
// console.log('submitParams', submitParams) // 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) => { const onSelectAddress = (address: any) => {
addressTitle.value = address addressTitle.value = '收货地址:' + address
activeNames.value = '' activeNames.value = ''
} }
getReceiptGoodsAddress()
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>

View File

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

View File

@ -1,106 +1,21 @@
<script setup lang="ts"> <script setup lang="ts">
import { ref } from 'vue' import { ref } from 'vue'
import { getOrderListInfoApi } from 'http/api/usercenter/seekorder' import { getOrderListInfoApi } from 'http/api/usercenter/seekorder'
import { getOverhaulApi } from 'http/api/rent-termination/index'
import TitleTip from 'components/TitleTip/index.vue' import TitleTip from 'components/TitleTip/index.vue'
const route = useRoute() const route = useRoute()
/* 查询参数 */ const orderDetailDtoList = ref<any>([])
const cardList = 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 orderStatusTemp = ref<number>(0)
const idTemp = ref<string>('') 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 = () => { const getId = () => {
orderStatusTemp.value = Number(route.query.orderStatusTemp) orderStatusTemp.value = Number(route.query.orderStatusTemp)
@ -109,24 +24,19 @@ const getId = () => {
const orderDetails = ref<any>({}) const orderDetails = ref<any>({})
/** 查询列表 */ /** 查询列表 */
const getList = async () => { const getList = async () => {
let params = {
orderId: idTemp.value,
}
console.log(props.orderId, 'props.orderId')
const res: any = await getOrderListInfoApi({ orderId: props.orderId }) const res: any = await getOrderListInfoApi({ orderId: props.orderId })
console.log(res, '详情')
orderDetails.value = res.data orderDetails.value = res.data
// setStepType(res.data.orderStatus)
// console.log(res, '---') if (props.orderStatus == 20) {
// cardList.value = res.data const { data: result }: any = await getOverhaulApi(props.orderId)
// operationDetails.value[1].preOutboundUser = res.data.detailsList[0].preOutboundUser orderDetailDtoList.value = result.orderDetailDtoList
// operationDetails.value[1].preOutboundTime = res.data.detailsList[0].preOutboundTime repairRecordList.value = result.repairRecordList
// operationDetails.value[2].takeOverUser = res.data.detailsList[0].takeOverUser scrapRecordList.value = result.scrapRecordList
// operationDetails.value[2].takeOverTime = res.data.detailsList[0].takeOverTime lossRecordList.value = result.lossRecordList
// operationDetails.value[3].rentOverUser = res.data.detailsList[0].rentOverUser fileListAll.value = result.fileInfoList
// operationDetails.value[3].rentOverTime = res.data.detailsList[0].rentOverTime overhaulDetails.value = result
}
} }
onBeforeMount(() => { onBeforeMount(() => {
@ -155,7 +65,6 @@ const onOrderManage = () => {
console.log(props.orderStatus, 'orderStatus', props.orderId, 'orderId') console.log(props.orderStatus, 'orderStatus', props.orderId, 'orderId')
const time = ref([])
const currentActive = ref(0) const currentActive = ref(0)
const stepList = ref([ const stepList = ref([
{ {
@ -245,6 +154,12 @@ if (props.orderStatus == 99) {
stepList.value[6].title = '订单取消' stepList.value[6].title = '订单取消'
isReject.value = true 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> </script>
<template> <template>
@ -275,36 +190,6 @@ if (props.orderStatus == 99) {
</el-steps> </el-steps>
</div> </div>
<TitleTip :titleText="`租赁信息`" /> <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-row style="padding: 4px 40px; font-size: 14px">
<el-col :span="8"> <el-col :span="8">
<span> 订单编号 </span> <span> 订单编号 </span>
@ -455,8 +340,158 @@ if (props.orderStatus == 99) {
<div class="red-font">{{ orderDetails.cost }} </div> <div class="red-font">{{ orderDetails.cost }} </div>
</el-col> </el-col>
</el-row> </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>
</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> </template>
<style lang="scss" scoped> <style lang="scss" scoped>

View File

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

View File

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

View File

@ -1,106 +1,21 @@
<script setup lang="ts"> <script setup lang="ts">
import { ref } from 'vue' import { ref } from 'vue'
import { getOrderListInfoApi } from 'http/api/usercenter/seekorder' import { getOrderListInfoApi } from 'http/api/usercenter/seekorder'
import { getOverhaulApi } from 'http/api/rent-termination/index'
import TitleTip from 'components/TitleTip/index.vue' import TitleTip from 'components/TitleTip/index.vue'
const route = useRoute() const route = useRoute()
/* 查询参数 */ const orderDetailDtoList = ref<any>([])
const cardList = 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 orderStatusTemp = ref<number>(0)
const idTemp = ref<string>('') 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 = () => { const getId = () => {
orderStatusTemp.value = Number(route.query.orderStatusTemp) orderStatusTemp.value = Number(route.query.orderStatusTemp)
@ -109,24 +24,19 @@ const getId = () => {
const orderDetails = ref<any>({}) const orderDetails = ref<any>({})
/** 查询列表 */ /** 查询列表 */
const getList = async () => { const getList = async () => {
let params = {
orderId: idTemp.value,
}
console.log(props.orderId, 'props.orderId')
const res: any = await getOrderListInfoApi({ orderId: props.orderId }) const res: any = await getOrderListInfoApi({ orderId: props.orderId })
console.log(res, '详情')
orderDetails.value = res.data orderDetails.value = res.data
// setStepType(res.data.orderStatus)
// console.log(res, '---') if (props.orderStatus == 20) {
// cardList.value = res.data const { data: result }: any = await getOverhaulApi(props.orderId)
// operationDetails.value[1].preOutboundUser = res.data.detailsList[0].preOutboundUser orderDetailDtoList.value = result.orderDetailDtoList
// operationDetails.value[1].preOutboundTime = res.data.detailsList[0].preOutboundTime repairRecordList.value = result.repairRecordList
// operationDetails.value[2].takeOverUser = res.data.detailsList[0].takeOverUser scrapRecordList.value = result.scrapRecordList
// operationDetails.value[2].takeOverTime = res.data.detailsList[0].takeOverTime lossRecordList.value = result.lossRecordList
// operationDetails.value[3].rentOverUser = res.data.detailsList[0].rentOverUser fileListAll.value = result.fileInfoList
// operationDetails.value[3].rentOverTime = res.data.detailsList[0].rentOverTime overhaulDetails.value = result
}
} }
onBeforeMount(() => { onBeforeMount(() => {
@ -155,7 +65,6 @@ const onOrderManage = () => {
console.log(props.orderStatus, 'orderStatus', props.orderId, 'orderId') console.log(props.orderStatus, 'orderStatus', props.orderId, 'orderId')
const time = ref([])
const currentActive = ref(0) const currentActive = ref(0)
const stepList = ref([ const stepList = ref([
{ {
@ -245,6 +154,12 @@ if (props.orderStatus == 99) {
stepList.value[6].title = '订单取消' stepList.value[6].title = '订单取消'
isReject.value = true 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> </script>
<template> <template>
@ -275,36 +190,6 @@ if (props.orderStatus == 99) {
</el-steps> </el-steps>
</div> </div>
<TitleTip :titleText="`租赁信息`" /> <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-row style="padding: 4px 40px; font-size: 14px">
<el-col :span="8"> <el-col :span="8">
<span> 订单编号 </span> <span> 订单编号 </span>
@ -455,8 +340,158 @@ if (props.orderStatus == 99) {
<div class="red-font">{{ orderDetails.cost }} </div> <div class="red-font">{{ orderDetails.cost }} </div>
</el-col> </el-col>
</el-row> </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>
</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> </template>
<style lang="scss" scoped> <style lang="scss" scoped>

View File

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

View File

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