Browse Source

1.新加进口换单模块
2.海运进口 新加4个接口
3.财务管理 新加导出 检索条件
4.营业费用 新加字段 修改删除规则
5.客户订舱 修改删除规则
6.给新模块加页面缓存

Qukatie 3 months ago
parent
commit
91edcc7f5e

+ 93 - 0
src/api/iosBasicData/ImportExchange.js

@@ -0,0 +1,93 @@
+import request from '@/router/axios';
+//查询列表
+export const getList = (current, size, params) => {
+  return request({
+    url: '/api/blade-los/changeOrder/list',
+    method: 'get',
+    params: {
+      ...params,
+      current,
+      size,
+    }
+  })
+}
+//申请换单
+export const applySwitch = (params) => {
+  return request({
+    url: '/api/blade-los/changeOrder/applySwitch',
+    method: 'get',
+    params: params
+  })
+}
+//撤销换单
+export const revokeSwitch = (params) => {
+  return request({
+    url: '/api/blade-los/changeOrder/revokeSwitch',
+    method: 'get',
+    params: params
+  })
+}
+//电子提货单
+export const electronBillOfLading = (params) => {
+  return request({
+    url: '/api/blade-los/changeOrder/electronBillOfLading',
+    method: 'get',
+    params: params
+  })
+}
+//撤销电子提货单
+export const revokeElectronBillOfLading = (params) => {
+  return request({
+    url: '/api/blade-los/changeOrder/revokeElectronBillOfLading',
+    method: 'get',
+    params: params
+  })
+}
+//确认换单
+export const confirmExchangeOrder = (params) => {
+  return request({
+    url: '/api/blade-los/changeOrder/confirmExchangeOrder',
+    method: 'get',
+    params: params
+  })
+}
+//确认设备单
+export const confirmEquipmentList = (params) => {
+  return request({
+    url: '/api/blade-los/changeOrder/confirmEquipmentList',
+    method: 'get',
+    params: params
+  })
+}
+//确认收押箱款
+export const confirmPaymentCollection = (data) => {
+  return request({
+    url: '/api/blade-los/changeOrder/confirmPaymentCollection',
+    method: 'post',
+    data: data
+  })
+}
+//确认退押箱款
+export const confirmRefund = (data) => {
+  return request({
+    url: '/api/blade-los/changeOrder/confirmRefund',
+    method: 'post',
+    data: data
+  })
+}
+//换单文件保存
+export const changeOrderFile = (data) => {
+  return request({
+    url: '/api/blade-los/changeOrder/changeOrderFile',
+    method: 'post',
+    data: data
+  })
+}
+//换单文件列表
+export const changeOrderList = (params) => {
+  return request({
+    url: '/api/blade-los/changeOrder/changeOrderList',
+    method: 'get',
+    params: params
+  })
+}

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

@@ -2246,6 +2246,9 @@ const columnName = [{
 },{
   code: 531,
   name: '货代-财务管理-营业费用明细'
+},{
+  code: 532,
+  name: '货代-进口换单-进口换单列表页'
 }
 ]
 export const getColumnName = (key) => {

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

@@ -4468,5 +4468,33 @@ export default [{
     },
     component: () => import( /* webpackChunkName: "views" */ '@/views/ow/owReminder/index')
   }]
+},
+{
+  path: '/iosBasicData/ImportExchange/index',
+  component: Layout,
+  hidden: true,
+  children: [{
+    path: '/iosBasicData/ImportExchange/index',
+    name: '进口换单(F)',
+    meta: {
+      i18n: '/iosBasicData/ImportExchange/index',
+      keepAlive: true,
+    },
+    component: () => import( /* webpackChunkName: "views" */ '@/views/iosBasicData/ImportExchange/index')
+  }]
+},
+{
+  path: '/iosBasicData/financialManagement/reimbursement/index',
+  component: Layout,
+  hidden: true,
+  children: [{
+    path: '/iosBasicData/financialManagement/reimbursement/index',
+    name: '营业费用(N)',
+    meta: {
+      i18n: '/iosBasicData/financialManagement/reimbursement/index',
+      keepAlive: true,
+    },
+    component: () => import( /* webpackChunkName: "views" */ '@/views/iosBasicData/financialManagement/reimbursement/index')
+  }]
 }
 ]

+ 258 - 0
src/views/iosBasicData/ImportExchange/components/fileUpdate.vue

@@ -0,0 +1,258 @@
+<template>
+    <div>
+        <el-dialog title="上传附件" :visible.sync="dialogVisible" append-to-body width="60%" :before-close="handleClose">
+            <avue-crud v-if="dialogVisible" :option="option" :table-loading="loading" :data="data" ref="crud"
+                id="out-table" :header-cell-class-name="headerClassName">
+                <template slot="menuLeft">
+                    <el-tabs v-model="type" type="card" @tab-click="handleClick">
+                        <el-tab-pane label="换单文件" name="1"></el-tab-pane>
+                        <el-tab-pane label="设备单文件" name="2"></el-tab-pane>
+                    </el-tabs>
+                    <div style="display: flex;">
+                        <el-upload :headers="headers" action="/api/blade-resource/oss/endpoint/put-file"
+                            :on-success="onSuccess" :on-error="onError">
+                            <el-button type="primary" size="small" plain>点击上传
+                            </el-button>
+                        </el-upload>
+                    </div>
+                </template>
+                <template slot="menu" slot-scope="{ row, index }">
+                    <el-button size="small" type="text" @click="rowDownload(row, index)">下 载
+                    </el-button>
+                    <el-button size="small" type="text" @click="rowDel(row, index)">删 除
+                    </el-button>
+                </template>
+            </avue-crud>
+            <span slot="footer" class="dialog-footer">
+                <el-button @click="dialogVisible = false" size="mini">关 闭</el-button>
+            </span>
+        </el-dialog>
+    </div>
+</template>
+
+<script>
+import {
+    changeOrderFile,
+    changeOrderList
+} from "@/api/iosBasicData/ImportExchange.js";
+import { getToken } from "@/util/auth";
+import { filescenterRemove } from "@/api/iosBasicData/filescenter";
+export default {
+    props: {
+    },
+    data() {
+        return {
+            headers: { "Blade-Auth": "Bearer " + getToken() },
+            quotationObj: null,
+            ids: null,
+            id: null,
+            data: [],
+            type: '1',
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0
+            },
+            dialogVisible: false,
+            loading: false,
+            excelOption: {
+                submitBtn: false,
+                emptyBtn: false,
+                column: [
+                    {
+                        label: "附件上传",
+                        prop: "excelFile",
+                        type: "upload",
+                        dataType: "string",
+                        loadText: "模板上传中,请稍等",
+                        span: 24,
+                        propsHttp: {
+                            res: "data",
+                            url: "link"
+                        },
+                        action: "/api/blade-resource/oss/endpoint/put-file"
+                    }
+                ]
+            },
+            option: {
+                height: 500,
+                calcHeight: 30,
+                border: true,
+                index: true,
+                addBtn: false,
+                viewBtn: false,
+                delBtn: false,
+                editBtn: false,
+                menu: true,
+                menuWidth: 120,
+                align: 'center',
+                column: [
+                    {
+                        label: "自定义序号",
+                        prop: "serialNo",
+                        cell: true,
+                        width: "100"
+                    },
+                    {
+                        label: "文件名",
+                        prop: "fileName",
+                        cell: true,
+                        width: "120",
+
+                    },
+                    {
+                        label: "文件扩展名",
+                        prop: "fileExt",
+                        cell: true,
+                        width: "120",
+                    },
+                    {
+                        label: "文件地址",
+                        prop: "url",
+                        cell: true,
+                        width: "500"
+                    },
+                    {
+                        label: "备注",
+                        prop: "remarks",
+                        cell: true,
+                    },
+                ]
+            },
+        }
+    },
+    async created() {
+        // this.option = await this.getColumnData(this.getColumnName(309.6), this.optionBack);
+    },
+    methods: {
+        handleClick() {
+            this.onLoad()
+        },
+        rowDownload(row) {
+            window.open(`${row.url}?${this.website.tokenHeader}=${getToken()}`);
+        },
+        rowDel(row) {
+            this.$confirm("确定将选择数据删除?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning"
+            })
+                .then(() => {
+                    return filescenterRemove(row.id);
+                })
+                .then(() => {
+                    this.onLoad();
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!"
+                    });
+                });
+        },
+        openDialog(row) {
+            console.log(row)
+            this.id = row.id
+            this.dialogVisible = true
+            this.onLoad()
+        },
+        onSuccess(response, file, fileList) {
+            console.log(response, file, fileList)
+            let obj = {
+                pid: this.id,
+                type: this.type,
+                classifyCode: this.type == 1 ? '换单' : '设备单',
+                serialNo: this.data.length + 1,
+                fileName: response.data.originalName,
+                fileExt: response.data.originalName,
+                url: response.data.link,
+
+            }
+            changeOrderFile([obj]).then(
+                this.onLoad()
+            )
+
+        },
+        handleCurrentRowChange(val) {
+            this.quotationObj = val
+        },
+        submit() {
+            if (!this.quotationObj) {
+                return this.$message.error("请选择数据");
+            }
+            delete this.quotationObj.id
+            this.$emit('importData', this.quotationObj)
+            this.dialogVisible = false;
+        },
+        onLoad() {
+            let obj = {
+                type: this.type,
+                id: this.id,
+            }
+            this.loading = true;
+            changeOrderList(obj).then(res => {
+                console.log(res.data.data)
+                this.data = res.data.data;
+                // this.page.total = res.data.data.total;
+            }).finally(() => {
+                this.loading = false;
+            })
+        },
+        //自定义列保存
+        async saveColumn(ref, option, optionBack, code) {
+            /**
+             * 已定义全局方法,直接使用,saveColumnData保存列数据方法,参数传值(表格名称,当前表格的option数据)
+             * 已定义全局方法,直接使用,getColumnName方法用来获取枚举值,参数根据自己定义的code值获取中文名
+             * 一定要执行异步操作,要等接口成功返回,才能执行下一行代码
+             */
+            const inSave = await this.saveColumnData(this.getColumnName(code), this[option]);
+            if (inSave) {
+                this.$message.success("保存成功");
+                //关闭窗口
+                this.$refs[ref].$refs.dialogColumn.columnBox = false;
+                this.searchReset()
+            }
+        },
+        //自定义列重置
+        async resetColumn(ref, option, optionBack, code) {
+            this[option] = this[optionBack];
+            const inSave = await this.delColumnData(this.getColumnName(code), this[optionBack]);
+            if (inSave) {
+                this.$message.success("重置成功");
+                this.$refs[ref].$refs.dialogColumn.columnBox = false;
+            }
+        },
+
+        // 更改表格颜色
+        headerClassName(tab) {
+            //颜色间隔
+            let back = ""
+            if (tab.columnIndex >= 0 && tab.column.level === 1) {
+                if (tab.columnIndex % 2 === 0) {
+                    back = "back-one"
+                } else if (tab.columnIndex % 2 === 1) {
+                    back = "back-two"
+                }
+            }
+            return back;
+        },
+
+    }
+}
+</script>
+
+<style scoped>
+::v-deep#out-table .back-one {
+    background: #ecf5ff !important;
+    text-align: center;
+    padding: 4px 0;
+}
+
+::v-deep#out-table .back-two {
+    background: #ecf5ff !important;
+    text-align: center;
+    padding: 4px 0;
+}
+
+::v-deep .el-upload-list {
+    display: none;
+}
+</style>

