Procházet zdrojové kódy

费用申请 列设置

Qukatie před 10 měsíci
rodič
revize
c03976ae38

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 1
public/cdn/avue/2.8.18/avue.min.js


+ 24 - 0
src/api/boxManagement/buyContainer/index.js

@@ -69,6 +69,14 @@ export const boxRemove = (data) => {
     params: data
   })
 }
+//调箱成本明细删除
+export const justmentRemove = (data) => {
+  return request({
+    url: '/api/blade-los/boxadjustmentcost/remove',
+    method: 'post',
+    params: data
+  })
+}
 //新增删除
 export function submit(data) {
   return request({
@@ -109,6 +117,14 @@ export function submitFeeList(data) {
     data
   })
 }
+//调箱成本明细批量保存
+export function submitJustmenttList(data) {
+  return request({
+    url: '/api/blade-los/boxadjustmentcost/submitList',
+    method: 'post',
+    data
+  })
+}
 //明细保存
 export function enable(data) {
   return request({
@@ -213,3 +229,11 @@ export function revoke(data) {
     data: data
   })
 }
+// 调箱确认
+export function pleaseVerifyCost(data) {
+  return request({
+    url: '/api/blade-los/expenseapplication/pleaseVerifyCost',
+    method: 'post',
+    data: data
+  })
+}

+ 37 - 0
src/api/iosBasicData/feeApplication.js

@@ -0,0 +1,37 @@
+import request from '@/router/axios';
+//查询列表
+export const getList = (current, size, params) => {
+  return request({
+    url: '/api/blade-los/expenseapplication/list',
+    method: 'get',
+    params: {
+      ...params,
+      current,
+      size,
+    }
+  })
+}
+//查询明细
+export const detail = (params) => {
+  return request({
+    url: '/api/blade-los/expenseapplication/detail',
+    method: 'get',
+    params: params
+  })
+}
+//删除
+export const remove = (data) => {
+  return request({
+    url: '/api/blade-los/expenseapplication/remove',
+    method: 'post',
+    params: data
+  })
+}
+//新增删除
+export function submit(data) {
+  return request({
+    url: '/api/blade-los/expenseapplication/submit',
+    method: 'post',
+    data
+  })
+}

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

@@ -2094,6 +2094,15 @@ const columnName = [{
   },{
     code: 483,
     name: '永发-箱管-调箱成本-详情页明细表'
+  },{
+    code: 484,
+    name: '永发-财务管理(F)-费用申请-列表页'
+  },{
+    code: 485,
+    name: '永发-财务管理(F)-费用申请-详情页应收明细'
+  },{
+    code: 486,
+    name: '永发-财务管理(F)-费用申请-详情页应付明细'
   }
 ]
 export const getColumnName = (key) => {

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

@@ -4167,5 +4167,57 @@ export default [{
     },
     component: () => import( /* webpackChunkName: "views" */ '@/views/boxManagement/boxCost/index')
   }]
+}, {
+  path: '/boxManagement/boxAdjustment/index',
+  component: Layout,
+  hidden: true,
+  children: [{
+    path: '/boxManagement/boxAdjustment/index',
+    name: '箱管调箱',
+    meta: {
+      i18n: '/boxManagement/boxAdjustment/index',
+      keepAlive: true,
+    },
+    component: () => import( /* webpackChunkName: "views" */ '@/views/boxManagement/boxAdjustment/index')
+  }]
+}, {
+  path: '/boxManagement/boxExit/index',
+  component: Layout,
+  hidden: true,
+  children: [{
+    path: '/boxManagement/boxExit/index',
+    name: '出场申请',
+    meta: {
+      i18n: '/boxManagement/boxExit/index',
+      keepAlive: true,
+    },
+    component: () => import( /* webpackChunkName: "views" */ '@/views/boxManagement/boxExit/index')
+  }]
+}, {
+  path: '/boxManagement/transferCost/index',
+  component: Layout,
+  hidden: true,
+  children: [{
+    path: '/boxManagement/transferCost/index',
+    name: '调箱成本',
+    meta: {
+      i18n: '/boxManagement/transferCost/index',
+      keepAlive: true,
+    },
+    component: () => import( /* webpackChunkName: "views" */ '@/views/boxManagement/transferCost/index')
+  }]
+}, {
+  path: '/iosBasicData/feeApplication/index',
+  component: Layout,
+  hidden: true,
+  children: [{
+    path: '/iosBasicData/feeApplication/index',
+    name: '费用申请(F)',
+    meta: {
+      i18n: '/iosBasicData/feeApplication/index',
+      keepAlive: true,
+    },
+    component: () => import( /* webpackChunkName: "views" */ '@/views/iosBasicData/feeApplication/index')
+  }]
 }
 ]

+ 12 - 0
src/util/columnSetting.js

@@ -3,8 +3,15 @@ import {
   getColumn,
   delColumn
 } from "@/api/saveColumn";
