<template>
|
<basicContainer>
|
<avue-crud
|
:option="option"
|
:table-loading="pageF.loading"
|
:data="tableData"
|
:page="page"
|
:permission="permissionList"
|
:before-open="beforeOpen"
|
v-model="form" v-model:search="queryParams"
|
ref="crudRef"
|
@row-update="rowUpdate"
|
@row-save="rowSave"
|
@refresh-change="refreshChange"
|
@row-del="rowDel"
|
@search-change="searchChange"
|
@search-reset="searchReset"
|
@selection-change="selectionChange"
|
@current-change="currentChange"
|
@size-change="sizeChange"
|
@on-load="onLoad"
|
>
|
<template #menu-left>
|
<el-button
|
type="primary"
|
icon="Edit"
|
:disabled="singleType"
|
v-hasPermi="['tms:tmsReceivableFee:edit']"
|
@click="handleGen">生成账单
|
</el-button>
|
<!-- <el-button-->
|
<!-- type="danger"-->
|
<!-- icon="Delete"-->
|
<!-- :disabled="pageF.multiple"-->
|
<!-- @click="handleDelete"-->
|
<!-- v-hasPermi="['tms:tmsReceivableFee:remove']"-->
|
<!-- >删除-->
|
<!-- </el-button>-->
|
<!-- <el-button-->
|
<!-- type="warning"-->
|
<!-- plain-->
|
<!-- icon="Download"-->
|
<!-- @click="handleExport"-->
|
<!-- v-hasPermi="['tms:tmsReceivableFee:export']"-->
|
<!-- >导出-->
|
<!-- </el-button>-->
|
</template>
|
<template #menu="{row}">
|
|
<el-link size="small" type="primary"
|
@click="handleView(row)" class="link-btn" :underline="false"
|
icon="el-icon-tickets">费用明细
|
</el-link><el-link size="small" type="primary" v-if="row.status == 0"
|
@click="handleClose(row)" class="link-btn" :underline="false"
|
icon="el-icon-close">作废
|
</el-link>
|
</template>
|
<template #receivableAmount="{row}">
|
<div v-if="row.receivableRMBAmount > 0">{{row.receivableRMBAmount}}人民币</div>
|
<div v-if="row.receivableHKBAmount > 0">{{row.receivableHKBAmount}}港币</div>
|
</template>
|
</avue-crud>
|
|
|
<el-dialog :title="pageF.title" v-model="pageF.open" class="avue-dialog avue-dialog--top" width="80%">
|
<el-descriptions :column="3" border>
|
<el-descriptions-item label="系统编号">{{form.systemNo}}</el-descriptions-item>
|
<el-descriptions-item label="调度单号">{{form.dispatchNo}}</el-descriptions-item>
|
<el-descriptions-item label="客户名称">{{form.customerName}}</el-descriptions-item>
|
<el-descriptions-item label="项目名称">{{form.projectName}}</el-descriptions-item>
|
<el-descriptions-item label="调度单确定时间">{{form.dispatchConfirmTime}}</el-descriptions-item>
|
<el-descriptions-item label="费用生成时间">{{form.costGenerateTime}}</el-descriptions-item>
|
<el-descriptions-item label="关联账单编号">{{form.billRelationNo}}</el-descriptions-item>
|
<el-descriptions-item label="应收金额人民币">{{form.receivableRMBAmount}}</el-descriptions-item>
|
<el-descriptions-item label="应收金额港币">{{form.receivableHKBAmount}}</el-descriptions-item>
|
</el-descriptions>
|
<h3>费用明细</h3>
|
<avue-crud
|
:option="YSGenerateItemTableOption" ref="itemsTableRef"
|
:data="form.items"
|
>
|
</avue-crud>
|
|
|
<template #footer>
|
<div class="dialog-footer">
|
<el-button @click="pageF.open = false">取 消</el-button>
|
</div>
|
</template>
|
</el-dialog>
|
|
<el-dialog title="生成应收账单" v-model="open2" class="avue-dialog avue-dialog--top" width="80%">
|
<h3>是否根据以下数据生成应收账单</h3>
|
<el-descriptions :column="3" border>
|
<el-descriptions-item label="调度单数量">{{formData.dispatchCount}}</el-descriptions-item>
|
<el-descriptions-item label="汇率(港币兑人民币)">{{formData.settleRate}}</el-descriptions-item>
|
<el-descriptions-item label="应收费用(以人民币计)">{{formData.settleAmount}}</el-descriptions-item>
|
</el-descriptions>
|
<h3>费用明细</h3>
|
<avue-crud
|
:option="YSGenerateTableOption" ref="itemsTableRef"
|
:data="formData.tmsReceivableFees"
|
>
|
<template #receivableAmount="{row}">
|
<div v-if="row.receivableRMBAmount > 0">{{row.receivableRMBAmount}}人民币</div>
|
<div v-if="row.receivableHKBAmount > 0">{{row.receivableHKBAmount}}港币</div>
|
</template>
|
</avue-crud>
|
|
|
<template #footer>
|
<div class="dialog-footer">
|
<el-button type="primary" :loading="pageF.isUploading" @click="generateSubmit">生成账单</el-button>
|
<el-button @click="open2 = false">取 消</el-button>
|
</div>
|
</template>
|
</el-dialog>
|
|
</basicContainer>
|
</template>
|
|
<script setup name="tmsReceivableFee" lang="ts">
|
import {
|
TmsReceivableFeeI,
|
addTmsReceivableFee,
|
delTmsReceivableFee,
|
exportTmsReceivableFee,
|
getTmsReceivableFee,
|
closeTmsReceivableFee,
|
listTmsReceivableFee,
|
updateTmsReceivableFee,
|
initArGenerate,
|
arGenerate,
|
} from "@/api/tms/tmsReceivableFee";
|
import useCurrentInstance from "@/utils/useCurrentInstance";
|
import {computed, reactive, ref, toRefs} from "vue";
|
import {PagesInterface, PageQueryInterface} from "@/utils/globalInterface";
|
import {usePagePlus} from "@/hooks/usePagePlus";
|
import {hasPermission} from "@/utils/permissionUtils";
|
import {ElMessage, ElMessageBox} from "element-plus";
|
import {cancelFinance} from "@/api/tms/tmsFinance";
|
import {initYSGenerate, ysGenerateTmsDispatchOrder} from "@/api/tms/tmsDispatchOrder";
|
|
const {proxy} = useCurrentInstance();
|
const crudRef = ref();
|
|
const permissionList = computed(() => {
|
return {
|
addBtn: hasPermission(["tms:tmsReceivableFee:add"]),
|
delBtn: hasPermission(["tms:tmsReceivableFee:remove"]),
|
editBtn: hasPermission(["tms:tmsReceivableFee:edit"]),
|
viewBtn: hasPermission(["tms:tmsReceivableFee:query"]),
|
}
|
})
|
|
const data = reactive({
|
form: <TmsReceivableFeeI>{},
|
queryParams: <TmsReceivableFeeI & PageQueryInterface>{},
|
page: <PagesInterface>{
|
pageSize: 10,
|
total: 0,
|
currentPage: 1,
|
},
|
selectionList: [],
|
singleType:true,
|
open2:false,
|
formData: <any>{}
|
})
|
const {queryParams, form, page, selectionList,singleType,open2,formData} = toRefs(data);
|
const option = ref({
|
pageKey: 'TmsReceivableFee',
|
rowKey: 'id',
|
addBtn: false,
|
editBtn: false,
|
delBtn: false,
|
viewBtn: false,
|
column: {
|
systemNo: {
|
label: '系统编号', minWidth: 150,
|
hide: false,
|
search: true,
|
},
|
billRelationNo: {
|
label: '关联账单编号',minWidth: 150,
|
hide: false,
|
search: true,
|
},
|
dispatchNo: {
|
label: '调度单号',minWidth: 150,
|
hide: false,
|
search: true,
|
},
|
customerName: {
|
label: '客户名称',minWidth: 150,
|
hide: false,
|
search: true,
|
},
|
projectName: {
|
label: '项目名称',minWidth: 150,
|
hide: false,
|
search: true,
|
},
|
receivableAmount: {
|
label: '应收金额',minWidth: 150,fixed: 'right',
|
hide: false,
|
search: true,
|
},
|
dispatchConfirmTime: {
|
label: '调度单确定时间',minWidth: 180,
|
hide: false,
|
search: true,
|
},
|
costGenerateTime: {
|
label: '费用生成时间',minWidth: 180,
|
hide: false,
|
search: true,
|
},
|
status: {
|
label: '状态',
|
type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/receivable_free_status',
|
hide: false,minWidth: 130,fixed: 'right',
|
search: true,
|
},
|
}
|
})
|
|
const YSGenerateItemTableOption = ref({
|
menu: false,
|
add: false,
|
header:false,
|
selection: false,
|
rowKey:'rowKey',
|
|
column:{
|
feeType:{
|
label: '费用类型',
|
type: 'radio', dataType: 'string', dicUrl: '/system/dict/data/type/receivable_fee_type',
|
|
},
|
feeName:{
|
label: '费用名称',
|
},
|
registerTime:{
|
label: '登记时间',
|
},
|
registerAmount:{
|
label: '登记金额',
|
},
|
currency:{
|
label: '币制',
|
type: 'radio', dataType: 'string', dicUrl: '/system/dict/data/type/sys_currency',
|
|
}
|
}
|
})
|
const YSGenerateTableOption= ref({
|
menu: false,
|
add: false,
|
header:false,
|
selection: false,
|
rowKey:'id',
|
|
column:{
|
|
systemNo:{
|
label: '系统编号',
|
},
|
dispatchNo:{
|
label: '调度单号',
|
},
|
customerName:{
|
label: '客户名称',
|
},
|
projectName:{
|
label: '项目名称',
|
},
|
receivableAmount:{
|
label: '应收金额',
|
},
|
receivableRmbSumAmount:{
|
label: '应收金额(以人民币计)',
|
}
|
}
|
})
|
|
|
const {
|
tableData,
|
pageF,
|
rowSave,
|
rowUpdate,
|
rowDel,
|
beforeOpen,
|
searchChange,
|
searchReset,
|
selectionChange,
|
onLoad,
|
currentChange,
|
sizeChange,
|
handleDelete,
|
handleExport,
|
handleUpdate,
|
refreshChange
|
} = usePagePlus({
|
form: form,
|
option: option,
|
queryParams: queryParams,
|
idKey: 'id',
|
page: page.value,
|
getListApi: listTmsReceivableFee,
|
getDetailApi: getTmsReceivableFee,
|
exportApi: exportTmsReceivableFee,
|
deleteApi: delTmsReceivableFee,
|
addApi: addTmsReceivableFee,
|
updateApi: updateTmsReceivableFee,
|
handleUpdateFunc: () => {
|
crudRef.value.rowEdit(selectionList.value[0]);
|
},
|
handleSelectionChangeFunc: (selection: any) => {
|
selectionList.value = selection;
|
singleType.value = true;
|
if (selection.length > 0){
|
singleType.value = selection.filter((item:any)=> item.status != 0).length > 0;
|
}
|
|
}
|
})
|
|
const handleView = (row: any) => {
|
form.value.items = [];
|
getTmsReceivableFee(row.id).then(res=>{
|
form.value = res.data || {};
|
pageF.open = true;
|
pageF.title = '应收费用明细';
|
|
})
|
}
|
|
const handleClose = (row: any) => {
|
ElMessageBox.confirm("是否对调度单号" + row.dispatchNo + "进行作废?", '系统提示', {
|
confirmButtonText: '确定',
|
cancelButtonText: '取消',
|
type: 'warning'
|
}).then(() => {
|
return closeTmsReceivableFee(row.id);
|
}).then(() => {
|
onLoad(page.value);
|
ElMessage({
|
message: "操作成功!",
|
type: 'success'
|
})
|
});
|
}
|
|
const handleGen = () => {
|
let ids = selectionList.value.map((item: any) => item.id);
|
formData.value.tmsReceivableFees = [];
|
initArGenerate(ids).then(res=>{
|
formData.value = res.data || {};
|
open2.value = true
|
})
|
}
|
|
const generateSubmit = () => {
|
pageF.isUploading = true;
|
let ids = selectionList.value.map((item: any) => item.id);
|
|
arGenerate(ids).then(res => {
|
pageF.isUploading = false;
|
ElMessage({
|
message: "生成成功!",
|
type: 'success'
|
})
|
open2.value = false;
|
onLoad(page.value);
|
}).finally(() => {
|
pageF.isUploading = false;
|
})
|
|
}
|
|
|
</script>
|