Browse Source

修改bug

Qukatie 1 year ago
parent
commit
1f3343bfe0

+ 192 - 0
src/api/tradeAgency/oceanFreightImport.js

@@ -0,0 +1,192 @@
+import request from '@/router/axios';
+//贸易代理列表
+export const getList = (current, size, params) => {
+    return request({
+        url: '/api/blade-los/tradebills/listTrade',
+        method: 'get',
+        params: {
+            ...params,
+            current,
+            size
+        }
+    })
+}
+//贸易代理明细
+export const getDetail = (data) => {
+    return request({
+        url: '/api/blade-los/tradebills/detailTrade',
+        method: 'get',
+        params: data
+    })
+}
+
+//贸易代理保存
+export const submit = (data) => {
+    return request({
+        url: '/api/blade-los/tradebills/submitTrade',
+        method: 'post',
+        data: data
+    })
+}
+//生成首付款费用应收
+export const generateDownPaymentBill = (data) => {
+    return request({
+        url: '/api/blade-los/agent/generateDownPaymentBill',
+        method: 'post',
+        data: data
+    })
+}
+//生成尾款费用应收
+export const generateBalancePaymentBill = (data) => {
+    return request({
+        url: '/api/blade-los/agent/generateBalancePaymentBill',
+        method: 'post',
+        data: data
+    })
+}
+//申请付款
+export const ApplyForPayment = (data) => {
+    return request({
+        url: '/api/blade-los/agent/ApplyForPayment',
+        method: 'post',
+        data: data
+    })
+}
+//撤销申请付款
+export const revokeApplyForPayment = (data) => {
+    return request({
+        url: '/api/blade-los/agent/revokeApplyForPayment',
+        method: 'post',
+        data: data
+    })
+}
+//贸易代理删除
+export const remove = (data) => {
+    return request({
+        url: '/api/blade-los/tradebills/removeTrade',
+        method: 'post',
+        params: data
+    })
+}
+//单据请核
+export const checkAgent = (data) => {
+    return request({
+        url: '/api/blade-los/bills/checkBills',
+        method: 'post',
+        data: data
+    })
+}
+//撤销单据请核
+export const revokeCheckAgent = (data) => {
+    return request({
+        url: '/api/blade-los/bills/revokeCheckBills',
+        method: 'post',
+        data: data
+    })
+}
+//单据复制
+export const copyAgent = (data) => {
+    return request({
+        url: '/api/blade-los/agent/copyAgent',
+        method: 'get',
+        params: data
+    })
+}
+//贸易代理明细保存-批量
+export const submitListTrade = (data) => {
+    return request({
+        url: '/api/blade-los/feecenter/submitListTrade',
+        method: 'post',
+        data: data
+    })
+}
+
+//贸易代理费用明细删除
+export const feeRemove = (data) => {
+    return request({
+        url: '/api/blade-los/feecenter/remove',
+        method: 'post',
+        params: data
+    })
+}
+
+//生成账单
+export const generateBill = (data) => {
+    return request({
+        url: '/api/blade-los/agent/generateBill',
+        method: 'post',
+        data: data
+    })
+}
+//撤销账单
+export const revokeBill = (data) => {
+    return request({
+        url: '/api/blade-los/agent/revokeBill',
+        method: 'post',
+        data: data
+    })
+}
+//首款/尾款应收待确认通知
+export const confirmationNotification = (data) => {
+    return request({
+        url: '/api/blade-los/agent/confirmationNotification',
+        method: 'post',
+        data: data
+    })
+}
+//派车/自提
+export const generateDispatchVehicles = (data) => {
+    return request({
+        url: '/api/blade-los/precontainers/generateDispatchVehicles',
+        method: 'post',
+        data: data
+    })
+}
+//确认派车
+export const confirmDispatchVehicles = (data) => {
+    return request({
+        url: '/api/blade-los/dispatchvehicles/confirmDispatchVehicles',
+        method: 'post',
+        data: data
+    })
+}
+//生成入库
+export const generateWarehouseEntry = (data) => {
+    return request({
+        url: '/api/blade-los/dispatchvehicles/generateWarehouseEntry',
+        method: 'post',
+        data: data
+    })
+}
+//确认入出库
+export const confirmWarehouseEntry= (data) => {
+    return request({
+        url: '/api/blade-los/inoutstorage/confirmWarehouseEntry',
+        method: 'post',
+        data: data
+    })
+}
+//生成出库
+export const generateOutbound= (data) => {
+    return request({
+        url: '/api/blade-los/inoutstorage/generateOutbound',
+        method: 'post',
+        data: data
+    })
+}
+//派车信息删除
+export const dispatchvehiclesRemove= (data) => {
+    return request({
+        url: '/api/blade-los/dispatchvehicles/remove',
+        method: 'post',
+        params: data
+    })
+}
+//批量删除出入库
+export const inoutstorageRemove= (data) => {
+    return request({
+        url: '/api/blade-los/inoutstorage/remove',
+        method: 'post',
+        params: data
+    })
+}

+ 8 - 0
src/api/tradeAgency/tradeAgency.js

@@ -133,4 +133,12 @@ export const confirmationNotification = (data) => {
         method: 'post',
         data: data
     })
+}
+//生成货代
+export const generateFreightForwarder = (data) => {
+    return request({
+        url: '/api/blade-los/agent/generateFreightForwarder',
+        method: 'post',
+        data: data
+    })
 }

+ 796 - 0
src/components/tradeAgency/fee-oceanFreight.vue

@@ -0,0 +1,796 @@
+<template>
+    <div>
+        <avue-crud :option="optionD" :table-loading="loading" :data="form.feeCenterListD" id="out-table" ref="crudD"
+            @selection-change="selectionDChange" @resetColumn="resetColumn('crudD', 'optionD', 'optionDBack', 392)"
+            @saveColumn="saveColumn('crudD', 'optionD', 'optionDBack', 392)">
+            <template slot="menuLeft">
+                <div style="display: inline-block;margin-right: 20px" class="disabledBox fontSize">
+                    <i class="el-icon-coin"></i>
+                    <span>应收费用</span>
+                </div>
+                <el-button type="info" plain size="small" :disabled="disabled"
+                    @click="allClick('一键保存', 'D')">一键保存</el-button>
+                <el-button type="info" plain size="small" :disabled="disabled"
+                    @click="allClick('一键编辑', 'D')">一键编辑</el-button>
+                <el-button type="danger" plain size="small" :disabled="disabled || selectionDList.length == 0"
+                    @click="allClick('批量删除', 'D')">批量删除</el-button>
+                <el-button type="primary" plain size="small" :disabled="disabled || selectionDList.length == 0"
+                    @click="allClick('生成账单', 'D')">生成账单</el-button>
+                <el-button type="danger" plain size="small" :disabled="disabled || selectionDList.length == 0"
+                    @click="allClick('撤销账单', 'D')">撤销账单</el-button>
+                <!-- <el-button type="primary" plain size="small" :disabled="disabled"
+                    @click="allClick('打印账单', 'D')">打印账单</el-button>
+                <el-button type="success" plain size="small" :disabled="disabled"
+                    @click="allClick('应收模板', 'D')">应收模板</el-button>
+                <el-button type="primary" plain size="small" :disabled="disabled"
+                    @click="allClick('生成应收', 'D')">生成应收</el-button> -->
+            </template>
+            <template slot="indexHeader" slot-scope="{row,index}">
+                <el-button type="primary" size="mini" icon="el-icon-plus" :disabled="disabled" circle @click="addRow('D')">
+                </el-button>
+            </template>
+            <template slot="index" slot-scope="{row,index}">
+                <span>{{ index + 1 }}</span>
+            </template>
+            <template slot="corpCnName" slot-scope="{ row }">
+                <dic-select v-if="row.$cellEdit" v-model="row.corpCnName" placeholder="往来单位" key="id" label="cnName"
+                    res="records" url="/blade-los/bcorps/listByType" :filterable="true" :remote="true" dataName="cnName"
+                    @selectChange="rowDicChange('corpCnName', $event, row)"></dic-select>
+                <span v-else>{{ row.corpCnName }}</span>
+            </template>
+            <template slot="feeCnName" slot-scope="{ row }">
+                <dic-select v-if="row.$cellEdit" v-model="row.feeCnName" placeholder="费用名称" key="id" label="cnName"
+                    res="records" url="/blade-los/bfees/list" :filterable="true" :remote="true" dataName="cnName"
+                    @selectChange="rowDicChange('feeCnName', $event, row)"></dic-select>
+                <span v-else>{{ row.feeCnName }}</span>
+            </template>
+            <template slot="unitNo" slot-scope="{ row }">
+                <dic-select v-if="row.$cellEdit" v-model="row.unitNo" placeholder="收费标准" key="id" label="code"
+                    url="/blade-los/bunits/selectList" :filterable="true"
+                    @selectChange="rowDicChange('unitNo', $event, row)"></dic-select>
+                <span v-else>{{ row.unitNo }}</span>
+            </template>
+            <tempalte slot="quantity" slot-scope="{ row }">
+                <el-input-number v-if="row.$cellEdit" v-model="row.quantity" @change="countChange(row)" :controls="false"
+                    placeholder="请输入 数量" size="small" style="width: 100%;"></el-input-number>
+                <span v-else>{{ row.quantity }}</span>
+            </tempalte>
+            <tempalte slot="price" slot-scope="{ row }">
+                <el-input-number v-if="row.$cellEdit" v-model="row.price" @change="countChange(row)" :controls="false"
+                    placeholder="请输入 单价" size="small" style="width: 100%;"></el-input-number>
+                <span v-else>{{ row.price }}</span>
+            </tempalte>
+            <template slot="curCode" slot-scope="{ row }">
+                <dic-select v-if="row.$cellEdit" v-model="row.curCode" placeholder="币别" key="id" label="code"
+                    :url="'/blade-los/bcurrency/getExrate?date=' + defaultDate + '&dc=' + row.dc" :filterable="true"
+                    @selectChange="rowDicChange('curCode', $event, row)"></dic-select>
+                <span v-else>{{ row.curCode }}</span>
+            </template>
+            <tempalte slot="exrate" slot-scope="{ row }">
+                <el-input-number v-if="row.$cellEdit" v-model="row.exrate" @change="countChange(row)" :controls="false"
+                    placeholder="请输入 汇率" size="small" style="width: 100%;"></el-input-number>
+                <span v-else>{{ row.exrate }}</span>
+            </tempalte>
+            <tempalte slot="stlExrate" slot-scope="{ row }">
+                <el-input-number v-if="row.$cellEdit" v-model="row.stlExrate" @change="countChange(row)" :controls="false"
+                    placeholder="请输入 结算汇率" size="small" style="width: 100%;"></el-input-number>
+                <span v-else>{{ row.stlExrate }}</span>
+            </tempalte>
+        </avue-crud>
+        <avue-crud style="margin-top: 10px;" :option="optionC" :table-loading="loading" :data="form.feeCenterListC"
+            id="out-table" ref="crudC" @selection-change="selectionCChange"
+            @resetColumn="resetColumn('crudC', 'optionC', 'optionCBack', 393)"
+            @saveColumn="saveColumn('crudC', 'optionC', 'optionCBack', 393)">
+            <template slot="menuLeft">
+                <div style="display: inline-block;margin-right: 20px" class="disabledBox fontSize">
+                    <i class="el-icon-coin"></i>
+                    <span>应付费用</span>
+                </div>
+                <el-button type="info" plain size="small" :disabled="disabled"
+                    @click="allClick('一键保存', 'C')">一键保存</el-button>
+                <el-button type="info" plain size="small" :disabled="disabled"
+                    @click="allClick('一键编辑', 'C')">一键编辑</el-button>
+                <el-button type="danger" plain size="small" :disabled="disabled || selectionCList.length == 0"
+                    @click="allClick('批量删除', 'C')">批量删除</el-button>
+                <el-button type="primary" plain size="small" :disabled="disabled || selectionCList.length == 0"
+                    @click="allClick('生成账单', 'C')">生成账单</el-button>
+                <el-button type="danger" plain size="small" :disabled="disabled || selectionCList.length == 0"
+                    @click="allClick('撤销账单', 'C')">撤销账单</el-button>
+                <!-- <el-button type="primary" plain size="small" :disabled="disabled"
+                    @click="allClick('打印账单', 'C')">打印账单</el-button>
+                <el-button type="success" plain size="small" :disabled="disabled"
+                    @click="allClick('应付模板', 'C')">应付模板</el-button>
+                <el-button type="primary" plain size="small" :disabled="disabled"
+                    @click="allClick('生成应付', 'C')">生成应付</el-button> -->
+            </template>
+            <template slot="indexHeader" slot-scope="{row,index}">
+                <el-button type="primary" size="mini" icon="el-icon-plus" :disabled="disabled" circle @click="addRow('C')">
+                </el-button>
+            </template>
+            <template slot="index" slot-scope="{row,index}">
+                <span>{{ index + 1 }}</span>
+            </template>
+            <template slot="corpCnName" slot-scope="{ row }">
+                <dic-select v-if="row.$cellEdit" v-model="row.corpCnName" placeholder="往来单位" key="id" label="cnName"
+                    res="records" url="/blade-los/bcorps/listByType" :filterable="true" :remote="true" dataName="cnName"
+                    @selectChange="rowDicChange('corpCnName', $event, row)"></dic-select>
+                <span v-else>{{ row.corpCnName }}</span>
+            </template>
+            <template slot="feeCnName" slot-scope="{ row }">
+                <dic-select v-if="row.$cellEdit" v-model="row.feeCnName" placeholder="费用名称" key="id" label="cnName"
+                    res="records" url="/blade-los/bfees/list" :filterable="true" :remote="true" dataName="cnName"
+                    @selectChange="rowDicChange('feeCnName', $event, row)"></dic-select>
+                <span v-else>{{ row.feeCnName }}</span>
+            </template>
+            <template slot="unitNo" slot-scope="{ row }">
+                <dic-select v-if="row.$cellEdit" v-model="row.unitNo" placeholder="收费标准" key="id" label="code"
+                    url="/blade-los/bunits/selectList" :filterable="true"
+                    @selectChange="rowDicChange('unitNo', $event, row)"></dic-select>
+                <span v-else>{{ row.unitNo }}</span>
+            </template>
+            <tempalte slot="quantity" slot-scope="{ row }">
+                <el-input-number v-if="row.$cellEdit" v-model="row.quantity" @change="countChange(row)" :controls="false"
+                    placeholder="请输入 数量" size="small" style="width: 100%;"></el-input-number>
+                <span v-else>{{ row.quantity }}</span>
+            </tempalte>
+            <tempalte slot="price" slot-scope="{ row }">
+                <el-input-number v-if="row.$cellEdit" v-model="row.price" @change="countChange(row)" :controls="false"
+                    placeholder="请输入 单价" size="small" style="width: 100%;"></el-input-number>
+                <span v-else>{{ row.price }}</span>
+            </tempalte>
+            <template slot="curCode" slot-scope="{ row }">
+                <dic-select v-if="row.$cellEdit" v-model="row.curCode" placeholder="币别" key="id" label="code"
+                    :url="'/blade-los/bcurrency/getExrate?date=' + defaultDate + '&dc=' + row.dc" :filterable="true"
+                    @selectChange="rowDicChange('curCode', $event, row)"></dic-select>
+                <span v-else>{{ row.curCode }}</span>
+            </template>
+            <tempalte slot="exrate" slot-scope="{ row }">
+                <el-input-number v-if="row.$cellEdit" v-model="row.exrate" @change="countChange(row)" :controls="false"
+                    placeholder="请输入 汇率" size="small" style="width: 100%;"></el-input-number>
+                <span v-else>{{ row.exrate }}</span>
+            </tempalte>
+            <tempalte slot="stlExrate" slot-scope="{ row }">
+                <el-input-number v-if="row.$cellEdit" v-model="row.stlExrate" @change="countChange(row)" :controls="false"
+                    placeholder="请输入 结算汇率" size="small" style="width: 100%;"></el-input-number>
+                <span v-else>{{ row.stlExrate }}</span>
+            </tempalte>
+        </avue-crud>
+    </div>
+</template>
+
+<script>
+import dicSelect from "@/components/dicSelect/main";
+import { bcurrencyGetExrate } from "@/api/iosBasicData/rateManagement";
+import { submitListTrade, feeRemove, generateBill, revokeBill } from "@/api/tradeAgency/tradeAgency";
+import { defaultDate} from "@/util/date";
+
+import _ from "lodash";
+export default {
+    components: {
+        dicSelect
+    },
+    props: {
+        detailData: {},
+        disabled: {
+            type: Boolean,
+            default: false,
+        },
+        form: {
+            type: Object,
+            default: () => {
+            }
+        }
+    },
+    data() {
+        return {
+            defaultDate:defaultDate(new Date()),
+            optionD: {},
+            optionDBack: {
+                height: 'auto',
+                calcHeight: 30,
+                menuWidth: 140,
+                tip: false,
+                border: true,
+                addBtn: false,
+                viewBtn: false,
+                editBtn: false,
+                delBtn: false,
+                menu: false,
+                refreshBtn: false,
+                selection: true,
+                align: 'center',
+                column: [
+                    {
+                        label: "index",
+                        prop: "index",
+                        width: "55",
+                        headerslot: true,
+                    },
+                    {
+                        label: "账单",
+                        prop: "accStatus",
+                        width: '80',
+                        overHidden: true,
+                        dicData: [{
+                            label: '否',
+                            value: 0
+                        }, {
+                            label: '是',
+                            value: 1
+                        }]
+                    },
+                    {
+                        label: "往来单位",
+                        prop: "corpCnName",
+                        width: '160',
+                        overHidden: true,
+                    },
+                    {
+                        label: "费用名称",
+                        prop: "feeCnName",
+                        width: '120',
+                        overHidden: true,
+                    },
+                    {
+                        label: "收费标准",
+                        prop: "unitNo",
+                        width: '120',
+                        overHidden: true,
+                    },
+                    {
+                        label: "单价",
+                        prop: "price",
+                        overHidden: true,
+                    },
+                    {
+                        label: "数量",
+                        prop: "quantity",
+                        overHidden: true,
+                    },
+                    {
+                        label: "金额",
+                        prop: "amount",
+                        overHidden: true,
+                    },
+                    {
+                        label: "币别",
+                        prop: "curCode",
+                        overHidden: true,
+                    },
+                    {
+                        label: "外币金额",
+                        prop: "amountLoc",
+                        overHidden: true,
+                    },
+                    {
+                        label: "汇率",
+                        prop: "exrate",
+                        overHidden: true,
+                    },
+                    {
+                        label: "结算汇率",
+                        prop: "stlExrate",
+                        overHidden: true,
+                    },
+                    {
+                        label: "天数",
+                        prop: "days",
+                        overHidden: true,
+                    },
+                    {
+                        label: "入库日期",
+                        prop: "storageDate",
+                        overHidden: true,
+                    },
+                    {
+                        label: "出库日期",
+                        prop: "outboundDate",
+                        overHidden: true,
+                    },
+                    {
+                        label: "备注",
+                        prop: "remarks",
+                        cell: true,
+                        width: '200',
+                        overHidden: true,
+                    },
+                ]
+            },
+            optionC: {},
+            optionCBack: {
+                height: 'auto',
+                calcHeight: 30,
+                menuWidth: 140,
+                tip: false,
+                border: true,
+                addBtn: false,
+                viewBtn: false,
+                editBtn: false,
+                delBtn: false,
+                menu: false,
+                refreshBtn: false,
+                selection: true,
+                align: 'center',
+                column: [
+                    {
+                        label: "index",
+                        prop: "index",
+                        width: "55",
+                        headerslot: true,
+                    },
+                    {
+                        label: "账单",
+                        prop: "accStatus",
+                        width: '80',
+                        overHidden: true,
+                        dicData: [{
+                            label: '否',
+                            value: 0
+                        }, {
+                            label: '是',
+                            value: 1
+                        }]
+                    },
+                    {
+                        label: "往来单位",
+                        prop: "corpCnName",
+                        width: '160',
+                        overHidden: true,
+                    },
+                    {
+                        label: "费用名称",
+                        prop: "feeCnName",
+                        width: '120',
+                        overHidden: true,
+                    },
+                    {
+                        label: "收费标准",
+                        prop: "unitNo",
+                        width: '120',
+                        overHidden: true,
+                    },
+                    {
+                        label: "单价",
+                        prop: "price",
+                        overHidden: true,
+                    },
+                    {
+                        label: "数量",
+                        prop: "quantity",
+                        overHidden: true,
+                    },
+                    {
+                        label: "金额",
+                        prop: "amount",
+                        overHidden: true,
+                    },
+                    {
+                        label: "币别",
+                        prop: "curCode",
+                        overHidden: true,
+                    },
+                    {
+                        label: "外币金额",
+                        prop: "amountLoc",
+                        overHidden: true,
+                    },
+                    {
+                        label: "汇率",
+                        prop: "exrate",
+                        overHidden: true,
+                    },
+                    {
+                        label: "结算汇率",
+                        prop: "stlExrate",
+                        overHidden: true,
+                    },
+                    {
+                        label: "天数",
+                        prop: "days",
+                        overHidden: true,
+                    },
+                    {
+                        label: "入库日期",
+                        prop: "storageDate",
+                        overHidden: true,
+                    },
+                    {
+                        label: "出库日期",
+                        prop: "outboundDate",
+                        overHidden: true,
+                    },
+                    {
+                        label: "备注",
+                        prop: "remarks",
+                        cell: true,
+                        width: '200',
+                        overHidden: true,
+                    },
+                ]
+            },
+            selectionDList: [],
+            selectionCList: []
+
+        }
+    },
+    async created() {
+        this.optionD = await this.getColumnData(this.getColumnName(392), this.optionDBack);
+        this.optionC = await this.getColumnData(this.getColumnName(393), this.optionCBack);
+    },
+    methods: {
+        addRow(type) {
+            if (!this.form.id) return this.$message.error('请保存数据');
+            if (type == 'D') {
+                this.form.feeCenterListD.push({
+                    $cellEdit: true,
+                    pid: this.form.id,
+                    dc: type,
+                    accStatus: 0,
+                    businessType: 'MYDL',
+                    billNo: this.form.businessNo,
+                    billDate: this.form.businessDate
+                })
+            }
+            if (type == 'C') {
+                this.form.feeCenterListC.push({
+                    $cellEdit: true,
+                    pid: this.form.id,
+                    dc: type,
+                    accStatus: 0,
+                    businessType: 'MYDL',
+                    billNo: this.form.businessNo,
+                    billDate: this.form.businessDate
+                })
+            }
+        },
+        countChange(row) {
+            row.amount = _.multiply(Number(row.quantity ? row.quantity : 0), Number(row.price ? row.price : 0))
+            if (row.feeCnName == '首付款' || row.feeCnName == '尾款') {
+                row.amount = _.multiply(Number(row.amountLoc ? row.amountLoc : 0), Number(row.exrate ? row.exrate : 0))
+            }
+        },
+        selectionDChange(list) {
+            this.selectionDList = list
+        },
+        selectionCChange(list) {
+            this.selectionCList = list
+        },
+        rowDicChange(name, row, el) {
+            if (name == 'corpCnName') {
+                if (row) {
+                    el.corpId = row.id
+                    el.corpEnName = row.enName
+                    el.billCorpId = row.id
+                    el.billCorpCnName = row.cnName
+                } else {
+                    el.corpId = null
+                    el.corpEnName = null
+                    el.billCorpId = null
+                    el.billCorpCnName = null
+                }
+            }
+            if (name == 'feeCnName') {
+                if (row) {
+                    el.feeId = row.id
+                    el.feeCode = row.code
+                    el.feeEnName = row.enName
+                    el.curCode = row.curNo
+                    bcurrencyGetExrate({ date: this.form.contractDate, dc: el.dc }).then(res => {
+                        res.data.data.forEach(e => {
+                            if (row.curNo == e.code) {
+                                this.$set(el, 'exrate', e.exrate)
+                            }
+                        })
+                    })
+                } else {
+                    el.feeId = null
+                    el.feeCode = null
+                    el.feeEnName = null
+                    el.curCode = null
+                }
+            }
+            if (name == 'curCode') {
+                if (row) {
+                    bcurrencyGetExrate({ date: this.form.contractDate, dc: el.dc }).then(res => {
+                        res.data.data.forEach(e => {
+                            if (el.curCode == e.code) {
+                                this.$set(el, 'exrate', e.exrate)
+                            }
+                        })
+                    })
+                } else {
+                    el.exrate = null
+                }
+            }
+        },
+        allClick(name, type) {
+            if (name == '一键保存') {
+                if (type == 'D') {
+                    this.form.feeCenterListD.forEach(e => {
+                        this.$set(e, '$cellEdit', false)
+                    })
+                    const loading = this.$loading({
+                        lock: true,
+                        text: '加载中',
+                        spinner: 'el-icon-loading',
+                        background: 'rgba(255,255,255,0.7)'
+                    });
+                    submitListTrade(this.form.feeCenterListD).then(res => {
+                        this.form.feeCenterListD = res.data.data
+                        this.$message.success("保存成功");
+                    }).finally(() => {
+                        loading.close();
+                    })
+                }
+                if (type == 'C') {
+                    this.form.feeCenterListC.forEach(e => {
+                        this.$set(e, '$cellEdit', false)
+                    })
+                    const loading = this.$loading({
+                        lock: true,
+                        text: '加载中',
+                        spinner: 'el-icon-loading',
+                        background: 'rgba(255,255,255,0.7)'
+                    });
+                    submitListTrade(this.form.feeCenterListC).then(res => {
+                        this.form.feeCenterListC = res.data.data
+                        this.$message.success("保存成功");
+                    }).finally(() => {
+                        loading.close();
+                    })
+                }
+            }
+            if (name == '一键编辑') {
+                if (type == 'D') {
+                    this.form.feeCenterListD.forEach(e => {
+                        this.$set(e, '$cellEdit', true)
+                    })
+                }
+                if (type == 'C') {
+                    this.form.feeCenterListC.forEach(e => {
+                        this.$set(e, '$cellEdit', true)
+                    })
+                }
+            }
+            if (name == '批量删除') {
+                let multiList = []
+                let arr = []
+                for (let index in this.selectionDList) {
+                    if (this.selectionDList[index].accStatus == 1) return this.$message.error("第" + (Number(this.selectionDList[index].$index) + 1) + "行不允许删除");
+                }
+                for (let index in this.selectionCList) {
+                    if (this.selectionCList[index].accStatus == 1) return this.$message.error("第" + (Number(this.selectionCList[index].$index) + 1) + "行不允许删除");
+                }
+                if (type == 'D') {
+                    this.$confirm("确定将选择数据删除?", {
+                        confirmButtonText: "确定",
+                        cancelButtonText: "取消",
+                        type: "warning"
+                    }).then(() => {
+                        multiList = this.selectionDList
+                        arr = this.form.feeCenterListD
+                        // 获取有id 的数据
+                        const itemsWithId = multiList.filter(item => item.hasOwnProperty('id'));
+                        let arrIds = itemsWithId.map(item => item.id) // 获取id 数据
+                        // 把选中的删除掉
+                        multiList.forEach((item) => {
+                            for (let index in arr) {
+                                if (JSON.stringify(item) == JSON.stringify(arr[index])) {
+                                    arr.splice(Number(index), 1)
+                                }
+                            }
+                        })
+                        if (itemsWithId.length != 0) {
+                            const loading = this.$loading({
+                                lock: true,
+                                text: '加载中',
+                                spinner: 'el-icon-loading',
+                                background: 'rgba(255,255,255,0.7)'
+                            });
+                            feeRemove({ ids: arrIds.join(',') }).then(res => {
+                                this.$message.success("删除成功");
+                            }).finally(() => {
+                                loading.close();
+                            })
+                        }
+                    })
+                }
+                if (type == 'C') {
+                    this.$confirm("确定将选择数据删除?", {
+                        confirmButtonText: "确定",
+                        cancelButtonText: "取消",
+                        type: "warning"
+                    }).then(() => {
+                        multiList = this.selectionCList
+                        arr = this.form.feeCenterListC
+                        // 获取有id 的数据
+                        const itemsWithId = multiList.filter(item => item.hasOwnProperty('id'));
+                        let arrIds = itemsWithId.map(item => item.id) // 获取id 数据
+                        // 把选中的删除掉
+                        multiList.forEach((item) => {
+                            for (let index in arr) {
+                                if (JSON.stringify(item) == JSON.stringify(arr[index])) {
+                                    arr.splice(Number(index), 1)
+                                }
+                            }
+                        })
+                        if (itemsWithId.length != 0) {
+                            const loading = this.$loading({
+                                lock: true,
+                                text: '加载中',
+                                spinner: 'el-icon-loading',
+                                background: 'rgba(255,255,255,0.7)'
+                            });
+                            feeRemove({ ids: arrIds.join(',') }).then(res => {
+                                this.$message.success("删除成功");
+                            }).finally(() => {
+                                loading.close();
+                            })
+                        }
+                    })
+                }
+            }
+            if (name == '生成账单') {
+                if (type == 'D') {
+                    for (let index in this.selectionDList) {
+                        if (this.selectionDList[index].accStatus != 0) {
+                            return this.$message.error("已生成账单");
+                        }
+                    }
+                    this.$confirm("确定将选择数据生成账单?", {
+                        confirmButtonText: "确定",
+                        cancelButtonText: "取消",
+                        type: "warning"
+                    }).then(() => {
+                        const loading = this.$loading({
+                            lock: true,
+                            text: '加载中',
+                            spinner: 'el-icon-loading',
+                            background: 'rgba(255,255,255,0.7)'
+                        });
+                        generateBill({ id: this.form.id, feeCenterListD: this.selectionDList }).then(res => {
+                            this.$message.success("成功生成账单");
+                            this.$emit('getDetails', this.form.id)
+                        }).finally(() => {
+                            loading.close();
+                        })
+                    })
+                }
+                if (type == 'C') {
+                    for (let index in this.selectionCList) {
+                        if (this.selectionCList[index].accStatus != 0) {
+                            return this.$message.error("已生成账单");
+                        }
+                    }
+                    this.$confirm("确定将选择数据生成账单?", {
+                        confirmButtonText: "确定",
+                        cancelButtonText: "取消",
+                        type: "warning"
+                    }).then(() => {
+                        const loading = this.$loading({
+                            lock: true,
+                            text: '加载中',
+                            spinner: 'el-icon-loading',
+                            background: 'rgba(255,255,255,0.7)'
+                        });
+                        generateBill({ id: this.form.id, feeCenterListC: this.selectionCList }).then(res => {
+                            this.$message.success("成功生成账单");
+                            this.$emit('getDetails', this.form.id)
+                        }).finally(() => {
+                            loading.close();
+                        })
+                    })
+                }
+
+
+            }
+            if (name == '撤销账单') {
+                if (type == 'D') {
+                    for (let index in this.selectionDList) {
+                        if (this.selectionDList[index].accStatus != 1) {
+                            return this.$message.error("未生成账单");
+                        }
+                    }
+                    this.$confirm("确定将选择数据撤销账单?", {
+                        confirmButtonText: "确定",
+                        cancelButtonText: "取消",
+                        type: "warning"
+                    }).then(() => {
+                        const loading = this.$loading({
+                            lock: true,
+                            text: '加载中',
+                            spinner: 'el-icon-loading',
+                            background: 'rgba(255,255,255,0.7)'
+                        });
+                        revokeBill({ id: this.form.id, feeCenterListD: this.selectionDList }).then(res => {
+                            this.$message.success("成功撤销账单");
+                            this.$emit('getDetails', this.form.id)
+                        }).finally(() => {
+                            loading.close();
+                        })
+                    })
+                }
+                if (type == 'C') {
+                    for (let index in this.selectionCList) {
+                        if (this.selectionCList[index].accStatus != 1) {
+                            return this.$message.error("未生成账单");
+                        }
+                    }
+                    this.$confirm("确定将选择数据撤销账单?", {
+                        confirmButtonText: "确定",
+                        cancelButtonText: "取消",
+                        type: "warning"
+                    }).then(() => {
+                        const loading = this.$loading({
+                            lock: true,
+                            text: '加载中',
+                            spinner: 'el-icon-loading',
+                            background: 'rgba(255,255,255,0.7)'
+                        });
+                        revokeBill({ id: this.form.id, feeCenterListC: this.selectionCList }).then(res => {
+                            this.$message.success("成功撤销账单");
+                            this.$emit('getDetails', this.form.id)
+                        }).finally(() => {
+                            loading.close();
+                        })
+                    })
+                }
+
+            }
+        },
+        //自定义列保存
+        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;
+            }
+        },
+
+    },
+}
+</script>
+
+<style scoped lang="scss">
+.disabledBox {
+    display: flex;
+    align-items: center;
+}
+
+.fontSize {
+    font-size: 16px;
+    color: #81B337;
+}
+
+.meetSize {
+    font-size: 16px;
+    color: #54BCBD;
+}
+
+::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;
+}
+</style>

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

