diff --git a/src/api/consigner/vehicle.js b/src/api/consigner/vehicle.js
index 9bdb547..7010f22 100644
--- a/src/api/consigner/vehicle.js
+++ b/src/api/consigner/vehicle.js
@@ -39,3 +39,26 @@ export const selectNameList = params => { return axios.get(`${baseServiceURL}/ma
 
 //多车定位
 export const queryMulVel = params => { return axios.get(`${baseServiceURL}/map/location/queryMulVel`, { params: params }); };
+
+//车载运单查询列表
+export const selectNewInventroyrecords = params => { return axios.get(`${baseServiceURL}/wms/vehicleWaybill/selectNewInventroyrecords`, { params: params }); };
+//车载运单新增
+export const addVehicleWaybill = params => { return http.post(`${baseServiceURL}/wms/vehicleWaybill/addVehicleWaybill`, params); };
+//车载运单删除
+export const delVehicleWaybill = params => { return axios.get(`${baseServiceURL}/wms/vehicleWaybill/delVehicleWaybill`, { params: params }); };
+//车载运单更新
+export const ediVehicleWaybill = params => { return http.post(`${baseServiceURL}/wms/vehicleWaybill/ediVehicleWaybill`, params); };
+//车辆派单
+export const paidan = params => { return http.post(`${baseServiceURL}/wms/vehicleWaybill/paidan`, params); };
+//查询车载派单记录列表
+export const selectByDispatchList = params => { return axios.get(`${baseServiceURL}/wms/tracker/selectByDispatchList`, { params: params }); };
+//手动新增车载派单记录
+export const addTracker = params => { return http.post(`${baseServiceURL}/wms/tracker/addTracker`, params); };
+//根据派单号查询运单列表
+export const selectListByDispatch = params => { return axios.get(`${baseServiceURL}/wms/vehicleWaybill/selectListByDispatch`, { params: params }); };
+//上传EXCEL
+export const UploadExcel = params => { return http.postExcelData(`${baseServiceURL}/wms/vehicleWaybill/upload`, params); };
+//车载货物图片上传
+export const uploadGoodsImage = params => { return http.postExcelData(`${baseServiceURL}/wms/vehicleWaybill/uploadGoodsImage`, params); };
+//查询货物图片列表
+export const selectPicsByDispatch = params => { return axios.get(`${baseServiceURL}/wms/vehicleWaybill/selectPicsByDispatch`, { params: params }); };
diff --git a/src/api/http.js b/src/api/http.js
index 9bfdda0..3b24a01 100644
--- a/src/api/http.js
+++ b/src/api/http.js
@@ -48,6 +48,16 @@ export default {
             }
         })
     },
+    postExcelData(url, data) {
+        return axios({
+            method: 'POST', // 请求协议
+            url: url, // 请求的地址
+            data: data, // post 请求的数据
+            headers: {
+                'Content-Type': 'multipart/form-data'
+            }
+        })
+    },
     get(url, params) {
         return axios({
             method: 'GET',
diff --git a/src/api/minio-config.js b/src/api/minio-config.js
new file mode 100644
index 0000000..8f58af5
--- /dev/null
+++ b/src/api/minio-config.js
@@ -0,0 +1,11 @@
+import Minio from 'minio';
+
+const minioClient = new Minio.Client({
+    endPoint: 'http://47.99.102.169',
+    port: 9000,
+    useSSL: false,
+    accessKey: 'ruitai',
+    secretKey: 'vmvnv1v2',
+});
+
+export default minioClient;
diff --git a/src/routes.js b/src/routes.js
index 57d391a..e239f20 100755
--- a/src/routes.js
+++ b/src/routes.js
@@ -112,6 +112,8 @@ import myTask from './views/technological/myTask.vue'
 import definition from './views/technological/definition.vue'
 
 //仓库场站管理
+import Tracker from './views/deploy/Tracker.vue'
+import VehicleWaybill from './views/deploy/VehicleWaybill.vue'
 import vehicle from './views/deploy/vehicle.vue'
 import trajectory from './views/deploy/trajectory.vue'
 import attendance from './views/deploy/attendance.vue'
@@ -573,6 +575,8 @@ let routes = [
         name: '仓库场站管理',
         iconCls:'el-icon-goods',
         children:[
+            {path:'/Tracker',component:Tracker,name:'派单记录'},
+            {path:'/VehicleWaybill',component:VehicleWaybill,name:'车载运单'},
             {path:'/vehicle',component:vehicle,name:'车辆定位'},
             {path:'/trajectory',component:trajectory,name:'车辆轨迹'},
             {path:'/attendance',component:attendance,name:'出勤历史'},
diff --git a/src/views/deploy/Tracker.vue b/src/views/deploy/Tracker.vue
new file mode 100644
index 0000000..97a501e
--- /dev/null
+++ b/src/views/deploy/Tracker.vue
@@ -0,0 +1,365 @@
+<template>
+    <div>
+        <div>
+            <el-descriptions class="margin-top" title="车辆信息" :column="3" :size="size" border>
+                <el-descriptions-item>
+                    <template slot="label">
+                        <i class="el-icon-user"></i>
+                        司机
+                    </template>
+                    {{carinfo.veOwnerName}}
+                </el-descriptions-item>
+                <el-descriptions-item>
+                    <template slot="label">
+                        <i class="el-icon-mobile-phone"></i>
+                        手机号
+                    </template>
+                    {{carinfo.ownerInsideTel}}
+                </el-descriptions-item>
+                <el-descriptions-item>
+                    <template slot="label">
+                        <i class="el-icon-truck"></i>
+                        车号
+                    </template>
+                    {{carinfo.domesticLisenceNo}}
+                </el-descriptions-item>
+                <el-descriptions-item>
+                    <template slot="label">
+                        <i class="el-icon-tickets"></i>
+                        驾驶证有效期
+                    </template>
+                    <el-tag size="small">{{carinfo.veFactoryDate}}</el-tag>
+                </el-descriptions-item>
+                <el-descriptions-item>
+                    <template slot="label">
+                        <i class="el-icon-shopping-cart-full"></i>
+                        车自重
+                    </template>
+                    {{carinfo.selfWt}}
+                </el-descriptions-item>
+                <el-descriptions-item>
+                    <template slot="label">
+                        <i class="el-icon-office-building"></i>
+                        地址
+                    </template>
+                    {{carinfo.proposer}}
+                </el-descriptions-item>
+            </el-descriptions>
+        </div>
+        <div style="margin-top: 10px">
+            <el-descriptions class="margin-top" title="派单列表" :column="3" :size="size" border></el-descriptions>
+            <el-table
+                    ref="multipleTable"
+                    :data="tableData"
+                    tooltip-effect="dark"
+                    style="width: 100%"
+                    >
+                <el-table-column
+                        prop="dispatch"
+                        label="派单号"
+                        width="150">
+                </el-table-column>
+                <el-table-column
+                        prop="awba"
+                        label="主单号"
+                        width="105">
+                </el-table-column>
+                <el-table-column
+                        prop="awbh"
+                        label="分单号"
+                        width="140">
+                </el-table-column>
+                <el-table-column
+                        prop="deststation"
+                        label="目的港"
+                        show-overflow-tooltip>
+                </el-table-column>
+                <el-table-column
+                        prop="pcs"
+                        label="件数"
+                        show-overflow-tooltip>
+                </el-table-column>
+                <el-table-column
+                        prop="weight"
+                        label="毛重"
+                        show-overflow-tooltip>
+                </el-table-column>
+                <el-table-column
+                        prop="vol"
+                        label="体积"
+                        show-overflow-tooltip>
+                </el-table-column>
+                <el-table-column
+                        prop="charge"
+                        label="应收"
+                        show-overflow-tooltip>
+                </el-table-column>
+            </el-table>
+        </div>
+        <div style="margin-top: 10px">
+            <el-descriptions class="margin-top" title="车辆跟踪" :column="3" :size="size" border>
+                <template slot="extra">
+                    <el-button type="primary" size="small" @click="addRecords">添加记录</el-button>
+                </template>
+            </el-descriptions>
+            <div>
+                <el-timeline :reverse="reverse">
+                    <el-timeline-item
+                            v-for="(activity, index) in activities"
+                            :key="index"
+                            :timestamp="activity.opertime">
+                        <span style="color: #5BB75B;font-weight: bold">状态:</span>{{activity.status}}--<span style="color: #5BB75B;font-weight: bold">跟踪信息:</span>{{activity.info}}
+                    </el-timeline-item>
+                </el-timeline>
+            </div>
+        </div>
+        <div>
+            <el-dialog
+                    title="添加车辆跟进信息"
+                    :visible.sync="dialogVisible"
+                    width="30%"
+                    :before-close="handleClose">
+                <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
+                    <el-form-item label="派单号" prop="dispatch">
+                        <el-input v-model="ruleForm.dispatch" disabled></el-input>
+                    </el-form-item>
+                    <el-form-item label="跟进状态" prop="status">
+                        <el-select v-model="ruleForm.status" placeholder="请选择状态" style="width: 100%">
+                            <el-option label="待装" value="待装"></el-option>
+                            <el-option label="在途" value="在途"></el-option>
+                            <el-option label="已到未卸" value="已到未卸"></el-option>
+                            <el-option label="已完成" value="已完成"></el-option>
+                        </el-select>
+                    </el-form-item>
+                    <el-form-item label="跟进信息" prop="info">
+                        <el-input v-model="ruleForm.info"></el-input>
+                    </el-form-item>
+                    <el-form-item>
+                        <el-button type="primary" @click="submitForm('ruleForm')">保存</el-button>
+                        <el-button @click="resetForm('ruleForm')">取消</el-button>
+                    </el-form-item>
+                </el-form>
+            </el-dialog>
+        </div>
+        <div>
+            <el-descriptions class="margin-top" title="货物照片" :column="3" :size="size" border>
+                <template slot="extra">
+                    <el-upload
+                            class="upload-demo"
+                            action=""
+                            :http-request="uploadRequest"
+                            :on-change="handleChange"
+                            :on-success="handleSuccess"
+                            :on-error="handleError"
+                            :before-upload="beforeUpload"
+                            multiple
+                            accept="image/*"
+                    >
+                        <el-button size="small" type="success">上传照片</el-button>
+                    </el-upload>
+                </template>
+            </el-descriptions>
+            <div>
+                <el-image
+                        v-for="(url, index) in validUrls"
+                        :key="index"
+                        :src="url"
+                        style="width: 200px; height: 200px; margin: 10px;"
+                        :preview-src-list="validUrls"
+                />
+            </div>
+        </div>
+    </div>
+</template>
+<script>
+    import {list} from "../../api/road_verecord/verecord";
+    import {
+        selectListByDispatch,
+        selectByDispatchList,
+        addTracker,
+        uploadGoodsImage,
+        selectPicsByDispatch
+    } from "../../api/consigner/vehicle";
+    export default {
+        data() {
+            return{
+                ruleForm:{
+                    dispatch: "",
+                    id: "",
+                    info: "",
+                    opertime: "",
+                    status: ""
+                },
+                rules:{
+                    status: [
+                        { required: true, message: '请选择跟进状态', trigger: 'change' }
+                    ],
+                },
+                reverse: false,
+                activities: [],
+                validUrls:[],
+                routerinfo:{},
+                carinfo:{},
+                size: 'medium',
+                tableData:[],
+                dialogVisible: false
+            }
+        },
+        methods:{
+            getImgList(){
+                selectPicsByDispatch({dispatch:this.routerinfo.dispatch}).then((response) => {
+                    const res = response.data
+                    if (res.code !== '200') {
+                        return this.$message.error('获取消息收发记录,失败!')
+                    }
+                    if(res.data.urls && res.data.urls.trim() !== ''){
+                       this.validUrls= res.data.urls
+                            .split(',')
+                            .filter(url => url.trim() !== '');
+                    }
+                }).catch(error => {
+                    // 关闭加载
+                    this.$message.error(error.toString())
+                })
+            },
+
+            beforeUpload(file) {
+                const isImage = file.type.startsWith('image/');
+                if (!isImage) {
+                    this.$message.error('只能上传图片文件!');
+                }
+                return isImage;
+            },
+            handleChange(file, fileList) {
+                console.log(file, fileList);
+            },
+            handleSuccess(response, file, fileList) {
+                console.log('Upload successful:', response);
+            },
+            handleError(err, file, fileList) {
+                console.error('Upload failed:', err);
+            },
+            uploadRequest({ file, onSuccess, onError }) {
+                const formData = new FormData();
+                formData.append('file', file);
+                formData.append('dispatch',this.routerinfo.dispatch);
+                uploadGoodsImage(formData).then((response) => {
+                    const res = response.data
+                    if (res.code !== '200') {
+                        return this.$message.error(res.msg);
+                    }
+                    this.$message.success(res.msg);
+                    this.getImgList();
+                    onSuccess(response.data); // 调用 onSuccess 回调通知上传成功
+                }).catch(error => {
+                    // 关闭加载
+                    this.$message.error(error.toString())
+                    onError(error); // 调用 onError 回调通知上传失败
+                })
+                },
+            //添加跟踪记录
+            addRecords(){
+                this.ruleForm.dispatch=this.routerinfo.dispatch;
+                this.dialogVisible=true;
+            },
+            submitForm(formName) {
+                this.$refs[formName].validate((valid) => {
+                    if (valid) {
+                        addTracker(this.ruleForm).then((response) => {
+                            const res = response.data
+                            if (res.code !== '200') {
+                                return this.$message.error('跟进信息添加,失败!')
+                            }
+                            this.$message.success('跟进信息添加,成功!')
+                            this.dialogVisible = false;
+                            this.getRecords();
+                        }).catch(error => {
+                            // 关闭加载
+                            this.$message.warning('跟进信息添加,失败!')
+                        })
+                    } else {
+                        console.log('error submit!!');
+                        return false;
+                    }
+                });
+            },
+            resetForm(formName) {
+                this.dialogVisible = false;
+                this.$refs[formName].resetFields();
+            },
+            //查询跟踪记录
+            getRecords(){
+                selectByDispatchList({dispatch:this.routerinfo.dispatch}).then((response) => {
+                    const res = response.data
+                    if (res.code !== '200') {
+                        return this.$message.error('获取消息收发记录,失败!')
+                    }
+                    // 获取列表数据
+                    this.activities=res.data;
+                }).catch(error => {
+                    // 关闭加载
+                    this.$message.error(error.toString())
+                })
+            },
+            //查询派单列表
+            getLists() {
+                selectListByDispatch({dispatch:this.routerinfo.dispatch}).then((response) => {
+                    const res = response.data
+                    if (res.code !== '200') {
+                        return this.$message.error('获取消息收发记录,失败!')
+                    }
+                    // 获取列表数据
+                    this.tableData=res.data;
+                }).catch(error => {
+                    // 关闭加载
+                    this.$message.error(error.toString())
+                })
+            },
+            getDefault(){
+                if(this.$route.query!=null){
+                    this.routerinfo=this.$route.query.jilu;
+                }
+            },
+            //查询车辆信息
+            getReCord() {
+                let para = {
+                    pageSize: 1,
+                    limitSize: 10,
+                    trailerFrameNo: this.$route.query.jilu.licenseno,
+                    veState: '',
+                    veClassFlag: '',
+                    userId: ''
+                };
+                list(para).then((res) => {
+                    if(res.data.data.list.length!==0){
+                        this.carinfo = res.data.data.list[0];
+                    }else{
+                        this.$message.warning('无对应车辆信息!')
+                    }
+                }).catch((error) => {
+                    this.$message.warning('车辆查询,失败!')
+                });
+            },
+            getMess(){
+                if(this.routerinfo!=null && this.routerinfo.length!==0){
+                    this.getReCord();
+                    this.getLists();
+                }
+            },
+            handleClose(done) {
+                this.$confirm('确认关闭?')
+                    .then(_ => {
+                        done();
+                    })
+                    .catch(_ => {});
+            },
+
+        },
+        activated() {
+            this.getDefault();
+            this.getMess();
+            this.getRecords();
+            this.getImgList();
+        }
+    }
+</script>
diff --git a/src/views/deploy/VehicleWaybill.vue b/src/views/deploy/VehicleWaybill.vue
new file mode 100644
index 0000000..255d060
--- /dev/null
+++ b/src/views/deploy/VehicleWaybill.vue
@@ -0,0 +1,754 @@
+<template>
+    <div>
+        <div>
+            <el-form :inline="true" :model="formInline" class="demo-form-inline">
+                <el-form-item label="主单号">
+                    <el-input v-model="formInline.awba" placeholder="主单号"></el-input>
+                </el-form-item>
+                <el-form-item label="车号">
+                    <el-input v-model="formInline.licenseno" placeholder="车号"></el-input>
+                </el-form-item>
+                <el-form-item>
+                    <div class="block">
+                        <span class="demonstration">日期</span>
+                        <el-date-picker
+                                v-model="value2"
+                                type="daterange"
+                                align="right"
+                                unlink-panels
+                                range-separator="至"
+                                start-placeholder="开始日期"
+                                end-placeholder="结束日期"
+                                value-format="yyyy-MM-dd HH:mm:ss"
+                                :picker-options="pickerOptions">
+                        </el-date-picker>
+                    </div>
+                </el-form-item>
+                <el-form-item>
+                    <el-button type="primary" @click="getLists">查询</el-button>
+                </el-form-item>
+                <el-form-item>
+                    <el-button type="success" @click="addVehicle">新增</el-button>
+                </el-form-item>
+                <el-form-item>
+                    <el-button type="danger" @click="onPaidan">派单</el-button>
+                </el-form-item>
+                <el-form-item>
+                    <el-form-item>
+                        <el-upload
+                            class="upload-demo"
+                            action=""
+                            :before-upload="beforeUpload"
+                            :http-request="uploadFile"
+                            :show-file-list="false"
+                    >
+                        <el-button size="small" type="primary">导入运单</el-button>
+                    </el-upload>
+                    </el-form-item>
+
+                    <el-button type="success" @click="exportToExcel">导出 Excel</el-button>
+                </el-form-item>
+            </el-form>
+        </div>
+        <div>
+            <el-table
+                    ref="multipleTable"
+                    :data="tableData"
+                    tooltip-effect="dark"
+                    style="width: 100%"
+                    @selection-change="handleSelectionChange">
+                <el-table-column
+                        type="selection"
+                        width="55">
+                </el-table-column>
+                <el-table-column
+                        prop="customer"
+                        label="客户名称"
+                        width="120">
+                </el-table-column>
+                <el-table-column
+                        prop="taketime"
+                        label="日期"
+                        width="120">
+                </el-table-column>
+                <el-table-column
+                        prop="orig"
+                        label="始发地"
+                        show-overflow-tooltip>
+                </el-table-column>
+                <el-table-column
+                        prop="dest"
+                        label="目的地"
+                        show-overflow-tooltip>
+                </el-table-column>
+                <el-table-column
+                        prop="licenseno"
+                        label="车号"
+                        width="90">
+                    <template slot-scope="scope">
+                        <a type="text" style="color: #409eff;text-decoration: underline" class="tableInline"
+                           @click="getReCord(scope.row)">{{scope.row.licenseno}}</a>
+                    </template>
+                </el-table-column>
+                <el-table-column
+                        prop="dispatch"
+                        label="派单号"
+                        width="150">
+                    <template slot-scope="scope">
+                        <router-link :to="{name:'派单记录', query:{jilu:scope.row}}">
+                            <a>
+                                {{scope.row.dispatch}}
+                            </a>
+                        </router-link>
+                    </template>
+                </el-table-column>
+                <el-table-column
+                        prop="awbh"
+                        label="分单号"
+                        width="140">
+                </el-table-column>
+                <el-table-column
+                        prop="awba"
+                        label="主单号"
+                        width="110">
+                </el-table-column>
+                <el-table-column
+                        prop="deststation"
+                        label="目的港"
+                        show-overflow-tooltip>
+                </el-table-column>
+                <el-table-column
+                        prop="pcs"
+                        label="件数"
+                        show-overflow-tooltip>
+                </el-table-column>
+                <el-table-column
+                        prop="weight"
+                        label="毛重"
+                        show-overflow-tooltip>
+                </el-table-column>
+                <el-table-column
+                        prop="vol"
+                        label="体积"
+                        show-overflow-tooltip>
+                </el-table-column>
+                <el-table-column
+                        prop="charge"
+                        label="应收"
+                        show-overflow-tooltip>
+                </el-table-column>
+                <el-table-column
+                        fixed="right"
+                        label="操作"
+                        width="100">
+                    <template slot-scope="scope">
+                        <el-button @click="ediVehicle(scope.row)" type="text" size="small">编辑</el-button>
+                        <el-button @click="delVehicleWaybill(scope.row.id)" type="text" size="small">删除</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+        </div>
+        <div>
+            <div class="block">
+                <el-row>
+                    <el-col :span="14">
+                        <el-pagination
+                                @size-change="handleSizeChange"
+                                @current-change="handleCurrentChange"
+                                :current-page="formInline.pageNum"
+                                :page-sizes="[20, 30, 40, 100]"
+                                :page-size="formInline.pageSize"
+                                layout="total, sizes, prev, pager, next, jumper"
+                                :total="total">
+                        </el-pagination>
+                    </el-col>
+                </el-row>
+            </div>
+        </div>
+        <div>
+            <el-dialog
+                    :title="'车载运单'+textMap[dialogStatus]"
+                    :visible.sync="dialogVisible"
+                    width="75%"
+                    :before-close="handleClose">
+                <el-form :inline="true" label-width="80px" :model="submitForm"
+                         class="demo-form-inline">
+                    <el-form-item label="客户名称">
+                        <el-select v-model="submitForm.customer"
+                                   @click.native="getUsers"
+                                   default-first-option
+                                   :loading="loading" clearable placeholder="请选择"
+                                   style="width: 157px">
+                            <el-option
+                                    v-for="item in usernames"
+                                    :key="item.roleName"
+                                    :label="item.roleName"
+                                    :value="item.roleName"
+                                    :disabled="item.disabled">
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                    <el-form-item label="日期">
+                        <div class="block">
+                            <el-date-picker
+                                    style="width: 157px"
+                                    v-model="submitForm.taketime"
+                                    type="date"
+                                    format="yyyy-MM-dd"
+                                    placeholder="选择日期">
+                            </el-date-picker>
+                        </div>
+                    </el-form-item>
+                    <el-form-item label="始发地">
+                        <el-input v-model="submitForm.orig" placeholder="始发地"></el-input>
+                    </el-form-item>
+                    <el-form-item label="目的地">
+                        <el-input v-model="submitForm.dest" placeholder="目的地"></el-input>
+                    </el-form-item>
+                    <el-form-item label="车号">
+                        <el-input v-model="submitForm.licenseno" placeholder="车号"></el-input>
+                    </el-form-item>
+                    <el-form-item label="派单号">
+                        <el-input v-model="submitForm.dispatch" placeholder="派单号"></el-input>
+                    </el-form-item>
+                    <el-form-item label="分单号">
+                        <el-input v-model="submitForm.awbh" placeholder="分单号"></el-input>
+                    </el-form-item>
+                    <el-form-item label="主单号">
+                        <el-input v-model="submitForm.awba" placeholder="主单号"></el-input>
+                    </el-form-item>
+                    <el-form-item label="目的港">
+                        <el-input v-model="submitForm.deststation" placeholder="目的港"></el-input>
+                    </el-form-item>
+                    <el-form-item label="件数">
+                        <el-input v-model="submitForm.pcs" placeholder="件数"></el-input>
+                    </el-form-item>
+                    <el-form-item label="毛重">
+                        <el-input v-model="submitForm.weight" placeholder="毛重"></el-input>
+                    </el-form-item>
+                    <el-form-item label="体积">
+                        <el-input v-model="submitForm.vol" placeholder="体积"></el-input>
+                    </el-form-item>
+                    <el-form-item label="应收">
+                        <el-input v-model="submitForm.charge" placeholder="应收"></el-input>
+                    </el-form-item>
+                    <el-form-item label="危险品">
+                        <el-select v-model="submitForm.isdangerous" style="width: 157px">
+                            <el-option
+                                    v-for="item in options"
+                                    :key="item.value"
+                                    :label="item.label"
+                                    :value="item.value">
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                    <el-form-item label="尺寸">
+                        <el-input v-model="submitForm.means" placeholder="尺寸"></el-input>
+                    </el-form-item>
+                    <el-form-item label="备注">
+                        <el-input v-model="submitForm.remark" placeholder="备注"></el-input>
+                    </el-form-item>
+
+                </el-form>
+                <span slot="footer" class="dialog-footer" style="margin-right: 50px">
+                    <el-button @click="dialogVisible = false">取 消</el-button>
+                    <el-button type="primary" @click="dialogStatus==='create'?addVehicleWaybill():ediVehicleWaybill()">确 定</el-button>
+                </span>
+            </el-dialog>
+        </div>
+        <div>
+            <el-dialog
+                    title="派单申请"
+                    :visible.sync="PDdialogVisible"
+                    width="30%"
+                    :before-close="handleClose">
+                <el-form :model="PDForm" :rules="rules" ref="PDForm" label-width="100px" :label-position="labelPosition"
+                         class="demo-ruleForm">
+                    <el-form-item label="车号" prop="licenseno">
+                        <el-input v-model="PDForm.licenseno"></el-input>
+                    </el-form-item>
+                    <el-form-item label="派单号" prop="dispatch">
+                        <el-input v-model="PDForm.dispatch"></el-input>
+                    </el-form-item>
+                    <el-form-item label="始发地" prop="orig">
+                        <el-input v-model="PDForm.orig"></el-input>
+                    </el-form-item>
+                    <el-form-item label="目的地" prop="dest">
+                        <el-input v-model="PDForm.dest"></el-input>
+                    </el-form-item>
+                    <el-form-item>
+                        <el-button type="primary" @click="submitPDForm('PDForm')">派单</el-button>
+                        <el-button @click="resetForm('PDForm')">取消</el-button>
+                    </el-form-item>
+                </el-form>
+
+            </el-dialog>
+        </div>
+        <div>
+            <el-dialog
+                    :visible.sync="CardialogVisible"
+                    width="65%"
+                    :before-close="handleClose">
+                <el-descriptions class="margin-top" title="车辆信息" :column="3" :size="size" border>
+                    <template slot="extra">
+                        <el-button type="primary" @click="CardialogVisible = false">关闭</el-button>
+                    </template>
+                    <el-descriptions-item>
+                        <template slot="label">
+                            <i class="el-icon-user"></i>
+                            司机
+                        </template>
+                        {{carinfo.veOwnerName}}
+                    </el-descriptions-item>
+                    <el-descriptions-item>
+                        <template slot="label">
+                            <i class="el-icon-mobile-phone"></i>
+                            手机号
+                        </template>
+                        {{carinfo.ownerInsideTel}}
+                    </el-descriptions-item>
+                    <el-descriptions-item>
+                        <template slot="label">
+                            <i class="el-icon-truck"></i>
+                            车号
+                        </template>
+                        {{carinfo.domesticLisenceNo}}
+                    </el-descriptions-item>
+                    <el-descriptions-item>
+                        <template slot="label">
+                            <i class="el-icon-tickets"></i>
+                            驾驶证有效期
+                        </template>
+                        <el-tag size="small">{{carinfo.veFactoryDate}}</el-tag>
+                    </el-descriptions-item>
+                    <el-descriptions-item>
+                        <template slot="label">
+                            <i class="el-icon-shopping-cart-full"></i>
+                            车自重
+                        </template>
+                        {{carinfo.selfWt}}
+                    </el-descriptions-item>
+                    <el-descriptions-item>
+                        <template slot="label">
+                            <i class="el-icon-office-building"></i>
+                            地址
+                        </template>
+                        {{carinfo.proposer}}
+                    </el-descriptions-item>
+                </el-descriptions>
+            </el-dialog>
+        </div>
+    </div>
+</template>
+<script>
+    import {
+        getUserList,
+        addVehicleWaybill,
+        delVehicleWaybill,
+        ediVehicleWaybill,
+        selectNewInventroyrecords,
+        paidan,
+        UploadExcel
+    } from "../../api/consigner/vehicle";
+    import {list} from "../../api/road_verecord/verecord";
+    import XLSX from 'xlsx';
+    import { saveAs } from 'file-saver';
+
+    export default {
+        data() {
+            return {
+                size: 'medium',
+                PDForm: {
+                    licenseno: '',
+                    orig: '',
+                    dest: '',
+                    dispatch: ''
+                },
+                rules: {
+                    licenseno: [
+                        {required: true, message: '请输入车号', trigger: 'blur'},
+                        {min: 3, max: 15, message: '长度在 3 到 15 个字符', trigger: 'blur'}
+                    ],
+                    dispatch: [
+                        {required: true, message: '请输入派单号', trigger: 'blur'},
+                        {min: 3, max: 17, message: '长度在 3 到 17 个字符', trigger: 'blur'}
+                    ],
+                    orig: [
+                        {required: true, message: '请输入始发地', trigger: 'blur'},
+                        {min: 2, max: 100, message: '长度在 2 到 100 个字符', trigger: 'blur'}
+                    ],
+                    dest: [
+                        {required: true, message: '请输入目的地', trigger: 'blur'},
+                        {min: 2, max: 100, message: '长度在 3 到 100 个字符', trigger: 'blur'}
+                    ],
+                },
+                labelPosition: 'left',
+                tableData: [],
+                multipleSelection: [],
+                formInline: {
+                    awba: '',
+                    licenseno: '',
+                    starttime: '',
+                    endtime: '',
+                    pageNum: 1,
+                    pageSize: 20
+                },
+                dialogStatus: '',
+                loading: false,
+                listLoading: false,
+                value2: '',
+                total: 0,
+                pickerOptions: {
+                    shortcuts: [{
+                        text: '最近一周',
+                        onClick(picker) {
+                            const end = new Date();
+                            const start = new Date();
+                            start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
+                            picker.$emit('pick', [start, end]);
+                        }
+                    }, {
+                        text: '最近一个月',
+                        onClick(picker) {
+                            const end = new Date();
+                            const start = new Date();
+                            start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
+                            picker.$emit('pick', [start, end]);
+                        }
+                    }, {
+                        text: '最近三个月',
+                        onClick(picker) {
+                            const end = new Date();
+                            const start = new Date();
+                            start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
+                            picker.$emit('pick', [start, end]);
+                        }
+                    }]
+                },
+                currentPage4: 4,
+                submitForm: {
+                    awba: "",
+                    awbh: "",
+                    charge: 0,
+                    createtime: "",
+                    customer: "",
+                    dest: "",
+                    deststation: "",
+                    dispatch: "",
+                    id: "",
+                    isdangerous: 0,
+                    licenseno: "",
+                    means: "",
+                    orig: "",
+                    pcs: 0,
+                    pic: "",
+                    relevance: "",
+                    remark: "",
+                    remark1: "",
+                    remark2: "",
+                    taketime: "",
+                    vol: 0,
+                    weight: 0
+                },
+                dialogVisible: false,
+                PDdialogVisible: false,
+                CardialogVisible: false,
+                usernames: [],
+                options: [
+                    {
+                        value: 0,
+                        label: '否'
+                    }, {
+                        value: 1,
+                        label: '是'
+                    }
+                ],
+                textMap: {
+                    update: '编辑',
+                    create: '新增'
+                },
+                carinfo: {
+                    domesticLisenceNo: '',
+                    veOwnerName: '',
+                    ownerInsideTel: '',
+                    proposer: '',
+                    selfWt: '',
+                    veFactoryDate: '',
+                    veTon: '',
+                    trailerLicenseNo: '',
+                    trailerFrameNo: ''
+                },
+            }
+        },
+
+        methods: {
+            //导入运单excel
+            beforeUpload(file) {
+                // 检查文件类型
+                const isExcel = file.type === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' || file.type === 'application/vnd.ms-excel';
+                if (!isExcel) {
+                    this.$message.error('上传文件只能是 Excel 格式!');
+                    return false; // 取消文件上传
+                }
+                return true; // 允许上传
+
+                },
+            uploadFile({ file, onSuccess, onError }){
+                // 生成 FormData 对象
+                const formData = new FormData();
+                formData.append('file', file);
+                UploadExcel(formData).then((response) => {
+                    const res = response.data
+                    if (res.code !== '200') {
+                        return this.$message.error(res.msg);
+                    }
+                    this.$message.success(res.msg);
+                    this.getLists();
+                    onSuccess(response.data); // 调用 onSuccess 回调通知上传成功
+                }).catch(error => {
+                    // 关闭加载
+                    this.$message.error(error.toString())
+                    onError(error); // 调用 onError 回调通知上传失败
+                })
+            },
+            //导出excel
+            exportToExcel() {
+                if(this.multipleSelection.length!==0){
+                    const headers = {
+                        customer: '客户名称',
+                        taketime: '日期',
+                        orig: '始发地',
+                        dest: '目的地',
+                        licenseno: '车号',
+                        awba: '主单',
+                        awbh: '分单',
+                        deststation: '目的港',
+                        pcs: '件数',
+                        weight: '毛重',
+                        vol: '体积',
+                        means: '尺寸',
+                        charge: '应收'
+                    };
+
+                    // Filter data to include only specified columns
+                    const filteredData = this.multipleSelection.map(row => {
+                        const newRow = {};
+                        for (const key in headers) {
+                            newRow[headers[key]] = row[key];
+                        }
+                        return newRow;
+                    });
+
+                    // Convert to worksheet and workbook
+                    const ws = XLSX.utils.json_to_sheet(filteredData, { header: Object.values(headers) });
+                    const wb = XLSX.utils.book_new();
+                    XLSX.utils.book_append_sheet(wb, ws, 'Sheet1');
+                    const wbout = XLSX.write(wb, { bookType: 'xlsx', type: 'array' });
+
+                    saveAs(new Blob([wbout], { type: 'application/octet-stream' }), new Date().toLocaleString()+'.xlsx');
+                }else{
+                    this.$message.warning('请先勾选要导出的数据!');
+                }
+
+            },
+            //查询车牌号
+            getReCord(row) {
+                let para = {
+                    pageSize: 1,
+                    limitSize: 10,
+                    trailerFrameNo: row.licenseno,
+                    veState: '',
+                    veClassFlag: '',
+                    userId: ''
+                };
+                list(para).then((res) => {
+                    if(res.data.data.list.length!==0){
+                        this.carinfo = res.data.data.list[0];
+                        this.CardialogVisible=true;
+                    }else{
+                        this.$message.warning('无对应车辆信息!')
+                    }
+                }).catch((error) => {
+                    this.$message.warning('车辆查询,失败!')
+                });
+            },
+            //提交派单表单申请
+            submitPDForm(formName) {
+                this.$refs[formName].validate((valid) => {
+                    if (valid) {
+                        this.multipleSelection.forEach(item => {
+                            item.licenseno = this.PDForm.licenseno;
+                            item.orig = this.PDForm.orig;
+                            item.dest = this.PDForm.dest;
+                            item.dispatch = this.PDForm.dispatch;
+                        });
+                        paidan(this.multipleSelection).then((response) => {
+                            const res = response.data
+                            if (res.code !== '200') {
+                                return this.$message.error('车辆派单,失败!')
+                            }
+                            this.$message.success('车辆派单,成功!')
+                            this.PDdialogVisible = false;
+                        }).catch(error => {
+                            // 关闭加载
+                            this.$message.warning('车辆派单,失败!')
+                        })
+                    } else {
+                        return false;
+                    }
+                });
+            },
+            //生成派单号
+            getCurrentFormattedDate() {
+                const now = new Date();
+                const pad = (num) => num.toString().padStart(2, '0');
+
+                const yyyy = now.getFullYear();
+                const MM = pad(now.getMonth() + 1);
+                const dd = pad(now.getDate());
+                const HH = pad(now.getHours());
+                const mm = pad(now.getMinutes());
+                const ss = pad(now.getSeconds());
+                const SSS = now.getMilliseconds().toString().padStart(3, '0');
+
+                return `${yyyy}${MM}${dd}${HH}${mm}${ss}${SSS}`;
+            },
+
+            //派单取消提交
+            resetForm(formName) {
+                this.$refs[formName].resetFields();
+                this.PDdialogVisible = false;
+            },
+            //更新车载运单
+            ediVehicleWaybill() {
+                ediVehicleWaybill(this.submitForm).then((response) => {
+                    const res = response.data
+                    if (res.code !== '200') {
+                        return this.$message.error('更新车载运单,失败!')
+                    }
+                    this.$message.success('更新车载运单,成功!')
+                    this.dialogVisible = false;
+                    this.getLists();
+                }).catch(error => {
+                    // 关闭加载
+                    this.$message.warning('更新车载运单,失败!')
+                })
+            },
+            //删除车载运单
+            delVehicleWaybill(id) {
+                // 弹框询问是否删除?
+                this.$confirm('此操作永久删除该消息收发记录, 是否继续?', '警告', {
+                        confirmButtonText: '确定删除',
+                        cancelButtonText: '取消',
+                        type: 'warning'
+                    }
+                ).then(() => {
+                    delVehicleWaybill({id: id}).then((response) => {
+                        const res = response.data
+                        this.$message.success(res.msg)
+                        this.getLists();
+                    }).catch(error => {
+                        this.$message.error('删除车载运单,失败!')
+                    })
+                }).catch(() => {
+                })
+            },
+            //新增车载运单
+            addVehicleWaybill() {
+                addVehicleWaybill(this.submitForm).then((response) => {
+                    const res = response.data
+                    if (res.code !== '200') {
+                        return this.$message.error('新增车载运单,失败!')
+                    }
+                    this.$message.success('新增车载运单,成功!')
+                    this.dialogVisible = false;
+                    this.getLists();
+                }).catch(error => {
+                    // 关闭加载
+                    this.$message.warning('新增车载运单,失败!')
+                })
+            },
+            //查询列表
+            getLists() {
+                if (this.value2 !== null) {
+                    this.formInline.starttime = this.value2[0];
+                    this.formInline.endtime = this.value2[1];
+                }
+                selectNewInventroyrecords(this.formInline).then((response) => {
+                    const res = response.data
+                    if (res.code !== '200') {
+                        return this.$message.error('获取消息收发记录,失败!')
+                    }
+                    // 获取列表数据
+                    this.tableData = res.data.list
+                    // 获取列表的总记录数
+                    this.total = res.data.total
+                    this.$message.success('获取消息收发记录,成功!');
+                    this.formInline.endtime = '';
+                    this.formInline.starttime = '';
+                }).catch(error => {
+                    // 关闭加载
+                    this.$message.error(error.toString())
+                })
+            },
+            onPaidan() {
+                if (this.multipleSelection.length !== 0) {
+                    this.PDdialogVisible = true;
+                    this.PDForm.dispatch = this.getCurrentFormattedDate();
+                } else {
+                    this.$message.error('请选勾取要派车的运单信息!');
+                }
+            },
+            //新增
+            addVehicle() {
+                this.dialogVisible = true;
+                this.dialogStatus = 'create';
+                this.getUsers();
+            },
+            //编辑
+            ediVehicle(row) {
+                this.dialogVisible = true;
+                this.dialogStatus = 'update';
+                this.submitForm = row;
+            },
+            //翻页
+            handleSizeChange(val) {
+                this.formInline.pageSize = val;
+                this.getLists();
+            },
+            handleCurrentChange(val) {
+                this.formInline.pageNum = val;
+                this.getLists();
+            },
+            //多选选中
+            handleSelectionChange(val) {
+                this.multipleSelection = val;
+                console.log(this.multipleSelection)
+            },
+            //Dialog关闭提示
+            handleClose(done) {
+                this.$confirm('确认关闭?')
+                    .then(_ => {
+                        done();
+                    })
+                    .catch(_ => {
+                    });
+            },
+            //获取用户名列表
+            getUsers() {
+                let para = {orgtype: "C", pageSize: 1, pageNum: 10000};
+                this.listLoading = true;
+                getUserList(para).then((res) => {
+                    this.usernames = res.data.data.list;
+                }).catch((error) => {
+                    this.$message.error(error.toString());
+                }).finally(() => {
+                    this.listLoading = false;
+                });
+            },
+        },
+        mounted() {
+            this.getLists();
+        }
+    }
+</script>