+ 650 - 0
src/views/iosBasicData/ImportExchange/index.vue

@@ -0,0 +1,650 @@
+<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', 532)"
+        @saveColumn="saveColumn('crud', 'option', 'optionBack', 532)" @on-load="onLoad">
+        <template slot="menuLeft">
+          <el-tabs v-model="query.changeOrderStatus" type="card" @tab-click="handleClick">
+            <el-tab-pane label="申请" name="申请"></el-tab-pane>
+            <el-tab-pane label="已换单" name="已换单"></el-tab-pane>
+          </el-tabs>
+          <el-button  type="primary" size="small" @click="allClick('确认设备单')" :disabled="selectionList.length == 0">确认设备单
+          </el-button>
+          <el-button type="success" size="small" @click="allClick('导出')">导出
+          </el-button>
+          <el-button type="primary" size="small" @click="allClick('收押箱款')" :disabled="selectionList.length == 0">收押箱款
+          </el-button>
+          <el-button type="success" size="small" @click="allClick('退押箱款')" :disabled="selectionList.length == 0">退押箱款
+          </el-button>
+        </template>
+        <template slot="menu" slot-scope="{ row, index }">
+          <el-button v-if="row.changeOrderStatus == '申请'" size="small" type="text"
+            @click="allClick('确认换单', row)">确认换单</el-button>
+          <el-button size="small" type="text" @click="allClick('上传附件', row)">上传附件</el-button>
+        </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>
+        <template slot="corpCnName">
+          <dic-select v-model="excelForm.corpCnName" placeholder="场站" key="id" :slotRight="true" rightLabel="code"
+            label="shortName" res="records" url="/blade-los/bcorps/selectList?status=0&current=1&size=5&corpTypeName=场站"
+            :filterable="true" :remote="true" dataName="shortName" @selectChange="dicChange('corpCnName', $event)">
+          </dic-select>
+        </template>
+
+      </avue-form>
+      <p style="text-align: center;color: #DC0505">
+        温馨提示 第一次导入时请先下载模板
+      </p>
+    </el-dialog>
+    <file-update ref="file"></file-update>
+  </div>
+</template>
+
+<script>
+import {
+  getList,
+  confirmExchangeOrder,
+  confirmEquipmentList,
+  confirmPaymentCollection,
+  confirmRefund,
+  changeOrderFile,
+  changeOrderList
+} from "@/api/iosBasicData/ImportExchange.js";
+import dicSelect from "@/components/dicSelect/main";
+import fileUpdate from "./components/fileUpdate.vue"
+import { getToken } from "@/util/auth";
+import _ from "lodash";
+export default {
+  data() {
+    return {
+      excelBox: false,
+      excelForm: {},
+      excelLoading: false,
+      excelOption: {
+        submitBtn: false,
+        emptyBtn: false,
+        column: [
+          {
+            label: "场站",
+            span: 24,
+            prop: "corpCnName",
+            // type: 'select',
+            // filterable: true,
+            // remote: true,
+            // dicUrl: "/api/blade-los/bcorps/selectList?status=0&corpTypeName=场站&size=5&current=1&shortName={{key}}",
+            // props: {
+            //   label: "shortName",
+            //   value: "id",
+            //   desc: 'code',
+            //   res: "data.records"
+            // },
+            rules: [{
+              required: true,
+              message: "选择场站",
+              trigger: "blur",
+            }],
+            display: false,
+          },
+          {
+            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=CC"
+          }
+        ]
+      },
+      isShow: true,
+      form: {},
+      query: {
+        changeOrderStatus: '申请'
+      },
+      loading: false,
+      page: {
+        pageSize: 10,
+        currentPage: 1,
+        total: 0
+      },
+      selectionList: [],
+      option: {},
+      optionBack: {
+        height: 'auto',
+        calcHeight: 30,
+        menuWidth: 160,
+        tip: false,
+        searchShow: true,
+        searchMenuSpan: 24,
+        border: true,
+        index: true,
+        addBtn: false,
+        viewBtn: false,
+        editBtn: false,
+        delBtn: false,
+        selection: true,
+        searchIcon: true,
+        align: 'center',
+        searchIndex: 3,
+        column: [
+          {
+            label: "所属公司",
+            prop: "branchId",
+            width: "120",
+            search: true,
+            overHidden: true,
+            hide: true,
+            type: "select",
+            filterable: true,
+            dicUrl: "/api/blade-system/dept/lazy-list",
+            props: {
+              label: "deptName",
+              value: "id",
+            },
+          },
+          {
+            label: '系统号',
+            prop: 'billNo',
+            width: "120",
+            overHidden: true,
+          },
+          {
+            label: '换单状态',
+            prop: 'changeOrderStatus',
+            width: "80",
+            overHidden: true,
+          },
+          {
+            label: '提货单状态',
+            prop: 'deliveryNoteStatus',
+            width: "100",
+            overHidden: true,
+          },
+          {
+            label: '设备单状态',
+            prop: 'equipmentSingleStatus',
+            width: "100",
+            overHidden: true,
+          },
+          {
+            label: '押箱金额',
+            prop: 'boxPackingAmount',
+            width: "80",
+            overHidden: true,
+          },
+          {
+            label: '收押箱款日期',
+            prop: 'harvestBoxPackingDate',
+            width: "100",
+            overHidden: true,
+          },
+          {
+            label: '退押箱款日期',
+            prop: 'retreatBoxPackingDate',
+            width: "100",
+            overHidden: true,
+          },
+          {
+            label: '客户名称',
+            prop: 'corpCnName',
+            width: "100",
+            search: true,
+            overHidden: true,
+            type: "select",
+            filterable: true,
+            remote: true,
+            dicUrl: "/api/blade-los/bcorps/listByType?shortName={{key}}",
+            props: {
+              label: "cnName",
+              value: "cnName",
+              res: "data.records"
+            },
+          },
+          {
+            label: 'MB/L NO',
+            prop: 'mblno',
+            width: "100",
+            search: true,
+            overHidden: true,
+          },
+          {
+            label: 'HB/L NO',
+            prop: 'hblno',
+            width: "100",
+            search: true,
+            overHidden: true,
+          },
+          {
+            label: '船名',
+            prop: 'vesselEnName',
+            width: "100",
+            overHidden: true,
+          },
+          {
+            label: '航次',
+            prop: 'voyageNo',
+            width: "60",
+            overHidden: true,
+          },
+          {
+            label: 'ETA',
+            prop: 'eta',
+            width: "100",
+            overHidden: true,
+          },
+          {
+            label: 'ATA',
+            prop: 'actualEta',
+            width: "100",
+            overHidden: true,
+          },
+          {
+            label: '箱型/箱量',
+            prop: 'quantityCntrDescr',
+            width: "100",
+            overHidden: true,
+          },
+          {
+            label: '应收本币',
+            prop: 'amountDr',
+            width: "80",
+            overHidden: true,
+          },
+          {
+            label: '应收外币',
+            prop: 'amountDrUsd',
+            width: "80",
+            overHidden: true,
+          },
+          {
+            label: '实收本币',
+            prop: 'receivedAmountDr',
+            width: "80",
+            overHidden: true,
+          },
+          {
+            label: '实收外币',
+            prop: 'receivedAmountDrUsd',
+            width: "80",
+            overHidden: true,
+          },
+          {
+            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",
+          }
+        ]
+      },
+      data: [],
+    };
+  },
+  components: {
+    dicSelect,
+    fileUpdate
+  },
+  async created() {
+    this.option = await this.getColumnData(this.getColumnName(532), this.optionBack);
+  },
+  activated() {
+    setTimeout(() => {
+    }, 100);
+  },
+  methods: {
+    allClick(name, row) {
+      if (name == '确认设备单') {
+        this.$confirm("是否确认设备单?", "提示", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(() => {
+          let ids = []
+          for (let item of this.selectionList) {
+            ids.push(item.id)
+          }
+          let obj = {
+            ids: ids.join(',')
+          }
+          confirmEquipmentList(obj).then(res => {
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            });
+            this.refreshChange();
+          });
+        });
+      }
+      if (name == '收押箱款') {
+        this.$DialogForm.show({
+          title: '收押箱款',
+          width: '30%',
+          menuPosition: 'right',
+          option: {
+            submitText: '确定',
+            emptyText: '取消',
+            // labelWidth: 130,
+            column: [
+              // {
+              //   label: "押箱金额",
+              //   span: 24,
+              //   prop: "boxPackingAmount",
+              //   type: 'number',
+              //   controls: false,
+              //   rules: [{
+              //     required: true,
+              //     message: "",
+              //     trigger: "blur",
+              //   }],
+              // },
+              {
+                label: "日期",
+                span: 24,
+                prop: "harvestBoxPackingDate",
+                type: "date",
+                format: "yyyy-MM-dd",
+                valueFormat: "yyyy-MM-dd 00:00:00",
+                rules: [{
+                  required: true,
+                  message: "",
+                  trigger: "blur",
+                }],
+              },
+            ]
+          },
+          beforeClose: (done) => {
+            done()
+          },
+          callback: (res) => {
+            res.done()
+            let obj = {
+              id: this.selectionList[0].id,
+              ...res.data
+            }
+            confirmPaymentCollection(obj).then(res => {
+              this.$message({
+                type: "success",
+                message: "操作成功!"
+              });
+              this.refreshChange();
+            });
+            res.close()
+          }
+        })
+      }
+      if (name == '退押箱款') {
+        this.$DialogForm.show({
+          title: '退押箱款',
+          width: '30%',
+          menuPosition: 'right',
+          option: {
+            submitText: '确定',
+            emptyText: '取消',
+            // labelWidth: 130,
+            column: [
+              {
+                label: "日期",
+                span: 24,
+                prop: "retreatBoxPackingDate",
+                type: "date",
+                format: "yyyy-MM-dd",
+                valueFormat: "yyyy-MM-dd 00:00:00",
+                rules: [{
+                  required: true,
+                  message: "",
+                  trigger: "blur",
+                }],
+              },
+            ]
+          },
+          beforeClose: (done) => {
+            done()
+          },
+          callback: (res) => {
+            res.done()
+            let obj = {
+              id: this.selectionList[0].id,
+              ...res.data
+            }
+            confirmRefund(obj).then(res => {
+              this.$message({
+                type: "success",
+                message: "操作成功!"
+              });
+              this.refreshChange();
+            });
+            res.close()
+          }
+        })
+      }
+      if (name == '确认换单') {
+        this.$confirm("是否确认换单?", "提示", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(() => {
+          let obj = {
+            id: row.id
+          }
+          confirmExchangeOrder(obj).then(res => {
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            });
+            this.refreshChange();
+          });
+        });
+      }
+      if (name == '上传附件') {
+        this.$refs.file.openDialog(row)
+      }
+    },
+    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();
+    },
+    // 下载模板
+    handleGet() {
+      window.open(
+        `/api/blade-los/boxdynamicsrecord/exportTemplate?${this.website.tokenHeader
+        }=${getToken()}`
+      );
+    },
+    rowEdit(row) {
+
+    },
+    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);
+    },
+    handleClick() {
+      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() {
+      // 初始化数据
+      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>

+ 170 - 25
src/views/iosBasicData/OceanFreightImport/bills/billsDetails.vue

@@ -6,8 +6,10 @@
                 <el-button type="danger" style="border: none;background: none;color: red" icon="el-icon-arrow-left"
                     @click="backToList">{{ $t("btn118n.toList") }}
                 </el-button>
-                <el-button v-if="form.id && pageIds.length" type="text" @click="lastPage">{{ $t("btn118n.previous") }}</el-button>
-                <el-button v-if="form.id && pageIds.length" type="text" @click="nextPage">{{ $t("btn118n.next") }}</el-button>
+                <el-button v-if="form.id && pageIds.length" type="text" @click="lastPage">{{ $t("btn118n.previous")
+                    }}</el-button>
+                <el-button v-if="form.id && pageIds.length" type="text" @click="nextPage">{{ $t("btn118n.next")
+                    }}</el-button>
             </div>
             <div class="add-customer-btn">
                 <!--<el-popover-->
@@ -17,9 +19,22 @@
                 <!--    <div>-->
 
                 <!--    </div>-->
+                <el-button v-if="form.changeOrderStatus == '录入'" type="primary" size="small"
+                    @click="allClick('申请换单')">申请换单
+                </el-button>
+                <el-button v-if="form.changeOrderStatus == '申请'" type="danger" size="small"
+                    @click="allClick('撤销换单')">撤销换单
+                </el-button>
+                <el-button v-if="form.deliveryNoteStatus == '录入'" type="success" size="small"
+                    @click="allClick('电子提货单')">电子提货单
+                </el-button>
+                <el-button v-if="form.deliveryNoteStatus == '已发送'" type="danger" size="small"
+                    @click="allClick('撤销电子提货单')">撤销电子提货单
+                </el-button>
                 <el-button size="small" type="primary" @click="addEdit">{{ $t("btn118n.new") }}
                 </el-button>
-                <el-button type="success" size="small" style="margin-right: 8px" @click="CopyDocumentsfun">{{ $t("btn118n.copy") }}
+                <el-button type="success" size="small" style="margin-right: 8px" @click="CopyDocumentsfun">{{
+                    $t("btn118n.copy") }}
                 </el-button>
                 <el-dropdown style="line-height: 0" v-if="
                     saberTenantId == '409341' || saberTenantId == '607913'
@@ -67,12 +82,12 @@
                 <el-button v-if="form.id && form.receiveStatus == '已接收'" size="small" type="danger"
                     @click.stop="allClick('撤销接收')">{{ $t("btn118n.unReceived") }}
                 </el-button>
-                <el-button v-if="form.id && form.changeOrdersStatus == '可换单'" size="small" type="warning"
+                <!-- <el-button v-if="form.id && form.changeOrdersStatus == '可换单'" size="small" type="warning"
                     @click.stop="allClick('换单')">{{ $t("sea118n.changeDoc") }}
-                </el-button>
-                <el-button v-if="form.id && form.changeOrdersStatus == '已换单'" size="small" type="danger"
+                </el-button> -->
+                <!-- <el-button v-if="form.id && form.changeOrdersStatus == '已换单'" size="small" type="danger"
                     @click.stop="allClick('撤销换单')">{{ $t("sea118n.unChangeDoc") }}
-                </el-button>
+                </el-button> -->
                 <el-button size="small" type="warning" :disabled="!form.id || showLock" v-if="form.billType == 'MM'"
                     @click.stop="allClick('同步分单信息')">{{ $t("btn118n.getInfoMMToMH") }}
                 </el-button>
@@ -84,7 +99,8 @@
                 " size="small" type="danger" @click.stop="allClick('撤销退押')">{{ $t("btn118n.unReturnDeposit") }}
                 </el-button>
                 <el-button size="small" type="warning" :disabled="!form.id || showLock"
-                    v-if="form.status == 1 && form.billType != 'MH'" @click.stop="revokeDocumentApproval">{{ $t("btn118n.unapply") }}
+                    v-if="form.status == 1 && form.billType != 'MH'" @click.stop="revokeDocumentApproval">{{
+                        $t("btn118n.unapply") }}
                 </el-button>
                 <el-button size="small" type="success" :disabled="!form.id || detailData.seeDisabled || showLock" v-if="
                     form.status == 0 ||
@@ -96,7 +112,8 @@
                     @click.stop="revokeLockOrder">{{ $t("btn118n.unapply") }}
                 </el-button>
                 <el-button size="small" type="primary" style="margin-right: 8px"
-                    :disabled="detailData.seeDisabled || showLock" :loading="saveLoading" @click="editCustomer">{{ $t("btn118n.save") }}
+                    :disabled="detailData.seeDisabled || showLock" :loading="saveLoading" @click="editCustomer">{{
+                        $t("btn118n.save") }}
                 </el-button>
                 <el-dropdown style="line-height: 0" v-if="form.billType != 'MH'">
                     <el-button type="warning" :loading="saveLoading" :disabled="!form.id" size="small">
@@ -459,7 +476,8 @@
                     <document-center ref="documentCenter" :detailData="detailData" :assemblyForm="form"
                         :disabled="showLock"></document-center>
                 </el-tab-pane>
-                <el-tab-pane :label='$t("sea118n.hblnolist")' name="fd" v-if="form.billType == 'MM'" class="scrollable-container">
+                <el-tab-pane :label='$t("sea118n.hblnolist")' name="fd" v-if="form.billType == 'MM'"
+                    class="scrollable-container">
                     <Split-list :detailData="detailData" :assemblyForm="form" :data="billsListAllData"
                         :disabled="detailData.seeDisabled || showLock"
                         @billsListAllfun="billsListAllfun(form.id)"></Split-list>
@@ -467,8 +485,8 @@
             </el-tabs>
         </div>
         <!--导入模板-->
-        <el-dialog :title='$t("btn118n.importTemplate")' append-to-body :visible.sync="excelBox" width="555px" :close-on-click-modal="false"
-            v-dialog-drag>
+        <el-dialog :title='$t("btn118n.importTemplate")' append-to-body :visible.sync="excelBox" width="555px"
+            :close-on-click-modal="false" v-dialog-drag>
             <avue-form :option="excelOption" v-model="excelForm" :table-loading="excelLoading"
                 :upload-before="uploadBefore" :upload-after="onSuccess">
             </avue-form>
@@ -543,6 +561,12 @@ import { verifyEnglish, checkFullWidthSymbols } from "@/util/date";
 import { contrastObj, contrastList } from "@/util/contrastData";
 import { selectListLos } from "@/api/approval/processConfig";
 import { isProcurement } from "@/api/basicData/configuration";
+import {
+    applySwitch,
+    revokeSwitch,
+    electronBillOfLading,
+    revokeElectronBillOfLading
+} from "@/api/iosBasicData/ImportExchange.js";
 import _ from "lodash";
 export default {
     components: {
@@ -1248,13 +1272,83 @@ export default {
             }
         },
         allClick(name) {
-            if (name == "接收") {
-                this.$confirm("是否接收?", "提示", {
+            if (name == '申请换单') {
+                if (this.form.feeCenterListD.length == 0) {
+                    return this.$message.error("应收费用明细不能为空!");
+                }
+                for (let item of this.form.feeCenterListD) {
+                    if (item.auditStatus != 4) {
+                        return this.$message.error("应收费用明细存在未请核的数据!");
+                    }
+                }
+                // this.$confirm("是否申请换单?", "提示", {
+                //     confirmButtonText: "确定",
+                //     cancelButtonText: "取消",
+                //     type: "warning"
+                // }).then(() => {
+                //     let obj = {
+                //         id: this.form.id
+                //     }
+                //     applySwitch(obj).then(res => {
+                //         this.$message({
+                //             type: "success",
+                //             message: "操作成功!"
+                //         });
+                //         this.billsDetailfun(this.form.id);
+                //     });
+                // });
+                this.$DialogForm.show({
+                    title: '收押箱款',
+                    width: '30%',
+                    menuPosition: 'right',
+                    option: {
+                        submitText: '确定',
+                        emptyText: '取消',
+                        // labelWidth: 130,
+                        column: [{
+                            label: "押箱金额",
+                            span: 24,
+                            prop: "boxPackingAmount",
+                            type: 'number',
+                            controls: false,
+                            rules: [{
+                                required: true,
+                                message: "",
+                                trigger: "blur",
+                            }],
+                        }
+                        ]
+                    },
+                    beforeClose: (done) => {
+                        done()
+                    },
+                    callback: (res) => {
+                        res.done()
+                        let obj = {
+                            id: this.form.id,
+                            ...res.data
+                        }
+                        applySwitch(obj).then(res => {
+                            this.$message({
+                                type: "success",
+                                message: "操作成功!"
+                            });
+                            this.billsDetailfun(this.form.id);
+                        });
+                        res.close()
+                    }
+                })
+            }
+            if (name == '撤销换单') {
+                this.$confirm("是否撤销换单?", "提示", {
                     confirmButtonText: "确定",
                     cancelButtonText: "取消",
                     type: "warning"
                 }).then(() => {
-                    receive(this.form).then(res => {
+                    let obj = {
+                        id: this.form.id
+                    }
+                    revokeSwitch(obj).then(res => {
                         this.$message({
                             type: "success",
                             message: "操作成功!"
@@ -1263,29 +1357,34 @@ export default {
                     });
                 });
             }
-            if (name == "撤销接收") {
-                this.$confirm("是否撤销接收?", "提示", {
+            if (name == '电子提货单') {
+                this.$confirm("是否确认电子提货单?", "提示", {
                     confirmButtonText: "确定",
                     cancelButtonText: "取消",
                     type: "warning"
                 }).then(() => {
-                    revokeReceive(this.form).then(res => {
+                    let obj = {
+                        id: this.form.id
+                    }
+                    electronBillOfLading(obj).then(res => {
                         this.$message({
                             type: "success",
                             message: "操作成功!"
                         });
-                        this.logisticsDialog = false;
                         this.billsDetailfun(this.form.id);
                     });
                 });
             }
-            if (name == "换单") {
-                this.$confirm("是否单?", "提示", {
+            if (name == '撤销电子提货单') {
+                this.$confirm("是否撤销电子提货单?", "提示", {
                     confirmButtonText: "确定",
                     cancelButtonText: "取消",
                     type: "warning"
                 }).then(() => {
-                    changeOrders(this.form).then(res => {
+                    let obj = {
+                        id: this.form.id
+                    }
+                    revokeElectronBillOfLading(obj).then(res => {
                         this.$message({
                             type: "success",
                             message: "操作成功!"
@@ -1294,13 +1393,28 @@ export default {
                     });
                 });
             }
-            if (name == "撤销换单") {
-                this.$confirm("是否撤销换单?", "提示", {
+            if (name == "接收") {
+                this.$confirm("是否接收?", "提示", {
                     confirmButtonText: "确定",
                     cancelButtonText: "取消",
                     type: "warning"
                 }).then(() => {
-                    revokeChangeOrders(this.form).then(res => {
+                    receive(this.form).then(res => {
+                        this.$message({
+                            type: "success",
+                            message: "操作成功!"
+                        });
+                        this.billsDetailfun(this.form.id);
+                    });
+                });
+            }
+            if (name == "撤销接收") {
+                this.$confirm("是否撤销接收?", "提示", {
+                    confirmButtonText: "确定",
+                    cancelButtonText: "取消",
+                    type: "warning"
+                }).then(() => {
+                    revokeReceive(this.form).then(res => {
                         this.$message({
                             type: "success",
                             message: "操作成功!"
@@ -1310,6 +1424,37 @@ export default {
                     });
                 });
             }
+            // if (name == "换单") {
+            //     this.$confirm("是否换单?", "提示", {
+            //         confirmButtonText: "确定",
+            //         cancelButtonText: "取消",
+            //         type: "warning"
+            //     }).then(() => {
+            //         changeOrders(this.form).then(res => {
+            //             this.$message({
+            //                 type: "success",
+            //                 message: "操作成功!"
+            //             });
+            //             this.billsDetailfun(this.form.id);
+            //         });
+            //     });
+            // }
+            // if (name == "撤销换单") {
+            //     this.$confirm("是否撤销换单?", "提示", {
+            //         confirmButtonText: "确定",
+            //         cancelButtonText: "取消",
+            //         type: "warning"
+            //     }).then(() => {
+            //         revokeChangeOrders(this.form).then(res => {
+            //             this.$message({
+            //                 type: "success",
+            //                 message: "操作成功!"
+            //             });
+            //             this.logisticsDialog = false;
+            //             this.billsDetailfun(this.form.id);
+            //         });
+            //     });
+            // }
             if (name == "退押") {
                 this.$confirm("是否退押?", "提示", {
                     confirmButtonText: "确定",

+ 1 - 1
src/views/iosBasicData/SeafreightExportF/bills/index.vue

@@ -115,7 +115,7 @@
                             </el-tab-pane>
                             <el-tab-pane v-if="roleName.indexOf('总部中心') >= 0" :label='$t("sea118n.processing")' name="11">
                             </el-tab-pane>
-                            <el-tab-pane v-if="roleName.indexOf('总部中心') >= 0" :label=' $t("sea118n.waitApply")' name="12">
+                            <el-tab-pane v-if="roleName.indexOf('总部中心') >= 0" :label='$t("sea118n.waitApply")' name="12">
                             </el-tab-pane>
                             <el-tab-pane :label='$t("sea118n.completed")' name="3">
                             </el-tab-pane>

+ 2 - 2
src/views/iosBasicData/businessCenter/customerBooking/detailsPage.vue

@@ -40,10 +40,10 @@
         <el-button v-if="form.issueStatus == 2" class="el-button--small-yh" style="margin-left: 6px;" type="danger"
           size="small" @click="allClick('撤销订舱')">撤销订舱
         </el-button>
-        <el-button v-if="(form.issueStatus == 1 || form.issueStatus == 2) && form.hblno" class="el-button--small-yh"
+        <el-button v-if="form.issueStatus == 1 || form.issueStatus == 2" class="el-button--small-yh"
           style="margin-left: 6px;" type="danger" size="small" @click="allClick('提单修改')">截单SI修改
         </el-button>
-        <el-button v-if="(form.issueStatus == 1 || form.issueStatus == 2) && form.hblno" class="el-button--small-yh"
+        <el-button v-if="form.issueStatus == 1 || form.issueStatus == 2" class="el-button--small-yh"
           style="margin-left: 6px;" type="success" size="small" :disabled="flxDisabled" @click="allClick('提单确认')">确认提交
         </el-button>
         <!-- <el-button v-if="form.id" class="el-button--small-yh" style="margin-left: 6px;" type="success" size="small"

+ 1 - 1
src/views/iosBasicData/businessCenter/customerBooking/index.vue

@@ -31,7 +31,7 @@
                 <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.confirmStatus == 1 || row.issueStatus == 1 || row.issueStatus == 2">删
+                        :disabled="!(row.issueStatus == 0 || row.issueStatus == 6)">删
                         除</el-button>
                 </template>
                 <template slot="whetherModify" slot-scope="{ row }">

+ 47 - 1
src/views/iosBasicData/financialManagement/PaymentApplication/detailsPage.vue

@@ -136,6 +136,9 @@
                                             :disabled="editDisabled || selectionList.length == 0"
                                             @click="allClick('单据加入')">单据加入
                                         </el-button>
+                                        <el-button type="warning" size="small" @click="outExport">
+                                            导出
+                                        </el-button>
                                         <span style="font-size:18px;font-weight:600;margin-left:10px;">
                                             <span style="color: #67C23A;margin-right: 10px;">
                                                 应收本币:{{ sumDRMB.toFixed(2) }}元
@@ -259,6 +262,7 @@ import reportContainer from "@/views/iosBasicData/report-container/report-contai
 import { getList as getreportsList, reportsGetReportData } from "@/api/iosBasicData/reports";
 import checkSchedule from "@/components/checkH/checkSchedule.vue";
 import dicSelect from "@/components/dicSelect/main";
+import { getToken } from "@/util/auth";
 export default {
     components: { dicSelect, reportContainer, reportformsList, reports, finstlbillsitems, checkSchedule },
     props: {
@@ -501,7 +505,7 @@ export default {
                 calcHeight: 30,
                 menuWidth: 60,
                 searchShow: true,
-                searchMenuSpan: 24,
+                searchMenuSpan: 18,
                 searchIcon: true,
                 searchIndex: 3,
                 tip: false,
@@ -685,6 +689,11 @@ export default {
                         overHidden: true
                     },
                     {
+                        label: "操作员",
+                        prop: "operatorName",
+                        search: true,
+                    },
+                    {
                         label: "备注",
                         prop: "remarks",
                         width: 120,
@@ -1260,6 +1269,7 @@ export default {
             obj.feeCnName = this.search.feeCnName//
             obj.businessDateStart = this.search.businessDateStart
             obj.businessDateEnd = this.search.businessDateEnd
+            obj.operatorName = this.search.operatorName
             finstlbillslistAccBillByCorp(obj).then(res => {
                 this.retrievePopupsType = true
                 this.retrievePopupsData = res.data.data
@@ -1284,6 +1294,7 @@ export default {
             obj.feeCnName = this.search.feeCnName//
             obj.businessDateStart = this.search.businessDateStart
             obj.businessDateEnd = this.search.businessDateEnd
+            obj.operatorName = this.search.operatorName
             const loading = this.$loading({
                 lock: true,
                 text: '加载中',
@@ -1300,6 +1311,41 @@ export default {
                 loading.close();
             })
         },
+        //导出
+        outExport() {
+            this.$confirm("是否导出当前所有数据?", "提示", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning"
+            }).then(() => {
+                let obj = {}
+                obj.type = '2'
+                obj.branchId = this.form.branchId
+                obj.branchName = this.form.branchName
+                obj.corpCnName = this.form.corpId // 付费对象
+                obj.dc = this.search.accountDc // 收付 D=收 C=付
+                obj.curCode = this.search.curCode // 币别
+                obj.mblno = this.search.mblno // MB/L NO
+                obj.hblno = this.search.hblno // HB/L NO
+                obj.checkBillNo = this.search.checkBillNo
+                obj.accBillNo = this.search.accountNo // 账单编号  ACCT NO
+                obj.billNo = this.search.businessNo // 单据编号  JOB NO
+                obj.vesselCnName = this.search.vesselEnName // 中文船名
+                obj.voyageNo = this.search.voyageNo // 航次
+                obj.feeCnName = this.search.feeCnName//
+                obj.businessDateStart = this.search.businessDateStart
+                obj.businessDateEnd = this.search.businessDateEnd
+                obj.operatorName = this.search.operatorName
+                const routeData = this.$router.resolve({
+                    path: "/api/blade-los/finaccbills/listAccBillExport", //跳转目标窗口的地址
+                    query: {
+                        "Blade-Auth": getToken(),
+                        ...obj //括号内是要传递给新窗口的参数
+                    }
+                });
+                window.open(routeData.href.slice(1, routeData.href.length));
+            });
+        },
         // 全部删除
         batchDeletefun() {
             if (this.handleSelectionData.length == 0) {

+ 46 - 1
src/views/iosBasicData/financialManagement/computationCenter/detailsPage.vue

@@ -129,6 +129,9 @@
                                             :disabled="editDisabled || selectionList.length == 0"
                                             @click="allClick('单据加入')">单据加入
                                         </el-button>
+                                        <el-button type="warning" size="small" @click="outExport">
+                                            导出
+                                        </el-button>
                                         <span style="font-size:18px;font-weight:600;margin-left:10px;">
                                             <span style="color: #67C23A;margin-right: 10px;">
                                                 应收本币:{{ sumDRMB.toFixed(2) }}元
@@ -259,6 +262,7 @@ import reportformsList from "@/views/iosBasicData/SeafreightExportF/bills/assemb
 import reportContainer from "@/views/iosBasicData/report-container/report-container.vue";
 import { getList as getreportsList, reportsGetReportData } from "@/api/iosBasicData/reports";
 import dicSelect from "@/components/dicSelect/main";
+import { getToken } from "@/util/auth";
 export default {
     components: { reportContainer, reportformsList, reports, SearchQuery, expand, finstlbillsitems, dicSelect },
     props: {
@@ -518,7 +522,7 @@ export default {
                 calcHeight: 30,
                 menuWidth: 60,
                 searchShow: true,
-                searchMenuSpan: 12,
+                searchMenuSpan: 6,
                 searchIcon: true,
                 searchIndex: 3,
                 tip: false,
@@ -688,6 +692,11 @@ export default {
                         disabled: false
                     },
                     {
+                        label: "操作员",
+                        prop: "operatorName",
+                        search: true,
+                    },
+                    {
                         label: "备注",
                         prop: "remarks",
                         width: 120,
@@ -1368,6 +1377,7 @@ export default {
             obj.businessDateStart = this.search.businessDateStart
             obj.businessDateEnd = this.search.businessDateEnd
             obj.checkBillNo = this.search.checkBillNo
+            obj.operatorName = this.search.operatorName
             finstlbillslistAccBillByCorp(obj).then(res => {
                 this.retrievePopupsType = true
                 this.retrievePopupsData = res.data.data
@@ -1391,6 +1401,7 @@ export default {
             obj.businessDateStart = this.search.businessDateStart
             obj.businessDateEnd = this.search.businessDateEnd
             obj.checkBillNo = this.search.checkBillNo
+            obj.operatorName = this.search.operatorName
             const loading = this.$loading({
                 lock: true,
                 text: '加载中',
@@ -1422,6 +1433,40 @@ export default {
                 loading.close();
             })
         },
+        //导出
+        outExport() {
+            this.$confirm("是否导出当前所有数据?", "提示", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning"
+            }).then(() => {
+                let obj = {}
+                obj.type = '2'
+                obj.branchId = this.form.branchId
+                obj.branchName = this.form.branchName
+                obj.corpCnName = this.form.corpId // 结算单位
+                obj.isExchangeToCny = this.form.isExchangeToCny
+                obj.dc = this.search.accountDc // 收付 D=收 C=付
+                obj.curCode = this.search.curCode // 币别
+                obj.mblno = this.search.mblno // MB/L NO
+                obj.hblno = this.search.hblno // HB/L NO
+                obj.vesselCnName = this.search.vesselEnName // 中文船名
+                obj.voyageNo = this.search.voyageNo // 航次
+                obj.feeCnName = this.search.feeCnName//
+                obj.businessDateStart = this.search.businessDateStart
+                obj.businessDateEnd = this.search.businessDateEnd
+                obj.checkBillNo = this.search.checkBillNo
+                obj.operatorName = this.search.operatorName
+                const routeData = this.$router.resolve({
+                    path: "/api/blade-los/finaccbills/listAccBillExport", //跳转目标窗口的地址
+                    query: {
+                        "Blade-Auth": getToken(),
+                        ...obj //括号内是要传递给新窗口的参数
+                    }
+                });
+                window.open(routeData.href.slice(1, routeData.href.length));
+            });
+        },
         // 全部删除
         batchDeletefun() {
             if (this.handleSelectionData.length == 0) {

+ 50 - 3
src/views/iosBasicData/financialManagement/fininvoicesApplyfor/detailsPage.vue

@@ -140,6 +140,9 @@
                                             :disabled="editDisabled || selectionList.length == 0"
                                             @click="allClick('单据加入')">单据加入
                                         </el-button>
+                                        <el-button type="warning" size="small" @click="outExport">
+                                            导出
+                                        </el-button>
                                         <span style="font-size:18px;font-weight:600;margin-left:10px;">
                                             <span style="color: #67C23A;margin-right: 10px;">
                                                 应收本币:{{ sumDRMB.toFixed(2) }}元
@@ -265,6 +268,7 @@ import reportformsList from "@/views/iosBasicData/SeafreightExportF/bills/assemb
 import reportContainer from "@/views/iosBasicData/report-container/report-container.vue";
 import { getList as getreportsList, reportsGetReportData } from "@/api/iosBasicData/reports";
 import dicSelect from "@/components/dicSelect/main";
+import { getToken } from "@/util/auth";
 export default {
     components: { reportContainer, reportformsList, reports, SearchQuery, expand, finstlbillsitems, dicSelect },
     props: {
@@ -541,7 +545,7 @@ export default {
                 calcHeight: 30,
                 menuWidth: 60,
                 searchShow: true,
-                searchMenuSpan: 12,
+                searchMenuSpan: 6,
                 searchIcon: true,
                 searchIndex: 3,
                 tip: false,
@@ -595,7 +599,7 @@ export default {
                         search: true,
                         overHidden: true
                     },
-                    
+
                     {
                         label: '对账单号',
                         prop: 'checkBillNo',
@@ -712,6 +716,11 @@ export default {
                         overHidden: true
                     },
                     {
+                        label: "操作员",
+                        prop: "operatorName",
+                        search: true,
+                    },
+                    {
                         label: "备注",
                         prop: "remarks",
                         width: 120,
@@ -967,7 +976,7 @@ export default {
                 accountDc: null,
                 feeCnName: null,
                 curCode: null,
-                checkBillNo:null,
+                checkBillNo: null,
                 businessDateStart: null,
                 businessDateEnd: null,
                 vesselCnName: null,
@@ -1304,6 +1313,7 @@ export default {
             obj.feeCnName = this.search.feeCnName//
             obj.businessDateStart = this.search.businessDateStart
             obj.businessDateEnd = this.search.businessDateEnd
+            obj.operatorName = this.search.operatorName
             finstlbillslistAccBillByCorp(obj).then(res => {
                 this.retrievePopupsType = true
                 this.retrievePopupsData = res.data.data
@@ -1329,6 +1339,7 @@ export default {
             obj.feeCnName = this.search.feeCnName//
             obj.businessDateStart = this.search.businessDateStart
             obj.businessDateEnd = this.search.businessDateEnd
+            obj.operatorName = this.search.operatorName
             const loading = this.$loading({
                 lock: true,
                 text: '加载中',
@@ -1345,6 +1356,42 @@ export default {
                 loading.close();
             })
         },
+        //导出
+        outExport() {
+            this.$confirm("是否导出当前所有数据?", "提示", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning"
+            }).then(() => {
+                let obj = {}
+                obj.type = '3'
+                obj.branchId = this.form.branchId
+                obj.branchName = this.form.branchName
+                obj.corpCnName = this.form.corpId ? this.form.corpId : null
+                obj.invCorpCnName = this.form.invCorpId ? this.form.invCorpId : null
+                obj.isExchangeToCny = this.form.isExchangeToCny
+                obj.isDk = this.form.isDk
+                obj.dc = this.search.accountDc // 收付 D=收 C=付
+                obj.curCode = this.search.curCode // 币别
+                obj.mblno = this.search.mblno // MB/L NO
+                obj.hblno = this.search.hblno // HB/L NO
+                obj.checkBillNo = this.search.checkBillNo
+                obj.vesselCnName = this.search.vesselEnName // 中文船名
+                obj.voyageNo = this.search.voyageNo // 航次
+                obj.feeCnName = this.search.feeCnName//
+                obj.businessDateStart = this.search.businessDateStart
+                obj.businessDateEnd = this.search.businessDateEnd
+                obj.operatorName = this.search.operatorName
+                const routeData = this.$router.resolve({
+                    path: "/api/blade-los/finaccbills/listAccBillExport", //跳转目标窗口的地址
+                    query: {
+                        "Blade-Auth": getToken(),
+                        ...obj //括号内是要传递给新窗口的参数
+                    }
+                });
+                window.open(routeData.href.slice(1, routeData.href.length));
+            });
+        },
         // 全部删除
         batchDeletefun() {
             if (this.handleSelectionData.length == 0) {

+ 58 - 10
src/views/iosBasicData/financialManagement/fininvoicesOutput/detailsPage.vue

@@ -47,7 +47,7 @@
                                         <dic-select v-model="form.corpCnName" placeholder="结算单位" key="id" res="records"
                                             label="cnName" url="/blade-los/bcorps/selectList?status=0&current=1&size=5"
                                             :filterable="true" :remote="true" dataName="cnName"
-                                            :disabled="editDisabled  || form.finInvoicesItemsList.length"
+                                            :disabled="editDisabled || form.finInvoicesItemsList.length"
                                             @selectChange="dicChange('corpCnName', $event)">
                                         </dic-select>
                                     </tempalte>
@@ -56,7 +56,7 @@
                                             res="records" label="cnName"
                                             url="/blade-los/bcorps/selectList?status=0&current=1&size=5"
                                             :filterable="true" :remote="true" dataName="cnName"
-                                            :disabled="editDisabled "
+                                            :disabled="editDisabled"
                                             @selectChange="dicChange('invCorpCnName', $event)">
                                         </dic-select>
                                     </tempalte>
@@ -64,30 +64,32 @@
                                         <dic-select v-model="form.curCode" placeholder="开票币别" label="code"
                                             :url="'/blade-los/bcurrency/obtainRate?deptId=' + form.branchId + '&date=' + form.invoiceDate + '&type=2'"
                                             :filterable="true" @selectChange="dicChange('curCode', $event)"
-                                            :disabled="editDisabled "></dic-select>
+                                            :disabled="editDisabled"></dic-select>
                                     </template>
                                     <tempalte slot="isExchangeToCny">
                                         <el-checkbox size="medium" true-label="1" false-label="0"
-                                            :disabled="editDisabled  || form.finInvoicesItemsList.length"
+                                            :disabled="editDisabled || form.finInvoicesItemsList.length"
                                             v-model="form.isExchangeToCny">
                                         </el-checkbox>
                                     </tempalte>
                                     <tempalte slot="isDk">
                                         <el-checkbox size="medium" :true-label="1" :false-label="0"
-                                            :disabled="editDisabled  || form.finInvoicesItemsList.length"
+                                            :disabled="editDisabled || form.finInvoicesItemsList.length"
                                             v-model="form.isDk">
                                         </el-checkbox>
                                     </tempalte>
                                     <tempalte slot="taxInvoiceNo">
-                                        <el-input  placeholder="请输入 税控发票号" v-model="form.taxInvoiceNo"  :disabled="editButton ">
+                                        <el-input placeholder="请输入 税控发票号" v-model="form.taxInvoiceNo"
+                                            :disabled="editButton">
                                         </el-input>
                                     </tempalte>
-                             <tempalte slot="email">
-                                        <el-input  placeholder="请输入 邮箱" v-model="form.email" size="small">
+                                    <tempalte slot="email">
+                                        <el-input placeholder="请输入 邮箱" v-model="form.email" size="small">
                                         </el-input>
                                     </tempalte>
                                     <tempalte slot="elecRemarks">
-                                        <el-input type="textarea" :rows="2" placeholder="请输入 全电发票" v-model="form.elecRemarks">
+                                        <el-input type="textarea" :rows="2" placeholder="请输入 全电发票"
+                                            v-model="form.elecRemarks">
                                         </el-input>
                                     </tempalte>
                                 </avue-form>
@@ -147,6 +149,9 @@
                                             :disabled="editDisabled || selectionList.length == 0"
                                             @click="allClick('单据加入')">单据加入
                                         </el-button>
+                                        <el-button type="warning" size="small" @click="outExport">
+                                            导出
+                                        </el-button>
                                         <span style="font-size:18px;font-weight:600;margin-left:10px;">
                                             <span style="color: #67C23A;margin-right: 10px;">
                                                 应收本币:{{ sumDRMB.toFixed(2) }}元
@@ -274,6 +279,7 @@ import reportformsList from "@/views/iosBasicData/SeafreightExportF/bills/assemb
 import reportContainer from "@/views/iosBasicData/report-container/report-container.vue";
 import { getList as getreportsList, reportsGetReportData } from "@/api/iosBasicData/reports";
 import dicSelect from "@/components/dicSelect/main";
+import { getToken } from "@/util/auth";
 export default {
     components: { reportContainer, reportformsList, reports, SearchQuery, expand, finstlbillsitems, dicSelect },
     props: {
@@ -712,6 +718,11 @@ export default {
                         overHidden: true
                     },
                     {
+                        label: "操作员",
+                        prop: "operatorName",
+                        search: true,
+                    },
+                    {
                         label: "备注",
                         prop: "remarks",
                         width: 120,
@@ -947,7 +958,7 @@ export default {
             if (!this.form.id) {
                 return this.$message.error("请保存数据");
             }
-            if (!this.form.corpId && (this.search.hblno || this.search.mblno||this.form.invCorpId)) {
+            if (!this.form.corpId && (this.search.hblno || this.search.mblno || this.form.invCorpId)) {
                 this.finstlbillslistAccBillByCorpfun()
             } else {
                 if (!this.form.corpId) {
@@ -1361,6 +1372,7 @@ export default {
             obj.feeCnName = this.search.feeCnName//
             obj.businessDateStart = this.search.businessDateStart
             obj.businessDateEnd = this.search.businessDateEnd
+            obj.operatorName = this.search.operatorName
             finstlbillslistAccBillByCorp(obj).then(res => {
                 this.retrievePopupsType = true
                 this.retrievePopupsData = res.data.data
@@ -1385,6 +1397,7 @@ export default {
             obj.feeCnName = this.search.feeCnName//
             obj.businessDateStart = this.search.businessDateStart
             obj.businessDateEnd = this.search.businessDateEnd
+            obj.operatorName = this.search.operatorName
             const loading = this.$loading({
                 lock: true,
                 text: '加载中',
@@ -1401,6 +1414,41 @@ export default {
                 loading.close();
             })
         },
+        //导出
+        outExport() {
+            this.$confirm("是否导出当前所有数据?", "提示", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning"
+            }).then(() => {
+                let obj = {}
+                obj.type = '3'
+                obj.branchId = this.form.branchId
+                obj.branchName = this.form.branchName
+                obj.corpCnName = this.form.corpId // 结算单位
+                obj.invCorpCnName = this.form.invCorpId ? this.form.invCorpId : null
+                obj.isExchangeToCny = this.form.isExchangeToCny
+                obj.isDk = this.form.isDk
+                obj.dc = this.search.accountDc // 收付 D=收 C=付
+                obj.curCode = this.search.curCode // 币别
+                obj.mblno = this.search.mblno // MB/L NO
+                obj.hblno = this.search.hblno // HB/L NO
+                obj.vesselCnName = this.search.vesselEnName // 中文船名
+                obj.voyageNo = this.search.voyageNo // 航次
+                obj.feeCnName = this.search.feeCnName//
+                obj.businessDateStart = this.search.businessDateStart
+                obj.businessDateEnd = this.search.businessDateEnd
+                obj.operatorName = this.search.operatorName
+                const routeData = this.$router.resolve({
+                    path: "/api/blade-los/finaccbills/listAccBillExport", //跳转目标窗口的地址
+                    query: {
+                        "Blade-Auth": getToken(),
+                        ...obj //括号内是要传递给新窗口的参数
+                    }
+                });
+                window.open(routeData.href.slice(1, routeData.href.length));
+            });
+        },
         // 全部删除
         batchDeletefun() {
             if (this.handleSelectionData.length == 0) {

+ 49 - 5
src/views/iosBasicData/financialManagement/finstlbills/detailsPage.vue

@@ -110,6 +110,9 @@
                                             :disabled="editDisabled || selectionList.length == 0"
                                             @click="allClick('单据加入')">单据加入
                                         </el-button>
+                                        <el-button type="warning" size="small" @click="outExport">
+                                            导出
+                                        </el-button>
                                         <span style="font-size:18px;font-weight:600;margin-left:10px;">
                                             <span style="color: #67C23A;margin-right: 10px;">
                                                 应收本币:{{ sumDRMB.toFixed(2) }}元
@@ -236,6 +239,7 @@ import reportformsList from "@/views/iosBasicData/SeafreightExportF/bills/assemb
 import reportContainer from "@/views/iosBasicData/report-container/report-container.vue";
 import { getList as getreportsList, reportsGetReportData } from "@/api/iosBasicData/reports";
 import dicSelect from "@/components/dicSelect/main";
+import { getToken } from "@/util/auth";
 export default {
     components: { reportContainer, reportformsList, reports, SearchQuery, expand, finstlbillsitems, dicSelect },
     props: {
@@ -281,7 +285,7 @@ export default {
                 businessDateEnd: null,
                 vesselCnName: null,
                 voyageNo: null,
-                isStl:'0',
+                isStl: '0',
             },
             optionForm: {
                 menuBtn: false,
@@ -455,7 +459,7 @@ export default {
                 calcHeight: 30,
                 menuWidth: 60,
                 searchShow: true,
-                searchMenuSpan: 12,
+                searchMenuSpan: 6,
                 searchIcon: true,
                 searchIndex: 3,
                 tip: false,
@@ -618,6 +622,11 @@ export default {
                         overHidden: true
                     },
                     {
+                        label: "操作员",
+                        prop: "operatorName",
+                        search: true,
+                    },
+                    {
                         label: "是否结算",
                         prop: "isStl",
                         search: true,
@@ -745,6 +754,39 @@ export default {
         });
     },
     methods: {
+        //导出
+        outExport() {
+            this.$confirm("是否导出当前所有数据?", "提示", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning"
+            }).then(() => {
+                let obj = {}
+                obj.type = '1'
+                obj.branchId = this.form.branchId
+                obj.branchName = this.form.branchName
+                obj.corpCnName = this.form.corpId // 对账单位
+                obj.dc = this.search.accountDc // 收付 D=收 C=付
+                obj.curCode = this.search.curCode // 币别
+                obj.mblno = this.search.mblno // MB/L NO
+                obj.hblno = this.search.hblno // HB/L NO
+                obj.vesselCnName = this.search.vesselEnName // 中文船名
+                obj.voyageNo = this.search.voyageNo // 航次
+                obj.feeCnName = this.search.feeCnName//
+                obj.businessDateStart = this.search.businessDateStart
+                obj.businessDateEnd = this.search.businessDateEnd
+                obj.isStl = this.search.isStl
+                obj.operatorName = this.search.operatorName
+                const routeData = this.$router.resolve({
+                    path: "/api/blade-los/finaccbills/listAccBillExport", //跳转目标窗口的地址
+                    query: {
+                        "Blade-Auth": getToken(),
+                        ...obj //括号内是要传递给新窗口的参数
+                    }
+                });
+                window.open(routeData.href.slice(1, routeData.href.length));
+            });
+        },
         inEdit() {
             this.editButton = false
             if (this.form.billStatus == 1) return
@@ -863,7 +905,7 @@ export default {
                 businessDateEnd: null,
                 vesselCnName: null,
                 voyageNo: null,
-                isStl:'0',
+                isStl: '0',
             }
         },
         allClick(name) {
@@ -1188,7 +1230,8 @@ export default {
             obj.feeCnName = this.search.feeCnName//
             obj.businessDateStart = this.search.businessDateStart
             obj.businessDateEnd = this.search.businessDateEnd
-            obj.isStl =this.search.isStl
+            obj.isStl = this.search.isStl
+            obj.operatorName = this.search.operatorName
             finstlbillslistAccBillByCorp(obj).then(res => {
                 this.retrievePopupsType = true
                 this.retrievePopupsData = res.data.data
@@ -1210,7 +1253,8 @@ export default {
             obj.feeCnName = this.search.feeCnName//
             obj.businessDateStart = this.search.businessDateStart
             obj.businessDateEnd = this.search.businessDateEnd
-            obj.isStl =this.search.isStl
+            obj.isStl = this.search.isStl
+            obj.operatorName = this.search.operatorName
             const loading = this.$loading({
                 lock: true,
                 text: '加载中',

+ 34 - 2
src/views/iosBasicData/financialManagement/reimbursement/index.vue

@@ -14,11 +14,18 @@
           </el-button>
           <el-button type="warning" size="small" disabled @click="outExport">导 出
           </el-button>
+          <el-tabs v-model="query.status" type="card" @tab-click="handleClick">
+            <el-tab-pane label="录入" name="0"></el-tab-pane>
+            <el-tab-pane label="提交" name="1"></el-tab-pane>
+            <el-tab-pane label="审核中" name="2"></el-tab-pane>
+            <el-tab-pane label="审核通过" name="3"></el-tab-pane>
+            <el-tab-pane label="驳回" name="4"></el-tab-pane>
+          </el-tabs>
         </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.status != 0">删 除</el-button>
+            :disabled="!(row.status == 0||row.status == 4)">删 除</el-button>
         </template>
         <template slot="sysNo" slot-scope="{ row }">
           <span style="color: #1e9fff;cursor: pointer;" @click="rowEdit(row)">{{ row.sysNo }}</span>
@@ -48,6 +55,7 @@ export default {
       form: {},
       query: {
         type: "XGFY",
+        status:'0',
       },
       loading: false,
       page: {
@@ -63,7 +71,7 @@ export default {
         menuWidth: 140,
         tip: false,
         searchShow: true,
-        searchMenuSpan: 6,
+        searchMenuSpan: 24,
         border: true,
         index: true,
         addBtn: false,
@@ -113,6 +121,21 @@ export default {
             overHidden: true,
           },
           {
+            label: '金额',
+            prop: 'amount',
+            overHidden: true,
+          },
+          {
+            label: '打印时间',
+            prop: 'printDate',
+            overHidden: true,
+          },
+          {
+            label: '打印次数',
+            prop: 'printFrequency',
+            overHidden: true,
+          },
+          {
             label: '开户行',
             prop: 'bankOfDeposit',
             overHidden: true,
@@ -153,6 +176,12 @@ export default {
             width: 100,
             format: "yyyy-MM-dd",
             valueFormat: "yyyy-MM-dd HH:mm:ss"
+          },
+          {
+            label: '备注',
+            prop: 'remarks',
+            overHidden: true,
+            search:true,
           }
         ]
       },
@@ -230,6 +259,9 @@ export default {
     refreshChange() {
       this.onLoad(this.page, this.query);
     },
+    handleClick(){
+      this.refreshChange()
+    },
     onLoad(page, params = {}) {
       let obj = {}
       obj = {