结算逻辑完善

This commit is contained in:
BianLzhaoMin 2024-12-05 18:12:07 +08:00
parent c665c32553
commit 421445f924
2 changed files with 233 additions and 10 deletions

View File

@ -31,4 +31,11 @@ export const setAddLeaseRepairApi = (data: any) => {
*/
export const getOverhaulApi = (orderId: any) => {
return get(`/material-mall/lease-repair/getById`, { orderId })
}
/**
* @param data data
* @returns
*/
export const setChangePriceApi = (data: any) => {
return post(`/material-mall/lease-repair/changePrice`, data)
}

View File

@ -106,6 +106,11 @@ div
<el-table-column align="center" prop="phoneNumber" label="联系电话" />
<el-table-column align="center" prop="orderTime" label="下单时间" />
<el-table-column align="center" prop="orderStatusName" label="订单状态" />
<el-table-column align="center" prop="orderStatusName" label="是否改价 ">
<template #default="{ row }">
{{ row.isChangePrice == 0 ? '否' : '是' }}
</template>
</el-table-column>
<el-table-column align="center" prop="rentPrice" label="租赁金额" />
<el-table-column align="center" prop="totalCost" label="总金额" />
<el-table-column align="center" label="操作" :width="220">
@ -123,9 +128,9 @@ div
size="small"
class="primary-lease"
type="primary"
@click="onRepublish(row.orderStatus, row.orderId)"
@click="onRepublish(row.orderStatus, row.orderId, row.isChangePrice)"
>
{{ row.orderStatus == 6 ? '费用详情' : '费用结算' }}
{{ row.orderStatus == 6 || row.isChangePrice == 1 ? '费用详情' : '费用结算' }}
</el-button>
</template>
</el-table-column>
@ -614,7 +619,42 @@ div
{{ `${row.rentBeginTime}${row.rentEndTime} ` }}
</template>
</el-table-column>
<el-table-column prop="costs" align="center" label="租赁费用(元)" width="160" />
<el-table-column prop="costs" align="center" label="租赁费用(元)" width="160">
<template #default="{ row }">
<template v-if="row.isCheck == 0">
{{ row.costs }}
</template>
<template v-else>
<el-input
v-model="row.costs"
style="width: 100%"
placeholder="请输入改价费用"
clearable
/>
</template>
</template>
</el-table-column>
<el-table-column prop="changeCost" align="center" label="改价后费用(元)" />
<el-table-column
align="center"
label="操作"
width="160"
v-if="dialogTitle === '费用结算'"
>
<template #default="{ row }">
<el-button
type="primary"
size="small"
@click="
() => {
row.isCheck == 0 ? (row.isCheck = 1) : (row.isCheck = 0)
}
"
>
{{ row.isCheck == 0 ? '改价' : '取消改价' }}
</el-button>
</template>
</el-table-column>
</el-table>
<TitleTip :titleText="`维修费用明细`" />
@ -630,7 +670,22 @@ div
<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 prop="repairPrice" align="center" label="维修费用(元)" />
<el-table-column align="center" label="维修费用(元)">
<template #default="{ row }">
<template v-if="row.isCheck == 0">
{{ row.repairPrice }}
</template>
<template v-else>
<el-input
v-model="row.repairPrice"
style="width: 100%"
placeholder="请输入改价费用"
clearable
/>
</template>
</template>
</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)"
@ -638,6 +693,26 @@ div
>
</template>
</el-table-column>
<el-table-column
align="center"
label="操作"
width="160"
v-if="dialogTitle === '费用结算'"
>
<template #default="{ row }">
<el-button
type="primary"
size="small"
@click="
() => {
row.isCheck == 0 ? (row.isCheck = 1) : (row.isCheck = 0)
}
"
>
{{ row.isCheck == 0 ? '改价' : '取消改价' }}
</el-button>
</template>
</el-table-column>
</el-table>
<TitleTip :titleText="`报废费用明细`" />
<el-table
@ -653,7 +728,22 @@ div
<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 prop="scrapPrice" align="center" label="报废费用(元)">
<template #default="{ row }">
<template v-if="row.isCheck == 0">
{{ row.scrapPrice }}
</template>
<template v-else>
<el-input
v-model="row.scrapPrice"
style="width: 100%"
placeholder="请输入改价费用"
clearable
/>
</template>
</template>
</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)"
@ -661,6 +751,26 @@ div
>
</template>
</el-table-column>
<el-table-column
align="center"
label="操作"
width="160"
v-if="dialogTitle === '费用结算'"
>
<template #default="{ row }">
<el-button
type="primary"
size="small"
@click="
() => {
row.isCheck == 0 ? (row.isCheck = 1) : (row.isCheck = 0)
}
"
>
{{ row.isCheck == 0 ? '改价' : '取消改价' }}
</el-button>
</template>
</el-table-column>
</el-table>
<TitleTip :titleText="`丢失费用明细`" />
<el-table
@ -675,7 +785,22 @@ div
<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 prop="lossPrice" align="center" label="丢失费用(元)">
<template #default="{ row }">
<template v-if="row.isCheck == 0">
{{ row.lossPrice }}
</template>
<template v-else>
<el-input
v-model="row.lossPrice"
style="width: 100%"
placeholder="请输入改价费用"
clearable
/>
</template>
</template>
</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)"
@ -683,7 +808,34 @@ div
>
</template>
</el-table-column>
<el-table-column
align="center"
label="操作"
width="160"
v-if="dialogTitle === '费用结算'"
>
<template #default="{ row }">
<el-button
type="primary"
size="small"
@click="
() => {
row.isCheck == 0 ? (row.isCheck = 1) : (row.isCheck = 0)
}
"
>
{{ row.isCheck == 0 ? '改价' : '取消改价' }}
</el-button>
</template>
</el-table-column>
</el-table>
<div style="text-align: right; margin-top: 20px" v-if="dialogTitle === '费用结算'">
<el-button type="primary" class="primary-lease" @click="onCancel">取消</el-button>
<el-button type="primary" class="primary-lease" @click="onSubmitChangePrice()"
>确认改价</el-button
>
</div>
</template>
<el-dialog v-model="innerVisible" width="500" title="附件详情" append-to-body>
@ -724,12 +876,12 @@ import PagingComponent from 'components/PagingComponent/index.vue'
import TitleTip from 'components/TitleTip/index.vue'
import {
getRentTerminationListApi,
getOrderDetailsByIdApi,
setAddLeaseRepairApi,
getOverhaulApi,
setChangePriceApi,
} from 'http/api/rent-termination/index'
import { ElMessage } from 'element-plus'
import { ElMessage, ElMessageBox } from 'element-plus'
import { Plus } from '@element-plus/icons-vue'
const uploadUrl = import.meta.env.VITE_API_URL + '/file/upload'
const addOrEditDialogVisible = ref(false)
@ -754,6 +906,7 @@ const viewFileInfoList = ref<any>([])
const fileListAll = ref<any>([])
const overhaulDetails = ref<any>({})
const innerVisible = ref(false)
const currentOrderId = ref<any>('')
const props2 = {
multiple: true,
checkStrictly: true,
@ -1025,9 +1178,12 @@ const onReset = () => {
}
//
const onRepublish = async (type: any, orderId: any) => {
type == 6 ? (dialogTitle.value = '费用详情') : (dialogTitle.value = '费用结算')
const onRepublish = async (type: any, orderId: any, isChangePrice: any) => {
type == 6 || isChangePrice == 1
? (dialogTitle.value = '费用详情')
: (dialogTitle.value = '费用结算')
const { data: res }: any = await getOverhaulApi(orderId)
currentOrderId.value = orderId
orderDetailDtoList.value = res.orderDetailDtoList
repairRecordList.value = res.repairRecordList
scrapRecordList.value = res.scrapRecordList
@ -1165,6 +1321,66 @@ const onViewFileImg = (row: any, index: number) => {
innerVisible.value = true
}
const onSubmitChangePrice = () => {
ElMessageBox.confirm(`改价只能申请一次,是否确认提交本次改价申请?`, '温馨提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'success',
})
.then(async () => {
//
const rentPriceList = orderDetailDtoList.value?.map((e: any) => {
return {
orderId: currentOrderId.value,
maId: e.maId,
changeCost: e.costs,
}
})
const repairPriceList = repairRecordList.value?.map((e: any) => {
return {
orderId: currentOrderId.value,
maId: e.maId,
repairChangePrice: e.repairPrice,
}
})
const scrapPriceList = scrapRecordList.value?.map((e: any) => {
return {
orderId: currentOrderId.value,
maId: e.maId,
scrapChangePrice: e.scrapPrice,
}
})
const lossPriceList = lossRecordList.value?.map((e: any) => {
return {
orderId: currentOrderId.value,
maId: e.maId,
lossChangePrice: e.lossPrice,
}
})
const changePriceParams = {
rentPriceList,
repairPriceList,
scrapPriceList,
lossPriceList,
}
console.log(changePriceParams, 'changePriceParams参数')
const res: any = await setChangePriceApi(changePriceParams)
if (res.code === 200) {
ElMessage({
type: 'success',
message: '改价成功',
})
addOrEditDialogVisible.value = false
getLeaseListData()
}
})
.catch(async () => {})
}
onMounted(() => {
getLeaseListData()
})