Browse Source

合并master

qinzhipeng_v 5 năm trước cách đây
mục cha
commit
9b11c84ff0

+ 20 - 20
src/api/htVehicle.js

@@ -5,33 +5,33 @@ import { mockUrl } from '@/apiConfig/virtualDevices'
 // 获取锁类型、锁供应商类型
 export function queryLockCreateInfo() {
   return request({
-    url: mockUrl + '/htw/device/queryLockCreateInfo',
+    url: mockUrl + '/htw/queryLockCreateInfo',
     method: 'get'
   })
 }
 
 // 查看详情
-export function queryVehicleCreateInfo(params) {
+// export function queryVehicleCreateInfo(params) {
+//   return request({
+//     url: mockUrl + `/htw/device/queryVehicleCreateInfo?lockModel=` + params,
+//     method: 'get',
+//     params
+//   })
+// }
+
+// 获取车类型、车辆供应商类型
+export function queryVehicleCreateInfo(data) {
   return request({
-    url: mockUrl + `/htw/device/queryVehicleCreateInfo?lockModel=` + params,
+    url: mockUrl + '/htw/queryVehicleCreateInfo?lockModel=' + data,
     method: 'get',
-    params
+    data
   })
 }
 
-// 获取车类型、车辆供应商类型
-// export function queryVehicleCreateInfo(data) {
-//     return request({
-//         url: mockUrl + '/htw/device/queryVehicleCreateInfo',
-//         method: 'post',
-//         data
-//     })
-// }
-
 // 新建设备
 export function createDevice(data) {
   return request({
-    url: mockUrl + '/htw/device/createDevice',
+    url: mockUrl + '/htw/createDevice',
     method: 'post',
     data
   })
@@ -40,7 +40,7 @@ export function createDevice(data) {
 // 删除设备
 export function deleteDevice(data) {
   return request({
-    url: mockUrl + `/htw/device/deleteDevice?vehicleId=` + data,
+    url: mockUrl + `/htw/deleteDevice?vehicleId=` + data,
     method: 'get',
     data
   })
@@ -49,7 +49,7 @@ export function deleteDevice(data) {
 // 设备上线开关
 export function deviceOnline(data) {
   return request({
-    url: mockUrl + '/htw/device/opt/deviceOnline?lockNo=' + data,
+    url: mockUrl + '/htw/deviceOnline?lockNo=' + data,
     method: 'get',
     data
   })
@@ -58,7 +58,7 @@ export function deviceOnline(data) {
 // 设备下线开关
 export function deviceOffline(data) {
   return request({
-    url: mockUrl + '/htw/device/opt/deviceOffline?lockNo=' + data,
+    url: mockUrl + '/htw/deviceOffline?ecuId=' + data,
     method: 'get',
     data
   })
@@ -76,7 +76,7 @@ export function unlockVehicle(data) {
 // 设备关锁
 export function lockVehicle(data) {
   return request({
-    url: mockUrl + '/htw/device/opt/lockVehicle?vehicleId=' + data,
+    url: mockUrl + '/htw/lockVehicle?lockNo=' + data,
     method: 'get',
     data
   })
@@ -85,7 +85,7 @@ export function lockVehicle(data) {
 // 编辑
 export function updateLockAttr(data) {
   return request({
-    url: mockUrl + '/htw/user/device/updateLockAttr',
+    url: mockUrl + '/htw/updateLockAttr',
     method: 'post',
     data
   })
@@ -94,7 +94,7 @@ export function updateLockAttr(data) {
 // 查询用户设备详情(首页刚进来)
 export function getDevices(data) {
   return request({
-    url: mockUrl + '/htw/user/device/getDevices',
+    url: mockUrl + '/htw/getDevices',
     method: 'post',
     data
   })

+ 2 - 2
src/apiConfig/virtualDevices.js

@@ -1,3 +1,3 @@
 /*eslint-disable*/ //规避eslint的检查,如没有eslint可不写
-export const mockUrl = 'http://mock.Intra.xiaojukeji.com' // 线上
-// export const mockUrl = 'http://10.96.113.197:9999/virtual-devices' // 线下
+// export const mockUrl = 'http://mock.Intra.xiaojukeji.com' // 线上
+export const mockUrl = 'http://10.96.113.197:9999/virtual-devices' // 线下

+ 0 - 6
src/views/Platform/presentation/Assumptions.vue

@@ -49,8 +49,6 @@
 
 <script>
 import { launchTestList, launchTestDelete, taskListCreate } from '@/api/InterfaceReport'
-import Utils from '../../../util.js'
-
 export default {
   name: 'Assumptions',
   data() {
@@ -82,10 +80,6 @@ export default {
     this.getList(localStorage.getItem('key'))
   },
   mounted() {
-    var that = this
-    Utils.$on('demo', function(msg) {
-      that.getList(msg)
-    })
     this.getQueryData()
   },
   methods: {

+ 35 - 112
src/views/Platform/presentation/testPresenyL.vue

@@ -1,43 +1,16 @@
 <template>
   <!-- 日报预览 -->
-  <div class="eleStyle">
+  <div id="resumeId" class="eleStyle">
     <div style="height:100%;width:94%; background:#ffffff; margin: 3% 3% 8% 3%; border-radius: 8px; overflow: hidden;">
       <el-form :inline="true" :model="fromCreat" style="margin:2% 9%">
-        <div id="resumeId">
+        <div>
           <div style="display: flex; font-size: 19px;  white-space: nowrap; font-weight: bold;">
             <span style="flex:1;">{{ fromCreat.reportName }}</span>
             <span style="flex:1;">by : {{ fromCreat.ownner }}
-              <el-button type="primary" size="mini" style="margin:0 2% 0 30%;" @click="promptEmail(fromCreat)">发送报告</el-button>
-              <el-button size="mini" @click="download()">下载测试报告</el-button>
+              <el-button v-show="btn" type="primary" size="mini" style="margin:0 2% 0 30%;" @click="promptEmail(fromCreat)">发送报告</el-button>
+              <el-button v-show="btn" size="mini" @click="download()">下载测试报告</el-button>
             </span>
           </div>
-          <!-- <el-row>
-            <el-col :span="24">
-              <div style="margin: 1%;">1、项目节点</div>
-              <div style="border: 1px solid #DEE2E7; padding: 100px 0;" class="time_line_box">
-                <div class="time_line" style="width:100%;">
-                  <ol>
-                    <li style="list-style-type:none;">
-                      <a class="order_item" style="left:5%;">一号节点</a>
-                    </li>
-                    <li style="list-style-type:none;">
-                      <a class="order_item" style="left:25%;">二号节点</a>
-                    </li>
-                    <li style="list-style-type:none;">
-                      <a class="order_item" style="left:45%;">三号节点</a>
-                    </li>
-                    <li style="list-style-type:none;">
-                      <a class="order_item" style="left:65%;">四号节点</a>
-                    </li>
-                    <li style="list-style-type:none;">
-                      <a class="order_item" style="left:85%;">五号节点</a>
-                    </li>
-                  </ol>
-                </div>
-              </div>
-            </el-col> -->
-          <!-- </el-row> -->
-
           <div class="titleStyle">一. 进度和风险</div>
 
           <div style="font-size:15px;color:#606266;" class="rich" v-html="projectProgress" />
@@ -59,7 +32,7 @@
             {{ bugshow }}
           </div>
         </div>
-        <el-button style="float:right; margin:2% 50%;" @click="open()"> 返 回 </el-button>
+        <el-button v-show="btn" style="float:right; margin:2% 50%;" @click="$router.go(-1)"> 返 回 </el-button>
       </el-form>
     </div>
   </div>
@@ -78,11 +51,6 @@ export default {
       userInformation: localStorage.getItem('username'),
       userNames: localStorage.getItem('realname'),
       bugshow: '',
-      progressExplain: '', //  项目节点
-      testExplain: '', // 测试情况
-      bugNumCount: '', // bug统计
-      bugExplain: '', //  bug说明
-      problemRisks: '', // 进度和风险
       fromCreat: {
         id: '',
         bizId: '',
@@ -98,22 +66,17 @@ export default {
       },
       TestProgress: '',
       projectProgress: '',
-      userData: '',
-      objData: '',
       dateList: [],
       numList: [],
       bugName: [],
       statusMap: [],
       statusList: [],
-      statusMap1: [],
-      swiper: '',
       pro: '',
       name: '',
-      gmtCreateEnd: ''
+      btn: true
     }
   },
   created() {
-    // this.getRouterData()
     this.idGet()
   },
   methods: {
@@ -140,7 +103,6 @@ export default {
             tooltip: { trigger: 'axis' },
             legend: { top: 30, data: this.bugName },
             grid: { left: '5%', right: '25%', bottom: '12%', containLabel: true },
-            // toolbox: { feature: { saveAsImage: {}}},
             xAxis: { type: 'category', boundaryGap: true, data: this.dateList },
             yAxis: { type: 'value' },
             series: this.numList
@@ -158,9 +120,6 @@ export default {
         })
       })
     },
-    open(ele) {
-      this.$router.go(-1)
-    },
     download() {
       this.getPdf('resumeId', this.name)
     },
@@ -174,30 +133,40 @@ export default {
         this.$message({ type: 'info', message: '取消输入' })
       })
     },
+
     sendReport(e, ele) {
+      this.btn = false
       var shareContent = document.getElementById('resumeId')// 需要截图的包裹的(原生的)DOM 对象
-      var canvas = document.createElement('canvas') // 创建一个canvas节点
-      const contentWidth = shareContent.offsetWidth
-      const contentHeight = shareContent.offsetHeight
-      var scale = 5 // 定义任意放大倍数 支持小数
-      canvas.width = contentWidth * scale// 定义canvas 宽度 * 缩放
-      canvas.height = contentHeight * scale// 定义canvas高度 *缩放
-      canvas.getContext('2d').scale(scale, scale) // 获取context,设置scale
-      var opts = {
-        scale: scale, // 添加的scale 参数
-        canvas: canvas, // 自定义 canvas
-        width: 1200, // dom 原始宽度
-        height: 1800 // dom 原始高度
+      var width = shareContent.offsetWidth // 获取dom宽度(包括元素宽度、内边距和边框,不包括外边距)
+      var height = shareContent.offsetHeight // //获取dom高度(包括元素高度、内边距和边框,不包括外边距)
+      var canvas = document.createElement('canvas') // 创建一个canvas标签元素
+      var scale = 2 // 定义放大倍数,可以支持小数
+
+      canvas.width = width * scale // 定义canvas宽度 * 倍数(图片的清晰度优化),默认宽度为300px
+      canvas.height = height * scale // 定义canvas高度 * 倍数,默认高度为150px
+      canvas.getContext('2d').scale(scale, scale) // 创建canvas的context对象,设置scale,相当于画布的“画笔”拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法
+      var opts = { // 初始化对象
+        scale: scale, // 添加的scale参数
+        canvas: canvas, // 自定义canvas
+        width: width * 1.5, // dom的原始宽度和高度
+        height: height
       }
-      html2canvas(shareContent, opts).then(function(canvas) {
+
+      setTimeout(() => {
+        var that = this
+        that.btn = true
+
+        html2canvas(shareContent, opts).then(function(canvas) {
         // 从 canvas 提取图片数据
-        var imgData = canvas.toDataURL('image/png')
-        var sendImgData = imgData.substring(imgData.indexOf(',') + 1)
-        var postData = { 'reportId': ele.id, 'imgStr': sendImgData, 'url': window.location.href, 'emailUser': e }
-        dailyReportSendmail(postData).then(res => {
-          res.code === 200 ? this.$message.success('发送测试报告成功') : this.$message.error('发送测试报告失败,请联系管理员!')
+          var imgData = canvas.toDataURL('image/png')
+          console.log(imgData)
+          var sendImgData = imgData.substring(imgData.indexOf(',') + 1)
+          var postData = { 'reportId': ele.id, 'imgStr': sendImgData, 'url': window.location.href, 'emailUser': e }
+          dailyReportSendmail(postData).then(res => {
+            res.code === 200 ? this.$message.success('发送测试报告成功') : this.$message.error('发送测试报告失败,请联系管理员!')
+          })
         })
-      })
+      }, 500)
     }
   }
 }
@@ -210,52 +179,6 @@ export default {
     background:#F2F3F6;
     display: inline-block;
   }
-  .el-col {
-    white-space:nowrap;
-  }
-  .time_line_box{
-    position: relative;
-    height: auto;
-    }
-    .time_line{
-    position: absolute;
-    /* z-index: 1; */
-    /* left: 0; */
-    /* top: 100px; */
-    height: 2px;
-    background: #ccc;
-    /* transition: transform 0.4s; */
-    }
-    .order_item{
-    position: absolute;
-    bottom: 0;
-    z-index: 2;
-    text-align: center;
-    font-size: 13px;
-    padding-bottom: 35px;
-    color: #409EFF;
-    }
-    .order_item:after{
-    content: '';
-    position: absolute;
-    left: 50%;
-    right: auto;
-    transform: translateX(-50%);
-    bottom: -10px;
-    height: 20px;
-    width: 30px;
-    border-radius: 50%;
-    border: 2px solid #ccc;
-    background-color: #ccc;
-    }
-    .filling_line{
-    position: absolute;
-    z-index: 1;
-    left: 0;
-    top: 0;
-    height: 100%;
-    width: 100%;
-    }
   .titleStyle {
     color: #333B4A;
     margin: 1% 0;

+ 19 - 1
src/views/Platform/useCasePage.vue

@@ -177,7 +177,8 @@ export default {
       successNum: '',
       startKey: '',
       obj: '',
-      end_Data: ''
+      end_Data: '',
+      return_URL: ''
     }
   },
   created() {
@@ -580,12 +581,29 @@ export default {
     // 导入excel
     importFile() {
       var obj = this.imFile
+
       if (!obj.files) {
         return
       }
       var f = obj.files[0]
       var formData = new FormData()
       formData.append('file', f)
+      // var tow = f.name.split('.')
+      // axios.post('https://star.xiaojukeji.com/upload/getPresignedUrl.node?name=' + tow[0] + '&customAcl=public-read&cacheStrategy=max-age=31536000', {
+      //   // 单独配置
+      //   withCredentials: false
+      // })
+      //   .then(function(res) {
+      //     console.log(res.data)
+      //     this.return_URL = res.data.url
+      //     axios.post(this.return_URL, formData).then(res => {
+      //       console.log(res)
+      //     })
+      //   })
+      //   .catch(function(err) {
+      //     console.error('1' + err)
+      //   })
+
       var caseInfo = {
         bizId: this.bizJson,
         creator: this.userNames,

+ 1 - 1
src/views/online-quality/HistoryTask/index.vue

@@ -14,7 +14,7 @@
         <el-table-column prop="line" label="业务线" sortable min-width="12%" />
         <el-table-column prop="state" label="质检" sortable min-width="12%">
           <template v-slot="scope">
-            <el-tag :type="scope.row.state ===1? 'success':'warning'">{{ scope.row.state ===1? '通过':'未通过' }}</el-tag>
+            <el-tag :type="scope.row.state? 'success':'warning'">{{ scope.row.state? '通过':'未通过' }}</el-tag>
           </template>
         </el-table-column>
         <el-table-column v-if="false" prop="checkResultJson" label="检查项" sortable min-width="15%" />

+ 6 - 3
src/views/online-quality/HistoryTask/taskDetails.vue

@@ -25,7 +25,6 @@
     <el-card v-if="isShow">
       <div slot="header" class="clearfix">
         <span>{{ task.checkResultJson.lineName }}</span>
-        <el-button style="float: right; padding: 3px 0" type="text" @click="updateCheckResultJson">提交</el-button>
       </div>
       <el-table
         :data="tableData"
@@ -45,7 +44,7 @@
       </el-table>
       <div style="text-align: center;margin-top: 20px">
         <el-button @click="getTableData">重置</el-button>
-        <el-button type="primary" @click="updateCheckResultJson">提交</el-button>
+        <el-button type="primary" :disabled="isSubmitDisabled" @click="updateCheckResultJson">提交</el-button>
       </div>
     </el-card>
     <el-card v-if="false">
@@ -82,7 +81,8 @@ export default {
     return {
       task: {},
       tableData: null,
-      isShow: false
+      isShow: false,
+      isSubmitDisabled: true
     }
   },
   mounted() {
@@ -131,6 +131,9 @@ export default {
           if (this.task.diffResultJson) { this.task.diffResultJson = JSON.parse(this.task.diffResultJson) }
           if (this.task.checkResultJson.lineName) {
             this.tableData = this.task.checkResultJson.subitems
+            for (const i in this.tableData) {
+              this.isSubmitDisabled = (this.tableData[i].status === 1) && this.isSubmitDisabled
+            }
             this.isShow = true
           }
         })

+ 116 - 171
src/views/virtualDevices/HTvehicle.vue

@@ -3,14 +3,18 @@
     <div class="block">
       <el-form :model="listQuery">
         <div class="set-head">
-          车辆ID<el-input v-model="listQuery.vehicleId" placeholder="请填写" style="width:18%;" /> &nbsp;
-          锁ID <el-input v-model="listQuery.lockNo" placeholder="请填写" style="width:18%;" />&nbsp;
-          锁类型 <el-select v-model="listQuery.lockModel" placeholder="请填写" style="width:18%;" filterable clearable>
+          <el-input v-model="listQuery.vehicleId" clearable placeholder="车辆ID" style="width:15%;" />
+          <el-input v-model="listQuery.lockNo" clearable placeholder="锁ID" style="width:15%;" />&nbsp;
+          <el-select v-model="listQuery.lockModel" clearable placeholder="锁类型" style="width:15%;" filterable>&nbsp;
             <el-option v-for="item in lockModelList" :key="item.model" :label="item.modelName" :value="item.model" />
-          </el-select>&nbsp;
-          状态 <el-select v-model="listQuery.lockStatus" placeholder="请填写" style="width: 18%;" filterable clearable>
+          </el-select>
+          <el-select v-model="listQuery.lockStatus" clearable placeholder="锁状态" style="width: 15%;" filterable>
             <el-option v-for="item in lockStatusOptions" :key="item.value" :label="item.label" :value="item.value" />
-          </el-select>&nbsp;
+          </el-select>
+          <el-input v-model="listQuery.creator" clearable placeholder="创建人" style="width:15%;" />&nbsp;
+          <el-select v-model="listQuery.isOnline" clearable placeholder="设备状态" style="width:15%;" filterable>&nbsp;
+            <el-option v-for="item in deviceStatusOptions" :key="item.value" :label="item.label" :value="item.value" />
+          </el-select>
         </div>
         <div class="set-between">
           <el-button type="primary" icon="el-icon-search" @click="getDevicesList(listQuery)">搜索</el-button>
@@ -18,13 +22,22 @@
         </div>
       </el-form>
       <div class="set-locate">
-        <el-table :key="tableKey" :data="list" fit highlight-current-row style="width: 100%;" border :header-cell-style="{background:'#F0F7FF',color:'#606266'}">
+        <el-table
+          :key="tableKey"
+          v-loading="loading"
+          element-loading-text="关锁中"
+          element-loading-spinner="el-icon-loading"
+          element-loading-background="#FFFFFF"
+          :data="list"
+          fit
+          highlight-current-row
+          style="width: 100%;"
+          border
+          :header-cell-style="{background:'#F0F7FF',color:'#606266'}"
+        >
           <el-table-column label="车辆ID" prop="vehicleId" align="center" min-width="120">
             <template slot-scope="scope"><a href="javascript:void(0)" style="color:#20a0ff" @click="dialogDetailVisible = true,deviceDetails(scope.row)">{{ scope.row.vehicleId }}</a></template>
           </el-table-column>
-          <!-- <el-table-column label="锁ID" min-width="100px" align="center">
-            <template slot-scope="scope"><span>{{ scope.row.lockNo }}</span></template>
-          </el-table-column> -->
           <el-table-column label="锁ID" prop="lockNo" min-width="100px" align="center" />
           <el-table-column label="锁类型" min-width="80px" align="center">
             <template slot-scope="scope"><span>{{ scope.row.lockModelInfo.modelName }}</span></template>
@@ -36,135 +49,64 @@
           <el-table-column label="锁状态" class-name="status-col" min-width="100px">
             <template slot-scope="{row}"><el-tag :type="row.lockStatus | statusFilter">{{ lockStatusMaps.get(row.lockStatus) }}</el-tag></template>
           </el-table-column>
+          <el-table-column label="创建人" min-width="120px" align="center">
+            <template slot-scope="scope"><span>{{ scope.row.creator }}</span></template>
+          </el-table-column>
+          <el-table-column label="创建时间" min-width="120px" align="center">
+            <template slot-scope="scope"><span>{{ scope.row.createTime }}</span></template>
+          </el-table-column>
           <el-table-column label="经度" min-width="80px" align="center">
             <template slot-scope="scope"><span>{{ scope.row.deviceLng }}</span></template>
           </el-table-column>
           <el-table-column label="纬度" min-width="80px" align="center">
             <template slot-scope="scope"><span>{{ scope.row.deviceLat }}</span></template>
           </el-table-column>
-          <el-table-column label="创建时间" min-width="120px" align="center">
-            <template slot-scope="scope"><span>{{ scope.row.createTime }}</span></template>
-          </el-table-column>
           <el-table-column label="操作" align="center" min-width="300px" class-name="small-padding fixed-width" fixed="right">
             <template slot-scope="{row}">
               <el-button v-if="row.isOnline!=1" size="mini" type="success" @click="handleDeviceStatus(row, 1)">上线</el-button>
               <el-button v-if="row.isOnline!=0" size="mini" type="danger" @click="handleDeviceStatus(row, 0)">下线</el-button>
               <el-button type="primary" size="mini" @click="handleUpdate(row)">编辑</el-button>
               <el-button type="danger" size="mini" @click="deleteCodeData(row)">删除</el-button>
-              <el-button v-if="row.lockStatus!=0" size="mini" type="info" @click="handleLockStatus(row, 0)">关锁</el-button>
-              <el-button v-if="row.lockStatus!=1" size="mini" type="warning" @click="handleLockStatus(row, 1)">开锁</el-button>
-              <!-- <i v-if="row.lockStatus!=0" style="font-size: 25px;" class="el-icon-unlock" @click="handleLockStatus(row, 0)" />
-              <i v-if="row.lockStatus!=1" style="font-size: 25px;" class="el-icon-lock" @click="handleLockStatus(row, 1)" /> -->
+              <el-button v-if="row.lockStatus===1 || row.lockStatus ===4" size="mini" type="info" @click="handleLockStatus(row, 0)">关锁</el-button>
 
             </template>
           </el-table-column>
         </el-table>
-
-        <el-pagination
-          align="center"
-          background
-          layout="prev, pager, next"
-          :total="1000"
-        />
+        <el-pagination style="margin-top:30px;" align="center" :current-page="page" :page-sizes="[5, 10, 20]" :page-size="pageSize" layout="total, sizes, prev, pager, next, jumper" :total="total" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
       </div>
     </div>
 
     <!-- 新增 -->
-    <el-dialog :title="textMap[dialogStatus]" :visible.sync="dialogFormVisible" width="75%">
-      <el-form ref="addDeviceForms" :rules="addDeviceDataRules" :model="addDeviceData" label-position="left" label-width="80px" style="width: 100%; margin-left:0px; margin-top:25px">
-        <div class="set-font" style="display:flex;justfy-content:space-between" width="100%">
-          <div style="margin-left: 14%;">
-            <el-form-item label="业务线" prop="bizType">
-              <el-input v-model="addDeviceData.bizType" :disabled="true" style="width:100%;" placeholder="单车" />
-            </el-form-item>
-
-            <el-form-item label="锁类型" prop="lockModel">
-              <el-select v-model="addDeviceData.lockModel" class="filter-item" filterable clearable placeholder="请填写" @change="chooseLockType()">
-                <el-option v-for="item in lockModelList" :key="item.model" :label="item.modelName" :value="item.model" />
-              </el-select>
-            </el-form-item>
-
-            <el-form-item label="锁供应商" prop="lockSupplier">
-              <el-select v-model="addDeviceData.lockSupplier" :disabled="shouldShow" class="filter-item" filterable clearable placeholder="请填写">
-                <el-option v-for="item in lockSupplierList" :key="item.supplierId" :label="item.supplierName" :value="item.supplierId" />
-              </el-select>
-            </el-form-item>
-          </div>
-          <div style="margin-left: 10%;">
-            <el-form-item label="车辆个数" prop="deviceNum">
-              <el-input v-model="addDeviceData.deviceNum" style="width:100%;" placeholder="请填写" />
-            </el-form-item>
-
-            <el-form-item label="车供应商" style="flex-grow:1" prop="bikeSupplier">
-              <el-select v-model="addDeviceData.bikeSupplier" class="filter-item" filterable clearable placeholder="请填写">
-                <el-option v-for="item in bikeSupplierList" :key="item.supplierId" :label="item.supplierName" :value="item.supplierId" />
-              </el-select>
-            </el-form-item>
-
-            <el-form-item label="车辆类型" prop="bikeModel">
-              <el-select v-model="addDeviceData.bikeModel" class="filter-item" filterable clearable placeholder="请填写">
-                <el-option v-for="item in bikeModelList" :key="item.model" :label="item.modelName" :value="item.model" />
-              </el-select>
-            </el-form-item>
-          </div>
-        </div>
-      </el-form>
-      <br><br><br>
+    <el-dialog :title="textMap[dialogStatus]" :visible.sync="dialogFormVisible" width="40%">
+      <div style="margin-left:60px">
+        <el-form ref="addDeviceForms" :label-position="labelPosition" :rules="addDeviceDataRules" :model="addDeviceData">
+          <el-form-item label="业务线" prop="bizType" label-width="80px">
+            <el-input v-model="addDeviceData.bizType" :disabled="true" style="width:75%;" placeholder="单车" />
+          </el-form-item>
+          <el-form-item label="锁类型" prop="lockModel" label-width="80px">
+            <el-select v-model="addDeviceData.lockModel" class="filter-item" filterable clearable placeholder="请填写" style="width:75%;" @change="chooseVehicleType()">
+              <el-option v-for="item in lockModelList" :key="item.model" :label="item.modelName" :value="item.model" />
+            </el-select>
+          </el-form-item>
+          <el-form-item label="车辆类型" prop="bikeModel" label-width="80px">
+            <el-select v-model="addDeviceData.bikeModel" class="filter-item" filterable clearable placeholder="请填写" style="width:75%;">
+              <el-option v-for="item in bikeModelList" :key="item.model" :label="item.modelName" :value="item.model" />
+            </el-select>
+          </el-form-item>
+          <el-form-item label="车辆个数" prop="deviceNum" label-width="80px">
+            <el-input v-model="addDeviceData.deviceNum" style="width:75%;" placeholder="请填写" />
+          </el-form-item>
+        </el-form>
+      </div>
       <div slot="footer" class="dialog-footer">
         <el-button @click="dialogFormVisible = false">取消</el-button>
         <el-button v-if="showSubmitBtn" type="primary" @click="createData(addDeviceData)">确定</el-button>
       </div>
+      <div style="margin-top:6%" />
     </el-dialog>
     <!-- 查看详情 -->
     <el-dialog :title="textMap[dialogStatus]" :visible.sync="dialogDetailVisible" width="73%">
       <el-form ref="serviceDataForms" :rules="serviceDataRules" :model="detailData" label-width="70px" style="width: 100%; margin-left:80px;">
-        <!-- <div class="set-font" style="display:flex;justfy-content:space-between">
-          <div style="margin-left: 20%;">
-            <el-form-item label="业务线" prop="bizType">
-              <el-input v-model="detailData.bizType" :disabled="true" style="width:200px;" placeholder="单车" />
-            </el-form-item>
-
-            <el-form-item label="锁ID" prop="lockNo">
-              <el-input v-model="detailData.lockNo" :disabled="true" style="width:200px;color:#3e3c3c !important" placeholder="无" />
-            </el-form-item>
-
-            <el-form-item label="车辆ID" prop="vehicleId">
-              <el-input v-model="detailData.vehicleId" :disabled="true" style="width:200px;" placeholder="无" />
-            </el-form-item>
-            <el-form-item label="锁状态" prop="lockStatus">
-              <el-input v-model="detailData.lockStatus" :disabled="true" style="width:200px;" placeholder="无" />
-            </el-form-item>
-            <el-form-item label="经度" prop="deviceLng">
-              <el-input v-model="detailData.deviceLng" :disabled="true" style="width:200px;" placeholder="无" />
-            </el-form-item>
-            <el-form-item label="纬度" prop="deviceLat">
-              <el-input v-model="detailData.deviceLat" :disabled="true" style="width:200px;" placeholder="无" />
-            </el-form-item>
-
-          </div>
-          <div style="margin-left: 30%;">
-            <el-form-item label="EcuID" prop="deviceId">
-              <el-input v-model="detailData.deviceId" :disabled="true" style="width:200px;" placeholder="无" />
-            </el-form-item>
-            <el-form-item label="IccID" prop="iccid">
-              <el-input v-model="detailData.iccid" :disabled="true" style="width:200px;" placeholder="无" />
-            </el-form-item>
-            <el-form-item label="Mac地址" prop="macAddr">
-              <el-input v-model="detailData.macAddr" :disabled="true" style="width:200px;" placeholder="无" />
-            </el-form-item>
-            <el-form-item label="电量信息" prop="lockBatteryLevel">
-              <el-input v-model="detailData.lockBatteryLevel" :disabled="true" style="width:200px;" placeholder="无" />
-            </el-form-item>
-            <el-form-item label="bluetooth_key" prop="bluetoothKey">
-              <el-input v-model="detailData.bluetoothKey" :disabled="true" style="width:200px;" placeholder="无" />
-            </el-form-item>
-            <el-form-item label="bluetooth_password" prop="bluetoothPassword">
-              <el-input v-model="detailData.bluetoothPassword" :disabled="true" style="width:200px;" placeholder="无" />
-            </el-form-item>
-
-          </div>
-        </div> -->
-        <!-- <div class="set-font" style="width:100%"> -->
         <div class="table-th" style="width:82%;margin-top=15px">
           <table cellspacing="0" width="103%;" bordercolor="#ddd" class="border-color">
             <tr width="100%">
@@ -181,7 +123,7 @@
             </tr>
             <tr>
               <th width="12%" height="40" style="background-color:#F1F4F7">锁状态</th>
-              <td>{{ detailData.lockStatus }}</td>
+              <td>{{ lockStatusMaps.get(detailData.lockStatus) }}</td>
               <th style="background-color:#F1F4F7">车辆ID </th>
               <td> {{ detailData.vehicleId }}</td>
             </tr>
@@ -195,7 +137,7 @@
               <th height="40" style="background-color:#F1F4F7">电量信息</th>
               <td> {{ detailData.lockBatteryLevel }}</td>
               <th style="background-color:#F1F4F7">Mac地址</th>
-              <td> {{ detailData.macAddr }}</td>
+              <td> {{ detailData.macAdd }}</td>
             </tr>
             <tr>
               <th style="background-color:#F1F4F7">bluetooth_key</th>
@@ -211,7 +153,6 @@
       <br><br><br>
       <div slot="footer" class="dialog-footer">
         <el-button @click="dialogDetailVisible = false">关闭</el-button>
-        <!-- <el-button v-if="showSubmitBtn" type="primary">确定</el-button> -->
       </div>
     </el-dialog>
     <!--  编辑 -->
@@ -283,14 +224,12 @@
 import { queryLockCreateInfo, queryVehicleCreateInfo, createDevice, deleteDevice, deviceOnline, deviceOffline, unlockVehicle, lockVehicle, updateLockAttr, getDevices } from '@/api/htVehicle'
 import waves from '@/directive/waves' // waves directive
 import { parseTime } from '@/utils'
-// import Pagination from '@/components/Pagination' // secondary package based on el-pagination
 
 var envSelections = []
 var consumerSelections = []
 
 export default {
   name: 'HTvehicle',
-  // components: { Pagination },
   directives: { waves },
   filters: {
     statusFilter(status) {
@@ -308,24 +247,34 @@ export default {
       dialogFormVisible: false,
       dialogDetailVisible: false,
       dialogUpdateVisible: false,
+      labelPosition: 'right',
       shouldShow: false,
       total: 0,
       num: '',
       tableKey: 0,
       list: null,
-      curIndex: 1,
+      page: 1,
       pageSize: 10,
+      loading: false,
       statusMaps: new Map([[1, '在线'], [0, '下线']]),
-      lockStatusMaps: new Map([[1, '已开锁'], [0, '已关锁']]),
+      lockStatusMaps: new Map([[1, '已开锁'], [0, '已关锁'], [2, '开锁失败'], [3, '关锁成功'], [4, '关锁失败']]),
       statusOperateMaps: new Map([[1, '在线'], [0, '离线']]),
-      options: [{ value: '', label: '全部显示' }, { value: '1', label: '在线' }, { value: '0', label: '离线' }],
-      bizType: [{ value: '1', label: '电单车' }, { value: '2', label: '单车' }],
-      lockStatusOptions: [{ value: '1', label: '已开锁' }, { value: '2', label: '已关锁' }],
+      options: [{ value: 1, label: '在线' }, { value: 0, label: '离线' }],
+      bizType: [{ value: 1, label: '电单车' }, { value: 2, label: '单车' }],
+      lockStatusOptions: [{ value: 1, label: '已开锁' }, { value: 0, label: '已关锁' }, { value: 2, label: '开锁失败' }, { value: 3, label: '关锁成功' }, { value: 4, label: '关锁失败' }],
+      deviceStatusOptions: [{ value: 1, label: '在线' }, { value: 0, label: '下线' }],
       lockModelList: [],
       lockSupplierList: [],
       bikeModelList: [],
       bikeSupplierList: [],
-      listQuery: {},
+      listQuery: {
+        // lockModel: '',
+        // isOnline: '',
+        // lockStatus: '',
+        // lockNo: '',
+        // creator: ''
+
+      },
       textMap: {
         update: '编辑',
         create: '新增',
@@ -348,7 +297,8 @@ export default {
         bikeModel: '',
         deviceNum: '',
         lockSupplier: '',
-        bikeSupplier: ''
+        bikeSupplier: '',
+        creator: ''
       },
       detailData: {
         bizType: '单车',
@@ -387,11 +337,6 @@ export default {
   methods: {
     createdCode() {
       this.dialogStatus = 'create'
-      // this.$set(this.addDeviceData, 'lockModel', '')
-      // this.$set(this.addDeviceData, 'lockSupplier', '')
-      // this.$set(this.addDeviceData, 'deviceNum', '')
-      // this.$set(this.addDeviceData, 'bikeSupplier', '')
-      // this.$set(this.addDeviceData, 'bikeModel', '')
       this.$refs.addDeviceForms.resetFields()
     },
     // 查看设备详情
@@ -404,22 +349,14 @@ export default {
     //  获取锁类型、锁供应商类型
     getLockModelList() {
       queryLockCreateInfo().then(response => {
-        // console.log(response.data)
-        this.lockModelList = response.data.modelInfos
-        this.lockSupplierList = response.data.supplierInfos
+        this.lockModelList = response.data
       })
-      // queryLockCreateInfo().catch(res => {
-      //   console.log(res)
-      // })
     },
 
     // 获取车类型、车供应商
-    chooseLockType() {
-      // console.log(this.addDeviceData.lockModel)
+    chooseVehicleType() {
       queryVehicleCreateInfo(this.addDeviceData.lockModel).then(response => {
-        // console.log(response.data)
-        this.bikeModelList = response.data.modelInfos
-        this.bikeSupplierList = response.data.supplierInfos
+        this.bikeModelList = response.data
         console.log(this.bikeModelList)
       })
     },
@@ -427,21 +364,22 @@ export default {
     // 搜索
     getDevicesList(vel) {
       this.listQuery = vel
-      this.userData = { id: '', ename: this.userInformation, name: this.userNames }
-      this.objData = { deviceQueryInfo: this.listQuery, user: this.userData }
-      getDevices(this.objData).then(response => {
-        this.list = response.data
+      this.listQuery.pageSize = this.pageSize
+      this.listQuery.page = this.page
+
+      getDevices(this.listQuery).then(response => {
+        this.list = response.data.bikeDeviceInfos
         this.total = response.data.total
       })
     },
     // 进首页
     getMyDevicesList() {
-      this.userData = { id: '', ename: this.userInformation, name: this.userNames }
-      this.objData = { deviceQueryInfo: this.listQuery, user: this.userData }
-      getDevices(this.objData).then(response => {
-        this.list = response.data
-        this.serviceData = response.data
-        this.detailData = response.data
+      this.listQuery.pageSize = this.pageSize
+      this.listQuery.page = this.page
+      getDevices(this.listQuery).then(response => {
+        this.list = response.data.bikeDeviceInfos
+        this.serviceData = response.data.bikeDeviceInfos
+        this.detailData = response.data.bikeDeviceInfos
         this.total = response.data.total
         console.log(this.detailData)
       })
@@ -455,25 +393,16 @@ export default {
       this.$refs.serviceDataForms.resetFields()
     },
     updateData(vel) {
-      if (vel === this.serviceData) {
-        this.bizData = {
-          lockNo: vel.lockNo,
-          lockBatteryLevel: vel.lockBatteryLevel,
-          deviceLat: vel.deviceLat,
-          deviceLng: vel.deviceLng
-        }
-      } else {
-        this.bizData = vel
-        this.bizData.lockNo = vel.lockNo
-        this.bizData.lockBatteryLevel = vel.lockBatteryLevel
-        this.bizData.deviceLat = vel.deviceLat
-        this.bizData.deviceLng = vel.deviceLng
+      this.bizData = {
+        lockNo: vel.lockNo,
+        lockBatteryLevel: vel.lockBatteryLevel,
+        deviceLat: vel.deviceLat,
+        deviceLng: vel.deviceLng
       }
-
       updateLockAttr(this.bizData).then(response => {
         if (response.code === 200) {
+          this.getMyDevicesList()
           this.dialogUpdateVisible = false
-          // this.getList()
           this.$notify({ title: 'Success', message: response.msg, type: 'success', duration: 3000 })
         } else {
           this.$notify({ title: 'Failed', message: response.msg, type: 'error', duration: 3000 })
@@ -504,7 +433,6 @@ export default {
     },
 
     handleDelete(row) {
-      // var deleteData = { 'vehicleId': row.vehicleId }
       deleteDevice(row.vehicleId).then(response => {
         if (response.code === 200) {
           this.getMyDevicesList()
@@ -518,7 +446,6 @@ export default {
 
     // 设备上线、下线调用
     handleDeviceStatus(row, isOnline) {
-      // var statusData = { 'lockNo': row.lockNo }
       if (isOnline === 1) {
         deviceOnline(row.lockNo).then(response => {
           if (response.code === 200) {
@@ -530,7 +457,8 @@ export default {
         })
       }
       if (isOnline === 0) {
-        deviceOffline(row.lockNo).then(response => {
+        deviceOffline(row.deviceId).then(response => {
+          console.log(row.deviceId)
           if (response.code === 200) {
             row.isOnline = isOnline
             this.$message({ message: '锁ID:' + row.lockNo.toString() + ' ' + this.statusOperateMaps.get(isOnline) + '成功!', type: 'success' })
@@ -554,9 +482,19 @@ export default {
         })
       }
       if (lockStatus === 0) {
-        lockVehicle(row.vehicleId).then(response => {
+        lockVehicle(row.lockNo).then(response => {
+          this.loading = true
+          this.list = []
           if (response.code === 200) {
+            setTimeout(() => {
+              this.getMyDevicesList().then(
+                response => {
+                  this.list = response.data.bikeDeviceInfos
+                }
+              )
+            }, 1000)
             row.lockStatus = lockStatus
+            this.loading = false
             this.$message({ message: '锁ID:' + row.lockNo.toString() + ' ' + this.lockStatusMaps.get(lockStatus) + '成功!', type: 'success' })
           } else {
             this.$message({ message: '锁ID:' + row.lockNo.toString() + ' ' + this.lockStatusMaps.get(lockStatus) + '失败!', type: 'danger' })
@@ -571,9 +509,8 @@ export default {
         if (valid) {
           this.addDeviceData = ele
           this.addDeviceData.bizType = 2
-          this.userData = { id: '', ename: this.userInformation, name: this.userNames }
-          this.objData = { htwDeviceInfo: this.addDeviceData, user: this.userData }
-          createDevice(this.objData).then(response => {
+          this.addDeviceData.creator = this.userNames
+          createDevice(this.addDeviceData).then(response => {
             console.log(response)
             if (response.code === 200) {
               this.getMyDevicesList()
@@ -598,6 +535,14 @@ export default {
         }
       }))
     },
+    handleSizeChange(size) {
+      this.pageSize = size
+      this.getDevicesList(this.listQuery)
+    },
+    handleCurrentChange(page) {
+      this.page = page
+      this.getDevicesList(this.listQuery)
+    },
     redirectTo(id, mehtodName, methodProtocol) {
       console.log(methodProtocol)
       this.$router.push({