修改 app

This commit is contained in:
GGJ
2024-09-02 09:50:59 +08:00
parent 8214b40495
commit fd55306d1a
30 changed files with 2380 additions and 2091 deletions

View File

@@ -1,38 +1,38 @@
{ {
"version": "2", "version" : "2",
"prompt": "template", "prompt" : "template",
"title": "服务协议和隐私政策", "title" : "服务协议和隐私政策",
"message": "  请你务必审慎阅读、充分理解“服务协议”和“隐私政策”各条款,包括但不限于:为了更好的向你提供服务,我们需要收集你的设备标识、操作日志等信息用于分析、优化应用性能。<br/>  你可阅读<a href=\"https://pqmcn.com:8092/#/agreement\">《服务协议》</a>和<a href=\"https://pqmcn.com:8092/#/policy\">《隐私政策》</a>了解详细信息。如果你同意,请点击下面按钮开始接受我们的服务。", "message" : "  请你务必审慎阅读、充分理解“服务协议”和“隐私政策”各条款,包括但不限于:为了更好的向你提供服务,我们需要收集你的设备标识、操作日志等信息用于分析、优化应用性能。<br/>  你可阅读<a href=\"https://pqmcn.com:8092/#/agreement\">《服务协议》</a>和<a href=\"https://pqmcn.com:8092/#/policy\">《隐私政策》</a>了解详细信息。如果你同意,请点击下面按钮开始接受我们的服务。",
"buttonAccept": "同意并接受", "buttonAccept" : "同意并接受",
"buttonRefuse": "暂不同意", "buttonRefuse" : "暂不同意",
"hrefLoader": "system|default", "hrefLoader" : "system|default",
"backToExit":"false", "backToExit" : "false",
"second": { "second" : {
"title": "确认提示", "title" : "确认提示",
"message": "  进入应用前,你需先同意<a href=\"https://pqmcn.com:8092/#/agreement\">《用户协议》</a>和<a href=\"https://pqmcn.com:8092/#/policy\">《隐私政策》</a>,否则将退出应用。", "message" : "  进入应用前,你需先同意<a href=\"https://pqmcn.com:8092/#/agreement\">《用户协议》</a>和<a href=\"https://pqmcn.com:8092/#/policy\">《隐私政策》</a>,否则将退出应用。",
"buttonAccept": "同意并继续", "buttonAccept" : "同意并继续",
"buttonRefuse": "退出应用" "buttonRefuse" : "退出应用"
},
"disagreeMode":{
"support": false,
"loadNativePlugins": false,
"visitorEntry": false,
"showAlways": false
},
"styles": {
"backgroundColor": "#ffffff",
"borderRadius":"5px",
"title": {
"color": "#111"
}, },
"buttonAccept": { "disagreeMode" : {
"color": "#111" "support" : false,
"loadNativePlugins" : false,
"visitorEntry" : false,
"showAlways" : false
}, },
"buttonRefuse": { "styles" : {
"color": "#111" "backgroundColor" : "#ffffff",
}, "borderRadius" : "5px",
"buttonVisitor": { "title" : {
"color": "#111" "color" : "#111"
},
"buttonAccept" : {
"color" : "#111"
},
"buttonRefuse" : {
"color" : "#111"
},
"buttonVisitor" : {
"color" : "#111"
}
} }
}
} }

13
common/api/accessBoot.js Normal file
View File

@@ -0,0 +1,13 @@
import request from '../js/request'
import config from '../js/config'
export function manualAccess(params) {
return request({
url: '/access-boot/device/manualAccess',
method: 'post',
params: params,
header: {
'Content-Type': 'application/json',
},
})
}

View File

@@ -27,7 +27,7 @@ export default (options = {}) => {
} }
uni.request({ uni.request({
url, url,
timeout: 5000, timeout: 1000 *10,
data: { data: {
...options.data, ...options.data,
}, },

View File

@@ -132,7 +132,7 @@ const getUserLocation = (call) => {
success: function (address) { success: function (address) {
call(address) call(address)
}, },
fail: (err) => { fail: (err) => {
uni.showModal({ uni.showModal({
title: '提示', title: '提示',
content: '定位失败,请打开定位权限', content: '定位失败,请打开定位权限',

View File

@@ -54,6 +54,7 @@ export default {
return str return str
}, },
jump() { jump() {
console.log(12321,this.device);
uni.navigateTo({ uni.navigateTo({
url: url:
'/pages/device/APF/detail?id=' + '/pages/device/APF/detail?id=' +
@@ -61,7 +62,7 @@ export default {
'&isPrimaryUser=' + '&isPrimaryUser=' +
this.device.isPrimaryUser + this.device.isPrimaryUser +
'&process=' + '&process=' +
this.device.process, this.device.process + '&ndid=' + this.device.ndid,
}) })
}, },
}, },

View File

@@ -2,8 +2,8 @@
"name" : "灿能物联", "name" : "灿能物联",
"appid" : "__UNI__88BC25B", "appid" : "__UNI__88BC25B",
"description" : "", "description" : "",
"versionName" : "1.4.5", "versionName" : "1.5.9",
"versionCode" : 145, "versionCode" : 159,
"transformPx" : false, "transformPx" : false,
/* 5+App */ /* 5+App */
"app-plus" : { "app-plus" : {
@@ -54,7 +54,8 @@
"<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>", "<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>",
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>" "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
], ],
"abiFilters" : [ "armeabi-v7a", "arm64-v8a" ] "abiFilters" : [ "armeabi-v7a", "arm64-v8a" ],
"targetSdkVersion" : 30
}, },
/* ios */ /* ios */
"ios" : { "ios" : {
@@ -114,6 +115,9 @@
"spotlight@3x" : "unpackage/res/icons/120x120.png" "spotlight@3x" : "unpackage/res/icons/120x120.png"
} }
} }
},
"splashscreen" : {
"useOriginalMsgbox" : true
} }
} }
}, },
@@ -139,8 +143,8 @@
"proxy" : { "proxy" : {
"/api" : { "/api" : {
"https" : true, "https" : true,
"target" : "https://pqmcn.com:8092/api", // "target" : "https://pqmcn.com:8092/api",
// "target" : "http://192.168.1.115:10215", "target" : "http://192.168.1.126:10215",
"changOrigin" : true, "changOrigin" : true,
"pathRewrite" : { "pathRewrite" : {
"/api" : "" "/api" : ""

View File

@@ -33,7 +33,7 @@
{ {
"path": "pages/mine/policy", "path": "pages/mine/policy",
"style": { "style": {
"navigationBarTitleText": "个人信息保护政策" "navigationBarTitleText": "隐私政策"
} }
}, },
{ {
@@ -81,7 +81,7 @@
{ {
"path": "pages/mine/setupMessage", "path": "pages/mine/setupMessage",
"style": { "style": {
"navigationBarTitleText": "消息配置" "navigationBarTitleText": "个性化推荐"
} }
}, },
{ {
@@ -129,7 +129,8 @@
{ {
"path": "pages/device/APF/detail", "path": "pages/device/APF/detail",
"style": { "style": {
"navigationBarTitleText": "APF 设备名称 + 型号" "navigationBarTitleText": "APF 设备名称 + 型号",
"enablePullDownRefresh": true
} }
}, },
{ {

View File

@@ -1,80 +1,92 @@
<template> <template>
<view class='basic'> <view class="basic">
<view class="grid-card"> <view class="grid-card">
<view class="grid-card-title">温度</view> <view class="grid-card-title">温度</view>
<view class="grid-card-content-4"> <view class="grid-card-content-4">
<template v-for="item in renderData"> <template v-for="item in renderData">
<view class="item item-title">{{ item[0].clDid }} <view class="item item-title"
<template v-if="item[0].clDid "> (°C)</template> >{{ item[0].clDid }}
</view> <template v-if="item[0].clDid"> (°C)</template>
<view class="item item-title">{{ item[1].clDid }} </view>
<template v-if="item[1].clDid "> (°C)</template> <view class="item item-title"
</view> >{{ item[1].clDid }}
<view class="item item-title">{{ item[2].clDid }} <template v-if="item[1].clDid"> (°C)</template>
<template v-if="item[2].clDid "> (°C)</template> </view>
</view> <view class="item item-title"
<view class="item item-title">{{ item[3].clDid }} >{{ item[2].clDid }}
<template v-if="item[3].clDid "> (°C)</template> <template v-if="item[2].clDid"> (°C)</template>
</view> </view>
<view class="item">{{ item[0].clDid ? item[0].value || '-' : '' }}</view> <view class="item item-title"
<view class="item">{{ item[1].clDid ? item[1].value || '-' : '' }}</view> >{{ item[3].clDid }}
<view class="item">{{ item[2].clDid ? item[2].value || '-' : '' }}</view> <template v-if="item[3].clDid"> (°C)</template>
<view class="item">{{ item[3].clDid ? item[3].value || '-' : '' }}</view> </view>
</template> <view class="item">{{ item[0].clDid ? Math.round(item[0].value) || '-' : '' }}</view>
</view> <view class="item">{{ item[1].clDid ? Math.round(item[1].value) || '-' : '' }}</view>
</view> <view class="item">{{ item[2].clDid ? Math.round(item[2].value) || '-' : '' }}</view>
<!-- <view class="grid-card">--> <view class="item">{{ item[3].clDid ? Math.round(item[3].value) || '-' : '' }}</view>
<!-- <view class="grid-card-title">干接点</view>--> </template>
<!-- <view class="grid-card-content-4">--> </view>
<!-- <view class="item item-title">干接点1</view>--> </view>
<!-- <view class="item item-title">干接点2</view>--> <!-- <view class="grid-card">-->
<!-- <view class="item item-title"></view>--> <!-- <view class="grid-card-title">干接点</view>-->
<!-- <view class="item item-title"></view>--> <!-- <view class="grid-card-content-4">-->
<!-- <view class="item">正常</view>--> <!-- <view class="item item-title">干接点1</view>-->
<!-- <view class="item">正常</view>--> <!-- <view class="item item-title">干接点2</view>-->
<!-- <view class="item"></view>--> <!-- <view class="item item-title"></view>-->
<!-- <view class="item"></view>--> <!-- <view class="item item-title"></view>-->
<!-- </view>--> <!-- <view class="item">正常</view>-->
<!-- </view>--> <!-- <view class="item">正常</view>-->
</view> <!-- <view class="item"></view>-->
<!-- <view class="item"></view>-->
<!-- </view>-->
<!-- </view>-->
</view>
</template> </template>
<script> <script>
export default { export default {
data() { data() {
return {} return {}
}, },
props: { props: {
IOData: { IOData: {
type: Array, type: Array,
default: () => { default: () => {
return [] return []
}, },
}, },
}, },
computed: { computed: {
renderData() { renderData() {
let arr = [] let arr = []
// 把IOData转换成每4个一组的二维数组 // 把IOData转换成每4个一组的二维数组
for (let i = 0; i < this.IOData.length; i += 4) { for (let i = 0; i < this.IOData.length; i += 4) {
arr.push(this.IOData.slice(i, i + 4)) this.IOData.slice(i, i + 4).forEach((item) => {
}
// 把每组的长度补齐到4 if (Number.isInteger(item.value) || item.value =='') {
arr.forEach((item) => {
if (item.length < 4) { }else {
let length = 4 - item.length item.value = (item.value-0).toFixed(4)
for (let i = 0; i < length; i++) { }
item.push({}) })
} arr.push(this.IOData.slice(i, i + 4))
} }
}) // 把每组的长度补齐到4
console.warn(arr) arr.forEach((item) => {
return arr if (item.length < 4) {
} let length = 4 - item.length
}, for (let i = 0; i < length; i++) {
methods: {} item.push({})
}
}
})
console.warn(arr)
return arr
},
},
methods: {},
} }
</script> </script>
<style lang='scss'> <style lang="scss">
.basic { .basic {
} }
</style> </style>

View File

@@ -8,8 +8,8 @@
<view class="item item-title">畸变率(%)</view> <view class="item item-title">畸变率(%)</view>
<template v-for="(item, index) in renderData.电网电流"> <template v-for="(item, index) in renderData.电网电流">
<view class="item">{{ item.phase }}</view> <view class="item">{{ item.phase }}</view>
<view class="item">{{ item['Apf_RmsI_Sys(A)'] || '-' }}</view> <view class="item">{{ item['Apf_RmsI_Sys(A)'] }}</view>
<view class="item">{{ item['Apf_ThdA_Sys(%)'] || '-' }}</view> <view class="item">{{ item['Apf_ThdA_Sys(%)'] }}</view>
</template> </template>
</view> </view>
</view> </view>
@@ -22,9 +22,9 @@
<view class="item item-title">畸变率(%)</view> <view class="item item-title">畸变率(%)</view>
<template v-for="(item, index) in renderData.电网电压"> <template v-for="(item, index) in renderData.电网电压">
<view class="item">{{ item.phase }}</view> <view class="item">{{ item.phase }}</view>
<view class="item">{{ item['Apf_PhV_Sys(V)'] || '-' }}</view> <view class="item">{{ item['Apf_PhV_Sys(V)'] }}</view>
<view class="item">{{ item['Apf_Freq(Hz)'] || '-' }}</view> <view class="item">{{ item['Apf_Freq(Hz)'] }}</view>
<view class="item">{{ item['Apf_ThdU_Sys(%)'] || '-' }}</view> <view class="item">{{ item['Apf_ThdU_Sys(%)'] }}</view>
</template> </template>
</view> </view>
</view> </view>
@@ -36,8 +36,8 @@
<view class="item item-title">畸变率(%)</view> <view class="item item-title">畸变率(%)</view>
<template v-for="(item, index) in renderData.负载电流"> <template v-for="(item, index) in renderData.负载电流">
<view class="item">{{ item.phase }}</view> <view class="item">{{ item.phase }}</view>
<view class="item">{{ item['Apf_RmsI_Load(A)'] || '-' }}</view> <view class="item">{{ item['Apf_RmsI_Load(A)'] }}</view>
<view class="item">{{ item['Apf_ThdA_Load(%)'] || '-' }}</view> <view class="item">{{ item['Apf_ThdA_Load(%)'] }}</view>
</template> </template>
</view> </view>
</view> </view>
@@ -49,8 +49,8 @@
<view class="item item-title">负载率(%)</view> <view class="item item-title">负载率(%)</view>
<template v-for="(item, index) in renderData.补偿电流"> <template v-for="(item, index) in renderData.补偿电流">
<view class="item">{{ item.phase }}</view> <view class="item">{{ item.phase }}</view>
<view class="item">{{ item['Apf_RmsI_TolOut(A)'] || '-' }}</view> <view class="item">{{ item['Apf_RmsI_TolOut(A)'] }}</view>
<view class="item">{{ item['load_Rate'] || '-' }}</view> <view class="item">{{ item['load_Rate'] }}</view>
</template> </template>
</view> </view>
</view> </view>
@@ -129,11 +129,11 @@ export default {
return item2.phase === item.phase return item2.phase === item.phase
}) })
if (index > -1) { if (index > -1) {
this.renderData[key][index][item.statisticalName] = item.statisticalData || '-' this.renderData[key][index][item.statisticalName] = item.statisticalData //
} else { } else {
this.renderData[key].push({ this.renderData[key].push({
phase: item.phase, phase: item.phase,
[item.statisticalName]: item.statisticalData || '-', [item.statisticalName]: item.statisticalData //,
}) })
} }
}) })

View File

@@ -1,119 +1,117 @@
<template> <template>
<view class="basic"> <view class="basic">
<view class="grid-card"> <view class="grid-card">
<view class="grid-card-title">电网侧</view> <view class="grid-card-title">电网侧</view>
<view class="grid-card-content-5"> <view class="grid-card-content-5">
<view class="item item-title">名称</view> <view class="item item-title">名称</view>
<view class="item item-title">有功功率(kw)</view> <view class="item item-title">有功功率(kw)</view>
<view class="item item-title">无功功率(kVar)</view> <view class="item item-title">无功功率(kVar)</view>
<view class="item item-title">视在功率(kVA)</view> <view class="item item-title">视在功率(kVA)</view>
<view class="item item-title">功率因数</view> <view class="item item-title">功率因数</view>
<template v-for="(item, index) in renderData.电网侧"> <template v-for="(item, index) in renderData.电网侧">
<view class="item">{{ item.phase }}</view> <view class="item">{{ item.phase }}</view>
<view class="item">{{ item['Apf_P_Sys(W)'] || '-' }}</view> <view class="item">{{ (item['Apf_P_Sys(W)'] / 1000).toFixed(4) || '-' }}</view>
<view class="item">{{ item['Apf_Q_Sys(Var)'] || '-' }}</view> <view class="item">{{ (item['Apf_Q_Sys(Var)'] / 1000).toFixed(4) || '-' }}</view>
<view class="item">{{ item['Apf_S_Sys(VA)'] || '-' }}</view> <view class="item">{{ (item['Apf_S_Sys(VA)'] / 1000).toFixed(4) || '-' }}</view>
<view class="item">{{ item['Apf_PF_Sys(null)'] || '-' }}</view> <view class="item">{{ item['Apf_PF_Sys(null)'] || '-' }}</view>
</template> </template>
</view> </view>
</view> </view>
<view class="grid-card"> <view class="grid-card">
<view class="grid-card-title">负载侧</view> <view class="grid-card-title">负载侧</view>
<view class="grid-card-content-5"> <view class="grid-card-content-5">
<view class="item item-title">名称</view> <view class="item item-title">名称</view>
<view class="item item-title">有功功率(kw)</view> <view class="item item-title">有功功率(kw)</view>
<view class="item item-title">无功功率(kVar)</view> <view class="item item-title">无功功率(kVar)</view>
<view class="item item-title">视在功率(kVA)</view> <view class="item item-title">视在功率(kVA)</view>
<view class="item item-title">功率因数</view> <view class="item item-title">功率因数</view>
<template v-for="(item, index) in renderData.负载侧"> <template v-for="(item, index) in renderData.负载侧">
<view class="item">{{ item.phase }}</view> <view class="item">{{ item.phase }}</view>
<view class="item">{{ item['Apf_P_Load(W)'] || '-' }}</view> <view class="item">{{ (item['Apf_P_Load(W)'] / 1000).toFixed(4) || '-' }}</view>
<view class="item">{{ item['Apf_Q_Load(Var)'] || '-' }}</view> <view class="item">{{ (item['Apf_Q_Load(Var)'] / 1000).toFixed(4) || '-' }}</view>
<view class="item">{{ item['Apf_S_Load(VA)'] || '-' }}</view> <view class="item">{{ (item['Apf_S_Load(VA)'] / 1000).toFixed(4) || '-' }}</view>
<view class="item">{{ item['Apf_PF_Load(null)'] || '-' }}</view> <view class="item">{{ item['Apf_PF_Load(null)'] || '-' }}</view>
</template> </template>
</view> </view>
</view> </view>
</view> </view>
</template> </template>
<script> <script>
export default { export default {
data() { data() {
return { return {
renderData: { renderData: {
电网侧: [], 电网侧: [],
负载侧: [], 负载侧: [],
未知: [], 未知: [],
}, },
} }
}, },
props: { props: {
basicData: { basicData: {
type: Array, type: Array,
default: () => { default: () => {
return [] return []
}, },
}, },
}, },
watch: { watch: {
basicData: { basicData: {
handler: function (newVal, oldVal) { handler: function (newVal, oldVal) {
newVal.forEach((item) => {
if (item.phase === 'avg') {
return
}
let key = ''
switch (item.statisticalName) {
case 'Apf_P_Sys(W)':
key = '电网侧'
break
case 'Apf_Q_Sys(Var)':
key = '电网侧'
break
case 'Apf_S_Sys(VA)':
key = '电网侧'
break
case 'Apf_PF_Sys(null)':
key = '电网侧'
break
case 'Apf_P_Load(W)':
key = '负载侧'
break
case 'Apf_Q_Load(Var)':
key = '负载侧'
break
case 'Apf_S_Load(VA)':
key = '负载侧'
break
case 'Apf_PF_Load(null)':
key = '负载侧'
break
default:
key = '未知'
break
}
newVal.forEach(item => { let index = this.renderData[key].findIndex((item2) => {
if (item.phase === 'avg') { return item2.phase === item.phase
return })
} if (index > -1) {
let key = '' this.renderData[key][index][item.statisticalName] = item.statisticalData || '-'
switch (item.statisticalName) { } else {
case 'Apf_P_Sys(W)': this.renderData[key].push({
key = '电网侧' phase: item.phase,
break [item.statisticalName]: item.statisticalData || '-',
case 'Apf_Q_Sys(Var)': })
key = '电网侧' }
break })
case 'Apf_S_Sys(VA)': console.log(this.renderData)
key = '电网侧' },
break deep: true,
case 'Apf_PF_Sys(null)': immediate: true,
key = '电网侧' },
break },
case 'Apf_P_Load(W)': methods: {},
key = '负载侧'
break
case 'Apf_Q_Load(Var)':
key = '负载侧'
break
case 'Apf_S_Load(VA)':
key = '负载侧'
break
case 'Apf_PF_Load(null)':
key = '负载侧'
break
default:
key = '未知'
break
}
let index = this.renderData[key].findIndex((item2) => {
return item2.phase === item.phase
})
if (index > -1) {
this.renderData[key][index][item.statisticalName] = item.statisticalData || '-'
} else {
this.renderData[key].push({
phase: item.phase,
[item.statisticalName]: item.statisticalData || '-',
})
}
})
console.log(this.renderData)
},
deep: true,
immediate: true,
},
},
methods: {},
} }
</script> </script>
<style lang="scss"> <style lang="scss">

View File

@@ -18,7 +18,7 @@
></uni-data-select> ></uni-data-select>
</div> </div>
<view class="charts-box"> <view class="charts-box">
<view class="data-time">{{ time }}</view> <!-- <view class="data-time">{{ time }}</view> -->
<qiun-data-charts type="bar" :ontouch="true" :opts="opts" :chartData="chartData" /> <qiun-data-charts type="bar" :ontouch="true" :opts="opts" :chartData="chartData" />
</view> </view>
</view> </view>
@@ -32,7 +32,7 @@ export default {
default: () => [], default: () => [],
}, },
dataTime: { dataTime: {
type: String, type: [String,Number],
default: '', default: '',
}, },
}, },
@@ -103,8 +103,8 @@ export default {
meterFillColor: '#FFFFFF', meterFillColor: '#FFFFFF',
activeBgColor: '#000000', activeBgColor: '#000000',
activeBgOpacity: 0.08, activeBgOpacity: 0.08,
seriesGap: 2, seriesGap: 1,
categoryGap: 6, categoryGap: 4,
}, },
}, },
}, },
@@ -163,11 +163,11 @@ export default {
let dataOptions = [] let dataOptions = []
let type = [ let type = [
{ {
name: '电网谐波电流幅值序列', name: '谐波电流幅值序列',
key: 'Apf_HarmI', key: 'Apf_HarmI',
}, },
{ {
name: '负载谐波电压含有率序列', name: '谐波电压含有率序列',
key: 'Apf_HarmUR', key: 'Apf_HarmUR',
}, },
] ]
@@ -183,7 +183,6 @@ export default {
this.dataOptions = dataOptions this.dataOptions = dataOptions
console.log(dataOptions) console.log(dataOptions)
this.initEcharts() this.initEcharts()
console.log(this.dataTime)
this.time = this.$util.parseTime(this.dataTime - 8 * 60 * 60) this.time = this.$util.parseTime(this.dataTime - 8 * 60 * 60)
}, },
deep: true, deep: true,

