Browse Source

fix-统计

LAPTOP-U5GOA5HA\zz 1 year ago
parent
commit
0f1e10b958

BIN
liclw-dist.zip → clw.zip


+ 208 - 0
src/views/cardIot/components/LunarOverspeed.vue

@@ -0,0 +1,208 @@
+<template>
+  <div class="lun-main">
+    <div style="padding: 10px 10px; ">
+      <span style="color: #000; font-size: 18px;">月超速统计</span>
+      <div style="margin-top: 60px;width: 100px;text-align: center;">
+        <div style="margin: 10px 0;color: #3eb2e8;font-size: 20px;">141</div>
+        <div style="color: #000;font-size: 14px;">整体超速次数</div>
+      </div>
+      <div style="margin-top: 20px;width: 100px;text-align: center;">
+        <div style="margin: 10px 0;color: #3eb2e8;font-size: 20px;">23.5</div>
+        <div style="color: #000;font-size: 14px;">平均超速次数</div>
+      </div>
+    </div>
+    <div style="padding: 10px 10px 10px 0; ">
+      <a-range-picker
+        style="width: 100%"
+        v-model="daterangeCreateTime"
+        valueFormat="YYYY-MM-DD"
+        format="YYYY-MM-DD"
+        allow-clear
+      />
+      <div ref="chart" class="item" style="width: 380px; height: 260px" />
+    </div>
+  </div>
+</template>
+
+<script>
+import * as echarts from 'echarts'
+export default {
+  data() {
+    return {
+      daterangeCreateTime: [],
+    }
+  },
+  mounted() {
+    // 获取dom容器
+    const chartDom = this.$refs.chart
+    // 初始化图表实例
+    this.chart = echarts.init(chartDom)
+    this.initChart()
+    // console.log("da======ta", this.processData, this.maxNum);
+  },
+  methods: {
+    initChart() {
+      const data = [220, 182, 191, 234, 290, 330, 310]
+      const sideData = data.map((item) => item + 4.5)
+      const option = {
+        tooltip: {
+          trigger: 'axis',
+          formatter: '{b} : {c}',
+          axisPointer: {
+            // 坐标轴指示器,坐标轴触发有效
+            type: 'shadow', // 默认为直线,可选为:'line' | 'shadow'
+          },
+        },
+        xAxis: {
+          data: [
+            '两江支队',
+            '鸳鸯消防救援站',
+            '翠云消防救援站',
+            '龙头寺消防救援站',
+            '大竹林特勤站',
+            '礼嘉消防救援站',
+            '奥园消防救援站',
+          ],
+          //坐标轴
+          axisLine: {
+            lineStyle: {
+              color: '#3eb2e8',
+            },
+          },
+          //坐标值标注
+          axisLabel: {
+            show: true,
+            interval: 0,
+            rotate: 30,
+            textStyle: {
+              color: '#3eb2e8',
+              fontSize:12
+            },
+          },
+        },
+        yAxis: {
+          //坐标轴
+          axisLine: {
+            show: false,
+          },
+          //坐标值标注
+          axisLabel: {
+            show: true,
+            textStyle: {
+              color: '#000',
+            },
+          },
+          //分格线
+          splitLine: {
+            lineStyle: {
+              color: '#ccc',
+            },
+          },
+        },
+        series: [
+          {
+            name: 'a',
+            tooltip: {
+              show: false,
+            },
+            type: 'bar',
+            barWidth: 14.5,
+            itemStyle: {
+              normal: {
+                color: new echarts.graphic.LinearGradient(
+                  0,
+                  1,
+                  0,
+                  0,
+                  [
+                    {
+                      offset: 0,
+                      color: '#0B4EC3', // 0% 处的颜色
+                    },
+                    {
+                      offset: 0.6,
+                      color: '#138CEB', // 60% 处的颜色
+                    },
+                    {
+                      offset: 1,
+                      color: '#17AAFE', // 100% 处的颜色
+                    },
+                  ],
+                  false
+                ),
+              },
+            },
+            data: data,
+            barGap: 0,
+          },
+          {
+            type: 'bar',
+            barWidth: 0,
+            itemStyle: {
+              normal: {
+                color: new echarts.graphic.LinearGradient(
+                  0,
+                  1,
+                  0,
+                  0,
+                  [
+                    {
+                      offset: 0,
+                      color: '#09337C', // 0% 处的颜色
+                    },
+                    {
+                      offset: 0.6,
+                      color: '#0761C0', // 60% 处的颜色
+                    },
+                    {
+                      offset: 1,
+                      color: '#0575DE', // 100% 处的颜色
+                    },
+                  ],
+                  false
+                ),
+              },
+            },
+            barGap: 0,
+            data: sideData,
+          },
+          //   {
+          //     name: 'b',
+          //     tooltip: {
+          //       show: false,
+          //     },
+          //     type: 'pictorialBar',
+          //     itemStyle: {
+          //       borderWidth: 1,
+          //       borderColor: '#0571D5',
+          //       color: '#1779E0',
+          //     },
+          //     symbol: 'path://M 0,0 l 120,0 l -30,60 l -120,0 z',
+          //     symbolSize: ['30', '12'],
+          //     symbolOffset: ['0', '-11'],
+          //     //symbolRotate: -5,
+          //     symbolPosition: 'end',
+          //     data: data,
+          //     z: 3,
+          //   },
+        ],
+      }
+
+      this.chart.setOption(option)
+    },
+  },
+}
+</script>
+
+<style lang="less" scoped>
+.lun-main {
+  width: 500px;
+  height: 300px;
+  display: flex;
+  justify-content: space-between;
+  //   background-color: aqua;
+//   border-right: 1px solid #ccc;
+  pointer-events: all;
+  padding-right: 10px;
+}
+</style>

+ 225 - 0
src/views/cardIot/components/OfCarUseNum.vue

@@ -0,0 +1,225 @@
+<template>
+  <div class="lun-main">
+    <div style="padding: 10px 10px">
+      <span style="color: #000; font-size: 18px">用车次数</span>
+      <div style="margin-top: 60px; width: 100px; text-align: center">
+        <div style="margin: 10px 0; color: #3eb2e8; font-size: 20px">168</div>
+        <div style="color: #000; font-size: 14px">总体用车次数</div>
+      </div>
+      <div style="margin-top: 20px; width: 100px; text-align: center">
+        <div style="margin: 10px 0; color: #3eb2e8; font-size: 20px">13</div>
+        <div style="color: #000; font-size: 14px">本机构用车次数</div>
+      </div>
+    </div>
+    <div style="padding: 10px 10px 10px 0">
+      <div style="display: flex;">
+        <a-radio-group name="radioGroup" :default-value="1">
+          <a-radio :value="1"> 日 </a-radio>
+          <a-radio :value="2"> 周 </a-radio>
+          <a-radio :value="3"> 月 </a-radio>
+          <a-radio :value="4"> 年 </a-radio>
+        </a-radio-group>
+        <a-range-picker
+        :value="[startDate,endDate]"
+        disabled
+        style="width: 100%"
+        v-model="daterangeCreateTime"
+        valueFormat="YYYY-MM-DD"
+        format="YYYY-MM-DD"
+        allow-clear
+      />
+      </div>
+    
+      <div ref="chart" class="item" style="width: 380px; height: 260px" />
+    </div>
+  </div>
+</template>
+
+<script>
+import * as echarts from 'echarts'
+import moment from 'moment';
+export default {
+  data() {
+    return {
+      daterangeCreateTime: [],
+      dateFormat:'YYYY-MM-DD',
+      startDate :'2023-08-28',
+      endDate:'2023-08-28',
+      moment: moment
+    }
+  },
+  mounted() {
+    // 获取dom容器
+    const chartDom = this.$refs.chart
+    // 初始化图表实例
+    this.chart = echarts.init(chartDom)
+    this.initChart()
+    // console.log("da======ta", this.processData, this.maxNum);
+  },
+  methods: {
+    initChart() {
+      const data = [220, 182, 191, 234, 290, 330, 310]
+      const sideData = data.map((item) => item + 4.5)
+      const option = {
+        tooltip: {
+          trigger: 'axis',
+          formatter: '{b} : {c}',
+          axisPointer: {
+            // 坐标轴指示器,坐标轴触发有效
+            type: 'shadow', // 默认为直线,可选为:'line' | 'shadow'
+          },
+        },
+        xAxis: {
+          data: [
+            '两江支队',
+            '鸳鸯消防救援站',
+            '翠云消防救援站',
+            '龙头寺消防救援站',
+            '大竹林特勤站',
+            '礼嘉消防救援站',
+            '奥园消防救援站',
+          ],
+          //坐标轴
+          axisLine: {
+            lineStyle: {
+              color: '#3eb2e8',
+            },
+          },
+          //坐标值标注
+          axisLabel: {
+            show: true,
+            interval: 0,
+            rotate: 30,
+            textStyle: {
+              color: '#3eb2e8',
+              fontSize: 12,
+            },
+          },
+        },
+        yAxis: {
+          //坐标轴
+          axisLine: {
+            show: false,
+          },
+          //坐标值标注
+          axisLabel: {
+            show: true,
+            textStyle: {
+              color: '#000',
+            },
+          },
+          //分格线
+          splitLine: {
+            lineStyle: {
+              color: '#ccc',
+            },
+          },
+        },
+        series: [
+          {
+            name: 'a',
+            tooltip: {
+              show: false,
+            },
+            type: 'bar',
+            barWidth: 14.5,
+            itemStyle: {
+              normal: {
+                color: new echarts.graphic.LinearGradient(
+                  0,
+                  1,
+                  0,
+                  0,
+                  [
+                    {
+                      offset: 0,
+                      color: '#0B4EC3', // 0% 处的颜色
+                    },
+                    {
+                      offset: 0.6,
+                      color: '#138CEB', // 60% 处的颜色
+                    },
+                    {
+                      offset: 1,
+                      color: '#17AAFE', // 100% 处的颜色
+                    },
+                  ],
+                  false
+                ),
+              },
+            },
+            data: data,
+            barGap: 0,
+          },
+          {
+            type: 'bar',
+            barWidth: 0,
+            itemStyle: {
+              normal: {
+                color: new echarts.graphic.LinearGradient(
+                  0,
+                  1,
+                  0,
+                  0,
+                  [
+                    {
+                      offset: 0,
+                      color: '#09337C', // 0% 处的颜色
+                    },
+                    {
+                      offset: 0.6,
+                      color: '#0761C0', // 60% 处的颜色
+                    },
+                    {
+                      offset: 1,
+                      color: '#0575DE', // 100% 处的颜色
+                    },
+                  ],
+                  false
+                ),
+              },
+            },
+            barGap: 0,
+            data: sideData,
+          },
+          //   {
+          //     name: 'b',
+          //     tooltip: {
+          //       show: false,
+          //     },
+          //     type: 'pictorialBar',
+          //     itemStyle: {
+          //       borderWidth: 1,
+          //       borderColor: '#0571D5',
+          //       color: '#1779E0',
+          //     },
+          //     symbol: 'path://M 0,0 l 120,0 l -30,60 l -120,0 z',
+          //     symbolSize: ['30', '12'],
+          //     symbolOffset: ['0', '-11'],
+          //     //symbolRotate: -5,
+          //     symbolPosition: 'end',
+          //     data: data,
+          //     z: 3,
+          //   },
+        ],
+      }
+
+      this.chart.setOption(option)
+    },
+  },
+}
+</script>
+
+<style lang="less" scoped>
+.lun-main {
+  width: 400px;
+  height: 300px;
+  display: flex;
+  justify-content: space-between;
+  margin-left: 10px;
+  //   background-color: aqua;
+  border-left: 1px solid #ccc;
+  pointer-events: all;
+  padding-right: 10px;
+}
+</style>