@@ -1784,6 +1784,27 @@ const columnName = [{
   },{
     code: 386,
     name: '贸易代理-购汇付汇-应付费用明细'
+  },{
+    code: 387,
+    name: '贸易代理-海运进口-列表'
+  },{
+    code: 388,
+    name: '贸易代理-海运进口-箱信息'
+  },{
+    code: 389,
+    name: '贸易代理-海运进口-派车明细'
+  },{
+    code: 390,
+    name: '贸易代理-海运进口-入库明细'
+  },{
+    code: 391,
+    name: '贸易代理-海运进口-出库明细'
+  },{
+    code: 392,
+    name: '贸易代理-海运进口-应收费用明细'
+  },{
+    code: 393,
+    name: '贸易代理-海运进口-应付费用明细'
   }
 ]
 export const getColumnName = (key) => {

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

@@ -3627,4 +3627,18 @@ export default [{
     component: () => import( /* webpackChunkName: "views" */ '@/views/tradeAgency/exchangePurchasing/index')
   }]
 },
+{
+  path: '/tradeAgency/oceanFreightImport/index',
+  component: Layout,
+  hidden: true,
+  children: [{
+    path: '/tradeAgency/oceanFreightImport/index',
+    name: '海运进口',
+    meta: {
+      i18n: '/tradeAgency/oceanFreightImport/index',
+      keepAlive: true,
+    },
+    component: () => import( /* webpackChunkName: "views" */ '@/views/tradeAgency/oceanFreightImport/index')
+  }]
+},
 ]

+ 26 - 36
src/views/tradeAgency/exchangePurchasing/detailsPage.vue

