Forráskód Böngészése

fix-新的 需求,及禅道BUG修复

LAPTOP-U5GOA5HA\zz 1 éve
szülő
commit
c9a729492d
35 módosított fájl, 766 hozzáadás és 240 törlés
  1. 9 1
      src/api/vehicle.js
  2. BIN
      src/assets/vehicle/icon (1).png
  3. BIN
      src/assets/vehicle/icon (2).png
  4. BIN
      src/assets/vehicle/icon (3).png
  5. BIN
      src/assets/vehicle/jyje.png
  6. BIN
      src/assets/vehicle/null-img.png
  7. BIN
      src/assets/vehicle/xz-btn.png
  8. 7 3
      src/views/clw/applyCarLog/index.vue
  9. 6 6
      src/views/clw/car/index.vue
  10. 23 14
      src/views/clw/car/modules/CreateForm.vue
  11. 5 3
      src/views/clw/checkRegister/modules/CreateForm.vue
  12. 17 22
      src/views/clw/gas/modules/CreateForm.vue
  13. 10 10
      src/views/clw/keyCaseOperLog/index.vue
  14. 2 2
      src/views/clw/offLine/index.vue
  15. 31 27
      src/views/clw/oilSkimmingLog/modules/CreateForm.vue
  16. 168 0
      src/views/clw/oilSkimmingLog/modules/SubTable.vue
  17. 5 5
      src/views/clw/overspeed/index.vue
  18. 7 1
      src/views/clw/records/modules/CreateForm.vue
  19. 2 1
      src/views/clw/records/modules/registerForm.vue
  20. 0 6
      src/views/clw/register/index.vue
  21. 12 2
      src/views/clw/register/modules/CreateForm.vue
  22. 2 2
      src/views/clw/register/modules/CreateSubForm.vue
  23. 24 13
      src/views/clw/register/modules/SubTable.vue
  24. 1 1
      src/views/clw/remind/modules/CreateForm.vue
  25. 2 2
      src/views/clw/speedRecord/index.vue
  26. 15 15
      src/views/system/user/index.vue
  27. 1 1
      src/views/system/user/modules/DeptTree.vue
  28. 45 4
      src/views/system/user/modules/ResetPassword.vue
  29. 4 4
      src/views/user/Login.vue
  30. 44 26
      src/views/vehicle/components/FuelRanking.vue
  31. 60 27
      src/views/vehicle/components/FuelRegistration.vue
  32. 125 0
      src/views/vehicle/components/RefuelingStatistics.vue
  33. 2 1
      src/views/vehicle/components/fuelEchart.vue
  34. 135 39
      src/views/vehicle/index.vue
  35. 2 2
      vue.config.js

+ 9 - 1
src/api/vehicle.js

@@ -42,4 +42,12 @@ export function getFuelConsumptionStatistics(params) {
       method: 'get',
       params
     })
-  }
+  }
+    // 查询总油量
+export function getSelectCarFuelStatistics(params) {
+  return request({
+    url: '/clw/statistics/selectCarFuelStatistics',
+    method: 'get',
+    params
+  })
+}

BIN
src/assets/vehicle/icon (1).png


BIN
src/assets/vehicle/icon (2).png


BIN
src/assets/vehicle/icon (3).png


BIN
src/assets/vehicle/jyje.png


BIN
src/assets/vehicle/null-img.png


BIN
src/assets/vehicle/xz-btn.png


+ 7 - 3
src/views/clw/applyCarLog/index.vue

@@ -18,7 +18,7 @@
                 <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-range-picker style="width: 100%" v-model="daterangeCreateTime" valueFormat="YYYY-MM-DD" format="YYYY-MM-DD" allow-clear/>
                     </a-form-item>
                   </a-col>
                 </template>
@@ -78,6 +78,9 @@
         <span slot="applyStatus" slot-scope="text, record">
           <dict-tag :options="dict.type['apply_status']" :value="record.applyStatus" />
         </span>
+        <span slot="remark" slot-scope="text, record">
+         <span>{{ record.remark?record.remark:'' }}</span>
+        </span>
         <span slot="isNonfixedPoint" slot-scope="text, record">
           <dict-tag :options="dict.type['cmmon_yes_no']" :value="record.isNonfixedPoint" />
         </span>