+ 30 - 20
src/views/cardIot/components/QuantityOil.vue

@@ -2,17 +2,25 @@
   <div class="ma-bg">
     <!-- 水箱 -->
     <div class="main">
-      <span style="color: #5695ed;">水箱水量</span>
-      <div class="bg">
-        <span class="lin-z"></span>
+      <div>
+        <span style="color: #5695ed">水箱水量</span>
+        <div class="bg">
+          <span class="lin-z"></span>
+        </div>
+      </div>
+      <div>
+        <span style="color: #5695ed">油箱油量</span>
+        <div class="bg">
+          <span class="lin-z"></span>
+        </div>
       </div>
     </div>
-    <div class="main" style="margin-left: 20px;">
+    <!-- <div class="main" style="margin-left: 20px;">
       <span style="color: #5695ed;">油箱油量</span>
       <div class="bg">
         <span class="lin-z"></span>
       </div>
-    </div>
+    </div> -->
   </div>
 </template>
 
@@ -20,14 +28,16 @@
 
 <style lang="less" scoped>
 .ma-bg {
- display: flex;
+  display: flex;
   margin-top: 10px;
-  .main{
+  .main {
     width: 350px;
-  height: 150px;
-  background: #fff;
-  padding: 8px 10px;
-//   overflow-y: scroll;
+    height: 150px;
+    background: #fff;
+    padding: 8px 10px;
+    display: flex;
+    justify-content: space-around;
+    //   overflow-y: scroll;
   }
   .bg {
     position: relative;
@@ -40,15 +50,15 @@
       rgba(221, 119, 0, 0.3) 66%,
       rgba(221, 31, 0, 0.3)
     );
-    .lin-z{
-        position: absolute;
-        left: 17px;
-        bottom: 0;
-        display: inline-block;
-        width: 20px;
-        height: 100px;
-        background: #0f41a6;
-        opacity: .5;
+    .lin-z {
+      position: absolute;
+      left: 17px;
+      bottom: 0;
+      display: inline-block;
+      width: 20px;
+      height: 100px;
+      background: #0f41a6;
+      opacity: 0.5;
     }
   }
 }

+ 1 - 1
src/views/cardIot/components/Statistics.vue

@@ -94,7 +94,7 @@ export default {
 <style lang="less" scoped>
 .statis {
   width: 350px;
-  height: 700px;
+  height: 750px;
   background: #fff;
   pointer-events: all;
   // margin-top: 15px;

+ 17 - 6
src/views/cardIot/components/TreeCar.vue

@@ -82,20 +82,28 @@
     </div>
     <div>
       <!-- 机构详情 -->
-      <Statistics v-if="showBtn && (showFlag != true || videoid == '')" :deptIds="deptIds" />
+      <div style="display: flex;position: relative;" v-if="showBtn && (showFlag != true || videoid == '')">
+        <Statistics  :deptIds="deptIds" />
+        <div style="width: 1030px;height: 300px;background: #fff;position: absolute;bottom: 0;left: 85%; display: flex;padding: 0 10px;">
+        <LunarOverspeed/>
+        <OfCarUseNum/>
+        </div>
+      </div>
       <!-- 在线车辆视频 -->
       <!-- v-if="this.show==2&&carInfo"  -->
-      <!-- <div>show----{{ show }}</div>
-      <div>videoid----{{ videoid }}</div>
+      <!-- div>show----{{ show }}</div> -->
+      <!-- <div>videoid----{{ videoid }}</div>
       <div>showFlag---{{ showFlag }}</div>
       <div>showBtn---{{ showBtn }}</div>
-      <div>videoid---------{{ videoid }}</div> -->
+      <div>videoid---------{{ videoid }}</div> 
+      <div>carIds---------{{ carIds }}</div>  -->
       <div v-if="videoid || showFlag != false&&carIds">
         <Video :carInfo="carInfo" :videoid="videoid" />
         <!-- 机构详情 -->
         <FireStationDetails :deptIds="deptIds" />
         <!-- 油箱 -->
         <!-- <QuantityOil /> -->
+        <QuantityOil/>
       </div>
     </div>
     <!-- <div class="gj-img" v-if="videoid"></div> -->
@@ -106,8 +114,10 @@
 import { getCarTree, getCarList, getCarLocation } from '@/api/iot'
 import Statistics from './Statistics.vue'
 import Video from './Video.vue'
+import QuantityOil from './QuantityOil.vue'
 import FireStationDetails from './FireStationDetails.vue'
-// import QuantityOil from './QuantityOil.vue'
+import LunarOverspeed from './LunarOverspeed.vue'
+import OfCarUseNum from './OfCarUseNum.vue';
 const getParentKey = (key, tree) => {
   let parentKey
   for (let i = 0; i < tree.length; i++) {
@@ -123,7 +133,7 @@ const getParentKey = (key, tree) => {
   return parentKey
 }
 export default {
-  components: { Statistics, Video, FireStationDetails },
+  components: { Statistics, Video, FireStationDetails,QuantityOil,LunarOverspeed,OfCarUseNum},
   props: {
     carId: String,
     showVideos: Boolean,
@@ -141,6 +151,7 @@ export default {
       handler(val) {
         this.showFlag = val
       },
+      immediate:true,
       deep: true,
     },
     idVal: {

+ 2 - 0
src/views/cardIot/index.vue

@@ -53,8 +53,10 @@ export default {
       return true
     },
     clickCarItem(val) {
+      console.log('--------------点击车车',val);
       this.idVal = val
       this.showVideos = true
+      console.log('---------编号',this.showVideos);
       this.carId = val.cqVehicleId
       this.idInfo = {
         meta: val,

+ 129 - 112
src/views/clw/applyCarLog/index.vue

@@ -4,28 +4,39 @@
       <!-- 条件搜索 -->
       <div class="table-page-search-wrapper">
         <a-form layout="inline">
-          <a-row :gutter="48">
-            <template >
-              <a-col :md="8" :sm="14">
-                <a-form-item label="是否涉及非定点加油" prop="isNonfixedPoint">
-                  <a-select placeholder="请选择是否涉及非定点加油" v-model="queryParam.isNonfixedPoint" style="width: 100%" allow-clear>
-                    <a-select-option v-for="(d, index) in dict.type.cmmon_yes_no" :key="index" :value="d.value">{{ d.label }}</a-select-option>
-                  </a-select>
-                </a-form-item>
-              </a-col>
-            </template>
-            <a-col >
-              <span class="table-page-search-submitButtons" :style="advanced && { float: 'right', overflow: 'hidden' } || {} ">
-                <a-button type="primary" @click="handleQuery"><a-icon type="search" />查询</a-button>
-                <a-button style="margin-left: 8px" @click="resetQuery"><a-icon type="redo" />重置</a-button>
-                <!-- <a @click="toggleAdvanced" style="margin-left: 8px">
-                  {{ advanced ? '收起' : '展开' }}
-                  <a-icon :type="advanced ? 'up' : 'down'"/>
-                </a> -->
-              </span>
-            </a-col>
-          </a-row>
-        </a-form>
+              <a-row :gutter="48">
+                <a-col :md="6" :sm="8">
+                  <a-form-item label="车牌号" prop="plateNumber">
+                    <a-input v-model="queryParam.plateNumber" placeholder="请输入车牌号" allow-clear />
+                  </a-form-item>
+                </a-col>
+                <a-col :md="6" :sm="8">
+                  <a-form-item label="申请人" prop="applyUserName">
+                    <a-input v-model="queryParam.applyUserName" placeholder="请输入申请人" allow-clear />
+                  </a-form-item>
+                </a-col>
+                <template >
+                  <a-col :md="8" :sm="10">
+                    <a-form-item label="用车时间" prop="status">
+                      <a-range-picker style="width: 100%" v-model="    daterangeCreateTime " valueFormat="YYYY-MM-DD" format="YYYY-MM-DD" allow-clear/>
+                    </a-form-item>
+                  </a-col>
+                </template>
+                <a-col :md="8" :sm="8">
+                  <span
+                    class="table-page-search-submitButtons"
+                    :style="(advanced && { float: 'right', overflow: 'hidden' }) || {}"
+                  >
+                    <a-button type="primary" @click="handleQuery"><a-icon type="search" />查询</a-button>
+                    <a-button style="margin-left: 8px" @click="resetQuery"><a-icon type="redo" />重置</a-button>
+                    <!-- <a @click="toggleAdvanced" style="margin-left: 8px">
+                      {{ advanced ? '收起' : '展开' }}
+                      <a-icon :type="advanced ? 'up' : 'down'" />
+                    </a> -->
+                  </span>
+                </a-col>
+              </a-row>
+            </a-form>
       </div>
       <!-- 操作 -->
       <div class="table-operations">
@@ -42,18 +53,15 @@
           <a-icon type="download" />导出
         </a-button> -->
         <table-setting
-          :style="{float: 'right'}"
+          :style="{ float: 'right' }"
           :table-size.sync="tableSize"
           v-model="columns"
           :refresh-loading="loading"
-          @refresh="getList" />
+          @refresh="getList"
+        />
       </div>
       <!-- 增加修改 -->
-      <create-form
-        ref="createForm"
-        :isNonfixedPointOptions="dict.type.cmmon_yes_no"
-        @ok="getList"
-      />
+      <create-form ref="createForm" :isNonfixedPointOptions="dict.type.cmmon_yes_no" @ok="getList" />
       <!-- 数据展示 -->
       <a-table
         :loading="loading"
@@ -64,14 +72,14 @@
         :pagination="false"
         :bordered="tableBordered"
       >
-      <span slot="num" slot-scope="text, records, index">
+        <span slot="num" slot-scope="text, records, index">
           {{ (queryParam.pageNum - 1) * queryParam.pageSize + Number(index) + 1 }}
         </span>
         <span slot="applyStatus" slot-scope="text, record">
           <dict-tag :options="dict.type['apply_status']" :value="record.applyStatus" />
         </span>
         <span slot="isNonfixedPoint" slot-scope="text, record">
-          <dict-tag :options="dict.type['cmmon_yes_no']" :value="record.isNonfixedPoint"/>
+          <dict-tag :options="dict.type['cmmon_yes_no']" :value="record.isNonfixedPoint" />
         </span>
         <span slot="operation" slot-scope="text, record">
           <!-- <a-divider type="vertical" v-hasPermi="['clw:applyCarLog:edit']" /> -->
@@ -92,7 +100,7 @@
         :current="queryParam.pageNum"
         :total="total"
         :page-size="queryParam.pageSize"
-        :showTotal="total => `共 ${total} 条`"
+        :showTotal="(total) => `共 ${total} 条`"
         @showSizeChange="onShowSizeChange"
         @change="changeSize"
       />
@@ -108,11 +116,11 @@ import { tableMixin } from '@/store/table-mixin'
 export default {
   name: 'ApplyCarLog',
   components: {
-    CreateForm
+    CreateForm,
   },
   mixins: [tableMixin],
-  dicts: ['cmmon_yes_no','apply_status'],
-  data () {
+  dicts: ['cmmon_yes_no', 'apply_status'],
+  data() {
     return {
       list: [],
       selectedRowKeys: [],
@@ -128,108 +136,109 @@ export default {
       total: 0,
       // 查询参数
       queryParam: {
-        deptId: null,
         plateNumber: null,
-        driverName: null,
-        isNonfixedPoint: null,
-        createTime: null,
+        applyUserName:null,
         pageNum: 1,
-        pageSize: 10
+        pageSize: 10,
       },
+      daterangeCreateTime:[],
       columns: [
-      { title: '序号', scopedSlots: { customRender: 'num' },width:'50px',   align: 'center', },
-        {
-          title: '申请用车时间',
-          dataIndex: 'applicationTime',
-          ellipsis: true,
-          align: 'center'
-        },
-        {
-          title: '预计归还时间',
-          dataIndex: 'returnTime',
-          ellipsis: true,
-          align: 'center'
-        },
-        {
-          title: '部门名称',
-          dataIndex: 'deptName',
-          ellipsis: true,
-          align: 'center'
-        },
+        { title: '序号', scopedSlots: { customRender: 'num' }, width: '50px', align: 'center' },
         {
           title: '车牌号码',
           dataIndex: 'plateNumber',
           ellipsis: true,
-          align: 'center'
+          align: 'center',
         },
         {
           title: '驾驶人名称',
           dataIndex: 'driverName',
           ellipsis: true,
-          align: 'center'
+          align: 'center',
         },
         {
-          title: '是否涉及非定点加油',
-          dataIndex: 'isNonfixedPoint',
-          scopedSlots: { customRender: 'isNonfixedPoint' },
+          title: '申请人',
+          dataIndex: 'applyUserName',
           ellipsis: true,
-          align: 'center'
+          align: 'center',
         },
         {
           title: '出发地',
           dataIndex: 'startPlace',
           ellipsis: true,
-          align: 'center'
+          align: 'center',
         },
         {
           title: '目的地',
           dataIndex: 'endPlace',
           ellipsis: true,
-          align: 'center'
+          align: 'center',
         },
         {
-          title: '审核状态',
-          dataIndex: 'applyStatus',
-          scopedSlots: { customRender: 'applyStatus' },
+          title: '申请用车时间',
+          dataIndex: 'applicationTime',
           ellipsis: true,
-          align: 'center'
+          align: 'center',
+        },
+        {
+          title: '预计归还时间',
+          dataIndex: 'returnTime',
+          ellipsis: true,
+          align: 'center',
         },
         {
           title: '实际归还时间',
           dataIndex: 'realReturnTime',
           ellipsis: true,
-          align: 'center'
+          align: 'center',
+        },
+        {
+          title: '部门名称',
+          dataIndex: 'deptName',
+          ellipsis: true,
+          align: 'center',
         },
+
+        {
+          title: '审核状态',
+          dataIndex: 'applyStatus',
+          scopedSlots: { customRender: 'applyStatus' },
+          ellipsis: true,
+          align: 'center',
+        },
+
         {
           title: '备注',
           dataIndex: 'remark',
           ellipsis: true,
-          align: 'center'
+          align: 'center',
         },
         {
           title: '操作',
           dataIndex: 'operation',
           width: '6%',
           scopedSlots: { customRender: 'operation' },
-          align: 'center'
-        }
-      ]
+          align: 'center',
+        },
+      ],
     }
   },
-  filters: {
-  },
-  created () {
+  filters: {},
+  created() {
     this.getList()
   },
-  computed: {
-  },
-  watch: {
-  },
+  computed: {},
+  watch: {},
   methods: {
     /** 查询用车申请记录列表 */
-    getList () {
+    getList() {
       this.loading = true
-      listApplyCarLog(this.queryParam).then(response => {
+      this.queryParam.params = {}
+      if (this.daterangeCreateTime !== null && this.daterangeCreateTime !== '' && this.daterangeCreateTime.length !== 0) {
+        this.queryParam.params['beginApplyTime'] = this.daterangeCreateTime[0]
+        this.queryParam.params['endApplyTime'] = this.daterangeCreateTime[1]
+      }
+      listApplyCarLog(this.queryParam).then((response) => {
         this.list = response.rows
         this.total = response.total
         this.loading = false
@@ -237,77 +246,85 @@ export default {
     },
 
     /** 搜索按钮操作 */
-    handleQuery () {
+    handleQuery() {
       this.queryParam.pageNum = 1
       this.getList()
     },
     /** 重置按钮操作 */
-    resetQuery () {
+    resetQuery() {
+      this.daterangeCreateTime = []
       this.queryParam = {
         deptId: undefined,
         plateNumber: undefined,
         driverName: undefined,
         isNonfixedPoint: undefined,
         createTime: undefined,
+        applyUserName:undefined,
         pageNum: 1,
-        pageSize: 10
+        pageSize: 10,
       }
       this.handleQuery()
     },
-    onShowSizeChange (current, pageSize) {
+    onShowSizeChange(current, pageSize) {
       this.queryParam.pageSize = pageSize
       this.getList()
     },
-    changeSize (current, pageSize) {
+    changeSize(current, pageSize) {
       this.queryParam.pageNum = current
       this.queryParam.pageSize = pageSize
       this.getList()
     },
-    onSelectChange (selectedRowKeys, selectedRows) {
+    onSelectChange(selectedRowKeys, selectedRows) {
       this.selectedRowKeys = selectedRowKeys
       this.selectedRows = selectedRows
-      this.ids = this.selectedRows.map(item => item.id)
+      this.ids = this.selectedRows.map((item) => item.id)
       this.single = selectedRowKeys.length !== 1
       this.multiple = !selectedRowKeys.length
     },
-    toggleAdvanced () {
+    toggleAdvanced() {
       this.advanced = !this.advanced
     },
     /** 删除按钮操作 */
-    handleDelete (row) {
+    handleDelete(row) {
       var that = this
       const ids = row.id || this.ids
       this.$confirm({
         title: '确认删除所选中数据?',
         content: '当前选中编号为' + ids + '的数据',
-        onOk () {
-          return delApplyCarLog(ids)
-            .then(() => {
-              that.onSelectChange([], [])
-              that.getList()
-              that.$message.success(
-                '删除成功',
-                3
-              )
+        onOk() {
+          return delApplyCarLog(ids).then(() => {
+            that.onSelectChange([], [])
+            that.getList()
+            that.$message.success('删除成功', 3)
           })
         },
-        onCancel () {}
+        onCancel() {},
       })
     },
     /** 导出按钮操作 */
-    handleExport () {
+    handleExport() {
       var that = this
       this.$confirm({
         title: '是否确认导出?',
         content: '此操作将导出当前条件下所有数据而非选中数据',
-        onOk () {
-          that.download('clw/applyCarLog/export', {
-            ...that.queryParam
-          }, `applyCarLog_${new Date().getTime()}.xlsx`)
+        onOk() {
+          that.download(
+            'clw/applyCarLog/export',
+            {
+              ...that.queryParam,
+            },
+            `applyCarLog_${new Date().getTime()}.xlsx`
+          )
         },
-        onCancel () {}
+        onCancel() {},
       })
-    }
-  }
+    },
+  },
 }
 </script>
+<style lang="less" scoped>
+// /deep/.ant-input-affix-wrapper {
+//   width: 20%;
+//   display: inline-block;
+// }
+</style>

+ 22 - 2
src/views/clw/applyCarLog/modules/CreateForm.vue

@@ -48,6 +48,16 @@
             <a-input v-model="form.endPlace" placeholder="暂无信息" :disabled="true" /></a-form-model-item
         ></a-col>
       </a-row>
+      <a-row>
+        <a-col :span="10"
+          ><a-form-model-item label="是否超期" prop="startPlace">
+            <a-input v-model="form.isTimeout" placeholder="暂无信息" :disabled="true" /></a-form-model-item
+        ></a-col>
+        <a-col :span="10"
+          ><a-form-model-item label="是否超期提醒" prop="endPlace">
+            <a-input v-model="form.isTips" placeholder="暂无信息" :disabled="true" /></a-form-model-item
+        ></a-col>
+      </a-row>
       <a-row>
         <a-col :span="10"
           ><a-form-model-item label="实际归还时间" prop="realReturnTime">
@@ -223,8 +233,18 @@ export default {
       this.formType = 2
       const id = row ? row.id : ids
       getApplyCarLog(id).then((response) => {
-        // console.log('------详情', response.data)
-        this.form = response.data
+        let obj=response.data
+        if(obj.isTimeout=='1'){
+          obj.isTimeout='已超期'
+        }else if(obj.isTimeout=='0'){
+          obj.isTimeout='未超期'
+        }
+        if(obj.isTips=='1'){
+          obj.isTips='超期已提醒'
+        }else if(obj.isTips=='0'){
+          obj.isTips='超期未提醒'
+        }
+        this.form = obj
         this.open = true
         this.formTitle = '用车申请详情'
       })

+ 9 - 0
src/views/clw/keyCaseOperLog/index.vue

@@ -172,12 +172,15 @@ export default {
           dataIndex: 'boxName',
           ellipsis: true,
           align: 'center',
+          width: '100px',
         },
         {
           title: '操作用户',
           dataIndex: 'operUserName',
           ellipsis: true,
           align: 'center',
+          width: '100px',
+     
         },
         {
           title: '操作类型',
@@ -185,6 +188,8 @@ export default {
           scopedSlots: { customRender: 'operType' },
           ellipsis: true,
           align: 'center',
+          width: '100px',
+
         },
         {
           title: '操作时间',
@@ -192,6 +197,8 @@ export default {
           scopedSlots: { customRender: 'operTime' },
           ellipsis: true,
           align: 'center',
+          width: '150px',
+         
         },
 
         {
@@ -199,6 +206,7 @@ export default {
           dataIndex: 'plateNumber',
           ellipsis: true,
           align: 'center',
+          width: '100px',
         },
 
         {
@@ -206,6 +214,7 @@ export default {
           dataIndex: 'remark',
           ellipsis: true,
           align: 'center',
+          width: '220px',
         },
         // {
         //   title: '操作',

+ 317 - 0
src/views/clw/offLine/index.vue

@@ -0,0 +1,317 @@
+<template>
+    <page-header-wrapper>
+      <a-card :bordered="false">
+        <!-- 条件搜索 -->
+        <div class="table-page-search-wrapper">
+          <a-form layout="inline">
+                <a-row :gutter="48">
+                  <a-col :md="6" :sm="8">
+                    <a-form-item label="车牌号" prop="plateNumber">
+                      <a-input v-model="queryParam.plateNumber" placeholder="请输入车牌号" allow-clear />
+                    </a-form-item>
+                  </a-col>
+                  <a-col :md="6" :sm="8">
+                    <a-form-item label="负责人" prop="applyUserName">
+                      <a-input v-model="queryParam.applyUserName" placeholder="请输入负责人" allow-clear />
+                    </a-form-item>
+                  </a-col>
+                  <!-- <template >
+                    <a-col :md="8" :sm="10">
+                      <a-form-item label="用车时间" prop="status">
+                        <a-range-picker style="width: 100%" v-model="    daterangeCreateTime " valueFormat="YYYY-MM-DD" format="YYYY-MM-DD" allow-clear/>
+                      </a-form-item>
+                    </a-col>
+                  </template> -->
+                  <a-col :md="8" :sm="8">
+                    <span
+                      class="table-page-search-submitButtons"
+                      :style="(advanced && { float: 'right', overflow: 'hidden' }) || {}"
+                    >
+                      <a-button type="primary" @click="handleQuery"><a-icon type="search" />查询</a-button>
+                      <a-button style="margin-left: 8px" @click="resetQuery"><a-icon type="redo" />重置</a-button>
+                      <!-- <a @click="toggleAdvanced" style="margin-left: 8px">
+                        {{ advanced ? '收起' : '展开' }}
+                        <a-icon :type="advanced ? 'up' : 'down'" />
+                      </a> -->
+                    </span>
+                  </a-col>
+                </a-row>
+              </a-form>
+        </div>
+        <!-- 操作 -->
+        <div class="table-operations">
+          <!-- <a-button type="primary" @click="$refs.createForm.handleAdd()" v-hasPermi="['clw:applyCarLog:add']">
+            <a-icon type="plus" />新增
+          </a-button>
+          <a-button type="primary" :disabled="single" @click="$refs.createForm.handleUpdate(undefined, ids)" v-hasPermi="['clw:applyCarLog:edit']">
+            <a-icon type="edit" />修改
+          </a-button>
+          <a-button type="danger" :disabled="multiple" @click="handleDelete" v-hasPermi="['clw:applyCarLog:remove']">
+            <a-icon type="delete" />删除
+          </a-button> -->
+          <!-- <a-button type="primary" @click="handleExport" v-hasPermi="['clw:applyCarLog:export']">
+            <a-icon type="download" />导出
+          </a-button> -->
+          <table-setting
+            :style="{ float: 'right' }"
+            :table-size.sync="tableSize"
+            v-model="columns"
+            :refresh-loading="loading"
+            @refresh="getList"
+          />
+        </div>
+        <!-- 增加修改 -->
+        <create-form ref="createForm" :isNonfixedPointOptions="dict.type.cmmon_yes_no" @ok="getList" />
+        <!-- 数据展示 -->
+        <a-table
+          :loading="loading"
+          :size="tableSize"
+          rowKey="id"
+          :columns="columns"
+          :data-source="list"
+          :pagination="false"
+          :bordered="tableBordered"
+        >
+          <span slot="num" slot-scope="text, records, index">
+            {{ (queryParam.pageNum - 1) * queryParam.pageSize + Number(index) + 1 }}
+          </span>
+          <span slot="insuranceTime" slot-scope="text, record">
+         灭火消防车
+        </span>
+        <span slot="insuranceIme" slot-scope="text, record">
+            78043968304
+        </span>
+          <span slot="applyStatus" slot-scope="text, record">
+            <dict-tag :options="dict.type['apply_status']" :value="record.applyStatus" />
+          </span>
+          <span slot="isNonfixedPoint" slot-scope="text, record">
+            <dict-tag :options="dict.type['cmmon_yes_no']" :value="record.isNonfixedPoint" />
+          </span>
+          <span slot="operation" slot-scope="text, record">
+            <!-- <a-divider type="vertical" v-hasPermi="['clw:applyCarLog:edit']" /> -->
+            <!-- <a @click="$refs.createForm.handleInfo(record, undefined)" v-hasPermi="['clw:applyCarLog:edit']">
+              <a-icon type="eye" />详情
+            </a> -->
+            <!-- <a-divider type="vertical" v-hasPermi="['clw:applyCarLog:remove']" />
+            <a @click="handleDelete(record)" v-hasPermi="['clw:applyCarLog:remove']">
+              <a-icon type="delete" />删除
+            </a> -->
+          </span>
+        </a-table>
+        <!-- 分页 -->
+        <a-pagination
+          class="ant-table-pagination"
+          show-size-changer
+          show-quick-jumper
+          :current="queryParam.pageNum"
+          :total="total"
+          :page-size="queryParam.pageSize"
+          :showTotal="(total) => `共 ${total} 条`"
+          @showSizeChange="onShowSizeChange"
+          @change="changeSize"
+        />
+      </a-card>
+    </page-header-wrapper>
+  </template>
+  
+  <script>
+  import { listApplyCarLog, delApplyCarLog } from '@/api/clw/applyCarLog'
+  import CreateForm from './modules/CreateForm'
+  import { tableMixin } from '@/store/table-mixin'
+  
+  export default {
+    name: 'ApplyCarLog',
+    components: {
+      CreateForm,
+    },
+    mixins: [tableMixin],
+    dicts: ['cmmon_yes_no', 'apply_status'],
+    data() {
+      return {
+        list: [],
+        selectedRowKeys: [],
+        selectedRows: [],
+        // 高级搜索 展开/关闭
+        advanced: false,
+        // 非单个禁用
+        single: true,
+        // 非多个禁用
+        multiple: true,
+        ids: [],
+        loading: false,
+        total: 0,
+        // 查询参数
+        queryParam: {
+          plateNumber: null,
+          applyUserName:null,
+          pageNum: 1,
+          pageSize: 10,
+        },
+        daterangeCreateTime:[],
+        columns: [
+          { title: '序号', scopedSlots: { customRender: 'num' }, width: '50px', align: 'center' },
+          {
+            title: '车牌号码',
+            dataIndex: 'plateNumber',
+            ellipsis: true,
+            align: 'center',
+          },
+          {
+          title: '车辆类型',
+        //   dataIndex: 'carType',
+          scopedSlots: { customRender: 'insuranceTime' },
+          ellipsis: true,
+          align: 'center',
+        },
+        {
+          title: 'IMEI',
+        //   dataIndex: 'carType',
+          scopedSlots: { customRender: 'insuranceIme' },
+          ellipsis: true,
+          align: 'center',
+        },
+        
+          {
+            title: '负责人',
+            dataIndex: 'driverName',
+            ellipsis: true,
+            align: 'center',
+          },
+          {
+            title: '所属机构',
+            dataIndex: 'deptName',
+            ellipsis: true,
+            align: 'center',
+          },
+  
+        //   {
+        //     title: 'IMEI',
+        //     dataIndex: 'isNonfixedPoint',
+        //     ellipsis: true,
+        //     align: 'center',
+        //   },
+          {
+            title: '离线天数',
+            dataIndex: 'deptId',
+            ellipsis: true,
+            align: 'center',
+          },
+
+  
+   
+        //   {
+        //     title: '操作',
+        //     dataIndex: 'operation',
+        //     width: '6%',
+        //     scopedSlots: { customRender: 'operation' },
+        //     align: 'center',
+        //   },
+        ],
+      }
+    },
+    filters: {},
+    created() {
+      this.getList()
+    },
+    computed: {},
+    watch: {},
+    methods: {
+      /** 查询用车申请记录列表 */
+      getList() {
+        this.loading = true
+        this.queryParam.params = {}
+        if (this.daterangeCreateTime !== null && this.daterangeCreateTime !== '' && this.daterangeCreateTime.length !== 0) {
+          this.queryParam.params['beginApplyTime'] = this.daterangeCreateTime[0]
+          this.queryParam.params['endApplyTime'] = this.daterangeCreateTime[1]
+        }
+        listApplyCarLog(this.queryParam).then((response) => {
+          this.list = response.rows
+          this.total = response.total
+          this.loading = false
+        })
+      },
+  
+      /** 搜索按钮操作 */
+      handleQuery() {
+        this.queryParam.pageNum = 1
+        this.getList()
+      },
+      /** 重置按钮操作 */
+      resetQuery() {
+        this.daterangeCreateTime = []
+        this.queryParam = {
+          deptId: undefined,
+          plateNumber: undefined,
+          driverName: undefined,
+          isNonfixedPoint: undefined,
+          createTime: undefined,
+          applyUserName:undefined,
+          pageNum: 1,
+          pageSize: 10,
+        }
+        this.handleQuery()
+      },
+      onShowSizeChange(current, pageSize) {
+        this.queryParam.pageSize = pageSize
+        this.getList()
+      },
+      changeSize(current, pageSize) {
+        this.queryParam.pageNum = current
+        this.queryParam.pageSize = pageSize
+        this.getList()
+      },
+      onSelectChange(selectedRowKeys, selectedRows) {
+        this.selectedRowKeys = selectedRowKeys
+        this.selectedRows = selectedRows
+        this.ids = this.selectedRows.map((item) => item.id)
+        this.single = selectedRowKeys.length !== 1
+        this.multiple = !selectedRowKeys.length
+      },
+      toggleAdvanced() {
+        this.advanced = !this.advanced
+      },
+      /** 删除按钮操作 */
+      handleDelete(row) {
+        var that = this
+        const ids = row.id || this.ids
+        this.$confirm({
+          title: '确认删除所选中数据?',
+          content: '当前选中编号为' + ids + '的数据',
+          onOk() {
+            return delApplyCarLog(ids).then(() => {
+              that.onSelectChange([], [])
+              that.getList()
+              that.$message.success('删除成功', 3)
+            })
+          },
+          onCancel() {},
+        })
+      },
+      /** 导出按钮操作 */
+      handleExport() {
+        var that = this
+        this.$confirm({
+          title: '是否确认导出?',
+          content: '此操作将导出当前条件下所有数据而非选中数据',
+          onOk() {
+            that.download(
+              'clw/applyCarLog/export',
+              {
+                ...that.queryParam,
+              },
+              `applyCarLog_${new Date().getTime()}.xlsx`
+            )
+          },
+          onCancel() {},
+        })
+      },
+    },
+  }
+  </script>
+  <style lang="less" scoped>
+  // /deep/.ant-input-affix-wrapper {
+  //   width: 20%;
+  //   display: inline-block;
+  // }
+  </style>
+  

+ 296 - 0
src/views/clw/offLine/modules/CreateForm.vue

@@ -0,0 +1,296 @@
+<template>
+  <a-drawer width="55%" :label-col="4" :wrapper-col="14" :visible="open" @close="onClose">
+    <a-divider orientation="left">
+      <b>{{ formTitle }}</b>
+    </a-divider>
+    <a-form-model ref="form" :model="form" :rules="rules">
+      <a-row>
+        <a-col :span="10">
+          <a-form-model-item label="申请用车时间" prop="applicationTime">
+            <a-input
+              v-model="form.applicationTime"
+              placeholder="暂无信息"
+              :disabled="true"
+            /> </a-form-model-item
+        ></a-col>
+        <a-col :span="10"
+          ><a-form-model-item label="预计归还时间" prop="returnTime">
+            <a-input v-model="form.returnTime" placeholder="暂无信息" :disabled="true" /></a-form-model-item
+        ></a-col>
+      </a-row>
+      <a-row>
+        <a-col :span="10"
+          ><a-form-model-item label="部门名称" prop="deptName">
+            <a-input v-model="form.deptName" placeholder="暂无信息" :disabled="true" /> </a-form-model-item
+        ></a-col>
+        <a-col :span="10">
+          <a-form-model-item label="车牌号码" prop="plateNumber"
+            ><a-input v-model="form.plateNumber" placeholder="暂无信息" :disabled="true" /> </a-form-model-item
+        ></a-col>
+      </a-row>
+      <a-row>
+        <a-col :span="10">
+          <a-form-model-item label="车辆类型" prop="categoryName">
+            <a-input v-model="form.categoryName" placeholder="暂无信息" :disabled="true" /> </a-form-model-item
+        ></a-col>
+        <a-col :span="10">
+          <a-form-model-item label="驾驶人名称" prop="driverName">
+            <a-input v-model="form.driverName" placeholder="暂无信息" :disabled="true" /> </a-form-model-item
+        ></a-col>
+      </a-row>
+      <a-row>
+        <a-col :span="10"
+          ><a-form-model-item label="出发地" prop="startPlace">
+            <a-input v-model="form.startPlace" placeholder="暂无信息" :disabled="true" /></a-form-model-item
+        ></a-col>
+        <a-col :span="10"
+          ><a-form-model-item label="目的地" prop="endPlace">
+            <a-input v-model="form.endPlace" placeholder="暂无信息" :disabled="true" /></a-form-model-item
+        ></a-col>
+      </a-row>
+      <a-row>
+        <a-col :span="10"
+          ><a-form-model-item label="是否超期" prop="startPlace">
+            <a-input v-model="form.isTimeout" placeholder="暂无信息" :disabled="true" /></a-form-model-item
+        ></a-col>
+        <a-col :span="10"
+          ><a-form-model-item label="是否超期提醒" prop="endPlace">
+            <a-input v-model="form.isTips" placeholder="暂无信息" :disabled="true" /></a-form-model-item
+        ></a-col>
+      </a-row>
+      <a-row>
+        <a-col :span="10"
+          ><a-form-model-item label="实际归还时间" prop="realReturnTime">
+            <a-input
+              v-model="form.realReturnTime"
+              placeholder="暂无信息"
+              :disabled="true"
+            /> </a-form-model-item
+        ></a-col>
+        <a-col :span="10">
+          <a-form-item label="审核状态">
+            <a-select
+              placeholder="暂无信息"
+              v-model="form.applyStatus"
+              style="width: 100%"
+              allow-clear
+              :disabled="true"
+            >
+              <a-select-option v-for="(d, index) in dict.type['apply_status']" :key="index" :value="d.value">{{
+                d.label
+              }}</a-select-option>
+            </a-select>
+          </a-form-item></a-col
+        >
+      </a-row>
+      <!-- <a-row>
+        <a-col :span="10"></a-col>
+        <a-col :span="10"></a-col>
+      </a-row> -->
+      <!-- <a-form-model-item label="是否涉及非定点加油" prop="isNonfixedPoint">
+        <a-select placeholder="请选择是否涉及非定点加油" v-model="form.isNonfixedPoint">
+          <a-select-option v-for="(d, index) in isNonfixedPointOptions" :key="index" :value="d.value">{{
+            d.label
+          }}</a-select-option>
+        </a-select>
+      </a-form-model-item> -->
+
+      <a-form-model-item label="备注" prop="remark">
+        <a-input v-model="form.remark" placeholder="暂无信息" :disabled="true" />
+      </a-form-model-item>
+      <div class="bottom-control">
+        <a-space>
+          <!-- <a-button type="primary" :loading="submitLoading" @click="submitForm"> 保存 </a-button> -->
+          <a-button type="dashed" @click="cancel"> 取消 </a-button>
+        </a-space>
+      </div>
+    </a-form-model>
+  </a-drawer>
+</template>
+
+<script>
+import { getApplyCarLog, addApplyCarLog, updateApplyCarLog } from '@/api/clw/applyCarLog'
+
+export default {
+  name: 'CreateForm',
+  props: {
+    isNonfixedPointOptions: {
+      type: Array,
+      required: true,
+    },
+  },
+  components: {},
+  dicts: ['apply_status'],
+  data() {
+    return {
+      submitLoading: false,
+      formTitle: '',
+      // 表单参数
+      form: {
+        userId: null,
+
+        applicationTime: null,
+
+        returnTime: null,
+
+        deptId: null,
+
+        deptName: null,
+
+        plateNumber: null,
+
+        carId: null,
+
+        driverId: null,
+
+        driverName: null,
+
+        isNonfixedPoint: null,
+
+        startPlace: null,
+
+        endPlace: null,
+
+        applyStatus: 0,
+
+        taskId: null,
+
+        realReturnTime: null,
+
+        remark: null,
+
+        createTime: null,
+      },
+      // 1增加,2修改
+      formType: 1,
+      open: false,
+      rules: {},
+    }
+  },
+  filters: {},
+  created() {},
+  computed: {},
+  watch: {},
+  mounted() {},
+  methods: {
+    onClose() {
+      this.open = false
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false
+      this.reset()
+    },
+    // 表单重置
+    reset() {
+      this.formType = 1
+      this.form = {
+        userId: null,
+
+        applicationTime: null,
+
+        returnTime: null,
+
+        deptId: null,
+
+        deptName: null,
+
+        plateNumber: null,
+
+        carId: null,
+
+        driverId: null,
+
+        driverName: null,
+
+        isNonfixedPoint: null,
+
+        startPlace: null,
+
+        endPlace: null,
+
+        applyStatus: 0,
+
+        taskId: null,
+
+        realReturnTime: null,
+
+        remark: null,
+
+        createTime: null,
+      }
+    },
+    /** 新增按钮操作 */
+    handleAdd(row) {
+      this.reset()
+      this.formType = 1
+      this.open = true
+      this.formTitle = '添加'
+    },
+    /** 修改按钮操作 */
+    handleInfo(row, ids) {
+      // this.reset()
+      this.formType = 2
+      const id = row ? row.id : ids
+      getApplyCarLog(id).then((response) => {
+        let obj=response.data
+        if(obj.isTimeout=='1'){
+          obj.isTimeout='已超期'
+        }else if(obj.isTimeout=='0'){
+          obj.isTimeout='未超期'
+        }
+        if(obj.isTips=='1'){
+          obj.isTips='超期已提醒'
+        }else if(obj.isTips=='0'){
+          obj.isTips='超期未提醒'
+        }
+        this.form = obj
+        this.open = true
+        this.formTitle = '用车申请详情'
+      })
+    },
+    /** 提交按钮 */
+    submitForm: function () {
+      this.$refs.form.validate((valid) => {
+        if (valid) {
+          this.submitLoading = true
+          if (this.form.id !== undefined && this.form.id !== null) {
+            updateApplyCarLog(this.form)
+              .then((response) => {
+                this.$message.success('修改成功', 3)
+                this.open = false
+                this.$emit('ok')
+              })
+              .finally(() => {
+                this.submitLoading = false
+              })
+          } else {
+            addApplyCarLog(this.form)
+              .then((response) => {
+                this.$message.success('新增成功', 3)
+                this.open = false
+                this.$emit('ok')
+              })
+              .finally(() => {
+                this.submitLoading = false
+              })
+          }
+        } else {
+          return false
+        }
+      })
+    },
+  },
+}
+</script>
+<style lang="less" scoped>
+/deep/.ant-col{
+  margin-right: 40px;
+}
+/deep/.ant-select{
+  color: #000;
+}
+/deep/.ant-input{
+  color: #000;
+}
+</style>

+ 322 - 0
src/views/clw/overspeed/index.vue

@@ -0,0 +1,322 @@
+<template>
+    <page-header-wrapper>
+      <a-card :bordered="false">
+        <!-- 条件搜索 -->
+        <div class="table-page-search-wrapper">
+          <a-form layout="inline">
+                <a-row :gutter="48">
+                  <a-col :md="6" :sm="8">
+                    <a-form-item label="车牌号" prop="plateNumber">
+                      <a-input v-model="queryParam.plateNumber" placeholder="请输入车牌号" allow-clear />
+                    </a-form-item>
+                  </a-col>
+                  <a-col :md="6" :sm="8">
+                    <a-form-item label="负责人" prop="applyUserName">
+                      <a-input v-model="queryParam.applyUserName" placeholder="请输入负责人" allow-clear />
+                    </a-form-item>
+                  </a-col>
+                  <template >
+                    <a-col :md="8" :sm="10">
+                      <a-form-item label="时间" prop="status">
+                        <a-range-picker style="width: 100%" v-model="    daterangeCreateTime " valueFormat="YYYY-MM-DD" format="YYYY-MM-DD" allow-clear/>
+                      </a-form-item>
+                    </a-col>
+                  </template>
+                  <a-col :md="8" :sm="8">
+                    <span
+                      class="table-page-search-submitButtons"
+                      :style="(advanced && { float: 'right', overflow: 'hidden' }) || {}"
+                    >
+                      <a-button type="primary" @click="handleQuery"><a-icon type="search" />查询</a-button>
+                      <a-button style="margin-left: 8px" @click="resetQuery"><a-icon type="redo" />重置</a-button>
+                      <!-- <a @click="toggleAdvanced" style="margin-left: 8px">
+                        {{ advanced ? '收起' : '展开' }}
+                        <a-icon :type="advanced ? 'up' : 'down'" />
+                      </a> -->
+                    </span>
+                  </a-col>
+                </a-row>
+              </a-form>
+        </div>
+        <!-- 操作 -->
+        <div class="table-operations">
+          <!-- <a-button type="primary" @click="$refs.createForm.handleAdd()" v-hasPermi="['clw:applyCarLog:add']">
+            <a-icon type="plus" />新增
+          </a-button>
+          <a-button type="primary" :disabled="single" @click="$refs.createForm.handleUpdate(undefined, ids)" v-hasPermi="['clw:applyCarLog:edit']">
+            <a-icon type="edit" />修改
+          </a-button>
+          <a-button type="danger" :disabled="multiple" @click="handleDelete" v-hasPermi="['clw:applyCarLog:remove']">
+            <a-icon type="delete" />删除
+          </a-button> -->
+          <!-- <a-button type="primary" @click="handleExport" v-hasPermi="['clw:applyCarLog:export']">
+            <a-icon type="download" />导出
+          </a-button> -->
+          <table-setting
+            :style="{ float: 'right' }"
+            :table-size.sync="tableSize"
+            v-model="columns"
+            :refresh-loading="loading"
+            @refresh="getList"
+          />
+        </div>
+        <!-- 增加修改 -->
+        <create-form ref="createForm" :isNonfixedPointOptions="dict.type.cmmon_yes_no" @ok="getList" />
+        <!-- 数据展示 -->
+        <a-table
+          :loading="loading"
+          :size="tableSize"
+          rowKey="id"
+          :columns="columns"
+          :data-source="list"
+          :pagination="false"
+          :bordered="tableBordered"
+        >
+          <span slot="num" slot-scope="text, records, index">
+            {{ (queryParam.pageNum - 1) * queryParam.pageSize + Number(index) + 1 }}
+          </span>
+          <span slot="insuranceTime" slot-scope="text, record">
+         灭火消防车
+        </span>
+        <span slot="insuranceIme" slot-scope="text, record">
+            78043968304
+        </span>
+          <span slot="applyStatus" slot-scope="text, record">
+            <dict-tag :options="dict.type['apply_status']" :value="record.applyStatus" />
+          </span>
+          <span slot="isNonfixedPoint" slot-scope="text, record">
+            <dict-tag :options="dict.type['cmmon_yes_no']" :value="record.isNonfixedPoint" />
+          </span>
+          <span slot="operation" slot-scope="text, record">
+            <!-- <a-divider type="vertical" v-hasPermi="['clw:applyCarLog:edit']" /> -->
+            <!-- <a @click="$refs.createForm.handleInfo(record, undefined)" v-hasPermi="['clw:applyCarLog:edit']">
+              <a-icon type="eye" />详情
+            </a> -->
+            <!-- <a-divider type="vertical" v-hasPermi="['clw:applyCarLog:remove']" />
+            <a @click="handleDelete(record)" v-hasPermi="['clw:applyCarLog:remove']">
+              <a-icon type="delete" />删除
+            </a> -->
+          </span>
+        </a-table>
+        <!-- 分页 -->
+        <a-pagination
+          class="ant-table-pagination"
+          show-size-changer
+          show-quick-jumper
+          :current="queryParam.pageNum"
+          :total="total"
+          :page-size="queryParam.pageSize"
+          :showTotal="(total) => `共 ${total} 条`"
+          @showSizeChange="onShowSizeChange"
+          @change="changeSize"
+        />
+      </a-card>
+    </page-header-wrapper>
+  </template>
+  
+  <script>
+  import { listApplyCarLog, delApplyCarLog } from '@/api/clw/applyCarLog'
+  import CreateForm from './modules/CreateForm'
+  import { tableMixin } from '@/store/table-mixin'
+  
+  export default {
+    name: 'ApplyCarLog',
+    components: {
+      CreateForm,
+    },
+    mixins: [tableMixin],
+    dicts: ['cmmon_yes_no', 'apply_status'],
+    data() {
+      return {
+        list: [],
+        selectedRowKeys: [],
+        selectedRows: [],
+        // 高级搜索 展开/关闭
+        advanced: false,
+        // 非单个禁用
+        single: true,
+        // 非多个禁用
+        multiple: true,
+        ids: [],
+        loading: false,
+        total: 0,
+        // 查询参数
+        queryParam: {
+          plateNumber: null,
+          applyUserName:null,
+          pageNum: 1,
+          pageSize: 10,
+        },
+        daterangeCreateTime:[],
+        columns: [
+          { title: '序号', scopedSlots: { customRender: 'num' }, width: '50px', align: 'center' },
+          {
+            title: '车牌号码',
+            dataIndex: 'plateNumber',
+            ellipsis: true,
+            align: 'center',
+          },
+          {
+          title: '车辆类型',
+        //   dataIndex: 'carType',
+          scopedSlots: { customRender: 'insuranceTime' },
+          ellipsis: true,
+          align: 'center',
+        },
+        {
+          title: 'IMEI',
+        //   dataIndex: 'carType',
+          scopedSlots: { customRender: 'insuranceIme' },
+          ellipsis: true,
+          align: 'center',
+        },
+        
+          {
+            title: '负责人',
+            dataIndex: 'driverName',
+            ellipsis: true,
+            align: 'center',
+          },
+          {
+            title: '所属机构',
+            dataIndex: 'deptName',
+            ellipsis: true,
+            align: 'center',
+          },
+  
+          {
+            title: '超速时间',
+            dataIndex: 'createTime',
+            ellipsis: true,
+            align: 'center',
+          },
+          {
+            title: '最高车速(km/h)',
+            dataIndex: 'carId',
+            ellipsis: true,
+            align: 'center',
+          },
+          {
+            title: '限制车速(km/h)',
+            dataIndex: 'deptId',
+            ellipsis: true,
+            align: 'center',
+          },
+  
+   
+        //   {
+        //     title: '操作',
+        //     dataIndex: 'operation',
+        //     width: '6%',
+        //     scopedSlots: { customRender: 'operation' },
+        //     align: 'center',
+        //   },
+        ],
+      }
+    },
+    filters: {},
+    created() {
+      this.getList()
+    },
+    computed: {},
+    watch: {},
+    methods: {
+      /** 查询用车申请记录列表 */
+      getList() {
+        this.loading = true
+        this.queryParam.params = {}
+        if (this.daterangeCreateTime !== null && this.daterangeCreateTime !== '' && this.daterangeCreateTime.length !== 0) {
+          this.queryParam.params['beginApplyTime'] = this.daterangeCreateTime[0]
+          this.queryParam.params['endApplyTime'] = this.daterangeCreateTime[1]
+        }
+        listApplyCarLog(this.queryParam).then((response) => {
+          this.list = response.rows
+          this.total = response.total
+          this.loading = false
+        })
+      },
+  
+      /** 搜索按钮操作 */
+      handleQuery() {
+        this.queryParam.pageNum = 1
+        this.getList()
+      },
+      /** 重置按钮操作 */
+      resetQuery() {
+        this.daterangeCreateTime = []
+        this.queryParam = {
+          deptId: undefined,
+          plateNumber: undefined,
+          driverName: undefined,
+          isNonfixedPoint: undefined,
+          createTime: undefined,
+          applyUserName:undefined,
+          pageNum: 1,
+          pageSize: 10,
+        }
+        this.handleQuery()
+      },
+      onShowSizeChange(current, pageSize) {
+        this.queryParam.pageSize = pageSize
+        this.getList()
+      },
+      changeSize(current, pageSize) {
+        this.queryParam.pageNum = current
+        this.queryParam.pageSize = pageSize
+        this.getList()
+      },
+      onSelectChange(selectedRowKeys, selectedRows) {
+        this.selectedRowKeys = selectedRowKeys
+        this.selectedRows = selectedRows
+        this.ids = this.selectedRows.map((item) => item.id)
+        this.single = selectedRowKeys.length !== 1
+        this.multiple = !selectedRowKeys.length
+      },
+      toggleAdvanced() {
+        this.advanced = !this.advanced
+      },
+      /** 删除按钮操作 */
+      handleDelete(row) {
+        var that = this
+        const ids = row.id || this.ids
+        this.$confirm({
+          title: '确认删除所选中数据?',
+          content: '当前选中编号为' + ids + '的数据',
+          onOk() {
+            return delApplyCarLog(ids).then(() => {
+              that.onSelectChange([], [])
+              that.getList()
+              that.$message.success('删除成功', 3)
+            })
+          },
+          onCancel() {},
+        })
+      },
+      /** 导出按钮操作 */
+      handleExport() {
+        var that = this
+        this.$confirm({
+          title: '是否确认导出?',
+          content: '此操作将导出当前条件下所有数据而非选中数据',
+          onOk() {
+            that.download(
+              'clw/applyCarLog/export',
+              {
+                ...that.queryParam,
+              },
+              `applyCarLog_${new Date().getTime()}.xlsx`
+            )
+          },
+          onCancel() {},
+        })
+      },
+    },
+  }
+  </script>
+  <style lang="less" scoped>
+  // /deep/.ant-input-affix-wrapper {
+  //   width: 20%;
+  //   display: inline-block;
+  // }
+  </style>
+  

+ 296 - 0
src/views/clw/overspeed/modules/CreateForm.vue

@@ -0,0 +1,296 @@
+<template>
+  <a-drawer width="55%" :label-col="4" :wrapper-col="14" :visible="open" @close="onClose">
+    <a-divider orientation="left">
+      <b>{{ formTitle }}</b>
+    </a-divider>
+    <a-form-model ref="form" :model="form" :rules="rules">
+      <a-row>
+        <a-col :span="10">
+          <a-form-model-item label="申请用车时间" prop="applicationTime">
+            <a-input
+              v-model="form.applicationTime"
+              placeholder="暂无信息"
+              :disabled="true"
+            /> </a-form-model-item
+        ></a-col>
+        <a-col :span="10"
+          ><a-form-model-item label="预计归还时间" prop="returnTime">
+            <a-input v-model="form.returnTime" placeholder="暂无信息" :disabled="true" /></a-form-model-item
+        ></a-col>
+      </a-row>
+      <a-row>
+        <a-col :span="10"
+          ><a-form-model-item label="部门名称" prop="deptName">
+            <a-input v-model="form.deptName" placeholder="暂无信息" :disabled="true" /> </a-form-model-item
+        ></a-col>
+        <a-col :span="10">
+          <a-form-model-item label="车牌号码" prop="plateNumber"
+            ><a-input v-model="form.plateNumber" placeholder="暂无信息" :disabled="true" /> </a-form-model-item
+        ></a-col>
+      </a-row>
+      <a-row>
+        <a-col :span="10">
+          <a-form-model-item label="车辆类型" prop="categoryName">
+            <a-input v-model="form.categoryName" placeholder="暂无信息" :disabled="true" /> </a-form-model-item
+        ></a-col>
+        <a-col :span="10">
+          <a-form-model-item label="驾驶人名称" prop="driverName">
+            <a-input v-model="form.driverName" placeholder="暂无信息" :disabled="true" /> </a-form-model-item
+        ></a-col>
+      </a-row>
+      <a-row>
+        <a-col :span="10"
+          ><a-form-model-item label="出发地" prop="startPlace">
+            <a-input v-model="form.startPlace" placeholder="暂无信息" :disabled="true" /></a-form-model-item
+        ></a-col>
+        <a-col :span="10"
+          ><a-form-model-item label="目的地" prop="endPlace">
+            <a-input v-model="form.endPlace" placeholder="暂无信息" :disabled="true" /></a-form-model-item
+        ></a-col>
+      </a-row>
+      <a-row>
+        <a-col :span="10"
+          ><a-form-model-item label="是否超期" prop="startPlace">
+            <a-input v-model="form.isTimeout" placeholder="暂无信息" :disabled="true" /></a-form-model-item
+        ></a-col>
+        <a-col :span="10"
+          ><a-form-model-item label="是否超期提醒" prop="endPlace">
+            <a-input v-model="form.isTips" placeholder="暂无信息" :disabled="true" /></a-form-model-item
+        ></a-col>
+      </a-row>
+      <a-row>
+        <a-col :span="10"
+          ><a-form-model-item label="实际归还时间" prop="realReturnTime">
+            <a-input
+              v-model="form.realReturnTime"
+              placeholder="暂无信息"
+              :disabled="true"
+            /> </a-form-model-item
+        ></a-col>
+        <a-col :span="10">
+          <a-form-item label="审核状态">
+            <a-select
+              placeholder="暂无信息"
+              v-model="form.applyStatus"
+              style="width: 100%"
+              allow-clear
+              :disabled="true"
+            >
+              <a-select-option v-for="(d, index) in dict.type['apply_status']" :key="index" :value="d.value">{{
+                d.label
+              }}</a-select-option>
+            </a-select>
+          </a-form-item></a-col
+        >
+      </a-row>
+      <!-- <a-row>
+        <a-col :span="10"></a-col>
+        <a-col :span="10"></a-col>
+      </a-row> -->
+      <!-- <a-form-model-item label="是否涉及非定点加油" prop="isNonfixedPoint">
+        <a-select placeholder="请选择是否涉及非定点加油" v-model="form.isNonfixedPoint">
+          <a-select-option v-for="(d, index) in isNonfixedPointOptions" :key="index" :value="d.value">{{
+            d.label
+          }}</a-select-option>
+        </a-select>
+      </a-form-model-item> -->
+
+      <a-form-model-item label="备注" prop="remark">
+        <a-input v-model="form.remark" placeholder="暂无信息" :disabled="true" />
+      </a-form-model-item>
+      <div class="bottom-control">
+        <a-space>
+          <!-- <a-button type="primary" :loading="submitLoading" @click="submitForm"> 保存 </a-button> -->
+          <a-button type="dashed" @click="cancel"> 取消 </a-button>
+        </a-space>
+      </div>
+    </a-form-model>
+  </a-drawer>
+</template>
+
+<script>
+import { getApplyCarLog, addApplyCarLog, updateApplyCarLog } from '@/api/clw/applyCarLog'
+
+export default {
+  name: 'CreateForm',
+  props: {
+    isNonfixedPointOptions: {
+      type: Array,
+      required: true,
+    },
+  },
+  components: {},
+  dicts: ['apply_status'],
+  data() {
+    return {
+      submitLoading: false,
+      formTitle: '',
+      // 表单参数
+      form: {
+        userId: null,
+
+        applicationTime: null,
+
+        returnTime: null,
+
+        deptId: null,
+
+        deptName: null,
+
+        plateNumber: null,
+
+        carId: null,
+
+        driverId: null,
+
+        driverName: null,
+
+        isNonfixedPoint: null,
+
+        startPlace: null,
+
+        endPlace: null,
+
+        applyStatus: 0,
+
+        taskId: null,
+
+        realReturnTime: null,
+
+        remark: null,
+
+        createTime: null,
+      },
+      // 1增加,2修改
+      formType: 1,
+      open: false,
+      rules: {},
+    }
+  },
+  filters: {},
+  created() {},
+  computed: {},
+  watch: {},
+  mounted() {},
+  methods: {
+    onClose() {
+      this.open = false
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false
+      this.reset()
+    },
+    // 表单重置
+    reset() {
+      this.formType = 1
+      this.form = {
+        userId: null,
+
+        applicationTime: null,
+
+        returnTime: null,
+
+        deptId: null,
+
+        deptName: null,
+
+        plateNumber: null,
+
+        carId: null,
+
+        driverId: null,
+
+        driverName: null,
+
+        isNonfixedPoint: null,
+
+        startPlace: null,
+
+        endPlace: null,
+
+        applyStatus: 0,
+
+        taskId: null,
+
+        realReturnTime: null,
+
+        remark: null,
+
+        createTime: null,
+      }
+    },
+    /** 新增按钮操作 */
+    handleAdd(row) {
+      this.reset()
+      this.formType = 1
+      this.open = true
+      this.formTitle = '添加'
+    },
+    /** 修改按钮操作 */
+    handleInfo(row, ids) {
+      // this.reset()
+      this.formType = 2
+      const id = row ? row.id : ids
+      getApplyCarLog(id).then((response) => {
+        let obj=response.data
+        if(obj.isTimeout=='1'){
+          obj.isTimeout='已超期'
+        }else if(obj.isTimeout=='0'){
+          obj.isTimeout='未超期'
+        }
+        if(obj.isTips=='1'){
+          obj.isTips='超期已提醒'
+        }else if(obj.isTips=='0'){
+          obj.isTips='超期未提醒'
+        }
+        this.form = obj
+        this.open = true
+        this.formTitle = '用车申请详情'
+      })
+    },
+    /** 提交按钮 */
+    submitForm: function () {
+      this.$refs.form.validate((valid) => {
+        if (valid) {
+          this.submitLoading = true
+          if (this.form.id !== undefined && this.form.id !== null) {
+            updateApplyCarLog(this.form)
+              .then((response) => {
+                this.$message.success('修改成功', 3)
+                this.open = false
+                this.$emit('ok')
+              })
+              .finally(() => {
+                this.submitLoading = false
+              })
+          } else {
+            addApplyCarLog(this.form)
+              .then((response) => {
+                this.$message.success('新增成功', 3)
+                this.open = false
+                this.$emit('ok')
+              })
+              .finally(() => {
+                this.submitLoading = false
+              })
+          }
+        } else {
+          return false
+        }
+      })
+    },
+  },
+}
+</script>
+<style lang="less" scoped>
+/deep/.ant-col{
+  margin-right: 40px;
+}
+/deep/.ant-select{
+  color: #000;
+}
+/deep/.ant-input{
+  color: #000;
+}
+</style>

+ 6 - 5
src/views/clw/remind/modules/CreateForm.vue

@@ -24,7 +24,7 @@
           }}</a-select-option>
         </a-select>
       </a-form-model-item>
-      <a-form-model-item :label="label" prop="threshold">
+      <a-form-model-item :label="dict.label['remind_unit_type'][remindType]" prop="threshold">
         <a-input v-model="form.threshold" placeholder="请输入阈值" :disabled="formType == 3" />
       </a-form-model-item>
       <a-form-model-item label="备注" prop="remark">
@@ -46,6 +46,7 @@ import OpenCabinet from '../../KeyCase/modules/OpenCabinet.vue'
 
 export default {
   name: 'CreateForm',
+  dicts: ['remind_unit_type'],
   props: {
     remindTypeOptions: {
       type: Array,
@@ -87,7 +88,7 @@ export default {
 
         threshold: [{ required: true, message: '阈值不能为空', trigger: 'blur' }],
       },
-      remindType: '',
+      remindType: 'DRIVER_LICENSE',
       label: '提前提醒时间(天)',
     }
   },
@@ -118,7 +119,7 @@ export default {
         threshold: null,
         remindId: null,
       }
-      this.remindType = null
+      // this.remindType = null
     },
     /** 新增按钮操作 */
     handleAdd(row) {
@@ -194,10 +195,10 @@ export default {
 }
 </script>
 <style lang="less" scoped>
-/deep/.ant-select{
+/deep/.ant-select {
   color: #000;
 }
-/deep/.ant-input{
+/deep/.ant-input {
   color: #000;
 }
 </style>

+ 322 - 0
src/views/clw/speedRecord/index.vue

@@ -0,0 +1,322 @@
+<template>
+    <page-header-wrapper>
+      <a-card :bordered="false">
+        <!-- 条件搜索 -->
+        <div class="table-page-search-wrapper">
+          <a-form layout="inline">
+                <a-row :gutter="48">
+                  <a-col :md="6" :sm="8">
+                    <a-form-item label="车牌号" prop="plateNumber">
+                      <a-input v-model="queryParam.plateNumber" placeholder="请输入车牌号" allow-clear />
+                    </a-form-item>
+                  </a-col>
+                  <a-col :md="6" :sm="8">
+                    <a-form-item label="负责人" prop="applyUserName">
+                      <a-input v-model="queryParam.applyUserName" placeholder="请输入负责人" allow-clear />
+                    </a-form-item>
+                  </a-col>
+                  <template >
+                    <a-col :md="8" :sm="10">
+                      <a-form-item label="时间" prop="status">
+                        <a-range-picker style="width: 100%" v-model="    daterangeCreateTime " valueFormat="YYYY-MM-DD" format="YYYY-MM-DD" allow-clear/>
+                      </a-form-item>
+                    </a-col>
+                  </template>
+                  <a-col :md="8" :sm="8">
+                    <span
+                      class="table-page-search-submitButtons"
+                      :style="(advanced && { float: 'right', overflow: 'hidden' }) || {}"
+                    >
+                      <a-button type="primary" @click="handleQuery"><a-icon type="search" />查询</a-button>
+                      <a-button style="margin-left: 8px" @click="resetQuery"><a-icon type="redo" />重置</a-button>
+                      <!-- <a @click="toggleAdvanced" style="margin-left: 8px">
+                        {{ advanced ? '收起' : '展开' }}
+                        <a-icon :type="advanced ? 'up' : 'down'" />
+                      </a> -->
+                    </span>
+                  </a-col>
+                </a-row>
+              </a-form>
+        </div>
+        <!-- 操作 -->
+        <div class="table-operations">
+          <!-- <a-button type="primary" @click="$refs.createForm.handleAdd()" v-hasPermi="['clw:applyCarLog:add']">
+            <a-icon type="plus" />新增
+          </a-button>
+          <a-button type="primary" :disabled="single" @click="$refs.createForm.handleUpdate(undefined, ids)" v-hasPermi="['clw:applyCarLog:edit']">
+            <a-icon type="edit" />修改
+          </a-button>
+          <a-button type="danger" :disabled="multiple" @click="handleDelete" v-hasPermi="['clw:applyCarLog:remove']">
+            <a-icon type="delete" />删除
+          </a-button> -->
+          <!-- <a-button type="primary" @click="handleExport" v-hasPermi="['clw:applyCarLog:export']">
+            <a-icon type="download" />导出
+          </a-button> -->
+          <table-setting
+            :style="{ float: 'right' }"
+            :table-size.sync="tableSize"
+            v-model="columns"
+            :refresh-loading="loading"
+            @refresh="getList"
+          />
+        </div>
+        <!-- 增加修改 -->
+        <create-form ref="createForm" :isNonfixedPointOptions="dict.type.cmmon_yes_no" @ok="getList" />
+        <!-- 数据展示 -->
+        <a-table
+          :loading="loading"
+          :size="tableSize"
+          rowKey="id"
+          :columns="columns"
+          :data-source="list"
+          :pagination="false"
+          :bordered="tableBordered"
+        >
+          <span slot="num" slot-scope="text, records, index">
+            {{ (queryParam.pageNum - 1) * queryParam.pageSize + Number(index) + 1 }}
+          </span>
+          <span slot="insuranceTime" slot-scope="text, record">
+         灭火消防车
+        </span>
+        <span slot="insuranceIme" slot-scope="text, record">
+            78043968304
+        </span>
+          <span slot="applyStatus" slot-scope="text, record">
+            <dict-tag :options="dict.type['apply_status']" :value="record.applyStatus" />
+          </span>
+          <span slot="isNonfixedPoint" slot-scope="text, record">
+            <dict-tag :options="dict.type['cmmon_yes_no']" :value="record.isNonfixedPoint" />
+          </span>
+          <span slot="operation" slot-scope="text, record">
+            <!-- <a-divider type="vertical" v-hasPermi="['clw:applyCarLog:edit']" /> -->
+            <!-- <a @click="$refs.createForm.handleInfo(record, undefined)" v-hasPermi="['clw:applyCarLog:edit']">
+              <a-icon type="eye" />详情
+            </a> -->
+            <!-- <a-divider type="vertical" v-hasPermi="['clw:applyCarLog:remove']" />
+            <a @click="handleDelete(record)" v-hasPermi="['clw:applyCarLog:remove']">
+              <a-icon type="delete" />删除
+            </a> -->
+          </span>
+        </a-table>
+        <!-- 分页 -->
+        <a-pagination
+          class="ant-table-pagination"
+          show-size-changer
+          show-quick-jumper
+          :current="queryParam.pageNum"
+          :total="total"
+          :page-size="queryParam.pageSize"
+          :showTotal="(total) => `共 ${total} 条`"
+          @showSizeChange="onShowSizeChange"
+          @change="changeSize"
+        />
+      </a-card>
+    </page-header-wrapper>
+  </template>
+  
+  <script>
+  import { listApplyCarLog, delApplyCarLog } from '@/api/clw/applyCarLog'
+  import CreateForm from './modules/CreateForm'
+  import { tableMixin } from '@/store/table-mixin'
+  
+  export default {
+    name: 'ApplyCarLog',
+    components: {
+      CreateForm,
+    },
+    mixins: [tableMixin],
+    dicts: ['cmmon_yes_no', 'apply_status'],
+    data() {
+      return {
+        list: [],
+        selectedRowKeys: [],
+        selectedRows: [],
+        // 高级搜索 展开/关闭
+        advanced: false,
+        // 非单个禁用
+        single: true,
+        // 非多个禁用
+        multiple: true,
+        ids: [],
+        loading: false,
+        total: 0,
+        // 查询参数
+        queryParam: {
+          plateNumber: null,
+          applyUserName:null,
+          pageNum: 1,
+          pageSize: 10,
+        },
+        daterangeCreateTime:[],
+        columns: [
+          { title: '序号', scopedSlots: { customRender: 'num' }, width: '50px', align: 'center' },
+          {
+            title: '车牌号码',
+            dataIndex: 'plateNumber',
+            ellipsis: true,
+            align: 'center',
+          },
+          {
+          title: '车辆类型',
+        //   dataIndex: 'carType',
+          scopedSlots: { customRender: 'insuranceTime' },
+          ellipsis: true,
+          align: 'center',
+        },
+        {
+          title: 'IMEI',
+        //   dataIndex: 'carType',
+          scopedSlots: { customRender: 'insuranceIme' },
+          ellipsis: true,
+          align: 'center',
+        },
+        
+          {
+            title: '负责人',
+            dataIndex: 'driverName',
+            ellipsis: true,
+            align: 'center',
+          },
+          {
+            title: '所属机构',
+            dataIndex: 'deptName',
+            ellipsis: true,
+            align: 'center',
+          },
+  
+          {
+            title: '超速时间',
+            dataIndex: 'createTime',
+            ellipsis: true,
+            align: 'center',
+          },
+          {
+            title: '车速限制(km/h)',
+            dataIndex: 'carId',
+            ellipsis: true,
+            align: 'center',
+          },
+          {
+            title: '车速(km/h)',
+            dataIndex: 'deptId',
+            ellipsis: true,
+            align: 'center',
+          },
+  
+   
+        //   {
+        //     title: '操作',
+        //     dataIndex: 'operation',
+        //     width: '6%',
+        //     scopedSlots: { customRender: 'operation' },
+        //     align: 'center',
+        //   },
+        ],
+      }
+    },
+    filters: {},
+    created() {
+      this.getList()
+    },
+    computed: {},
+    watch: {},
+    methods: {
+      /** 查询用车申请记录列表 */
+      getList() {
+        this.loading = true
+        this.queryParam.params = {}
+        if (this.daterangeCreateTime !== null && this.daterangeCreateTime !== '' && this.daterangeCreateTime.length !== 0) {
+          this.queryParam.params['beginApplyTime'] = this.daterangeCreateTime[0]
+          this.queryParam.params['endApplyTime'] = this.daterangeCreateTime[1]
+        }
+        listApplyCarLog(this.queryParam).then((response) => {
+          this.list = response.rows
+          this.total = response.total
+          this.loading = false
+        })
+      },
+  
+      /** 搜索按钮操作 */
+      handleQuery() {
+        this.queryParam.pageNum = 1
+        this.getList()
+      },
+      /** 重置按钮操作 */
+      resetQuery() {
+        this.daterangeCreateTime = []
+        this.queryParam = {
+          deptId: undefined,
+          plateNumber: undefined,
+          driverName: undefined,
+          isNonfixedPoint: undefined,
+          createTime: undefined,
+          applyUserName:undefined,
+          pageNum: 1,
+          pageSize: 10,
+        }
+        this.handleQuery()
+      },
+      onShowSizeChange(current, pageSize) {
+        this.queryParam.pageSize = pageSize
+        this.getList()
+      },
+      changeSize(current, pageSize) {
+        this.queryParam.pageNum = current
+        this.queryParam.pageSize = pageSize
+        this.getList()
+      },
+      onSelectChange(selectedRowKeys, selectedRows) {
+        this.selectedRowKeys = selectedRowKeys
+        this.selectedRows = selectedRows
+        this.ids = this.selectedRows.map((item) => item.id)
+        this.single = selectedRowKeys.length !== 1
+        this.multiple = !selectedRowKeys.length
+      },
+      toggleAdvanced() {
+        this.advanced = !this.advanced
+      },
+      /** 删除按钮操作 */
+      handleDelete(row) {
+        var that = this
+        const ids = row.id || this.ids
+        this.$confirm({
+          title: '确认删除所选中数据?',
+          content: '当前选中编号为' + ids + '的数据',
+          onOk() {
+            return delApplyCarLog(ids).then(() => {
+              that.onSelectChange([], [])
+              that.getList()
+              that.$message.success('删除成功', 3)
+            })
+          },
+          onCancel() {},
+        })
+      },
+      /** 导出按钮操作 */
+      handleExport() {
+        var that = this
+        this.$confirm({
+          title: '是否确认导出?',
+          content: '此操作将导出当前条件下所有数据而非选中数据',
+          onOk() {
+            that.download(
+              'clw/applyCarLog/export',
+              {
+                ...that.queryParam,
+              },
+              `applyCarLog_${new Date().getTime()}.xlsx`
+            )
+          },
+          onCancel() {},
+        })
+      },
+    },
+  }
+  </script>
+  <style lang="less" scoped>
+  // /deep/.ant-input-affix-wrapper {
+  //   width: 20%;
+  //   display: inline-block;
+  // }
+  </style>
+  

+ 296 - 0
src/views/clw/speedRecord/modules/CreateForm.vue

@@ -0,0 +1,296 @@
+<template>
+  <a-drawer width="55%" :label-col="4" :wrapper-col="14" :visible="open" @close="onClose">
+    <a-divider orientation="left">
+      <b>{{ formTitle }}</b>
+    </a-divider>
+    <a-form-model ref="form" :model="form" :rules="rules">
+      <a-row>
+        <a-col :span="10">
+          <a-form-model-item label="申请用车时间" prop="applicationTime">
+            <a-input
+              v-model="form.applicationTime"
+              placeholder="暂无信息"
+              :disabled="true"
+            /> </a-form-model-item
+        ></a-col>
+        <a-col :span="10"
+          ><a-form-model-item label="预计归还时间" prop="returnTime">
+            <a-input v-model="form.returnTime" placeholder="暂无信息" :disabled="true" /></a-form-model-item
+        ></a-col>
+      </a-row>
+      <a-row>
+        <a-col :span="10"
+          ><a-form-model-item label="部门名称" prop="deptName">
+            <a-input v-model="form.deptName" placeholder="暂无信息" :disabled="true" /> </a-form-model-item
+        ></a-col>
+        <a-col :span="10">
+          <a-form-model-item label="车牌号码" prop="plateNumber"
+            ><a-input v-model="form.plateNumber" placeholder="暂无信息" :disabled="true" /> </a-form-model-item
+        ></a-col>
+      </a-row>
+      <a-row>
+        <a-col :span="10">
+          <a-form-model-item label="车辆类型" prop="categoryName">
+            <a-input v-model="form.categoryName" placeholder="暂无信息" :disabled="true" /> </a-form-model-item
+        ></a-col>
+        <a-col :span="10">
+          <a-form-model-item label="驾驶人名称" prop="driverName">
+            <a-input v-model="form.driverName" placeholder="暂无信息" :disabled="true" /> </a-form-model-item
+        ></a-col>
+      </a-row>
+      <a-row>
+        <a-col :span="10"
+          ><a-form-model-item label="出发地" prop="startPlace">
+            <a-input v-model="form.startPlace" placeholder="暂无信息" :disabled="true" /></a-form-model-item
+        ></a-col>
+        <a-col :span="10"
+          ><a-form-model-item label="目的地" prop="endPlace">
+            <a-input v-model="form.endPlace" placeholder="暂无信息" :disabled="true" /></a-form-model-item
+        ></a-col>
+      </a-row>
+      <a-row>
+        <a-col :span="10"
+          ><a-form-model-item label="是否超期" prop="startPlace">
+            <a-input v-model="form.isTimeout" placeholder="暂无信息" :disabled="true" /></a-form-model-item
+        ></a-col>
+        <a-col :span="10"
+          ><a-form-model-item label="是否超期提醒" prop="endPlace">
+            <a-input v-model="form.isTips" placeholder="暂无信息" :disabled="true" /></a-form-model-item
+        ></a-col>
+      </a-row>
+      <a-row>
+        <a-col :span="10"
+          ><a-form-model-item label="实际归还时间" prop="realReturnTime">
+            <a-input
+              v-model="form.realReturnTime"
+              placeholder="暂无信息"
+              :disabled="true"
+            /> </a-form-model-item
+        ></a-col>
+        <a-col :span="10">
+          <a-form-item label="审核状态">
+            <a-select
+              placeholder="暂无信息"
+              v-model="form.applyStatus"
+              style="width: 100%"
+              allow-clear
+              :disabled="true"
+            >
+              <a-select-option v-for="(d, index) in dict.type['apply_status']" :key="index" :value="d.value">{{
+                d.label
+              }}</a-select-option>
+            </a-select>
+          </a-form-item></a-col
+        >
+      </a-row>
+      <!-- <a-row>
+        <a-col :span="10"></a-col>
+        <a-col :span="10"></a-col>
+      </a-row> -->
+      <!-- <a-form-model-item label="是否涉及非定点加油" prop="isNonfixedPoint">
+        <a-select placeholder="请选择是否涉及非定点加油" v-model="form.isNonfixedPoint">
+          <a-select-option v-for="(d, index) in isNonfixedPointOptions" :key="index" :value="d.value">{{
+            d.label
+          }}</a-select-option>
+        </a-select>
+      </a-form-model-item> -->
+
+      <a-form-model-item label="备注" prop="remark">
+        <a-input v-model="form.remark" placeholder="暂无信息" :disabled="true" />
+      </a-form-model-item>
+      <div class="bottom-control">
+        <a-space>
+          <!-- <a-button type="primary" :loading="submitLoading" @click="submitForm"> 保存 </a-button> -->
+          <a-button type="dashed" @click="cancel"> 取消 </a-button>
+        </a-space>
+      </div>
+    </a-form-model>
+  </a-drawer>
+</template>
+
+<script>
+import { getApplyCarLog, addApplyCarLog, updateApplyCarLog } from '@/api/clw/applyCarLog'
+
+export default {
+  name: 'CreateForm',
+  props: {
+    isNonfixedPointOptions: {
+      type: Array,
+      required: true,
+    },
+  },
+  components: {},
+  dicts: ['apply_status'],
+  data() {
+    return {
+      submitLoading: false,
+      formTitle: '',
+      // 表单参数
+      form: {
+        userId: null,
+
+        applicationTime: null,
+
+        returnTime: null,
+
+        deptId: null,
+
+        deptName: null,
+
+        plateNumber: null,
+
+        carId: null,
+
+        driverId: null,
+
+        driverName: null,
+
+        isNonfixedPoint: null,
+
+        startPlace: null,
+
+        endPlace: null,
+
+        applyStatus: 0,
+
+        taskId: null,
+
+        realReturnTime: null,
+
+        remark: null,
+
+        createTime: null,
+      },
+      // 1增加,2修改
+      formType: 1,
+      open: false,
+      rules: {},
+    }
+  },
+  filters: {},
+  created() {},
+  computed: {},
+  watch: {},
+  mounted() {},
+  methods: {
+    onClose() {
+      this.open = false
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false
+      this.reset()
+    },
+    // 表单重置
+    reset() {
+      this.formType = 1
+      this.form = {
+        userId: null,
+
+        applicationTime: null,
+
+        returnTime: null,
+
+        deptId: null,
+
+        deptName: null,
+
+        plateNumber: null,
+
+        carId: null,
+
+        driverId: null,
+
+        driverName: null,
+
+        isNonfixedPoint: null,
+
+        startPlace: null,
+
+        endPlace: null,
+
+        applyStatus: 0,
+
+        taskId: null,
+
+        realReturnTime: null,
+
+        remark: null,
+
+        createTime: null,
+      }
+    },
+    /** 新增按钮操作 */
+    handleAdd(row) {
+      this.reset()
+      this.formType = 1
+      this.open = true
+      this.formTitle = '添加'
+    },
+    /** 修改按钮操作 */
+    handleInfo(row, ids) {
+      // this.reset()
+      this.formType = 2
+      const id = row ? row.id : ids
+      getApplyCarLog(id).then((response) => {
+        let obj=response.data
+        if(obj.isTimeout=='1'){
+          obj.isTimeout='已超期'
+        }else if(obj.isTimeout=='0'){
+          obj.isTimeout='未超期'
+        }
+        if(obj.isTips=='1'){
+          obj.isTips='超期已提醒'
+        }else if(obj.isTips=='0'){
+          obj.isTips='超期未提醒'
+        }
+        this.form = obj
+        this.open = true
+        this.formTitle = '用车申请详情'
+      })
+    },
+    /** 提交按钮 */
+    submitForm: function () {
+      this.$refs.form.validate((valid) => {
+        if (valid) {
+          this.submitLoading = true
+          if (this.form.id !== undefined && this.form.id !== null) {
+            updateApplyCarLog(this.form)
+              .then((response) => {
+                this.$message.success('修改成功', 3)
+                this.open = false
+                this.$emit('ok')
+              })
+              .finally(() => {
+                this.submitLoading = false
+              })
+          } else {
+            addApplyCarLog(this.form)
+              .then((response) => {
+                this.$message.success('新增成功', 3)
+                this.open = false
+                this.$emit('ok')
+              })
+              .finally(() => {
+                this.submitLoading = false
+              })
+          }
+        } else {
+          return false
+        }
+      })
+    },
+  },
+}
+</script>
+<style lang="less" scoped>
+/deep/.ant-col{
+  margin-right: 40px;
+}
+/deep/.ant-select{
+  color: #000;
+}
+/deep/.ant-input{
+  color: #000;
+}
+</style>

+ 2 - 2
vue.config.js

@@ -110,8 +110,8 @@ const vueConfig = {
       // detail: https://cli.vuejs.org/config/#devserver-proxy
       [process.env.VUE_APP_BASE_API]: {
         // target: `https://ruoyi.setworld.net`,
-        // target: `http://113.249.153.164:7618/api`,
-        target:`http://192.168.31.129:8080/`,
+        target: `http://113.249.153.164:7618/api`,
+        // target:`http://192.168.31.129:8080/`,
         changeOrigin: true,
         pathRewrite: {
           ['^' + process.env.VUE_APP_BASE_API]: ''