zhongtianhaoyuan преди 2 години
родител
ревизия
98a4d75ad9

+ 26 - 0
src/api/operationLog.js

@@ -0,0 +1,26 @@
+import request from '@/utils/request'
+// 操作日志列表
+export function logList(data) {
+  return request({
+    url: '/hyOperLog/selectOperLog',
+    method: 'get',
+     params: data,
+  })
+}
+//删除日志
+export function delInfo(data) {
+    return request({
+      url: '/hyOperLog/api/deleteOperLog',
+      method: 'post',
+       data: data,
+    })
+  }
+ 
+  //导出日志
+export function exportInfo(data) {
+    return request({
+      url: '/hyOperLog/api/export',
+      method: 'post',
+      data: data,
+    })
+  }

+ 41 - 0
src/api/parkReportManagement.js

@@ -0,0 +1,41 @@
+import request from '@/utils/request'
+// 司机上报列表
+export function getList(data) {
+  return request({
+    url: '/driverInfo/selectDriverInfoSubmission',
+    method: 'get',
+     params: data,
+  })
+}
+//上报
+export function report(data) {
+    return request({
+      url: '/driverInfo/api/batchSubmission',
+      method: 'post',
+       data: data,
+    })
+  }
+  //查看单条数据
+export function getInfo(data) {
+  return request({
+    url: '/driverInfo/getDriver',
+    method: 'get',
+    params: data,
+  })
+}
+// 车辆上报列表
+export function carGetList(data) {
+  return request({
+    url: '/driverCarInfo/selectCarInfoSubmission',
+    method: 'get',
+     params: data,
+  })
+}
+//车辆上报
+export function carReport(data) {
+  return request({
+    url: '/driverCarInfo/api/batchSubmission',
+    method: 'post',
+     data: data,
+  })
+}

+ 2 - 0
src/router/index.js

@@ -14,6 +14,7 @@ import feedbackManagement from './feedbackManagement/index'
 import officialWebsiteManagement from './officialWebsiteManagement/index'
 import parkReportManagement from './parkReportManagement/index'
 import settlementManagement from './settlementManagement/index'
