|
@@ -2,7 +2,7 @@
|
|
|
<div style="width: 100%; padding: 0px 15px">
|
|
|
<el-form :model="formData.data" :rules="rules" ref="formDom" label-position="top" :disabled="judgeStatus()">
|
|
|
<div class="_t">基础信息</div>
|
|
|
- <el-row :gutter="10">
|
|
|
+ <el-row :gutter="20">
|
|
|
<el-col :span="6">
|
|
|
<el-form-item label="归属公司" prop="corporationId">
|
|
|
<el-select v-model="formData.data.corporationId" placeholder="请选择" filterable style="width: 100%" @change="changeType">
|
|
@@ -23,7 +23,7 @@
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
- <el-row :gutter="10">
|
|
|
+ <el-row :gutter="20">
|
|
|
<el-col :span="6">
|
|
|
<el-form-item label="币种" prop="currency">
|
|
|
<el-select v-model="formData.data.currency" placeholder="请选择" filterable style="width: 100%">
|
|
@@ -51,35 +51,39 @@
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
- <el-row>
|
|
|
+ <el-row :gutter="20">
|
|
|
<el-col :span="6">
|
|
|
<el-form-item label="用款时间" prop="paymentTime">
|
|
|
- <el-date-picker v-model="formData.data.paymentTime" type="datetime" placeholder="请选择" value-format="YYYY-MM-DD HH:mm:ss" />
|
|
|
+ <el-date-picker v-model="formData.data.paymentTime" type="datetime" placeholder="请选择" value-format="YYYY-MM-DD HH:mm:ss" style="width: 100%" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row :gutter="20">
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="用款说明" prop="paymentRemarks">
|
|
|
+ <el-input v-model="formData.data.paymentRemarks" placeholder="请输入" type="textarea"> </el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="上传附件">
|
|
|
+ <div style="width: 100%">
|
|
|
+ <el-upload
|
|
|
+ v-model:fileList="fileList"
|
|
|
+ action="https://winfaster.obs.cn-south-1.myhuaweicloud.com"
|
|
|
+ :data="uploadData"
|
|
|
+ multiple
|
|
|
+ :before-upload="handleBeforeUpload"
|
|
|
+ :on-success="handleSuccess"
|
|
|
+ :on-preview="onPreviewFile">
|
|
|
+ <el-button>选择</el-button>
|
|
|
+ </el-upload>
|
|
|
+ </div>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
- <el-form-item label="用款说明" prop="paymentRemarks">
|
|
|
- <el-input v-model="formData.data.paymentRemarks" placeholder="请输入" type="textarea"> </el-input>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="上传附件">
|
|
|
- <div style="width: 100%">
|
|
|
- <el-upload
|
|
|
- v-model:fileList="fileList"
|
|
|
- action="https://winfaster.obs.cn-south-1.myhuaweicloud.com"
|
|
|
- :data="uploadData"
|
|
|
- multiple
|
|
|
- :before-upload="handleBeforeUpload"
|
|
|
- :on-success="handleSuccess"
|
|
|
- :on-preview="onPreviewFile">
|
|
|
- <el-button>选择</el-button>
|
|
|
- </el-upload>
|
|
|
- </div>
|
|
|
- </el-form-item>
|
|
|
<div class="_t">请款明细</div>
|
|
|
<el-form-item>
|
|
|
<el-button type="primary" @click="handleAddRow" v-if="formData.data.type !== '3'" style="margin: 10px 0"> 添加行 </el-button>
|
|
|
<el-table :data="formData.data.accountRequestFundsDetailList">
|
|
|
- <el-table-column prop="count" label="费用类型" min-width="150">
|
|
|
+ <el-table-column prop="count" label="费用类型" width="220">
|
|
|
<template #default="{ row, $index }">
|
|
|
<el-form-item :prop="'accountRequestFundsDetailList.' + $index + '.costType'" :rules="rules.costType" :inline-message="true">
|
|
|
<el-select v-model="row.costType" placeholder="请选择" filterable style="width: 100%">
|
|
@@ -88,7 +92,7 @@
|
|
|
</el-form-item>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="count" label="关联合同" min-width="150">
|
|
|
+ <el-table-column prop="count" label="关联合同" width="220">
|
|
|
<template #default="{ row, $index }">
|
|
|
<el-form-item :prop="'accountRequestFundsDetailList.' + $index + '.contractId'" :rules="rules.contractId" :inline-message="true">
|
|
|
<el-select v-model="row.contractId" placeholder="请选择" filterable style="width: 100%">
|
|
@@ -97,15 +101,15 @@
|
|
|
</el-form-item>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="count" label="款项说明" min-width="150">
|
|
|
+ <el-table-column prop="count" label="款项说明" min-width="200">
|
|
|
<template #default="{ row, $index }">
|
|
|
<el-form-item :prop="'accountRequestFundsDetailList.' + $index + '.remarks'" :rules="rules.remarks" :inline-message="true">
|
|
|
<el-input v-model="row.remarks" placeholder="请输入" type="textarea" />
|
|
|
</el-form-item>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="advanceAmount" label="预支金额" width="120" v-if="formData.data.type === '3'" />
|
|
|
- <el-table-column prop="amount" :label="formData.data.type !== '3' ? '请款金额' : '核销金额'" min-width="150">
|
|
|
+ <el-table-column prop="advanceAmount" label="预支金额" width="140" v-if="formData.data.type === '3'" />
|
|
|
+ <el-table-column prop="amount" :label="formData.data.type !== '3' ? '请款金额' : '核销金额'" width="160">
|
|
|
<template #default="{ row, $index }">
|
|
|
<el-form-item :prop="'accountRequestFundsDetailList.' + $index + '.amount'" :rules="rules.amount" :inline-message="true">
|
|
|
<el-input-number
|
|
@@ -119,14 +123,14 @@
|
|
|
</el-form-item>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="zip" label="操作" width="100" v-if="formData.data.type !== '3'">
|
|
|
+ <el-table-column prop="zip" label="操作" width="100" align="center" v-if="formData.data.type !== '3'">
|
|
|
<template #default="{ $index }">
|
|
|
<el-button type="primary" link @click="handleRemove($index)">删除</el-button>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
|
</el-form-item>
|
|
|
- <el-row :gutter="10">
|
|
|
+ <el-row :gutter="20">
|
|
|
<el-col :span="6" v-if="formData.data.type === '3'">
|
|
|
<el-form-item label="预支总额" prop="advanceAmounts">
|
|
|
<el-input v-model="formData.data.advanceAmounts" placeholder="请输入" disabled />
|
|
@@ -151,7 +155,7 @@
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
<div class="_t">收付款信息</div>
|
|
|
- <el-row :gutter="10">
|
|
|
+ <el-row :gutter="20">
|
|
|
<el-col :span="6">
|
|
|
<el-form-item label="付款方式" prop="paymentMethod">
|
|
|
<el-select v-model="formData.data.paymentMethod" placeholder="请选择" filterable style="width: 100%">
|
|
@@ -167,7 +171,7 @@
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
- <el-row :gutter="10">
|
|
|
+ <el-row :gutter="20">
|
|
|
<el-col :span="6">
|
|
|
<el-form-item label="户名" prop="name">
|
|
|
<el-input v-model="formData.data.name" placeholder="请输入" />
|
|
@@ -178,8 +182,13 @@
|
|
|
<el-input v-model="formData.data.accountOpening" placeholder="请输入" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
+ <el-col :span="3">
|
|
|
+ <el-form-item label=" ">
|
|
|
+ <el-button type="primary" @click="clickSelect" text>选择</el-button>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
</el-row>
|
|
|
- <el-row :gutter="10">
|
|
|
+ <el-row :gutter="20">
|
|
|
<el-col :span="6">
|
|
|
<el-form-item label="开户银行" prop="openingBank">
|
|
|
<el-input v-model="formData.data.openingBank" placeholder="请输入" />
|
|
@@ -409,6 +418,23 @@
|
|
|
<el-button type="primary" @click="clickDownload()" size="large">下载PDF</el-button>
|
|
|
</template>
|
|
|
</el-dialog>
|
|
|
+
|
|
|
+ <el-dialog title="选择付款信息" v-if="openSelect" v-model="openSelect" width="800">
|
|
|
+ <el-table :data="bankList" style="width: 100%">
|
|
|
+ <el-table-column prop="name" label="户名" />
|
|
|
+ <el-table-column prop="accountOpening" label="银行账号" />
|
|
|
+ <el-table-column prop="openingBank" label="开户银行" width="140" />
|
|
|
+ <el-table-column prop="interbankNumber" label="联行号 / SWIFT Code" />
|
|
|
+ <el-table-column align="center" label="操作" width="80">
|
|
|
+ <template #default="{ row }">
|
|
|
+ <el-button type="primary" link @click="handleSelect(row)">选择</el-button>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ <template #footer>
|
|
|
+ <el-button @click="openSelect = false" size="large">取 消</el-button>
|
|
|
+ </template>
|
|
|
+ </el-dialog>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
@@ -428,8 +454,20 @@ const defaultProps = {
|
|
|
const userList = ref([]);
|
|
|
const formData = reactive({
|
|
|
data: {
|
|
|
+ currency: "CNY",
|
|
|
+ type: "2",
|
|
|
paymentTime: "",
|
|
|
- accountRequestFundsDetailList: [],
|
|
|
+ departmentId: useUserStore().user.deptId,
|
|
|
+ quantity: 0,
|
|
|
+ paymentMethod: "bank",
|
|
|
+ accountRequestFundsDetailList: [
|
|
|
+ {
|
|
|
+ costType: "",
|
|
|
+ contractId: "",
|
|
|
+ remarks: "",
|
|
|
+ amount: undefined,
|
|
|
+ },
|
|
|
+ ],
|
|
|
fileList: [],
|
|
|
},
|
|
|
});
|
|
@@ -445,6 +483,7 @@ let rules = ref({
|
|
|
// { required: true, message: "请选择付款账号", trigger: "change" },
|
|
|
// ],
|
|
|
costType: [{ required: true, message: "请选择费用类型", trigger: "change" }],
|
|
|
+ quantity: [{ required: true, message: "请输入单据数量", trigger: "blur" }],
|
|
|
remarks: [{ required: true, message: "请输入款项说明", trigger: "blur" }],
|
|
|
amount: [{ required: true, message: "请输入请款金额", trigger: "blur" }],
|
|
|
});
|
|
@@ -452,6 +491,7 @@ let rules = ref({
|
|
|
const handleAddRow = () => {
|
|
|
formData.data.accountRequestFundsDetailList.push({
|
|
|
costType: "",
|
|
|
+ contractId: "",
|
|
|
remarks: "",
|
|
|
amount: undefined,
|
|
|
});
|
|
@@ -534,7 +574,7 @@ watch(
|
|
|
);
|
|
|
|
|
|
onMounted(() => {
|
|
|
- formData.data.paymentTime = proxy.parseTime(new Date());
|
|
|
+ // formData.data.paymentTime = proxy.parseTime(new Date());
|
|
|
// 核销
|
|
|
if (route.query.advanceId) {
|
|
|
formData.data.type = "3";
|
|
@@ -554,6 +594,7 @@ const fundsPaymentMethod = ref([]);
|
|
|
const currencyType = ref([]);
|
|
|
const advanceList = ref([]);
|
|
|
const contractList = ref([]);
|
|
|
+const bankList = ref([]);
|
|
|
const getDictData = () => {
|
|
|
// 获取归属公司数据
|
|
|
proxy.post("/corporation/page", { pageNum: 1, pageSize: 9999 }).then((res) => {
|
|
@@ -618,7 +659,13 @@ const getDictData = () => {
|
|
|
dictCode: "funds_payment_method",
|
|
|
})
|
|
|
.then((res) => {
|
|
|
- fundsPaymentMethod.value = res.rows;
|
|
|
+ if (res.rows && res.rows.length > 0) {
|
|
|
+ fundsPaymentMethod.value = res.rows;
|
|
|
+ let list = res.rows.filter((item) => item.dictKey === "bank");
|
|
|
+ if (!(list && list.length > 0) && formData.data.paymentMethod === "bank") {
|
|
|
+ formData.data.paymentMethod = "";
|
|
|
+ }
|
|
|
+ }
|
|
|
});
|
|
|
// 币种数据
|
|
|
proxy
|
|
@@ -630,6 +677,10 @@ const getDictData = () => {
|
|
|
})
|
|
|
.then((res) => {
|
|
|
currencyType.value = res.rows;
|
|
|
+ let list = res.rows.filter((item) => item.dictKey === "CNY");
|
|
|
+ if (!(list && list.length > 0) && formData.data.currency === "CNY") {
|
|
|
+ formData.data.currency = "";
|
|
|
+ }
|
|
|
});
|
|
|
proxy
|
|
|
.get("/tenantUser/list", {
|
|
@@ -648,6 +699,9 @@ const getDictData = () => {
|
|
|
});
|
|
|
}
|
|
|
});
|
|
|
+ proxy.get("/accountRequestFunds/getPayHistoricalInfo", {}).then((res) => {
|
|
|
+ bankList.value = res.data;
|
|
|
+ });
|
|
|
};
|
|
|
getDictData();
|
|
|
const recursive = (data) => {
|
|
@@ -829,7 +883,6 @@ const computeMoney = (label) => {
|
|
|
}
|
|
|
return amount;
|
|
|
};
|
|
|
-
|
|
|
const computeBalance = () => {
|
|
|
let balance = 0;
|
|
|
let advanceAmount = computeMoney("advanceAmount");
|
|
@@ -842,6 +895,17 @@ const computeBalance = () => {
|
|
|
}
|
|
|
return balance;
|
|
|
};
|
|
|
+const openSelect = ref(false);
|
|
|
+const clickSelect = () => {
|
|
|
+ openSelect.value = true;
|
|
|
+};
|
|
|
+const handleSelect = (item) => {
|
|
|
+ formData.data.name = item.name;
|
|
|
+ formData.data.accountOpening = item.accountOpening;
|
|
|
+ formData.data.openingBank = item.openingBank;
|
|
|
+ formData.data.interbankNumber = item.interbankNumber;
|
|
|
+ openSelect.value = false;
|
|
|
+};
|
|
|
</script>
|
|
|
|
|
|
<style lang="scss" scoped>
|