Browse Source

提交陆运

caojunjie 3 years ago
parent
commit
7080442ad8

+ 8 - 0
src/api/basicData/customerInformation.js

@@ -150,3 +150,11 @@ export function synchronizationCopy(data) {
     data: data
   })
 }
+// 创建用户
+export function creatingUsers(data) {
+  return request({
+    url: '/api/blade-client/corpsattn/user',
+    method: 'post',
+    data: data
+  })
+}

+ 8 - 0
src/api/landTransportation/driver.js

@@ -38,3 +38,11 @@ export function removeFile(data) {
         method: 'POST'
     })
 }
+//创建用户
+export function driverUser(data) {
+    return request({
+        url: '/api/blade-client/land-driver/user',
+        method: 'POST',
+        data:data
+    })
+}

+ 25 - 0
src/api/landTransportation/index.js

@@ -194,3 +194,28 @@ export function dispatchBatch(data) {
         data:data
     })
 }
+//打开变更记录
+export function recordingDetails(data) {
+    return request({
+        url: '/api/blade-land/order-change/all-list',
+        method: 'get',
+        params:data
+    })
+}
+//调度变更提交
+export function changeFleet(data) {
+    return request({
+        url: '/api/blade-land/order-item/change-fleet',
+        method: 'post',
+        data:data
+    })
+}
+//派车变更提交
+export function changeVehicle(data) {
+    return request({
+        url: '/api/blade-land/order-item/change-vehicle',
+        method: 'post',
+        data:data
+    })
+}
+

+ 130 - 7
src/views/basicData/customerInformation/detailsPageEdit.vue

@@ -201,7 +201,11 @@
             @row-save="rowSave"
             @row-update="rowUpdate"
             @row-del="rowDel"
-          ></avue-crud>
+          >
+            <template slot-scope="{type,size,row}" slot="menu">
+              <el-button icon="el-icon-check" :size="size" :type="type" @click="creatingUsers(row)">创建用户</el-button>
+            </template>
+          </avue-crud>
         </basic-container>
         <!-- <containerTitle title="客户优势项目"></containerTitle>
         <basic-container style="margin-bottom: 10px">
@@ -254,6 +258,19 @@
     <el-button type="primary" @click="confirmSynchronization">确 定</el-button>
   </span>
     </el-dialog>
+    <el-dialog
+        title="创建用户"
+        :visible.sync="dialogVisibleBt"
+        append-to-body
+        width="60%">
+      <avue-form ref="formDataTwo" v-model="formDataTwo" :option="optionData">
+
+      </avue-form>
+      <span slot="footer" class="dialog-footer">
+    <el-button @click="dialogVisibleBt = false">取 消</el-button>
+    <el-button type="primary" @click="confirmSynchronizationTwo">确 定</el-button>
+  </span>
+    </el-dialog>
   </div>
 </template>
 
@@ -269,7 +286,7 @@ import {
   corpsfiles,
   corpsitem,
   areaTypeTree,
-  corpsAddrDelete, synchronizationCopy
+  corpsAddrDelete, synchronizationCopy,creatingUsers
 } from "@/api/basicData/customerInformation";
 import customerContact from "./configuration/customerContact.json";
 import advantageProject from "./configuration/advantageProject.json";
@@ -278,6 +295,10 @@ import flowDialog from "@/components/flow-dialog/main";
 import { customerParameter } from "@/enums/management-type";
 import { gainUser } from "@/api/basicData/customerInquiry";
 import addressOption from "./configuration/addressOption.json";
+import website from "@/config/website";
+import {getRoleTree} from "@/api/system/role";
+import {getDeptTree} from "@/api/system/dept";
+import {getPostList} from "@/api/system/post";
 
 export default {
   name: "detailsPage",
@@ -285,6 +306,61 @@ export default {
     return {
       userList: [],
       formData:{},
+      formDataTwo:{},
+      optionData:{
+        span:8,
+        menuBtn:false,
+        column:[{
+          label: "所属角色",
+          prop: "roleId",
+          multiple: true,
+          type: "tree",
+          dicData: [],
+          props: {
+            label: "title"
+          },
+          checkStrictly: true,
+          slot: true,
+          rules: [{
+            required: true,
+            message: "请选择所属角色",
+            trigger: "click"
+          }]
+        },{
+          label: "所属部门",
+          prop: "deptId",
+          type: "tree",
+          multiple: true,
+          dicData: [],
+          props: {
+            label: "title"
+          },
+          checkStrictly: true,
+          slot: true,
+          rules: [{
+            required: true,
+            message: "请选择所属部门",
+            trigger: "click"
+          }]
+        },
+          {
+            label: "所属岗位",
+            prop: "postId",
+            type: "tree",
+            multiple: true,
+            dicData: [],
+            props: {
+              label: "postName",
+              value: "id"
+            },
+            rules: [{
+              required: true,
+              message: "请选择所属岗位",
+              trigger: "click"
+            }],
+          }]
+      },
+      dialogVisibleBt:false,
       dialogVisible:false,
       option:{
         span:12,
@@ -708,6 +784,7 @@ export default {
       addressOption: addressOption,
       addressForm: {},
       addressData: [],
+      formRow:{},
       // 包装要求
       packageOptions: []
     };
@@ -721,6 +798,7 @@ export default {
     flowDialog
   },
   created() {
+    this.initData(website.tenantId)
     if (this.$store.getters.userInfo.tenant_id === "096359") {
       let list = ["profitReturn", "usedProfit", "surplusProfit", "monthProfit"];
       for (let item in list) {
@@ -764,6 +842,54 @@ export default {
     });
   },
   methods: {
+    initData(tenantId) {
+      getRoleTree(tenantId).then(res => {
+        const column = this.findObject(this.optionData.column, "roleId");
+        column.dicData = res.data.data;
+      });
+      getDeptTree(tenantId).then(res => {
+        const column = this.findObject(this.optionData.column, "deptId");
+        column.dicData = res.data.data;
+      });
+      getPostList(tenantId).then(res => {
+        const column = this.findObject(this.optionData.column, "postId");
+        column.dicData = res.data.data;
+      });
+    },
+    //确认创建用户
+    confirmSynchronizationTwo(){
+      this.$refs['formDataTwo'].validate((valid, done) => {
+        done()
+        if (valid) {
+          let data = JSON.parse(JSON.stringify(this.formDataTwo))
+          data.deptId = data.deptId.join(",");
+          data.roleId = data.roleId.join(",");
+          data.postId = data.postId.join(",");
+          creatingUsers({
+            ...data,
+            id:this.formRow.id
+          }).then(res=>{
+            this.dialogVisibleBt = false
+            this.$message.success('创建用户成功,默认帐号:联系人名称。默认密码:123456');
+          })
+        } else {
+          return false;
+        }
+      });
+    },
+    creatingUsers(row){
+      if (row.id){
+        if (row.tel){
+          this.dialogVisibleBt = true
+          this.formDataTwo = {}
+          this.formRow = row
+        }else {
+          this.$message.error('请输入手机号');
+        }
+      }else {
+        this.$message.error('请保存数据后再点击');
+      }
+    },
     //新增客户联系人保存触发
     rowSave(row, done, loading) {
       console.log(row, done, loading);
@@ -932,11 +1058,8 @@ export default {
                 type: "success",
                 message: this.form.id ? "修改成功!" : "新增成功!"
               });
-              this.$router.$avueRouter.closeTag();
-              this.$router.push({
-                path: "/basicData/customerInformation/index",
-                query: {}
-              });
+              this.disabled = false;
+              this.$emit("goBack");
             }
           });
         } else {

+ 2 - 2
src/views/basicData/factoryInformation/factoryInformation/index.vue

@@ -212,7 +212,7 @@ export default {
               res: "data"
             },
             tip: "请上传 .xls,.xlsx 标准格式文件",
-            action: "/api/blade-client/corpsdesc/import-desc?corpType=KH"
+            action: "/api/blade-client/corpsdesc/import-factory-data"
           }
         ]
       }