+import operationLog from './operationLog/index'
 
 
 export const constantRoutes = [{
@@ -55,6 +56,7 @@ export const constantRoutes = [{
     officialWebsiteManagement,
     parkReportManagement,
     settlementManagement,
+    operationLog,
 
     // {
     // 	path: '/example',

+ 28 - 0
src/router/operationLog/index.js

@@ -0,0 +1,28 @@
+/** When your routing table is too long, you can split it into small modules**/
+
+import Layout from '@/layout'
+
+const operationLogRouter = {
+    path: '/operationLog',
+    component: Layout,
+    redirect: 'noRedirect',
+    name: 'operationLog',
+    meta: {
+        title: '操作日志',
+        icon: 'dingdanguanli'
+    },
+    alwaysShow: true,
+    children: [
+      {
+        path: 'logManagement',
+        name: 'logManagement',
+        component: () => import('@/views/operationLog/logManagement'),
+        meta: {
+            title: '日志管理',
+            icon: ''
+        }
+    }
+    ]
+}
+
+export default operationLogRouter

+ 143 - 0
src/utils/batchDown.js

@@ -0,0 +1,143 @@
+import { getBatchAttachment } from '@/model/indexRx'
+import { getFileList } from '@/model/upload'
+import i18n from '../lang/index.js'
+import { EventBus, dayjs } from 'base-core-lib'
+
+function downLoad (res, name) {
+  const reader = new FileReader()
+  reader.readAsText(res, 'utf-8')
+  reader.onload = function () {
+    if (reader.result.indexOf('noPermission') != -1) {
+      EventBus.$emit('warning', this.$t('upload.message07'))
+    } else {
+      const a = document.createElement('a')
+      a.download = name
+      a.href = window.URL.createObjectURL(res)
+      a.style.display = 'none'
+      document.body.appendChild(a)
+      a.click()
+      URL.revokeObjectURL(a.href)
+      document.body.removeChild(a)
+    }
+  }.bind(this)
+}
+/**
+ * 静态下载文件类型
+ */
+const BLOB_TYPE = {
+  'doc': 'application/msword',
+  'bin': 'application/octet-stream',
+  'exe': 'application/octet-stream',
+  'so': 'application/octet-stream',
+  'dll': 'application/octet-stream',
+  'pdf': 'application/pdf',
+  'ai': 'application/postscript',
+  'xls': 'application/vnd.ms-excel',
+  'xlsx': 'application/vnd.ms-excel',
+  'ppt': 'application/vnd.ms-powerpoint',
+  'dir': 'application/x-director',
+  'js': 'application/x-javascript',
+  'swf': 'application/x-shockwave-flash',
+  'xhtml': 'application/xhtml+xml',
+  'xht': 'application/xhtml+xml',
+  'zip': 'application/zip',
+  'mid': 'audio/midi',
+  'midi': 'audio/midi',
+  'mp3': 'audio/mpeg',
+  'rm': 'audio/x-pn-realaudio',
+  'rpm': 'audio/x-pn-realaudio-plugin',
+  'wav': 'audio/x-wav',
+  'bmp': 'image/bmp',
+  'gif': 'image/gif',
+  'jpeg': 'image/jpeg',
+  'jpg': 'image/jpeg',
+  'png': 'image/png',
+  'css': 'text/css',
+  'html': 'text/html',
+  'htm': 'text/html',
+  'txt': 'text/plain',
+  'xsl': 'text/xml',
+  'xml': 'text/xml',
+  'mpeg': 'video/mpeg',
+  'mpg': 'video/mpeg',
+  'avi': 'video/x-msvideo',
+  'movie': 'video/x-sgi-movie',
+}
+/**
+ * 通用流文件下载
+ * @param {*} param {res:流文件, fileName:文件名称, type:文件类型 }
+ */
+export async function downloadFile ({ res, fileName, type }) {
+  fileName = fileName + '.' + type
+  if (!res.size) {
+    EventBus.$emit('error', '接口未返回任何流文件,请联系业务人员~')
+    return
+  }
+  if (!type) {
+    EventBus.$emit('error', '请指定下载文件类型~')
+    return
+  }
+  if (!BLOB_TYPE[type.toLowerCase()]) {
+    EventBus.$emit('error', '未找到相应的文件类型,请更换文件类型后重试~')
+    return
+  }
+  // type 为需要导出的文件类型,此处为xls表格类型
+  const blob = new Blob([res],
+    // {type: BLOB_TYPE[type.toLowerCase()]}
+  )
+  if (window.navigator.msSaveOrOpenBlob) {
+    navigator.msSaveBlob(blob, fileName)
+    return
+  }
+  // 兼容不同浏览器的URL对象
+  const url = window.URL || window.webkitURL || window.moxURL
+  // 创建下载链接
+  const href = url.createObjectURL(blob)
+  // 创建a标签并为其添加属性
+  let downloadElement = document.createElement('a')
+  downloadElement.href = href
+  downloadElement.style.display = 'none'
+  downloadElement.download = `${fileName}`
+  document.body.appendChild(downloadElement)
+  // 触发点击事件执行下载
+  downloadElement.click()
+  document.body.removeChild(downloadElement) //下载完成移除元素
+  window.URL.revokeObjectURL(href) //释放掉blob对象
+}
+
+export async function zipDown ({ appendixIds, zipName = i18n.t('dataManage.downloadFileName'), baseUrl }) {
+  if (appendixIds.split(',').length === 1) {
+    const getFileInfo = await getFileList({ appendixIds: appendixIds }).toPromise()
+    if (getFileInfo.length == 1) {
+      const a = document.createElement('a')
+      a.setAttribute('target', '_blank')
+      a.href = `${baseUrl}appendix/api/singleDownLoadFile?appendixId=${appendixIds}`
+      a.style.display = 'none'
+      document.body.appendChild(a)
+      a.click()
+      URL.revokeObjectURL(a.href)
+      document.body.removeChild(a)
+      return
+    }
+    return
+  }
+  const { data } = await getBatchAttachment({ appendixIds: appendixIds, zipName: zipName }, {}, { responseType: 'blob' }).toPromise()
+  downLoad(data, zipName + dayjs().format('YYYYMMDD') + '.zip')
+}
+
+
+export function getLocationAdress (data) {
+  let url = ''
+  if (process.env.VUE_APP_BASE_API) {
+    url = process.env.VUE_APP_BASE_API + data
+  }
+  else {
+    url = `${window.location.protocol}//${window.location.host}/${data}`
+  }
+  window.location.href = url
+}
+
+export function exportFileUrl (module, type, id, fileName, vendorId) {
+  console.log(`${process.env.VUE_APP_API_SUPPLY}/purExport/${module}/${type}?id=${id}&fileName=${fileName}&vendorId=${vendorId}`, 1919)
+  return `${process.env.VUE_APP_API_SUPPLY}/purExport/${module}/${type}?id=${id}&fileName=${fileName}&vendorId=${vendorId}`
+}

+ 7 - 2
src/utils/request.js

@@ -44,7 +44,7 @@ service.interceptors.response.use(
   response => {
     const res = response.data
     // if the custom code is not 20000, it is judged as an error.
-    if (res.code !== 200 && res.code !== '200') {
+    if (res.code && res.code !== 200 && res.code !== '200') {
       Message({
         message: res.message || 'Error',
         type: 'error',
@@ -66,7 +66,12 @@ service.interceptors.response.use(
       }
       return Promise.reject(new Error(res.message || 'Error'))
     } else {
-      return res
+      if(!res.code){
+        return response
+      }else{
+        return res
+      }
+      
     }
   },
   error => {

+ 4 - 0
src/views/driverManagement/identityExamine.vue

@@ -378,6 +378,7 @@
           type: "warning",
         }).then(() => {
           this.listLoading = true;
+          val.advancePayment = val.advancePayment/100
           editInfo(val)
             .then((response) => {
               if (response.code == 200) {
@@ -423,6 +424,9 @@
             this.tableData = response.data.records;
             for (let i = 0; i < this.tableData.length; i++) {
               this.tableData[i].iconShow = true;
+              if(this.tableData[i].advancePayment){
+                this.tableData[i].advancePayment*=100
+              }
             }
             this.deptBudgetTotal = response.data.total;
             this.listLoading = false;

+ 403 - 0
src/views/operationLog/logManagement.vue

@@ -0,0 +1,403 @@
+// 操作日志
+<template>
+  <div class="center">
+    <div class="center_css">
+      <div class="top_css">
+        <el-row>
+          <el-col :span="16" style="height: 45px">
+            <span type="primary" class="batch_text">
+              <i class="el-icon-tickets"></i>数据列表</span>
+            <el-button type="danger" plain icon="el-icon-delete" size="small" @click="delBtn()">删除</el-button>
+            <el-button type="warning" plain icon="el-icon-download" size="small" class="top_btn" @click="exportBtn()">导出
+            </el-button>
+            <el-date-picker v-model="value1" value-format="yyyy-MM-dd" @change="dateChange" type="daterange"
+              range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期">
+            </el-date-picker>
+          </el-col>
+          <el-col :span="8" style="height: 45px">
+            <div class="screen">
+              <el-input class="find" placeholder="可按系统模块,操作人员进行筛选" @keyup.enter.native="find" v-model="searchkeyWord"
+                clearable @change="find"></el-input>
+              <el-button class="search" @click="find"><img width="16" height="16" style="margin-left: -8px"
+                  src="../../../public/img/sousuo.png" /></el-button><span
+                class="count_css">共{{ deptBudgetTotal }}条</span>
+            </div>
+          </el-col>
+        </el-row>
+      </div>
+      <el-table :data="tableData" style="width: 98%; margin: 0 auto; border-radius: 10px" height="55.8vh" border
+        highlight-current-row @row-click="handleRowClick" @selection-change="handleSelectionChange"
+        :default-sort="{ prop: 'date', order: 'descending' }">
+        <el-table-column type="selection" width="55" :selectable="selectInit">
+        </el-table-column>
+        <el-table-column type="index" label="序号" width="50">
+          <template scope="scope">
+            <span v-if="scope.$index < 9">0{{ scope.$index + 1 }}</span>
+            <span v-else>{{ scope.$index + 1 }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="title" label="系统模块"></el-table-column>
+        <el-table-column prop="requestMethod" label="请求方式"></el-table-column>
+        <el-table-column prop="operator" label="操作人员" sortable></el-table-column>
+        <el-table-column prop="ip" label="操作地址"></el-table-column>
+        <el-table-column prop="status" label="操作状态"></el-table-column>
+        <el-table-column prop="updateDate" label="操作日期" sortable></el-table-column>
+        <el-table-column label="操作" min-width="200">
+          <template slot-scope="scope">
+            <span @click="look(scope.row)" style="color: #40b6ff;cursor:pointer"><i class="el-icon-view"
+                style="margin: 0 6px"></i>详情</span>
+          </template>
+        </el-table-column>
+      </el-table>
+    </div>
+    <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage"
+      style="text-align: center; margin-top: 10px" :page-size="deptCircularPage.pageSize"
+      layout="total, sizes, prev, pager, next, jumper" :total="deptBudgetTotal">
+    </el-pagination>
+    <el-dialog title="导出日志" :visible.sync="logVisible" width="400px" :before-close="handleClose">
+      <el-form ref="form" label-width="100px">
+        <el-form-item label="起始日期">
+          <el-date-picker value-format="yyyy-MM-dd" type="date" placeholder="请选择起始日期" v-model="formInfo.startDate">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="截止日期">
+          <el-date-picker value-format="yyyy-MM-dd" type="date" placeholder="请选择截止日期" v-model="formInfo.endDate">
+          </el-date-picker>
+        </el-form-item>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="logVisible = false">取 消</el-button>
+        <el-button type="primary" @click="exportSubmit">确 定</el-button>
+      </span>
+    </el-dialog>
+
+    <el-dialog title="日志详情" :visible.sync="detailsVisible" width="40%" :before-close="detailsClose">
+      <el-form ref="form" label-width="100px">
+        <el-form-item label="日志类型">
+          <span>{{detailsInfo.title}}</span>
+        </el-form-item>
+        <el-form-item label="请求方式">
+          <span>{{detailsInfo.requestMethod}}</span>
+        </el-form-item>
+        <el-form-item label="后台地址">
+          {{detailsInfo.url}}
+        </el-form-item>
+        <el-form-item label="请求地址">
+          <span>{{detailsInfo.ip}}</span>
+        </el-form-item>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="detailsVisible = false">取 消</el-button>
+        <el-button type="primary" @click="detailsVisible = false">确 定</el-button>
+      </span>
+    </el-dialog>
+
+    <el-image-viewer v-if="imgsVisible" :on-close="closeImgViewer" :url-list="srcList" style="z-index: 9999" />
+  </div>
+</template>
+<script>
+  import {
+    logList,
+    delInfo,
+    exportInfo
+  } from "@/api/operationLog";
+  export default {
+    components: {
+      "el-image-viewer": () =>
+        import("element-ui/packages/image/src/image-viewer"),
+    },
+    data() {
+      return {
+        tableData: [],
+        //筛选
+        searchkeyWord: "",
+        //分页
+        currentPage: 1,
+        pageSize: 10,
+        deptBudgetTotal: 0,
+        deptCircularPage: {},
+        search: "",
+        //图片预览
+        srcList: [],
+        imgsVisible: false,
+        //筛选时间
+        startDate: "",
+        endDate: "",
+        value1: [],
+        //批量
+        musterList: [],
+        //导出
+        logVisible: false,
+        formInfo: {},
+        //详情
+        detailsVisible: false,
+        detailsInfo: {}
+      };
+    },
+    mounted() {
+      let date = new Date();
+      let date1 = new Date().setTime(date.getTime() - 24 * 60 * 60 * 1000); //一天前的时间蹉
+      date1 = new Date(parseInt(date1))
+        .toLocaleString()
+        .split(" ")[0]
+        .replaceAll("/", "-");
+      console.log(date1);
+
+      this.startDate =
+        date1.split("-")[0] +
+        "-" +
+        (date1.split("-")[1] < 10 ?
+          "0" + date1.split("-")[1] :
+          date1.split("-")[1]) +
+        "-" +
+        (date1.split("-")[2] < 10 ?
+          "0" + date1.split("-")[2] :
+          date1.split("-")[2]);
+      this.endDate =
+        date.getFullYear() +
+        "-" +
+        (date.getMonth() + 1 < 10 ?
+          "0" + (date.getMonth() + 1) :
+          date.getMonth()) +
+        "-" +
+        (date.getDate() < 10 ? "0" + date.getDate() : date.getDate()); //當前時間
+      this.value1 = [this.startDate, this.endDate];
+      this.getList();
+    },
+    methods: {
+      look(val) { //详情
+        this.detailsInfo = val
+        this.detailsVisible = true
+
+      },
+      handleClose() {
+        this.logVisible = false;
+      },
+      detailsClose() {
+        this.detailsVisible = false
+      },
+      async exportSubmit() {
+        exportInfo({
+          startDate: this.formInfo.startDate,
+          endDate: this.formInfo.endDate,
+        }).then((response) => {
+          let blob = response.data;
+          let a = document.createElement("a");
+          //由于后台返回文件名称是通过response返回的
+          //因此需要从response headers中content-disposition响应头中获取文件名称fileName,如上图所示
+          let headers = response.headers;
+          let fileName = headers["content-disposition"];
+          fileName = fileName.split('=')[1]
+          //download是a标签的一个属性,可以自定义文件名称
+          a.download = fileName;
+          let binaryData = [];
+          binaryData.push(blob);
+          // a.href = URL.createObjectURL(blob);
+         a.href = window.URL.createObjectURL(new Blob(binaryData));
+          document.body.appendChild(a);
+          a.click();
+          document.body.removeChild(a);
+          //  downloadFile({
+          // res: response,
+          // fileName: `导出日志记录`,
+          // type: "xls",
+          // });
+
+        });
+        // const {
+        //   data
+        // } = await exportInfo({
+        //   startDate: this.formInfo.startDate,
+        //   endDate: this.formInfo.endDate,
+        // }, {}, {
+        //   responseType: "blob",
+        // }).toPromise();
+        // debugger
+        // console.log(data)
+        //     downloadFile({
+        //     res: data,
+        //     fileName: `导出日志记录`,
+        //     type: "xls",
+        //     });
+      },
+      delBtn() {
+        if (this.musterList.length == 0) {
+          this.$message.error("请勾选操作的条目!");
+          return;
+        }
+        this.$confirm("确定删除信息?", "提示", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning",
+        }).then(() => {
+          delInfo({
+            hyOperLogList: this.musterList
+          }).then((response) => {
+            if (response.code == 200) {
+              this.$notify({
+                title: "成功",
+                message: "删除成功!",
+                type: "success",
+              });
+              this.getList();
+            }
+          });
+        });
+      },
+      exportBtn() {
+        this.logVisible = true;
+      },
+      dateChange(e) {
+        this.startDate = e[0];
+        this.endDate = e[1];
+        this.getList();
+      },
+      closeImgViewer() {
+        this.srcList = [];
+        this.imgsVisible = false;
+      },
+      enlarge(url) {
+        this.imgsVisible = true;
+        this.srcList.push(url);
+      },
+      getList() {
+        this.listLoading = true;
+        let _obj = {};
+        _obj.currentPage = this.currentPage;
+        _obj.pageSize = this.pageSize;
+        _obj.searchKeyWord = this.searchkeyWord;
+        _obj.startDate = this.startDate;
+        _obj.endDate = this.endDate;
+        logList(_obj)
+          .then((response) => {
+            this.tableData = response.data.records;
+            for (let i = 0; i < this.tableData.length; i++) {
+              this.tableData[i].iconShow = true;
+            }
+            this.deptBudgetTotal = response.data.total;
+            this.listLoading = false;
+          })
+          .catch(() => {
+            this.listLoading = false;
+          });
+      },
+
+      searchBtn(num) {
+        this.search = num;
+        this.getList();
+      },
+      find() {
+        this.getList();
+      },
+      selectInit() {
+        return true;
+      },
+      handleRowClick(row) {
+        return true;
+      },
+      handleSelectionChange(val) {
+        this.musterList = val;
+        console.log(this.musterList);
+      },
+      handleSizeChange(val) {
+        console.log(`每页 ${val} 条`);
+        this.pageSize = val;
+        this.getList();
+      },
+      handleCurrentChange(val) {
+        this.currentPage = val;
+        console.log(`当前页: ${val}`);
+        this.getList();
+      },
+    },
+  };
+</script>
+<style lang="scss" scoped>
+  .center {
+    padding: 10px 20px;
+    background: #f5f6f7;
+    height: calc(100vh - 5vh);
+
+    .top_css {
+      min-width: 1020px;
+      padding: 10px;
+
+      .batch_text {
+        font-size: 22px;
+        margin-right: 10px;
+      }
+
+      .top_btn {
+        margin-right: 10px;
+      }
+    }
+
+    .ask_css {
+      position: absolute;
+      margin: 3px 0 0 10px;
+    }
+
+    .center_css {
+      background: #ffffff;
+      border-radius: 1px;
+      margin-top: 10px;
+      padding-bottom: 10px;
+    }
+
+    .screen {
+      // float: right;
+      display: flex;
+
+      .search {
+        width: 40px;
+        height: 40px;
+        background: #2f53eb;
+        border-radius: 0px 2px 2px 0px;
+        border: 1px solid #dcdfe6;
+        margin-left: -1px;
+      }
+
+      .count_css {
+        width: 80px;
+        text-align: center;
+        line-height: 40px;
+        color: #666666;
+      }
+    }
+
+    .el-button {
+      padding: 10px 20px !important;
+    }
+
+    .center_css {
+
+      ::v-deep .el-table th,
+      ::v-deep .el-table td {
+        text-align: center;
+      }
+
+      .fujian {
+        font-size: 24px;
+        color: #409eff;
+      }
+
+      .warning {
+        font-size: 14px;
+        color: #ed1d1d;
+      }
+    }
+  }
+
+  ::v-deep .el-table--border .el-table__header th {
+    background: #f7f8f9;
+  }
+
+  .btn_css {
+    color: #409eff;
+    cursor: pointer;
+  }
+
+  .btn_css1 {
+    margin-left: -20px;
+  }
+</style>

+ 3 - 3
src/views/orderManagement/orderAudit.vue

@@ -249,7 +249,7 @@
 
         <div class="right_title">距离</div>
         <div class="right_item">约{{costData.distance ? costData.distance : 0}}km</div>
-        <div class="right_title">运费</div>
+        <div class="right_title">预计运费</div>
         <div class="right_item">{{costData.freight}}</div>
         <el-divider v-if="costData.hyCarrierInfo"></el-divider>
         <div v-if="costData.hyCarrierInfo">
@@ -260,8 +260,8 @@
           <div class="right_item">{{costData.wtContractNo}}</div>
           <div class="right_title">车牌号</div>
           <div class="right_item">{{costData.hyCarrierInfo.carNo}}</div>
-          <div class="right_title">预计运费</div>
-          <div class="right_item">{{costData.hyCarrierInfo.estimatedFreight}}</div>
+          <!-- <div class="right_title">预计运费</div>
+          <div class="right_item">{{costData.hyCarrierInfo.estimatedFreight}}</div> -->
           <div class="right_title">装车时间</div>
           <div class="right_item">{{costData.hyCarrierInfo.loadingDate}}</div>
           <div class="right_title">装车定位</div>

+ 205 - 170
src/views/parkReportManagement/driverInformationReporting.vue

@@ -5,14 +5,16 @@
       <div class="top_css">
         <el-row>
           <el-col :span="14" style="height: 45px">
-            <el-button type="primary" class="batch_btn">批量上报</el-button>
-			  <el-date-picker v-model="value1" value-format="yyyy-MM-dd" @change="dateChange" type="daterange"
-              range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期">
+            <el-button type="primary" class="batch_btn" @click="escalation">批量上报</el-button>
+            <el-date-picker v-model="value1" value-format="yyyy-MM-dd" @change="dateChange" type="daterange"
+              :default-time="['00:00:00', '23:59:59']" range-separator="至" start-placeholder="开始日期"
+              end-placeholder="结束日期">
             </el-date-picker>
           </el-col>
           <el-col :span="10">
             <div class="screen">
-              <el-input class='find' placeholder="可按司机姓名、账号、身份证号查找" @keyup.enter.native="find" v-model="searchkeyWord" clearable @change="find"></el-input>
+              <el-input class='find' placeholder="可按司机姓名和账号查找" @keyup.enter.native="find" v-model="searchkeyWord"
+                clearable @change="find"></el-input>
               <el-button class="search" @click="find"><img width="16" height="16" style="margin-left: -8px"
                   src="../../../public/img/sousuo.png" /></el-button><span
                 class="count_css">共{{ deptBudgetTotal }}条</span>
@@ -22,42 +24,59 @@
         <el-row>
           <el-col>
             <div class="search_btn">
-              <div :class="search == '' ? 'search' : 'searchNo'" class="search_item search_block"
-                @click="searchBtn('')">
+              <div :class="search == 1 ? 'search' : 'searchNo'" class="search_item search_block"
+                @click="searchBtn(1)">
                 待上报
               </div>
-              <div :class="search == 1 ? 'search' : 'searchNo'" class="search_item" @click="searchBtn(1)">
-				审核中
-              </div>
               <div :class="search == 2 ? 'search' : 'searchNo'" class="search_item" @click="searchBtn(2)">
-                已通过
+                审核中
               </div>
               <div :class="search == 3 ? 'search' : 'searchNo'" class="search_item" @click="searchBtn(3)">
+                已通过
+              </div>
+              <div :class="search == 4 ? 'search' : 'searchNo'" class="search_item" @click="searchBtn(4)">
                 已过期
               </div>
-			   <div :class="search == 4 ? 'search' : 'searchNo'" class="search_item" @click="searchBtn(4)">
+              <div :class="search == '' ? 'search' : 'searchNo'" class="search_item" @click="searchBtn('')">
                 全部
               </div>
             </div>
           </el-col>
         </el-row>
       </div>
-      <el-table :data="tableData" style="width: 98%; margin: 0 auto; border-radius: 10px" height="55.8vh" border highlight-current-row>
-		<el-table-column type="selection" width="55" :selectable="selectInit">
+      <el-table :data="tableData" style="width: 98%; margin: 0 auto; border-radius: 10px" height="55.8vh" border
+        highlight-current-row @row-click="handleRowClick" @selection-change="handleSelectionChange" >
+        <el-table-column type="selection" width="55" :selectable="selectInit">
         </el-table-column>
-		<el-table-column type="index" label="序号" width="50">
+        <el-table-column type="index" label="序号" width="50">
           <template scope="scope">
             <span v-if="scope.$index < 9">0{{ scope.$index + 1 }}</span>
             <span v-else>{{ scope.$index + 1 }}</span>
           </template>
         </el-table-column>
-        <el-table-column prop="driverName" label="司机姓名" ></el-table-column>
-        <el-table-column prop="driverPhone" label="账号" ></el-table-column>
-        <el-table-column prop="numberCard" label="驾驶证有效期" ></el-table-column>
-        <el-table-column prop="shipmentsNumber" label="从业资格证有效期"></el-table-column>
-        <el-table-column prop="favorableRate" label="身份证有效期" ></el-table-column>
-        <el-table-column prop="complaintsNumber" label="上报时间"></el-table-column>
-      <el-table-column prop="paymentDate" label="附件">
+        <el-table-column prop="driverName" label="司机姓名"></el-table-column>
+        <el-table-column prop="driverPhone" label="账号"></el-table-column>
+        <el-table-column prop="driverLicenseValidityStartDate" label="驾驶证有效期">
+          <template slot-scope="scope">
+            <span :class="scope.row.driverOverdueFlag == 1?'red_text':''">{{scope.row.driverLicenseValidityStartDate}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="qualificationCertificateValidityDate" label="从业资格证有效期">
+           <template slot-scope="scope">
+            <span :class="scope.row.qualificationOverdueFlag == 1?'red_text':''">{{scope.row.qualificationCertificateValidityDate}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="cardValidityDate" label="身份证有效期">
+             <template slot-scope="scope">
+            <span :class="scope.row.overdueFlag == 1?'red_text':''">{{scope.row.cardValidityDate}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="updateDate" label="上报时间">
+          <template slot-scope="scope">
+            <span v-if="scope.row.escalationStatus != '未认证' && scope.row.escalationStatus != '待上报'">{{scope.row.updateDate}}</span><!-- 未认证和待上报不显示时间 -->
+          </template>
+        </el-table-column>
+        <el-table-column prop="paymentDate" label="附件">
           <template slot-scope="scope" style="text-align: center" v-if="scope.row.backStageStatus !='未认证'">
             <span class="btn_css btn_css1" @click="fujianLook(scope.row)">查看</span>
             <el-tooltip placement="top" v-if="
@@ -79,14 +98,14 @@
             </el-tooltip>
           </template>
         </el-table-column>
-        <el-table-column prop="advancePayment" label="状态" min-width="100"></el-table-column>
+        <el-table-column prop="escalationStatus" label="状态" min-width="100"></el-table-column>
         <el-table-column label="操作" min-width="200">
           <template slot-scope="scope">
             <el-link target="_blank" @click="see(scope.row)" type="primary" :underline="false"
-              :disabled="scope.row.authenticationStatus != '审核中'">查看</el-link>
+              >查看</el-link>
             <el-divider direction="vertical"></el-divider>
-            <el-link target="_blank" @click="report(scope.row)" type="primary" :underline="false"
-              :disabled="scope.row.authenticationStatus != '审核中'">上报</el-link>
+            <el-link target="_blank" @click="reportInfo(scope.row)" type="primary" :underline="false"
+              :disabled="scope.row.escalationStatus != '未上报' && scope.row.escalationStatus != '未通过'">上报</el-link>
             <!-- <el-divider direction="vertical"></el-divider> -->
             <!-- <el-dropdown>
               <span class="btn_css">•••</span>
@@ -106,7 +125,8 @@
       style="text-align: center; margin-top: 10px" :page-size="deptCircularPage.pageSize"
       layout="total, sizes, prev, pager, next, jumper" :total="deptBudgetTotal">
     </el-pagination>
-    <el-dialog :close-on-click-modal='false' title="附件" :visible.sync="fujianInfo" width="830px" :before-close="fujianClose">
+    <el-dialog :close-on-click-modal='false' title="附件" :visible.sync="fujianInfo" width="830px"
+      :before-close="fujianClose">
       <div class="file">
         <div class="fujian_css">
           <div class="fujian_item" :class="count == 1 ? 'file_btn' : ''" @click="btnChange(1)">
@@ -132,10 +152,12 @@
           </div> -->
         </div>
         <div class="file_tips">
-          <span v-if="count == 1">有效期:{{file.cardValidityDate}} </span><span v-if="count == 2"> 准驾车型:{{file.quasiDrivingVehicle}} </span> <span v-if="count == 2"> 发证机关:{{file.lssuingAuthority}} </span> <span v-if="count == 4"> 从业资格证号:{{file.qualificationCertificateNumber}}</span>
+          <span v-if="count == 1">有效期:{{file.cardValidityDate}} </span><span v-if="count == 2">
+            准驾车型:{{file.quasiDrivingVehicle}} </span> <span v-if="count == 2"> 发证机关:{{file.lssuingAuthority}} </span>
+          <span v-if="count == 4"> 从业资格证号:{{file.qualificationCertificateNumber}}</span>
         </div>
         <div class="file_img">
-          <img :src="img[index]" class="img_css" @click="enlarge(img[index])"/>
+          <img :src="img[index]" class="img_css" @click="enlarge(img[index])" />
         </div>
         <div class="btn">
           <el-button style="margin-right: 120px" @click="index = 0"
@@ -145,107 +167,38 @@
         </div>
       </div>
     </el-dialog>
-	<el-drawer title="司机信息" :visible.sync="rightSee" style="overflow-y: auto !important">
+    <el-drawer title="司机信息" :visible.sync="rightSee" style="overflow-y: auto !important">
       <div class="right_css">
         <div class="title_name">基本信息</div>
-        <div class="right_item">订单编号:{{costData.orderNo}}</div>
-        <div class="right_title">货主</div>
-        <div class="right_item">{{costData.cargoOwner}}</div>
-        <div class="right_title">司机</div>
-        <div class="right_item">{{costData.driverName}}</div>
-        <div class="right_title">发货单位</div>
-        <div class="right_item">{{costData.compName}}</div>
-        <div class="right_title">发货地</div>
-        <div class="right_item">
-          {{costData.sendPrivate}}{{costData.sendCity}}{{costData.sendArea}}{{costData.sendDetailedAddress}}
-        </div>
-        <div class="right_title">卸货地</div>
-        <div class="right_item">
-          {{costData.unloadPrivate}}{{costData.unloadCity}}{{costData.unloadArea}}{{costData.unloadDetailedAddress}}
-        </div>
-         <div class="right_title">货物类别</div>
-        <div class="right_item">{{costData.goodsType}}</div>
-        <div class="right_title">货名</div>
-        <div class="right_item">{{costData.goodsName}}</div>
-        <div class="right_title">发货联系人</div>
-        <div class="right_item">{{costData.publishTaskInfo.sender}}</div>
-         <div class="right_title">发货联系人电话</div>
-        <div class="right_item">{{costData.publishTaskInfo.senderPhone}}</div>
-
-         <div class="right_title">收货联系人</div>
-        <div class="right_item">{{costData.publishTaskInfo.receiver}}</div>
-         <div class="right_title">收货联系人电话</div>
-        <div class="right_item">{{costData.publishTaskInfo.receiverPhone}}</div>
-         <div class="right_title">收货人身份证号</div>
-        <div class="right_item">{{costData.publishTaskInfo.receiverIdcard}}</div>
-          <div class="right_title">收货方信用代码(选填)</div>
-        <div class="right_item">{{costData.publishTaskInfo.receiverCreditCode?costData.publishTaskInfo.receiverCreditCode:'暂无'}}</div>
-
-
-        <div class="right_title">距离</div>
-        <div class="right_item">约{{costData.distance ? costData.distance : 0}}km</div>
-        <div class="right_title">运费</div>
-        <div class="right_item">{{costData.freight}}</div>
-        <el-divider v-if="costData.hyCarrierInfo"></el-divider>
-        <div v-if="costData.hyCarrierInfo">
-          <div class="title_name">承运信息</div>
-          <div class="right_title">承运合同编号</div>
-          <div class="right_item">{{costData.contractNo}}</div>
-          <div class="right_title">委托合同编号</div>
-          <div class="right_item">{{costData.wtContractNo}}</div>
-          <div class="right_title">车牌号</div>
-          <div class="right_item">{{costData.hyCarrierInfo.carNo}}</div>
-          <div class="right_title">预计运费</div>
-          <div class="right_item">{{costData.hyCarrierInfo.estimatedFreight}}</div>
-          <div class="right_title">装车时间</div>
-          <div class="right_item">{{costData.hyCarrierInfo.loadingDate}}</div>
-          <div class="right_title">装车定位</div>
-          <div class="right_item">{{costData.hyCarrierInfo.loadingCity}}{{costData.hyCarrierInfo.loadingArea}}</div>
-          <div class="right_title">装车照片</div>
-          <div style="display: flex;" v-if="costData.hyCarrierInfo.loadingImg">
-            <div v-for="(item,index) in costData.hyCarrierInfo.loadingImg.split(',')" :key="index">
-              <img :src="item" class="img_css" @click="enlarge(item)">
-            </div>
-          </div>
-          <div class="right_title" v-if="costData.hyCarrierInfo.totalFreight">合计应付运费</div>
-          <div class="right_item">{{costData.hyCarrierInfo.totalFreight}}</div>
-          <div class="right_title" v-if="costData.hyCarrierInfo.unloadingDate">卸车时间</div>
-          <div class="right_item">{{costData.hyCarrierInfo.unloadingDate}}</div>
-          <div class="right_title">卸车定位</div>
-          <div class="right_item">{{costData.hyCarrierInfo.unloadingCity}}{{costData.hyCarrierInfo.unloadingArea}}</div>
-          <div class="right_title" v-if="costData.hyCarrierInfo.unloadingImg">卸车照片</div>
-          <div style="display: flex;" v-if="costData.hyCarrierInfo.unloadingImg">
-            <div v-for="(item,index) in costData.hyCarrierInfo.unloadingImg.split(',')" :key="index">
-              <img :src="item" class="img_css" @click="enlarge(item)">
-            </div>
-          </div>
-        </div>
-        <el-divider v-if="costData.freightInfo"></el-divider>
-        <div v-if="costData.freightInfo">
-          <div class="title_name">运费信息(单位:元)</div>
-          <div class="right_title">预付运费</div>
-          <div class="right_item">{{costData.freightInfo.prepaidFreight}} <span
-              style="margin-left: 100px;">{{costData.freightInfo.prepaidFreightDate}}</span></div>
-          <div class="right_title">运费尾款</div>
-          <div class="right_item">{{costData.freightInfo.freightBalance?costData.freightInfo.freightBalance:'未支付'}}
-            <span style="margin-left: 100px;">{{costData.freightInfo.freightBalanceDate}}</span></div>
-          <div class="right_title" v-if="costData.freightInfo.freightBalance">明细</div>
-          <div class="right_item" v-if="costData.freightInfo.freightBalance">
-            预付{{costData.freightInfo.prepaidFreight ? costData.freightInfo.prepaidFreight : 0}}元,服务费{{costData.freightInfo.driverServiceCharge ? costData.freightInfo.driverServiceCharge:0}}元,尾款{{costData.freightInfo.freightBalance ? costData.freightInfo.freightBalance:0}}元,合计收款{{costData.freightInfo.totalCollection ? costData.freightInfo.totalCollection:0}}元。
-          </div>
-        </div>
-        <el-divider v-if="costData.repaymentInfo"></el-divider>
-        <div v-if="costData.repaymentInfo">
-          <div class="title_name">还款信息</div>
-          <div class="right_title">运费</div>
-          <div class="right_item">{{costData.freight}}</div>
-          <div class="right_title">超期费(每天3%)</div>
-          <div class="right_item">{{costData.repaymentInfo.overdueFee}}</div>
-          <div class="right_title">合计应还</div>
-          <div class="right_item">{{costData.repaymentInfo.totalRepayable}}</div>
-          <div class="right_title">还款(尾号6666)</div>
-          <div class="right_item">{{costData.repaymentInfo.alreadyRepaid}}</div>
-        </div>
+        <div class="right_item">姓名:{{costData.driverName}}</div>
+        <div class="right_title">性别</div>
+        <div class="right_item">{{costData.driverSex}} </div>
+         <div class="right_title">手机号码</div>
+        <div class="right_item">{{costData.driverPhone}} </div>
+         <div class="right_title">身份证照片(人像面)</div>
+        <img :src="costData.cardAddressUrl" alt="" class="img_css" @click="enlarge(costData.cardAddressUrl)">
+        <div class="right_title">身份证照片(国徽面)</div>
+         <img :src="costData.cardBackAddressUrl" alt="" class="img_css"  @click="enlarge(costData.cardBackAddressUrl)">
+        <div class="right_title">身份证号:</div>
+        <div class="right_item">{{costData.numberCard}}</div>
+        <div class="right_title">身份证有效期</div>
+        <div class="right_item">{{costData.cardValidityDate}} </div>
+         <div class="right_title">驾驶证照片(正页)</div>
+        <img :src="costData.driverLicenseHomePage" alt="" class="img_css" @click="enlarge(costData.driverLicenseHomePage)">
+        <div class="right_title">驾驶证照片(副页)</div>
+        <img :src="costData.driverLicenseBackPage" alt="" class="img_css" @click="enlarge(costData.driverLicenseBackPage)">
+        <div class="right_title">准驾车型</div>
+        <div class="right_item">{{costData.quasiDrivingVehicle}}</div>
+        <div class="right_title">驾驶证发证机关</div>
+        <div class="right_item">{{costData.lssuingAuthority}}</div>
+        <div class="right_title">驾驶证有效期</div>
+        <div class="right_item">{{costData.driverLicenseValidityDate}}</div>
+        <div class="right_title">道路运输从业资格证照片</div>
+        <img :src="costData.qualificationCertificate" alt="" class="img_css" @click="enlarge(costData.qualificationCertificate)">
+        <div class="right_title">从业资格证有效期</div>
+        <div class="right_item">{{costData.qualificationCertificateValidityDate}} </div>
+        <div class="right_title">从业资格证号</div>
+        <div class="right_item">{{costData.qualificationCertificateNumber}} </div>
       </div>
     </el-drawer>
     <el-image-viewer v-if="imgsVisible" :on-close="closeImgViewer" :url-list="srcList" style="z-index:9999" />
@@ -254,11 +207,9 @@
 <script>
   import {
     getList,
-    toExamine,
-    postNews,
-    billSee,
-    editInfo,
-  } from "@/api/driverManagement";
+    report,
+    getInfo
+  } from "@/api/parkReportManagement";
   export default {
     components: {
       "el-image-viewer": () =>
@@ -273,7 +224,7 @@
         pageSize: 10,
         deptBudgetTotal: 0,
         deptCircularPage: {},
-        search: "",
+        search: 1,
         disabled: false,
         userInfo: false,
         fujianInfo: false,
@@ -286,53 +237,103 @@
         //图片预览
         srcList: [],
         imgsVisible: false,
-		//筛选时间
-		startDate:"",
-		endDate:"",
-		value1:"",
-		//侧边查看
-		rightSee:false,
-		costData:{
-			publishTaskInfo:{}
-		}
+        //筛选时间
+        startDate: "",
+        endDate: "",
+        value1: [],
+        //侧边查看
+        rightSee: false,
+        costData: {
+          publishTaskInfo: {}
+        },
+        musterList:[],
       };
     },
     mounted() {
+      let date = new Date()
+      let date1 = new Date().setTime(date.getTime() - 365 * 60 * 60 * 24 * 1000) //一年前的时间蹉
+      date1 = new Date(parseInt(date1)).toLocaleString().split(" ")[0].replaceAll("/", "-")
+      let nian = date1.split("-")[0]
+      let yue = date1.split("-")[1]
+      if (yue < 10) {
+        yue = "0" + yue
+      }
+      let ri = date1.split("-")[2]
+      if (ri < 10) {
+        ri = "0" + ri
+      }
+      this.startDate = nian + "-" + yue + "-" + ri //一年前的時間
+      this.endDate = date.getFullYear() + "-" + (date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date
+        .getMonth()) + "-" + (date.getDate() < 10 ? "0" + date.getDate() : date.getDate()) //當前時間
+      this.value1.push(this.startDate)
+      this.value1.push(this.endDate)
       this.getList();
     },
     methods: {
-		see(row) { //附件
-        // this.loading = true
-		this.rightSee = true
-        // getData({
-        //     id: row.id
-        //   }).then(response => {
-        //     this.costData = response.data
-            
-        //     // this.deptBudgetTotal = response.data.total
-        //     this.listLoading = false
-        //   })
-        //   .catch(() => {
-        //     this.listLoading = false
-        //   })
+      //上报
+      escalation(){
+        if(this.musterList.length == 0){
+          this.$message.error("请勾选要上报的条目")
+          return
+        }
+          this.$confirm("确定上报信息?", "提示", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning",
+        }).then(() => {
+          report({hyDriverInfoList:this.musterList})
+          .then((response) => {
+             if (response.code == 200) {
+              this.$notify({
+                title: "成功",
+                message: "上报成功!",
+                type: "success",
+              });
+              this.musterList = []
+              this.getList();
+            }
+          })
+        })
       },
-	  report(row){//上报
-
-	  },
-		dateChange(e) {
+       handleRowClick(row) {
+        return true
+       },
+      handleSelectionChange(val){
+         this.musterList = val;
+         console.log(this.musterList)
+      },
+      see(row) { 
+        this.loading = true
+        this.rightSee = true
+        getInfo({
+            commonId: row.commonId
+          }).then(response => {
+            this.costData = response.data
+            this.listLoading = false
+          })
+          .catch(() => {
+            this.listLoading = false
+          })
+      },
+      reportInfo(row) { //上报
+      this.musterList.push(row)
+      this.escalation()
+      },
+      dateChange(e) {
+        console.log(this.value1)
         this.startDate = e[0]
         this.endDate = e[1]
         this.getList()
       },
       closeImgViewer() {
-         this.srcList = []
+        this.srcList = []
         this.imgsVisible = false;
       },
       enlarge(url) {
         this.imgsVisible = true;
         this.srcList.push(url)
       },
-           
+
       getList() {
         this.listLoading = true;
         let _obj = {};
@@ -340,6 +341,8 @@
         _obj.pageSize = this.pageSize;
         _obj.searchKeyWord = this.searchkeyWord;
         _obj.searchType = this.search;
+        _obj.startDate = this.startDate
+        _obj.endDate = this.endDate
         getList(_obj)
           .then((response) => {
             this.tableData = response.data.records;
@@ -404,8 +407,14 @@
       find() {
         this.getList();
       },
-	  selectInit() {
-        return true;
+      selectInit(row) {
+        // if (row.escalationStatus != '未上报'|| row.escalationStatus != '未通过') {  
+        //   return false;
+        // }else{
+        //   return true;
+        // }
+          return true;
+        
       },
       handleSizeChange(val) {
         console.log(`每页 ${val} 条`);
@@ -484,7 +493,7 @@
         background: #2f53eb;
         border-radius: 0px 2px 2px 0px;
         border: 1px solid #DCDFE6;
-        margin-left:-1px;
+        margin-left: -1px;
       }
 
       .count_css {
@@ -517,6 +526,7 @@
       }
     }
   }
+
   ::v-deep .el-table--border .el-table__header th {
     background: #f7f8f9;
   }
@@ -529,9 +539,10 @@
   .btn_css1 {
     margin-left: -20px;
   }
+
   //批量上报按钮
-  .batch_btn{
-	margin: 0 10px;
+  .batch_btn {
+    margin: 0 10px;
   }
 
   //附件
@@ -558,9 +569,10 @@
         background-color: #cfdbfe;
       }
     }
-    .file_tips{
-        margin: 10px auto;
-       width: 50%;
+
+    .file_tips {
+      margin: 10px auto;
+      width: 50%;
     }
 
     .file_img {
@@ -579,4 +591,27 @@
       margin: 0 auto;
     }
   }
+  .right_css{
+    .title_name,.right_title{
+      color: #9D9D9D;
+      margin-left: 20px;
+    }
+    .right_item{
+       color: #333333;
+       margin: 10px 0;
+        margin-left: 20px;
+    }
+    .img_css{
+      width: 100px;
+      height: 100px;
+      margin: 10px 0;
+      margin-left: 20px;
+    }
+  }
+  ::v-deep .el-drawer.rtl{
+    overflow-y: scroll;
+  }
+  .red_text{
+    color: red;
+  }
 </style>

+ 207 - 174
src/views/parkReportManagement/vehicleInformationReporting.vue

@@ -5,14 +5,16 @@
       <div class="top_css">
         <el-row>
           <el-col :span="14" style="height: 45px">
-            <el-button type="primary" class="batch_btn">批量上报</el-button>
-			  <el-date-picker v-model="value1" value-format="yyyy-MM-dd" @change="dateChange" type="daterange"
-              range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期">
+            <el-button type="primary" class="batch_btn" @click="escalation">批量上报</el-button>
+            <el-date-picker v-model="value1" value-format="yyyy-MM-dd" @change="dateChange" type="daterange"
+              :default-time="['00:00:00', '23:59:59']" range-separator="至" start-placeholder="开始日期"
+              end-placeholder="结束日期">
             </el-date-picker>
           </el-col>
           <el-col :span="10">
             <div class="screen">
-              <el-input class='find' placeholder="可按司机姓名、账号、身份证号查找" @keyup.enter.native="find" v-model="searchkeyWord" clearable @change="find"></el-input>
+              <el-input class='find' placeholder="可按司机姓名和账号查找" @keyup.enter.native="find" v-model="searchkeyWord"
+                clearable @change="find"></el-input>
               <el-button class="search" @click="find"><img width="16" height="16" style="margin-left: -8px"
                   src="../../../public/img/sousuo.png" /></el-button><span
                 class="count_css">共{{ deptBudgetTotal }}条</span>
@@ -22,44 +24,59 @@
         <el-row>
           <el-col>
             <div class="search_btn">
-              <div :class="search == '' ? 'search' : 'searchNo'" class="search_item search_block"
-                @click="searchBtn('')">
+              <div :class="search == 1 ? 'search' : 'searchNo'" class="search_item search_block"
+                @click="searchBtn(1)">
                 待上报
               </div>
-              <div :class="search == 1 ? 'search' : 'searchNo'" class="search_item" @click="searchBtn(1)">
-			        	审核中
-              </div>
               <div :class="search == 2 ? 'search' : 'searchNo'" class="search_item" @click="searchBtn(2)">
-                已通过
+                审核中
               </div>
               <div :class="search == 3 ? 'search' : 'searchNo'" class="search_item" @click="searchBtn(3)">
+                已通过
+              </div>
+              <div :class="search == 4 ? 'search' : 'searchNo'" class="search_item" @click="searchBtn(4)">
                 已过期
               </div>
-			        <div :class="search == 4 ? 'search' : 'searchNo'" class="search_item" @click="searchBtn(4)">
+              <div :class="search == '' ? 'search' : 'searchNo'" class="search_item" @click="searchBtn('')">
                 全部
               </div>
             </div>
           </el-col>
         </el-row>
       </div>
-      <el-table :data="tableData" style="width: 98%; margin: 0 auto; border-radius: 10px" height="55.8vh" border highlight-current-row>
-		<el-table-column type="selection" width="55" :selectable="selectInit">
+      <el-table :data="tableData" style="width: 98%; margin: 0 auto; border-radius: 10px" height="55.8vh" border
+        highlight-current-row @row-click="handleRowClick" @selection-change="handleSelectionChange" >
+        <el-table-column type="selection" width="55" :selectable="selectInit">
         </el-table-column>
-		<el-table-column type="index" label="序号" width="50">
+        <el-table-column type="index" label="序号" width="50">
           <template scope="scope">
             <span v-if="scope.$index < 9">0{{ scope.$index + 1 }}</span>
             <span v-else>{{ scope.$index + 1 }}</span>
           </template>
         </el-table-column>
-        <el-table-column prop="driverName" label="司机姓名" ></el-table-column>
-        <el-table-column prop="driverPhone" label="账号" ></el-table-column>
-        <el-table-column prop="numberCard" label="牵引车车牌号" ></el-table-column>
-        <el-table-column prop="shipmentsNumber" label="挂车车牌号"></el-table-column>
-        <el-table-column prop="favorableRate" label="行驶证有效期" ></el-table-column>
-        <el-table-column prop="favorableRate" label="挂车行驶证有效期" ></el-table-column>
-        <el-table-column prop="favorableRate" label="道路运输证有效期" ></el-table-column>
-        <el-table-column prop="complaintsNumber" label="上报时间"></el-table-column>
-      <el-table-column prop="paymentDate" label="附件">
+        <el-table-column prop="driverName" label="司机姓名"></el-table-column>
+        <el-table-column prop="driverPhone" label="账号"></el-table-column>
+        <el-table-column prop="driverLicenseValidityStartDate" label="驾驶证有效期">
+          <template slot-scope="scope">
+            <span :class="scope.row.driverOverdueFlag == 1?'red_text':''">{{scope.row.driverLicenseValidityStartDate}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="qualificationCertificateValidityDate" label="从业资格证有效期">
+           <template slot-scope="scope">
+            <span :class="scope.row.qualificationOverdueFlag == 1?'red_text':''">{{scope.row.qualificationCertificateValidityDate}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="cardValidityDate" label="身份证有效期">
+             <template slot-scope="scope">
+            <span :class="scope.row.overdueFlag == 1?'red_text':''">{{scope.row.cardValidityDate}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="updateDate" label="上报时间">
+          <template slot-scope="scope">
+            <span v-if="scope.row.escalationStatus != '未认证' && scope.row.escalationStatus != '待上报'">{{scope.row.updateDate}}</span><!-- 未认证和待上报不显示时间 -->
+          </template>
+        </el-table-column>
+        <el-table-column prop="paymentDate" label="附件">
           <template slot-scope="scope" style="text-align: center" v-if="scope.row.backStageStatus !='未认证'">
             <span class="btn_css btn_css1" @click="fujianLook(scope.row)">查看</span>
             <el-tooltip placement="top" v-if="
@@ -81,14 +98,14 @@
             </el-tooltip>
           </template>
         </el-table-column>
-        <el-table-column prop="advancePayment" label="状态" min-width="100"></el-table-column>
+        <el-table-column prop="escalationStatus" label="状态" min-width="100"></el-table-column>
         <el-table-column label="操作" min-width="200">
           <template slot-scope="scope">
             <el-link target="_blank" @click="see(scope.row)" type="primary" :underline="false"
-              :disabled="scope.row.authenticationStatus != '审核中'">查看</el-link>
+              >查看</el-link>
             <el-divider direction="vertical"></el-divider>
-            <el-link target="_blank" @click="report(scope.row)" type="primary" :underline="false"
-              :disabled="scope.row.authenticationStatus != '审核中'">上报</el-link>
+            <el-link target="_blank" @click="reportInfo(scope.row)" type="primary" :underline="false"
+              :disabled="scope.row.escalationStatus != '未上报' && scope.row.escalationStatus != '未通过'">上报</el-link>
             <!-- <el-divider direction="vertical"></el-divider> -->
             <!-- <el-dropdown>
               <span class="btn_css">•••</span>
@@ -108,7 +125,8 @@
       style="text-align: center; margin-top: 10px" :page-size="deptCircularPage.pageSize"
       layout="total, sizes, prev, pager, next, jumper" :total="deptBudgetTotal">
     </el-pagination>
-    <el-dialog :close-on-click-modal='false' title="附件" :visible.sync="fujianInfo" width="830px" :before-close="fujianClose">
+    <el-dialog :close-on-click-modal='false' title="附件" :visible.sync="fujianInfo" width="830px"
+      :before-close="fujianClose">
       <div class="file">
         <div class="fujian_css">
           <div class="fujian_item" :class="count == 1 ? 'file_btn' : ''" @click="btnChange(1)">
@@ -134,10 +152,12 @@
           </div> -->
         </div>
         <div class="file_tips">
-          <span v-if="count == 1">有效期:{{file.cardValidityDate}} </span><span v-if="count == 2"> 准驾车型:{{file.quasiDrivingVehicle}} </span> <span v-if="count == 2"> 发证机关:{{file.lssuingAuthority}} </span> <span v-if="count == 4"> 从业资格证号:{{file.qualificationCertificateNumber}}</span>
+          <span v-if="count == 1">有效期:{{file.cardValidityDate}} </span><span v-if="count == 2">
+            准驾车型:{{file.quasiDrivingVehicle}} </span> <span v-if="count == 2"> 发证机关:{{file.lssuingAuthority}} </span>
+          <span v-if="count == 4"> 从业资格证号:{{file.qualificationCertificateNumber}}</span>
         </div>
         <div class="file_img">
-          <img :src="img[index]" class="img_css" @click="enlarge(img[index])"/>
+          <img :src="img[index]" class="img_css" @click="enlarge(img[index])" />
         </div>
         <div class="btn">
           <el-button style="margin-right: 120px" @click="index = 0"
@@ -147,107 +167,38 @@
         </div>
       </div>
     </el-dialog>
-	<el-drawer title="司机信息" :visible.sync="rightSee" style="overflow-y: auto !important">
+    <el-drawer title="司机信息" :visible.sync="rightSee" style="overflow-y: auto !important">
       <div class="right_css">
         <div class="title_name">基本信息</div>
-        <div class="right_item">订单编号:{{costData.orderNo}}</div>
-        <div class="right_title">货主</div>
-        <div class="right_item">{{costData.cargoOwner}}</div>
-        <div class="right_title">司机</div>
-        <div class="right_item">{{costData.driverName}}</div>
-        <div class="right_title">发货单位</div>
-        <div class="right_item">{{costData.compName}}</div>
-        <div class="right_title">发货地</div>
-        <div class="right_item">
-          {{costData.sendPrivate}}{{costData.sendCity}}{{costData.sendArea}}{{costData.sendDetailedAddress}}
-        </div>
-        <div class="right_title">卸货地</div>
-        <div class="right_item">
-          {{costData.unloadPrivate}}{{costData.unloadCity}}{{costData.unloadArea}}{{costData.unloadDetailedAddress}}
-        </div>
-         <div class="right_title">货物类别</div>
-        <div class="right_item">{{costData.goodsType}}</div>
-        <div class="right_title">货名</div>
-        <div class="right_item">{{costData.goodsName}}</div>
-        <div class="right_title">发货联系人</div>
-        <div class="right_item">{{costData.publishTaskInfo.sender}}</div>
-         <div class="right_title">发货联系人电话</div>
-        <div class="right_item">{{costData.publishTaskInfo.senderPhone}}</div>
-
-         <div class="right_title">收货联系人</div>
-        <div class="right_item">{{costData.publishTaskInfo.receiver}}</div>
-         <div class="right_title">收货联系人电话</div>
-        <div class="right_item">{{costData.publishTaskInfo.receiverPhone}}</div>
-         <div class="right_title">收货人身份证号</div>
-        <div class="right_item">{{costData.publishTaskInfo.receiverIdcard}}</div>
-          <div class="right_title">收货方信用代码(选填)</div>
-        <div class="right_item">{{costData.publishTaskInfo.receiverCreditCode?costData.publishTaskInfo.receiverCreditCode:'暂无'}}</div>
-
-
-        <div class="right_title">距离</div>
-        <div class="right_item">约{{costData.distance ? costData.distance : 0}}km</div>
-        <div class="right_title">运费</div>
-        <div class="right_item">{{costData.freight}}</div>
-        <el-divider v-if="costData.hyCarrierInfo"></el-divider>
-        <div v-if="costData.hyCarrierInfo">
-          <div class="title_name">承运信息</div>
-          <div class="right_title">承运合同编号</div>
-          <div class="right_item">{{costData.contractNo}}</div>
-          <div class="right_title">委托合同编号</div>
-          <div class="right_item">{{costData.wtContractNo}}</div>
-          <div class="right_title">车牌号</div>
-          <div class="right_item">{{costData.hyCarrierInfo.carNo}}</div>
-          <div class="right_title">预计运费</div>
-          <div class="right_item">{{costData.hyCarrierInfo.estimatedFreight}}</div>
-          <div class="right_title">装车时间</div>
-          <div class="right_item">{{costData.hyCarrierInfo.loadingDate}}</div>
-          <div class="right_title">装车定位</div>
-          <div class="right_item">{{costData.hyCarrierInfo.loadingCity}}{{costData.hyCarrierInfo.loadingArea}}</div>
-          <div class="right_title">装车照片</div>
-          <div style="display: flex;" v-if="costData.hyCarrierInfo.loadingImg">
-            <div v-for="(item,index) in costData.hyCarrierInfo.loadingImg.split(',')" :key="index">
-              <img :src="item" class="img_css" @click="enlarge(item)">
-            </div>
-          </div>
-          <div class="right_title" v-if="costData.hyCarrierInfo.totalFreight">合计应付运费</div>
-          <div class="right_item">{{costData.hyCarrierInfo.totalFreight}}</div>
-          <div class="right_title" v-if="costData.hyCarrierInfo.unloadingDate">卸车时间</div>
-          <div class="right_item">{{costData.hyCarrierInfo.unloadingDate}}</div>
-          <div class="right_title">卸车定位</div>
-          <div class="right_item">{{costData.hyCarrierInfo.unloadingCity}}{{costData.hyCarrierInfo.unloadingArea}}</div>
-          <div class="right_title" v-if="costData.hyCarrierInfo.unloadingImg">卸车照片</div>
-          <div style="display: flex;" v-if="costData.hyCarrierInfo.unloadingImg">
-            <div v-for="(item,index) in costData.hyCarrierInfo.unloadingImg.split(',')" :key="index">
-              <img :src="item" class="img_css" @click="enlarge(item)">
-            </div>
-          </div>
-        </div>
-        <el-divider v-if="costData.freightInfo"></el-divider>
-        <div v-if="costData.freightInfo">
-          <div class="title_name">运费信息(单位:元)</div>
-          <div class="right_title">预付运费</div>
-          <div class="right_item">{{costData.freightInfo.prepaidFreight}} <span
-              style="margin-left: 100px;">{{costData.freightInfo.prepaidFreightDate}}</span></div>
-          <div class="right_title">运费尾款</div>
-          <div class="right_item">{{costData.freightInfo.freightBalance?costData.freightInfo.freightBalance:'未支付'}}
-            <span style="margin-left: 100px;">{{costData.freightInfo.freightBalanceDate}}</span></div>
-          <div class="right_title" v-if="costData.freightInfo.freightBalance">明细</div>
-          <div class="right_item" v-if="costData.freightInfo.freightBalance">
-            预付{{costData.freightInfo.prepaidFreight ? costData.freightInfo.prepaidFreight : 0}}元,服务费{{costData.freightInfo.driverServiceCharge ? costData.freightInfo.driverServiceCharge:0}}元,尾款{{costData.freightInfo.freightBalance ? costData.freightInfo.freightBalance:0}}元,合计收款{{costData.freightInfo.totalCollection ? costData.freightInfo.totalCollection:0}}元。
-          </div>
-        </div>
-        <el-divider v-if="costData.repaymentInfo"></el-divider>
-        <div v-if="costData.repaymentInfo">
-          <div class="title_name">还款信息</div>
-          <div class="right_title">运费</div>
-          <div class="right_item">{{costData.freight}}</div>
-          <div class="right_title">超期费(每天3%)</div>
-          <div class="right_item">{{costData.repaymentInfo.overdueFee}}</div>
-          <div class="right_title">合计应还</div>
-          <div class="right_item">{{costData.repaymentInfo.totalRepayable}}</div>
-          <div class="right_title">还款(尾号6666)</div>
-          <div class="right_item">{{costData.repaymentInfo.alreadyRepaid}}</div>
-        </div>
+        <div class="right_item">姓名:{{costData.driverName}}</div>
+        <div class="right_title">性别</div>
+        <div class="right_item">{{costData.driverSex}} </div>
+         <div class="right_title">手机号码</div>
+        <div class="right_item">{{costData.driverPhone}} </div>
+         <div class="right_title">身份证照片(人像面)</div>
+        <img :src="costData.cardAddressUrl" alt="" class="img_css" @click="enlarge(costData.cardAddressUrl)">
+        <div class="right_title">身份证照片(国徽面)</div>
+         <img :src="costData.cardBackAddressUrl" alt="" class="img_css"  @click="enlarge(costData.cardBackAddressUrl)">
+        <div class="right_title">身份证号:</div>
+        <div class="right_item">{{costData.numberCard}}</div>
+        <div class="right_title">身份证有效期</div>
+        <div class="right_item">{{costData.cardValidityDate}} </div>
+         <div class="right_title">驾驶证照片(正页)</div>
+        <img :src="costData.driverLicenseHomePage" alt="" class="img_css" @click="enlarge(costData.driverLicenseHomePage)">
+        <div class="right_title">驾驶证照片(副页)</div>
+        <img :src="costData.driverLicenseBackPage" alt="" class="img_css" @click="enlarge(costData.driverLicenseBackPage)">
+        <div class="right_title">准驾车型</div>
+        <div class="right_item">{{costData.quasiDrivingVehicle}}</div>
+        <div class="right_title">驾驶证发证机关</div>
+        <div class="right_item">{{costData.lssuingAuthority}}</div>
+        <div class="right_title">驾驶证有效期</div>
+        <div class="right_item">{{costData.driverLicenseValidityDate}}</div>
+        <div class="right_title">道路运输从业资格证照片</div>
+        <img :src="costData.qualificationCertificate" alt="" class="img_css" @click="enlarge(costData.qualificationCertificate)">
+        <div class="right_title">从业资格证有效期</div>
+        <div class="right_item">{{costData.qualificationCertificateValidityDate}} </div>
+        <div class="right_title">从业资格证号</div>
+        <div class="right_item">{{costData.qualificationCertificateNumber}} </div>
       </div>
     </el-drawer>
     <el-image-viewer v-if="imgsVisible" :on-close="closeImgViewer" :url-list="srcList" style="z-index:9999" />
@@ -255,12 +206,10 @@
 </template>
 <script>
   import {
-    getList,
-    toExamine,
-    postNews,
-    billSee,
-    editInfo,
-  } from "@/api/driverManagement";
+    carGetList,
+    carReport,
+    getInfo
+  } from "@/api/parkReportManagement";
   export default {
     components: {
       "el-image-viewer": () =>
@@ -275,7 +224,7 @@
         pageSize: 10,
         deptBudgetTotal: 0,
         deptCircularPage: {},
-        search: "",
+        search: 1,
         disabled: false,
         userInfo: false,
         fujianInfo: false,
@@ -288,53 +237,103 @@
         //图片预览
         srcList: [],
         imgsVisible: false,
-		//筛选时间
-		startDate:"",
-		endDate:"",
-		value1:"",
-		//侧边查看
-		rightSee:false,
-		costData:{
-			publishTaskInfo:{}
-		}
+        //筛选时间
+        startDate: "",
+        endDate: "",
+        value1: [],
+        //侧边查看
+        rightSee: false,
+        costData: {
+          publishTaskInfo: {}
+        },
+        musterList:[],
       };
     },
     mounted() {
+      let date = new Date()
+      let date1 = new Date().setTime(date.getTime() - 365 * 60 * 60 * 24 * 1000) //一年前的时间蹉
+      date1 = new Date(parseInt(date1)).toLocaleString().split(" ")[0].replaceAll("/", "-")
+      let nian = date1.split("-")[0]
+      let yue = date1.split("-")[1]
+      if (yue < 10) {
+        yue = "0" + yue
+      }
+      let ri = date1.split("-")[2]
+      if (ri < 10) {
+        ri = "0" + ri
+      }
+      this.startDate = nian + "-" + yue + "-" + ri //一年前的時間
+      this.endDate = date.getFullYear() + "-" + (date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date
+        .getMonth()) + "-" + (date.getDate() < 10 ? "0" + date.getDate() : date.getDate()) //當前時間
+      this.value1.push(this.startDate)
+      this.value1.push(this.endDate)
       this.getList();
     },
     methods: {
-		see(row) { //附件
-        // this.loading = true
-		this.rightSee = true
-        // getData({
-        //     id: row.id
-        //   }).then(response => {
-        //     this.costData = response.data
-            
-        //     // this.deptBudgetTotal = response.data.total
-        //     this.listLoading = false
-        //   })
-        //   .catch(() => {
-        //     this.listLoading = false
-        //   })
+      //上报
+      escalation(){
+        if(this.musterList.length == 0){
+          this.$message.error("请勾选要上报的条目")
+          return
+        }
+          this.$confirm("确定上报信息?", "提示", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning",
+        }).then(() => {
+          carReport({hyDriverInfoList:this.musterList})
+          .then((response) => {
+             if (response.code == 200) {
+              this.$notify({
+                title: "成功",
+                message: "上报成功!",
+                type: "success",
+              });
+              this.musterList = []
+              this.getList();
+            }
+          })
+        })
       },
-	  report(row){//上报
-
-	  },
-		dateChange(e) {
+       handleRowClick(row) {
+        return true
+       },
+      handleSelectionChange(val){
+         this.musterList = val;
+         console.log(this.musterList)
+      },
+      see(row) { 
+        this.loading = true
+        this.rightSee = true
+        getInfo({
+            commonId: row.commonId
+          }).then(response => {
+            this.costData = response.data
+            this.listLoading = false
+          })
+          .catch(() => {
+            this.listLoading = false
+          })
+      },
+      reportInfo(row) { //上报
+      this.musterList.push(row)
+      this.escalation()
+      },
+      dateChange(e) {
+        console.log(this.value1)
         this.startDate = e[0]
         this.endDate = e[1]
         this.getList()
       },
       closeImgViewer() {
-         this.srcList = []
+        this.srcList = []
         this.imgsVisible = false;
       },
       enlarge(url) {
         this.imgsVisible = true;
         this.srcList.push(url)
       },
-           
+
       getList() {
         this.listLoading = true;
         let _obj = {};
@@ -342,7 +341,9 @@
         _obj.pageSize = this.pageSize;
         _obj.searchKeyWord = this.searchkeyWord;
         _obj.searchType = this.search;
-        getList(_obj)
+        _obj.startDate = this.startDate
+        _obj.endDate = this.endDate
+        carGetList(_obj)
           .then((response) => {
             this.tableData = response.data.records;
             for (let i = 0; i < this.tableData.length; i++) {
@@ -406,8 +407,14 @@
       find() {
         this.getList();
       },
-	  selectInit() {
-        return true;
+      selectInit(row) {
+        // if (row.escalationStatus != '未上报'|| row.escalationStatus != '未通过') {  
+        //   return false;
+        // }else{
+        //   return true;
+        // }
+          return true;
+        
       },
       handleSizeChange(val) {
         console.log(`每页 ${val} 条`);
@@ -486,7 +493,7 @@
         background: #2f53eb;
         border-radius: 0px 2px 2px 0px;
         border: 1px solid #DCDFE6;
-        margin-left:-1px;
+        margin-left: -1px;
       }
 
       .count_css {
@@ -519,6 +526,7 @@
       }
     }
   }
+
   ::v-deep .el-table--border .el-table__header th {
     background: #f7f8f9;
   }
@@ -531,9 +539,10 @@
   .btn_css1 {
     margin-left: -20px;
   }
+
   //批量上报按钮
-  .batch_btn{
-	margin: 0 10px;
+  .batch_btn {
+    margin: 0 10px;
   }
 
   //附件
@@ -560,9 +569,10 @@
         background-color: #cfdbfe;
       }
     }
-    .file_tips{
-        margin: 10px auto;
-       width: 50%;
+
+    .file_tips {
+      margin: 10px auto;
+      width: 50%;
     }
 
     .file_img {
@@ -581,4 +591,27 @@
       margin: 0 auto;
     }
   }
+  .right_css{
+    .title_name,.right_title{
+      color: #9D9D9D;
+      margin-left: 20px;
+    }
+    .right_item{
+       color: #333333;
+       margin: 10px 0;
+        margin-left: 20px;
+    }
+    .img_css{
+      width: 100px;
+      height: 100px;
+      margin: 10px 0;
+      margin-left: 20px;
+    }
+  }
+  ::v-deep .el-drawer.rtl{
+    overflow-y: scroll;
+  }
+  .red_text{
+    color: red;
+  }
 </style>