| | |
| | | <swiper v-if="pageList.length > 0" circular indicator-dots class="swiper" :current="currentPage" |
| | | @change="changeSwiper"> |
| | | <swiper-item v-for="(page,index) in pageList" class="swiper-item"> |
| | | <view class="vehicle-header"> |
| | | <view class="link-view"> |
| | | <view v-if="page.link_status"> |
| | | <!-- <image class="img-battery-charging" src="/images/bx_battery3.svg" alt="SVG 图片" /> --> |
| | | <image class="img-battery-charging" src="/images/bx_battery2.svg" alt="SVG 图片" /> |
| | | <image class="img-battery-soc" :style="{width:(page.soc*0.4)+'rpx'}" |
| | | src="/images/bx_battery4.svg" alt="SVG 图片" /> |
| | | |
| | | <view class="vehicle-header"> |
| | | <view class="link-view"> |
| | | <view v-if="page.link_status"> |
| | | <!-- <image class="img-battery-charging" src="/images/bx_battery3.svg" alt="SVG 图片" /> --> |
| | | <image class="img-battery-charging" src="/images/bx_battery2.svg" alt="SVG 图片" /> |
| | | <image class="img-battery-soc" :style="{width:(page.soc*0.4)+'rpx'}" |
| | | src="/images/bx_battery4.svg" alt="SVG 图片" /> |
| | | |
| | | </view> |
| | | <view v-else> |
| | | <image class="img-battery" src="/images/bx_battery1.svg" alt="SVG 图片" /> |
| | | </view> |
| | | <template v-if="page.link_status"> |
| | | <view class="soc-text">{{page.soc}}%</view> |
| | | <view class="status-text">{{getAgvStateText(page)}}</view> |
| | | </template> |
| | | |
| | | |
| | | <view v-else class="gray-text">已离线</view> |
| | | </view> |
| | | </view> |
| | | <image class="vehicle-img " :class="page.link_status ?'':'gray-image'" mode="aspectFit" |
| | | src="/images/che.png" alt="图片" /> |
| | | <view v-if="page.link_status" class="img-button-group"> |
| | | <view type="primary" plain="true" class="img-text-button" @click="clickToMap(index,page)"> |
| | | <a-button class="img-button" color='primary'> |
| | | <text class="ico map" /> |
| | | </a-button> |
| | | <text>场景构建</text> |
| | | |
| | | </view> |
| | | <view v-else> |
| | | <image class="img-battery" src="/images/bx_battery1.svg" alt="SVG 图片" /> |
| | | <view type="primary" class="img-text-button" @click="clickToTask(page)"> |
| | | <a-button class="img-button" color='primary'> |
| | | <text class="ico task-list" /> |
| | | </a-button> |
| | | <text>任务记录</text> |
| | | </view> |
| | | <template v-if="page.link_status"> |
| | | <view class="soc-text">{{page.soc}}%</view> |
| | | <view class="status-text">{{getAgvStateText(page)}}</view> |
| | | </template> |
| | | |
| | | |
| | | <view v-else class="gray-text">已离线</view> |
| | | </view> |
| | | </view> |
| | | <image class="vehicle-img " :class="page.link_status ?'':'gray-image'" mode="aspectFit" |
| | | src="/images/image 11.png" alt="图片" /> |
| | | <view v-if="page.link_status" class="img-button-group"> |
| | | <view type="primary" class="img-text-button" @click="clickToTask(index,page)"> |
| | | <a-button class="img-button" color='primary' disabled> |
| | | <text class="ico task-list" /> |
| | | </a-button> |
| | | <text>任务列表</text> |
| | | </view> |
| | | <view type="primary" plain="true" class="img-text-button" @click="clickToMap(index,page)"> |
| | | <a-button class="img-button" color='primary'> |
| | | <text class="ico map" /> |
| | | </a-button> |
| | | <text>进入地图</text> |
| | | <view v-else class="unlink-content"> |
| | | <view class="content2" v-if="page.conntecting"> |
| | | <view class="auto-circle"></view> |
| | | |
| | | <view class="text">连接中...</view> |
| | | </view> |
| | | <view class="content2" v-else> |
| | | <view class="text"> 车辆已离线,请重新连接</view> |
| | | <a-button type="primary" class="button" @click="clickRelink">重新连接 |
| | | </a-button> |
| | | </view> |
| | | |
| | | </view> |
| | | </view> |
| | | <view v-else class="unlink-content"> |
| | | <view class="content2" v-if="page.conntecting"> |
| | | <view class="auto-circle"></view> |
| | | |
| | | <view class="text">连接中...</view> |
| | | </view> |
| | | <view class="content2" v-else> |
| | | <view class="text"> 车辆已离线,请重新连接</view> |
| | | <a-button type="primary" class="button" @click="clickRelink">重新连接 |
| | | </a-button> |
| | | </view> |
| | | |
| | | </view> |
| | | |
| | | |
| | | |
| | | </swiper-item> |
| | | <swiper-item class="swiper-item"> |
| | | <swiper-item class="swiper-item"> |
| | | |
| | | <image class="title-img gray-image" src="/images/image 15.png" alt="图片" /> |
| | | <image class="title-img gray-image" src="/images/image_15.png" alt="图片" /> |
| | | <view class="button-group"> |
| | | <a-button type="primary" class="button" @click="clickScanCode">扫描添加设备</a-button> |
| | | <a-button type="ghost" class="button" @click="clickManualAdd">手动添加设备</a-button> |
| | |
| | | </swiper> |
| | | <view v-else class="no-page items-center"> |
| | | <view class="content "> |
| | | <image class="title-img gray-image" src="/images/image 15.png" alt="图片" /> |
| | | <image class="title-img gray-image" src="/images/image_15.png" alt="图片" /> |
| | | <view class="button-group"> |
| | | <a-button type="primary" class="button" @click="clickScanCode">扫描添加设备</a-button> |
| | | <a-button type="ghost" class="button" @click="clickManualAdd">手动添加设备</a-button> |
| | |
| | | import { |
| | | session, |
| | | showToast, |
| | | showModal |
| | | showModal, |
| | | showError, |
| | | showInfo |
| | | } from "@/comm/utils.js" |
| | | import { |
| | | getAllScene, |
| | | mtBattery, |
| | | getAgvState, |
| | | checkIpLinkSuccess, |
| | |
| | | console.log("hide") |
| | | }, |
| | | computed: { |
| | | |
| | | tabList() { |
| | | return [...this.pageList, { |
| | | ip: "" |
| | | }] |
| | | } |
| | | }, |
| | | |
| | | methods: { |
| | | setData(obj) { |
| | | let that = this; |
| | |
| | | break |
| | | } |
| | | } |
| | | |
| | | this.pageList = [...list] |
| | | this.setData({ |
| | | pageList: list |
| | | }) |
| | | //this.pageList = [...list] |
| | | } else { |
| | | this.setData({ |
| | | currentPage: curIndex |
| | |
| | | } |
| | | } catch (ex) { |
| | | |
| | | this.showError(ex) |
| | | showError(ex) |
| | | } |
| | | }, |
| | | |
| | | async loadVehicleBattery() { |
| | | try { |
| | | |
| | | |
| | | const list = this.pageList |
| | | if (this.currentPage < list.length && this.currentPage > -1) { |
| | | const page = list[this.currentPage] |
| | |
| | | page.soc = 0 |
| | | page.link_status = false |
| | | } |
| | | this.pageList = [...list] |
| | | } |
| | | this.pageList = [...list] |
| | | |
| | | // this.pageList = [...list] |
| | | |
| | | } catch (ex) { |
| | | this.showError(ex) |
| | | // showError(ex) |
| | | showToast(ex) |
| | | } |
| | | |
| | | }, |
| | |
| | | this.navigationBarTitle = "添加设备" |
| | | else |
| | | this.navigationBarTitle = this.pageList[this.currentPage].name |
| | | this.loadVehicleBattery() |
| | | }, |
| | | async clickRelink() { |
| | | try { |
| | |
| | | } |
| | | } |
| | | } catch (ex) { |
| | | this.showError(ex) |
| | | showError(ex) |
| | | } |
| | | }, |
| | | async checkConnectSuccess(ip) { |
| | |
| | | this.inputPopupValue = "" |
| | | this.$refs.refPopupInput.open() |
| | | }, |
| | | clickToTask(index, page) { |
| | | showToast("该功能还在开发中") |
| | | // uni.navigateTo({ |
| | | // url: `/pages/task/index?ip=${page.ip}` |
| | | // }) |
| | | }, |
| | | |
| | | clickMore() { |
| | | if (this.currentPage < this.pageList.length) { |
| | | this.$refs.refPopupMenu.open("top") |
| | |
| | | pageList: list |
| | | }) |
| | | session.setValue("vehicles", list) |
| | | if (list.length > 0) |
| | | that.navigationBarTitle = that.pageList[that.currentPage].name |
| | | else |
| | | that.navigationBarTitle = "添加设备" |
| | | // if (list.length > 0) |
| | | // that.navigationBarTitle = that.pageList[that.currentPage].name |
| | | // else |
| | | // that.navigationBarTitle = "添加设备" |
| | | uni.reLaunch({ |
| | | url:"/pages/indde/index" |
| | | }) |
| | | }, |
| | | update_vehicle: function(data) { |
| | | console.log("update_vehicle", data) |
| | |
| | | } |
| | | }) |
| | | }, |
| | | async clickToMap(index, page) { |
| | | try { |
| | | console.log("clicktomap") |
| | | const _this = this |
| | | const res = await getAllScene(page.ip) || [] |
| | | const list = res?.sceneList || [] |
| | | if (list.length === 0) { |
| | | uni.navigateTo({ |
| | | url: `/pages/map/scene?ip=${page.ip}`, |
| | | events: { |
| | | // 为指定事件添加一个监听器,获取被打开页面传送到当前页面的数据 |
| | | create_finish: function() { |
| | | setTimeout(() => { |
| | | _this.clickToMap(index, page) |
| | | }, 500); |
| | | |
| | | clickToMap(index, page) { |
| | | const _this = this |
| | | uni.navigateTo({ |
| | | url: `/pages/map/index?ip=${page.ip}`, |
| | | events: { |
| | | // 为指定事件添加一个监听器,获取被打开页面传送到当前页面的数据 |
| | | check_connect: function(flag) { |
| | | page.link_status = flag |
| | | _this.checkPageConnected(index) |
| | | }, |
| | | }, |
| | | } |
| | | }) |
| | | return |
| | | } |
| | | // getApp().globalData.sceneList = list |
| | | |
| | | uni.navigateTo({ |
| | | url: `/pages/map/index?ip=${page.ip}`, |
| | | events: { |
| | | // 为指定事件添加一个监听器,获取被打开页面传送到当前页面的数据 |
| | | check_connect: function(flag) { |
| | | page.link_status = flag |
| | | console.log(flag) |
| | | _this.checkPageConnected(index) |
| | | }, |
| | | } |
| | | }) |
| | | } catch (ex) { |
| | | showError(ex) |
| | | } |
| | | |
| | | }, |
| | | clickToTask(page) { |
| | | |
| | | uni.navigateTo({ |
| | | url: `/pages/task/log-list?ip=${page.ip}` |
| | | }) |
| | | |
| | | }, |
| | | isValidIP(ip) { |
| | | // IPv4 地址正则表达式 |
| | |
| | | |
| | | } else if (item.text == "删除") { |
| | | const page = this.pageList[this.currentPage] |
| | | showModal(`确定要删除设备“${ page.name}”吗`, "警告").then((res) => { |
| | | showModal(`确定要删除设备“${ page.name}”吗`, "警告", true, "确定", "取消").then((res) => { |
| | | if (res) { |
| | | const list = this.pageList |
| | | const curPage = this.currentPage |
| | | let curPage = this.currentPage |
| | | list.splice(this.currentPage, 1) |
| | | this.setData({ |
| | | currentPage: curPage, |
| | | pageList: list |
| | | }) |
| | | |
| | | // this.setData({ |
| | | // currentPage: 0, |
| | | // pageList: list |
| | | // }) |
| | | console.log(curPage, this.currentPage, this.pageList) |
| | | session.setValue("vehicles", list) |
| | | if (list.length > 0) |
| | | this.navigationBarTitle = this.pageList[this.currentPage].name |
| | | else |
| | | this.navigationBarTitle = "添加设备" |
| | | // if (list.length > 0) |
| | | // this.navigationBarTitle = this.pageList[this.currentPage].name |
| | | // else |
| | | // this.navigationBarTitle = "添加设备" |
| | | uni.reLaunch({ |
| | | url: "/pages/index/index" |
| | | }) |
| | | |
| | | } |
| | | }) |
| | | } else if (item.text == "备份") { |
| | | const page = this.pageList[this.currentPage] |
| | | uni.navigateTo({ |
| | | |
| | | url: `/pages/index/backup?ip=${page.ip}` |
| | | }) |
| | | } |
| | | }, |
| | | showError(ex) { |
| | | let exStr = JSON.stringify(ex) |
| | | if (exStr == "{}") |
| | | exStr = ex |
| | | let tip = typeof ex.msg == "string" ? ex.msg : exStr |
| | | showModal(tip, "错误", false) |
| | | }, |
| | | closeMenu() { |
| | | this.$refs.refPopupMenu.close() |
| | |
| | | |
| | | .vehicle-img { |
| | | margin-top: 20rpx; |
| | | margin-left: calc(50% - 280rpx); |
| | | margin-left: calc(50% - 325rpx); |
| | | display: block; |
| | | width: 560rpx; |
| | | height: 560rpx; |
| | | width: 650rpx; |
| | | height: 692rpx; |
| | | |
| | | } |
| | | |
| | |
| | | margin-top: 150rpx; |
| | | margin-left: calc(750rpx - 330rpx); |
| | | width: 320rpx; |
| | | max-height: 50vh; |
| | | overflow: auto; |
| | | align-items: center; |
| | | justify-content: center; |
| | | flex-direction: column; |