反馈修改

This commit is contained in:
仲么了
2023-08-17 15:37:19 +08:00
parent 6bc28e4f44
commit 9423ad6216
13 changed files with 331 additions and 143 deletions

View File

@@ -1,4 +1,4 @@
const debug = false // true 是连地服务端本地false 是连接线上 const debug = true // true 是连地服务端本地false 是连接线上
const development = { const development = {
domain: 'http://192.168.1.115:10215', domain: 'http://192.168.1.115:10215',

View File

@@ -36,8 +36,6 @@ export default {
html2canvas(dom, { html2canvas(dom, {
scale: 2, scale: 2,
useCORS: true, useCORS: true,
width: dom.offsetWidth,
height: dom.offsetHeight,
dpi: 300, dpi: 300,
taintTest: true, taintTest: true,
}).then((canvas) => { }).then((canvas) => {
@@ -49,7 +47,7 @@ export default {
}).catch((err) => { }).catch((err) => {
console.log(err) console.log(err)
}) })
}, 1000); }, 3000);
} }
} }
} }

View File

@@ -13,7 +13,7 @@
"padding-right": "20rpx", "padding-right": "20rpx",
"buttons": [ "buttons": [
{ {
"text": "请选择工程", "text": "请先创建工程",
"fontSize": "28rpx", "fontSize": "28rpx",
"select": true, "select": true,
"width": "auto" "width": "auto"

View File

@@ -118,6 +118,7 @@ export default {
position: '26eae70fb5ff1c090d2dc7c3a0743948', position: '26eae70fb5ff1c090d2dc7c3a0743948',
}, },
] ]
console.log(this.deviceInfo)
this.deviceInfo.appsLineTopologyDiagramPO.forEach((item1) => { this.deviceInfo.appsLineTopologyDiagramPO.forEach((item1) => {
if (item1.value.length === 0) { if (item1.value.length === 0) {
return return

View File

@@ -32,14 +32,14 @@
<view class="item">模块一</view> <view class="item">模块一</view>
<view class="item"> <view class="item">
<view class="status-point-success mr10"></view> <view class="status-point-success mr10"></view>
<view style="width: 30rpx"> 15 </view> <view style="width: 30rpx"> 15</view>
<view> °C </view> <view> °C</view>
</view> </view>
<view class="item">模块二</view> <view class="item">模块二</view>
<view class="item"> <view class="item">
<view class="status-point-error mr10"></view> <view class="status-point-error mr10"></view>
<view style="width: 30rpx"> 0 </view> <view style="width: 30rpx"> 0</view>
<view> °C </view> <view> °C</view>
</view> </view>
</view> </view>
</view> </view>
@@ -101,10 +101,11 @@ import xieBo from './comp/xieBo.vue'
import power from './comp/power.vue' import power from './comp/power.vue'
import oscillogram from './comp/oscillogram.vue' import oscillogram from './comp/oscillogram.vue'
import IO from './comp/IO.vue' import IO from './comp/IO.vue'
import { queryTopologyDiagram, deleteDevice } from '@/common/api/device' import {queryTopologyDiagram, deleteDevice} from '@/common/api/device'
import { MQTT_IP, MQTT_OPTIONS } from '@/common/js/mqtt.js' import {MQTT_IP, MQTT_OPTIONS} from '@/common/js/mqtt.js'
import mqtt from 'mqtt/dist/mqtt.js' import mqtt from 'mqtt/dist/mqtt.js'
import { base64ToPath, pathToBase64 } from 'image-tools' import {base64ToPath, pathToBase64} from 'image-tools'
export default { export default {
components: { components: {
basic, basic,
@@ -203,17 +204,17 @@ export default {
} else if (e.item.text === '下载') { } else if (e.item.text === '下载') {
this.$util.toast('下载成功') this.$util.toast('下载成功')
} else if (e.item.text === '记录') { } else if (e.item.text === '记录') {
uni.navigateTo({ url: '/pages/device/APF/record' }) uni.navigateTo({url: '/pages/device/APF/record'})
} else if (e.item.text === '告警') { } else if (e.item.text === '告警') {
uni.navigateTo({ url: '/pages/device/APF/report' }) uni.navigateTo({url: '/pages/device/APF/report'})
} else if (e.item.text === '关于') { } else if (e.item.text === '关于') {
uni.navigateTo({ url: '/pages/device/APF/about?id=' + this.devId }) uni.navigateTo({url: '/pages/device/APF/about?id=' + this.devId})
} else if (e.item.text === '移交') { } else if (e.item.text === '移交') {
uni.navigateTo({ url: '/pages/device/transfer?id=' + this.devId }) uni.navigateTo({url: '/pages/device/transfer?id=' + this.devId})
} else if (e.item.text === '反馈') { } else if (e.item.text === '反馈') {
uni.navigateTo({ url: '/pages/device/feedback' }) uni.navigateTo({url: '/pages/device/feedback'})
} else if (e.item.text === '用户') { } else if (e.item.text === '用户') {
uni.navigateTo({ url: '/pages/device/user' }) uni.navigateTo({url: '/pages/device/user'})
} else if (e.item.text === '报表') { } else if (e.item.text === '报表') {
this.$util.toast('效果是直接打开报表') this.$util.toast('效果是直接打开报表')
} else if (e.item.text === '版本') { } else if (e.item.text === '版本') {
@@ -221,15 +222,19 @@ export default {
} else if (e.item.text === '模版') { } else if (e.item.text === '模版') {
this.$util.toast('效果是功能暂未开放直接打开报表') this.$util.toast('效果是功能暂未开放直接打开报表')
} else if (e.item.text === '编辑') { } else if (e.item.text === '编辑') {
let data = JSON.parse(JSON.stringify(this.deviceInfo))
data.appsLineTopologyDiagramPO.forEach((item) => {
delete item.value
})
uni.navigateTo({ uni.navigateTo({
url: '/pages/device/edit?deviceInfo=' + encodeURIComponent(JSON.stringify(this.deviceInfo)), url: '/pages/device/edit?deviceInfo=' + encodeURIComponent(JSON.stringify(data)),
}) })
} }
this.$refs.fab.close() this.$refs.fab.close()
}, },
navMenuClick(idx) { navMenuClick(idx) {
this.navMenuActive = idx this.navMenuActive = idx
uni.pageScrollTo({ scrollTop: 0, duration: 0 }) uni.pageScrollTo({scrollTop: 0, duration: 0})
}, },
init() { init() {
if (this.isPrimaryUser == 1) { if (this.isPrimaryUser == 1) {
@@ -358,7 +363,7 @@ export default {
this.init() this.init()
queryTopologyDiagram(options.id).then((res) => { queryTopologyDiagram(options.id).then((res) => {
this.deviceInfo = res.data this.deviceInfo = res.data
uni.setNavigationBarTitle({ title: this.deviceInfo.devName || '设备详情' }) uni.setNavigationBarTitle({title: this.deviceInfo.devName || '设备详情'})
this.dictData.forEach((item) => { this.dictData.forEach((item) => {
if (item.code == 'Line_Position') { if (item.code == 'Line_Position') {
item.children.forEach((item2) => { item.children.forEach((item2) => {
@@ -387,6 +392,7 @@ export default {
height: 100%; height: 100%;
background-size: 100% 100%; background-size: 100% 100%;
} }
.header { .header {
position: relative; position: relative;
width: 375px; width: 375px;
@@ -399,6 +405,7 @@ export default {
image-rendering: crisp-edges; image-rendering: crisp-edges;
-ms-interpolation-mode: nearest-neighbor; -ms-interpolation-mode: nearest-neighbor;
} }
.point { .point {
position: absolute; position: absolute;
color: #111; color: #111;

View File

@@ -5,7 +5,7 @@
<uni-forms> <uni-forms>
<uni-forms-item label="设备识别码"> <uni-forms-item label="设备识别码">
<view style="display: flex"> <view style="display: flex">
<uni-easyinput type="text" v-model="formData.nDid" placeholder="请输入设备识别码" /> <uni-easyinput type="text" v-model="formData.nDid" placeholder="请输入设备识别码"/>
<uni-icons <uni-icons
type="camera" type="camera"
color="#007aff" color="#007aff"
@@ -18,25 +18,35 @@
</uni-forms> </uni-forms>
</view> </view>
<view class="btn-wrap"> <view class="btn-wrap">
<view class="btn-wrap-item" @click="register"> 发起注册 </view> <view class="btn-wrap-item" @click="register"> 发起注册</view>
</view> </view>
</template> </template>
<template v-else> <template v-else>
<view class="content"> <view class="content">
<uni-forms> <uni-forms>
<uni-forms-item label="项目"> <uni-forms-item label="项目">
<view style="display: flex;align-items: center">
<uni-data-select <uni-data-select
v-model="formData.projectId" v-model="formData.projectId"
:localdata="projectRange" :localdata="projectRange"
@change="queryTopologyDiagramPage" @change="queryTopologyDiagramPage"
></uni-data-select> ></uni-data-select>
<uni-icons
type="plusempty"
color="#007aff"
size="26"
class="ml20"
@click="createProject"
></uni-icons>
</view>
</uni-forms-item> </uni-forms-item>
<!-- <uni-forms-item label="型号"> <!-- <uni-forms-item label="型号">
<uni-data-select v-model="formData.type" :localdata="typeRange" <uni-data-select v-model="formData.type" :localdata="typeRange"
@change="typeChange(item)"></uni-data-select> @change="typeChange(item)"></uni-data-select>
</uni-forms-item> --> </uni-forms-item> -->
<uni-forms-item label="位置"> <uni-forms-item label="位置">
<view style="display: flex"> <view style="display: flex;">
<uni-easyinput <uni-easyinput
:clearable="false" :clearable="false"
type="textarea" type="textarea"
@@ -44,22 +54,22 @@
v-model="formData.area" v-model="formData.area"
placeholder="请输入位置信息" placeholder="请输入位置信息"
/> />
<!-- <uni-icons <uni-icons
type="location" type="location"
color="#007aff" color="#007aff"
size="26" size="26"
class="ml20" class="ml20"
@click="chooseLocation" @click="chooseLocation"
></uni-icons> --> ></uni-icons>
</view> </view>
</uni-forms-item> </uni-forms-item>
<uni-forms-item label="拓扑图" v-if="formData.projectId"> <uni-forms-item label="拓扑图" v-if="formData.projectId">
<view style="display: flex"> <view style="display: flex">
<view style="flex: 1"> <view style="flex: 1">
<view v-if="formData.topologyDiagramUrl"> <view v-if="formData.topologyDiagramUrl">
<image :src="formData.topologyDiagramUrl" style="width: 100%" mode="widthFix" /> <image :src="formData.topologyDiagramUrl" style="width: 100%" mode="widthFix"/>
</view> </view>
<view v-else class="gplot gplot-empty center" @click="chooseGplot"> 选择拓扑图 </view> <view v-else class="gplot gplot-empty center" @click="chooseGplot"> 选择拓扑图</view>
</view> </view>
<uni-icons <uni-icons
type="image" type="image"
@@ -84,10 +94,10 @@
</uni-forms-item> </uni-forms-item>
</uni-forms> </uni-forms>
</view> </view>
<image class="gplot-image" ref="gplot-image" :src="formData.topologyDiagramUrl" mode="widthFix" /> <image class="gplot-image" ref="gplot-image" :src="formData.topologyDiagramUrl" mode="widthFix"/>
<view class="btn-wrap"> <view class="btn-wrap">
<!-- <view class="btn-wrap-item" @click="add"> 添加监测点 </view> --> <!-- <view class="btn-wrap-item" @click="add"> 添加监测点 </view> -->
<view class="btn-wrap-item" @click="submit"> 提交 </view> <view class="btn-wrap-item" @click="submit"> 提交</view>
</view> </view>
<uni-drawer ref="gplot" mode="right" :mask-click="false"> <uni-drawer ref="gplot" mode="right" :mask-click="false">
<scroll-view style="height: 100%" scroll-y="true"> <scroll-view style="height: 100%" scroll-y="true">
@@ -101,9 +111,10 @@
v-for="(item, key) in imageList" v-for="(item, key) in imageList"
:key="key" :key="key"
/> />
<view v-if="imageList.length === 0" style="text-align: center" class="mt50 mb50">暂无拓扑图</view>
<view class="btn-wrap"> <view class="btn-wrap">
<view class="btn-wrap-item" @click="closeDrawer"> 取消 </view> <view class="btn-wrap-item" @click="closeDrawer"> 取消</view>
<view class="btn-wrap-item ml20" @click="confirmGplot"> 确定 </view> <view class="btn-wrap-item ml20" @click="confirmGplot"> 确定</view>
</view> </view>
</view> </view>
</scroll-view> </scroll-view>
@@ -112,7 +123,7 @@
<scroll-view style="height: 100%" scroll-y="true"> <scroll-view style="height: 100%" scroll-y="true">
<view style="background: #fff"> <view style="background: #fff">
<view class="map-pin-box"> <view class="map-pin-box">
<image class="gplot" mode="widthFix" :src="formData.topologyDiagramUrl" /> <image class="gplot" mode="widthFix" :src="formData.topologyDiagramUrl"/>
<movable-area class="map-pin-box-area"> <movable-area class="map-pin-box-area">
<movable-view :x="point.lat" :y="point.lng" direction="all" @change="dragPoint"> <movable-view :x="point.lat" :y="point.lng" direction="all" @change="dragPoint">
@@ -141,8 +152,8 @@
/> />
</uni-forms> </uni-forms>
<view class="btn-wrap"> <view class="btn-wrap">
<view class="btn-wrap-item" @click="closeDrawer"> 取消 </view> <view class="btn-wrap-item" @click="closeDrawer"> 取消</view>
<view class="btn-wrap-item ml20" @click="addPoint"> 确定 </view> <view class="btn-wrap-item ml20" @click="addPoint"> 确定</view>
</view> </view>
</view> </view>
</scroll-view> </scroll-view>
@@ -151,13 +162,14 @@
</view> </view>
</template> </template>
<script> <script>
import { registerDevice, getModel, addDevice, queryByTopoId } from '@/common/api/device.js' import {registerDevice, getModel, addDevice, queryByTopoId} from '@/common/api/device.js'
import { getProjectList, queryTopologyDiagramPage } from '@/common/api/project.js' import {getProjectList, queryTopologyDiagramPage} from '@/common/api/project.js'
export default { export default {
data() { data() {
return { return {
loading: false, loading: false,
type: 1, type: 2,
formData: { formData: {
nDid: '', nDid: '',
area: '', area: '',
@@ -174,7 +186,22 @@ export default {
isAdaptive: false, // 是否适应当前项目 isAdaptive: false, // 是否适应当前项目
} }
}, },
created() { onLoad() {
let dictData = uni.getStorageSync(this.$cacheKey.dictData)
dictData.forEach((item) => {
if (item.code == 'Line_Position') {
this.positionList = item.children.map((item) => {
return {
...item,
text: item.name,
value: item.id,
}
})
}
})
},
onShow() {
let engineering = uni.getStorageSync(this.$cacheKey.engineering) let engineering = uni.getStorageSync(this.$cacheKey.engineering)
getProjectList({ getProjectList({
pageNum: 1, pageNum: 1,
@@ -193,21 +220,14 @@ export default {
] ]
this.projectRange = arr this.projectRange = arr
}) })
let dictData = uni.getStorageSync(this.$cacheKey.dictData)
dictData.forEach((item) => {
if (item.code == 'Line_Position') {
this.positionList = item.children.map((item) => {
return {
...item,
text: item.name,
value: item.id,
}
})
}
})
}, },
methods: { methods: {
resize(){ createProject() {
uni.navigateTo({
url: '/pages/project/new?from=newDevice',
})
},
resize() {
console.log(this.$refs['gplot-image']); console.log(this.$refs['gplot-image']);
}, },
confirmGplot() { confirmGplot() {
@@ -240,7 +260,12 @@ export default {
}).then((res) => { }).then((res) => {
this.imageList = res.data.records this.imageList = res.data.records
this.activeGplot = 0 this.activeGplot = 0
if (this.imageList.length) {
this.confirmGplot() this.confirmGplot()
} else {
this.formData.topologyDiagramUrl = ''
this.formData.topologyDiagram = ''
}
}) })
}, 100) }, 100)
}, },
@@ -250,7 +275,8 @@ export default {
positionChange(e) { positionChange(e) {
console.log(e) console.log(e)
}, },
projectChange(e) {}, projectChange(e) {
},
scanCode() { scanCode() {
uni.scanCode({ uni.scanCode({
success: function (res) { success: function (res) {
@@ -355,7 +381,7 @@ export default {
console.log(res) console.log(res)
this.$util.toast('提交成功') this.$util.toast('提交成功')
setTimeout(() => { setTimeout(() => {
uni.navigateBack({ delta: 1 }) uni.navigateBack({delta: 1})
}, 1500) }, 1500)
}) })
}, },
@@ -396,6 +422,7 @@ export default {
width: 100%; width: 100%;
height: 188rpx; height: 188rpx;
} }
.gplot-empty { .gplot-empty {
margin: 0 auto; margin: 0 auto;
border: 1px dashed #dcdfe6; border: 1px dashed #dcdfe6;
@@ -473,6 +500,7 @@ export default {
.point-item:first-of-type { .point-item:first-of-type {
border-top: none; border-top: none;
} }
.gplot-image { .gplot-image {
position: absolute; position: absolute;
left: -9999px; left: -9999px;

View File

@@ -23,6 +23,7 @@
<uni-easyinput <uni-easyinput
type="textarea" type="textarea"
autoHeight autoHeight
maxlength="250"
v-model="formData.description" v-model="formData.description"
placeholder="请输入工程描述" placeholder="请输入工程描述"
/> />

View File

@@ -42,7 +42,8 @@
<script> <script>
import list from '../../common/js/list' import list from '../../common/js/list'
import { queryAllEnginner, csMarketDataAdd } from '@/common/api/engineering' import {queryAllEnginner, csMarketDataAdd, queryEngineering} from '@/common/api/engineering'
export default { export default {
data() { data() {
return { return {
@@ -107,7 +108,26 @@ export default {
}) })
}, },
}, },
onBackPress() {
console.log('onBackPress')
let engineering = uni.getStorageSync('engineering')
queryEngineering().then(res => {
if (res.data.length === 0) {
uni.removeStorage({
key: this.$cacheKey.engineering,
})
} else if (engineering && !res.data.some(item => item.id = engineering.id)) {
uni.removeStorage({
key: this.$cacheKey.engineering,
})
} else {
uni.setStorage({
key: this.$cacheKey.engineering,
data: res.data[0],
})
}
})
},
onLoad() { onLoad() {
this.init() this.init()
}, },
@@ -120,14 +140,17 @@ export default {
width: 100%; width: 100%;
display: flex; display: flex;
align-items: center; align-items: center;
&-left { &-left {
flex: 1; flex: 1;
margin-right: 20rpx; margin-right: 20rpx;
} }
} }
/deep/ .uni-list-item__content { /deep/ .uni-list-item__content {
padding-right: 0; padding-right: 0;
} }
.message-header { .message-header {
padding: 200rpx 34rpx 34rpx; padding: 200rpx 34rpx 34rpx;
display: flex; display: flex;

View File

@@ -72,7 +72,7 @@ export default {
cancelColor: '#007aff', cancelColor: '#007aff',
success: ({confirm, cancel}) => { success: ({confirm, cancel}) => {
if (confirm) { if (confirm) {
if (this.devCount.engineeringListLength > 1) { if (this.devCount.engineeringListLength > 0) {
uni.navigateTo({ uni.navigateTo({
url: '/pages/device/new', url: '/pages/device/new',
}) })

View File

@@ -23,7 +23,8 @@
<view class="header-item"> <view class="header-item">
<view class="header-item-value">{{ <view class="header-item-value">{{
devCount.currentOnLineDevCount + devCount.currentOffLineDevCount || 0 devCount.currentOnLineDevCount + devCount.currentOffLineDevCount || 0
}}</view> }}
</view>
<view class="header-item-label">设备总数</view> <view class="header-item-label">设备总数</view>
</view> </view>
<view class="header-item" @click="jump('currentOnLineDevs')"> <view class="header-item" @click="jump('currentOnLineDevs')">
@@ -60,7 +61,7 @@ export default {
}, },
methods: { methods: {
submitFeedBack() { submitFeedBack() {
uni.navigateTo({ url: '/pages/home/feedback' }) uni.navigateTo({url: '/pages/home/feedback'})
}, },
registerDevice() { registerDevice() {
uni.showModal({ uni.showModal({
@@ -69,16 +70,24 @@ export default {
confirmText: '直连装置', confirmText: '直连装置',
cancelText: '网关接入', cancelText: '网关接入',
cancelColor: '#007aff', cancelColor: '#007aff',
success: ({ confirm, cancel }) => { success: ({confirm, cancel}) => {
if (confirm) { if (confirm) {
if (this.devCount.engineeringListLength > 0) {
uni.navigateTo({ uni.navigateTo({
url: '/pages/device/new', url: '/pages/device/new',
}) })
} else if (cancel) { } else {
uni.navigateTo({ uni.navigateTo({
url: '/pages/gateway/list', url: '/pages/engineering/new?from=index'
}) })
} }
} else if (cancel) {
// uni.navigateTo({
// url: '/pages/gateway/list',
// })
this.$util.toast('功能正在开发,敬请期待')
}
}, },
}) })
}, },

View File

@@ -21,16 +21,18 @@
</uni-nav-bar> --> </uni-nav-bar> -->
<view class="index"> <view class="index">
<!-- 运维 --> <!-- 运维 -->
<YunWei :devCount="devCount" v-if="userInfo.authorities === 'operation_manager'" /> <YunWei :devCount="devCount" v-if="userInfo.authorities === 'operation_manager'"/>
<!-- 专职 --> <!-- 专职 -->
<ZhuanZhi :devCount="devCount" v-if="userInfo.authorities === 'market_user'" /> <ZhuanZhi :devCount="devCount" v-if="userInfo.authorities === 'market_user'"/>
<!-- 工程 --> <!-- 工程 -->
<GongCheng :devCount="devCount" v-if="userInfo.authorities === 'engineering_user'" /> <GongCheng :devCount="devCount" v-if="userInfo.authorities === 'engineering_user'"/>
<!-- 主用户 --> <!-- 主用户 -->
<ZhuYongHu :devCount="devCount" v-if="userInfo.authorities === 'app_vip_user'" /> <ZhuYongHu :devCount="devCount" v-if="userInfo.authorities === 'app_vip_user'"/>
<YouKe :devCount="devCount" v-if="userInfo.authorities === 'tourist'"> </YouKe> <YouKe :devCount="devCount" v-if="userInfo.authorities === 'tourist'"></YouKe>
<template v-if="engineeringList.length">
<view class="canneng-index-title mt20">设备列表</view> <view class="canneng-index-title mt20">设备列表</view>
<Device ref="device" :store="store" /> <Device ref="device" :store="store"/>
</template>
</view> </view>
<uni-drawer ref="showRight" mode="right" :mask-click="false"> <uni-drawer ref="showRight" mode="right" :mask-click="false">
<view> <view>
@@ -52,9 +54,9 @@ import ZhuanZhi from './comp/indexZhuanZhi.vue'
import YouKe from './comp/indexYouKe.vue' import YouKe from './comp/indexYouKe.vue'
import Device from './comp/device.vue' import Device from './comp/device.vue'
import list from '../../common/js/list' import list from '../../common/js/list'
import { getDevCount } from '../../common/api/device.js' import {getDevCount} from '../../common/api/device.js'
import { queryEngineering } from '@/common/api/engineering.js' import {queryEngineering} from '@/common/api/engineering.js'
import { pinyin } from 'pinyin-pro' import {pinyin} from 'pinyin-pro'
export default { export default {
mixins: [list], mixins: [list],
@@ -83,7 +85,7 @@ export default {
engineeringListFilter() { engineeringListFilter() {
let result = [] let result = []
this.engineeringList.forEach((item) => { this.engineeringList.forEach((item) => {
let arr = pinyin(item.name[0], { toneType: 'none', type: 'array' }) let arr = pinyin(item.name[0], {toneType: 'none', type: 'array'})
let letter = arr[0][0].toUpperCase() let letter = arr[0][0].toUpperCase()
console.log(letter) console.log(letter)
let index = result.findIndex((item) => item.letter === letter) let index = result.findIndex((item) => item.letter === letter)
@@ -105,14 +107,6 @@ export default {
// e的返回格式为json对象{"text":"测试","index":0} // e的返回格式为json对象{"text":"测试","index":0}
this.drawer = !this.drawer this.drawer = !this.drawer
if (this.drawer) { if (this.drawer) {
// #ifdef APP-PLUS
var webView = this.$mp.page.$getAppWebview()
// 修改buttons
webView.setTitleNViewButtonStyle(0, {
text: '取消',
select: false,
})
// #endif
this.openDrawer() this.openDrawer()
} else { } else {
this.closeDrawer() this.closeDrawer()
@@ -123,9 +117,18 @@ export default {
let res = await queryEngineering() let res = await queryEngineering()
this.engineeringList = res.data this.engineeringList = res.data
if (this.engineeringList.length === 0) { if (this.engineeringList.length === 0) {
console.log('没有工程')
uni.removeStorageSync(this.$cacheKey.engineering) uni.removeStorageSync(this.$cacheKey.engineering)
return this.projectList = []
} // 修改buttons
// #ifdef APP-PLUS
var webView = this.$mp.page.$getAppWebview()
// 修改buttons
webView.setTitleNViewButtonStyle(0, {
text: '请先创建工程',
})
// #endif
} else {
if (!engineering) { if (!engineering) {
uni.setStorageSync('engineering', res.data[0]) uni.setStorageSync('engineering', res.data[0])
this.select.engineeringName = res.data[0].name this.select.engineeringName = res.data[0].name
@@ -148,7 +151,13 @@ export default {
text: this.select.engineeringName, text: this.select.engineeringName,
}) })
// #endif // #endif
this.getDevCount()
this.$refs.device && this.$refs.device.init()
}
},
getDevCount() {
getDevCount(this.select.engineeringId).then((res) => { getDevCount(this.select.engineeringId).then((res) => {
// Object.assign(this.devCount, res.data)
this.devCount = res.data this.devCount = res.data
this.devCount.currentOffLineDevs.forEach((item) => { this.devCount.currentOffLineDevs.forEach((item) => {
item.runStatus = 1 item.runStatus = 1
@@ -159,7 +168,6 @@ export default {
this.devCount.engineeringListLength = this.engineeringList.length this.devCount.engineeringListLength = this.engineeringList.length
console.log(this.devCount); console.log(this.devCount);
}) })
this.$refs.device && this.$refs.device.init()
}, },
closeDrawer(e) { closeDrawer(e) {
if (!e) { if (!e) {
@@ -200,9 +208,7 @@ export default {
}) })
this.$refs.device.select.projectName = '' this.$refs.device.select.projectName = ''
this.$refs.device.select.projectNameIndex = 0 this.$refs.device.select.projectNameIndex = 0
getDevCount(this.select.engineeringId).then((res) => { this.getDevCount()
this.devCount = res.data
})
this.$refs.device.init() this.$refs.device.init()
this.$refs.showRight.close() this.$refs.showRight.close()
}, },
@@ -223,9 +229,8 @@ export default {
}, },
openDrawer(item) { openDrawer(item) {
if (this.engineeringList.length === 0) { if (this.engineeringList.length === 0) {
uni.showToast({ uni.navigateTo({
title: '暂无工程', url: '/pages/engineering/new',
icon: 'none',
}) })
return return
} else if (this.engineeringList.length === 1) { } else if (this.engineeringList.length === 1) {
@@ -235,6 +240,14 @@ export default {
}) })
return return
} }
// #ifdef APP-PLUS
var webView = this.$mp.page.$getAppWebview()
// 修改buttons
webView.setTitleNViewButtonStyle(0, {
text: '取消',
select: false,
})
// #endif
this.$refs.showRight.open() this.$refs.showRight.open()
}, },
}, },
@@ -261,11 +274,13 @@ export default {
.index { .index {
padding: 20rpx 0 0; padding: 20rpx 0 0;
} }
.canneng-index-title { .canneng-index-title {
padding: 0 20rpx; padding: 0 20rpx;
font-size: 28rpx; font-size: 28rpx;
font-weight: 500; font-weight: 500;
} }
/deep/ .uni-card { /deep/ .uni-card {
background: $uni-theme-white; background: $uni-theme-white;
} }

View File

@@ -130,6 +130,7 @@ export default {
engineeringList: [], engineeringList: [],
tempList: [], tempList: [],
project: null, project: null,
options: {}
} }
}, },
computed: { computed: {
@@ -153,6 +154,7 @@ export default {
}, },
}, },
onLoad(options) { onLoad(options) {
this.options = options
if (options.project) { if (options.project) {
uni.setNavigationBarTitle({ uni.setNavigationBarTitle({
title: '编辑项目', title: '编辑项目',
@@ -298,7 +300,7 @@ export default {
}) })
} }
console.log(arr) console.log(arr)
this.formData.topoIds = this.formData.tempFiles.map((item) => (item.topoId)) this.formData.topoIds = this.formData.tempFiles.map((item) => (item.id))
let data = JSON.parse(JSON.stringify(this.formData)) let data = JSON.parse(JSON.stringify(this.formData))
let res = {} let res = {}
console.warn(data, arr) console.warn(data, arr)
@@ -331,10 +333,14 @@ export default {
if (this.project) { if (this.project) {
this.$util.toast('项目修改成功') this.$util.toast('项目修改成功')
this.$util.refreshPrePage(2) this.$util.refreshPrePage(2)
} else {
if (this.options.from === 'newDevice') {
uni.navigateBack()
} else { } else {
this.$util.toast('项目创建成功') this.$util.toast('项目创建成功')
this.$util.refreshPrePage() this.$util.refreshPrePage()
} }
}
} else { } else {
this.$util.toast(result.message) this.$util.toast(result.message)
} }

View File

@@ -1,11 +1,23 @@
<template> <template>
<Cn-page :loading="loading">
<view slot="body">
<view class="transfer"> <view class="transfer">
<!-- <div class="transfer-img" ref="qrCodeUrl" /> --> <!-- <div class="transfer-img" ref="qrCodeUrl" /> -->
<uqrcode ref="uqrcode" canvas-id="qrcode" :value="content" :options="{ margin: 10 }" :loading="false"></uqrcode> <Cn-htmlToImg domId="content" @renderFinish="renderFinish" style="display: flex">
<canvas id="qrcode" width="200" height="200"></canvas> <view class="content" id="content">
<view class="transfer-text">{{ userInfo.nickname }}</view> <view class="user-info">
<image class="avatar" :src="userInfo.avatar"></image>
<view class="right">
<view class="user-info-name">{{ userInfo.nickname }}</view>
<view class="user-info-role">{{ roleName }}</view>
</view>
</view>
<uqrcode size="260" ref="uqrcode" canvas-id="qrcode" :value="content"
:loading="false"></uqrcode>
</view>
</Cn-htmlToImg>
<view class="transfer-text">
<!-- <view>换个样式</view>-->
<view @click="save">保存图片</view>
</view>
<!-- <view class="transfer-btn"> <!-- <view class="transfer-btn">
<button class="transfer-btn-item" style="background-color: #fff; color: #111" @click="back"> <button class="transfer-btn-item" style="background-color: #fff; color: #111" @click="back">
返回 返回
@@ -13,28 +25,69 @@
<button class="transfer-btn-item ml20" @click="home">转移成功</button> <button class="transfer-btn-item ml20" @click="home">转移成功</button>
</view> --> </view> -->
</view> </view>
</view>
</Cn-page>
</template> </template>
<script> <script>
// import QRCode from 'qrcodejs2' // import QRCode from 'qrcodejs2'
// import UQRCode from '@/uni_modules/Sansnn-uQRCode/js_sdk/uqrcode/uqrcode.js'; // import UQRCode from '@/uni_modules/Sansnn-uQRCode/js_sdk/uqrcode/uqrcode.js';
import {base64ToPath} from "image-tools";
import setting from "@/pages/engineering/setting.vue";
export default { export default {
data() { data() {
return { return {
loading: false, loading: false,
content: '', content: '',
img: '',
userInfo: {}, userInfo: {},
} }
}, },
computed: {
roleName() {
let roleName = ''
switch (this.userInfo.authorities) {
case 'tourist':
roleName = '游客'
break
case 'engineering_user':
roleName = '工程用户'
break
case 'app_vip_user':
roleName = 'VIP用户'
break
case 'market_user':
roleName = '营销用户'
break
case 'operation_manager':
roleName = '运维管理员'
break
}
return roleName
},
},
methods: { methods: {
back() { renderFinish(e) {
this.$util.refreshPrePage(2) this.img = e
}, },
home() { save() {
this.$util.refreshPrePage(2) if(!this.img){
setTimeout(()=>{
this.save()
},500)
}
base64ToPath(this.img).then((res) => {
console.log(res)
uni.saveImageToPhotosAlbum({
filePath: res,
success: () => {
this.$util.toast('已保存到系统相册')
}, },
fail: function (err) {
console.log(err)
},
});
})
}
}, },
onLoad(options) { onLoad(options) {
this.userInfo = uni.getStorageSync(this.$cacheKey.userInfo) this.userInfo = uni.getStorageSync(this.$cacheKey.userInfo)
@@ -46,19 +99,66 @@ export default {
} }
</script> </script>
<style lang="scss"> <style lang="scss">
.transfer { .content {
padding: 200rpx 34rpx 0; width: 330px;
padding: 30px 0;
border-radius: 12rpx;
overflow: hidden;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
justify-content: center;
background: #fff;
}
.user-info {
display: flex;
align-items: center;
margin-bottom: 50rpx;
width: 260px;
.avatar {
margin-right: 20rpx;
height: 100rpx;
width: 100rpx;
border-radius: 8rpx;
}
.right {
display: flex;
flex-direction: column;
justify-content: space-between;
.user-info-name {
font-size: 32rpx;
color: #333333;
}
.user-info-role {
margin-top: 10rpx;
font-size: 28rpx;
color: #999999;
}
}
}
.transfer {
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-between;
height: 100vh;
background: #fff;
box-sizing: border-box;
padding: 100rpx 0;
.transfer-img { .transfer-img {
} }
.transfer-text { .transfer-text {
display: flex;
font-size: 28rpx; font-size: 28rpx;
color: #999999; color: rgb(122, 126, 153);
margin-top: 30rpx;
} }
.transfer-btn { .transfer-btn {