@@ -94,16 +94,6 @@ export default {
                         disabled: false,
                     },
                     {
-                        label: '国家',
-                        prop: "country",
-                        disabled: false,
-                        rules: [{
-                            required: true,
-                            message: " ",
-                            trigger: "blur"
-                        }]
-                    },
-                    {
                         label: '运输方式',
                         prop: "typeOfShipping",
                         disabled: false,
@@ -134,31 +124,6 @@ export default {
                         }]
                     },
                     {
-                        label: '货值',
-                        prop: "goodsValue",
-                        disabled: false,
-                    },
-                    {
-                        label: '预付比例',
-                        prop: "advanceRatio",
-                        disabled: false,
-                        rules: [{
-                            required: true,
-                            message: " ",
-                            trigger: "blur"
-                        }]
-                    },
-                    {
-                        label: '预付金额',
-                        prop: "prepaidAmount",
-                        disabled: false,
-                        rules: [{
-                            required: true,
-                            message: " ",
-                            trigger: "blur"
-                        }]
-                    },
-                    {
                         label: '外国发货人',
                         prop: "abroadConsignorCname",
                         disabled: false,
@@ -199,6 +164,31 @@ export default {
                         disabled: false,
                     },
                     {
+                        label: '货值',
+                        prop: "goodsValue",
+                        disabled: false,
+                    },
+                    {
+                        label: '预付比例',
+                        prop: "advanceRatio",
+                        disabled: false,
+                        rules: [{
+                            required: true,
+                            message: " ",
+                            trigger: "blur"
+                        }]
+                    },
+                    {
+                        label: '预付金额',
+                        prop: "prepaidAmount",
+                        disabled: false,
+                        rules: [{
+                            required: true,
+                            message: " ",
+                            trigger: "blur"
+                        }]
+                    },
+                    {
                         label: '单据类型',
                         prop: "documentType",
                         disabled: false,
@@ -210,7 +200,7 @@ export default {
                     },
                     {
                         label: '业务员',
-                        prop: "salesmanName",
+                        prop: "srcCnName",
                         disabled: false,
                     },
                     {

+ 1498 - 0
src/views/tradeAgency/oceanFreightImport/detailsPage.vue

@@ -0,0 +1,1498 @@
+<template>
+    <div>
+        <div class="customer-head">
+            <div class="customer-back">
+                <el-button type="danger" style="border: none;background: none;color: red" icon="el-icon-arrow-left"
+                    @click="goBack(0)">返回列表
+                </el-button>
+            </div>
+            <div class="add-customer-btn">
+                <el-button class="el-button--small-yh" style="margin-left: 6px;" type="primary" size="small"
+                    v-if="editButton" @click="inEdit">编 辑
+                </el-button>
+                <el-button class="el-button--small-yh" v-else style="margin-left: 6px;" type="primary" size="small"
+                    :disabled="isSaveBtn || form.status != 0" @click="submit">保 存
+                </el-button>
+                <el-button v-if="form.id" class="el-button--small-yh" style="margin-left: 6px;" type="success" size="small"
+                    :disabled="(form.status != 0&&form.status != 4)" @click="application">单据请核
+                </el-button>
+                <el-button v-if="form.status == 1" class="el-button--small-yh" style="margin-left: 6px;" type="danger"
+                    size="small" @click="revokeApplication">撤销单据请核
+                </el-button>
+                <el-dropdown style="line-height: 0">
+                    <el-button class="el-button--small-yh" style="margin-left: 6px;" type="warning" :disabled="!form.id"
+                        size="small">
+                        审 批<i class="el-icon-arrow-down el-icon--right"></i>
+                    </el-button>
+                    <el-dropdown-menu slot="dropdown">
+                        <el-dropdown-item @click.native="checkScheduleDialog = true, checkId = form.id">审核进度
+                        </el-dropdown-item>
+                    </el-dropdown-menu>
+                </el-dropdown>
+            </div>
+        </div>
+        <div style="margin-top: 50px">
+            <trade-card title="基础信息">
+                <avue-form :option="optionForm" v-model="form" ref="form">
+                    <tempalte slot="corpCnName">
+                        <dic-select v-model="form.corpCnName" placeholder="客户" key="id" label="cnName" res="records"
+                            url="/blade-los/bcorps/listByType" :filterable="true" :remote="true" dataName="cnName"
+                            @selectChange="dicChange('corpCnName', $event)" :disabled="editDisabled"></dic-select>
+                    </tempalte>
+                    <tempalte slot="polCnName">
+                        <dic-select v-model="form.polCnName" placeholder="起运港" key="id" label="cnName" res="records"
+                            url="/blade-los/bports/list" :filterable="true" :remote="true" dataName="cnName"
+                            @selectChange="dicChange('polCnName', $event)" :disabled="editDisabled"></dic-select>
+                    </tempalte>
+                    <tempalte slot="podCnName">
+                        <dic-select v-model="form.podCnName" placeholder="目的港" key="id" label="cnName" res="records"
+                            url="/blade-los/bports/list" :filterable="true" :remote="true" dataName="cnName"
+                            @selectChange="dicChange('podCnName', $event)" :disabled="editDisabled"></dic-select>
+                    </tempalte>
+                    <tempalte slot="srcCnName">
+                        <dic-select v-model="form.srcCnName" placeholder="业务员" key="id" label="realName" res="records"
+                            url="/blade-user/page" :filterable="true" :remote="true" dataName="realName"
+                            @selectChange="dicChange('srcCnName', $event)" :disabled="editDisabled"></dic-select>
+                    </tempalte>
+                    <tempalte slot="hshipperCnName">
+                        <dic-select v-model="form.hshipperCnName" placeholder="发货人" key="id" label="cnName" res="records"
+                            url="/blade-los/bcorps/listByType" :filterable="true" :remote="true" dataName="cnName"
+                            @selectChange="dicChange('hshipperCnName', $event)" :disabled="editDisabled"></dic-select>
+                    </tempalte>
+                    <tempalte slot="hconsigneeCnName">
+                        <dic-select v-model="form.hconsigneeCnName" placeholder="收货人" key="id" label="cnName" res="records"
+                            url="/blade-los/bcorps/listByType" :filterable="true" :remote="true" dataName="cnName"
+                            @selectChange="dicChange('hconsigneeCnName', $event)" :disabled="editDisabled"></dic-select>
+                    </tempalte>
+                    <tempalte slot="carrierCnName">
+                        <dic-select v-model="form.carrierCnName" placeholder="船公司" key="id" label="cnName" res="records"
+                            url="/blade-los/bcorps/listByType?corpTypeName=船公司" :filterable="true" :remote="true"
+                            dataName="cnName" @selectChange="dicChange('carrierCnName', $event)"
+                            :disabled="editDisabled"></dic-select>
+                    </tempalte>
+                    <template slot="hscode">
+                        <div style="display:flex;">
+                            <dic-select v-model="form.hscode" placeholder="品名" key="id" res="records" label="hsCode"
+                                url="/blade-los/bcommodity/list" :filterable="true" :remote="true" dataName="hsCode"
+                                @selectChange="dicChange('hscode', $event)" :disabled="editDisabled"></dic-select>
+                            <el-input style="margin-left: 10px;" v-model="form.goodsName" placeholder="请输入品名"
+                                :disabled="editDisabled"></el-input>
+                        </div>
+                    </template>
+                </avue-form>
+            </trade-card>
+            <trade-card title="箱信息">
+                <avue-crud :option="option" :data="form.preContainersList" id="out-table" ref="crud"
+                    @selection-change="selectionChange" @resetColumn="resetColumn('crud', 'option', 'optionBack', 388)"
+                    @saveColumn="saveColumn('crud', 'option', 'optionBack', 388)">
+                    <template slot="menu" slot-scope="{ row, index }">
+                        <el-button size="small" type="text" :disabled="editDisabled || row.whetherDispatchVehicles == 1"
+                            @click="rowCell('编辑', row, index)">编
+                            辑</el-button>
+                        <el-button size="small" type="text" :disabled="editDisabled || row.whetherDispatchVehicles == 1"
+                            @click="rowCell('派车', row, index)">派
+                            车</el-button>
+                        <el-button size="small" type="text" :disabled="editDisabled || row.whetherDispatchVehicles == 1"
+                            @click="rowCell('自提', row, index)">自
+                            提</el-button>
+                    </template>
+                </avue-crud>
+            </trade-card>
+            <trade-card title="派车">
+                <avue-crud :option="option2" :data="form.dispatchVehiclesList" id="out-table" ref="crud2"
+                    @selection-change="selectionChange" @resetColumn="resetColumn('crud2', 'option2', 'optionBack2', 389)"
+                    @saveColumn="saveColumn('crud2', 'option2', 'optionBack2', 389)">
+                    <tempalte slot="fleetName" slot-scope="{ row, index }">
+                        <dic-select v-if="row.$cellEdit" v-model="row.fleetName" placeholder="承运车队" key="id" label="cnName"
+                            res="records" url="/blade-los/bcorps/listByType?corpTypeName=车队" :filterable="true"
+                            :remote="true" dataName="cnName" @selectChange="rowDicChange('fleetName', $event, row)"
+                            :disabled="editDisabled"></dic-select>
+                        <span v-else>{{ row.fleetName }}</span>
+                    </tempalte>
+                    <tempalte slot="pickupAddressName" slot-scope="{ row, index }">
+                        <dic-select v-if="row.$cellEdit" v-model="row.pickupAddressName" placeholder="提箱地点" key="id"
+                            label="cnName" res="records" url="/blade-los/blocations/list" :filterable="true" :remote="true"
+                            dataName="cnName" @selectChange="rowDicChange('pickupAddressName', $event, row)"
+                            :disabled="editDisabled"></dic-select>
+                        <span v-else>{{ row.pickupAddressName }}</span>
+                    </tempalte>
+                    <tempalte slot="deliveryAddressName" slot-scope="{ row, index }">
+                        <dic-select v-if="row.$cellEdit" v-model="row.deliveryAddressName" placeholder="提箱地点" key="id"
+                            label="cnName" res="records" url="/blade-los/blocations/list" :filterable="true" :remote="true"
+                            dataName="cnName" @selectChange="rowDicChange('deliveryAddressName', $event, row)"
+                            :disabled="editDisabled"></dic-select>
+                        <span v-else>{{ row.deliveryAddressName }}</span>
+                    </tempalte>
+                    <template slot="returnCyName" slot-scope="{ row }">
+                        <dic-select v-if="row.$cellEdit" v-model="row.returnCyName" placeholder="返空场站" key="id"
+                            label="cnName" res="records" url="/blade-los/bcorps/listByType?corpTypeName=场站"
+                            :filterable="true" :remote="true" dataName="cnName"
+                            @selectChange="rowDicChange('returnCyName', $event, row)"></dic-select>
+                        <span v-else>{{ row.returnCyName }}</span>
+                    </template>
+                    <template slot="menu" slot-scope="{ row, index }">
+                        <el-button size="small" type="text"
+                            :disabled="editDisabled || row.whetherDispatchVehicles == 1 || row.whetherWarehouseEntry == 1"
+                            @click="rowCell('编辑', row, index)">编
+                            辑</el-button>
+                        <el-button size="small" type="text" :disabled="editDisabled || row.whetherDispatchVehicles == 1"
+                            @click="rowCell('确认派车', row, index)">确
+                            认</el-button>
+                        <el-button size="small" type="text" :disabled="editDisabled || row.whetherWarehouseEntry == 1"
+                            @click="rowCell('生成入库', row, index)">入
+                            库</el-button>
+                        <!-- <el-button size="small" type="text"
+                            :disabled="editDisabled || row.whetherDispatchVehicles == 1 || row.whetherWarehouseEntry == 1"
+                            @click="rowCell('派车删除', row, index)">删 除</el-button> -->
+                    </template>
+                </avue-crud>
+            </trade-card>
+            <trade-card title="入库">
+                <avue-crud :option="option3" :data="form.inStorageList" id="out-table" ref="crud3"
+                    @selection-change="selectionChange" @resetColumn="resetColumn('crud3', 'option3', 'optionBack3', 390)"
+                    @saveColumn="saveColumn('crud3', 'option3', 'optionBack3', 390)">
+                    <template slot="warehouseName" slot-scope="{ row }">
+                        <dic-select v-if="row.$cellEdit" v-model="row.warehouseName" placeholder="入库" key="id" label="cname"
+                            url="blade-los/storage/selectList" :filterable="true" :remote="true" dataName="cname"
+                            @selectChange="rowDicChange('warehouseName', $event, row)"></dic-select>
+                        <span v-else>{{ row.warehouseName }}</span>
+                    </template>
+                    <template slot="menu" slot-scope="{ row, index }">
+                        <el-button size="small" type="text" :disabled="editDisabled || row.confirmDispatchVehicles == 1"
+                            @click="rowCell('编辑', row, index)">编
+                            辑</el-button>
+                        <el-button size="small" type="text" :disabled="editDisabled || row.confirmDispatchVehicles == 1"
+                            @click="rowCell('入库确认', row, index)">入库确认</el-button>
+                        <el-button size="small" type="text"
+                            :disabled="editDisabled || (row.whetherInOutStorage == 1 && row.surplusQuantity == 0)"
+                            @click="rowCell('生成出库', row, index)">出
+                            库</el-button>
+                        <!-- <el-button size="small" type="text"
+                            :disabled="editDisabled || row.confirmDispatchVehicles == 1 || row.whetherInOutStorage == 1"
+                            @click="rowCell('入库删除', row, index)">删 除</el-button> -->
+                    </template>
+                </avue-crud>
+            </trade-card>
+            <trade-card title="出库">
+                <avue-crud :option="option4" :data="form.outStorageList" id="out-table" ref="crud4"
+                    @selection-change="selectionChange" @resetColumn="resetColumn('crud4', 'option4', 'optionBack4', 391)"
+                    @saveColumn="saveColumn('crud4', 'option4', 'optionBack4', 391)">
+                    <template slot="menu" slot-scope="{ row, index }">
+                        <el-button size="small" type="text" :disabled="editDisabled || row.confirmDispatchVehicles == 1"
+                            @click="rowCell('编辑', row, index)">编
+                            辑</el-button>
+                        <el-button size="small" type="text" :disabled="editDisabled || row.confirmDispatchVehicles == 1"
+                            @click="rowCell('出库确认', row, index)">出库确认</el-button>
+                        <el-button size="small" type="text" :disabled="editDisabled" @click="rowCell('开票', row, index)">开
+                            票</el-button>
+                        <el-button size="small" type="text" :disabled="editDisabled || row.confirmDispatchVehicles == 1"
+                            @click="rowCell('出库删除', row, index)">删 除</el-button>
+                    </template>
+                </avue-crud>
+            </trade-card>
+            <trade-card title="费用明细">
+                <fee-info :form="form" :disabled="editDisabled" @getDetails="getDetails"></fee-info>
+            </trade-card>
+            <containerTitle title="上传附件"></containerTitle>
+            <c-upload :data="form.filesCenterList" :enumerationValue="76"
+                deleteUrl="/blade-purchase-sales/orderfiles/update" display :disabled="editDisabled"></c-upload>
+        </div>
+        <!--审核弹窗-->
+        <el-dialog append-to-body title="审批进度" class="el-dialogDeep" :visible.sync="checkScheduleDialog" width="40%"
+            :close-on-click-modal="false" :destroy-on-close="true" :close-on-press-escape="false" v-dialog-drag>
+            <check-schedule :checkId="checkId" :batchNo="batchNo" @choceScheduleFun="choceScheduleFun"></check-schedule>
+        </el-dialog>
+    </div>
+</template>
+
+<script>
+import { submit, getDetail, remove, checkAgent, revokeCheckAgent, copyAgent, generateDispatchVehicles, confirmDispatchVehicles, generateWarehouseEntry, confirmWarehouseEntry, generateOutbound, dispatchvehiclesRemove, inoutstorageRemove } from "@/api/tradeAgency/oceanFreightImport";
+import feeInfo from "@/components/tradeAgency/fee-oceanFreight";
+import dicSelect from "@/components/dicSelect/main";
+import checkSchedule from "@/components/checkH/checkSchedule.vue";
+import _ from "lodash";
+export default {
+    name: "detailsPage",
+    data() {
+        return {
+            checkId: '', // 审核需要的id
+            batchNo: '',
+            checkScheduleDialog: false, // 审核弹窗
+            editButton: false,
+            editDisabled: false,
+            form: {
+                billNoFormat: 'HYJK',
+                businessTypeCode: 'HYJK',
+                businessType: 'SI',
+                status: 0,
+                seaType: 'I',
+                feeCenterListC: [],
+                feeCenterListD: [],
+                filesCenterList: [],
+                inStorageList: [],//入库
+                outStorageList: [],//出库
+                dispatchVehiclesList: [],//派车
+                preContainersList: []//箱信息
+            },
+            optionForm: {
+                menuBtn: false,
+                span: 8,
+                disabled: false,
+                column: [
+                    {
+                        label: '客户',
+                        prop: "corpCnName",
+                        disabled: false,
+                        rules: [{
+                            required: true,
+                            message: " ",
+                            trigger: "blur"
+                        }]
+                    },
+                    {
+                        label: "委托编号",
+                        prop: "billNo",
+                        disabled: true,
+                    },
+                    {
+                        label: "提单号",
+                        prop: "mblno",
+                        disabled: false,
+                        rules: [{
+                            required: true,
+                            message: " ",
+                            trigger: "blur"
+                        }]
+                    },
+                    {
+                        label: '合同号',
+                        prop: "bookingNo",
+                        disabled: false,
+                        rules: [{
+                            required: true,
+                            message: " ",
+                            trigger: "blur"
+                        }]
+                    },
+                    {
+                        label: '原产地',
+                        prop: "mnotifyCntyCode",
+                        type: 'select',
+                        filterable: true,
+                        remote: true,
+                        dicUrl: "/api/blade-los/bcountrys/list",
+                        props: {
+                            label: 'cnName',
+                            value: 'cnName',
+                            res: 'data.records'
+                        },
+                        disabled: false,
+                    },
+                    {
+                        label: '运输方式',
+                        prop: "mnotifyCntyName",
+                        type: 'select',
+                        filterable: true,
+                        dicUrl: "/api/blade-system/dict-biz/dictionary?code=mode_transport",
+                        props: {
+                            label: 'dictValue',
+                            value: 'dictValue',
+                        },
+                        disabled: false,
+                        rules: [{
+                            required: true,
+                            message: " ",
+                            trigger: "blur"
+                        }]
+                    },
+                    {
+                        label: "发货人",
+                        prop: "hshipperCnName",
+                        disabled: false,
+                    },
+                    {
+                        label: "收货人",
+                        prop: "hconsigneeCnName",
+                        disabled: false,
+                    },
+                    {
+                        label: "船名",
+                        prop: "vesselCnName",
+                        disabled: false,
+                    },
+                    {
+                        label: "航次",
+                        prop: "voyageNo",
+                        overHidden: true,
+                    },
+                    {
+                        label: '起运港',
+                        prop: "polCnName",
+                        disabled: false,
+                    },
+                    {
+                        label: '目的港',
+                        prop: "podCnName",
+                        disabled: false,
+                    },
+                    {
+                        label: "开船日期",
+                        prop: "etd",
+                        type: "date",
+                        format: "yyyy-MM-dd",
+                        valueFormat: "yyyy-MM-dd",
+                    },
+                    {
+                        label: "预计到港",
+                        prop: "bookingDate",
+                        type: "date",
+                        format: "yyyy-MM-dd",
+                        valueFormat: "yyyy-MM-dd",
+                    },
+                    {
+                        label: "实际到港",
+                        prop: "eta",
+                        type: "date",
+                        format: "yyyy-MM-dd",
+                        valueFormat: "yyyy-MM-dd",
+                    },
+                    {
+                        label: "船公司",
+                        prop: "carrierCnName",
+                        disabled: false,
+                    },
+                    {
+                        label: '装箱方式',
+                        prop: "loadType",
+                        type: 'select',
+                        dicData: [{
+                            label: '整箱',
+                            value: 'FCL'
+                        }, {
+                            label: '拼箱',
+                            value: 'LCL'
+                        }],
+                        disabled: false,
+                    },
+                    {
+                        label: "HSCODE",
+                        prop: "hscode",
+                        disabled: false,
+                    },
+                    {
+                        label: "件数",
+                        prop: "quantity",
+                        disabled: false,
+                    },
+                    {
+                        label: "包装",
+                        prop: "packing",
+                        disabled: false,
+                    },
+                    {
+                        label: "尺码",
+                        prop: "measurement",
+                        disabled: false,
+                    },
+                    {
+                        label: "重量",
+                        prop: "grossWeight",
+                        disabled: false,
+                    },
+                    {
+                        label: "净重",
+                        prop: "netWeight",
+                        disabled: false,
+                    },
+                    {
+                        label: "是否退押",
+                        prop: "billingStatus",
+                        type: 'select',
+                        dicData: [{
+                            label: '是',
+                            value: 1
+                        }, {
+                            label: '否',
+                            value: 0
+                        }],
+                        disabled: false,
+                    },
+                    {
+                        label: "放单方式",
+                        prop: "mconsigneeCntyCode",
+                        type: 'select',
+                        filterable: true,
+                        dicUrl: "/api/blade-system/dict-biz/dictionary?code=release_method",
+                        props: {
+                            label: 'dictValue',
+                            value: 'dictValue',
+                        },
+                        disabled: false,
+                    },
+                    {
+                        label: "免箱期",
+                        prop: "iqNo",
+                        disabled: false,
+                    },
+                    {
+                        label: '报关单号',
+                        prop: "mnotify2CntyName",
+                        width: "100",
+                        overHidden: true
+                    },
+                    {
+                        label: "报关日期",
+                        prop: "issueDate",
+                        type: "date",
+                        format: "yyyy-MM-dd",
+                        valueFormat: "yyyy-MM-dd",
+                    },
+                    {
+                        label: "放行日期",
+                        prop: "cyReturnTime",
+                        type: "date",
+                        format: "yyyy-MM-dd",
+                        valueFormat: "yyyy-MM-dd",
+                    },
+                    {
+                        label: "提箱码头",
+                        prop: "charData",
+                        type: 'select',
+                        filterable: true,
+                        dicUrl: "/api/blade-system/dict-biz/dictionary?code=container_terminal",
+                        props: {
+                            label: 'dictValue',
+                            value: 'dictValue',
+                        },
+                        disabled: false,
+                    },
+                    {
+                        label: '业务员',
+                        prop: "srcCnName",
+                        disabled: false,
+                    },
+                    {
+                        label: '备注',
+                        prop: "remarks",
+                        type: 'textarea',
+                        disabled: false,
+                        span: 6,
+                        minRows: 2,
+                    },
+                ]
+            },
+            option: {},
+            optionBack: {
+                height: 'auto',
+                calcHeight: 30,
+                menuWidth: 120,
+                tip: false,
+                border: true,
+                index: true,
+                addBtn: false,
+                viewBtn: false,
+                editBtn: false,
+                delBtn: false,
+                refreshBtn: false,
+                selection: true,
+                align: 'center',
+                column: [
+                    {
+                        label: "箱型",
+                        prop: "cntrTypeCode",
+                        width: "120",
+                        overHidden: true,
+                    },
+                    {
+                        label: "箱号",
+                        prop: "boxNo",
+                        width: "120",
+                        overHidden: true
+                    },
+                    {
+                        label: "品名",
+                        prop: "goodsName",
+                        width: "120",
+                        overHidden: true
+                    },
+                    {
+                        label: "件数",
+                        prop: "quantity",
+                        width: "120",
+                        overHidden: true
+                    },
+                    {
+                        label: "重量",
+                        prop: "grossWeight",
+                        width: "120",
+                        overHidden: true
+                    },
+                    {
+                        label: "单价",
+                        prop: "price",
+                        width: "120",
+                        overHidden: true
+                    },
+                    {
+                        label: "查验类型",
+                        prop: "inspectionType",
+                        cell: true,
+                        type: 'select',
+                        filterable: true,
+                        dicUrl: "/api/blade-system/dict-biz/dictionary?code=inspection_type",
+                        props: {
+                            label: 'dictValue',
+                            value: 'dictValue',
+                        },
+                        width: "120",
+                        overHidden: true
+                    },
+                    {
+                        label: "查验时间",
+                        prop: "inspectionDate",
+                        width: "120",
+                        cell: true,
+                        type: "date",
+                        format: "yyyy-MM-dd",
+                        valueFormat: "yyyy-MM-dd 00:00:00",
+                        overHidden: true
+                    },
+                    {
+                        label: "是否机检",
+                        prop: "whetherMachineInspection",
+                        cell: true,
+                        type: 'select',
+                        dicData: [{
+                            label: '是',
+                            value: 1
+                        }, {
+                            label: '否',
+                            value: 0
+                        }],
+                        width: "120",
+                        overHidden: true
+                    },
+                    {
+                        label: "是否取样",
+                        prop: "whetherSampling",
+                        cell: true,
+                        type: 'select',
+                        dicData: [{
+                            label: '是',
+                            value: 1
+                        }, {
+                            label: '否',
+                            value: 0
+                        }],
+                        width: "120",
+                        overHidden: true
+                    },
+                    {
+                        label: "是否入库",
+                        prop: "whetherWarehousing",
+                        cell: true,
+                        type: 'select',
+                        dicData: [{
+                            label: '是',
+                            value: 1
+                        }, {
+                            label: '否',
+                            value: 0
+                        }],
+                        width: "120",
+                        overHidden: true
+                    },
+                    {
+                        label: "是否返场",
+                        prop: "whetherReturnSite",
+                        cell: true,
+                        type: 'select',
+                        dicData: [{
+                            label: '是',
+                            value: 1
+                        }, {
+                            label: '否',
+                            value: 0
+                        }],
+                        width: "120",
+                        overHidden: true
+                    },
+                    {
+                        label: "备注",
+                        prop: "remarks",
+                        width: "120",
+                        cell: true,
+                        overHidden: true
+                    }
+                ]
+            },
+            option2: {},
+            optionBack2: {
+                height: 'auto',
+                calcHeight: 30,
+                menuWidth: 120,
+                tip: false,
+                border: true,
+                index: true,
+                addBtn: false,
+                viewBtn: false,
+                editBtn: false,
+                delBtn: false,
+                refreshBtn: false,
+                selection: true,
+                align: 'center',
+                column: [
+                    {
+                        label: "承运车队",
+                        prop: "fleetName",
+                        width: "120",
+                        overHidden: true,
+                    },
+                    {
+                        label: "车号",
+                        prop: "licenseNumber",
+                        cell: true,
+                        width: "120",
+                        overHidden: true
+                    },
+                    {
+                        label: "姓名",
+                        prop: "fullName",
+                        cell: true,
+                        width: "120",
+                        overHidden: true
+                    },
+                    {
+                        label: "联系方式",
+                        prop: "contactInformation",
+                        cell: true,
+                        width: "120",
+                        overHidden: true
+                    },
+                    {
+                        label: "是否入库",
+                        prop: "whetherWarehousing",
+                        type: 'select',
+                        dicData: [{
+                            label: '是',
+                            value: 1
+                        }, {
+                            label: '否',
+                            value: 0
+                        }],
+                        width: "120",
+                        overHidden: true
+                    },
+                    {
+                        label: "提箱时间",
+                        prop: "pickupDate",
+                        cell: true,
+                        type: "date",
+                        format: "yyyy-MM-dd",
+                        valueFormat: "yyyy-MM-dd 00:00:00",
+                        width: "120",
+                        overHidden: true
+                    },
+                    {
+                        label: "提箱地点",
+                        prop: "pickupAddressName",
+                        width: "120",
+                        overHidden: true
+                    },
+                    {
+                        label: "送货时间",
+                        prop: "deliveryDate",
+                        width: "120",
+                        cell: true,
+                        type: "date",
+                        format: "yyyy-MM-dd",
+                        valueFormat: "yyyy-MM-dd 00:00:00",
+                        overHidden: true
+                    },
+                    {
+                        label: "送货地点",
+                        prop: "deliveryAddressName",
+                        width: "120",
+                        overHidden: true
+                    },
+                    {
+                        label: "是否打冷",
+                        prop: "whetherChill",
+                        cell: true,
+                        type: 'select',
+                        dicData: [{
+                            label: '是',
+                            value: 1
+                        }, {
+                            label: '否',
+                            value: 0
+                        }],
+                        width: "120",
+                        overHidden: true
+                    },
+                    {
+                        label: "运费价格",
+                        prop: "freightPrice",
+                        cell: true,
+                        type: 'number',
+                        controls: false,
+                        width: "120",
+                        overHidden: true
+                    },
+                    {
+                        label: "返空时间",
+                        prop: "returnDate",
+                        cell: true,
+                        type: "date",
+                        format: "yyyy-MM-dd",
+                        valueFormat: "yyyy-MM-dd 00:00:00",
+                        width: "120",
+                        overHidden: true
+                    },
+                    {
+                        label: "返空场站",
+                        prop: "returnCyName",
+                        width: "120",
+                        overHidden: true
+                    },
+                    {
+                        label: "箱号",
+                        prop: "boxNo",
+                        width: "120",
+                        overHidden: true
+                    },
+                    {
+                        label: "备注",
+                        prop: "remarks",
+                        width: "120",
+                        cell: true,
+                        overHidden: true
+                    }
+                ]
+            },
+            option3: {},
+            optionBack3: {
+                height: 'auto',
+                calcHeight: 30,
+                menuWidth: 140,
+                tip: false,
+                border: true,
+                index: true,
+                addBtn: false,
+                viewBtn: false,
+                editBtn: false,
+                delBtn: false,
+                refreshBtn: false,
+                selection: true,
+                align: 'center',
+                column: [
+                    {
+                        label: "仓库",
+                        prop: "warehouseName",
+                        width: "120",
+                        overHidden: true,
+                    },
+                    {
+                        label: "品名",
+                        prop: "goodsName",
+                        width: "120",
+                        overHidden: true
+                    },
+                    {
+                        label: "箱号",
+                        prop: "boxNo",
+                        width: "120",
+                        overHidden: true
+                    },
+                    {
+                        label: "入库单位",
+                        prop: "storageUnit",
+                        width: "120",
+                        cell: true,
+                        type: 'select',
+                        filterable: true,
+                        remote: true,
+                        dicUrl: "/api/blade-los/bunits/list",
+                        props: {
+                            label: 'cnName',
+                            value: 'cnName',
+                            res: 'data.records'
+                        },
+                        overHidden: true
+                    },
+                    {
+                        label: "入库时间",
+                        prop: "storageDate",
+                        width: "120",
+                        cell: true,
+                        type: "date",
+                        format: "yyyy-MM-dd",
+                        valueFormat: "yyyy-MM-dd 00:00:00",
+                        overHidden: true
+                    },
+                    {
+                        label: "单价",
+                        prop: "price",
+                        width: "120",
+                        overHidden: true
+                    },
+                    {
+                        label: "件数",
+                        prop: "quantity",
+                        width: "120",
+                        overHidden: true
+                    },
+                    {
+                        label: "毛重",
+                        prop: "grossWeight",
+                        width: "120",
+                        overHidden: true
+                    },
+                    {
+                        label: "是否保税",
+                        prop: "whetherBonded",
+                        cell: true,
+                        width: "120",
+                        type: 'select',
+                        dicData: [{
+                            label: '是',
+                            value: 1
+                        }, {
+                            label: '否',
+                            value: 0
+                        }],
+                        overHidden: true
+                    },
+                    {
+                        label: "是否分拣",
+                        prop: "whetherSorting",
+                        width: "120",
+                        cell: true,
+                        type: 'select',
+                        dicData: [{
+                            label: '是',
+                            value: 1
+                        }, {
+                            label: '否',
+                            value: 0
+                        }],
+                        overHidden: true
+                    },
+                    {
+                        label: "仓储单价",
+                        prop: "warehouseUnitPrice",
+                        cell: true,
+                        width: "120",
+                        overHidden: true
+                    },
+                    {
+                        label: "车号",
+                        prop: "licenseNumber",
+                        width: "120",
+                        overHidden: true
+                    },
+                    {
+                        label: "姓名",
+                        prop: "fullName",
+                        width: "120",
+                        overHidden: true
+                    },
+                    {
+                        label: "联系方式",
+                        prop: "tel",
+                        width: "120",
+                        overHidden: true
+                    },
+                    {
+                        label: "备注",
+                        prop: "remarks",
+                        width: "120",
+                        cell: true,
+                        overHidden: true
+                    }
+                ]
+            },
+            option4: {},
+            optionBack4: {
+                height: 'auto',
+                calcHeight: 30,
+                menuWidth: 180,
+                tip: false,
+                border: true,
+                index: true,
+                addBtn: false,
+                viewBtn: false,
+                editBtn: false,
+                delBtn: false,
+                refreshBtn: false,
+                selection: true,
+                align: 'center',
+                column: [
+                    {
+                        label: "品名",
+                        prop: "goodsName",
+                        width: "120",
+                        overHidden: true
+                    },
+                    {
+                        label: "箱号",
+                        prop: "boxNo",
+                        width: "120",
+                        overHidden: true
+                    },
+                    {
+                        label: "出库件数",
+                        prop: "outQuantity",
+                        width: "120",
+                        cell: true,
+                        overHidden: true
+                    },
+                    {
+                        label: "出库重量",
+                        prop: "outWeight",
+                        width: "120",
+                        cell: true,
+                        overHidden: true
+                    },
+                    {
+                        label: "件数",
+                        prop: "quantity",
+                        width: "120",
+                        overHidden: true
+                    },
+                    {
+                        label: "毛重",
+                        prop: "grossWeight",
+                        width: "120",
+                        overHidden: true
+                    },
+                    {
+                        label: "存储天数",
+                        prop: "storageDays",
+                        width: "120",
+                        overHidden: true
+                    },
+                    {
+                        label: "仓储费",
+                        prop: "storageFeesAmount",
+                        width: "120",
+                        overHidden: true
+                    },
+                    {
+                        label: "剩余件数",
+                        prop: "surplusQuantity",
+                        width: "120",
+                        overHidden: true
+                    },
+                    {
+                        label: "剩余重量",
+                        prop: "surplusWeight",
+                        width: "120",
+                        overHidden: true
+                    },
+                    {
+                        label: "剩余货值",
+                        prop: "surplusGoodsAmount",
+                        width: "120",
+                        overHidden: true
+                    },
+                    {
+                        label: "备注",
+                        prop: "remarks",
+                        width: "120",
+                        cell: true,
+                        overHidden: true
+                    }
+                ]
+            },
+        }
+    },
+    components: {
+        dicSelect,
+        feeInfo,
+        checkSchedule
+    },
+    props: {
+        detailData: Object
+    },
+    async created() {
+        this.option = await this.getColumnData(this.getColumnName(388), this.optionBack);
+        this.option2 = await this.getColumnData(this.getColumnName(389), this.optionBack2);
+        this.option3 = await this.getColumnData(this.getColumnName(390), this.optionBack3);
+        this.option4 = await this.getColumnData(this.getColumnName(391), this.optionBack4);
+        if (this.detailData.id) {
+            this.editButton = true
+            this.editDisabled = true
+            this.optionForm.disabled = true
+            this.getDetails(this.detailData.id)
+        }
+    },
+    methods: {
+        dicChange(name, row) {
+            if (name == 'corpCnName') {
+                if (row) {
+                    this.form.corpId = row.id
+                } else {
+                    this.form.corpId = null
+                }
+            }
+            if (name == 'polCnName') {
+                console.log(row)
+                if (row) {
+                    this.form.polId = row.id
+                    this.form.polCode = row.code
+                    this.form.polEnName = row.enName
+
+                } else {
+                    this.form.polId = null
+                    this.form.polCode = null
+                    this.form.polEnName = null
+                }
+            }
+            if (name == 'podCnName') {
+                if (row) {
+                    this.form.polId = row.id
+                    this.form.polCode = row.code
+                    this.form.polEnName = row.enName
+                } else {
+                    this.form.polId = null
+                    this.form.polCode = null
+                    this.form.polEnName = null
+                }
+            }
+            if (name == 'srcCnName') {
+                if (row) {
+                    this.form.srcId = row.id
+                } else {
+                    this.form.salesmansrcId = null
+                }
+            }
+            if (name == 'hshipperCname') {
+                if (row) {
+                    this.form.hshipperId = row.id
+                } else {
+                    this.form.hshipperId = null
+                }
+            }
+            if (name == 'hconsigneeCnName') {
+                if (row) {
+                    this.form.hconsigneeId = row.id
+                } else {
+                    this.form.hconsigneeId = null
+                }
+            }
+            if (name == 'carrierCnName') {
+                if (row) {
+                    this.form.carrierId = row.id
+                } else {
+                    this.form.carrierId = null
+                }
+            }
+            if (name == 'hscode') {
+                if (row) {
+                    this.form.goodsName = row.cnName
+                } else {
+                    this.form.goodsName = null
+                }
+            }
+        },
+        rowDicChange(name, row, el) {
+            if (name == 'fleetName') {
+                if (row) {
+                    el.fullName = row.mgrName
+                    el.contactInformation = row.tel
+                } else {
+                    el.fullName = null
+                    el.contactInformation = null
+                }
+            }
+            if (name == 'pickupAddressName') {
+                if (row) {
+                    el.pickupAddressId = row.id
+                } else {
+                    el.pickupAddressId = null
+                }
+            }
+            if (name == 'deliveryAddressName') {
+                if (row) {
+                    el.deliveryAddressId = row.id
+                } else {
+                    el.deliveryAddressId = null
+                }
+            }
+            if (name == 'warehouseName') {
+                if (row) {
+                    el.warehouseId = row.id
+                } else {
+                    el.warehouseId = null
+                }
+            }
+        },
+        rowCell(name, row, index) {
+            if (name == '编辑') {
+                console.log(2232323)
+                if (row.$cellEdit == true) {
+                    this.$set(row, "$cellEdit", false);
+                } else {
+                    this.$set(row, "$cellEdit", true);
+                }
+            }
+            if (name == '派车') {
+                if (row.whetherMachineInspection == 1) {
+                    if (!row.inspectionType) {
+                        return this.$message.error("查验类型不能为空");
+                    }
+                    if (!row.inspectionDate) {
+                        return this.$message.error("查验时间不能为空");
+                    }
+                }
+                let obj = {
+                    ...row,
+                    type: 1,
+                }
+                const loading = this.$loading({
+                    lock: true,
+                    text: '加载中',
+                    spinner: 'el-icon-loading',
+                    background: 'rgba(255,255,255,0.7)'
+                });
+
+                generateDispatchVehicles(obj).then(res => {
+                    this.$message.success("派车成功");
+                    this.getDetails(this.form.id)
+                }).finally(() => {
+                    loading.close()
+                })
+            }
+            if (name == '自提') {
+                let obj = {
+                    ...row,
+                    type: 2,
+                }
+                const loading = this.$loading({
+                    lock: true,
+                    text: '加载中',
+                    spinner: 'el-icon-loading',
+                    background: 'rgba(255,255,255,0.7)'
+                });
+                generateDispatchVehicles(obj).then(res => {
+                    this.$message.success("自提成功");
+                    this.getDetails(this.form.id)
+                }).finally(() => {
+                    loading.close()
+                })
+            }
+            // if (name == '派车删除') {
+            //     const loading = this.$loading({
+            //         lock: true,
+            //         text: '加载中',
+            //         spinner: 'el-icon-loading',
+            //         background: 'rgba(255,255,255,0.7)'
+            //     });
+            //     dispatchvehiclesRemove({ ids: row.id }).then(res => {
+            //         this.$message.success("删除成功");
+            //         this.form.dispatchVehiclesList.splice(index, 1);
+            //     }).finally(() => {
+            //         loading.close()
+            //     })
+            // }
+            if (name == '确认派车') {
+                if (!row.fleetName) {
+                    return this.$message.error("承运车队不能为空");
+                }
+                if (!row.licenseNumber) {
+                    return this.$message.error("车号不能为空");
+                }
+                if (!row.fullName) {
+                    return this.$message.error("姓名不能为空");
+                }
+                if (!row.contactInformation) {
+                    return this.$message.error("联系方式不能为空");
+                }
+                if (!row.deliveryDate) {
+                    return this.$message.error("送货时间不能为空");
+                }
+                if (!row.deliveryAddressName) {
+                    return this.$message.error("送货地点不能为空");
+                }
+                const loading = this.$loading({
+                    lock: true,
+                    text: '加载中',
+                    spinner: 'el-icon-loading',
+                    background: 'rgba(255,255,255,0.7)'
+                });
+                confirmDispatchVehicles(row).then(res => {
+                    this.$message.success("派车成功");
+                    this.getDetails(this.form.id)
+                }).finally(() => {
+                    loading.close()
+                })
+            }
+            if (name == '生成入库') {
+                if (!row.fleetName) {
+                    return this.$message.error("承运车队不能为空");
+                }
+                if (!row.licenseNumber) {
+                    return this.$message.error("车号不能为空");
+                }
+                if (!row.fullName) {
+                    return this.$message.error("姓名不能为空");
+                }
+                if (!row.contactInformation) {
+                    return this.$message.error("联系方式不能为空");
+                }
+                if (!row.deliveryDate) {
+                    return this.$message.error("送货时间不能为空");
+                }
+                if (!row.deliveryAddressName) {
+                    return this.$message.error("送货地点不能为空");
+                }
+                const loading = this.$loading({
+                    lock: true,
+                    text: '加载中',
+                    spinner: 'el-icon-loading',
+                    background: 'rgba(255,255,255,0.7)'
+                });
+                generateWarehouseEntry(row).then(res => {
+                    this.$message.success("生成入库成功");
+                    this.getDetails(this.form.id)
+                }).finally(() => {
+                    loading.close()
+                })
+            }
+            if (name == '入库确认') {
+                if (!row.warehouseName) {
+                    return this.$message.error("仓库不能为空");
+                }
+                if (!row.warehouseUnitPrice) {
+                    return this.$message.error("仓储单价不能为空");
+                }
+                const loading = this.$loading({
+                    lock: true,
+                    text: '加载中',
+                    spinner: 'el-icon-loading',
+                    background: 'rgba(255,255,255,0.7)'
+                });
+                confirmWarehouseEntry(row).then(res => {
+                    this.$message.success("入库成功");
+                    this.getDetails(this.form.id)
+                }).finally(() => {
+                    loading.close()
+                })
+            }
+            if (name == '生成出库') {
+                if (!row.warehouseName) {
+                    return this.$message.error("仓库不能为空");
+                }
+                if (!row.warehouseUnitPrice) {
+                    return this.$message.error("仓储单价不能为空");
+                }
+                const loading = this.$loading({
+                    lock: true,
+                    text: '加载中',
+                    spinner: 'el-icon-loading',
+                    background: 'rgba(255,255,255,0.7)'
+                });
+                generateOutbound(row).then(res => {
+                    this.$message.success("生成出库成功");
+                    this.getDetails(this.form.id)
+                }).finally(() => {
+                    loading.close()
+                })
+            }
+            if (name == '出库确认') {
+                if (!row.outQuantity) {
+                    return this.$message.error("出库件数不能为空");
+                }
+                if (!row.outWeight) {
+                    return this.$message.error("出库重量不能为空");
+                }
+                const loading = this.$loading({
+                    lock: true,
+                    text: '加载中',
+                    spinner: 'el-icon-loading',
+                    background: 'rgba(255,255,255,0.7)'
+                });
+                confirmWarehouseEntry(row).then(res => {
+                    this.$message.success("出库成功");
+                    this.getDetails(this.form.id)
+                }).finally(() => {
+                    loading.close()
+                })
+            }
+            if (name == '开票') {
+                this.$message.error("待开发");
+            }
+            if (name == '出库删除') {
+                const loading = this.$loading({
+                    lock: true,
+                    text: '加载中',
+                    spinner: 'el-icon-loading',
+                    background: 'rgba(255,255,255,0.7)'
+                });
+                inoutstorageRemove({ ids: row.id }).then(res => {
+                    this.$message.success("删除成功");
+                    this.form.outStorageList.splice(index, 1);
+                }).finally(() => {
+                    loading.close()
+                })
+            }
+        },
+        getDetails(id) {
+            const loading = this.$loading({
+                lock: true,
+                text: '加载中',
+                spinner: 'el-icon-loading',
+                background: 'rgba(255,255,255,0.7)'
+            });
+            getDetail({ id: id }).then(res => {
+                this.form = res.data.data
+                this.$refs.crud.dicInit();
+                this.$refs.crud3.dicInit();
+            }).finally(() => {
+                loading.close()
+            })
+        },
+        inEdit() {
+            this.editButton = false
+            if (this.form.status == 0||this.form.status == 4) {
+                this.editDisabled = false
+                this.optionForm.disabled = false
+            }
+        },
+        allClick(name) {
+        },
+        submit() {
+            this.$refs["form"].validate((valid, done) => {
+                done();
+                if (valid) {
+                    const loading = this.$loading({
+                        lock: true,
+                        text: '加载中',
+                        spinner: 'el-icon-loading',
+                        background: 'rgba(255,255,255,0.7)'
+                    });
+                    submit(this.form).then(res => {
+                        this.$message.success("保存成功");
+                        this.getDetails(res.data.data.id)
+                    }).finally(() => {
+                        loading.close();
+                    })
+                } else {
+                    return false;
+                }
+            });
+        },
+        application() {
+            if (this.form.feeCenterListD.length == 0 && this.form.feeCenterListC.length == 0) return this.$message.error("费用不能为空");
+            this.$confirm("确定请核数据?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning"
+            }).then(() => {
+                let obj = {}
+                obj = {
+                    id: this.form.id,
+                    url: '/tradeAgency/oceanFreightImport/index',
+                    pageStatus: '',
+                    pageLabel: '海运进口(T)',
+                }
+                const loading = this.$loading({
+                    lock: true,
+                    text: '加载中',
+                    spinner: 'el-icon-loading',
+                    background: 'rgba(255,255,255,0.7)'
+                });
+                checkAgent(obj).then(res => {
+                    this.$message.success("请核成功");
+                    this.editDisabled = true
+                    this.optionForm.disabled = true
+                    this.getDetails(res.data.data.id)
+                }).finally(() => {
+                    loading.close();
+                })
+            });
+        },
+        revokeApplication() {
+            this.$confirm("确定撤销请核?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning"
+            }).then(() => {
+                let obj = {}
+                obj = {
+                    id: this.form.id,
+                }
+                const loading = this.$loading({
+                    lock: true,
+                    text: '加载中',
+                    spinner: 'el-icon-loading',
+                    background: 'rgba(255,255,255,0.7)'
+                });
+                revokeCheckAgent(obj).then(res => {
+                    this.$message.success("撤销请核成功");
+                    this.getDetails(res.data.data.id)
+                    this.editDisabled = false
+                    this.optionForm.disabled = false
+                }).finally(() => {
+                    loading.close();
+                })
+            });
+
+        },
+        //请核关闭
+        choceScheduleFun() {
+            this.checkScheduleDialog = false
+        },
+        //自定义列保存
+        async saveColumn(ref, option, optionBack, code) {
+            const inSave = await this.saveColumnData(this.getColumnName(code), this[option]);
+            if (inSave) {
+                this.$message.success("保存成功");
+                //关闭窗口
+                this.$refs[ref].$refs.dialogColumn.columnBox = false;
+            }
+        },
+        //自定义列重置
+        async resetColumn(ref, option, optionBack, code) {
+            this[option] = this[optionBack];
+            const inSave = await this.delColumnData(this.getColumnName(code), this[optionBack]);
+            if (inSave) {
+                this.$message.success("重置成功");
+                this.$refs[ref].$refs.dialogColumn.columnBox = false;
+            }
+        },
+        goBack(type) {
+            this.$emit("goBack", type);
+            this.$emit('updateKey')
+        },
+    }
+}
+</script>
+
+<style lang="scss" scoped>
+::v-deep .el-form-item {
+    margin-bottom: 8px !important;
+}
+
+::v-deep .el-table .cell {
+    padding: 0 2px !important;
+
+    .el-form-item {
+        margin-bottom: 0px !important;
+    }
+
+}
+
+::v-deep .avue-crud .el-table .el-form-item__label {
+    left: -1px;
+}
+
+::v-deep#out-table .back-one {
+    background: #ecf5ff !important;
+}
+
+::v-deep#out-table .back-two {
+    background: #ecf5ff !important;
+}
+</style>

