Browse Source

新加还箱提醒和久置柜模块

qukaidi 1 month ago
parent
commit
96ee6ea33b

+ 13 - 0
src/api/boxManagement/LSCabinet/index.js

@@ -0,0 +1,13 @@
+import request from '@/router/axios';
+//查询列表
+export const getList = (current, size, params) => {
+  return request({
+    url: '/api/blade-los/boxReminderStatistics/selectLongTermCabinet',
+    method: 'get',
+    params: {
+      ...params,
+      current,
+      size,
+    }
+  })
+}

+ 14 - 0
src/api/iosBasicData/containerReminder.js

@@ -0,0 +1,14 @@
+import request from '@/router/axios';
+
+// 列表接口
+export const getList = (current, size, params) => {
+  return request({
+    url: '/api/blade-los/boxReminderStatistics/returnContainerReminder',
+    method: 'get',
+    params: {
+      ...params,
+      current,
+      size,
+    }
+  })
+}

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

@@ -2264,6 +2264,12 @@ const columnName = [{
 },{
   code: 538,
   name: '货代-箱管-退租明细表'
+},{
+  code: 539,
+  name: '货代-ContainerReminder'
+},{
+  code: 540,
+  name: '货代-箱管-久置柜'
 }
 ]
 export const getColumnName = (key) => {

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

@@ -4691,5 +4691,33 @@ export default [{
     },
     component: () => import( /* webpackChunkName: "views" */ '@/views/iosBasicData/overdueFee/index')
   }]
+},
+{
+  path: '/iosBasicData/containerReminder/index',
+  component: Layout,
+  hidden: true,
+  children: [{
+    path: '/iosBasicData/containerReminder/index',
+    name: 'ReturnContainerReminder',
+    meta: {
+      i18n: '/iosBasicData/containerReminder/index',
+      keepAlive: true,
+    },
+    component: () => import( /* webpackChunkName: "views" */ '@/views/iosBasicData/containerReminder/index')
+  }]
+},
+{
+  path: '/boxManagement/LSCabinet/index',
+  component: Layout,
+  hidden: true,
+  children: [{
+    path: '/boxManagement/LSCabinet/index',
+    name: '久置柜',
+    meta: {
+      i18n: '/boxManagement/LSCabinet/index',
+      keepAlive: true,
+    },
+    component: () => import( /* webpackChunkName: "views" */ '@/views/boxManagement/LSCabinet/index')
+  }]
 }
 ]

+ 7 - 0
src/styles/variables.scss

@@ -125,4 +125,11 @@ p {
 
 .avue-empty__image {
   display: none !important;
+}
+.el-table--small td{
+  padding: 0px;
+}
+.el-table .cell {
+  padding-left: 2px;
+  padding-right: 2px;
 }

+ 314 - 0
src/views/boxManagement/LSCabinet/index.vue

@@ -0,0 +1,314 @@
+<template>
+  <div>
+    <basic-container>
+      <avue-crud
+        :option="option"
+        :table-loading="loading"
+        :data="data"
+        :page.sync="page"
+        :search.sync="query"
+        v-model="form"
+        :header-cell-class-name="headerClassName"
+        ref="crud"
+        @search-change="searchChange"
+        @search-reset="searchReset"
+        @selection-change="selectionChange"
+        @current-change="currentChange"
+        @size-change="sizeChange"
+        @refresh-change="refreshChange"
+        @resetColumn="resetColumn('crud', 'option', 'optionBack', 540)"
+        @saveColumn="saveColumn('crud', 'option', 'optionBack', 540)"
+        @on-load="onLoad"
+      >
+        <template slot="menuLeft">
+          <el-button type="warning" size="small" @click="outExport">导出</el-button>
+        </template>
+        <template slot="codeSearch">
+          <el-input v-model="query.code" size="small" placeholder="请输入箱号 多个箱号用空格区分" type="textarea" autosize></el-input>
+        </template>
+      </avue-crud>
+    </basic-container>
+  </div>
+</template>
+
+<script>
+import { getList } from "@/api/boxManagement/LSCabinet/index.js";
+import dicSelect from "@/components/dicSelect/main";
+import { getToken } from "@/util/auth";
+import { getBcorpsattnList } from "@/api/iosBasicData/bcorpsattn";
+export default {
+  name: "久置柜",
+  data() {
+    return {
+      firstPage: false,
+      form: {},
+      query: {
+        longTermDays: 14
+      },
+      loading: false,
+      page: {
+        pageSize: 20,
+        currentPage: 1,
+        total: 0,
+        pageSizes: [10, 20, 30, 40, 50, 100, 200, 300, 400, 500]
+      },
+      selectionList: [],
+      option: {},
+      optionBack: {
+        height: "auto",
+        calcHeight: 30,
+        menuWidth: 140,
+        menu: false,
+        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: "code",
+            search: true,
+            width: 120,
+            overHidden: true
+          },
+          {
+            label: "箱型",
+            prop: "typeName",
+            width: 140,
+            overHidden: true
+          },
+          {
+            label: "放箱号",
+            prop: "containerNumber",
+            overHidden: true,
+            width: 120
+          },
+          {
+            label: "放箱号类型",
+            prop: "containerNumberType",
+            width: 140,
+            search: true,
+            type: "select",
+            dicUrl: "/api/blade-system/dict-biz/dictionary?code=boxCategory",
+            props: {
+              label: "dictValue",
+              value: "dictValue"
+            },
+            overHidden: true
+          },
+          {
+            label: "箱动态",
+            prop: "boxDynamics",
+            overHidden: true
+          },
+          {
+            label: "港口",
+            prop: "addressId",
+            hide: true,
+            search: true,
+            type: "select",
+            filterable: true,
+            remote: true,
+            dicUrl: "/api/blade-los/bports/list?current=1&size=20&cnName={{key}}",
+            props: {
+              label: "cnName",
+              value: "id",
+              res: "data.records"
+            },
+            overHidden: true
+          },
+          {
+            label: "港口",
+            prop: "addressCname",
+            overHidden: true
+          },
+          {
+            label: "场站",
+            prop: "stationId",
+            hide: true,
+            search: true,
+            type: "select",
+            filterable: true,
+            remote: true,
+            dicUrl: "/api/blade-los/bcorps/selectList?corpTypeName=场站&status=0&size=20&current=1&cnName={{key}}",
+            props: {
+              label: "cnName",
+              value: "id",
+              res: "data.records"
+            },
+            overHidden: true
+          },
+          {
+            label: "场站",
+            prop: "stationCname",
+            overHidden: true
+          },
+          {
+            label: "HB/L NO",
+            prop: "billNo",
+            overHidden: true,
+            search: true
+          },
+          {
+            label: "久置天数",
+            prop: "longTermDays",
+            search: true,
+            type: "number",
+            controls: false,
+            precision: 0,
+            searchValue: 14,
+            overHidden: true
+          }
+        ]
+      },
+      data: [],
+      saberUserInfo: {}
+    };
+  },
+  components: {
+    dicSelect
+  },
+  async created() {
+    this.saberUserInfo = JSON.parse(localStorage.getItem("saber-userInfo")).content;
+    this.option = await this.getColumnData(this.getColumnName(540), this.optionBack);
+    this.$nextTick(() => {
+      this.$refs.crud.doLayout();
+      this.$refs.crud.dicInit();
+    });
+  },
+  methods: {
+    searchReset() {
+      this.query = {};
+    },
+    // 搜索按钮点击
+    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 = {}) {
+      if (this.firstPage) {
+        let obj = {};
+        obj = {
+          ...Object.assign(params, this.query),
+          code: this.query.code ? this.query.code.split(" ").join(",") : null
+        };
+        this.loading = true;
+        getList(page.currentPage, page.pageSize, obj)
+          .then(res => {
+            this.data = res.data.data.records;
+            this.page.total = res.data.data.total;
+          })
+          .finally(() => {
+            this.loading = false;
+          });
+      } else {
+        this.firstPage = true;
+      }
+    },
+    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/boxReminderStatistics/longTermCabinetExport", //跳转目标窗口的地址
+        query: {
+          ...config.params, //括号内是要传递给新窗口的参数
+          code: this.query.code ? this.query.code.split(" ").join(",") : null
+        }
+      });
+      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;
+      }
+    },
+    //自定义列重置
+    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;
+    }
+  }
+};
+</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>