File diff suppressed because it is too large Load Diff

View File

@@ -39,6 +39,7 @@ import ShuChu from "./comp/shuChu.vue";
import GanJieDian from "./comp/ganJieDian.vue"; import GanJieDian from "./comp/ganJieDian.vue";
import ZhuangTaiLiang from "./comp/zhuangTaiLiang.vue"; import ZhuangTaiLiang from "./comp/zhuangTaiLiang.vue";
import QiTa from "./comp/qiTa.vue"; import QiTa from "./comp/qiTa.vue";
import { manualAccess } from '@/common/api/accessBoot'
export default { export default {
components: { components: {
DianWang, DianWang,
@@ -53,6 +54,7 @@ export default {
loading: false, loading: false,
navMenuActive: 0, navMenuActive: 0,
navHeight: 0, navHeight: 0,
pageOptions:{},
navMenuList: [{ navMenuList: [{
text: '电网数据' text: '电网数据'
}, { }, {
@@ -76,6 +78,10 @@ export default {
iconPath: '/static/about.png', iconPath: '/static/about.png',
text: '关于', text: '关于',
}, },
{
iconPath: '/static/access.png',
text: '接入',
},
] ]
} }
}, },
@@ -110,6 +116,10 @@ export default {
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 === '接入') {
manualAccess({nDid:this.pageOptions.ndid}).then((res) => {
this.$util.toast(res.message)
})
} }
this.$refs.fab.close() this.$refs.fab.close()
}, },
@@ -164,6 +174,7 @@ export default {
} }
}, },
onLoad (options) { onLoad (options) {
this.pageOptions = options
this.init() this.init()
}, },

View File

@@ -368,11 +368,12 @@ export default {
this.navMenuActive = index this.navMenuActive = index
}, },
jump(item) { jump(item) {
console.log(12321,item);
uni.navigateTo({ uni.navigateTo({
url: '/pages/device/APF/detail?id=' + item.equipmentId + '&isPrimaryUser=' + item.isPrimaryUser, url: '/pages/device/APF/detail?id=' + item.equipmentId + '&isPrimaryUser=' + item.isPrimaryUser + '&ndid=' + item.ndid,
}) })
}, },
}, },
} }
</script> </script>
<style lang="scss"></style> <style lang="scss"></style>

File diff suppressed because it is too large Load Diff

View File