+ 480 - 1
src/views/tradeAgency/oceanFreightImport/index.vue

@@ -1 +1,480 @@
-海运进口
+<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', 387)"
+                @saveColumn="saveColumn('crud', 'option', 'optionBack', 387)" @on-load="onLoad">
+                <template slot="checkboxSearch">
+                    <el-checkbox-group v-model="query.checkbox" @change="handleCheckedChange">
+                        <el-checkbox v-for="item in statusList" :label="item.value" :key="item.value">{{ item.label
+                        }}</el-checkbox>
+                    </el-checkbox-group>
+                    <!-- <avue-form v-model="query.checkbox" :option="checkboxOption"></avue-form> -->
+                </template>
+                <template slot="menuLeft">
+                    <el-button type="primary" size="small" icon="el-icon-plus" @click="addButton">新 增
+                    </el-button>
+                </template>
+                <template slot="menu" slot-scope="{ row, index }">
+                    <el-button size="small" icon="el-icon-edit" type="text" @click="rowEdit(row)">编辑</el-button>
+                    <el-button size="small" icon="el-icon-delete" type="text" @click="rowDel(row, index)"
+                        :disabled="row.orderStatus != '录入'">删 除</el-button>
+                </template>
+                <template slot="bookingNo" slot-scope="{ row }">
+                    <span style="color: #1e9fff" @click="rowEdit(row)">{{ row.bookingNo }}</span>
+                </template>
+            </avue-crud>
+        </basic-container>
+        <detailsPage v-if="!isShow" :detailData="detailData" @goBack="goBack"></detailsPage>
+    </div>
+</template>
+  
+<script>
+import { getList, remove, copyAgent } from "@/api/tradeAgency/oceanFreightImport";
+import detailsPage from "./detailsPage";
+
+export default {
+    data() {
+        return {
+            detailData: {},
+            isShow: true,
+            form: {},
+            query: {
+                checkbox: [],
+            },
+            loading: false,
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0
+            },
+            selectionList: [],
+            statusList: [
+                {
+                    label: '已开船',
+                    value: 'whetherSail'
+                },
+                {
+                    label: '已到港',
+                    value: 'whetherReachHarbor'
+                },
+                {
+                    label: '已通关',
+                    value: 'whetherClearance'
+                },
+                {
+                    label: '已派车',
+                    value: 'whetherDispatchCar'
+                },
+                {
+                    label: '已入库',
+                    value: ''
+                },
+                {
+                    label: '已取消',
+                    value: 'whetherCancel'
+                }
+            ],
+            option: {},
+            optionBack: {
+                height: 'auto',
+                calcHeight: 30,
+                menuWidth: 140,
+                tip: false,
+                searchShow: true,
+                searchMenuSpan: 6,
+                border: true,
+                index: true,
+                addBtn: false,
+                viewBtn: false,
+                editBtn: false,
+                delBtn: false,
+                selection: true,
+                searchIcon: true,
+                searchIndex: 3,
+                column: [
+                    {
+                        label: "客户名称",
+                        prop: "corpCnName",
+                        width: "120",
+                        overHidden: true,
+                        search: true,
+                        type: 'select',
+                        filterable: true,
+                        remote: true,
+                        dicUrl: "/api/blade-los/bcorps/listByType?cnName={{key}}",
+                        props: {
+                            label: 'cnName',
+                            value: 'cnName',
+                            res: 'data.records'
+                        },
+                        searchOrder: 1,
+                    },
+                    {
+                        label: "委托编号",
+                        prop: "billNo",
+                        width: "80",
+                        overHidden: true,
+                        search: true,
+                        searchOrder: 9,
+                    },
+                    {
+                        label: "合同号",
+                        prop: "bookingNo",
+                        width: "80",
+                        overHidden: true,
+                        search: true,
+                        searchOrder: 2,
+                    },
+                    {
+                        label: "提单号",
+                        prop: "mblno",
+                        width: "80",
+                        overHidden: true,
+                        search: true,
+                        searchOrder: 3,
+                    },
+                    {
+                        label: "放单方式",
+                        prop: "mconsigneeCntyCode",
+                        width: "120",
+                        overHidden: true,
+                    },
+                    {
+                        label: "箱号",
+                        prop: "mnotify2CntyCode",
+                        width: "80",
+                        overHidden: true,
+                        search: true,
+                        searchOrder: 4,
+                    },
+                    {
+                        label: "发货人",
+                        prop: "hshipperCnName",
+                        width: "80",
+                        overHidden: true,
+                    },
+                    {
+                        label: "收货人",
+                        prop: "hconsigneeCnName",
+                        width: "80",
+                        overHidden: true,
+                    },
+                    {
+                        label: "船名",
+                        prop: "vesselCnName",
+                        width: "80",
+                        overHidden: true,
+                    },
+                    {
+                        label: "航次",
+                        prop: "voyageNo",
+                        width: "80",
+                        overHidden: true,
+                    },
+                    {
+                        label: "起运港",
+                        prop: "polCnName",
+                        width: "80",
+                        overHidden: true
+                    },
+                    {
+                        label: "目的港",
+                        prop: "podCnName",
+                        width: "80",
+                        overHidden: true
+                    },
+                    {
+                        label: '原产地',
+                        prop: "mnotifyCntyCode",
+                        width: "80",
+                        overHidden: true
+                    },
+                    {
+                        label: '报关单号',
+                        prop: "mnotify2CntyName",
+                        width: "100",
+                        overHidden: true
+                    },
+                    {
+                        label: '报关日期',
+                        prop: "issueDate",
+                        width: "100",
+                        overHidden: true
+                    },
+                    {
+                        label: "开船日期",
+                        prop: "etd",
+                        width: "120",
+                        overHidden: true,
+                        search: true,
+                        searchOrder: 6,
+                        searchProp: "etdList",
+                        type: "date",
+                        unlinkPanels: true,
+                        searchRange: true,
+                        format: "yyyy-MM-dd",
+                        valueFormat: "yyyy-MM-dd HH:mm:ss",
+                        searchDefaultTime: ["00:00:00", "23:59:59"],
+                    },
+                    {
+                        label: "预计到港",
+                        prop: "bookingDate",
+                        width: "120",
+                        overHidden: true,
+                        search: true,
+                        searchOrder: 7,
+                        searchProp: "bookingDateList",
+                        type: "date",
+                        unlinkPanels: true,
+                        searchRange: true,
+                        format: "yyyy-MM-dd",
+                        valueFormat: "yyyy-MM-dd HH:mm:ss",
+                        searchDefaultTime: ["00:00:00", "23:59:59"],
+                    },
+                    {
+                        label: "实际到港",
+                        prop: "eta",
+                        width: "120",
+                        overHidden: true,
+                        search: true,
+                        searchOrder: 8,
+                        searchProp: "etaList",
+                        type: "date",
+                        unlinkPanels: true,
+                        searchRange: true,
+                        format: "yyyy-MM-dd",
+                        valueFormat: "yyyy-MM-dd HH:mm:ss",
+                        searchDefaultTime: ["00:00:00", "23:59:59"],
+                    },
+                    {
+                        label: "品名",
+                        prop: "goodsName",
+                        width: "120",
+                        overHidden: true
+                    },
+                    {
+                        label: "件数",
+                        prop: "quantity",
+                        width: "80",
+                        overHidden: true
+                    },
+                    {
+                        label: "重量",
+                        prop: "grossWeight",
+                        width: "80",
+                        overHidden: true
+                    },
+                    {
+                        label: "装箱方式",
+                        prop: "loadType",
+                        type: 'select',
+                        dicData: [{
+                            label: '整箱',
+                            value: 'FCL'
+                        }, {
+                            label: '拼箱',
+                            value: 'LCL'
+                        }],
+                        width: "120",
+                        overHidden: true,
+                    },
+                    {
+                        label: "是否退押",
+                        prop: "billingStatus",
+                        width: "100",
+                        type: 'select',
+                        dicData: [{
+                            label: '是',
+                            value: 1
+                        }, {
+                            label: '否',
+                            value: 0
+                        }],
+                        overHidden: true
+                    },
+                    {
+                        label: "备注",
+                        prop: "remarks",
+                        width: "80",
+                        overHidden: true
+                    },
+                    {
+                        label: "多选",
+                        prop: "checkbox",
+                        overHidden: true,
+                        search: true,
+                        searchSpan: 18,
+                        searchOrder: 14,
+                        hide: true,
+                        showColumn: false,
+                    }
+                ]
+            },
+            data: [],
+        };
+    },
+    components: {
+        detailsPage,
+    },
+    async created() {
+        this.option = await this.getColumnData(this.getColumnName(387), this.optionBack);
+    },
+    methods: {
+        handleCheckedChange() {
+            delete this.query.whetherSail
+            delete this.query.whetherReachHarbor
+            delete this.query.whetherClearance
+            delete this.query.whetherDispatchCar
+            delete this.query.whetherCancel
+            if (this.query.checkbox) {
+                this.query.checkbox.forEach(e => {
+                    this.query[e] = 1
+                })
+            }
+        },
+        addButton() {
+            this.isShow = false
+        },
+        rowEdit(row) {
+            this.detailData = {
+                id: row.id
+            };
+            this.isShow = false
+        },
+        // 删除
+        rowDel(row, index) {
+            this.$confirm("确定将选择数据删除?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning"
+            }).then(() => {
+                remove({ ids: row.id }).then(res => {
+                    this.onLoad(this.page, this.query);
+                    this.$message.success("成功删除");
+                })
+            })
+
+        },
+        searchReset() {
+            this.query = this.$options.data().query;
+            this.onLoad(this.page);
+        },
+        // 搜索按钮点击
+        searchChange(params, done) {
+            this.page.currentPage = 1;
+            this.onLoad(this.page, this.query);
+            done();
+        },
+        selectionChange(list) {
+            this.selectionList = list;
+        },
+        currentChange(currentPage) {
+            this.page.currentPage = currentPage;
+        },
+        sizeChange(pageSize) {
+            this.page.pageSize = pageSize;
+        },
+        refreshChange() {
+            this.onLoad(this.page, this.query);
+        },
+        onLoad(page, params = {}) {
+            let obj = {}
+            obj = {
+                ...Object.assign(params, this.query),
+            }
+            console.log(obj)
+            this.loading = true;
+            getList(page.currentPage, page.pageSize, obj).then(res => {
+                this.data = res.data.data.records;
+                this.page.total = res.data.data.total;
+                this.$nextTick(() => {
+                    this.$refs.crud.doLayout();
+                    this.$refs.crud.dicInit();
+                });
+            }).finally(() => {
+                this.loading = false;
+            })
+
+        },
+        // 详情的返回列表
+        goBack() {
+            // 初始化数据
+            // if (JSON.stringify(this.$route.query) != "{}") {
+            //     this.$router.$avueRouter.closeTag();
+            //     this.$router.push({
+            //         path: "/iosBasicData/accounts/index"
+            //     });
+            // }
+            this.detailData = {}
+            this.isShow = true;
+            this.onLoad(this.page, this.search);
+        },
+        //自定义列保存
+        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;
+                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 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>
+  

