Просмотр исходного кода

修改配件商城和新增海运进口

caojunjie 3 лет назад
Родитель
Сommit
83492a3c8f

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

@@ -2355,6 +2355,19 @@ export default [{
     component: () => import( /* webpackChunkName: "views" */ '@/views/oceanShipping/maritimeExport/index')
   }]
 }, {
+  path: '/oceanShipping/oceanFreightImport/index',
+  component: Layout,
+  hidden: true,
+  children: [{
+    path: '/oceanShipping/oceanFreightImport/index',
+    name: '海运进口',
+    meta: {
+      i18n: '/oceanShipping/oceanFreightImport/index',
+      keepAlive: true,
+    },
+    component: () => import( /* webpackChunkName: "views" */ '@/views/oceanShipping/oceanFreightImport/index')
+  }]
+}, {
   path: '/maintenance/overpayment/index',
   component: Layout,
   hidden: true,

+ 1 - 0
src/views/Inventory/js/optionList.js

@@ -181,6 +181,7 @@ export const option = {
       overHidden: true,
       hide: true,
       search: true,
+      display:false,
       showColumn: false,
       span:24,
       dicData:[

+ 1 - 2
src/views/financialManagement/paymentSettle/paymentSettleDetailsPage.vue

@@ -560,7 +560,6 @@ export default {
               }
             }
             this.form.billNo = this.dataList.map(item => { return item.billNo }).join(",")
-
             if (this.category == 2 && this.financeDisabled) {
               this.allAmount = 0;
               this.form.amount = this.form.amount ? this.form.amount : 0
@@ -572,7 +571,7 @@ export default {
               } else if (Number(this.allAmount) > 0 && (Number(this.form.amount) > Number(this.allAmount))) {
                 this.form.caseOverPayment = 0;
               } else if (Number(this.allAmount) > 0 && (Number(this.form.amount) < Number(this.allAmount))) {
-                this.form.caseOverPayment = Number(this.allAmount) - Number(this.form.amount)
+                this.form.caseOverPayment = (Number(this.allAmount) - Number(this.form.amount)).toFixed(2)
                 if (Number(this.form.caseOverPayment) > Number(this.form.overPayment)) {
                   return this.$message.error('溢付款余额不足,无法付费')
                 }

+ 5 - 5
src/views/oceanShipping/maritimeExport/detailsPage.vue

@@ -21,11 +21,11 @@
     <el-tabs style="height: 0;top: 84px" class="customer-head" type="border-card" v-model="activeName">
       <el-tab-pane label="委托信息" name="entrust"></el-tab-pane>
       <el-tab-pane label="订舱信息" name="booking"></el-tab-pane>
-      <!--<el-tab-pane label="业务账单" name="business_bill"></el-tab-pane>-->
-      <!--<el-tab-pane label="分单内容" name="split_content"></el-tab-pane>-->
-      <!--<el-tab-pane label="分箱明细" name="packing_details"></el-tab-pane>-->
-      <!--<el-tab-pane label="分票列表" name="ticket_distribution"></el-tab-pane>-->
-      <!--<el-tab-pane label="附件" name="appendix"></el-tab-pane>-->
+      <el-tab-pane label="业务账单" name="business_bill"></el-tab-pane>
+      <el-tab-pane label="分单内容" name="split_content"></el-tab-pane>
+      <el-tab-pane label="分箱明细" name="packing_details"></el-tab-pane>
+      <el-tab-pane label="分票列表" name="ticket_distribution"></el-tab-pane>
+      <el-tab-pane label="附件" name="appendix"></el-tab-pane>
       <!--<el-tab-pane label="财务账单" name="fourth"></el-tab-pane>-->
       <!--<el-tab-pane label="提单管理" name="fourth"></el-tab-pane>-->
       <!--<el-tab-pane label="EDI" name="fourth"></el-tab-pane>-->

+ 74 - 0
src/views/oceanShipping/oceanFreightImport/components/appendix.vue

@@ -0,0 +1,74 @@
+<template>
+  <div>
+    <trade-card title="附件管理">
+      <c-upload
+          basic
+          :data="form.shippingFileList"
+          :disabled="disabled"
+          deleteUrl="/api/blade-box-tube/shippingfile/remove"
+          :enumerationValue="254.4"
+          display
+      />
+    </trade-card>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "appendix",
+  data(){
+    return{
+      form:{
+        shippingFileList:[]
+      },
+      formCreate:false
+    }
+  },
+  props: {
+    value: {
+      type: Object,
+      required: true,
+      default: () => {
+        return {};
+      }
+    }
+  },
+  watch: {
+    value: {
+      handler(val) {
+        if (this.formCreate) {
+          this.form = Object.assign(this.value, {});
+        } else {
+          this.form = Object.assign(this.value, val || {});
+        }
+      },
+      deep: true,
+      immediate: true
+    },
+    form: {
+      handler(val) {
+        if (this.formCreate) this.setVal();
+      },
+      deep: true
+    }
+  },
+  model: {
+    prop: "value",
+    event: "callBack"
+  },
+  async created() {
+    this.$nextTick(() => {
+      this.formCreate = true;
+    })
+  },
+  methods:{
+    setVal() {
+      this.$emit("callBack", this.form);
+    }
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 695 - 0
src/views/oceanShipping/oceanFreightImport/components/bookingInformation.vue

@@ -0,0 +1,695 @@
+<template>
+  <div>
+    <trade-card title="基础信息">
+      <avue-form :option="optionForm" v-model="form" ref="form">
+        <template slot="corpId" slot-scope="scope">
+          <crop-select v-model="form.corpId" corpType="KH" :disabled="scope.disabled"
+                       @getCorpData="(val)=>{form.corpName = val.cname || ''}"></crop-select>
+        </template>
+        <template slot="shippingCompanyId" slot-scope="scope">
+          <crop-select v-model="form.shippingCompanyId" corpType="GS" :disabled="scope.disabled"
+                       @getCorpData="(val)=>{form.shippingCompanyName = val.cname || ''}"></crop-select>
+        </template>
+        <template slot="loadingPortName" slot-scope="scope">
+          <port-info :disabled="scope.disabled" v-model="form.loadingPortId" type="id"
+                     @balabalaTow="(val)=>{form.loadingPortName = val.name || ''}"/>
+        </template>
+        <template slot="destinationName" slot-scope="scope">
+          <port-info :disabled="scope.disabled" v-model="form.destinationId" type="id"
+                     @balabalaTow="(val)=>{form.destinationName = val.name || ''}"/>
+        </template>
+        <template slot="deliverGoodsAddressName" slot-scope="scope">
+          <port-info :disabled="scope.disabled" v-model="form.deliverGoodsAddressId" type="id"
+                     @balabalaTow="(val)=>{form.deliverGoodsAddressName = val.name || ''}"/>
+        </template>
+        <template slot="deliveryAddressName" slot-scope="scope">
+          <port-info :disabled="scope.disabled" v-model="form.deliveryAddressId" type="id"
+                     @balabalaTow="(val)=>{form.deliveryAddressName = val.name || ''}"/>
+        </template>
+      </avue-form>
+    </trade-card>
+    <trade-card title="箱型箱量">
+      <avue-crud :option="optionBox" v-model="formBox" ref="formBox" :data="form.shippingMatchBoxList"
+                 @row-save="rowSave"
+                 @row-update="rowUpdate"
+                 @resetColumn="resetColumnTwo('formBox','optionBox','optionBoxBack',254.1)"
+                 @saveColumn="saveColumnTwo('formBox','optionBox','optionBoxBack',254.1)">>
+        <template slot-scope="{type,size,row,index,disabled}" slot="menu">
+          <el-button icon="el-icon-edit" :size="size" :disabled="disabled" :type="type"
+                     @click="$refs.formBox.rowEdit(row,index)">编辑
+          </el-button>
+          <el-button icon="el-icon-delete" :size="size" :disabled="disabled" :type="type"
+                     @click="rowDelBox(row,index)">删除
+          </el-button>
+        </template>
+      </avue-crud>
+    </trade-card>
+    <trade-card title="发货信息">
+      <avue-form :option="optionFormFour" v-model="form" ref="formFour">
+        <template slot="consignorId" slot-scope="{disabled}">
+          <crop-select v-model="form.consignorId" corpType="KH" :disabled="disabled"
+                       @getCorpData="(val)=>{form.consignorName = val.cname || '';form.consignorDetails = val.details}"></crop-select>
+        </template>
+        <template slot="consigneeId" slot-scope="{disabled}">
+          <crop-select v-model="form.consigneeId" corpType="KH" :disabled="disabled"
+                       @getCorpData="(val)=>{form.consigneeName = val.cname || '';form.consigneeDetails = val.details}"></crop-select>
+        </template>
+        <template slot="notifierId" slot-scope="{disabled}">
+          <crop-select v-model="form.notifierId" corpType="KH" :disabled="disabled"
+                       @getCorpData="(val)=>{form.notifierName = val.cname || '';form.notifierDetails = val.details}"></crop-select>
+        </template>
+        <template slot="secondNotifierId" slot-scope="{disabled}">
+          <crop-select v-model="form.secondNotifierId" corpType="KH" :disabled="disabled"
+                       @getCorpData="(val)=>{form.secondNotifierName = val.cname || ''}"></crop-select>
+        </template>
+      </avue-form>
+    </trade-card>
+    <trade-card title="默认数据">
+      <avue-form :option="optionFormTwo" v-model="form" ref="formTwo"></avue-form>
+    </trade-card>
+    <trade-card title="附件管理">
+      <c-upload
+          basic
+          :data="form.shippingFileList"
+          :disabled="disabled"
+          deleteUrl="/api/blade-box-tube/shippingfile/remove"
+          :enumerationValue="254.4"
+          display
+      />
+    </trade-card>
+  </div>
+</template>
+
+<script>
+import {tradingBox} from "@/api/oceanShipping/maritimeExport";
+
+export default {
+  name: "bookingInformation",
+  data() {
+    return {
+      form: {
+        shippingMatchBoxList: [],
+        shippingFileList: []
+      },
+      optionForm: {
+        menuBtn: false,
+        span: 6,
+        column: [{
+          label: '客户名称',
+          span: 12,
+          prop: 'corpId',
+          rules: [{
+            required: true,
+            message: " ",
+            trigger: "blur"
+          }]
+        }, {
+          label: '客户电话',
+          prop: 'telephone'
+        }, {
+          label: '邮箱',
+          prop: 'postbox'
+        }, {
+          label: '船公司',
+          span: 12,
+          prop: 'shippingCompanyId'
+        }, {
+          label: '船期',
+          prop: 'sailDate',
+          type: "date",
+          format: "yyyy-MM-dd",
+          valueFormat: "yyyy-MM-dd HH:mm:ss",
+        }, {
+          label: '订舱代理',
+          prop: 'bookingAgentId',
+          filterable: true,
+          type: 'select',
+          dicUrl: "/api/blade-client/corpsdesc/oceanCorpsList?corpsTypeName=订舱代理",
+          props: {
+            label: "cname",
+            value: "id"
+          }
+        }, {
+          label: '船名',
+          prop: 'shipId',
+          type: "select",
+          span: 12,
+          cascader: ['voyageNumberId'],
+          dicUrl: "/api/blade-box-tube/shippingvessel/listAll",
+          props: {
+            label: "name",
+            value: "id",
+          }
+        }, {
+          label: '航次',
+          prop: 'voyageNumberId',
+          type: "select",
+          dicUrl: "/api/blade-box-tube/shippingvessel/listAllByVoyage?pid={{key}}",
+          props: {
+            label: "no",
+            value: "id",
+          },
+          change: (data) => {
+            if (data.value) {
+              for (let item of this.$refs.form.DIC.voyageNumberId || []) {
+                if (data.value === item.id) {
+                  this.form.route = item.lane
+                }
+              }
+            }
+          }
+        }, {
+          label: '提单号',
+          prop: 'mainBillNo'
+        }, {
+          label: '起运港',
+          prop: 'loadingPortName'
+        }, {
+          label: '目的港',
+          prop: 'destinationName'
+        }, {
+          label: '起运地',
+          prop: 'deliverGoodsAddressName'
+        }, {
+          label: '目的地',
+          prop: 'deliveryAddressName'
+        }, {
+          label: '服务条款',
+          prop: 'serviceClause',
+          type: "select",
+          dicUrl: "/api/blade-system/dict-biz/dictionary?code=ocean_service_clause",
+          props: {
+            label: "dictValue",
+            value: "dictKey"
+          },
+          overHidden: true,
+        }, {
+          label: '签单方式',
+          prop: 'signingMethod',
+          overHidden: true,
+          filterable: true,
+          type: 'select',
+          dicUrl: "/api/blade-system/dict-biz/dictionary?code=ocean_signing_method",
+          props: {
+            label: "dictValue",
+            value: "dictKey"
+          }
+        }, {
+          label: '提单份数',
+          prop: 'billCopies'
+        }, {
+          label: '副本',
+          prop: 'billCopiesCopy'
+        }, {
+          label: '实际开船',
+          prop: 'actualSailDate',
+          type: "date",
+          format: "yyyy-MM-dd",
+          valueFormat: "yyyy-MM-dd HH:mm:ss",
+        }, {
+          label: '截单日期',
+          prop: 'deadline',
+          type: "date",
+          format: "yyyy-MM-dd",
+          valueFormat: "yyyy-MM-dd HH:mm:ss",
+        }, {
+          label: '截港日期',
+          prop: 'closingDate',
+          type: "date",
+          format: "yyyy-MM-dd",
+          valueFormat: "yyyy-MM-dd HH:mm:ss",
+        }, {
+          label: '场站',
+          prop: 'station'
+        }, {
+          label: '件数',
+          prop: 'number'
+        }, {
+          label: '包装',
+          prop: 'packing',
+          type: "select",
+          dicUrl: "/api/blade-system/dict-biz/dictionary?code=ocean_packing",
+          props: {
+            label: "dictValue",
+            value: "dictKey"
+          },
+          overHidden: true
+        }, {
+          label: '重量',
+          prop: 'weight'
+        }, {
+          label: '尺码',
+          prop: 'size'
+        }, {
+          label: '货物',
+          prop: 'goodsId',
+          type: "select",
+          span: 12,
+          dicUrl: "/api/blade-client/goodsdesc/descListAll",
+          props: {
+            label: "cname",
+            value: "id"
+          },
+          change: (data) => {
+            if (data.value) {
+              for (let item of this.$refs.formTwo.DIC.goodsId || []) {
+                if (data.value === item.id) {
+                  this.form.goodsDetails = item.nameDescription
+                  this.form.hsCode = item.hsCode
+                }
+              }
+            }
+          },
+          overHidden: true
+        }, {
+          label: 'HS代码',
+          span: 12,
+          prop: 'hsCode'
+        }, {
+          label: '货物类型',
+          prop: 'goodsType',
+          type: "select",
+          dicUrl: "/api/blade-system/dict-biz/dictionary?code=ocean_goods_type",
+          props: {
+            label: "dictValue",
+            value: "dictKey"
+          },
+          overHidden: true,
+          change: (data) => {
+            if (data.value) {
+              if (data.value === "冻柜") {
+                this.findObject(this.optionForm.column, "temperature").display = true
+                this.findObject(this.optionForm.column, "ventilationCapacity").display = true
+                this.findObject(this.optionForm.column, "classA").display = false
+                this.findObject(this.optionForm.column, "unNo").display = false
+                this.findObject(this.optionForm.column, "longs").display = false
+                this.findObject(this.optionForm.column, "wide").display = false
+                this.findObject(this.optionForm.column, "high").display = false
+              } else if (data.value === "危险品") {
+                this.findObject(this.optionForm.column, "temperature").display = false
+                this.findObject(this.optionForm.column, "ventilationCapacity").display = false
+                this.findObject(this.optionForm.column, "classA").display = true
+                this.findObject(this.optionForm.column, "unNo").display = true
+                this.findObject(this.optionForm.column, "longs").display = false
+                this.findObject(this.optionForm.column, "wide").display = false
+                this.findObject(this.optionForm.column, "high").display = false
+              } else if (data.value === "特种箱") {
+                this.findObject(this.optionForm.column, "temperature").display = false
+                this.findObject(this.optionForm.column, "ventilationCapacity").display = false
+                this.findObject(this.optionForm.column, "classA").display = false
+                this.findObject(this.optionForm.column, "unNo").display = false
+                this.findObject(this.optionForm.column, "longs").display = true
+                this.findObject(this.optionForm.column, "wide").display = true
+                this.findObject(this.optionForm.column, "high").display = true
+              } else {
+                this.findObject(this.optionForm.column, "temperature").display = false
+                this.findObject(this.optionForm.column, "ventilationCapacity").display = false
+                this.findObject(this.optionForm.column, "classA").display = false
+                this.findObject(this.optionForm.column, "unNo").display = false
+                this.findObject(this.optionForm.column, "longs").display = false
+                this.findObject(this.optionForm.column, "wide").display = false
+                this.findObject(this.optionForm.column, "high").display = false
+              }
+            }
+          }
+        }, {
+          label: '温度(°C)',
+          prop: 'temperature',
+          display: false
+        }, {
+          label: '通风',
+          prop: 'ventilationCapacity',
+          display: false
+        }, {
+          label: 'CLASS',
+          prop: 'classA',
+          display: false
+        }, {
+          label: 'UN NO.',
+          prop: 'unNo',
+          display: false
+        }, {
+          label: '长',
+          prop: 'longs',
+          display: false
+        }, {
+          label: '宽',
+          prop: 'wide',
+          display: false
+        }, {
+          label: '高',
+          prop: 'high',
+          display: false
+        }, {
+          label: '备注',
+          prop: 'remarks',
+          type: 'textarea',
+          span: 24,
+          minRows: 2,
+        }]
+      },
+      formBox: {},
+      optionBox: {},
+      optionBoxBack: {
+        align: 'center',
+        index: true,
+        addBtnText: "录入明细",
+        refreshBtn: false,
+        dialogDrag: true,
+        addBtn: true,
+        span: 8,
+        height: 600,
+        selection: true,
+        addRowBtn: false,
+        cellBtn: false,
+        editBtn: false,
+        delBtn: false,
+        menuWidth: 140,
+        dialogTop: 25,
+        dialogWidth: "80%",
+        showSummary: true,
+        sumColumnList: [{
+          name: 'emptyWeight',
+          type: 'sum',
+          decimals: 2
+        }],
+        column: [{
+          label: '箱型',
+          prop: 'boxType',
+          width: 100,
+          type: "select",
+          dicUrl: "/api/blade-system/dict-biz/dictionary?code=ocean_box_ype",
+          props: {
+            label: "dictValue",
+            value: "dictKey"
+          },
+          overHidden: true
+        }, {
+          label: '箱量',
+          prop: 'boxQuantity',
+          width: 100,
+          overHidden: true
+        }, {
+          label: 'SOC箱',
+          prop: 'socBox',
+          width: 100,
+          overHidden: true
+        }, {
+          label: '温度',
+          prop: 'temperature',
+          width: 100,
+          overHidden: true
+        }, {
+          label: '温度单位',
+          prop: 'temperatureUnit',
+          width: 100,
+          type: "select",
+          dicUrl: "/api/blade-system/dict-biz/dictionary?code=ocean_temperature_unit",
+          props: {
+            label: "dictValue",
+            value: "dictKey"
+          },
+          overHidden: true
+        }, {
+          label: '通风量',
+          prop: 'ventilationCapacity',
+          width: 100,
+          overHidden: true
+        }, {
+          label: '湿度',
+          prop: 'humidity',
+          width: 100,
+          overHidden: true
+        }, {
+          label: '备注',
+          prop: 'remarks',
+          overHidden: true
+        }]
+      },
+      optionFormFour: {
+        menuBtn: false,
+        span: 8,
+        column: [{
+          label: '发货人',
+          prop: 'consignorId',
+        }, {
+          label: '发货人详情',
+          prop: 'consignorDetails',
+          type: 'textarea',
+          span: 16,
+          minRows: 1,
+        }, {
+          label: '收货人',
+          prop: 'consigneeId'
+        }, {
+          label: '收货人详情',
+          prop: 'consigneeDetails',
+          type: 'textarea',
+          span: 16,
+          minRows: 1,
+        }, {
+          label: '通知人',
+          prop: 'notifierId'
+        }, {
+          label: '通知人详情',
+          prop: 'notifierDetails',
+          type: 'textarea',
+          span: 16,
+          minRows: 1,
+        }, {
+          label: '第二通知人',
+          prop: 'secondNotifierId',
+          row: true,
+        }, {
+          label: '唛头',
+          prop: 'shippingMark',
+          type: 'textarea',
+          minRows: 1,
+        }, {
+          label: '货描',
+          prop: 'goodsDetails',
+          type: 'textarea',
+          minRows: 1
+        }]
+      },
+      optionFormTwo: {
+        menuBtn: false,
+        span: 6,
+        column: [
+          {
+            label: '系统编号',
+            prop: 'sysNo',
+            disabled: true
+          }, {
+            label: '部门',
+            prop: 'deptId',
+            type: 'tree',
+            props: {
+              label: 'title',
+              value: 'value'
+            },
+            dicUrl: '/api/blade-system/dept/tree'
+          }, {
+            label: '单据类型',
+            prop: 'documentType'
+          }, {
+            label: '业务类型',
+            prop: 'businessType',
+            overHidden: true,
+            filterable: true,
+            type: 'select',
+            dicUrl: "/api/blade-system/dict-biz/dictionary?code=ocean_business_type",
+            props: {
+              label: "dictValue",
+              value: "dictKey"
+            }
+          }, {
+            label: '业务来源',
+            prop: 'businessSource',
+            overHidden: true,
+            filterable: true,
+            type: 'select',
+            cascader: ['sourceId'],
+            dicUrl: "/api/blade-system/dict-biz/dictionary?code=ocean_business_source",
+            props: {
+              label: "dictValue",
+              value: "dictKey"
+            }
+          }, {
+            label: '来源',
+            prop: 'sourceId',
+            overHidden: true,
+            filterable: true,
+            span: 12,
+            type: 'select',
+            dicUrl: "/api/blade-client/corpsdesc/oceanCorpsList?corpsTypeName={{key}}",
+            props: {
+              label: "cname",
+              value: "id"
+            }
+          }, {
+            label: '货物类型',
+            prop: 'goodsType',
+            type: "select",
+            dicUrl: "/api/blade-system/dict-biz/dictionary?code=ocean_goods_type",
+            props: {
+              label: "dictValue",
+              value: "dictKey"
+            },
+            overHidden: true
+          }, {
+            label: '操作员',
+            prop: 'operatorId',
+            filterable: true,
+            remote: true,
+            type: "select",
+            dicUrl: "/api/blade-user/page?size=20&current=1&account={{key}}",
+            props: {
+              label: "account",
+              value: "id",
+              res: 'data.records'
+            },
+            change: (data) => {
+              if (data.value) {
+                for (let item of this.$refs.formTwo.DIC.operatorId || []) {
+                  if (data.value === item.id) {
+                    this.form.accountingDeptId = item.deptId
+                  }
+                }
+              }
+            }
+          }, {
+            label: '客服员',
+            prop: 'customerServiceId',
+            span: 12,
+            filterable: true,
+            remote: true,
+            type: "select",
+            dicUrl: "/api/blade-user/page?size=20&current=1&account={{key}}",
+            props: {
+              label: "account",
+              value: "id",
+              res: 'data.records'
+            },
+            change: (data) => {
+              if (data.value) {
+                for (let item of this.$refs.formTwo.DIC.customerServiceId || []) {
+                  if (data.value === item.id) {
+                    this.form.customerServiceName = item.account
+                  }
+                }
+              }
+            }
+          }, {
+            label: '装运方式',
+            prop: 'shipmentMode',
+            overHidden: true,
+            filterable: true,
+            type: 'select',
+            dicUrl: "/api/blade-system/dict-biz/dictionary?code=ocean_shipment_mode",
+            props: {
+              label: "dictValue",
+              value: "dictKey"
+            }
+          }
+        ]
+      },
+      formCreate: false
+    }
+  }, model: {
+    prop: "value",
+    event: "callBack"
+  },
+  props: {
+    value: {
+      type: Object,
+      required: true,
+      default: () => {
+        return {};
+      }
+    }
+  },
+  watch: {
+    value: {
+      handler(val) {
+        if (this.formCreate) {
+          this.form = Object.assign(this.value, {});
+        } else {
+          this.form = Object.assign(this.value, val || {});
+        }
+      },
+      deep: true,
+      immediate: true
+    },
+    form: {
+      handler(val) {
+        if (this.formCreate) this.setVal();
+      },
+      deep: true
+    }
+  },
+  async created() {
+    this.$nextTick(() => {
+      this.formCreate = true;
+    })
+    this.optionBox = await this.getColumnData(this.getColumnName(254.1), this.optionBoxBack);
+  },
+  methods: {
+    setVal() {
+      this.$emit("callBack", this.form);
+    },
+    rowDelBox(row, index) {
+      this.$confirm("确定将选择数据删除?", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      }).then(() => {
+            if (row.id) {
+              tradingBox(row.id).then(res => {
+                this.shippingBoxTypeList.splice(index, 1);
+                this.$message.success("操作成功!");
+              });
+            } else {
+              this.shippingBoxTypeList.splice(index, 1);
+              this.$message.success("操作成功!");
+            }
+          }
+      )
+      ;
+    },
+    rowSave(form, done, loading) {
+      done(form)
+    },
+    rowUpdate(form, index, done, loading) {
+      done(form)
+    },
+    //自定义列保存
+    async saveColumnTwo(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 resetColumnTwo(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>
+
+</style>

+ 384 - 0
src/views/oceanShipping/oceanFreightImport/components/businessBill.vue

@@ -0,0 +1,384 @@
+<template>
+  <div>
+    <trade-card title="基础信息">
+      <avue-form :option="optionForm" v-model="form" ref="form">
+        <template slot="corpId" slot-scope="scope">
+          <crop-select v-model="form.corpId" corpType="KH" :disabled="scope.disabled"
+                       @getCorpData="(val)=>{form.corpName = val.cname || ''}"></crop-select>
+        </template>
+        <template slot="shippingCompanyId" slot-scope="scope">
+          <crop-select v-model="form.shippingCompanyId" corpType="GS" :disabled="scope.disabled"
+                       @getCorpData="(val)=>{form.shippingCompanyName = val.cname || ''}"></crop-select>
+        </template>
+        <template slot="loadingPortName" slot-scope="scope">
+          <port-info :disabled="scope.disabled" v-model="form.loadingPortId" type="id"
+                     @balabalaTow="(val)=>{form.loadingPortName = val.name || ''}"/>
+        </template>
+        <template slot="destinationName" slot-scope="scope">
+          <port-info :disabled="scope.disabled" v-model="form.destinationId" type="id"
+                     @balabalaTow="(val)=>{form.destinationName = val.name || ''}"/>
+        </template>
+      </avue-form>
+    </trade-card>
+    <trade-card title="箱型箱量">
+      <avue-crud :option="optionBox" v-model="formBox" ref="formBox" :data="form.shippingMatchBoxList"
+                 @row-save="rowSave"
+                 @row-update="rowUpdate"
+                 @resetColumn="resetColumnTwo('formBox','optionBox','optionBoxBack',254.1)"
+                 @saveColumn="saveColumnTwo('formBox','optionBox','optionBoxBack',254.1)">>
+        <template slot-scope="{type,size,row,index,disabled}" slot="menu">
+          <el-button icon="el-icon-edit" :size="size" :disabled="disabled" :type="type"
+                     @click="$refs.formBox.rowEdit(row,index)">编辑
+          </el-button>
+          <el-button icon="el-icon-delete" :size="size" :disabled="disabled" :type="type"
+                     @click="rowDelBox(row,index)">删除
+          </el-button>
+        </template>
+      </avue-crud>
+    </trade-card>
+    <trade-card title="应收明细">
+      <ocean-freight v-model="form.shippingFeesList" :id="form.id" :codeValue="254.3" type="CK"
+                     activeName="first"></ocean-freight>
+    </trade-card>
+    <trade-card title="应收明细">
+      <ocean-freight v-model="form.shippingFeesList" :id="form.id" :codeValue="254.3" type="CK"
+                     activeName="second"></ocean-freight>
+    </trade-card>
+    <trade-card title="财务统计">
+      <avue-form :option="optionFormTwo" v-model="form" ref="formTwo"></avue-form>
+    </trade-card>
+  </div>
+</template>
+
+<script>
+import {tradingBox} from "@/api/oceanShipping/maritimeExport";
+
+export default {
+  name: "entrustmentInformation",
+  data() {
+    return {
+      form: {
+        shippingMatchBoxList: [],
+        shippingFeesList: []
+      },
+      optionForm: {
+        menuBtn: false,
+        span: 6,
+        column: [{
+          label: '客户名称',
+          span: 12,
+          prop: 'corpId',
+          rules: [{
+            required: true,
+            message: " ",
+            trigger: "blur"
+          }]
+        }, {
+          label: '客户电话',
+          prop: 'telephone'
+        }, {
+          label: '邮箱',
+          prop: 'postbox'
+        }, {
+          label: '船公司',
+          span: 12,
+          prop: 'shippingCompanyId'
+        }, {
+          label: '船期',
+          prop: 'sailDate',
+          type: "date",
+          format: "yyyy-MM-dd",
+          valueFormat: "yyyy-MM-dd HH:mm:ss",
+        }, {
+          label: '订舱代理',
+          prop: 'bookingAgentId',
+          filterable: true,
+          type: 'select',
+          dicUrl: "/api/blade-client/corpsdesc/oceanCorpsList?corpsTypeName=订舱代理",
+          props: {
+            label: "cname",
+            value: "id"
+          }
+        }, {
+          label: '船名',
+          prop: 'shipId',
+          type: "select",
+          span: 12,
+          cascader: ['voyageNumberId'],
+          dicUrl: "/api/blade-box-tube/shippingvessel/listAll",
+          props: {
+            label: "name",
+            value: "id",
+          }
+        }, {
+          label: '航次',
+          prop: 'voyageNumberId',
+          type: "select",
+          dicUrl: "/api/blade-box-tube/shippingvessel/listAllByVoyage?pid={{key}}",
+          props: {
+            label: "no",
+            value: "id",
+          },
+          change: (data) => {
+            if (data.value) {
+              for (let item of this.$refs.form.DIC.voyageNumberId || []) {
+                if (data.value === item.id) {
+                  this.form.route = item.lane
+                }
+              }
+            }
+          }
+        }, {
+          label: '提单号',
+          prop: 'mainBillNo'
+        }, {
+          label: '起运港',
+          prop: 'loadingPortName'
+        }, {
+          label: '目的港',
+          prop: 'destinationName'
+        }, {
+          label: '起运地',
+          prop: 'deliverGoodsAddressName'
+        }, {
+          label: '目的地',
+          prop: 'deliveryAddressName'
+        }, {
+          label: '签单方式',
+          prop: 'signingMethod',
+          overHidden: true,
+          filterable: true,
+          type: 'select',
+          dicUrl: "/api/blade-system/dict-biz/dictionary?code=ocean_signing_method",
+          props: {
+            label: "dictValue",
+            value: "dictKey"
+          }
+        }, {
+          label: '提单份数',
+          prop: 'billCopies'
+        }, {
+          label: '副本',
+          prop: 'billCopiesCopy'
+        }, {
+          label: '账期日期',
+          prop: 'acountingPeriodDate',
+          type: "date",
+          format: "yyyy-MM-dd",
+          valueFormat: "yyyy-MM-dd HH:mm:ss",
+        }]
+      },
+      formBox: {},
+      shippingMatchBoxList: [],
+      optionBox: {},
+      optionBoxBack: {
+        align: 'center',
+        index: true,
+        addBtnText: "录入明细",
+        refreshBtn: false,
+        dialogDrag: true,
+        addBtn: true,
+        span: 8,
+        height: 600,
+        selection: true,
+        addRowBtn: false,
+        cellBtn: false,
+        editBtn: false,
+        delBtn: false,
+        menuWidth: 140,
+        dialogTop: 25,
+        dialogWidth: "80%",
+        showSummary: true,
+        sumColumnList: [{
+          name: 'emptyWeight',
+          type: 'sum',
+          decimals: 2
+        }],
+        column: [{
+          label: '箱型',
+          prop: 'boxType',
+          width: 100,
+          type: "select",
+          dicUrl: "/api/blade-system/dict-biz/dictionary?code=ocean_box_ype",
+          props: {
+            label: "dictValue",
+            value: "dictKey"
+          },
+          overHidden: true
+        }, {
+          label: '箱量',
+          prop: 'boxQuantity',
+          width: 100,
+          overHidden: true
+        }, {
+          label: 'SOC箱',
+          prop: 'socBox',
+          width: 100,
+          overHidden: true
+        }, {
+          label: '温度',
+          prop: 'temperature',
+          width: 100,
+          overHidden: true
+        }, {
+          label: '温度单位',
+          prop: 'temperatureUnit',
+          width: 100,
+          type: "select",
+          dicUrl: "/api/blade-system/dict-biz/dictionary?code=ocean_temperature_unit",
+          props: {
+            label: "dictValue",
+            value: "dictKey"
+          },
+          overHidden: true
+        }, {
+          label: '通风量',
+          prop: 'ventilationCapacity',
+          width: 100,
+          overHidden: true
+        }, {
+          label: '湿度',
+          prop: 'humidity',
+          width: 100,
+          overHidden: true
+        }, {
+          label: '备注',
+          prop: 'remarks',
+          overHidden: true
+        }]
+      },
+      optionFormTwo: {
+        menuBtn: false,
+        span: 6,
+        column: [{
+          label: '应收外币',
+          prop: 'receivableUSD',
+          disabled: true
+        }, {
+          label: '应收RMB',
+          prop: 'receivableRMB',
+          disabled: true
+        }, {
+          label: '应付外币',
+          prop: 'payUSD',
+          disabled: true
+        }, {
+          label: '应付RMB',
+          prop: 'payUSD',
+          disabled: true
+        }, {
+          label: '利润外币',
+          prop: 'profitUSD',
+          disabled: true
+        }, {
+          label: '利润RMB',
+          prop: 'profitRMB',
+          disabled: true
+        }, {
+          label: '利润合计',
+          prop: 'profitTotal',
+          disabled: true
+        }
+        ]
+      },
+      formCreate: false
+    }
+  },
+  model: {
+    prop: "value",
+    event: "callBack"
+  },
+  props: {
+    value: {
+      type: Object,
+      required: true,
+      default: () => {
+        return {};
+      }
+    }
+  },
+  watch: {
+    value: {
+      handler(val) {
+        if (this.formCreate) {
+          this.form = Object.assign(this.value, {});
+        } else {
+          this.form = Object.assign(this.value, val || {});
+        }
+      },
+      deep: true,
+      immediate: true
+    },
+    form: {
+      handler(val) {
+        if (this.formCreate) this.setVal();
+      },
+      deep: true
+    }
+  },
+  async created() {
+    this.$nextTick(() => {
+      this.formCreate = true;
+    })
+    this.optionBox = await this.getColumnData(this.getColumnName(254.1), this.optionBoxBack);
+  },
+  methods: {
+    setVal() {
+      this.$emit("callBack", this.form);
+    },
+    rowSave(form, done, loading) {
+      done(form)
+    },
+    rowUpdate(form, index, done, loading) {
+      done(form)
+    },
+    rowDelBox(row, index) {
+      this.$confirm("确定将选择数据删除?", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      }).then(() => {
+          if (row.id) {
+            tradingBox(row.id).then(res => {
+              this.shippingBoxTypeList.splice(index, 1);
+              this.$message.success("操作成功!");
+            });
+          } else {
+            this.shippingBoxTypeList.splice(index, 1);
+            this.$message.success("操作成功!");
+          }
+        }
+      )
+      ;
+    },
+    //自定义列保存
+    async saveColumnTwo(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 resetColumnTwo(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.limit()
+      }
+    },
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 435 - 0
src/views/oceanShipping/oceanFreightImport/components/entrustmentInformation.vue

@@ -0,0 +1,435 @@
+<template>
+  <div>
+    <trade-card title="基础信息">
+      <avue-form :option="optionForm" v-model="form" ref="form">
+        <template slot="corpId" slot-scope="scope">
+          <crop-select v-model="form.corpId" corpType="KH" :disabled="scope.disabled"
+                       @getCorpData="(val)=>{form.corpName = val.cname || ''}"></crop-select>
+        </template>
+        <template slot="shippingCompanyId" slot-scope="scope">
+          <crop-select v-model="form.shippingCompanyId" corpType="GS" :disabled="scope.disabled"
+                       @getCorpData="(val)=>{form.shippingCompanyName = val.cname || ''}"></crop-select>
+        </template>
+        <template slot="loadingPortName" slot-scope="scope">
+          <port-info :disabled="scope.disabled" v-model="form.loadingPortId" type="id"
+                     @balabalaTow="(val)=>{form.loadingPortName = val.name || ''}"/>
+        </template>
+        <template slot="destinationName" slot-scope="scope">
+          <port-info :disabled="scope.disabled" v-model="form.destinationId" type="id"
+                     @balabalaTow="(val)=>{form.destinationName = val.name || ''}"/>
+        </template>
+      </avue-form>
+    </trade-card>
+    <trade-card title="箱型箱量">
+      <avue-crud :option="optionBox" v-model="formBox" ref="formBox" :data="form.shippingMatchBoxList"
+                 @row-save="rowSave"
+                 @row-update="rowUpdate"
+                 @resetColumn="resetColumnTwo('formBox','optionBox','optionBoxBack',254.1)"
+                 @saveColumn="saveColumnTwo('formBox','optionBox','optionBoxBack',254.1)">>
+        <template slot-scope="{type,size,row,index,disabled}" slot="menu">
+          <el-button icon="el-icon-edit" :size="size" :disabled="disabled" :type="type"
+                     @click="$refs.formBox.rowEdit(row,index)">编辑
+          </el-button>
+          <el-button icon="el-icon-delete" :size="size" :disabled="disabled" :type="type"
+                     @click="rowDelBox(row,index)">删除
+          </el-button>
+        </template>
+      </avue-crud>
+    </trade-card>
+    <trade-card title="应收明细">
+      <ocean-freight v-model="form.shippingFeesList" :id="form.id" :codeValue="254.3" type="CK"
+                     activeName="first"></ocean-freight>
+    </trade-card>
+    <trade-card title="应付明细">
+      <ocean-freight v-model="form.shippingFeesList" :id="form.id" :codeValue="254.3" type="CK"
+                     activeName="second"></ocean-freight>
+    </trade-card>
+    <trade-card title="默认数据">
+      <avue-form :option="optionFormTwo" v-model="form" ref="formTwo"></avue-form>
+    </trade-card>
+    <trade-card title="附件管理">
+      <c-upload
+          basic
+          :data="form.shippingFileList"
+          :disabled="disabled"
+          deleteUrl="/api/blade-box-tube/shippingfile/remove"
+          :enumerationValue="254.4"
+          display
+      />
+    </trade-card>
+  </div>
+</template>
+
+<script>
+import {tradingBox} from "@/api/oceanShipping/maritimeExport";
+
+export default {
+  name: "entrustmentInformation",
+  data() {
+    return {
+      form: {
+        shippingFeesList: [],
+        shippingFileList: [],
+        shippingMatchBoxList: []
+      },
+      disabled: false,
+      formBox: {},
+      optionBox: {},
+      optionBoxBack: {
+        align: 'center',
+        index: true,
+        addBtnText: "录入明细",
+        refreshBtn: false,
+        dialogDrag: true,
+        addBtn: true,
+        span: 8,
+        height: 600,
+        selection: true,
+        addRowBtn: false,
+        cellBtn: false,
+        editBtn: false,
+        delBtn: false,
+        menuWidth: 140,
+        dialogTop: 25,
+        dialogWidth: "80%",
+        showSummary: true,
+        sumColumnList: [{
+          name: 'emptyWeight',
+          type: 'sum',
+          decimals: 2
+        }],
+        column: [{
+          label: '箱型',
+          prop: 'boxType',
+          width: 100,
+          type: "select",
+          dicUrl: "/api/blade-system/dict-biz/dictionary?code=ocean_box_ype",
+          props: {
+            label: "dictValue",
+            value: "dictKey"
+          },
+          overHidden: true
+        }, {
+          label: '箱量',
+          prop: 'boxQuantity',
+          width: 100,
+          overHidden: true
+        }, {
+          label: 'SOC箱',
+          prop: 'socBox',
+          width: 100,
+          overHidden: true
+        }, {
+          label: '温度',
+          prop: 'temperature',
+          width: 100,
+          overHidden: true
+        }, {
+          label: '温度单位',
+          prop: 'temperatureUnit',
+          width: 100,
+          type: "select",
+          dicUrl: "/api/blade-system/dict-biz/dictionary?code=ocean_temperature_unit",
+          props: {
+            label: "dictValue",
+            value: "dictKey"
+          },
+          overHidden: true
+        }, {
+          label: '通风量',
+          prop: 'ventilationCapacity',
+          width: 100,
+          overHidden: true
+        }, {
+          label: '湿度',
+          prop: 'humidity',
+          width: 100,
+          overHidden: true
+        }, {
+          label: '备注',
+          prop: 'remarks',
+          overHidden: true
+        }]
+      },
+      formCreate: false,
+      optionForm: {
+        menuBtn: false,
+        span: 6,
+        column: [{
+          label: '客户名称',
+          span: 12,
+          prop: 'corpId',
+          rules: [{
+            required: true,
+            message: " ",
+            trigger: "blur"
+          }]
+        }, {
+          label: '电话',
+          prop: 'telephone'
+        }, {
+          label: '邮箱',
+          prop: 'postbox'
+        },{
+          label: '原产地',
+          span: 12,
+          prop: 'countryOfOrigin',
+          rules: [{
+            required: true,
+            message: " ",
+            trigger: "blur"
+          }]
+        }, {
+          label: '起运港',
+          prop: 'loadingPortName'
+        }, {
+          label: '目的港',
+          prop: 'destinationName'
+        }, {
+          label: '船公司',
+          prop: 'shippingCompanyId'
+        }, {
+          label: '船期',
+          prop: 'sailDate',
+          type: "date",
+          format: "yyyy-MM-dd",
+          valueFormat: "yyyy-MM-dd HH:mm:ss",
+        }, {
+          label: '航线',
+          prop: 'route',
+          type: "select",
+          slot: true,
+          dicUrl: "/api/blade-system/dict-biz/dictionary?code=ocean_route",
+          props: {
+            label: "dictValue",
+            value: "dictKey"
+          },
+          overHidden: true
+        }, {
+          label: '订舱状态',
+          prop: 'bookingStatus',
+          type: "select",
+          slot: true,
+          dicUrl: "/api/blade-system/dict-biz/dictionary?code=booking_space_status",
+          props: {
+            label: "dictValue",
+            value: "dictKey"
+          },
+          overHidden: true
+        }, {
+          label: '备注',
+          prop: 'remarks',
+          type: 'textarea',
+          span: 24,
+          minRows: 2,
+        }]
+      },
+      optionFormTwo: {
+        menuBtn: false,
+        span: 6,
+        column: [{
+          label: '系统编号',
+          prop: 'sysNo',
+          disabled: true,
+        }, {
+          label: '部门',
+          prop: 'deptId',
+          type: 'tree',
+          props: {
+            label: 'title',
+            value: 'value'
+          },
+          dicUrl: '/api/blade-system/dept/tree'
+        }, {
+          label: '单据类型',
+          prop: 'documentType'
+        }, {
+          label: '业务类型',
+          prop: 'businessType',
+          overHidden: true,
+          filterable: true,
+          type: 'select',
+          dicUrl: "/api/blade-system/dict-biz/dictionary?code=ocean_business_type",
+          props: {
+            label: "dictValue",
+            value: "dictKey"
+          }
+        }, {
+          label: '业务来源',
+          prop: 'businessSource',
+          overHidden: true,
+          filterable: true,
+          type: 'select',
+          cascader: ['sourceId'],
+          dicUrl: "/api/blade-system/dict-biz/dictionary?code=ocean_business_source",
+          props: {
+            label: "dictValue",
+            value: "dictKey"
+          }
+        }, {
+          label: '来源',
+          prop: 'sourceId',
+          span: 12,
+          overHidden: true,
+          filterable: true,
+          type: 'select',
+          dicUrl: "/api/blade-client/corpsdesc/oceanCorpsList?corpsTypeName={{key}}",
+          props: {
+            label: "cname",
+            value: "id"
+          }
+        }, {
+          label: '货物类型',
+          prop: 'goodsType',
+          type: "select",
+          dicUrl: "/api/blade-system/dict-biz/dictionary?code=ocean_goods_type",
+          props: {
+            label: "dictValue",
+            value: "dictKey"
+          },
+          overHidden: true
+        }, {
+          label: '操作员',
+          prop: 'operatorId',
+          filterable: true,
+          remote: true,
+          type: "select",
+          dicUrl: "/api/blade-user/page?size=20&current=1&account={{key}}",
+          props: {
+            label: "account",
+            value: "id",
+            res: 'data.records'
+          }
+        }, {
+          label: '客服员',
+          prop: 'customerServiceId',
+          span: 12,
+          filterable: true,
+          remote: true,
+          type: "select",
+          dicUrl: "/api/blade-user/page?size=20&current=1&account={{key}}",
+          props: {
+            label: "account",
+            value: "id",
+            res: 'data.records'
+          },
+          change: (data) => {
+            if (data.value) {
+              for (let item of this.$refs.formTwo.DIC.customerServiceId || []) {
+                if (data.value === item.id) {
+                  this.form.customerServiceName = item.account
+                }
+              }
+            }
+          }
+        }, {
+          label: '装运方式',
+          prop: 'shipmentMode',
+          overHidden: true,
+          filterable: true,
+          type: 'select',
+          dicUrl: "/api/blade-system/dict-biz/dictionary?code=ocean_shipment_mode",
+          props: {
+            label: "dictValue",
+            value: "dictKey"
+          }
+        }]
+      }
+    }
+  },
+  model: {
+    prop: "value",
+    event: "callBack"
+  },
+  props: {
+    value: {
+      type: Object,
+      required: true,
+      default: () => {
+        return {};
+      }
+    }
+  },
+  watch: {
+    value: {
+      handler(val) {
+        if (this.formCreate) {
+          this.form = Object.assign(this.value, {});
+        } else {
+          this.form = Object.assign(this.value, val || {});
+        }
+      },
+      deep: true,
+      immediate: true
+    },
+    form: {
+      handler(val) {
+        if (this.formCreate) this.setVal();
+      },
+      deep: true
+    }
+  },
+  async created() {
+    this.$nextTick(() => {
+      this.formCreate = true;
+    })
+    this.optionBox = await this.getColumnData(this.getColumnName(254.1), this.optionBoxBack);
+  },
+  methods: {
+    setVal() {
+      this.$emit("callBack", this.form);
+    },
+    rowDelBox(row, index) {
+      this.$confirm("确定将选择数据删除?", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      }).then(() => {
+          if (row.id) {
+            tradingBox(row.id).then(res => {
+              this.shippingBoxTypeList.splice(index, 1);
+              this.$message.success("操作成功!");
+            });
+          } else {
+            this.shippingBoxTypeList.splice(index, 1);
+            this.$message.success("操作成功!");
+          }
+        }
+      );
+    },
+    rowSave(form, done, loading) {
+      done(form)
+    },
+    rowUpdate(form, index, done, loading) {
+      done(form)
+    },
+    //自定义列保存
+    async saveColumnTwo(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 resetColumnTwo(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>
+
+</style>

+ 207 - 0
src/views/oceanShipping/oceanFreightImport/components/packingDetails.vue

@@ -0,0 +1,207 @@
+<template>
+  <div>
+    <trade-card title="箱型箱量">
+      <avue-crud
+          :option="optionBox"
+          v-model="formBox"
+          ref="formBox"
+          :data="form.shippingMatchBoxList"
+          @selection-change="selectionChange"
+          @row-save="rowSave"
+          @row-update="rowUpdate"
+          @resetColumn="resetColumnTwo('formBox','optionBox','optionBoxBack',254.11)"
+          @saveColumn="saveColumnTwo('formBox','optionBox','optionBoxBack',254.11)">
+        <template slot="menuLeft">
+          <el-button :disabled="selectionList.length <= 0" type="primary" size="small" @click="create">生成分票</el-button>
+        </template>
+      </avue-crud>
+    </trade-card>
+  </div>
+</template>
+
+<script>
+import {
+  createLotTing
+} from "@/api/oceanShipping/maritimeExport/index.js";
+export default {
+  name: "bookingInformation",
+  data() {
+    return {
+      form: {},
+      formBox: {},
+      shippingMatchBoxFollowList: [],
+      optionBox: {},
+      optionBoxBack: {
+        align: 'center',
+        index: true,
+        addBtnText: "录入明细",
+        refreshBtn: false,
+        dialogDrag: true,
+        addBtn: false,
+        span: 8,
+        height: 600,
+        menu: false,
+        selection: true,
+        addRowBtn: false,
+        cellBtn: false,
+        editBtn: false,
+        delBtn: false,
+        menuWidth: 140,
+        dialogTop: 25,
+        dialogWidth: "80%",
+        showSummary: true,
+        sumColumnList: [{
+          name: 'emptyWeight',
+          type: 'sum',
+          decimals: 2
+        }],
+        column: [{
+          label: '箱型',
+          prop: 'boxType',
+          width: 100,
+          type: "select",
+          dicUrl: "/api/blade-system/dict-biz/dictionary?code=ocean_box_ype",
+          props: {
+            label: "dictValue",
+            value: "dictKey"
+          },
+          overHidden: true
+        }, {
+          label: '箱量',
+          prop: 'boxQuantity',
+          width: 100,
+          overHidden: true
+        }, {
+          label: 'SOC箱',
+          prop: 'socBox',
+          width: 100,
+          overHidden: true
+        }, {
+          label: '温度',
+          prop: 'temperature',
+          width: 100,
+          overHidden: true
+        }, {
+          label: '温度单位',
+          prop: 'temperatureUnit',
+          width: 100,
+          type: "select",
+          dicUrl: "/api/blade-system/dict-biz/dictionary?code=ocean_temperature_unit",
+          props: {
+            label: "dictValue",
+            value: "dictKey"
+          },
+          overHidden: true
+        }, {
+          label: '通风量',
+          prop: 'ventilationCapacity',
+          width: 100,
+          overHidden: true
+        }, {
+          label: '湿度',
+          prop: 'humidity',
+          width: 100,
+          overHidden: true
+        }, {
+          label: '备注',
+          prop: 'remarks',
+          overHidden: true
+        }]
+      },
+      formCreate: false,
+      selectionList:[]
+    }
+  },
+  props: {
+    value: {
+      type: Object,
+      required: true,
+      default: () => {
+        return {};
+      }
+    }
+  },
+  model: {
+    prop: "value",
+    event: "callBack"
+  },
+  watch: {
+    value: {
+      handler(val) {
+        if (this.formCreate) {
+          this.form = Object.assign(this.value, {});
+        } else {
+          this.form = Object.assign(this.value, val || {});
+        }
+      },
+      deep: true,
+      immediate: true
+    },
+    form: {
+      handler(val) {
+        if (this.formCreate) this.setVal();
+      },
+      deep: true
+    }
+  },
+  async created() {
+    this.$nextTick(() => {
+      this.formCreate = true;
+    })
+    this.optionBox = await this.getColumnData(this.getColumnName(254.11), this.optionBoxBack);
+    this.optionBox.selectable = (row,index)=>{
+      return Number(row.createStatus) === 0;
+    }
+  },
+  methods: {
+    setVal() {
+      this.$emit("callBack", this.form);
+    },
+    selectionChange(list){
+      this.selectionList = list
+    },
+    create(){
+      createLotTing({
+        id:this.form.id,
+        shippingMatchBoxFollowList:this.selectionList
+      }).then(res=>{
+        this.$message.success("生成成功")
+        this.$parent.refresh(this.form.id)
+      })
+    },
+    rowSave(form, done, loading) {
+      done(form)
+    },
+    rowUpdate(form, index, done, loading) {
+      done(form)
+    },
+    //自定义列保存
+    async saveColumnTwo(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 resetColumnTwo(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>
+
+</style>

+ 321 - 0
src/views/oceanShipping/oceanFreightImport/components/splitContent.vue

@@ -0,0 +1,321 @@
+<template>
+  <div>
+    <trade-card title="基础信息">
+      <avue-form :option="optionForm" v-model="form.shippingBillDetails" ref="form">
+      </avue-form>
+    </trade-card>
+    <trade-card title="箱型箱量">
+      <avue-crud :option="optionBox" v-model="formBox" ref="formBox" :data="form.shippingMatchBoxList" @row-save="rowSave"
+                 @row-update="rowUpdate"
+                 @resetColumn="resetColumnTwo('formBox','optionBox','optionBoxBack',254.1)"
+                 @saveColumn="saveColumnTwo('formBox','optionBox','optionBoxBack',254.1)">>
+        <template slot-scope="{type,size,row,index,disabled}" slot="menu">
+          <el-button icon="el-icon-edit" :size="size" :disabled="disabled" :type="type"
+                     @click="$refs.formBox.rowEdit(row,index)">编辑
+          </el-button>
+          <el-button icon="el-icon-delete" :size="size" :disabled="disabled" :type="type"
+                     @click="rowDelBox(row,index)">删除
+          </el-button>
+        </template>
+      </avue-crud>
+    </trade-card>
+    <trade-card title="发货信息">
+      <avue-form :option="optionFormFour" v-model="form.shippingBillDetails" ref="formFour">
+        <template slot="consignorId" slot-scope="{disabled}">
+          <crop-select v-model="form.shippingBillDetails.consignorId" corpType="KH" :disabled="disabled"
+                       @getCorpData="(val)=>{form.shippingBillDetails.consignorName = val.cname || '';form.shippingBillDetails.consignorDetails = val.details}"></crop-select>
+        </template>
+        <template slot="consigneeId" slot-scope="{disabled}">
+          <crop-select v-model="form.shippingBillDetails.consigneeId" corpType="KH" :disabled="disabled"
+                       @getCorpData="(val)=>{form.shippingBillDetails.consigneeName = val.cname || '';form.shippingBillDetails.consigneeDetails = val.details}"></crop-select>
+        </template>
+        <template slot="notifierId" slot-scope="{disabled}">
+          <crop-select v-model="form.shippingBillDetails.notifierId" corpType="KH" :disabled="disabled"
+                       @getCorpData="(val)=>{form.shippingBillDetails.notifierName = val.cname || '';form.shippingBillDetails.notifierDetails = val.details}"></crop-select>
+        </template>
+        <template slot="secondNotifierId" slot-scope="{disabled}">
+          <crop-select v-model="form.shippingBillDetails.secondNotifierId" corpType="KH" :disabled="disabled"
+                       @getCorpData="(val)=>{form.shippingBillDetails.secondNotifierName = val.cname || ''}"></crop-select>
+        </template>
+      </avue-form>
+    </trade-card>
+  </div>
+</template>
+
+<script>
+import {tradingBox} from "@/api/oceanShipping/maritimeExport";
+
+export default {
+  name: "bookingInformation",
+  data() {
+    return {
+      form:{
+        shippingMatchBoxList:[],
+        shippingBillDetails:{}
+      },
+      optionForm: {
+        menuBtn: false,
+        span: 6,
+        column: [{
+          label: '提单号',
+          prop: 'mainBillNo'
+        },{
+          label: '分单单号',
+          prop: 'branchBillNo'
+        }, {
+          label: '签单方式',
+          prop: 'signingMethod',
+          overHidden: true,
+          filterable: true,
+          type: 'select',
+          dicUrl: "/api/blade-system/dict-biz/dictionary?code=ocean_signing_method",
+          props: {
+            label: "dictValue",
+            value: "dictKey"
+          }
+        }, {
+          label: '件数',
+          prop: 'number'
+        }, {
+          label: '包装',
+          prop: 'packing',
+          type: "select",
+          dicUrl: "/api/blade-system/dict-biz/dictionary?code=ocean_packing",
+          props: {
+            label: "dictValue",
+            value: "dictKey"
+          },
+          overHidden: true
+        }, {
+          label: '重量',
+          prop: 'weight'
+        }, {
+          label: '尺码',
+          prop: 'size'
+        }]
+      },
+      formBox:{},
+      optionBox: {},
+      optionBoxBack: {
+        align: 'center',
+        index: true,
+        addBtnText: "录入明细",
+        refreshBtn: false,
+        dialogDrag: true,
+        addBtn: true,
+        span: 8,
+        height: 600,
+        selection: true,
+        addRowBtn: false,
+        cellBtn: false,
+        editBtn: false,
+        delBtn: false,
+        menuWidth: 140,
+        dialogTop: 25,
+        dialogWidth: "80%",
+        showSummary: true,
+        sumColumnList: [{
+          name: 'emptyWeight',
+          type: 'sum',
+          decimals: 2
+        }],
+        column: [{
+          label: '箱型',
+          prop: 'boxType',
+          width: 100,
+          type: "select",
+          dicUrl: "/api/blade-system/dict-biz/dictionary?code=ocean_box_ype",
+          props: {
+            label: "dictValue",
+            value: "dictKey"
+          },
+          overHidden: true
+        }, {
+          label: '箱量',
+          prop: 'boxQuantity',
+          width: 100,
+          overHidden: true
+        }, {
+          label: 'SOC箱',
+          prop: 'socBox',
+          width: 100,
+          overHidden: true
+        }, {
+          label: '温度',
+          prop: 'temperature',
+          width: 100,
+          overHidden: true
+        }, {
+          label: '温度单位',
+          prop: 'temperatureUnit',
+          width: 100,
+          type: "select",
+          dicUrl: "/api/blade-system/dict-biz/dictionary?code=ocean_temperature_unit",
+          props: {
+            label: "dictValue",
+            value: "dictKey"
+          },
+          overHidden: true
+        }, {
+          label: '通风量',
+          prop: 'ventilationCapacity',
+          width: 100,
+          overHidden: true
+        }, {
+          label: '湿度',
+          prop: 'humidity',
+          width: 100,
+          overHidden: true
+        }, {
+          label: '备注',
+          prop: 'remarks',
+          overHidden: true
+        }]
+      },
+      optionFormFour: {
+        menuBtn: false,
+        span: 8,
+        column: [{
+          label: '发货人',
+          prop: 'consignorId',
+        }, {
+          label: '发货人详情',
+          prop: 'consignorDetails',
+          type: 'textarea',
+          span: 16,
+          minRows: 1,
+        }, {
+          label: '收货人',
+          prop: 'consigneeId'
+        }, {
+          label: '收货人详情',
+          prop: 'consigneeDetails',
+          type: 'textarea',
+          span: 16,
+          minRows: 1,
+        }, {
+          label: '通知人',
+          prop: 'notifierId'
+        }, {
+          label: '通知人详情',
+          prop: 'notifierDetails',
+          type: 'textarea',
+          span: 16,
+          minRows: 1,
+        }, {
+          label: '第二通知人',
+          prop: 'secondNotifierId',
+          row:true,
+        }, {
+          label: '唛头',
+          prop: 'shippingMark',
+          type: 'textarea',
+          minRows: 1,
+        }, {
+          label: '货描',
+          prop: 'goodsDetails',
+          type: 'textarea',
+          minRows: 1
+        }]
+      },
+      formCreate:false
+    }
+  },
+  model: {
+    prop: "value",
+    event: "callBack"
+  },
+  props: {
+    value: {
+      type: Object,
+      required: true,
+      default: () => {
+        return {};
+      }
+    }
+  },
+  watch: {
+    value: {
+      handler(val) {
+        if (this.formCreate) {
+          this.form = Object.assign(this.value, {});
+        } else {
+          this.form = Object.assign(this.value, val || {});
+        }
+      },
+      deep: true,
+      immediate: true
+    },
+    form: {
+      handler(val) {
+        if (this.formCreate) this.setVal();
+      },
+      deep: true
+    }
+  },
+  async created() {
+    this.$nextTick(() => {
+      this.formCreate = true;
+    })
+    this.optionBox = await this.getColumnData(this.getColumnName(254.1), this.optionBoxBack);
+  },
+  methods:{
+    setVal() {
+      this.$emit("callBack", this.form);
+    },
+    rowSave(form, done, loading) {
+      done(form)
+    },
+    rowUpdate(form, index, done, loading) {
+      done(form)
+    },
+    rowDelBox(row, index) {
+      this.$confirm("确定将选择数据删除?", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      }).then(() => {
+            if (row.id) {
+              tradingBox(row.id).then(res => {
+                this.shippingBoxTypeList.splice(index, 1);
+                this.$message.success("操作成功!");
+              });
+            } else {
+              this.shippingBoxTypeList.splice(index, 1);
+              this.$message.success("操作成功!");
+            }
+          }
+      )
+      ;
+    },
+    //自定义列保存
+    async saveColumnTwo(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 resetColumnTwo(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.limit()
+      }
+    },
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 206 - 0
src/views/oceanShipping/oceanFreightImport/components/ticketDistribution.vue

@@ -0,0 +1,206 @@
+<template>
+  <div>
+    <trade-card title="分票信息">
+      <avue-crud
+          :option="optionBox"
+          v-model="formBox"
+          ref="formBox"
+          :data="form.shippingBillList"
+          @row-save="rowSave"
+          @row-update="rowUpdate"
+          @resetColumn="resetColumnTwo('formBox','optionBox','optionBoxBack',254.5)"
+          @saveColumn="saveColumnTwo('formBox','optionBox','optionBoxBack',254.5)">>
+        <template slot-scope="{type,size,row,index,disabled}" slot="menu">
+          <el-button icon="el-icon-edit" :size="size" :disabled="disabled" :type="type"
+                     @click="$refs.formBox.rowEdit(row,index)">查看
+          </el-button>
+        </template>
+      </avue-crud>
+    </trade-card>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "ticketDistribution",
+  data() {
+    return {
+      form: {},
+      formCreate: false,
+      formBox: {},
+      shippingBillList: [],
+      optionBox: {},
+      optionBoxBack: {
+        align: 'center',
+        index: true,
+        addBtnText: "录入明细",
+        refreshBtn: false,
+        dialogDrag: true,
+        addBtn: false,
+        span: 8,
+        height: 600,
+        selection: true,
+        addRowBtn: false,
+        cellBtn: false,
+        editBtn: false,
+        delBtn: false,
+        menuWidth: 100,
+        dialogTop: 25,
+        dialogWidth: "80%",
+        showSummary: true,
+        sumColumnList: [{
+          name: 'emptyWeight',
+          type: 'sum',
+          decimals: 2
+        }],
+        column: [{
+          label: '提单号',
+          prop: 'boxQuantity',
+          width: 100,
+          overHidden: true
+        },{
+          label: '分单号',
+          prop: 'boxQuantity',
+          width: 100,
+          overHidden: true
+        },{
+          label: '签单方式',
+          prop: 'boxQuantity',
+          width: 100,
+          overHidden: true
+        },{
+          label: '服务条款',
+          prop: 'boxQuantity',
+          width: 100,
+          overHidden: true
+        },{
+          label: '件数',
+          prop: 'boxQuantity',
+          width: 100,
+          overHidden: true
+        },{
+          label: '重量',
+          prop: 'boxQuantity',
+          width: 100,
+          overHidden: true
+        },{
+          label: '尺码',
+          prop: 'boxQuantity',
+          width: 100,
+          overHidden: true
+        },{
+          label: '起运港',
+          prop: 'boxQuantity',
+          width: 100,
+          overHidden: true
+        },{
+          label: '目的港',
+          prop: 'boxQuantity',
+          width: 100,
+          overHidden: true
+        },{
+          label: '船名',
+          prop: 'boxQuantity',
+          width: 100,
+          overHidden: true
+        },{
+          label: '航次',
+          prop: 'boxQuantity',
+          width: 100,
+          overHidden: true
+        },{
+          label: '开船日期',
+          prop: 'boxQuantity',
+          width: 100,
+          overHidden: true
+        },{
+          label: '唛头',
+          prop: 'boxQuantity',
+          width: 100,
+          overHidden: true
+        }, {
+          label: '货描',
+          prop: 'boxQuantity',
+          width: 100,
+          overHidden: true
+        }]
+      }
+    }
+  },
+  props: {
+    value: {
+      type: Object,
+      required: true,
+      default: () => {
+        return {};
+      }
+    }
+  },
+  model: {
+    prop: "value",
+    event: "callBack"
+  },
+  watch: {
+    value: {
+      handler(val) {
+        if (this.formCreate) {
+          this.form = Object.assign(this.value, {});
+        } else {
+          this.form = Object.assign(this.value, val || {});
+        }
+      },
+      deep: true,
+      immediate: true
+    },
+    form: {
+      handler(val) {
+        if (this.formCreate) this.setVal();
+      },
+      deep: true
+    }
+  },
+  async created() {
+    this.$nextTick(() => {
+      this.formCreate = true;
+    })
+    this.optionBox = await this.getColumnData(this.getColumnName(254.5), this.optionBoxBack);
+  },
+  methods: {
+    setVal() {
+      this.$emit("callBack", this.form);
+    },
+    rowSave(form, done, loading) {
+      done(form)
+    },
+    rowUpdate(form, index, done, loading) {
+      done(form)
+    },
+    //自定义列保存
+    async saveColumnTwo(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 resetColumnTwo(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>
+</style>

+ 425 - 0
src/views/oceanShipping/oceanFreightImport/detailsPage.vue

@@ -0,0 +1,425 @@
+<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="backToList(0)">返回列表
+        </el-button>
+      </div>
+      <div class="add-customer-btn">
+        <!--        <el-button class="el-button&#45;&#45;small-yh" style="margin-right: 10px" type="primary" size="small" v-if="!editButton"-->
+        <!--                   @click="confirmEditing">编辑-->
+        <!--        </el-button>-->
+        <el-button
+            class="el-button--small-yh"
+            type="primary"
+            size="small"
+            @click="editCustomer">保存数据
+        </el-button>
+      </div>
+    </div>
+    <el-tabs style="height: 0;top: 84px" class="customer-head" type="border-card" v-model="activeName">
+      <el-tab-pane label="接单信息" name="entrust"></el-tab-pane>
+      <!--<el-tab-pane label="订舱信息" name="booking"></el-tab-pane>-->
+      <!--<el-tab-pane label="业务账单" name="business_bill"></el-tab-pane>-->
+      <!--<el-tab-pane label="分单内容" name="split_content"></el-tab-pane>-->
+      <!--<el-tab-pane label="分箱明细" name="packing_details"></el-tab-pane>-->
+      <!--<el-tab-pane label="分票列表" name="ticket_distribution"></el-tab-pane>-->
+      <!--<el-tab-pane label="附件" name="appendix"></el-tab-pane>-->
+      <!--<el-tab-pane label="财务账单" name="fourth"></el-tab-pane>-->
+      <!--<el-tab-pane label="提单管理" name="fourth"></el-tab-pane>-->
+      <!--<el-tab-pane label="EDI" name="fourth"></el-tab-pane>-->
+      <!--<el-tab-pane label="场站数据" name="fourth"></el-tab-pane>-->
+      <!--<el-tab-pane label="危险品申报" name="fourth"></el-tab-pane>-->
+    </el-tabs>
+    <div style="margin-top: 90px">
+      <div v-if="activeName === 'entrust'">
+        <entrustment-information ref="entrust" v-model="form"></entrustment-information>
+      </div>
+      <div v-if="activeName === 'booking'">
+        <booking-information ref="booking" v-model="form"></booking-information>
+      </div>
+      <div v-if="activeName === 'business_bill'">
+        <business-bill ref="business_bill" v-model="form"></business-bill>
+      </div>
+      <div v-if="activeName === 'split_content'">
+        <split-content ref="split_content" v-model="form"></split-content>
+      </div>
+      <div v-if="activeName === 'packing_details'">
+        <packing-details ref="packing_details" v-model="form"></packing-details>
+      </div>
+      <div v-if="activeName === 'ticket_distribution'">
+        <ticket-distribution ref="ticket_distribution" v-model="form"></ticket-distribution>
+      </div>
+      <div v-if="activeName === 'appendix'">
+        <appendix ref="appendix" v-model="form"></appendix>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import {
+  detail,
+  submit,
+  found
+} from "@/api/oceanShipping/maritimeExport/index.js";
+import entrustmentInformation from './components/entrustmentInformation.vue'
+import bookingInformation from './components/bookingInformation.vue'
+import businessBill from './components/businessBill.vue'
+import splitContent from './components/splitContent.vue'
+import packingDetails from './components/packingDetails.vue'
+import ticketDistribution from './components/ticketDistribution.vue'
+import appendix from './components/appendix.vue'
+
+export default {
+  name: "detailsPage",
+  props: {
+    onLoad: Object,
+    detailData: Object
+  },
+  components: {
+    entrustmentInformation,
+    bookingInformation,
+    businessBill,
+    splitContent,
+    packingDetails,
+    ticketDistribution,
+    appendix
+  },
+  data() {
+    return {
+      activeName: 'entrust',
+      editButton: false,
+      disabled: false,
+      form: {
+        shippingMatchBoxList: [],
+        shippingMatchBoxFollowList: [],
+        shippingFeesList: [],
+        shippingFileList: [],
+        shippingBillList: [],
+        shippingBillDetails: {}
+      },
+      optionForm: {
+        menuBtn: false,
+        span: 6,
+        column: [{
+          label: '客户名称',
+          span: 12,
+          prop: 'corpId'
+        }, {
+          label: '客户电话',
+          prop: 'telephone'
+        }, {
+          label: '邮箱',
+          prop: 'postbox'
+        }, {
+          label: '船公司',
+          span: 12,
+          prop: 'shippingCompanyId'
+        }, {
+          label: '船期',
+          prop: 'sailDate',
+          type: "date",
+          format: "yyyy-MM-dd",
+          valueFormat: "yyyy-MM-dd HH:mm:ss",
+        }, {
+          label: '订舱代理',
+          prop: 'bookingAgentId',
+          filterable: true,
+          type: 'select',
+          dicUrl: "/api/blade-client/corpsdesc/oceanCorpsList?corpsTypeName=订舱代理",
+          props: {
+            label: "cname",
+            value: "id"
+          }
+        }, {
+          label: '起运港',
+          prop: 'loadingPortName'
+        }, {
+          label: '目的港',
+          prop: 'destinationName'
+        }, {
+          label: '航线',
+          prop: 'route',
+          type: "select",
+          slot: true,
+          dicUrl: "/api/blade-system/dict-biz/dictionary?code=ocean_route",
+          props: {
+            label: "dictValue",
+            value: "dictKey"
+          },
+          overHidden: true
+        }, {
+          label: '订舱状态',
+          prop: 'bookingStatus',
+          type: "select",
+          slot: true,
+          dicUrl: "/api/blade-system/dict-biz/dictionary?code=booking_space_status",
+          props: {
+            label: "dictValue",
+            value: "dictKey"
+          },
+          overHidden: true
+        }, {
+          label: '备注',
+          prop: 'remarks',
+          type: 'textarea',
+          span: 24,
+          minRows: 2,
+        }]
+      },
+      optionFormTwo: {
+        menuBtn: false,
+        span: 6,
+        column: [
+          {
+            label: '系统编号',
+            prop: 'sysNo',
+            disabled: true
+          }, {
+            label: '部门',
+            prop: 'deptId',
+            type: 'tree',
+            props: {
+              label: 'title',
+              value: 'value'
+            },
+            dicUrl: '/api/blade-system/dept/tree'
+          }, {
+            label: '单据类型',
+            prop: 'documentType'
+          }, {
+            label: '业务类型',
+            prop: 'businessType',
+            overHidden: true,
+            filterable: true,
+            type: 'select',
+            dicUrl: "/api/blade-system/dict-biz/dictionary?code=ocean_business_type",
+            props: {
+              label: "dictValue",
+              value: "dictKey"
+            }
+          }, {
+            label: '业务来源',
+            prop: 'businessSource',
+            overHidden: true,
+            filterable: true,
+            type: 'select',
+            cascader: ['sourceId'],
+            dicUrl: "/api/blade-system/dict-biz/dictionary?code=ocean_business_source",
+            props: {
+              label: "dictValue",
+              value: "dictKey"
+            }
+          }, {
+            label: '来源',
+            prop: 'sourceId',
+            overHidden: true,
+            filterable: true,
+            type: 'select',
+            dicUrl: "/api/blade-client/corpsdesc/oceanCorpsList?corpsTypeName={{key}}",
+            props: {
+              label: "cname",
+              value: "id"
+            }
+          }, {
+            label: '货物类型',
+            prop: 'goodsType',
+            type: "select",
+            dicUrl: "/api/blade-system/dict-biz/dictionary?code=ocean_goods_type",
+            props: {
+              label: "dictValue",
+              value: "dictKey"
+            },
+            overHidden: true
+          }, {
+            label: '操作员',
+            prop: 'operatorId',
+            filterable: true,
+            remote: true,
+            type: "select",
+            dicUrl: "/api/blade-user/page?size=20&current=1&account={{key}}",
+            props: {
+              label: "account",
+              value: "id",
+              res: 'data.records'
+            },
+            change: (data) => {
+              if (data.value) {
+                for (let item of this.$refs.formTwo.DIC.operatorId || []) {
+                  if (data.value === item.id) {
+                    this.shippingBillDetails.accountingDeptId = item.deptId
+                  }
+                }
+              }
+            }
+          }, {
+            label: '客服员',
+            prop: 'customerServiceId',
+            filterable: true,
+            remote: true,
+            type: "select",
+            dicUrl: "/api/blade-user/page?size=20&current=1&account={{key}}",
+            props: {
+              label: "account",
+              value: "id",
+              res: 'data.records'
+            },
+            change: (data) => {
+              if (data.value) {
+                for (let item of this.$refs.formTwo.DIC.customerServiceId || []) {
+                  if (data.value === item.id) {
+                    this.formTwo.customerServiceName = item.account
+                  }
+                }
+              }
+            }
+          }, {
+            label: '装运方式',
+            prop: 'shipmentMode',
+            overHidden: true,
+            filterable: true,
+            type: 'select',
+            dicUrl: "/api/blade-system/dict-biz/dictionary?code=ocean_shipment_mode",
+            props: {
+              label: "dictValue",
+              value: "dictKey"
+            }
+          }
+        ]
+      }
+    }
+  },
+  async created() {
+    if (this.onLoad.id && this.detailData.id) {
+      this.refresh(this.onLoad.id, true)
+    } else if (this.onLoad.id) {
+      this.refresh(this.onLoad.id, true)
+    } else {
+      found({billType: "HYJK"}).then(res => {
+        this.form = res.data.data
+      })
+    }
+  },
+  methods: {
+    //刷新数据
+    refresh(id, type) {
+      const loading = this.$loading({
+        lock: true,
+        text: '加载中',
+        spinner: 'el-icon-loading',
+        background: 'rgba(255,255,255,0.7)'
+      })
+      detail({id: id}).then(res => {
+        this.form = res.data.data
+        loading.close();
+        this.limit(type)
+      }).catch(() => {
+        loading.close();
+      })
+    },
+    //保存数据
+    editCustomer() {
+      let data = ["entrust", "booking", "business_bill", "split_content"]
+      if (data.includes(this.activeName)) {
+        this.$refs[this.activeName].$refs["form"].validate((valid, done) => {
+          done()
+          if (valid) {
+            let form = {
+              ...this.form,
+              billType: "HYJK",
+              tradeType: "HY"
+            }
+            const loading = this.$loading({
+              lock: true,
+              text: '加载中',
+              spinner: 'el-icon-loading',
+              background: 'rgba(255,255,255,0.7)'
+            });
+            submit(form).then(res => {
+              this.$message.success("保存成功")
+              loading.close()
+              this.refresh(res.data.data.id)
+            }).catch(() => {
+              loading.close()
+            })
+          }
+        })
+      } else {
+        let form = {
+          ...this.form,
+          billType: "HYJK",
+          tradeType: "HY"
+        }
+        const loading = this.$loading({
+          lock: true,
+          text: '加载中',
+          spinner: 'el-icon-loading',
+          background: 'rgba(255,255,255,0.7)'
+        });
+        submit(form).then(res => {
+          this.$message.success("保存成功")
+          loading.close()
+          this.refresh(res.data.data.id)
+        }).catch(() => {
+          loading.close()
+        })
+      }
+    },
+    //自定义列保存
+    async saveColumnTwo(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 resetColumnTwo(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.limit()
+      }
+    },
+    backToList(type) {
+      this.$emit("backToList", type);
+    }
+  }
+}
+</script>
+
+<style scoped>
+::v-deep .el-form-item {
+    margin-bottom: 5px !important;
+}
+
+::v-deep .el-tabs__content {
+    display: none !important;
+}
+
+::v-deep .el-tabs__item {
+    font-size: 12px;
+}
+
+::v-deep .el-tabs__item {
+    color: #000 !important;
+}
+
+::v-deep .el-tabs__item .is-active {
+    color: #409EFF !important;
+}
+
+::v-deep .el-form-item__label {
+    color: #409EFF !important;
+}
+</style>

+ 544 - 0
src/views/oceanShipping/oceanFreightImport/index.vue

@@ -0,0 +1,544 @@
+<template>
+  <div>
+    <basic-container v-show="!detailsOpen">
+      <avue-crud
+          :option="option"
+          :search.sync="search"
+          v-model="form"
+          :table-loading="loading"
+          :data="dataList"
+          ref="crud"
+          :key="key"
+          @on-load="onLoad"
+          @search-change="searchChange"
+          @row-del="rowDel"
+          @refresh-change="refreshChange"
+          @resetColumn="resetColumnTwo('crud','option','optionList',255)"
+          @saveColumn="saveColumnTwo('crud','option','optionList',255)"
+          :page.sync="page">
+        <template slot-scope="{type,size,row,index}" slot="menu">
+          <el-button icon="el-icon-view" :size="size" :type="type" @click="check(row)">查看</el-button>
+          <el-button icon="el-icon-delete" :size="size" :type="type" @click="$refs.crud.rowDel(row,index)">
+            删除
+          </el-button>
+        </template>
+        <template slot="corpNameSearch">
+          <crop-select v-model="search.corpId" corpType="KH" :refresh="false"></crop-select>
+        </template>
+        <template slot="shippingCompanyNameSearch">
+          <crop-select v-model="search.shippingCompanyId" corpType="KH" :refresh="false"></crop-select>
+        </template>
+        <template slot-scope="scope" slot="bookingAgentSearch">
+          <crop-select v-model="search.bookingAgentId" corpType="KH" :refresh="false"></crop-select>
+        </template>
+        <template slot-scope="{type,size,row,$index}" slot="menuLeft">
+          <el-button icon="el-icon-plus" type="primary" :size="size" @click="detailsOpen = true">创建单据</el-button>
+<!--          <el-button class="el-icon-document-copy" type="success" size="small">复制单据</el-button>-->
+          <el-button class="el-icon-download" type="warning" size="small" @click="outExport">导出</el-button>
+        </template>
+      </avue-crud>
+    </basic-container>
+    <detailsPage v-if="detailsOpen" :onLoad="form" :detailData="detailData" @backToList="backToList"></detailsPage>
+  </div>
+</template>
+
+<script>
+import {getList, remove} from "@/api/oceanShipping/maritimeExport/index.js";
+import detailsPage from "./detailsPage"
+import {getToken} from "@/util/auth";
+
+export default {
+  name: "index",
+  components: {
+    detailsPage
+  },
+  data() {
+    return {
+      detailsOpen: false,
+      loading: false,
+      search: {},
+      form: {},
+      dataList: [],
+      detailData: {},
+      page: {
+        pageSize: 20,
+        currentPage: 1,
+        total: 0,
+        pageSizes: [10, 20, 30, 40, 50, 100, 200, 300, 400, 500]
+      },
+      key:0,
+      option: {},
+      optionList: {
+        viewBtn: false,
+        editBtn: false,
+        delBtn: false,
+        addBtn: false,
+        index: true,
+        span: 8,
+        border: true,
+        height:"auto",
+        searchMenuPosition: "right",
+        align: "center",
+        menuWidth:140,
+        searchSpan: 8,
+        searchIcon: true,
+        searchIndex: 2,
+        highlightCurrentRow: true,
+        dialogWidth: "70%",
+        showSummary: true,
+        sumColumnList: [{
+          name: 'boxNumber',
+          type: 'sum',
+          decimals:0
+        },{
+          name: 'totalAmount',
+          type: 'sum',
+          decimals:2
+        }],
+        column: [{
+          label: '客户',
+          prop: "corpName",
+          width: 220,
+          search: true,
+          overHidden: true,
+        }, {
+          label: '单据类型',
+          prop: 'documentType',
+          width: 100,
+          overHidden: true,
+        }, {
+          label: '所属公司',
+          prop: "affiliatedCompanyName",
+          width: 100,
+          overHidden: true,
+        }, {
+          label: '系统编号',
+          prop: 'sysNo',
+          width: 100,
+          search: true,
+          overHidden: true,
+        }, {
+          label: '主提单号',
+          prop: 'mainBillNo',
+          width: 100,
+          search: true,
+          overHidden: true,
+        }, {
+          label: '提单号状态',
+          prop: 'billStatus',
+          width: 100,
+          overHidden: true,
+          filterable: true,
+          type: 'select',
+          dicUrl: "/api/blade-system/dict-biz/dictionary?code=ocean_bill_status",
+          props: {
+            label: "dictValue",
+            value: "dictKey"
+          }
+        }, {
+          label: '船名',
+          prop: 'shipId',
+          width: 100,
+          search: true,
+          overHidden: true,
+          cascader: ['voyageNumberId'],
+          type: "select",
+          dicUrl: "/api/blade-box-tube/shippingvessel/listAll",
+          props: {
+            label: "name",
+            value: "id",
+          }
+        }, {
+          label: '航次',
+          prop: 'voyageNumber',
+          searchProp: 'voyageNumberId',
+          type: "select",
+          dicUrl: "/api/blade-box-tube/shippingvessel/listAllByVoyage?pid={{key}}",
+          props: {
+            label: "no",
+            value: "id",
+          },
+          width: 100,
+          search: true,
+          overHidden: true,
+        }, {
+          label: '航线',
+          prop: 'route',
+          width: 100,
+          search: true,
+          overHidden: true,
+        }, {
+          label: '开船日期',
+          prop: 'sailDate',
+          searchProp: 'sailDateList',
+          width: 100,
+          search: true,
+          showColumn:false,
+          overHidden: true,
+          type: "date",
+          searchRange: true,
+          searchDefaultTime: ["00:00:00", "23:59:59"],
+          format: "yyyy-MM-dd",
+          valueFormat: "yyyy-MM-dd HH:mm:ss"
+        }, {
+          label: '实际开船',
+          prop: 'actualSailDate',
+          searchProp: 'actualSailDateList',
+          width: 100,
+          search: true,
+          showColumn:false,
+          overHidden: true,
+          type: "date",
+          searchRange: true,
+          searchDefaultTime: ["00:00:00", "23:59:59"],
+          format: "yyyy-MM-dd",
+          valueFormat: "yyyy-MM-dd HH:mm:ss"
+        }, {
+          label: '装货港',
+          prop: 'loadingPortName',
+          width: 100,
+          overHidden: true,
+        }, {
+          label: '目的地',
+          prop: 'destinationName',
+          width: 100,
+          overHidden: true,
+        }, {
+          label: '交货地',
+          prop: 'deliveryAddressName',
+          width: 100,
+          overHidden: true,
+        }, {
+          label: '箱型箱量',
+          prop: 'shippingBoxTypeNumber',
+          width: 100,
+          overHidden: true,
+        }, {
+          label: 'TEU',
+          prop: 'shippingBoxTypeTEU',
+          width: 100,
+          overHidden: true,
+        }, {
+          label: '分提单号',
+          prop: 'branchBillNo',
+          width: 100,
+          search: true,
+          overHidden: true,
+        }, {
+          label: '业务来源',
+          prop: 'businessSource',
+          search: true,
+          width: 100,
+          overHidden: true,
+          filterable: true,
+          type: 'select',
+          dicUrl: "/api/blade-system/dict-biz/dictionary?code=ocean_business_source",
+          props: {
+            label: "dictValue",
+            value: "dictKey"
+          }
+        }, {
+          label: '船公司',
+          prop: 'shippingCompanyName',
+          width: 100,
+          search: true,
+          overHidden: true,
+        }, {
+          label: '场站',
+          prop: 'station',
+          width: 100,
+          search: true,
+          overHidden: true,
+        }, {
+          label: '订舱代理',
+          prop: 'bookingAgentName',
+          width: 100,
+          search: true,
+          overHidden: true,
+        }, {
+          label: '签单方式',
+          prop: 'signingMethod',
+          width: 100,
+          search: true,
+          overHidden: true,
+          filterable: true,
+          type: 'select',
+          dicUrl: "/api/blade-system/dict-biz/dictionary?code=ocean_signing_method",
+          props: {
+            label: "dictValue",
+            value: "dictKey"
+          }
+        }, {
+          label: '费用请核状态',
+          prop: 'feeStatus',
+          width: 100,
+          overHidden: true,
+        }, {
+          label: '审核状态',
+          prop: 'status',
+          width: 100,
+          overHidden: true,
+        }, {
+          label: '应收外币',
+          prop: 'receivableUSD',
+          width: 100,
+          overHidden: true,
+        }, {
+          label: '应收RMB',
+          prop: 'receivableRMB',
+          width: 100,
+          overHidden: true,
+        }, {
+          label: '应付外币',
+          prop: 'payUSD',
+          width: 100,
+          overHidden: true,
+        }, {
+          label: '应付RMB',
+          prop: 'payUSD',
+          width: 100,
+          overHidden: true,
+        }, {
+          label: '利润外币',
+          prop: 'profitUSD',
+          width: 100,
+          overHidden: true,
+        }, {
+          label: '利润RMB',
+          prop: 'profitRMB',
+          width: 100,
+          overHidden: true,
+        }, {
+          label: '利润合计',
+          prop: 'profitTotal',
+          width: 100,
+          overHidden: true,
+        }, {
+          label: '件数',
+          prop: 'number',
+          width: 100,
+          overHidden: true,
+        }, {
+          label: '包装',
+          prop: 'packing',
+          width: 100,
+          overHidden: true,
+        }, {
+          label: '重量',
+          prop: 'weight',
+          width: 100,
+          overHidden: true,
+        }, {
+          label: '尺码',
+          prop: 'size',
+          width: 100,
+          overHidden: true,
+        }, {
+          label: '发货人',
+          prop: 'consignorName',
+          width: 100,
+          overHidden: true,
+        }, {
+          label: '收货人',
+          prop: 'consigneeName',
+          width: 100,
+          overHidden: true,
+        }, {
+          label: '通知人',
+          prop: 'notifierName',
+          width: 100,
+          overHidden: true,
+        },{
+          label: "制单人",
+          prop: "createUserName",
+          searchProp:"createUser",
+          overHidden: true,
+          width: 100,
+          filterable: true,
+          remote: true,
+          type: "select",
+          dicUrl: "/api/blade-user/page?size=20&current=1&account={{key}}",
+          props: {
+            label: "account",
+            value: "id",
+            res: 'data.records'
+          }
+        }, {
+          label: "制单日期",
+          prop: "createTime",
+          searchProp:"createTimeList",
+          type: "date",
+          overHidden: true,
+          width: 200,
+          searchRange: true,
+          searchDefaultTime: ["00:00:00", "23:59:59"],
+          format: "yyyy-MM-dd",
+          valueFormat: "yyyy-MM-dd HH:mm:ss"
+        }, {
+          label: "更新人",
+          prop: "updateUserName",
+          searchProp:"updateUser",
+          overHidden: true,
+          width: 100,
+          filterable: true,
+          remote: true,
+          type: "select",
+          dicUrl: "/api/blade-user/page?size=20&current=1&account={{key}}",
+          props: {
+            label: "account",
+            value: "id",
+            res: 'data.records'
+          }
+        }, {
+          label: "更新日期",
+          prop: "updateTime",
+          searchProp:"updateTimeList",
+          type: "date",
+          overHidden: true,
+          width: 200,
+          searchRange: true,
+          searchDefaultTime: ["00:00:00", "23:59:59"],
+          format: "yyyy-MM-dd",
+          valueFormat: "yyyy-MM-dd HH:mm:ss"
+        }]
+      }
+    }
+  },
+  activated() {
+    if (this.$route.query.check) {
+      this.detailsOpen = false
+      this.detailData = {
+        id: this.$route.query.check.billId,
+        check: this.$route.query.check,
+      };
+      this.form = {
+        id:this.$route.query.check.billId
+      }
+      this.detailsOpen = true
+      this.$store.commit("DOMXS_OPEN_EXPORT_DETAIL");
+      // this.$router.$avueRouter.closeTag(window.location.hash.slice(1))
+    }
+  },
+  async created() {
+    this.option = await this.getColumnData(this.getColumnName(255), this.optionList);
+    this.key++
+    let i = 0;
+    this.option.column.forEach(item => {
+      if (item.search) i++
+    })
+    if (i % 3 !== 0) {
+      const num = 3 - Number(i % 3)
+      this.option.searchMenuSpan = num * 8;
+      this.option.searchMenuPosition = "right";
+    }
+  },
+  methods: {
+    check(row){
+      this.form = row
+      this.detailsOpen = true
+    },
+    backToList(type) {
+      this.form = {}
+      this.detailsOpen = false
+      if (type === 0){
+        this.detailData = {}
+      }
+      this.onLoad(this.page,this.search)
+    },
+    //刷新
+    refreshChange() {
+      this.onLoad(this.page, this.search)
+    },
+    rowDel(form, index) {
+      this.$confirm('此操作将永久删除该行, 是否继续?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        remove(form.id).then(res => {
+          this.$message({
+            type: 'success',
+            message: '删除成功!'
+          });
+          this.dataList.splice(index, 1);
+          this.onLoad(this.page)
+        })
+      }).catch(() => {
+      });
+    },
+    searchChange(params, done) {
+      done();
+      this.onLoad(this.page, params)
+    },
+    onLoad(page, params = {}) {
+      params = {
+        ...params,
+        current: page.currentPage,
+        size: page.pageSize,
+        billType:"HYJK",
+        ...Object.assign(params, this.search)
+      }
+      this.loading = true
+      getList(params).then(res => {
+        this.dataList = res.data.data.records
+        this.page.total = res.data.data.total
+        this.loading = false
+      }).finally(() => {
+        this.loading = false
+      })
+    },
+    outExport() {
+      let config = {params: {...this.search}}
+      if (config.params) {
+        for (const propName of Object.keys(config.params)) {
+          const value = config.params[propName];
+          if (value !== null && typeof (value) !== "undefined") {
+            if (value instanceof Array) {
+              for (const key of Object.keys(value)) {
+                let params = propName + '[' + key + ']';
+                config.params[params] = value[key]
+              }
+              delete config.params[propName]
+            }
+          }
+        }
+      }
+      const routeData = this.$router.resolve({
+        path: '/api/blade-box-tube/shippingbill/export',      //跳转目标窗口的地址
+        query: {
+          ...config.params,    //括号内是要传递给新窗口的参数
+          billType:"HYJK"
+        }
+      })
+      window.open(routeData.href.slice(1, routeData.href.length) + '&' + `${this.website.tokenHeader}=${getToken()}`);
+    },
+    //自定义列保存
+    async saveColumnTwo(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 resetColumnTwo(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>
+
+</style>

+ 4 - 4
src/views/purchaseOrder/detailsPage.vue

@@ -16,10 +16,10 @@
           <el-button type="primary" size="small" v-if="!form.id && detailData.status != 1" @click="editCustomer">
             保存数据
           </el-button>
-          <el-button type="primary" size="small" v-if="form.id && detailData.status != 1 && form.confirmStatus == 0"
-            @click="fixSave">
-            保存数据
-          </el-button>
+          <!--<el-button type="primary" size="small" v-if="form.id && detailData.status != 1 && form.confirmStatus == 0"-->
+          <!--  @click="fixSave">-->
+          <!--  保存数据-->
+          <!--</el-button>-->
           <el-button type="primary" size="small" v-if="form.id && detailData.status != 1 && form.confirmStatus == 0"
             @click="submit">
             提交

+ 22 - 22
src/views/purchaseOrder/index.vue

@@ -30,12 +30,6 @@
           <!-- <el-tooltip class="item" effect="dark" content="新建采购订单" placement="top">
             <i class="tradingIcon icon-add" />
           </el-tooltip>
-          <el-tooltip class="item" effect="dark" content="删除" placement="top">
-            <i class="tradingIcon icon-del" />
-          </el-tooltip>
-          <el-tooltip class="item" effect="dark" content="编辑" placement="top">
-            <i class="tradingIcon icon-edit" />
-          </el-tooltip>
           <el-tooltip class="item" effect="dark" content="付款" placement="top">
             <i class="tradingIcon icon-proceeds" />
           </el-tooltip>
@@ -45,12 +39,18 @@
           <el-tooltip class="item" effect="dark" content="对账" placement="top">
             <i class="tradingIcon icon-reconciliation" />
           </el-tooltip> -->
-          <!-- <el-button type="text" size="small" @click.stop="editOpen(row, 2)">
-            查看
-          </el-button>
-          <el-button type="text" size="small" @click.stop="rowDel(row, index)">
-            删除
-          </el-button> -->
+          <el-tooltip class="item" effect="dark" content="编辑" placement="top">
+            <i class="tradingIcon icon-edit" @click.stop="editOpen(row, 2)"/>
+          </el-tooltip>
+          <el-tooltip class="item" effect="dark" content="删除" placement="top">
+            <i class="tradingIcon icon-del" v-if="row.confirmStatus == 0" @click.stop="rowDel(row, index)"/>
+          </el-tooltip>
+          <!--<el-button type="text" size="small" @click.stop="editOpen(row, 2)">-->
+          <!--  查看-->
+          <!--</el-button>-->
+          <!--<el-button type="text" size="small" v-if="row.confirmStatus == 0" @click.stop="rowDel(row, index)">-->
+          <!--  删除-->
+          <!--</el-button>-->
         </template>
       </avue-crud>
     </basic-container>
@@ -61,7 +61,7 @@
 <script>
 import detailsPage from "./detailsPage";
 import { option } from "./js/optionList";
-import { getList, getCorpsAll, gainUser,getCorpType} from "@/api/basicData/salesOrder";
+import {getList, getCorpsAll, gainUser, getCorpType, orderRemove} from "@/api/basicData/salesOrder";
 export default {
   name: "index",
   data() {
@@ -249,15 +249,15 @@ export default {
         cancelButtonText: "取消",
         type: "warning"
       }).then(() => {
-        // remove(row.id).then(res => {
-        //   if (res.data.code == 200) {
-        //     this.$message({
-        //       type: "success",
-        //       message: "删除成功!"
-        //     });
-        //     this.onLoad(this.page, this.search);
-        //   }
-        // });
+        orderRemove(row.id).then(res => {
+          if (res.data.code == 200) {
+            this.$message({
+              type: "success",
+              message: "删除成功!"
+            });
+            this.onLoad(this.page, this.search);
+          }
+        });
       });
     },
     async saveColumn() {

+ 1 - 1
src/views/purchaseOrder/js/optionList.js

@@ -12,7 +12,7 @@ export const option = {
   viewBtn: false,
   editBtn: false,
   delBtn: false,
-  menu: false,
+  menu: true,
   menuWidth: 150,
   searchIcon: true,
   searchIndex: 2,

+ 4 - 4
src/views/salesOrder/detailsPage.vue

@@ -20,10 +20,10 @@
           <el-button type="primary" size="small" v-if="!form.id && detailData.status != 1" @click="editCustomer">
             保存数据
           </el-button>
-          <el-button type="primary" size="small" v-if="form.id && detailData.status != 1 && form.confirmStatus == 0"
-                     @click="fixSave">
-            保存数据
-          </el-button>
+          <!--<el-button type="primary" size="small" v-if="form.id && detailData.status != 1 && form.confirmStatus == 0"-->
+          <!--           @click="fixSave">-->
+          <!--  保存数据-->
+          <!--</el-button>-->
           <el-button type="primary" size="small" v-if="form.id && detailData.status != 1 && form.confirmStatus == 0"
             @click="submit">
             提交

+ 2 - 2
vue.config.js

@@ -32,9 +32,9 @@ module.exports = {
       '/api': {
         //本地服务接口地址
         // target: 'http://192.168.3.64:1080',
-        target: 'http://192.168.0.106:1080',
+        // target: 'http://192.168.0.106:1080',
         // 打包地址
-        // target: 'http://121.37.83.47:10004',//服务器ip
+        target: 'http://121.37.83.47:10004',//服务器ip
         // target: 'http://trade.tubaosoft.com:10004',//服务器域名
         ws: true,
         pathRewrite: {