Browse Source

新加船期模块
修改出口etd功能

Qukatie 3 weeks ago
parent
commit
d2ff7f6286

+ 37 - 0
src/api/iosBasicData/sailingSchedule.js

@@ -0,0 +1,37 @@
+import request from '@/router/axios';
+//船期管理列表
+export const getList = (current, size, params) => {
+    return request({
+        url: '/api/blade-los/sailingschedule/list',
+        method: 'get',
+        params: {
+            ...params,
+            current,
+            size
+        }
+    })
+}
+//船期管理明细
+export const getDetail = (data) => {
+    return request({
+        url: '/api/blade-los/sailingschedule/detail',
+        method: 'get',
+        params: data
+    })
+}
+//船期管理保存
+export const submit = (data) => {
+    return request({
+        url: '/api/blade-los/sailingschedule/submit',
+        method: 'post',
+        data: data
+    })
+}
+//船期管理删除
+export const remove = (data) => {
+  return request({
+      url: '/api/blade-los/sailingschedule/remove',
+      method: 'post',
+      params: data
+  })
+}

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

@@ -2252,6 +2252,9 @@ const columnName = [{
 },{
   code: 533,
   name: '货代-基础资料-代理费设置列表页'
+},{
+  code: 535,
+  name: '货代-船期管理'
 }
 ]
 export const getColumnName = (key) => {

+ 15 - 1
src/router/views/index.js

@@ -4615,12 +4615,26 @@ export default [{
   hidden: true,
   children: [{
     path: '/iosBasicData/boxDynamic/index',
-    name: '箱动态查询',
+    name: 'ONEWAY',
     meta: {
       i18n: '/iosBasicData/boxDynamic/index',
       keepAlive: true,
     },
     component: () => import( /* webpackChunkName: "views" */ '@/views/iosBasicData/boxDynamic/index')
   }]
+},
+{
+  path: '/iosBasicData/sailingSchedule/index',
+  component: Layout,
+  hidden: true,
+  children: [{
+    path: '/iosBasicData/sailingSchedule/index',
+    name: '船期管理',
+    meta: {
+      i18n: '/iosBasicData/sailingSchedule/index',
+      keepAlive: true,
+    },
+    component: () => import( /* webpackChunkName: "views" */ '@/views/iosBasicData/sailingSchedule/index')
+  }]
 }
 ]

+ 26 - 21
src/views/boxManagement/containerNumber/detailsPage.vue

@@ -242,7 +242,7 @@
               :controls="false"
               placeholder="请输入 可用"
               style="width: 100%;"
-              :disabled="editDisabled"
+              :disabled="editDisabled||form.whetherManuallyCreate==1"
             ></el-input-number>
           </tempalte>
           <tempalte slot="occupyNum">
@@ -251,7 +251,7 @@
               :controls="false"
               placeholder="请输入 占用"
               style="width: 100%;"
-              :disabled="editDisabled"
+              :disabled="editDisabled||form.whetherManuallyCreate==1"
             ></el-input-number>
           </tempalte>
           <tempalte slot="storageNum">
@@ -260,7 +260,7 @@
               :controls="false"
               placeholder="请输入 场地盘存"
               style="width: 100%;"
-              :disabled="editDisabled"
+              :disabled="editDisabled||form.whetherManuallyCreate==1"
             ></el-input-number>
           </tempalte>
         </avue-form>
@@ -335,23 +335,28 @@
             ></dic-select>
             <span v-else>{{ row.boxType }}</span>
           </template>
-          <tempalte slot="boxEastNameForm" slot-scope="{ row }">
-            <dic-select
-              v-if="row.$cellEdit"
-              v-model="row.boxEastName"
-              placeholder="箱东"
-              key="id"
-              label="shortName"
-              res="records"
-              url="/blade-los/bcorps/selectList?status=0&corpTypeName=箱东"
-              :filterable="true"
-              :remote="true"
-              dataName="shortName"
-              :slotRight="true"
-              rightLabel="code"
-            >
-            </dic-select>
-            <span v-else>{{ row.boxEastName }}</span>
+          <tempalte v-if="form.boxClass == 'OW(拿)'" slot="boxEastName" slot-scope="{ row }">
+            <span>
+              <span v-if="form.boxClass == 'OW(拿)'">WINFAST</span>
+            </span>
+          </tempalte>
+          <tempalte v-else slot="boxEastNameForm" slot-scope="{ row }">
+             <dic-select
+                v-if="row.$cellEdit"
+                v-model="row.boxEastName"
+                placeholder="箱东"
+                key="id"
+                label="shortName"
+                res="records"
+                url="/blade-los/bcorps/selectList?status=0&corpTypeName=箱东"
+                :filterable="true"
+                :remote="true"
+                dataName="shortName"
+                :slotRight="true"
+                rightLabel="code"
+              >
+              </dic-select>
+              <span v-else>{{ row.boxEastName }}</span>
           </tempalte>
           <tempalte slot="corpNameForm" slot-scope="{ row }">
             <dic-select
@@ -1030,7 +1035,7 @@ export default {
           {
             label: "箱东",
             prop: "boxEastName",
-            cell: true,
+            // cell: true,
             slot: true,
             formslot: true,
             overHidden: true,

+ 150 - 50
src/views/iosBasicData/SeafreightExportF/bills/assembly/EntrustmentLnformation.vue

@@ -717,7 +717,7 @@
               </span>
               <el-date-picker
                 v-model="assemblyForm.etd"
-                clearable
+                :clearable="false"
                 style="width: 100%"
                 type="date"
                 size="small"
@@ -1954,6 +1954,8 @@ import _ from "lodash";
 import dicSelect from "@/components/dicSelect/main";
 import TreeSelect from "@/components/iosbasic-data/TreeSelect.vue";
 import { verifyData, updateVerifyData } from "@/api/iosBasicData/bills";
+import { submit } from "@/api/iosBasicData/sailingSchedule.js";
+import { dateFormat } from "@/util/date";
 export default {
   props: {
     detailData: {
@@ -2309,60 +2311,158 @@ export default {
           type: "warning"
         })
           .then(() => {
-            let obj = {
-              vesselId: this.assemblyForm.vesselId,
-              voyageNo: this.assemblyForm.voyageNo,
-              polId: this.assemblyForm.polId,
-              etd: this.assemblyForm.etd+" 00:00:00"
-            };
-            verifyData(obj).then(res => {
-              if (res.data.data.etd != this.assemblyForm.etd) {
-                this.$confirm("系统检测到相同船名和航次的ETD和本单据的ETD不同,是否对ETD日期进行覆盖或更新?", "提示", {
-                  confirmButtonText: "覆盖",
-                  cancelButtonText: "更新",
-                  type: "warning"
-                })
-                  .then(() => {
-                    this.assemblyForm.etd = res.data.data.etd;
+            if (this.assemblyForm.vesselId && this.assemblyForm.voyageNo && this.assemblyForm.polId) {
+              let obj = {
+                branchId: this.assemblyForm.branchId,
+                branchName: this.assemblyForm.branchName,
+                vesselId: this.assemblyForm.vesselId,
+                voyageNo: this.assemblyForm.voyageNo,
+                polId: this.assemblyForm.polId,
+                etd: this.assemblyForm.etd + " 00:00:00"
+              };
+              verifyData(obj).then(res => {
+                if (!res.data.data) {
+                  let saveObj = {
+                    branchId: this.assemblyForm.branchId,
+                    branchName: this.assemblyForm.branchName,
+                    vesselId: this.assemblyForm.vesselId,
+                    vesselCnName: this.assemblyForm.vesselCnName,
+                    vesselEnName: this.assemblyForm.vesselEnName,
+                    voyageNo: this.assemblyForm.voyageNo,
+                    etd: this.form.etd + " 00:00:00",
+                    polId: this.assemblyForm.polId,
+                    polCode: this.assemblyForm.polCode,
+                    polEnName: this.assemblyForm.polEnName,
+                    polCnName: this.assemblyForm.polCnName
+                  };
+                  submit(saveObj).then(res => {
                     this.etdSubmit(1);
-                  })
-                  .catch(() => {
-                    updateVerifyData(obj).then(res => {
-                      this.etdSubmit(1);
-                    });
                   });
-              } else {
-                this.etdSubmit(1);
-              }
-            });
+                } else {
+                  if (dateFormat(new Date(res.data.data.etd), "yyyy-MM-dd") != this.assemblyForm.etd) {
+                    this.$confirm(
+                      `船期表中  ANL WANGARATTA  002W ETD为:${dateFormat(
+                        new Date(res.data.data.etd),
+                        "yyyy-MM-dd"
+                      )}<br/>当前单据  ANL WANGARATTA  002W ETD为:${this.assemblyForm.etd}`,
+                      "提示",
+                      {
+                        confirmButtonText: "当前单据ETD覆盖船期",
+                        cancelButtonText: "用船期覆盖当前单据ETD",
+                        dangerouslyUseHTMLString: true
+                      }
+                    )
+                      .then(() => {
+                        let updateObj = {
+                          ...obj,
+                          id: res.data.data.id
+                        };
+
+                        const loading = this.$loading({
+                          lock: true,
+                          text: "加载中",
+                          spinner: "el-icon-loading",
+                          background: "rgba(255,255,255,0.7)"
+                        });
+                        updateVerifyData(updateObj)
+                          .then(res => {
+                            this.etdSubmit(0);
+                          })
+                          .finally(() => {
+                            loading.close();
+                          });
+                      })
+                      .catch(() => {
+                        this.assemblyForm.etd = dateFormat(new Date(res.data.data.etd), "yyyy-MM-dd");
+                        this.etdSubmit(1);
+                      });
+                  } else {
+                    this.etdSubmit(1);
+                  }
+                }
+              });
+            } else {
+              this.etdSubmit(1);
+            }
+
+            // this.etdSubmit(1);
           })
           .catch(() => {
-            let obj = {
-              vesselId: this.assemblyForm.vesselId,
-              voyageNo: this.assemblyForm.voyageNo,
-              polId: this.assemblyForm.polId,
-              etd: this.assemblyForm.etd+" 00:00:00"
-            };
-            verifyData(obj).then(res => {
-              if (res.data.data.etd != this.assemblyForm.etd) {
-                this.$confirm("系统检测到相同船名和航次的ETD和本单据的ETD不同,是否对ETD日期进行覆盖或更新?", "提示", {
-                  confirmButtonText: "覆盖",
-                  cancelButtonText: "更新",
-                  type: "warning"
-                })
-                  .then(() => {
-                    this.assemblyForm.etd = res.data.data.etd;
+            if (this.assemblyForm.vesselId && this.assemblyForm.voyageNo && this.assemblyForm.polId) {
+              let obj = {
+                branchId: this.assemblyForm.branchId,
+                branchName: this.assemblyForm.branchName,
+                vesselId: this.assemblyForm.vesselId,
+                voyageNo: this.assemblyForm.voyageNo,
+                polId: this.assemblyForm.polId,
+                etd: this.assemblyForm.etd + " 00:00:00"
+              };
+              verifyData(obj).then(res => {
+                if (!res.data.data) {
+                  let saveObj = {
+                    branchId: this.assemblyForm.branchId,
+                    branchName: this.assemblyForm.branchName,
+                    vesselId: this.assemblyForm.vesselId,
+                    vesselCnName: this.assemblyForm.vesselCnName,
+                    vesselEnName: this.assemblyForm.vesselEnName,
+                    voyageNo: this.assemblyForm.voyageNo,
+                    etd: this.assemblyForm.etd + " 00:00:00",
+                    polId: this.assemblyForm.polId,
+                    polCode: this.assemblyForm.polCode,
+                    polEnName: this.assemblyForm.polEnName,
+                    polCnName: this.assemblyForm.polCnName
+                  };
+                  submit(saveObj).then(res => {
                     this.etdSubmit(0);
-                  })
-                  .catch(() => {
-                    updateVerifyData(obj).then(res => {
-                      this.etdSubmit(0);
-                    });
                   });
-              } else {
-                this.etdSubmit(0);
-              }
-            });
+                } else {
+                  if (dateFormat(new Date(res.data.data.etd), "yyyy-MM-dd") != this.assemblyForm.etd) {
+                    this.$confirm(
+                      `船期表中  ANL WANGARATTA  002W ETD为:${dateFormat(
+                        new Date(res.data.data.etd),
+                        "yyyy-MM-dd"
+                      )}<br/>当前单据  ANL WANGARATTA  002W ETD为:${this.assemblyForm.etd}`,
+                      "提示",
+                      {
+                        confirmButtonText: "当前单据ETD覆盖船期",
+                        cancelButtonText: "用船期覆盖当前单据ETD",
+                        dangerouslyUseHTMLString: true
+                      }
+                    )
+                      .then(() => {
+                        let updateObj = {
+                          ...obj,
+                          id: res.data.data.id
+                        };
+
+                        const loading = this.$loading({
+                          lock: true,
+                          text: "加载中",
+                          spinner: "el-icon-loading",
+                          background: "rgba(255,255,255,0.7)"
+                        });
+                        updateVerifyData(updateObj)
+                          .then(res => {
+                            this.etdSubmit(0);
+                          })
+                          .finally(() => {
+                            loading.close();
+                          });
+                      })
+                      .catch(() => {
+                        this.assemblyForm.etd = dateFormat(new Date(res.data.data.etd), "yyyy-MM-dd");
+                        this.etdSubmit(0);
+                      });
+                  } else {
+                    this.etdSubmit(0);
+                  }
+                }
+              });
+            } else {
+              this.etdSubmit(0);
+            }
+
+            // this.etdSubmit(0);
           });
       }
     },
@@ -2709,7 +2809,7 @@ export default {
       // 船名
       else if (name == "vessel") {
         if (!value) {
-          this.$set(this.assemblyForm, "vesselId", "");
+          this.$set(this.assemblyForm, "vesselId", 0);
           this.$set(this.assemblyForm, "vesselCnName", "");
           this.$set(this.assemblyForm, "vesselEnName", "");
         }

+ 78 - 25
src/views/iosBasicData/SeafreightExportF/bills/billsDetails.vue

@@ -655,6 +655,7 @@ import { selectListLos } from "@/api/approval/processConfig";
 import { isProcurement } from "@/api/basicData/configuration";
 import billLading from "./assembly/billLading.vue";
 import customsInformation from "./assembly/customsInformation.vue";
+import { submit } from "@/api/iosBasicData/sailingSchedule.js";
 import _ from "lodash";
 export default {
   name: "海运出口(F)",
@@ -2767,33 +2768,78 @@ export default {
           //   .catch(() => {
 
           //   });
-          let obj = {
-            vesselId: this.form.vesselId,
-            voyageNo: this.form.voyageNo,
-            polId: this.form.polId,
-            etd: this.form.etd+" 00:00:00"
-          };
-          verifyData(obj).then(res => {
-            if (res.data.data.etd != this.form.etd) {
-              this.$confirm("系统检测到相同船名和航次的ETD和本单据的ETD不同,是否对ETD日期进行覆盖或更新?", "提示", {
-                confirmButtonText: "覆盖",
-                cancelButtonText: "更新",
-                type: "warning"
-              })
-                .then(() => {
-                  this.form.etd = res.data.data.etd;
+          if (this.form.vesselId && this.form.voyageNo && this.form.polId) {
+            let obj = {
+              branchId: this.form.branchId,
+              branchName: this.form.branchName,
+              vesselId: this.form.vesselId,
+              voyageNo: this.form.voyageNo,
+              polId: this.form.polId,
+              etd: this.form.etd + " 00:00:00"
+            };
+            verifyData(obj).then(res => {
+              if (!res.data.data) {
+                let saveObj = {
+                  branchId: this.form.branchId,
+                  branchName: this.form.branchName,
+                  vesselId: this.form.vesselId,
+                  vesselCnName: this.form.vesselCnName,
+                  vesselEnName: this.form.vesselEnName,
+                  voyageNo: this.form.voyageNo,
+                  etd: this.form.etd + " 00:00:00",
+                  polId: this.form.polId,
+                  polCode: this.form.polCode,
+                  polEnName: this.form.polEnName,
+                  polCnName: this.form.polCnName
+                };
+                submit(saveObj).then(res => {
                   this.billsSubmitfun(status);
-                })
-                .catch(() => {
-                  updateVerifyData(obj).then(res => {
-                    this.billsSubmitfun(status);
-                  });
                 });
-            } else {
-              this.billsSubmitfun(status);
-            }
-          });
-          // this.billsSubmitfun(status);
+              } else {
+                if (dateFormat(new Date(res.data.data.etd), "yyyy-MM-dd") != this.form.etd) {
+                  this.$confirm(
+                    `船期表中  ANL WANGARATTA  002W ETD为:${dateFormat(
+                      new Date(res.data.data.etd),
+                      "yyyy-MM-dd"
+                    )}<br/>当前单据  ANL WANGARATTA  002W ETD为:${this.form.etd}`,
+                    "提示",
+                    {
+                      confirmButtonText: "当前单据ETD覆盖船期",
+                      cancelButtonText: "用船期覆盖当前单据ETD",
+                      dangerouslyUseHTMLString: true
+                    }
+                  )
+                    .then(() => {
+                      const loading = this.$loading({
+                        lock: true,
+                        text: "加载中",
+                        spinner: "el-icon-loading",
+                        background: "rgba(255,255,255,0.7)"
+                      });
+                      let updateObj = {
+                        ...obj,
+                        id: res.data.data.id
+                      };
+                      updateVerifyData(updateObj)
+                        .then(res => {
+                          this.etdSubmit(0);
+                        })
+                        .finally(() => {
+                          loading.close();
+                        });
+                    })
+                    .catch(() => {
+                      this.form.etd = dateFormat(new Date(res.data.data.etd), "yyyy-MM-dd");
+                      this.billsSubmitfun(status);
+                    });
+                } else {
+                  this.billsSubmitfun(status);
+                }
+              }
+            });
+          } else {
+            this.billsSubmitfun(status);
+          }
         }
       });
     },
@@ -3112,7 +3158,14 @@ export default {
     },
     // 详情接口
     async billsDetailfun(id, status) {
+      const loading = this.$loading({
+        lock: true,
+        text: "加载中",
+        spinner: "el-icon-loading",
+        background: "rgba(255,255,255,0.7)"
+      });
       const res = await billsDetail(id);
+      loading.close();
       // this.form = res.data.data;
       await this.saveLocalCurrency(res.data.data.branchId);
       if (

+ 50 - 15
src/views/iosBasicData/bcorps/detailsPage.vue

@@ -1402,6 +1402,7 @@ export default {
   },
   data() {
     return {
+      roleName: localStorage.getItem("roleName"),
       customerRequired: false,
       options: [
         {
@@ -2364,22 +2365,56 @@ export default {
         });
     },
     createUser(scope) {
-      this.$confirm("是否创建用户?", "提示", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning"
-      }).then(() => {
-        let obj = {
-          ...scope.row,
-          shortName: this.formData.shortName
-        };
-        createUser(obj).then(res => {
-          this.$message({
-            type: "success",
-            message: "操作成功!"
+      this.$DialogForm.show({
+        title: "选择角色",
+        width: "30%",
+        menuPosition: "right",
+        option: {
+          submitText: "创建用户",
+          emptyText: "取消",
+          // labelWidth: 130,
+          column: [
+            {
+              label: "角色",
+              span: 24,
+              prop: "roleName",
+              type: "select",
+              filterable: true,
+              remote: true,
+              dicUrl: "/api/blade-system/role/list?current=1&size=10&roleAlias={{key}}",
+              props: {
+                label: "roleAlias",
+                value: "roleAlias"
+              },
+              rules: [
+                {
+                  required: true,
+                  message: "选择角色",
+                  trigger: "blur"
+                }
+              ]
+            }
+          ]
+        },
+        beforeClose: done => {
+          done();
+        },
+        callback: res => {
+          res.done();
+          let obj = {
+            ...scope.row,
+            shortName: this.formData.shortName,
+            roleName: res.data.roleName
+          };
+          createUser(obj).then(res => {
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            });
+            this.getBcorpsDetailfun(this.formData.id);
           });
-          this.getBcorpsDetailfun(this.formData.id);
-        });
+          res.close();
+        }
       });
     },
     // 关闭窗口

+ 17 - 8
src/views/iosBasicData/boxDynamic/index.vue

@@ -28,34 +28,34 @@
         <el-row>
           <el-col :span="8">
             <el-form-item label="Type/Quantity">
-              <el-input class="rounded-input" v-model="form.boxTypeQuantityOne" readonly></el-input>
+              <el-input class="rounded-input" v-model="form.boxTypeQuantityOne" disabled></el-input>
             </el-form-item>
           </el-col>
           <el-col :span="4">
             <el-form-item label="Picked-up">
-              <el-input class="rounded-input" v-model="form.suitcaseNum" readonly></el-input>
+              <el-input class="rounded-input" v-model="form.suitcaseNum" disabled></el-input>
             </el-form-item>
           </el-col>
           <el-col :span="4">
             <el-form-item label="Await">
-              <el-input class="rounded-input" v-model="form.notSuitcaseNum" readonly></el-input>
+              <el-input class="rounded-input" v-model="form.notSuitcaseNum" disabled></el-input>
             </el-form-item>
           </el-col>
           <el-col :span="8">
             <el-form-item label="Condition">
-              <el-input class="rounded-input" v-model="form.boxCondition" readonly></el-input>
+              <el-input class="rounded-input" v-model="form.boxCondition" disabled></el-input>
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
           <el-col :span="8">
             <el-form-item label="POL">
-              <el-input class="rounded-input" v-model="form.polCname" readonly></el-input>
+              <el-input class="rounded-input" v-model="form.polCname" disabled></el-input>
             </el-form-item>
           </el-col>
           <el-col :span="8">
             <el-form-item label="POD">
-              <el-input class="rounded-input" v-model="form.podCname" readonly></el-input>
+              <el-input class="rounded-input" v-model="form.podCname" disabled></el-input>
             </el-form-item>
           </el-col>
         </el-row>
@@ -74,7 +74,7 @@ import { containerDynamicInquiry } from "@/api/iosBasicData/boxDynamic.js";
 import report from "./components/report.vue";
 import reports from "@/components/boxManagement/reports.vue";
 export default {
-  name: "箱动态查询",
+  name: "ONEWAY",
   components: { report, reports },
   data() {
     return {
@@ -119,6 +119,9 @@ export default {
           {
             label: "ETD",
             prop: "etd",
+            type: "date",
+            format: "yyyy-MM-dd",
+            valueFormat: "yyyy-MM-dd HH:mm:ss",
             overHidden: true
           },
           {
@@ -132,11 +135,17 @@ export default {
           {
             label: "ETA",
             prop: "eta",
+            type: "date",
+            format: "yyyy-MM-dd",
+            valueFormat: "yyyy-MM-dd HH:mm:ss",
             overHidden: true
           },
           {
             label: "ATA",
             prop: "actualEta",
+            type: "date",
+            format: "yyyy-MM-dd",
+            valueFormat: "yyyy-MM-dd HH:mm:ss",
             overHidden: true
           },
           {
@@ -179,7 +188,7 @@ export default {
       }
       let obj = {
         ...this.query,
-        code: this.query.code.replace(/ +/g, ',')
+        code:this.query.code?this.query.code.replace(/ +/g, ','):null
       };
       const loading = this.$loading({
         lock: true,

+ 605 - 0
src/views/iosBasicData/sailingSchedule/index.vue

@@ -0,0 +1,605 @@
+<!-- 数据 -->
+<template>
+  <basic-container>
+    <avue-crud
+      :option="option"
+      :table-loading="loading"
+      :data="data"
+      :page.sync="page"
+      id="out-table"
+      :header-cell-class-name="headerClassName"
+      :search.sync="query"
+      v-model="form"
+      ref="crud"
+      @row-update="rowUpdate"
+      @row-save="rowSave"
+      @search-change="searchChange"
+      @search-reset="searchReset"
+      @selection-change="selectionChange"
+      @current-change="currentChange"
+      @size-change="sizeChange"
+      @refresh-change="refreshChange"
+      @resetColumn="resetColumn('crud', 'option', 'optionBack', 535)"
+      @saveColumn="saveColumn('crud', 'option', 'optionBack', 535)"
+      @on-load="onLoad"
+    >
+      <template slot="menuLeft">
+        <el-button type="primary" size="small" icon="el-icon-plus" @click="addRow()">新增</el-button>
+        <!-- <el-button type="danger" size="small" icon="el-icon-delete" plain @click="handleDelete">删 除</el-button> -->
+        <!-- <el-button type="warning" size="small" icon="el-icon-printer" @click="excelBox = true">导入 </el-button>
+        <el-button type="success" size="small" @click="handleExport" icon="el-icon-printer">导出</el-button> -->
+      </template>
+      <template slot-scope="{ row, index }" slot="menu">
+        <!-- <el-button type="text" size="small" @click.stop="rowView(row, index)">查看
+        </el-button> -->
+        <el-button type="text" size="small" @click.stop="rowEdit(row, index)">编辑 </el-button>
+        <el-button type="text" size="small" @click.stop="rowDel(row, index)">删除 </el-button>
+      </template>
+      <template slot="branchNameForm" slot-scope="{ type, disabled }">
+        <dic-select
+          v-model="form.branchName"
+          placeholder="所属公司"
+          key="id"
+          label="deptName"
+          url="/blade-system/dept/top-list"
+          :filterable="true"
+          :remote="true"
+          dataName="deptName"
+          :disabled="disabled"
+          @selectChange="dicChange('branchName', $event)"
+        ></dic-select>
+      </template>
+      <tempalte slot="vesselCnNameForm" slot-scope="{ type, disabled }">
+        <dic-select
+          v-model="form.vesselCnName"
+          placeholder="船名"
+          key="id"
+          label="cnName"
+          res="records"
+          url="/blade-los/bvessels/list?status=0&current=1&size=10"
+          :filterable="true"
+          :remote="true"
+          dataName="cnName"
+          @selectChange="dicChange('vesselCnName', $event)"
+          :slotRight="true"
+          rightLabel="code"
+          :disabled="disabled"
+        ></dic-select>
+      </tempalte>
+      <tempalte slot="polCnNameForm" slot-scope="{ type, disabled }">
+        <dic-select
+          v-model="form.polCnName"
+          placeholder="港口"
+          key="id"
+          label="cnName"
+          res="records"
+          url="/blade-los/bports/list?status=0&current=1&size=10"
+          :filterable="true"
+          :remote="true"
+          dataName="cnName"
+          @selectChange="dicChange('polCnName', $event)"
+          :slotRight="true"
+          rightLabel="code"
+          :disabled="disabled || !(roleName.includes('admin') || roleName.includes('总部'))"
+        ></dic-select>
+      </tempalte>
+    </avue-crud>
+
+    <el-dialog title="导入数据" append-to-body :visible.sync="excelBox" width="555px" :close-on-click-modal="false" v-dialog-drag>
+      <avue-form :option="excelOption" v-model="excelForm" :table-loading="excelLoading" :upload-before="uploadBefore" :upload-after="onSuccess">
+        <template slot="excelTemplate">
+          <el-button type="primary" @click="handleGet"> 点击下载<i class="el-icon-download el-icon--right"></i> </el-button>
+        </template>
+      </avue-form>
+      <p style="text-align: center;color: #DC0505">
+        温馨提示 第一次导入时请先下载模板
+      </p>
+    </el-dialog>
+  </basic-container>
+</template>
+
+<script>
+import { getList, getDetail, submit, remove } from "@/api/iosBasicData/sailingSchedule.js";
+import dicSelect from "@/components/dicSelect/main";
+import { getToken } from "@/util/auth";
+
+export default {
+  name: "船期管理",
+  components: {
+    dicSelect
+  },
+  data() {
+    return {
+      roleName: localStorage.getItem("roleName").split(","), // 当前的角色权限
+      form: {
+        branchId: JSON.parse(localStorage.getItem("sysitemData")).deptId,
+        branchName: JSON.parse(localStorage.getItem("sysitemData")).deptName
+      },
+      query: {},
+      loading: true,
+      excelBox: false,
+      excelForm: {},
+      excelLoading: false,
+      excelOption: {
+        submitBtn: false,
+        emptyBtn: false,
+        column: [
+          {
+            label: "模板下载",
+            prop: "excelTemplate",
+            formslot: true,
+            span: 24
+          },
+          {
+            label: "模板上传",
+            prop: "excelFile",
+            type: "upload",
+            drag: true,
+            loadText: "模板上传中,请稍等",
+            span: 24,
+            propsHttp: {
+              res: "data"
+            },
+            tip: "请上传 .xls,.xlsx 标准格式文件",
+            action: "/api/blade-los/btrademodes/importBTradeModes"
+          }
+        ]
+      },
+      page: {
+        pageSize: 20,
+        currentPage: 1,
+        total: 0,
+        pageSizes: [10, 20, 30, 40, 50, 100, 200, 300, 400, 500]
+      },
+      selectionList: [],
+      option: {},
+      optionBack: {
+        height: "auto",
+        align: "center",
+        stripe: true,
+        calcHeight: 30,
+        searchIcon: true,
+        searchIndex: 3,
+        tip: false,
+        searchShow: true,
+        searchMenuSpan: 24,
+        border: true,
+        index: true,
+        addBtn:false,
+        viewBtn: false,
+        delBtn: false,
+        editBtn: false,
+        selection: true,
+        dialogDrag: true,
+        dialogClickModal: false,
+        menuWidth: 100,
+        column: [
+          {
+            label: "所属公司",
+            prop: "branchId",
+            display: false,
+            hide: true,
+            type: "select",
+            filterable: true,
+            dicUrl: "/api/blade-system/dept/lazy-list",
+            props: {
+              label: "deptName",
+              value: "id"
+            },
+            search: true
+          },
+          {
+            label: "所属公司",
+            prop: "branchName",
+            width: 120,
+            rules: [
+              {
+                required: true,
+                message: "请选择所属公司",
+                trigger: "blur"
+              }
+            ],
+            overHidden: true
+          },
+          {
+            label: "船名",
+            prop: "vesselId",
+            display: false,
+            hide: true,
+            search: true,
+            type: "select",
+            filterable: true,
+            remote: true,
+            dicUrl: "/api/blade-los/bvessels/list?status=0&current=1&size=10&cnName={{key}}",
+            props: {
+              label: "cnName",
+              value: "id",
+              res: "data.records"
+            },
+            overHidden: true
+          },
+          {
+            label: "船名",
+            prop: "vesselCnName",
+            width: 100,
+            rules: [
+              {
+                required: true,
+                message: "请选择船名",
+                trigger: "blur"
+              }
+            ],
+            overHidden: true
+          },
+          {
+            label: "航次",
+            prop: "voyageNo",
+            width: 100,
+            search: true,
+            rules: [
+              {
+                required: true,
+                message: "请输入航次",
+                trigger: "blur"
+              }
+            ],
+            overHidden: true
+          },
+          {
+            label: "开船日期",
+            prop: "etd",
+            type: "date",
+            format: "yyyy-MM-dd",
+            valueFormat: "yyyy-MM-dd 00:00:00",
+            rules: [
+              {
+                required: true,
+                message: "请选择日期",
+                trigger: "blur"
+              }
+            ],
+            overHidden: true
+          },
+          {
+            label: "装货港",
+            prop: "polId",
+            display: false,
+            hide: true,
+            search: true,
+            type: "select",
+            filterable: true,
+            remote: true,
+            dicUrl: "/api/blade-los/bports/list?status=0&current=1&size=10&cnName={{key}}",
+            props: {
+              label: "cnName",
+              value: "id",
+              res: "data.records"
+            },
+            overHidden: true
+          },
+          {
+            label: "装货港",
+            prop: "polCnName",
+            width: 100,
+            rules: [
+              {
+                required: true,
+                message: "请选择装货港",
+                trigger: "blur"
+              }
+            ],
+            overHidden: true
+          },
+          {
+            label: "创建人",
+            prop: "createUserName",
+            display: false,
+            overHidden: true
+          },
+          {
+            label: "创建时间",
+            prop: "createTime",
+            width: 150,
+            display: false,
+            overHidden: true
+          },
+          {
+            label: "修改人",
+            prop: "updateUserName",
+            display: false,
+            overHidden: true
+          },
+          {
+            label: "修改时间",
+            prop: "updateTime",
+            width: 150,
+            display: false,
+            overHidden: true
+          },
+          {
+            label: "是否已删除(0 否 1是)",
+            prop: "isDeleted",
+            hide: true,
+            display: false,
+            overHidden: true
+          },
+          {
+            label: "备注",
+            prop: "remarks",
+            type: "textarea",
+            width: 180,
+            span: 12,
+            minRows: 2,
+            slot: true,
+            overHidden: true
+          }
+        ]
+      },
+      data: []
+    };
+  },
+  async created() {
+    this.option = await this.getColumnData(this.getColumnName(535), this.optionBack);
+  },
+  computed: {
+    ids() {
+      let ids = [];
+      this.selectionList.forEach(ele => {
+        ids.push(ele.id);
+      });
+      return ids.join(",");
+    }
+  },
+  methods: {
+    dicChange(name, row) {
+      if (name == "branchName") {
+        if (row) {
+          this.form.branchId = row.id;
+        } else {
+          this.form.branchId = null;
+          this.form.branchName = null;
+        }
+      }
+      if (name == "polCnName") {
+        if (row) {
+          this.form.polId = row.id;
+          this.form.polCode = row.code;
+          this.form.polEnName = row.enName;
+        } else {
+          this.form.polId = null;
+          this.form.polCode = null;
+          this.form.polEnName = null;
+          this.form.polCnName = null;
+        }
+      }
+      if (name == "vesselCnName") {
+        if (row) {
+          this.form.vesselId = row.id;
+          this.form.vesselEnName = row.enName;
+        } else {
+          this.form.vesselId = null;
+          this.form.vesselEnName = null;
+          this.form.vesselCnName = null;
+        }
+      }
+    },
+    // 导出
+    handleExport() {
+      var condition = "";
+      for (const key in this.query) {
+        var value = this.query[key];
+        if (value) {
+          condition += `&${key}=${this.query[key]}`;
+        }
+      }
+
+      this.$confirm("是否导出数据?", "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      })
+        .then(() => {
+          window.open(`/api/blade-los/btrademodes/exportBTradeModes?${this.website.tokenHeader}=${getToken()}${condition}`);
+        })
+        .catch(() => {
+          this.$message({
+            type: "info",
+            message: "已取消" //
+          });
+        });
+    },
+    uploadBefore(file, done, loading) {
+      done();
+      loading = true;
+    },
+    // 上传成功
+    onSuccess(res, done, loading, column) {
+      if (res.length > 0) {
+        this.$message.success("上传成功!");
+      }
+      this.excelBox = false;
+      loading = false;
+      this.onLoad(this.page);
+      done();
+    },
+    // 下载模板
+    handleGet() {
+      window.open(`/api/blade-los/btrademodes/exportBTradeModes/template?${this.website.tokenHeader}=${getToken()}`);
+    },
+    addRow() {
+      this.form = {
+        branchId: JSON.parse(localStorage.getItem("sysitemData")).deptId,
+        branchName: JSON.parse(localStorage.getItem("sysitemData")).deptName
+      };
+      this.$refs.crud.rowAdd();
+    },
+    // 编辑
+    rowEdit(row, index) {
+      getDetail({ id: row.id }).then(res => {
+        this.form = res.data.data;
+        this.$refs.crud.rowEdit(row, index);
+      });
+    },
+    rowSave(row, done, loading) {
+      submit(row)
+        .then(res => {
+          this.onLoad(this.page, this.query);
+          this.$message({
+            type: "success",
+            message: "操作成功!"
+          });
+        })
+        .finally(() => {
+          done();
+          loading();
+        });
+    },
+    rowUpdate(row, index, done, loading) {
+      submit(row)
+        .then(res => {
+          this.onLoad(this.page, this.query);
+          this.$message({
+            type: "success",
+            message: "操作成功!"
+          });
+        })
+        .finally(() => {
+          done();
+          loading();
+        });
+    },
+    rowDel(row) {
+      this.$confirm("确定将选择数据删除?", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      }).then(() => {
+        remove({ ids: row.id }).then(res => {
+          this.onLoad(this.page, this.query);
+          this.$message.success("成功删除");
+        });
+      });
+    },
+    handleDelete() {
+      if (this.selectionList.length === 0) {
+        this.$message.warning("请选择至少一条数据");
+        return;
+      }
+
+      for (const selection of this.selectionList) {
+        if (selection.status == 0) {
+          this.$message.warning("选中的数据中有启用数据,启用数据不可删除!");
+          return;
+        }
+      }
+      this.$confirm("确定将选择数据删除?", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      }).then(() => {
+        remove({ ids: this.ids }).then(() => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!"
+          });
+          this.$refs.crud.toggleSelection();
+        });
+      });
+    },
+    searchReset() {
+      this.query = this.$options.data().query;
+      this.onLoad(this.page, this.query);
+    },
+    searchChange(params, done) {
+      this.page.currentPage = 1;
+      this.onLoad(this.page, this.query);
+      done();
+    },
+    selectionChange(list) {
+      this.selectionList = list;
+    },
+    selectionClear() {
+      this.selectionList = [];
+      this.$refs.crud.toggleSelection();
+    },
+    currentChange(currentPage) {
+      this.page.currentPage = currentPage;
+    },
+    sizeChange(pageSize) {
+      this.page.pageSize = pageSize;
+    },
+    refreshChange() {
+      this.onLoad(this.page, this.query);
+    },
+    onLoad(page, params = {}) {
+      let obj = {};
+      obj = {
+        ...Object.assign(params, this.query)
+      };
+      this.loading = true;
+      getList(page.currentPage, page.pageSize, obj)
+        .then(res => {
+          this.page.total = res.data.data.total;
+          this.data = res.data.data.records;
+          this.$nextTick(() => {
+            this.$refs.crud.dicInit();
+          });
+        })
+        .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;
+      }
+    },
+    //自定义列重置
+    async resetColumn(ref, option, optionBack, code) {
+      this[option] = this[optionBack];
+      const inSave = await this.delColumnData(this.getColumnName(code), this[optionBack]);
+      if (inSave) {
+        this.$message.success("重置成功");
+        this.$refs[ref].$refs.dialogColumn.columnBox = false;
+      }
+    },
+    // 更改表格颜色
+    headerClassName(tab) {
+      //颜色间隔
+      let back = "";
+      if (tab.columnIndex >= 0 && tab.column.level === 1) {
+        if (tab.columnIndex % 2 === 0) {
+          back = "back-one";
+        } else if (tab.columnIndex % 2 === 1) {
+          back = "back-two";
+        }
+      }
+      return back;
+    }
+  }
+};
+</script>
+
+<style lang="scss" scoped>
+::v-deep#out-table .back-one {
+  background: #ecf5ff !important;
+}
+
+::v-deep#out-table .back-two {
+  background: #ecf5ff !important;
+}
+
+/deep/ .el-col-md-8 {
+  width: 24.33333%;
+}
+</style>

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

@@ -2244,7 +2244,7 @@ export default {
           },
           {
             label: "On hire date",
-            prop: "polPreAppearanceDate",
+            prop: "polStationEmptyContainerExitDate",
             overHidden: true
           },
           {

+ 0 - 1
src/views/serviceConfiguration/modifyData/detailsPage.vue

@@ -405,7 +405,6 @@ export default {
                     this.form.branchName = null
                 }
             } else {
-                console.log(row)
                 if (row) {
                     this.rowFrom.fieldValueNew = row.id
                     this.rowFrom.fieldValueNewName = row.cnName

+ 1 - 1
src/views/wel/components/losHome.vue

@@ -1,5 +1,5 @@
 <template>
-    <div class="container" v-if="!roleName.includes('客户')">
+    <div class="container" v-if="!(roleName.includes('客户')||roleName.includes('箱东'))">
         <losquick class="item1" :menuAll="menuAll"></losquick>
         <losaudit class="item2" :menuAll="menuAll"></losaudit>
         <losrealtime class="item3"></losrealtime>