+ 59 - 53
src/views/tradeAgency/tradeAgency/detailsPage.vue

@@ -40,12 +40,7 @@
                             @selectChange="dicChange('corpName', $event)" :disabled="editDisabled"></dic-select>
                     </tempalte>
                     <tempalte slot="countryOfOrigin" slot-scope="{ row }">
-                        <dic-select v-model="form.countryOfOrigin" placeholder="原产地" key="dictKey" label="dictValue"
-                            url="/blade-system/dict-biz/dictionary?code=country_origin" :filterable="true"
-                            :disabled="editDisabled"></dic-select>
-                    </tempalte>
-                    <tempalte slot="country" slot-scope="{ row }">
-                        <dic-select v-model="form.country" placeholder="国家" key="id" label="cnName" res="records"
+                        <dic-select v-model="form.countryOfOrigin" placeholder="原产地" key="id" label="cnName" res="records"
                             url="/blade-los/bcountrys/list" :filterable="true" :remote="true" dataName="cnName"
                             :disabled="editDisabled"></dic-select>
                     </tempalte>
@@ -111,10 +106,10 @@
                             @selectChange="dicChange('affiliatedCompanyName', $event)"
                             :disabled="editDisabled"></dic-select>
                     </tempalte>
-                    <tempalte slot="salesmanName" slot-scope="{ row }">
-                        <dic-select v-model="form.salesmanName" placeholder="业务员" key="id" label="realName" res="records"
+                    <tempalte slot="srcCnName" slot-scope="{ row }">
+                        <dic-select v-model="form.srcCnName" placeholder="业务员" key="id" label="realName" res="records"
                             url="/blade-user/page" :filterable="true" :remote="true" dataName="realName"
