Kaynağa Gözat

1.箱管模块费用明细,去掉账单状态
2.海运进口导入费用模板,去掉收/付
3.经常出货的同一个订单, 要有保存为模板.方便以后直接调取订舱
4.客户端在提交订舱后,未出号前, 可以自由撤单, 但出号后如有撤单/增减箱量,应在客服端/OP端显示,且建议用不同颜色字体提示客服或OP ,操作或者客户确认后 有效

Qukatie 5 ay önce
ebeveyn
işleme
240407e342
25 değiştirilmiş dosya ile 904 ekleme ve 271 silme
  1. 20 0
      src/api/iosBasicData/ReceivingOrders/precontainers.js
  2. 36 0
      src/api/iosBasicData/businessCenter/bookingCabin.js
  3. 14 14
      src/views/boxManagement/agentBox/detailsPage.vue
  4. 14 14
      src/views/boxManagement/boxAdjustment/detailsPage.vue
  5. 28 28
      src/views/boxManagement/boxCost/detailsPage.vue
  6. 14 14
      src/views/boxManagement/boxExit/detailsPage.vue
  7. 14 14
      src/views/boxManagement/rentalBox/detailsPage.vue
  8. 1 1
      src/views/iosBasicData/OceanFreightImport/bills/assembly/EntrustmentLnformation.vue
  9. 6 6
      src/views/iosBasicData/OceanFreightImport/bills/billsDetails.vue
  10. 0 4
      src/views/iosBasicData/OceanFreightImport/bills/index.vue
  11. 15 2
      src/views/iosBasicData/PaymentApplication/assembly/searchPopup.vue
  12. 14 2
      src/views/iosBasicData/PaymentApplication/finstlbillsDetails.vue
  13. 182 0
      src/views/iosBasicData/SeafreightExportF/bills/assembly/EntrustmentLnformation/components/importTemp.vue
  14. 12 2
      src/views/iosBasicData/SeafreightExportF/bills/assembly/EntrustmentLnformation/precontainers.vue
  15. 19 0
      src/views/iosBasicData/SeafreightExportF/bills/index.vue
  16. 209 0
      src/views/iosBasicData/businessCenter/customerBooking/components/importTemp.vue
  17. 213 89
      src/views/iosBasicData/businessCenter/customerBooking/detailsPage.vue
  18. 21 9
      src/views/iosBasicData/businessCenter/customerBooking/index.vue
  19. 10 10
      src/views/iosBasicData/costcenter/soc/detailsPage.vue
  20. 2 2
      src/views/iosBasicData/fininvoices/fininvoicesDetails.vue
  21. 3 3
      src/views/iosBasicData/fininvoicesApplyfor/fininvoicesDetails.vue
  22. 2 2
      src/views/iosBasicData/fininvoicesOutput/fininvoicesDetails.vue
  23. 4 4
      src/views/iosBasicData/finstlbills/assembly/finstlbillsitems.vue
  24. 28 28
      src/views/ow/owPut/detailsPage.vue
  25. 23 23
      src/views/ow/owTask/detailsPage.vue

+ 20 - 0
src/api/iosBasicData/ReceivingOrders/precontainers.js

@@ -68,4 +68,24 @@ export const revokeSelectedContainerNumber = (row) => {
     method: 'get',
     params:row
   })
+}
+//海运出口-提取订舱箱型列表
+export const synchronousBoxType = (row) => {
+  return request({
+    url: '/api/blade-los/bills/synchronousBoxType',
+    method: 'get',
+    params:row
+  })
+}
+//海运出口-确认箱型
+export const precontainers = (current, size, params) => {
+  return request({
+    url: '/api/blade-los/precontainers/list',
+    method: 'get',
+    params: {
+      ...params,
+      current,
+      size,
+    }
+  })
 }

+ 36 - 0
src/api/iosBasicData/businessCenter/bookingCabin.js

@@ -142,4 +142,40 @@ export const getBCorps = (data) => {
         method: 'get',
         params: data
     })
+}
+// 订舱常用模板保存
+export function submitCommonTemplates(data) {
+    return request({
+        url: '/api/blade-los/bookingCabin/submitCommonTemplates',
+        method: 'post',
+        data: data
+    })
+}
+// 获取订舱模板列表
+export const listTemplates = (current, size, params) => {
+    return request({
+        url: '/api/blade-los/bookingCabin/listTemplates',
+        method: 'get',
+        params: {
+            ...params,
+            current,
+            size,
+        }
+    })
+}
+// 订舱-提交箱型
+export function submitBoxType(data) {
+    return request({
+        url: '/api/blade-los/bookingCabin/submitBoxType',
+        method: 'get',
+        params: data
+    })
+}
+// 客户订舱-退舱
+export function refundCabin(data) {
+    return request({
+        url: '/api/blade-los/bookingCabin/refundCabin',
+        method: 'post',
+        data: data
+    })
 }

+ 14 - 14
src/views/boxManagement/agentBox/detailsPage.vue

@@ -1120,20 +1120,20 @@ export default {
             fixed: true,
             headerslot: true,
           },
