|
|
@@ -10,20 +10,59 @@ |
|
|
|
<template #search> |
|
|
|
<el-input maxlength="60" v-trim clearable v-model="searchForm.externalOrderNo" style="width: 160px;" |
|
|
|
placeholder="请输入支付单号" /> |
|
|
|
<el-input maxlength="60" v-trim clearable v-model="searchForm.vehiclePlate" style="width: 160px;" |
|
|
|
placeholder="请输入车牌号" /> |
|
|
|
<el-input |
|
|
|
maxlength="60" |
|
|
|
v-trim |
|
|
|
clearable |
|
|
|
v-model="searchForm.vehiclePlate" |
|
|
|
placeholder="请输入车牌号" |
|
|
|
style="width: 320px" |
|
|
|
> |
|
|
|
<template #append> |
|
|
|
<el-select |
|
|
|
clearable |
|
|
|
v-model="searchForm.vehiclePlatecolor" |
|
|
|
placeholder="请选择车牌颜色" |
|
|
|
style="width: 150px" |
|
|
|
> |
|
|
|
<el-option |
|
|
|
:label="item.label" |
|
|
|
:key="item.label" |
|
|
|
:value="item.value" |
|
|
|
v-for="item in VEHICLE_COLOR_TYPE" |
|
|
|
/> |
|
|
|
</el-select> |
|
|
|
</template> |
|
|
|
</el-input> |
|
|
|
<el-input maxlength="60" v-trim clearable v-model="searchForm.cardId" style="width: 160px;" |
|
|
|
placeholder="请输入卡号" /> |
|
|
|
<el-select clearable style="width: 200px;" v-model="searchForm.status" placeholder="请选择退费状态"> |
|
|
|
<el-option v-for="item in statusList" :label="item.label" :value="item.value" /> |
|
|
|
<el-select |
|
|
|
clearable |
|
|
|
v-model="searchForm.status" |
|
|
|
placeholder="请选择退费状态" |
|
|
|
style="width: 200px" |
|
|
|
> |
|
|
|
<el-option |
|
|
|
v-for="item in statusList" |
|
|
|
:label="item.label" |
|
|
|
:value="item.value" |
|
|
|
/> |
|
|
|
</el-select> |
|
|
|
<el-select style="width: 200px;" clearable v-model="searchForm.businessPort" placeholder="请选择退费业务"> |
|
|
|
<el-option v-for="item in portList" :label="item.label" :value="item.value" /> |
|
|
|
<el-select |
|
|
|
clearable |
|
|
|
v-model="searchForm.businessPort" |
|
|
|
placeholder="请选择退费业务" |
|
|
|
style="width: 200px" |
|
|
|
> |
|
|
|
<el-option |
|
|
|
v-for="item in portList" |
|
|
|
:label="item.label" |
|
|
|
:value="item.value" |
|
|
|
/> |
|
|
|
</el-select> |
|
|
|
<div class="date-label">申请日期:</div> |
|
|
|
<el-date-picker unlink-panels clearable v-model="value1" type="daterange" range-separator="到" |
|
|
|
start-placeholder="开始日期" end-placeholder="结束日期" value-format="YYYY-MM-DD" format="YYYY-MM-DD" |
|
|
|
@change="dateChangeHandle" :clearable="false" /> |
|
|
|
start-placeholder="创建开始日期" end-placeholder="创建结束日期" value-format="YYYY-MM-DD" format="YYYY-MM-DD" |
|
|
|
@change="dateChangeHandle" :clearable="true" /> |
|
|
|
</template> |
|
|
|
<template #operation="{ scope }"> |
|
|
|
<el-button type="primary" @click="confirmRefund(scope.row)" size="small" |
|
|
@@ -35,26 +74,35 @@ |
|
|
|
</template> |
|
|
|
<template #dialog> |
|
|
|
<el-descriptions :column="3" border> |
|
|
|
<el-descriptions-item label="支付单号" label-align="right" align="center">{{ rowData.externalOrderNo |
|
|
|
}}</el-descriptions-item> |
|
|
|
<el-descriptions-item label="ETC卡号" label-align="right" align="center">{{ rowData.cardId |
|
|
|
}}</el-descriptions-item> |
|
|
|
<el-descriptions-item label="车牌号" label-align="right" align="center">{{ rowData.vehiclePlate |
|
|
|
}}</el-descriptions-item> |
|
|
|
<el-descriptions-item label="支付单号" label-align="right" align="center"> |
|
|
|
{{ rowData.externalOrderNo }} |
|
|
|
</el-descriptions-item> |
|
|
|
<el-descriptions-item label="ETC卡号" label-align="right" align="center"> |
|
|
|
{{ rowData.cardId }} |
|
|
|
</el-descriptions-item> |
|
|
|
<el-descriptions-item label="车牌号" label-align="right" align="center"> |
|
|
|
{{ rowData.vehiclePlate }} |
|
|
|
</el-descriptions-item> |
|
|
|
<el-descriptions-item label="车牌颜色" label-align="right" align="center"> |
|
|
|
{{ getDictLabel(VEHICLE_COLOR_TYPE, rowData.vehiclePlatecolor) }} |
|
|
|
</el-descriptions-item> |
|
|
|
<el-descriptions-item label="金额(元)" label-align="right" align="center"> |
|
|
|
{{ conversion(rowData.amount) }} |
|
|
|
{{ |
|
|
|
rowData.amount === null ? 0 + "元" : rowData.amount * 0.01 + "元" |
|
|
|
}} |
|
|
|
</el-descriptions-item> |
|
|
|
<el-descriptions-item label="状态" label-align="right" align="center"> |
|
|
|
{{ getDictLabel(statusList, rowData.status) }} |
|
|
|
{{ getDictLabel($storeinitData.state.dictData['REFUND_STATUS'], rowData.status) }} |
|
|
|
</el-descriptions-item> |
|
|
|
<el-descriptions-item label="业务端口" label-align="right" align="center"> |
|
|
|
{{ getDictLabel(portList, rowData.businessPort) }} |
|
|
|
</el-descriptions-item> |
|
|
|
<el-descriptions-item label="申请时间" label-align="right" align="center">{{ rowData.insertTime |
|
|
|
}}</el-descriptions-item> |
|
|
|
<el-descriptions-item v-if="rowData.salesmanNickName !== null" label="业务员" label-align="right" |
|
|
|
align="center">{{ |
|
|
|
rowData.salesmanNickName }}</el-descriptions-item> |
|
|
|
<el-descriptions-item label="申请时间" label-align="right" align="center"> |
|
|
|
{{ rowData.insertTime ? rowData.insertTime.replaceAll("T", " ") : ""}} |
|
|
|
</el-descriptions-item> |
|
|
|
<el-descriptions-item v-if="rowData.salesmanNickName !== null" label="业务员" label-align="right" align="center"> |
|
|
|
{{ rowData.salesmanNickName }} |
|
|
|
</el-descriptions-item> |
|
|
|
<el-descriptions-item label="联系人姓名" label-align="right" align="center">{{ rowData.userName |
|
|
|
}}</el-descriptions-item> |
|
|
|
<el-descriptions-item label="手机号" label-align="right" align="center">{{ rowData.userMobile |
|
|
@@ -62,7 +110,14 @@ |
|
|
|
<el-descriptions-item label="退费方式" label-align="right" align="center"> |
|
|
|
{{ getDictLabel(refundOperateTypeList, rowData.operateType) }} |
|
|
|
</el-descriptions-item> |
|
|
|
|
|
|
|
<el-descriptions-item |
|
|
|
v-if="rowData.operateType === 'ORIGINAL'" |
|
|
|
label="原路退回方式" |
|
|
|
label-align="right" |
|
|
|
align="center" |
|
|
|
> |
|
|
|
{{ rowData.payReturnType ?? "---" }} |
|
|
|
</el-descriptions-item> |
|
|
|
</el-descriptions> |
|
|
|
|
|
|
|
<el-descriptions title="银行卡退费信息" v-if="rowData.operateType === 'BANK'" :column="3" border> |
|
|
@@ -121,8 +176,8 @@ |
|
|
|
</el-descriptions> |
|
|
|
</template> |
|
|
|
<template #footer> |
|
|
|
<el-button type="primary" @click="refundSubmit(rowData.id, 'CONFIRM')" v-if="refundBtn">退费确认</el-button> |
|
|
|
<el-button type="primary" @click="refundSubmit(rowData.id, 'REFUNDFAILED')" v-if="refundBtn">重新审核</el-button> |
|
|
|
<el-button type="primary" @click="refundSubmit(rowData.id, '退费确认')" v-if="refundBtn">退费确认</el-button> |
|
|
|
<el-button type="primary" @click="refundSubmit(rowData.id, '重新审核')" v-if="refundBtn">重新审核</el-button> |
|
|
|
<el-button type="primary" @click="cancellation" v-if="refundBtn">取消</el-button> |
|
|
|
</template> |
|
|
|
</crud-template> |
|
|
@@ -151,14 +206,16 @@ |
|
|
|
const route = useRoute(); |
|
|
|
const crudRef = ref() |
|
|
|
const itemStart = ref(true) |
|
|
|
const tableType = ref("REQUESTED"); |
|
|
|
const tableType = ref(null); |
|
|
|
const refundBtn = ref(false); |
|
|
|
const searchForm = ref({ |
|
|
|
orderId: "", |
|
|
|
vehicleId: "", |
|
|
|
cardId: "", |
|
|
|
beginTime: "", |
|
|
|
finishTime: "" |
|
|
|
externalOrderNo: '', |
|
|
|
cardId: '', |
|
|
|
startTime: '', |
|
|
|
endTime: '', |
|
|
|
vehiclePlate: '', |
|
|
|
vehiclePlatecolor: '', |
|
|
|
status: '', |
|
|
|
}) |
|
|
|
const statusList = computed(() => { |
|
|
|
return $storeinitData.state.dictData['REFUND_STATUS'] || [] |
|
|
@@ -170,11 +227,14 @@ |
|
|
|
return $storeinitData.state.dictData['REFUND_OPERATE_TYPE'] || [] |
|
|
|
}) |
|
|
|
const cusTypeList = computed(() => { |
|
|
|
return $storeinitData.state.dictData['CUS_TYPE'] || [] |
|
|
|
}) |
|
|
|
return $storeinitData.state.dictData['ETC_USER_TYPE'] || [] |
|
|
|
}) |
|
|
|
const bankTypeList = computed(() => { |
|
|
|
return $storeinitData.state.dictData['BANK_TYPE'] || [] |
|
|
|
}) |
|
|
|
const VEHICLE_COLOR_TYPE = computed(() => { |
|
|
|
return $storeinitData.state.dictData['VEHICLE_COLOR_TYPE'] || [] |
|
|
|
}) //车牌颜色 |
|
|
|
const refundNum = ref(0) |
|
|
|
|
|
|
|
const tableData = ref([] as any[]); |
|
|
@@ -225,7 +285,7 @@ |
|
|
|
edit: false, //是否编辑(默认true) |
|
|
|
delete: false, //是否删除(默认true) |
|
|
|
announcement: false, // 公告 |
|
|
|
remark: IsPermission(route, 'VIEW_LIST'), // 详情 |
|
|
|
remark: true, // 详情 |
|
|
|
forbidden: false, // 禁用 |
|
|
|
enable: false, // 启用 |
|
|
|
authorization: false, // 授权 |
|
|
@@ -252,6 +312,14 @@ |
|
|
|
label: '车牌号', |
|
|
|
prop: 'vehiclePlate', |
|
|
|
}, |
|
|
|
{ |
|
|
|
label: '车牌颜色', |
|
|
|
prop: 'vehiclePlatecolor', |
|
|
|
funRuleStarts: true, |
|
|
|
funRule: (val) => { |
|
|
|
return getDictLabel(VEHICLE_COLOR_TYPE, val) |
|
|
|
}, |
|
|
|
}, |
|
|
|
{ |
|
|
|
label: '金额(元)', |
|
|
|
prop: 'amount', |
|
|
@@ -294,7 +362,18 @@ |
|
|
|
label: '操作员', |
|
|
|
prop: 'salesmanNickName', |
|
|
|
}, |
|
|
|
|
|
|
|
{ |
|
|
|
prop: 'refundTime', |
|
|
|
label: '退款时间', |
|
|
|
width: '170px', |
|
|
|
funRuleStarts: true, |
|
|
|
funRule: (val: any) => { |
|
|
|
if (val) { |
|
|
|
return val.replaceAll('T', ' ') |
|
|
|
} |
|
|
|
return val |
|
|
|
}, |
|
|
|
}, |
|
|
|
{ |
|
|
|
prop: 'insertTime', |
|
|
|
label: '创建时间', |
|
|
@@ -330,11 +409,13 @@ |
|
|
|
function refreshLeft() { |
|
|
|
field.value.paging.currentPage = 1; |
|
|
|
searchForm.value = { |
|
|
|
orderId: "", |
|
|
|
vehicleId: "", |
|
|
|
cardId: "", |
|
|
|
beginTime: "", |
|
|
|
finishTime: "" |
|
|
|
externalOrderNo: '', |
|
|
|
cardId: '', |
|
|
|
startTime: '', |
|
|
|
endTime: '', |
|
|
|
vehiclePlate: '', |
|
|
|
vehiclePlatecolor: '', |
|
|
|
status: '', |
|
|
|
} |
|
|
|
value1.value = [] |
|
|
|
tableData.value = []; |
|
|
@@ -347,11 +428,11 @@ |
|
|
|
// 时间 |
|
|
|
function dateChangeHandle(val) { |
|
|
|
if (val) { |
|
|
|
searchForm.value.beginTime = val[0] + 'T00:00:00'; |
|
|
|
searchForm.value.finishTime = val[1] + 'T23:59:59'; |
|
|
|
searchForm.value.startTime = val[0] + ' 00:00:00'; |
|
|
|
searchForm.value.endTime = val[1] + ' 23:59:59'; |
|
|
|
} else { |
|
|
|
searchForm.value.beginTime = ""; |
|
|
|
searchForm.value.finishTime = "" |
|
|
|
searchForm.value.startTime = ''; |
|
|
|
searchForm.value.endTime = ''; |
|
|
|
} |
|
|
|
} |
|
|
|
// function dateChange(time) { |
|
|
@@ -372,7 +453,8 @@ |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
BaseService.postN('/settlew/agencymapping/refundexport', params).then((res: any) => { |
|
|
|
BaseService.postN('/settlew/api/issue/refund/export', params).then( |
|
|
|
(res: any) => { |
|
|
|
if (res && res.code === 0) { |
|
|
|
let bizContent = res.data |
|
|
|
BaseService.getDownload(import.meta.env.VITE_APP_UPLOAD_URL + bizContent.fileUrl, "退费信息") |
|
|
@@ -391,7 +473,7 @@ |
|
|
|
let params: any = { |
|
|
|
pageNo: field.value.paging.currentPage, |
|
|
|
pageSize: field.value.paging.pageSize, |
|
|
|
suppleStatus: tableType.value |
|
|
|
status: tableType.value |
|
|
|
} |
|
|
|
let searchFormList = { ...searchForm.value } |
|
|
|
for (let key in searchFormList) { |
|
|
@@ -399,10 +481,10 @@ |
|
|
|
params[key] = searchFormList[key] |
|
|
|
} |
|
|
|
} |
|
|
|
BaseService.postN('/settlew/agencymapping/refundpage', params).then((res: any) => { |
|
|
|
if (res && res.code === 0) { |
|
|
|
BaseService.postN('/settlew/api/issue/refund/page', params).then((res: any) => { |
|
|
|
if (res && res.statusCode === 0) { |
|
|
|
let bizContent = res.data |
|
|
|
let data = bizContent.data || []; |
|
|
|
let data = bizContent.result || []; |
|
|
|
console.log("====data", data) |
|
|
|
tableData.value = data; |
|
|
|
crudRef.value.tableLoding = false; |
|
|
@@ -449,32 +531,32 @@ |
|
|
|
|
|
|
|
//查看 |
|
|
|
function handleRemark(idx: any, row: any) { |
|
|
|
const data = toRaw(row); |
|
|
|
getRow(data.id); |
|
|
|
// const data = toRaw(row); |
|
|
|
// getRow(data.id); |
|
|
|
refundBtn.value = false; |
|
|
|
} |
|
|
|
// 获取数据 |
|
|
|
function getRow(id: string) { |
|
|
|
BaseService.postN('/settlew/agencymapping/refundquery', { id: id }).then((res: any) => { |
|
|
|
if (res && res.code === 0) { |
|
|
|
let bizContent = res.data |
|
|
|
let data = bizContent.data || {}; |
|
|
|
console.log("data:", data) |
|
|
|
|
|
|
|
rowData.value = data; |
|
|
|
if (data.cusType !== null) { |
|
|
|
rowData.value.cusType = '' + data.cusType; |
|
|
|
} |
|
|
|
if (data.bankType !== null) { |
|
|
|
rowData.value.bankType = '' + data.bankType; |
|
|
|
} |
|
|
|
if (data.refundAmount !== null) { |
|
|
|
rowData.value.refundAmount = data.refundAmount * 0.01; |
|
|
|
} |
|
|
|
} else { |
|
|
|
ElMessage.error(res.message) |
|
|
|
} |
|
|
|
}) |
|
|
|
// BaseService.postN('/settlew/agencymapping/refundquery', { id: id }).then((res: any) => { |
|
|
|
// if (res && res.code === 0) { |
|
|
|
// let bizContent = res.data |
|
|
|
// let data = bizContent.data || {}; |
|
|
|
// console.log("data:", data) |
|
|
|
|
|
|
|
// rowData.value = data; |
|
|
|
// if (data.cusType !== null) { |
|
|
|
// rowData.value.cusType = '' + data.cusType; |
|
|
|
// } |
|
|
|
// if (data.bankType !== null) { |
|
|
|
// rowData.value.bankType = '' + data.bankType; |
|
|
|
// } |
|
|
|
// if (data.refundAmount !== null) { |
|
|
|
// rowData.value.refundAmount = data.refundAmount * 0.01; |
|
|
|
// } |
|
|
|
// } else { |
|
|
|
// ElMessage.error(res.message) |
|
|
|
// } |
|
|
|
// }) |
|
|
|
} |
|
|
|
//取消 |
|
|
|
function cancel() { |
|
|
@@ -491,11 +573,12 @@ |
|
|
|
timer = setTimeout(() => { |
|
|
|
let params: any = { |
|
|
|
id: id, |
|
|
|
result: examine, |
|
|
|
censorResult: examine, |
|
|
|
paymentBankType: rowData.value.paymentBankType, |
|
|
|
paymentBankCardId: rowData.value.paymentBankCardId |
|
|
|
paymentBankCardId: rowData.value.paymentBankCardId, |
|
|
|
failReason: "" |
|
|
|
} |
|
|
|
let reqApi = '/settlew/agencymapping/refundconfirm'; |
|
|
|
let reqApi = '/settlew/api/issue/refund/result'; |
|
|
|
|
|
|
|
BaseService.post(reqApi, params).then((res: any) => { |
|
|
|
if (res && res.code === 0) { |