-                            @selectChange="dicChange('salesmanName', $event)" :disabled="editDisabled"></dic-select>
+                            @selectChange="dicChange('srcCnName', $event)" :disabled="editDisabled"></dic-select>
                     </tempalte>
                 </avue-form>
             </trade-card>
@@ -130,7 +125,8 @@
                         </el-button>
                         <el-button type="info" size="small" :disabled="editDisabled" @click="allClick('尾款账单')">尾款账单
                         </el-button>
-                        <el-button type="warning" size="small" :disabled="editDisabled" @click="allClick('生成货代')">生成货代
+                        <el-button type="warning" size="small" :disabled="selectionList.length == 0"
+                            @click="allClick('生成货代')">生成货代
                         </el-button>
                         <el-button size="small">打印账单
                         </el-button>
@@ -186,12 +182,6 @@
                             :filterable="true"></dic-select>
                         <span v-else>{{ row.goodsType }}</span>
                     </tempalte>
-                    <tempalte slot="goodsType" slot-scope="{ row }">
-                        <dic-select v-if="row.$cellEdit" v-model="row.goodsType" placeholder="商品类型" key="dictKey"
-                            label="dictValue" url="/blade-system/dict-biz/dictionary?code=goods-type"
-                            :filterable="true"></dic-select>
-                        <span v-else>{{ row.goodsType }}</span>
-                    </tempalte>
                     <tempalte slot="quantity" slot-scope="{ row }">
                         <el-input-number v-if="row.$cellEdit" v-model="row.quantity" @change="countChange(row)"
                             :controls="false" placeholder="请输入 数量" size="small" style="width: 100%;"></el-input-number>