+import {validatenull} from './validate'
+export const arraySort = (list = [], prop, callback) => {
+  return list.filter(ele => !validatenull(ele[prop])).sort((a, b) => callback(a, b)).concat(list.filter(ele => validatenull(ele[prop])));
+}
 
 export async function getColumnData(columnKey, mainOption) {
+  mainOption.column.forEach((item,index)=>{
+    item.index=index+1
+  })
   let option
   const localData = JSON.parse(localStorage.getItem(columnKey));
   if (localData != null) {
@@ -16,9 +23,11 @@ export async function getColumnData(columnKey, mainOption) {
     option = res.data.data ? JSON.parse(res.data.data.jsonMessage)?JSON.parse(res.data.data.jsonMessage):mainOption: mainOption;
     localStorage.setItem(columnKey, JSON.stringify(option));
   }
+  option.column=arraySort(option.column, 'index', (a, b) => a.index - b.index)
   return option
 }
 export async function saveColumnData(columnKey, option) {
+  option.column=arraySort(option.column, 'index', (a, b) => a.index - b.index)
   let res = await saveColumn({
     fileName: columnKey,
     jsonMessage: JSON.stringify(option)
@@ -31,6 +40,9 @@ export async function saveColumnData(columnKey, option) {
   }
 }
 export async function delColumnData(columnKey, option) {
+  option.column.forEach((item,index)=>{
+    item.index=index+1
+  })
   let res = await delColumn({
     fileName: columnKey
   })

+ 2 - 2
src/views/boxManagement/boxCost/detailsPage.vue

@@ -434,7 +434,7 @@
           <tempalte slot="podCname">
             <dic-select v-model="activationForm.podCname" placeholder="港口" key="id" label="cnName" res="records"
               url="/blade-los/bports/list?status=0" :filterable="true" :remote="true" dataName="cnName"
-              @selectChange="dicChange('podCname', $event)" :disabled="editDisabled"></dic-select>
+              @selectChange="dicChange('podCname2', $event)" :disabled="editDisabled"></dic-select>
           </tempalte>
         </avue-form>
       </span>
@@ -1707,7 +1707,7 @@ export default {
           this.activationForm.polCname = null
         }
       }
-      if (name == 'podCname') {
+      if (name == 'podCname2') {
         if (row) {
           this.activationForm.podId = row.id
           this.activationForm.podCode = row.code

+ 34 - 2
src/views/boxManagement/buyContainer/detailsPage.vue

@@ -168,6 +168,8 @@
                   @click="allClick('费用一键编辑')">一键编辑</el-button>
                 <el-button type="danger" plain size="small" :disabled="editDisabled || selectionfeecList.length == 0"
                   @click="allClick('费用批量删除')">批量删除</el-button>
+                <el-button type="primary" plain size="small" :disabled="editDisabled||selectionfeecList.length == 0"
+                  @click="allClick('费用申请')">费用申请</el-button>
                 <!-- <el-button type="primary" plain size="small" @click="$refs.printC.openDialog()">打印账单</el-button> -->
               </template>
               <template slot="indexHeader" slot-scope="{row,index}">
@@ -323,7 +325,8 @@ import {
   submitItemList,
   submitFeeList,
   enable,
-  copyAgent
+  copyAgent,
+  pleaseVerifyCost
 } from "@/api/boxManagement/buyContainer/index.js";
 import dicSelect from "@/components/dicSelect/main";
 import checkSchedule from "@/components/checkH/checkSchedule.vue";
@@ -1179,7 +1182,7 @@ export default {
     },
     // 上传成功
     onSuccess(res, done, loading, column) {
-      if (res.length>0) {
+      if (res.length > 0) {
         this.$message.success("上传成功!");
       }
       this.excelBox = false;
@@ -1729,6 +1732,35 @@ export default {
           }
         })
       }
+      if (name == '费用申请') {
+        this.$confirm("确定申请费用?", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(() => {
+          let obj = {}
+          obj = {
+            srcId: this.form.id,
+            srcType:this.form.type,
+            feeCenterList:this.selectionfeecList,
+            url: '/boxManagement/buyContainer/index',
+            pageStatus: '',
+            pageLabel: '买箱',
+          }
+          const loading = this.$loading({
+            lock: true,
+            text: '加载中',
+            spinner: 'el-icon-loading',
+            background: 'rgba(255,255,255,0.7)'
+          });
+          pleaseVerifyCost(obj).then(res => {
+            this.$message.success("操作成功");
+            this.getDetail(res.data.data.id)
+          }).finally(() => {
+            loading.close();
+          })
+        });
+      }
     },
     submit(type) {
       this.$refs["form"].validate((valid, done) => {

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

@@ -211,6 +211,7 @@
                   @click="allClick('费用一键编辑')">一键编辑</el-button>
                 <el-button type="danger" plain size="small" :disabled="editDisabled || selectionfeecList.length == 0"
                   @click="allClick('费用批量删除')">批量删除</el-button>
+                  
                 <!-- <el-button type="primary" plain size="small" @click="$refs.printC.openDialog()">打印账单</el-button> -->
               </template>
               <template slot="indexHeader" slot-scope="{row,index}">

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 121 - 716
src/views/boxManagement/transferCost/detailsPage.vue


+ 27 - 72
src/views/boxManagement/transferCost/index.vue

@@ -23,12 +23,6 @@
         <template slot="sysNo" slot-scope="{ row }">
           <span style="color: #1e9fff;cursor: pointer;" @click="rowEdit(row)">{{ row.sysNo }}</span>
         </template>
-        <template slot="purchaseCompanyName" slot-scope="{ row }">
-          <span style="color: #1e9fff;cursor: pointer;" @click="rowEdit(row)">{{ row.purchaseCompanyName }}</span>
-        </template>
-        <template slot="contractNo" slot-scope="{ row }">
-          <span style="color: #1e9fff;cursor: pointer;" @click="rowEdit(row)">{{ row.contractNo }}</span>
-        </template>
       </avue-crud>
     </basic-container>
     <detailsPage v-if="!isShow" :detailData="detailData" @goBack="goBack"></detailsPage>
@@ -47,7 +41,7 @@ export default {
       isShow: true,
       form: {},
       query: {
-        type: "XGFY",
+        type: "DXCB",
       },
       loading: false,
       page: {
@@ -63,7 +57,7 @@ export default {
         menuWidth: 140,
         tip: false,
         searchShow: true,
-        searchMenuSpan: 24,
+        searchMenuSpan: 12,
         border: true,
         index: true,
         addBtn: false,
@@ -74,105 +68,66 @@ export default {
         searchIcon: true,
         align: 'center',
         searchIndex: 3,
-        summaryText: "合计",
-        showSummary: true,
-        sumColumnList: [
-          {
-            name: 'totalAmount',
-            type: 'sum',
-            decimals: 2
-          }
-        ],
         column: [
           {
-            label: '结算单位',
-            prop: 'purchaseCompanyName',
+            label: '系统号',
+            prop: 'sysNo',
+            overHidden: true,
+          },
+          {
+            label: '起运港',
+            prop: 'polCname',
             overHidden: true,
             search: true,
             searchOrder: 1,
-            type: 'select',
+            type: "select",
             filterable: true,
             remote: true,
-            dicUrl: "/api/blade-los/bcorps/selectList?status=0&current=1&size=5&shortName={{key}}",
+            dicUrl: "/api/blade-los/bports/list?status=0&size=5&current=1&cnName={{key}}",
             props: {
-              label: 'shortName',
-              value: 'shortName',
+              label: "cnName",
+              value: "cnName",
               desc: 'code',
-              res: 'data.records'
-            }
+              res: "data.records"
+            },
           },
           {
-            label: '系统号',
-            prop: 'sysNo',
+            label: '目的港',
+            prop: 'podCname',
             overHidden: true,
-          },
-          {
-            label: '合同号',
-            prop: 'contractNo',
             search: true,
             searchOrder: 2,
-            overHidden: true
-          },
-          {
-            label: '业务日期',
-            prop: 'purchaseDate',
-            search: true,
-            searchOrder: 3,
-            searchProp: 'purchaseDateList',
-            overHidden: true,
-            type: "date",
-            searchRange: true,
-            searchDefaultTime: ["00:00:00", "23:59:59"],
-            format: "yyyy-MM-dd",
-            valueFormat: "yyyy-MM-dd HH:mm:ss"
-          },
-          {
-            label: '箱量',
-            prop: 'boxNumber',
-            overHidden: true
-          },
-          {
-            label: '业务状态',
-            prop: 'buxStaus',
-            overHidden: true,
-            search: true,
-            searchOrder: 4,
-            type: 'select',
-            dicData: [
-              {
-                label: '录入',
-                value: '录入',
-              },
-              {
-                label: '已确认',
-                value: '已确认',
-              }
-            ]
+            type: "select",
+            filterable: true,
+            remote: true,
+            dicUrl: "/api/blade-los/bports/list?status=0&size=5&current=1&cnName={{key}}",
+            props: {
+              label: "cnName",
+              value: "cnName",
+              desc: 'code',
+              res: "data.records"
+            },
           },
           {
             label: "制单人",
             prop: "createUserName",
             overHidden: true,
-            width: 80,
           }, {
             label: "制单日期",
             prop: "createTime",
             type: "date",
             overHidden: true,
-            width: 100,
             format: "yyyy-MM-dd",
             valueFormat: "yyyy-MM-dd HH:mm:ss"
           }, {
             label: "修改人",
             prop: "updateUserName",
             overHidden: true,
-            width: 80,
           }, {
             label: "修改日期",
             prop: "updateTime",
             type: "date",
             overHidden: true,
-            width: 100,
             format: "yyyy-MM-dd",
             valueFormat: "yyyy-MM-dd HH:mm:ss"
           }

+ 898 - 0
src/views/iosBasicData/feeApplication/detailsPage.vue

@@ -0,0 +1,898 @@
+<template>
+  <div>
+    <div class="customer-head">
+      <div class="customer-back">
+        <el-button type="danger" style="border: none;background: none;color: red" icon="el-icon-arrow-left"
+          @click="goBack()">返回列表
+        </el-button>
+      </div>
+      <div class="add-customer-btn">
+        <el-button class="el-button--small-yh" style="margin-left: 6px;" type="primary" size="small" v-if="editButton"
+          :disabled="showLock || !(roleName.indexOf('admin') != -1 || roleName.indexOf('允许修改他人业务') != -1 || saberUserInfo.user_id == form.createUser)"
+          @click="inEdit">编 辑
+        </el-button>
+        <el-button class="el-button--small-yh" v-else style="margin-left: 6px;" type="primary" size="small"
+          :disabled="isSaveBtn" @click="submit">保 存
+        </el-button>
+      </div>
+    </div>
+    <div style="margin-top: 50px">
+      <trade-card title="基础信息">
+        <avue-form :option="optionForm" v-model="form" ref="form">
+        </avue-form>
+      </trade-card>
+      <trade-card title="费用明细">
+        <el-card
+          v-show="roleName.indexOf('admin') != -1 || roleName.indexOf('应付修改') != -1 ? true : roleName.indexOf('应付查看') != -1"
+          class="box-card" style="margin: 2px 0">
+          <avue-crud :option="feedOption" :data="feeCenterListD" id="out-table" ref="crud2"
+            :header-cell-class-name="headerClassName" :row-style="{ height: '20px' }" :cell-style="{ padding: '0px' }"
+            @selection-change="feedChange" @row-update="rowUpdate"
+            @resetColumn="resetColumn('crud2', 'feedOption', 'feedOptionBack', 485)"
+            @saveColumn="saveColumn('crud2', 'feedOption', 'feedOptionBack', 485)">
+            <template slot="menuLeft">
+              <div style="display: inline-block;margin-right: 20px" class="disabledBox fontSize">
+                <i class="el-icon-coin"></i>
+                <span>应收费用</span>
+              </div>
+            </template>
+            <template slot="remarks" slot-scope="{ row }">
+              <el-input v-model="row.remarks" placeholder="请输入 备注" size="small" style="width: 100%;"></el-input>
+            </template>
+          </avue-crud>
+        </el-card>
+        <el-card
+          v-show="roleName.indexOf('admin') != -1 || roleName.indexOf('应付修改') != -1 ? true : roleName.indexOf('应付查看') != -1"
+          class="box-card" style="margin: 2px 0">
+          <avue-crud :option="feecOption" :data="feeCenterListC" id="out-table" ref="crud3"
+            :header-cell-class-name="headerClassName" :row-style="{ height: '20px' }" :cell-style="{ padding: '0px' }"
+            @selection-change="feecChange" @row-update="rowUpdate"
+            @resetColumn="resetColumn('crud3', 'feecOption', 'feecOptionBack', 486)"
+            @saveColumn="saveColumn('crud3', 'feecOption', 'feecOptionBack', 486)">
+            <template slot="menuLeft">
+              <div style="display: inline-block;margin-right: 20px" class="disabledBox meetSize">
+                <i class="el-icon-coin"></i>
+                <span>应付费用</span>
+              </div>
+            </template>
+          </avue-crud>
+        </el-card>
+        <!-- <avue-crud id="out-table" class="box-card" :header-cell-class-name="headerClassName" ref="crud4"
+              :row-style="{ height: '16px' }" :cell-style="{ padding: '0px' }" :option="sumOption"
+              :data="sumData"></avue-crud>
+            <div
+              v-if="roleName.indexOf('admin') != -1 || roleName.indexOf('利润查看') != -1 || ((roleName.indexOf('应收修改') != -1 || roleName.indexOf('应收查看') != -1) && (roleName.indexOf('应付修改') != -1 || roleName.indexOf('应付查看') != -1))"
+              style="display: flex;align-items: center;justify-content: space-around">
+              <div style="width: 30%">
+                <div style="display: flex;align-items: center;justify-content: space-around">
+                  <div>
+                    <div style="color: #81B337">
+                      <span>应收:</span>
+                      <span class="weightnum">¥{{ form.amountD ? form.amountD : 0 }}元</span>
+                    </div>
+                  </div>
+                  <div>
+                    <div style="color: #6BBCD1">
+                      <span>应付:</span>
+                      <span class="weightnum">¥{{ form.amountC ? form.amountC : 0 }}元</span>
+                    </div>
+                  </div>
+                  <div class="bottomFlex">
+                    <span>利润</span>
+                    <span>¥{{ form.profit ? form.profit : 0 }}元</span>
+                  </div>
+                </div>
+              </div>
+              <div style="width: 30%">
+                <div style="display: flex;align-items: center;justify-content: space-around">
+                  <div>
+                    <div style="color: #81B337">
+                      <span>应收:</span>
+                      <span class="weightnum">${{ form.amountDUsd ? form.amountDUsd : 0 }}元</span>
+                    </div>
+                  </div>
+                  <div>
+                    <div style="color: #6BBCD1">
+                      <span>应付:</span>
+                      <span class="weightnum">${{ form.amountCUsd ? form.amountCUsd : 0 }}元</span>
+                    </div>
+                  </div>
+                  <div class="bottomFlex">
+                    <span>利润</span>
+                    <span>${{ form.profitUsd ? form.profitUsd : 0 }}元</span>
+                  </div>
+                </div>
+              </div>
+              <div style="width: 30%">
+                <div style="display: flex;align-items: center;justify-content: space-around">
+                  <div>
+                    <div style="color: #81B337">
+                      <span>应收:</span>
+                      <span class="weightnum">¥{{ form.totalAmountD ? form.totalAmountD : 0 }}元</span>
+                    </div>
+
+                  </div>
+                  <div>
+                    <div style="color: #6BBCD1">
+                      <span>应付:</span>
+                      <span class="weightnum">¥{{ form.totalAmountC ? form.totalAmountC : 0 }}元</span>
+                    </div>
+                  </div>
+                  <div class="bottomFlex">
+                    <span>利润</span>
+                    <span>¥{{ form.totalProfit ? form.totalProfit : 0 }}元</span>
+                  </div>
+                </div>
+              </div>
+            </div> -->
+      </trade-card>
+    </div>
+    <business-reports :id="form.id" :itemIds="itemIds" ref="print" businessValue="MYDL" :type="true"></business-reports>
+    <business-reports :id="form.id" :itemIds="itemCIds" ref="printC" businessValue="MYDL" classifyCode="费用"
+      groupCode="应付" :selecList="selectionfeecList"></business-reports>
+    <reports :id="form.id" :assemblyForm="form" businessValue="MYDL" ref="report"></reports>
+  </div>
+</template>
+
+<script>
+import {
+  detail,
+  submit
+} from "@/api/iosBasicData/feeApplication.js";
+import dicSelect from "@/components/dicSelect/main";
+import checkSchedule from "@/components/checkH/checkSchedule.vue";
+import businessReports from "@/components/tradeAgency/businessReports.vue";
+import reports from "@/components/tradeAgency/reports.vue";
+import { dateFormat } from "@/util/date";
+import { bcurrencyGetExrate } from "@/api/iosBasicData/rateManagement";
+import { getToken } from "@/util/auth";
+import _ from "lodash";
+import { Header } from "element-ui";
+export default {
+  name: "detailsPage",
+  data() {
+    return {
+      CNYSUM: 0,
+      USDSUM: 0,
+      sumData: [],
+      sumOption: {
+        border: true,
+        align: 'center',
+        menuAlign: 'center',
+        menu: false,
+        header: false,
+        addBtn: false,
+        // height: '100px',
+        column: [
+          {
+            label: '客户',
+            prop: 'corpCnName',
+            overHidden: true,
+          }, {
+            label: 'RMB应收',
+            prop: 'rmbD',
+            overHidden: true,
+          }, {
+            label: 'RMB应付',
+            prop: 'rmbC',
+            overHidden: true,
+          }, {
+            label: 'USD应收',
+            prop: 'usdD',
+            overHidden: true,
+          }, {
+            label: 'USD应付',
+            prop: 'usdC',
+            overHidden: true,
+          }, {
+            label: '合计应收',
+            prop: 'sumD',
+            overHidden: true,
+          }, {
+            label: '合计应付',
+            prop: 'sumC',
+            overHidden: true,
+          }
+        ]
+      },
+      itemCIds: null,
+      feeType: null,
+      selectionList: [],
+      selectionfeedList: [],
+      selectionfeecList: [],
+      checkId: '', // 审核需要的id
+      batchNo: '',
+      checkScheduleDialog: false, // 审核弹窗
+      editButton: false,
+      editDisabled: false,
+      form: {
+        feeCenterList: [],
+      },
+      oldForm: {},
+      optionForm: {
+        menuBtn: false,
+        span: 6,
+        disabled: false,
+        labelWidth: 100,
+        column: [
+          {
+            label: '客户',
+            prop: 'corpCnName',
+            disabled: true
+          },
+          {
+            label: '来源类型',
+            prop: 'srcType',
+            disabled: true
+          },
+          {
+            label: '来源系统号',
+            prop: 'srcNo',
+            disabled: true
+          },
+          {
+            label: '来源提单号',
+            prop: 'srcMblno',
+            disabled: true
+          },
+          {
+            label: '来源放箱号',
+            prop: 'srcContainerNumber',
+            disabled: true
+          },
+          {
+            label: '来源合同号',
+            prop: 'srcContractNo',
+            disabled: true
+          },
+          {
+            label: '业务日期',
+            prop: 'srcBusDate',
+            disabled: true
+          },
+          {
+            label: '结算单位',
+            prop: 'purchaseCompanyName',
+            disabled: true,
+            type: "date",
+            format: "yyyy-MM-dd",
+            valueFormat: "yyyy-MM-dd HH:mm:ss",
+          },
+          {
+            label: '审核状态',
+            prop: 'status',
+            disabled: true
+          },
+          {
+            label: '备注',
+            prop: 'remarks',
+            type: 'textarea',
+            minRows: 2,
+            span: 18
+          }]
+      },
+      optionForm2: {
+        menuBtn: false,
+        span: 5,
+        disabled: true,
+        labelWidth: 100,
+        column: [
+          {
+            label: '系统号',
+            prop: 'sysNo',
+            disabled: true
+          },
+          {
+            label: '制单人',
+            prop: "createUserName",
+            disabled: true,
+            span: 4,
+          },
+          {
+            label: '制单日期',
+            prop: "createTime",
+            disabled: true,
+          },
+          {
+            label: '修改人',
+            prop: "updateUserName",
+            disabled: true,
+            span: 4,
+          },
+          {
+            label: '修改日期',
+            prop: "updateTime",
+            disabled: true,
+          }
+        ]
+      },
+      feedOption: {},
+      feedOptionBack: {
+        // height: 'auto',
+        calcHeight: 30,
+        menuWidth: 60,
+        tip: false,
+        border: true,
+        addBtn: false,
+        viewBtn: false,
+        editBtn: false,
+        delBtn: false,
+        refreshBtn: false,
+        selection: true,
+        align: 'center',
+        menu: false,
+        index: true,
+        summaryText: "合计",
+        showSummary: true,
+        sumColumnList: [
+          {
+            name: 'amount',
+            type: 'sum',
+            decimals: 2
+          },
+          {
+            name: 'amountLoc',
+            type: 'sum',
+            decimals: 2
+          }
+        ],
+        column: [
+          {
+            label: "类别",
+            prop: "billType",
+            width: "100",
+            overHidden: true,
+            cell: true,
+            slot: true,
+            formslot: true,
+            rules: [
+              {
+                required: true,
+                message: '请选择类别',
+                trigger: 'blur'
+              }
+            ]
+          },
+          {
+            label: "收费对象",
+            prop: "corpCnName",
+            width: "100",
+            overHidden: true,
+            cell: true,
+            slot: true,
+            formslot: true,
+            rules: [
+              {
+                required: true,
+                message: '请选择付费对象',
+                trigger: 'blur'
+              }
+            ]
+          },
+          {
+            label: "箱号",
+            prop: "cntrNo",
+            width: 140,
+            cell: true,
+            slot: true,
+            formslot: true,
+            overHidden: true,
+          },
+          {
+            label: "费用名称",
+            prop: "feeCnName",
+            width: "100",
+            overHidden: true,
+            cell: true,
+            slot: true,
+            formslot: true,
+            rules: [
+              {
+                required: true,
+                message: '请选择费用名称',
+                trigger: 'blur'
+              }
+            ]
+          },
+          {
+            label: "计量单位",
+            prop: "unitNo",
+            width: "100",
+            overHidden: true,
+            cell: true,
+            slot: true,
+            formslot: true,
+          },
+          {
+            label: "币别",
+            prop: "curCode",
+            width: "100",
+            overHidden: true,
+            cell: true,
+            slot: true,
+            formslot: true,
+            rules: [
+              {
+                required: true,
+                message: '请选择币别',
+                trigger: 'blur'
+              }
+            ]
+          },
+          {
+            label: "汇率",
+            prop: "exrate",
+            width: "100",
+            overHidden: true,
+            cell: true,
+            slot: true,
+            formslot: true
+          },
+
+          {
+            label: "单价",
+            prop: "price",
+            width: "100",
+            overHidden: true,
+            cell: true,
+            slot: true,
+            formslot: true,
+            rules: [
+              {
+                required: true,
+                message: '请输入单价',
+                trigger: 'blur'
+              }
+            ]
+          },
+          {
+            label: "数量",
+            prop: "quantity",
+            width: "100",
+            overHidden: true,
+            cell: true,
+            slot: true,
+            formslot: true,
+            rules: [
+              {
+                required: true,
+                message: '请输入数量',
+                trigger: 'blur'
+              }
+            ]
+          },
+          {
+            label: "金额",
+            prop: "amount",
+            width: "100",
+            overHidden: true,
+          },
+          {
+            label: "外币金额",
+            prop: "amountLoc",
+            width: "100",
+            overHidden: true,
+          },
+          {
+            label: "制单人",
+            prop: "createUserName",
+            width: "100",
+            overHidden: true
+          },
+          {
+            label: "制单日期",
+            prop: "createTime",
+            width: "120",
+            overHidden: true
+          },
+          {
+            label: "修改人",
+            prop: "updateUserName",
+            width: "100",
+            overHidden: true
+          },
+          {
+            label: "修改日期",
+            prop: "updateTime",
+            width: "120",
+            overHidden: true
+          },
+          {
+            label: "备注",
+            prop: "remarks",
+            cell: true,
+            width: "120",
+            overHidden: true
+          }
+        ]
+      },
+      feecOption: {},
+      feecOptionBack: {
+        // height: 'auto',
+        calcHeight: 30,
+        menuWidth: 60,
+        tip: false,
+        border: true,
+        addBtn: false,
+        viewBtn: false,
+        editBtn: false,
+        delBtn: false,
+        refreshBtn: false,
+        selection: true,
+        align: 'center',
+        menu: false,
+        index: true,
+        summaryText: "合计",
+        showSummary: true,
+        sumColumnList: [
+          {
+            name: 'amount',
+            type: 'sum',
+            decimals: 2
+          },
+          {
+            name: 'amountLoc',
+            type: 'sum',
+            decimals: 2
+          }
+        ],
+        column: [
+          {
+            label: "类别",
+            prop: "billType",
+            width: 100,
+            overHidden: true,
+          },
+          {
+            label: "付费对象",
+            prop: "corpCnName",
+            width: 100,
+            overHidden: true,
+          },
+          {
+            label: "箱号",
+            prop: "cntrNo",
+            width: 140,
+            overHidden: true,
+          },
+          {
+            label: "费用名称",
+            prop: "feeCnName",
+            width: "100",
+            overHidden: true,
+          },
+          {
+            label: "计量单位",
+            prop: "unitNo",
+            width: "100",
+            overHidden: true,
+          },
+          {
+            label: "币别",
+            prop: "curCode",
+            width: "100",
+            overHidden: true,
+          },
+          {
+            label: "汇率",
+            prop: "exrate",
+            width: "100",
+            overHidden: true,
+          },
+
+          {
+            label: "单价",
+            prop: "price",
+            width: "100",
+            overHidden: true,
+          },
+          {
+            label: "数量",
+            prop: "quantity",
+            width: "100",
+            overHidden: true,
+          },
+          {
+            label: "金额",
+            prop: "amount",
+            width: "100",
+            overHidden: true,
+          },
+          {
+            label: "外币金额",
+            prop: "amountLoc",
+            width: "100",
+            overHidden: true,
+          },
+          {
+            label: "制单人",
+            prop: "createUserName",
+            width: "100",
+            overHidden: true
+          },
+          {
+            label: "制单日期",
+            prop: "createTime",
+            width: "120",
+            overHidden: true
+          },
+          {
+            label: "修改人",
+            prop: "updateUserName",
+            width: "100",
+            overHidden: true
+          },
+          {
+            label: "修改日期",
+            prop: "updateTime",
+            width: "120",
+            overHidden: true
+          },
+          {
+            label: "备注",
+            prop: "remarks",
+            cell: true,
+            width: "120",
+            overHidden: true
+          }
+        ]
+      },
+      feeCenterListD: [],
+      feeCenterListC: [],
+      roleName: [],
+    }
+  },
+  components: {
+    dicSelect
+  },
+  props: {
+    detailData: Object
+  },
+  async created() {
+    this.roleName = localStorage.getItem('roleName').split(',')
+    this.feedOption = await this.getColumnData(this.getColumnName(485), this.feedOptionBack);
+    this.feecOption = await this.getColumnData(this.getColumnName(486), this.feecOptionBack);
+    if (this.detailData.id) {
+      this.getDetail(this.detailData.id)
+    }
+  },
+  methods: {
+    getDetail(id) {
+      const loading = this.$loading({
+        lock: true,
+        text: '加载中',
+        spinner: 'el-icon-loading',
+        background: 'rgba(255,255,255,0.7)'
+      });
+      detail({ id: id }).then(res => {
+        this.feeCenterListD = res.data.data.feeCenterList.filter(item => item.dc == "D")
+        this.feeCenterListC = res.data.data.feeCenterList.filter(item => item.dc == "C")
+        this.form = res.data.data
+        this.updateFormKey = new Date().getTime()
+      }).finally(() => {
+        loading.close()
+      })
+    },
+    inEdit() {
+      this.editButton = false
+    },
+    submit(type) {
+      this.$refs["form"].validate((valid, done) => {
+        done();
+        if (valid) {
+          for (let row of this.form.tradingBoxItemsList) {
+            if (!row.code || !row.boxType || !row.boxBelongsTo || !row.boxCategory || !row.boxStatus || !row.boxCondition || !row.amount || !row.currency || !row.exrate || !row.stationCname || !row.status) {
+              this.$refs.crud.rowCell(row, row.$index)
+              return this.$message.error("请完善箱明细信息");
+            }
+          }
+          for (let row of this.feeCenterListD) {
+            if (!row.billType || !row.corpCnName || !row.feeCnName || !row.curCode || !row.price || !row.quantity) {
+              this.$refs.crud2.rowCell(row, row.$index)
+              return this.$message.error("请完善应收费用明细");
+            }
+          }
+          for (let row of this.feeCenterListC) {
+            if (!row.billType || !row.corpCnName || !row.feeCnName || !row.curCode || !row.price || !row.quantity) {
+              this.$refs.crud3.rowCell(row, row.$index)
+              return this.$message.error("请完善应付费用明细");
+            }
+          }
+          this.form.feeCenterList = [...this.feeCenterListD, ...this.feeCenterListC]
+          const loading = this.$loading({
+            lock: true,
+            text: '加载中',
+            spinner: 'el-icon-loading',
+            background: 'rgba(255,255,255,0.7)'
+          });
+          submit(this.form).then(res => {
+            this.$message.success("保存成功");
+            this.getDetail(res.data.data.id)
+          }).finally(() => {
+            loading.close();
+          })
+
+        } else {
+          return false;
+        }
+      });
+    },
+    //自定义列保存
+    async saveColumn(ref, option, optionBack, code) {
+      const inSave = await this.saveColumnData(this.getColumnName(code), this[option]);
+      if (inSave) {
+        this.$message.success("保存成功");
+        //关闭窗口
+        this.$refs[ref].$refs.dialogColumn.columnBox = false;
+      }
+    },
+    //自定义列重置
+    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;
+    },
+    goBack(type) {
+      this.$emit("goBack");
+    },
+    getSum() {
+      let sumArr = []
+      let corpArr = []
+      let newArr = []
+      this.sumData = []
+      sumArr = this.feeCenterListD.concat(this.feeCenterListC)
+      sumArr.forEach(e => {
+        if (e.shortName) {
+          corpArr.push(e.shortName)
+        }
+      })
+      newArr = [... new Set(corpArr)]
+      newArr.forEach(e => {
+        let rmbD = 0
+        let rmbC = 0
+        let usdD = 0
+        let usdC = 0
+        let sumD = 0
+        let sumC = 0
+        sumArr.forEach(item => {
+          if (e == item.shortName) {
+            if (item.curCode == 'CNY' && item.dc == 'D') {
+              rmbD += Number(item.amount)
+              sumD += Number(item.amount)
+            }
+            if (item.curCode == 'CNY' && item.dc == 'C') {
+              rmbC += Number(item.amount)
+              sumC += Number(item.amount)
+            }
+            if (item.curCode == 'USD' && item.dc == 'D') {
+              usdD += Number(item.amountLoc)
+              sumD += Number(item.amountLoc) * Number(item.exrate)
+            }
+            if (item.curCode == 'USD' && item.dc == 'C') {
+              usdC += Number(item.amountLoc)
+              sumC += Number(item.amountLoc) * Number(item.exrate)
+            }
+          }
+        })
+        this.sumData.push({
+          corpCnName: e,
+          rmbD: _.round(rmbD, 2),
+          rmbC: _.round(rmbC, 2),
+          usdD: _.round(usdD, 2),
+          usdC: _.round(usdC, 2),
+          sumD: _.round(sumD, 2),
+          sumC: _.round(sumC, 2)
+        })
+      })
+    },
+  },
+  watch: {
+    // 监听业务类型 如果不是分单 可以编辑分单号
+    // 'feeCenterListD': {
+    //   // 执行方法
+    //   handler(oldValue, newValue) {
+    //     this.getSum()
+    //   },
+    //   deep: true, // 深度监听
+    //   immediate: true  // 第一次改变就执行
+    // },
+    // 监听箱信息数据 箱信息中有温度 自动切换 冻货
+    // 'feeCenterListC': {
+    //   // 执行方法
+    //   handler(oldValue, newValue) {
+    //     this.getSum()
+    //   },
+    //   deep: true, // 深度监听
+    //   immediate: true  // 第一次改变就执行,
+    // }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+::v-deep .el-form-item__error {
+  display: none !important;
+}
+
+::v-deep .el-form-item {
+  margin-bottom: 8px !important;
+}
+
+::v-deep .el-table .cell {
+  padding: 0 2px !important;
+
+  .el-form-item {
+    margin-bottom: 0px !important;
+  }
+
+}
+
+::v-deep .avue-crud .el-table .el-form-item__label {
+  left: -1px;
+}
+
+// ::v-deep#out-table .back-one {
+//     background: #ecf5ff !important;
+// }
+
+// ::v-deep#out-table .back-two {
+//     background: #ecf5ff !important;
+// }
+
+::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-table--small td,
+.el-table--small th {
+  padding: 2px !important;
+}
+
+::v-deep .el-card__body {
+  padding: 3px 10px;
+}
+
+::v-deep .box-card .el-card__body {
+  padding: 4px !important;
+}
+
+.disabledBox {
+  display: flex;
+  align-items: center;
+}
+
+.meetSize {
+  font-size: 16px;
+  color: #54BCBD;
+}
+
+.fontSize {
+  font-size: 16px;
+  color: #81B337;
+}
+</style>

+ 360 - 0
src/views/iosBasicData/feeApplication/index.vue

@@ -0,0 +1,360 @@
+<template>
+  <div>
+    <basic-container v-if="isShow">
+      <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" :search.sync="query"
+        v-model="form" id="out-table" :header-cell-class-name="headerClassName" ref="crud" @row-del="rowDel"
+        @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange"
+        @current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange"
+        @resetColumn="resetColumn('crud', 'option', 'optionBack', 484)"
+        @saveColumn="saveColumn('crud', 'option', 'optionBack', 484)" @on-load="onLoad">
+        <template slot="menuLeft">
+          <el-button type="primary" size="small" icon="el-icon-plus" @click="addButton">创建单据
+          </el-button>
+          <el-button type="success" size="small" :disabled="selectionList.length != 1" @click="copyButton">复制单据
+          </el-button>
+          <el-button type="warning" size="small"  disabled @click="outExport">导 出
+          </el-button>
+        </template>
+        <template slot="menu" slot-scope="{ row, index }">
+          <el-button size="small" icon="el-icon-edit" type="text" @click="rowEdit(row)">编辑</el-button>
+          <el-button size="small" icon="el-icon-delete" type="text" @click="rowDel(row, index)"
+            :disabled="row.count > 0">删 除</el-button>
+        </template>
+        <template slot="corpCnName" slot-scope="{ row }">
+          <span style="color: #1e9fff;cursor: pointer;" @click="rowEdit(row)">{{ row.corpCnName }}</span>
+        </template>
+      </avue-crud>
+    </basic-container>
+    <detailsPage v-if="!isShow" :detailData="detailData" @goBack="goBack"></detailsPage>
+  </div>
+</template>
+
+<script>
+import { getList, remove } from "@/api/iosBasicData/feeApplication.js";
+import { getWorkDicts } from "@/api/system/dictbiz";
+import detailsPage from "./detailsPage";
+import { getToken } from "@/util/auth";
+import _ from "lodash";
+export default {
+  data() {
+    return {
+      isShow: true,
+      form: {},
+      query: {
+        type: "DXCB",
+      },
+      loading: false,
+      page: {
+        pageSize: 10,
+        currentPage: 1,
+        total: 0
+      },
+      selectionList: [],
+      option: {},
+      optionBack: {
+        height: 'auto',
+        calcHeight: 30,
+        menuWidth: 140,
+        tip: false,
+        searchShow: true,
+        searchMenuSpan: 12,
+        border: true,
+        index: true,
+        addBtn: false,
+        viewBtn: false,
+        editBtn: false,
+        delBtn: false,
+        selection: true,
+        searchIcon: true,
+        align: 'center',
+        searchIndex: 3,
+        column: [
+        {
+            label: '客户',
+            prop: 'corpCnName',
+            width: 180,
+            overHidden: true,
+            search: true,
+            type: "select",
+            filterable: true,
+            remote: true,
+            dicUrl: "/api/blade-los/bcorps/selectList?status=0&size=5&current=1&shortName={{key}}",
+            props: {
+              label: "shortName",
+              value: "shortName",
+              desc: 'code',
+              res: "data.records"
+            },
+          },
+          {
+            label: '来源类型',
+            prop: 'srcType',
+            width: 120,
+            overHidden: true,
+            search: true,
+          },
+          {
+            label: '来源系统号',
+            prop: 'srcNo',
+            width: 120,
+            overHidden: true,
+            search: true,
+          },
+          {
+            label: '来源提单号',
+            prop: 'srcMblno',
+            width: 120,
+            overHidden: true,
+            search: true,
+          },
+          {
+            label: '来源放箱号',
+            prop: 'srcContainerNumber',
+            width: 120,
+            overHidden: true,
+            search: true,
+          },
+          {
+            label: '来源合同号',
+            prop: 'srcContractNo',
+            width: 120,
+            overHidden: true,
+            search: true,
+          },
+          {
+            label: '业务日期',
+            prop: 'srcBusDate',
+            width: 120,
+            overHidden: true,
+            search: true,
+            searchProp: 'srcBusDateList',
+            type: "date",
+            searchRange: true,
+            searchDefaultTime: ["00:00:00", "23:59:59"],
+            format: "yyyy-MM-dd",
+            valueFormat: "yyyy-MM-dd HH:mm:ss",
+          },
+          {
+            label: '审核状态',
+            prop: 'status',
+            width: 120,
+            overHidden: true,
+          },
+          {
+            label: "制单人",
+            prop: "createUserName",
+            width: 120,
+            overHidden: true,
+          }, {
+            label: "制单日期",
+            prop: "createTime",
+            width: 120,
+            type: "date",
+            overHidden: true,
+            format: "yyyy-MM-dd",
+            valueFormat: "yyyy-MM-dd HH:mm:ss"
+          }, {
+            label: "修改人",
+            prop: "updateUserName",
+            width: 120,
+            overHidden: true,
+          }, {
+            label: "修改日期",
+            prop: "updateTime",
+            width: 120,
+            type: "date",
+            overHidden: true,
+            format: "yyyy-MM-dd",
+            valueFormat: "yyyy-MM-dd HH:mm:ss"
+          }
+        ]
+      },
+      data: [],
+    };
+  },
+  components: {
+    detailsPage
+  },
+  async created() {
+    this.option = await this.getColumnData(this.getColumnName(484), this.optionBack);
+  },
+  activated() {
+    setTimeout(() => {
+    }, 100);
+  },
+  methods: {
+    addButton() {
+      this.isShow = false
+    },
+    copyButton() {
+      this.isShow = false
+      this.detailData = {
+        copyId: this.selectionList[0].id
+      };
+    },
+    rowEdit(row) {
+      this.detailData = {
+        id: row.id
+      };
+      this.isShow = false
+    },
+    // 删除
+    rowDel(row, index) {
+      if (row.item == 1) {
+        return this.$message.error("存在明细不允许删除");
+      }
+      this.$confirm("确定将选择数据删除?", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      }).then(() => {
+        remove({ ids: row.id }).then(res => {
+          this.onLoad(this.page, this.query);
+          this.$message.success("成功删除");
+        })
+      })
+
+    },
+    searchReset() {
+      this.query = this.$options.data().query;
+      this.onLoad(this.page);
+    },
+    // 搜索按钮点击
+    searchChange(params, done) {
+      this.page.currentPage = 1;
+      this.onLoad(this.page, this.query);
+      done();
+    },
+    selectionChange(list) {
+      this.selectionList = list;
+    },
+    currentChange(currentPage) {
+      this.page.currentPage = currentPage;
+    },
+    sizeChange(pageSize) {
+      this.page.pageSize = pageSize;
+    },
+    refreshChange() {
+      this.onLoad(this.page, this.query);
+    },
+    onLoad(page, params = {}) {
+      let obj = {}
+      obj = {
+        ...Object.assign(params, this.query),
+      }
+      this.loading = true;
+      getList(page.currentPage, page.pageSize, obj).then(res => {
+        this.data = res.data.data.records;
+        this.page.total = res.data.data.total;
+        this.$nextTick(() => {
+          this.$refs.crud.doLayout();
+          this.$refs.crud.dicInit();
+        });
+      }).finally(() => {
+        this.loading = false;
+      })
+    },
+    // 详情的返回列表
+    goBack() {
+      // 初始化数据
+      if (JSON.stringify(this.$route.query) != "{}") {
+        this.$router.$avueRouter.closeTag();
+        this.$router.push({
+          path: "/boxManagement/buyContainer/index"
+        });
+      }
+      this.detailData = {}
+      this.isShow = true;
+      this.onLoad(this.page, this.query);
+    },
+    outExport() {
+      let config = { params: { ...this.query } }
+      if (config.params) {
+        for (const propName of Object.keys(config.params)) {
+          const value = config.params[propName];
+          if (value !== null && typeof (value) !== "undefined") {
+            if (value instanceof Array) {
+              for (const key of Object.keys(value)) {
+                let params = propName + '[' + key + ']';
+                config.params[params] = value[key]
+              }
+              delete config.params[propName]
+            }
+          }
+        }
+      }
+      const routeData = this.$router.resolve({
+        path: '/api/blade-los/routecost/exportRouteCost',      //跳转目标窗口的地址
+        query: {
+          ...config.params,    //括号内是要传递给新窗口的参数
+          identification: this.url
+        }
+      })
+      window.open(routeData.href.slice(1, routeData.href.length) + '&' + `${this.website.tokenHeader}=${getToken()}`);
+    },
+    //自定义列保存
+    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.selectionList=[]
+        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;
+        this.selectionList=[]
+        this.searchReset()
+      }
+    },
+    // 更改表格颜色
+    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;
+    },
+
+  }
+}
+
+</script>
+
+<style lang="scss" scoped>
+::v-deep #out-table .back-one {
+  background: #ecf5ff !important;
+  text-align: center;
+}
+
+::v-deep #out-table .back-two {
+  background: #ecf5ff !important;
+  text-align: center;
+}
+
+.pointerClick {
+  cursor: pointer;
+  color: #1e9fff;
+}
+
+::v-deep .el-col-md-8 {
+  width: 24.33333%;
+}
+</style>

+ 55 - 46
src/views/ow/owPut/detailsPage.vue

@@ -121,10 +121,8 @@
                   @click="allClick('一键编辑')">一键编辑</el-button>
                 <el-button type="danger" plain size="small" :disabled="editDisabled || selectionList.length == 0"
                   @click="allClick('批量删除')">批量删除</el-button>
-                  <el-button type="primary" plain size="small" 
-                  :disabled="editDisabled">计算超期箱使费</el-button>
-                <el-button type="warning" plain size="small" 
-                  :disabled="editDisabled">批量导入费用</el-button>
+                <el-button type="primary" plain size="small" :disabled="editDisabled">计算超期箱使费</el-button>
+                <el-button type="warning" plain size="small" :disabled="editDisabled">批量导入费用</el-button>
                 <!-- <el-button type="success" size="small">导入</el-button> -->
                 <!-- <el-button type="info" size="small" @click="allClick('启用')">启用</el-button> -->
                 <!-- <el-button type="primary" size="small" @click="allClick('卖箱')">卖箱</el-button> -->
@@ -228,9 +226,9 @@
                 <el-button type="danger" plain size="small" :disabled="editDisabled || selectionfeedList.length == 0"
                   @click="allClick('D费用批量删除')">批量删除</el-button>
                 <el-button type="success" plain size="small" @click="allClick('生成租金')"
-                  :disabled="editDisabled">生成租金</el-button>
+                  :disabled="editDisabled||form.tradingBoxItemsList.length == 0">生成租金</el-button>
                 <el-button type="danger" plain size="small" @click="allClick('撤销租金')"
-                  :disabled="editDisabled">撤销租金</el-button>
+                  :disabled="editDisabled||form.tradingBoxItemsList.length == 0">撤销租金</el-button>
                 <!-- <el-button type="primary" plain size="small" @click="$refs.printC.openDialog()">打印账单</el-button> -->
               </template>
               <template slot="indexHeader" slot-scope="{row,index}">
@@ -535,7 +533,8 @@
           <span>{{ index + 1 }}</span>
         </template>
         <template slot="menu" slot-scope="{ row, index }">
-          <el-button size="small" icon="el-icon-edit" type="text" @click="rowEdit(row, index)">{{ row.$cellEdit ? '保存' : '编辑'
+          <el-button size="small" icon="el-icon-edit" type="text" @click="rowEdit(row, index)">{{ row.$cellEdit ? '保存' :
+            '编辑'
             }}</el-button>
           <el-button size="small" icon="el-icon-delete" type="text" @click="rowDel(row, index)">删除</el-button>
         </template>
@@ -568,6 +567,7 @@ import dicSelect from "@/components/dicSelect/main";
 import checkSchedule from "@/components/checkH/checkSchedule.vue";
 import businessReports from "@/components/boxManagement/businessReports.vue";
 import reports from "@/components/boxManagement/reports.vue";
+import { dateFormat } from "@/util/date";
 import { bcurrencyGetExrate } from "@/api/iosBasicData/rateManagement";
 import { getToken } from "@/util/auth";
 import _ from "lodash";
@@ -684,8 +684,8 @@ export default {
         boxCondition: '新',
         conditions: 'CW',
         freeDay: 30,
-        loloPol: '箱东付',
-        loloPod: '箱东付',
+        // loloPol: '箱东付',
+        // loloPod: '箱东付',
         rentTermList: [
           { curCode: 'USD', $cellEdit: true },
           { curCode: 'USD', $cellEdit: true },
@@ -880,7 +880,12 @@ export default {
               label: "dictValue",
               value: "dictValue"
             },
-            disabled: false
+            disabled: false,
+            rules: [{
+              required: true,
+              message: "",
+              trigger: "blur"
+            }]
           },
           {
             label: 'LOLO-POD',
@@ -891,7 +896,12 @@ export default {
               label: "dictValue",
               value: "dictValue"
             },
-            disabled: false
+            disabled: false,
+            rules: [{
+              required: true,
+              message: "",
+              trigger: "blur"
+            }]
           },
           {
             label: 'Per Diem after free days',
@@ -2649,9 +2659,12 @@ export default {
         })
       }
       if (name == '生成租金') {
-        // let date = new Date(this.form.rentEndDate)
-        // date.setDate(date.getDate() + 1);
-        // date = dateFormat(date, 'yyyy-MM-dd') + ' 00:00:00'
+        let date = null
+        if (this.form.tradingBoxItemsList.length > 0 && this.form.tradingBoxItemsList[0].rentEndDate) {
+          date = new Date(this.form.tradingBoxItemsList[0].rentEndDate)
+          date.setDate(date.getDate() + 1);
+          date = dateFormat(date, 'yyyy-MM-dd') + ' 00:00:00'
+        }
         this.$DialogForm.show({
           title: '生成租金',
           width: '30%',
@@ -2667,14 +2680,16 @@ export default {
               type: "date",
               format: "yyyy-MM-dd",
               valueFormat: "yyyy-MM-dd HH:mm:ss",
-              // value: date,
-              // pickerOptions: {
-              //   disabledDate(time) {
-              //     const date2 = new Date(date)
-              //     // date.setDate(date.getDate() + 1);
-              //     return time.getTime() < date2.getTime();
-              //   },
-              // },
+              value: date,
+              pickerOptions: {
+                disabledDate(time) {
+                  if (date) {
+                    const date2 = new Date(date)
+                    // date.setDate(date.getDate() + 1);
+                    return time.getTime() < date2.getTime();
+                  }
+                },
+              },
               rules: [{
                 required: true,
                 message: "请选择日期",
@@ -2688,29 +2703,23 @@ export default {
           },
           callback: (res) => {
             res.done()
-            this.$confirm('是否生成租金?', '提示', {
-              confirmButtonText: '确定',
-              cancelButtonText: '取消',
-              type: 'warning'
-            }).then(() => {
-              let obj = {
-                id:this.form.id,
-                rentDate: res.data.value
-              }
-              const loading = this.$loading({
-                lock: true,
-                text: '加载中',
-                spinner: 'el-icon-loading',
-                background: 'rgba(255,255,255,0.7)'
-              });
-              countRent(obj).then(res => {
-                this.$message.success("操作成功!");
-                this.getDetail(this.form.id)
-              }).finally(() => {
-                loading.close();
-              })
-              res.close()
+            let obj = {
+              id: this.form.id,
+              rentDate: res.data.value
+            }
+            const loading = this.$loading({
+              lock: true,
+              text: '加载中',
+              spinner: 'el-icon-loading',
+              background: 'rgba(255,255,255,0.7)'
+            });
+            countRent(obj).then(res => {
+              this.$message.success("操作成功!");
+              this.getDetail(this.form.id)
+            }).finally(() => {
+              loading.close();
             })
+            res.close()
           }
         })
       }
@@ -2726,7 +2735,7 @@ export default {
             spinner: 'el-icon-loading',
             background: 'rgba(255,255,255,0.7)'
           });
-          revokeCountRent({id:this.form.id}).then(res => {
+          revokeCountRent({ id: this.form.id }).then(res => {
             this.$message.success("操作成功!");
             this.getDetail(this.form.id)
           }).finally(() => {
@@ -2957,7 +2966,7 @@ export default {
 
 .fontSize {
   font-size: 16px;
-  color:#81B337;
+  color: #81B337;
 }
 
 .meetSize {

+ 49 - 40
src/views/ow/owTask/detailsPage.vue

@@ -227,9 +227,9 @@
                 <el-button type="danger" plain size="small" :disabled="editDisabled || selectionfeedList.length == 0"
                   @click="allClick('D费用批量删除')">批量删除</el-button>
                 <el-button type="success" plain size="small" @click="allClick('生成租金')"
-                  :disabled="editDisabled">生成租金</el-button>
+                  :disabled="editDisabled||form.tradingBoxItemsList.length == 0">生成租金</el-button>
                 <el-button type="danger" plain size="small" @click="allClick('撤销租金')"
-                  :disabled="editDisabled">撤销租金</el-button>
+                  :disabled="editDisabled||form.tradingBoxItemsList.length == 0">撤销租金</el-button>
                 <el-button type="primary" plain size="small" :disabled="editDisabled">计算超期箱使费</el-button>
                 <el-button type="warning" plain size="small" :disabled="editDisabled">批量导入费用</el-button>
                 <!-- <el-button type="primary" plain size="small" @click="$refs.printC.openDialog()">打印账单</el-button> -->
@@ -538,7 +538,7 @@
         <template slot="menu" slot-scope="{ row, index }">
           <el-button size="small" icon="el-icon-edit" type="text" @click="rowEdit(row, index)">{{ row.$cellEdit ? '保存' :
             '编辑'
-            }}</el-button>
+          }}</el-button>
           <el-button size="small" icon="el-icon-delete" type="text" @click="rowDel(row, index)">删除</el-button>
         </template>
       </avue-crud>
@@ -687,8 +687,8 @@ export default {
         boxCondition: '新',
         conditions: 'CW',
         freeDay: 30,
-        loloPol: '箱东付',
-        loloPod: '箱东付',
+        // loloPol: '箱东付',
+        // loloPod: '箱东付',
         rentTermList: [
           { curCode: 'USD', $cellEdit: true },
           { curCode: 'USD', $cellEdit: true },
@@ -883,7 +883,12 @@ export default {
               label: "dictValue",
               value: "dictValue"
             },
-            disabled: false
+            disabled: false,
+            rules: [{
+              required: true,
+              message: "",
+              trigger: "blur"
+            }]
           },
           {
             label: 'LOLO-POD',
@@ -894,7 +899,12 @@ export default {
               label: "dictValue",
               value: "dictValue"
             },
-            disabled: false
+            disabled: false,
+            rules: [{
+              required: true,
+              message: "",
+              trigger: "blur"
+            }]
           },
           {
             label: 'Per Diem after free days',
@@ -2677,9 +2687,12 @@ export default {
         })
       }
       if (name == '生成租金') {
-        // let date = new Date(this.form.rentEndDate)
-        // date.setDate(date.getDate() + 1);
-        // date = dateFormat(date, 'yyyy-MM-dd') + ' 00:00:00'
+        let date = null
+        if (this.form.tradingBoxItemsList.length > 0 && this.form.tradingBoxItemsList[0].rentEndDate) {
+          date = new Date(this.form.tradingBoxItemsList[0].rentEndDate)
+          date.setDate(date.getDate() + 1);
+          date = dateFormat(date, 'yyyy-MM-dd') + ' 00:00:00'
+        }
         this.$DialogForm.show({
           title: '生成租金',
           width: '30%',
@@ -2695,14 +2708,16 @@ export default {
               type: "date",
               format: "yyyy-MM-dd",
               valueFormat: "yyyy-MM-dd HH:mm:ss",
-              // value: date,
-              // pickerOptions: {
-              //   disabledDate(time) {
-              //     const date2 = new Date(date)
-              //     // date.setDate(date.getDate() + 1);
-              //     return time.getTime() < date2.getTime();
-              //   },
-              // },
+              value: date,
+              pickerOptions: {
+                disabledDate(time) {
+                  if (date) {
+                    const date2 = new Date(date)
+                    // date.setDate(date.getDate() + 1);
+                    return time.getTime() < date2.getTime();
+                  }
+                },
+              },
               rules: [{
                 required: true,
                 message: "请选择日期",
@@ -2716,29 +2731,23 @@ export default {
           },
           callback: (res) => {
             res.done()
-            this.$confirm('是否生成租金?', '提示', {
-              confirmButtonText: '确定',
-              cancelButtonText: '取消',
-              type: 'warning'
-            }).then(() => {
-              let obj = {
-                id: this.form.id,
-                rentDate: res.data.value
-              }
-              const loading = this.$loading({
-                lock: true,
-                text: '加载中',
-                spinner: 'el-icon-loading',
-                background: 'rgba(255,255,255,0.7)'
-              });
-              countRent(obj).then(res => {
-                this.$message.success("操作成功!");
-                this.getDetail(this.form.id)
-              }).finally(() => {
-                loading.close();
-              })
-              res.close()
+            let obj = {
+              id: this.form.id,
+              rentDate: res.data.value
+            }
+            const loading = this.$loading({
+              lock: true,
+              text: '加载中',
+              spinner: 'el-icon-loading',
+              background: 'rgba(255,255,255,0.7)'
+            });
+            countRent(obj).then(res => {
+              this.$message.success("操作成功!");
+              this.getDetail(this.form.id)
+            }).finally(() => {
+              loading.close();
             })
+            res.close()
           }
         })
       }

Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů