Browse Source

Merge branch 'master' of git.echepei.com:zhujiawei/Warehouse_management_ui into master

qukaidi 4 năm trước cách đây
mục cha
commit
f6e4df849c

+ 90 - 0
src/api/kaihe/basicdata/transport.js

@@ -0,0 +1,90 @@
+// 查询航线详情列表
+import request from '@/utils/request'
+
+export function listCorps(query) {
+  return request({
+    url: '/shipping/address/selectCarriageList',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询港口详情详细
+export function getCorps(fId) {
+  return request({
+    url: '/shipping/address/' + fId,
+    method: 'get'
+  })
+}
+
+// 新增
+export function addyard(data) {
+  return request({
+    url: '/shipping/address',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改航线详情
+export function updateCorps(data) {
+  return request({
+    url: '/shipping/address/edit',
+    method: 'put',
+    data: data
+  })
+}
+// 状态修改
+export function changeCorpsStatus(fId, fStatus) {
+  const data = {
+    fId,
+    fStatus
+  }
+  return request({
+    url: '/shipping/route',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除客户详情
+export function delCorps(fIds) {
+  return request({
+    url: '/shipping/address/' + fIds,
+    method: 'delete'
+  })
+}
+
+// 导出客户详情
+export function exportCorps(query) {
+  return request({
+    url: '/shipping/route/export',
+    method: 'get',
+    params: query
+  })
+}
+
+//查询港口名称
+export function getyard(query) {
+  return request({
+    url: '/shipping/address/selectStorageName',
+    method: 'get',
+    params: query
+  })
+}
+//编号唯一
+export function getyardNo(query) {
+  return request({
+    url: '/shipping/address/selectAddressFno',
+    method: 'post',
+    data: query
+  })
+}
+//名称唯一
+export function getyardName(query) {
+  return request({
+    url: '/shipping/address/selectAddressFName',
+    method: 'post',
+    data: query
+  })
+}

+ 42 - 25
src/views/kaihe/basicdata/container/index.vue

@@ -185,16 +185,12 @@
       <el-table-column type="selection" width="55" align="center" />
       <el-table-column type="index" width="55" label="行号" align="center" fixed/>
       <el-table-column :show-overflow-tooltip="true" label="编号" align="center" prop="fNo" width="100px" fixed/>
-      <el-table-column label="名称" align="center" prop="fName" width="100px" fixed/>
-
       <el-table-column :show-overflow-tooltip="true" label="箱类型" align="center" prop="typeName" width="100px" fixed/>
-
-
+      <el-table-column label="名称" align="center" prop="fName" width="100px" fixed/>
       <el-table-column :show-overflow-tooltip="true" label="英文名" align="center" width="100px" prop="fEname" fixed/>
       <el-table-column :show-overflow-tooltip="true" label="UNCODE" align="center" prop="fUncode" fixed/>
       <el-table-column :show-overflow-tooltip="true" label="TEU" align="center" prop="fTeu" />
-
-      <el-table-column label="箱容量(立方)" align="center" prop="fCbm" />
+      <el-table-column label="箱容量(立方)" align="center" prop="fCbm" width="120px"/>
       <el-table-column label="毛重(T)" align="center" prop="fWeight" />
       <el-table-column label="状态" align="center" prop="fStatus" />
       <el-table-column label="备注" align="center" prop="remark" />
@@ -261,6 +257,11 @@
 
         <el-row>
           <el-col :span="12">
+            <el-form-item label="编号" prop="fNo" label-width="100px">
+              <el-input v-model="form.fNo" :disabled="doNot" style="width: 80%" placeholder="请输入编号" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
             <el-form-item label="箱种类" prop="fType" label-width="100px">
               <el-select style="width: 80%" :disabled="doNot" v-model="form.fType" placeholder="请选择箱种类">
                 <el-option
@@ -272,45 +273,42 @@
               </el-select>
             </el-form-item>
           </el-col>
-          <el-col :span="12">
-            <el-form-item label="UNCODE" prop="fUncode" label-width="100px">
-              <el-input v-model="form.fUncode" :disabled="doNot" style="width: 80%" placeholder="请输入UNCODE" />
-            </el-form-item>
-          </el-col>
+
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item label="编号" prop="fNo" label-width="100px">
-              <el-input v-model="form.fNo" :disabled="doNot" style="width: 80%" placeholder="请输入编号" />
+            <el-form-item label="名称" prop="fName" label-width="100px">
+              <el-input v-model="form.fName" :disabled="doNot" style="width: 80%" placeholder="请输入名称" />
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="TEU" prop="fTeu" label-width="100px">
-              <el-input v-model.number="form.fTeu" :disabled="doNot" style="width: 80%" placeholder="请输入TEU" />
+            <el-form-item label="英文名" prop="fEname" label-width="100px">
+              <el-input v-model="form.fEname" :disabled="doNot" style="width: 80%" placeholder="请输入英文名" />
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item label="名称" prop="fName" label-width="100px">
-              <el-input v-model="form.fName" :disabled="doNot" style="width: 80%" placeholder="请输入名称" />
+            <el-form-item label="UNCODE" prop="fUncode" label-width="100px">
+              <el-input v-model="form.fUncode" :disabled="doNot" style="width: 80%" placeholder="请输入UNCODE" />
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="英文名" prop="fEname" label-width="100px">
-              <el-input v-model="form.fEname" :disabled="doNot" style="width: 80%" placeholder="请输入英文名" />
+            <el-form-item label="TEU" prop="fTeu" label-width="100px">
+              <el-input v-model.number="form.fTeu" :disabled="doNot" style="width: 80%" placeholder="请输入TEU" />
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
+
           <el-col :span="12">
-            <el-form-item label="毛重(T)" prop="fWeight" label-width="100px">
-              <el-input v-model="form.fWeight" :disabled="doNot" style="width: 80%" placeholder="请输入毛重" />
+            <el-form-item label="容积(立方)" prop="fCbm" label-width="100px" >
+              <el-input v-model="form.fCbm" :disabled="doNot" style="width: 80%" placeholder="请输入容积" />
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="容积(立方)" prop="fCbm" label-width="100px" >
-              <el-input v-model="form.fCbm" :disabled="doNot" style="width: 80%" placeholder="请输入容积" />
+            <el-form-item label="毛重(T)" prop="fWeight" label-width="100px">
+              <el-input v-model="form.fWeight" :disabled="doNot" style="width: 80%" placeholder="请输入毛重" />
             </el-form-item>
           </el-col>
         </el-row>
@@ -354,7 +352,14 @@
         <el-row>
           <el-col :span="24" >
             <el-form-item label="备注" prop="remark" label-width="100px">
-              <el-input v-model="form.remark" style="width: 100%" :disabled="doNot" placeholder="" />
+              <el-input
+                v-model="form.remark"
+                style="width: 100%"
+                :disabled="doNot"
+                placeholder=""
+                type="textarea"
+                :autosize="{ minRows: 2}"
+              />
             </el-form-item>
           </el-col>
         </el-row>
@@ -507,7 +512,19 @@
             { required: true, message: "名称不能为空", trigger: "blur" }
           ],
           fEname: [
-            { required: true, message: "英文名不能为空", trigger: "blur" }
+            { required: true, message: "英文名不能为空", trigger: "blur" },
+            {
+              validator: function(rule, value, callback) {
+                //  校验英文的正则
+                if (/[a-zA-z]$/.test(value) == false) {
+                  callback(new Error("请输入英文字母"));
+                } else {
+                  //校验通过
+                  callback();
+                }
+              },
+              trigger: "blur"
+            }
           ],
           fTeu: [{ required: true, message: '请输入数字', trigger: 'blur',type:'number'},
           ]

+ 60 - 37
src/views/kaihe/basicdata/portinformation/index.vue

@@ -208,7 +208,7 @@
 <!--      />-->
       <el-table-column :show-overflow-tooltip="true" label="中文全称" align="center" width="100px" prop="fName" fixed/>
       <el-table-column :show-overflow-tooltip="true" label="英文全称" align="center" prop="fEname" fixed/>
-      <el-table-column :show-overflow-tooltip="true" label="航线" align="center" prop="portName" fixed/>
+      <el-table-column :show-overflow-tooltip="true" label="航线" align="center" prop="portName" fixed width="120px"/>
 
       <el-table-column label="UNCODE" align="center" prop="fUncode" />
       <el-table-column label="国家" align="center" prop="fCountry" />
@@ -292,28 +292,11 @@
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="UNCODE" prop="fUncode" label-width="90px">
-              <el-input v-model="form.fUncode" style="width: 80%" placeholder="请输入UNCODE" :disabled="doNot"/>
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row>
-          <el-col :span="12">
             <el-form-item label="港口编号" prop="fNo" label-width="90px">
               <el-input v-model="form.fNo" style="width: 80%" placeholder="请输入港口编号" :disabled="doNot"/>
             </el-form-item>
           </el-col>
-          <el-col :span="12">
-            <el-form-item label="类型" prop="fTypes" label-width="90px">
-              <el-select style="width: 80%" v-model="form.fTypes" disabled placeholder="请输入编号">
-                <el-option
-                  v-for="(dict, index) in fTypesOptions"
-                  :key="index.dictValue"
-                  :label="dict.dictLabel"
-                  :value="dict.dictValue"/>
-              </el-select>
-            </el-form-item>
-          </el-col>
+
         </el-row>
         <el-row>
           <el-col :span="12">
@@ -328,23 +311,28 @@
           </el-col>
         </el-row>
         <el-row>
-        <el-col :span="12">
-          <el-form-item label="航线" prop="fLaneid" label-width="90px">
-            <el-select
-              v-model="form.fLaneid"
-              style="width: 80%"
-              placeholder="请输入"
-              :disabled="doNot"
-              :remote-method="routeRemoteMethod">
-              <el-option
-                v-for="dict in routeOptions"
-                :key="dict.fId"
-                :label="dict.fName"
-                :value="dict.fId"
-              />
-            </el-select>
-          </el-form-item>
-        </el-col>
+          <el-col :span="12">
+            <el-form-item label="航线" prop="fLaneid" label-width="90px">
+              <el-select
+                v-model="form.fLaneid"
+                style="width: 80%"
+                placeholder="请输入"
+                :disabled="doNot"
+                :remote-method="routeRemoteMethod">
+                <el-option
+                  v-for="dict in routeOptions"
+                  :key="dict.fId"
+                  :label="dict.fName"
+                  :value="dict.fId"
+                />
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="UNCODE" prop="fUncode" label-width="90px">
+              <el-input v-model="form.fUncode" style="width: 80%" placeholder="请输入UNCODE" :disabled="doNot"/>
+            </el-form-item>
+          </el-col>
         </el-row>
         <el-row>
           <el-col :span="12">
@@ -374,9 +362,30 @@
           </el-col>
         </el-row>
         <el-row>
+
+          <el-col :span="12">
+            <el-form-item label="类型" prop="fTypes" label-width="90px">
+              <el-select style="width: 80%" v-model="form.fTypes" disabled placeholder="请输入编号">
+                <el-option
+                  v-for="(dict, index) in fTypesOptions"
+                  :key="index.dictValue"
+                  :label="dict.dictLabel"
+                  :value="dict.dictValue"/>
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
           <el-col :span="24">
             <el-form-item label="备注" prop="remark">
-              <el-input v-model="form.remark" style="width: 100%" placeholder="请输入电话" :disabled="doNot"/>
+              <el-input
+                v-model="form.remark"
+                style="width: 100%"
+                placeholder="请输入电话"
+                :disabled="doNot"
+                type="textarea"
+                :autosize="{ minRows: 2}"
+              />
             </el-form-item>
           </el-col>
         </el-row>
@@ -537,6 +546,20 @@
           fName: [
             { required: true, message: "名称不能为空", trigger: "blur" }
           ],
+          fEname: [
+            {
+              validator: function(rule, value, callback) {
+                //  校验英文的正则
+                if (/[a-zA-z]$/.test(value) == false) {
+                  callback(new Error("请输入英文字母"));
+                } else {
+                  //校验通过
+                  callback();
+                }
+              },
+              trigger: "blur"
+            }
+          ],
         }
       };
     },

+ 38 - 11
src/views/kaihe/basicdata/route/index.vue

@@ -278,17 +278,25 @@
           <el-col :span="12">
             <el-form-item label="联系电话" prop="fTel" label-width="90px">
               <el-input
-                v-model="form.fTel"
+                v-model.number="form.fTel"
                 :disabled="doNot"
                 style="width: 80%"
                 placeholder="请输入联系电话"
-                oninput="this.value = this.value.replace(/[^\d]/g,'')"
+
                 />
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
           <el-col :span="12">
+            <el-form-item label="状态" prop="fStatus" label-width="90px">
+              <el-select v-model="form.fStatus" style="width: 80%" :disabled="doNot" placeholder="请输入状态" >
+                <el-option label="正常" value='T'></el-option>
+                <el-option label="停用" value='F'></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
             <el-form-item label="email" prop="fEmail" label-width="90px">
               <el-input
                 v-model="form.fEmail"
@@ -298,19 +306,19 @@
               />
             </el-form-item>
           </el-col>
-          <el-col :span="12">
-            <el-form-item label="状态" prop="fStatus" label-width="90px">
-              <el-select v-model="form.fStatus" style="width: 80%" :disabled="doNot" placeholder="请输入状态" >
-                <el-option label="正常" value='T'></el-option>
-                <el-option label="停用" value='F'></el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
+
         </el-row>
         <el-row>
           <el-col :span="24">
             <el-form-item label="备注" prop="remark">
-              <el-input v-model="form.remark" style="width: 100%" :disabled="doNot" placeholder="" />
+              <el-input
+                v-model="form.remark"
+                style="width: 100%"
+                :disabled="doNot"
+                placeholder=""
+                type="textarea"
+                :autosize="{ minRows: 2}"
+              />
             </el-form-item>
           </el-col>
         </el-row>
@@ -451,9 +459,28 @@
           fNo: [
             { required: true, message: "编号不能为空", trigger: "blur" }
           ],
+          fTel:[{
+            pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
+            message: "请输入正确的手机号码",
+            trigger: "blur"
+          }],
           fName: [
             { required: true, message: "名称不能为空", trigger: "blur" }
           ],
+          fEname: [
+            {
+              validator: function(rule, value, callback) {
+                //  校验英文的正则
+                if (/[a-zA-z]$/.test(value) == false) {
+                  callback(new Error("请输入英文字母"));
+                } else {
+                  //校验通过
+                  callback();
+                }
+              },
+              trigger: "blur"
+            }
+          ],
           fEmail:[/*{ required: true, message: "邮箱地址不能为空", trigger: "blur" },*/
             { type: "email", message: "'请输入正确的邮箱地址", trigger: ["blur", "change"]
             }]

+ 652 - 0
src/views/kaihe/basicdata/transport/index.vue

@@ -0,0 +1,652 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+      <el-row>
+          <el-form-item label="港口名称" prop="portName">
+            <el-select
+              style="width: 200px"
+              v-model="queryParams.portName"
+              placeholder="请选择港口名称"
+              clearable size="small"
+              filterable
+              :remote-method="portRemoteMethod"
+            >
+              <el-option
+                v-for="dict in portNameOptions"
+                :key="dict.fId"
+                :label="dict.fName"
+                :value="dict.fName"
+              />
+            </el-select>
+          </el-form-item>
+
+          <el-form-item label="堆场" prop="fName">
+            <el-select
+              v-model="queryParams.fName"
+              style="width: 200px"
+              placeholder="请选择堆场"
+              clearable
+              size="small"
+              @keyup.enter.native="handleQuery"
+            >
+              <el-option
+                v-for="dict in yardOptions"
+                :key="dict.fId"
+                :label="dict.fName"
+                :value="dict.fName"
+              />
+            </el-select>
+          </el-form-item>
+
+          <el-form-item label="状态" prop="fStatus">
+            <el-select
+              v-model="queryParams.fStatus"
+              style="width: 200px"
+              placeholder="请选择状态"
+              clearable
+              size="small"
+              @keyup.enter.native="handleQuery"
+            >
+              <el-option label="正常" value="T"/>
+              <el-option label="停用" value="F"/>
+            </el-select>
+          </el-form-item>
+
+        <el-form-item label="录入区间" prop="cLoadDate">
+          <el-date-picker
+            v-model="queryParams.cLoadDate"
+            type="daterange"
+            value-format="yyyy-MM-dd"
+            range-separator="至"
+            start-placeholder="开始日期"
+            end-placeholder="结束日期"
+            style="width: 250px"
+          >
+          </el-date-picker>
+        </el-form-item>
+      </el-row>
+      <div v-show="queryParamsHidden">
+        <el-row>
+            <el-form-item label="录入人" prop="createBy">
+              <el-input
+                v-model="queryParams.createBy"
+                style="width: 200px"
+                placeholder="请输入录入人"
+                clearable
+                size="small"
+                @keyup.enter.native="handleQuery"
+              />
+            </el-form-item>
+
+          <el-form-item label="备注">
+            <el-input
+              v-model="queryParams.remark"
+              type="textarea"
+              style="width: 200px"
+              clearable
+              size="small"
+            />
+          </el-form-item>
+
+        </el-row>
+      </div>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['shipping:address:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['shipping:address:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['shipping:address:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['basicdata:yard:import']"
+        >导入</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['shipping:address:export']"
+        >导出</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="info"
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['basicdata:yard:list']"
+        >取消</el-button>
+      </el-col>
+      <el-col  style="position: absolute;left:75%" :span="5" >
+        <el-button  size="small" @click="queryParamsHidden ? (queryParamsHidden = false) : (queryParamsHidden = true)">{{ queryParamsHidden ? '隐藏' : '更多' }}</el-button>
+        <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="corpsList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column type="index" width="55" label="行号" align="center" />
+      <el-table-column label="堆场编号" align="center" prop="fNo" width="100px"/>
+      <el-table-column :show-overflow-tooltip="true" label="堆场全称" align="center" prop="fName" width="100px"
+      />
+      <el-table-column :show-overflow-tooltip="true" label="英文全称" align="center" width="100px" prop="fEname" />
+      <el-table-column :show-overflow-tooltip="true" label="状态" align="center" prop="fStatus" />
+      <el-table-column :show-overflow-tooltip="true" label="备注" align="center" prop="remark" />
+
+      <el-table-column label="录入人" align="center" prop="createBy" />
+      <el-table-column label="录入时间" align="center" prop="createTime" width="100">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="最新修改人" align="center" prop="updateBy" width="100px"/>
+      <el-table-column label="最新修改时间" align="center" prop="updateTime" width="100">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="操作" fixed="right" align="center" class-name="small-padding fixed-width" width="120px">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+          >查看</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+          >移除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改客户详情对话框 -->
+    <el-dialog
+      v-dialogDrag
+      :fullscreen="dialogFull"
+      :title="title"
+      :visible.sync="open"
+      close-on-click-modal="false"
+      width="60%"
+      :close-on-click-modal="false"
+      append-to-body>
+      <template slot="title">
+        <div class="avue-crud__dialog__header">
+            <span class="el-dialog__title">
+            <span style="display:inline-block;width:3px;height:20px;margin-right:5px; float: left;margin-top:2px"></span>
+            </span>
+          <div class="avue-crud__dialog__menu enlarge" @click="full">
+            <i  style="cursor: pointer;display: block;width:12px;height:12px;border:1px solid #909399;border-top:3px solid #909399;margin-top: -3px;"></i>
+          </div>
+        </div>
+      </template>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="编号" prop="fNo" label-width="90px">
+              <el-input
+                style="width: 80%"
+                v-model="form.fNo"
+                :multiple="true"
+                :disabled="doNot"
+                placeholder="请输入编号"
+              />
+
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="类型" prop="fTypes" label-width="90px">
+              <el-select style="width: 80%" v-model="form.fTypes" disabled placeholder="">
+                <el-option
+                  v-for="(dict, index) in fTypesOptions"
+                  :key="index.dictValue"
+                  :label="dict.dictLabel"
+                  :value="dict.dictValue"/>
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="全称" prop="fName" label-width="90px">
+              <el-input v-model="form.fName" :disabled="doNot" style="width: 80%" placeholder="请输入全称" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="英文名" prop="fEname" label-width="90px">
+              <el-input v-model="form.fEname" :disabled="doNot" style="width: 80%" placeholder="请输入英文名" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+
+          <el-col :span="12">
+            <el-form-item label="联系电话" prop="fTel" label-width="90px">
+              <el-input
+                v-model="form.fTel"
+                :disabled="doNot"
+                style="width: 80%"
+                placeholder="请输入联系电话"
+                oninput="this.value = this.value.replace(/[^\d]/g,'')"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="email" prop="fEmail" label-width="90px">
+              <el-input
+                v-model="form.fEmail"
+                :disabled="doNot"
+                style="width: 80%"
+                placeholder="请输入邮箱地址"
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="状态" prop="fStatus" label-width="90px">
+              <el-select v-model="form.fStatus" style="width: 80%" :disabled="doNot" placeholder="请输入状态" >
+                <el-option label="正常" value='T'></el-option>
+                <el-option label="停用" value='F'></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="24">
+            <el-form-item label="备注" prop="remark">
+              <el-input
+                v-model="form.remark"
+                style="width: 100%"
+                :disabled="doNot"
+                placeholder=""
+                type="textarea"
+                :autosize="{ minRows: 2}"
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+
+      <div slot="footer" class="dialog-footer">
+        <el-button type="info" round @click="doNot = false">修 改</el-button>
+        <el-button type="success" round @click="submitForm" :disabled="doNot">保 存</el-button>
+        <el-button @click="cancel" round>关 闭</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+  import { getyard,listCorps, getCorps, delCorps, addyard,getyardNo, getyardName, changeCorpsStatus,exportCorps } from "@/api/kaihe/basicdata/transport";
+  import Vue from 'vue'
+  import { getportinformation } from '@/api/kaihe/basicdata/portinformation'
+  import { getroute } from '@/api/kaihe/basicdata/route'
+  Vue.directive('dialogDrag', {
+    bind(el, binding, vnode, oldVnode) {
+      const dialogHeaderEl = el.querySelector('.el-dialog__header')
+      const dragDom = el.querySelector('.el-dialog')
+      const enlarge = el.querySelector('.enlarge')
+      dialogHeaderEl.style.cursor = 'move'
+
+      // 获取原有属性 ie dom元素.currentStyle 火狐谷歌 window.getComputedStyle(dom元素, null);
+      const sty = dragDom.currentStyle || window.getComputedStyle(dragDom, null)
+      if(enlarge){
+        enlarge.onclick = (e) => {
+          dragDom.style.top = '0px'
+          dragDom.style.left = '0px'
+        }
+      }
+      dialogHeaderEl.onmousedown = (e) => {
+        // 鼠标按下,计算当前元素距离可视区的距离
+        const disX = e.clientX - dialogHeaderEl.offsetLeft
+        const disY = e.clientY - dialogHeaderEl.offsetTop
+
+        // 获取到的值带px 正则匹配替换
+        let styL, styT
+
+        // 注意在ie中 第一次获取到的值为组件自带50% 移动之后赋值为px
+        if (sty.left.includes('%')) {
+          styL = +document.body.clientWidth * (+sty.left.replace(/\%/g, '') / 100)
+          styT = +document.body.clientHeight * (+sty.top.replace(/\%/g, '') / 100)
+        } else {
+          styL = +sty.left.replace(/\px/g, '')
+          styT = +sty.top.replace(/\px/g, '')
+        }
+
+        document.onmousemove = function(e) {
+          // 通过事件委托,计算移动的距离
+          const l = e.clientX - disX
+          const t = e.clientY - disY
+
+          // 移动当前元素
+
+          if ((t + styT) >= 0){
+            dragDom.style.top = `${t + styT}px`
+          }
+          dragDom.style.left = `${l + styL}px`
+          // 将此时的位置传出去
+          // binding.value({x:e.pageX,y:e.pageY})
+        }
+
+        document.onmouseup = function(e) {
+          document.onmousemove = null
+          document.onmouseup = null
+        }
+      }
+    }
+  })
+
+  export default {
+    name: "yard",
+    components: {
+    },
+    data() {
+      return {
+        //默认显示第一行
+        queryParamsHidden:false,
+        //查看置灰
+        doNot:true,
+        //模糊查询港口名称
+        portNameOptions:[],
+        //港口类型字典表
+        fTypesOptions:[],
+        //模糊查询堆场名称
+        yardOptions:[],
+
+        //全屏放大
+        dialogFull:false,
+        // 遮罩层
+        loading: true,
+        // 选中数组
+        ids: [],
+        // 非单个禁用
+        single: true,
+        // 非多个禁用
+        multiple: true,
+        // 显示搜索条件
+        showSearch: true,
+        // 总条数
+        total: 0,
+        // 客户详情表格数据
+        corpsList: [],
+        // 弹出层标题
+        title: "",
+        // 状态数据字典
+        statusOptions: [],
+        // 是否显示弹出层
+        open: false,
+        // 查询参数
+        queryParams: {
+          pageNum: 1,
+          pageSize: 10,
+          portName:null,
+          fName:null,
+          fStatus:null,
+          createBy:null,
+          fBsdate:null,
+          remark:null,
+        },
+        // 表单参数
+        form: {
+          fNo:null,
+          fName:null,
+          fEname:null,
+          fStatus:'T',
+          fTypes:'5',
+          remark:null,
+        },
+        // 表单校验
+        rules: {
+          fNo: [
+            { required: true, message: "编号不能为空", trigger: "blur" }
+          ],
+          fName: [
+            { required: true, message: "名称不能为空", trigger: "blur" }
+          ],
+          fTel:[{
+            pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
+            message: "请输入正确的手机号码",
+            trigger: "blur"
+          }],
+          fEname: [
+            {
+              validator: function(rule, value, callback) {
+                //  校验英文的正则
+                if (/[a-zA-z]$/.test(value) == false) {
+                  callback(new Error("请输入英文字母"));
+                } else {
+                  //校验通过
+                  callback();
+                }
+              },
+              trigger: "blur"
+            }
+          ],
+          fEmail:[/*{ required: true, message: "邮箱地址不能为空", trigger: "blur" },*/
+            { type: "email", message: "'请输入正确的邮箱地址", trigger: ["blur", "change"]
+            }]
+        }
+      };
+    },
+    created() {
+      this.getList();
+      this.getDicts("f_types").then(response => {
+        this.fTypesOptions = response.data;
+      });
+      this.portRemoteMethod()
+      this.yardRemoteMethod()
+    },
+    methods: {
+      //模糊查询航线名称
+      yardRemoteMethod(){
+        let queryParams = { pageNum: 1,};
+        getyard(queryParams).then((response) => {
+          this.yardOptions = response.rows;
+        });
+      },
+      //模糊查询港口名称
+      portRemoteMethod(){
+        let queryParams = { pageNum: 1,};
+        getportinformation(queryParams).then(response =>{
+          this.portNameOptions = response.rows
+        })
+      },
+      full(){
+        this.dialogFull = !this.dialogFull
+      },
+      /** 查询客户详情列表 */
+      getList() {
+        this.loading = true;
+        listCorps(this.queryParams).then(response => {
+          this.corpsList = response.rows;
+          this.total = response.total;
+          this.loading = false;
+        });
+      },
+      // 取消按钮
+      cancel() {
+        this.open = false;
+        this.reset();
+      },
+      // 表单重置
+      reset() {
+        this.form = {
+          fNo:null,
+          fName:null,
+          fEname:null,
+          fStatus:'T',
+          remark:null,
+          fTypes:'5'
+        };
+        this.resetForm("form");
+      },
+      // 状态修改
+      handleStatusChange(row) {
+        let text = row.fStatus === "0" ? "启用" : "停用";
+        this.$confirm('确认要"' + text + '""' + row.fName + '"吗?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return changeCorpsStatus(row.fId, row.fStatus);
+        }).then(() => {
+          this.msgSuccess(text + "成功");
+        }).catch(function() {
+          row.fStatus = row.fStatus === "0" ? "1" : "0";
+        });
+      },
+      /** 搜索按钮操作 */
+      handleQuery() {
+        this.queryParams.pageNum = 1;
+        this.getList();
+      },
+      /** 重置按钮操作 */
+      resetQuery() {
+        this.resetForm("queryForm");
+        this.handleQuery();
+      },
+      // 多选框选中数据
+      handleSelectionChange(selection) {
+        this.ids = selection.map(item => item.fId)
+        this.single = selection.length!==1
+        this.multiple = !selection.length
+      },
+      /** 新增按钮操作 */
+      handleAdd() {
+        this.doNot = false
+        this.reset();
+        this.open = true;
+        this.title = "添加客户详情";
+      },
+      /** 修改按钮操作 */
+      handleUpdate(row) {
+        this.doNot = true
+        this.reset();
+        const fId = row.fId || this.ids
+        getCorps(fId).then(response => {
+          this.form = response.data;
+          this.open = true;
+          this.title = "修改客户详情";
+        });
+      },
+      /** 提交按钮 */
+      submitForm() {
+        this.$refs["form"].validate(valid => {
+          if (valid) {
+              addyard(this.form).then(response => {
+                this.msgSuccess("操作成功");
+                this.open = false;
+                this.getList();
+              })
+            }
+          })
+      },
+      /** 删除按钮操作 */
+      handleDelete(row) {
+        const fIds = row.fId || this.ids;
+        this.$confirm('是否确认删除客户详情编号为"' + fIds + '"的数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return delCorps(fIds);
+        }).then(() => {
+          this.getList();
+          this.msgSuccess("删除成功");
+        })
+      },
+      /** 导出按钮操作 */
+      handleExport() {
+        const queryParams = this.queryParams;
+        this.$confirm('是否确认导出所有客户详情数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return exportCorps(queryParams);
+        }).then(response => {
+          this.download(response.msg);
+        })
+      }
+    }
+  };
+</script>
+<style lang="scss">
+.avue-crud__dialog__header {
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-box-align: center;
+  -ms-flex-align: center;
+  align-items: center;
+  -webkit-box-pack: justify;
+  -ms-flex-pack: justify;
+  justify-content: space-between;
+}
+.el-dialog__title {
+  color: rgba(0,0,0,.85);
+  font-weight: 500;
+  word-wrap: break-word;
+}
+.avue-crud__dialog__menu {
+  padding-right: 20px;
+  float: left;
+}
+.avue-crud__dialog__menu i {
+  color: #909399;
+  font-size: 15px;
+}
+.el-icon-full-screen{
+  cursor: pointer;
+}
+.el-icon-full-screen:before {
+  content: "\e719";
+}
+</style>

+ 39 - 24
src/views/kaihe/basicdata/wharf/index.vue

@@ -231,10 +231,10 @@
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
 
         <el-row>
-          <el-col :span="24">
+          <el-col :span="12">
             <el-form-item label="港口简称" prop="fPort">
               <el-select
-                style="width: 90%"
+                style="width: 80%"
                 v-model="form.fPort"
                 placeholder="请选择港口简称"
                 :disabled="doNot"
@@ -250,42 +250,26 @@
               </el-select>
             </el-form-item>
           </el-col>
-        </el-row>
-        <el-row>
           <el-col :span="12">
             <el-form-item label="码头编号" prop="fNo">
               <el-input v-model="form.fNo" style="width: 80%" placeholder="请输入编号" :disabled="doNot"/>
             </el-form-item>
           </el-col>
+        </el-row>
+        <el-row>
+
           <el-col :span="12">
             <el-form-item label="码头全称" prop="fName">
-              <el-input v-model="form.fName" style="width: 78%" placeholder="请输入码头名称" :disabled="doNot"/>
+              <el-input v-model="form.fName" style="width: 80%" placeholder="请输入码头名称" :disabled="doNot"/>
             </el-form-item>
           </el-col>
-
-        </el-row>
-        <el-row>
-          <el-col :span="12">
-          <el-form-item label="类型" prop="fTypes" label-width="90px">
-            <el-select style="width: 80%" v-model="form.fTypes" disabled placeholder="请输入编号">
-              <el-option
-                v-for="(dict, index) in fTypesOptions"
-                :key="index.dictValue"
-                :label="dict.dictLabel"
-                :value="dict.dictValue"/>
-            </el-select>
-          </el-form-item>
-        </el-col>
-
           <el-col :span="12">
             <el-form-item label="英文名" prop="fEname">
-              <el-input v-model="form.fEname" style="width: 78%" placeholder="请输入英文名" :disabled="doNot"/>
+              <el-input v-model="form.fEname" style="width: 80%" placeholder="请输入英文名" :disabled="doNot"/>
             </el-form-item>
           </el-col>
         </el-row>
-
         <el-row>
-
           <el-col :span="12">
             <el-form-item label="状态" prop="fStatus">
               <el-select v-model="form.fStatus" style="width: 80%" placeholder="请选择状态" :disabled="doNot">
@@ -294,11 +278,28 @@
               </el-select>
             </el-form-item>
           </el-col>
+          <el-col :span="12">
+            <el-form-item label="类型" prop="fTypes">
+              <el-select style="width: 80%" v-model="form.fTypes" disabled placeholder="请输入编号">
+                <el-option
+                  v-for="(dict, index) in fTypesOptions"
+                  :key="index.dictValue"
+                  :label="dict.dictLabel"
+                  :value="dict.dictValue"/>
+              </el-select>
+            </el-form-item>
+          </el-col>
         </el-row>
         <el-row>
           <el-col :span="24">
             <el-form-item label="备注" prop="remark">
-              <el-input v-model="form.remark" style="width: 90%" placeholder="请输入电话" :disabled="doNot"/>
+              <el-input
+                v-model="form.remark"
+                style="width: 100%"
+                type="textarea"
+                :autosize="{ minRows: 2}"
+                placeholder="请输入电话"
+                :disabled="doNot"/>
             </el-form-item>
           </el-col>
         </el-row>
@@ -437,6 +438,20 @@
         rules: {
           fNo: [{ required: true, message: "编号不能为空", trigger: "blur" }],
           fName: [{ required: true, message: "名称不能为空", trigger: "blur" }],
+          fEname: [
+            {
+              validator: function(rule, value, callback) {
+                //  校验英文的正则
+                if (/[a-zA-z]$/.test(value) == false) {
+                  callback(new Error("请输入英文字母"));
+                } else {
+                  //校验通过
+                  callback();
+                }
+              },
+              trigger: "blur"
+            }
+          ],
           fPort:[{ required: true, message: '名称不能为空', trigger: 'blur' }]
         }
       };

+ 40 - 21
src/views/kaihe/basicdata/yard/index.vue

@@ -230,10 +230,10 @@
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
 
         <el-row>
-          <el-col :span="24">
+          <el-col :span="12">
             <el-form-item label="港口简称" prop="fPortid">
               <el-select
-                style="width: 90%"
+                style="width: 80%"
                 v-model="form.fPortid"
                 placeholder="请选择港口简称"
                 :disabled="doNot"
@@ -249,8 +249,6 @@
               </el-select>
             </el-form-item>
           </el-col>
-        </el-row>
-        <el-row>
           <el-col :span="12">
             <el-form-item label="堆场编号" prop="fNo">
               <el-input
@@ -261,21 +259,6 @@
               />
             </el-form-item>
           </el-col>
-          <el-col :span="12">
-            <el-form-item label="类型" prop="fTypes" label-width="90px">
-              <el-select
-                style="width: 80%"
-                v-model="form.fTypes"
-                disabled
-              >
-                <el-option
-                  v-for="(dict, index) in fTypesOptions"
-                  :key="index.dictValue"
-                  :label="dict.dictLabel"
-                  :value="dict.dictValue"/>
-              </el-select>
-            </el-form-item>
-          </el-col>
         </el-row>
         <el-row>
           <el-col :span="12">
@@ -289,7 +272,7 @@
           </el-col>
           <el-col :span="12">
             <el-form-item label="英文名" prop="fEname">
-              <el-input v-model="form.fEname" style="width: 78%" placeholder="请输入英文名" :disabled="doNot"/>
+              <el-input v-model="form.fEname" style="width: 80%" placeholder="请输入英文名" :disabled="doNot"/>
             </el-form-item>
           </el-col>
         </el-row>
@@ -304,11 +287,33 @@
               </el-select>
             </el-form-item>
           </el-col>
+          <el-col :span="12">
+            <el-form-item label="类型" prop="fTypes">
+              <el-select
+                style="width: 80%"
+                v-model="form.fTypes"
+                disabled
+              >
+                <el-option
+                  v-for="(dict, index) in fTypesOptions"
+                  :key="index.dictValue"
+                  :label="dict.dictLabel"
+                  :value="dict.dictValue"/>
+              </el-select>
+            </el-form-item>
+          </el-col>
+
         </el-row>
         <el-row>
           <el-col :span="24">
             <el-form-item label="备注" prop="remark">
-              <el-input v-model="form.remark" style="width: 90%" placeholder="" :disabled="doNot"/>
+              <el-input
+                v-model="form.remark"
+                style="width: 100%" placeholder=""
+                :disabled="doNot"
+                type="textarea"
+                :autosize="{ minRows: 2}"
+              />
             </el-form-item>
           </el-col>
         </el-row>
@@ -454,6 +459,20 @@
           fName: [
             { required: true, message: "名称不能为空", trigger: "blur" }
           ],
+          fEname: [
+            {
+              validator: function(rule, value, callback) {
+                //  校验英文的正则
+                if (/[a-zA-z]$/.test(value) == false) {
+                  callback(new Error("请输入英文字母"));
+                } else {
+                  //校验通过
+                  callback();
+                }
+              },
+              trigger: "blur"
+            }
+          ],
           fCname:[
             { required: true, message: "简称不能为空", trigger: "blur" }
           ],

+ 5 - 1
src/views/kaihe/containerNews/boxDistribution/index.vue

@@ -69,12 +69,14 @@
 
 <script>
   import { listCorps, listName, getaddress, delCorps, changeCorpsStatus,exportCorps } from "@/api/kaihe/containerNews/boxDistribution";
+  import { getToken } from '@/utils/auth'
   export default {
     name: "boxDistribution",
     components: {
     },
     data() {
       return {
+        //列表样式
         tableStyle:{
           cellColor: 'dodgerblue',		//行内字体颜色
           cellCursor:'pointer'
@@ -115,6 +117,8 @@
       this.getList()
     },
     methods: {
+
+      //列表颜色更改
       cellStyle(row, rowIndex){
         if(row.columnIndex !== 0 && row.columnIndex !== 1 && row.columnIndex !== 2 ){
           return 'color: ' + this.tableStyle.cellColor +
@@ -147,7 +151,7 @@
              addressName:row["地点"]
           }
         }
-        if(row[column.label] == 0 || column.label == '地点'){
+        if(row[column.label] == 0 || column.label == '地点' || column.label == '附件名称' || column.label == '上传附件'){
         }else{
           this.$router.push({
             path: "/containerNews/modifyPage",

+ 12 - 7
src/views/kaihe/containerNews/boxInformation/index.vue

@@ -169,13 +169,13 @@
       <el-table-column type="selection"  align="center" />
       <el-table-column type="index"  label="行号" align="center" fixed/>
       <el-table-column label="箱号" sortable fixed align="center" prop="fNo" fixed width="120px"/>
-      <el-table-column label="地点" align="center"  sortable  prop="addressName" fixed/>
       <el-table-column label="箱类型" align="center" sortable  prop="typeidName" fixed width="100px"/>
-      <el-table-column label="箱状态" align="center" sortable  prop="cntrstatusName" fixed width="100px"/>
-      <el-table-column label="空重" align="center" sortable  prop="updateEFName" fixed/>
+      <el-table-column label="地点" align="center"  sortable  prop="addressName" fixed/>
       <el-table-column :show-overflow-tooltip="true" label="箱主" align="center" prop="ownerName" />
       <el-table-column :show-overflow-tooltip="true" label="箱来源" align="center"  prop="sourceName" />
+      <el-table-column label="箱状态" align="center" sortable  prop="cntrstatusName" fixed width="100px"/>
       <el-table-column :show-overflow-tooltip="true" label="租赁方式" align="center" prop="rentName" />
+      <el-table-column label="空重" align="center" sortable  prop="updateEFName" fixed/>
       <el-table-column :show-overflow-tooltip="true" label="备注" align="center" prop="remark" />
       <el-table-column label="录入人" align="center" prop="createBy" />
       <el-table-column label="录入时间" align="center" prop="createTime" width="100px">
@@ -360,7 +360,14 @@
         <el-row>
           <el-col :span="24">
             <el-form-item label="备注" prop="remark">
-              <el-input v-model="form.remark" style="width: 91%" placeholder="请输入备注" :disabled="doNot"/>
+              <el-input
+                v-model="form.remark"
+                style="width: 91%"
+                placeholder="请输入备注"
+                :disabled="doNot"
+                type="textarea"
+                :autosize="{ minRows: 2}"
+              />
             </el-form-item>
           </el-col>
         </el-row>
@@ -376,10 +383,8 @@
 
 <script>
   import { listCorps, getInforma, delCorps, addboxinformation, getType,getaddress, changeCorpsStatus,exportCorps } from "@/api/kaihe/containerNews/boxInformation";
-  import {queryUserVal} from "@/api/system/user";
-  import { isArray } from '@/utils/validate'
+
   import Vue from 'vue'
-  import { getportinformation } from '@/api/kaihe/basicdata/portinformation'
   Vue.directive('dialogDrag', {
     bind(el, binding, vnode, oldVnode) {
       const dialogHeaderEl = el.querySelector('.el-dialog__header')

+ 59 - 5
src/views/kaihe/containerNews/historyBoxNews/index.vue

@@ -5,7 +5,7 @@
         <el-form-item label="箱号" prop="fNo">
           <el-input
             v-model="queryParams.fNo"
-            style="width: 240px"
+            style="width: 200px"
             placeholder="请输入箱号"
             clearable
             size="small"
@@ -14,7 +14,7 @@
         </el-form-item>
           <el-form-item label="地点" prop="fUpdateaddress">
             <el-select
-              style="width: 240px"
+              style="width: 200px"
               v-model="queryParams.fUpdateaddress"
               placeholder="请输入地点"
               clearable
@@ -32,12 +32,53 @@
               </el-option>
             </el-select>
           </el-form-item>
+        <el-form-item label="空重" prop="fUpdateef">
+          <el-select
+            v-model="queryParams.fUpdateef"
+            style="width: 200px"
+            placeholder="请输入空重"
+            clearable
+            size="small">
+            <el-option
+              v-for="item in this.updateEFOptions"
+              :key="item.dictValue"
+              :label="item.dictLabel"
+              :value="item.dictValue"/>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="箱状态" prop="fCntrstatus">
+          <el-select
+            v-model="queryParams.fCntrstatus"
+            style="width: 200px"
+            placeholder="请选择状态"
+            clearable
+            size="small"
+          >
+            <el-option
+              v-for="item in this.cntrstatusOptions"
+              :key="item.dictValue"
+              :label="item.dictLabel"
+              :value="item.dictValue"/>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="最新时间" prop="cLoadDate">
+          <el-date-picker
+            v-model="queryParams.cLoadDate"
+            type="daterange"
+            value-format="yyyy-MM-dd"
+            range-separator="至"
+            start-placeholder="开始日期"
+            end-placeholder="结束日期"
+            style="width: 250px"
+          >
+          </el-date-picker>
+        </el-form-item>
       </el-row>
     </el-form>
 
     <el-row :gutter="10" class="mb8">
-        <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
-        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+      <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
@@ -91,6 +132,10 @@
     },
     data() {
       return {
+        //状态字典表
+        cntrstatusOptions:[],
+        //空重字典表
+        updateEFOptions:[],
         //默认显示第一行
         queryParamsHidden:false,
         //模糊下拉查询地点
@@ -118,13 +163,22 @@
           pageNum: 1,
           pageSize: 10,
           fNo:null,
-          fUpdateaddress:null
+          fUpdateaddress:null,
+          cLoadDate:null,
+          fUpdateef:null,
+          fCntrstatus:null
         },
       };
     },
     created() {
       this.getList();
       this.addressMethod()
+      this.getDicts("f_updateEF").then(response => {
+        this.updateEFOptions = response.data;
+      });
+      this.getDicts("f_cntrstatus").then(response => {
+        this.cntrstatusOptions = response.data;
+      });
     },
     methods: {
       /** 删除按钮操作 */

+ 446 - 56
src/views/kaihe/containerNews/modifyPage/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+    <el-form :model="queryParams" ref="queryForms" :inline="true" v-show="showSearch" label-width="68px">
       <el-row>
           <el-form-item label="调入地点" prop="fUpdateaddress">
             <el-select
@@ -28,7 +28,7 @@
             <el-select
               v-model="queryParams.fUpdateEF"
               style="width: 240px"
-              placeholder="请输入名称"
+              placeholder="请输入空重"
               clearable
               size="small"
               @change="changeUpdateEF"
@@ -44,7 +44,7 @@
           <el-select
             v-model="queryParams.fStatus"
             style="width: 240px"
-            placeholder="请输入名称"
+            placeholder="请输入状态"
             clearable
             @change="changeStatus"
             size="small"
@@ -55,6 +55,23 @@
               :label="item.dictLabel"
               :value="item.dictValue"/>
           </el-select>
+          </el-form-item>
+        <el-form-item label="调箱动作" prop="fOpctnstatus">
+          <el-select
+            v-model="queryParams.fOpctnstatus"
+            style="width: 240px"
+            placeholder="请输入状态"
+            clearable
+            @change="changeAction"
+            size="small"
+          >
+            <el-option
+              v-for="item in this.boxActionOptions"
+              :key="item.dictValue"
+              :label="item.dictLabel"
+              :value="item.dictValue"/>
+          </el-select>
+        </el-form-item>
           <el-form-item label="时间" prop="fBdate">
             <el-date-picker
               v-model="queryParams.fBdate"
@@ -63,27 +80,104 @@
               @change="changeDate"
               placeholder="选择日期">
             </el-date-picker>
-          </el-form-item>
         </el-form-item>
         <el-form-item>
           <el-button type="cyan"  size="mini" @click="determine">提交</el-button>
         </el-form-item>
       </el-row>
+    </el-form>
+    <el-form :model="queryParam" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
       <el-row>
         <el-form-item label="箱号" prop="fNo">
           <el-input
-            v-model="queryParams.fNo"
+            v-model="queryParam.fNo"
+            style="width: 240px"
+            placeholder="请输入箱号"
+            clearable
+            size="small">
+          </el-input>
+        </el-form-item>
+        <el-form-item label="箱型" prop="fTypeid">
+          <el-select
+            v-model="queryParam.fTypeid"
+            style="width: 240px"
+            placeholder="请输入箱型"
+            clearable
+            size="small">
+            <el-option
+              v-for="item in typeOptions"
+              :key="item.fId"
+              :label="item.fNo"
+              :value="item.fId"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="尺寸" prop="cntrsize">
+          <el-select
+            v-model="queryParam.cntrsize"
             style="width: 240px"
-            placeholder="请输入名称"
+            placeholder="请输入尺寸"
             clearable
-            size="small"/>
+            size="small">
+            <el-option
+              v-for="item in CntrsizeOptions"
+              :key="item.dictValue"
+              :label="item.dictLabel"
+              :value="item.dictValue"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="箱主" prop="fOwner">
+          <el-select
+            v-model="queryParam.fOwner"
+            style="width: 240px"
+            placeholder="请输入箱主"
+            clearable
+            size="small">
+            <el-option
+              v-for="dict in ownerOptions"
+              :key="dict.dictValue"
+              :label="dict.dictLabel"
+              :value="dict.dictValue"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="空重" prop="fUpdateef">
+          <el-select
+            v-model="queryParam.fUpdateef"
+            style="width: 240px"
+            placeholder="请输入空重"
+            clearable
+            size="small">
+            <el-option
+              v-for="item in this.updateEFOptions"
+              :key="item.dictValue"
+              :label="item.dictLabel"
+              :value="item.dictValue"/>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="状态" prop="fCntrstatus">
+          <el-select
+            v-model="queryParam.fCntrstatus"
+            style="width: 200px"
+            placeholder="请选择状态"
+            clearable
+            size="small"
+          >
+            <el-option
+              v-for="item in this.cntrstatusOptions"
+              :key="item.dictValue"
+              :label="item.dictLabel"
+              :value="item.dictValue"/>
+          </el-select>
         </el-form-item>
         <el-form-item>
           <el-button type="cyan"  size="mini" @click="search">搜索</el-button>
+          <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
         </el-form-item>
       </el-row>
-    </el-form>
 
+    </el-form>
     <el-row :gutter="10" class="mb8">
 <!--      <el-button type="cyan"  size="mini" @click="determine">提交</el-button>-->
 <!--        <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>-->
@@ -108,9 +202,32 @@
       <el-table-column label="调入空重" align="center" prop="foldFUpdateef" width="100px"/>
       <el-table-column label="调入状态" align="center" prop="foldFCntrstatus" width="100px"/>
       <el-table-column label="调入时间" align="center" prop="foldtime" width="100px"/>
-      <el-table-column label="船名" align="center" prop="fVsl" width="100px"/>
-      <el-table-column label="航次" align="center" prop="fVoy" width="100px"/>
-      <el-table-column label="提单号" align="center" prop="fMblno" width="100px"/>
+      <el-table-column label="调箱动作" align="center" prop="fOpctnstatus" width="100px"/>
+      <el-table-column label="船名" align="center" prop="fVsl" width="100px">
+        <template slot-scope="scope">
+          <el-input v-model="scope.row.fVsl"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="航次" align="center" prop="fVoy" width="100px">
+        <template slot-scope="scope">
+          <el-input v-model="scope.row.fVoy"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="提单号" align="center" prop="fMblno" width="100px">
+        <template slot-scope="scope">
+          <el-input v-model="scope.row.fMblno"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="备注" align="center" prop="remark" width="100px">
+        <template slot-scope="scope">
+          <el-input v-model="scope.row.remark"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="上传附件" align="center" prop="" width="100px">
+        <template slot-scope="scope">
+          <el-button type="primary" size="mini" @click="uploadFile(scope.row)">上传</el-button>
+        </template>
+      </el-table-column>
     </el-table>
 
     <pagination
@@ -118,21 +235,161 @@
       :total="total"
       :page.sync="queryParams.pageNum"
       :limit.sync="queryParams.pageSize"
-
     />
+    <el-dialog
+      title="上传附件"
+      :visible.sync="dialogVisible"
+      width="80%"
+      :close-on-click-modal="false"
+      >
+      <template slot="title">
+        <i class="header-icon el-icon-circle-plus" style="font-size: 16px"
+        ><span
+          style="font-size: 16px; font-weight: bolder; margin-left: 5px"
+        >附件上传</span
+        >
+        </i>
+      </template>
+      <div>
+        <div
+          style=" display: flex;justify-content: space-between;margin: 10px 0;">
+          <div>
+            <el-button
+              type="primary"
+              icon="el-icon-plus"
+              size="mini"
+              @click="addRelevt"
+            >添加</el-button
+            >
+          </div>
+        </div>
+      </div>
+      <el-table
+        :data="relevantAttachments"
+        ref="table"
+        tooltip-effect="dark"
+        border
+        stripe
+        style="width: 100%"
+        height="150"
+      >
+        <el-table-column label="序号" type="index" width="80">
+        </el-table-column>
+        <el-table-column
+          prop="fName"
+          header-align="center"
+          align="center"
+          width="250px"
+          label="附件名称"
+        >
+          <template slot-scope="scope">
+            <el-input
+              v-model="scope.row.fName"
+              placeholder="附件名称"
+              show-word-limit
+            />
+          </template>
+        </el-table-column>
+<!--        <el-table-column-->
+<!--          prop="createBy"-->
+<!--          header-align="center"-->
+<!--          align="center"-->
+<!--          width="250px"-->
+<!--          label="上传人"-->
+<!--        >-->
+<!--          <template slot-scope="scope">-->
+<!--            <el-input-->
+<!--              v-model="scope.row.createBy"-->
+<!--              disabled-->
+<!--              placeholder="上传人"-->
+<!--              show-word-limit-->
+<!--            />-->
+<!--          </template>-->
+<!--        </el-table-column>-->
+        <el-table-column
+          prop="createTime"
+          header-align="center"
+          align="center"
+          width="250px"
+          label="上传时间"
+        >
+          <template slot-scope="scope">
+            <el-date-picker
+              v-model="scope.row.createTime"
+              type="date"
+              disabled
+              placeholder="上传时间"
+              format="yyyy-MM-dd HH:mm"
+              value-format="timestamp"
+            ></el-date-picker>
+          </template>
+        </el-table-column>
+        <el-table-column
+          prop="fUrl"
+          header-align="center"
+          align="center"
+          width="300px"
+          label="上传附件"
+        >
+          <template slot-scope="scope" >
+            <el-upload
+              class="upload-demo"
+              :action="uploadImgUrl"
+              :on-success="(res,file)=>{handleSucces(scope,res,file)}"
+              :headers="headers"
+              style="width:25%;float: left"
+              :show-file-list="false"
+              :limit="1"
+            >
+              <el-button size="small" type="primary" style="margin-left:20px">点击上传</el-button>
+            </el-upload>
+            <el-button size="small" type="primary" @click="checkFile(scope)">查看</el-button>
+            <el-button size="small" type="primary" @click="deleteFile(scope)">删除</el-button>
+          </template>
+        </el-table-column>
+        <el-table-column header-align="center" align="center" label="操作">
+          <template slot-scope="scope">
+            <el-button
+              @click.native.prevent="deleteRow(scope.$index, relevantAttachments)"
+              size="small"
+            >移除
+            </el-button>
+          </template>
+        </el-table-column>
+      </el-table>
 
+      <span>
+        <el-button type="primary" style="margin-top: 20px;" @click="save">确定</el-button>
+        <el-button type="primary" style="margin-top: 20px;" @click="dialogVisible = false , relevantAttachments = []">取消</el-button>
+      </span>
+    </el-dialog>
   </div>
 </template>
 
 <script>
   import { listCorps, addmodify,getaddress} from "@/api/kaihe/containerNews/modifyPage";
   import Global from '@/layout/components/global'
+  import { getType } from '@/api/kaihe/containerNews/boxInformation'
+  import { getToken } from '@/utils/auth'
   export default {
     name: "boxDistribution",
     components: {
     },
     data() {
       return {
+        uploadImgUrl: process.env.VUE_APP_BASE_API + "/common/upload", // 上传的图片服务器地址
+        relevantAttachments:[],
+        headers: { Authorization: "Bearer " + getToken(), },
+        //集装箱尺码字典表
+        CntrsizeOptions:[],
+        //模糊查询箱类型
+        typeOptions:[],
+        //附件上传弹窗
+        dialogVisible: false,
+        //调箱动作字典表
+        boxActionOptions:[],
+        //集装箱主字典表
+        ownerOptions:[],
         //模糊下拉查询地点
         addressOptions:[],
         //空重字典表
@@ -150,17 +407,25 @@
         // 客户详情表格数据
         corpsList: [],
         // 查询参数
-        queryParams: {
-          // pageNum: 1,
-          // pageSize: 10,
-          // fUpdateaddress:null,
-          // fUpdateEF:null,
-          // fStatus:null,
-          // fBdate:null,
+        queryParams:{
+          fUpdateaddress:null,
+          fUpdateEF:null,
+          fStatus:null,
+          fBdate:null,
+          fOpctnstatus:null
+        },
+        queryParam: {
           fNo:null,
+          fTypeid:null,
+          cntrsize:null,
+          fOwner:null,
+          fUpdateef:null,
+          fCntrstatus:null
         },
         select:'',
         querDate:[],
+        file:[],
+        row:[]
       };
     },
     //页面跳转后传递参数
@@ -182,13 +447,115 @@
       this.getDicts("f_cntrstatus").then(response => {
         this.cntrstatusOptions = response.data;
       });
+      this.getDicts("f_owner").then(response => {
+        this.ownerOptions = response.data;
+      });
+      this.getDicts("f_opctnstatus").then(response => {
+        this.boxActionOptions = response.data;
+      });
+      this.getDicts("f_cntrsize").then(response => {
+        this.CntrsizeOptions = response.data;
+      });
       this.addressMethod()
+      this.boxTypeMethod()
     },
-
     methods: {
+      save(){
+        this.row.accessoryList = this.file
+        this.dialogVisible = false
+        this.relevantAttachments = []
+        console.log(this.row)
+      },
+      //模糊查询箱类型
+      boxTypeMethod(){
+        let queryParams = { pageNum: 1,};
+        getType().then(response =>{
+          this.typeOptions = response.rows
+        })
+      },
+      deleteRow(index, rows) {
+        rows.splice(index, 1);
+      },
+      // 新增附件上传
+      addRelevt() {
+        this.relevantAttachments.push({
+          fUrl: null,
+          fName: null,
+          // createBy: this.form.createBy,
+          createTime: Date.parse(new Date()),
+        });
+      },
+      //附件删除
+      deleteFile(scope){
+        this.relevantAttachments[scope.$index].fName = ''
+        this.relevantAttachments[scope.$index].fUrl = ''
+        if(this.relevantAttachments[scope.$index].fUrl === ''){
+          this.$message.success("删除成功")
+        }else{
+          this.$message.error("未知错误,删除失败")
+        }
+      },
+      //附件查看
+      checkFile(scope){
+        if(this.relevantAttachments[scope.$index].fUrl){
+          window.open(this.relevantAttachments[scope.$index].fUrl)
+        }else{
+          this.$message.error("请上传附件")
+        }
+      },
+      //上传附件
+      handleSucces(scope,res,file){
+        console.log(res)
+        console.log(this.relevantAttachments[scope.$index])
+        this.relevantAttachments[scope.$index].fName = res.fileName
+        this.relevantAttachments[scope.$index].fUrl = res.url
+        this.file.push({
+          fName:this.relevantAttachments[scope.$index].fName,
+          fUrl:this.relevantAttachments[scope.$index].fUrl,
+          createTime:this.relevantAttachments[scope.$index].createTime
+        })
+        if(this.relevantAttachments[scope.$index].fUrl === ''){
+          this.$message.error('上传失败')
+        }{
+          this.$message.success("上传成功")
+        }
+      },
+      uploadFile(row){
+        this.row = row
+        this.dialogVisible = true
+        if(row.accessoryList !== null){
+          console.log(row.accessoryList)
+          this.relevantAttachments = row.accessoryList
+        }else if(this.row.length === 0){
+          this.relevantAttachments = []
+        }else {
+          this.relevantAttachments = []
+        }
+      },
+      // handleClose(done) {
+      //   this.$confirm('确认关闭?')
+      //     .then(_ => {
+      //       done();
+      //
+      //     })
+      //     .catch(_ => {});
+      // },
+      /** 重置按钮操作 */
+      resetQuery() {
+        this.queryParam = {
+          fNo:'',
+          fTypeid:'',
+          cntrsize:'',
+          fOwner:'',
+          fUpdateef:'',
+          fCntrstatus:''
+        };
+        this.search();
+      },
       //搜索
       search(){
-        let querDates = Object.assign(this.querDate ,this.queryParams)
+        let querDates = Object.assign(this.querDate ,this.queryParam)
+        console.log(this.queryParam)
         addmodify(querDates).then(response=>{
           this.corpsList = response.rows
         })
@@ -204,27 +571,23 @@
       determine(){
         let data = []
         for(let item in this.select) {
+          console.log(this.select[item])
           for(let li in this.corpsList) {
-            if (this.corpsList[li].fId == this.select[item].fId) {
-              if (!this.select[item].foldSite) {
-                this.select[item].foldSite = this.corpsList[li].fUpdateaddress
-              }
-              if (!this.select[item].foldFUpdateef) {
-                this.select[item].foldFUpdateef = this.corpsList[li].updateEFName
-                this.$set(this.select[item],'FUpdateef',this.corpsList[li].fUpdateef)
-              }
-              if (!this.select[item].foldFCntrstatus) {
-                this.select[item].foldFCntrstatus = this.corpsList[li].cntrstatusName
-                this.$set(this.select[item],'FCntrstatus',this.corpsList[li].fCntrstatus)
+            if(!this.select[item].foldSite){
+              this.$message.error("选择调入地点")
+              return false
+            }else {
+                if (!this.select[item].foldFUpdateef) {
+                  this.select[item].foldFUpdateef = this.corpsList[li].updateEFName
+                  this.$set(this.select[item],'FUpdateef',this.corpsList[li].fUpdateef)
+                }
+                if (!this.select[item].foldFCntrstatus) {
+                  this.select[item].foldFCntrstatus = this.corpsList[li].cntrstatusName
+                  this.$set(this.select[item],'FCntrstatus',this.corpsList[li].fCntrstatus)
+                }
               }
-              // if (!this.select[item].foldtime) {
-              //   this.select[item].foldtime = this.corpsList[li].fUpdatetime
-              // }
-              this.select[item].fVsl = this.corpsList[li].fVsl
-              this.select[item].fVoy = this.corpsList[li].fVoy
-              this.select[item].fMblno = this.corpsList[li].fMblno
             }
-        }
+
           data.push({
             fId: this.select[item].fId,
             foldSite: this.select[item].fold,
@@ -234,32 +597,47 @@
             fVsl: this.select[item].fVsl,
             fVoy:this.select[item].fVoy,
             fMblno:this.select[item].fMblno,
+            fOpctnstatus:this.select[item].boxAdjustmentAction,
+            remark:this.select[item].remark,
+            accessoryList:this.file
           })
         }
+
         let tCntrno = data
         listCorps(tCntrno).then(response =>{
           this.$message.success("提交成功")
           // this.$router.push({
           //   path: "/containerNews/boxDistribution",
           // });
-          let view = {
-            fullPath: "/containerNews/modifyPage?data=%7B%22typeidName%22%3A%221%22,%22fUpdateaddress%22%3A%22%E5%B1%B1%E4%B8%9C%22%7D",
-            hash: "",
-            matched: Array(2),
-            meta: Object,
-            name: "ModifyPage",
-            params: Object,
-            path: "/containerNews/modifyPage",
-            query: Object,
-            title: "修改页面"
+          console.log(this.corpsList.length)
+          if(this.querDate){
+            addmodify(this.querDate).then(response =>{
+              this.corpsList = response.rows
+              this.loading = false;
+              if(response.rows.length === 0){
+                let view = {
+                  fullPath: "/containerNews/modifyPage?data=%7B%22typeidName%22%3A%221%22,%22fUpdateaddress%22%3A%22%E5%B1%B1%E4%B8%9C%22%7D",
+                  hash: "",
+                  matched: Array(2),
+                  meta: Object,
+                  name: "ModifyPage",
+                  params: Object,
+                  path: "/containerNews/modifyPage",
+                  query: Object,
+                  title: "修改页面"
+                }
+                this.$router.push({ path: '/containerNews/boxDistribution'})
+                this.$store.dispatch('tagsView/delView', view).then(({ visitedViews }) => {
+                  if (this.isActive(view)) {
+                    this.toLastView(visitedViews, view)
+                  }
+                })
+                Global.$emit("removeCache", "closeSelectedTag", view);
+              }
+
+            })
           }
-          this.$router.push({ path: '/containerNews/boxDistribution'})
-          this.$store.dispatch('tagsView/delView', view).then(({ visitedViews }) => {
-            if (this.isActive(view)) {
-              this.toLastView(visitedViews, view)
-            }
-          })
-          Global.$emit("removeCache", "closeSelectedTag", view);
+          console.log(this.corpsList.length)
         })
       },
       //地点带入
@@ -285,6 +663,17 @@
           }
         }
       },
+      //调箱动作带入选中列表
+      changeAction(){
+        for(let item in this.select){
+          for(let li in this.boxActionOptions){
+            if(this.queryParams.fOpctnstatus == this.boxActionOptions[li].dictValue){
+              this.$set(this.select[item],'fOpctnstatus',this.boxActionOptions[li].dictLabel)
+              this.$set(this.select[item],'boxAdjustmentAction',this.queryParams.fOpctnstatus)
+            }
+          }
+        }
+      },
       //状态带入选中列表
       changeStatus(){
         for(let item in this.select) {
@@ -305,6 +694,7 @@
       handleSelectionChange(selection) {
         this.ids = selection.map(item => item.fId)
         this.select = selection
+        console.log(this.select)
       },
     }
   };