@@ -246,7 +236,7 @@
 </template>
 
 <script>
-import { submit, getDetail, remove, checkAgent, revokeCheckAgent, copyAgent, generateDownPaymentBill, generateBalancePaymentBill, ApplyForPayment, revokeApplyForPayment, confirmationNotification } from "@/api/tradeAgency/tradeAgency";
+import { submit, getDetail, remove, checkAgent, revokeCheckAgent, copyAgent, generateDownPaymentBill, generateBalancePaymentBill, ApplyForPayment, revokeApplyForPayment, confirmationNotification, generateFreightForwarder } from "@/api/tradeAgency/tradeAgency";
 import { bcurrencyGetExrate } from "@/api/iosBasicData/rateManagement";
 import feeInfo from "@/components/tradeAgency/fee-info";
 import dicSelect from "@/components/dicSelect/main";
@@ -259,6 +249,7 @@ export default {
 
     data() {
         return {
+            selectionList: [],
             checkId: '', // 审核需要的id
             batchNo: '',
             checkScheduleDialog: false, // 审核弹窗
@@ -269,7 +260,7 @@ export default {
                 billNoFormat: 'MYDL',
                 businessTypeCode: 'MYDL',
                 businessType: 'MYDL',
-                businessStatus:'录入',
+                businessStatus: '录入',
                 agentItemsList: [],
                 feeCenterListC: [],
                 feeCenterListD: [],
@@ -322,11 +313,6 @@ export default {
                         label: '原产地',
                         prop: "countryOfOrigin",
                         disabled: false,
-                    },
-                    {
-                        label: '国家',
-                        prop: "country",
-                        disabled: false,
                         rules: [{
                             required: true,
                             message: " ",
@@ -364,31 +350,6 @@ export default {
                         }]
                     },
                     {
-                        label: '货值',
-                        prop: "goodsValue",
-                        disabled: false,
-                    },
-                    {
-                        label: '预付比例',
-                        prop: "advanceRatio",
-                        disabled: false,
-                        rules: [{
-                            required: true,
-                            message: " ",
-                            trigger: "blur"
-                        }]
-                    },
-                    {
-                        label: '预付金额',
-                        prop: "prepaidAmount",
-                        disabled: false,
-                        rules: [{
-                            required: true,
-                            message: " ",
-                            trigger: "blur"
-                        }]
-                    },
-                    {
                         label: '外国发货人',
                         prop: "abroadConsignorCname",
                         disabled: false,
@@ -429,6 +390,31 @@ export default {
                         disabled: false,
                     },
                     {
+                        label: '货值',
+                        prop: "goodsValue",
+                        disabled: true,
+                    },
+                    {
+                        label: '预付比例',
+                        prop: "advanceRatio",
+                        disabled: false,
+                        rules: [{
+                            required: true,
+                            message: " ",
+                            trigger: "blur"
+                        }]
+                    },
+                    {
+                        label: '预付金额',
+                        prop: "prepaidAmount",
+                        disabled: false,
+                        rules: [{
+                            required: true,
+                            message: " ",
+                            trigger: "blur"
+                        }]
+                    },
+                    {
                         label: '单据类型',
                         prop: "documentType",
                         disabled: false,
@@ -440,7 +426,7 @@ export default {
                     },
                     {
                         label: '业务员',
-                        prop: "salesmanName",
+                        prop: "srcCnName",
                         disabled: false,
                     },
                     {
@@ -458,7 +444,7 @@ export default {
                         prop: "remarks",
                         type: 'textarea',
                         disabled: false,
-                        span:24,
+                        span: 6,
                         minRows: 2,
                     },
                 ]
@@ -851,11 +837,11 @@ export default {
                     this.form.affiliatedCompanyId = null
                 }
             }
-            if (name == 'salesmanName') {
+            if (name == 'srcCnName') {
                 if (row) {
-                    this.form.salesmanId = row.id
+                    this.form.srcId = row.id
                 } else {
-                    this.form.salesmanId = null
+                    this.form.srcId = null
                 }
             }
             if (name == 'abroadBankMnemonicCode') {
@@ -921,6 +907,9 @@ export default {
 
             });
         },
+        selectionChange(list) {
+            this.selectionList = list
+        },
         getDetails(id) {
             const loading = this.$loading({
                 lock: true,
@@ -1099,6 +1088,23 @@ export default {
                     })
                 });
             }
+            if (name == '生成货代') {
+                let obj = {
+                    ...this.form,
+                    agentItemsList: this.selectionList
+                }
+                const loading = this.$loading({
+                    lock: true,
+                    text: '加载中',
+                    spinner: 'el-icon-loading',
+                    background: 'rgba(255,255,255,0.7)'
+                });
+                generateFreightForwarder(obj).then(res => {
+                    this.$message.success("生成货代成功");
+                }).finally(() => {
+                    loading.close();
+                })
+            }
         },
         submit() {
             this.$refs["form"].validate((valid, done) => {

+ 33 - 17
src/views/tradeAgency/tradeAgency/index.vue

@@ -201,22 +201,38 @@ export default {
                         search: true,
                         searchOrder: 11,
                     },
-                    // {
-                    //     label: "通关进度",
-                    //     prop: "clearanceSpeedOfProgress",
-                    //     width: "120",
-                    //     overHidden: true,
-                    //     search: true,
-                    //     searchOrder: 12,
-                    // },
-                    // {
-                    //     label: "通关进度",
-                    //     prop: "clearanceSpeedOfProgress",
-                    //     width: "120",
-                    //     overHidden: true,
-                    //     search: true,
-                    //     searchOrder: 13,
-                    // },
+                    {
+                        label: "收货款",
+                        prop: "whetherReceivedDownPayments",
+                        width: "120",
+                        overHidden: true,
+                        search: true,
+                        searchOrder: 12,
+                        type: "select",
+                        dicUrl: "/api/blade-system/dict-biz/dictionary?code=received_down",
+                        props: {
+                            label: "dictValue",
+                            value: "dictValue"
+                        },
+                        hide: true,
+                        showColumn: false,
+                    },
+                    {
+                        label: "付汇",
+                        prop: "whetherReceivedBalancePayment",
+                        width: "120",
+                        overHidden: true,
+                        search: true,
+                        searchOrder: 13,
+                        type: "select",
+                        dicUrl: "/api/blade-system/dict-biz/dictionary?code=received_balance",
+                        props: {
+                            label: "dictValue",
+                            value: "dictValue"
+                        },
+                        hide: true,
+                        showColumn: false,
+                    },
                     {
                         label: "付汇记录",
                         prop: "paymentRecord",
@@ -355,7 +371,7 @@ export default {
                         prop: "checkbox",
                         overHidden: true,
                         search: true,
-                        searchSpan: 18,
+                        searchSpan: 12,
                         searchOrder: 14,
                         hide: true,
                         showColumn: false,