@@ -246,7 +246,7 @@ export default {
   methods: {
     derivation() {
       window.open(
-        `/api/blade-client/corpsdesc/export-template?${
+        `/api/blade-client/corpsdesc/import-factory-template?${
           this.website.tokenHeader
         }=${getToken()}`
       );

+ 2 - 2
src/views/basicData/fleetInformation/index.vue

@@ -212,7 +212,7 @@ export default {
               res: "data"
             },
             tip: "请上传 .xls,.xlsx 标准格式文件",
-            action: "/api/blade-client/corpsdesc/import-desc?corpType=KH"
+            action: "/api/blade-client/corpsdesc/import-fleet-data"
           }
         ]
       }
@@ -246,7 +246,7 @@ export default {
   methods: {
     derivation() {
       window.open(
-        `/api/blade-client/corpsdesc/export-template?${
+        `/api/blade-client/corpsdesc/import-fleet-template?${
           this.website.tokenHeader
         }=${getToken()}`
       );

+ 215 - 3
src/views/basicData/landTransportation/driverInformation/index.vue

@@ -15,6 +15,13 @@
         :before-open="beforeOpen"
         @search-criteria-switch="searchCriteriaSwitch"
         @row-save="rowSave">
+      <template slot="menuLeft">
+        <el-button type="primary"
+                   size="small"
+                   icon="el-icon-upload2"
+                   @click="handleImport">导入
+        </el-button>
+      </template>
       <template slot="urlForm" slot-scope="{ row }">
         <el-input
             placeholder="文件地址"
@@ -45,10 +52,38 @@
       <template slot-scope="scope" slot="fleetId">
         <span>{{scope.row.fleetName}}</span>
       </template>
-      <template slot-scope="{type,size}" slot="menu">
-        <el-button icon="el-icon-check" :size="size" :type="type">创建用户</el-button>
+      <template slot-scope="{type,size,row}" slot="menu">
+        <el-button icon="el-icon-check" :size="size" :type="type" @click="creatingUsers(row)">创建用户</el-button>
       </template>
     </avue-crud>
+    <el-dialog
+        title="创建用户"
+        :visible.sync="dialogVisible"
+        append-to-body
+        width="60%">
+      <avue-form ref="formData" v-model="formData" :option="optionData">
+
+      </avue-form>
+      <span slot="footer" class="dialog-footer">
+    <el-button @click="dialogVisible = false">取 消</el-button>
+    <el-button type="primary" @click="confirmSynchronization">确 定</el-button>
+  </span>
+    </el-dialog>
+    <el-dialog title="导入"
+               append-to-body
+               :visible.sync="excelBox"
+               width="555px">
+      <avue-form :option="excelOption" v-model="excelForm" :upload-after="uploadAfter">
+        <template slot="excelTemplate">
+          <el-button type="primary" @click="handleTemplate">
+            点击下载<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>
 </div>
 </template>
@@ -59,14 +94,125 @@ import {
   saveDelegationList,
   removeDelegationList,
   selectInvoiceList,
-  detailDelegationList, removeFile
+  detailDelegationList, removeFile,driverUser
 } from "@/api/landTransportation/driver";
+import website from "@/config/website";
+import {getRoleTree} from "@/api/system/role";
+import {getDeptTree} from "@/api/system/dept";
+import {getPostList} from "@/api/system/post";
 export default {
   name: "index",
   data(){
     return{
       form:{},
+      formRow:{},
       dataList:[],
+      formData:{},
+      optionData:{
+        span:8,
+        menuBtn:false,
+        column:[{
+          label: "所属角色",
+          prop: "roleId",
+          multiple: true,
+          type: "tree",
+          dicData: [],
+          props: {
+            label: "title"
+          },
+          checkStrictly: true,
+          slot: true,
+          rules: [{
+            required: true,
+            message: "请选择所属角色",
+            trigger: "click"
+          }]
+        },{
+          label: "所属部门",
+          prop: "deptId",
+          type: "tree",
+          multiple: true,
+          dicData: [],
+          props: {
+            label: "title"
+          },
+          checkStrictly: true,
+          slot: true,
+          rules: [{
+            required: true,
+            message: "请选择所属部门",
+            trigger: "click"
+          }]
+        },
+          {
+            label: "所属岗位",
+            prop: "postId",
+            type: "tree",
+            multiple: true,
+            dicData: [],
+            props: {
+              label: "postName",
+              value: "id"
+            },
+            rules: [{
+              required: true,
+              message: "请选择所属岗位",
+              trigger: "click"
+            }],
+          }]
+      },
+      excelOption: {
+        submitBtn: false,
+        emptyBtn: false,
+        column: [
+          // {
+          //   label: "数据覆盖",
+          //   prop: "isCovered",
+          //   type: "switch",
+          //   align: "center",
+          //   width: 80,
+          //   dicData: [
+          //     {
+          //       label: "否",
+          //       value: 0
+          //     },
+          //     {
+          //       label: "是",
+          //       value: 1
+          //     }
+          //   ],
+          //   value: 0,
+          //   slot: true,
+          //   rules: [
+          //     {
+          //       required: true,
+          //       message: "请选择是否覆盖",
+          //       trigger: "blur"
+          //     }
+          //   ]
+          // },
+          {
+            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-client/land-driver/import-data"
+          }
+        ]
+      },
+      excelForm:{},
+      dialogVisible:false,
       loading:false,
       page: {
         pageSize: 10,
@@ -74,6 +220,7 @@ export default {
         total: 0,
         pageSizes: [10,50,100,200,300]
       },
+      excelBox:false,
       action: "/api/blade-resource/oss/endpoint/put-file",
       headers: { "Blade-Auth": "Bearer " + getToken() },
       option:{
@@ -120,6 +267,11 @@ export default {
           cell: true,
           overHidden: true,
           search:true,
+          rules: [{
+            required: true,
+            message: " ",
+            trigger: "blur"
+          }]
         },{
           label: '所属车队',
           prop: 'fleetId',
@@ -254,6 +406,7 @@ export default {
     this.option.column.forEach(item => {
       if (item.search) i++
     })
+    this.initData(website.tenantId)
     if (i % 3 !== 0){
       const num = 3 - Number(i % 3)
       this.option.searchMenuSpan = num * 8;
@@ -261,6 +414,65 @@ export default {
     }
   },
   methods:{
+    handleImport() {
+      this.excelBox = true;
+    },
+    uploadAfter(res, done, loading, column) {
+      this.excelBox = false;
+      this.refreshChange();
+      done();
+    },
+    refreshChange() {
+      this.onLoad(this.page, {});
+    },
+    handleTemplate() {
+      window.open(`/api/blade-client/land-driver/import-template?${this.website.tokenHeader}=${getToken()}`);
+    },
+    //确认创建用户
+    confirmSynchronization(){
+      this.$refs['formData'].validate((valid, done) => {
+        done()
+        if (valid) {
+          let data = JSON.parse(JSON.stringify(this.formData))
+          data.deptId = data.deptId.join(",");
+          data.roleId = data.roleId.join(",");
+          data.postId = data.postId.join(",");
+          driverUser({
+            ...data,
+            id:this.formRow.id
+          }).then(res=>{
+            this.dialogVisible = false
+            this.$message.success('创建用户成功,默认帐号:司机名称。默认密码:123456');
+          })
+        } else {
+          return false;
+        }
+      });
+    },
+    creatingUsers(row){
+      console.log(row)
+      if (row.tel){
+        this.dialogVisible = true
+        this.formData = {}
+        this.formRow = row
+      }else {
+        this.$message.error('请输入手机号');
+      }
+    },
+    initData(tenantId) {
+      getRoleTree(tenantId).then(res => {
+        const column = this.findObject(this.optionData.column, "roleId");
+        column.dicData = res.data.data;
+      });
+      getDeptTree(tenantId).then(res => {
+        const column = this.findObject(this.optionData.column, "deptId");
+        column.dicData = res.data.data;
+      });
+      getPostList(tenantId).then(res => {
+        const column = this.findObject(this.optionData.column, "postId");
+        column.dicData = res.data.data;
+      });
+    },
     // 获得高度
     searchCriteriaSwitch(type){
       if (type){

+ 59 - 0
src/views/basicData/landTransportation/vehicleInformation/index.vue

@@ -21,6 +21,13 @@
           @size-change="sizeChange"
           @search-criteria-switch="searchCriteriaSwitch"
       >
+        <template slot="menuLeft">
+          <el-button type="primary"
+                     size="small"
+                     icon="el-icon-upload2"
+                     @click="handleImport">导入
+          </el-button>
+        </template>
         <template slot="urlForm" slot-scope="{ row }">
           <el-input
               placeholder="文件地址"
@@ -59,6 +66,21 @@
           <span>{{ row.driverName }}</span>
         </template>
       </avue-crud>
+      <el-dialog title="导入"
+                 append-to-body
+                 :visible.sync="excelBox"
+                 width="555px">
+        <avue-form :option="excelOption" v-model="excelForm" :upload-after="uploadAfter">
+          <template slot="excelTemplate">
+            <el-button type="primary" @click="handleTemplate">
+              点击下载<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>
   </div>
 </template>
@@ -72,6 +94,31 @@ export default {
   data() {
     return {
       dataList: [],
+      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: "/blade-client/land-vehicle/import-data"
+          }
+        ]
+      },
+      excelForm:{},
       option: {
         dialogWidth: '85%',
         searchIcon: true,
@@ -411,6 +458,7 @@ export default {
       headers: {"Blade-Auth": "Bearer " + getToken()},
       ids: [], // id集合
       form: {},
+      excelBox:false
     }
   },
   created() {
@@ -425,6 +473,17 @@ export default {
     }
   },
   methods: {
+    handleImport() {
+      this.excelBox = true;
+    },
+    uploadAfter(res, done, loading, column) {
+      this.excelBox = false;
+      this.refreshChange();
+      done();
+    },
+    handleTemplate() {
+      window.open(`/api/blade-client/land-vehicle/import-template?${this.website.tokenHeader}=${getToken()}`);
+    },
     //点击行编辑时查看
     beforeOpen(done, type) {
       if (this.form.id) {

+ 186 - 35
src/views/landTransportation/dispatchingCars/detailPage.vue

@@ -79,6 +79,35 @@
         </el-table-column>
       </el-table>
     </basic-container>
+    <containerTitle title="委托信息"></containerTitle>
+    <basic-container>
+      <avue-form :option="goodsOptionForm" v-model="goodsForm">
+        <template slot-scope="scope" slot="corpId">
+          <crop-select
+              v-model="goodsForm.corpId"
+              disabled
+          ></crop-select>
+        </template>
+        <template slot-scope="scope" slot="agentId">
+          <crop-select
+              :disabled="goodsForm.status === 1"
+              v-model="goodsForm.agentId"
+          ></crop-select>
+        </template>
+        <template slot-scope="scope" slot="polId">
+          <port-info
+              v-model="goodsForm.polId"
+              :disabled="goodsForm.status === 1"
+          />
+        </template>
+        <template slot-scope="scope" slot="podId">
+          <port-info
+              v-model="goodsForm.polId"
+              :disabled="goodsForm.status === 1"
+          />
+        </template>
+      </avue-form>
+    </basic-container>
     <containerTitle title="车辆信息"></containerTitle>
     <basic-container>
       <avue-crud
@@ -124,38 +153,23 @@
               v-if="row.status===1"
           >取消调度
           </el-button>
+          <el-button
+              size="small"
+              type="text"
+              @click="changeFleetT(row, index)"
+              v-if="row.status===2||row.status===3"
+          >变 更
+          </el-button>
+          <el-button
+              size="small"
+              type="text"
+              @click="recordsOfChanges(row, index)"
+              v-if="row.status > 1"
+          >变更记录
+          </el-button>
         </template>
       </avue-crud>
     </basic-container>
-    <containerTitle title="委托信息"></containerTitle>
-    <basic-container>
-      <avue-form :option="goodsOptionForm" v-model="goodsForm">
-        <template slot-scope="scope" slot="corpId">
-          <crop-select
-              v-model="goodsForm.corpId"
-              disabled
-          ></crop-select>
-        </template>
-        <template slot-scope="scope" slot="agentId">
-          <crop-select
-              :disabled="goodsForm.status === 1"
-              v-model="goodsForm.agentId"
-          ></crop-select>
-        </template>
-        <template slot-scope="scope" slot="polId">
-          <port-info
-              v-model="goodsForm.polId"
-              :disabled="goodsForm.status === 1"
-          />
-        </template>
-        <template slot-scope="scope" slot="podId">
-          <port-info
-              v-model="goodsForm.polId"
-              :disabled="goodsForm.status === 1"
-          />
-        </template>
-      </avue-form>
-    </basic-container>
     <span>
   <!--    <containerTitle title="费用明细"></containerTitle>-->
       <!--    <basic-container>-->
@@ -278,6 +292,35 @@
           <el-button type="primary" @click="saveScheduling" size="small">调 度</el-button>
         </span>
     </el-dialog>
+    <el-dialog
+        title="变更"
+        :visible.sync="dialogChange"
+        append-to-body
+        width="70%">
+      <avue-form :option="optionData" v-model="formData" ref="saveForm">
+        <template slot="fleetId">
+          <crop-select
+              v-model="formData.fleetId"
+              corpType="CD"
+              @getCorpData="getCorpData"
+          ></crop-select>
+        </template>
+      </avue-form>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="dialogChange = false" size="small">关 闭</el-button>
+          <el-button type="primary" @click="confirmChange" size="small">确 定</el-button>
+      </span>
+    </el-dialog>
+    <el-dialog
+        title="变更记录"
+        :visible.sync="dialogRecord"
+        append-to-body
+        width="70%">
+      <avue-crud :data="dataRecord" :option="optionRecord" style="margin-top: -43px"></avue-crud>
+      <span slot="footer" class="dialog-footer">
+          <el-button @click="dialogRecord = false" size="small">关 闭</el-button>
+        </span>
+    </el-dialog>
   </div>
 </template>
 
@@ -288,7 +331,7 @@ import {
   detailDelegationList,
   removeCollection,
   dispatchCollection,
-  cancelDispatchCollection, dispatchBatch
+  cancelDispatchCollection, dispatchBatch, fleetDriverSave, recordingDetails, changeFleet
 } from "@/api/landTransportation";
 
 export default {
@@ -299,7 +342,85 @@ export default {
   },
   data() {
     return {
+      formData:{},
+      formDataList:{},
+      dialogChange:false,
+      optionData:{
+        span:12,
+        menuBtn:false,
+        column:[{
+          label: "车队",
+          prop: "fleetId",
+        },{
+          label: "应付陆运费",
+          prop: "landAmountC",
+          precision: 2,
+          controls: false,
+          type: 'number',
+        },{
+          label: '应收场站费',
+          width: 100,
+          precision: 2,
+          controls: false,
+          type: 'number',
+          prop: 'oneFeeD'
+        }, {
+          label: '应收港杂费',
+          width: 100,
+          precision: 2,
+          controls: false,
+          type: 'number',
+          prop: 'twoFeeD'
+        }, {
+          label: '应收扣款',
+          width: 100,
+          precision: 2,
+          controls: false,
+          type: 'number',
+          prop: 'threeFeeD'
+        }, {
+          label: '应收待时费',
+          width: 100,
+          precision: 2,
+          controls: false,
+          type: 'number',
+          prop: 'fourFeeD'
+        }, {
+          label: '应收其他',
+          width: 100,
+          precision: 2,
+          type: 'number',
+          controls: false,
+          prop: 'fiveFeeD'
+        }, {
+          label: '应收费用备注',
+          width: 245,
+          prop: 'feeRemarksD'
+        }]
+      },
       form:{},
+      dataRecord:[],
+      dialogRecord:false,
+      optionRecord:{
+        stripe:true,
+        refreshBtn:false,
+        columnBtn:false,
+        menu:false,
+        addBtn:false,
+        align:'center',
+        column:[
+          {
+            label:'变更内容',
+            prop:'content'
+          }, {
+            label:'变更人',
+            prop:'changeUserName'
+          }, {
+            label:'变更时间',
+            prop:'changeTime'
+          }
+        ]
+      },
       option: {
         span:12,
         menuBtn:false,
@@ -890,6 +1011,23 @@ export default {
     }
   },
   methods: {
+    getCorpData(val){
+      this.formData.fleetName = val.cname
+    },
+    confirmChange(){
+      console.log(this.form.id)
+      changeFleet({
+        ...this.formData,
+        id: this.formDataList.id,
+        orderId:this.goodsForm.id,
+        originalFleetName:this.formDataList.fleetName
+      }).then(res=>{
+        this.$refs.saveForm.resetForm()
+        this.entrustList = res.data.data
+        this.dialogChange = false
+        this.$message.success("变更成功");
+      })
+    },
     //多选触发
     selectionChange(list) {
       this.selectionList = list
@@ -898,11 +1036,6 @@ export default {
     batchScheduling() {
       this.form = {}
       this.dialogVisible = true
-      // if (this.selectionList.length === 0){
-      //   this.$message.error('请选择车辆信息');
-      // }else {
-      //   console.log(this.selectionList);
-      // }
     },
     //提交调度
     saveScheduling() {
@@ -966,6 +1099,11 @@ export default {
     },
     //箱信息保存
     rowSaveT(row, index, done, loading) {
+      if (row.$cellEdit) {
+        fleetDriverSave(row).then(res => {
+          this.$message.success("保存成功");
+        })
+      }
       this.$refs.crudContact.rowCell(row, index)
     },
     rowSaveWell(row, index, done, loading) {
@@ -993,6 +1131,19 @@ export default {
         this.$message.warning('请选择车队');
       }
     },
+    //变更车队
+    changeFleetT(row, index){
+      this.formDataList = row
+      this.dialogChange = true
+      this.formData = {}
+    },
+    //打开变更记录
+    recordsOfChanges(row, index){
+      this.dialogRecord = true
+      recordingDetails({itemId:row.id,kind:2}).then(res=>{
+        this.dataRecord = res.data.data
+      })
+    },
     //取消调度
     cancelDesignate(row, index) {
       this.$confirm('是否确定取消调度', '提示', {

+ 145 - 9
src/views/landTransportation/motorcadeDriver/index.vue

@@ -128,6 +128,20 @@
               @click="annexOpen(row, index)"
           >附 件
           </el-button>
+          <el-button
+              size="small"
+              type="text"
+              @click="changeFleetT(row, index)"
+              v-if="row.status===3"
+          >变 更
+          </el-button>
+          <el-button
+              size="small"
+              type="text"
+              @click="recordsOfChanges(row, index)"
+              v-if="row.status > 2"
+          >变更记录
+          </el-button>
         </template>
         <template slot="addressDetail" slot-scope="{ row,index}">
           <el-tooltip class="item" effect="dark" placement="top">
@@ -154,6 +168,29 @@
           <el-button type="primary" @click="saveAnnex" size="small" :disabled="form.status >= 2">保 存</el-button>
         </span>
       </el-dialog>
+
+      <el-dialog
+          title="变更"
+          :visible.sync="dialogChange"
+          append-to-body
+          width="70%">
+        <avue-form :option="optionData" v-model="formData" ref="saveForm">
+        </avue-form>
+        <span slot="footer" class="dialog-footer">
+        <el-button @click="dialogChange = false" size="small">关 闭</el-button>
+          <el-button type="primary" @click="confirmChange" size="small">确 定</el-button>
+      </span>
+      </el-dialog>
+      <el-dialog
+          title="变更记录"
+          :visible.sync="dialogRecord"
+          append-to-body
+          width="70%">
+        <avue-crud :data="dataRecord" :option="optionRecord" style="margin-top: -43px"></avue-crud>
+        <span slot="footer" class="dialog-footer">
+          <el-button @click="dialogRecord = false" size="small">关 闭</el-button>
+        </span>
+      </el-dialog>
     </basic-container>
   </div>
 </template>
@@ -165,7 +202,7 @@ import {
   driverQueryCollection,
   fleetList,
   motorcadeDriver,
-  fleetDriverSave, telephone, getAttachment, saveAttached
+  fleetDriverSave, telephone, getAttachment, saveAttached, recordingDetails, changeVehicle
 } from "@/api/landTransportation";
 
 export default {
@@ -173,9 +210,83 @@ export default {
   data() {
     return {
       key: 0,
+      optionData: {
+        span: 12,
+        menuBtn: false,
+        column: [{
+          label: "车号",
+          prop: "plateNo",
+          allowCreate: true,
+          overHidden: true,
+          filterable: true,
+          cascader: ['driverId'],
+          type: 'select',
+          dicUrl: "/api/blade-client/land-vehicle/vehicle-list",
+          props: {
+            label: "plateNo",
+            value: "plateNo"
+          },
+          change: (data) => {
+            fleetList().then(res => {
+              for (let item in res.data.data) {
+                if (data.value === res.data.data[item].plateNo) {
+                  this.formData.driverId = res.data.data[item].driverId
+                  this.formData.driverName = res.data.data[item].driverName
+                  this.formData.tel = res.data.data[item].tel
+                }
+              }
+            })
+          }
+        },{
+          label: "司机",
+          prop: "driverId",
+          type: 'select',
+          dicUrl: "/api/blade-client/land-driver/driver-list?vehicleId={{key}}",
+          props: {
+            label: "name",
+            value: "id"
+          },
+          change:(data) => {
+            telephone().then(res => {
+              for (let item in res.data.data) {
+                if (data.value === res.data.data[item].id) {
+                  this.formData.tel = res.data.data[item].tel
+                }
+              }
+            })
+          }
+        },{
+          label: "电话",
+          prop: "tel",
+        }]
+      },
+      dialogRecord: false,
+      dialogChange: false,
+      formData: {},
+      dataRecord: [],
+      optionRecord: {
+        stripe: true,
+        refreshBtn: false,
+        columnBtn: false,
+        menu: false,
+        addBtn: false,
+        align: 'center',
+        column: [
+          {
+            label: '变更内容',
+            prop: 'content'
+          }, {
+            label: '变更人',
+            prop: 'changeUserName'
+          }, {
+            label: '变更时间',
+            prop: 'changeTime'
+          }
+        ]
+      },
       form: {},
       dialogVisible: false,
-      orderList:[],
+      orderList: [],
       loading: false,
       page: {
         pageSize: 10,
@@ -269,7 +380,7 @@ export default {
           props: {
             label: "plateNo",
             value: "id"
-          },
+          }
         }, {
           label: '提单号',
           width: 100,
@@ -512,6 +623,31 @@ export default {
     }
   },
   methods: {
+    confirmChange() {
+      changeVehicle({
+        ...this.formData,
+        id: this.formDataList.id,
+        originalPlateNo:this.formDataList.vehicleId,
+        originalDriverName:this.formDataList.driverName,
+        originalTel:this.formDataList.tel
+      }).then(res=>{
+        this.dialogChange = false
+        this.onLoad(this.page)
+        this.$refs.saveForm.resetForm()
+      })
+    },
+    //变更信息
+    changeFleetT(row, index) {
+      this.formDataList = row
+      this.dialogChange = true
+    },
+    //打开变更记录
+    recordsOfChanges(row, index) {
+      this.dialogRecord = true
+      recordingDetails({itemId: row.id, kind: 3}).then(res => {
+        this.dataRecord = res.data.data
+      })
+    },
     //自定义列保存
     async saveColumn() {
       /**
@@ -633,21 +769,21 @@ export default {
       });
     },
     //打开附件
-    annexOpen(row, index){
+    annexOpen(row, index) {
       console.log(row, index)
       this.dialogVisible = true
       this.form = row
-      getAttachment({id:row.id}).then(res=>{
+      getAttachment({id: row.id}).then(res => {
         console.log(res)
         this.orderList = res.data.data
       })
     },
     //保存
-    saveAnnex(){
+    saveAnnex() {
       saveAttached({
-        id:this.form.id,
-        fileList:this.orderList
-      }).then(res=>{
+        id: this.form.id,
+        fileList: this.orderList
+      }).then(res => {
         this.annexOpen(this.form)
       })
     },

+ 44 - 34
src/views/landTransportation/placeAnOrder/detailPage.vue

@@ -99,6 +99,7 @@
             width="280">
           <template slot-scope="scope">
             <crop-select
+                :corpType="'GC'"
                 :disabled="goodsForm.status === 1"
                 v-model="scope.row.corpId"
                 @getCorpData="(row)=>{withAddress(row,scope)}"/>
@@ -131,6 +132,37 @@
         </el-table-column>
       </el-table>
     </basic-container>
+    <containerTitle title="委托信息"></containerTitle>
+    <basic-container>
+      <avue-form :option="goodsOptionForm" ref="goodsForm" v-model="goodsForm">
+        <template slot-scope="scope" slot="corpId">
+          <crop-select
+              :disabled="goodsForm.status === 1"
+              v-model="goodsForm.corpId"
+              @getCorpData="getCorpData"
+              :corpType="'KH'"
+          ></crop-select>
+        </template>
+        <template slot-scope="scope" slot="agentId">
+          <crop-select
+              :disabled="goodsForm.status === 1"
+              v-model="goodsForm.agentId"
+          ></crop-select>
+        </template>
+        <template slot-scope="scope" slot="polId">
+          <port-info
+              v-model="goodsForm.polId"
+              :disabled="goodsForm.status === 1"
+          />
+        </template>
+        <template slot-scope="scope" slot="podId">
+          <port-info
+              v-model="goodsForm.podId"
+              :disabled="goodsForm.status === 1"
+          />
+        </template>
+      </avue-form>
+    </basic-container>
     <containerTitle title="箱信息"></containerTitle>
     <basic-container v-if="goodsForm.status === 0 || !goodsForm.status">
       <avue-crud :data="entrustList"
@@ -178,37 +210,6 @@
           :option="vehicleOption">
       </avue-crud>
     </basic-container>
-    <containerTitle title="委托信息"></containerTitle>
-    <basic-container>
-      <avue-form :option="goodsOptionForm" ref="goodsForm" v-model="goodsForm">
-        <template slot-scope="scope" slot="corpId">
-          <crop-select
-              :disabled="goodsForm.status === 1"
-              v-model="goodsForm.corpId"
-              @getCorpData="getCorpData"
-              :corpType="'KH'"
-          ></crop-select>
-        </template>
-        <template slot-scope="scope" slot="agentId">
-          <crop-select
-              :disabled="goodsForm.status === 1"
-              v-model="goodsForm.agentId"
-          ></crop-select>
-        </template>
-        <template slot-scope="scope" slot="polId">
-          <port-info
-              v-model="goodsForm.polId"
-              :disabled="goodsForm.status === 1"
-          />
-        </template>
-        <template slot-scope="scope" slot="podId">
-          <port-info
-              v-model="goodsForm.podId"
-              :disabled="goodsForm.status === 1"
-          />
-        </template>
-      </avue-form>
-    </basic-container>
     <containerTitle title="费用明细"></containerTitle>
     <basic-container>
       <el-tabs v-model="activeIndex" @tab-click="handleSelect">
@@ -455,7 +456,7 @@ export default {
           }, {
             label: '车队',
             width: 200,
-            prop: 'fleetId'
+            prop: 'fleetName'
           }, {
             label: '应付陆运费',
             cell: true,
@@ -1096,7 +1097,13 @@ export default {
         address: ''
       }]
       getCorp().then(res=>{
-        this.goodsForm.corpId = res.data.data
+        console.log(res)
+        this.goodsForm = {
+          corpId:res.data.data.id,
+          businessType:"出口",
+          shippingMode:"集装箱",
+          belongCompany:res.data.data.belongCompany
+        }
       })
       this.entrustList = [{$cellEdit: true}]
     }
@@ -1321,9 +1328,12 @@ export default {
     },
     //选择地址客户带出地址
     withAddress(row, scope) {
+      console.log(row)
       if (!scope.row.key) scope.row.key = 0
       this.tableData[scope.$index].corpName = row.cname
-      this.tableData[scope.$index].address = row.attn
+      if (row.attn){
+        this.tableData[scope.$index].address = row.tel
+      }
       if (row.tel) {
         if (!row.attn) {
           this.tableData[scope.$index].address += row.tel