+ 1 - 1
src/views/boxManagement/boxTrack/index.vue

@@ -146,7 +146,7 @@ export default {
             label: "箱动态",
             prop: "boxDynamics",
             width: 80,
-            // search: true,
+            search: true,
             // type: "select",
             // dicUrl: "/api/blade-system/dict-biz/dictionary?code=boxDynamics",
             // props: {

+ 462 - 13
src/views/boxManagement/moveOut/detailsPage.vue

@@ -463,7 +463,7 @@
                   v-model="row.curCode"
                   placeholder="币别"
                   label="code"
-                  :url="'/blade-los/bcurrency/obtainRate?deptId=' + deptId + '&date=' + form.purchaseDate + '&type=1'"
+                  :url="'/blade-los/bcurrency/obtainRate?deptId=' + deptId + '&date=' + form.effectiveDate + '&type=1'"
                   :filterable="true"
                   @selectChange="rowDicChange('curCodeD', $event, row)"
                 ></dic-select>
@@ -698,7 +698,7 @@
                     v-model="row.curCode"
                     placeholder="币别"
                     label="code"
-                    :url="'/blade-los/bcurrency/obtainRate?deptId=' + deptId + '&date=' + form.purchaseDate + '&type=1'"
+                    :url="'/blade-los/bcurrency/obtainRate?deptId=' + deptId + '&date=' + form.effectiveDate + '&type=1'"
                     :filterable="true"
                     @selectChange="rowDicChange('curCodeC', $event, row)"
                   ></dic-select>
@@ -778,16 +778,24 @@
         </el-tab-pane>
       </el-tabs>
     </div>
-    <business-reports :id="form.id" :itemIds="itemIds" ref="print" businessValue="MYDL" :type="true"></business-reports>
+    <reports :id="form.id" :assemblyForm="form" businessValue="XGFY" ref="report"></reports>
+    <business-reports
+      :id="form.id"
+      :itemIds="itemCIds"
+      ref="printD"
+      businessValue="XGFY"
+      classifyCode="费用"
+      groupCode="应收"
+      :selecList="selectionfeedList"
+    ></business-reports>
     <business-reports
       :id="form.id"
       :itemIds="itemCIds"
       ref="printC"
-      businessValue="OW-N"
+      businessValue="XGFY"
       classifyCode="费用"
       groupCode="应付"
       :selecList="selectionfeecList"
-      :type="true"
     ></business-reports>
     <reports :id="form.id" :assemblyForm="form" businessValue="MYDL" ref="report"></reports>
     <!--审核弹窗-->
@@ -823,6 +831,43 @@
       pageLabel="退租"
     ></fee-modify>
     <fee-modify-view ref="feeModifyView" :form="form"></fee-modify-view>
+        <reportContainer ref="reportContainer"></reportContainer>
+    <!--结算单位弹窗-->
+    <el-dialog title="打印" :visible.sync="printingDialog" append-to-body width="70%" :close-on-click-modal="false" :before-close="handleClose">
+      <div>
+        <el-row :gutter="10">
+          <el-col :span="4">
+            <avue-tree :option="reportOption" :data="reportTypeData" @node-click="reportNodeClick"></avue-tree>
+          </el-col>
+          <el-col :span="20">
+            <avue-crud
+              :option="optionPrinting"
+              :table-loading="printingLoading"
+              :data="PrintingData"
+              id="out-table"
+              :header-cell-class-name="headerClassName"
+              :row-style="{ height: '20px' }"
+              :cell-style="{ padding: '0px' }"
+            >
+              <template slot-scope="scope" slot="menu">
+                <el-button type="text" size="small" @click="dialogPreviewfun(scope.row)">打印预览</el-button>
+              </template>
+            </avue-crud>
+          </el-col>
+        </el-row>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button size="small" @click="printingDialog = false">取 消</el-button>
+      </span>
+    </el-dialog>
+    <el-dialog title="打印" :visible.sync="selectPrintingDialog" append-to-body width="70%" :close-on-click-modal="false" :before-close="handleClose">
+      <div>
+        <reportformsList ref="reportformsList" @reportRadio="reportRadio"></reportformsList>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button size="small" @click="selectPrintingDialog = false">取 消</el-button>
+      </span>
+    </el-dialog>
   </div>
 </template>
 
@@ -858,9 +903,14 @@ import reports from "@/components/tradeAgency/reports.vue";
 import feeModify from "@/components/feeModify/boxMain.vue";
 import feeModifyView from "@/components/feeModify/view.vue";
 import { dateFormat } from "@/util/date";
+import { getList as reportsList } from "@/api/iosBasicData/reports";
+import { getFeeCenterCorpIds } from "@/api/iosBasicData/feecenter";
+import reportformsList from "@/views/iosBasicData/SeafreightExportF/bills/assembly/reportformsList.vue";
+import { reportsGetReportData } from "@/api/boxManagement/reports";
 import { bcurrencyGetExrate } from "@/api/iosBasicData/rateManagement";
 import { getToken } from "@/util/auth";
 import _ from "lodash";
+import reportContainer from "@/views/iosBasicData/report-container/report-container.vue";
 import { Header } from "element-ui";
 import { values } from "lodash";
 export default {
@@ -955,7 +1005,7 @@ export default {
       itemCIds: null,
       feeType: null,
       selectionList: [],
-      selectionfeedList:[],
+      selectionfeedList: [],
       selectionfeecList: [],
       checkId: "", // 审核需要的id
       batchNo: "",
@@ -1825,7 +1875,79 @@ export default {
       feeCenterListD: [],
       feeCenterListC: [],
       roleName: [],
-      deptId: JSON.parse(localStorage.getItem("sysitemData")).deptId
+      deptId: JSON.parse(localStorage.getItem("sysitemData")).deptId,
+      printingDialog: false, // 打印弹窗开关
+      printingDC: "", // 打印弹窗选择是应收还是应付
+      PrintingData: [], // 打印弹窗列表数据
+      printingLoading: false, // 打印弹窗加载动画
+      optionPrinting: {
+        stripe: true,
+        maxHeight: "250",
+        calcHeight: 30,
+        tip: false,
+        searchShow: true,
+        searchMenuSpan: 6,
+        border: true,
+        selection: true,
+        dialogClickModal: false,
+        refreshBtn: false,
+        columnBtn: false,
+        addBtn: false,
+        viewBtn: false,
+        delBtn: false,
+        editBtn: false,
+        menuWidth: "100",
+        column: [
+          {
+            label: "币别",
+            prop: "curCode",
+            width: 100,
+            cell: true,
+            type: "select",
+            dicData: [
+              {
+                label: "全部",
+                value: null
+              },
+              {
+                label: "USD",
+                value: "USD"
+              },
+              {
+                label: "CNY",
+                value: "CNY"
+              }
+            ],
+            overHidden: true
+          },
+          {
+            label: "客户名称",
+            prop: "cnName",
+            overHidden: true
+          },
+          {
+            label: "客户编号",
+            prop: "code",
+            overHidden: true
+          }
+        ]
+      },
+      reportOption: {
+        nodeKey: "id",
+        addBtn: false,
+        menu: false,
+        size: "small",
+        props: {
+          labelText: "标题",
+          label: "cnName",
+          value: "value",
+          children: "children"
+        }
+      },
+      reportTypeData: [], // 打印选择的数据
+      reportformsObj: {}, // 打印选择的数据
+      selectPrintingDialog: false, // 打印弹窗
+      idArr: []
     };
   },
   components: {
@@ -1834,7 +1956,10 @@ export default {
     businessReports,
     reports,
     feeModify,
-    feeModifyView
+    feeModifyView,
+    reportformsList,
+    reportContainer
+    
   },
   props: {
     detailData: Object,
@@ -1884,6 +2009,330 @@ export default {
         this.getDetail(this.pageIds[nextIndex]);
       }
     },
+
+    // 打印费用
+    printingCostsfun(dc) {
+      this.printingDC = dc;
+      let groupCode = "";
+      let selectionArr = [];
+      this.idArr = [];
+      for (let item of this.selectionfeedList) {
+        if (item.corpId != this.selectionfeedList[0].corpId) {
+          return this.$message.error("请选择相同的结算单位");
+        }
+      }
+      for (let item of this.selectionfeecList) {
+        if (item.corpId != this.selectionfeecList[0].corpId) {
+          return this.$message.error("请选择相同的结算单位");
+        }
+      }
+      if (dc == "D") {
+        groupCode = "应收";
+        selectionArr = this.selectionfeedList;
+        this.idArr = this.selectionfeedList.map(item => {
+          return item.id;
+        });
+      } else {
+        groupCode = "应付";
+        selectionArr = this.selectionfeecList;
+        this.idArr = this.selectionfeecList.map(item => {
+          return item.id;
+        });
+      }
+      if (selectionArr.length > 0) {
+        // 打开选择弹窗
+        this.selectPrintingDialog = true;
+        let page = {
+          pageSize: 10,
+          currentPage: 1,
+          total: 0
+        };
+        this.$nextTick(() => {
+          this.$refs.reportformsList.onLoad(page, {
+            businessType: "XGFY",
+            classifyCode: "费用",
+            groupCode: groupCode
+          });
+        });
+      } else {
+        // 没有多选弹窗
+        this.printingLoading = true;
+        getFeeCenterCorpIds({
+          billId: this.form.id,
+          dc: dc,
+          type: "XGFY"
+        }).then(res => {
+          this.printingLoading = false;
+          res.data.data.forEach(e => {
+            e.$cellEdit = true;
+            e.curCode = null;
+          });
+          this.PrintingData = res.data.data;
+        });
+        this.reportsListfun({
+          businessType: "XGFY",
+          classifyCode: "费用",
+          groupCode: groupCode
+        });
+        this.printingDialog = true;
+      }
+    },
+    // 费用弹窗里的打印
+    dialogPreviewfun(row) {
+      if (!this.reportformsObj.id) {
+        this.$message.warning("请选择打印类型");
+        return;
+      }
+      // 获取报表数据
+      reportsGetReportData({
+        billId: this.form.id,
+        reportCode: this.reportformsObj.classifyCode,
+        groupCode: this.reportformsObj.groupCode,
+        corpIds: row.id,
+        curCode: row.curCode,
+        type: "XGFY"
+      }).then(res => {
+        this.handleReportPreview(this.reportformsObj.url, res.data.data.data);
+      });
+    },
+    // 打印弹窗里回调
+    reportRadio(val) {
+      // 多选打印
+      // 获取报表数据
+      reportsGetReportData({
+        billId: this.form.id,
+        reportCode: val.classifyCode,
+        groupCode: val.groupCode,
+        itemIds: this.idArr.join(","),
+        type: "XGFY"
+      }).then(res => {
+        this.handleReportPreview(val.url, res.data.data.data);
+      });
+    },
+    // 获取打印表格数据
+    reportsListfun(obj) {
+      reportsList(1, 50, obj).then(res => {
+        this.reportTypeData = res.data.data.records;
+        // 获取第一项的值
+        this.reportformsObj = res.data.data.records[0];
+      });
+    },
+    // 打印表格选择
+    reportNodeClick(data) {
+      this.reportformsObj = data;
+    },
+    
+    // 预览报表
+    handleReportPreview(url, data) {
+      console.log(url, 1670);
+      console.log(data, 1671);
+      Stimulsoft.Base.StiLicense.key =
+        "6vJhGtLLLz2GNviWmUTrhSqnOItdDwjBylQzQcAOiHn0s4gy0Fr5YoUZ9V00Y0igCSFQzwEqYBh/N77k4f0fWXTHW5rqeBNLkaurJDenJ9o97TyqHs9HfvINK18Uwzsc/bG01Rq+x3H3Rf+g7AY92gvWmp7VA2Uxa30Q97f61siWz2dE5kdBVcCnSFzC6awE74JzDcJMj8OuxplqB1CYcpoPcOjKy1PiATlC3UsBaLEXsok1xxtRMQ283r282tkh8XQitsxtTczAJBxijuJNfziYhci2jResWXK51ygOOEbVAxmpflujkJ8oEVHkOA/CjX6bGx05pNZ6oSIu9H8deF94MyqIwcdeirCe60GbIQByQtLimfxbIZnO35X3fs/94av0ODfELqrQEpLrpU6FNeHttvlMc5UVrT4K+8lPbqR8Hq0PFWmFrbVIYSi7tAVFMMe2D1C59NWyLu3AkrD3No7YhLVh7LV0Tttr/8FrcZ8xirBPcMZCIGrRIesrHxOsZH2V8t/t0GXCnLLAWX+TNvdNXkB8cF2y9ZXf1enI064yE5dwMs2fQ0yOUG/xornE";
+      // Stimulsoft.Base.StiLicense.Key = '6vJhGtLLLz2GNviWmUTrhSqnOItdDwjBylQzQcAOiHkcgIvwL0jnpsDqRpWg5FI5kt2G7A0tYIcUygBh1sPs7plofUOqPB1a4HBIXJB621mau2oiAIj+ysU7gKUXfjn/D5BocmduNB+ZMiDGPxFrAp3PoD0nYNkkWh8r7gBZ1v/JZSXGE3bQDrCQCNSy6mgby+iFAMV8/PuZ1z77U+Xz3fkpbm6MYQXYp3cQooLGLUti7k1TFWrnawT0iEEDJ2iRcU9wLqn2g9UiWesEZtKwI/UmEI2T7nv5NbgV+CHguu6QU4WWzFpIgW+3LUnKCT/vCDY+ymzgycw9A9+HFSzARiPzgOaAuQYrFDpzhXV+ZeX31AxWlnzjDWqpfluygSNPtGul5gyNt2CEoJD1Yom0VN9fvRonYsMsimkFFx2AwyVpPcs+JfVBtpPbTcZscnzUdmiIvxv8Gcin6sNSibM6in/uUKFt3bVgW/XeMYa7MLGF53kvBSwi78poUDigA2n12SmghLR0AHxyEDIgZGOTbNI33GWu7ZsPBeUdGu55R8w='
+      Stimulsoft.Base.Localization.StiLocalization.addLocalizationFile("/reports/stimulsoft/Localization/zh-CHS.xml", true, "zh-CHS");
+      Stimulsoft.Base.Localization.StiLocalization.setLocalizationFile("/reports/stimulsoft/Localization/zh-CHS.xml");
+      // 工具栏
+      var options = new Stimulsoft.Viewer.StiViewerOptions();
+      options.height = "100%";
+      options.appearance.scrollbarsMode = true; // 滚动条模式
+      options.toolbar.showDesignButton = false; // 显示设计按钮
+      options.toolbar.showAboutButton = false; // 显示关于按钮
+      options.toolbar.showResourcesButton = false; // 显示资源按钮
+      options.toolbar.showFullScreenButton = false; // 显示全屏按钮
+      options.toolbar.showOpenButton = false; // 显示打开按钮
+      options.appearance.showTooltips = false; // 显示工具提示
+      options.appearance.showDialogsHelp = false; // 显示对话框帮助
+      options.exports.showExportToDocument = false; // 显示导出到文档
+      options.toolbar.showParametersButton = true; // 显示参数按钮
+      options.appearance.bookmarksPrint = true; // 书签打印
+      options.toolbar.showSendEmailButton = true; // 显示发送邮件按钮
+      options.email.showEmailDialog = false;
+      options.email.showExportDialog = false;
+      // options.toolbar.showPrintButton = false // 打印按钮是否显示   下面直接自定义控制打印弹窗是否开启
+
+      // printDestination 参数:用于指定报表打印的目标位置,可以是打印机、PDF 文件或者直接打印到浏览器等。
+      // Stimulsoft.Viewer.StiPrintDestination.Direct:表示直接打印到打印机,即将报表内容直接发送至打印机进行打印。
+      // 通过设置不同的 printDestination 参数,你可以控制报表打印的行为,例如是直接打印到打印机,还是生成 PDF 文件,或者直接在浏览器中预览打印内容等。
+      options.toolbar.printDestination = Stimulsoft.Viewer.StiPrintDestination.Direct;
+      // htmlRenderMode html渲染模式
+      options.appearance.htmlRenderMode = Stimulsoft.Report.Export.StiHtmlExportMode.Table;
+      // 是创建一个 Stimulsoft 报表查看器的实例的代码
+      let viewer = new Stimulsoft.Viewer.StiViewer(options, "StiViewer", false);
+      viewer.onEmailReport = this.testMail;
+      // 报表
+      console.log("创建一个报表实例");
+      console.log();
+      let report = new window.Stimulsoft.Report.StiReport();
+
+      // 加载文件
+      console.log("从url加载报表");
+      // report.loadFile("/reports/stimulsoft/demos/SimpleList.mrt");
+      report.load(url);
+
+      // data.pageOne = "Page : 1 of 1";
+      // // 处理超长数据
+      // if (data.hshipperDetails) {
+      //   var consignerIndex2 = data.hshipperDetails.indexOf("\n");
+      //   for (let i = 0; i < 4; i++) {
+      //     consignerIndex2 = data.hshipperDetails.indexOf("\n", consignerIndex2 + 1);
+      //   }
+      //   if (consignerIndex2 != -1) {
+      //     var hshipperDetails = data.hshipperDetails.substring(consignerIndex2 + 2, data.hshipperDetails.length);
+      //     data.hshipperDetails = data.hshipperDetails.substring(0, consignerIndex2) + " *";
+      //     data.commodityDescr += "\n*" + hshipperDetails;
+      //   }
+      // }
+
+      // if (data.hconsigneeDetails) {
+      //   var consigneeIndex2 = data.hconsigneeDetails.indexOf("\n");
+      //   for (let i = 0; i < 3; i++) {
+      //     consigneeIndex2 = data.hconsigneeDetails.indexOf("\n", consigneeIndex2 + 1);
+      //   }
+      //   if (consigneeIndex2 != -1) {
+      //     var hconsigneeDetails = data.hconsigneeDetails.substring(consigneeIndex2 + 2, data.hconsigneeDetails.length);
+      //     data.hconsigneeDetails = data.hconsigneeDetails.substring(0, consigneeIndex2) + " **";
+      //     data.commodityDescr += "\n**" + hconsigneeDetails;
+      //   }
+      // }
+
+      // if (data.hnotifyDetails) {
+      //   var notifierIndex2 = data.hnotifyDetails.indexOf("\n");
+      //   for (let i = 0; i < 3; i++) {
+      //     notifierIndex2 = data.hnotifyDetails.indexOf("\n", notifierIndex2 + 1);
+      //   }
+      //   if (notifierIndex2 != -1) {
+      //     var hnotifyDetails = data.hnotifyDetails.substring(notifierIndex2 + 2, data.hnotifyDetails.length);
+      //     data.hnotifyDetails = data.hnotifyDetails.substring(0, notifierIndex2) + " ***";
+      //     data.commodityDescr += "\n***" + hnotifyDetails;
+      //   }
+      // }
+
+      // // 处理箱号
+      // if (this.isPrintTheBoxNumber) {
+      //   data.commodityDescr += "\n.\n.\n";
+      // }
+
+      // // PLACE & DATE OF ISSUE
+      // data.placeAndDateOfIssue = "";
+      // if (data.issueAt) {
+      //   data.placeAndDateOfIssue += data.issueAt;
+      // }
+      // if (data.issueDate) {
+      //   let date = new Date(data.issueDate.replace(/-/g, "/"));
+      //   let yyyy = date.getFullYear();
+      //   let mmmm = date.toDateString().split(" ")[1];
+      //   let dd = date.getDate();
+      //   data.placeAndDateOfIssue += ", " + dd + "-" + mmmm + "-" + yyyy;
+      // }
+
+      // // Total number of containers or packages received by the Carriers
+      // if (data.preContainersList) {
+      //   let boxMap = new Map();
+      //   for (let boxQuantity of data.preContainersList) {
+      //     if (boxMap.get(boxQuantity.cntrTypeCode)) {
+      //       let v = boxMap.get(boxQuantity.cntrTypeCode);
+      //       boxMap.set(boxQuantity.cntrTypeCode, v + boxQuantity.quantity);
+      //     } else {
+      //       boxMap.set(boxQuantity.cntrTypeCode, boxQuantity.quantity);
+      //     }
+      //   }
+      //   let boxs = "";
+      //   boxMap.forEach(function(value, key, map) {
+      //     boxs += value + "x" + key + ", ";
+      //   });
+      //   boxs = boxs.substring(0, boxs.length - 2);
+
+      //   data.boxQuantity = boxs + " CONTAINER(S) ONLY";
+      // }
+
+      // // Number of original B/Ls
+      // if (data.numberOfObl) {
+      //   data.numberOfObl += " (" + data.numberOfOblDigit + ")";
+      // }
+
+      // if (data.commodityDescr) {
+      //   var descriptionIndex2 = data.commodityDescr.indexOf("\n");
+      //   for (let i = 0; i < 19; i++) {
+      //     descriptionIndex2 = data.commodityDescr.indexOf("\n", descriptionIndex2 + 1);
+      //   }
+      //   if (descriptionIndex2 != -1) {
+      //     data.pageOne = "Page : 1 of 2";
+      //     data.pageTwo = "Page : 2 of 2";
+      //     var extraLongText = data.commodityDescr.substring(descriptionIndex2 + 2, data.commodityDescr.length);
+      //     data.commodityDescr = data.commodityDescr.substring(0, descriptionIndex2);
+      //     data.extraLongTips = "** TO BE CONTINUED ON ATTACHED LIST **";
+      //     data.extraLongText = extraLongText;
+      //   }
+      // }
+
+      // console.log(data.hshipperDetails, 'hshipperDetails2')
+
+      // 创建一个 Stimulsoft 数据集(DataSet)的实例的代码
+      var dataSet = new Stimulsoft.System.Data.DataSet("reportData");
+
+      dataSet.readJson(data); // 用于将 JSON 格式的数据加载到数据集中。data 是包含报表数据的 JSON 对象。
+      // 这是一个方法调用,用于在报表中注册数据源。参数 'reportData' 是数据源的名称,
+      // 第二个 'reportData' 是数据源的别名,dataSet 则是之前创建的数据集实例
+      report.regData("reportData", "reportData", dataSet);
+      // 从模版和数据加载报表
+      // loadReport(report, '', {})
+
+      // 这是将报表对象指定给报表查看器的属性。viewer 是报表查看器的实例,而 report 是之前创建的报表对象。
+      viewer.report = report;
+
+      this.$refs.reportContainer.showContainer(
+        () => {
+          setTimeout(() => {
+            viewer.renderHtml("reportContainer");
+            this.createViewerButtons(viewer);
+          }, 50);
+        },
+        () => {}
+      );
+      console.log("加载成功完成!");
+    },
+    createViewerButtons(viewer) {
+      viewer.jsObject.collections.images["myClose.png"] =
+        "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAA0ElEQVQ4ja3TO05CQRQG4A8iOwAbtYWETndAaecK7NwCKmETtJZsSBNLobEz8ZFIJQ0UnOGSm3DnYviTybzO/895DQXGWGCVGQuMEqkRcwcfuMOLalziCaf4TIe9UG9nyMJmFRzNGoRK1BU4xxx9G7cfwostciGk+x8MqgySwDXe4tU53hVV+MNtTmAoX84JGv9NYgrHyR6DV8wUSW7hItZLm36ZVoVQxsFJLOMsPOrH/h7dQwR2cdxOTEn8DtUbPGc4V2H7Vb4Yqfedf/GYSGt8VUmxgyfuBAAAAABJRU5ErkJggg==";
+      const closeBtn = viewer.jsObject.SmallButton("closeBtn", "关闭", "myClose.png");
+      // 增加打印弹窗配置
+      const printBtn = viewer.jsObject.SmallButton("printBtn", "打印报表", "myClose.png");
+      // console.log(viewer.jsObject.print(),'1013')
+      // 获取 关闭按钮的dom元素位置
+      const toolbarTable = viewer.jsObject.controls.toolbar.firstChild.firstChild;
+      const buttonsTable = toolbarTable.rows[0].lastChild.lastChild;
+      const userButtonCell = buttonsTable.rows[0].insertCell(0);
+      // 获取打印按钮的位置
+      const buttonsTablePrint = toolbarTable.rows[0].childNodes[0].lastChild; // 打印按钮
+      const userButtonPrint = buttonsTablePrint.rows[0].childNodes[0]; // 打印按钮dom位置
+
+      userButtonPrint.addEventListener("click", event => {
+        console.log("打印点击");
+        // event.preventDefault()
+      });
+      userButtonPrint.addEventListener("mouseover", event => {
+        console.log("移入打印按钮");
+        console.log(event, 1035);
+      });
+
+      userButtonCell.className = "stiJsViewerClearAllStyles";
+      userButtonCell.appendChild(closeBtn); // 添加关闭节点
+
+      // userButtonPrint.prepend(printBtn) // 在 printBtn 节点里最前面增加一个子级节点
+
+      let that = this;
+      // 关闭按钮的监听点击
+      closeBtn.action = function() {
+        console.log(that.$refs.ReportContainer, "1022");
+        if (that.$refs.reportContainer) that.$refs.reportContainer.hideContainer();
+      };
+
+      // // // 打印按钮监听
+      // printBtn.action = (e)=>{
+      //     console.log('打印')
+      //     window.print()
+      // }
+    },
     viewFininvoices(row) {
       this.fininvoicesData = [];
       fininvoicesGetAccBillIdList({ accBillId: row.accBillId }).then(res => {
@@ -2177,12 +2626,12 @@ export default {
         $cellEdit: true
       });
     },
-    
+
     async feedAddRow() {
       if (!this.form.id) {
         return this.$message.error("请保存数据");
       }
-      await this.checkRate(null, this.form.purchaseDate, null, 1, this.deptId);
+      await this.checkRate(null, this.form.effectiveDate, null, 1, this.deptId);
       this.feeCenterListD.push({
         pid: this.form.id,
         feesType: 1,
@@ -2197,7 +2646,7 @@ export default {
       if (!this.form.id) {
         return this.$message.error("请保存数据");
       }
-      await this.checkRate(null, this.form.purchaseDate, null, 1, this.deptId);
+      await this.checkRate(null, this.form.effectiveDate, null, 1, this.deptId);
       this.feeCenterListC.push({
         pid: this.form.id,
         feesType: 1,
@@ -2214,7 +2663,7 @@ export default {
     boxSelectionChange(list) {
       this.boxSelectionList = list;
     },
-     feedChange(list) {
+    feedChange(list) {
       let ids = [];
       list.forEach(e => {
         ids.push(e.id);
@@ -2988,7 +3437,7 @@ export default {
               return this.$message.error("请完善箱明细信息");
             }
           }
-         for (let row of this.feeCenterListD) {
+          for (let row of this.feeCenterListD) {
             row.amount = row.curCode == this.getLocalCurrency() ? row.amountCNY : row.amountUSD;
             if (!row.billType || !row.corpCnName || !row.feeCnName || !row.curCode || !row.price || !row.quantity) {
               this.$refs.crud2.rowCell(row, row.$index);

+ 387 - 0
src/views/iosBasicData/containerReminder/index.vue

@@ -0,0 +1,387 @@
+<template>
+  <div>
+    <basic-container>
+      <avue-crud
+        :option="option"
+        :table-loading="loading"
+        :data="data"
+        :page.sync="page"
+        :search.sync="query"
+        v-model="form"
+        :header-cell-class-name="headerClassName"
+        ref="crud"
+        @search-change="searchChange"
+        @search-reset="searchReset"
+        @selection-change="selectionChange"
+        @current-change="currentChange"
+        @size-change="sizeChange"
+        @refresh-change="refreshChange"
+        @resetColumn="resetColumn('crud', 'option', 'optionBack', 539)"
+        @saveColumn="saveColumn('crud', 'option', 'optionBack', 539)"
+        @on-load="onLoad"
+      >
+        <template slot="menuLeft">
+          <el-button type="primary" size="small" @click="allClick('excel导入')">import</el-button>
+          <el-button type="warning" size="small" @click="outExport">export</el-button>
+        </template>
+
+        <template slot="cntrNoSearch">
+          <el-input v-model="query.cntrNo" size="small" placeholder="请输入箱号 多个箱号用空格区分" type="textarea" autosize></el-input>
+        </template>
+      </avue-crud>
+    </basic-container>
+    <el-dialog title="导入数据" append-to-body :visible.sync="excelBox" width="555px" :close-on-click-modal="false" v-dialog-drag>
+      <avue-form
+        v-if="excelBox"
+        :option="excelOption"
+        v-model="excelForm"
+        :table-loading="excelLoading"
+        :upload-before="uploadBefore"
+        :upload-after="onSuccess"
+      >
+        <template slot="excelTemplate">
+          <el-button type="primary" @click="handleGet"> 点击下载<i class="el-icon-download el-icon--right"></i> </el-button>
+        </template>
+      </avue-form>
+      <p style="text-align: center;color: #DC0505">
+        温馨提示 第一次导入时请先下载模板
+      </p>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { getList } from "@/api/iosBasicData/containerReminder.js";
+import dicSelect from "@/components/dicSelect/main";
+import { getToken } from "@/util/auth";
+import { getBcorpsattnList } from "@/api/iosBasicData/bcorpsattn";
+export default {
+  name: "ReturnContainerReminder",
+  data() {
+    return {
+      excelBox:false,
+      excelForm: {},
+      excelLoading: false,
+      excelOption: {
+        submitBtn: false,
+        emptyBtn: false,
+        column: [
+          {
+            label: "模板下载",
+            prop: "excelTemplate",
+            formslot: true,
+            span: 24,
+            display: true
+          },
+          {
+            label: "模板上传",
+            prop: "excelFile",
+            type: "upload",
+            drag: true,
+            loadText: "模板上传中,请稍等",
+            span: 24,
+            propsHttp: {
+              res: "data"
+            },
+            tip: "请上传 .xls,.xlsx 标准格式文件",
+            action: "/api/blade-los/boxdynamicsrecord/importExcel?type=JC"
+          }
+        ]
+      },
+      firstPage: false,
+      form: {},
+      query: {},
+      loading: false,
+      page: {
+        pageSize: 20,
+        currentPage: 1,
+        total: 0,
+        pageSizes: [10, 20, 30, 40, 50, 100, 200, 300, 400, 500]
+      },
+      selectionList: [],
+      option: {},
+      optionBack: {
+        height: "auto",
+        calcHeight: 30,
+        menuWidth: 140,
+        menu: false,
+        tip: false,
+        searchShow: true,
+        searchMenuSpan: 18,
+        border: true,
+        index: true,
+        addBtn: false,
+        viewBtn: false,
+        editBtn: false,
+        delBtn: false,
+        selection: true,
+        searchIcon: true,
+        align: "center",
+        searchIndex: 3,
+        column: [
+          {
+            label: "branchName",
+            prop: "branchId",
+            hide: true,
+            type: "select",
+            filterable: true,
+            dicUrl: "/api/blade-system/dept/lazy-list",
+            props: {
+              label: "deptName",
+              value: "id"
+            },
+            search: false
+          },
+          {
+            label: "ContainerNO",
+            prop: "cntrNo",
+            search: true,
+            width: 120,
+            overHidden: true
+          },
+          {
+            label: "ReleaseRef",
+            prop: "containerNumber",
+            overHidden: true,
+            width: 120,
+            search: true
+          },
+          {
+            label: "ContainerType",
+            prop: "boxType",
+            width: 140,
+            overHidden: true
+          },
+          {
+            label: "port",
+            prop: "podCnName",
+            overHidden: true
+          },
+          {
+            label: "depot",
+            prop: "podStationCname",
+            overHidden: true
+          },
+          {
+            label: "depotLink",
+            prop: "podCyContact",
+            overHidden: true
+          },
+          {
+            label: "depotTel",
+            prop: "podCyTel",
+            overHidden: true
+          },
+          {
+            label: "depotEMail",
+            prop: "podCyEmail",
+            width: 120,
+            overHidden: true
+          },
+          {
+            label: "MB/L NO",
+            prop: "mblno",
+            overHidden: true,
+            search: true
+          },
+          {
+            label: "HB/L NO",
+            prop: "hblno",
+            overHidden: true,
+            search: true
+          },
+          {
+            label: "ReleaseRefType",
+            prop: "boxSrcType",
+            search: true,
+            searchLabelWidth: 90,
+            type: "select",
+            dicUrl: "/api/blade-system/dict-biz/dictionary?code=boxCategory",
+            props: {
+              label: "dictValue",
+              value: "dictValue"
+            },
+            hide: true,
+            overHidden: true
+          }
+        ]
+      },
+      data: [],
+      saberUserInfo: {}
+    };
+  },
+  components: {
+    dicSelect
+  },
+  async created() {
+    this.saberUserInfo = JSON.parse(localStorage.getItem("saber-userInfo")).content;
+    this.option = await this.getColumnData(this.getColumnName(539), this.optionBack);
+    if (this.saberUserInfo.role_name.indexOf("admin") != -1 || this.saberUserInfo.role_name.indexOf("总部") != -1) {
+      this.option.searchMenuSpan = 12;
+      this.option.column.forEach(item => {
+        if (item.prop == "branchId") {
+          item.search = true;
+        }
+      });
+    }
+    this.$nextTick(() => {
+      this.$refs.crud.doLayout();
+      this.$refs.crud.dicInit();
+    });
+  },
+  methods: {
+    allClick(name) {
+      if (name == "excel导入") {
+        this.excelBox = true;
+      }
+    },
+    
+    // 下载模板
+    handleGet() {
+      window.open(`/api/blade-los/boxReminderStatistics/returnContainerReminderExport?${this.website.tokenHeader}=${getToken()}`);
+    },
+    uploadBefore(file, done, loading) {
+      done();
+      loading = true;
+    },
+    // 上传成功
+    onSuccess(res, done, loading, column) {
+      if (res == "操作成功" || res.msg == "操作成功") {
+        this.$message.success("上传成功!");
+      }
+      this.excelBox = false;
+      // this.$message.success("导入成功!");
+      loading = false;
+      this.onLoad(this.page, this.query);
+      done();
+    },
+    searchReset() {
+      this.query = {};
+    },
+    // 搜索按钮点击
+    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),
+        cntrNo: this.query.cntrNo ? this.query.cntrNo.split(" ").join(",") : null
+      };
+      this.loading = true;
+      getList(page.currentPage, page.pageSize, obj)
+        .then(res => {
+          this.data = res.data.data.records;
+          this.page.total = res.data.data.total;
+        })
+        .finally(() => {
+          this.loading = false;
+        });
+    },
+    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/boxReminderStatistics/returnContainerReminderExport", //跳转目标窗口的地址
+        query: {
+          ...config.params, //括号内是要传递给新窗口的参数
+          cntrNo: this.query.cntrNo ? this.query.cntrNo.split(" ").join(",") : null
+        }
+      });
+      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;
+      }
+    },
+    //自定义列重置
+    async resetColumn(ref, option, optionBack, code) {
+      this[option] = this[optionBack];
+      const inSave = await this.delColumnData(this.getColumnName(code), this[optionBack]);
+      if (this.saberUserInfo.role_name.indexOf("admin") != -1 || this.saberUserInfo.role_name.indexOf("总部") != -1) {
+        this.option.searchMenuSpan = 12;
+        this.option.column.forEach(item => {
+          if (item.prop == "branchId") {
+            item.search = true;
+          }
+        });
+      }
+      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;
+    }
+  }
+};
+</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>

+ 2 - 2
src/views/iosBasicData/financialManagement/fininvoicesOutput/index.vue

@@ -463,14 +463,14 @@ export default {
           },
           {
             label: "MB/L NO",
-            prop: "mblno",
+            prop: "mblnos",
             search: true,
             searchOrder: 2,
             overHidden: true
           },
           {
             label: "HB/L NO",
-            prop: "hblno",
+            prop: "hblnos",
             search: true,
             searchOrder: 2.2,
             overHidden: true

+ 3 - 3
src/views/ow/owTask/detailsPage.vue

@@ -86,14 +86,14 @@
                     style="width: 100%;"
                   >
                   </dic-select>
-                  <el-tooltip class="item" effect="dark" content="导入OW合约" placement="top">
+                  <!-- <el-tooltip class="item" effect="dark" content="导入OW合约" placement="top">
                     <el-button
                       v-show="form.purchaseCompanyName"
                       icon="el-icon-search"
                       @click.stop="inOwhy"
                       :disabled="editDisabled || (fixData && form.whetherEnable == '是')"
                     />
-                  </el-tooltip>
+                  </el-tooltip> -->
                 </span>
               </tempalte>
               <tempalte slot="ownerName">
@@ -297,7 +297,7 @@
               <template slot="boxTubeRemarks">
                 <el-input
                   v-model="form.boxTubeRemarks"
-                  :disabled="fixData || (fixData && form.whetherEnable == '是')"
+                  :disabled="editDisabled || (fixData && form.whetherEnable == '是')"
                   type="textarea"
                   :autosize="{ minRows: 2, maxRows: 4 }"
                   placeholder="请输入 箱管备注"