Browse Source

结汇bug

cz 1 year ago
parent
commit
edfbcad904
1 changed files with 142 additions and 214 deletions
  1. 142 214
      src/views/finance/fundManage/flow/index.vue

+ 142 - 214
src/views/finance/fundManage/flow/index.vue

@@ -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>