qinzhipeng_v 5 rokov pred
rodič
commit
ed17a94c62

+ 1 - 1
src/router/index.js

@@ -180,7 +180,7 @@ export const constantRoutes = [
           {
             path: 'testPageData',
             name: '测试计划管理',
-            // hidden: true,
+            hidden: true,
             component: () => import('@/views/Platform/presentation/testPage.vue'),
             meta: { title: '测试计划管理' }
           },

+ 21 - 49
src/views/Platform/useCase/createUse.vue

@@ -5,36 +5,28 @@
         <el-form ref="caseData" label-position="left" :model="caseData" label-width="80pt" style="margin:1%;" :rules="createFormData">
           <el-row>
             <el-col :span="21">
-              <el-form-item label="用例名称" prop="title">
-                <el-input v-model="caseData.title" placeholder="请填写【此处可能20字以上】…" />
-              </el-form-item>
+              <el-form-item label="用例名称" prop="title"><el-input v-model="caseData.title" placeholder="请填写【此处可能20字以上】…" /></el-form-item>
             </el-col>
           </el-row>
           <el-row>
             <el-col :span="21">
-              <el-form-item label="前置条件">
-                <el-input v-model="caseData.caseCondition" placeholder="请输入" />
-              </el-form-item>
+              <el-form-item label="前置条件"><el-input v-model="caseData.caseCondition" placeholder="请输入" /></el-form-item>
             </el-col>
           </el-row>
           <el-row>
-            <el-col :span="21">
-              <div style="white-space:nowrap; display:flex;">
-                <el-form-item label="所属项目" style="flex:1"><el-input v-model="caseData.projectName" clearable placeholder="请输入" /></el-form-item>
-                <el-form-item label="所属需求" style="flex:1; margin-left: 2%;"><el-input v-model="caseData.taskName" clearable placeholder="请输入" /></el-form-item>
-              </div>
+            <el-col :span="21" style="white-space:nowrap; display:flex;">
+              <el-form-item label="所属项目" style="flex:1"><el-input v-model="caseData.projectName" clearable placeholder="请输入" /></el-form-item>
+              <el-form-item label="所属需求" style="flex:1; margin-left: 2%;"><el-input v-model="caseData.taskName" clearable placeholder="请输入" /></el-form-item>
             </el-col>
           </el-row>
           <el-row>
-            <el-col :span="21">
-              <div style="white-space:nowrap; display:flex;">
-                <el-form-item label="用例优先级" style="flex:1">
-                  <el-select v-model="caseData.casePriority" clearable placeholder="请选择" style="width: 100%">
-                    <el-option v-for="item in priorityStrings" :key="item.value" :label="item.name" :value="item.value" />
-                  </el-select>
-                </el-form-item>
-                <el-form-item label="API" style="flex:1; margin-left: 2%;"><el-input v-model="caseData.api" clearable placeholder="请输入" /></el-form-item>
-              </div>
+            <el-col :span="21" style="white-space:nowrap; display:flex;">
+              <el-form-item label="用例优先级" style="flex:1">
+                <el-select v-model="caseData.casePriority" clearable placeholder="请选择" style="width: 100%">
+                  <el-option v-for="item in priorityStrings" :key="item.value" :label="item.name" :value="item.value" />
+                </el-select>
+              </el-form-item>
+              <el-form-item label="API" style="flex:1; margin-left: 2%;"><el-input v-model="caseData.api" clearable placeholder="请输入" /></el-form-item>
             </el-col>
           </el-row>
           <!-- http://star.xiaojukeji.com/upload/img.node -->
@@ -71,12 +63,8 @@
         <!-- 新增 -->
         <el-form v-for="(item, index) in data" :key="index" label-width="100px" :model="item">
           <div style="display:flex; white-space:nowrap;">
-            <el-form-item label="执行步骤" style="flex:1">
-              <el-input v-model="item.description" placeholder="请填写【此处可能20字以上】…" />
-            </el-form-item>
-            <el-form-item label="预期结果" style="flex:1">
-              <el-input v-model="item.expectedResult" placeholder="请填写" />
-            </el-form-item>
+            <el-form-item label="执行步骤" style="flex:1"><el-input v-model="item.description" placeholder="请填写【此处可能20字以上】…" /></el-form-item>
+            <el-form-item label="预期结果" style="flex:1"><el-input v-model="item.expectedResult" placeholder="请填写" /></el-form-item>
             <div style="flex:0.1; margin:0.26% 3%;">
               <el-button size="mini" type="primary" icon="el-icon-plus" @click="add" />
               <el-button size="mini" icon="el-icon-minus" @click="deleteData(index)" />
@@ -91,7 +79,6 @@
         </el-row>
       </el-main>
     </el-container>
-
   </div>
 </template>
 
@@ -112,9 +99,7 @@ export default {
       arr: [],
       uptataKey: [],
       title_Name: '',
-      createFormData: {
-        title: [{ required: true, message: '用例名称不能为空', trigger: 'change' }]
-      },
+      createFormData: { title: [{ required: true, message: '用例名称不能为空', trigger: 'change' }] },
       priorityStrings: [{ name: 'p0', value: 0 }, { name: 'p1', value: 1 }, { name: 'p2', value: 2 }, { name: 'p3', value: 3 }]
     }
   },