@@ -210,6 +213,7 @@ export default {
         {
           title: '备注',
           dataIndex: 'remark',
+          scopedSlots: { customRender: 'remark' },
           ellipsis: true,
           align: 'center',
         },
@@ -235,8 +239,8 @@ export default {
       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]
+        this.queryParam.params['beginApplyTime'] = `${this.daterangeCreateTime[0]} 00:00:00`
+        this.queryParam.params['endApplyTime'] = `${this.daterangeCreateTime[1]} 23:59:59`
       }
       listApplyCarLog(this.queryParam).then((response) => {
         this.list = response.rows

+ 6 - 6
src/views/clw/car/index.vue

@@ -14,12 +14,12 @@
           <div class="table-page-search-wrapper">
             <a-form layout="inline">
               <a-row :gutter="48">
-                <a-col :md="8" :sm="10">
+                <a-col :span="5">
                   <a-form-item label="车牌号" prop="plateNumber">
                     <a-input v-model="queryParam.plateNumber" placeholder="请输入车牌号" allow-clear />
                   </a-form-item>
                 </a-col>
-                <a-col :md="8" :sm="12">
+                <a-col :span="8">
                   <a-form-item label="机构名称" prop="deptId">
                     <a-select placeholder="请选择" v-model="queryParam.deptId" style="width: 100%" allow-clear>
                       <a-select-option v-for="(d, index) in deptIdList" :key="index" :value="d.id">{{
@@ -28,8 +28,8 @@
                     </a-select>
                   </a-form-item>
                 </a-col>
-                <template v-if="advanced">
-                  <a-col :md="8" :sm="24">
+                <template >
+                  <a-col :span="8">
                     <a-form-item label="状态" prop="status">
                       <a-select placeholder="请选择" v-model="queryParam.status" style="width: 100%" allow-clear>
                         <a-select-option
@@ -49,10 +49,10 @@
                   >
                     <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">
+                    <!-- <a @click="toggleAdvanced" style="margin-left: 8px">
                       {{ advanced ? '收起' : '展开' }}
                       <a-icon :type="advanced ? 'up' : 'down'" />
-                    </a>
+                    </a> -->
                   </span>
                 </a-col>
               </a-row>

+ 23 - 14
src/views/clw/car/modules/CreateForm.vue

@@ -144,14 +144,14 @@
         </a-col>
         <a-col :span="10">
           <a-form-model-item label="长度" prop="length">
-            <a-input v-model="form.length" placeholder="请输入长度" />
+            <a-input type="number" v-model="form.length" placeholder="请输入长度" />
           </a-form-model-item>
         </a-col>
       </a-row>
       <a-row>
         <a-col :span="10">
           <a-form-model-item label="宽度" prop="width">
-            <a-input v-model="form.width" placeholder="请输入宽度" />
+            <a-input type="number" v-model="form.width" placeholder="请输入宽度" />
           </a-form-model-item>
         </a-col>
         <a-col :span="10">
@@ -163,19 +163,19 @@
       <a-row>
         <a-col :span="10">
           <a-form-model-item label="油箱容积/L" prop="fuelCapacity">
-            <a-input v-model="form.fuelCapacity" placeholder="请输入油箱容积/L" />
+            <a-input type="number" v-model="form.fuelCapacity" placeholder="请输入油箱容积/L" />
           </a-form-model-item>
         </a-col>
         <a-col :span="10">
           <a-form-model-item label="座位数量" prop="seatNumber">
-            <a-input v-model="form.seatNumber" placeholder="请输入座位数量" />
+            <a-input type="number" v-model="form.seatNumber" placeholder="请输入座位数量" />
           </a-form-model-item>
         </a-col>
       </a-row>
       <a-row>
         <a-col :span="10">
           <a-form-model-item label="气缸数量" prop="cylinderNumber">
-            <a-input v-model="form.cylinderNumber" placeholder="请输入气缸数量" />
+            <a-input type="number" v-model="form.cylinderNumber" placeholder="请输入气缸数量" />
           </a-form-model-item>
         </a-col>
         <a-col :span="10">
@@ -303,12 +303,12 @@
       </a-col> -->
         <a-col :span="10">
           <a-form-model-item label="价格" prop="bidPrice">
-            <a-input v-model="form.bidPrice" placeholder="请输入价格" />
+            <a-input type="number" v-model="form.bidPrice" placeholder="请输入价格" />
           </a-form-model-item>
         </a-col>
         <a-col :span="10">
           <a-form-model-item label="离线时间" prop="offineTime">
-            <a-input v-model="form.offineTime" placeholder="请输入离线时间" />
+            <a-input disabled v-model="form.offineTime" placeholder="请输入离线时间" />
           </a-form-model-item>
         </a-col>
       </a-row>
@@ -334,7 +334,7 @@
 
 <script>
 import { getCar, addCar, updateCar, getUserList } from '@/api/clw/car'
-
+import { moment } from 'moment'
 export default {
   name: 'CreateForm',
   props: {
@@ -512,8 +512,8 @@ export default {
       },
       userList: [],
       title: '',
-      photoUrl:'',
-      documentUrl:''
+      photoUrl: '',
+      documentUrl: '',
     }
   },
   filters: {},
@@ -639,10 +639,10 @@ export default {
         this.form = response.data
         // console.log('-----初始化',response.data);
         if (response.data.photoFile) {
-          this.photoUrl = '/api'+response.data.photoFile.fileUrl
+          this.photoUrl = '/api' + response.data.photoFile.fileUrl
         }
         if (response.data.documentFile) {
-          this.documentUrl = '/api'+response.data.documentFile.fileUrl
+          this.documentUrl = '/api' + response.data.documentFile.fileUrl
           this.title = response.data.documentFile.fileName
         }
         this.open = true
@@ -651,11 +651,20 @@ export default {
     },
     /** 提交按钮 */
     submitForm: function () {
+      const params = {
+        ...this.form,
+      }
+      params.manufactureDate = this.form.manufactureDate
+        ? this.form.manufactureDate.format('YYYY-MM-DD HH:mm:ss')
+        : this.form.manufactureDate
+      params.allocateDate = this.form.allocateDate
+        ? this.form.allocateDate.format('YYYY-MM-DD HH:mm:ss')
+        : this.form.allocateDate
       this.$refs.form.validate((valid) => {
         if (valid) {
           this.submitLoading = true
           if (this.form.id !== undefined && this.form.id !== null) {
-            updateCar(this.form)
+            updateCar(params)
               .then((response) => {
                 this.$message.success('修改成功', 3)
                 this.open = false
@@ -691,7 +700,7 @@ export default {
     },
     UpdateImgs(val) {
       this.form.photo = val.response.id
-      this.photoUrl = '/api'+val.response.fileName
+      this.photoUrl = '/api' + val.response.fileName
     },
     UpdateDociment(val) {
       this.form.document = val.response.id

+ 5 - 3
src/views/clw/checkRegister/modules/CreateForm.vue

@@ -60,9 +60,9 @@ export default {
       // 1增加,2修改
       formType: 1,
       open: false,
-      uersInfo:null,
+      uersInfo:{},
       rules: {
-        checkTime: [{ required: true, message: '检查日期不能为空', trigger: 'blur' }],
+        checkTime: [{ required: true, message: '检查日期不能为空', trigger: 'change' }],
 
         // userId: [{ required: true, message: '经办人不能为空', trigger: 'blur' }],
 
@@ -120,6 +120,8 @@ export default {
     },
     /** 修改按钮操作 */
     handleUpdate(row, ids) {
+      console.log('----',row);
+      this.userId=row.userId
       this.reset()
       this.formType = 2
       const checkId = row ? row.checkId : ids
@@ -141,7 +143,7 @@ export default {
     },
     /** 提交按钮 */
     submitForm: function () {
-      this.$refs.form.validate((valid) => {
+      this.$refs.form.validate((valid) => {    
         const time = this.form.checkTime.format('YYYY-MM-DD HH:mm:ss')
           const params = {
             ...this.form,

+ 17 - 22
src/views/clw/gas/modules/CreateForm.vue

@@ -2,8 +2,11 @@
   <a-drawer width="45%" :label-col="4" :wrapper-col="14" :visible="open" @close="onClose">
     <a-divider orientation="left">
       <b>{{ formTitle }}</b>
-    </a-divider>
+    </a-divider> 
     <a-form-model ref="form" :model="form" :rules="rules">
+      <a-form-model-item label="主卡号" prop="masterCardCode">
+      <a-input type="number" v-model="form.masterCardCode" placeholder="请输入住卡号" :disabled="formType == 3" />
+    </a-form-model-item>
       <a-form-model-item label="加油卡类型" prop="gasCardType">
         <a-select
           placeholder="请选择加油卡类型"
@@ -30,10 +33,10 @@
           }}</a-select-option>
         </a-select>
       </a-form-model-item>
-      <a-form-model-item label="机构名称" prop="deptName"  v-if="showInput == 2 || form.gasCardType == '2'">
+      <a-form-model-item label="机构名称" prop="deptName" v-if="showInput == 2 || form.gasCardType == '2'">
         <a-input v-model="form.deptName" placeholder="请输入机构名称" disabled />
       </a-form-model-item>
-      <a-form-item label="机构名称" prop="deptId"  v-if="showInput == 1 || form.gasCardType == '1'">
+      <a-form-item label="机构名称" prop="deptId" v-if="showInput == 1 || form.gasCardType == '1'">
         <a-select placeholder="请选择" v-model="form.deptId" style="width: 100%" allow-clear @change="changeDept">
           <a-select-option v-for="(d, index) in deptIdList" :key="index" :value="d.id">{{ d.lable }}</a-select-option>
         </a-select>
@@ -43,21 +46,17 @@
       </a-form-model-item>
       <a-form-model-item label="油品" prop="gasType">
         <!-- <a-input v-model="form.gasType" placeholder="请输入油品" :disabled="formType == 3" /> -->
-        <a-select
-          placeholder="请选择加油卡类型"
-          v-model="form.gasType"
-          :disabled="formType == 3"
-        >
+        <a-select placeholder="请选择加油卡类型" v-model="form.gasType" :disabled="formType == 3">
           <a-select-option v-for="(d, index) in dict.type['gas_type']" :key="index" :value="d.value">{{
             d.label
           }}</a-select-option>
         </a-select>
       </a-form-model-item>
       <a-form-model-item label="油卡号" prop="gasCode">
-        <a-input v-model="form.gasCode" placeholder="请输入油卡号" :disabled="formType == 3" />
+        <a-input type="number" v-model="form.gasCode" placeholder="请输入油卡号" :disabled="formType == 3" />
       </a-form-model-item>
       <a-form-model-item label="初始金额(元)" prop="initialAmount">
-        <a-input v-model="form.initialAmount" placeholder="请输入初始金额" :disabled="formType == 3" />
+        <a-input type="number" v-model="form.initialAmount" placeholder="请输入初始金额" :disabled="formType == 3" />
       </a-form-model-item>
       <a-form-model-item label="状态" prop="status">
         <a-select placeholder="请选择状态" v-model="form.status" :disabled="formType == 3">
@@ -118,6 +117,7 @@ export default {
         status: '1',
 
         remark: null,
+        masterCardCode: null,
       },
       deptIdList: [
         {
@@ -153,20 +153,14 @@ export default {
       formType: 1,
       open: false,
       rules: {
+        masterCardCode:[{required:true, message: '主卡号不能为空', trigger: 'blur' }],
         gasCardType: [{ required: true, message: '加油卡类型不能为空', trigger: 'change' }],
-
         carId: [{ required: true, message: '车辆ID不能为空', trigger: 'change' }],
-
         deptName: [{ required: true, message: '机构名称不能为空', trigger: 'blur' }],
-
         carCategoryName: [{ required: true, message: '车辆分类名称不能为空', trigger: 'blur' }],
-
-        gasType: [{ required: true, message: '油品不能为空', trigger: 'blur' }],
-
+        gasType: [{ required: true, message: '油品不能为空', trigger: 'change' }],
         gasCode: [{ required: true, message: '油卡号不能为空', trigger: 'blur' }],
-
         initialAmount: [{ required: true, message: '初始金额不能为空', trigger: 'blur' }],
-
         status: [{ required: true, message: '状态不能为空', trigger: 'change' }],
       },
       cacheCarPlateNumber: {},
@@ -211,6 +205,7 @@ export default {
         status: '1',
 
         remark: null,
+        masterCardCode: null,
       }
     },
     /** 新增按钮操作 */
@@ -303,10 +298,10 @@ export default {
         this.disabled = false
       }
     },
-    changeDept(ev){  
-      let name=this.deptIdList[ev]
-      console.log(name);
-    }
+    changeDept(ev) {
+      let name = this.deptIdList[ev]
+      console.log(name)
+    },
   },
 }
 </script>

+ 10 - 10
src/views/clw/keyCaseOperLog/index.vue

@@ -5,7 +5,7 @@
       <div class="table-page-search-wrapper">
         <a-form layout="inline">
           <a-row :gutter="48">
-            <a-col :md="8" :sm="24">
+            <a-col :span="6">
               <a-form-item label="操作类型" prop="operType">
                 <a-select placeholder="请选择操作类型" v-model="queryParam.operType" style="width: 100%" allow-clear :filterOption="filterOption4" showSearch>
                   <a-select-option v-for="(d1, index1) in dict.type.key_box_oper_type" :key="index1" :value="d1.value">{{
@@ -14,7 +14,7 @@
                 </a-select>
               </a-form-item>
             </a-col>
-            <a-col :md="8" :sm="24">
+            <a-col :span="6">
               <a-form-item label="操作的钥匙柜" prop="boxId">
                 <a-select placeholder="请选择操作的钥匙柜" v-model="queryParam.boxId" style="width: 100%" allow-clear :filterOption="filterOption1" showSearch>
                   <a-select-option v-for="(d, index) in boxList" :key="index+ '-only'" :value="d.value">{{
@@ -23,7 +23,7 @@
                 </a-select>
               </a-form-item>
             </a-col>
-            <a-col :md="8" :sm="24">
+            <a-col :span="6">
               <a-form-item label="车牌号码" prop="carId">
                 <a-select placeholder="请选择车牌号码" v-model="queryParam.carId" style="width: 100%" allow-clear :filterOption="filterOption2" showSearch>
                   <a-select-option v-for="(d2, index2) in carList" :key="index2+ '-only2'" :value="d2.value">{{
@@ -32,8 +32,8 @@
                 </a-select>
               </a-form-item>
             </a-col>
-            <template v-if="advanced">
-              <a-col :md="8" :sm="24">
+            <template>
+              <a-col :span="6">
                 <a-form-item label="操作时间">
                   <a-range-picker
                     style="width: 100%"
@@ -44,7 +44,7 @@
                   />
                 </a-form-item>
               </a-col>
-              <a-col :md="8" :sm="24">
+              <a-col :span="5">
                 <a-form-item label="操作人" prop="operUserId">
                   <a-select :filterOption="filterOption" placeholder="请选择操作人" v-model="queryParam.operUserId" style="width: 100%" allow-clear showSearch >
                   <a-select-option v-for="(d3, index3) in popList" :key="index3+ '-only3'" :value="d3.value">{{
@@ -61,10 +61,10 @@
               >
                 <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">
+                <!-- <a @click="toggleAdvanced" style="margin-left: 8px">
                   {{ advanced ? '收起' : '展开' }}
                   <a-icon :type="advanced ? 'up' : 'down'" />
-                </a>
+                </a> -->
               </span>
             </a-col>
           </a-row>
@@ -247,8 +247,8 @@ export default {
       this.loading = true
       this.queryParam.params = {}
       if (this.daterangeOperTime !== null && this.daterangeOperTime !== '' && this.daterangeOperTime.length !== 0) {
-        this.queryParam.params['beginOperTime'] = this.daterangeOperTime[0]
-        this.queryParam.params['endOperTime'] = this.daterangeOperTime[1]
+        this.queryParam.params['beginOperTime'] = `${this.daterangeOperTime[0]} 00:00:00`
+        this.queryParam.params['endOperTime'] = `${this.daterangeOperTime[1]} 23:59:59`
       }
       listKeyCaseOperLog(this.queryParam).then((response) => {
         this.list = response.rows

+ 2 - 2
src/views/clw/offLine/index.vue

@@ -196,8 +196,8 @@
         this.loading = true
         this.queryParam.params = {}
         if (this.daterangeCreateTime !== null && this.daterangeCreateTime !== '' && this.daterangeCreateTime.length !== 0) {
-          this.queryParam.startTime = this.daterangeCreateTime[0]
-          this.queryParam.endTime = this.daterangeCreateTime[1]
+          this.queryParam.startTime = `${this.daterangeCreateTime[0]} 00:00:00`
+          this.queryParam.endTime = `${this.daterangeCreateTime[1]} 23:59:59`
         }
         getOfflineList(this.queryParam).then((response) => {
           console.log(response);

+ 31 - 27
src/views/clw/oilSkimmingLog/modules/CreateForm.vue

@@ -40,29 +40,27 @@
       <a-row>
         <a-col :span="10">
           <a-form-model-item label="上次加油量(升)" prop="prevFuelCharge">
-            <a-input
-              v-model="form.prevFuelCharge"
-              placeholder="暂无信息"
-              :disabled="true"
-            /> </a-form-model-item
+            <a-input v-model="form.prevFuelCharge" placeholder="暂无信息" :disabled="true" /> </a-form-model-item
         ></a-col>
         <a-col :span="10"
           ><a-form-model-item label="上次消耗金额(元)" prop="prevLoseAmount">
-            <a-input
-              v-model="form.prevLoseAmount"
-              placeholder="暂无信息"
-              :disabled="true"
-            /> </a-form-model-item
+            <a-input v-model="form.prevLoseAmount" placeholder="暂无信息" :disabled="true" /> </a-form-model-item
+        ></a-col>
+      </a-row>
+      <a-row>
+        <a-col :span="10">
+          <a-form-model-item label="目前加油总量(升)" prop="prevFuelCharge">
+            <a-input v-model="form.prevFuelCharge" placeholder="暂无信息" :disabled="true" /> </a-form-model-item
+        ></a-col>
+        <a-col :span="10"
+          ><a-form-model-item label="目前消耗总金额(元)" prop="prevLoseAmount">
+            <a-input v-model="form.prevLoseAmount" placeholder="暂无信息" :disabled="true" /> </a-form-model-item
         ></a-col>
       </a-row>
       <a-row>
         <a-col :span="10"
           ><a-form-model-item label="本次划拨金额(元)" prop="currentAmount">
-            <a-input
-              v-model="form.currentAmount"
-              placeholder="暂无信息"
-              :disabled="true"
-            /> </a-form-model-item
+            <a-input v-model="form.currentAmount" placeholder="暂无信息" :disabled="true" /> </a-form-model-item
         ></a-col>
         <a-col :span="10">
           <a-form-item label="审核状态">
@@ -78,15 +76,17 @@
               }}</a-select-option>
             </a-select>
           </a-form-item>
-          ></a-col
-        >
+        </a-col>
       </a-row>
 
       <a-form-model-item label="备注" prop="remark">
         <a-input v-model="form.remark" placeholder="暂无信息" :disabled="true" />
       </a-form-model-item>
       <div>
-        <timeLinne :list="list" :lineTitle="lineTitle"/>
+        <SubTable :list="SuList" />
+      </div>
+      <div>
+        <timeLinne :list="list" :lineTitle="lineTitle" />
       </div>
       <div class="bottom-control">
         <a-space>
@@ -103,11 +103,12 @@
 <script>
 import { getOilSkimmingLog, addOilSkimmingLog, updateOilSkimmingLog } from '@/api/clw/oilSkimmingLog'
 import timeLinne from '../../../../components/timeLinne.vue'
-import {  getWorkflow } from '@/api/clw/applyCarLog'
+import { getWorkflow } from '@/api/clw/applyCarLog'
+import SubTable from './SubTable.vue'
 export default {
   name: 'CreateForm',
   props: {},
-  components: {timeLinne},
+  components: { timeLinne, SubTable },
   dicts: ['apply_status'],
   data() {
     return {
@@ -145,8 +146,9 @@ export default {
       formType: 1,
       open: false,
       rules: {},
-      list:[],
-      lineTitle:''
+      list: [],
+      SuList: [],
+      lineTitle: '',
     }
   },
   filters: {},
@@ -207,11 +209,13 @@ export default {
       this.formType = 2
       const id = row ? row.id : ids
       getOilSkimmingLog(id).then((response) => {
+        console.log(response);
         this.form = response.data
+        this.SuList=response.data.fuelConsumptionLogs
         this.open = true
         this.formTitle = '划油记录详情'
         getWorkflow(this.form.taskId).then((res) => {
-        this.lineTitle='划油审批'
+          this.lineTitle = '划油审批'
           this.list = res.data.nodes
         })
       })
@@ -254,10 +258,10 @@ export default {
 /deep/.ant-col {
   margin-right: 40px;
 }
-/deep/.ant-select{
- color: #000;
+/deep/.ant-select {
+  color: #000;
 }
-/deep/.ant-input{
- color: #000;
+/deep/.ant-input {
+  color: #000;
 }
 </style>

+ 168 - 0
src/views/clw/oilSkimmingLog/modules/SubTable.vue

@@ -0,0 +1,168 @@
+<template>
+  <div>
+    <template slot="footer">
+      <a-button type="dashed" @click="close"> 关闭 </a-button>
+    </template>
+    <a-card :bordered="false">
+      <!-- 操作 -->
+      <!-- <div class="table-operations">
+        <table-setting
+          :style="{ float: 'right' }"
+          :table-size.sync="tableSize"
+          v-model="columns"
+          :refresh-loading="loading"
+        />
+      </div> -->
+      <!-- 数据展示 -->
+      <a-table
+        :loading="loading"
+        :size="tableSize"
+        rowKey="id"
+        :columns="calcColumns"
+        :data-source="list"
+        :pagination="false"
+        :bordered="tableBordered"
+      >
+        <span slot="invoiceUrl" slot-scope="text, record">    
+            <!-- <a-input v-model="form.invoiceUrl" placeholder="暂无信息" :disabled="true" />  -->
+            <img
+              class="invoice-url"
+              :src="record.invoiceUrl"
+              alt=""
+              @click="bigImgs(record.invoiceUrl)"
+            /> 
+        </span>
+      </a-table>
+    </a-card>
+  </div>
+  <!-- <a-modal ref="subTableModel" :title="'保险登记详情'" width="80%" :visible="visible" @cancel="close">
+   
+  </a-modal> -->
+</template>
+
+<script>
+import { tableMixin } from '@/store/table-mixin'
+
+export default {
+  dicts: ['insurance_type'],
+  name: 'SubTable',
+  props: {
+    list: {
+      type: Array,
+      required: true,
+    },
+    formType: Number,
+  },
+  mixins: [tableMixin],
+  data() {
+    return {
+      visible: true,
+      selectedRowKeys: [],
+      selectedRows: [],
+      // 高级搜索 展开/关闭
+      advanced: false,
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      ids: [],
+      loading: false,
+      showNum: null,
+      columns: [
+        {
+          title: '加油日期',
+          dataIndex: 'tradingHour',
+          ellipsis: true,
+          align: 'center',
+        },
+        {
+          title: '加油金额(元)',
+          dataIndex: 'amount',
+          ellipsis: true,
+          align: 'center',
+        },
+        {
+          title: '加油升数(升)',
+          dataIndex: 'litres',
+          ellipsis: true,
+          align: 'center',
+        },
+        {
+          title: '油品',
+          dataIndex: 'gasType',
+          ellipsis: true,
+          align: 'center',
+        },
+        {
+          title: '小票',
+          dataIndex: 'invoiceUrl',
+          scopedSlots: { customRender: 'invoiceUrl' },
+          ellipsis: true,
+          align: 'center',
+        },
+      ],
+    }
+  },
+  filters: {},
+  created() {},
+  computed: {},
+  computed: {
+    calcColumns() {
+      // if (this.showNum != 3) {
+      //   return [
+      //     ...this.columns,
+      //     {
+      //       title: '操作',
+      //       dataIndex: 'operation',
+      //       width: '18%',
+      //       scopedSlots: { customRender: 'operation' },
+      //       align: 'center',
+      //     },
+      //   ]
+      // }
+      return [...this.columns]
+    },
+  },
+  watch: {
+    formType: {
+      handler(val) {
+        this.showNum = val
+      },
+      deep: true,
+      immediate: true,
+    },
+  },
+  methods: {
+    // 关闭模态框
+    close() {
+      this.visible = false
+      this.selectedRowKeys = []
+      this.selectedRows = []
+    },
+    bigImgs(src){
+      window.open(src)
+    },
+    // 打开抽屉(由外面的组件调用)
+    show() {
+      this.visible = true
+    },
+    onSelectChange(selectedRowKeys, selectedRows) {
+      this.selectedRowKeys = selectedRowKeys
+      this.selectedRows = selectedRows
+      this.ids = selectedRowKeys.map((item) => item - 1)
+      this.single = selectedRowKeys.length !== 1
+      this.multiple = !selectedRowKeys.length
+    },
+    handleAddLjclwInsuranceRegisterDetail(row) {
+      this.$emit('add', row)
+    },
+  },
+}
+</script>
+<style lang="less" scoped>
+.invoice-url{
+  display: inline-block;
+  width: 50px;
+  height: 50px;
+}
+</style>

+ 5 - 5
src/views/clw/overspeed/index.vue

@@ -18,7 +18,7 @@
                   <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-range-picker style="width: 100%" v-model="daterangeCreateTime" valueFormat="YYYY-MM-DD" format="YYYY-MM-DD" allow-clear/>
                       </a-form-item>
                     </a-col>
                   </template>
@@ -184,13 +184,13 @@
           },
           {
             title: '最高车速(km/h)',
-            dataIndex: 'speedLimit',
+            dataIndex: 'speed',
             ellipsis: true,
             align: 'center',
           },
           {
             title: '限制车速(km/h)',
-            dataIndex: 'speed',
+            dataIndex: 'speedLimit',
             ellipsis: true,
             align: 'center',
           },
@@ -209,8 +209,8 @@
         this.loading = true
         this.queryParam.params = {}
         if (this.daterangeCreateTime !== null && this.daterangeCreateTime !== '' && this.daterangeCreateTime.length !== 0) {
-          this.queryParam.startTime = this.daterangeCreateTime[0]
-          this.queryParam.endTime = this.daterangeCreateTime[1]
+          this.queryParam.startTime = `${this.daterangeCreateTime[0]} 00:00:00`
+          this.queryParam.endTime = `${this.daterangeCreateTime[1]} 23:59:59`
         }
         getOverSpeedList(this.queryParam).then((response) => {
           this.list = response.rows

+ 7 - 1
src/views/clw/records/modules/CreateForm.vue

@@ -228,7 +228,7 @@
       </a-form-model-item> -->
       <div class="bottom-control">
         <a-space>
-          <a-button type="primary" :loading="submitLoading" @click="submitForm"> 保存 </a-button>
+          <!-- <a-button type="primary" :loading="submitLoading" @click="submitForm"> 保存 </a-button> -->
           <a-button type="dashed" @click="cancel"> 取消 </a-button>
         </a-space>
       </div>
@@ -266,6 +266,7 @@ export default {
         status: '1',
 
         remark: null,
+        metaDetail:{}
       },
       // 1增加,2修改
       formType: 1,
@@ -335,6 +336,11 @@ export default {
       // const gasId = row ? row.gasId : ids
       getmsgInfo(row.id).then((response) => {
         this.form = response.data
+        if(response.data.metaDetail){
+          this.form.metaDetail=response.data.metaDetail
+        }else{
+          this.form.metaDetail={}
+        }
         if (response.data.metaDetail && response.data.metaDetail.drivingLicense) {
           this.warrantyImageId = '/api' + response.data.metaDetail.drivingLicense.drivingLicenseImageUrl
         }

+ 2 - 1
src/views/clw/records/modules/registerForm.vue

@@ -131,7 +131,7 @@
         <br />
         <div class="bottom-control">
           <a-space>
-            <a-button type="primary" :loading="submitLoading" @click="submitForm" v-if="formType != 3"> 保存 </a-button>
+            <!-- <a-button type="primary" :loading="submitLoading" @click="submitForm" v-if="formType != 3"> 保存 </a-button> -->
             <a-button type="dashed" @click="cancel"> 取消 </a-button>
           </a-space>
         </div>
@@ -181,6 +181,7 @@
           dueTime: null,
   
           remark: null,
+          metaDetail:{}
         },
         // 1增加,2修改
         formType: 1,

+ 0 - 6
src/views/clw/register/index.vue

@@ -94,12 +94,6 @@
         <span slot="num" slot-scope="text, records, index">
           {{ (queryParam.pageNum - 1) * queryParam.pageSize + Number(index) + 1 }}
         </span>
-        <span slot="insuranceTime" slot-scope="text, record">
-          {{ parseTime(record.insuranceTime) }}
-        </span>
-        <span slot="dueTime" slot-scope="text, record">
-          {{ parseTime(record.dueTime) }}
-        </span>
         <span slot="operation" slot-scope="text, record">
           <a-divider type="vertical" v-hasPermi="['clw:register:edit']" />
           <a @click="$refs.createForm.handleUpdate(record, undefined)" v-hasPermi="['clw:register:edit']">

+ 12 - 2
src/views/clw/register/modules/CreateForm.vue

@@ -70,7 +70,7 @@
             <a-date-picker
               style="width: 100%"
               v-model="form.insuranceTime"
-              format="YYYY-MM-DD HH:mm:ss"
+              format="YYYY-MM-DD"
               allow-clear
               :disabled="formType == 3"
             />
@@ -79,9 +79,10 @@
         <a-col :span="10">
           <a-form-model-item label="到期日期" prop="dueTime">
             <a-date-picker
+            :disabled-date="disabledDate"
               style="width: 100%"
               v-model="form.dueTime"
-              format="YYYY-MM-DD HH:mm:ss"
+              format="YYYY-MM-DD"
               allow-clear
               :disabled="formType == 3"
             />
@@ -231,6 +232,15 @@ export default {
       this.warrantyImageId=null
       this.subList = []
     },
+    // changeTime(val){
+    //   this.endTimes=val._i
+    //   console.log('-------00',this.endTimes);
+    // },
+    //不可选择的时间
+    disabledDate(){
+      console.log(this.form.insuranceTime);
+     
+    },
     /** 新增按钮操作 */
     handleAdd(row) {
       this.reset()

+ 2 - 2
src/views/clw/register/modules/CreateSubForm.vue

@@ -16,10 +16,10 @@
         </a-select>
       </a-form-model-item>
       <a-form-model-item label="保费" prop="insuranceExpense">
-        <a-input v-model="form.insuranceExpense" placeholder="请输入" />
+        <a-input v-model="form.insuranceExpense" type="number"  placeholder="请输入" />
       </a-form-model-item>
       <a-form-model-item label="保额" prop="insuranceInsured">
-        <a-input v-model="form.insuranceInsured" placeholder="请输入" />
+        <a-input v-model="form.insuranceInsured" type="number"  placeholder="请输入" />
       </a-form-model-item>
       <!-- <div class="bottom-control">
         <a-space>

+ 24 - 13
src/views/clw/register/modules/SubTable.vue

@@ -27,7 +27,7 @@
       <a-table
         :loading="loading"
         :size="tableSize"
-        rowKey="insuranceId"
+        rowKey="index"
         :columns="calcColumns"
         :data-source="list"
         :row-selection="this.showNum != 3 ? { selectedRowKeys: selectedRowKeys, onChange: onSelectChange } : null"
@@ -43,6 +43,8 @@
         </span>
       </a-table>
     </a-card>
+      <!-- 删除弹窗 -->
+      <OpenModul ref="modules" @handleDeletes="handleDeletes" />
   </div>
   <!-- <a-modal ref="subTableModel" :title="'保险登记详情'" width="80%" :visible="visible" @cancel="close">
    
@@ -52,12 +54,13 @@
 <script>
 import CreateSubForm from './CreateSubForm'
 import { tableMixin } from '@/store/table-mixin'
-
+import OpenModul from '@/components/OpenModul.vue'
 export default {
   dicts: ['insurance_type'],
   name: 'SubTable',
   components: {
     CreateSubForm,
+    OpenModul
   },
   props: {
     list: {
@@ -78,9 +81,11 @@ export default {
       single: true,
       // 非多个禁用
       multiple: true,
+      bxIndex:'',
       ids: [],
       loading: false,
       showNum: null,
+      bxTypeId:'',
       columns: [
         {
           title: '保险类型',
@@ -153,19 +158,25 @@ export default {
     },
     /** 删除按钮操作 */
     handleDelete(row) {
-      var that = this
+      this.$refs.modules.title = '是否确认删除'
+      this.$refs.modules.visible = true
+      // this.$emit('delete', index, ids)
+      // var that = this
       if (row) {
-        var index = (this.list || []).findIndex((item) => item === row)
+         this.bxIndex = (this.list || []).findIndex((item) => item === row)
       }
-      const ids = index !== undefined ? index : this.ids
-      this.$confirm({
-        title: '确认删除所选中数据?',
-        content: '当前选中序号为' + ids + '的数据',
-        onOk() {
-          that.$emit('delete', index, ids)
-        },
-        onCancel() {},
-      })
+      this.bxTypeId = index !== undefined ? index : this.ids
+      // this.$confirm({
+      //   title: '确认删除所选中数据?',
+      //   onOk() {
+      //     that.$emit('delete', index, ids)
+      //   },
+      //   onCancel() {},
+      // })
+    },
+    handleDeletes(){
+       this.$emit('delete',this.bxIndex,this.bxTypeId)
+       this.$refs.modules.visible = false
     },
     handleAddLjclwInsuranceRegisterDetail(row) {
       this.$emit('add', row)

+ 1 - 1
src/views/clw/remind/modules/CreateForm.vue

@@ -25,7 +25,7 @@
         </a-select>
       </a-form-model-item>
       <a-form-model-item :label="dict.label['remind_unit_type'][remindType]" prop="threshold">
-        <a-input v-model="form.threshold" placeholder="请输入阈值" :disabled="formType == 3" />
+        <a-input type="number" v-model="form.threshold" placeholder="请输入阈值" :disabled="formType == 3" />
       </a-form-model-item>
       <a-form-model-item label="备注" prop="remark">
         <a-input v-model="form.remark" placeholder="请输入内容" type="textarea" allow-clear :disabled="formType == 3" />

+ 2 - 2
src/views/clw/speedRecord/index.vue

@@ -220,8 +220,8 @@
         this.loading = true
         this.queryParam.params = {}
         if (this.daterangeCreateTime !== null && this.daterangeCreateTime !== '' && this.daterangeCreateTime.length !== 0) {
-          this.queryParam.startTime = this.daterangeCreateTime[0]
-          this.queryParam.endTime = this.daterangeCreateTime[1]
+          this.queryParam.startTime = `${this.daterangeCreateTime[0]} 00:00:00` 
+          this.queryParam.endTime = `${this.daterangeCreateTime[1]} 23:59:59`
         }
         getSpeedList(this.queryParam).then((response) => {
           this.list = response.rows

+ 15 - 15
src/views/system/user/index.vue

@@ -2,27 +2,27 @@
   <page-header-wrapper>
     <a-card :bordered="false">
       <a-row :gutter="24">
-        <a-col :span="6">
+        <a-col :span="6" style="overflow-y: scroll; height: 700px;">
           <!-- 部门树 -->
-          <dept-tree ref="deptTree" :deptOptions="deptOptions" @select="clickDeptNode" />
+          <dept-tree ref="deptTree" :deptOptions="deptOptions" @select1="clickDeptNode" />
         </a-col>
         <a-col :span="18">
           <!-- 条件搜索 -->
           <div class="table-page-search-wrapper">
             <a-form layout="inline">
               <a-row :gutter="48">
-                <a-col :md="8" :sm="24">
+                <a-col :span="6">
                   <a-form-item label="人员名称">
                     <a-input v-model="queryParam.nickName" placeholder="请输入" allow-clear />
                   </a-form-item>
                 </a-col>
-                <a-col :md="8" :sm="24">
+                <a-col :span="8">
                   <a-form-item label="手机号">
                     <a-input v-model="queryParam.phonenumber" placeholder="请输入" allow-clear />
                   </a-form-item>
                 </a-col>
-                <template v-if="advanced">
-                  <a-col :md="8" :sm="24">
+                <template>
+                  <a-col :span="6">
                     <a-form-item label="状态" prop="status">
                       <a-select placeholder="请选择状态" style="width: 100%" allow-clear @change="handleChange">
                         <!-- dict.type['sys_normal_disable']"  -->
@@ -35,7 +35,7 @@
                       </a-select>
                     </a-form-item>
                   </a-col>
-                  <a-col :md="8" :sm="24">
+                  <a-col :span="8">
                     <a-form-item label="创建时间">
                       <a-range-picker
                         style="width: 100%"
@@ -54,10 +54,10 @@
                   >
                     <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">
+                    <!-- <a @click="toggleAdvanced" style="margin-left: 8px">
                       {{ advanced ? '收起' : '展开' }}
                       <a-icon :type="advanced ? 'up' : 'down'" />
-                    </a>
+                    </a> -->
                   </span>
                 </a-col>
               </a-row>
@@ -74,13 +74,13 @@
             <a-button type="danger" :disabled="multiple" @click="handleDelete" v-hasPermi="['system:user:remove']">
               <a-icon type="delete" />删除
             </a-button> -->
-            <a-button
+            <!-- <a-button
               type="dashed"
               @click="$refs.importExcel.importExcelHandleOpen()"
               v-hasPermi="['system:user:import']"
             >
-              <a-icon type="import" />导入
-            </a-button>
+              <a-icon type="import" />导1
+            </a-button> -->
             <a-button type="primary" @click="handleExport" v-hasPermi="['system:user:export']">
               <a-icon type="download" />导出
             </a-button>
@@ -344,9 +344,9 @@ export default {
       this.single = selectedRowKeys.length !== 1
       this.multiple = !selectedRowKeys.length
     },
-    toggleAdvanced() {
-      this.advanced = !this.advanced
-    },
+    // toggleAdvanced() {
+    //   this.advanced = !this.advanced
+    // },
     clickDeptNode(deptId) {
       this.queryParam.deptId = deptId
       this.handleQuery()

+ 1 - 1
src/views/system/user/modules/DeptTree.vue

@@ -87,7 +87,7 @@ export default {
     },
     // 节点单击事件
     handleNodeClick (keys, event) {
-      this.$emit('select', keys[0])
+      this.$emit('select1', keys[0])
     },
     onExpand (expandedKeys) {
       this.expandedKeys = expandedKeys

+ 45 - 4
src/views/system/user/modules/ResetPassword.vue

@@ -10,13 +10,14 @@
       <a-form-model-item label="用户名" prop="userName">
         <a-input v-model="form.userName" :disabled="true"/>
       </a-form-model-item>
-      <a-form-model-item has-feedback label="新密码" prop="newPassword">
+      <a-form-model-item  label="新密码" prop="newPassword">
         <a-input-password v-model="form.newPassword" placeholder="请输入新密码" :maxLength="20" />
       </a-form-model-item>
-      <a-form-model-item has-feedback label="确认密码" prop="confirmPassword">
+      <a-form-model-item  label="确认密码" prop="confirmPassword">
         <a-input-password v-model="form.confirmPassword" placeholder="请确认密码" :maxLength="20" />
       </a-form-model-item>
     </a-form-model>
+    <span style="font-size: 12px;display: inline-block;margin-bottom: 10px;">密码规则:<span style="color: brown;">密码中必须包含大小字母、数字、特殊字符,至少8个字符,最多16个字符。不能相同字符(如111、aaa、123、abc)连续3位或3位以上!</span></span>
   </a-modal>
 </template>
 <script>
@@ -31,7 +32,7 @@ export default {
       if (value === '') {
         callback(new Error('请输入新密码'))
       } else if (!/^(?![\d]+$)(?![a-zA-Z]+$)(?![^\da-zA-Z]+$)([^\u4e00-\u9fa5\s]){5,20}$/.test(value)) {
-        callback(new Error('请输入5-20位英文字母、数字或者符号(除空格),且字母、数字和标点符号至少包含两种'))
+        callback(new Error('密码中必须包含大小字母、数字、特殊字符,至少8个字符,最多16个字符。不能相同字符(如111、aaa、123、abc)连续3位或3位以上!'))
       } else {
         if (this.form.confirmPassword !== '') {
           this.$refs.form.validateField('confirmPassword')
@@ -87,15 +88,55 @@ export default {
     handleResetPwd (row) {
       this.form = {
         userId: row.userId,
-        userName: row.userName
+        userName: row.nickName
       }
       this.open = true
     },
+    LxStr(str) {
+      var arr = str.split("");
+      var flag = true;
+      for (var i = 1; i < arr.length - 1; i++) {
+        var firstIndex = arr[i - 1].charCodeAt();
+        var secondIndex = arr[i].charCodeAt();
+        var thirdIndex = arr[i + 1].charCodeAt();
+        thirdIndex - secondIndex == 1;
+        secondIndex - firstIndex == 1;
+        if (thirdIndex - secondIndex == 1 && secondIndex - firstIndex == 1) {
+          flag = false;
+        }
+      }
+      if (!flag) {
+        this.$message.error("密码不能连续字符(如123、abc)连续3位或3位以上");
+        return flag;
+      }
+      return flag;
+    },
     /** 重置密码按钮操作 */
     submitForm: function () {
       this.$refs.form.validate(valid => {
         if (valid) {
           this.submitLoading = true
+          var regex = new RegExp(
+              "(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z])(?=.*[^a-zA-Z0-9]).{8,16}"
+            );
+            var re = /(\w)*(\w)\2{2}(\w)*/g;
+            if (!regex.test(this.form.newPassword)) {
+              this.submitLoading = false
+              return this.$message.error(
+                "您的密码复杂度太低,请仔细查看密码规则"
+              );
+            }
+            if (re.test(this.form.newPassword)) {
+              this.submitLoading = false
+              return this.$message.error(
+                "您的密码复杂度太低,请勿输入3个及3个以上相同字符"
+              );
+            }
+            if (!this.LxStr(this.form.newPassword)) {
+              this.submitLoading = false
+              return;
+            }
+           
           resetUserPwd(this.form.userId, this.form.newPassword).then(response => {
             this.$message.success(
               '重置成功',

+ 4 - 4
src/views/user/Login.vue

@@ -13,12 +13,12 @@
       />
       <div class="from-info">
         <a-form-model-item prop="username">
-          <a-input v-model="form.username" size="large" placeholder="账户: admin">
+          <a-input v-model="form.username" size="large" placeholder="请输入">
             <a-icon slot="prefix" type="user" :style="{ color: '#0BA1F8' }" />
           </a-input>
         </a-form-model-item>
         <a-form-model-item prop="password">
-          <a-input-password v-model="form.password" size="large" placeholder="密码: admin123">
+          <a-input-password v-model="form.password" size="large" placeholder="请输入">
             <a-icon slot="prefix" type="lock" :style="{ color: '#0BA1F8' }" />
           </a-input-password>
         </a-form-model-item>
@@ -71,8 +71,8 @@ export default {
       isLoginError: false,
       loginErrorInfo: '',
       form: {
-        username: 'admin',
-        password: 'admin123',
+        username: '',
+        password: '',
         code: undefined,
         uuid: '',
         rememberMe: false

+ 44 - 26
src/views/vehicle/components/FuelRanking.vue

@@ -3,11 +3,11 @@
     <div>
       <div class="fuel"></div>
       <div class="list">
-        <div style="text-align: right; color: #8abfdc; font-size: 14px; margin: 10px 20px 10px 0;cursor:pointer;">
+        <!-- <div style="text-align: right; color: #8abfdc; font-size: 14px; margin: 10px 20px 10px 0;cursor:pointer;">
           <span @click="changeType('CURRENT_YEAR')" :class="addClass('CURRENT_YEAR')">年份</span>
           <span style="margin: 0 15px" @click="changeType('CURRENT_MONTH')" :class="addClass('CURRENT_MONTH')">月份</span>
           <span @click="changeType('CURRENT_WEEK')" :class="addClass('CURRENT_WEEK')">每周</span>
-        </div>
+        </div> -->
         <!-- 表格 -->
         <div>
           <div class="row header">
@@ -18,14 +18,14 @@
           </div>
           <ul style="padding-left: 0">
             <li class="row textw" v-for="(item, index) in listStatistics" :key="index">
-              <span class="type" style="text-align:center;width: 10px;margin-left: -15px;">{{ item.rank }}</span>
-              <span class="count" style="text-align:center; width: 80px;margin-left: -26px;">{{ item.name }}</span>
-              <span class="time" style="text-align:center; width: 30px;margin-left: -26px;">{{ item.value }}</span>
-              <span class="unit" style="text-align:center; width: 40px;margin-right: -20px;">
-                <img v-if="item.changeRank>0" src="../../../assets/vehicle/Vector (6).png" />
-                <img v-else-if="item.changeRank<0" src="../../../assets/vehicle/Vector (5).png" />
-                <span v-if="item.changeRank!=0">{{ Math.abs(item.changeRank) }}</span>
-                <span v-if="item.changeRank==0">-</span>
+              <span class="type" style="text-align: center; width: 10px; margin-left: -15px">{{ item.rank }}</span>
+              <span class="count" style="text-align: center; width: 80px; margin-left: -26px">{{ item.name }}</span>
+              <span class="time" style="text-align: center; width: 30px; margin-left: -26px">{{ item.value }}</span>
+              <span class="unit" style="text-align: center; width: 40px; margin-right: -20px">
+                <img v-if="item.changeRank > 0" src="../../../assets/vehicle/Vector (6).png" />
+                <img v-else-if="item.changeRank < 0" src="../../../assets/vehicle/Vector (5).png" />
+                <span v-if="item.changeRank != 0">{{ Math.abs(item.changeRank) }}</span>
+                <span v-if="item.changeRank == 0">-</span>
               </span>
             </li>
           </ul>
@@ -40,30 +40,49 @@ import fuelEchart from './fuelEchart'
 import { getFuelConsumptionRanking } from '@/api/vehicle.js'
 export default {
   components: { fuelEchart },
+  props: { itemsTime: String ,selt:Number},
   data() {
     return {
       type: 'CURRENT_YEAR',
       listStatistics: [],
+      categoryId:3
     }
   },
-  methods: {
-    changeType(val) {
-      this.type = val
-      this.funFuelConsumptionRankings()
-    },
-    addClass(ev){
-      return ev==this.type ? "active"
-        : "";
+  watch: {
+    itemsTime: {
+      handler(val) {
+        this.type = val
+        this.funFuelConsumptionRankings()
+      },
+      immediate: true,
+      deep: true,
     },
+    selt:{
+      handler(val) {
+        this.categoryId = val
+        this.funFuelConsumptionRankings()
+      },
+      immediate: true,
+      deep: true,
+    }
+  },
+  methods: {
+    // changeType(val) {
+    //   this.type = val
+    //   this.funFuelConsumptionRankings()
+    // },
+    // addClass(ev) {
+    //   return ev == this.type ? 'active' : ''
+    // },
     funFuelConsumptionRankings() {
-      getFuelConsumptionRanking({ type: this.type }).then((res) => {
+      getFuelConsumptionRanking({ type: this.type,categoryId:this.categoryId }).then((res) => {
         this.listStatistics = res.data
       })
     },
   },
-  created() {
-    this.funFuelConsumptionRankings()
-  },
+  // created() {
+  //   this.funFuelConsumptionRankings()
+  // },
 }
 </script>
 
@@ -129,7 +148,7 @@ export default {
         display: inline-block;
         width: 11px;
         height: 16px;
-        margin-right:4px;
+        margin-right: 4px;
         //   margin-left: 5px;
       }
     }
@@ -154,8 +173,7 @@ export default {
   //  margin-right: 20px;
   // }
 }
-.active{
-  color:#fff ;
-  
+.active {
+  color: #fff;
 }
 </style>

+ 60 - 27
src/views/vehicle/components/FuelRegistration.vue

@@ -3,15 +3,16 @@
     <div>
       <div class="fuel"></div>
       <div class="list">
-        <div style="text-align: right; color: #8abfdc; font-size: 14px; margin: 10px 20px 10px 0">
+        <!-- <div style="text-align: right; color: #8abfdc; font-size: 14px; margin: 10px 20px 10px 0">
           <span @click="changeType('CURRENT_YEAR')" :class="addClass('CURRENT_YEAR')">年份</span>
           <span style="margin: 0 15px" @click="changeType('CURRENT_MONTH')" :class="addClass('CURRENT_MONTH')">月份</span>
           <span  @click="changeType('CURRENT_WEEK')" :class="addClass('CURRENT_WEEK')">每周</span>
-        </div>
+        </div> -->
         <!-- 表格 -->
-        <div>
+        <div style="margin-top: 20px" v-if="listStatistics.length > 0">
           <fuelEchart :listStatistics="listStatistics" />
         </div>
+        <img class="null-imgs" v-if="listStatistics.length == 0" src="../../../assets/vehicle/null-img.png" alt="" />
       </div>
     </div>
   </div>
@@ -19,33 +20,58 @@
 
 <script>
 import fuelEchart from './fuelEchart'
-import {getFuelConsumptionStatistics} from '@/api/vehicle.js'
+import { getFuelConsumptionStatistics } from '@/api/vehicle.js'
 export default {
   components: { fuelEchart },
-  data(){
-    return{
-      type:'CURRENT_YEAR',
-      listStatistics:[]
+  props: { itemsTime: String,selt:Number },
+  data() {
+    return {
+      type: 'CURRENT_YEAR',
+      listStatistics: [],
+      categoryId:3
     }
   },
-  methods:{
-    changeType(val){
-      this.type=val
-      this.funFuelConsumptionRanking()
-    },
-    addClass(ev){
-      return ev==this.type ? "active"
-        : "";
+  watch: {
+    itemsTime: {
+      handler(val) {
+        this.type = val
+        this.funFuelConsumptionRanking()
+      },
+      immediate: true,
+      deep: true,
     },
-    funFuelConsumptionRanking(){
-      getFuelConsumptionStatistics({type:this.type}).then(res=>{
-        this.listStatistics=res.data
-      })
+    selt:{
+      handler(val) {
+        this.categoryId = val
+        this.funFuelConsumptionRanking()
+      },
+      immediate: true,
+      deep: true,
     }
   },
-  created(){
-    this.funFuelConsumptionRanking()
-  }
+  methods: {
+    // changeType(val){
+    //   this.type=val
+    //   this.funFuelConsumptionRanking()
+    // },
+    // addClass(ev){
+    //   return ev==this.type ? "active"
+    //     : "";
+    // },
+    funFuelConsumptionRanking() {
+      getFuelConsumptionStatistics({ type: this.type,categoryId:this.categoryId}).then((res) => {
+        let list = res.data.some((item) => item.value > 0)
+        if (list) {
+          this.listStatistics = res.data
+        } else {
+          this.listStatistics = []
+        }
+      })
+    },
+  },
+  // created() {
+  //   this.funFuelConsumptionRanking()
+  // },
 }
 </script>
 
@@ -53,7 +79,8 @@ export default {
 .fuel {
   width: 443px;
   height: 50px;
-  background: url('../../../assets/vehicle/tj.png') no-repeat;
+  // background: url('../../../assets/vehicle/tj.png') no-repeat;
+  background: url('../../../assets/vehicle/jyje.png') no-repeat;
   margin-top: 15px;
 }
 .list {
@@ -61,7 +88,7 @@ export default {
   height: 387px;
   border: 1px solid #00aaff;
   margin-top: 10px;
-  cursor:pointer;
+  cursor: pointer;
   .header {
     color: #61dbff !important;
     height: 38px !important;
@@ -78,7 +105,13 @@ export default {
     }
   }
 }
-.active{
-  color:#fff;
+.active {
+  color: #fff;
+}
+.null-imgs {
+  display: inline-block;
+  width: 160px;
+  height: 160px;
+  margin: 100px 0 0 140px;
 }
 </style>

+ 125 - 0
src/views/vehicle/components/RefuelingStatistics.vue

@@ -0,0 +1,125 @@
+<template>
+  <div style="display: flex; margin-top: 16px">
+    <div style="display: flex">
+      <img class="imgs" src="../../../assets/vehicle/icon (1).png" alt="" />
+      <div class="zyh">
+        <div class="zyh-num">
+          <div>
+            <span style="color: #e4c312; font-size: 26px; margin-right: 6px">{{ statisticsInfo?.totalLitres?statisticsInfo.totalLitres:0 }}</span>
+            <span style="color: rgba(255, 255, 255, 0.6)">L</span>
+          </div>
+          <div>总油耗</div>
+        </div>
+        <div style="display: flex; justify-content: space-between; margin-top: 6px">
+          <div>
+            <span>92#汽油:</span>
+            <span>{{ list[3]?.value }}L</span>
+          </div>
+          <div>
+            <span>95#汽油:</span>
+            <span>{{ list[2]?.value }}L</span>
+          </div>
+          <div>
+            <span>98#汽油:</span>
+            <span>0L</span>
+          </div>
+          <div>
+            <span>柴油:</span>
+            <span>{{ list[1]?.value }}L</span>
+          </div>
+        </div>
+      </div>
+    </div>
+    <div style="display: flex; margin: 0 29px">
+      <img class="imgs" src="../../../assets/vehicle/icon (2).png" alt="" />
+      <div class="zje-num">
+        <span style="color: #e4c312; font-size: 26px">{{
+          statisticsInfo?.totalAmount ? statisticsInfo.totalAmount : 0
+        }}</span>
+        <span style="color: rgba(255, 255, 255, 0.6); margin-left: 5px">元</span>
+        <div>油耗总金额</div>
+      </div>
+    </div>
+    <div style="display: flex">
+      <img class="imgs" src="../../../assets/vehicle/icon (3).png" alt="" />
+      <div class="zje-num" style="margin-left: 6px">
+        <span style="color: #e4c312; font-size: 26px">{{ statisticsInfo?.totalCar ? statisticsInfo.totalCar : 0 }}</span>
+        <span style="color: rgba(255, 255, 255, 0.6); margin-left: 80px">辆</span>
+        <div>车辆总数</div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import { getSelectCarFuelStatistics } from '@/api/vehicle.js'
+export default {
+  props: { itemsTime: String, selt: Number },
+  data() {
+    return {
+      type: 'CURRENT_YEAR',
+      list: [],
+      categoryId: 3,
+      statisticsInfo: null,
+    }
+  },
+  watch: {
+    itemsTime: {
+      handler(val) {
+        this.type = val
+        this.funSelectCarFuelStatistics()
+      },
+      immediate: true,
+      deep: true,
+    },
+    selt: {
+      handler(val) {
+        this.categoryId = val
+        this.funSelectCarFuelStatistics()
+      },
+      immediate: true,
+      deep: true,
+    },
+  },
+  methods: {
+    //车辆总油量
+    funSelectCarFuelStatistics() {
+      getSelectCarFuelStatistics({ type: this.type, categoryId: this.categoryId }).then((res) => {
+        this.list = res.data.totalLitresItems
+        this.statisticsInfo = res.data
+      })
+    },
+  },
+}
+</script>
+
+<style lang="less" scoped>
+.zyh {
+  width: 389px;
+  height: 63px;
+  background: linear-gradient(180deg, rgba(4, 36, 74, 0) 0%, rgba(36, 104, 184, 0.2) 100%);
+  color: #fff;
+  font-family: PingFang SC;
+  font-size: 12px;
+  font-style: normal;
+  font-weight: 400;
+  line-height: 24px; /* 200% */
+  padding: 0 10px;
+  .zyh-num {
+    display: flex;
+    justify-content: space-between;
+  }
+}
+.zje-num {
+  width: 156px;
+  height: 63px;
+  background: linear-gradient(180deg, rgba(4, 36, 74, 0) 0%, rgba(36, 104, 184, 0.2) 100%);
+  margin-left: 6px;
+  color: #fff;
+}
+.imgs {
+  display: inline-block;
+  width: 52px;
+  height: 63px;
+}
+</style>

+ 2 - 1
src/views/vehicle/components/fuelEchart.vue

@@ -46,6 +46,7 @@ export default {
           //   top: '15%',
           left: '15%',
           bottom: '10%',
+          top:'14%'
         },
         xAxis: {
           // data: ['两江支队', '鸳鸯站', '大竹林站', '礼嘉站', '翠云站', '龙头寺站'],
@@ -67,7 +68,7 @@ export default {
           },
         },
         yAxis: {
-          name: '()',
+          name: '()',
           nameTextStyle: {
             color: '#fff',
             fontSize: 16,

+ 135 - 39
src/views/vehicle/index.vue

@@ -19,11 +19,21 @@
             </div>
           </div>
         </div>
+        <div class="selt">
+          <a-select style="width: 160px" placeholder="请选择" v-model="selt">
+            <a-select-option v-for="(d, index) in typeList" :key="index" :value="d.value">{{
+              d.lable
+            }}</a-select-option>
+          </a-select>
+        </div>
+        <div class="yh-info">
+          <RefuelingStatistics :itemsTime="itemsTime" :selt="selt" />
+        </div>
         <div class="main">
           <div class="right-box">
-            <FuelRanking />
+            <FuelRanking :itemsTime="itemsTime" :selt="selt" />
             <div>
-              <FuelRegistration />
+              <FuelRegistration :itemsTime="itemsTime" :selt="selt" />
             </div>
           </div>
           <div class="main-box">
@@ -38,10 +48,10 @@
             <div class="main-tab">
               <img class="tab-left" src="../../assets/vehicle/left.png" alt="" @click="changeTab('油卡分配')" />
               <span class="tab-text">{{ text }}</span>
-              <img class="tab-right" src="../../assets/vehicle/right.png" alt="" @click="changeTab('消防车辆分配')"  />
+              <img class="tab-right" src="../../assets/vehicle/right.png" alt="" @click="changeTab('消防车辆分配')" />
             </div>
-            <unit3D v-if="text=='油卡分配'" :fierList="fierList" />
-            <unit3Ds v-else-if="text=='消防车辆分配'" :carsList2="carsList2"/>
+            <unit3D v-if="text == '油卡分配'" :fierList="fierList" />
+            <unit3Ds v-else-if="text == '消防车辆分配'" :carsList2="carsList2" />
             <div class="right-car">
               <div style="display: flex; justify-content: space-around; margin-top: 8px">
                 <span style="color: #70fffd; font-size: 20px">消防车辆分配</span>
@@ -58,6 +68,12 @@
             </div>
           </div>
         </div>
+        <div class="can-set">
+          <div @click="changeTime('CURRENT_WEEK')" :class="addChangeTime('CURRENT_WEEK')">本周</div>
+          <div @click="changeTime('CURRENT_MONTH')" :class="addChangeTime('CURRENT_MONTH')">本月</div>
+          <div @click="changeTime('CURRENT_YEAR')" :class="addChangeTime('CURRENT_YEAR')">本年</div>
+          <div @click="changeTime('ALL')" :class="addChangeTime('ALL')">全部</div>
+        </div>
       </div>
     </div>
   </div>
@@ -74,7 +90,13 @@ import unit3D from './components/unit3D'
 import cardDistribution from './components/cardDistribution'
 import VehicleCarAllocation from './components/VehicleCarAllocation'
 import unit3Ds from './unit3Ds'
-import {getAllocationForCar,getTypeProportionForCar,getDistributionForFuelCard,getDistributionForCar} from '@/api/vehicle.js'
+import RefuelingStatistics from './components/RefuelingStatistics.vue'
+import {
+  getAllocationForCar,
+  getTypeProportionForCar,
+  getDistributionForFuelCard,
+  getDistributionForCar,
+} from '@/api/vehicle.js'
 export default {
   mixins: [drawMixin],
   components: {
@@ -85,7 +107,8 @@ export default {
     unit3D,
     cardDistribution,
     VehicleCarAllocation,
-    unit3Ds
+    unit3Ds,
+    RefuelingStatistics,
   },
   data() {
     return {
@@ -94,14 +117,29 @@ export default {
       dateDay: null,
       weekday: ['周日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'],
       loading: true,
-      fierList: [
+      fierList: [],
+      carsList2: [],
+      text: '消防车辆分配',
+      allocationList: [],
+      carTypeLists: [],
+      yCardList: [],
+      dataList: [],
+      typeList: [
+        {
+          lable: '全部',
+          value: 3,
+        },
+        {
+          lable: '消防车',
+          value: 1,
+        },
+        {
+          lable: '公务车',
+          value: 2,
+        },
       ],
-      carsList2:[],
-      text:'消防车辆分配',
-      allocationList:[],
-      carTypeLists:[],
-      yCardList:[],
-      dataList:[],
+      selt:3,
+      itemsTime:'CURRENT_WEEK'
     }
   },
   mounted() {
@@ -119,13 +157,13 @@ export default {
         this.dateWeek = this.weekday[new Date().getDay()]
       }, 1000)
     },
-    changeTab(val){
-        if(val=='油卡分配'){
-          this.fierList=this.yCardList
-        }else if(val=='消防车辆分配'){
-          this.carsList2=this.allocationList
-        }
-        this.text=val
+    changeTab(val) {
+      if (val == '油卡分配') {
+        this.fierList = this.yCardList
+      } else if (val == '消防车辆分配') {
+        this.carsList2 = this.allocationList
+      }
+      this.text = val
     },
     cancelLoading() {
       setTimeout(() => {}, 500)
@@ -133,37 +171,43 @@ export default {
     toManage() {
       this.$router.push({ path: '/cardiot' })
     },
-    funAllocationForCar(){
-      getAllocationForCar().then(res=>{
+    funAllocationForCar() {
+      getAllocationForCar().then((res) => {
         // console.log('--------油卡分配',res);
-        this.allocationList=res.data
-    
-        this.carsList2=this.allocationList
+        this.allocationList = res.data
+
+        this.carsList2 = this.allocationList
       })
     },
-    funTypeProportionForCar(){
-      getTypeProportionForCar().then(res=>{
-        this.carTypeLists=res.data
+    funTypeProportionForCar() {
+      getTypeProportionForCar().then((res) => {
+        this.carTypeLists = res.data
       })
     },
-    funDistributionForFuelCard(){
-      getDistributionForFuelCard().then(res=>{
-        this.yCardList=res.data
-        this.fierList=this.yCardList
+    funDistributionForFuelCard() {
+      getDistributionForFuelCard().then((res) => {
+        this.yCardList = res.data
+        this.fierList = this.yCardList
       })
     },
-    funDistributionForCar(){
-      getDistributionForCar().then(res=>{
-        this.dataList=res.data
+    funDistributionForCar() {
+      getDistributionForCar().then((res) => {
+        this.dataList = res.data
       })
-    }
+    },
+    changeTime(val){
+      this.itemsTime=val
+    },
+    addChangeTime(ev){
+      return this.itemsTime==ev?'active':''
+    },
   },
-  created(){
+  created() {
     this.funAllocationForCar()
     this.funTypeProportionForCar()
     this.funDistributionForFuelCard()
     this.funDistributionForCar()
-  }
+  },
 }
 </script>
 
@@ -306,5 +350,57 @@ export default {
       height: 980px;
     }
   }
+  .selt {
+    position: absolute;
+    left: 65%;
+    top: 11%;
+    z-index: 999999;
+    /deep/.ant-select-selection--single {
+      width: 180px;
+      stroke-width: 1px;
+      background: rgba(0, 163, 255, 0.3);
+      height: 45px;
+      color: #70fffd;
+      font-size: 20px;
+      text-align: center;
+    }
+    /deep/.ant-select-arrow .ant-select-arrow-icon {
+      font-size: 18px;
+      color: #70fffd;
+    }
+    /deep/.ant-select-selection__rendered {
+      left: 55px;
+      line-height: 39px;
+    }
+  }
+  .yh-info {
+    position: absolute;
+    top: 16%;
+    left: 26%;
+  }
+  .can-set {
+    position: absolute;
+    bottom: 10%;
+    left: 70%;
+    text-align: center;
+    text-shadow: 0px 2px 6px #001751;
+    font-family: '仿宋';
+    font-size: 22px;
+    font-style: normal;
+    font-weight: 600;
+    line-height: 38px; /* 172.727% */
+    letter-spacing: 0.88px;
+    color: #cae2ff;
+    cursor: pointer;
+  }
+}
+.active{
+  width: 107px;
+  height: 51px;
+  background: url('../../assets/vehicle/xz-btn.png') no-repeat;
+  background-size: 100% 100%;
+  text-align: center;
+  color: rgba(252, 255, 126, 0.95);
+  line-height: 51px;
 }
 </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://172.20.16.92:8080/`,
+        // target: `http://113.249.153.164:7618/api`,
+        target:`http://172.20.16.92:8080/`,
         changeOrigin: true,
         pathRewrite: {
           ['^' + process.env.VUE_APP_BASE_API]: ''