-          {
-            label: '账单状态',
-            prop: 'accStatus',
-            overHidden: true,
-            width: 80,
-            type: 'select',
-            dicData: [{
-              label: '未生成',
-              value: 0,
-            }, {
-              label: '已生成',
-              value: 1,
-            }],
-          },
+          // {
+          //   label: '账单状态',
+          //   prop: 'accStatus',
+          //   overHidden: true,
+          //   width: 80,
+          //   type: 'select',
+          //   dicData: [{
+          //     label: '未生成',
+          //     value: 0,
+          //   }, {
+          //     label: '已生成',
+          //     value: 1,
+          //   }],
+          // },
           {
             label: '审核状态',
             prop: 'auditStatus',

+ 14 - 14
src/views/boxManagement/boxAdjustment/detailsPage.vue

@@ -996,20 +996,20 @@ export default {
             fixed: true,
             headerslot: true,
           },
-          {
-            label: '账单状态',
-            prop: 'accStatus',
-            overHidden: true,
-            width: 80,
-            type: 'select',
-            dicData: [{
-              label: '未生成',
-              value: 0,
-            }, {
-              label: '已生成',
-              value: 1,
-            }],
-          },
+          // {
+          //   label: '账单状态',
+          //   prop: 'accStatus',
+          //   overHidden: true,
+          //   width: 80,
+          //   type: 'select',
+          //   dicData: [{
+          //     label: '未生成',
+          //     value: 0,
+          //   }, {
+          //     label: '已生成',
+          //     value: 1,
+          //   }],
+          // },
           {
             label: '审核状态',
             prop: 'auditStatus',

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

@@ -1145,20 +1145,20 @@ export default {
             fixed: true,
             headerslot: true,
           },
-          {
-            label: '账单状态',
-            prop: 'accStatus',
-            overHidden: true,
-            width: 80,
-            type: 'select',
-            dicData: [{
-              label: '未生成',
-              value: 0,
-            }, {
-              label: '已生成',
-              value: 1,
-            }],
-          },
+          // {
+          //   label: '账单状态',
+          //   prop: 'accStatus',
+          //   overHidden: true,
+          //   width: 80,
+          //   type: 'select',
+          //   dicData: [{
+          //     label: '未生成',
+          //     value: 0,
+          //   }, {
+          //     label: '已生成',
+          //     value: 1,
+          //   }],
+          // },
           {
             label: '审核状态',
             prop: 'auditStatus',
@@ -1431,20 +1431,20 @@ export default {
             fixed: true,
             headerslot: true,
           },
-          {
-            label: '账单状态',
-            prop: 'accStatus',
-            overHidden: true,
-            width: 80,
-            type: 'select',
-            dicData: [{
-              label: '未生成',
-              value: 0,
-            }, {
-              label: '已生成',
-              value: 1,
-            }],
-          },
+          // {
+          //   label: '账单状态',
+          //   prop: 'accStatus',
+          //   overHidden: true,
+          //   width: 80,
+          //   type: 'select',
+          //   dicData: [{
+          //     label: '未生成',
+          //     value: 0,
+          //   }, {
+          //     label: '已生成',
+          //     value: 1,
+          //   }],
+          // },
           {
             label: '审核状态',
             prop: 'auditStatus',

+ 14 - 14
src/views/boxManagement/boxExit/detailsPage.vue

@@ -1042,20 +1042,20 @@ export default {
             fixed: true,
             headerslot: true,
           },
-          {
-            label: '账单状态',
-            prop: 'accStatus',
-            overHidden: true,
-            width: 80,
-            type: 'select',
-            dicData: [{
-              label: '未生成',
-              value: 0,
-            }, {
-              label: '已生成',
-              value: 1,
-            }],
-          },
+          // {
+          //   label: '账单状态',
+          //   prop: 'accStatus',
+          //   overHidden: true,
+          //   width: 80,
+          //   type: 'select',
+          //   dicData: [{
+          //     label: '未生成',
+          //     value: 0,
+          //   }, {
+          //     label: '已生成',
+          //     value: 1,
+          //   }],
+          // },
           {
             label: '审核状态',
             prop: 'auditStatus',

+ 14 - 14
src/views/boxManagement/rentalBox/detailsPage.vue

@@ -1152,20 +1152,20 @@ export default {
             fixed: true,
             headerslot: true,
           },
-          {
-            label: '账单状态',
-            prop: 'accStatus',
-            overHidden: true,
-            width: 80,
-            type: 'select',
-            dicData: [{
-              label: '未生成',
-              value: 0,
-            }, {
-              label: '已生成',
-              value: 1,
-            }],
-          },
+          // {
+          //   label: '账单状态',
+          //   prop: 'accStatus',
+          //   overHidden: true,
+          //   width: 80,
+          //   type: 'select',
+          //   dicData: [{
+          //     label: '未生成',
+          //     value: 0,
+          //   }, {
+          //     label: '已生成',
+          //     value: 1,
+          //   }],
+          // },
           {
             label: '审核状态',
             prop: 'auditStatus',

+ 1 - 1
src/views/iosBasicData/OceanFreightImport/bills/assembly/EntrustmentLnformation.vue

@@ -475,7 +475,7 @@
                                     </span>
                                     <el-date-picker v-model="assemblyForm.actualEta" clearable style="width: 100%"
                                         type="date" size="small"
-                                        :disabled="detailData.seeDisabled || generateBillsfalse || (assemblyForm.billType == 'MH' && assemblyForm.masterBillNo > 0) || assemblyForm.feeCenterListD.filter(item => item.auditStatus > 0).length || assemblyForm.feeCenterListC.filter(item => item.auditStatus > 0).length"
+                                        :disabled="detailData.seeDisabled || (assemblyForm.billType == 'MH' && assemblyForm.masterBillNo > 0)"
                                         value-format="yyyy-MM-dd" :picker-options="etdPickerOptions"
                                         placeholder="请选择ATA日期" @change="handlePick">
                                     </el-date-picker>

+ 6 - 6
src/views/iosBasicData/OceanFreightImport/bills/billsDetails.vue

@@ -349,7 +349,7 @@
                                                 <search-query v-if="item.type == 'select'" ref="searchQueryRef"
                                                     :datalist="item.dicData" :selectValue="form[item.prop]
                                                         " :filterable="true" :clearable="false" :remote="true"
-                                                    :disabled="detailData.seeDisabled || item.disabled || form.feeCenterListD.filter(item => item.auditStatus > 0).length || form.feeCenterListC.filter(item => item.auditStatus > 0).length"
+                                                    :disabled="detailData.seeDisabled || item.disabled "
                                                     :buttonIf="item.buttonIf" :forParameter="item.forParameter
                                                         " :placeholder="`${item.text || ''}`
                                                             " :joinData="item.joinData" @remoteMethod="
@@ -1358,7 +1358,7 @@ export default {
                     })
                 })
             }
-            if(name=='提单确认'){
+            if (name == '提单确认') {
                 // this.$refs.
             }
         },
@@ -3016,7 +3016,7 @@ export default {
             for (let item of this.form.feeCenterListD) {
                 // 判断是否生成了账单
                 if (item.accStatus == 1) {
-                    this.columnforfun("corpCnName").disabled = true;
+                    // this.columnforfun("corpCnName").disabled = true;
                     // this.columnforfun('srcType').disabled = true
                     this.columnforfun("mblno").disabled = true;
                     this.columnforfun("bookingNo").disabled = true;
@@ -3041,7 +3041,7 @@ export default {
                 // 判断是否生成了账单
                 if (item.accStatus == 1) {
                     this.generateBillsfalse = true;
-                    this.columnforfun("corpCnName").disabled = true;
+                    // this.columnforfun("corpCnName").disabled = true;
                     // this.columnforfun('srcType').disabled = true
                     this.columnforfun("mblno").disabled = true;
                     this.columnforfun("bookingNo").disabled = true;
@@ -3142,7 +3142,7 @@ export default {
                 // 判断是否生成了账单
                 if (item.accStatus == 1) {
                     this.generateBillsfalse = true;
-                    this.columnforfun("corpCnName").disabled = true;
+                    // this.columnforfun("corpCnName").disabled = true;
                     // this.columnforfun('srcType').disabled = true
                     this.columnforfun("mblno").disabled = true;
                     this.columnforfun("bookingNo").disabled = true;
@@ -3166,7 +3166,7 @@ export default {
                 // 判断是否生成了账单
                 if (item.accStatus == 1) {
                     this.generateBillsfalse = true;
-                    this.columnforfun("corpCnName").disabled = true;
+                    // this.columnforfun("corpCnName").disabled = true;
                     // this.columnforfun('srcType').disabled = true
                     this.columnforfun("mblno").disabled = true;
                     this.columnforfun("bookingNo").disabled = true;

+ 0 - 4
src/views/iosBasicData/OceanFreightImport/bills/index.vue

@@ -212,10 +212,6 @@
                         </el-scrollbar>
                     </el-col>
                     <el-col :span="19">
-                        <div style="margin: 2px 0;">
-                            <avue-select v-model="dc" placeholder="请选择收付" type="tree" :dic="dcDic"
-                                size="mini"></avue-select>
-                        </div>
                         <avue-crud :data="templateList" :option="templateOption"></avue-crud>
                     </el-col>
                 </el-row>

+ 15 - 2
src/views/iosBasicData/PaymentApplication/assembly/searchPopup.vue

@@ -680,10 +680,23 @@ export default {
             handler(val) {
                 this.amountSubSum = 0
                 this.amountSubUsdSum = 0
+                let CSUMRMB = 0
+                let CSUMUSD = 0
+                let DSUMRMB = 0
+                let DSUMUSD = 0
                 val.forEach(e => {
-                    this.amountSubSum += Number(e.currentStlAmountRMB ? e.currentStlAmountRMB : 0)
-                    this.amountSubUsdSum += Number(e.currentStlAmountUSD ? e.currentStlAmountUSD : 0)
+                    if (e.dc == 'C') {
+                        CSUMRMB += Number(e.currentStlAmountRMB ? e.currentStlAmountRMB : 0)
+                        CSUMUSD += Number(e.currentStlAmountUSD ? e.currentStlAmountUSD : 0)
+                    }
+                    if (e.dc == 'D') {
+                        DSUMRMB += Number(e.currentStlAmountRMB ? e.currentStlAmountRMB : 0)
+                        DSUMUSD += Number(e.currentStlAmountUSD ? e.currentStlAmountUSD : 0)
+                    }
                 })
+                this.amountSubSum = Number(CSUMRMB - DSUMRMB).toFixed(2)
+                this.amountSubUsdSum = Number(CSUMUSD - DSUMUSD).toFixed(2)
+
             },
             deep: true,
             immediate: true

+ 14 - 2
src/views/iosBasicData/PaymentApplication/finstlbillsDetails.vue

@@ -1255,11 +1255,23 @@ export default {
         handleSelectionChange(list) {
             this.amountSubSum = 0
             this.amountSubUsdSum = 0
+            let CSUMRMB = 0
+            let CSUMUSD = 0
+            let DSUMRMB = 0
+            let DSUMUSD = 0
             if (list.length) {
                 list.forEach(e => {
-                    this.amountSubSum += Number(e.currentStlAmountRMB ? e.currentStlAmountRMB : 0)
-                    this.amountSubUsdSum += Number(e.currentStlAmountUSD ? e.currentStlAmountUSD : 0)
+                    if (e.dc == 'C') {
+                        CSUMRMB += Number(e.currentStlAmountRMB ? e.currentStlAmountRMB : 0)
+                        CSUMUSD += Number(e.currentStlAmountUSD ? e.currentStlAmountUSD : 0)
+                    }
+                    if (e.dc == 'D') {
+                        DSUMRMB += Number(e.currentStlAmountRMB ? e.currentStlAmountRMB : 0)
+                        DSUMUSD += Number(e.currentStlAmountUSD ? e.currentStlAmountUSD : 0)
+                    }
                 })
+                this.amountSubSum = Number(CSUMRMB - DSUMRMB).toFixed(2)
+                this.amountSubUsdSum = Number(CSUMUSD - DSUMUSD).toFixed(2)
             }
             this.handleSelectionData = list
         },

+ 182 - 0
src/views/iosBasicData/SeafreightExportF/bills/assembly/EntrustmentLnformation/components/importTemp.vue

@@ -0,0 +1,182 @@
+<template>
+    <div>
+        <el-dialog title="提取订舱箱型" :visible.sync="dialogVisible" append-to-body width="60%" :before-close="handleClose">
+            <avue-crud v-if="dialogVisible" :option="option" :page.sync="page" :table-loading="loading" :data="data"
+                ref="crud" @current-row-change="handleCurrentRowChange" id="out-table"
+                :header-cell-class-name="headerClassName" @on-load="onLoad">
+            </avue-crud>
+            <span slot="footer" class="dialog-footer">
+                <el-button @click="dialogVisible = false" size="mini">取 消</el-button>
+                <el-button type="primary" @click="submit" size="mini">导 入</el-button>
+            </span>
+        </el-dialog>
+    </div>
+</template>
+
+<script>
+import {
+    synchronousBoxType,
+    precontainers
+} from "@/api/iosBasicData/ReceivingOrders/precontainers";
+export default {
+    props: {
+    },
+    data() {
+        return {
+            quotationObj: null,
+            id: null,
+            data: [],
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0
+            },
+            form: {},
+            dialogVisible: false,
+            loading: false,
+            option: {
+                height: 500,
+                calcHeight: 30,
+                border: true,
+                index: true,
+                addBtn: false,
+                viewBtn: false,
+                delBtn: false,
+                editBtn: false,
+                menu: false,
+                header: false,
+                // highlightCurrentRow: true,
+                column: [
+                    {
+                        label: "箱型",
+                        prop: "cntrTypeCode",
+                        overHidden: true,
+                    },
+                    {
+                        label: "箱量",
+                        prop: "quantity",
+                        overHidden: true,
+                    }
+                ]
+            },
+        }
+    },
+    async created() {
+        // this.option = await this.getColumnData(this.getColumnName(309.6), this.optionBack);
+    },
+    methods: {
+        openDialog(val) {
+            this.dialogVisible = true
+            this.quotationObj = null
+            this.form = val
+            // this.loading = true
+            // MktSlotQuotation(obj).then(res => {
+            //     this.data = res.data.data
+            // }).finally(() => {
+            //     this.loading = false
+            // })
+        },
+        handleCurrentRowChange(val) {
+            this.quotationObj = val
+        },
+        submit() {
+            // if (!this.quotationObj) {
+            //     return this.$message.error("请选择数据");
+            // }
+            // delete this.quotationObj.id
+            let obj = {
+                id: this.form.id
+            }
+            synchronousBoxType(obj).then(res => {
+                this.$emit('importData', this.quotationObj)
+                this.$message.success("操作成功");
+                this.dialogVisible = false;
+            })
+
+        },
+        searchReset() {
+            this.query = this.$options.data().query;
+            this.onLoad(this.page);
+        },
+        // 搜索按钮点击
+        searchChange(params, done) {
+            this.page.currentPage = 1;
+            this.onLoad(this.page, this.query);
+            done();
+        },
+        currentChange(currentPage) {
+            this.page.currentPage = currentPage;
+        },
+        sizeChange(pageSize) {
+            this.page.pageSize = pageSize;
+        },
+        onLoad(page, params = {}) {
+            let obj = {}
+            obj = {
+                ...Object.assign(params, this.query),
+                pid: this.form.temporaryId
+            }
+            this.loading = true;
+            precontainers(page.currentPage, page.pageSize, obj).then(res => {
+                this.data = res.data.data.records;
+                this.page.total = res.data.data.total;
+            }).finally(() => {
+                this.loading = false;
+            })
+        },
+        //自定义列保存
+        async saveColumn(ref, option, optionBack, code) {
+            /**
+             * 已定义全局方法,直接使用,saveColumnData保存列数据方法,参数传值(表格名称,当前表格的option数据)
+             * 已定义全局方法,直接使用,getColumnName方法用来获取枚举值,参数根据自己定义的code值获取中文名
+             * 一定要执行异步操作,要等接口成功返回,才能执行下一行代码
+             */
+            const inSave = await this.saveColumnData(this.getColumnName(code), this[option]);
+            if (inSave) {
+                this.$message.success("保存成功");
+                //关闭窗口
+                this.$refs[ref].$refs.dialogColumn.columnBox = false;
+                this.searchReset()
+            }
+        },
+        //自定义列重置
+        async resetColumn(ref, option, optionBack, code) {
+            this[option] = this[optionBack];
+            const inSave = await this.delColumnData(this.getColumnName(code), this[optionBack]);
+            if (inSave) {
+                this.$message.success("重置成功");
+                this.$refs[ref].$refs.dialogColumn.columnBox = false;
+            }
+        },
+
+        // 更改表格颜色
+        headerClassName(tab) {
+            //颜色间隔
+            let back = ""
+            if (tab.columnIndex >= 0 && tab.column.level === 1) {
+                if (tab.columnIndex % 2 === 0) {
+                    back = "back-one"
+                } else if (tab.columnIndex % 2 === 1) {
+                    back = "back-two"
+                }
+            }
+            return back;
+        },
+
+    }
+}
+</script>
+
+<style scoped>
+::v-deep#out-table .back-one {
+    background: #ecf5ff !important;
+    text-align: center;
+    padding: 4px 0;
+}
+
+::v-deep#out-table .back-two {
+    background: #ecf5ff !important;
+    text-align: center;
+    padding: 4px 0;
+}
+</style>

+ 12 - 2
src/views/iosBasicData/SeafreightExportF/bills/assembly/EntrustmentLnformation/precontainers.vue

@@ -20,6 +20,9 @@
                 <el-button type="info" plain size="small"
                     :disabled="seeDisabled || assemblyForm.preContainersList.length == 0" @click="onclickEdit">一键编辑
                 </el-button>
+                <el-button v-if="assemblyForm.whetherModify == 1" type="success" plain size="small"
+                    :disabled="seeDisabled" @click="confirmBox">确认箱型
+                </el-button>
             </template>
             <template slot-scope="{row,index}" slot="menu">
                 <el-button v-if="row.id && row.containerNumberStatus == '录入' && assemblyForm.billType != 'MM'"
@@ -76,7 +79,7 @@
                 <el-button v-if="editStatus" type="primary" @click="submit" size="mini">确 定</el-button>
             </span>
         </el-dialog>
-
+        <import-temp ref="importTemp" @importData="importTemp"></import-temp>
     </basic-container>
 </template>
 
@@ -98,9 +101,10 @@ import { bcntrtypesList } from "@/api/iosBasicData/bcntrtypes";
 import { containersEqualDistribution } from "@/api/iosBasicData/containers";
 import { requiredMessage } from "@/util/messageReminder";
 import { Header } from "element-ui";
+import importTemp from "./components/importTemp.vue";
 
 export default {
-    components: { SearchQuery },
+    components: { SearchQuery, importTemp },
     props: {
         pid: {},
         assemblyForm: {
@@ -453,6 +457,12 @@ export default {
         this.containerOption = await this.getColumnData(this.getColumnName(488), this.containerOptionBack);
     },
     methods: {
+        confirmBox() {
+            this.$refs.importTemp.openDialog(this.assemblyForm)
+        },
+        importTemp() {
+            this.$emit('billsDetailfun')
+        },
         submit() {
             // let obj = {
             //     containerNumberItemList: 

+ 19 - 0
src/views/iosBasicData/SeafreightExportF/bills/index.vue

@@ -149,6 +149,15 @@
                         </span>
                     </div>
                 </template>
+                <template slot="whetherModify" slot-scope="{ row }">
+                    <div>
+                        <span v-if="row.whetherModify == item.dictKey" v-for="(item, index) in khdcStatus" :key="index"
+                            :style="{ 'background-color': item.colour }"
+                            style="color: #fff;border-radius: 30px;padding: 2px 15px;text-align: center;">
+                            {{ item.dictValue }}
+                        </span>
+                    </div>
+                </template>
                 <!-- <template slot="status" slot-scope="{ row }">
                     <div>
                         <span v-if="row.status == item.dictKey" v-for="(item, index) in auditStatusList" :key="index"
@@ -1218,6 +1227,12 @@ export default {
                         overHidden: true
                     },
                     {
+                        label: '订舱状态',
+                        prop: "whetherModify",
+                        width: "100",
+                        overHidden: true,
+                    },
+                    {
                         label: "财务状态",
                         prop: "accountStatus",
                         type: "select",
@@ -1373,6 +1388,7 @@ export default {
             mawbData: [],
             // 业务状态数据
             billStatusData: [],
+            khdcStatus:[],
             // 财务状态
             accountStatusData: [],
             saberUserInfo: {}, // 当前登录人个人信息
@@ -1895,6 +1911,9 @@ export default {
             getWorkDicts("bill_status").then(res => {
                 this.billStatusData = res.data.data;
             });
+             getWorkDicts("KHDC_Status").then(res => {
+                this.khdcStatus = res.data.data;
+            });
         },
         // 获取财务状态字典数据
         accountStatusWorkDictsfun() {

+ 209 - 0
src/views/iosBasicData/businessCenter/customerBooking/components/importTemp.vue

@@ -0,0 +1,209 @@
+<template>
+    <div>
+        <el-dialog title="导入模板" :visible.sync="dialogVisible" append-to-body width="60%" :before-close="handleClose">
+            <avue-crud v-if="dialogVisible" :option="option" :page.sync="page" :table-loading="loading" :data="data" ref="crud"
+                @current-row-change="handleCurrentRowChange" id="out-table" :header-cell-class-name="headerClassName"
+                @on-load="onLoad">
+            </avue-crud>
+            <span slot="footer" class="dialog-footer">
+                <el-button @click="dialogVisible = false" size="mini">取 消</el-button>
+                <el-button type="primary" @click="submit" size="mini">导 入</el-button>
+            </span>
+        </el-dialog>
+    </div>
+</template>
+
+<script>
+import { listTemplates } from "@/api/iosBasicData/businessCenter/bookingCabin.js";
+export default {
+    props: {
+    },
+    data() {
+        return {
+            quotationObj: null,
+            ids: null,
+            data: [],
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0
+            },
+            dialogVisible: false,
+            loading: false,
+            option: {
+                height: 500,
+                calcHeight: 30,
+                border: true,
+                index: true,
+                addBtn: false,
+                viewBtn: false,
+                delBtn: false,
+                editBtn: false,
+                menu: false,
+                header: false,
+                highlightCurrentRow: true,
+                column: [
+                    {
+                        label: "模板名称",
+                        prop: "templatesName",
+                        width: "100",
+                        overHidden: true,
+                    },
+                    {
+                        label: "起运港",
+                        prop: "polCnName",
+                        width: "100",
+                        overHidden: true,
+                    },
+                    {
+                        label: "卸货港",
+                        prop: "podCnName",
+                        width: "100",
+                        overHidden: true,
+                    },
+                    {
+                        label: "交货地",
+                        prop: "placeDeliveryName",
+                        width: "100",
+                        overHidden: true,
+                    },
+                    {
+                        label: "HS CODE",
+                        prop: "hscode",
+                        width: "100",
+                        overHidden: true,
+                    },
+                    {
+                        label: "付款方式",
+                        prop: "mpaymode",
+                        width: "100",
+                        overHidden: true,
+                    },
+                    {
+                        label: "运输条款",
+                        prop: "serviceTerms",
+                        width: "100",
+                        overHidden: true,
+                    },
+                    {
+                        label: "签单方式",
+                        prop: "issueType",
+                        width: "100",
+                        overHidden: true,
+                    }
+                ]
+            },
+        }
+    },
+    async created() {
+        // this.option = await this.getColumnData(this.getColumnName(309.6), this.optionBack);
+    },
+    methods: {
+        openDialog() {
+            this.dialogVisible = true
+            this.quotationObj = null
+            // this.ids = ids
+            this.loading = true
+            // MktSlotQuotation(obj).then(res => {
+            //     this.data = res.data.data
+            // }).finally(() => {
+            //     this.loading = false
+            // })
+        },
+        handleCurrentRowChange(val) {
+            this.quotationObj = val
+        },
+        submit() {
+            if (!this.quotationObj) {
+                return this.$message.error("请选择数据");
+            }
+            delete this.quotationObj.id
+            this.$emit('importData', this.quotationObj)
+            // this.$message.success("操作成功");
+            this.dialogVisible = false;
+        },
+        searchReset() {
+            this.query = this.$options.data().query;
+            this.onLoad(this.page);
+        },
+        // 搜索按钮点击
+        searchChange(params, done) {
+            this.page.currentPage = 1;
+            this.onLoad(this.page, this.query);
+            done();
+        },
+        currentChange(currentPage) {
+            this.page.currentPage = currentPage;
+        },
+        sizeChange(pageSize) {
+            this.page.pageSize = pageSize;
+        },
+        onLoad(page, params = {}) {
+            let obj = {}
+            obj = {
+                ...Object.assign(params, this.query),
+            }
+            this.loading = true;
+            listTemplates(page.currentPage, page.pageSize, obj).then(res => {
+                this.data = res.data.data.records;
+                this.page.total = res.data.data.total;
+            }).finally(() => {
+                this.loading = false;
+            })
+        },
+        //自定义列保存
+        async saveColumn(ref, option, optionBack, code) {
+            /**
+             * 已定义全局方法,直接使用,saveColumnData保存列数据方法,参数传值(表格名称,当前表格的option数据)
+             * 已定义全局方法,直接使用,getColumnName方法用来获取枚举值,参数根据自己定义的code值获取中文名
+             * 一定要执行异步操作,要等接口成功返回,才能执行下一行代码
+             */
+            const inSave = await this.saveColumnData(this.getColumnName(code), this[option]);
+            if (inSave) {
+                this.$message.success("保存成功");
+                //关闭窗口
+                this.$refs[ref].$refs.dialogColumn.columnBox = false;
+                this.searchReset()
+            }
+        },
+        //自定义列重置
+        async resetColumn(ref, option, optionBack, code) {
+            this[option] = this[optionBack];
+            const inSave = await this.delColumnData(this.getColumnName(code), this[optionBack]);
+            if (inSave) {
+                this.$message.success("重置成功");
+                this.$refs[ref].$refs.dialogColumn.columnBox = false;
+            }
+        },
+
+        // 更改表格颜色
+        headerClassName(tab) {
+            //颜色间隔
+            let back = ""
+            if (tab.columnIndex >= 0 && tab.column.level === 1) {
+                if (tab.columnIndex % 2 === 0) {
+                    back = "back-one"
+                } else if (tab.columnIndex % 2 === 1) {
+                    back = "back-two"
+                }
+            }
+            return back;
+        },
+
+    }
+}
+</script>
+
+<style scoped>
+::v-deep#out-table .back-one {
+    background: #ecf5ff !important;
+    text-align: center;
+    padding: 4px 0;
+}
+
+::v-deep#out-table .back-two {
+    background: #ecf5ff !important;
+    text-align: center;
+    padding: 4px 0;
+}
+</style>

+ 213 - 89
src/views/iosBasicData/businessCenter/customerBooking/detailsPage.vue

@@ -22,18 +22,28 @@
           @click="inEdit">编 辑
         </el-button> -->
         <el-button class="el-button--small-yh" style="margin-left: 6px;" type="primary" size="small"
+          @click="allClick('模板保存')">模板保存
+        </el-button>
+        <el-button class="el-button--small-yh" style="margin-left: 6px;" type="success" size="small"
+          :disabled="isSaveBtn || editDisabled" @click="allClick('导入模板')">导入模板
+        </el-button>
+        <el-button class="el-button--small-yh" style="margin-left: 6px;" type="primary" size="small"
           :disabled="isSaveBtn || editDisabled" @click="submit">保 存
         </el-button>
-        <el-button v-if="form.id" class="el-button--small-yh" style="margin-left: 6px;" type="success" size="small"
-          :disabled="form.issueStatus == 1 || form.issueStatus == 2" @click="allClick('提交订舱')">提交订舱
+        <el-button v-if="form.id" class="el-button--small-yh" style="margin-left: 6px;" type="danger" size="small"
+          @click="allClick('退舱')">退 舱
+        </el-button>
+        <el-button v-if="form.id && form.issueStatus == 0" class="el-button--small-yh" style="margin-left: 6px;"
+          type="success" size="small" :disabled="form.issueStatus == 1 || form.issueStatus == 2"
+          @click="allClick('提交订舱')">提交订舱
         </el-button>
         <el-button v-if="form.issueStatus == 2" class="el-button--small-yh" style="margin-left: 6px;" type="danger"
           size="small" @click="allClick('撤销订舱')">撤销订舱
         </el-button>
-        <el-button v-if="form.issueStatus == 1 || form.issueStatus == 2" class="el-button--small-yh"
+        <el-button v-if="(form.issueStatus == 1 || form.issueStatus == 2) && form.hblno" class="el-button--small-yh"
           style="margin-left: 6px;" type="danger" size="small" @click="allClick('提单修改')">截单SI修改
         </el-button>
-        <el-button v-if="form.issueStatus == 1 || form.issueStatus == 2" class="el-button--small-yh"
+        <el-button v-if="(form.issueStatus == 1 || form.issueStatus == 2) && form.hblno" class="el-button--small-yh"
           style="margin-left: 6px;" type="success" size="small" :disabled="flxDisabled" @click="allClick('提单确认')">确认提交
         </el-button>
         <!-- <el-button v-if="form.id" class="el-button--small-yh" style="margin-left: 6px;" type="success" size="small"
@@ -73,33 +83,41 @@
               <el-row>
                 <el-col span="12">
                   <el-row>
-                    <el-form-item label="客服" prop="customerServiceName">
-                      <dic-select v-model="form.customerServiceName" placeholder="客服" :key="form.branchId"
-                        label="realName" :url="'/blade-user/userListAll?roleAlias=客服&deptId=' + form.branchId"
-                        :filterable="true" @selectChange="dicChange('customerServiceName', $event)"
-                        :disabled="editDisabled"></dic-select>
-                    </el-form-item>
+                    <el-col span="12">
+                      <el-form-item label="船公司客服" prop="customerServiceName">
+                        <dic-select v-model="form.customerServiceName" placeholder="船公司客服" :key="form.branchId"
+                          label="realName" :url="'/blade-user/userListAll?roleAlias=客服&deptId=' + form.branchId"
+                          :filterable="true" @selectChange="dicChange('customerServiceName', $event)"
+                          :disabled="editDisabled"></dic-select>
+                      </el-form-item>
+                    </el-col>
+                    <el-col span="12">
+                      <el-form-item label="HB/L NO" prop="hblno">
+                        <el-input style="width: 100%;" v-model="form.hblno" size="small" :disabled="true" clearable
+                          placeholder="HB/L NO"></el-input>
+                      </el-form-item>
+                    </el-col>
                   </el-row>
                   <el-row>
                     <el-col span="12">
                       <el-row>
                         <el-form-item label="发货人" prop="hshipperDetails">
                           <el-input type="textarea" style="width: 100%;" v-model="form.detail.hshipperDetails"
-                            size="small" autocomplete="off" :disabled="editDisabled" :rows="6" clearable
+                            size="small" autocomplete="off" :disabled="editDisabled" :rows="7" clearable
                             placeholder="请输入发货人提单描述" @change="textareaBlur('hshipperDetails', $event)"></el-input>
                         </el-form-item>
                       </el-row>
                       <el-row>
                         <el-form-item label="收货人" prop="hconsigneeDetails">
                           <el-input type="textarea" style="width: 100%;" v-model="form.detail.hconsigneeDetails"
-                            size="small" autocomplete="off" :disabled="editDisabled" :rows="6" clearable
+                            size="small" autocomplete="off" :disabled="editDisabled" :rows="7" clearable
                             placeholder="请输入收货人提单描述" @change="textareaBlur('hconsigneeDetails', $event)"></el-input>
                         </el-form-item>
                       </el-row>
                       <el-row>
                         <el-form-item label="通知人" prop="hnotifyDetails">
                           <el-input type="textarea" style="width: 100%;" v-model="form.detail.hnotifyDetails"
-                            size="small" autocomplete="off" :disabled="editDisabled" :rows="6" clearable
+                            size="small" autocomplete="off" :disabled="editDisabled" :rows="7" clearable
                             placeholder="请输入通知人提单描述" @change="textareaBlur('hnotifyDetails', $event)"></el-input>
                         </el-form-item>
                       </el-row>
@@ -109,7 +127,7 @@
                         <el-form-item label="唛头" prop="marks"
                           :rules="[{ required: true, message: ' ', trigger: 'blur' }]">
                           <el-input type="textarea" style="width: 100%;" v-model="form.marks" size="small"
-                            autocomplete="off" :disabled="editDisabled" :rows="10" clearable placeholder="请输入唛头"
+                            autocomplete="off" :disabled="editDisabled" :rows="7" clearable placeholder="请输入唛头"
                             @change="textareaBlur2('marks', $event)"></el-input>
                         </el-form-item>
                       </el-row>
@@ -117,7 +135,7 @@
                         <el-form-item label="货物" prop="commodityDescr"
                           :rules="[{ required: true, message: ' ', trigger: 'blur' }]">
                           <el-input type="textarea" style="width: 100%;" v-model="form.commodityDescr" size="small"
-                            autocomplete="off" :disabled="editDisabled" :rows="10" clearable placeholder="请输入提单上货物描述"
+                            autocomplete="off" :disabled="editDisabled" :rows="15" clearable placeholder="请输入提单上货物描述"
                             @change="textareaBlur2('commodityDescr', $event)"></el-input>
                         </el-form-item>
                       </el-row>
@@ -126,19 +144,13 @@
                 </el-col>
                 <el-col span="12">
                   <el-row>
-                    <el-col span="8">
-                      <el-form-item label="B/L NO" prop="hblno">
-                        <el-input style="width: 100%;" v-model="form.hblno" size="small" :disabled="true" clearable
-                          placeholder="B/L NO"></el-input>
-                      </el-form-item>
-                    </el-col>
-                    <el-col span="8">
+                    <el-col span="12">
                       <el-form-item label="船名" prop="vesselCnName">
-                        <el-input style="width: 100%;" v-model="form.vesselCnName" size="small" :disabled="true" clearable
-                          placeholder="船名"></el-input>
+                        <el-input style="width: 100%;" v-model="form.vesselCnName" size="small" :disabled="true"
+                          clearable placeholder="船名"></el-input>
                       </el-form-item>
                     </el-col>
-                    <el-col span="8">
+                    <el-col span="12">
                       <el-form-item label="航次" prop="voyageNo">
                         <el-input style="width: 100%;" v-model="form.voyageNo" size="small" :disabled="true" clearable
                           placeholder="航次"></el-input>
@@ -149,70 +161,44 @@
                     <el-col span="12">
                       <el-form-item label="起运港" prop="polCnName"
                         :rules="[{ required: true, message: ' ', trigger: 'blur' }]">
-                        <el-row>
-                          <el-col span="12">
-                            <dic-select v-model="form.polCnName" placeholder="起运港" key="id" label="cnName" res="records"
-                              url="/blade-los/bports/list?current=1&size=5" :filterable="true" :remote="true"
-                              dataName="cnName" @selectChange="dicChange('polCnName', $event)" :disabled="editDisabled"
-                              :slotRight="true" rightLabel="code"></dic-select>
-                          </el-col>
-                          <el-col span="12">
-                            <el-input style="width: 100%;" v-model="form.polNamePrint" size="small"
-                              :disabled="editDisabled" clearable placeholder="装货港"
-                              @change="textareaBlur2('polNamePrint', $event)"></el-input>
-                          </el-col>
-                        </el-row>
+                        <dic-select v-model="form.polCnName" placeholder="起运港" key="id" label="cnName" res="records"
+                          url="/blade-los/bports/list?current=1&size=5" :filterable="true" :remote="true"
+                          dataName="cnName" @selectChange="dicChange('polCnName', $event)" :disabled="editDisabled"
+                          :slotRight="true" rightLabel="code"></dic-select>
+                        <el-input style="width: 100%;" v-model="form.polNamePrint" size="small" :disabled="editDisabled"
+                          clearable placeholder="装货港" @change="textareaBlur2('polNamePrint', $event)"></el-input>
                       </el-form-item>
                     </el-col>
                     <el-col span="12">
                       <el-form-item label="卸货港" prop="podCnName"
                         :rules="[{ required: true, message: ' ', trigger: 'blur' }]">
-                        <el-row>
-                          <el-col span="12">
-                            <dic-select v-model="form.podCnName" placeholder="卸货港" key="id" label="cnName" res="records"
-                              url="/blade-los/bports/list?current=1&size=5" :filterable="true" :remote="true"
-                              dataName="cnName" @selectChange="dicChange('podCnName', $event)" :disabled="editDisabled"
-                              :slotRight="true" rightLabel="code"></dic-select>
-                          </el-col>
-                          <el-col span="12">
-                            <el-input style="width: 100%;" v-model="form.podNamePrint" size="small"
-                              :disabled="editDisabled" clearable placeholder="卸货港"
-                              @change="textareaBlur2('podNamePrint', $event)"></el-input>
-                          </el-col>
-                        </el-row>
+                        <dic-select v-model="form.podCnName" placeholder="卸货港" key="id" label="cnName" res="records"
+                          url="/blade-los/bports/list?current=1&size=5" :filterable="true" :remote="true"
+                          dataName="cnName" @selectChange="dicChange('podCnName', $event)" :disabled="editDisabled"
+                          :slotRight="true" rightLabel="code"></dic-select>
+                        <el-input style="width: 100%;" v-model="form.podNamePrint" size="small" :disabled="editDisabled"
+                          clearable placeholder="卸货港" @change="textareaBlur2('podNamePrint', $event)"></el-input>
                       </el-form-item>
                     </el-col>
                   </el-row>
                   <el-row>
                     <el-col span="12">
-                      <el-form-item label="交货地" prop="polCnName">
-                        <el-row>
-                          <el-col span="12">
-                            <dic-select v-model="form.placeDeliveryName" placeholder="交货地" key="id" label="cnName"
-                              res="records" url="/blade-los/bports/list?current=1&size=5" :filterable="true"
-                              :remote="true" dataName="cnName" @selectChange="dicChange('placeDeliveryName', $event)"
-                              :disabled="editDisabled" :slotRight="true" rightLabel="code"></dic-select>
-                          </el-col>
-                          <el-col span="12">
-                            <el-input style="width: 100%;" v-model="form.placeDeliveryNamePrint" size="small"
-                              :disabled="editDisabled" clearable placeholder="交货地"
-                              @change="textareaBlur2('placeDeliveryNamePrint', $event)"></el-input>
-                          </el-col>
-                        </el-row>
+                      <el-form-item label="交货地" prop="placeDeliveryName">
+                        <dic-select v-model="form.placeDeliveryName" placeholder="交货地" key="id" label="cnName"
+                          res="records" url="/blade-los/bports/list?current=1&size=5" :filterable="true" :remote="true"
+                          dataName="cnName" @selectChange="dicChange('placeDeliveryName', $event)"
+                          :disabled="editDisabled" :slotRight="true" rightLabel="code"></dic-select>
+                        <el-input style="width: 100%;" v-model="form.placeDeliveryNamePrint" size="small"
+                          :disabled="editDisabled" clearable placeholder="交货地"
+                          @change="textareaBlur2('placeDeliveryNamePrint', $event)"></el-input>
                       </el-form-item>
                     </el-col>
                     <el-col span="12">
                       <el-form-item label="HS CODE" prop="hscode">
-                        <el-row>
-                          <el-col span="12">
-                            <el-input style="width: 100%;" v-model="form.hscode" size="small" :disabled="editDisabled"
-                              clearable placeholder="HS CODE"></el-input>
-                          </el-col>
-                          <el-col span="12">
-                            <el-input style="width: 100%;" v-model="form.commodityCnName" size="small"
-                              :disabled="editDisabled" clearable placeholder="英文名称"></el-input>
-                          </el-col>
-                        </el-row>
+                        <el-input style="width: 100%;" v-model="form.hscode" size="small" :disabled="editDisabled"
+                          clearable placeholder="HS CODE"></el-input>
+                        <el-input style="width: 100%;" v-model="form.commodityCnName" size="small"
+                          :disabled="editDisabled" clearable placeholder="英文名称"></el-input>
                       </el-form-item>
                     </el-col>
                   </el-row>
@@ -312,7 +298,7 @@
                           </el-form-item>
                         </el-col>
                         <el-col span="12">
-                          <el-form-item label="签单方式" prop="podCnName">
+                          <el-form-item label="签单方式" prop="issueType">
                             <dic-select v-model="form.issueType" placeholder="签单方式" key="dictKey" label="dictValue"
                               keyValue="dictKey" url="/blade-system/dict-biz/dictionary?code=issue_type_F"
                               :filterable="true" :disabled="detailData.seeDisabled" :initData="true"></dic-select>
@@ -352,6 +338,8 @@
                   @click="allClick('一键编辑')">一键编辑</el-button>
                 <el-button type="danger" plain size="small" :disabled="editDisabled || selectionList.length == 0"
                   @click="allClick('批量删除')">批量删除</el-button>
+                <el-button v-if="form.issueStatus > 0" type="success" plain size="small"
+                  @click="allClick('提交箱型')">修改预配箱</el-button>
               </template>
               <template slot="indexHeader" slot-scope="{row,index}">
                 <el-button type="primary" size="mini" icon="el-icon-plus" :disabled="editDisabled || !form.id" circle
@@ -372,7 +360,7 @@
           </trade-card>
           <trade-card title="配箱信息">
             <DistributionBox :assemblyForm="form" :detailData="detailData" :showLock="showLock"
-              :pleasereviewType="editDisabled" @billsAddfun="billsAddfun" @billsDetailfun="getDetails(form.id)">
+              :pleasereviewType="editDisabled" @billsAddfun="billsAddfun" @billsDetailfun="getDetails(form.id, true)">
             </DistributionBox>
           </trade-card>
           <trade-card title="操作记录">
@@ -495,6 +483,7 @@
       <check-schedule :checkId="checkId" :batchNo="batchNo" @choceScheduleFun="choceScheduleFun"></check-schedule>
     </el-dialog>
     <freight-rate ref="freightRate" @importData="importData" />
+    <import-temp ref="importTemp" @importData="importTemp"></import-temp>
     <!--导入模板-->
     <el-dialog title="导入模板" append-to-body :visible.sync="excelBox" width="555px" :close-on-click-modal="false"
       v-dialog-drag>
@@ -506,12 +495,20 @@
 </template>
 
 <script>
-import { submit, getDetail, submitConfirm, submitCustomerBooking, revokeCustomerBooking, submitBookingCabin, sendMessageBooking, copyAgent, pleaseCheck, repealCancel, submitItemList, itemRemove, submitFeeList, itemFeeRemove, getBCorps } from "@/api/iosBasicData/businessCenter/bookingCabin.js";
+import {
+  submit, getDetail, submitConfirm,
+  submitCustomerBooking, revokeCustomerBooking,
+  submitBookingCabin, sendMessageBooking, copyAgent,
+  pleaseCheck, repealCancel, submitItemList, itemRemove,
+  submitFeeList, itemFeeRemove, getBCorps, submitCommonTemplates,
+  submitBoxType, refundCabin
+} from "@/api/iosBasicData/businessCenter/bookingCabin.js";
 import dicSelect from "@/components/dicSelect/main";
 import checkSchedule from "@/components/checkH/checkSchedule.vue";
 import businessReports from "@/components/boxManagement/businessReportsTS.vue";
 import reports from "@/components/boxManagement/reportsTS.vue";
 import freightRate from "./components/freightRate.vue";
+import importTemp from "./components/importTemp.vue";
 import DistributionBox from "./components/DistributionBox.vue";
 import { billsAdd, deptGetDetailPol } from '@/api/iosBasicData/bills'
 import { getDicinit } from "@/api/dicSelect/index";
@@ -631,8 +628,8 @@ export default {
       form: {
         branchId: JSON.parse(localStorage.getItem('sysitemData')).deptId,
         branchName: JSON.parse(localStorage.getItem('sysitemData')).deptName,
-        customerServiceName: JSON.parse(localStorage.getItem('sysitemData')).name, // OP 默认登录人
-        customerServiceId: JSON.parse(localStorage.getItem('sysitemData')).id,
+        // customerServiceName: JSON.parse(localStorage.getItem('sysitemData')).name, // OP 默认登录人
+        // customerServiceId: JSON.parse(localStorage.getItem('sysitemData')).id,
         businessType: 'KHTS',
         billNoFormat: 'KHTS',
         businessTypeCode: 'KHTS',
@@ -1079,7 +1076,8 @@ export default {
     businessReports,
     reports,
     freightRate,
-    DistributionBox
+    DistributionBox,
+    importTemp
   },
   props: {
     detailData: Object,
@@ -1132,6 +1130,10 @@ export default {
     this.saveLocalCurrency(this.deptId)
   },
   methods: {
+    importTemp(val) {
+      console.log(val)
+      this.form = val
+    },
     lastPage() {
       if (this.pageIds.length) {
         const index = this.pageIds.indexOf(this.form.id)
@@ -1527,7 +1529,7 @@ export default {
       }
       this.selectionfeecList = list;
     },
-    getDetails(id) {
+    getDetails(id, type) {
       const loading = this.$loading({
         lock: true,
         text: '加载中',
@@ -1546,14 +1548,17 @@ export default {
           }
         })
         this.form = res.data.data
-        if (res.data.data.issueStatus == 1 || res.data.data.issueStatus == 2 || res.data.data.confirmStatus == 1) {
-          this.isSaveBtn = true
-          this.editDisabled = true
-          this.optionForm.disabled = true
-        } else {
-          this.editDisabled = false
-          this.optionForm.disabled = false
+        if (!type) {
+          if (res.data.data.issueStatus == 1 || res.data.data.issueStatus == 2 || res.data.data.confirmStatus == 1) {
+            this.isSaveBtn = true
+            this.editDisabled = true
+            this.optionForm.disabled = true
+          } else {
+            this.editDisabled = false
+            this.optionForm.disabled = false
+          }
         }
+
       }).finally(() => {
         loading.close()
       })
@@ -1716,6 +1721,22 @@ export default {
           }
         })
       }
+      if (name == '提交箱型') {
+        this.$confirm('是否提交箱型?', '提示', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          type: 'warning'
+        }).then(() => {
+          let obj = {
+            id: this.form.id
+          }
+          submitBoxType(obj).then(res => {
+            this.$message.success("操作成功");
+            this.getDetails(this.form.id)
+          })
+        })
+
+      }
       if (name == '费用一键保存') {
         if (!this.form.feeCenterListC.length) {
           return this.$message.error("请添加数据");
@@ -1906,6 +1927,101 @@ export default {
           })
         });
       }
+      if (name == '模板保存') {
+        this.$refs["form"].validate((valid) => {
+          if (valid) {
+            if (!this.form.detail.hshipperDetails) {
+              return this.$message.error("请输入发货人提单描述");
+            }
+            if (!this.form.detail.hconsigneeDetails) {
+              return this.$message.error("请输入收货人提单描述");
+            }
+            if (!this.form.detail.hnotifyDetails) {
+              return this.$message.error("请输入通知人提单描述");
+            }
+            for (let row of this.form.preContainersList) {
+              if (!row.cntrTypeCode || !row.quantity) {
+                this.$refs.crud.rowCell(row, row.$index)
+                return this.$message.error("请完善明细信息");
+              }
+            }
+            this.$DialogForm.show({
+              title: '订舱模板',
+              width: '30%',
+              // data: this.assemblyForm.hmmEdi,
+              menuPosition: 'right',
+              option: {
+                submitText: '确定',
+                emptyText: '取消',
+                column: [
+                  {
+                    label: "模板名称",
+                    span: 24,
+                    prop: "templatesName",
+                    rules: [{
+                      required: true,
+                      message: "请输入模板名称",
+                      trigger: "blur",
+                    }],
+                  },
+                ]
+              },
+              beforeClose: (done) => {
+                done()
+              },
+              callback: (res) => {
+                res.done()
+                console.log(res)
+                this.form.businessType = 'KHTS'
+                this.form.billNoFormat = 'KHTS'
+                this.form.businessTypeCode = 'KHTS'
+                let obj = {
+                  ...this.form,
+                  templatesName: res.data.templatesName
+                }
+                const loading = this.$loading({
+                  lock: true,
+                  text: '加载中',
+                  spinner: 'el-icon-loading',
+                  background: 'rgba(255,255,255,0.7)'
+                });
+                submitCommonTemplates(obj).then(res => {
+                  this.$message.success("操作成功");
+                }).finally(() => {
+                  loading.close();
+                })
+                res.close()
+              }
+            })
+          } else {
+            return false;
+          }
+        });
+      }
+      if (name == '导入模板') {
+        this.$refs.importTemp.openDialog()
+      }
+      if (name == '退舱') {
+
+        this.$confirm("是否退舱?", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(() => {
+          const loading = this.$loading({
+            lock: true,
+            text: '加载中',
+            spinner: 'el-icon-loading',
+            background: 'rgba(255,255,255,0.7)'
+          });
+          refundCabin(this.form).then(res => {
+            this.$message.success("操作成功");
+            this.getDetails(this.form.id)
+          }).finally(() => {
+            loading.close();
+          })
+        });
+      }
     },
     submit(type) {
       this.$refs["form"].validate((valid) => {
@@ -2047,6 +2163,14 @@ export default {
       return back;
     },
     goBack(type) {
+      if (this.form.issueStatus > 0 && this.form.whetherModify == 0) {
+        for (let item of this.form.preContainersList) {
+          const names = item.cntrTypeCode + '+' + item.quantity
+          if (names != item.whetherModifyJson) {
+            return this.$message.error("请提交箱型");
+          }
+        }
+      }
       this.$emit("goBack");
     },
   }

+ 21 - 9
src/views/iosBasicData/businessCenter/customerBooking/index.vue

@@ -29,16 +29,18 @@
                 <template slot="menu" slot-scope="{ row, index }">
                     <el-button size="small" icon="el-icon-edit" type="text" @click="rowEdit(row)">编辑</el-button>
                     <el-button size="small" icon="el-icon-delete" type="text" @click="rowDel(row, index)"
-                        :disabled="row.confirmStatus == 1 || row.issueStatus == 1|| row.issueStatus == 2">删 除</el-button>
+                        :disabled="row.confirmStatus == 1 || row.issueStatus == 1 || row.issueStatus == 2">删
+                        除</el-button>
+                </template>
+                <template slot="whetherModify" slot-scope="{ row }">
+                    <div>
+                        <span v-if="row.whetherModify == item.dictKey" v-for="(item, index) in khdcStatus" :key="index"
+                            :style="{ 'background-color': item.colour }"
+                            style="color: #fff;border-radius: 30px;padding: 2px 15px;text-align: center;">
+                            {{ item.dictValue }}
+                        </span>
+                    </div>
                 </template>
-                <!-- <template slot="status" slot-scope="{ row }">
-                    <span v-if="row.issueStatus == 0"
-                        style="color: #fff;border-radius: 30px;padding: 2px 15px;background-color: #409EFF;">{{
-                            row.status }}</span>
-                    <span v-if="row.issueStatus != 0"
-                        style="color: #fff;border-radius: 30px;padding: 2px 15px;background-color: #67C23A;">{{
-                            row.status }}</span>
-                </template> -->
                 <template slot="billNo" slot-scope="{ row }">
                     <span style="color: #1e9fff;cursor: pointer;" @click="rowEdit(row)">{{ row.billNo }}</span>
                 </template>
@@ -72,6 +74,7 @@ export default {
                 total: 0
             },
             selectionList: [],
+            khdcStatus: [],
             option: {},
             optionBack: {
                 height: 'auto',
@@ -332,6 +335,12 @@ export default {
                         overHidden: true,
                     },
                     {
+                        label: '业务状态',
+                        prop: "whetherModify",
+                        width: "100",
+                        overHidden: true,
+                    },
+                    {
                         label: "制单人",
                         prop: "createUserName",
                         width: "100",
@@ -371,6 +380,9 @@ export default {
     },
     async created() {
         this.option = await this.getColumnData(this.getColumnName(513), this.optionBack);
+        getWorkDicts("KHDC_Status").then(res => {
+            this.khdcStatus = res.data.data;
+        });
     },
     activated() {
         setTimeout(() => {

+ 10 - 10
src/views/iosBasicData/costcenter/soc/detailsPage.vue

@@ -2916,7 +2916,7 @@ export default {
                     status: 0,
                     type: 'CBMB-POL',
                     // addressId: this.form.podId,
-                    shippingCompanyId: this.form.shippingCompanyId,
+                    // shippingCompanyId: this.form.shippingCompanyId,
                     // transportationTerms: this.form.transportationTerms,
                 }
                 const loading = this.$loading({
@@ -2945,9 +2945,9 @@ export default {
                 let obj = {
                     status: 0,
                     type: 'CBMB-POD',
-                    addressId: this.form.destinationId,
-                    shippingCompanyId: this.form.shippingCompanyId,
-                    transportationTerms: this.form.transportationTerms,
+                    // addressId: this.form.destinationId,
+                    // shippingCompanyId: this.form.shippingCompanyId,
+                    // transportationTerms: this.form.transportationTerms,
                 }
                 const loading = this.$loading({
                     lock: true,
@@ -3107,9 +3107,9 @@ export default {
                 let obj = {
                     status: 0,
                     type: 'CBMB-POL',
-                    addressId: this.form.podId,
-                    shippingCompanyId: this.form.actualShippingCompanyIdTwo,
-                    transportationTerms: this.form.transportationTermsTwo,
+                    // addressId: this.form.podId,
+                    // shippingCompanyId: this.form.actualShippingCompanyIdTwo,
+                    // transportationTerms: this.form.transportationTermsTwo,
                 }
                 const loading = this.$loading({
                     lock: true,
@@ -3137,9 +3137,9 @@ export default {
                 let obj = {
                     status: 0,
                     type: 'CBMB-POD',
-                    addressId: this.form.destinationId,
-                    shippingCompanyId: this.form.actualShippingCompanyIdTwo,
-                    transportationTerms: this.form.transportationTermsTwo,
+                    // addressId: this.form.destinationId,
+                    // shippingCompanyId: this.form.actualShippingCompanyIdTwo,
+                    // transportationTerms: this.form.transportationTermsTwo,
                 }
                 const loading = this.$loading({
                     lock: true,

+ 2 - 2
src/views/iosBasicData/fininvoices/fininvoicesDetails.vue

@@ -698,7 +698,7 @@ export default {
         if (!this.form.id) {
             this.form.invCurCode = this.getLocalCurrency()
 
-            this.$set(this.form, 'exrate', this.getExchangeRate(this.getLocalCurrency(), this.form.dc, 2))
+            this.$set(this.form, 'exrate', this.getExchangeRate(this.getLocalCurrency(), this.form.dc?this.form.dc:'D', 2))
             // getRateList({ current: 1, size: 30 }).then(res => {
             //     for (let item of res.data.data.records) {
             //         if (item.code == "USD") {
@@ -1049,7 +1049,7 @@ export default {
             }
             else if (name == 'invCurCode') {
                 this.$set(this.form, 'invCurCode', value)
-                this.$set(this.form, 'exrate', this.getExchangeRate(value, this.form.dc, 2))
+                this.$set(this.form, 'exrate', this.getExchangeRate(value, this.form.dc?this.form.dc:'D', 2))
             }
             else {
                 this.$set(this.form, name, value)

+ 3 - 3
src/views/iosBasicData/fininvoicesApplyfor/fininvoicesDetails.vue

@@ -759,7 +759,7 @@ export default {
         this.saberUserInfo = JSON.parse(localStorage.getItem('saber-userInfo')).content
         if (!this.form.id) {
             this.form.curCode = this.getLocalCurrency()
-            this.$set(this.form, 'exrate', this.getExchangeRate(this.getLocalCurrency(), this.form.dc, 2))
+            this.$set(this.form, 'exrate', this.getExchangeRate(this.getLocalCurrency(), this.form.dc?this.form.dc:'D', 2))
         }
         if (this.$route.query.mblno) {
             // console.log(111111)
@@ -794,7 +794,7 @@ export default {
                 isExchangeToCny: 0,
                 billDate: getCurrentDate(),
             }
-            this.$set(this.form, 'exrate', this.getExchangeRate(this.getLocalCurrency(), this.form.dc, 2))
+            this.$set(this.form, 'exrate', this.getExchangeRate(this.getLocalCurrency(), this.form.dc?this.form.dc:'D', 2))
             // getRateList({ current: 1, size: 30 }).then(res => {
             //     for (let item of res.data.data.records) {
             //         if (item.code == "USD") {
@@ -1158,7 +1158,7 @@ export default {
             }
             else if (name == 'curCode') {
                 this.$set(this.form, 'curCode', value)
-                this.$set(this.form, 'exrate', this.getExchangeRate(value, this.form.dc, 2))
+                this.$set(this.form, 'exrate', this.getExchangeRate(value, this.form.dc?this.form.dc:'D', 2))
             }
             else {
                 this.$set(this.form, name, value)

+ 2 - 2
src/views/iosBasicData/fininvoicesOutput/fininvoicesDetails.vue

@@ -752,7 +752,7 @@ export default {
         this.saberUserInfo = JSON.parse(localStorage.getItem('saber-userInfo')).content
         if (!this.form.id) {
             this.form.invCurCode = this.getLocalCurrency()
-            this.$set(this.form, 'exrate', this.getExchangeRate(this.getLocalCurrency(), this.form.dc, 2))
+            this.$set(this.form, 'exrate', this.getExchangeRate(this.getLocalCurrency(), this.form.dc?this.form.dc:'D', 2))
             // getRateList({ current: 1, size: 30 }).then(res => {
             //     for (let item of res.data.data.records) {
             //         if (item.code == "USD") {
@@ -1107,7 +1107,7 @@ export default {
             }
             else if (name == 'invCurCode') {
                 this.$set(this.form, 'invCurCode', value)
-                this.$set(this.form, 'exrate', this.getExchangeRate(value, this.form.dc, 2))
+                this.$set(this.form, 'exrate', this.getExchangeRate(value, this.form.dc?this.form.dc:'D', 2))
             }
             else {
                 this.$set(this.form, name, value)

+ 4 - 4
src/views/iosBasicData/finstlbills/assembly/finstlbillsitems.vue

@@ -5,10 +5,10 @@
             :row-class-name="rowClassName" :cell-style="cellStyle"
             @resetColumn="resetColumn('crud', 'option', 'optionBack', 492)"
             @saveColumn="saveColumn('crud', 'option', 'optionBack', 492)">
-            <!-- <avue-crud :option="option" :data="pageData" id="out-table" ref="crud"
-            @selection-change="handleSelectionChange" :header-cell-style="tableHeaderCellStyle"
-            :row-class-name="rowClassName" :cell-style="cellStyle" :page.sync="page" @size-change="sizeChange"
-            @current-change="currentChange" @resetColumn="resetColumn('crud', 'option', 'optionBack', 492)"
+        <!-- <avue-crud :option="option" :data="pageData" id="out-table" ref="crud" @selection-change="handleSelectionChange"
+            :header-cell-style="tableHeaderCellStyle" :row-class-name="rowClassName" :cell-style="cellStyle"
+            :page.sync="page" @size-change="sizeChange" @current-change="currentChange"
+            @resetColumn="resetColumn('crud', 'option', 'optionBack', 492)"
             @saveColumn="saveColumn('crud', 'option', 'optionBack', 492)"> -->
             <template slot="menuLeft">
                 <slot name="menuLeft"></slot>

+ 28 - 28
src/views/ow/owPut/detailsPage.vue

@@ -1482,20 +1482,20 @@ export default {
           fixed: true,
           headerslot: true,
         },
-        {
-          label: '账单状态',
-          prop: 'accStatus',
-          overHidden: true,
-          width: 80,
-          type: 'select',
-          dicData: [{
-            label: '未生成',
-            value: 0,
-          }, {
-            label: '已生成',
-            value: 1,
-          }],
-        },
+        // {
+        //   label: '账单状态',
+        //   prop: 'accStatus',
+        //   overHidden: true,
+        //   width: 80,
+        //   type: 'select',
+        //   dicData: [{
+        //     label: '未生成',
+        //     value: 0,
+        //   }, {
+        //     label: '已生成',
+        //     value: 1,
+        //   }],
+        // },
         {
           label: '审核状态',
           prop: 'auditStatus',
@@ -1737,20 +1737,20 @@ export default {
           fixed: true,
           headerslot: true,
         },
-        {
-          label: '账单状态',
-          prop: 'accStatus',
-          overHidden: true,
-          width: 80,
-          type: 'select',
-          dicData: [{
-            label: '未生成',
-            value: 0,
-          }, {
-            label: '已生成',
-            value: 1,
-          }],
-        },
+        // {
+        //   label: '账单状态',
+        //   prop: 'accStatus',
+        //   overHidden: true,
+        //   width: 80,
+        //   type: 'select',
+        //   dicData: [{
+        //     label: '未生成',
+        //     value: 0,
+        //   }, {
+        //     label: '已生成',
+        //     value: 1,
+        //   }],
+        // },
         {
           label: '审核状态',
           prop: 'auditStatus',

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

@@ -238,10 +238,6 @@
                 <el-button type="info" plain size="small" @click="allClick('D费用一键编辑')">一键编辑</el-button>
                 <el-button type="danger" plain size="small" :disabled="selectionfeedList.length == 0"
                   @click="allClick('D费用批量删除')">批量删除</el-button>
-                <el-button type="success" plain size="small" @click="allClick('生成租金')"
-                  :disabled="form.tradingBoxItemsList.length == 0">生成租金</el-button>
-                <el-button type="danger" plain size="small" @click="allClick('撤销租金')"
-                  :disabled="form.tradingBoxItemsList.length == 0">撤销租金</el-button>
                 <!-- <el-button type="primary" plain size="small" :disabled="editDisabled">计算超期箱使费</el-button> -->
                 <el-button type="warning" plain size="small" @click="allClick('批量导入费用')">批量导入费用</el-button>
                 <el-button type="primary" plain size="small"
@@ -336,6 +332,10 @@
                 <el-button type="info" plain size="small" @click="allClick('C费用一键编辑')">一键编辑</el-button>
                 <el-button type="danger" plain size="small" :disabled="selectionfeecList.length == 0"
                   @click="allClick('C费用批量删除')">批量删除</el-button>
+                <el-button type="success" plain size="small" @click="allClick('生成箱使费')"
+                  :disabled="form.tradingBoxItemsList.length == 0">生成箱使费</el-button>
+                <el-button type="danger" plain size="small" @click="allClick('撤销箱使费')"
+                  :disabled="form.tradingBoxItemsList.length == 0">撤销箱使费</el-button>
                 <!-- <el-button type="primary" plain size="small" :disabled="editDisabled || selectionfeecList.length == 0"
                   @click="allClick('C费用申请')">请核费用</el-button> -->
                 <!-- <el-button type="primary" plain size="small" @click="$refs.printC.openDialog()">打印账单</el-button> -->
@@ -1457,20 +1457,20 @@ export default {
             fixed: true,
             headerslot: true,
           },
-          {
-            label: '账单状态',
-            prop: 'accStatus',
-            overHidden: true,
-            width: 80,
-            type: 'select',
-            dicData: [{
-              label: '未生成',
-              value: 0,
-            }, {
-              label: '已生成',
-              value: 1,
-            }],
-          },
+          // {
+          //   label: '账单状态',
+          //   prop: 'accStatus',
+          //   overHidden: true,
+          //   width: 80,
+          //   type: 'select',
+          //   dicData: [{
+          //     label: '未生成',
+          //     value: 0,
+          //   }, {
+          //     label: '已生成',
+          //     value: 1,
+          //   }],
+          // },
           {
             label: '审核状态',
             prop: 'auditStatus',
@@ -2803,7 +2803,7 @@ export default {
         }).then(() => {
           synchronousPutBoxData(this.form).then(res => {
             this.$message.success("操作成功");
-            this.fixData=true
+            this.fixData = true
             this.getDetail(this.form.id)
           })
         })
@@ -2964,7 +2964,7 @@ export default {
           }
         })
       }
-      if (name == '生成租金') {
+      if (name == '生成箱使费') {
         let date = null
         if (this.form.tradingBoxItemsList.length > 0 && this.form.tradingBoxItemsList[0].rentEndDate) {
           date = new Date(this.form.tradingBoxItemsList[0].rentEndDate)
@@ -2972,7 +2972,7 @@ export default {
           date = dateFormat(date, 'yyyy-MM-dd') + ' 00:00:00'
         }
         this.$DialogForm.show({
-          title: '生成租金',
+          title: '生成箱使费',
           width: '30%',
           menuPosition: 'right',
           option: {
@@ -3029,8 +3029,8 @@ export default {
           }
         })
       }
-      if (name == '撤销租金') {
-        this.$confirm('是否撤销租金?', '提示', {
+      if (name == '撤销箱使费') {
+        this.$confirm('是否撤销箱使费?', '提示', {
           confirmButtonText: '确定',
           cancelButtonText: '取消',
           type: 'warning'