|
@@ -0,0 +1,689 @@
|
|
|
+<template>
|
|
|
+ <div class="set-background">
|
|
|
+ <div class="block">
|
|
|
+ <el-form :model="listQuery">
|
|
|
+ <div class="set-head">
|
|
|
+ 车辆ID<el-input v-model="listQuery.vehicleId" placeholder="请填写" style="width:18%;" />
|
|
|
+ 锁ID <el-input v-model="listQuery.lockNo" placeholder="请填写" style="width:18%;" />
|
|
|
+ 锁类型 <el-select v-model="listQuery.lockModel" placeholder="请填写" style="width:18%;" filterable clearable>
|
|
|
+ <el-option v-for="item in lockModelList" :key="item.model" :label="item.modelName" :value="item.model" />
|
|
|
+ </el-select>
|
|
|
+ 状态 <el-select v-model="listQuery.lockStatus" placeholder="请填写" style="width: 18%;" filterable clearable>
|
|
|
+ <el-option v-for="item in lockStatusOptions" :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>
|
|
|
+ <el-button type="primary" icon="el-icon-edit" @click="dialogFormVisible = true, createdCode()">新增</el-button>
|
|
|
+ </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-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>
|
|
|
+ </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>
|
|
|
+ <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="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)" /> -->
|
|
|
+
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+
|
|
|
+ <el-pagination
|
|
|
+ align="center"
|
|
|
+ background
|
|
|
+ layout="prev, pager, next"
|
|
|
+ :total="1000"
|
|
|
+ />
|
|
|
+ </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>
|
|
|
+ <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>
|
|
|
+ </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%">
|
|
|
+ <th width="12%" height="40" style="background-color:#F1F4F7;">业务线</th>
|
|
|
+ <td width="15%">单车</td>
|
|
|
+ <th width="10%" style="background-color:#F1F4F7">锁ID</th>
|
|
|
+ <td width="15%"> {{ detailData.lockNo }}</td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <th width="12%" height="40" style="background-color:#F1F4F7">经度</th>
|
|
|
+ <td>{{ detailData.deviceLng }}</td>
|
|
|
+ <th style="background-color:#F1F4F7">纬度 </th>
|
|
|
+ <td> {{ detailData.deviceLat }}</td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <th width="12%" height="40" style="background-color:#F1F4F7">锁状态</th>
|
|
|
+ <td>{{ detailData.lockStatus }}</td>
|
|
|
+ <th style="background-color:#F1F4F7">车辆ID </th>
|
|
|
+ <td> {{ detailData.vehicleId }}</td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <th height="40" style="background-color:#F1F4F7">EcuID</th>
|
|
|
+ <td> {{ detailData.deviceId }}</td>
|
|
|
+ <th style="background-color:#F1F4F7">IccID</th>
|
|
|
+ <td> {{ detailData.iccid }}</td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <th height="40" style="background-color:#F1F4F7">电量信息</th>
|
|
|
+ <td> {{ detailData.lockBatteryLevel }}</td>
|
|
|
+ <th style="background-color:#F1F4F7">Mac地址</th>
|
|
|
+ <td> {{ detailData.macAddr }}</td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <th style="background-color:#F1F4F7">bluetooth_key</th>
|
|
|
+ <td> {{ detailData.bluetoothKey }}</td>
|
|
|
+ <th height="40" style="background-color:#F1F4F7">bluetoothPassword</th>
|
|
|
+ <td> {{ detailData.bluetoothPassword }}</td>
|
|
|
+ </tr>
|
|
|
+ </table>
|
|
|
+ </div>
|
|
|
+ <!-- </div> -->
|
|
|
+
|
|
|
+ </el-form>
|
|
|
+ <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>
|
|
|
+ <!-- 编辑 -->
|
|
|
+ <el-dialog :title="textMap[dialogStatus]" :visible.sync="dialogUpdateVisible" width="75%" class="setPercent">
|
|
|
+ <el-form ref="serviceDataForms" :rules="serviceDataRules" :model="serviceData" label-position="left" label-width="70px" style="width: 100%; margin-left:80px;">
|
|
|
+ <div class="set-font" style="width:100%">
|
|
|
+ <div class="block-edit">
|
|
|
+ <div style="display:flex;justify-content:space-between;width:92%">
|
|
|
+ <el-form-item label="经度" prop="deviceLat">
|
|
|
+ <el-input v-model="serviceData.deviceLat" style="width:100%;" placeholder="单车" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="电量" prop="lockBatteryLevel">
|
|
|
+ <el-input v-model="serviceData.lockBatteryLevel" style="width:100%;" placeholder="请填写" />
|
|
|
+ </el-form-item>
|
|
|
+ </div>
|
|
|
+ <div style="display:flex;justify-content:space-between;width:92%">
|
|
|
+ <el-form-item label="纬度" prop="deviceLng">
|
|
|
+ <el-input v-model="serviceData.deviceLng" style="width:100%;" placeholder="请填写" />
|
|
|
+ </el-form-item>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="block-edit table-th" style="width:82%">
|
|
|
+ <table cellspacing="0" width="103%;" bordercolor="#ddd" class="border-color">
|
|
|
+ <tr width="100%">
|
|
|
+ <th width="12%" height="40" style="background-color:#F1F4F7;">业务线</th>
|
|
|
+ <td width="15%">单车</td>
|
|
|
+ <th width="10%" style="background-color:#F1F4F7">锁ID</th>
|
|
|
+ <td width="15%"> {{ serviceData.lockNo }}</td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <th width="12%" height="40" style="background-color:#F1F4F7">锁状态</th>
|
|
|
+ <td>{{ serviceData.lockStatus }}</td>
|
|
|
+ <th style="background-color:#F1F4F7">车辆ID </th>
|
|
|
+ <td> {{ serviceData.vehicleId }}</td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <th height="40" style="background-color:#F1F4F7">EcuID</th>
|
|
|
+ <td> {{ serviceData.deviceId }}</td>
|
|
|
+ <th style="background-color:#F1F4F7">IccID</th>
|
|
|
+ <td> {{ serviceData.iccid }}</td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <th height="40" style="background-color:#F1F4F7">Mac地址</th>
|
|
|
+ <td> {{ serviceData.macAddr }}</td>
|
|
|
+ <th style="background-color:#F1F4F7">bluetooth_key</th>
|
|
|
+ <td> {{ serviceData.bluetoothKey }}</td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <th height="40" style="background-color:#F1F4F7">bluetooth_password</th>
|
|
|
+ <td> {{ serviceData.bluetoothPassword }}</td>
|
|
|
+ <th style="background-color:#F1F4F7" />
|
|
|
+ <td />
|
|
|
+ </tr>
|
|
|
+ </table>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </el-form>
|
|
|
+ <br><br><br>
|
|
|
+ <div slot="footer" class="dialog-footer">
|
|
|
+ <el-button @click="dialogUpdateVisible = false">取消</el-button>
|
|
|
+ <el-button v-if="showSubmitBtn" type="primary" @click="updateData(serviceData)">确定</el-button>
|
|
|
+ </div>
|
|
|
+ </el-dialog>
|
|
|
+
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+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) {
|
|
|
+ const statusMap = {
|
|
|
+ 1: 'success',
|
|
|
+ draft: 'info',
|
|
|
+ 0: 'danger'
|
|
|
+ }
|
|
|
+ return statusMap[status]
|
|
|
+ }
|
|
|
+ },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+
|
|
|
+ dialogFormVisible: false,
|
|
|
+ dialogDetailVisible: false,
|
|
|
+ dialogUpdateVisible: false,
|
|
|
+ shouldShow: false,
|
|
|
+ total: 0,
|
|
|
+ num: '',
|
|
|
+ tableKey: 0,
|
|
|
+ list: null,
|
|
|
+ curIndex: 1,
|
|
|
+ pageSize: 10,
|
|
|
+ statusMaps: new Map([[1, '在线'], [0, '下线']]),
|
|
|
+ lockStatusMaps: new Map([[1, '已开锁'], [0, '已关锁']]),
|
|
|
+ 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: '已关锁' }],
|
|
|
+ lockModelList: [],
|
|
|
+ lockSupplierList: [],
|
|
|
+ bikeModelList: [],
|
|
|
+ bikeSupplierList: [],
|
|
|
+ listQuery: {},
|
|
|
+ textMap: {
|
|
|
+ update: '编辑',
|
|
|
+ create: '新增',
|
|
|
+ details: '设备详情'
|
|
|
+ },
|
|
|
+ userInformation: localStorage.getItem('username'),
|
|
|
+ userNames: localStorage.getItem('realname'),
|
|
|
+ userData: '',
|
|
|
+ importanceOptions: [1, 2, 3],
|
|
|
+ envSelectDataType: '',
|
|
|
+ envSelections,
|
|
|
+ consumerSelections,
|
|
|
+ sortOptions: [{ label: 'ID Ascending', key: '+id' }, { label: 'ID Descending', key: '-id' }],
|
|
|
+ statusOptions: ['published', 'draft', 'deleted'],
|
|
|
+ showReviewer: false,
|
|
|
+ showSubmitBtn: true,
|
|
|
+ addDeviceData: {
|
|
|
+ bizType: '单车',
|
|
|
+ lockModel: '',
|
|
|
+ bikeModel: '',
|
|
|
+ deviceNum: '',
|
|
|
+ lockSupplier: '',
|
|
|
+ bikeSupplier: ''
|
|
|
+ },
|
|
|
+ detailData: {
|
|
|
+ bizType: '单车',
|
|
|
+ vehicleId: ''
|
|
|
+
|
|
|
+ },
|
|
|
+ serviceData: {
|
|
|
+ bizType: '单车'
|
|
|
+
|
|
|
+ },
|
|
|
+ serviceDataRules: {},
|
|
|
+ serviceDataExt: {
|
|
|
+ id: 0
|
|
|
+ },
|
|
|
+ dialogStatus: '',
|
|
|
+ listLoading: true,
|
|
|
+ dialogDetails: false,
|
|
|
+
|
|
|
+ dialogPvVisible: false,
|
|
|
+ pvData: [],
|
|
|
+ addDeviceDataRules: {
|
|
|
+ lockModel: [{ required: true, message: '锁类型不能为空', trigger: 'change' }],
|
|
|
+ bikeModel: [{ required: true, message: '车辆类型不能为空', trigger: 'change' }],
|
|
|
+ deviceNum: [{ required: true, message: '车辆个数不能为空', trigger: 'change' }],
|
|
|
+ lockSupplier: [{ required: true, message: '锁供应商不能为空', trigger: 'change' }],
|
|
|
+ bikeSupplier: [{ required: true, message: '车辆供应商不能为空', trigger: 'change' }]
|
|
|
+
|
|
|
+ },
|
|
|
+ downloadLoading: false
|
|
|
+ }
|
|
|
+ },
|
|
|
+ created() {
|
|
|
+ this.getMyDevicesList()
|
|
|
+ this.getLockModelList()
|
|
|
+ },
|
|
|
+ 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()
|
|
|
+ },
|
|
|
+ // 查看设备详情
|
|
|
+ deviceDetails(vel) {
|
|
|
+ this.dialogStatus = 'details'
|
|
|
+ console.log('参数:' + vel)
|
|
|
+ this.detailData = vel
|
|
|
+ },
|
|
|
+
|
|
|
+ // 获取锁类型、锁供应商类型
|
|
|
+ getLockModelList() {
|
|
|
+ queryLockCreateInfo().then(response => {
|
|
|
+ // console.log(response.data)
|
|
|
+ this.lockModelList = response.data.modelInfos
|
|
|
+ this.lockSupplierList = response.data.supplierInfos
|
|
|
+ })
|
|
|
+ // queryLockCreateInfo().catch(res => {
|
|
|
+ // console.log(res)
|
|
|
+ // })
|
|
|
+ },
|
|
|
+
|
|
|
+ // 获取车类型、车供应商
|
|
|
+ chooseLockType() {
|
|
|
+ // console.log(this.addDeviceData.lockModel)
|
|
|
+ queryVehicleCreateInfo(this.addDeviceData.lockModel).then(response => {
|
|
|
+ // console.log(response.data)
|
|
|
+ this.bikeModelList = response.data.modelInfos
|
|
|
+ this.bikeSupplierList = response.data.supplierInfos
|
|
|
+ console.log(this.bikeModelList)
|
|
|
+ })
|
|
|
+ },
|
|
|
+
|
|
|
+ // 搜索
|
|
|
+ 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.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.total = response.data.total
|
|
|
+ console.log(this.detailData)
|
|
|
+ })
|
|
|
+ },
|
|
|
+ // 编辑
|
|
|
+ handleUpdate(vel) {
|
|
|
+ console.log(vel)
|
|
|
+ this.dialogStatus = 'update'
|
|
|
+ this.serviceData = vel
|
|
|
+ this.dialogUpdateVisible = true
|
|
|
+ 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
|
|
|
+ }
|
|
|
+
|
|
|
+ updateLockAttr(this.bizData).then(response => {
|
|
|
+ if (response.code === 200) {
|
|
|
+ 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 })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ // 删除设备
|
|
|
+ explain() {
|
|
|
+ if (this.showexplain === false) {
|
|
|
+ this.showexplain = true
|
|
|
+ } else {
|
|
|
+ this.showexplain = false
|
|
|
+ }
|
|
|
+ },
|
|
|
+ deleteCodeData(e) {
|
|
|
+ this.$confirm('确定要删除这条车辆信息吗?', '提示', {
|
|
|
+ confirmButtonText: '确定',
|
|
|
+ cancelButtonText: '取消',
|
|
|
+ type: 'warning'
|
|
|
+ }).then(() => {
|
|
|
+ this.handleDelete(e)
|
|
|
+ }).catch(() => {
|
|
|
+ this.$message({
|
|
|
+ type: 'info',
|
|
|
+ message: '已取消删除'
|
|
|
+ })
|
|
|
+ })
|
|
|
+ },
|
|
|
+
|
|
|
+ handleDelete(row) {
|
|
|
+ // var deleteData = { 'vehicleId': row.vehicleId }
|
|
|
+ deleteDevice(row.vehicleId).then(response => {
|
|
|
+ if (response.code === 200) {
|
|
|
+ this.getMyDevicesList()
|
|
|
+ this.$notify({ title: 'Success', message: response.msg, type: 'success', duration: 3000 })
|
|
|
+ } else {
|
|
|
+ this.getMyDevicesList()
|
|
|
+ this.$notify({ title: 'Failed', message: response.msg, type: 'error', duration: 3000 })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+
|
|
|
+ // 设备上线、下线调用
|
|
|
+ handleDeviceStatus(row, isOnline) {
|
|
|
+ // var statusData = { 'lockNo': row.lockNo }
|
|
|
+ if (isOnline === 1) {
|
|
|
+ deviceOnline(row.lockNo).then(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' })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ if (isOnline === 0) {
|
|
|
+ deviceOffline(row.lockNo).then(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' })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ // 点击锁开启,关闭时调用
|
|
|
+ handleLockStatus(row, lockStatus) {
|
|
|
+ if (lockStatus === 1) {
|
|
|
+ unlockVehicle(row.lockNo).then(response => {
|
|
|
+ if (response.code === 200) {
|
|
|
+ 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' })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ if (lockStatus === 0) {
|
|
|
+ lockVehicle(row.vehicleId).then(response => {
|
|
|
+ if (response.code === 200) {
|
|
|
+ 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' })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ // 新建点击提交时调用
|
|
|
+ createData(ele) {
|
|
|
+ this.$refs['addDeviceForms'].validate((valid) => {
|
|
|
+ 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 => {
|
|
|
+ console.log(response)
|
|
|
+ if (response.code === 200) {
|
|
|
+ this.getMyDevicesList()
|
|
|
+ this.$notify({ title: 'Success', message: response.msg, type: 'success', duration: 3000 })
|
|
|
+ this.dialogFormVisible = false
|
|
|
+ } else {
|
|
|
+ this.$notify({ title: 'Failed', message: response.msg, type: 'error', duration: 3000 })
|
|
|
+ }
|
|
|
+ }).catch((error) => {
|
|
|
+ console.log('2323' + error)
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+
|
|
|
+ formatJson(filterVal, jsonData) {
|
|
|
+ return jsonData.map(v => filterVal.map(j => {
|
|
|
+ if (j === 'timestamp') {
|
|
|
+ return parseTime(v[j])
|
|
|
+ } else {
|
|
|
+ return v[j]
|
|
|
+ }
|
|
|
+ }))
|
|
|
+ },
|
|
|
+ redirectTo(id, mehtodName, methodProtocol) {
|
|
|
+ console.log(methodProtocol)
|
|
|
+ this.$router.push({
|
|
|
+ path: `/mock/httpmock/${id}`, query: { mehtodName: mehtodName, methodProtocol: methodProtocol }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+</script>
|
|
|
+<style lang="stylus" scoped>
|
|
|
+ .set-background
|
|
|
+ background-color #F1F4F7
|
|
|
+ display flex
|
|
|
+ justify-content center
|
|
|
+ min-width 700px
|
|
|
+ .setPercent >>> .el-dialog__body
|
|
|
+ width 100%
|
|
|
+ .block
|
|
|
+ background-color rgba(255,255,255,1)
|
|
|
+ box-shadow 0px 0px 11px 0px rgba(238,240,245,1)
|
|
|
+ border-radius 7px
|
|
|
+ width 93%
|
|
|
+ margin 25px 0
|
|
|
+ padding 20px
|
|
|
+ min-height calc(100vh - 100px)
|
|
|
+ .block >>> .el-form
|
|
|
+ display flex
|
|
|
+ justify-content space-between
|
|
|
+ .block >>> .el-form-item
|
|
|
+ display flex
|
|
|
+ width 20%
|
|
|
+ margin-right 10px
|
|
|
+ .block >>> .el-select
|
|
|
+ width 13%
|
|
|
+ margin-right 10px
|
|
|
+ .block >>> .el-form-item__content
|
|
|
+ margin-left 0 !important
|
|
|
+ .block >>> th
|
|
|
+ background-color #F0F7FF !important
|
|
|
+ .set-head
|
|
|
+ font-size 13px
|
|
|
+ width 100%
|
|
|
+ color #333B4A
|
|
|
+ // .set-head >>> .el-input
|
|
|
+ // width 18%
|
|
|
+ .set-between
|
|
|
+ display flex
|
|
|
+ .set-between >>> .el-button
|
|
|
+ height 40px
|
|
|
+ .set-locate
|
|
|
+ margin-top 20px
|
|
|
+ .specail-lock
|
|
|
+ display flex
|
|
|
+ justify-content center
|
|
|
+ .el-icon-lock
|
|
|
+ font-size 20px
|
|
|
+ margin 4px 7px 0 0
|
|
|
+ opacity 0.7
|
|
|
+ .set-font >>> .el-input__inner
|
|
|
+ color #3e3c3c
|
|
|
+ .set-font >>> .is-disabled input::placeholder
|
|
|
+ color #3e3c3c
|
|
|
+ .block-edit
|
|
|
+ background-color rgba(255,255,255,1)
|
|
|
+ box-shadow 0px 0px 11px 0px rgba(238,240,245,1)
|
|
|
+ border-radius 7px
|
|
|
+ width 59vw
|
|
|
+ margin-top 25px
|
|
|
+ padding 20px
|
|
|
+ .table-th
|
|
|
+ text-align center
|
|
|
+ .border-color
|
|
|
+ margin-left -12px
|
|
|
+ border-right 0px solid #dcdfe6
|
|
|
+ border-bottom 0px solid #dcdfe6
|
|
|
+ border-left 1px solid #dcdfe6
|
|
|
+ border-top 1px solid #dcdfe6
|
|
|
+ .border-color td
|
|
|
+ border-bottom 1px solid #dcdfe6
|
|
|
+ border-right 1px solid #dcdfe6
|
|
|
+ .border-color th
|
|
|
+ border-bottom 1px solid #dcdfe6
|
|
|
+ border-right 1px solid #dcdfe6
|
|
|
+ .table-th >>> .table
|
|
|
+ border-top 1px solid #999
|
|
|
+ border-left 1px solid #999
|
|
|
+ border-spacing 0
|
|
|
+
|
|
|
+</style>
|