Browse Source

进出场记录添加路由缓存 调整细节
箱号验证前去掉空格
财务管理 发票新建的时候不能编辑
销项发票 新加快捷检索功能
进口新加字段和检索条件
进出口费用验证去掉问号
海运进出口 除了主单 其他单据需要必填OP和客服
OW 新加两个明细联调接口

Qukatie 7 months ago
parent
commit
a547d070a4
24 changed files with 1642 additions and 129 deletions
  1. 23 2
      src/api/boxManagement/buyContainer/index.js
  2. 6 0
      src/enums/column-name.js
  3. 28 0
      src/router/views/index.js
  4. 1 0
      src/views/boxManagement/agentBox/detailsPage.vue
  5. 2 1
      src/views/boxManagement/boxAdjustment/detailsPage.vue
  6. 1 0
      src/views/boxManagement/boxExit/detailsPage.vue
  7. 1 0
      src/views/boxManagement/buyContainer/detailsPage.vue
  8. 5 4
      src/views/boxManagement/containerNumber/detailsPage.vue
  9. 5 0
      src/views/boxManagement/enterRecord/detailsPage.vue
  10. 5 0
      src/views/boxManagement/exitRecord/detailsPage.vue
  11. 1 0
      src/views/boxManagement/rentalBox/detailsPage.vue
  12. 16 16
      src/views/iosBasicData/OceanFreightImport/bills/assembly/feecenter.vue
  13. 18 2
      src/views/iosBasicData/OceanFreightImport/bills/index.vue
  14. 2 2
      src/views/iosBasicData/PaymentApplication/assembly/searchPopup.vue
  15. 16 16
      src/views/iosBasicData/SeafreightExportF/bills/assembly/feecenter.vue
  16. 10 1
      src/views/iosBasicData/SeafreightExportF/bills/billsDetails.vue
  17. 1 0
      src/views/iosBasicData/fininvoices/index.vue
  18. 2 2
      src/views/iosBasicData/fininvoicesApplyfor/fininvoicesDetails.vue
  19. 719 0
      src/views/iosBasicData/fininvoicesOutput/assembly/searchPopup.vue
  20. 26 6
      src/views/iosBasicData/fininvoicesOutput/fininvoicesDetails.vue
  21. 1 0
      src/views/iosBasicData/fininvoicesOutput/index.vue
  22. 1 0
      src/views/ow/contract/detailsPage.vue
  23. 323 7
      src/views/ow/owPut/detailsPage.vue
  24. 429 70
      src/views/ow/owTask/detailsPage.vue

+ 23 - 2
src/api/boxManagement/buyContainer/index.js