@@ -1,29 +1,47 @@
<template> <template>
<Cn-page :loading="loading" beforeRender> <view>
<view slot="body"> <Cn-page :loading="loading" beforeRender>
<view class="transfer"> <view slot="body">
<!-- <div class="transfer-img" ref="qrCodeUrl" /> --> <view class="transfer">
<!-- <uqrcode ref="uqrcode" canvas-id="qrcode" :value="content" :options="{ margin: 10 }"></uqrcode> --> <!-- <div class="transfer-img" ref="qrCodeUrl" /> -->
<uqrcode ref="uqrcode" canvas-id="qrcode" :value="content" size="200" <!-- <uqrcode ref="uqrcode" canvas-id="qrcode" :value="content" :options="{ margin: 10 }"></uqrcode> -->
@complete="complete" <uqrcode
:loading="false"></uqrcode> ref="uqrcode"
<view style="height: 200rpx"></view> canvas-id="qrcode"
<view class="transfer-text ">请让接收人员扫码接收</view> :value="content"
<view class="transfer-btn"> size="200"
<button class="transfer-btn-item" style="background-color: #fff; color: #111" @click="back"> @complete="complete"
返回 :loading="false"
</button> ></uqrcode>
<button class="transfer-btn-item ml20" @click="scan">扫一扫</button> <view style="height: 200rpx"></view>
<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 ml20" @click="scan">扫一扫</button>
</view>
</view> </view>
</view> </view>
</view> </Cn-page>
</Cn-page> <uni-popup ref="alertDialog" type="dialog">
<uni-popup-dialog
type="info"
cancelText="禁止"
confirmText="允许"
title="权限说明"
content='是否允许"灿能物联"使用相机?'
@confirm="handleScon"
@close="dialogClose"
></uni-popup-dialog>
</uni-popup>
</view>
</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 {transferDevice} from "@/common/api/device"; import { transferDevice } from '@/common/api/device'
export default { export default {
data() { data() {
@@ -38,10 +56,10 @@ export default {
this.loading = false this.loading = false
}, },
back() { back() {
uni.navigateBack({delta: 1}) uni.navigateBack({ delta: 1 })
}, },
home() { home() {
uni.navigateBack({delta: 1}) uni.navigateBack({ delta: 1 })
}, },
transferDevice(userId) { transferDevice(userId) {
transferDevice(this.options.id, userId).then((res) => { transferDevice(this.options.id, userId).then((res) => {
@@ -53,6 +71,18 @@ export default {
}) })
}, },
scan() { scan() {
if (
plus.os.name == 'Android' &&
plus.navigator.checkPermission('android.permission.CAMERA') === 'undetermined'
) {
//未授权
this.$refs.alertDialog.open()
} else {
this.handleScon()
}
},
handleScon() {
uni.scanCode({ uni.scanCode({
success: (res) => { success: (res) => {
console.log(res) console.log(res)
@@ -68,6 +98,7 @@ export default {
}, },
}) })
}, },
dialogClose() {},
}, },
onLoad(options) { onLoad(options) {
this.options = options this.options = options

View File

@@ -133,6 +133,7 @@ export default {
}, },
computed: { computed: {
deviceListFilter() { deviceListFilter() {
let arr = this.store.data.filter((item) => { let arr = this.store.data.filter((item) => {
if (this.select.projectName && this.select.projectType) { if (this.select.projectName && this.select.projectType) {
return item.project === this.select.projectName && item.type === this.select.projectType return item.project === this.select.projectName && item.type === this.select.projectType
@@ -144,9 +145,11 @@ export default {
return true return true
} }
}) })
if (this.transfer || this.share) { if (this.transfer || this.share) {
return arr.filter((item) => { return arr.filter((item) => {
return item.isPrimaryUser === '1' && item.process == 4 return item.isPrimaryUser === '1' //&& item.process == 4
}) })
} else { } else {
return arr return arr
@@ -330,8 +333,9 @@ export default {
this.navMenuActive = index this.navMenuActive = index
}, },
jump(item) { jump(item) {
uni.navigateTo({ uni.navigateTo({
url: '/pages/device/APF/detail?id=' + item.equipmentId + '&isPrimaryUser=' + item.isPrimaryUser, url: '/pages/device/APF/detail?id=' + item.equipmentId + '&isPrimaryUser=' + item.isPrimaryUser+ '&ndid=' + item.ndid,
}) })
}, },
}, },

View File

@@ -1,132 +1,168 @@
<template> <template>
<view class="index-zhuyonghu"> <view class="index-zhuyonghu">
<template v-if="devCount.engineeringListLength > 1"> <template v-if="devCount.engineeringListLength > 1">
<view class="canneng-index-title mb20">所有工程设备统计</view> <view class="canneng-index-title mb20">所有工程设备统计</view>
<view class="header"> <view class="header">
<view class="header-item" @click="jump('allEngineering')"> <view class="header-item" @click="jump('allEngineering')">
<view class="header-item-value">{{ devCount.onLineDevCount + devCount.offLineDevCount || 0 }}</view> <view class="header-item-value">{{ devCount.onLineDevCount + devCount.offLineDevCount || 0 }}</view>
<view class="header-item-label">设备总数</view> <view class="header-item-label">设备总数</view>
</view> </view>
<view class="header-item" @click="jump('onLineDevs')"> <view class="header-item" @click="jump('onLineDevs')">
<view class="header-item-value">{{ devCount.onLineDevCount || 0 }}</view> <view class="header-item-value">{{ devCount.onLineDevCount || 0 }}</view>
<view class="header-item-label">在线设备</view> <view class="header-item-label">在线设备</view>
</view> </view>
<view class="header-item" @click="jump('offLineDevs')"> <view class="header-item" @click="jump('offLineDevs')">
<view class="header-item-value">{{ devCount.offLineDevCount || 0 }}</view> <view class="header-item-value">{{ devCount.offLineDevCount || 0 }}</view>
<view class="header-item-label">离线设备</view> <view class="header-item-label">离线设备</view>
</view> </view>
</view> </view>
<view class="mt20"></view> <view class="mt20"></view>
</template> </template>
<view class="canneng-index-title mb20">当前工程设备统计</view> <view class="canneng-index-title mb20">当前工程设备统计</view>
<view class="header"> <view class="header">
<view class="header-item" @click="jump('nowEngineering')"> <view class="header-item" @click="jump('nowEngineering')">
<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')">
<view class="header-item-value">{{ devCount.currentOnLineDevCount || 0 }}</view> <view class="header-item-value">{{ devCount.currentOnLineDevCount || 0 }}</view>
<view class="header-item-label">在线设备</view> <view class="header-item-label">在线设备</view>
</view> </view>
<view class="header-item" @click="jump('currentOffLineDevs')"> <view class="header-item" @click="jump('currentOffLineDevs')">
<view class="header-item-value">{{ devCount.currentOffLineDevCount || 0 }}</view> <view class="header-item-value">{{ devCount.currentOffLineDevCount || 0 }}</view>
<view class="header-item-label">离线设备</view> <view class="header-item-label">离线设备</view>
</view> </view>
</view> </view>
<view class="canneng-index-title mt20">常用功能</view> <view class="canneng-index-title mt20">常用功能</view>
<view style="padding: 20rpx 20rpx 0"> <view style="padding: 20rpx 20rpx 0">
<Cn-grid title="" :auto-fill="false"> <Cn-grid title="" :auto-fill="false">
<Cn-grid-item src="/static/device2.png" text="设备注册" @click="registerDevice(4)"></Cn-grid-item> <Cn-grid-item src="/static/device2.png" text="设备注册" @click="registerDevice(4)"></Cn-grid-item>
<Cn-grid-item <Cn-grid-item
src="/static/device2.png" src="/static/device2.png"
text="功能调试" text="功能调试"
@click="registerDevice(2)" @click="registerDevice(2)"
v-if="config.feature" v-if="config.feature"
></Cn-grid-item> ></Cn-grid-item>
<Cn-grid-item <Cn-grid-item
src="/static/device2.png" src="/static/device2.png"
text="出厂调试" text="出厂调试"
@click="registerDevice(3)" @click="registerDevice(3)"
v-if="config.factory" v-if="config.factory"
></Cn-grid-item> ></Cn-grid-item>
<Cn-grid-item background="#fff" v-if="!config.feature"></Cn-grid-item> <Cn-grid-item background="#fff" v-if="!config.feature"></Cn-grid-item>
<Cn-grid-item background="#fff" v-if="!config.factory"></Cn-grid-item> <Cn-grid-item background="#fff" v-if="!config.factory"></Cn-grid-item>
<Cn-grid-item background="#fff"></Cn-grid-item> <Cn-grid-item background="#fff"></Cn-grid-item>
<!-- <Cn-grid-item src="/static/gateway2.png" text="网关注册" @click="registerGateway"></Cn-grid-item> --> <!-- <Cn-grid-item src="/static/gateway2.png" text="网关注册" @click="registerGateway"></Cn-grid-item> -->
<!-- <Cn-grid-item src="/static/feedback2.png" text="问题反馈" @click="submitFeedBack"></Cn-grid-item>--> <!-- <Cn-grid-item src="/static/feedback2.png" text="问题反馈" @click="submitFeedBack"></Cn-grid-item>-->
</Cn-grid> </Cn-grid>
</view> </view>
</view> <uni-popup ref="popup" type="dialog" @maskClick="maskClick">
<uni-popup-dialog
mode="base"
type="info"
content="请选择设备类型"
:duration="0"
confirmText="直连设备"
cancelText="网关接入"
cancelColor="#007aff"
@close="close"
@confirm="confirm"
></uni-popup-dialog>
</uni-popup>
</view>
</template> </template>
<script> <script>
export default { export default {
data() { data() {
return { return {
loading: true, loading: true,
config: { config: {
feature: true, feature: true,
factory: true, factory: true,
}, },
} type: 0,
}, }
props: { },
devCount: { props: {
type: Object, devCount: {
default: {}, type: Object,
}, default: {},
}, },
created() { },
this.init() created() {
}, this.init()
methods: { },
init() { methods: {
console.log('工程init') init() {
let serverConfig = uni.getStorageSync(this.$cacheKey.serverConfig) console.log('工程init')
serverConfig && (this.config = serverConfig) let serverConfig = uni.getStorageSync(this.$cacheKey.serverConfig)
}, serverConfig && (this.config = serverConfig)
submitFeedBack() { },
uni.navigateTo({ url: '/pages/home/feedback' }) submitFeedBack() {
}, uni.navigateTo({ url: '/pages/home/feedback' })
registerDevice(type) { },
uni.showModal({ registerDevice(type) {
title: '提示', this.type = type
content: '请选择设备类型', this.$refs.popup.open()
confirmText: '直连设备', // uni.showModal({
cancelText: '网关接入', // title: '提示',
cancelColor: '#007aff', // content: '请选择设备类型',
success: ({ confirm, cancel }) => { // confirmText: '直连设备',
if (confirm) { // cancelText: '网关接入',
if (this.devCount.engineeringListLength > 0) { // cancelColor: '#007aff',
uni.navigateTo({ // success: ({ confirm, cancel }) => {
url: '/pages/device/new?type=' + type, // if (confirm) {
}) // if (this.devCount.engineeringListLength > 0) {
} else { // uni.navigateTo({
uni.navigateTo({ // url: '/pages/device/new?type=' + type,
url: '/pages/engineering/new?from=index&type=' + type, // })
}) // } else {
} // uni.navigateTo({
} else if (cancel) { // url: '/pages/engineering/new?from=index&type=' + type,
// uni.navigateTo({ // })
// url: '/pages/gateway/list', // }
// }) // } else if (cancel) {
this.$util.toast('功能正在开发,敬请期待') // // uni.navigateTo({
} // // url: '/pages/gateway/list',
}, // // })
}) // this.$util.toast('功能正在开发,敬请期待')
}, // }
registerGateway() { // },
uni.navigateTo({ // })
url: '/pages/gateway/new', },
}) maskClick() {
}, this.$refs.popup.close()
jump(type) { },
uni.navigateTo({ close() {
url: '/pages/device/list?type=' + type, this.$util.toast('功能正在开发,敬请期待')
}) this.$refs.popup.close()
}, },
}, confirm(value) {
if (this.devCount.engineeringListLength > 0) {
uni.navigateTo({
url: '/pages/device/new?type=' + this.type,
})
} else {
uni.navigateTo({
url: '/pages/engineering/new?from=index&type=' + this.type,
})
}
this.$refs.popup.close()
},
registerGateway() {
uni.navigateTo({
url: '/pages/gateway/new',
})
},
jump(type) {
uni.navigateTo({
url: '/pages/device/list?type=' + type,
})
},
},
} }
</script> </script>
<style lang="scss"></style> <style lang="scss"></style>

View File

@@ -42,6 +42,7 @@
<Cn-grid-item src="/static/feedback2.png" text="问题反馈" @click="submitFeedBack"></Cn-grid-item> <Cn-grid-item src="/static/feedback2.png" text="问题反馈" @click="submitFeedBack"></Cn-grid-item>
</Cn-grid> </Cn-grid>
</view> </view>
</view> </view>
</template> </template>
<script> <script>

View File

@@ -1,108 +1,143 @@
<template> <template>
<view class="index-zhuyonghu"> <view class="index-zhuyonghu">
<template v-if="devCount.engineeringListLength > 1"> <template v-if="devCount.engineeringListLength > 1">
<view class="canneng-index-title mb20">所有工程设备统计</view> <view class="canneng-index-title mb20">所有工程设备统计</view>
<view class="header"> <view class="header">
<view class="header-item" @click="jump('allEngineering')"> <view class="header-item" @click="jump('allEngineering')">
<view class="header-item-value">{{ devCount.onLineDevCount + devCount.offLineDevCount || 0 }}</view> <view class="header-item-value">{{ devCount.onLineDevCount + devCount.offLineDevCount || 0 }}</view>
<view class="header-item-label">设备总数</view> <view class="header-item-label">设备总数</view>
</view> </view>
<view class="header-item" @click="jump('onLineDevs')"> <view class="header-item" @click="jump('onLineDevs')">
<view class="header-item-value">{{ devCount.onLineDevCount || 0 }}</view> <view class="header-item-value">{{ devCount.onLineDevCount || 0 }}</view>
<view class="header-item-label">在线设备</view> <view class="header-item-label">在线设备</view>
</view> </view>
<view class="header-item" @click="jump('offLineDevs')"> <view class="header-item" @click="jump('offLineDevs')">
<view class="header-item-value">{{ devCount.offLineDevCount || 0 }}</view> <view class="header-item-value">{{ devCount.offLineDevCount || 0 }}</view>
<view class="header-item-label">离线设备</view> <view class="header-item-label">离线设备</view>
</view> </view>
</view> </view>
<view class="mt20"></view> <view class="mt20"></view>
</template> </template>
<view class="canneng-index-title mb20">当前工程设备统计</view> <view class="canneng-index-title mb20">当前工程设备统计</view>
<view class="header"> <view class="header">
<view class="header-item" @click="jump('nowEngineering')"> <view class="header-item" @click="jump('nowEngineering')">
<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')"> <view class="header-item-value">{{ devCount.currentOnLineDevCount || 0 }}</view>
<view class="header-item-value">{{ devCount.currentOnLineDevCount || 0 }}</view> <view class="header-item-label">在线设备</view>
<view class="header-item-label">在线设备</view> </view>
</view> <view class="header-item" @click="jump('currentOffLineDevs')">
<view class="header-item" @click="jump('currentOffLineDevs')"> <view class="header-item-value">{{ devCount.currentOffLineDevCount || 0 }}</view>
<view class="header-item-value">{{ devCount.currentOffLineDevCount || 0 }}</view> <view class="header-item-label">离线设备</view>
<view class="header-item-label">离线设备</view> </view>
</view> </view>
</view> <view class="canneng-index-title mt20">常用功能</view>
<view class="canneng-index-title mt20">常用功能</view> <view style="padding: 20rpx 20rpx 0">
<view style="padding: 20rpx 20rpx 0"> <Cn-grid title="">
<Cn-grid title=""> <Cn-grid-item src="/static/device2.png" text="设备注册" @click="registerDevice"></Cn-grid-item>
<Cn-grid-item src="/static/device2.png" text="设备注册" @click="registerDevice"></Cn-grid-item> <!-- <Cn-grid-item src="/static/gateway2.png" text="网关注册" @click="registerGateway"></Cn-grid-item> -->
<!-- <Cn-grid-item src="/static/gateway2.png" text="网关注册" @click="registerGateway"></Cn-grid-item> --> <Cn-grid-item src="/static/feedback2.png" text="问题反馈" @click="submitFeedBack"></Cn-grid-item>
<Cn-grid-item src="/static/feedback2.png" text="问题反馈" @click="submitFeedBack"></Cn-grid-item> </Cn-grid>
</Cn-grid> </view>
</view> <uni-popup ref="popup" type="dialog" @maskClick='maskClick'>
</view> <uni-popup-dialog
mode="base"
type="info"
content="请选择设备类型"
:duration="0"
confirmText="直连设备"
cancelText="网关接入"
cancelColor= '#007aff'
@close="close"
@confirm="confirm"
></uni-popup-dialog>
</uni-popup>
</view>
</template> </template>
<script> <script>
export default { export default {
data() { data() {
return { return {
loading: false, loading: false,
} }
}, },
props: { props: {
devCount: { devCount: {
type: Object, type: Object,
default: {}, default: {},
}, },
}, },
methods: { methods: {
submitFeedBack() { submitFeedBack() {
uni.navigateTo({url: '/pages/home/feedback'}) uni.navigateTo({ url: '/pages/home/feedback' })
}, },
registerDevice() { registerDevice() {
uni.showModal({ this.$refs.popup.open()
title: '提示', // uni.showModal({
content: '请选择设备类型', // title: '提示',
confirmText: '直连设备', // content: '请选择设备类型',
cancelText: '网关接入', // confirmText: '直连设备',
cancelColor: '#007aff', // cancelText: '网关接入',
success: ({confirm, cancel}) => { // cancelColor: '#007aff',
if (confirm) { // success: ({confirm, cancel}) => {
if (this.devCount.engineeringListLength > 0) { // if (confirm) {
uni.navigateTo({ // if (this.devCount.engineeringListLength > 0) {
url: '/pages/device/new?type=4', // uni.navigateTo({
}) // url: '/pages/device/new?type=4',
} else { // })
uni.navigateTo({ // } else {
url: '/pages/engineering/new?from=index' // uni.navigateTo({
}) // url: '/pages/engineering/new?from=index'
} // })
// }
} else if (cancel) { // } else if (cancel) {
// uni.navigateTo({ // // uni.navigateTo({
// url: '/pages/gateway/list', // // url: '/pages/gateway/list',
// }) // // })
this.$util.toast('功能正在开发,敬请期待') // this.$util.toast('功能正在开发,敬请期待')
} // }
}, // },
}) // })
}, },
registerGateway() { maskClick(){
uni.navigateTo({ this.$refs.popup.close()
url: '/pages/gateway/new', },
}) close() {
}, this.$util.toast('功能正在开发,敬请期待')
jump(type) { this.$refs.popup.close()
uni.navigateTo({ },
url: confirm(value) {
'/pages/device/list?type=' + type
}) if (this.devCount.engineeringListLength > 0) {
}, uni.navigateTo({
}, url: '/pages/device/new?type=4',
})
} else {
uni.navigateTo({
url: '/pages/engineering/new?from=index'
})
}
this.$refs.popup.close()
},
registerGateway() {
uni.navigateTo({
url: '/pages/gateway/new',
})
},
jump(type) {
uni.navigateTo({
url: '/pages/device/list?type=' + type,
})
},
},
} }
</script> </script>
<style lang="scss"></style> <style lang="scss"></style>

View File

@@ -30,6 +30,7 @@
<GongCheng ref="gongCheng" :devCount="devCount" v-if="userInfo.authorities === 'engineering_user'" /> <GongCheng ref="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-show="engineeringList.length"> <template v-show="engineeringList.length">
<view class="canneng-index-title mt20">设备列表</view> <view class="canneng-index-title mt20">设备列表</view>
@@ -150,6 +151,7 @@ export default {
return return
} }
getDevCount(this.select.engineeringId).then((res) => { getDevCount(this.select.engineeringId).then((res) => {
// console.log(`12312`,res)
// Object.assign(this.devCount, res.data) // Object.assign(this.devCount, res.data)
this.devCount = res.data this.devCount = res.data
this.devCount.currentOffLineDevs.forEach((item) => { this.devCount.currentOffLineDevs.forEach((item) => {
@@ -213,7 +215,7 @@ export default {
// #endif // #endif
}, 1000) }, 1000)
} }
this.timer = setInterval(this.getDevCount, 3000) // 定时请求 this.timer = setInterval(this.getDevCount, 1000 *60) // 定时请求
this.store = this.DataSource('/cs-device-boot/EquipmentDelivery/queryEquipmentByProject') this.store = this.DataSource('/cs-device-boot/EquipmentDelivery/queryEquipmentByProject')
// #ifdef APP-PLUS // #ifdef APP-PLUS
setTimeout(() => { setTimeout(() => {
@@ -230,6 +232,7 @@ export default {
}, },
onShow() { onShow() {
this.userInfo = uni.getStorageSync(this.$cacheKey.userInfo) this.userInfo = uni.getStorageSync(this.$cacheKey.userInfo)
let access_token = uni.getStorageSync(this.$cacheKey.access_token) let access_token = uni.getStorageSync(this.$cacheKey.access_token)
console.log(access_token) console.log(access_token)
if (!access_token) { if (!access_token) {

View File

@@ -1,64 +1,64 @@
<template> <template>
<view :loading="loading"> <view :loading="loading">
<view class="mine"> <view class="mine">
<view class="mine-header" @click="jump('basic')"> <view class="mine-header" @click="jump('basic')">
<image mode="aspectFill" class="mine-header-head" :src="userInfo.avatar" v-if="userInfo.avatar" /> <image mode="aspectFill" class="mine-header-head" :src="userInfo.avatar" v-if="userInfo.avatar" />
<image mode="aspectFill" class="mine-header-head" src="/static/head.png" v-else /> <image mode="aspectFill" class="mine-header-head" src="/static/head.png" v-else />
<view class="mine-header-name hide-txt"> <view class="mine-header-name hide-txt">
<view>{{ userInfo.nickname }}</view> <view>{{ userInfo.nickname }}</view>
<view></view> <view></view>
<view class="tag">{{ roleName }}</view> <view class="tag">{{ roleName }}</view>
</view> </view>
<image <image
src="/static/erweima.png" src="/static/erweima.png"
style="height: 50rpx; width: 50rpx; border-radius: 12rpx" style="height: 50rpx; width: 50rpx; border-radius: 12rpx"
mode="scaleToFill" mode="scaleToFill"
/> />
<uni-icons type="forward" color="#aaa" size="16"></uni-icons> <uni-icons type="forward" color="#aaa" size="16"></uni-icons>
</view> </view>
<view class="mine-nav" v-if="userInfo.authorities === 'tourist'" @click="jump('upgrade')"> <view class="mine-nav" v-if="userInfo.authorities === 'tourist'" @click="jump('upgrade')">
<image mode="aspectFill" class="mine-nav-icon" src="/static/server.png" /> <image mode="aspectFill" class="mine-nav-icon" src="/static/server.png" />
<view class="mine-nav-label">角色升级</view> <view class="mine-nav-label">角色升级</view>
<uni-icons type="forward" color="#aaa" size="20"></uni-icons> <uni-icons type="forward" color="#aaa" size="20"></uni-icons>
</view> </view>
<!-- <view class="mine-nav" @click="jump('audit')" v-if="userInfo.authorities === 'app_vip_user'"> <!-- <view class="mine-nav" @click="jump('audit')" v-if="userInfo.authorities === 'app_vip_user'">
<image mode="aspectFill" class="mine-nav-icon" src="/static/server.png" /> <image mode="aspectFill" class="mine-nav-icon" src="/static/server.png" />
<view class="mine-nav-label">角色审核</view> <view class="mine-nav-label">角色审核</view>
<uni-icons type="forward" color="#aaa" size="20"></uni-icons> <uni-icons type="forward" color="#aaa" size="20"></uni-icons>
</view> --> </view> -->
<!-- <view class="mine-nav" @click="jump('user')" v-if="userInfo.authorities === 'app_vip_user'"> <!-- <view class="mine-nav" @click="jump('user')" v-if="userInfo.authorities === 'app_vip_user'">
<image mode="aspectFill" class="mine-nav-icon" src="/static/subordinate.png" /> <image mode="aspectFill" class="mine-nav-icon" src="/static/subordinate.png" />
<view class="mine-nav-label">分享用户列表</view> <view class="mine-nav-label">分享用户列表</view>
<uni-icons type="forward" color="#aaa" size="20"></uni-icons> <uni-icons type="forward" color="#aaa" size="20"></uni-icons>
</view> --> </view> -->
<view <view
class="mine-nav" class="mine-nav"
@click="jump('scan')" @click="jump('scan')"
v-if="userInfo.authorities === 'app_vip_user' || userInfo.authorities === 'engineering_user'" v-if="userInfo.authorities === 'app_vip_user' || userInfo.authorities === 'engineering_user'"
> >
<image mode="aspectFill" class="mine-nav-icon" src="/static/scan.png" /> <image mode="aspectFill" class="mine-nav-icon" src="/static/scan.png" />
<view class="mine-nav-label">扫一扫</view> <view class="mine-nav-label">扫一扫</view>
<uni-icons type="forward" color="#aaa" size="20"></uni-icons> <uni-icons type="forward" color="#aaa" size="20"></uni-icons>
</view> </view>
<view class="mine-nav" @click="jump('engineering')"> <view class="mine-nav" @click="jump('engineering')">
<image mode="aspectFill" class="mine-nav-icon" src="/static/gongcheng.png" /> <image mode="aspectFill" class="mine-nav-icon" src="/static/gongcheng.png" />
<view class="mine-nav-label">工程管理</view> <view class="mine-nav-label">工程管理</view>
<uni-icons type="forward" color="#aaa" size="20"></uni-icons> <uni-icons type="forward" color="#aaa" size="20"></uni-icons>
</view> </view>
<view class="mine-nav" @click="jump('project')"> <view class="mine-nav" @click="jump('project')">
<image mode="aspectFill" class="mine-nav-icon" src="/static/project.png" /> <image mode="aspectFill" class="mine-nav-icon" src="/static/project.png" />
<view class="mine-nav-label">项目管理</view> <view class="mine-nav-label">项目管理</view>
<uni-icons type="forward" color="#aaa" size="20"></uni-icons> <uni-icons type="forward" color="#aaa" size="20"></uni-icons>
</view> </view>
<view class="mine-nav" @click="jump('feedback')"> <view class="mine-nav" @click="jump('feedback')">
<image mode="aspectFill" class="mine-nav-icon" src="/static/feedback.png" /> <image mode="aspectFill" class="mine-nav-icon" src="/static/feedback.png" />
<view class="mine-nav-label">反馈列表</view> <view class="mine-nav-label">反馈列表</view>
<uni-badge :text="messageCount.feedBackCount"></uni-badge> <uni-badge :text="messageCount.feedBackCount"></uni-badge>
<uni-icons type="forward" color="#aaa" size="20"></uni-icons> <uni-icons type="forward" color="#aaa" size="20"></uni-icons>
</view> </view>
<!-- <view <!-- <view
class="mine-nav" class="mine-nav"
@click="jump('gateway')" @click="jump('gateway')"
style="border-bottom: none; box-shadow: 0 4rpx 8rpx #e7e7e74c" style="border-bottom: none; box-shadow: 0 4rpx 8rpx #e7e7e74c"
@@ -67,41 +67,54 @@
<view class="mine-nav-label">网关列表</view> <view class="mine-nav-label">网关列表</view>
<uni-icons type="forward" color="#aaa" size="20"></uni-icons> <uni-icons type="forward" color="#aaa" size="20"></uni-icons>
</view> --> </view> -->
<view class="mine-nav" @click="jump('setupMessage')"> <view class="mine-nav" @click="jump('setupMessage')">
<image mode="aspectFill" class="mine-nav-icon" src="/static/message4.png" /> <image mode="aspectFill" class="mine-nav-icon" src="/static/message4.png" />
<view class="mine-nav-label">消息配置</view> <view class="mine-nav-label">消息配置</view>
<uni-icons type="forward" color="#aaa" size="20"></uni-icons> <uni-icons type="forward" color="#aaa" size="20"></uni-icons>
</view> </view>
<view <view
class="mine-nav" class="mine-nav"
@click="jump('engineering/setting')" @click="jump('engineering/setting')"
v-if="userInfo.authorities === 'engineering_user'" v-if="userInfo.authorities === 'engineering_user'"
> >
<image mode="aspectFill" class="mine-nav-icon" src="/static/like.png" /> <image mode="aspectFill" class="mine-nav-icon" src="/static/like.png" />
<view class="mine-nav-label">关注工程配置</view> <view class="mine-nav-label">关注工程配置</view>
<uni-icons type="forward" color="#aaa" size="20"></uni-icons> <uni-icons type="forward" color="#aaa" size="20"></uni-icons>
</view> </view>
<view class="mine-nav" @click="jump('serverSetting')" v-if="userInfo.authorities === 'engineering_user'"> <view class="mine-nav" @click="jump('serverSetting')" v-if="userInfo.authorities === 'engineering_user'">
<image mode="aspectFill" class="mine-nav-icon" src="/static/server2.png" /> <image mode="aspectFill" class="mine-nav-icon" src="/static/server2.png" />
<view class="mine-nav-label">调试内容配置</view> <view class="mine-nav-label">调试内容配置</view>
<uni-icons type="forward" color="#aaa" size="20"></uni-icons> <uni-icons type="forward" color="#aaa" size="20"></uni-icons>
</view> </view>
<view class="mine-nav" @click="jump('setup')" style="border-bottom: none"> <view class="mine-nav" @click="jump('setup')" style="border-bottom: none">
<image mode="aspectFill" class="mine-nav-icon" src="/static/setup.png" /> <image mode="aspectFill" class="mine-nav-icon" src="/static/setup.png" />
<view class="mine-nav-label">设置</view> <view class="mine-nav-label">设置</view>
<uni-icons type="forward" color="#aaa" size="20"></uni-icons> <uni-icons type="forward" color="#aaa" size="20"></uni-icons>
</view> </view>
<uni-popup ref="inputDialog" type="dialog"> <uni-popup ref="inputDialog" type="dialog">
<uni-popup-dialog <uni-popup-dialog
ref="inputClose" ref="inputClose"
mode="input" mode="input"
title="角色升级" title="角色升级"
placeholder="请输入六位邀请码" placeholder="请输入六位邀请码"
@confirm="upgrade" @confirm="upgrade"
></uni-popup-dialog> ></uni-popup-dialog>
</uni-popup> </uni-popup>
</view> </view>
</view>
<uni-popup ref="alertDialog" type="dialog">
<uni-popup-dialog
type="info"
cancelText="禁止"
confirmText="允许"
title="权限说明"
content='是否允许"灿能物联"使用相机?'
@confirm="handleScon"
@close="dialogClose"
></uni-popup-dialog>
</uni-popup>
</view>
</template> </template>
<script> <script>
@@ -109,219 +122,235 @@ import { roleUpdate, autoLogin } from '@/common/api/user'
import { transferDevice, shareDevice } from '@/common/api/device' import { transferDevice, shareDevice } from '@/common/api/device'
export default { export default {
data() { data() {
return { return {
loading: true, loading: true,
userInfo: {}, userInfo: {},
messageCount: {}, messageCount: {},
timer: null, timer: null,
} }
}, },
computed: { computed: {
roleName() { roleName() {
let roleName = '' let roleName = ''
switch (this.userInfo.authorities) { switch (this.userInfo.authorities) {
case 'tourist': case 'tourist':
roleName = '游客' roleName = '游客'
break break
case 'engineering_user': case 'engineering_user':
roleName = '工程用户' roleName = '工程用户'
break break
case 'app_vip_user': case 'app_vip_user':
roleName = '正式用户' roleName = '正式用户'
break break
case 'market_user': case 'market_user':
roleName = '营销用户' roleName = '营销用户'
break break
case 'operation_manager': case 'operation_manager':
roleName = '运维管理员' roleName = '运维管理员'
break break
} }
return roleName return roleName
}, },
}, },
onLoad(options) { onLoad(options) {
this.init() this.init()
}, },
methods: { methods: {
init() {}, init() {},
upgrade(code) { upgrade(code) {
console.log(code) console.log(code)
roleUpdate({ roleUpdate({
referralCode: code, referralCode: code,
userId: this.userInfo.userIndex, userId: this.userInfo.userIndex,
}).then((res) => { }).then((res) => {
uni.showToast({ uni.showToast({
title: '升级成功', title: '升级成功',
icon: 'none', icon: 'none',
}) })
uni.removeStorageSync('access_token') uni.removeStorageSync('access_token')
// 直接登录 // 直接登录
autoLogin(this.userInfo.user_name).then((res) => { autoLogin(this.userInfo.user_name).then((res) => {
this.$util.loginSuccess(res.data).then((userInfo) => { this.$util.loginSuccess(res.data).then((userInfo) => {
this.userInfo = userInfo this.userInfo = userInfo
}) })
}) })
}) })
}, },
jump(type) { jump(type) {
switch (type) { switch (type) {
case 'scan': case 'scan':
uni.scanCode({ if (
success: (res) => { plus.os.name == 'Android' &&
console.log('条码类型:' + res.scanType) plus.navigator.checkPermission('android.permission.CAMERA') === 'undetermined'
console.log('条码内容:' + res.result) ) {
let content = JSON.parse(res.result) //未授权
switch (content.type) {
case 'transferDevice': this.$refs.alertDialog.open()
this.transferDevice(content.id.split(',')) } else {
break console.log(2)
case 'shareDevice': this.handleScon()
this.shareDevice(content.id.split(',')) }
break
default:
this.$util.toast('无效二维码') break
break case 'login':
} uni.navigateTo({
}, url: `/pages/user/login`,
}) })
break break
case 'login': case 'gateway':
uni.navigateTo({ uni.navigateTo({
url: `/pages/user/login`, url: `/pages/gateway/list`,
}) })
break break
case 'gateway': case 'upgrade':
uni.navigateTo({ this.$refs.inputDialog.open()
url: `/pages/gateway/list`, break
}) case 'basic':
break uni.navigateTo({
case 'upgrade': url: `/pages/user/basic`,
this.$refs.inputDialog.open() })
break break
case 'basic': case 'project':
uni.navigateTo({ uni.navigateTo({
url: `/pages/user/basic`, url: `/pages/project/list`,
}) })
break break
case 'project': case 'engineering':
uni.navigateTo({ uni.navigateTo({
url: `/pages/project/list`, url: `/pages/engineering/list`,
}) })
break break
case 'engineering': case 'engineering/setting':
uni.navigateTo({ uni.navigateTo({
url: `/pages/engineering/list`, url: `/pages/engineering/setting`,
}) })
break break
case 'engineering/setting': case 'feedback':
uni.navigateTo({ uni.navigateTo({
url: `/pages/engineering/setting`, url: `/pages/message/feedback`,
}) })
break break
case 'feedback': default:
uni.navigateTo({ uni.navigateTo({
url: `/pages/message/feedback`, url: `/pages/mine/${type}`,
}) })
break break
default: }
uni.navigateTo({ },
url: `/pages/mine/${type}`, handleScon(){
}) uni.scanCode({
break success: (res) => {
} console.log('条码类型:' + res.scanType)
}, console.log('条码内容:' + res.result)
transferDevice(id) { let content = JSON.parse(res.result)
transferDevice(id).then((res) => { switch (content.type) {
uni.navigateTo({ url: '/pages/mine/result?type=transferDevice&id=' + id }) case 'transferDevice':
}) this.transferDevice(content.id.split(','))
}, break
shareDevice(id) { case 'shareDevice':
shareDevice(id).then((res) => { this.shareDevice(content.id.split(','))
uni.navigateTo({ url: '/pages/mine/result?type=shareDevice&id=' + id }) break
}) default:
}, this.$util.toast('无效二维码')
}, break
onShow() { }
this.userInfo = uni.getStorageSync(this.$cacheKey.userInfo) },
this.loading = false })
this.messageCount = uni.getStorageSync(this.$cacheKey.messageCount) || {} },
this.timer = setInterval(() => { dialogClose(){},
this.messageCount = uni.getStorageSync(this.$cacheKey.messageCount) || {} transferDevice(id) {
}, 1000) // 定时请求 transferDevice(id).then((res) => {
}, uni.navigateTo({ url: '/pages/mine/result?type=transferDevice&id=' + id })
onHide() { })
clearInterval(this.timer) },
}, shareDevice(id) {
shareDevice(id).then((res) => {
uni.navigateTo({ url: '/pages/mine/result?type=shareDevice&id=' + id })
})
},
},
onShow() {
this.userInfo = uni.getStorageSync(this.$cacheKey.userInfo)
this.loading = false
this.messageCount = uni.getStorageSync(this.$cacheKey.messageCount) || {}
this.timer = setInterval(() => {
this.messageCount = uni.getStorageSync(this.$cacheKey.messageCount) || {}
}, 1000) // 定时请求
},
onHide() {
clearInterval(this.timer)
},
} }
</script> </script>
<style lang="scss"> <style lang="scss">
.mine { .mine {
.mine-header { .mine-header {
padding: 200rpx 34rpx 34rpx; padding: 200rpx 34rpx 34rpx;
display: flex; display: flex;
align-items: center; align-items: center;
background: $uni-theme-white; background: $uni-theme-white;
margin-bottom: 20rpx; margin-bottom: 20rpx;
box-shadow: 0 4rpx 8rpx #e7e7e74c; box-shadow: 0 4rpx 8rpx #e7e7e74c;
.mine-header-head { .mine-header-head {
margin-right: 30rpx; margin-right: 30rpx;
height: 128rpx; height: 128rpx;
width: 128rpx; width: 128rpx;
border-radius: $uni-theme-radius; border-radius: $uni-theme-radius;
overflow: hidden; overflow: hidden;
} }
.mine-header-name { .mine-header-name {
margin-right: 30rpx; margin-right: 30rpx;
flex: 1; flex: 1;
font-size: 36rpx; font-size: 36rpx;
color: #111; color: #111;
font-weight: 700; font-weight: 700;
.tag { .tag {
display: flex; display: flex;
align-items: center; align-items: center;
margin-top: 10rpx; margin-top: 10rpx;
font-size: 24rpx; font-size: 24rpx;
color: #aaa; color: #aaa;
.engineering-button { .engineering-button {
margin-left: 10rpx; margin-left: 10rpx;
font-size: 24rpx; font-size: 24rpx;
padding: 5rpx 12rpx; padding: 5rpx 12rpx;
color: #fff; color: #fff;
font-weight: 400; font-weight: 400;
border-radius: 16rpx; border-radius: 16rpx;
background: $uni-theme-color; background: $uni-theme-color;
} }
} }
} }
} }
.mine-nav { .mine-nav {
padding: 34rpx; padding: 34rpx;
display: flex; display: flex;
align-items: center; align-items: center;
background: $uni-theme-white; background: $uni-theme-white;
border-bottom: 1rpx solid #e8e8e8; border-bottom: 1rpx solid #e8e8e8;
&-icon { &-icon {
margin-right: 30rpx; margin-right: 30rpx;
height: 44rpx; height: 44rpx;
width: 44rpx; width: 44rpx;
border-radius: $uni-theme-radius; border-radius: $uni-theme-radius;
overflow: hidden; overflow: hidden;
} }
&-label { &-label {
margin-right: 30rpx; margin-right: 30rpx;
flex: 1; flex: 1;
font-size: 28rpx; font-size: 28rpx;
color: #111; color: #111;
} }
} }
} }
</style> </style>

View File

@@ -4,7 +4,7 @@
<view class="about"> <view class="about">
<image src="/static/logo.png" class="logo"></image> <image src="/static/logo.png" class="logo"></image>
<view class="name">灿能物联</view> <view class="name">灿能物联</view>
<view class="version">Version 1.0.3</view> <view class="version">Version 1.1.1</view>
</view> </view>
</view> </view>
</Cn-page> </Cn-page>

View File

@@ -22,7 +22,7 @@
<uni-icons type="forward" color="#aaa" size="20"></uni-icons> <uni-icons type="forward" color="#aaa" size="20"></uni-icons>
</view> </view>
<view class="mine-nav" @click="jump('policy')"> <view class="mine-nav" @click="jump('policy')">
<view class="mine-nav-label">个人信息保护政策</view> <view class="mine-nav-label">隐私政策</view>
<uni-icons type="forward" color="#aaa" size="20"></uni-icons> <uni-icons type="forward" color="#aaa" size="20"></uni-icons>
</view> </view>
<view class="mine-nav" @click="jump('system')"> <view class="mine-nav" @click="jump('system')">

View File

@@ -13,7 +13,12 @@
</uni-forms-item> </uni-forms-item>
<uni-forms-item name="code"> <uni-forms-item name="code">
<view class="login-box-input"> <view class="login-box-input">
<uni-easyinput type="text" v-model="formData.code" placeholder="请输入验证码" maxlength="6" /> <uni-easyinput
type="text"
v-model="formData.code"
placeholder="请输入验证码"
maxlength="6"
/>
<view <view
class="ml40" class="ml40"
style=" style="
@@ -43,7 +48,7 @@
<!-- <view class="login-box-tips"> <!-- <view class="login-box-tips">
<view style="color: #999">点击提交即表示同意</view> <view style="color: #999">点击提交即表示同意</view>
<navigator url="/pages/mine/agreement" hover-class="none">用户协议</navigator> <navigator url="/pages/mine/agreement" hover-class="none">用户协议</navigator>
<navigator url="/pages/mine/policy" hover-class="none">个人信息保护政策</navigator> <navigator url="/pages/mine/policy" hover-class="none">隐私政策</navigator>
</view> --> </view> -->
</view> </view>
</view> </view>
@@ -206,7 +211,7 @@ export default {
} }
.login-box-input-btn { .login-box-input-btn {
padding:0 40rpx; padding: 0 40rpx;
margin-left: 40rpx; margin-left: 40rpx;
background: $uni-theme-color; background: $uni-theme-color;
color: #fff; color: #fff;

View File

@@ -1,16 +1,29 @@
<template> <template>
<Cn-page :loading="loading"> <view>
<view slot="body"> <Cn-page :loading="loading">
<view class="head"> <view slot="body">
<image class="head-img" :src="userInfo.avatar" v-if="userInfo.avatar"></image> <view class="head">
<image class="head-img" src="/static/head.png" v-else></image> <image class="head-img" :src="userInfo.avatar" v-if="userInfo.avatar"></image>
<view class="head-setup"> <image class="head-img" src="/static/head.png" v-else></image>
<view class="head-setup-item" @click="take('album')">从相册选一张</view> <view class="head-setup">
<view class="head-setup-item" @click="take('camera')">拍一张照片</view> <view class="head-setup-item" @click="take('album')">从相册选一张</view>
<view class="head-setup-item" @click="take('camera')">拍一张照片</view>
</view>
</view> </view>
</view> </view>
</view> </Cn-page>
</Cn-page> <uni-popup ref="alertDialog" type="dialog">
<uni-popup-dialog
type="info"
cancelText="禁止"
confirmText="允许"
title="权限说明"
content='是否允许"灿能物联"使用相机?'
@confirm="handleScon('camera')"
@close="dialogClose"
></uni-popup-dialog>
</uni-popup>
</view>
</template> </template>
<script> <script>
import { uploadImage, getImageUrl } from '@/common/api/basic' import { uploadImage, getImageUrl } from '@/common/api/basic'
@@ -25,12 +38,27 @@ export default {
}, },
methods: { methods: {
take(type) { take(type) {
if (type == 'camera') {
if (
plus.os.name == 'Android' &&
plus.navigator.checkPermission('android.permission.CAMERA') === 'undetermined'
) {
//未授权
this.$refs.alertDialog.open()
} else {
this.handleScon(type)
}
} else {
this.handleScon(type)
}
},
handleScon(type) {
uni.chooseImage({ uni.chooseImage({
count: 1, count: 1,
sizeType: ['original', 'compressed'], sizeType: ['original', 'compressed'],
sourceType: [type], sourceType: [type],
success: (res) => { success: (res) => {
console.log(res)
uploadImage(res.tempFilePaths[0]).then((res) => { uploadImage(res.tempFilePaths[0]).then((res) => {
console.log(res) console.log(res)
let result = JSON.parse(res[1].data) let result = JSON.parse(res[1].data)
@@ -47,7 +75,9 @@ export default {
}, },
}) })
}, },
dialogClose() {},
}, },
onLoad(options) { onLoad(options) {
this.userInfo = uni.getStorageSync(this.$cacheKey.userInfo) this.userInfo = uni.getStorageSync(this.$cacheKey.userInfo)
}, },

View File

@@ -2,12 +2,12 @@
<Cn-page :loading="loading"> <Cn-page :loading="loading">
<view slot="body"> <view slot="body">
<view class="login"> <view class="login">
<view class="login-title" style="font-size: 36rpx;">欢迎登录</view> <view class="login-title" style="font-size: 36rpx">欢迎登录</view>
<!-- <view class="login-des">灿能物联</view> --> <!-- <view class="login-des">灿能物联</view> -->
<view class="login-box"> <view class="login-box">
<!-- <image class="login-box-logo" mode="widthFix" src="/static/logo.png"></image> --> <!-- <image class="login-box-logo" mode="widthFix" src="/static/logo.png"></image> -->
<image class="login-box-logo" mode="widthFix" src="/static/logo.png"></image> <image class="login-box-logo" mode="widthFix" src="/static/logo.png"></image>
<view style="font-size: 40rpx;text-align: center;font-weight: 500;" class="mt20">灿能物联</view> <view style="font-size: 40rpx; text-align: center; font-weight: 500" class="mt20">灿能物联</view>
<template v-if="loginType == 'yzm'"> <template v-if="loginType == 'yzm'">
<view class="login-box-input mt100"> <view class="login-box-input mt100">
<input <input
@@ -22,15 +22,19 @@
<view class="login-box-input-img"></view> <view class="login-box-input-img"></view>
</view> --> </view> -->
<view class="login-box-input mt40"> <view class="login-box-input mt40">
<input type="text" class="login-box-input-main" v-model="yzmForm.code" <input
placeholder="手机验证码" maxlength="6"/> type="text"
class="login-box-input-main"
v-model="yzmForm.code"
placeholder="手机验证码"
maxlength="6"
/>
<view <view
class="ml40" class="ml40"
style="font-size: 28rpx; color: #666; width: 200rpx; text-align: center" style="font-size: 28rpx; color: #666; width: 200rpx; text-align: center"
v-if="waitTime > 0" v-if="waitTime > 0"
>{{ waitTime + 's后重新获取' }} >{{ waitTime + 's后重新获取' }}
</view </view>
>
<button class="login-box-input-btn" v-else @click="getCode" size="mini">获取验证码</button> <button class="login-box-input-btn" v-else @click="getCode" size="mini">获取验证码</button>
</view> </view>
</template> </template>
@@ -69,18 +73,12 @@
<navigator url="/pages/user/register" hover-class="none">快速注册</navigator> <navigator url="/pages/user/register" hover-class="none">快速注册</navigator>
</view> </view>
<view class="login-box-tips"> <view class="login-box-tips">
<view style="color: #999" <view style="color: #999">
> <checkbox style="transform: scale(0.7)" :checked="checkbox" @click="checkbox = !checkbox" />
<checkbox
style="transform: scale(0.7)"
:checked="checkbox"
@click="checkbox = !checkbox"
/>
我已阅读并同意 我已阅读并同意
</view </view>
>
<navigator url="/pages/mine/agreement" hover-class="none">用户协议</navigator> <navigator url="/pages/mine/agreement" hover-class="none">用户协议</navigator>
<navigator url="/pages/mine/policy" hover-class="none">个人信息保护政策</navigator> <navigator url="/pages/mine/policy" hover-class="none">隐私政策</navigator>
</view> </view>
</view> </view>
</view> </view>
@@ -88,9 +86,9 @@
</Cn-page> </Cn-page>
</template> </template>
<script> <script>
import {apiGetYms, apiPwdLogin, apiYsmLogin, gongkey} from '@/common/api/user' import { apiGetYms, apiPwdLogin, apiYsmLogin, gongkey } from '@/common/api/user'
import {sm2, encrypt} from '@/common/js/sm2.js' import { sm2, encrypt } from '@/common/js/sm2.js'
import {sm3Digest} from '@/common/js/sm3.js' import { sm3Digest } from '@/common/js/sm3.js'
export default { export default {
data() { data() {
@@ -110,14 +108,14 @@ export default {
waitTime: 0, waitTime: 0,
tenantId: '', tenantId: '',
companyName: '', companyName: '',
inter:null inter: null,
} }
}, },
components: {}, components: {},
methods: { methods: {
getCode() { getCode() {
if (!this.checkbox) { if (!this.checkbox) {
return this.$util.toast('请先阅读并同意用户协议和个人信息保护政策!') return this.$util.toast('请先阅读并同意用户协议和隐私政策!')
} }
if (!this.phone) { if (!this.phone) {
return this.$util.toast('请输入手机号!') return this.$util.toast('请输入手机号!')
@@ -148,7 +146,7 @@ export default {
}, },
login() { login() {
if (!this.checkbox) { if (!this.checkbox) {
return this.$util.toast('请先阅读并同意用户协议和个人信息保护政策!') return this.$util.toast('请先阅读并同意用户协议和隐私政策!')
} }
console.log(this.loginType) console.log(this.loginType)
if (this.loginType == 'pwd') { if (this.loginType == 'pwd') {
@@ -164,7 +162,7 @@ export default {
console.log(this.phone) console.log(this.phone)
let loginName = encrypt(this.phone) let loginName = encrypt(this.phone)
console.log(loginName) console.log(loginName)
gongkey({loginName}).then((response) => { gongkey({ loginName }).then((response) => {
let publicKey = response.data let publicKey = response.data
let sm3Pwd = sm3Digest(this.pwdForm.pwd) let sm3Pwd = sm3Digest(this.pwdForm.pwd)
let jiamipassword = sm2(sm3Pwd + '|' + this.pwdForm.pwd, publicKey, 0) let jiamipassword = sm2(sm3Pwd + '|' + this.pwdForm.pwd, publicKey, 0)

View File

@@ -5,28 +5,51 @@
<template v-if="step == 1"> <template v-if="step == 1">
<uni-forms ref="form" :rules="rules" :modelValue="formData"> <uni-forms ref="form" :rules="rules" :modelValue="formData">
<uni-forms-item name="phone"> <uni-forms-item name="phone">
<uni-easyinput type="number" v-model="formData.phone" maxlength="11" placeholder="请输入手机号" /> <uni-easyinput
type="number"
v-model="formData.phone"
maxlength="11"
placeholder="请输入手机号"
/>
</uni-forms-item> </uni-forms-item>
<uni-forms-item name="code"> <uni-forms-item name="code">
<view class="login-box-input"> <view class="login-box-input">
<uni-easyinput type="text" v-model="formData.code" placeholder="请输入验证码" maxlength="6" /> <uni-easyinput
type="text"
v-model="formData.code"
placeholder="请输入验证码"
maxlength="6"
/>
<view <view
class="ml40" class="ml40"
style="margin-left: 40rpx; font-size: 28rpx; color: #666; width: 200rpx; text-align: center" style="
margin-left: 40rpx;
font-size: 28rpx;
color: #666;
width: 200rpx;
text-align: center;
"
v-if="waitTime > 0" v-if="waitTime > 0"
>{{ waitTime + 's后重新获取' }} >{{ waitTime + 's后重新获取' }}
</view> </view>
<button class="login-box-input-btn" v-else @click="getCode" size="mini">获取验证码</button> <button class="login-box-input-btn" v-else @click="getCode" size="mini">
获取验证码
</button>
</view> </view>
</uni-forms-item> </uni-forms-item>
</uni-forms> </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 class="login-box-tips">
<view style="color: #999" <view style="color: #999"
><checkbox style="transform: scale(0.7)" :checked="checkbox" @click="checkbox = !checkbox" /> 我已阅读并同意</view ><checkbox
style="transform: scale(0.7)"
:checked="checkbox"
@click="checkbox = !checkbox"
/>
我已阅读并同意</view
> >
<navigator url="/pages/mine/agreement" hover-class="none">用户协议</navigator> <navigator url="/pages/mine/agreement" hover-class="none">用户协议</navigator>
<navigator url="/pages/mine/policy" hover-class="none">个人信息保护政策</navigator> <navigator url="/pages/mine/policy" hover-class="none">隐私政策</navigator>
</view> </view>
</template> </template>
<template v-else> <template v-else>
@@ -54,11 +77,11 @@ export default {
name: 'jiaban', name: 'jiaban',
data() { data() {
return { return {
checkbox:false, checkbox: false,
step: 1, step: 1,
loading: false, loading: false,
waitTime: 0, waitTime: 0,
inter:null, inter: null,
// 表单数据 // 表单数据
formData: { formData: {
phone: '', phone: '',
@@ -106,7 +129,7 @@ export default {
methods: { methods: {
getCode() { getCode() {
if (!this.checkbox) { if (!this.checkbox) {
return this.$util.toast('请先阅读并同意用户协议和个人信息保护政策!') return this.$util.toast('请先阅读并同意用户协议和隐私政策!')
} }
if (!this.formData.phone) { if (!this.formData.phone) {
return this.$util.toast('请输入手机号!') return this.$util.toast('请输入手机号!')
@@ -137,7 +160,7 @@ export default {
}, },
firstSubmit() { firstSubmit() {
if (!this.checkbox) { if (!this.checkbox) {
return this.$util.toast('请先阅读并同意用户协议和个人信息保护政策!') return this.$util.toast('请先阅读并同意用户协议和隐私政策!')
} }
this.$refs.form.validate().then((valid, errors) => { this.$refs.form.validate().then((valid, errors) => {
apiRegister({ apiRegister({
@@ -214,7 +237,7 @@ export default {
} }
.login-box-input-btn { .login-box-input-btn {
padding:0 40rpx; padding: 0 40rpx;
margin-left: 40rpx; margin-left: 40rpx;
background: $uni-theme-color; background: $uni-theme-color;
color: #fff; color: #fff;

296
pnpm-lock.yaml generated
View File

@@ -1,44 +1,56 @@
lockfileVersion: 5.4 lockfileVersion: '6.0'
specifiers: settings:
'@types/html5plus': ^1.0.2 autoInstallPeers: true
'@types/uni-app': ^1.4.4 excludeLinksFromLockfile: false
crypto-js: ^4.1.1
html2canvas: ^1.4.1
image-tools: ^1.4.0
jsrsasign: ^10.8.6
mqtt: 3.0.0
pinyin-pro: ^3.13.2
qs: ^6.11.2
vconsole: ^3.15.1
dependencies: dependencies:
crypto-js: 4.1.1 crypto-js:
html2canvas: 1.4.1 specifier: ^4.1.1
image-tools: 1.4.0 version: 4.1.1
jsrsasign: 10.8.6 html2canvas:
mqtt: 3.0.0 specifier: ^1.4.1
pinyin-pro: 3.13.2 version: 1.4.1
qs: 6.11.2 image-tools:
vconsole: 3.15.1 specifier: ^1.4.0
version: 1.4.0
jsrsasign:
specifier: ^10.8.6
version: 10.8.6
mqtt:
specifier: 3.0.0
version: 3.0.0
pinyin-pro:
specifier: ^3.13.2
version: 3.13.2
qs:
specifier: ^6.11.2
version: 6.11.2
vconsole:
specifier: ^3.15.1
version: 3.15.1
devDependencies: devDependencies:
'@types/html5plus': 1.0.2 '@types/html5plus':
'@types/uni-app': 1.4.4 specifier: ^1.0.2
version: 1.0.2
'@types/uni-app':
specifier: ^1.4.4
version: 1.4.4
packages: packages:
/@babel/helper-string-parser/7.22.5: /@babel/helper-string-parser@7.22.5:
resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==}
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
dev: true dev: true
/@babel/helper-validator-identifier/7.22.5: /@babel/helper-validator-identifier@7.22.5:
resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==} resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==}
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
dev: true dev: true
/@babel/parser/7.22.5: /@babel/parser@7.22.5:
resolution: {integrity: sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==} resolution: {integrity: sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==}
engines: {node: '>=6.0.0'} engines: {node: '>=6.0.0'}
hasBin: true hasBin: true
@@ -46,14 +58,14 @@ packages:
'@babel/types': 7.22.5 '@babel/types': 7.22.5
dev: true dev: true
/@babel/runtime/7.22.6: /@babel/runtime@7.22.6:
resolution: {integrity: sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ==} resolution: {integrity: sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ==}
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
dependencies: dependencies:
regenerator-runtime: 0.13.11 regenerator-runtime: 0.13.11
dev: false dev: false
/@babel/types/7.22.5: /@babel/types@7.22.5:
resolution: {integrity: sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==} resolution: {integrity: sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==}
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
dependencies: dependencies:
@@ -62,17 +74,17 @@ packages:
to-fast-properties: 2.0.0 to-fast-properties: 2.0.0
dev: true dev: true
/@types/html5plus/1.0.2: /@types/html5plus@1.0.2:
resolution: {integrity: sha512-OklP5lrmLq8/6TUOLgWc0LndUVvAiTWX5dnyoCFhIUtFW9opWsnCtG/UxPgeuC28Rv2XNbFfft/hEEI39P/4Ag==} resolution: {integrity: sha512-OklP5lrmLq8/6TUOLgWc0LndUVvAiTWX5dnyoCFhIUtFW9opWsnCtG/UxPgeuC28Rv2XNbFfft/hEEI39P/4Ag==}
dev: true dev: true
/@types/uni-app/1.4.4: /@types/uni-app@1.4.4:
resolution: {integrity: sha512-ZTXnrCTblZyoLIoKbTv1Whz1nxrTcM7vg0qGXzDpXP8m9MqdjKt48N3FffQT1IsJWNkxbvJ1Eg5UHDaq+k+oBQ==} resolution: {integrity: sha512-ZTXnrCTblZyoLIoKbTv1Whz1nxrTcM7vg0qGXzDpXP8m9MqdjKt48N3FffQT1IsJWNkxbvJ1Eg5UHDaq+k+oBQ==}
dependencies: dependencies:
vue: 2.7.14 vue: 2.7.14
dev: true dev: true
/@vue/compiler-sfc/2.7.14: /@vue/compiler-sfc@2.7.14:
resolution: {integrity: sha512-aNmNHyLPsw+sVvlQFQ2/8sjNuLtK54TC6cuKnVzAY93ks4ZBrvwQSnkkIh7bsbNhum5hJBS00wSDipQ937f5DA==} resolution: {integrity: sha512-aNmNHyLPsw+sVvlQFQ2/8sjNuLtK54TC6cuKnVzAY93ks4ZBrvwQSnkkIh7bsbNhum5hJBS00wSDipQ937f5DA==}
dependencies: dependencies:
'@babel/parser': 7.22.5 '@babel/parser': 7.22.5
@@ -80,24 +92,24 @@ packages:
source-map: 0.6.1 source-map: 0.6.1
dev: true dev: true
/async-limiter/1.0.1: /async-limiter@1.0.1:
resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==}
dev: false dev: false
/balanced-match/1.0.2: /balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
dev: false dev: false
/base64-arraybuffer/1.0.2: /base64-arraybuffer@1.0.2:
resolution: {integrity: sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==} resolution: {integrity: sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==}
engines: {node: '>= 0.6.0'} engines: {node: '>= 0.6.0'}
dev: false dev: false
/base64-js/1.5.1: /base64-js@1.5.1:
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
dev: false dev: false
/bl/4.1.0: /bl@4.1.0:
resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==}
dependencies: dependencies:
buffer: 5.7.1 buffer: 5.7.1
@@ -105,50 +117,50 @@ packages:
readable-stream: 3.6.1 readable-stream: 3.6.1
dev: false dev: false
/brace-expansion/1.1.11: /brace-expansion@1.1.11:
resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
dependencies: dependencies:
balanced-match: 1.0.2 balanced-match: 1.0.2
concat-map: 0.0.1 concat-map: 0.0.1
dev: false dev: false
/buffer-from/1.1.2: /buffer-from@1.1.2:
resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
dev: false dev: false
/buffer/5.7.1: /buffer@5.7.1:
resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==}
dependencies: dependencies:
base64-js: 1.5.1 base64-js: 1.5.1
ieee754: 1.2.1 ieee754: 1.2.1
dev: false dev: false
/call-bind/1.0.2: /call-bind@1.0.2:
resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==}
dependencies: dependencies:
function-bind: 1.1.1 function-bind: 1.1.1
get-intrinsic: 1.2.1 get-intrinsic: 1.2.1
dev: false dev: false
/callback-stream/1.1.0: /callback-stream@1.1.0:
resolution: {integrity: sha512-sAZ9kODla+mGACBZ1IpTCAisKoGnv6PykW7fPk1LrM+mMepE18Yz0515yoVcrZy7dQsTUp3uZLQ/9Sx1RnLoHw==} resolution: {integrity: sha512-sAZ9kODla+mGACBZ1IpTCAisKoGnv6PykW7fPk1LrM+mMepE18Yz0515yoVcrZy7dQsTUp3uZLQ/9Sx1RnLoHw==}
dependencies: dependencies:
inherits: 2.0.4 inherits: 2.0.4
readable-stream: 2.3.8 readable-stream: 2.3.8
dev: false dev: false
/commist/1.1.0: /commist@1.1.0:
resolution: {integrity: sha512-rraC8NXWOEjhADbZe9QBNzLAN5Q3fsTPQtBV+fEVj6xKIgDgNiEVE6ZNfHpZOqfQ21YUzfVNUXLOEZquYvQPPg==} resolution: {integrity: sha512-rraC8NXWOEjhADbZe9QBNzLAN5Q3fsTPQtBV+fEVj6xKIgDgNiEVE6ZNfHpZOqfQ21YUzfVNUXLOEZquYvQPPg==}
dependencies: dependencies:
leven: 2.1.0 leven: 2.1.0
minimist: 1.2.8 minimist: 1.2.8
dev: false dev: false
/concat-map/0.0.1: /concat-map@0.0.1:
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
dev: false dev: false
/concat-stream/1.6.2: /concat-stream@1.6.2:
resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==}
engines: {'0': node >= 0.8} engines: {'0': node >= 0.8}
dependencies: dependencies:
@@ -158,42 +170,42 @@ packages:
typedarray: 0.0.6 typedarray: 0.0.6
dev: false dev: false
/copy-text-to-clipboard/3.2.0: /copy-text-to-clipboard@3.2.0:
resolution: {integrity: sha512-RnJFp1XR/LOBDckxTib5Qjr/PMfkatD0MUCQgdpqS8MdKiNUzBjAQBEN6oUy+jW7LI93BBG3DtMB2KOOKpGs2Q==} resolution: {integrity: sha512-RnJFp1XR/LOBDckxTib5Qjr/PMfkatD0MUCQgdpqS8MdKiNUzBjAQBEN6oUy+jW7LI93BBG3DtMB2KOOKpGs2Q==}
engines: {node: '>=12'} engines: {node: '>=12'}
dev: false dev: false
/core-js/3.31.1: /core-js@3.31.1:
resolution: {integrity: sha512-2sKLtfq1eFST7l7v62zaqXacPc7uG8ZAya8ogijLhTtaKNcpzpB4TMoTw2Si+8GYKRwFPMMtUT0263QFWFfqyQ==} resolution: {integrity: sha512-2sKLtfq1eFST7l7v62zaqXacPc7uG8ZAya8ogijLhTtaKNcpzpB4TMoTw2Si+8GYKRwFPMMtUT0263QFWFfqyQ==}
requiresBuild: true requiresBuild: true
dev: false dev: false
/core-util-is/1.0.3: /core-util-is@1.0.3:
resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
dev: false dev: false
/crypto-js/4.1.1: /crypto-js@4.1.1:
resolution: {integrity: sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==} resolution: {integrity: sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==}
dev: false dev: false
/css-line-break/2.1.0: /css-line-break@2.1.0:
resolution: {integrity: sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==} resolution: {integrity: sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==}
dependencies: dependencies:
utrie: 1.0.2 utrie: 1.0.2
dev: false dev: false
/csstype/3.1.2: /csstype@3.1.2:
resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==}
dev: true dev: true
/d/1.0.1: /d@1.0.1:
resolution: {integrity: sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==} resolution: {integrity: sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==}
dependencies: dependencies:
es5-ext: 0.10.62 es5-ext: 0.10.62
type: 1.2.0 type: 1.2.0
dev: false dev: false
/debug/4.3.4: /debug@4.3.4:
resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
engines: {node: '>=6.0'} engines: {node: '>=6.0'}
peerDependencies: peerDependencies:
@@ -205,7 +217,7 @@ packages:
ms: 2.1.2 ms: 2.1.2
dev: false dev: false
/duplexify/3.7.1: /duplexify@3.7.1:
resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==} resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==}
dependencies: dependencies:
end-of-stream: 1.4.4 end-of-stream: 1.4.4
@@ -214,7 +226,7 @@ packages:
stream-shift: 1.0.1 stream-shift: 1.0.1
dev: false dev: false
/duplexify/4.1.2: /duplexify@4.1.2:
resolution: {integrity: sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==} resolution: {integrity: sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==}
dependencies: dependencies:
end-of-stream: 1.4.4 end-of-stream: 1.4.4
@@ -223,13 +235,13 @@ packages:
stream-shift: 1.0.1 stream-shift: 1.0.1
dev: false dev: false
/end-of-stream/1.4.4: /end-of-stream@1.4.4:
resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==}
dependencies: dependencies:
once: 1.4.0 once: 1.4.0
dev: false dev: false
/es5-ext/0.10.62: /es5-ext@0.10.62:
resolution: {integrity: sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==} resolution: {integrity: sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==}
engines: {node: '>=0.10'} engines: {node: '>=0.10'}
requiresBuild: true requiresBuild: true
@@ -239,7 +251,7 @@ packages:
next-tick: 1.1.0 next-tick: 1.1.0
dev: false dev: false
/es6-iterator/2.0.3: /es6-iterator@2.0.3:
resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==}
dependencies: dependencies:
d: 1.0.1 d: 1.0.1
@@ -247,7 +259,7 @@ packages:
es6-symbol: 3.1.3 es6-symbol: 3.1.3
dev: false dev: false
/es6-map/0.1.5: /es6-map@0.1.5:
resolution: {integrity: sha512-mz3UqCh0uPCIqsw1SSAkB/p0rOzF/M0V++vyN7JqlPtSW/VsYgQBvVvqMLmfBuyMzTpLnNqi6JmcSizs4jy19A==} resolution: {integrity: sha512-mz3UqCh0uPCIqsw1SSAkB/p0rOzF/M0V++vyN7JqlPtSW/VsYgQBvVvqMLmfBuyMzTpLnNqi6JmcSizs4jy19A==}
dependencies: dependencies:
d: 1.0.1 d: 1.0.1
@@ -258,7 +270,7 @@ packages:
event-emitter: 0.3.5 event-emitter: 0.3.5
dev: false dev: false
/es6-set/0.1.6: /es6-set@0.1.6:
resolution: {integrity: sha512-TE3LgGLDIBX332jq3ypv6bcOpkLO0AslAQo7p2VqX/1N46YNsvIWgvjojjSEnWEGWMhr1qUbYeTSir5J6mFHOw==} resolution: {integrity: sha512-TE3LgGLDIBX332jq3ypv6bcOpkLO0AslAQo7p2VqX/1N46YNsvIWgvjojjSEnWEGWMhr1qUbYeTSir5J6mFHOw==}
engines: {node: '>=0.12'} engines: {node: '>=0.12'}
dependencies: dependencies:
@@ -270,39 +282,39 @@ packages:
type: 2.7.2 type: 2.7.2
dev: false dev: false
/es6-symbol/3.1.3: /es6-symbol@3.1.3:
resolution: {integrity: sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==} resolution: {integrity: sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==}
dependencies: dependencies:
d: 1.0.1 d: 1.0.1
ext: 1.7.0 ext: 1.7.0
dev: false dev: false
/event-emitter/0.3.5: /event-emitter@0.3.5:
resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==} resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==}
dependencies: dependencies:
d: 1.0.1 d: 1.0.1
es5-ext: 0.10.62 es5-ext: 0.10.62
dev: false dev: false
/ext/1.7.0: /ext@1.7.0:
resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==}
dependencies: dependencies:
type: 2.7.2 type: 2.7.2
dev: false dev: false
/extend/3.0.2: /extend@3.0.2:
resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==}
dev: false dev: false
/fs.realpath/1.0.0: /fs.realpath@1.0.0:
resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
dev: false dev: false
/function-bind/1.1.1: /function-bind@1.1.1:
resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
dev: false dev: false
/get-intrinsic/1.2.1: /get-intrinsic@1.2.1:
resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==}
dependencies: dependencies:
function-bind: 1.1.1 function-bind: 1.1.1
@@ -311,14 +323,14 @@ packages:
has-symbols: 1.0.3 has-symbols: 1.0.3
dev: false dev: false
/glob-parent/3.1.0: /glob-parent@3.1.0:
resolution: {integrity: sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==} resolution: {integrity: sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==}
dependencies: dependencies:
is-glob: 3.1.0 is-glob: 3.1.0
path-dirname: 1.0.2 path-dirname: 1.0.2
dev: false dev: false
/glob-stream/6.1.0: /glob-stream@6.1.0:
resolution: {integrity: sha512-uMbLGAP3S2aDOHUDfdoYcdIePUCfysbAd0IAoWVZbeGU/oNQ8asHVSshLDJUPWxfzj8zsCG7/XeHPHTtow0nsw==} resolution: {integrity: sha512-uMbLGAP3S2aDOHUDfdoYcdIePUCfysbAd0IAoWVZbeGU/oNQ8asHVSshLDJUPWxfzj8zsCG7/XeHPHTtow0nsw==}
engines: {node: '>= 0.10'} engines: {node: '>= 0.10'}
dependencies: dependencies:
@@ -334,7 +346,7 @@ packages:
unique-stream: 2.3.1 unique-stream: 2.3.1
dev: false dev: false
/glob/7.2.3: /glob@7.2.3:
resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
dependencies: dependencies:
fs.realpath: 1.0.0 fs.realpath: 1.0.0
@@ -345,24 +357,24 @@ packages:
path-is-absolute: 1.0.1 path-is-absolute: 1.0.1
dev: false dev: false
/has-proto/1.0.1: /has-proto@1.0.1:
resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==}
engines: {node: '>= 0.4'} engines: {node: '>= 0.4'}
dev: false dev: false
/has-symbols/1.0.3: /has-symbols@1.0.3:
resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
engines: {node: '>= 0.4'} engines: {node: '>= 0.4'}
dev: false dev: false
/has/1.0.3: /has@1.0.3:
resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
engines: {node: '>= 0.4.0'} engines: {node: '>= 0.4.0'}
dependencies: dependencies:
function-bind: 1.1.1 function-bind: 1.1.1
dev: false dev: false
/help-me/1.1.0: /help-me@1.1.0:
resolution: {integrity: sha512-P/IZ8yOMne3SCTHbVY429NZ67B/2bVQlcYGZh2iPPbdLrEQ/qY5aGChn0YTDmt7Sb4IKRI51fypItav+lNl76w==} resolution: {integrity: sha512-P/IZ8yOMne3SCTHbVY429NZ67B/2bVQlcYGZh2iPPbdLrEQ/qY5aGChn0YTDmt7Sb4IKRI51fypItav+lNl76w==}
dependencies: dependencies:
callback-stream: 1.1.0 callback-stream: 1.1.0
@@ -371,7 +383,7 @@ packages:
xtend: 4.0.2 xtend: 4.0.2
dev: false dev: false
/html2canvas/1.4.1: /html2canvas@1.4.1:
resolution: {integrity: sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==} resolution: {integrity: sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==}
engines: {node: '>=8.0.0'} engines: {node: '>=8.0.0'}
dependencies: dependencies:
@@ -379,26 +391,26 @@ packages:
text-segmentation: 1.0.3 text-segmentation: 1.0.3
dev: false dev: false
/ieee754/1.2.1: /ieee754@1.2.1:
resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
dev: false dev: false
/image-tools/1.4.0: /image-tools@1.4.0:
resolution: {integrity: sha512-TKtvJ6iUwM0mfaD4keMnk1ENHFC470QEjBfA3IlvKdEOufzvWbjbaoNcoyYq6HlViF8+d5tOS1ooE6j7CHf1lQ==} resolution: {integrity: sha512-TKtvJ6iUwM0mfaD4keMnk1ENHFC470QEjBfA3IlvKdEOufzvWbjbaoNcoyYq6HlViF8+d5tOS1ooE6j7CHf1lQ==}
dev: false dev: false
/inflight/1.0.6: /inflight@1.0.6:
resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
dependencies: dependencies:
once: 1.4.0 once: 1.4.0
wrappy: 1.0.2 wrappy: 1.0.2
dev: false dev: false
/inherits/2.0.4: /inherits@2.0.4:
resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
dev: false dev: false
/is-absolute/1.0.0: /is-absolute@1.0.0:
resolution: {integrity: sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==} resolution: {integrity: sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==}
engines: {node: '>=0.10.0'} engines: {node: '>=0.10.0'}
dependencies: dependencies:
@@ -406,70 +418,70 @@ packages:
is-windows: 1.0.2 is-windows: 1.0.2
dev: false dev: false
/is-extglob/2.1.1: /is-extglob@2.1.1:
resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
engines: {node: '>=0.10.0'} engines: {node: '>=0.10.0'}
dev: false dev: false
/is-glob/3.1.0: /is-glob@3.1.0:
resolution: {integrity: sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==} resolution: {integrity: sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==}
engines: {node: '>=0.10.0'} engines: {node: '>=0.10.0'}
dependencies: dependencies:
is-extglob: 2.1.1 is-extglob: 2.1.1
dev: false dev: false
/is-negated-glob/1.0.0: /is-negated-glob@1.0.0:
resolution: {integrity: sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==} resolution: {integrity: sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==}
engines: {node: '>=0.10.0'} engines: {node: '>=0.10.0'}
dev: false dev: false
/is-relative/1.0.0: /is-relative@1.0.0:
resolution: {integrity: sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==} resolution: {integrity: sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==}
engines: {node: '>=0.10.0'} engines: {node: '>=0.10.0'}
dependencies: dependencies:
is-unc-path: 1.0.0 is-unc-path: 1.0.0
dev: false dev: false
/is-unc-path/1.0.0: /is-unc-path@1.0.0:
resolution: {integrity: sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==} resolution: {integrity: sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==}
engines: {node: '>=0.10.0'} engines: {node: '>=0.10.0'}
dependencies: dependencies:
unc-path-regex: 0.1.2 unc-path-regex: 0.1.2
dev: false dev: false
/is-windows/1.0.2: /is-windows@1.0.2:
resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==}
engines: {node: '>=0.10.0'} engines: {node: '>=0.10.0'}
dev: false dev: false
/isarray/1.0.0: /isarray@1.0.0:
resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
dev: false dev: false
/json-stable-stringify-without-jsonify/1.0.1: /json-stable-stringify-without-jsonify@1.0.1:
resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
dev: false dev: false
/jsrsasign/10.8.6: /jsrsasign@10.8.6:
resolution: {integrity: sha512-bQmbVtsfbgaKBTWCKiDCPlUPbdlRIK/FzSwT3BzIgZl/cU6TqXu6pZJsCI/dJVrZ9Gir5GC4woqw9shH/v7MBw==} resolution: {integrity: sha512-bQmbVtsfbgaKBTWCKiDCPlUPbdlRIK/FzSwT3BzIgZl/cU6TqXu6pZJsCI/dJVrZ9Gir5GC4woqw9shH/v7MBw==}
dev: false dev: false
/leven/2.1.0: /leven@2.1.0:
resolution: {integrity: sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA==} resolution: {integrity: sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA==}
engines: {node: '>=0.10.0'} engines: {node: '>=0.10.0'}
dev: false dev: false
/minimatch/3.1.2: /minimatch@3.1.2:
resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
dependencies: dependencies:
brace-expansion: 1.1.11 brace-expansion: 1.1.11
dev: false dev: false
/minimist/1.2.8: /minimist@1.2.8:
resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
dev: false dev: false
/mqtt-packet/6.10.0: /mqtt-packet@6.10.0:
resolution: {integrity: sha512-ja8+mFKIHdB1Tpl6vac+sktqy3gA8t9Mduom1BA75cI+R9AHnZOiaBQwpGiWnaVJLDGRdNhQmFaAqd7tkKSMGA==} resolution: {integrity: sha512-ja8+mFKIHdB1Tpl6vac+sktqy3gA8t9Mduom1BA75cI+R9AHnZOiaBQwpGiWnaVJLDGRdNhQmFaAqd7tkKSMGA==}
dependencies: dependencies:
bl: 4.1.0 bl: 4.1.0
@@ -479,7 +491,7 @@ packages:
- supports-color - supports-color
dev: false dev: false
/mqtt/3.0.0: /mqtt@3.0.0:
resolution: {integrity: sha512-0nKV6MAc1ibKZwaZQUTb3iIdT4NVpj541BsYrqrGBcQdQ7Jd0MnZD1/6/nj1UFdGTboK9ZEUXvkCu2nPCugHFA==} resolution: {integrity: sha512-0nKV6MAc1ibKZwaZQUTb3iIdT4NVpj541BsYrqrGBcQdQ7Jd0MnZD1/6/nj1UFdGTboK9ZEUXvkCu2nPCugHFA==}
engines: {node: '>=4.0.0'} engines: {node: '>=4.0.0'}
hasBin: true hasBin: true
@@ -506,58 +518,58 @@ packages:
- utf-8-validate - utf-8-validate
dev: false dev: false
/ms/2.1.2: /ms@2.1.2:
resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
dev: false dev: false
/mutation-observer/1.0.3: /mutation-observer@1.0.3:
resolution: {integrity: sha512-M/O/4rF2h776hV7qGMZUH3utZLO/jK7p8rnNgGkjKUw8zCGjRQPxB8z6+5l8+VjRUQ3dNYu4vjqXYLr+U8ZVNA==} resolution: {integrity: sha512-M/O/4rF2h776hV7qGMZUH3utZLO/jK7p8rnNgGkjKUw8zCGjRQPxB8z6+5l8+VjRUQ3dNYu4vjqXYLr+U8ZVNA==}
dev: false dev: false
/nanoid/3.3.6: /nanoid@3.3.6:
resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true hasBin: true
dev: true dev: true
/next-tick/1.1.0: /next-tick@1.1.0:
resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==}
dev: false dev: false
/object-inspect/1.12.3: /object-inspect@1.12.3:
resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==}
dev: false dev: false
/once/1.4.0: /once@1.4.0:
resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
dependencies: dependencies:
wrappy: 1.0.2 wrappy: 1.0.2
dev: false dev: false
/ordered-read-streams/1.0.1: /ordered-read-streams@1.0.1:
resolution: {integrity: sha512-Z87aSjx3r5c0ZB7bcJqIgIRX5bxR7A4aSzvIbaxd0oTkWBCOoKfuGHiKj60CHVUgg1Phm5yMZzBdt8XqRs73Mw==} resolution: {integrity: sha512-Z87aSjx3r5c0ZB7bcJqIgIRX5bxR7A4aSzvIbaxd0oTkWBCOoKfuGHiKj60CHVUgg1Phm5yMZzBdt8XqRs73Mw==}
dependencies: dependencies:
readable-stream: 2.3.8 readable-stream: 2.3.8
dev: false dev: false
/path-dirname/1.0.2: /path-dirname@1.0.2:
resolution: {integrity: sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==} resolution: {integrity: sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==}
dev: false dev: false
/path-is-absolute/1.0.1: /path-is-absolute@1.0.1:
resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
engines: {node: '>=0.10.0'} engines: {node: '>=0.10.0'}
dev: false dev: false
/picocolors/1.0.0: /picocolors@1.0.0:
resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
dev: true dev: true
/pinyin-pro/3.13.2: /pinyin-pro@3.13.2:
resolution: {integrity: sha512-DKz04M0PkrongGyJW7GU+iNB2jInwLcP1p5+w0gu0hz2PtF8q+GTC1GDW731wyhm+q7PGoyMuY3sLONLTqi6mg==} resolution: {integrity: sha512-DKz04M0PkrongGyJW7GU+iNB2jInwLcP1p5+w0gu0hz2PtF8q+GTC1GDW731wyhm+q7PGoyMuY3sLONLTqi6mg==}
dev: false dev: false
/postcss/8.4.24: /postcss@8.4.24:
resolution: {integrity: sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==} resolution: {integrity: sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==}
engines: {node: ^10 || ^12 || >=14} engines: {node: ^10 || ^12 || >=14}
dependencies: dependencies:
@@ -566,25 +578,25 @@ packages:
source-map-js: 1.0.2 source-map-js: 1.0.2
dev: true dev: true
/process-nextick-args/2.0.1: /process-nextick-args@2.0.1:
resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
dev: false dev: false
/pump/2.0.1: /pump@2.0.1:
resolution: {integrity: sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==} resolution: {integrity: sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==}
dependencies: dependencies:
end-of-stream: 1.4.4 end-of-stream: 1.4.4
once: 1.4.0 once: 1.4.0
dev: false dev: false
/pump/3.0.0: /pump@3.0.0:
resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==}
dependencies: dependencies:
end-of-stream: 1.4.4 end-of-stream: 1.4.4
once: 1.4.0 once: 1.4.0
dev: false dev: false
/pumpify/1.5.1: /pumpify@1.5.1:
resolution: {integrity: sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==} resolution: {integrity: sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==}
dependencies: dependencies:
duplexify: 3.7.1 duplexify: 3.7.1
@@ -592,14 +604,14 @@ packages:
pump: 2.0.1 pump: 2.0.1
dev: false dev: false
/qs/6.11.2: /qs@6.11.2:
resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==} resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==}
engines: {node: '>=0.6'} engines: {node: '>=0.6'}
dependencies: dependencies:
side-channel: 1.0.4 side-channel: 1.0.4
dev: false dev: false
/readable-stream/2.3.8: /readable-stream@2.3.8:
resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==}
dependencies: dependencies:
core-util-is: 1.0.3 core-util-is: 1.0.3
@@ -611,7 +623,7 @@ packages:
util-deprecate: 1.0.2 util-deprecate: 1.0.2
dev: false dev: false
/readable-stream/3.6.1: /readable-stream@3.6.1:
resolution: {integrity: sha512-+rQmrWMYGA90yenhTYsLWAsLsqVC8osOw6PKE1HDYiO0gdPeKe/xDHNzIAIn4C91YQ6oenEhfYqqc1883qHbjQ==} resolution: {integrity: sha512-+rQmrWMYGA90yenhTYsLWAsLsqVC8osOw6PKE1HDYiO0gdPeKe/xDHNzIAIn4C91YQ6oenEhfYqqc1883qHbjQ==}
engines: {node: '>= 6'} engines: {node: '>= 6'}
dependencies: dependencies:
@@ -620,27 +632,27 @@ packages:
util-deprecate: 1.0.2 util-deprecate: 1.0.2
dev: false dev: false
/regenerator-runtime/0.13.11: /regenerator-runtime@0.13.11:
resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==}
dev: false dev: false
/reinterval/1.1.0: /reinterval@1.1.0:
resolution: {integrity: sha512-QIRet3SYrGp0HUHO88jVskiG6seqUGC5iAG7AwI/BV4ypGcuqk9Du6YQBUOUqm9c8pw1eyLoIaONifRua1lsEQ==} resolution: {integrity: sha512-QIRet3SYrGp0HUHO88jVskiG6seqUGC5iAG7AwI/BV4ypGcuqk9Du6YQBUOUqm9c8pw1eyLoIaONifRua1lsEQ==}
dev: false dev: false
/remove-trailing-separator/1.1.0: /remove-trailing-separator@1.1.0:
resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==} resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==}
dev: false dev: false
/safe-buffer/5.1.2: /safe-buffer@5.1.2:
resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
dev: false dev: false
/safe-buffer/5.2.1: /safe-buffer@5.2.1:
resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
dev: false dev: false
/side-channel/1.0.4: /side-channel@1.0.4:
resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==}
dependencies: dependencies:
call-bind: 1.0.2 call-bind: 1.0.2
@@ -648,59 +660,59 @@ packages:
object-inspect: 1.12.3 object-inspect: 1.12.3
dev: false dev: false
/source-map-js/1.0.2: /source-map-js@1.0.2:
resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
engines: {node: '>=0.10.0'} engines: {node: '>=0.10.0'}
dev: true dev: true
/source-map/0.6.1: /source-map@0.6.1:
resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
engines: {node: '>=0.10.0'} engines: {node: '>=0.10.0'}
dev: true dev: true
/split2/3.2.2: /split2@3.2.2:
resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==} resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==}
dependencies: dependencies:
readable-stream: 3.6.1 readable-stream: 3.6.1
dev: false dev: false
/stream-shift/1.0.1: /stream-shift@1.0.1:
resolution: {integrity: sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==} resolution: {integrity: sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==}
dev: false dev: false
/string_decoder/1.1.1: /string_decoder@1.1.1:
resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==}
dependencies: dependencies:
safe-buffer: 5.1.2 safe-buffer: 5.1.2
dev: false dev: false
/string_decoder/1.3.0: /string_decoder@1.3.0:
resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
dependencies: dependencies:
safe-buffer: 5.2.1 safe-buffer: 5.2.1
dev: false dev: false
/text-segmentation/1.0.3: /text-segmentation@1.0.3:
resolution: {integrity: sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==} resolution: {integrity: sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==}
dependencies: dependencies:
utrie: 1.0.2 utrie: 1.0.2
dev: false dev: false
/through2-filter/3.0.0: /through2-filter@3.0.0:
resolution: {integrity: sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==} resolution: {integrity: sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==}
dependencies: dependencies:
through2: 2.0.5 through2: 2.0.5
xtend: 4.0.2 xtend: 4.0.2
dev: false dev: false
/through2/2.0.5: /through2@2.0.5:
resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==}
dependencies: dependencies:
readable-stream: 2.3.8 readable-stream: 2.3.8
xtend: 4.0.2 xtend: 4.0.2
dev: false dev: false
/to-absolute-glob/2.0.2: /to-absolute-glob@2.0.2:
resolution: {integrity: sha512-rtwLUQEwT8ZeKQbyFJyomBRYXyE16U5VKuy0ftxLMK/PZb2fkOsg5r9kHdauuVDbsNdIBoC/HCthpidamQFXYA==} resolution: {integrity: sha512-rtwLUQEwT8ZeKQbyFJyomBRYXyE16U5VKuy0ftxLMK/PZb2fkOsg5r9kHdauuVDbsNdIBoC/HCthpidamQFXYA==}
engines: {node: '>=0.10.0'} engines: {node: '>=0.10.0'}
dependencies: dependencies:
@@ -708,50 +720,50 @@ packages:
is-negated-glob: 1.0.0 is-negated-glob: 1.0.0
dev: false dev: false
/to-fast-properties/2.0.0: /to-fast-properties@2.0.0:
resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
engines: {node: '>=4'} engines: {node: '>=4'}
dev: true dev: true
/type/1.2.0: /type@1.2.0:
resolution: {integrity: sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==} resolution: {integrity: sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==}
dev: false dev: false
/type/2.7.2: /type@2.7.2:
resolution: {integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==} resolution: {integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==}
dev: false dev: false
/typedarray/0.0.6: /typedarray@0.0.6:
resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==}
dev: false dev: false
/ultron/1.1.1: /ultron@1.1.1:
resolution: {integrity: sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==} resolution: {integrity: sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==}
dev: false dev: false
/unc-path-regex/0.1.2: /unc-path-regex@0.1.2:
resolution: {integrity: sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==} resolution: {integrity: sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==}
engines: {node: '>=0.10.0'} engines: {node: '>=0.10.0'}
dev: false dev: false
/unique-stream/2.3.1: /unique-stream@2.3.1:
resolution: {integrity: sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==} resolution: {integrity: sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==}
dependencies: dependencies:
json-stable-stringify-without-jsonify: 1.0.1 json-stable-stringify-without-jsonify: 1.0.1
through2-filter: 3.0.0 through2-filter: 3.0.0
dev: false dev: false
/util-deprecate/1.0.2: /util-deprecate@1.0.2:
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
dev: false dev: false
/utrie/1.0.2: /utrie@1.0.2:
resolution: {integrity: sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==} resolution: {integrity: sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==}
dependencies: dependencies:
base64-arraybuffer: 1.0.2 base64-arraybuffer: 1.0.2
dev: false dev: false
/vconsole/3.15.1: /vconsole@3.15.1:
resolution: {integrity: sha512-KH8XLdrq9T5YHJO/ixrjivHfmF2PC2CdVoK6RWZB4yftMykYIaXY1mxZYAic70vADM54kpMQF+dYmvl5NRNy1g==} resolution: {integrity: sha512-KH8XLdrq9T5YHJO/ixrjivHfmF2PC2CdVoK6RWZB4yftMykYIaXY1mxZYAic70vADM54kpMQF+dYmvl5NRNy1g==}
dependencies: dependencies:
'@babel/runtime': 7.22.6 '@babel/runtime': 7.22.6
@@ -760,14 +772,14 @@ packages:
mutation-observer: 1.0.3 mutation-observer: 1.0.3
dev: false dev: false
/vue/2.7.14: /vue@2.7.14:
resolution: {integrity: sha512-b2qkFyOM0kwqWFuQmgd4o+uHGU7T+2z3T+WQp8UBjADfEv2n4FEMffzBmCKNP0IGzOEEfYjvtcC62xaSKeQDrQ==} resolution: {integrity: sha512-b2qkFyOM0kwqWFuQmgd4o+uHGU7T+2z3T+WQp8UBjADfEv2n4FEMffzBmCKNP0IGzOEEfYjvtcC62xaSKeQDrQ==}
dependencies: dependencies:
'@vue/compiler-sfc': 2.7.14 '@vue/compiler-sfc': 2.7.14
csstype: 3.1.2 csstype: 3.1.2
dev: true dev: true
/websocket-stream/5.5.2: /websocket-stream@5.5.2:
resolution: {integrity: sha512-8z49MKIHbGk3C4HtuHWDtYX8mYej1wWabjthC/RupM9ngeukU4IWoM46dgth1UOS/T4/IqgEdCDJuMe2039OQQ==} resolution: {integrity: sha512-8z49MKIHbGk3C4HtuHWDtYX8mYej1wWabjthC/RupM9ngeukU4IWoM46dgth1UOS/T4/IqgEdCDJuMe2039OQQ==}
dependencies: dependencies:
duplexify: 3.7.1 duplexify: 3.7.1
@@ -781,11 +793,11 @@ packages:
- utf-8-validate - utf-8-validate
dev: false dev: false
/wrappy/1.0.2: /wrappy@1.0.2:
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
dev: false dev: false
/ws/3.3.3: /ws@3.3.3:
resolution: {integrity: sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==} resolution: {integrity: sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==}
peerDependencies: peerDependencies:
bufferutil: ^4.0.1 bufferutil: ^4.0.1
@@ -801,7 +813,7 @@ packages:
ultron: 1.1.1 ultron: 1.1.1
dev: false dev: false
/xtend/4.0.2: /xtend@4.0.2:
resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==}
engines: {node: '>=0.4'} engines: {node: '>=0.4'}
dev: false dev: false

BIN
static/access.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 613 B