@@ -136,16 +121,17 @@ export default {
         this.title_Name = '编辑'
         this.url = window.location.href // 获取url中"?"符后的字串
         this.caseFolderId = this.url.split('&caseFolderId=')
-        console.log(this.caseFolderId)
         this.id = this.caseFolderId[0].split('?id=')
-        console.log(this.id)
         queryCasesData({ caseFolderId: this.caseFolderId[1] }).then(res => {
           for (var el of res.data.list) {
             if (el.id === Number(this.id[1])) {
               this.caseData = el
+              if (this.caseData.description !== '') {
+                var obj_description = JSON.parse(this.caseData.description.split('{}'))
+                this.data = obj_description
+              }
               if (this.caseData.accessory !== '') {
                 this.btn_show = true
-                console.log(typeof (this.caseData.accessory))
                 var obj = JSON.parse(this.caseData.accessory.split('{}'))
                 for (var a of obj) {
                   this.uptataKey.push(a)
@@ -197,9 +183,9 @@ export default {
 
     // 编辑_数据
     caseQueryCase(vel) {
-      console.log('编辑' + JSON.stringify(vel))
       this.caseData = vel
-      this.caseData.accessory = JSON.stringify(this.uptataKey)
+      this.caseData.description = JSON.stringify(this.data)
+      this.caseData.accessory = JSON.stringify(this.arr)
       updateCaseData(this.caseData).then(res => {
         this.$message({ type: 'success', message: res.msg, duration: 1000 })
         this.$router.go('-1')
@@ -208,7 +194,6 @@ export default {
 
     // 新建Data
     caseCreateCase(vel) {
-      console.log('新增' + JSON.stringify(vel))
       this.$refs['caseData'].validate((valid) => {
         if (valid) {
           this.caseData = vel
@@ -218,7 +203,6 @@ export default {
           this.caseData.modifier = this.userNames
           this.caseData.caseFolderId = this.startId
           this.caseData.bizId = this.bizJson
-          console.log(this.caseData)
           createCaseData(this.caseData).then(res => {
             if (res.code === 200) {
               this.$message({ type: 'success', message: res.msg, duration: 1000 })
@@ -258,16 +242,4 @@ export default {
   line-height: 178px;
   text-align: center;
 }
-  /* .upload .el-upload-dragger {
-     width: 43em;
-  } */
-  /* .upload .el-form-item__content {
-    width:100%;
-  } */
-  /* .upload-container .el-upload {
-    width: 100%;
-  }
-  .upload-container .el-upload .el-upload-dragger {
-    width: 80%;
-  } */
 </style>

+ 62 - 94
src/views/Platform/useCasePage.vue

@@ -14,6 +14,7 @@
                 :data="data1"
                 node-key="id"
                 draggable
+                :default-expanded-keys="key_arr"
                 :expand-on-click-node="false"
                 @node-drag-start="handleDragStart"
                 @node-drag-enter="handleDragEnter"
@@ -77,21 +78,11 @@
                     项目名称 <el-input v-model="createParticipation.projectName" placeholder="创建人" clearable style="width: 50%;margin: 0 2% 0 1%;" class="filter-item" />
                     需求名称<el-input v-model="createParticipation.taskName" placeholder="创建人" clearable style="width: 50%;margin-left:2%;" class="filter-item" />
                   </div>
-                  <input id="imFile" ref="imFile" type="file" style="display: none" accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel" @change="importFile(this)">
+                  <input id="imFile" ref="imFile" type="file" style="display: none" @change="importFile(this)">
                 </el-col>
               </el-row>
             </el-header>
             <el-main style="background:#ffffff; width:98%;margin:0% 1% 1% 1%; font-size:14px;border-radius:8px;">
-              <el-upload
-                class="upload-demo"
-                action="https://jsonplaceholder.typicode.com/posts/"
-                :on-success="handlePreview"
-                multiple
-                :limit="3"
-                :file-list="fileList"
-              >
-                <el-button size="small" type="primary">点击上传</el-button>
-              </el-upload>
               <el-button type="primary" style="margin-left:1%;width:10%;" @click="uploadFile()">导入</el-button>
               <el-tooltip class="item" effect="light" content="导出勾选项,没有勾选将导出excel模版" placement="top">
                 <el-button style="margin-left:2%;width:10%;" @click="exportExcel">导出</el-button>
@@ -121,12 +112,12 @@
               <!-- 导出文件内容 -->
               <el-table v-show="false" id="out-table" :data="tableData" tooltip-effect="dark" style="width: 100%">
                 <el-table-column prop="id" label="序号" width="50" />
-                <el-table-column prop="caseCondition" label="前置条件" />
                 <el-table-column prop="description" label="测试步骤" />
                 <el-table-column prop="expectedResult" label="期望结果" />
-                <el-table-column prop="api" label="对应api" />
+                <el-table-column prop="casePriority" label="优先级" />
+                <el-table-column prop="caseCondition" label="前置条件" />
+                <el-table-column prop="api" label="api" />
                 <el-table-column prop="accessory" label="附件" />
-                <el-table-column prop="casePriority" label="用例优先级" />
                 <el-table-column prop="remark" label="备注" />
               </el-table>
               <div align="center" class="block">
@@ -152,6 +143,7 @@ export default {
   name: 'UseCasePage',
   data() {
     return {
+      key_arr: [],
       fileList: [],
       div1: true,
       id: '',
@@ -189,7 +181,7 @@ export default {
     }
   },
   created() {
-    // this.moduleTypeArr()
+    this.AllQueryFolderData(localStorage.getItem('key'))
   },
   mounted() {
     var that = this
@@ -198,21 +190,9 @@ export default {
     })
     this.imFile = document.getElementById('imFile')
     this.initWindow()
-    this.AllQueryFolderData(localStorage.getItem('key'))
+    // this.AllQueryFolderData(localStorage.getItem('key'))
   },
   methods: {
-    handleRemove(file, fileList) {
-      console.log(file, fileList)
-    },
-    handlePreview(file) {
-      console.log(file)
-    },
-    handleExceed(files, fileList) {
-      this.$message.warning(`当前限制选择 3 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`)
-    },
-    beforeRemove(file, fileList) {
-      return this.$confirm(`确定移除 ${file.name}?`)
-    },
     // 左侧导航栏
     AllQueryFolderData(e) {
       if (e !== '') {
@@ -309,6 +289,7 @@ export default {
           this.$message({ message: res.msg, type: 'success', duration: 1000, offset: 150 })
           this.data1 = []
           this.AllQueryFolderData(this.bizJson)
+          this.key_arr.push(this.startId)
           this.add_Folder = ''
         } else {
           this.$message({ message: res.msg, type: 'error', duration: 1000, offset: 150 })
@@ -356,14 +337,6 @@ export default {
         document.getElementById('init-window').parentNode.style.overflow = 'hidden'
       }
     },
-    // moduleTypeArr() {
-    //   axios.get('https://star.xiaojukeji.com/upload/getPresignedUrl.node?name=“文件名”').then(res => {
-    //     console.log(res)
-    //   })
-    //   settingQueryModuleInfoListData(this.formData).then(res => {
-    //     this.moduleTypeStr = res.data
-    //   })
-    // },
 
     // 分页信息
     handleSizeChange(size) {
@@ -383,7 +356,7 @@ export default {
     // table全选调用查询接口
     clickAllData(rows) {
       queryCasesData({ caseFolderId: this.startId }).then(res => {
-        this.tableData = res.data
+        this.tableData = res.data.list
       })
     },
 
@@ -419,9 +392,13 @@ export default {
         })
         this.Folder_Show = false
       } else {
+        if (this.data1 === '') {
+          this.node_Data = true
+        } else {
+          this.Folder_Show = false
+          this.node_Data = false
+        }
         this.$message({ message: '取消创建文件夹', type: 'success', duration: 1000, offset: 150 })
-        this.Folder_Show = false
-        this.node_Data = true
       }
     },
 
@@ -528,6 +505,10 @@ export default {
 
     // 点击节点
     clickFun(e) {
+      console.log(e)
+      if (this.startId !== e.id) {
+        this.key_arr = []
+      }
       this.startId = e.id
       queryCasesData({ pageSize: 5, curIndex: 1, caseFolderId: e.id }).then(res => {
         this.gridData = res.data.list
@@ -584,70 +565,57 @@ 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)
-      //   })
+      console.log(f)
+      var a_name = f.name.split('.')
+      console.log(a_name[1])
+      if (a_name[1] === 'xlsx') {
+        var formData = new FormData()
+        formData.append('file', f)
+        var caseInfo = {
+          bizId: this.bizJson,
+          creator: this.userNames,
+          modifier: this.userNames,
+          caseFolderId: this.startId
+        }
+        formData.append('caseInfo', JSON.stringify(caseInfo))
+        const config = {
+          headers: { 'Content-Type': 'multipart/form-data' }
+        }
+        axios.post(mockUrl + '/case/uploadCase', formData, config).then(res => {
+          var code = res.data.data
+          this.successNum = code.successNum
+          this.failNum = code.failNum
+          if (res.data.code === 200) {
+            if (this.failNum === 0) {
+              this.updateCaseListData()
+            } else {
+              this.haha = '上传成功' + this.successNum + '上传失败' + this.failNum
+              this.$notify({ title: 'error', message: this.haha, type: 'success', duration: 2000 })
+            }
 
-      var caseInfo = {
-        bizId: this.bizJson,
-        creator: this.userNames,
-        modifier: this.userNames,
-        caseFolderId: this.startId
-      }
-      formData.append('caseInfo', JSON.stringify(caseInfo))
-      const config = {
-        headers: { 'Content-Type': 'multipart/form-data' }
-      }
-      axios.post(mockUrl + '/case/uploadCase', formData, config).then(res => {
-        var code = res.data.data
-        this.successNum = code.successNum
-        this.failNum = code.failNum
-        console.log(res)
-        if (res.data.code === 200) {
-          if (this.failNum === 0) {
-            this.updateCaseListData()
+            this.$refs.imFile.value = null
           } else {
-            this.haha = '上传成功' + this.successNum + '上传失败' + this.failNum
-            this.$notify({ title: 'error', message: this.haha, type: 'success', duration: 2000 })
+            this.$message({ type: 'success', message: '导入失败' })
           }
+        })
+      }
 
-          this.$refs.imFile.value = null
-        } else {
-          this.$message({ type: 'success', message: '导入失败' })
-        }
-      })
+      if (a_name[1] === 'xmind') {
+        axios.post('http://star.xiaojukeji.com/upload/img.node', formData, { headers: { 'Content-Type': 'application/json;charset=UTF-8' }}).then(res => {
+          console.error(res)
+        })
+      }
+      // if (a_name[1] !== 'ximnd') {
+      //   if (a_name[1] !== 'xlsx') {
+      //     this.$message({ type: 'error', message: '导入失败,不支持文件类型' })
+      //   }
+      // }
     },
 
-    // fixdata: function(data) { // 文件流转BinaryString
-    //   var o = ''
-    //   var l = 0
-    //   var w = 10240
-    //   for (; l < data.byteLength / w; ++l) {
-    //     o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w, l * w + w)))
-    //   }
-    //   o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w)))
-    //   return o
-    // },
-
     // 按钮导入
     uploadFile() {
       if (this.startId === '') {
@@ -660,7 +628,7 @@ export default {
     updateCaseListData() {
       this.createParticipation.caseFolderId = this.startId
       queryCasesData(this.createParticipation).then(res => {
-        this.gridData = res.data
+        this.gridData = [res.data]
         this.$message({ type: res.msg, message: res.msg, duration: 1000 })
       })
     }

+ 78 - 33
src/views/virtualDevices/HTvehicle.vue

@@ -30,7 +30,13 @@
           <el-table-column label="锁类型" min-width="100px" align="center">
             <template slot-scope="scope"><span>{{ scope.row.lockModelInfo.modelName }}</span></template>
           </el-table-column>
-
+          <el-table-column label="二维码" align="center" min-width="80px" class-name="small-padding fixed-width">
+            <template slot-scope="{row}">
+              <!-- <el-button type="primary" size="mini" plain @click="checkUrl(row)">查看</el-button> -->
+              <!-- <el-link type="primary" size="mini" @click="checkUrl(row)">查看</el-link> -->
+              <a href="javascript:void(0)" style="color:#20a0ff" @click="checkUrl(row)">查看</a>
+            </template>
+          </el-table-column>
           <el-table-column label="在线状态" class-name="status-col" min-width="100">
             <template slot-scope="{row}"><el-tag :type="row.isOnline | statusFilter">{{ statusMaps.get(row.isOnline) }}</el-tag></template>
           </el-table-column>
@@ -52,20 +58,34 @@
           <el-table-column label="纬度" min-width="60px" align="center" show-overflow-tooltip>
             <template slot-scope="scope"><span>{{ scope.row.deviceLat }}</span></template>
           </el-table-column>
+          <el-table-column label="关锁" align="center" min-width="60px" class-name="small-padding fixed-width">
+            <template slot-scope="{row}">
+              <i v-if="row.lockStatus === 1 || row.lockStatus === 4" style="font-size: 20px;" class="el-icon-lock" @click="handleLockStatus(row, 0)" />
+            </template>
+          </el-table-column>
           <el-table-column label="操作" align="center" min-width="270px" class-name="small-padding fixed-width">
             <template slot-scope="{row}">
-              <el-button v-if="row.isOnline!=1" plain size="mini" type="success" @click="handleDeviceStatus(row, 1)">上线</el-button>
-              <el-button v-if="row.isOnline!=0" plain size="mini" type="info" @click="handleDeviceStatus(row, 0)">下线</el-button>
+              <el-button v-if="row.isOnline === 0 || row.isOnline === 2 || row.isOnline === 3" plain size="mini" type="success" @click="handleDeviceStatus(row, 1)">激活</el-button>
+              <el-button v-if="row.isOnline==1" plain size="mini" type="info" @click="handleDeviceStatus(row, 0)">下线</el-button>
               <el-button type="primary" plain size="mini" @click="handleUpdate(row)">编辑</el-button>
               <el-button type="danger" size="mini" @click="deleteCodeData(row)">删除</el-button>
-              <el-button v-if="row.lockStatus===1 || row.lockStatus ===4" size="mini" type="info" @click="handleLockStatus(row, 0)">关锁</el-button>
+              <!-- <el-button v-if="row.lockStatus===1 || row.lockStatus ===4" size="mini" type="info" @click="handleLockStatus(row, 0)">关锁</el-button> -->
 
+              <!-- el-icon-lock -->
             </template>
           </el-table-column>
         </el-table>
         <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="dialogForUrl" width="400px" :center="true" :destroy-on-close="true">
+      <div ref="qrcodeContainer" class="qrcode" style="margin-left:13%;margin-top:-3%" />
+      <div style="font-size:16px;margin-left:32%;margin-top:5%;height:25px">
+        车辆ID:{{ urlData.vehicleId }}
+      </div>
+
+    </el-dialog>
 
     <!-- 新增 -->
     <el-dialog :title="textMap[dialogStatus]" :visible.sync="dialogFormVisible" width="40%">
@@ -215,6 +235,7 @@
 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 QRCode from 'qrcodejs2'
 
 var envSelections = []
 var consumerSelections = []
@@ -238,6 +259,7 @@ export default {
       dialogFormVisible: false,
       dialogDetailVisible: false,
       dialogUpdateVisible: false,
+      dialogForUrl: false,
       labelPosition: 'right',
       shouldShow: false,
       total: 0,
@@ -247,13 +269,24 @@ export default {
       page: 1,
       pageSize: 20,
       loading: false,
-      statusMaps: new Map([[1, '在线'], [0, '下线']]),
+      logoSrc: '',
+      appSrc: '',
+      payInfo: {},
+      isError: false,
+      textMap: {
+        update: '编辑',
+        create: '新增',
+        details: '设备详情',
+        url: '查看二维码'
+      },
+      urlData: '',
+      statusMaps: new Map([[0, '离线'], [1, '连接成功'], [2, '连接失败'], [3, '连接中']]),
       lockStatusMaps: new Map([[1, '已开锁'], [0, '已关锁'], [2, '开锁失败'], [3, '关锁成功'], [4, '关锁失败']]),
       statusOperateMaps: new Map([[1, '在线'], [0, '离线']]),
       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: '下线' }],
+      lockStatusOptions: [{ value: 1, label: '已开锁' }, { value: 0, label: '已关锁' }, { value: 2, label: '开锁失败' }, { value: 3, label: '关锁成功' }, { value: 4, label: '关锁失败' }, { value: 5, label: '关锁中' }],
+      deviceStatusOptions: [{ value: 0, label: '离线' }, { value: 1, label: '连接成功' }, { value: 2, label: '连接失败' }, { value: 3, label: '连接中' }],
       lockModelList: [],
       lockSupplierList: [],
       bikeModelList: [],
@@ -266,11 +299,7 @@ export default {
         // creator: ''
 
       },
-      textMap: {
-        update: '编辑',
-        create: '新增',
-        details: '设备详情'
-      },
+
       userInformation: localStorage.getItem('username'),
       userNames: localStorage.getItem('realname'),
       userData: '',
@@ -352,20 +381,25 @@ export default {
       })
     },
 
-    // 搜索
-    getDevicesList(vel) {
-      this.listQuery = vel
-      this.page = 1
-      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
+    // 查看二维码
+    checkUrl(ele) {
+      this.dialogForUrl = true
+      this.dialogStatus = 'url'
+      this.urlData = ele
+      this.$nextTick(() => {
+        new QRCode(this.$refs.qrcodeContainer, {
+          text: this.urlData.lockNoUrl,
+          with: 100,
+          height: 250,
+          colorDark: '#000000',
+          colorLight: '#ffffff',
+          correctLevel: QRCode.CorrectLevel.H
+        })
       })
     },
+
     // 搜索
-    getDevicesListInSearch(vel) {
+    getDevicesList(vel) {
       this.listQuery = vel
       this.listQuery.pageSize = this.pageSize
       this.listQuery.page = this.page
@@ -398,7 +432,7 @@ export default {
     },
     updateData(vel) {
       this.bizData = {
-        lockNo: vel.lockNo,
+        deviceId: vel.deviceId,
         lockBatteryLevel: vel.lockBatteryLevel,
         deviceLat: vel.deviceLat,
         deviceLng: vel.deviceLng
@@ -452,22 +486,24 @@ export default {
     handleDeviceStatus(row, isOnline) {
       if (isOnline === 1) {
         deviceOnline(row.lockNo).then(response => {
+          console.log('关锁' + response)
           if (response.code === 200) {
             row.isOnline = isOnline
             this.$message({ message: '锁ID:' + row.lockNo.toString() + ' ' + this.statusOperateMaps.get(isOnline) + '成功!', type: 'success' })
           } else {
-            this.$message({ message: '锁ID:' + row.lockNo.toString() + ' ' + this.statusOperateMaps.get(isOnline) + '失败!', type: 'danger' })
+            this.$message({ message: '锁ID:' + row.lockNo.toString() + ' ' + this.statusOperateMaps.get(isOnline) + '失败!' + '原因:' + response.msg.toString(), type: 'danger' })
           }
         })
       }
       if (isOnline === 0) {
         deviceOffline(row.deviceId).then(response => {
-          console.log(row.deviceId)
+          console.log('关锁' + response)
           if (response.code === 200) {
             row.isOnline = isOnline
             this.$message({ message: '锁ID:' + row.lockNo.toString() + ' ' + this.statusOperateMaps.get(isOnline) + '成功!', type: 'success' })
           } else {
-            this.$message({ message: '锁ID:' + row.lockNo.toString() + ' ' + this.statusOperateMaps.get(isOnline) + '失败!', type: 'danger' })
+            this.$message({ message: '锁ID:' + row.lockNo.toString() + ' ' + this.statusOperateMaps.get(isOnline) + '失败!' + '原因:' + response.msg.toString(), type: 'danger' })
+            console.log(response)
           }
         })
       }
@@ -481,7 +517,7 @@ export default {
             row.lockStatus = lockStatus
             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' })
+            this.$message({ message: '锁ID:' + row.lockNo.toString() + ' ' + this.lockStatusMaps.get(lockStatus) + '失败!' + '原因:' + response.msg.toString(), type: 'danger' })
           }
         })
       }
@@ -500,7 +536,7 @@ export default {
             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' })
+            this.$message({ message: '锁ID:' + row.lockNo.toString() + ' ' + this.lockStatusMaps.get(lockStatus) + '失败!' + '原因:' + response.msg.toString(), type: 'danger' })
           }
         })
       }
@@ -517,10 +553,10 @@ export default {
             console.log(response)
             if (response.code === 200) {
               this.getMyDevicesList()
-              this.$notify({ title: 'Success', message: response.msg, type: 'success', duration: 3000 })
+              this.successFun()
               this.dialogFormVisible = false
             } else {
-              this.$notify({ title: 'Failed', message: response.msg, type: 'error', duration: 3000 })
+              this.errorFun(response.msg)
             }
           }).catch((error) => {
             console.log('2323' + error)
@@ -538,13 +574,22 @@ export default {
         }
       }))
     },
+    clearValidate(formName) {
+      this.$refs[formName].clearValidate()
+    },
+    successFun() {
+      this.$notify({ title: 'Success', message: 'Created Successfully', type: 'success', duration: 5000 })
+    },
+    errorFun(msg) {
+      this.$notify({ title: 'Failed', message: msg, type: 'error', duration: 5000 })
+    },
     handleSizeChange(size) {
       this.pageSize = size
-      this.getDevicesListInSearch(this.listQuery)
+      this.getDevicesList(this.listQuery)
     },
     handleCurrentChange(page) {
       this.page = page
-      this.getDevicesListInSearch(this.listQuery)
+      this.getDevicesList(this.listQuery)
     },
     redirectTo(id, mehtodName, methodProtocol) {
       console.log(methodProtocol)