@@ -184,7 +184,7 @@ export function revokeRentCalculation(data) {
 // 租金计算
 export function countRent(data) {
   return request({
-    url: '/api/blade-los/tradingBox/countRent',
+    url: '/api/blade-los/tradingBox/countPerDiem',
     method: 'get',
     params: data
   })
@@ -192,7 +192,7 @@ export function countRent(data) {
 // 撤销租金计算
 export function revokeCountRent(data) {
   return request({
-    url: '/api/blade-los/tradingBox/revokeCountRent',
+    url: '/api/blade-los/tradingBox/revokeCountPerDiem',
     method: 'get',
     params: data
   })
@@ -264,4 +264,25 @@ export function revokeCheckPleaseVerifyCost(data) {
     method: 'post',
     data: data
   })
+}
+export const feeList = (params) => {
+  return request({
+    url: '/api/blade-los/feecenteritems/list',
+    method: 'get',
+    params: params
+  })
+}
+export const bfeesList = (params) => {
+  return request({
+    url: '/api/blade-los/tradingBox/batchImportPickUpCost',
+    method: 'get',
+    params: params
+  })
+}
+export function mergeGenerateCost(data) {
+  return request({
+    url: '/api/blade-los/tradingBox/mergeGenerateCost',
+    method: 'post',
+    data: data
+  })
 }

+ 6 - 0
src/enums/column-name.js

@@ -2204,6 +2204,12 @@ const columnName = [{
 }, {
   code: 517,
   name: '永发-箱管-进场纪录明细'
+}, {
+  code: 518,
+  name: '永发-OW-pickUp明细'
+}, {
+  code: 519,
+  name: '永发-OW-perDiem明细'
 }
 ]
 export const getColumnName = (key) => {

+ 28 - 0
src/router/views/index.js

@@ -4357,4 +4357,32 @@ export default [{
     component: () => import( /* webpackChunkName: "views" */ '@/views/boxManagement/podComeback/index')
   }]
 },
+{
+  path: '/boxManagement/exitRecord/index',
+  component: Layout,
+  hidden: true,
+  children: [{
+    path: '/boxManagement/exitRecord/index',
+    name: '出场纪录',
+    meta: {
+      i18n: '/boxManagement/exitRecord/index',
+      keepAlive: true,
+    },
+    component: () => import( /* webpackChunkName: "views" */ '@/views/boxManagement/exitRecord/index')
+  }]
+},
+{
+  path: '/boxManagement/enterRecord/index',
+  component: Layout,
+  hidden: true,
+  children: [{
+    path: '/boxManagement/enterRecord/index',
+    name: '进场记录',
+    meta: {
+      i18n: '/boxManagement/enterRecord/index',
+      keepAlive: true,
+    },
+    component: () => import( /* webpackChunkName: "views" */ '@/views/boxManagement/enterRecord/index')
+  }]
+}
 ]

+ 1 - 0
src/views/boxManagement/agentBox/detailsPage.vue

@@ -1386,6 +1386,7 @@ export default {
   methods: {
     verifyChange(name, row) {
       if (row[name]) {
+        row[name] = row[name].replace(/\s+/g, '')
         getAccurate({ accurate: row[name] }).then(res => {
           if (res.data.data.records.length == 0) {
             const regex = /^([a-zA-Z]{4})([0-9]{7})$/;

+ 2 - 1
src/views/boxManagement/boxAdjustment/detailsPage.vue

@@ -1262,6 +1262,7 @@ export default {
   methods: {
     verifyChange(name, row) {
       if (row[name]) {
+        row[name] = row[name].replace(/\s+/g, '')
         getAccurate({ accurate: row[name] }).then(res => {
           if (res.data.data.records.length == 0) {
             const regex = /^([a-zA-Z]{4})([0-9]{7})$/;
@@ -1962,7 +1963,7 @@ export default {
           })
         });
       }
-       if (name == 'C撤销请核') {
+      if (name == 'C撤销请核') {
         for (let row of this.selectionfeecList) {
           if (!row.id) {
             return this.$message.error("请保存费用明细");

+ 1 - 0
src/views/boxManagement/boxExit/detailsPage.vue

@@ -1308,6 +1308,7 @@ export default {
   methods: {
     verifyChange(name, row) {
       if (row[name]) {
+           row[name] = row[name].replace(/\s+/g, '')
         getAccurate({ accurate: row[name] }).then(res => {
           if (res.data.data.records.length == 0) {
             const regex = /^([a-zA-Z]{4})([0-9]{7})$/;

+ 1 - 0
src/views/boxManagement/buyContainer/detailsPage.vue

@@ -1213,6 +1213,7 @@ export default {
   methods: {
     verifyChange(name, row) {
       if (row[name]) {
+        row[name] = row[name].replace(/\s+/g, '')
         getAccurate({ accurate: row[name] }).then(res => {
           if (res.data.data.records.length == 0) {
             const regex = /^([a-zA-Z]{4})([0-9]{7})$/;

+ 5 - 4
src/views/boxManagement/containerNumber/detailsPage.vue

@@ -38,7 +38,7 @@
           <tempalte slot="boxEastName">
             <dic-select v-model="form.boxEastName" placeholder="箱东" key="id" label="cnName" res="records"
               @selectChange="dicChange('boxEastName', $event)" url="/blade-los/bcorps/selectList?corpTypeName=箱东"
-              :filterable="true" :remote="true" dataName="cnName" :disabled="editDisabled||!(form.busType=='自有箱')">
+              :filterable="true" :remote="true" dataName="cnName" :disabled="editDisabled || !(form.busType == '自有箱')">
             </dic-select>
           </tempalte>
           <tempalte slot="agentName">
@@ -276,8 +276,8 @@ export default {
       editButton: false,
       editDisabled: false,
       form: {
-        busType:'自有箱',
-        putBoxItemsList:[]
+        busType: '自有箱',
+        putBoxItemsList: []
       },
       oldForm: {},
       optionForm: {
@@ -289,7 +289,7 @@ export default {
           {
             label: '箱东',
             prop: 'boxEastName',
-            disabled:false,
+            disabled: false,
             rules: [{
               required: true,
               message: " ",
@@ -996,6 +996,7 @@ export default {
   methods: {
     verifyChange(name, row) {
       if (row[name]) {
+        row[name] = row[name].replace(/\s+/g, '')
         getAccurate({ accurate: row[name] }).then(res => {
           if (res.data.data.records.length == 0) {
             const regex = /^([a-zA-Z]{4})([0-9]{7})$/;

+ 5 - 0
src/views/boxManagement/enterRecord/detailsPage.vue

@@ -137,6 +137,11 @@ export default {
             overHidden: true,
           },
           {
+            label: '箱号',
+            prop: 'boxCode',
+            overHidden: true,
+          },
+          {
             label: '箱型',
             prop: 'boxType',
             overHidden: true,

+ 5 - 0
src/views/boxManagement/exitRecord/detailsPage.vue

@@ -135,6 +135,11 @@ export default {
             label: '放箱号',
             prop: 'containerNumber',
             overHidden: true,
+          }, 
+          {
+            label: '箱号',
+            prop: 'boxCode',
+            overHidden: true,
           },
           {
             label: '箱型',

+ 1 - 0
src/views/boxManagement/rentalBox/detailsPage.vue

@@ -1442,6 +1442,7 @@ export default {
   methods: {
     verifyChange(name, row) {
       if (row[name]) {
+        row[name] = row[name].replace(/\s+/g, '')
         getAccurate({ accurate: row[name] }).then(res => {
           if (res.data.data.records.length == 0) {
             const regex = /^([a-zA-Z]{4})([0-9]{7})$/;

+ 16 - 16
src/views/iosBasicData/OceanFreightImport/bills/assembly/feecenter.vue

@@ -3099,16 +3099,16 @@ export default {
                         return this.$message.error("未审核通过的费用,不允许申请");
                     }
                     if (Number(row.appliedAmount) > 0) {
-                        return this.$message.error("请选择未申请付费的费用");
+                        return this.$message.error("请选择未申请付费的费用");
                     }
                     if (Number(row.appliedInvoiceAmount) > 0) {
-                        return this.$message.error("请选择未申请发票的费用");
+                        return this.$message.error("请选择未申请发票的费用");
                     }
                     if (Number(row.uninvoicedAmount) > 0) {
-                        return this.$message.error("请选择未开票的费用");
+                        return this.$message.error("请选择未开票的费用");
                     }
                     if (Number(row.stlTtlAmount) > 0) {
-                        return this.$message.error("请选择未结算的费用");
+                        return this.$message.error("请选择未结算的费用");
                     }
                     this.$refs.feeModify.openDialog(row, 'fix')
                 }
@@ -3122,16 +3122,16 @@ export default {
                         return this.$message.error("未审核通过的费用,不允许申请");
                     }
                     if (Number(row.appliedAmount) > 0) {
-                        return this.$message.error("请选择未申请付费的费用");
+                        return this.$message.error("请选择未申请付费的费用");
                     }
                     if (Number(row.appliedInvoiceAmount) > 0) {
-                        return this.$message.error("请选择未申请发票的费用");
+                        return this.$message.error("请选择未申请发票的费用");
                     }
                     if (Number(row.uninvoicedAmount) > 0) {
-                        return this.$message.error("请选择未开票的费用");
+                        return this.$message.error("请选择未开票的费用");
                     }
                     if (Number(row.stlTtlAmount) > 0) {
-                        return this.$message.error("请选择未结算的费用");
+                        return this.$message.error("请选择未结算的费用");
                     }
                     this.$refs.feeModify.openDialog(row, 'del')
                 }
@@ -3146,16 +3146,16 @@ export default {
                     }
 
                     if (Number(row.appliedAmount) > 0) {
-                        return this.$message.error("请选择未申请付费的费用");
+                        return this.$message.error("请选择未申请付费的费用");
                     }
                     if (Number(row.appliedInvoiceAmount) > 0) {
-                        return this.$message.error("请选择未申请发票的费用");
+                        return this.$message.error("请选择未申请发票的费用");
                     }
                     if (Number(row.uninvoicedAmount) > 0) {
-                        return this.$message.error("请选择未开票的费用");
+                        return this.$message.error("请选择未开票的费用");
                     }
                     if (Number(row.stlTtlAmount) > 0) {
-                        return this.$message.error("请选择未结算的费用");
+                        return this.$message.error("请选择未结算的费用");
                     }
                     this.$refs.feeModify.openDialog(row, 'revoke')
                 }
@@ -3170,16 +3170,16 @@ export default {
                     }
 
                     if (Number(row.appliedAmount) > 0) {
-                        return this.$message.error("请选择未申请付费的费用");
+                        return this.$message.error("请选择未申请付费的费用");
                     }
                     if (Number(row.appliedInvoiceAmount) > 0) {
-                        return this.$message.error("请选择未申请发票的费用");
+                        return this.$message.error("请选择未申请发票的费用");
                     }
                     if (Number(row.uninvoicedAmount) > 0) {
-                        return this.$message.error("请选择未开票的费用");
+                        return this.$message.error("请选择未开票的费用");
                     }
                     if (Number(row.stlTtlAmount) > 0) {
-                        return this.$message.error("请选择未结算的费用");
+                        return this.$message.error("请选择未结算的费用");
                     }
                     this.$refs.feeModify.openDialog(row, 'fix')
                 }

+ 18 - 2
src/views/iosBasicData/OceanFreightImport/bills/index.vue

@@ -153,7 +153,7 @@
                 <template slot="eta" slot-scope="scope">
                     <span>{{
                         scope.row.eta ? scope.row.eta.slice(0, 10) : ""
-                        }}</span>
+                    }}</span>
                 </template>
                 <template slot="updateTime" slot-scope="scope">
                     <span>{{
@@ -686,6 +686,22 @@ export default {
                         searchOrder: 9
                     },
                     {
+                        label: "ATD",
+                        prop: "actualEtd",
+                        width: "80",
+                        overHidden: true,
+                        searchProp: "actualEtdList",
+                        type: "date",
+                        unlinkPanels: true,
+                        searchRange: true,
+                        format: "yyyy-MM-dd",
+                        valueFormat: "yyyy-MM-dd HH:mm:ss",
+                        searchDefaultTime: ["00:00:00", "23:59:59"],
+                        search: true,
+                        span: 6,
+                        searchOrder: 9.1
+                    },
+                    {
                         label: "船公司",
                         prop: "carrierEnName",
                         overHidden: true,
@@ -1254,7 +1270,7 @@ export default {
                         width: "120",
                         overHidden: true
                     },
-                  {
+                    {
                         label: "审核状态",
                         prop: "status",
                         type: "select",

+ 2 - 2
src/views/iosBasicData/PaymentApplication/assembly/searchPopup.vue

@@ -3,7 +3,7 @@
     <div>
         <el-dialog title="选择数据" :visible.sync="dialogVisible" append-to-body width="80%" :before-close="handleClose"
             :close-on-click-modal="false">
-            <avue-crud :option="option" :table-loading="loading" :data="data" ref="crud" id="out-table"
+            <avue-crud :option="option" :table-loading="loading" :data="data.filter(item=>!item.disabled)" ref="crud" id="out-table"
                 :header-cell-class-name="headerClassName" @search-change="searchChange" @search-reset="searchReset"
                 @selection-change="selectionChange" :search.sync="query" :summary-method="summaryMethod">
                 <template slot="menuLeft">
@@ -450,8 +450,8 @@ export default {
             this.queryData = []
             this.pickData = []
             this.dialogVisible = true
+            this.activeName='query'
             // this.query = this.deepClone(this.form)
-
             setTimeout(() => {
                 this.query = {
                     mblno: this.form.mblno,

+ 16 - 16
src/views/iosBasicData/SeafreightExportF/bills/assembly/feecenter.vue

@@ -3215,16 +3215,16 @@ export default {
                         return this.$message.error("未审核通过的费用,不允许申请");
                     }
                     if (Number(row.appliedAmount) > 0) {
-                        return this.$message.error("请选择未申请付费的费用");
+                        return this.$message.error("请选择未申请付费的费用");
                     }
                     if (Number(row.appliedInvoiceAmount) > 0) {
-                        return this.$message.error("请选择未申请发票的费用");
+                        return this.$message.error("请选择未申请发票的费用");
                     }
                     if (Number(row.uninvoicedAmount) > 0) {
-                        return this.$message.error("请选择未开票的费用");
+                        return this.$message.error("请选择未开票的费用");
                     }
                     if (Number(row.stlTtlAmount) > 0) {
-                        return this.$message.error("请选择未结算的费用");
+                        return this.$message.error("请选择未结算的费用");
                     }
                     this.$refs.feeModify.openDialog(row, 'fix')
                 }
@@ -3238,16 +3238,16 @@ export default {
                         return this.$message.error("未审核通过的费用,不允许申请");
                     }
                     if (Number(row.appliedAmount) > 0) {
-                        return this.$message.error("请选择未申请付费的费用");
+                        return this.$message.error("请选择未申请付费的费用");
                     }
                     if (Number(row.appliedInvoiceAmount) > 0) {
-                        return this.$message.error("请选择未申请发票的费用");
+                        return this.$message.error("请选择未申请发票的费用");
                     }
                     if (Number(row.uninvoicedAmount) > 0) {
-                        return this.$message.error("请选择未开票的费用");
+                        return this.$message.error("请选择未开票的费用");
                     }
                     if (Number(row.stlTtlAmount) > 0) {
-                        return this.$message.error("请选择未结算的费用");
+                        return this.$message.error("请选择未结算的费用");
                     }
                     this.$refs.feeModify.openDialog(row, 'del')
                 }
@@ -3273,16 +3273,16 @@ export default {
                         return this.$message.error("未审核通过的费用,不允许申请");
                     }
                     if (Number(row.appliedAmount) > 0) {
-                        return this.$message.error("请选择未申请付费的费用");
+                        return this.$message.error("请选择未申请付费的费用");
                     }
                     if (Number(row.appliedInvoiceAmount) > 0) {
-                        return this.$message.error("请选择未申请发票的费用");
+                        return this.$message.error("请选择未申请发票的费用");
                     }
                     if (Number(row.uninvoicedAmount) > 0) {
-                        return this.$message.error("请选择未开票的费用");
+                        return this.$message.error("请选择未开票的费用");
                     }
                     if (Number(row.stlTtlAmount) > 0) {
-                        return this.$message.error("请选择未结算的费用");
+                        return this.$message.error("请选择未结算的费用");
                     }
                     this.$refs.feeModify.openDialog(row, 'fix')
                 }
@@ -3297,16 +3297,16 @@ export default {
                     }
 
                     if (Number(row.appliedAmount) > 0) {
-                        return this.$message.error("请选择未申请付费的费用");
+                        return this.$message.error("请选择未申请付费的费用");
                     }
                     if (Number(row.appliedInvoiceAmount) > 0) {
-                        return this.$message.error("请选择未申请发票的费用");
+                        return this.$message.error("请选择未申请发票的费用");
                     }
                     if (Number(row.uninvoicedAmount) > 0) {
-                        return this.$message.error("请选择未开票的费用");
+                        return this.$message.error("请选择未开票的费用");
                     }
                     if (Number(row.stlTtlAmount) > 0) {
-                        return this.$message.error("请选择未结算的费用");
+                        return this.$message.error("请选择未结算的费用");
                     }
                     this.$refs.feeModify.openDialog(row, 'del')
                 }

+ 10 - 1
src/views/iosBasicData/SeafreightExportF/bills/billsDetails.vue

@@ -131,7 +131,7 @@
                                                                 }} {{ item[0].label }}
                                                             </span>
                                                             <span v-else style="color: #1e9fff">{{ item[0].label
-                                                            }}</span>
+                                                                }}</span>
                                                         </span>
                                                         <span v-if="item[0].type == 'button'"></span>
                                                         <!--<el-button v-if="item[0].type == 'button'" :disabled="detailData.seeDisabled || item[0].disabled"-->
@@ -2192,6 +2192,15 @@ export default {
                     if (!this.form.srcType || !this.form.srcCnName) {
                         msgs.push('业务来源')
                     }
+
+                    if (this.form.billType != 'MM') {
+                        if (!this.form.operatorName) {
+                            msgs.push('OP')
+                        }
+                        if (!this.form.customerServiceName) {
+                            msgs.push('客服')
+                        }
+                    }
                     // if (!this.form.teamName) {
                     //     msgs.push('所属团队')
                     // }

+ 1 - 0
src/views/iosBasicData/fininvoices/index.vue

@@ -665,6 +665,7 @@ export default {
     // 新建发票
     newbillFun() {
       this.isShow = false;
+      this.editSave = false
     },
     // 编辑
     editFun(row) {

+ 2 - 2
src/views/iosBasicData/fininvoicesApplyfor/fininvoicesDetails.vue

@@ -78,8 +78,8 @@
                                                     <search-query :datalist="invCorpData" :selectValue="form.invCorpCnName"
                                                                   :clearable="true"
                                                                   :buttonIf="false" :remote="true" :filterable="true"
-                                                                  placeholder="请输入开票单位"
-                                                                  :forParameter="{ key: 'id', label: 'cnName', value: 'cnName' }"
+                                                                  placeholder="请输入开票单位" :joinData="true"
+                                                                  :forParameter="{ key: 'id', label: 'cnName', value: 'cnName',short: 'shortName' }"
                                                                   @corpChange="corpChange($event, 'invCorpCnName')"
                                                                   @remoteMethod="invcorpsinvoiceheaderListfun"
                                                                   @corpFocus="invcorpsinvoiceheaderListfun">

+ 719 - 0
src/views/iosBasicData/fininvoicesOutput/assembly/searchPopup.vue

@@ -0,0 +1,719 @@
+<template>
+    <div>
+        <el-dialog title="选择数据" :visible.sync="dialogVisible" append-to-body width="80%" :before-close="handleClose"
+            :close-on-click-modal="false">
+            <avue-crud :option="option" :table-loading="loading" :data="data.filter(item=>!item.disabled)" ref="crud" id="out-table"
+                :header-cell-class-name="headerClassName" @search-change="searchChange" @search-reset="searchReset"
+                @selection-change="selectionChange" :search.sync="query" :summary-method="summaryMethod">
+                <template slot="menuLeft">
+                    <div style="display:flex;">
+                        <el-tabs v-model="activeName" @tab-click="handleClick">
+                            <el-tab-pane label="查看数据" name="query" />
+                            <el-tab-pane label="已选择数据" name="pick" />
+                        </el-tabs>
+                        <div style="margin: 10px 0 0 10px;">
+                            <el-button v-if="activeName == 'query'" type="success" @click="allPick"
+                                size="mini">批量选择</el-button>
+                            <el-button v-if="activeName == 'pick'" type="danger" @click="allCancel"
+                                size="mini">全部取消</el-button>
+                            <span style="font-size: 18px;font-weight: 600;margin-left: 10px;">
+                                <span style="color: #67C23A;margin-right: 10px;">
+                                    本币:{{ amountSubSum }}元
+                                </span>
+                                <span style="color: #E6A23C;">
+                                    外币:{{ amountSubUsdSum }}元
+                                </span>
+                            </span>
+                        </div>
+                    </div>
+                </template>
+                <tempalte slot="currentAmountCNY" slot-scope="{ row }">
+                    <el-input-number v-if="editSave" v-model="row.currentAmountCNY" @change="armbChange(row)"
+                        :controls="false" placeholder="请输入 本次对账CNY" size="mini" style="width: 100%;"
+                        :disabled="row.curCode != getLocalCurrency() || settlementdistar || !(form.status == '0' || form.status == '4' || form.status == null)"></el-input-number>
+                    <span v-else>{{ row.currentAmountCNY }}</span>
+                </tempalte>
+                <tempalte slot="currentAmountUSD" slot-scope="{ row }">
+                    <el-input-number v-if="editSave" v-model="row.currentAmountUSD" @change="ausdChange(row)"
+                        :controls="false" placeholder="请输入 本次对账USD" size="mini" style="width: 100%;"
+                        :disabled="row.curCode == getLocalCurrency() || settlementdistar || !(form.status == '0' || form.status == '4' || form.status == null)"></el-input-number>
+                    <span v-else>{{ row.currentAmountUSD }}</span>
+                </tempalte>
+                <template slot="menu" slot-scope="{ row, index }">
+                    <el-button v-if="activeName == 'query'" size="small" type="text" :disabled="row.disabled"
+                        @click="pick(row, index)">选择</el-button>
+                    <el-button v-if="activeName == 'pick'" size="small" type="text" :disabled="!row.disabled"
+                        @click="cancel(row, index)">取消</el-button>
+                </template>
+            </avue-crud>
+            <span slot="footer" class="dialog-footer">
+                <el-button @click="dialogVisible = false" size="mini">取 消</el-button>
+                <el-button type="primary" @click="submit" size="mini">导 入</el-button>
+            </span>
+        </el-dialog>
+    </div>
+</template>
+
+<script>
+import {
+    finstlbillsGetByDetail,
+    finstlbillsitemsRemove,
+    finstlbillslistAccBillV1,
+} from '@/api/iosBasicData/finstlbills'
+import {
+    fininvoicesDetail,
+    fininvoicesSubmit,
+    fininvoicesitemsRemove,
+    generateFinInvoicesDetail,
+    fininvoiceitemdetailRemove,
+    revokeFinInvoicesDetail,
+    fininvoiceitemdetailSubmit,
+    fininvoicesGenerateFinInvoices,
+    fininvoicesConfirmFinInvoices, fininvoicesRevokeFinInvoices
+} from "@/api/iosBasicData/fininvoices";
+import _ from "lodash";
+export default {
+    props: {
+        form: {
+            type: Object,
+            // eslint-disable-next-line vue/require-valid-default-prop
+            default: {},
+        },
+        tableData: {
+            type: Array,
+            // eslint-disable-next-line vue/require-valid-default-prop
+            default: [],
+        },
+    },
+    data() {
+        return {
+            amountSubSum: 0,
+            amountSubUsdSum: 0,
+            activeName: 'query',
+            editSave: true,
+            selectionList: [],
+            data: [],
+            pickData: [],
+            queryData: [],
+            query: {
+                mblno: null,
+                hblno: null,
+                dc: 'C',
+                businessDateStart: null,
+                businessDateEnd: null,
+            },
+            type: null,
+            dialogVisible: false,
+            loading: false,
+            option: {
+                height: 400,
+                calcHeight: 30,
+                searchShow: true,
+                searchMenuSpan: 24,
+                searchIcon: true,
+                searchIndex: 3,
+                border: true,
+                index: true,
+                addBtn: false,
+                viewBtn: false,
+                delBtn: false,
+                editBtn: false,
+                refreshBtn: false,
+                columnBtn: false,
+                menu: true,
+                menuWidth: 60,
+                // header: false,
+                tip: false,
+                selection: true,
+                showSummary: true,
+                selectable: (row, index) => {
+                    return !row.disabled
+                },
+                column: [
+                    {
+                        label: "MB/L NO",
+                        prop: "mblno",
+                        width: "100",
+                        search: true,
+                        searchValue: this.form.mblno,
+                        overHidden: true,
+                    },
+                    {
+                        label: "HB/L NO",
+                        prop: "hblno",
+                        width: "100",
+                        search: true,
+                        searchValue: this.form.hblno,
+                        overHidden: true,
+                    },
+                    {
+                        label: "收/付",
+                        prop: "dc",
+                        width: "60",
+                        search: true,
+                        searchValue: this.form.dc,
+                        type: 'select',
+                        dicData: [{
+                            label: '全部',
+                            value: null
+                        }, {
+                            label: '收',
+                            value: 'D'
+                        }, {
+                            label: '付',
+                            value: 'C'
+                        }],
+                        overHidden: true,
+                    },
+                    {
+                        label: "ETD",
+                        prop: "etd",
+                        width: "100",
+                        overHidden: true,
+                    },
+                    {
+                        label: "费用名称",
+                        prop: "feeCnName",
+                        width: "100",
+                        search: true,
+                        searchValue: this.form.feeCnName,
+                        overHidden: true,
+                    },
+                    {
+                        label: "本次本币",
+                        prop: "currentAmountCNY",
+                        width: "80",
+                        overHidden: true,
+                    },
+                    {
+                        label: "本次外币",
+                        prop: "currentAmountUSD",
+                        width: "80",
+                        overHidden: true,
+                    },
+                    {
+                        label: "币别",
+                        prop: "currentCurCode",
+                        width: "80",
+                        overHidden: true,
+                    },
+                    {
+                        label: "汇率",
+                        prop: "currentExrate",
+                        width: "80",
+                        overHidden: true,
+                    },
+                    {
+                        label: "客户名称",
+                        prop: "corpCnName",
+                        width: "100",
+                        overHidden: true,
+                    },
+                    {
+                        label: "ETA",
+                        prop: "eta",
+                        width: "100",
+                        overHidden: true,
+                    },
+                    {
+                        label: "起运港",
+                        prop: "polCnName",
+                        width: "100",
+                        overHidden: true,
+                    },
+                    {
+                        label: "目的港",
+                        prop: "podCnName",
+                        width: "100",
+                        overHidden: true,
+                    },
+                    {
+                        label: "船名",
+                        prop: "vesselCnName",
+                        width: "100",
+                        overHidden: true,
+                        search: true,
+                        searchValue: this.form.vesselCnName,
+                        type: 'select',
+                        filterable: true,
+                        remote: true,
+                        dicUrl: "/api/blade-los/bvessels/list?cnName={{key}}",
+                        props: {
+                            label: 'cnName',
+                            value: 'cnName',
+                            res: 'data.records'
+                        },
+                    },
+                    {
+                        label: "航次",
+                        prop: "voyageNo",
+                        width: "100",
+                        overHidden: true,
+                        search: true,
+                        searchValue: this.form.voyageNo,
+                    },
+                    {
+                        label: "箱型箱量",
+                        prop: "quantityCntrDescr",
+                        width: "100",
+                        overHidden: true,
+                    },
+                    {
+                        label: "所属公司",
+                        prop: "branchName",
+                        width: "100",
+                        overHidden: true,
+                    },
+                    {
+                        label: "业务开始",
+                        prop: "businessDateStart",
+                        width: "100",
+                        search: true,
+                        type: "date",
+                        format: "yyyy-MM-dd",
+                        valueFormat: "yyyy-MM-dd 00:00:00",
+                        searchValue: this.form.businessDateStart,
+                        hide: true,
+                        showColumn: false,
+                        overHidden: true,
+                    },
+                    {
+                        label: "业务结束",
+                        prop: "businessDateEnd",
+                        width: "100",
+                        search: true,
+                        type: "date",
+                        format: "yyyy-MM-dd",
+                        valueFormat: "yyyy-MM-dd 00:00:00",
+                        searchValue: this.form.businessDateEnd,
+                        hide: true,
+                        showColumn: false,
+                        overHidden: true,
+                    },
+                ]
+            },
+        }
+    },
+    async created() {
+        // this.option = await this.getColumnData(this.getColumnName(309.6), this.optionBack);
+    },
+    methods: {
+        // 合计计算
+        summaryMethod({ columns, data }) {
+            const sums = [];
+            if (columns.length > 0) {
+                columns.forEach((item, index) => {
+                    let prop = item.property
+                    sums[0] = '合计'
+                    if (['currentAmountCNY', 'currentAmountUSD'].includes(prop)) {
+                        let values = this.selectionList.map(item => Number(item[prop] || 0));
+                        let all = values.length !== 0 ? sums[index] = values.reduce((a, b) => {
+                            return a + b;
+                        }) : 0
+                        if (prop == 'currentAmountCNY' || prop == 'currentAmountUSD') {
+                            sums[index] = all
+                        }
+                    }
+                })
+            }
+            return sums;
+        },
+        handleClick(val) {
+            if (this.activeName == 'query') {
+                this.data = this.queryData
+            }
+            if (this.activeName == 'pick') {
+                this.data = this.pickData
+            }
+        },
+        allPick() {
+            if (this.selectionList.length == 0) {
+                return this.$message.error("请选择数据");
+            }
+            let list = this.deepClone(this.selectionList)
+            list.forEach((item, index) => {
+                this.$set(item, 'disabled', true)
+                this.pickData.push(item)
+                this.data = this.data.filter(row => row.accBillNo != item.accBillNo);
+                this.queryData = this.data
+            })
+        },
+        allCancel() {
+            this.pickData.forEach((item, index) => {
+                this.$set(item, 'disabled', false)
+                this.queryData.push(item)
+                this.data = this.data.filter(row => row.accBillNo != item.accBillNo);
+                this.pickData = this.data
+            })
+        },
+        pick(row, index) {
+            this.$set(row, 'disabled', true)
+            this.data.splice(index, 1)
+            // this.queryData.splice(index, 1)
+            this.pickData.push(row)
+        },
+        cancel(row, index) {
+            this.$set(row, 'disabled', false)
+            if (!this.queryData.find(item => item.accBillNo == row.accBillNo)) {
+                this.queryData.push(row)
+            }
+            this.pickData.splice(index, 1)
+        },
+        armbChange(row) {
+            if (row.dc == 'C') {
+                if (Number(row.amount - (row.appliedAmount - row.appliedAmountStl) - row.stlTtlAmount) > 0) {
+                    if (Number(row.currentAmountCNY) < 0) {
+                        row.currentAmountCNY = 0
+                        return this.$message.error("本次对账金额不能输入负数");
+                    }
+                    if (Number(row.currentAmountCNY) > Number(row.amount - (row.appliedAmount - row.appliedAmountStl) - row.stlTtlAmount)) {
+                        row.currentAmountCNY = 0
+                        return this.$message.error("本次对账金额不能超过未对账金额");
+                    }
+                }
+                if (Number(row.amount - (row.appliedAmount - row.appliedAmountStl) - row.stlTtlAmount) < 0) {
+                    if (Number(row.currentAmountCNY) >= 0) {
+                        row.currentAmountCNY = Number(row.amount - (row.appliedAmount - row.appliedAmountStl) - row.stlTtlAmount)
+                        return this.$message.error("本次对账金额不能输入非负数");
+                    }
+                    if (Number(row.currentAmountCNY) < Number(row.amount - (row.appliedAmount - row.appliedAmountStl) - row.stlTtlAmount)) {
+                        row.currentAmountCNY = Number(row.amount - (row.appliedAmount - row.appliedAmountStl) - row.stlTtlAmount)
+                        return this.$message.error("本次对账金额不能超过未对账金额");
+                    }
+                }
+            }
+            if (row.dc == 'D') {
+                if (Number(row.amount - row.stlTtlAmount) > 0) {
+                    if (Number(row.currentAmountCNY) < 0) {
+                        row.currentAmountCNY = 0
+                        return this.$message.error("本次对账金额不能输入负数");
+                    }
+                    if (Number(row.currentAmountCNY) > Number(row.amount - row.stlTtlAmount)) {
+                        row.currentAmountCNY = 0
+                        return this.$message.error("本次对账金额不能超过未对账金额");
+                    }
+                }
+                if (Number(row.amount - row.stlTtlAmount) < 0) {
+                    if (Number(row.currentAmountCNY) >= 0) {
+                        row.currentAmountCNY = Number(row.amount - row.stlTtlAmount)
+                        return this.$message.error("本次对账金额不能输入非负数");
+                    }
+                    if (Number(row.currentAmountCNY) < Number(row.amount - row.stlTtlAmount)) {
+                        row.currentAmountCNY = Number(row.amount - row.stlTtlAmount)
+                        return this.$message.error("本次对账金额不能超过未对账金额");
+                    }
+                }
+            }
+        },
+        ausdChange(row) {
+            if (row.dc == 'C') {
+                if (Number(row.amount - (row.appliedAmount - row.appliedAmountStl) - row.stlTtlAmount) > 0) {
+                    if (Number(row.currentAmountUSD) < 0) {
+                        row.currentAmountUSD = 0
+                        return this.$message.error("本次对账金额不能输入负数");
+                    }
+                    if (Number(row.currentAmountUSD) > Number(row.amount - (row.appliedAmount - row.appliedAmountStl) - row.stlTtlAmount)) {
+                        row.currentAmountUSD = 0
+                        return this.$message.error("本次对账金额不能超过未对账金额");
+                    }
+                }
+                if (Number(row.amount - (row.appliedAmount - row.appliedAmountStl) - row.stlTtlAmount) < 0) {
+                    if (Number(row.currentAmountUSD) >= 0) {
+                        row.currentAmountUSD = Number(row.amount - (row.appliedAmount - row.appliedAmountStl) - row.stlTtlAmount)
+                        return this.$message.error("本次对账金额不能输入非负数");
+                    }
+                    if (Number(row.currentAmountUSD) < Number(row.amount - (row.appliedAmount - row.appliedAmountStl) - row.stlTtlAmount)) {
+                        row.currentAmountUSD = Number(row.amount - (row.appliedAmount - row.appliedAmountStl) - row.stlTtlAmount)
+                        return this.$message.error("本次对账金额不能超过未对账金额");
+                    }
+                }
+            }
+            if (row.dc == 'D') {
+                if (Number(row.amount - row.stlTtlAmount) > 0) {
+                    if (Number(row.currentAmountUSD) < 0) {
+                        row.currentAmountUSD = 0
+                        return this.$message.error("本次对账金额不能输入负数");
+                    }
+                    if (Number(row.currentAmountUSD) > Number(row.amount - row.stlTtlAmount)) {
+                        row.currentAmountUSD = 0
+                        return this.$message.error("本次对账金额不能超过未对账金额");
+                    }
+                }
+                if (Number(row.amount - row.stlTtlAmount) < 0) {
+                    if (Number(row.currentAmountUSD) >= 0) {
+                        console.log(row.amount - row.stlTtlAmount)
+                        row.currentAmountUSD = Number(row.amount - row.stlTtlAmount)
+                        return this.$message.error("本次对账金额不能输入非负数");
+                    }
+                    if (Number(row.currentAmountUSD) < Number(row.amount - row.stlTtlAmount)) {
+                        row.currentAmountUSD = Number(row.amount - row.stlTtlAmount)
+                        return this.$message.error("本次对账金额不能超过未对账金额");
+                    }
+                }
+            }
+        },
+        selectionChange(list) {
+            this.selectionList = list
+        },
+        openDialog() {
+            this.data = []
+            this.queryData = []
+            this.pickData = []
+            this.dialogVisible = true
+            this.activeName='query'
+            // this.query = this.deepClone(this.form)
+
+            setTimeout(() => {
+                this.query = {
+                    mblno: this.form.mblno,
+                    hblno: this.form.hblno,
+                    dc: this.form.dc,
+                    businessDateStart: this.form.businessDateStart,
+                    businessDateEnd: this.form.businessDateEnd,
+                    voyageNo: this.form.voyageNo,
+                    vesselCnName: this.form.vesselCnName,
+                }
+            }, 200);
+            setTimeout(() => {
+                this.finstlbillslistAccBillV1fun()
+            }, 200);
+        },
+        searchChange(params, done) {
+            this.activeName = 'query'
+            this.finstlbillslistAccBillV1fun()
+            done();
+        },
+        searchReset() {
+            this.query = {
+                mblno: null,
+                hblno: null,
+                dc: null,
+                businessDateStart: null,
+                businessDateEnd: null,
+            }
+        },
+        // 检索接口
+        finstlbillslistAccBillV1fun() {
+            let obj = {}
+            //开票日期
+            if (this.form.invoiceDate) {
+                obj.invoiceDate = this.form.invoiceDate.slice(0, 10) + ' 00:00:00'
+            }
+            // 业务日期
+            if (this.form.businessDateStart) {
+                obj.businessDateStart = this.form.businessDateStart.slice(0, 10) + ' 00:00:00'
+            }
+            if (this.form.businessDateEnd) {
+                obj.businessDateEnd = this.form.businessDateEnd.slice(0, 10) + ' 00:00:00'
+            }
+
+            obj.type = '3'
+            obj.branchId = this.form.branchId
+            obj.branchName = this.form.branchName
+            obj.billNo = this.form.bookingNo // 账单号
+            obj.businessBillNo = this.form.businessNo // 业务编号
+            obj.mblno = this.form.mblno // 主单编号
+            obj.hblno = this.form.hblno // 分单编号
+            obj.bookingNo = this.form.bookingNo // 订舱号(BOOK NO)
+            obj.curCode = this.form.curCode // 币种
+            obj.businessType = this.form.businessTypes ? this.form.businessTypes.join(',') : '' // 业务类型
+            obj.feeCnName = this.form.feeCnName ? this.form.feeCnName.join(',') : ''
+            obj.dc = this.form.dc
+            obj = { ...Object.assign(obj, this.query) }
+            // 判断是否有对账单号
+            if (this.form.checkNo) {
+                obj.corpId = this.form.corpId // 结算单位
+                obj.checkNo = this.form.checkNo // CHK NO 对账单号
+                // obj.dc='D'
+                finstlbillsGetByDetail(obj).then(res => {
+                    let arr = res.data.data.finStlBillsItemsList.map((item, index) => {
+                        item.lineNo = Number(index) + 1 // 行号
+                        item.currentCurCode = item.curCode
+                        item.currentExrate = item.exrate
+                        if (item.currentCurCode == this.getLocalCurrency()) {
+                            // 本次发票金额
+                            item.currentAmountCNY = item.appliedInvoiceCurrentAmount
+                        } else {
+                            // 本次发票金额
+                            item.currentAmountUSD = item.appliedInvoiceCurrentAmount
+                        }
+                        delete item.id
+                        return item
+                    })
+                    const itemsWithId = this.data.filter(item => item.hasOwnProperty('id'));
+                    let arrIds = itemsWithId.map(item => item.id) // 获取id 数据
+                    // 有id 的处理
+                    if (itemsWithId.length != 0) {
+                        finstlbillsitemsRemove(arrIds.join(',')).then(res => {
+                            this.$message.success('操作成功')
+                        })
+                    }
+                    if (arr.length == 0) {
+                        this.$message.warning('当前检索暂无数据!')
+                    }
+                    this.queryData = arr
+                    this.data = arr
+                })
+            } else {
+                obj.billNo = this.form.businessNo // 业务编号
+                obj.corpCnName = this.form.corpId // 结算单位
+                obj.checkBillNo = this.form.checkNo // 对账单号
+                // obj.dc='D'
+                finstlbillslistAccBillV1(obj).then(res => {
+                    let arr = res.data.data.map((item, index) => {
+                        console.log(item)
+                        item.lineNo = Number(index) + 1 // 行号
+                        item.accBillId = item.id
+                        item.accBillNo = item.billNo
+                        item.billNo = item.businessBillNo
+                        item.accDate = item.createTime
+                        item.currentCurCode = item.curCode
+                        item.currentExrate = item.exrate
+                        item.dc = item.accountDc
+                        if (item.currentCurCode == this.getLocalCurrency()) {
+                            // 本次发票金额
+                            item.currentAmountCNY = item.appliedInvoiceCurrentAmount
+                        } else {
+                            // 本次发票金额
+                            item.currentAmountUSD = item.appliedInvoiceCurrentAmount
+                        }
+                        delete item.id
+                        return item
+                    })
+                    const itemsWithId = this.data.filter(item => item.hasOwnProperty('id'));
+                    let arrIds = itemsWithId.map(item => item.id) // 获取id 数据
+                    // 有id 的处理
+                    if (itemsWithId.length != 0) {
+                        fininvoicesitemsRemove(arrIds.join(',')).then(res => {
+                            this.$message.success('操作成功')
+                        })
+                    }
+                    if (arr.length == 0) {
+                        this.$message.warning('当前检索暂无数据!')
+                    }
+                    this.queryData = arr
+                    this.data = arr
+                }).finally(() => {
+                    this.$nextTick(() => {
+                        this.$refs.crud.doLayout();
+                    });
+                    this.loading = false;
+                })
+            }
+        },
+        //debounce为了防止重复点
+        submit: _.debounce(function () {
+            if (this.pickData.length == 0) {
+                return this.$message.error('请选择数据')
+            }
+            this.$emit('importData', this.pickData)
+            this.dialogVisible = false
+        }, 300, {
+            'leading': true,
+            'trailing': false
+        }),
+        //自定义列保存
+        async saveColumn(ref, option, optionBack, code) {
+            /**
+             * 已定义全局方法,直接使用,saveColumnData保存列数据方法,参数传值(表格名称,当前表格的option数据)
+             * 已定义全局方法,直接使用,getColumnName方法用来获取枚举值,参数根据自己定义的code值获取中文名
+             * 一定要执行异步操作,要等接口成功返回,才能执行下一行代码
+             */
+            const inSave = await this.saveColumnData(this.getColumnName(code), this[option]);
+            if (inSave) {
+                this.$message.success("保存成功");
+                //关闭窗口
+                this.$refs[ref].$refs.dialogColumn.columnBox = false;
+                this.searchReset()
+            }
+        },
+        //自定义列重置
+        async resetColumn(ref, option, optionBack, code) {
+            this[option] = this[optionBack];
+            const inSave = await this.delColumnData(this.getColumnName(code), this[optionBack]);
+            if (inSave) {
+                this.$message.success("重置成功");
+                this.$refs[ref].$refs.dialogColumn.columnBox = false;
+            }
+        },
+
+        // 更改表格颜色
+        headerClassName(tab) {
+            //颜色间隔
+            let back = ""
+            if (tab.columnIndex >= 0 && tab.column.level === 1) {
+                if (tab.columnIndex % 2 === 0) {
+                    back = "back-one"
+                } else if (tab.columnIndex % 2 === 1) {
+                    back = "back-two"
+                }
+            }
+            return back;
+        },
+
+    },
+    watch: {
+        data: {
+            handler(val) {
+                val.forEach(row => {
+                    if (this.tableData.some(item => item.accBillNo == row.accBillNo)) {
+                        row.disabled = true
+                    }
+                    if (this.pickData.some(item => item.accBillNo == row.accBillNo)) {
+                        row.disabled = true
+                    }
+                })
+            },
+            deep: true,
+            immediate: true
+        },
+        pickData: {
+            handler(val) {
+                this.amountSubSum = 0
+                this.amountSubUsdSum = 0
+                let CSUMRMB = 0
+                let CSUMUSD = 0
+                let DSUMRMB = 0
+                let DSUMUSD = 0
+                val.forEach(e => {
+                    if (e.dc == 'C') {
+                        CSUMRMB += Number(e.currentAmountCNY ? e.currentAmountCNY : 0)
+                        CSUMUSD += Number(e.currentAmountUSD ? e.currentAmountUSD : 0)
+                    }
+                    if (e.dc == 'D') {
+                        DSUMRMB += Number(e.currentAmountCNY ? e.currentAmountCNY : 0)
+                        DSUMUSD += Number(e.currentAmountUSD ? e.currentAmountUSD : 0)
+                    }
+                })
+                this.amountSubSum = Number(CSUMRMB - DSUMRMB).toFixed(2)
+                this.amountSubUsdSum = Number(CSUMUSD - DSUMUSD).toFixed(2)
+
+            },
+            deep: true,
+            immediate: true
+        },
+    },
+}
+</script>
+
+<style scoped>
+::v-deep#out-table .back-one {
+    background: #ecf5ff !important;
+    text-align: center;
+    padding: 4px 0;
+}
+
+::v-deep#out-table .back-two {
+    background: #ecf5ff !important;
+    text-align: center;
+    padding: 4px 0;
+}
+
+::v-deep .el-col-md-8 {
+    width: 24.33333%;
+}
+
+::v-deep .el-dialog__body {
+    padding: 6px 20px !important;
+}
+</style>

+ 26 - 6
src/views/iosBasicData/fininvoicesOutput/fininvoicesDetails.vue

@@ -64,8 +64,8 @@
                                                         :selectValue="form.invCorpCnName" :clearable="true"
                                                         :disabled="editSave || !form.corpId || (tableData.length && invoicestype != 1)"
                                                         :buttonIf="false" :remote="true" :filterable="true"
-                                                        placeholder="请选择开票单位"
-                                                        :forParameter="{ key: 'id', label: 'invoiceHeader', value: 'id' }"
+                                                        placeholder="请选择开票单位" :joinData="true"
+                                                        :forParameter="{ key: 'id', label: 'cnName', value: 'cnName',short: 'shortName' }"
                                                         @corpChange="corpChange($event, 'invCorpCnName')"
                                                         @remoteMethod="invcorpsinvoiceheaderListfun"
                                                         @corpFocus="invcorpsinvoiceheaderListfun">
@@ -455,6 +455,10 @@
                                         :disabled="editSave || (tableData.length > 0 && appendType == '检索')" plain
                                         @click="finstlbillslistAccBillV1fun(appendType)">提取费用
                                     </el-button>
+                                    <el-button size="small" type="primary"
+                                        :disabled="editSave || (tableData.length > 0 && appendType == '检索')"
+                                        :loading="saveLoading" @click="quickSearch">快捷检索
+                                    </el-button>
                                     <el-button size="small" :disabled="tableData.length > 0" @click="ResetFilter">重置条件
                                     </el-button>
                                     <el-button icon="el-icon-arrow-down" type="text" size="small" v-if="!showForm"
@@ -577,8 +581,7 @@
                 </avue-crud>
             </div>
         </el-dialog>
-
-
+        <search-popup ref="searchPopup" :form="form" :tableData="tableData" @importData="importData"></search-popup>
     </div>
 </template>
 
@@ -607,8 +610,9 @@ import { getCurrentDate } from "@/util/date";
 import dicSelect from "@/components/dicSelect/main";
 import { finstlbillslistAccBillByCorp } from '@/api/iosBasicData/finstlbills';
 import { getMonthDate, getYearDate } from "@/util/date";
+import searchPopup from "./assembly/searchPopup.vue";
 export default {
-    components: { SearchQuery, fininvoicesitems, fininvoiceitemdetail, dicSelect },
+    components: { searchPopup,SearchQuery, fininvoicesitems, fininvoiceitemdetail, dicSelect },
     data() {
         return {
             amountSubSum: 0,
@@ -766,6 +770,9 @@ export default {
         upDate(list) {
             this.form.fileList = list
         },
+        importData(list) {
+            this.tableData = this.tableData.concat(list)
+        },
         dicChange(name, row) {
             if (name == 'branchName') {
                 if (row) {
@@ -1429,7 +1436,20 @@ export default {
                     })
                 }
             })
-
+        },
+        quickSearch() {
+            this.$refs.form.validate((valid) => {
+                if (!valid) return
+                // 判断是否有对账单位
+                if (!this.form.corpId &&(this.form.businessNo || this.form.mblno || this.form.checkNo)) {
+                    this.finstlbillslistAccBillByCorpfun()
+                } else {
+                    if (!this.form.corpId) {
+                        return this.$message.warning('请填写对账单位')
+                    }
+                    this.$refs.searchPopup.openDialog(this.appendType)
+                }
+            })
         },
         // 保存接口
         fininvoicesSubmitfun(obj) {

+ 1 - 0
src/views/iosBasicData/fininvoicesOutput/index.vue

@@ -999,6 +999,7 @@ export default {
         // 新建发票
         newbillFun() {
             this.isShow = false;
+            this.editSave=false
             this.$store.commit("IN_FINOUT_DETAIL");
         },
         toAddEdit() {

+ 1 - 0
src/views/ow/contract/detailsPage.vue

@@ -517,6 +517,7 @@ export default {
   methods: {
     verifyChange(name, row) {
       if (row[name]) {
+        row[name] = row[name].replace(/\s+/g, '')
         getAccurate({ accurate: row[name] }).then(res => {
           if (res.data.data.records.length == 0) {
             const regex = /^([a-zA-Z]{4})([0-9]{7})$/;

+ 323 - 7
src/views/ow/owPut/detailsPage.vue

@@ -40,7 +40,7 @@
       </div>
     </div>
     <div style="margin-top: 50px">
-      <el-tabs type="border-card">
+      <el-tabs type="border-card" v-model="activeName" @tab-click="handleClick">
         <el-tab-pane label="基础信息">
           <trade-card title="基础信息">
             <avue-form :option="optionForm" v-model="form" ref="form">
@@ -61,7 +61,7 @@
                 <container-number v-model="form.containerNumber" placeholder="放箱号" label="containerNumber"
                   :url="'/blade-los/putbox/selectContainerNumber?boxType=' + (form.boxTypeQuantityOne ? form.boxTypeQuantityOne : '') + '&polId=' + (form.polId ? form.polId : '') + '&podId=' + (form.podId ? form.podId : '') + '&polStationId=' + (form.polStationId ? form.polStationId : '')"
                   @selectChange="dicChange('containerNumber', $event)" :titleDialog="放箱号"
-                  :disabled="editDisabled ||form.whetherEnable == '是'"></container-number>
+                  :disabled="editDisabled || form.whetherEnable == '是'"></container-number>
               </tempalte>
               <!-- <tempalte slot="polStationCname">
                 <dic-select v-model="form.polStationCname" placeholder="起运港提/送箱场站" key="id" label="cnName" res="records"
@@ -80,7 +80,7 @@
                 <dic-select v-model="form.podStationCname" placeholder="目的港还箱场站" key="id" label="cnName" res="records"
                   url="/blade-los/bcorps/selectList?current=1&size=5&corpTypeName=场站&status=0" :filterable="true"
                   :remote="true" dataName="cnName" @selectChange="dicChange('podStationCname', $event)"
-                  :disabled="editDisabled ||  (fixData && form.whetherEnable == '是')" :slotRight="true"
+                  :disabled="editDisabled || (fixData && form.whetherEnable == '是')" :slotRight="true"
                   rightLabel="code"></dic-select>
               </tempalte>
               <tempalte slot="polCname">
@@ -96,13 +96,13 @@
                   :url="'/blade-los/bcorps/selectList?current=1&size=5&corpTypeName=场站&status=0&ids=' + (form.cyText ? form.cyText : '')"
                   :filterable="true" :remote="true" dataName="cnName"
                   @selectChange="dicChange('polStationCname', $event)"
-                  :disabled="editDisabled || !form.polCname ||  (fixData && form.whetherEnable == '是')"></dic-select>
+                  :disabled="editDisabled || !form.polCname || (fixData && form.whetherEnable == '是')"></dic-select>
               </tempalte>
               <tempalte slot="podCname">
                 <dic-select v-model="form.podCname" placeholder="港口" label="code"
                   url="/blade-los/bports/listAll?status=0" :filterable="true" :multiple="true" :collapseTags="true"
                   dataType="string" @selectChange="dicChange('podCname', $event)"
-                  :disabled="editDisabled ||form.whetherEnable == '是'" :slotRight="true"
+                  :disabled="editDisabled || form.whetherEnable == '是'" :slotRight="true"
                   rightLabel="code"></dic-select>
               </tempalte>
               <template slot="boxTypeQuantityOne">
@@ -230,6 +230,30 @@
             </avue-form>
           </trade-card>
         </el-tab-pane>
+        <el-tab-pane label="Pick up" name="pickUp">
+          <avue-crud :option="pickOption" :data="pickData" id="out-table" ref="crud5"
+            :header-cell-class-name="headerClassName" :row-style="{ height: '20px' }" :cell-style="{ padding: '0px' }"
+            :search.sync="pickSearch" @search-change="searchChange" @search-reset="searchReset"
+             @selection-change="pickChange"@resetColumn="resetColumn('crud5', 'pickOption', 'pickOptionBack', 518)"
+            @saveColumn="saveColumn('crud5', 'pickOption', 'pickOptionBack', 518)">
+            <template slot="menuLeft">
+              <el-button type="info" plain size="small" :disabled="editDisabled || selecPickList.length == 0"
+                @click="allClick('合并生成')">合并生成费用</el-button>
+            </template>
+          </avue-crud>
+        </el-tab-pane>
+        <el-tab-pane label="Per diem" name="perDiem">
+          <avue-crud :option="perOption" :data="perData" id="out-table" ref="crud6"
+            :header-cell-class-name="headerClassName" :row-style="{ height: '20px' }" :cell-style="{ padding: '0px' }"
+            :search.sync="perSearch" @search-change="searchChange2" @search-reset="searchReset2"
+            @selection-change="perChange" @resetColumn="resetColumn('crud6', 'perOption', 'perOptionBack', 519)"
+            @saveColumn="saveColumn('crud6', 'perOption', 'perOptionBack', 519)">
+            <template slot="menuLeft">
+              <el-button type="info" plain size="small" :disabled="editDisabled || selecPerList.length == 0"
+                @click="allClick('合并生成2')">合并生成费用</el-button>
+            </template>
+          </avue-crud>
+        </el-tab-pane>
         <el-tab-pane label="费用信息">
           <el-card
             v-show="roleName.indexOf('admin') != -1 || roleName.indexOf('应付修改') != -1 ? true : roleName.indexOf('应付查看') != -1"
@@ -615,7 +639,9 @@ import {
   pleaseVerifyCost,
   batchUpdatePodStation,
   getAccurate,
-  synchronousPutBoxData
+  synchronousPutBoxData,
+  feeList,
+  mergeGenerateCost
 } from "@/api/boxManagement/buyContainer";
 import dicSelect from "@/components/dicSelect/main";
 import containerNumber from "@/components/dicSelect/containerNumber";
@@ -640,6 +666,13 @@ export default {
   name: "detailsPage",
   data() {
     return {
+      selecPickList: [],
+      selecPerList: [],
+      pickSearch: {},
+      perSearch: {},
+      activeName: null,
+      pickData: [],
+      perData: [],
       podDialog: false,
       podForm: {},
       podOption: {
@@ -1459,6 +1492,177 @@ export default {
         }
         ]
       },
+      pickOption: {},
+      pickOptionBack: {
+        maxHeight: '250',
+        calcHeight: 30,
+        searchMenuSpan: 12,
+        border: true,
+        addBtn: false,
+        viewBtn: false,
+        editBtn: false,
+        delBtn: false,
+        refreshBtn: false,
+        align: 'center',
+        menu: false,
+        column: [
+          {
+            label: "Customer",
+            prop: "corpCnName",
+            overHidden: true
+          },
+          {
+            label: "Release Ref. No.",
+            prop: "containerNumber",
+            overHidden: true
+          },
+          {
+            label: "Container Number",
+            prop: "cntrNo",
+            search: true,
+            searchLabelWidth: 120,
+            overHidden: true
+          },
+          {
+            label: "Type/Size",
+            prop: "unitNo",
+            overHidden: true
+          },
+          {
+            label: "On hire date",
+            prop: "polPreAppearanceDate",
+            overHidden: true
+          },
+          {
+            label: "RATE",
+            prop: "price",
+            overHidden: true
+          },
+          {
+            label: "Charge",
+            prop: "feeCnName",
+            overHidden: true
+          },
+          {
+            label: "Currency",
+            prop: "curCode",
+            overHidden: true
+          },
+          {
+            label: "Amount",
+            prop: "amount",
+            overHidden: true
+          },
+          {
+            label: "财务日期",
+            prop: "date",
+            overHidden: true,
+            search: true,
+            hide: true,
+            type: "month",
+            format: 'yyyy-MM',
+            valueFormat: 'yyyy-MM'
+          }
+        ]
+      },
+      perOption: {},
+      perOptionBack: {
+        maxHeight: '250',
+        calcHeight: 30,
+        searchMenuSpan: 12,
+        border: true,
+        addBtn: false,
+        viewBtn: false,
+        editBtn: false,
+        delBtn: false,
+        refreshBtn: false,
+        align: 'center',
+        menu: false,
+        column: [
+          {
+            label: "Customer",
+            prop: "corpCnName",
+            overHidden: true
+          },
+          {
+            label: "Release Ref. No.",
+            prop: "containerNumber",
+            overHidden: true
+          },
+          {
+            label: "Container no.",
+            prop: "cntrNo",
+            search: true,
+            searchLabelWidth: 100,
+            overHidden: true
+          },
+          {
+            label: "Type/Size",
+            prop: "unitNo",
+            overHidden: true
+          },
+          {
+            label: "On hire date",
+            prop: "polPreAppearanceDate",
+            overHidden: true
+          },
+          {
+            label: "Off hire date",
+            prop: "polReturnDate",
+            overHidden: true
+          },
+          {
+            label: "Charge Start date",
+            prop: "storageDate",
+            overHidden: true
+          },
+          {
+            label: "Charge end date",
+            prop: "outboundDate",
+            overHidden: true
+          },
+          // {
+          //   label: "free days",
+          //   prop: "amount",
+          //   overHidden: true
+          // },
+          {
+            label: "charge days",
+            prop: "days",
+            overHidden: true
+          },
+          {
+            label: "RATE",
+            prop: "price",
+            overHidden: true
+          },
+          {
+            label: "Charge Code",
+            prop: "feeCnName",
+            overHidden: true
+          },
+          {
+            label: "Currency",
+            prop: "curCode",
+            overHidden: true
+          },
+          {
+            label: "Amount",
+            prop: "amount",
+            overHidden: true
+          },
+          {
+            label: "财务日期",
+            prop: "date",
+            overHidden: true,
+            search: true,
+            hide: true,
+            type: "month",
+            format: 'yyyy-MM',
+            valueFormat: 'yyyy-MM'
+          }
+        ]
+      },
       feedOption: {},
       feedOptionBack: {
         // height: 'auto',
@@ -2080,6 +2284,8 @@ export default {
     this.option = await this.getColumnData(this.getColumnName(471), this.optionBack);
     this.feedOption = await this.getColumnData(this.getColumnName(463), this.feedOptionBack);
     this.feecOption = await this.getColumnData(this.getColumnName(464), this.feecOptionBack);
+    this.pickOption = await this.getColumnData(this.getColumnName(518), this.pickOptionBack);
+    this.perOption = await this.getColumnData(this.getColumnName(519), this.perOptionBack);
     if (this.detailData.id) {
       // this.editButton = true
       // this.editDisabled = true
@@ -2097,6 +2303,7 @@ export default {
   methods: {
     verifyChange(name, row) {
       if (row[name]) {
+        row[name] = row[name].replace(/\s+/g, '')
         getAccurate({ accurate: row[name] }).then(res => {
           if (res.data.data.records.length == 0) {
             const regex = /^([a-zA-Z]{4})([0-9]{7})$/;
@@ -2864,7 +3071,7 @@ export default {
         }).then(() => {
           synchronousPutBoxData(this.form).then(res => {
             this.$message.success("操作成功");
-            this.fixData=true
+            this.fixData = true
             this.getDetail(this.form.id)
           })
         })
@@ -3276,6 +3483,115 @@ export default {
         this.podForm = {}
         this.podDialog = true
       }
+      if (name == '合并生成') {
+        for (let item of this.selecPickList) {
+          if (item.whetherGenerateCost == 1) {
+            return this.$message.error("请选择生成明细");
+          }
+        }
+        let obj = {
+          id: this.form.id,
+          feeCenterItemsList: this.selecPickList
+        }
+        mergeGenerateCost(obj).then(res => {
+          this.$message.success("操作成功");
+          this.getDetail(this.form.id)
+        })
+      }
+      if (name == '合并生成2') {
+        for (let item of this.selecPickList) {
+          if (item.whetherGenerateCost == 1) {
+            return this.$message.error("请选择生成明细");
+          }
+        }
+        let obj = {
+          id: this.form.id,
+          feeCenterItemsList: this.selecPerList
+        }
+        mergeGenerateCost(obj).then(res => {
+          this.$message.success("操作成功");
+          this.getDetail(this.form.id)
+        })
+      }
+    },
+    getPick() {
+      let obj = {
+        ...this.pickSearch,
+        pid: this.form.id,
+        feeType: 1
+      }
+      const loading = this.$loading({
+        lock: true,
+        text: '加载中',
+        spinner: 'el-icon-loading',
+        background: 'rgba(255,255,255,0.7)'
+      });
+      feeList(obj).then(res => {
+        this.pickData = res.data.data
+      }).finally(() => {
+        loading.close();
+      })
+    },
+    getPer() {
+      let obj = {
+        ...this.perSearch,
+        pid: this.form.id,
+        feeType: 2
+      }
+      const loading = this.$loading({
+        lock: true,
+        text: '加载中',
+        spinner: 'el-icon-loading',
+        background: 'rgba(255,255,255,0.7)'
+      });
+      feeList(obj).then(res => {
+        this.perData = res.data.data
+      }).finally(() => {
+        loading.close();
+      })
+    },
+    pickChange(list) {
+      this.selecPickList = list
+    },
+    perChange(list) {
+      this.selecPerList = list
+    },
+    handleClick(tab) {
+      console.log(this.activeName)
+      if (this.activeName == 'pickUp') {
+        if (this.form.id) {
+          this.getPick()
+        }
+      }
+      if (this.activeName == 'perDiem') {
+        if (this.form.id) {
+          this.getPer()
+        }
+      }
+    },
+    searchChange(params, done) {
+      if (this.form.id) {
+        this.getPick()
+      }
+      done();
+    },
+    searchReset() {
+      this.pickSearch = {}
+      if (this.form.id) {
+        this.getPick()
+      }
+    },
+    searchChange2(params, done) {
+      if (this.form.id) {
+        this.getPer()
+      }
+      done();
+    },
+    searchReset2() {
+      this.perSearch = {}
+      if (this.form.id) {
+        this.getPer()
+      }
     },
     podSubmit() {
       this.$refs["form3"].validate((valid, done) => {

+ 429 - 70
src/views/ow/owTask/detailsPage.vue

@@ -40,7 +40,7 @@
       </div>
     </div>
     <div style="margin-top: 50px">
-      <el-tabs type="border-card">
+      <el-tabs type="border-card" v-model="activeName" @tab-click="handleClick">
         <el-tab-pane label="基础信息">
           <trade-card title="基础信息">
             <avue-form :option="optionForm" v-model="form" ref="form">
@@ -220,6 +220,30 @@
             </avue-form>
           </trade-card>
         </el-tab-pane>
+        <el-tab-pane label="Pick up" name="pickUp">
+          <avue-crud :option="pickOption" :data="pickData" id="out-table" ref="crud5"
+            :header-cell-class-name="headerClassName" :row-style="{ height: '20px' }" :cell-style="{ padding: '0px' }"
+            :search.sync="pickSearch" @search-change="searchChange" @search-reset="searchReset"
+            @selection-change="pickChange" @resetColumn="resetColumn('crud5', 'pickOption', 'pickOptionBack', 518)"
+            @saveColumn="saveColumn('crud5', 'pickOption', 'pickOptionBack', 518)">
+            <template slot="menuLeft">
+              <el-button type="info" plain size="small" :disabled="editDisabled || selecPickList.length == 0"
+                @click="allClick('合并生成')">合并生成费用</el-button>
+            </template>
+          </avue-crud>
+        </el-tab-pane>
+        <el-tab-pane label="Per diem" name="perDiem">
+          <avue-crud :option="perOption" :data="perData" id="out-table" ref="crud6"
+            :header-cell-class-name="headerClassName" :row-style="{ height: '20px' }" :cell-style="{ padding: '0px' }"
+            :search.sync="perSearch" @search-change="searchChange2" @search-reset="searchReset2"
+            @selection-change="perChange" @resetColumn="resetColumn('crud6', 'perOption', 'perOptionBack', 519)"
+            @saveColumn="saveColumn('crud6', 'perOption', 'perOptionBack', 519)">
+            <template slot="menuLeft">
+              <el-button type="info" plain size="small" :disabled="editDisabled || selecPerList.length == 0"
+                @click="allClick('合并生成2')">合并生成费用</el-button>
+            </template>
+          </avue-crud>
+        </el-tab-pane>
         <el-tab-pane label="费用信息">
           <el-card
             v-show="roleName.indexOf('admin') != -1 || roleName.indexOf('应付修改') != -1 ? true : roleName.indexOf('应付查看') != -1"
@@ -615,7 +639,10 @@ import {
   batchUpdatePodStation,
   getAccurate,
   synchronousPutBoxData,
-  revokeCheckPleaseVerifyCost
+  revokeCheckPleaseVerifyCost,
+  feeList,
+  bfeesList,
+  mergeGenerateCost
 } from "@/api/boxManagement/buyContainer";
 import dicSelect from "@/components/dicSelect/main";
 import checkSchedule from "@/components/checkH/checkSchedule.vue";
@@ -624,13 +651,19 @@ import reports from "@/components/boxManagement/reports.vue";
 import { bcurrencyGetExrate } from "@/api/iosBasicData/rateManagement";
 import { getToken } from "@/util/auth";
 import { dateFormat } from "@/util/date";
-import { bfeesList } from "@/api/iosBasicData/bfees";
 import _ from "lodash";
 import { Header } from "element-ui";
 export default {
   name: "detailsPage",
   data() {
     return {
+      selecPickList: [],
+      selecPerList: [],
+      pickSearch: {},
+      perSearch: {},
+      activeName: null,
+      pickData: [],
+      perData: [],
       podDialog: false,
       podForm: {},
       podOption: {
@@ -1712,6 +1745,177 @@ export default {
           }
         ]
       },
+      pickOption: {},
+      pickOptionBack: {
+        maxHeight: '250',
+        calcHeight: 30,
+        searchMenuSpan: 12,
+        border: true,
+        addBtn: false,
+        viewBtn: false,
+        editBtn: false,
+        delBtn: false,
+        refreshBtn: false,
+        align: 'center',
+        menu: false,
+        column: [
+          {
+            label: "Customer",
+            prop: "corpCnName",
+            overHidden: true
+          },
+          {
+            label: "Release Ref. No.",
+            prop: "containerNumber",
+            overHidden: true
+          },
+          {
+            label: "Container Number",
+            prop: "cntrNo",
+            search: true,
+            searchLabelWidth: 120,
+            overHidden: true
+          },
+          {
+            label: "Type/Size",
+            prop: "unitNo",
+            overHidden: true
+          },
+          {
+            label: "On hire date",
+            prop: "polPreAppearanceDate",
+            overHidden: true
+          },
+          {
+            label: "RATE",
+            prop: "price",
+            overHidden: true
+          },
+          {
+            label: "Charge",
+            prop: "feeCnName",
+            overHidden: true
+          },
+          {
+            label: "Currency",
+            prop: "curCode",
+            overHidden: true
+          },
+          {
+            label: "Amount",
+            prop: "amount",
+            overHidden: true
+          },
+          {
+            label: "财务日期",
+            prop: "date",
+            overHidden: true,
+            search: true,
+            hide: true,
+            type: "month",
+            format: 'yyyy-MM',
+            valueFormat: 'yyyy-MM'
+          }
+        ]
+      },
+      perOption: {},
+      perOptionBack: {
+        maxHeight: '250',
+        calcHeight: 30,
+        searchMenuSpan: 12,
+        border: true,
+        addBtn: false,
+        viewBtn: false,
+        editBtn: false,
+        delBtn: false,
+        refreshBtn: false,
+        align: 'center',
+        menu: false,
+        column: [
+          {
+            label: "Customer",
+            prop: "corpCnName",
+            overHidden: true
+          },
+          {
+            label: "Release Ref. No.",
+            prop: "containerNumber",
+            overHidden: true
+          },
+          {
+            label: "Container no.",
+            prop: "cntrNo",
+            search: true,
+            searchLabelWidth: 100,
+            overHidden: true
+          },
+          {
+            label: "Type/Size",
+            prop: "unitNo",
+            overHidden: true
+          },
+          {
+            label: "On hire date",
+            prop: "polPreAppearanceDate",
+            overHidden: true
+          },
+          {
+            label: "Off hire date",
+            prop: "polReturnDate",
+            overHidden: true
+          },
+          {
+            label: "Charge Start date",
+            prop: "storageDate",
+            overHidden: true
+          },
+          {
+            label: "Charge end date",
+            prop: "outboundDate",
+            overHidden: true
+          },
+          // {
+          //   label: "free days",
+          //   prop: "amount",
+          //   overHidden: true
+          // },
+          {
+            label: "charge days",
+            prop: "days",
+            overHidden: true
+          },
+          {
+            label: "RATE",
+            prop: "price",
+            overHidden: true
+          },
+          {
+            label: "Charge Code",
+            prop: "feeCnName",
+            overHidden: true
+          },
+          {
+            label: "Currency",
+            prop: "curCode",
+            overHidden: true
+          },
+          {
+            label: "Amount",
+            prop: "amount",
+            overHidden: true
+          },
+          {
+            label: "财务日期",
+            prop: "date",
+            overHidden: true,
+            search: true,
+            hide: true,
+            type: "month",
+            format: 'yyyy-MM',
+            valueFormat: 'yyyy-MM'
+          }
+        ]
+      },
       feecOption: {},
       feecOptionBack: {
         // height: 'auto',
@@ -2052,6 +2256,8 @@ export default {
     this.option = await this.getColumnData(this.getColumnName(462), this.optionBack);
     this.feedOption = await this.getColumnData(this.getColumnName(463), this.feedOptionBack);
     this.feecOption = await this.getColumnData(this.getColumnName(464), this.feecOptionBack);
+    this.pickOption = await this.getColumnData(this.getColumnName(518), this.pickOptionBack);
+    this.perOption = await this.getColumnData(this.getColumnName(519), this.perOptionBack);
     if (this.detailData.id) {
       // this.editButton = true
       // this.editDisabled = true
@@ -2070,6 +2276,7 @@ export default {
   methods: {
     verifyChange(name, row) {
       if (row[name]) {
+        row[name] = row[name].replace(/\s+/g, '')
         getAccurate({ accurate: row[name] }).then(res => {
           if (res.data.data.records.length == 0) {
             const regex = /^([a-zA-Z]{4})([0-9]{7})$/;
@@ -3289,81 +3496,233 @@ export default {
       }
       if (name == '批量导入费用') {
         this.checkRate(null, this.form.effectiveDate, null, 1, this.deptId)
-        this.$confirm('是否批量导入费用?', '提示', {
-          confirmButtonText: '确定',
-          cancelButtonText: '取消',
-          type: 'warning'
-        }).then(() => {
-          console.log(this.form.dc)
-          if (this.form.dc == 'd') {
-            bfeesList(1, 10, { cnName: 'Pickup fee' }).then(res => {
-              res.data.data.records.forEach(item => {
-                if (item.cnName == 'Pickup fee') {
-                  this.form.tradingBoxItemsList.forEach(e => {
-                    this.feeCenterListD.push({
-                      pid: this.form.id,
-                      feesType: 1,
-                      dc: 'D',
-                      billType: '箱东',
-                      corpId: this.form.purchaseCompanyId,
-                      shortName: this.form.purchaseCompanyName,
-                      corpCnName: this.form.purchaseCompanyName,
-                      cntrNo: e.code,
-                      unitNo: e.boxType,
-                      curCode: item.curNo,
-                      exrate: this.getExchangeRate(item.curNo, 'D', 1),
-                      feeId: item.id,
-                      feeCode: item.code,
-                      feeCnName: item.cnName,
-                      price: this.form.pickupFee,
-                      quantity: 1,
-                      amountCNY: item.curNo == this.getLocalCurrency() ? this.form.pickupFee : 0,
-                      amountUSD: item.curNo != this.getLocalCurrency() ? this.form.pickupFee : 0,
-                      $cellEdit: true
-                    })
-                  })
-                }
-              })
-            })
-
-          } else {
-            bfeesList(1, 10, { cnName: 'Pickup fee' }).then(res => {
-              res.data.data.records.forEach(item => {
-                if (item.cnName == 'Pickup fee') {
-                  this.form.tradingBoxItemsList.forEach(e => {
-                    this.feeCenterListC.push({
-                      pid: this.form.id,
-                      feesType: 1,
-                      dc: 'C',
-                      billType: '箱东',
-                      corpId: this.form.purchaseCompanyId,
-                      shortName: this.form.purchaseCompanyName,
-                      corpCnName: this.form.purchaseCompanyName,
-                      cntrNo: e.code,
-                      unitNo: e.boxType,
-                      curCode: item.curNo,
-                      exrate: this.getExchangeRate(item.curNo, 'C', 1),
-                      feeId: item.id,
-                      feeCode: item.code,
-                      feeCnName: item.cnName,
-                      price: this.form.pickupFee,
-                      quantity: 1,
-                      amountCNY: item.curNo == this.getLocalCurrency() ? this.form.pickupFee : 0,
-                      amountUSD: item.curNo != this.getLocalCurrency() ? this.form.pickupFee : 0,
-                      $cellEdit: true
-                    })
-                  })
-                }
-              })
-
+        this.$DialogForm.show({
+          title: 'OW批量导入费用',
+          width: '30%',
+          // data: this.assemblyForm.hmmEdi,
+          menuPosition: 'right',
+          option: {
+            submitText: '确定',
+            emptyText: '取消',
+            // labelWidth: 130,
+            column: [
+              {
+                label: "账期",
+                span: 24,
+                prop: "accountDate",
+                type: 'month',
+                format: 'yyyy-MM',
+                valueFormat: 'yyyy-MM',
+                rules: [{
+                  required: true,
+                  message: "选择场站",
+                  trigger: "blur",
+                }],
+              },
+            ]
+          },
+          beforeClose: (done) => {
+            done()
+          },
+          callback: (res) => {
+            res.done()
+            let obj = {
+              accountDate: res.data.accountDate + '-01 00:00:00',
+              id: this.form.id
+            }
+            bfeesList(obj).then(res => {
+              this.$message.success("操作成功!");
             })
+            res.close()
           }
         })
+        // this.$confirm('是否批量导入费用?', '提示', {
+        //   confirmButtonText: '确定',
+        //   cancelButtonText: '取消',
+        //   type: 'warning'
+        // }).then(() => {
+        //   console.log(this.form.dc)
+        //   if (this.form.dc == 'd') {
+        //     let obj={
+        //       id:this.form.id
+        //       // accountDate:
+        //     }
+        //     bfeesList(obj).then(res => {
+        //       res.data.data.records.forEach(item => {
+        //         if (item.cnName == 'Pickup fee') {
+        //           this.form.tradingBoxItemsList.forEach(e => {
+        //             this.feeCenterListD.push({
+        //               pid: this.form.id,
+        //               feesType: 1,
+        //               dc: 'D',
+        //               billType: '箱东',
+        //               corpId: this.form.purchaseCompanyId,
+        //               shortName: this.form.purchaseCompanyName,
+        //               corpCnName: this.form.purchaseCompanyName,
+        //               cntrNo: e.code,
+        //               unitNo: e.boxType,
+        //               curCode: item.curNo,
+        //               exrate: this.getExchangeRate(item.curNo, 'D', 1),
+        //               feeId: item.id,
+        //               feeCode: item.code,
+        //               feeCnName: item.cnName,
+        //               price: this.form.pickupFee,
+        //               quantity: 1,
+        //               amountCNY: item.curNo == this.getLocalCurrency() ? this.form.pickupFee : 0,
+        //               amountUSD: item.curNo != this.getLocalCurrency() ? this.form.pickupFee : 0,
+        //               $cellEdit: true
+        //             })
+        //           })
+        //         }
+        //       })
+        //     })
+
+        //   } else {
+        //     bfeesList(1, 10, { cnName: 'Pickup fee' }).then(res => {
+        //       res.data.data.records.forEach(item => {
+        //         if (item.cnName == 'Pickup fee') {
+        //           this.form.tradingBoxItemsList.forEach(e => {
+        //             this.feeCenterListC.push({
+        //               pid: this.form.id,
+        //               feesType: 1,
+        //               dc: 'C',
+        //               billType: '箱东',
+        //               corpId: this.form.purchaseCompanyId,
+        //               shortName: this.form.purchaseCompanyName,
+        //               corpCnName: this.form.purchaseCompanyName,
+        //               cntrNo: e.code,
+        //               unitNo: e.boxType,
+        //               curCode: item.curNo,
+        //               exrate: this.getExchangeRate(item.curNo, 'C', 1),
+        //               feeId: item.id,
+        //               feeCode: item.code,
+        //               feeCnName: item.cnName,
+        //               price: this.form.pickupFee,
+        //               quantity: 1,
+        //               amountCNY: item.curNo == this.getLocalCurrency() ? this.form.pickupFee : 0,
+        //               amountUSD: item.curNo != this.getLocalCurrency() ? this.form.pickupFee : 0,
+        //               $cellEdit: true
+        //             })
+        //           })
+        //         }
+        //       })
+
+        //     })
+        //   }
+        // })
       }
       if (name == '批量修改POD场站') {
         this.podForm = {}
         this.podDialog = true
       }
+      if (name == '合并生成') {
+        for (let item of this.selecPickList) {
+          if (item.whetherGenerateCost == 1) {
+            return this.$message.error("请选择生成明细");
+          }
+        }
+        let obj = {
+          id: this.form.id,
+          feeCenterItemsList: this.selecPickList
+        }
+        mergeGenerateCost(obj).then(res => {
+          this.$message.success("操作成功");
+          this.getDetail(this.form.id)
+        })
+      }
+      if (name == '合并生成2') {
+        for (let item of this.selecPickList) {
+          if (item.whetherGenerateCost == 1) {
+            return this.$message.error("请选择生成明细");
+          }
+        }
+        let obj = {
+          id: this.form.id,
+          feeCenterItemsList: this.selecPerList
+        }
+        mergeGenerateCost(obj).then(res => {
+          this.$message.success("操作成功");
+          this.getDetail(this.form.id)
+        })
+      }
+    },
+    getPick() {
+      let obj = {
+        ...this.pickSearch,
+        pid: this.form.id,
+        feeType: 1
+      }
+      const loading = this.$loading({
+        lock: true,
+        text: '加载中',
+        spinner: 'el-icon-loading',
+        background: 'rgba(255,255,255,0.7)'
+      });
+      feeList(obj).then(res => {
+        this.pickData = res.data.data
+      }).finally(() => {
+        loading.close();
+      })
+    },
+    getPer() {
+      let obj = {
+        ...this.perSearch,
+        pid: this.form.id,
+        feeType: 2
+      }
+      const loading = this.$loading({
+        lock: true,
+        text: '加载中',
+        spinner: 'el-icon-loading',
+        background: 'rgba(255,255,255,0.7)'
+      });
+      feeList(obj).then(res => {
+        this.perData = res.data.data
+      }).finally(() => {
+        loading.close();
+      })
+    },
+    pickChange(list) {
+      this.selecPickList = list
+    },
+    perChange(list) {
+      this.selecPerList = list
+    },
+    handleClick(tab) {
+      if (this.activeName == 'pickUp') {
+        if (this.form.id) {
+          this.getPick()
+        }
+      }
+      if (this.activeName == 'perDiem') {
+        if (this.form.id) {
+          this.getPer()
+        }
+      }
+    },
+    searchChange(params, done) {
+      if (this.form.id) {
+        this.getPick()
+      }
+      done();
+    },
+    searchReset() {
+      this.pickSearch = {}
+      if (this.form.id) {
+        this.getPick()
+      }
+    },
+    searchChange2(params, done) {
+      if (this.form.id) {
+        this.getPer()
+      }
+      done();
+    },
+    searchReset2() {
+      this.perSearch = {}
+      if (this.form.id) {
+        this.getPer()
+      }
     },
     podSubmit() {
       this.$refs["form3"].validate((valid, done) => {