|
@@ -1,14 +1,8 @@
|
|
|
<template>
|
|
|
<div class="tenant">
|
|
|
<div class="content">
|
|
|
- <byTable
|
|
|
- :source="sourceList.data"
|
|
|
- :pagination="sourceList.pagination"
|
|
|
- :config="config"
|
|
|
- :loading="loading"
|
|
|
- :selectConfig="selectConfig"
|
|
|
- highlight-current-row
|
|
|
- :action-list="[
|
|
|
+ <byTable :source="sourceList.data" :pagination="sourceList.pagination" :config="config" :loading="loading" :selectConfig="selectConfig"
|
|
|
+ highlight-current-row :action-list="[
|
|
|
{
|
|
|
text: '导出Excel',
|
|
|
action: () => deriveExcel(),
|
|
@@ -29,14 +23,9 @@
|
|
|
text: '添加流水',
|
|
|
action: () => openModal('add'),
|
|
|
},
|
|
|
- ]"
|
|
|
- @moreSearch="moreSearch"
|
|
|
- @get-list="getList"
|
|
|
- >
|
|
|
+ ]" @moreSearch="moreSearch" @get-list="getList">
|
|
|
<template #amount="{ item }">
|
|
|
- <div
|
|
|
- :style="'color: ' + (item.status === '10' ? '#04cb04;' : 'red;')"
|
|
|
- >
|
|
|
+ <div :style="'color: ' + (item.status === '10' ? '#04cb04;' : 'red;')">
|
|
|
<span style="padding-right: 4px" v-if="item.currency">{{
|
|
|
item.currency
|
|
|
}}</span>
|
|
@@ -50,15 +39,8 @@
|
|
|
<template #contractCodes="{ item }">
|
|
|
<div style="width: 100%">
|
|
|
<div v-if="item.contractCodes">
|
|
|
- <div
|
|
|
- v-for="(contract, index) in item.contractCodes.split(',')"
|
|
|
- :key="index"
|
|
|
- >
|
|
|
- <a
|
|
|
- style="color: #409eff; cursor: pointer; word-break: break-all"
|
|
|
- @click="openDetails(contract)"
|
|
|
- >{{ contract }}</a
|
|
|
- >
|
|
|
+ <div v-for="(contract, index) in item.contractCodes.split(',')" :key="index">
|
|
|
+ <a style="color: #409eff; cursor: pointer; word-break: break-all" @click="openDetails(contract)">{{ contract }}</a>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -66,28 +48,11 @@
|
|
|
</byTable>
|
|
|
</div>
|
|
|
|
|
|
- <el-dialog
|
|
|
- :title="modalType == 'add' ? '添加流水' : '编辑流水'"
|
|
|
- v-if="dialogVisible"
|
|
|
- v-model="dialogVisible"
|
|
|
- width="600"
|
|
|
- v-loading="loadingDialog"
|
|
|
- >
|
|
|
- <byForm
|
|
|
- :formConfig="formConfig"
|
|
|
- :formOption="formOption"
|
|
|
- v-model="formData.data"
|
|
|
- :rules="rules"
|
|
|
- ref="submit"
|
|
|
- >
|
|
|
+ <el-dialog :title="modalType == 'add' ? '添加流水' : '编辑流水'" v-if="dialogVisible" v-model="dialogVisible" width="600" v-loading="loadingDialog">
|
|
|
+ <byForm :formConfig="formConfig" :formOption="formOption" v-model="formData.data" :rules="rules" ref="submit">
|
|
|
<template #transactionTime>
|
|
|
<div>
|
|
|
- <el-date-picker
|
|
|
- v-model="formData.data.transactionTime"
|
|
|
- type="datetime"
|
|
|
- placeholder="请选择交易时间"
|
|
|
- value-format="YYYY-MM-DD HH:mm:ss"
|
|
|
- />
|
|
|
+ <el-date-picker v-model="formData.data.transactionTime" type="datetime" placeholder="请选择交易时间" value-format="YYYY-MM-DD HH:mm:ss" />
|
|
|
</div>
|
|
|
</template>
|
|
|
<template #money>
|
|
@@ -95,48 +60,22 @@
|
|
|
<el-row :gutter="10">
|
|
|
<el-col :span="6">
|
|
|
<el-form-item prop="status">
|
|
|
- <el-select
|
|
|
- v-model="formData.data.status"
|
|
|
- placeholder="请选择"
|
|
|
- style="width: 100%"
|
|
|
- @change="changeStatus()"
|
|
|
- >
|
|
|
- <el-option
|
|
|
- v-for="item in status"
|
|
|
- :key="item.value"
|
|
|
- :label="item.label"
|
|
|
- :value="item.value"
|
|
|
- />
|
|
|
+ <el-select v-model="formData.data.status" placeholder="请选择" style="width: 100%" @change="changeStatus()">
|
|
|
+ <el-option v-for="item in status" :key="item.value" :label="item.label" :value="item.value" />
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="6">
|
|
|
<el-form-item prop="currency">
|
|
|
- <el-select
|
|
|
- v-model="formData.data.currency"
|
|
|
- placeholder="请选择"
|
|
|
- style="width: 100%"
|
|
|
- >
|
|
|
- <el-option
|
|
|
- v-for="item in accountCurrency"
|
|
|
- :key="item.value"
|
|
|
- :label="item.label"
|
|
|
- :value="item.value"
|
|
|
- />
|
|
|
+ <el-select v-model="formData.data.currency" placeholder="请选择" style="width: 100%">
|
|
|
+ <el-option v-for="item in accountCurrency" :key="item.value" :label="item.label" :value="item.value" />
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item prop="amount">
|
|
|
- <el-input-number
|
|
|
- onmousewheel="return false;"
|
|
|
- v-model="formData.data.amount"
|
|
|
- placeholder="请输入金额"
|
|
|
- style="width: 100%"
|
|
|
- :precision="2"
|
|
|
- :controls="false"
|
|
|
- :min="0"
|
|
|
- />
|
|
|
+ <el-input-number onmousewheel="return false;" v-model="formData.data.amount" placeholder="请输入金额" style="width: 100%" :precision="2"
|
|
|
+ :controls="false" :min="0" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
@@ -146,13 +85,7 @@
|
|
|
<div>
|
|
|
<el-form-item prop="received">
|
|
|
<el-radio-group v-model="formData.data.received">
|
|
|
- <el-radio
|
|
|
- v-for="item in received"
|
|
|
- :key="item.value"
|
|
|
- :label="item.value"
|
|
|
- border
|
|
|
- >{{ item.label }}</el-radio
|
|
|
- >
|
|
|
+ <el-radio v-for="item in received" :key="item.value" :label="item.value" border>{{ item.label }}</el-radio>
|
|
|
</el-radio-group>
|
|
|
</el-form-item>
|
|
|
</div>
|
|
@@ -160,72 +93,30 @@
|
|
|
</byForm>
|
|
|
<template #footer>
|
|
|
<el-button @click="dialogVisible = false" size="large">取 消</el-button>
|
|
|
- <el-button type="primary" @click="submitForm()" size="large"
|
|
|
- >确 定</el-button
|
|
|
- >
|
|
|
+ <el-button type="primary" @click="submitForm()" size="large">确 定</el-button>
|
|
|
</template>
|
|
|
</el-dialog>
|
|
|
- <el-dialog
|
|
|
- title="内部转账"
|
|
|
- v-if="transferMoneyModal"
|
|
|
- v-model="transferMoneyModal"
|
|
|
- width="600"
|
|
|
- v-loading="loadingDialog"
|
|
|
- >
|
|
|
- <byForm
|
|
|
- :formConfig="transferMoneyConfig"
|
|
|
- :formOption="formOption"
|
|
|
- v-model="formData2.data"
|
|
|
- :rules="rules2"
|
|
|
- ref="transferMoneySubmit"
|
|
|
- >
|
|
|
+ <el-dialog title="内部转账" v-if="transferMoneyModal" v-model="transferMoneyModal" width="600" v-loading="loadingDialog">
|
|
|
+ <byForm :formConfig="transferMoneyConfig" :formOption="formOption" v-model="formData2.data" :rules="rules2" ref="transferMoneySubmit">
|
|
|
</byForm>
|
|
|
<template #footer>
|
|
|
- <el-button @click="transferMoneyModal = false" size="large"
|
|
|
- >取 消</el-button
|
|
|
- >
|
|
|
- <el-button type="primary" @click="submitForm2()" size="large"
|
|
|
- >确 定</el-button
|
|
|
- >
|
|
|
+ <el-button @click="transferMoneyModal = false" size="large">取 消</el-button>
|
|
|
+ <el-button type="primary" @click="submitForm2()" size="large">确 定</el-button>
|
|
|
</template>
|
|
|
</el-dialog>
|
|
|
- <el-dialog
|
|
|
- title="高级检索"
|
|
|
- v-if="openSearch"
|
|
|
- v-model="openSearch"
|
|
|
- width="600"
|
|
|
- :before-close="cancelSearch"
|
|
|
- >
|
|
|
- <byForm
|
|
|
- :formConfig="formSearchConfig"
|
|
|
- :formOption="formOption"
|
|
|
- v-model="sourceList.pagination"
|
|
|
- >
|
|
|
+ <el-dialog title="高级检索" v-if="openSearch" v-model="openSearch" width="600" :before-close="cancelSearch">
|
|
|
+ <byForm :formConfig="formSearchConfig" :formOption="formOption" v-model="sourceList.pagination">
|
|
|
<template #money>
|
|
|
<div style="width: 100%">
|
|
|
<el-row :gutter="10">
|
|
|
<el-col :span="11">
|
|
|
- <el-input-number
|
|
|
- onmousewheel="return false;"
|
|
|
- v-model="sourceList.pagination.beginAmount"
|
|
|
- placeholder="请输入"
|
|
|
- style="width: 100%"
|
|
|
- :precision="2"
|
|
|
- :controls="false"
|
|
|
- :min="0"
|
|
|
- />
|
|
|
+ <el-input-number onmousewheel="return false;" v-model="sourceList.pagination.beginAmount" placeholder="请输入" style="width: 100%"
|
|
|
+ :precision="2" :controls="false" :min="0" />
|
|
|
</el-col>
|
|
|
<el-col :span="2" style="text-align: center">到</el-col>
|
|
|
<el-col :span="11">
|
|
|
- <el-input-number
|
|
|
- onmousewheel="return false;"
|
|
|
- v-model="sourceList.pagination.endAmount"
|
|
|
- placeholder="请输入"
|
|
|
- style="width: 100%"
|
|
|
- :precision="2"
|
|
|
- :controls="false"
|
|
|
- :min="0"
|
|
|
- />
|
|
|
+ <el-input-number onmousewheel="return false;" v-model="sourceList.pagination.endAmount" placeholder="请输入" style="width: 100%"
|
|
|
+ :precision="2" :controls="false" :min="0" />
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
</div>
|
|
@@ -234,23 +125,13 @@
|
|
|
<div style="width: 100%">
|
|
|
<el-row :gutter="10">
|
|
|
<el-col :span="11">
|
|
|
- <el-date-picker
|
|
|
- v-model="sourceList.pagination.startTime"
|
|
|
- type="datetime"
|
|
|
- placeholder="请选择"
|
|
|
- style="width: 100%"
|
|
|
- value-format="YYYY-MM-DD HH:mm:ss"
|
|
|
- />
|
|
|
+ <el-date-picker v-model="sourceList.pagination.startTime" type="datetime" placeholder="请选择" style="width: 100%"
|
|
|
+ value-format="YYYY-MM-DD HH:mm:ss" />
|
|
|
</el-col>
|
|
|
<el-col :span="2" style="text-align: center">到</el-col>
|
|
|
<el-col :span="11">
|
|
|
- <el-date-picker
|
|
|
- v-model="sourceList.pagination.stopTime"
|
|
|
- type="datetime"
|
|
|
- placeholder="请选择"
|
|
|
- style="width: 100%"
|
|
|
- value-format="YYYY-MM-DD HH:mm:ss"
|
|
|
- />
|
|
|
+ <el-date-picker v-model="sourceList.pagination.stopTime" type="datetime" placeholder="请选择" style="width: 100%"
|
|
|
+ value-format="YYYY-MM-DD HH:mm:ss" />
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
</div>
|
|
@@ -258,9 +139,7 @@
|
|
|
</byForm>
|
|
|
<template #footer>
|
|
|
<el-button @click="cancelSearch()" size="large">取 消</el-button>
|
|
|
- <el-button type="primary" @click="submitSearch()" size="large"
|
|
|
- >确 定</el-button
|
|
|
- >
|
|
|
+ <el-button type="primary" @click="submitSearch()" size="large">确 定</el-button>
|
|
|
</template>
|
|
|
</el-dialog>
|
|
|
|
|
@@ -269,75 +148,65 @@
|
|
|
<template #footer>
|
|
|
<el-button @click="openPrint = false" size="large">取消</el-button>
|
|
|
<el-button v-print="printObj" size="large">打印</el-button>
|
|
|
- <el-button type="primary" @click="clickDownload()" size="large"
|
|
|
- >下载PDF</el-button
|
|
|
- >
|
|
|
+ <el-button type="primary" @click="clickDownload()" size="large">下载PDF</el-button>
|
|
|
</template>
|
|
|
</el-dialog>
|
|
|
|
|
|
- <el-dialog
|
|
|
- :title="submitType == 'add' ? '添加借款' : '还款'"
|
|
|
- v-if="openLoanDialog"
|
|
|
- v-model="openLoanDialog"
|
|
|
- width="500"
|
|
|
- destroy-on-close
|
|
|
- >
|
|
|
- <byForm
|
|
|
- :formConfig="loanFormConfig"
|
|
|
- :formOption="formOption"
|
|
|
- :rules="loanRules"
|
|
|
- v-model="formData.loanData"
|
|
|
- ref="byform"
|
|
|
- >
|
|
|
+ <el-dialog :title="submitType == 'add' ? '添加借款' : '还款'" v-if="openLoanDialog" v-model="openLoanDialog" width="500" destroy-on-close>
|
|
|
+ <byForm :formConfig="loanFormConfig" :formOption="formOption" :rules="loanRules" v-model="formData.loanData" ref="byform">
|
|
|
<template #loanUserName>
|
|
|
<div style="width: 100%">
|
|
|
- <el-autocomplete
|
|
|
- v-model="formData.loanData.loanUserName"
|
|
|
- :fetch-suggestions="querySearch"
|
|
|
- :disabled="submitType == 'edit'"
|
|
|
- clearable
|
|
|
- class="inline-input w-50"
|
|
|
- placeholder="请输入"
|
|
|
- />
|
|
|
+ <el-autocomplete v-model="formData.loanData.loanUserName" :fetch-suggestions="querySearch" :disabled="submitType == 'edit'" clearable
|
|
|
+ class="inline-input w-50" placeholder="请输入" />
|
|
|
</div>
|
|
|
</template>
|
|
|
</byForm>
|
|
|
<template #footer>
|
|
|
- <el-button @click="openLoanDialog = false" size="large"
|
|
|
- >取 消</el-button
|
|
|
- >
|
|
|
- <el-button
|
|
|
- type="primary"
|
|
|
- @click="handleSubmitLoan()"
|
|
|
- size="large"
|
|
|
- :loading="submitLoading"
|
|
|
- >确 定</el-button
|
|
|
- >
|
|
|
+ <el-button @click="openLoanDialog = false" size="large">取 消</el-button>
|
|
|
+ <el-button type="primary" @click="handleSubmitLoan()" size="large" :loading="submitLoading">确 定</el-button>
|
|
|
</template>
|
|
|
</el-dialog>
|
|
|
<!-- 结汇 -->
|
|
|
- <el-dialog
|
|
|
- title="结汇"
|
|
|
- v-if="settlementModal"
|
|
|
- v-model="settlementModal"
|
|
|
- width="600"
|
|
|
- v-loading="loadingDialog"
|
|
|
- >
|
|
|
- <byForm
|
|
|
- :formConfig="settlementFormConfig"
|
|
|
- :formOption="formOption"
|
|
|
- v-model="formData3.data"
|
|
|
- :rules="rules3"
|
|
|
- ref="submit3"
|
|
|
- >
|
|
|
+ <el-dialog title="结汇" v-if="settlementModal" v-model="settlementModal" width="600" v-loading="loadingDialog">
|
|
|
+ <byForm :formConfig="settlementFormConfig" :formOption="formOption" v-model="formData3.data" :rules="rules3" ref="submit3">
|
|
|
+ <template #details>
|
|
|
+ <div style="width: 100%">
|
|
|
+ <el-button type="primary" @click="handleAddRow(true)" style="margin: 10px 0">
|
|
|
+ 添加
|
|
|
+ </el-button>
|
|
|
+ <el-table :data="formData3.data.exchangeSettlementDetailList" show-summary>
|
|
|
+ <el-table-column prop="count" label="合同编号" min-width="150">
|
|
|
+ <template #default="{ row, $index }">
|
|
|
+ <el-form-item :prop="
|
|
|
+ 'exchangeSettlementDetailList.' + $index + '.contractId'
|
|
|
+ " :rules="rulesOne.contractId" :inline-message="true">
|
|
|
+ <el-select v-model="row.contractId" placeholder="请选择" filterable style="width: 100%">
|
|
|
+ <el-option v-for="item in contractList2" :label="item.code" :value="item.id">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="amount" label="关联金额" min-width="150">
|
|
|
+ <template #default="{ row, $index }">
|
|
|
+ <el-form-item :prop="'exchangeSettlementDetailList.' + $index + '.amount'" :rules="rulesOne.amount" :inline-message="true">
|
|
|
+ <el-input-number onmousewheel="return false;" v-model="row.amount" :precision="2" :controls="false" :min="0"
|
|
|
+ style="width: 100%" />
|
|
|
+ </el-form-item>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="zip" label="操作" width="80">
|
|
|
+ <template #default="{ $index }">
|
|
|
+ <el-button type="primary" link @click="handleRemove($index, true)">删除</el-button>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
</byForm>
|
|
|
<template #footer>
|
|
|
- <el-button @click="settlementModal = false" size="large"
|
|
|
- >取 消</el-button
|
|
|
- >
|
|
|
- <el-button type="primary" @click="settlementSubmitForm()" size="large"
|
|
|
- >确 定</el-button
|
|
|
- >
|
|
|
+ <el-button @click="settlementModal = false" size="large">取 消</el-button>
|
|
|
+ <el-button type="primary" @click="settlementSubmitForm()" size="large">确 定</el-button>
|
|
|
</template>
|
|
|
</el-dialog>
|
|
|
</div>
|
|
@@ -411,6 +280,7 @@ const openSettlementModal = (type, row) => {
|
|
|
commissionCurrency: null,
|
|
|
remarks: null,
|
|
|
businessId: null,
|
|
|
+ exchangeSettlementDetailList: [],
|
|
|
};
|
|
|
settlementModal.value = true;
|
|
|
};
|
|
@@ -472,6 +342,32 @@ const formData3 = reactive({
|
|
|
const submit3 = ref(null);
|
|
|
const settlementSubmitForm = () => {
|
|
|
submit3.value.handleSubmit(() => {
|
|
|
+ if (!formData3.data.exchangeSettlementDetailList.length > 0) {
|
|
|
+ ElMessage({
|
|
|
+ message: "请添加关联合同",
|
|
|
+ type: "info",
|
|
|
+ });
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ const list = formData3.data.exchangeSettlementDetailList;
|
|
|
+ for (let i = 0; i < list.length; i++) {
|
|
|
+ const e = list[i];
|
|
|
+ if (!(e.amount > 0)) {
|
|
|
+ return ElMessage({
|
|
|
+ message: "关联金额不能为0!",
|
|
|
+ type: "info",
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ const total = list.reduce((total, x) => (total += Number(x.amount)), 0);
|
|
|
+ if (
|
|
|
+ Number(parseFloat(total).toFixed(2)) !== Number(formData3.data.amount)
|
|
|
+ ) {
|
|
|
+ return ElMessage({
|
|
|
+ message: "关联合同金额总合必须等于汇出金额",
|
|
|
+ type: "info",
|
|
|
+ });
|
|
|
+ }
|
|
|
//汇出汇入账号不能相同
|
|
|
if (
|
|
|
formData3.data.accountManagementId ===
|
|
@@ -609,12 +505,18 @@ const settlementFormConfig = computed(() => {
|
|
|
type: "title",
|
|
|
title: "关联合同",
|
|
|
},
|
|
|
+ // {
|
|
|
+ // type: "select",
|
|
|
+ // prop: "businessId",
|
|
|
+ // label: "选择合同",
|
|
|
+ // filterable: true,
|
|
|
+ // data: contractList2.value,
|
|
|
+ // },
|
|
|
+ //关联合同
|
|
|
{
|
|
|
- type: "select",
|
|
|
- prop: "businessId",
|
|
|
- label: "选择合同",
|
|
|
- filterable: true,
|
|
|
- data: contractList2.value,
|
|
|
+ type: "slot",
|
|
|
+ slotName: "details",
|
|
|
+ label: "",
|
|
|
},
|
|
|
];
|
|
|
});
|
|
@@ -780,7 +682,6 @@ const getDict = () => {
|
|
|
.post("/contract/page1", {
|
|
|
pageNum: 1,
|
|
|
pageSize: 9999,
|
|
|
- isExchangeSettlement: 0,
|
|
|
})
|
|
|
.then((res) => {
|
|
|
contractList2.value = res.rows.map((item) => {
|
|
@@ -1605,6 +1506,33 @@ const handleSubmitLoan = () => {
|
|
|
);
|
|
|
});
|
|
|
};
|
|
|
+
|
|
|
+const handleAddRow = (flag) => {
|
|
|
+ if (flag) {
|
|
|
+ formData3.data.exchangeSettlementDetailList.push({
|
|
|
+ contractId: "",
|
|
|
+ amount: null,
|
|
|
+ });
|
|
|
+ }
|
|
|
+};
|
|
|
+const handleRemove = (index, flag) => {
|
|
|
+ if (flag) {
|
|
|
+ formData3.data.exchangeSettlementDetailList.splice(index, 1);
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+const rulesOne = ref({
|
|
|
+ accountManagementId: [
|
|
|
+ { required: true, message: "请选择账户", trigger: "change" },
|
|
|
+ ],
|
|
|
+ transactionTime: [
|
|
|
+ { required: true, message: "请选择退税时间", trigger: "change" },
|
|
|
+ ],
|
|
|
+ currency: [{ required: true, message: "请选择币种", trigger: "change" }],
|
|
|
+ // amount: [{ required: true, message: "请输入退税金额", trigger: "blur" }],
|
|
|
+ contractId: [{ required: true, message: "请选择合同", trigger: "change" }],
|
|
|
+ amount: [{ required: true, message: "请输入金额", trigger: "blur" }],
|
|
|
+});
|
|
|
</script>
|
|
|
|
|
|
<style lang="scss" scoped>
|