页面接口推介
This commit is contained in:
@@ -87,3 +87,26 @@ export const queryTopologyDiagram = (devId) => {
|
||||
})
|
||||
}
|
||||
|
||||
// 设备扫码移交
|
||||
|
||||
export const transferDevice = (id) => {
|
||||
return request({
|
||||
url: '/cs-device-boot/deviceUser/transfer',
|
||||
method: 'POST',
|
||||
data: {
|
||||
eid:id,
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
// 设备删除
|
||||
|
||||
export const deleteDevice = (id) => {
|
||||
return request({
|
||||
url: '/cs-device-boot/deviceUser/delete',
|
||||
method: 'POST',
|
||||
data: {
|
||||
eid:id,
|
||||
},
|
||||
})
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
import request from '../js/request';
|
||||
import config from '../js/config';
|
||||
import request from '../js/request'
|
||||
import config from '../js/config'
|
||||
|
||||
export function addEngineering(params) {
|
||||
return request({
|
||||
@@ -9,10 +9,9 @@ export function addEngineering(params) {
|
||||
header: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
});
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
export function auditEngineering(params) {
|
||||
return request({
|
||||
url: '/cs-device-boot/engineering/auditEngineering',
|
||||
@@ -21,7 +20,7 @@ export function auditEngineering(params) {
|
||||
header: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
});
|
||||
})
|
||||
}
|
||||
|
||||
export function queryEngineering(params) {
|
||||
@@ -32,5 +31,20 @@ export function queryEngineering(params) {
|
||||
header: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
});
|
||||
})
|
||||
}
|
||||
|
||||
// 删除工程
|
||||
export function deleteEngineering(id) {
|
||||
return request({
|
||||
url: '/cs-device-boot/engineering/auditEngineering',
|
||||
method: 'post',
|
||||
data: {
|
||||
id: id,
|
||||
status: 0,
|
||||
},
|
||||
header: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
})
|
||||
}
|
||||
@@ -11,6 +11,17 @@ export function addAppProject(params, files) {
|
||||
formData: params,
|
||||
})
|
||||
}
|
||||
// 修改项目
|
||||
export function updateAppProject(params, files) {
|
||||
return uni.uploadFile({
|
||||
url: config.domain + '/cs-device-boot/project/auditAppProject', //仅为示例,非真实的接口地址
|
||||
files: files,
|
||||
header: {
|
||||
Authorization: uni.getStorageSync('access_token'),
|
||||
},
|
||||
formData: params,
|
||||
})
|
||||
}
|
||||
|
||||
export function getProjectList(params) {
|
||||
return request({
|
||||
@@ -23,6 +34,18 @@ export function getProjectList(params) {
|
||||
})
|
||||
}
|
||||
|
||||
// 删除项目
|
||||
export function deleteProject(id) {
|
||||
return request({
|
||||
url: '/cs-device-boot/project/auditAppProject',
|
||||
method: 'post',
|
||||
data: {
|
||||
id,
|
||||
status: 0,
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
// 查询拓扑图
|
||||
|
||||
export function queryTopologyDiagramPage(params) {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
const debug = false // true 是连地服务端本地,false 是连接线上
|
||||
|
||||
const development = {
|
||||
domain: 'http://192.168.1.139:10215',
|
||||
domain: 'http://192.168.1.115:10215',
|
||||
}
|
||||
|
||||
const production = {
|
||||
|
||||
@@ -200,24 +200,41 @@ const prePage = () => {
|
||||
}
|
||||
|
||||
const loginSuccess = (data) => {
|
||||
console.log(data);
|
||||
console.log(data)
|
||||
uni.setStorageSync('access_token', data.token_type + ' ' + data.access_token)
|
||||
uni.setStorageSync('refresh_token', data.refresh_token)
|
||||
let strings = data.access_token.split('.') //截取token,获取载体
|
||||
console.log(escape,atob);
|
||||
console.log(escape, atob)
|
||||
var userInfo = JSON.parse(decodeURIComponent(escape(atob(strings[1].replace(/-/g, '+').replace(/_/g, '/')))))
|
||||
userInfo.authorities = userInfo.authorities[0]
|
||||
uni.setStorageSync('userInfo', userInfo)
|
||||
console.log('reLaunch');
|
||||
console.log('reLaunch')
|
||||
queryDictDataCache().then((res) => {
|
||||
uni.setStorageSync(cacheKey.dictData, res.data)
|
||||
uni.reLaunch({
|
||||
url: '/pages/index/index',
|
||||
fail: (err) => {
|
||||
console.log(err);
|
||||
console.log(err)
|
||||
},
|
||||
})
|
||||
})
|
||||
}
|
||||
/**
|
||||
* 只针对列表页的刷新
|
||||
* @param {*} number
|
||||
* @param {*} time
|
||||
*/
|
||||
const refreshPrePage = (number = 1, time = 1500) => {
|
||||
let pages = getCurrentPages()
|
||||
let prePage = pages[pages.length - number - 1]
|
||||
if (prePage && time) {
|
||||
prePage.$vm.store.reload()
|
||||
setTimeout(() => {
|
||||
uni.navigateBack({
|
||||
delta: number,
|
||||
})
|
||||
})
|
||||
}, time)
|
||||
}
|
||||
}
|
||||
|
||||
export default {
|
||||
@@ -230,4 +247,5 @@ export default {
|
||||
loadConfig,
|
||||
prePage,
|
||||
loginSuccess,
|
||||
refreshPrePage,
|
||||
}
|
||||
|
||||
@@ -47,7 +47,7 @@ export default {
|
||||
}).catch((err) => {
|
||||
console.log(err)
|
||||
})
|
||||
}, 200);
|
||||
}, 1000);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,10 +7,8 @@
|
||||
<view class="loading" v-if="loading">
|
||||
<zero-loading v-if="loading"></zero-loading>
|
||||
</view>
|
||||
<template v-else>
|
||||
<slot name="body"></slot>
|
||||
</template>
|
||||
</template>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
@@ -20,7 +18,7 @@ export default {
|
||||
props: {
|
||||
loading: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
default: false,
|
||||
},
|
||||
showLoginMsk: Boolean,
|
||||
noPadding: Boolean,
|
||||
@@ -36,7 +34,7 @@ export default {
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang='scss'>
|
||||
<style lang="scss">
|
||||
.Cn-page {
|
||||
box-sizing: border-box;
|
||||
padding-bottom: calc(30rpx + env(safe-area-inset-bottom));
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
"name" : "灿能物联",
|
||||
"appid" : "__UNI__88BC25B",
|
||||
"description" : "",
|
||||
"versionName" : "1.0.3",
|
||||
"versionCode" : 102,
|
||||
"versionName" : "1.0.4",
|
||||
"versionCode" : 103,
|
||||
"transformPx" : false,
|
||||
/* 5+App特有相关 */
|
||||
"app-plus" : {
|
||||
@@ -132,7 +132,7 @@
|
||||
"/api" : {
|
||||
"https" : true,
|
||||
// "target" : "https://china.indpecker.com",
|
||||
"target" : "http://192.168.1.13:10215",
|
||||
"target" : "http://192.168.1.115:10215",
|
||||
"changOrigin" : true,
|
||||
"pathRewrite" : {
|
||||
"/api" : ""
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
{
|
||||
"dependencies": {
|
||||
"crypto-js": "^4.1.1",
|
||||
"html2canvas": "^1.4.1",
|
||||
"html2canvas": "1.0.0-rc.4",
|
||||
"image-tools": "^1.4.0",
|
||||
"mqtt": "3.0.0",
|
||||
"pinyin-pro": "^3.13.2",
|
||||
"qs": "^6.11.2",
|
||||
|
||||
10
pages.json
10
pages.json
@@ -387,6 +387,12 @@
|
||||
"style": {
|
||||
"navigationBarTitleText": "资料库"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/mine/result",
|
||||
"style": {
|
||||
"navigationBarTitleText": "操作成功"
|
||||
}
|
||||
}
|
||||
],
|
||||
"tabBar": {
|
||||
@@ -437,8 +443,6 @@
|
||||
"condition": {
|
||||
//模式配置,仅开发期间生效
|
||||
"current": 0, //当前激活的模式(list 的索引项)
|
||||
"list": [
|
||||
|
||||
]
|
||||
"list": []
|
||||
}
|
||||
}
|
||||
@@ -2,7 +2,7 @@
|
||||
<Cn-page :loading='loading'>
|
||||
<view slot='body'>
|
||||
<view class='about'>
|
||||
<view class='about-title'>盛弘APF</view>
|
||||
<view class='about-title'>灿能APF</view>
|
||||
<view class='about-text'>杋器码:0000000</view>
|
||||
<view class='about-text'>软件版本:1.0.0</view>
|
||||
<view class='about-text'>使用期限:永久使用</view>
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<view class="detail-header">
|
||||
<Cn-htmlToImg domId="header" @renderFinish="renderFinish">
|
||||
<view class="header" ref="header" @click="previewImg">
|
||||
<image :src="deviceInfo.filePath" style="width: 375px" mode="widthFix" />
|
||||
<img :src="deviceInfo.filePath" style="width: 375px" mode="widthFix" />
|
||||
<view
|
||||
class="point"
|
||||
:style="{ left: item.lat + 'px', top: item.lng + 'px' }"
|
||||
@@ -94,6 +94,10 @@
|
||||
:content="content"
|
||||
@trigger="trigger"
|
||||
/>
|
||||
<uni-popup ref="share" type="share" :safe-area="false">
|
||||
<uni-popup-share title="分享到" ></uni-popup-share>
|
||||
<view style="height: 40rpx;background: #fff;"></view>
|
||||
</uni-popup>
|
||||
</view>
|
||||
</view>
|
||||
</Cn-page>
|
||||
@@ -104,10 +108,10 @@ import xieBo from './comp/xieBo.vue'
|
||||
import power from './comp/power.vue'
|
||||
import oscillogram from './comp/oscillogram.vue'
|
||||
import IO from './comp/IO.vue'
|
||||
import { queryTopologyDiagram } from '@/common/api/device'
|
||||
import { queryTopologyDiagram, deleteDevice } from '@/common/api/device'
|
||||
import { MQTT_IP, MQTT_OPTIONS } from '@/common/js/mqtt.js'
|
||||
import mqtt from 'mqtt/dist/mqtt.js'
|
||||
|
||||
import { base64ToPath } from 'image-tools'
|
||||
export default {
|
||||
components: {
|
||||
basic,
|
||||
@@ -158,7 +162,7 @@ export default {
|
||||
timer: null,
|
||||
devId: '',
|
||||
dictData: [],
|
||||
isMaster: 0,
|
||||
isPrimaryUser: 0,
|
||||
userInfo: {},
|
||||
}
|
||||
},
|
||||
@@ -185,9 +189,18 @@ export default {
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '确定删除该设备吗?',
|
||||
success: function (res) {
|
||||
success: (res) => {
|
||||
if (res.confirm) {
|
||||
console.log('用户点击确定')
|
||||
deleteDevice(this.devId).then((res) => {
|
||||
uni.showToast({
|
||||
title: '删除成功',
|
||||
icon: 'none',
|
||||
})
|
||||
setTimeout(() => {
|
||||
uni.navigateBack()
|
||||
}, 1500)
|
||||
})
|
||||
} else if (res.cancel) {
|
||||
console.log('用户点击取消')
|
||||
}
|
||||
@@ -248,10 +261,7 @@ export default {
|
||||
iconPath: '/static/delate.png',
|
||||
text: '报表',
|
||||
},
|
||||
{
|
||||
iconPath: '/static/table.png',
|
||||
text: '删除',
|
||||
},
|
||||
|
||||
{
|
||||
iconPath: '/static/feedback.png',
|
||||
text: '反馈',
|
||||
@@ -290,8 +300,11 @@ export default {
|
||||
}, 500)
|
||||
} else {
|
||||
uni.hideLoading()
|
||||
base64ToPath(this.img).then((res) => {
|
||||
console.log(res)
|
||||
uni.previewImage({
|
||||
urls: [this.img],
|
||||
urls: [res],
|
||||
})
|
||||
})
|
||||
}
|
||||
},
|
||||
@@ -328,7 +341,7 @@ export default {
|
||||
console.log('连接断开')
|
||||
})
|
||||
.on('message', (topic, message) => {
|
||||
console.log('接收推送信息:', message.toString())
|
||||
console.log('接收推送信息:', message.toString().length)
|
||||
if (!message.toString()) {
|
||||
return
|
||||
}
|
||||
@@ -369,12 +382,12 @@ export default {
|
||||
this.userInfo = uni.getStorageSync(this.$cacheKey.userInfo)
|
||||
|
||||
this.devId = options.id
|
||||
this.isMaster = options.isMaster
|
||||
this.isPrimaryUser = options.isPrimaryUser
|
||||
if (this.isPrimaryUser == 1) {
|
||||
this.content.splice(0, 0, {
|
||||
iconPath: '/static/transfer.png',
|
||||
text: '移交',
|
||||
iconPath: '/static/delate.png',
|
||||
text: '删除',
|
||||
})
|
||||
if (this.isMaster == 1) {
|
||||
this.content.splice(0, 0, {
|
||||
iconPath: '/static/transfer.png',
|
||||
text: '移交',
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<uni-forms>
|
||||
<uni-forms-item label="设备识别码">
|
||||
<view style="display: flex">
|
||||
<uni-easyinput type="number" v-model="formData.nDid" placeholder="请输入设备识别码" />
|
||||
<uni-easyinput type="text" v-model="formData.nDid" placeholder="请输入设备识别码" />
|
||||
<uni-icons
|
||||
type="camera"
|
||||
color="#007aff"
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<view slot="body">
|
||||
<view class="transfer">
|
||||
<!-- <div class="transfer-img" ref="qrCodeUrl" /> -->
|
||||
<uqrcode ref="uqrcode" canvas-id="qrcode" :value="devId" :options="{ margin: 10 }"></uqrcode>
|
||||
<uqrcode ref="uqrcode" canvas-id="qrcode" :value="content" :options="{ margin: 10 }"></uqrcode>
|
||||
<canvas id="qrcode" width="200" height="200"></canvas>
|
||||
<view class="transfer-text">请让接收人员扫码接收</view>
|
||||
<view class="transfer-btn">
|
||||
@@ -24,23 +24,22 @@ export default {
|
||||
data() {
|
||||
return {
|
||||
loading: false,
|
||||
devId: '',
|
||||
content: '',
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
back() {
|
||||
uni.navigateBack({
|
||||
delta: 1,
|
||||
})
|
||||
this.$util.refreshPrePage(2)
|
||||
},
|
||||
home() {
|
||||
uni.switchTab({
|
||||
url: '/pages/index/index',
|
||||
})
|
||||
this.$util.refreshPrePage(2)
|
||||
},
|
||||
},
|
||||
onLoad(options) {
|
||||
this.devId = options.id
|
||||
this.content = JSON.stringify({
|
||||
type: 'transferDevice',
|
||||
id: options.id,
|
||||
})
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -76,6 +76,8 @@
|
||||
</template>
|
||||
<script>
|
||||
import list from '../../common/js/list'
|
||||
import { deleteEngineering } from '../../common/api/engineering'
|
||||
|
||||
export default {
|
||||
mixins: [list],
|
||||
data() {
|
||||
@@ -95,6 +97,10 @@ export default {
|
||||
iconPath: '/static/share.png',
|
||||
text: '编辑',
|
||||
},
|
||||
{
|
||||
iconPath: '/static/delate.png',
|
||||
text: '删除',
|
||||
},
|
||||
],
|
||||
navHeight: 0,
|
||||
navMenuActive: 0,
|
||||
@@ -113,6 +119,21 @@ export default {
|
||||
uni.navigateTo({
|
||||
url: '/pages/engineering/new?engineering=' + encodeURIComponent(JSON.stringify(this.engineering)),
|
||||
})
|
||||
} else if (e.item.text == '删除') {
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '删除工程后不可恢复,是否继续?',
|
||||
success: (res) => {
|
||||
if (res.confirm) {
|
||||
deleteEngineering(this.engineering.id).then((res) => {
|
||||
this.$util.toast('删除成功')
|
||||
this.$util.refreshPrePage()
|
||||
})
|
||||
} else if (res.cancel) {
|
||||
console.log('用户点击取消')
|
||||
}
|
||||
},
|
||||
})
|
||||
}
|
||||
},
|
||||
navMenuClick(index) {
|
||||
|
||||
@@ -119,17 +119,11 @@ export default {
|
||||
if (this.formData.id) {
|
||||
await auditEngineering(this.formData)
|
||||
this.$util.toast('工程修改成功')
|
||||
let pages = getCurrentPages()
|
||||
let prePage = pages[pages.length -3]
|
||||
console.log(prePage);
|
||||
prePage.$vm.store.reload()
|
||||
setTimeout(() => {
|
||||
uni.navigateBack({ delta: 2 })
|
||||
}, 1500)
|
||||
this.$util.refreshPrePage(2)
|
||||
} else {
|
||||
await addEngineering(this.formData)
|
||||
this.$util.prePage().store?.reload()
|
||||
this.$util.toast('工程创建成功')
|
||||
this.$util.refreshPrePage()
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
@@ -145,10 +145,16 @@ export default {
|
||||
uni.setStorageSync('engineering', res.data[0])
|
||||
this.select.engineeringName = res.data[0].name
|
||||
this.select.engineeringId = res.data[0].id
|
||||
} else {
|
||||
if (this.engineeringList.findIndex((item) => item.id === engineering.id) === -1) {
|
||||
uni.setStorageSync('engineering', res.data[0])
|
||||
this.select.engineeringName = res.data[0].name
|
||||
this.select.engineeringId = res.data[0].id
|
||||
}else{
|
||||
this.select.engineeringName = engineering.name
|
||||
this.select.engineeringId = engineering.id
|
||||
}
|
||||
}
|
||||
this.getProjectList()
|
||||
this.getDeviceList()
|
||||
},
|
||||
@@ -156,7 +162,6 @@ export default {
|
||||
this.store.params.pageSize = 999
|
||||
this.store.params.engineerId = this.select.engineeringId
|
||||
this.store.reload()
|
||||
|
||||
},
|
||||
getProjectList() {
|
||||
getProjectList({
|
||||
@@ -278,7 +283,7 @@ export default {
|
||||
},
|
||||
jump(item) {
|
||||
uni.navigateTo({
|
||||
url: '/pages/device/APF/detail?id=' + item.equipmentId
|
||||
url: '/pages/device/APF/detail?id=' + item.equipmentId + '&isPrimaryUser=' + item.isPrimaryUser,
|
||||
})
|
||||
},
|
||||
},
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<div class="header-item-label">正常设备</div>
|
||||
</div>
|
||||
<div class="header-item">
|
||||
<div class="header-item-value">{{ devCount.alarmLineCount || 0 }}</div>
|
||||
<div class="header-item-value" @click="jump('alarmLineDevs')">{{ devCount.alarmLineCount || 0 }}</div>
|
||||
<div class="header-item-label">报警设备</div>
|
||||
</div>
|
||||
<div class="header-item">
|
||||
@@ -65,10 +65,15 @@ export default {
|
||||
url: '/pages/gateway/new',
|
||||
})
|
||||
},
|
||||
jump(item) {
|
||||
uni.navigateTo({
|
||||
url: '/pages/device/APF/detail',
|
||||
})
|
||||
jump(type) {
|
||||
switch (key) {
|
||||
case value:
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@@ -11,37 +11,19 @@
|
||||
<view class="message-nav-label">反馈</view>
|
||||
<uni-icons type="forward" color="#aaa" size="20"></uni-icons>
|
||||
</view>
|
||||
<view
|
||||
class="message-nav"
|
||||
@click="jump('report')"
|
||||
v-if="
|
||||
userInfo.authorities == '4' || userInfo.authorities == '5' || userInfo.authorities == 'tourist'
|
||||
"
|
||||
>
|
||||
<view class="message-nav" @click="jump('report')">
|
||||
<image mode="aspectFill" class="message-nav-icon" src="/static/report.png" />
|
||||
<view class="message-nav-label">稳态越限</view>
|
||||
<uni-badge text="3"></uni-badge>
|
||||
<uni-icons type="forward" color="#aaa" size="20"></uni-icons>
|
||||
</view>
|
||||
<view
|
||||
class="message-nav"
|
||||
@click="jump('incident')"
|
||||
v-if="
|
||||
userInfo.authorities == '4' || userInfo.authorities == '5' || userInfo.authorities == 'tourist'
|
||||
"
|
||||
>
|
||||
<view class="message-nav" @click="jump('incident')">
|
||||
<image mode="aspectFill" class="message-nav-icon" src="/static/incident.png" />
|
||||
<view class="message-nav-label">暂态事件</view>
|
||||
<uni-badge text="2"></uni-badge>
|
||||
<uni-icons type="forward" color="#aaa" size="20"></uni-icons>
|
||||
</view>
|
||||
<view
|
||||
class="message-nav"
|
||||
@click="jump('term')"
|
||||
v-if="
|
||||
userInfo.authorities == '4' || userInfo.authorities == '5' || userInfo.authorities == 'tourist'
|
||||
"
|
||||
>
|
||||
<view class="message-nav" @click="jump('term')">
|
||||
<image mode="aspectFill" class="message-nav-icon" src="/static/term.png" />
|
||||
<view class="message-nav-label">终端状态</view>
|
||||
<uni-badge text="1"></uni-badge>
|
||||
|
||||
@@ -36,20 +36,12 @@
|
||||
<view class="mine-nav-label">扫一扫</view>
|
||||
<uni-icons type="forward" color="#aaa" size="20"></uni-icons>
|
||||
</view>
|
||||
<view class="mine-nav" @click="jump('engineering')" v-if="userInfo.authorities === 'engineering_user' || userInfo.authorities === 'app_vip_user'">
|
||||
<view class="mine-nav" @click="jump('engineering')">
|
||||
<image mode="aspectFill" class="mine-nav-icon" src="/static/project.png" />
|
||||
<view class="mine-nav-label">工程管理</view>
|
||||
<uni-icons type="forward" color="#aaa" size="20"></uni-icons>
|
||||
</view>
|
||||
<view
|
||||
class="mine-nav"
|
||||
@click="jump('project')"
|
||||
v-if="
|
||||
userInfo.authorities === 'app_vip_user' ||
|
||||
userInfo.authorities === 'engineering_user' ||
|
||||
userInfo.authorities === 'market_user'
|
||||
"
|
||||
>
|
||||
<view class="mine-nav" @click="jump('project')">
|
||||
<image mode="aspectFill" class="mine-nav-icon" src="/static/project.png" />
|
||||
<view class="mine-nav-label">项目管理</view>
|
||||
<uni-icons type="forward" color="#aaa" size="20"></uni-icons>
|
||||
@@ -57,12 +49,6 @@
|
||||
<view
|
||||
class="mine-nav"
|
||||
@click="jump('gateway')"
|
||||
v-if="
|
||||
userInfo.authorities === 'app_vip_user' ||
|
||||
userInfo.authorities === 'engineering_user' ||
|
||||
userInfo.authorities == 5 ||
|
||||
userInfo.authorities === 'market_user'
|
||||
"
|
||||
style="border-bottom: none; box-shadow: 0 4rpx 8rpx #e7e7e74c"
|
||||
>
|
||||
<image mode="aspectFill" class="mine-nav-icon" src="/static/gateway.png" />
|
||||
@@ -94,6 +80,7 @@
|
||||
|
||||
<script>
|
||||
import { roleUpdate } from '@/common/api/user'
|
||||
import { transferDevice } from '@/common/api/device'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
@@ -114,6 +101,12 @@ export default {
|
||||
case 'app_vip_user':
|
||||
roleName = 'VIP用户'
|
||||
break
|
||||
case 'market_user':
|
||||
roleName = '营销用户'
|
||||
break
|
||||
case 'operation_manager':
|
||||
roleName = '运维管理员'
|
||||
break
|
||||
}
|
||||
return roleName
|
||||
},
|
||||
@@ -146,9 +139,18 @@ export default {
|
||||
switch (type) {
|
||||
case 'scan':
|
||||
uni.scanCode({
|
||||
success: function (res) {
|
||||
success: (res) => {
|
||||
console.log('条码类型:' + res.scanType)
|
||||
console.log('条码内容:' + res.result)
|
||||
let content = JSON.parse(res.result)
|
||||
switch (content.type) {
|
||||
case 'transferDevice':
|
||||
this.transferDevice(content.id)
|
||||
break
|
||||
|
||||
default:
|
||||
break
|
||||
}
|
||||
},
|
||||
})
|
||||
break
|
||||
@@ -187,6 +189,11 @@ export default {
|
||||
break
|
||||
}
|
||||
},
|
||||
transferDevice(id) {
|
||||
transferDevice(id).then((res) => {
|
||||
uni.navigateTo({ url: '/pages/mine/result?type=transferDevice&id=' + id })
|
||||
})
|
||||
},
|
||||
},
|
||||
onShow() {
|
||||
this.userInfo = uni.getStorageSync(this.$cacheKey.userInfo)
|
||||
|
||||
90
pages/mine/result.vue
Normal file
90
pages/mine/result.vue
Normal file
@@ -0,0 +1,90 @@
|
||||
<template>
|
||||
<Cn-page :loading="loading">
|
||||
<view slot="body">
|
||||
<view class="about">
|
||||
<image src="/static/success.png" class="logo"></image>
|
||||
<view class="name">{{ text }}</view>
|
||||
<view class="btn-wrap">
|
||||
<navigator open-type="navigateBack" hover-class="none" class="btn"> 返回 </navigator>
|
||||
<view class="btn ml20" @click="look"> 查看 </view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</Cn-page>
|
||||
</template>
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
loading: false,
|
||||
type: '',
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
text() {
|
||||
let str = ''
|
||||
switch (this.type) {
|
||||
case 'transferDevice':
|
||||
str = '移交成功'
|
||||
break
|
||||
default:
|
||||
str = '操作成功'
|
||||
break
|
||||
}
|
||||
return str
|
||||
},
|
||||
},
|
||||
onLoad(options) {
|
||||
this.type = options.type
|
||||
this.id = options.id
|
||||
},
|
||||
methods: {
|
||||
look() {
|
||||
switch (this.type) {
|
||||
case 'transferDevice':
|
||||
uni.navigateTo({
|
||||
url: '/pages/device/APF/detail?id=' + this.id,
|
||||
})
|
||||
break
|
||||
default:
|
||||
break
|
||||
}
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
<style lang="scss">
|
||||
.about {
|
||||
box-sizing: border-box;
|
||||
padding: 34rpx;
|
||||
padding-top: 200rpx;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
|
||||
.logo {
|
||||
height: 120rpx;
|
||||
width: 120rpx;
|
||||
}
|
||||
|
||||
.name {
|
||||
margin-top: 80rpx;
|
||||
font-size: 40rpx;
|
||||
font-weight: 700;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.version {
|
||||
margin-top: 20rpx;
|
||||
font-size: 38rpx;
|
||||
color: #333;
|
||||
}
|
||||
.btn-wrap {
|
||||
margin-top: 150rpx;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -99,7 +99,12 @@
|
||||
</template>
|
||||
<script>
|
||||
import list from '../../common/js/list'
|
||||
import { queryTopologyDiagramPage, deleteAppTopologyDiagram, addAppTopologyDiagram } from '../../common/api/project'
|
||||
import {
|
||||
queryTopologyDiagramPage,
|
||||
deleteAppTopologyDiagram,
|
||||
addAppTopologyDiagram,
|
||||
deleteProject,
|
||||
} from '../../common/api/project'
|
||||
export default {
|
||||
mixins: [list],
|
||||
data() {
|
||||
@@ -178,6 +183,21 @@ export default {
|
||||
uni.navigateTo({
|
||||
url: '/pages/project/new?project=' + encodeURIComponent(JSON.stringify(this.project)),
|
||||
})
|
||||
} else if (e.item.text == '删除') {
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '删除项目后不可恢复,是否继续?',
|
||||
success: (res) => {
|
||||
if (res.confirm) {
|
||||
deleteProject(this.project.id).then((res) => {
|
||||
this.$util.toast('删除成功')
|
||||
this.$util.refreshPrePage()
|
||||
})
|
||||
} else if (res.cancel) {
|
||||
console.log('用户点击取消')
|
||||
}
|
||||
},
|
||||
})
|
||||
}
|
||||
},
|
||||
navMenuClick(index) {
|
||||
@@ -233,16 +253,20 @@ export default {
|
||||
iconPath: '/static/share.png',
|
||||
text: '编辑',
|
||||
})
|
||||
if (userInfo.authorities == '3') {
|
||||
this.content.push({
|
||||
iconPath: '/static/delate.png',
|
||||
text: '删除',
|
||||
})
|
||||
this.content.push({
|
||||
iconPath: '/static/transfer.png',
|
||||
text: '移交',
|
||||
})
|
||||
} else if (userInfo.authorities == '4') {
|
||||
this.content.push({
|
||||
iconPath: '/static/share.png',
|
||||
text: '分享',
|
||||
})
|
||||
if (userInfo.authorities == '3') {
|
||||
} else if (userInfo.authorities == '4') {
|
||||
}
|
||||
setTimeout(() => {
|
||||
// 获取nav高度
|
||||
|
||||
@@ -88,7 +88,9 @@
|
||||
<view
|
||||
class="temp-list-item"
|
||||
:class="{
|
||||
'temp-list-item-active': formData.tempFiles.some((item2) => item2.id === item.id),
|
||||
'temp-list-item-active': formData.tempFiles.some(
|
||||
(item2) => item2.id === item.id || item2.topoId === item.id,
|
||||
),
|
||||
}"
|
||||
v-for="(item, index) in tempList"
|
||||
@click="chooseTempItem(item)"
|
||||
@@ -104,7 +106,7 @@
|
||||
</template>
|
||||
<script>
|
||||
import { pinyin } from 'pinyin-pro'
|
||||
import { addAppProject } from '../../common/api/project'
|
||||
import { addAppProject, updateAppProject } from '../../common/api/project'
|
||||
import { getTopoTemplate } from '../../common/api/device'
|
||||
import { queryEngineering } from '@/common/api/engineering.js'
|
||||
export default {
|
||||
@@ -125,7 +127,7 @@ export default {
|
||||
},
|
||||
engineeringList: [],
|
||||
tempList: [],
|
||||
project: '',
|
||||
project: null,
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
@@ -150,6 +152,9 @@ export default {
|
||||
},
|
||||
onLoad(options) {
|
||||
if (options.project) {
|
||||
uni.setNavigationBarTitle({
|
||||
title: '编辑项目',
|
||||
})
|
||||
this.project = JSON.parse(decodeURIComponent(options.project))
|
||||
console.log(this.project)
|
||||
for (let key in this.formData) {
|
||||
@@ -172,6 +177,20 @@ export default {
|
||||
getTopoTemplate().then((res) => {
|
||||
console.log(res)
|
||||
this.tempList = res.data
|
||||
if (this.project) {
|
||||
this.project.topologyDiagramPaths.forEach((item) => {
|
||||
if (this.tempList.some((item2) => item2.id === item.topoId)) {
|
||||
this.formData.tempFiles.push(item)
|
||||
} else {
|
||||
this.formData.files.push({
|
||||
url: item.filePath,
|
||||
extname: item.name.split('.')[1],
|
||||
name: item.name,
|
||||
...item,
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
@@ -179,8 +198,10 @@ export default {
|
||||
this.formData.tempFiles.splice(index, 1)
|
||||
},
|
||||
chooseTempItem(item) {
|
||||
if (this.formData.tempFiles.some((item2) => item2.id === item.id)) {
|
||||
this.formData.tempFiles = this.formData.tempFiles.filter((item2) => item2.id !== item.id)
|
||||
if (this.formData.tempFiles.some((item2) => item2.id === item.id || item2.topoId === item.id)) {
|
||||
this.formData.tempFiles = this.formData.tempFiles.filter(
|
||||
(item2) => item2.id !== item.id && item2.topoId !== item.id,
|
||||
)
|
||||
} else {
|
||||
this.formData.tempFiles.push(item)
|
||||
}
|
||||
@@ -243,27 +264,33 @@ export default {
|
||||
uri: item.url,
|
||||
})
|
||||
}
|
||||
this.formData.topoIds = this.formData.tempFiles.map((item) => item.id)
|
||||
this.formData.topoIds = this.formData.tempFiles.map((item) => (item.topoId ? item.topoId : item.id))
|
||||
let data = JSON.parse(JSON.stringify(this.formData))
|
||||
delete data.files
|
||||
addAppProject(data, arr).then((res) => {
|
||||
console.warn(res)
|
||||
let res = {}
|
||||
if (this.project) {
|
||||
data.id = this.project.id
|
||||
res = await updateAppProject(data, arr)
|
||||
} else {
|
||||
res = await addAppProject(data, arr)
|
||||
}
|
||||
console.log(res)
|
||||
if (res.length === 1) {
|
||||
this.$util.toast(res[0].message)
|
||||
return
|
||||
}
|
||||
console.log(res)
|
||||
let result = JSON.parse(res[1].data)
|
||||
if (result.code === 'A0000') {
|
||||
if (this.project) {
|
||||
this.$util.toast('项目修改成功')
|
||||
this.$util.refreshPrePage(2)
|
||||
} else {
|
||||
this.$util.toast('项目创建成功')
|
||||
this.$util.prePage().store?.reload()
|
||||
setTimeout(() => {
|
||||
uni.navigateBack({ delta: 1 })
|
||||
}, 1500)
|
||||
this.$util.refreshPrePage()
|
||||
}
|
||||
} else {
|
||||
this.$util.toast(result.message)
|
||||
}
|
||||
})
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@@ -1,11 +1,15 @@
|
||||
<template>
|
||||
<Cn-page :loading='loading'>
|
||||
<view slot='body'>
|
||||
<view class='transfer'>
|
||||
<image class="transfer-img" src="/static/transfer.png" mode="scaleToFill" />
|
||||
<Cn-page :loading="loading">
|
||||
<view slot="body">
|
||||
<view class="transfer">
|
||||
<!-- <div class="transfer-img" ref="qrCodeUrl" /> -->
|
||||
<uqrcode ref="uqrcode" canvas-id="qrcode" :value="content" :options="{ margin: 10 }"></uqrcode>
|
||||
<canvas id="qrcode" width="200" height="200"></canvas>
|
||||
<view class="transfer-text">请让接收人员扫码接收</view>
|
||||
<view class="transfer-btn">
|
||||
<button class="transfer-btn-item" style="background-color:#fff;color:#111" @click="back">返回</button>
|
||||
<button class="transfer-btn-item" style="background-color: #fff; color: #111" @click="back">
|
||||
返回
|
||||
</button>
|
||||
<button class="transfer-btn-item ml20" @click="home">转移成功</button>
|
||||
</view>
|
||||
</view>
|
||||
@@ -13,27 +17,33 @@
|
||||
</Cn-page>
|
||||
</template>
|
||||
<script>
|
||||
// import QRCode from 'qrcodejs2'
|
||||
// import UQRCode from '@/uni_modules/Sansnn-uQRCode/js_sdk/uqrcode/uqrcode.js';
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
loading: false
|
||||
loading: false,
|
||||
content: '',
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
back() {
|
||||
uni.navigateBack({
|
||||
delta: 1
|
||||
})
|
||||
this.$util.refreshPrePage(2)
|
||||
},
|
||||
home() {
|
||||
uni.switchTab({
|
||||
url: '/pages/index/index'
|
||||
this.$util.refreshPrePage(2)
|
||||
},
|
||||
},
|
||||
onLoad(options) {
|
||||
this.content = JSON.stringify({
|
||||
type: 'transferProject',
|
||||
id: options.id,
|
||||
})
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
</script>
|
||||
<style lang='scss'>
|
||||
<style lang="scss">
|
||||
.transfer {
|
||||
padding: 200rpx 34rpx 0;
|
||||
display: flex;
|
||||
@@ -41,9 +51,6 @@ export default {
|
||||
align-items: center;
|
||||
|
||||
.transfer-img {
|
||||
width: 500rpx;
|
||||
height: 500rpx;
|
||||
background: $uni-theme-blue ;
|
||||
}
|
||||
|
||||
.transfer-text {
|
||||
|
||||
@@ -40,11 +40,11 @@
|
||||
<view class="login-box-tips">
|
||||
<view style="color: #999">说明:密码长度为6-18位</view>
|
||||
</view>
|
||||
<view class="login-box-tips">
|
||||
<!-- <view class="login-box-tips">
|
||||
<view style="color: #999">点击提交即表示同意</view>
|
||||
<navigator url="/pages/mine/agreement" hover-class="none">《用户协议》</navigator>
|
||||
<navigator url="/pages/mine/policy" hover-class="none">《个人信息保护政策》</navigator>
|
||||
</view>
|
||||
</view> -->
|
||||
</view>
|
||||
</view>
|
||||
</Cn-page>
|
||||
|
||||
@@ -33,7 +33,12 @@
|
||||
</template>
|
||||
<template v-else>
|
||||
<view class="login-box-input mt100">
|
||||
<input class="login-box-input-main" maxlength="11" v-model="phone" placeholder="请输入账号" />
|
||||
<input
|
||||
class="login-box-input-main"
|
||||
maxlength="11"
|
||||
v-model="phone"
|
||||
placeholder="请输入手机号"
|
||||
/>
|
||||
</view>
|
||||
<view class="login-box-input mt40">
|
||||
<input
|
||||
@@ -59,7 +64,9 @@
|
||||
<navigator url="/pages/user/register" hover-class="none">快速注册</navigator>
|
||||
</view>
|
||||
<view class="login-box-tips">
|
||||
<view style="color: #999">点击登录即表示同意</view>
|
||||
<view style="color: #999"
|
||||
><checkbox :checked="checkbox" @click="checkbox = !checkbox" /> 我已阅读并同意</view
|
||||
>
|
||||
<navigator url="/pages/mine/agreement" hover-class="none">《用户协议》</navigator>
|
||||
<navigator url="/pages/mine/policy" hover-class="none">《个人信息保护政策》</navigator>
|
||||
</view>
|
||||
@@ -76,16 +83,17 @@ import { sm3Digest } from '@/common/js/sm3.js'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
checkbox: false,
|
||||
loading: false,
|
||||
loginType: 'pwd',
|
||||
phone:'13999999999',
|
||||
phone: '',
|
||||
pwdForm: {
|
||||
pwd: '',
|
||||
imgCode: '',
|
||||
},
|
||||
yzmForm: {
|
||||
code: '',
|
||||
imgCode: '123456789',
|
||||
code: '123456789',
|
||||
imgCode: '',
|
||||
},
|
||||
waitTime: 0,
|
||||
tenantId: '',
|
||||
@@ -123,6 +131,9 @@ export default {
|
||||
})
|
||||
},
|
||||
login() {
|
||||
if (!this.checkbox) {
|
||||
return this.$util.toast('请先阅读并同意用户协议和个人信息保护政策!')
|
||||
}
|
||||
console.log(this.loginType)
|
||||
if (this.loginType == 'pwd') {
|
||||
this.pwdLogin()
|
||||
@@ -134,9 +145,9 @@ export default {
|
||||
if (!this.phone && !this.pwdForm.pwd) {
|
||||
return this.$util.toast('请填写登录信息!')
|
||||
}
|
||||
console.log(this.phone);
|
||||
console.log(this.phone)
|
||||
let loginName = encrypt(this.phone)
|
||||
console.log(loginName);
|
||||
console.log(loginName)
|
||||
gongkey({ loginName }).then((response) => {
|
||||
let publicKey = response.data
|
||||
let sm3Pwd = sm3Digest(this.pwdForm.pwd)
|
||||
@@ -167,7 +178,8 @@ export default {
|
||||
onLoad(o) {
|
||||
// 移除所有的缓存
|
||||
// uni.clearStorageSync()
|
||||
uni.removeStorageSync('access_token')
|
||||
uni.removeStorageSync(this.$cacheKey.access_token)
|
||||
uni.removeStorageSync(this.$cacheKey.engineering)
|
||||
},
|
||||
}
|
||||
</script>
|
||||
@@ -269,6 +281,7 @@ export default {
|
||||
margin-top: 60rpx;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
font-size: 20rpx;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,9 +20,11 @@
|
||||
</view>
|
||||
</uni-forms-item>
|
||||
</uni-forms>
|
||||
<button type="default" class="submit-btn" @click="firstSubmit">下一步</button>
|
||||
<button type="default" class="submit-btn" @click="firstSubmit">注册</button>
|
||||
<view class="login-box-tips">
|
||||
<view style="color: #999">点击提交即表示同意</view>
|
||||
<view style="color: #999"
|
||||
><checkbox :checked="checkbox" @click="checkbox = !checkbox" /> 我已阅读并同意</view
|
||||
>
|
||||
<navigator url="/pages/mine/agreement" hover-class="none">《用户协议》</navigator>
|
||||
<navigator url="/pages/mine/policy" hover-class="none">《个人信息保护政策》</navigator>
|
||||
</view>
|
||||
@@ -52,6 +54,7 @@ export default {
|
||||
name: 'jiaban',
|
||||
data() {
|
||||
return {
|
||||
checkbox:false,
|
||||
step: 1,
|
||||
loading: false,
|
||||
waitTime: 0,
|
||||
@@ -129,6 +132,9 @@ export default {
|
||||
})
|
||||
},
|
||||
firstSubmit() {
|
||||
if (!this.checkbox) {
|
||||
return this.$util.toast('请先阅读并同意用户协议和个人信息保护政策!')
|
||||
}
|
||||
this.$refs.form.validate().then((valid, errors) => {
|
||||
apiRegister({
|
||||
phone: this.formData.phone,
|
||||
@@ -182,6 +188,7 @@ export default {
|
||||
margin-top: 60rpx;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
font-size: 20rpx;
|
||||
}
|
||||
|
||||
|
||||
39
pnpm-lock.yaml
generated
39
pnpm-lock.yaml
generated
@@ -4,7 +4,8 @@ specifiers:
|
||||
'@types/html5plus': ^1.0.2
|
||||
'@types/uni-app': ^1.4.4
|
||||
crypto-js: ^4.1.1
|
||||
html2canvas: ^1.4.1
|
||||
html2canvas: 1.0.0-rc.4
|
||||
image-tools: ^1.4.0
|
||||
mqtt: 3.0.0
|
||||
pinyin-pro: ^3.13.2
|
||||
qs: ^6.11.2
|
||||
@@ -12,7 +13,8 @@ specifiers:
|
||||
|
||||
dependencies:
|
||||
crypto-js: 4.1.1
|
||||
html2canvas: 1.4.1
|
||||
html2canvas: 1.0.0-rc.4
|
||||
image-tools: 1.4.0
|
||||
mqtt: 3.0.0
|
||||
pinyin-pro: 3.13.2
|
||||
qs: 6.11.2
|
||||
@@ -84,8 +86,8 @@ packages:
|
||||
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
|
||||
dev: false
|
||||
|
||||
/base64-arraybuffer/1.0.2:
|
||||
resolution: {integrity: sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==}
|
||||
/base64-arraybuffer/0.2.0:
|
||||
resolution: {integrity: sha512-7emyCsu1/xiBXgQZrscw/8KPRT44I4Yq9Pe6EGs3aPRTsWuggML1/1DTuZUuIaJPIm1FTDUVXl4x/yW8s0kQDQ==}
|
||||
engines: {node: '>= 0.6.0'}
|
||||
dev: false
|
||||
|
||||
@@ -172,10 +174,10 @@ packages:
|
||||
resolution: {integrity: sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==}
|
||||
dev: false
|
||||
|
||||
/css-line-break/2.1.0:
|
||||
resolution: {integrity: sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==}
|
||||
/css-line-break/1.1.1:
|
||||
resolution: {integrity: sha512-1feNVaM4Fyzdj4mKPIQNL2n70MmuYzAXZ1aytlROFX1JsOo070OsugwGjj7nl6jnDJWHDM8zRZswkmeYVWZJQA==}
|
||||
dependencies:
|
||||
utrie: 1.0.2
|
||||
base64-arraybuffer: 0.2.0
|
||||
dev: false
|
||||
|
||||
/csstype/3.1.2:
|
||||
@@ -367,18 +369,21 @@ packages:
|
||||
xtend: 4.0.2
|
||||
dev: false
|
||||
|
||||
/html2canvas/1.4.1:
|
||||
resolution: {integrity: sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==}
|
||||
/html2canvas/1.0.0-rc.4:
|
||||
resolution: {integrity: sha512-5sJ+oM3FfNFpGVbMQkJFDl1WH5Sa293l2koMEZWbaehJ3dWHty4mSrmZtfWlWDoLckfGojZS9aZ7Zk3uFouyPw==}
|
||||
engines: {node: '>=8.0.0'}
|
||||
dependencies:
|
||||
css-line-break: 2.1.0
|
||||
text-segmentation: 1.0.3
|
||||
css-line-break: 1.1.1
|
||||
dev: false
|
||||
|
||||
/ieee754/1.2.1:
|
||||
resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
|
||||
dev: false
|
||||
|
||||
/image-tools/1.4.0:
|
||||
resolution: {integrity: sha512-TKtvJ6iUwM0mfaD4keMnk1ENHFC470QEjBfA3IlvKdEOufzvWbjbaoNcoyYq6HlViF8+d5tOS1ooE6j7CHf1lQ==}
|
||||
dev: false
|
||||
|
||||
/inflight/1.0.6:
|
||||
resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
|
||||
dependencies:
|
||||
@@ -668,12 +673,6 @@ packages:
|
||||
safe-buffer: 5.2.1
|
||||
dev: false
|
||||
|
||||
/text-segmentation/1.0.3:
|
||||
resolution: {integrity: sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==}
|
||||
dependencies:
|
||||
utrie: 1.0.2
|
||||
dev: false
|
||||
|
||||
/through2-filter/3.0.0:
|
||||
resolution: {integrity: sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==}
|
||||
dependencies:
|
||||
@@ -733,12 +732,6 @@ packages:
|
||||
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
|
||||
dev: false
|
||||
|
||||
/utrie/1.0.2:
|
||||
resolution: {integrity: sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==}
|
||||
dependencies:
|
||||
base64-arraybuffer: 1.0.2
|
||||
dev: false
|
||||
|
||||
/vconsole/3.15.1:
|
||||
resolution: {integrity: sha512-KH8XLdrq9T5YHJO/ixrjivHfmF2PC2CdVoK6RWZB4yftMykYIaXY1mxZYAic70vADM54kpMQF+dYmvl5NRNy1g==}
|
||||
dependencies:
|
||||
|
||||
8
readme
Normal file
8
readme
Normal file
@@ -0,0 +1,8 @@
|
||||
工程用户
|
||||
13999999999
|
||||
营销用户
|
||||
13888888888
|
||||
VIP用户
|
||||
13333333333
|
||||
运维管理元
|
||||
njcnyw
|
||||
BIN
static/success.png
Normal file
BIN
static/success.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.1 KiB |
Reference in New Issue
Block a user