页面接口推介

This commit is contained in:
仲么了
2023-07-31 09:00:30 +08:00
parent 863d30ee61
commit 77b4ff6f88
30 changed files with 928 additions and 652 deletions

View File

@@ -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,
},
})
}

View File

@@ -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',
},
})
}

View File

@@ -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) {

View File

@@ -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 = {

View File

@@ -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,
}

View File

@@ -47,7 +47,7 @@ export default {
}).catch((err) => {
console.log(err)
})
}, 200);
}, 1000);
}
}
}

View File

@@ -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));

View File

@@ -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" : ""

View File

@@ -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",

View File

@@ -387,6 +387,12 @@
"style": {
"navigationBarTitleText": "资料库"
}
},
{
"path": "pages/mine/result",
"style": {
"navigationBarTitleText": "操作成功"
}
}
],
"tabBar": {
@@ -437,8 +443,6 @@
"condition": {
//模式配置,仅开发期间生效
"current": 0, //当前激活的模式list 的索引项)
"list": [
]
"list": []
}
}

View File

@@ -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>

View File

@@ -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: '移交',

View File

@@ -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"

View File

@@ -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>

View File

@@ -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) {

View File

@@ -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()
}
},
},

View File

@@ -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,
})
},
},

View File

@@ -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;
}
},
},
}

View File

@@ -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>

View File

@@ -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
View 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>

View File

@@ -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高度

View File

@@ -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)
}
})
},
},
}

View File

@@ -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 {

View File

@@ -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>

View File

@@ -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;
}
}

View File

@@ -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
View File

@@ -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
View File

@@ -0,0 +1,8 @@
工程用户
13999999999
营销用户
13888888888
VIP用户
13333333333
运维管理元
njcnyw

BIN
static/success.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB