panxiandiao_i 5 年 前
コミット
0d29fedb3f

+ 13 - 4
src/api/HMvehicle.js

@@ -4,7 +4,7 @@ import { HMvehicleUrl } from '@/apiConfig/api'
 // 创建设备/激活设备
 export function createHmVirtualDevice(params) {
   return request({
-    url: HMvehicleUrl + '/hm/createDevice',
+    url: HMvehicleUrl + '/virtual-devices/hm/createDevice',
     method: 'get',
     params
   })
@@ -13,7 +13,7 @@ export function createHmVirtualDevice(params) {
 // 查询设备信息
 export function queryDeviceInfo(params) {
   return request({
-    url: HMvehicleUrl + '/hm/queryDeviceInfo',
+    url: HMvehicleUrl + '/virtual-devices/hm/queryDeviceInfo',
     method: 'get',
     params
   })
@@ -22,7 +22,7 @@ export function queryDeviceInfo(params) {
 // 删除设备
 export function delHmVirtualDevice(params) {
   return request({
-    url: HMvehicleUrl + '/hm/delDevice',
+    url: HMvehicleUrl + '/virtual-devices/hm/delDevice',
     method: 'get',
     params
   })
@@ -31,7 +31,16 @@ export function delHmVirtualDevice(params) {
 // 下线设备
 export function offHmvirtualDevice(params) {
   return request({
-    url: HMvehicleUrl + '/hm/offDevice',
+    url: HMvehicleUrl + '/virtual-devices/hm/offDevice',
+    method: 'get',
+    params
+  })
+}
+
+// 更新锁状态
+export function updateLockStatus(params) {
+  return request({
+    url: HMvehicleUrl + '/virtual-devices/hm/updateLockStatus',
     method: 'get',
     params
   })

+ 1 - 1
src/apiConfig/api.js

@@ -6,4 +6,4 @@ export const mockUrl = 'http://10.179.24.176:8980' // 线下
 
 export const qualityUrl = 'http://10.179.209.19:8898' // 质量度量
 
-export const HMvehicleUrl = 'http://172.23.161.59:9999' // 电单车
+export const HMvehicleUrl = 'http://172.23.161.208:9999' // 电单车

+ 9 - 8
src/views/quality/qualityMeasurement.vue

@@ -1,6 +1,7 @@
 
 <template>
-  <el-container v-loading.fullscreen.lock="loadingOnlineProcess" element-loading-background="rgba(0, 0, 0, 0.7)" element-loading-text="拼命加载中" class="set-background">
+  <!-- <el-container v-loading.fullscreen.lock="loadingOnlineProcess" element-loading-background="rgba(0, 0, 0, 0.7)" element-loading-text="拼命加载中" class="set-background"> -->
+  <el-container class="set-background">
     <el-header class="header">
       <el-menu :default-active="activeIndex" active-text-color="#409EFF" mode="horizontal" @select="handleSelect">
         <el-menu-item index="0">业务线数据</el-menu-item>
@@ -402,8 +403,8 @@ import { getBusiness, getDepartment, getOnlineProblem, getOnlineAllCount, getOnl
 export default {
   filters: {
     toPercent(value) {
-      if (value === 0) {
-        return 0
+      if (!value) {
+        return
       } else {
         return Number(value * 100).toFixed(2) + '%'
       }
@@ -438,10 +439,10 @@ export default {
       this.loadingOnlineProcess = true
       await getBusiness().then(res => {
         this.businessData = res.code === 0 ? res.data : ''
-        const processFunc = (arr) => { // models和child
+        const processFunc = (arr) => { // modules和child
           arr.forEach((each) => {
-            if (each.models.length !== 0) {
-              each.child = each.models
+            if (each.modules) {
+              each.child = each.modules
             } else {
               each.child = processFunc(each.child)
             }
@@ -498,7 +499,7 @@ export default {
       if (!this.pauseTreeNode.child) {
         this.pauseKey = 1
       }
-      if (this.pauseTreeNode.models) {
+      if (this.pauseTreeNode.modules) {
         this.pauseKey = 0
       }
       this.allCountAndProlemGet()
@@ -560,7 +561,7 @@ export default {
     .combine-table >>> .is-active
       font-weight bold
     .combine-table >>> th
-      background-color #F0F7FF !important
+      background-color #F1F4F7 !important
       font-size 10px
     .combine-table >>> .move-border-top
       border-top 0px

+ 1 - 1
src/views/quality/qualityProcess.vue

@@ -165,7 +165,7 @@ export default {
           display flex
           justify-content space-around
     .block >>> th
-      background-color #F0F7FF !important
+      background-color #F1F4F7 !important
       font-size 10px
     .block >>> .el-table__body-wrapper  .cell
       font-size 10px

+ 126 - 39
src/views/virtualDevices/HMvehicle.vue

@@ -7,18 +7,18 @@
           <el-form :model="queryCode">
             <div class="set-between">
               <div class="special-input">
-                <el-input v-model="queryCode.creator" placeholder="车辆ID" clearable />
-                <el-input v-model="queryCode.creator" placeholder="ECUID" clearable />
-                <el-input v-model="queryCode.creator" placeholder="车辆类型" clearable />
+                <el-input v-model="queryCode.vehicleId" placeholder="车辆ID" clearable />
+                <el-input v-model="queryCode.ecuId" placeholder="ECUID" clearable />
+                <el-input v-model="queryCode.vehicleVersion" placeholder="车辆类型" clearable />
               </div>
               <div class="special-input-chose">
-                <el-select v-model="queryCode.bizId" placeholder="锁状态">
-                  <el-option v-for="item in bizOptions" :key="item.id" :label="item.name" :value="item.id" />
+                <el-select v-model="queryCode.lockStatus" placeholder="锁状态" clearable>
+                  <el-option v-for="item in lockOptions" :key="item.lockStatus" :label="item.name" :value="item.lockStatus" />
                 </el-select>
-                <el-select v-model="queryCode.bizId" placeholder="链接状态">
-                  <el-option v-for="item in bizOptions" :key="item.id" :label="item.name" :value="item.id" />
+                <el-select v-model="queryCode.isActive" placeholder="链接状态" clearable>
+                  <el-option v-for="item in linkOptions" :key="item.isActive" :label="item.name" :value="item.isActive" />
                 </el-select>
-                <el-select v-model="form.name" filterable placeholder="城市">
+                <el-select v-model="queryCode.name" filterable placeholder="城市" clearable>
                   <el-option
                     v-for="item in city"
                     :key="item.CityID"
@@ -47,18 +47,19 @@
                 width="50"
               />
               <el-table-column
-                prop="date"
+                prop="vehicleId"
                 label="车辆ID"
                 align="center"
+                width="95"
               />
               <el-table-column
-                prop="gitProject"
+                prop="vehicleVersion"
                 label="车辆类型"
                 align="center"
                 width="70"
               />
               <el-table-column
-                prop="handler"
+                prop="ecuId"
                 label="ECUID"
                 align="center"
               />
@@ -69,48 +70,48 @@
               >
                 <template slot-scope="scope">
                   <el-tag
-                    :type="scope.row.tag === '王小虎' ? 'success' : 'danger'"
+                    :type="scope.row.lockStatus === 1 ? 'success' : 'danger'"
                     disable-transitions
-                  >{{ scope.row.name }}</el-tag>
+                  >{{ scope.row.lockStatus | toLockStatus }}</el-tag>
                 </template>
               </el-table-column>
               <el-table-column
-                prop="isGoPre"
                 label="链接状态"
                 align="center"
                 width="80"
               >
                 <template slot-scope="scope">
                   <el-tag
-                    :type="scope.row.tag === '王小虎' ? 'success' : 'danger'"
+                    :type="scope.row.isActive === 1 ? 'success' : 'danger'"
                     disable-transitions
-                  >{{ scope.row.name }}</el-tag>
+                  >{{ scope.row.isActive | toActiveStatus }}</el-tag>
                 </template>
               </el-table-column>
               <el-table-column
-                prop="onlineDate"
                 label="激活时间"
                 align="center"
-              />
+              >
+                <template slot-scope="scope">{{ scope.row.gmtActive | toData }}</template>
+              </el-table-column>
               <el-table-column
                 label="操作"
                 align="center"
                 width="300"
               >
-                <template>
+                <template slot-scope="scope">
                   <div class="specail-lock">
-                    <div class="el-icon-lock" />
+                    <div :class="{ 'el-icon-lock': scope.row.lockStatus === 0 ,'el-icon-unlock': scope.row.lockStatus === 1}" @click="updateLock(scope.row.ecuId, scope.row.lockStatus)" />
                     <div>
-                      <el-button size="mini" type="success" plain>激活</el-button>
-                      <el-button size="mini" type="info" plain>下线</el-button>
-                      <el-button size="mini" type="danger">删除</el-button>
+                      <el-button size="mini" type="success" plain @click="activate(scope.row.ecuId, scope.row.vehicleId, scope.row.batteryId, scope.row.imsi, scope.row.imei, scope.row.vehicleVersion, scope.row.cityName)">激活</el-button>
+                      <el-button size="mini" type="info" plain @click="offHmvirtual(scope.row.ecuId)">下线</el-button>
+                      <el-button size="mini" type="danger" @click="delHmVirtual(scope.row.ecuId)">删除</el-button>
                       <el-button size="mini" type="primary">...</el-button>
                     </div>
                   </div>
                 </template>
               </el-table-column>
             </el-table>
-            <el-pagination background style="margin-top:30px;" align="center" :current-page="curIndex" :page-size="pageSize" layout="prev, pager, next" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
+            <el-pagination background style="margin-top:30px;" align="center" :current-page="curIndex" :page-size="pageSize" layout="prev, pager, next" :total="total" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
           </div>
         </div>
       </div>
@@ -120,27 +121,52 @@
 
 <script>
 import { cityJson } from '@/views/virtualDevices/city'
-import { createHmVirtualDevice, queryDeviceInfo, delHmVirtualDevice, offHmvirtualDevice } from '@/api/HMvehicle'
+import { createHmVirtualDevice, queryDeviceInfo, delHmVirtualDevice, offHmvirtualDevice, updateLockStatus } from '@/api/HMvehicle'
 
 export default {
+  filters: {
+    toLockStatus(e) {
+      return e === 0 ? '未开启' : '已开启'
+    },
+    toActiveStatus(e) {
+      return e === 0 ? '未激活' : '已激活'
+    },
+    toData(time) {
+      const standard = new Date(time)
+      const result = standard.getFullYear() + '-' + (standard.getMonth() + 1) + '-' + standard.getDate() + ' ' + standard.getHours() + ':' + standard.getMinutes() + ':' + standard.getSeconds()
+      return result
+    }
+  },
   data() {
     return {
-      tableData: [{
-        id: '1',
-        date: '2016-05',
-        name: '王小虎'
-      }, {
-        id: '2',
-        date: '2016-05',
-        name: '王小虎'
-      }],
+      tableData: [],
       form: {},
-      bizOptions: [],
       queryCode: {},
       curIndex: 1,
       pageSize: 20,
+      total: 0,
       city: cityJson,
-      value: ''
+      value: '',
+      lockOptions: [
+        {
+          name: '未开启',
+          lockStatus: 0
+        },
+        {
+          name: '已开启',
+          lockStatus: 1
+        }
+      ],
+      linkOptions: [
+        {
+          name: '未激活',
+          isActive: 0
+        },
+        {
+          name: '已激活',
+          isActive: 1
+        }
+      ]
     }
   },
   created() {
@@ -152,6 +178,9 @@ export default {
   methods: {
     _queryDeviceInfo() {
       const params = { page: this.curIndex, pageSize: this.pageSize }
+      queryDeviceInfo(params).then(res => {
+        res.success === 1 ? this.tableData = res.data : this.errorFun('initialization')
+      })
     },
     initWindow() {
       if (!document.getElementById('window-judge')) {
@@ -161,6 +190,12 @@ export default {
       }
     },
     dataQuery(queryCode) {
+      queryCode.page = this.curIndex
+      queryCode.pageSize = this.pageSize
+      queryDeviceInfo(queryCode).then(res => {
+        res.success === 1 ? this.tableData = res.data : this.errorFun()
+        console.log(this.tableData)
+      })
     },
     createdCode() {
       this.$router.push({ name: '新增电单车', params: { formData: this.form }, query: { id: this.form.id }})
@@ -170,6 +205,58 @@ export default {
     },
     handleCurrentChange(curIndex) {
       this.curIndex = curIndex
+    },
+    updateLock(ecuId, lockStatus) {
+      const params = { ecuId: ecuId, lockStatus: (lockStatus + 1) % 2 }
+      updateLockStatus(params).then(res => {
+        if (res.success === 1) {
+          this.successFun('update')
+          this._queryDeviceInfo()
+        } else {
+          this.errorFun('update')
+        }
+      })
+    },
+    activate(ecuId, vehicleId, batteryId, imsi, imei, vehicleVersion, cityName) {
+      const params = { ecuId: ecuId, vehicleId: vehicleId, batteryId: batteryId, imsi: imsi, imei: imei, vehicleVersion: vehicleVersion, cityName: cityName }
+      createHmVirtualDevice(params).then(res => {
+        if (res.success === 1) {
+          this.successFun('activate')
+          this.$nextTick(() => {
+            this._queryDeviceInfo()
+          })
+        } else {
+          this.errorFun('activate')
+        }
+      })
+    },
+    offHmvirtual(ecuId) {
+      const params = { ecuId: ecuId }
+      offHmvirtualDevice(params).then(res => {
+        if (res.success === 1) {
+          this.successFun('offLine')
+          this._queryDeviceInfo()
+        } else {
+          this.errorFun('offLine')
+        }
+      })
+    },
+    delHmVirtual(ecuId) {
+      const params = { ecuId: ecuId }
+      delHmVirtualDevice(params).then(res => {
+        if (res.success === 1) {
+          this.successFun('delete')
+          this._queryDeviceInfo()
+        } else {
+          this.errorFun('delete')
+        }
+      })
+    },
+    successFun(successText) {
+      this.$notify({ title: 'Success', message: `${successText} Successfully`, type: 'success', duration: 2000 })
+    },
+    errorFun(errorText) {
+      this.$notify({ title: 'Failed', message: `${errorText} Failed`, type: 'error', duration: 2000 })
     }
   }
 }
@@ -201,17 +288,17 @@ export default {
     .block >>> .el-form-item__content
       margin-left 0 !important
     .block >>> th
-      background-color #F0F7FF !important
+      background-color #F0F2F4 !important
     .set-between
       display flex
     .set-between >>> .el-button
       height 40px
     .set-locate
-      margin-top 20px
+      margin-top 40px
       .specail-lock
         display flex
         justify-content center
-      .el-icon-lock
+      .el-icon-lock , .el-icon-unlock
         font-size 20px
         margin 4px 7px 0 0
 </style>

+ 49 - 19
src/views/virtualDevices/HMvehicleCreate.vue

@@ -1,27 +1,27 @@
 <template>
   <div id="window-judge" class="set-background">
     <div class="block">
-      <el-form :model="form">
-        <el-form-item label="Imei" :label-width="formLabelWidth">
-          <el-input v-model="form.name" autocomplete="off" />
+      <el-form ref="form" :model="form" :rules="serviceDataRules">
+        <el-form-item label="Imei" prop="imei" :label-width="formLabelWidth">
+          <el-input v-model="form.imei" autocomplete="off" />
         </el-form-item>
-        <el-form-item label="Eculd" :label-width="formLabelWidth">
-          <el-input v-model="form.name" autocomplete="off" />
+        <el-form-item label="Eculd" prop="ecuId" :label-width="formLabelWidth">
+          <el-input v-model="form.ecuId" autocomplete="off" />
         </el-form-item>
-        <el-form-item label="VehicleId" :label-width="formLabelWidth">
-          <el-input v-model="form.name" autocomplete="off" />
+        <el-form-item label="VehicleId" prop="vehicleId" :label-width="formLabelWidth">
+          <el-input v-model="form.vehicleId" autocomplete="off" />
         </el-form-item>
-        <el-form-item label="Imsi" :label-width="formLabelWidth">
-          <el-input v-model="form.name" autocomplete="off" />
+        <el-form-item label="Imsi" prop="imsi" :label-width="formLabelWidth">
+          <el-input v-model="form.imsi" autocomplete="off" />
         </el-form-item>
-        <el-form-item label="BatteryId" :label-width="formLabelWidth">
-          <el-input v-model="form.name" autocomplete="off" />
+        <el-form-item label="BatteryId" prop="batteryId" :label-width="formLabelWidth">
+          <el-input v-model="form.batteryId" autocomplete="off" />
         </el-form-item>
-        <el-form-item label="VehicleVersion" :label-width="formLabelWidth">
-          <el-input v-model="form.name" autocomplete="off" />
+        <el-form-item label="VehicleVersion" prop="vehicleVersion" :label-width="formLabelWidth">
+          <el-input v-model="form.vehicleVersion" autocomplete="off" />
         </el-form-item>
-        <el-form-item label="City" :label-width="formLabelWidth">
-          <el-select v-model="form.name" filterable placeholder="请选择">
+        <el-form-item label="City" prop="cityName" :label-width="formLabelWidth">
+          <el-select v-model="form.cityName" filterable placeholder="请选择">
             <el-option
               v-for="item in city"
               :key="item.CityID"
@@ -31,7 +31,7 @@
           </el-select>
         </el-form-item>
         <el-form-item class="submit">
-          <el-button size="mini" type="primary">保 存</el-button>
+          <el-button size="mini" type="primary" @click="createFormData(form)">保 存</el-button>
           <el-button size="mini" type="danger" @click="$router.go(-1)">取 消</el-button>
         </el-form-item>
       </el-form>
@@ -41,6 +41,7 @@
 
 <script>
 import { cityJson } from '@/views/virtualDevices/city'
+import { createHmVirtualDevice } from '@/api/HMvehicle'
 
 export default {
   data() {
@@ -48,11 +49,40 @@ export default {
       form: {},
       formLabelWidth: '120px',
       city: cityJson,
-      value: ''
+      value: '',
+      serviceDataRules: {
+        imei: [{ required: true, message: '终端IMEI码不能为空', trigger: 'change' }],
+        ecuId: [{ required: true, message: '硬件中控ID不能为空', trigger: 'change' }],
+        vehicleId: [{ required: true, message: '车辆ID不能为空', trigger: 'change' }],
+        imsi: [{ required: true, message: '终端IMSI码不能为空', trigger: 'change' }],
+        batteryId: [{ required: true, message: '电池ID不能为空', trigger: 'change' }],
+        vehicleVersion: [{ required: true, message: '整车版本不能为空', trigger: 'change' }],
+        cityName: [{ required: true, message: '城市名称不能为空', trigger: 'change' }]
+      }
     }
   },
-  mounted() {
-    console.log(this.city)
+  methods: {
+    // 提交表单并且返回刷新
+    createFormData(form) {
+      this.$refs.form.validate((valid) => {
+        if (valid) {
+          createHmVirtualDevice(form).then(res => {
+            if (res.success === 1) {
+              this.successFun('create')
+              this.$router.go(-1)
+            } else {
+              this.errorFun('create')
+            }
+          })
+        }
+      })
+    },
+    successFun(successText) {
+      this.$notify({ title: 'Success', message: `${successText} Successfully`, type: 'success', duration: 2000 })
+    },
+    errorFun(errorText) {
+      this.$notify({ title: 'Failed', message: `${errorText} Failed`, type: 'error', duration: 2000 })
+    }
   }
 }
 </script>