diff --git a/App.vue b/App.vue index 42cc926..3c6616a 100644 --- a/App.vue +++ b/App.vue @@ -37,6 +37,7 @@ export default { diff --git a/common/api/device.js b/common/api/device.js index aafb12b..5985eb4 100644 --- a/common/api/device.js +++ b/common/api/device.js @@ -1,197 +1,221 @@ -import request from '../js/request' -import config from '../js/config' - -// 获取设备 -export function getDeviceList(params) { - return request({ - url: '/cs-device-boot/EquipmentDelivery/queryEquipmentByProject', - method: 'post', - data: params, - }) -} - -/** - * 设备统计 - * @param {*} id 工程id - * @returns - */ -export function getDevCount(id) { - return request({ - url: '/cs-device-boot/deviceUser/devCount', - method: 'post', - - data: { id }, - }) -} - -// 获取直连设备模板信息 -export function getModel(nDid) { - return request({ - url: '/access-boot/device/model', - method: 'post', - data: { - nDid, - }, - }) -} - -// 直连设备接入 -export function addDevice(params) { - return request({ - url: '/access-boot/device/access', - method: 'post', - header: { - 'Content-Type': 'application/json', - }, - data: params, - }) -} - -// 直连设备注册 -export function registerDevice(nDid, type) { - return request({ - url: '/access-boot/device/register', - method: 'post', - data: { - nDid, - type, - }, - }) -} - -// 查询拓扑图模板 -export const getTopoTemplate = () => { - return request({ - url: '/cs-device-boot/topologyTemplate/queryImage', - method: 'POST', - }) -} - -// 查询拓扑图模板监测点 -export const queryByTopoId = (id) => { - return request({ - url: '/cs-device-boot/lineTemplate/queryByTopoId', - method: 'POST', - data: { - topoId: id, - }, - }) -} -// 查询设备拓扑图 -export const queryTopologyDiagram = (devId) => { - return request({ - url: '/cs-device-boot/lineTopologyDiagram/queryTopologyDiagram', - method: 'POST', - data: { - devId, - }, - }) -} - -// 设备扫码移交 - -export const transferDevice = (id, userId) => { - return request({ - url: '/cs-device-boot/deviceUser/transfer', - method: 'POST', - data: { - ids: id, - userId: userId || uni.getStorageSync('userInfo').userIndex, - }, - }) -} -// 设备扫码分享 - -export const shareDevice = (id, userId) => { - return request({ - url: '/cs-device-boot/deviceUser/share', - method: 'POST', - data: { - ids: id, - }, - }) -} - -// 设备删除 - -export const deleteDevice = (id) => { - return request({ - url: '/cs-device-boot/deviceUser/delete', - method: 'POST', - data: { - eid: id, - }, - }) -} - -// 设备查询通过id获取 -export const queryDeivceById = (id) => { - return request({ - url: '/cs-device-boot/EquipmentDelivery/queryEquipmentById', - method: 'POST', - data: { - ids: id, - }, - }) -} - -// 字典树接口通过id -export const queryByid = (id) => { - return request({ - url: '/system-boot/dictTree/queryByid', - method: 'post', - data: { - id, - }, - }) -} - -//设备修改监测点信息 -export const updateDevice = (params) => { - return request({ - url: '/cs-device-boot/lineTopologyDiagram/auditList', - method: 'POST', - header: { - 'Content-Type': 'application/json', - }, - data: params, - }) -} - -// 设备用户列表 -export const queryDeviceUser = (devId) => { - return request({ - url: '/cs-device-boot/deviceUser/queryUserById', - method: 'POST', - data: { - devId, - }, - }) -} - -// 取消分享 -export const cancelShare = (params) => { - return request({ - url: '/cs-device-boot/deviceUser/cancelShare', - method: 'POST', - data: params, - }) -} - -// 取消调试 -export const cancelDebug = (params) => { - return request({ - url: '/cs-device-boot/EquipmentDelivery/deleteTest', - method: 'POST', - data: params, - }) -} - -// 完成调试 -export const finishDebug = (params) => { - return request({ - url: '/cs-device-boot/EquipmentDelivery/testcompletion', - method: 'POST', - data: params, - }) -} +import request from '../js/request' +import config from '../js/config' + +// 获取设备 +export function getDeviceList(params) { + return request({ + url: '/cs-device-boot/EquipmentDelivery/queryEquipmentByProject', + method: 'post', + data: params, + }) +} + +/** + * 设备统计 + * @param {*} id 工程id + * @returns + */ +export function getDevCount(id) { + return request({ + url: '/cs-device-boot/deviceUser/devCount', + method: 'post', + + data: { id }, + }) +} + +// 获取直连设备模板信息 +export function getModel(nDid) { + return request({ + url: '/access-boot/device/model', + method: 'post', + data: { + nDid, + }, + }) +} + +// 直连设备接入 +export function addDevice(params) { + return request({ + url: '/access-boot/device/access', + method: 'post', + header: { + 'Content-Type': 'application/json', + }, + data: params, + }) +} + +// 直连设备注册 +export function registerDevice(nDid, type) { + return request({ + url: '/access-boot/device/register', + method: 'post', + data: { + nDid, + type, + }, + }) +} + +// 查询拓扑图模板 +export const getTopoTemplate = () => { + return request({ + url: '/cs-device-boot/topologyTemplate/queryImage', + method: 'POST', + }) +} + +// 查询拓扑图模板监测点 +export const queryByTopoId = (id) => { + return request({ + url: '/cs-device-boot/lineTemplate/queryByTopoId', + method: 'POST', + data: { + topoId: id, + }, + }) +} +// 查询设备拓扑图 +export const queryTopologyDiagram = (devId) => { + return request({ + url: '/cs-device-boot/lineTopologyDiagram/queryTopologyDiagram', + method: 'POST', + data: { + devId, + }, + }) +} + +// 设备扫码移交 + +export const transferDevice = (id, userId) => { + return request({ + url: '/cs-device-boot/deviceUser/transfer', + method: 'POST', + data: { + ids: id, + userId: userId || uni.getStorageSync('userInfo').userIndex, + }, + }) +} +// 设备扫码分享 + +export const shareDevice = (id, userId) => { + return request({ + url: '/cs-device-boot/deviceUser/share', + method: 'POST', + data: { + ids: id, + }, + }) +} + +// 设备删除 + +export const deleteDevice = (id) => { + return request({ + url: '/cs-device-boot/deviceUser/delete', + method: 'POST', + data: { + eid: id, + }, + }) +} + +// 设备查询通过id获取 +export const queryDeivceById = (id) => { + return request({ + url: '/cs-device-boot/EquipmentDelivery/queryEquipmentById', + method: 'POST', + data: { + ids: id, + }, + }) +} + +// 字典树接口通过id +export const queryByid = (id) => { + return request({ + url: '/system-boot/dictTree/queryByid', + method: 'post', + data: { + id, + }, + }) +} + +//设备修改监测点信息 +export const updateDevice = (params) => { + return request({ + url: '/cs-device-boot/lineTopologyDiagram/auditList', + method: 'POST', + header: { + 'Content-Type': 'application/json', + }, + data: params, + }) +} + +// 设备用户列表 +export const queryDeviceUser = (devId) => { + return request({ + url: '/cs-device-boot/deviceUser/queryUserById', + method: 'POST', + data: { + devId, + }, + }) +} + +// 取消分享 +export const cancelShare = (params) => { + return request({ + url: '/cs-device-boot/deviceUser/cancelShare', + method: 'POST', + data: params, + }) +} + +// 取消调试 +export const cancelDebug = (params) => { + return request({ + url: '/cs-device-boot/EquipmentDelivery/deleteTest', + method: 'POST', + data: params, + }) +} + +// 完成调试 +export const finishDebug = (params) => { + return request({ + url: '/cs-device-boot/EquipmentDelivery/testcompletion', + method: 'POST', + data: params, + }) +} +// 置顶设备、工程 +export const engineeringPinToTop = (params) => { + return request({ + url: '/cs-device-boot/csUserPins/engineeringPinToTop', + method: 'POST', + data: params, + header: { + 'Content-Type': 'application/json', + }, + }) +} +// 查询工程树 +export const lineTree = (params) => { + return request({ + url: '/cs-device-boot/csLedger/lineTree', + method: 'POST', + data: { + type:'engineering' + }, + // header: { + // 'Content-Type': 'application/json', + // }, + }) +} diff --git a/common/api/harmonic.js b/common/api/harmonic.js index 13df257..c07ce8c 100644 --- a/common/api/harmonic.js +++ b/common/api/harmonic.js @@ -1,10 +1,16 @@ -import request from '../js/request' - -// apf-》获取模块状态 -export function getModuleState(params) { - return request({ - url: '/cs-harmonic-boot/data/getModuleState', - method: 'post', - data: params, - }) +import request from '../js/request' + +// apf-》获取模块状态 +export function getModuleState(params) { + return request({ + url: '/cs-harmonic-boot/data/getModuleState', + method: 'post', + data: params, + }) +} +export function getBaseRealData(id) { + return request({ + url: 'cs-harmonic-boot/realData/getBaseRealData?lineId='+id, + method: 'post', + }) } \ No newline at end of file diff --git a/common/api/message.js b/common/api/message.js index 53c7c3f..55c84f0 100644 --- a/common/api/message.js +++ b/common/api/message.js @@ -1,17 +1,45 @@ -import request from '../js/request'; -import config from '../js/config'; - -/** - * 已读暂态 - * @returns {*} - */ -export function updateStatus(params) { - return request({ - url: '/cs-harmonic-boot/eventUser/updateStatus', - method: 'post', - header: { - 'Content-Type': 'application/json', - }, - data: params, - }) -} +import request from '../js/request'; +import config from '../js/config'; + +/** + * 已读暂态 + * @returns {*} + */ +export function updateStatus(params) { + return request({ + url: '/cs-harmonic-boot/eventUser/updateStatus', + method: 'post', + header: { + 'Content-Type': 'application/json', + }, + data: params, + }) +} +/** + * 稳态详情 + * @returns {*} + */ +export function queryHarmonicDetail(params) { + return request({ + url: '/cs-harmonic-boot/csHarmonic/queryHarmonicDetail', + method: 'post', + header: { + 'Content-Type': 'application/json', + }, + data: params, + }) +} +/** + * 运行告警事件详 + * @returns {*} + */ +export function queryAlarmDetail(params) { + return request({ + url: '/cs-harmonic-boot/csAlarm/queryAlarmDetail', + method: 'post', + header: { + 'Content-Type': 'application/json', + }, + data: params, + }) +} diff --git a/common/css/base.scss b/common/css/base.scss index f640a6f..0752fdb 100644 --- a/common/css/base.scss +++ b/common/css/base.scss @@ -1,287 +1,290 @@ -page { - background: #f3f4f5; -} - -// mt0,mr0,mb0,ml0 --> mt100,mr100,mb100,ml100 -@for $i from 0 through 100 { - .mt#{$i} { - margin-top: #{$i}rpx; - } - - .mr#{$i} { - margin-right: #{$i}rpx; - } - - .mb#{$i} { - margin-bottom: #{$i}rpx; - } - - .ml#{$i} { - margin-left: #{$i}rpx; - } - - .pt#{$i} { - padding-top: #{$i}rpx; - } - - .pr#{$i} { - padding-right: #{$i}rpx; - } - - .pb#{$i} { - padding-bottom: #{$i}rpx; - } - - .pl#{$i} { - padding-left: #{$i}rpx; - } -} - -.center { - display: flex; - align-items: center; - justify-content: center; -} - -.space-between { - display: flex; - justify-content: space-between; -} - -.hide-txt { - overflow-x: hidden; - white-space: nowrap; - text-overflow: ellipsis; - word-break: break-all; - -webkit-line-clamp: 1; -} - -.clamp-txt { - overflow: hidden; - display: -webkit-box; - -webkit-box-orient: vertical; - -webkit-line-clamp: 2; - word-break: break-all; -} - -.fixed-btn { - position: fixed; - right: 80rpx; - bottom: 200rpx; - width: 126rpx; - height: 126rpx; - background: $uni-theme-white; - border-radius: 50%; - display: flex; - align-items: center; - justify-content: center; - box-shadow: 0 0 10rpx rgba(0, 0, 0, 0.2); - - image { - height: 66rpx; - width: 66rpx; - } -} - -.grid-card { - border-radius: 12rpx; - margin-bottom: 20rpx; - - .grid-card-title { - padding: 0 0 20rpx; - font-size: 28rpx; - color: #111; - font-weight: 700; - } - - .grid-card-content-4, - .grid-card-content-2, - .grid-card-content-1, - .grid-card-content-3, - .grid-card-content-5, - .grid-card-content-6 { - display: grid; - border-left: 2rpx solid #ccc; - border-top: 2rpx solid #ccc; - font-size: 24rpx; - grid-template-columns: 1fr 1fr 1fr 1fr; - - .item { - padding: 0 4rpx; - display: flex; - align-items: center; - justify-content: center; - text-align: center; - border-bottom: 2rpx solid #ccc; - border-right: 2rpx solid #ccc; - padding: 4rpx; - background: $uni-theme-white; - } - - .item-title { - background: unset; - padding: 8rpx 4rpx; - } - } - - .grid-card-content-1 { - grid-template-columns: 1fr; - } - .grid-card-content-2 { - grid-template-columns: 1fr 2fr; - } - - .grid-card-content-3 { - grid-template-columns: 1fr 2fr 2fr; - } - - .grid-card-content-5 { - grid-template-columns: 1fr 1fr 1fr 1fr 1fr; - } - - .grid-card-content-6 { - grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr; - } -} - -.index { - .header { - margin: 0 20rpx; - display: grid; - grid-gap: 20rpx; - grid-template-columns: 1fr 1fr 1fr ; - .header-item { - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - padding: 10rpx 10rpx 20rpx; - color: #fff; - font-size: 28rpx; - background: $uni-theme-color; - border-radius: 12rpx; - .header-item-value { - font-size: 44rpx; - } - .header-item-label { - font-size: 24rpx; - } - } - } -} - -.nav { - position: sticky; - top: 0; - left: 0; - padding: 20rpx 20rpx 0; - padding-left: 0; - display: flex; - flex-wrap: wrap; - background: rgb(243, 244, 245); - z-index: 2; - - .nav-menu { - padding: 6rpx 20rpx; - margin-left: 20rpx; - margin-bottom: 20rpx; - font-size: 24rpx; - border-radius: 8rpx; - background: #ebeaec; - color: #666; - &-active { - background: #dfe5f7; - color: $uni-theme-color; - } - &-btn { - background: $uni-theme-color; - color: #fff; - } - } -} - -.btn { - display: flex; - align-items: center; - justify-content: center; - flex: 1; - background: $uni-theme-color; - color: #fff; - height: 80rpx; - border-radius: 12rpx; -} - -.btn-small { - display: inline-flex; - align-items: center; - justify-content: center; - padding: 0 40rpx; - background: $uni-theme-color; - color: #fff; - height: 60rpx; - font-size: 24rpx; - border-radius: 12rpx; -} - -.device { - /deep/ .uni-card:first-of-type { - margin-top: 0 !important; - } -} - -.content { - /deep/ .uni-forms-item:last-of-type { - margin-bottom: 0 !important; - } - position: relative; -} - -.status-point-success { - display: inline-block; - width: 16rpx; - height: 16rpx; - border-radius: 50%; - background: greenyellow; - overflow: hidden; -} - -.status-point-error { - display: inline-block; - width: 16rpx; - height: 16rpx; - border-radius: 50%; - background: red; - overflow: hidden; -} - -.popup-header { - display: flex; - align-items: center; - justify-content: space-between; - padding: 0 20rpx; - height: 80rpx; - background: #fff; - border-radius: 20rpx 20rpx 0 0; - overflow: hidden; - border-bottom: 1px solid #eee; - .popup-header-title { - font-size: 32rpx; - color: #333; - } - .popup-header-close { - font-size: 32rpx; - color: #666; - } -} - - -image { - will-change: transform;//解决加载时瞬间拉伸问题 - width: auto;//解决加载时瞬间拉伸问题 - height: auto;//解决加载时瞬间拉伸问题 - image-rendering:-moz-crisp-edges; - image-rendering:-o-crisp-edges; - image-rendering:-webkit-optimize-contrast; - image-rendering: crisp-edges; - -ms-interpolation-mode:nearest-neighbor; -} +page { + background: #f3f4f5; +} + +// mt0,mr0,mb0,ml0 --> mt100,mr100,mb100,ml100 +@for $i from 0 through 100 { + .mt#{$i} { + margin-top: #{$i}rpx; + } + + .mr#{$i} { + margin-right: #{$i}rpx; + } + + .mb#{$i} { + margin-bottom: #{$i}rpx; + } + + .ml#{$i} { + margin-left: #{$i}rpx; + } + + .pt#{$i} { + padding-top: #{$i}rpx; + } + + .pr#{$i} { + padding-right: #{$i}rpx; + } + + .pb#{$i} { + padding-bottom: #{$i}rpx; + } + + .pl#{$i} { + padding-left: #{$i}rpx; + } + .pd#{$i} { + padding: #{$i}rpx; + } +} + +.center { + display: flex; + align-items: center; + justify-content: center; +} + +.space-between { + display: flex; + justify-content: space-between; +} + +.hide-txt { + overflow-x: hidden; + white-space: nowrap; + text-overflow: ellipsis; + word-break: break-all; + -webkit-line-clamp: 1; +} + +.clamp-txt { + overflow: hidden; + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; + word-break: break-all; +} + +.fixed-btn { + position: fixed; + right: 80rpx; + bottom: 200rpx; + width: 126rpx; + height: 126rpx; + background: $uni-theme-white; + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + box-shadow: 0 0 10rpx rgba(0, 0, 0, 0.2); + + image { + height: 66rpx; + width: 66rpx; + } +} + +.grid-card { + border-radius: 12rpx; + margin-bottom: 20rpx; + + .grid-card-title { + padding: 0 0 20rpx; + font-size: 28rpx; + color: #111; + font-weight: 700; + } + + .grid-card-content-4, + .grid-card-content-2, + .grid-card-content-1, + .grid-card-content-3, + .grid-card-content-5, + .grid-card-content-6 { + display: grid; + border-left: 2rpx solid #ccc; + border-top: 2rpx solid #ccc; + font-size: 24rpx; + grid-template-columns: 1fr 1fr 1fr 1fr; + + .item { + padding: 0 4rpx; + display: flex; + align-items: center; + justify-content: center; + text-align: center; + border-bottom: 2rpx solid #ccc; + border-right: 2rpx solid #ccc; + padding: 4rpx; + background: $uni-theme-white; + } + + .item-title { + background: unset; + padding: 8rpx 4rpx; + } + } + + .grid-card-content-1 { + grid-template-columns: 1fr; + } + .grid-card-content-2 { + grid-template-columns: 1fr 2fr; + } + + .grid-card-content-3 { + grid-template-columns: 1fr 2fr 2fr; + } + + .grid-card-content-5 { + grid-template-columns: 1fr 1fr 1fr 1fr 1fr; + } + + .grid-card-content-6 { + grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr; + } +} + +.index { + .header { + margin: 0 20rpx; + display: grid; + grid-gap: 20rpx; + grid-template-columns: 1fr 1fr 1fr ; + .header-item { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + padding: 10rpx 10rpx 20rpx; + color: #fff; + font-size: 28rpx; + background: $uni-theme-color; + border-radius: 12rpx; + .header-item-value { + font-size: 44rpx; + } + .header-item-label { + font-size: 24rpx; + } + } + } +} + +.nav { + position: sticky; + top: 0; + left: 0; + padding: 20rpx 20rpx 0; + padding-left: 0; + display: flex; + flex-wrap: wrap; + background: rgb(243, 244, 245); + z-index: 2; + + .nav-menu { + padding: 6rpx 20rpx; + margin-left: 20rpx; + margin-bottom: 20rpx; + font-size: 24rpx; + border-radius: 8rpx; + background: #ebeaec; + color: #666; + &-active { + background: #dfe5f7; + color: $uni-theme-color; + } + &-btn { + background: $uni-theme-color; + color: #fff; + } + } +} + +.btn { + display: flex; + align-items: center; + justify-content: center; + flex: 1; + background: $uni-theme-color; + color: #fff; + height: 80rpx; + border-radius: 12rpx; +} + +.btn-small { + display: inline-flex; + align-items: center; + justify-content: center; + padding: 0 40rpx; + background: $uni-theme-color; + color: #fff; + height: 60rpx; + font-size: 24rpx; + border-radius: 12rpx; +} + +.device { + /deep/ .uni-card:first-of-type { + margin-top: 0 !important; + } +} + +.content { + /deep/ .uni-forms-item:last-of-type { + margin-bottom: 0 !important; + } + position: relative; +} + +.status-point-success { + display: inline-block; + width: 16rpx; + height: 16rpx; + border-radius: 50%; + background: greenyellow; + overflow: hidden; +} + +.status-point-error { + display: inline-block; + width: 16rpx; + height: 16rpx; + border-radius: 50%; + background: red; + overflow: hidden; +} + +.popup-header { + display: flex; + align-items: center; + justify-content: space-between; + padding: 0 20rpx; + height: 80rpx; + background: #fff; + border-radius: 20rpx 20rpx 0 0; + overflow: hidden; + border-bottom: 1px solid #eee; + .popup-header-title { + font-size: 32rpx; + color: #333; + } + .popup-header-close { + font-size: 32rpx; + color: #666; + } +} + + +image { + will-change: transform;//解决加载时瞬间拉伸问题 + width: auto;//解决加载时瞬间拉伸问题 + height: auto;//解决加载时瞬间拉伸问题 + image-rendering:-moz-crisp-edges; + image-rendering:-o-crisp-edges; + image-rendering:-webkit-optimize-contrast; + image-rendering: crisp-edges; + -ms-interpolation-mode:nearest-neighbor; +} diff --git a/common/js/config.js b/common/js/config.js index d284685..f346d07 100644 --- a/common/js/config.js +++ b/common/js/config.js @@ -1,7 +1,7 @@ -const debug = false // true 是连地服务端本地,false 是连接线上 +const debug = true // true 是连地服务端本地,false 是连接线上 const development = { - domain: 'http://192.168.1.62:10215', + domain: 'http://192.168.2.126:10215', } const production = { diff --git a/common/js/list.js b/common/js/list.js index 51c9407..bbaa1bd 100644 --- a/common/js/list.js +++ b/common/js/list.js @@ -1,92 +1,98 @@ -export default { - onPullDownRefresh() { - this.store && this.store.reload() - }, - onReachBottom() { - if (this.store.status != 'noMore') { - this.store.next && this.store.next() - } - }, - data() { - return { - store: {}, - } - }, - methods: { - DataSource(url) { - var me = this - return { - data: [], - status: 'noMore', - empty: false, - total: 0, - header: { - 'Content-Type': 'application/json;charset=UTF-8', - }, - params: { - pageNum: 1, - pageSize: 20, - }, - timer: null, - callBack: null, - firstCallBack: null, - loadedCallback: null, - reload() { - if (this.status == 'loading') return - this.data = [] - this.empty = false - this.params.pageNum = 1 - this.next() - }, - search() { - // 节流搜索 - clearTimeout(this.timer) - this.timer = setTimeout(() => { - this.reload() - }, 300) - }, - next() { - this.status = 'loading' - me.$request({ - url: url, - data: this.params, - header: this.header, - method: 'POST', - debounce: false, - }).then((res) => { - console.warn(res) - let resultData = res.data?.list || res.data?.records || res.data || [] - if (this.params.pageNum == 1) { - this.data = resultData - if (resultData.length == 0 || resultData == 0) { - this.empty = true - this.status = 'noMore' - } else if (resultData.length < this.params.pageSize) { - this.status = 'noMore' - } else if (res.total == resultData.length) { - this.status = 'noMore' - } else { - this.status = 'more' - } - } else { - this.data.push(...resultData) - if (resultData.length < this.params.pageSize) { - this.status = 'noMore' - } else { - this.status = 'more' - } - } - if (this.params.pageNum == 1) { - this.firstCallBack && this.firstCallBack() - } - this.loadedCallback && this.loadedCallback() - this.params.pageNum++ - this.total = res.total - this.loading = false - uni.stopPullDownRefresh() - }) - }, - } - }, - }, -} +export default { + onPullDownRefresh() { + if (this.store.isListAtTop) { + this.store && this.store.reload() + } + }, + onReachBottom() { + if (this.store.status != 'noMore') { + this.store.next && this.store.next() + } + }, + data() { + return { + store: {}, + } + }, + methods: { + DataSource(url) { + var me = this + return { + data: [], + copyData: {}, + status: 'noMore', + empty: false, + isListAtTop: true, + total: 0, + header: { + 'Content-Type': 'application/json;charset=UTF-8', + }, + params: { + pageNum: 1, + pageSize: 20, + }, + timer: null, + callBack: null, + firstCallBack: null, + loadedCallback: null, + reload() { + if (this.status == 'loading') return + this.data = [] + this.empty = false + this.params.pageNum = 1 + this.next() + }, + search() { + // 节流搜索 + clearTimeout(this.timer) + this.timer = setTimeout(() => { + this.reload() + }, 300) + }, + next() { + this.status = 'loading' + me.$request({ + url: url, + data: this.params, + header: this.header, + method: 'POST', + debounce: false, + }).then((res) => { + console.warn(res) + let resultData = res.data?.list || res.data?.records || res.data || [] + this.copyData = res.data + if (this.params.pageNum == 1) { + this.data = resultData + if (resultData.length == 0 || resultData == 0) { + this.empty = true + this.status = 'noMore' + } else if (resultData.length < this.params.pageSize) { + this.status = 'noMore' + } else if (res.total == resultData.length) { + this.status = 'noMore' + } else { + this.status = 'more' + } + } else { + this.data.push(...resultData) + if (resultData.length < this.params.pageSize) { + this.status = 'noMore' + } else { + this.status = 'more' + } + } + if (this.params.pageNum == 1) { + this.firstCallBack && this.firstCallBack() + } + this.loadedCallback && this.loadedCallback() + this.params.pageNum++ + this.total = res.total || res.data?.total + + this.loading = false + uni.stopPullDownRefresh() + }) + }, + } + }, + }, +} diff --git a/common/js/mqtt.js b/common/js/mqtt.js index 69d7664..3b98bde 100644 --- a/common/js/mqtt.js +++ b/common/js/mqtt.js @@ -1,5 +1,5 @@ -export const MQTT_IP = 'pqmcn.com:8085/mqtt'//mqtt地址端口, 使用emqx时一定要加mqtt -// export const MQTT_IP = '192.168.1.24:8085/mqtt'//mqtt地址端口, 使用emqx时一定要加mqtt +// export const MQTT_IP = 'pqmcn.com:8085/mqtt'//mqtt地址端口, 使用emqx时一定要加mqtt +export const MQTT_IP = '192.168.1.103:8083/mqtt'//mqtt地址端口, 使用emqx时一定要加mqtt const MQTT_USERNAME = 't_user'//mqtt用户名 const MQTT_PASSWORD = 'njcnpqs'//密码 diff --git a/common/js/request.js b/common/js/request.js index d9621f2..6d2766f 100644 --- a/common/js/request.js +++ b/common/js/request.js @@ -39,7 +39,7 @@ export default (options = {}) => { }, method: options.method || 'GET', success: async (res) => { - console.log(res) + // console.log(res) if (arr.indexOf(options.url) > -1) { setTimeout(() => { arr.splice(arr.indexOf(options.url), 1) diff --git a/common/js/util.js b/common/js/util.js index b65f9bf..33c1f79 100644 --- a/common/js/util.js +++ b/common/js/util.js @@ -107,39 +107,61 @@ function formatTime(time, option) { } // 获取当天日期(年月日) function getToday() { - const today = new Date(); - const year = today.getFullYear(); - const month = String(today.getMonth() + 1).padStart(2, '0'); // 月份从0开始,需+1 - const day = String(today.getDate()).padStart(2, '0'); - return `${year}-${month}-${day}`; + const today = new Date() + const year = today.getFullYear() + const month = String(today.getMonth() + 1).padStart(2, '0') // 月份从0开始,需+1 + const day = String(today.getDate()).padStart(2, '0') + return `${year}-${month}-${day}` } // 获取当天日期 往前推30天 function getBeforeDays(days = 30) { - const today = new Date(); - // 计算往前推N天的时间戳(1天=86400000毫秒) - const beforeDate = new Date(today.getTime() - days * 24 * 60 * 60 * 1000); - return formatDate(beforeDate); + const today = new Date() + // 计算往前推N天的时间戳(1天=86400000毫秒) + const beforeDate = new Date(today.getTime() - days * 24 * 60 * 60 * 1000) + return formatDate(beforeDate) } function formatDate(date) { - const year = date.getFullYear(); - // 月份从0开始,补零到2位 - const month = String(date.getMonth() + 1).padStart(2, '0'); - // 日期补零到2位 - const day = String(date.getDate()).padStart(2, '0'); - return `${year}-${month}-${day}`; + const year = date.getFullYear() + // 月份从0开始,补零到2位 + const month = String(date.getMonth() + 1).padStart(2, '0') + // 日期补零到2位 + const day = String(date.getDate()).padStart(2, '0') + return `${year}-${month}-${day}` } // 获取3个月前的日期 function getThreeMonthsAgo() { - const threeMonthsAgo = new Date(); - threeMonthsAgo.setMonth(threeMonthsAgo.getMonth() - 3); // 月份减3 - const year = threeMonthsAgo.getFullYear(); - const month = String(threeMonthsAgo.getMonth() + 1).padStart(2, '0'); - const day = String(threeMonthsAgo.getDate()).padStart(2, '0'); - return `${year}-${month}-${day}`; + const threeMonthsAgo = new Date() + threeMonthsAgo.setMonth(threeMonthsAgo.getMonth() - 3) // 月份减3 + const year = threeMonthsAgo.getFullYear() + const month = String(threeMonthsAgo.getMonth() + 1).padStart(2, '0') + const day = String(threeMonthsAgo.getDate()).padStart(2, '0') + return `${year}-${month}-${day}` } +//获取月最后一天 +function getMonthFirstAndLastDay(monthStr) { + // 1. 校验输入格式(正则匹配YYYY-MM) + const reg = /^\d{4}-\d{2}$/ + if (!reg.test(monthStr)) { + throw new Error('输入格式错误,请传入"YYYY-MM"格式的字符串,例如:2026-03') + } + // 2. 拆分年、月 + const [year, month] = monthStr.split('-').map(Number) + // 3. 生成当月第一天(直接拼接01) + const firstDay = `${year}-${String(month).padStart(2, '0')}-01` + + // 4. 生成当月最后一天(核心:利用Date的特性,下个月0号 = 当月最后一天) + // 注意:月份是0开始的(0=1月,11=12月),所以month+1是下一个月 + const lastDayDate = new Date(year, month, 0) // 下个月0号 = 当月最后一天 + const lastDay = `${year}-${String(month).padStart(2, '0')}-${String(lastDayDate.getDate()).padStart(2, '0')}` + + return { + firstDay, + lastDay, + } +} const h5Helper = { isAndroid: function () { @@ -167,7 +189,7 @@ const getUserLocation = (call) => { success: function (address) { call(address) }, - fail: (err) => { + fail: (err) => { uni.showModal({ title: '提示', content: '定位失败,请打开定位权限', @@ -309,12 +331,14 @@ const getDictData = (key) => { resolve(dictData.filter((item) => item.code === key)[0]?.children || []) } else { // 查询字典 - queryDictDataCache().then((res) => { - uni.setStorageSync(cacheKey.dictData, res.data) - resolve(res.data.filter((item) => item.code === key)[0]?.children || []) - }).catch(err=>{ - reject(err) - }) + queryDictDataCache() + .then((res) => { + uni.setStorageSync(cacheKey.dictData, res.data) + resolve(res.data.filter((item) => item.code === key)[0]?.children || []) + }) + .catch((err) => { + reject(err) + }) } }) } @@ -333,5 +357,6 @@ export default { getDictData, getToday, getBeforeDays, - getThreeMonthsAgo + getThreeMonthsAgo, + getMonthFirstAndLastDay, } diff --git a/components/Cn-device-card/Cn-device-card.vue b/components/Cn-device-card/Cn-device-card.vue index c82d967..e82c983 100644 --- a/components/Cn-device-card/Cn-device-card.vue +++ b/components/Cn-device-card/Cn-device-card.vue @@ -1,80 +1,235 @@ - - - + + + diff --git a/components/Cn-filterCriteria/Cn-filterCriteria.vue b/components/Cn-filterCriteria/Cn-filterCriteria.vue new file mode 100644 index 0000000..c792244 --- /dev/null +++ b/components/Cn-filterCriteria/Cn-filterCriteria.vue @@ -0,0 +1,233 @@ + + + diff --git a/components/Cn-page/Cn-page.vue b/components/Cn-page/Cn-page.vue index 9ae356e..64beaa6 100644 --- a/components/Cn-page/Cn-page.vue +++ b/components/Cn-page/Cn-page.vue @@ -1,63 +1,63 @@ - - - - - + + + + + diff --git a/components/Cn-qianTree/Cn-qianTree.vue b/components/Cn-qianTree/Cn-qianTree.vue new file mode 100644 index 0000000..9c6bcd2 --- /dev/null +++ b/components/Cn-qianTree/Cn-qianTree.vue @@ -0,0 +1,532 @@ + + + + + diff --git a/components/Cn-qianTree/style.css b/components/Cn-qianTree/style.css new file mode 100644 index 0000000..3bdc759 --- /dev/null +++ b/components/Cn-qianTree/style.css @@ -0,0 +1,195 @@ +.tki-tree-mask { + position: fixed; + top: 0rpx; + right: 0rpx; + bottom: 0rpx; + left: 0rpx; + z-index: 9998; + background-color: rgba(0, 0, 0, 0.6); + opacity: 0; + transition: all 0.3s ease; + visibility: hidden; +} +.tki-tree-mask.show { + visibility: visible; + opacity: 1; +} +.tki-tree-cnt { + position: fixed; + top: 0rpx; + right: 0rpx; + bottom: 0rpx; + left: 0rpx; + z-index: 9999; + top: 160rpx; + transition: all 0.3s ease; + transform: translateY(100%); +} +.tki-tree-cnt.show { + transform: translateY(0); +} +.tki-tree-bar { + background-color: #fff; + height: 72rpx; + padding-left: 20rpx; + padding-right: 20rpx; + display: flex; + justify-content: space-between; + align-items: center; + box-sizing: border-box; + border-bottom-width: 1rpx !important; + border-bottom-style: solid; + border-bottom-color: #f5f5f5; + font-size: 32rpx; + color: #757575; + line-height: 1; +} +.tki-tree-bar1 { + background-color: #fff; +} +.tki-tree-bar-confirm { + color: #07bb07; +} +.tki-tree-view { + position: absolute; + top: 0rpx; + right: 0rpx; + bottom: 0rpx; + left: 0rpx; + top: 160rpx; + background-color: #fff; + padding-top: 20rpx; + padding-right: 20rpx; + padding-bottom: 20rpx; + padding-left: 20rpx; +} +.tki-tree-view-sc { + height: 100%; + overflow: hidden; +} +.tki-tree-item { + display: flex; + justify-content: space-between; + align-items: center; + font-size: 26rpx; + /* color: #757575; */ + line-height: 1; + height: 0; + opacity: 0; + transition: 0.2s; + position: relative; + overflow: hidden; +} +.tki-tree-item.show { + height: 80rpx; + opacity: 1; +} +.tki-tree-item.showchild:before { + transform: rotate(90deg); +} +.tki-tree-item.last:before { + opacity: 0; +} +.tki-tree-icon { + width: 26rpx; + height: 26rpx; + margin-right: 8rpx; +} +.tki-tree-label { + flex: 1; + display: flex; + align-items: center; + height: 100%; + line-height: 1.2; +} +.tki-tree-check { + width: 40px; + height: 40px; + display: flex; + justify-content: center; + align-items: center; +} +.tki-tree-check-yes, +.tki-tree-check-no { + width: 20px; + height: 20px; + border-top-left-radius: 20%; + border-top-right-radius: 20%; + border-bottom-right-radius: 20%; + border-bottom-left-radius: 20%; + border-top-width: 1rpx; + border-left-width: 1rpx; + border-bottom-width: 1rpx; + border-right-width: 1rpx; + border-style: solid; + border-color: #07bb07; + display: flex; + justify-content: center; + align-items: center; + box-sizing: border-box; +} +.tki-tree-check-yes-b { + width: 12px; + height: 12px; + border-top-left-radius: 20%; + border-top-right-radius: 20%; + border-bottom-right-radius: 20%; + border-bottom-left-radius: 20%; + background-color: #07bb07; +} +.tki-tree-check .radio { + border-top-left-radius: 50%; + border-top-right-radius: 50%; + border-bottom-right-radius: 50%; + border-bottom-left-radius: 50%; +} +.tki-tree-check .radio .tki-tree-check-yes-b { + border-top-left-radius: 50%; + border-top-right-radius: 50%; + border-bottom-right-radius: 50%; + border-bottom-left-radius: 50%; +} +.hover-c { + opacity: 0.6; +} + +.search { + position: absolute; + left: 35rpx; +} + +/* 基础输入框样式 */ +.uni-input { + width: 95%; + height: 60rpx; + line-height: 60rpx; + border-radius: 20rpx; + /* font-size: 32rpx; + color: #333; + background: #f5f5f5; + width: 100%; + + padding: 0 24rpx 0 60rpx; + box-sizing: border-box; + border: none; */ +} + +/* 聚焦态样式 */ +.uni-input:focus { + background: #fff; + border: 2rpx solid #007aff; +} + +/* 占位符样式 */ +.uni-input::placeholder { + color: #999; + font-size: 28rpx; +} + +/* 兼容微信小程序 */ +.uni-input::-webkit-input-placeholder { + color: #999; + font-size: 28rpx; +} + + diff --git a/components/Cn-timepicker/Cn-timepicker.vue b/components/Cn-timepicker/Cn-timepicker.vue new file mode 100644 index 0000000..eb45f95 --- /dev/null +++ b/components/Cn-timepicker/Cn-timepicker.vue @@ -0,0 +1,177 @@ + + + + + \ No newline at end of file diff --git a/main.js b/main.js index 8d4c685..37a339f 100644 --- a/main.js +++ b/main.js @@ -1,21 +1,23 @@ -import App from './App' - -import util from './common/js/util' -import request from './common/js/request' -import config from './common/js/config' -import cacheKey from './common/js/cacheKey' -import Vue from 'vue' -import share from "@/common/js/share.js"; - -Vue.config.productionTip = false -Vue.prototype.$request = request -Vue.prototype.$util = util -Vue.prototype.$config = config -Vue.prototype.$cacheKey = cacheKey -Vue.mixin(share); -App.mpType = 'app' -const app = new Vue({ - ...App -}) -app.$mount() - +import App from './App' + +import util from './common/js/util' +import request from './common/js/request' +import config from './common/js/config' +import cacheKey from './common/js/cacheKey' +import Vue from 'vue' +import share from '@/common/js/share.js' +import uView from 'uview-ui' +Vue.config.productionTip = false +Vue.prototype.$request = request +Vue.prototype.$util = util +Vue.prototype.$config = config +Vue.prototype.$cacheKey = cacheKey +Vue.mixin(share) +Vue.use(uView) +uni.$u.config.unit = 'rpx' +App.mpType = 'app' +const app = new Vue({ + ...App, +}) + +app.$mount() diff --git a/manifest.json b/manifest.json index 2b4206b..035779c 100644 --- a/manifest.json +++ b/manifest.json @@ -2,8 +2,8 @@ "name" : "灿能物联", "appid" : "__UNI__88BC25B", "description" : "", - "versionName" : "1.6.81", - "versionCode" : 169, + "versionName" : "1.6.82", + "versionCode" : 170, "transformPx" : false, "sassImplementationName" : "node-sass", /* 5+App特有相关 */ @@ -138,8 +138,8 @@ "proxy" : { "/api" : { "https" : true, - "target" : "https://pqmcn.com:8092/api", - // "target" : "http://192.168.1.103:10215", + // "target" : "https://pqmcn.com:8092/api", + "target" : "http://192.168.2.126:10215", "changOrigin" : true, "pathRewrite" : { "/api" : "" diff --git a/package-lock.json b/package-lock.json index e82398e..bcefacd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,719 +1,723 @@ -{ - "name": "解决软件在运行时,未见向用户告知权限申请的目的,华为等上架被拒问题", - "version": "1.0.5", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "base64-arraybuffer": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", - "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==" - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - }, - "bl": { - "version": "4.1.0", - "resolved": "https://registry.npmmirror.com/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmmirror.com/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, - "callback-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmmirror.com/callback-stream/-/callback-stream-1.1.0.tgz", - "integrity": "sha512-sAZ9kODla+mGACBZ1IpTCAisKoGnv6PykW7fPk1LrM+mMepE18Yz0515yoVcrZy7dQsTUp3uZLQ/9Sx1RnLoHw==", - "requires": { - "inherits": "^2.0.1", - "readable-stream": "> 1.0.0 < 3.0.0" - } - }, - "commist": { - "version": "1.1.0", - "resolved": "https://registry.npmmirror.com/commist/-/commist-1.1.0.tgz", - "integrity": "sha512-rraC8NXWOEjhADbZe9QBNzLAN5Q3fsTPQtBV+fEVj6xKIgDgNiEVE6ZNfHpZOqfQ21YUzfVNUXLOEZquYvQPPg==", - "requires": { - "leven": "^2.1.0", - "minimist": "^1.1.0" - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmmirror.com/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, - "crypto-js": { - "version": "4.2.0" - }, - "css-line-break": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/css-line-break/-/css-line-break-2.1.0.tgz", - "integrity": "sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==", - "requires": { - "utrie": "^1.0.2" - } - }, - "d": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/d/-/d-1.0.2.tgz", - "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==", - "requires": { - "es5-ext": "^0.10.64", - "type": "^2.7.2" - } - }, - "debug": { - "version": "4.4.1", - "resolved": "https://registry.npmmirror.com/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", - "requires": { - "ms": "^2.1.3" - } - }, - "duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmmirror.com/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "echarts": { - "version": "5.6.0", - "requires": { - "tslib": "2.3.0", - "zrender": "5.6.1" - } - }, - "end-of-stream": { - "version": "1.4.5", - "resolved": "https://registry.npmmirror.com/end-of-stream/-/end-of-stream-1.4.5.tgz", - "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", - "requires": { - "once": "^1.4.0" - } - }, - "es5-ext": { - "version": "0.10.64", - "resolved": "https://registry.npmmirror.com/es5-ext/-/es5-ext-0.10.64.tgz", - "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", - "requires": { - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.3", - "esniff": "^2.0.1", - "next-tick": "^1.1.0" - } - }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmmirror.com/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", - "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "es6-map": { - "version": "0.1.5", - "resolved": "https://registry.npmmirror.com/es6-map/-/es6-map-0.1.5.tgz", - "integrity": "sha512-mz3UqCh0uPCIqsw1SSAkB/p0rOzF/M0V++vyN7JqlPtSW/VsYgQBvVvqMLmfBuyMzTpLnNqi6JmcSizs4jy19A==", - "requires": { - "d": "1", - "es5-ext": "~0.10.14", - "es6-iterator": "~2.0.1", - "es6-set": "~0.1.5", - "es6-symbol": "~3.1.1", - "event-emitter": "~0.3.5" - } - }, - "es6-set": { - "version": "0.1.6", - "resolved": "https://registry.npmmirror.com/es6-set/-/es6-set-0.1.6.tgz", - "integrity": "sha512-TE3LgGLDIBX332jq3ypv6bcOpkLO0AslAQo7p2VqX/1N46YNsvIWgvjojjSEnWEGWMhr1qUbYeTSir5J6mFHOw==", - "requires": { - "d": "^1.0.1", - "es5-ext": "^0.10.62", - "es6-iterator": "~2.0.3", - "es6-symbol": "^3.1.3", - "event-emitter": "^0.3.5", - "type": "^2.7.2" - } - }, - "es6-symbol": { - "version": "3.1.4", - "resolved": "https://registry.npmmirror.com/es6-symbol/-/es6-symbol-3.1.4.tgz", - "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==", - "requires": { - "d": "^1.0.2", - "ext": "^1.7.0" - } - }, - "esniff": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/esniff/-/esniff-2.0.1.tgz", - "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", - "requires": { - "d": "^1.0.1", - "es5-ext": "^0.10.62", - "event-emitter": "^0.3.5", - "type": "^2.7.2" - } - }, - "event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmmirror.com/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", - "requires": { - "d": "1", - "es5-ext": "~0.10.14" - } - }, - "exif-js": { - "version": "2.3.0", - "resolved": "https://registry.npmmirror.com/exif-js/-/exif-js-2.3.0.tgz", - "integrity": "sha512-1Og9pAzG2FZRVlaavH8bB8BTeHcjMdJhKmeQITkX+uLRCD0xPtKAdZ2clZmQdJ56p9adXtJ8+jwrGp/4505lYg==" - }, - "ext": { - "version": "1.7.0", - "resolved": "https://registry.npmmirror.com/ext/-/ext-1.7.0.tgz", - "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", - "requires": { - "type": "^2.7.2" - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmmirror.com/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, - "glob-stream": { - "version": "6.1.0", - "resolved": "https://registry.npmmirror.com/glob-stream/-/glob-stream-6.1.0.tgz", - "integrity": "sha512-uMbLGAP3S2aDOHUDfdoYcdIePUCfysbAd0IAoWVZbeGU/oNQ8asHVSshLDJUPWxfzj8zsCG7/XeHPHTtow0nsw==", - "requires": { - "extend": "^3.0.0", - "glob": "^7.1.1", - "glob-parent": "^3.1.0", - "is-negated-glob": "^1.0.0", - "ordered-read-streams": "^1.0.0", - "pumpify": "^1.3.5", - "readable-stream": "^2.1.5", - "remove-trailing-separator": "^1.0.1", - "to-absolute-glob": "^2.0.0", - "unique-stream": "^2.0.2" - } - }, - "help-me": { - "version": "1.1.0", - "resolved": "https://registry.npmmirror.com/help-me/-/help-me-1.1.0.tgz", - "integrity": "sha512-P/IZ8yOMne3SCTHbVY429NZ67B/2bVQlcYGZh2iPPbdLrEQ/qY5aGChn0YTDmt7Sb4IKRI51fypItav+lNl76w==", - "requires": { - "callback-stream": "^1.0.2", - "glob-stream": "^6.1.0", - "through2": "^2.0.1", - "xtend": "^4.0.0" - } - }, - "html2canvas": { - "version": "1.4.1", - "requires": { - "css-line-break": "^2.1.0", - "text-segmentation": "^1.0.3" - } - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - }, - "image-tool": { - "version": "1.0.2", - "requires": { - "exif-js": "^2.3.0" - } - }, - "image-tools": { - "version": "1.4.0" - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "is-absolute": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/is-absolute/-/is-absolute-1.0.0.tgz", - "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", - "requires": { - "is-relative": "^1.0.0", - "is-windows": "^1.0.1" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" - }, - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", - "requires": { - "is-extglob": "^2.1.0" - } - }, - "is-negated-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz", - "integrity": "sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==" - }, - "is-relative": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/is-relative/-/is-relative-1.0.0.tgz", - "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", - "requires": { - "is-unc-path": "^1.0.0" - } - }, - "is-unc-path": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/is-unc-path/-/is-unc-path-1.0.0.tgz", - "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", - "requires": { - "unc-path-regex": "^0.1.2" - } - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" - }, - "jsrsasign": { - "version": "11.1.0" - }, - "leven": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/leven/-/leven-2.1.0.tgz", - "integrity": "sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA==" - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" - }, - "mqtt": { - "version": "3.0.0", - "resolved": "D:\\项目\\灿能\\app-govern\\node_modules\\.pnpm\\mqtt@3.0.0\\node_modules\\mqtt", - "requires": { - "base64-js": "^1.3.0", - "commist": "^1.0.0", - "concat-stream": "^1.6.2", - "end-of-stream": "^1.4.1", - "es6-map": "^0.1.5", - "help-me": "^1.0.1", - "inherits": "^2.0.3", - "minimist": "^1.2.0", - "mqtt-packet": "^6.0.0", - "pump": "^3.0.0", - "readable-stream": "^2.3.6", - "reinterval": "^1.1.0", - "split2": "^3.1.0", - "websocket-stream": "^5.1.2", - "xtend": "^4.0.1" - } - }, - "mqtt-packet": { - "version": "6.10.0", - "resolved": "https://registry.npmmirror.com/mqtt-packet/-/mqtt-packet-6.10.0.tgz", - "integrity": "sha512-ja8+mFKIHdB1Tpl6vac+sktqy3gA8t9Mduom1BA75cI+R9AHnZOiaBQwpGiWnaVJLDGRdNhQmFaAqd7tkKSMGA==", - "requires": { - "bl": "^4.0.2", - "debug": "^4.1.1", - "process-nextick-args": "^2.0.1" - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "next-tick": { - "version": "1.1.0", - "resolved": "https://registry.npmmirror.com/next-tick/-/next-tick-1.1.0.tgz", - "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "requires": { - "wrappy": "1" - } - }, - "ordered-read-streams": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", - "integrity": "sha512-Z87aSjx3r5c0ZB7bcJqIgIRX5bxR7A4aSzvIbaxd0oTkWBCOoKfuGHiKj60CHVUgg1Phm5yMZzBdt8XqRs73Mw==", - "requires": { - "readable-stream": "^2.0.1" - } - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==" - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" - }, - "pinyin-pro": { - "version": "3.26.0" - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "pump": { - "version": "3.0.3", - "resolved": "https://registry.npmmirror.com/pump/-/pump-3.0.3.tgz", - "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmmirror.com/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "requires": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - }, - "dependencies": { - "pump": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - } - } - }, - "readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "reinterval": { - "version": "1.1.0", - "resolved": "https://registry.npmmirror.com/reinterval/-/reinterval-1.1.0.tgz", - "integrity": "sha512-QIRet3SYrGp0HUHO88jVskiG6seqUGC5iAG7AwI/BV4ypGcuqk9Du6YQBUOUqm9c8pw1eyLoIaONifRua1lsEQ==" - }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmmirror.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==" - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "split2": { - "version": "3.2.2", - "resolved": "https://registry.npmmirror.com/split2/-/split2-3.2.2.tgz", - "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", - "requires": { - "readable-stream": "^3.0.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "stream-shift": { - "version": "1.0.3", - "resolved": "https://registry.npmmirror.com/stream-shift/-/stream-shift-1.0.3.tgz", - "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==" - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "text-segmentation": { - "version": "1.0.3", - "resolved": "https://registry.npmmirror.com/text-segmentation/-/text-segmentation-1.0.3.tgz", - "integrity": "sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==", - "requires": { - "utrie": "^1.0.2" - } - }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmmirror.com/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "through2-filter": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/through2-filter/-/through2-filter-3.0.0.tgz", - "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", - "requires": { - "through2": "~2.0.0", - "xtend": "~4.0.0" - } - }, - "to-absolute-glob": { - "version": "2.0.2", - "resolved": "https://registry.npmmirror.com/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", - "integrity": "sha512-rtwLUQEwT8ZeKQbyFJyomBRYXyE16U5VKuy0ftxLMK/PZb2fkOsg5r9kHdauuVDbsNdIBoC/HCthpidamQFXYA==", - "requires": { - "is-absolute": "^1.0.0", - "is-negated-glob": "^1.0.0" - } - }, - "tslib": { - "version": "2.3.0", - "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz", - "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" - }, - "type": { - "version": "2.7.3", - "resolved": "https://registry.npmmirror.com/type/-/type-2.7.3.tgz", - "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==" - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmmirror.com/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" - }, - "ultron": { - "version": "1.1.1", - "resolved": "https://registry.npmmirror.com/ultron/-/ultron-1.1.1.tgz", - "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==" - }, - "unc-path-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmmirror.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==" - }, - "unique-stream": { - "version": "2.3.1", - "resolved": "https://registry.npmmirror.com/unique-stream/-/unique-stream-2.3.1.tgz", - "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", - "requires": { - "json-stable-stringify-without-jsonify": "^1.0.1", - "through2-filter": "^3.0.0" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "utrie": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/utrie/-/utrie-1.0.2.tgz", - "integrity": "sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==", - "requires": { - "base64-arraybuffer": "^1.0.2" - } - }, - "websocket-stream": { - "version": "5.5.2", - "resolved": "https://registry.npmmirror.com/websocket-stream/-/websocket-stream-5.5.2.tgz", - "integrity": "sha512-8z49MKIHbGk3C4HtuHWDtYX8mYej1wWabjthC/RupM9ngeukU4IWoM46dgth1UOS/T4/IqgEdCDJuMe2039OQQ==", - "requires": { - "duplexify": "^3.5.1", - "inherits": "^2.0.1", - "readable-stream": "^2.3.3", - "safe-buffer": "^5.1.2", - "ws": "^3.2.0", - "xtend": "^4.0.0" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "ws": { - "version": "3.3.3", - "resolved": "https://registry.npmmirror.com/ws/-/ws-3.3.3.tgz", - "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", - "requires": { - "async-limiter": "~1.0.0", - "safe-buffer": "~5.1.0", - "ultron": "~1.1.0" - } - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmmirror.com/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" - }, - "zrender": { - "version": "5.6.1", - "resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.6.1.tgz", - "integrity": "sha512-OFXkDJKcrlx5su2XbzJvj/34Q3m6PvyCZkVPHGYpcCJ52ek4U/ymZyfuV1nKE23AyBJ51E/6Yr0mhZ7xGTO4ag==", - "requires": { - "tslib": "2.3.0" - } - } - } -} +{ + "name": "解决软件在运行时,未见向用户告知权限申请的目的,华为等上架被拒问题", + "version": "1.0.5", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "base64-arraybuffer": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", + "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==" + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmmirror.com/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "callback-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/callback-stream/-/callback-stream-1.1.0.tgz", + "integrity": "sha512-sAZ9kODla+mGACBZ1IpTCAisKoGnv6PykW7fPk1LrM+mMepE18Yz0515yoVcrZy7dQsTUp3uZLQ/9Sx1RnLoHw==", + "requires": { + "inherits": "^2.0.1", + "readable-stream": "> 1.0.0 < 3.0.0" + } + }, + "commist": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/commist/-/commist-1.1.0.tgz", + "integrity": "sha512-rraC8NXWOEjhADbZe9QBNzLAN5Q3fsTPQtBV+fEVj6xKIgDgNiEVE6ZNfHpZOqfQ21YUzfVNUXLOEZquYvQPPg==", + "requires": { + "leven": "^2.1.0", + "minimist": "^1.1.0" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmmirror.com/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "crypto-js": { + "version": "4.2.0" + }, + "css-line-break": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/css-line-break/-/css-line-break-2.1.0.tgz", + "integrity": "sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==", + "requires": { + "utrie": "^1.0.2" + } + }, + "d": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/d/-/d-1.0.2.tgz", + "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==", + "requires": { + "es5-ext": "^0.10.64", + "type": "^2.7.2" + } + }, + "debug": { + "version": "4.4.1", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "requires": { + "ms": "^2.1.3" + } + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmmirror.com/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "echarts": { + "version": "5.6.0", + "requires": { + "tslib": "2.3.0", + "zrender": "5.6.1" + } + }, + "end-of-stream": { + "version": "1.4.5", + "resolved": "https://registry.npmmirror.com/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", + "requires": { + "once": "^1.4.0" + } + }, + "es5-ext": { + "version": "0.10.64", + "resolved": "https://registry.npmmirror.com/es5-ext/-/es5-ext-0.10.64.tgz", + "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", + "requires": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "esniff": "^2.0.1", + "next-tick": "^1.1.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-map": { + "version": "0.1.5", + "resolved": "https://registry.npmmirror.com/es6-map/-/es6-map-0.1.5.tgz", + "integrity": "sha512-mz3UqCh0uPCIqsw1SSAkB/p0rOzF/M0V++vyN7JqlPtSW/VsYgQBvVvqMLmfBuyMzTpLnNqi6JmcSizs4jy19A==", + "requires": { + "d": "1", + "es5-ext": "~0.10.14", + "es6-iterator": "~2.0.1", + "es6-set": "~0.1.5", + "es6-symbol": "~3.1.1", + "event-emitter": "~0.3.5" + } + }, + "es6-set": { + "version": "0.1.6", + "resolved": "https://registry.npmmirror.com/es6-set/-/es6-set-0.1.6.tgz", + "integrity": "sha512-TE3LgGLDIBX332jq3ypv6bcOpkLO0AslAQo7p2VqX/1N46YNsvIWgvjojjSEnWEGWMhr1qUbYeTSir5J6mFHOw==", + "requires": { + "d": "^1.0.1", + "es5-ext": "^0.10.62", + "es6-iterator": "~2.0.3", + "es6-symbol": "^3.1.3", + "event-emitter": "^0.3.5", + "type": "^2.7.2" + } + }, + "es6-symbol": { + "version": "3.1.4", + "resolved": "https://registry.npmmirror.com/es6-symbol/-/es6-symbol-3.1.4.tgz", + "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==", + "requires": { + "d": "^1.0.2", + "ext": "^1.7.0" + } + }, + "esniff": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/esniff/-/esniff-2.0.1.tgz", + "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", + "requires": { + "d": "^1.0.1", + "es5-ext": "^0.10.62", + "event-emitter": "^0.3.5", + "type": "^2.7.2" + } + }, + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmmirror.com/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "exif-js": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/exif-js/-/exif-js-2.3.0.tgz", + "integrity": "sha512-1Og9pAzG2FZRVlaavH8bB8BTeHcjMdJhKmeQITkX+uLRCD0xPtKAdZ2clZmQdJ56p9adXtJ8+jwrGp/4505lYg==" + }, + "ext": { + "version": "1.7.0", + "resolved": "https://registry.npmmirror.com/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "requires": { + "type": "^2.7.2" + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "glob-stream": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/glob-stream/-/glob-stream-6.1.0.tgz", + "integrity": "sha512-uMbLGAP3S2aDOHUDfdoYcdIePUCfysbAd0IAoWVZbeGU/oNQ8asHVSshLDJUPWxfzj8zsCG7/XeHPHTtow0nsw==", + "requires": { + "extend": "^3.0.0", + "glob": "^7.1.1", + "glob-parent": "^3.1.0", + "is-negated-glob": "^1.0.0", + "ordered-read-streams": "^1.0.0", + "pumpify": "^1.3.5", + "readable-stream": "^2.1.5", + "remove-trailing-separator": "^1.0.1", + "to-absolute-glob": "^2.0.0", + "unique-stream": "^2.0.2" + } + }, + "help-me": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/help-me/-/help-me-1.1.0.tgz", + "integrity": "sha512-P/IZ8yOMne3SCTHbVY429NZ67B/2bVQlcYGZh2iPPbdLrEQ/qY5aGChn0YTDmt7Sb4IKRI51fypItav+lNl76w==", + "requires": { + "callback-stream": "^1.0.2", + "glob-stream": "^6.1.0", + "through2": "^2.0.1", + "xtend": "^4.0.0" + } + }, + "html2canvas": { + "version": "1.4.1", + "requires": { + "css-line-break": "^2.1.0", + "text-segmentation": "^1.0.3" + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "image-tool": { + "version": "1.0.2", + "requires": { + "exif-js": "^2.3.0" + } + }, + "image-tools": { + "version": "1.4.0" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "requires": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "requires": { + "is-extglob": "^2.1.0" + } + }, + "is-negated-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz", + "integrity": "sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==" + }, + "is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "requires": { + "is-unc-path": "^1.0.0" + } + }, + "is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "requires": { + "unc-path-regex": "^0.1.2" + } + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" + }, + "jsrsasign": { + "version": "11.1.0" + }, + "leven": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/leven/-/leven-2.1.0.tgz", + "integrity": "sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA==" + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" + }, + "mqtt": { + "version": "3.0.0", + "requires": { + "base64-js": "^1.3.0", + "commist": "^1.0.0", + "concat-stream": "^1.6.2", + "end-of-stream": "^1.4.1", + "es6-map": "^0.1.5", + "help-me": "^1.0.1", + "inherits": "^2.0.3", + "minimist": "^1.2.0", + "mqtt-packet": "^6.0.0", + "pump": "^3.0.0", + "readable-stream": "^2.3.6", + "reinterval": "^1.1.0", + "split2": "^3.1.0", + "websocket-stream": "^5.1.2", + "xtend": "^4.0.1" + } + }, + "mqtt-packet": { + "version": "6.10.0", + "resolved": "https://registry.npmmirror.com/mqtt-packet/-/mqtt-packet-6.10.0.tgz", + "integrity": "sha512-ja8+mFKIHdB1Tpl6vac+sktqy3gA8t9Mduom1BA75cI+R9AHnZOiaBQwpGiWnaVJLDGRdNhQmFaAqd7tkKSMGA==", + "requires": { + "bl": "^4.0.2", + "debug": "^4.1.1", + "process-nextick-args": "^2.0.1" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "requires": { + "wrappy": "1" + } + }, + "ordered-read-streams": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", + "integrity": "sha512-Z87aSjx3r5c0ZB7bcJqIgIRX5bxR7A4aSzvIbaxd0oTkWBCOoKfuGHiKj60CHVUgg1Phm5yMZzBdt8XqRs73Mw==", + "requires": { + "readable-stream": "^2.0.1" + } + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" + }, + "pinyin-pro": { + "version": "3.26.0" + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "pump": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/pump/-/pump-3.0.3.tgz", + "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmmirror.com/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "reinterval": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/reinterval/-/reinterval-1.1.0.tgz", + "integrity": "sha512-QIRet3SYrGp0HUHO88jVskiG6seqUGC5iAG7AwI/BV4ypGcuqk9Du6YQBUOUqm9c8pw1eyLoIaONifRua1lsEQ==" + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==" + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "split2": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "requires": { + "readable-stream": "^3.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "stream-shift": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/stream-shift/-/stream-shift-1.0.3.tgz", + "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "text-segmentation": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/text-segmentation/-/text-segmentation-1.0.3.tgz", + "integrity": "sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==", + "requires": { + "utrie": "^1.0.2" + } + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "through2-filter": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/through2-filter/-/through2-filter-3.0.0.tgz", + "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", + "requires": { + "through2": "~2.0.0", + "xtend": "~4.0.0" + } + }, + "to-absolute-glob": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", + "integrity": "sha512-rtwLUQEwT8ZeKQbyFJyomBRYXyE16U5VKuy0ftxLMK/PZb2fkOsg5r9kHdauuVDbsNdIBoC/HCthpidamQFXYA==", + "requires": { + "is-absolute": "^1.0.0", + "is-negated-glob": "^1.0.0" + } + }, + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + }, + "type": { + "version": "2.7.3", + "resolved": "https://registry.npmmirror.com/type/-/type-2.7.3.tgz", + "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==" + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmmirror.com/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" + }, + "ultron": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/ultron/-/ultron-1.1.1.tgz", + "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==" + }, + "unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmmirror.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==" + }, + "unique-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/unique-stream/-/unique-stream-2.3.1.tgz", + "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", + "requires": { + "json-stable-stringify-without-jsonify": "^1.0.1", + "through2-filter": "^3.0.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "utrie": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/utrie/-/utrie-1.0.2.tgz", + "integrity": "sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==", + "requires": { + "base64-arraybuffer": "^1.0.2" + } + }, + "uview-ui": { + "version": "2.0.38", + "resolved": "https://registry.npmmirror.com/uview-ui/-/uview-ui-2.0.38.tgz", + "integrity": "sha512-6egHDf9lXHKpG3hEjRE0vMx4+VWwKk/ReTf5x18KrIKqdvdPRqO3+B8Unh7vYYwrIxzAWIlmhZ9RJpKI/4UqPQ==" + }, + "websocket-stream": { + "version": "5.5.2", + "resolved": "https://registry.npmmirror.com/websocket-stream/-/websocket-stream-5.5.2.tgz", + "integrity": "sha512-8z49MKIHbGk3C4HtuHWDtYX8mYej1wWabjthC/RupM9ngeukU4IWoM46dgth1UOS/T4/IqgEdCDJuMe2039OQQ==", + "requires": { + "duplexify": "^3.5.1", + "inherits": "^2.0.1", + "readable-stream": "^2.3.3", + "safe-buffer": "^5.1.2", + "ws": "^3.2.0", + "xtend": "^4.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "ws": { + "version": "3.3.3", + "resolved": "https://registry.npmmirror.com/ws/-/ws-3.3.3.tgz", + "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "requires": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" + } + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, + "zrender": { + "version": "5.6.1", + "resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.6.1.tgz", + "integrity": "sha512-OFXkDJKcrlx5su2XbzJvj/34Q3m6PvyCZkVPHGYpcCJ52ek4U/ymZyfuV1nKE23AyBJ51E/6Yr0mhZ7xGTO4ag==", + "requires": { + "tslib": "2.3.0" + } + } + } +} diff --git a/package.json b/package.json index c69df83..d5e87b7 100644 --- a/package.json +++ b/package.json @@ -1,30 +1,31 @@ -{ - "id": "yk-authpup", - "name": "解决软件在运行时,未见向用户告知权限申请的目的,华为等上架被拒问题", - "displayName": "解决软件在运行时,未见向用户告知权限申请的目的,华为等上架被拒问题", - "version": "1.0.5", - "description": "解决软件在运行时,未见向用户告知权限申请的目的,华为等上架被拒问题", - "keywords": [ - "uniapp", - "华为上架", - "权限", - "权限申请", - "权限判断" - ], - "dcloudext": { - "category": [ - "前端组件", - "通用组件" - ] - }, - "dependencies": { - "crypto-js": "^4.2.0", - "echarts": "^5.6.0", - "html2canvas": "^1.4.1", - "image-tool": "^1.0.2", - "image-tools": "^1.4.0", - "jsrsasign": "^11.1.0", - "mqtt": "^3.0.0", - "pinyin-pro": "^3.26.0" - } -} +{ + "id": "yk-authpup", + "name": "解决软件在运行时,未见向用户告知权限申请的目的,华为等上架被拒问题", + "displayName": "解决软件在运行时,未见向用户告知权限申请的目的,华为等上架被拒问题", + "version": "1.0.5", + "description": "解决软件在运行时,未见向用户告知权限申请的目的,华为等上架被拒问题", + "keywords": [ + "uniapp", + "华为上架", + "权限", + "权限申请", + "权限判断" + ], + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ] + }, + "dependencies": { + "crypto-js": "^4.2.0", + "echarts": "^5.6.0", + "html2canvas": "^1.4.1", + "image-tool": "^1.0.2", + "image-tools": "^1.4.0", + "jsrsasign": "^11.1.0", + "mqtt": "^3.0.0", + "pinyin-pro": "^3.26.0", + "uview-ui": "^2.0.38" + } +} diff --git a/pages.json b/pages.json index e7c0827..ea74649 100644 --- a/pages.json +++ b/pages.json @@ -4,6 +4,7 @@ { "path": "pages/index/index", "style": { + "enablePullDownRefresh": true, // 开启下拉刷新 "navigationStyle": "custom", "pullToRefresh": { "support":true, @@ -13,11 +14,36 @@ } }, { - "path": "pages/index/message", + "path": "pages/index/message1", "style": { - "navigationBarTitleText": "消息" + "navigationBarTitleText": "消息", + + "app-plus": { + "bounce": "none", + //关闭窗口回弹效果 + "titleNView": { + // 窗口的标题 + "titleAlign": "center", + "padding-right": "20rpx", + "buttons": [ + { + "text": "一键已读", + "fontSize": "28rpx", + "select": false, + "width": "auto" + } + ] + } + } } + }, + { + "path": "pages/index/report", + "style": { + "navigationBarTitleText": "报表" + } + }, { "path": "pages/index/mine", "style": { @@ -133,6 +159,13 @@ "enablePullDownRefresh": true } }, + { + "path": "pages/device/realTime/index", + "style": { + "navigationBarTitleText": "实时数据" + // "enablePullDownRefresh": true + } + }, { "path": "pages/device/DVR/detail", "style": { @@ -221,12 +254,36 @@ } } }, + { + "path": "pages/message1/comp/preview", + "style": { + "navigationBarTitleText": "预览" + } + }, { "path": "pages/message/messageDetail", "style": { "navigationBarTitleText": "暂态事件详情" } }, + { + "path": "pages/message1/comp/transientDetails", + "style": { + "navigationBarTitleText": "暂态事件详情" + } + }, + { + "path": "pages/message1/comp/steadyStateDetails", + "style": { + "navigationBarTitleText": "稳态事件详情" + } + }, + { + "path": "pages/message1/comp/alarmDetails", + "style": { + "navigationBarTitleText": "运行告警详情" + } + }, { "path": "pages/device/transfer", "style": { @@ -353,6 +410,12 @@ "navigationBarTitleText": "服务内容配置" } }, + { + "path": "pages/mine/transientSetting", + "style": { + "navigationBarTitleText": "暂态事件配置" + } + }, { "path": "pages/user/erweima", "style": { @@ -441,11 +504,17 @@ "text": "首页" }, { - "pagePath": "pages/index/message", + "pagePath": "pages/index/message1", "iconPath": "static/notice.png", "selectedIconPath": "static/notice2.png", "text": "消息" - }, + }, + { + "pagePath": "pages/index/report", + "iconPath": "static/reportIco.png", + "selectedIconPath": "static/reportIco1.png", + "text": "报表" + }, { "pagePath": "pages/index/mine", "iconPath": "static/mine.png", @@ -468,7 +537,8 @@ "easycom": { "autoscan": true, "custom": { - "^rc-(.*)": "@/components/Cn-$1/Cn-$1.vue" + "^rc-(.*)": "@/components/Cn-$1/Cn-$1.vue", + "^u-(.*)": "uview-ui/components/u-$1/u-$1.vue" } }, "condition": { diff --git a/pages/device/list.vue b/pages/device/list.vue index 61f9163..b219892 100644 --- a/pages/device/list.vue +++ b/pages/device/list.vue @@ -1,379 +1,480 @@ - - - \ No newline at end of file + + + diff --git a/pages/device/realTime/index.vue b/pages/device/realTime/index.vue new file mode 100644 index 0000000..7ac23e6 --- /dev/null +++ b/pages/device/realTime/index.vue @@ -0,0 +1,988 @@ + + + diff --git a/pages/gateway/detail.vue b/pages/gateway/detail.vue index a4b3343..6eb1cf4 100644 --- a/pages/gateway/detail.vue +++ b/pages/gateway/detail.vue @@ -1,113 +1,113 @@ - - - \ No newline at end of file diff --git a/pages/home/selectEngineering.vue b/pages/home/selectEngineering.vue index 97d4757..78c44e8 100644 --- a/pages/home/selectEngineering.vue +++ b/pages/home/selectEngineering.vue @@ -1,97 +1,135 @@ - - - + + + diff --git a/pages/index/comp/apply.vue b/pages/index/comp/apply.vue new file mode 100644 index 0000000..fa5dc6a --- /dev/null +++ b/pages/index/comp/apply.vue @@ -0,0 +1,246 @@ + + + diff --git a/pages/index/comp/device.vue b/pages/index/comp/device.vue index b71e3e9..9c83472 100644 --- a/pages/index/comp/device.vue +++ b/pages/index/comp/device.vue @@ -61,33 +61,22 @@ - @@ -32,7 +41,13 @@ - @@ -41,10 +41,6 @@ return [] } }, - lunar: { - type: Boolean, - default: false - }, checkHover: { type: Boolean, default: false @@ -61,8 +57,8 @@ } - diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/en.json b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/en.json index 6541733..56cd0a6 100644 --- a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/en.json +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/en.json @@ -1,15 +1,15 @@ { "uni-datetime-picker.selectDate": "select date", "uni-datetime-picker.selectTime": "select time", - "uni-datetime-picker.selectDateTime": "select datetime", + "uni-datetime-picker.selectDateTime": "select date and time", "uni-datetime-picker.startDate": "start date", "uni-datetime-picker.endDate": "end date", "uni-datetime-picker.startTime": "start time", "uni-datetime-picker.endTime": "end time", "uni-datetime-picker.ok": "ok", "uni-datetime-picker.clear": "clear", - "uni-datetime-picker.cancel": "cancel", - "uni-datetime-picker.year": "-", + "uni-datetime-picker.cancel": "cancel", + "uni-datetime-picker.year": "-", "uni-datetime-picker.month": "", "uni-calender.MON": "MON", "uni-calender.TUE": "TUE", diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/time-picker.vue b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/time-picker.vue index cc75a49..8716d42 100644 --- a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/time-picker.vue +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/time-picker.vue @@ -77,21 +77,20 @@ - - - - + diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/uni-datetime-picker.vue b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/uni-datetime-picker.vue index bb60d11..021300f 100644 --- a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/uni-datetime-picker.vue +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/uni-datetime-picker.vue @@ -1,1015 +1,1068 @@ - - - + this.$refs.mobile && this.$refs.mobile.close() + }, 20) + }, + setEmit(value) { + if (this.returnType === "timestamp" || this.returnType === "date") { + if (!Array.isArray(value)) { + if (!this.hasTime) { + value = value + ' ' + '00:00:00' + } + value = this.createTimestamp(value) + if (this.returnType === "date") { + value = new Date(value) + } + } else { + if (!this.hasTime) { + value[0] = value[0] + ' ' + '00:00:00' + value[1] = value[1] + ' ' + '00:00:00' + } + value[0] = this.createTimestamp(value[0]) + value[1] = this.createTimestamp(value[1]) + if (this.returnType === "date") { + value[0] = new Date(value[0]) + value[1] = new Date(value[1]) + } + } + } + + this.$emit('update:modelValue', value) + this.$emit('input', value) + this.$emit('change', value) + this.isEmitValue = true + }, + createTimestamp(date) { + date = fixIosDateFormat(date) + return Date.parse(new Date(date)) + }, + singleChange(e) { + this.calendarDate = this.inputDate = e.fulldate + if (this.hasTime) return + this.confirmSingleChange() + }, + confirmSingleChange() { + if (!checkDate(this.inputDate)) { + const now = new Date() + this.calendarDate = this.inputDate = getDate(now) + this.pickerTime = getTime(now, this.hideSecond) + } + + let startLaterInputDate = false + let startDate, startTime + if (this.start) { + let startString = this.start + if (typeof this.start === 'number') { + startString = getDateTime(this.start, this.hideSecond) + } + [startDate, startTime] = startString.split(' ') + if (this.start && !dateCompare(startDate, this.inputDate)) { + startLaterInputDate = true + this.inputDate = startDate + } + } + + let endEarlierInputDate = false + let endDate, endTime + if (this.end) { + let endString = this.end + if (typeof this.end === 'number') { + endString = getDateTime(this.end, this.hideSecond) + } + [endDate, endTime] = endString.split(' ') + if (this.end && !dateCompare(this.inputDate, endDate)) { + endEarlierInputDate = true + this.inputDate = endDate + } + } + if (this.hasTime) { + if (startLaterInputDate) { + this.pickerTime = startTime || getDefaultSecond(this.hideSecond) + } + if (endEarlierInputDate) { + this.pickerTime = endTime || getDefaultSecond(this.hideSecond) + } + if (!this.pickerTime) { + this.pickerTime = getTime(Date.now(), this.hideSecond) + } + this.displayValue = `${this.inputDate} ${this.pickerTime}` + } else { + this.displayValue = this.inputDate + } + this.setEmit(this.displayValue) + this.pickerVisible = false + }, + leftChange(e) { + const { + before, + after + } = e.range + this.rangeChange(before, after) + const obj = { + before: e.range.before, + after: e.range.after, + data: e.range.data, + fulldate: e.fulldate + } + this.startMultipleStatus = Object.assign({}, this.startMultipleStatus, obj) + this.$emit('calendarClick', e) + }, + rightChange(e) { + const { + before, + after + } = e.range + this.rangeChange(before, after) + const obj = { + before: e.range.before, + after: e.range.after, + data: e.range.data, + fulldate: e.fulldate + } + this.endMultipleStatus = Object.assign({}, this.endMultipleStatus, obj) + this.$emit('calendarClick', e) + }, + mobileChange(e) { + if (this.isRange) { + const { + before, + after + } = e.range + if (!before) { + return; + } + + this.handleStartAndEnd(before, after, true) + if (this.hasTime) { + const { + startTime, + endTime + } = e.timeRange + this.tempRange.startTime = startTime + this.tempRange.endTime = endTime + } + this.confirmRangeChange() + } else { + if (this.hasTime) { + this.displayValue = e.fulldate + ' ' + e.time + } else { + this.displayValue = e.fulldate + } + this.setEmit(this.displayValue) + this.calendarDate = this.displayValue; + } + this.$refs.mobile.close() + }, + rangeChange(before, after) { + if (!(before && after)) return + this.handleStartAndEnd(before, after, true) + if (this.hasTime) return + this.confirmRangeChange() + }, + confirmRangeChange() { + if (!this.tempRange.startDate || !this.tempRange.endDate) { + this.pickerVisible = false + return + } + if (!checkDate(this.tempRange.startDate)) { + this.tempRange.startDate = getDate(Date.now()) + } + if (!checkDate(this.tempRange.endDate)) { + this.tempRange.endDate = getDate(Date.now()) + } + + let start, end + + let startDateLaterRangeStartDate = false + let startDateLaterRangeEndDate = false + let startDate, startTime + + let compareStartDateString = this.tempRange.startDate + let compareEndDateString = this.tempRange.endDate + if (this.hasTime) { + compareStartDateString = `${this.tempRange.startDate} ${this.tempRange.startTime}` + compareEndDateString = `${this.tempRange.endDate} ${this.tempRange.endTime}` + } + + if (this.start) { + let startString = this.start + if (typeof this.start === 'number') { + startString = getDateTime(this.start, this.hideSecond) + } + [startDate, startTime] = startString.split(' ') + if (this.start && !dateCompare(this.start, compareStartDateString)) { + startDateLaterRangeStartDate = true + this.tempRange.startDate = startDate + } + if (this.start && !dateCompare(this.start, compareEndDateString)) { + startDateLaterRangeEndDate = true + this.tempRange.endDate = startDate + } + } + let endDateEarlierRangeStartDate = false + let endDateEarlierRangeEndDate = false + let endDate, endTime + if (this.end) { + let endString = this.end + if (typeof this.end === 'number') { + endString = getDateTime(this.end, this.hideSecond) + } + [endDate, endTime] = endString.split(' ') + + if (this.end && !dateCompare(compareStartDateString, this.end)) { + endDateEarlierRangeStartDate = true + this.tempRange.startDate = endDate + } + if (this.end && !dateCompare(compareEndDateString, this.end)) { + endDateEarlierRangeEndDate = true + this.tempRange.endDate = endDate + } + } + if (!this.hasTime) { + start = this.displayRangeValue.startDate = this.tempRange.startDate + end = this.displayRangeValue.endDate = this.tempRange.endDate + } else { + if (startDateLaterRangeStartDate) { + this.tempRange.startTime = startTime || getDefaultSecond(this.hideSecond) + } else if (endDateEarlierRangeStartDate) { + this.tempRange.startTime = endTime || getDefaultSecond(this.hideSecond) + } + if (!this.tempRange.startTime) { + this.tempRange.startTime = getTime(Date.now(), this.hideSecond) + } + + if (startDateLaterRangeEndDate) { + this.tempRange.endTime = startTime || getDefaultSecond(this.hideSecond) + } else if (endDateEarlierRangeEndDate) { + this.tempRange.endTime = endTime || getDefaultSecond(this.hideSecond) + } + if (!this.tempRange.endTime) { + this.tempRange.endTime = getTime(Date.now(), this.hideSecond) + } + start = this.displayRangeValue.startDate = `${this.tempRange.startDate} ${this.tempRange.startTime}` + end = this.displayRangeValue.endDate = `${this.tempRange.endDate} ${this.tempRange.endTime}` + } + if (!dateCompare(start, end)) { + [start, end] = [end, start] + } + this.displayRangeValue.startDate = start + this.displayRangeValue.endDate = end + const displayRange = [start, end] + this.setEmit(displayRange) + this.pickerVisible = false + }, + handleStartAndEnd(before, after, temp = false) { + if (!before) return + if (!after) after = before; + const type = temp ? 'tempRange' : 'range' + const isStartEarlierEnd = dateCompare(before, after) + this[type].startDate = isStartEarlierEnd ? before : after + this[type].endDate = isStartEarlierEnd ? after : before + }, + /** + * 比较时间大小 + */ + dateCompare(startDate, endDate) { + // 计算截止时间 + startDate = new Date(startDate.replace('-', '/').replace('-', '/')) + // 计算详细项的截止时间 + endDate = new Date(endDate.replace('-', '/').replace('-', '/')) + return startDate <= endDate + }, + + /** + * 比较时间差 + */ + diffDate(startDate, endDate) { + // 计算截止时间 + startDate = new Date(startDate.replace('-', '/').replace('-', '/')) + // 计算详细项的截止时间 + endDate = new Date(endDate.replace('-', '/').replace('-', '/')) + const diff = (endDate - startDate) / (24 * 60 * 60 * 1000) + return Math.abs(diff) + }, + + clear(needEmit = true) { + if (!this.isRange) { + this.displayValue = '' + this.inputDate = '' + this.pickerTime = '' + if (this.isPhone) { + this.$refs.mobile && this.$refs.mobile.clearCalender() + } else { + this.$refs.pcSingle && this.$refs.pcSingle.clearCalender() + } + if (needEmit) { + this.$emit('change', '') + this.$emit('input', '') + this.$emit('update:modelValue', '') + } + } else { + this.displayRangeValue.startDate = '' + this.displayRangeValue.endDate = '' + this.tempRange.startDate = '' + this.tempRange.startTime = '' + this.tempRange.endDate = '' + this.tempRange.endTime = '' + if (this.isPhone) { + this.$refs.mobile && this.$refs.mobile.clearCalender() + } else { + this.$refs.left && this.$refs.left.clearCalender() + this.$refs.right && this.$refs.right.clearCalender() + this.$refs.right && this.$refs.right.changeMonth('next') + } + if (needEmit) { + this.$emit('change', []) + this.$emit('input', []) + this.$emit('update:modelValue', []) + } + } + }, + + calendarClick(e) { + this.$emit('calendarClick', e) + } + } + } + + + + .uni-date { + width: 100%; + flex: 1; + } + + .uni-date-x { + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; + border-radius: 4px; + background-color: #fff; + color: #666; + font-size: 14px; + flex: 1; + + .icon-calendar { + padding-left: 3px; + } + + .range-separator { + height: 35px; + /* #ifndef MP */ + padding: 0 2px; + /* #endif */ + line-height: 35px; + } + } + + .uni-date-x--border { + box-sizing: border-box; + border-radius: 4px; + border: 1px solid #e5e5e5; + } + + .uni-date-editor--x { + display: flex; + align-items: center; + position: relative; + } + + .uni-date-editor--x .uni-date__icon-clear { + padding-right: 3px; + display: flex; + align-items: center; + /* #ifdef H5 */ + cursor: pointer; + /* #endif */ + } + + .uni-date__x-input { + width: auto; + height: 35px; + /* #ifndef MP */ + padding-left: 5px; + /* #endif */ + position: relative; + flex: 1; + line-height: 35px; + font-size: 14px; + overflow: hidden; + } + + .text-center { + text-align: center; + } + + .uni-date__input { + height: 40px; + width: 100%; + line-height: 40px; + font-size: 14px; + } + + .uni-date-range__input { + text-align: center; + max-width: 142px; + } + + .uni-date-picker__container { + position: relative; + } + + .uni-date-mask--pc { + position: fixed; + bottom: 0px; + top: 0px; + left: 0px; + right: 0px; + background-color: rgba(0, 0, 0, 0); + transition-duration: 0.3s; + z-index: 996; + } + + .uni-date-single--x { + background-color: #fff; + position: absolute; + top: 0; + z-index: 999; + border: 1px solid #EBEEF5; + box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1); + border-radius: 4px; + } + + .uni-date-range--x { + background-color: #fff; + position: absolute; + top: 0; + z-index: 999; + border: 1px solid #EBEEF5; + box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1); + border-radius: 4px; + } + + .uni-date-editor--x__disabled { + opacity: 0.4; + cursor: default; + } + + .uni-date-editor--logo { + width: 16px; + height: 16px; + vertical-align: middle; + } + + /* 添加时间 */ + .popup-x-header { + /* #ifndef APP-NVUE */ + display: flex; + /* #endif */ + flex-direction: row; + } + + .popup-x-header--datetime { + /* #ifndef APP-NVUE */ + display: flex; + /* #endif */ + flex-direction: row; + flex: 1; + } + + .popup-x-body { + display: flex; + } + + .popup-x-footer { + padding: 0 15px; + border-top-color: #F1F1F1; + border-top-style: solid; + border-top-width: 1px; + line-height: 40px; + text-align: right; + color: #666; + } + + .popup-x-footer text:hover { + color: $uni-primary; + cursor: pointer; + opacity: 0.8; + } + + .popup-x-footer .confirm-text { + margin-left: 20px; + color: $uni-primary; + } + + .uni-date-changed { + text-align: center; + color: #333; + border-bottom-color: #F1F1F1; + border-bottom-style: solid; + border-bottom-width: 1px; + } + + .uni-date-changed .uni-date-changed--time { + flex: 1; + } + + .uni-date-changed--time-date { + color: #333; + opacity: 0.6; + } + + .mr-50 { + margin-right: 50px; + } + + /* picker 弹出层通用的指示小三角, todo:扩展至上下左右方向定位 */ + .uni-popper__arrow, + .uni-popper__arrow::after { + position: absolute; + display: block; + width: 0; + height: 0; + border: 6px solid transparent; + border-top-width: 0; + } + + .uni-popper__arrow { + filter: drop-shadow(0 2px 12px rgba(0, 0, 0, 0.03)); + top: -6px; + left: 10%; + margin-right: 3px; + border-bottom-color: #EBEEF5; + } + + .uni-popper__arrow::after { + content: " "; + top: 1px; + margin-left: -6px; + border-bottom-color: #fff; + } + diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/util.js b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/util.js index 882f006..ea62fbc 100644 --- a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/util.js +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/util.js @@ -1,27 +1,24 @@ class Calendar { constructor({ - date, selected, startDate, endDate, range, - // multipleStatus } = {}) { // 当前日期 - this.date = this.getDate(new Date()) // 当前初入日期 + this.date = this.getDateObj(new Date()) // 当前初入日期 // 打点信息 this.selected = selected || []; - // 范围开始 + // 起始时间 this.startDate = startDate - // 范围结束 + // 终止时间 this.endDate = endDate + // 是否范围选择 this.range = range // 多选状态 this.cleanMultipleStatus() // 每周日期 this.weeks = {} - // this._getWeek(this.date.fullDate) - // this.multipleStatus = multipleStatus this.lastHover = false } /** @@ -29,8 +26,8 @@ class Calendar { * @param {Object} date */ setDate(date) { - this.selectDate = this.getDate(date) - this._getWeek(this.selectDate.fullDate) + const selectDate = this.getDateObj(date) + this.getWeeks(selectDate.fullDate) } /** @@ -44,93 +41,82 @@ class Calendar { } } - /** - * 重置开始日期 - */ - resetSatrtDate(startDate) { - // 范围开始 + setStartDate(startDate) { this.startDate = startDate - } - /** - * 重置结束日期 - */ - resetEndDate(endDate) { - // 范围结束 + setEndDate(endDate) { this.endDate = endDate } + getPreMonthObj(date) { + date = fixIosDateFormat(date) + date = new Date(date) + + const oldMonth = date.getMonth() + date.setMonth(oldMonth - 1) + const newMonth = date.getMonth() + if (oldMonth !== 0 && newMonth - oldMonth === 0) { + date.setMonth(newMonth - 1) + } + return this.getDateObj(date) + } + getNextMonthObj(date) { + date = fixIosDateFormat(date) + date = new Date(date) + + const oldMonth = date.getMonth() + date.setMonth(oldMonth + 1) + const newMonth = date.getMonth() + if (newMonth - oldMonth > 1) { + date.setMonth(newMonth - 1) + } + return this.getDateObj(date) + } + /** - * 获取任意时间 + * 获取指定格式Date对象 */ - getDate(date, AddDayCount = 0, str = 'day') { - if (!date) { - date = new Date() - } - if (typeof date !== 'object') { - date = date.replace(/-/g, '/') - } - const dd = new Date(date) - switch (str) { - case 'day': - dd.setDate(dd.getDate() + AddDayCount) // 获取AddDayCount天后的日期 - break - case 'month': - if (dd.getDate() === 31) { - dd.setDate(dd.getDate() + AddDayCount) - } else { - dd.setMonth(dd.getMonth() + AddDayCount) // 获取AddDayCount天后的日期 - } - break - case 'year': - dd.setFullYear(dd.getFullYear() + AddDayCount) // 获取AddDayCount天后的日期 - break - } - const y = dd.getFullYear() - const m = dd.getMonth() + 1 < 10 ? '0' + (dd.getMonth() + 1) : dd.getMonth() + 1 // 获取当前月份的日期,不足10补0 - const d = dd.getDate() < 10 ? '0' + dd.getDate() : dd.getDate() // 获取当前几号,不足10补0 + getDateObj(date) { + date = fixIosDateFormat(date) + date = new Date(date) + return { - fullDate: y + '-' + m + '-' + d, - year: y, - month: m, - date: d, - day: dd.getDay() + fullDate: getDate(date), + year: date.getFullYear(), + month: addZero(date.getMonth() + 1), + date: addZero(date.getDate()), + day: date.getDay() } } - /** - * 获取上月剩余天数 + * 获取上一个月日期集合 */ - _getLastMonthDays(firstDay, full) { - let dateArr = [] - for (let i = firstDay; i > 0; i--) { - const beforeDate = new Date(full.year, full.month - 1, -i + 1).getDate() - dateArr.push({ - date: beforeDate, - month: full.month - 1, + getPreMonthDays(amount, dateObj) { + const result = [] + for (let i = amount - 1; i >= 0; i--) { + const month = dateObj.month - 1 + result.push({ + date: new Date(dateObj.year, month, -i).getDate(), + month, disable: true }) } - return dateArr + return result } /** - * 获取本月天数 + * 获取本月日期集合 */ - _currentMonthDys(dateData, full) { - let dateArr = [] - let fullDate = this.date.fullDate - for (let i = 1; i <= dateData; i++) { - let isinfo = false - let nowDate = full.year + '-' + (full.month < 10 ? - full.month : full.month) + '-' + (i < 10 ? - '0' + i : i) - // 是否今天 - let isDay = fullDate === nowDate + getCurrentMonthDays(amount, dateObj) { + const result = [] + const fullDate = this.date.fullDate + for (let i = 1; i <= amount; i++) { + const currentDate = `${dateObj.year}-${dateObj.month}-${addZero(i)}` + const isToday = fullDate === currentDate // 获取打点信息 - let info = this.selected && this.selected.find((item) => { - if (this.dateEqual(nowDate, item.date)) { + const info = this.selected && this.selected.find((item) => { + if (this.dateEqual(currentDate, item.date)) { return item } }) @@ -139,62 +125,53 @@ class Calendar { let disableBefore = true let disableAfter = true if (this.startDate) { - // let dateCompBefore = this.dateCompare(this.startDate, fullDate) - // disableBefore = this.dateCompare(dateCompBefore ? this.startDate : fullDate, nowDate) - disableBefore = this.dateCompare(this.startDate, nowDate) + disableBefore = dateCompare(this.startDate, currentDate) } if (this.endDate) { - // let dateCompAfter = this.dateCompare(fullDate, this.endDate) - // disableAfter = this.dateCompare(nowDate, dateCompAfter ? this.endDate : fullDate) - disableAfter = this.dateCompare(nowDate, this.endDate) - } - let multiples = this.multipleStatus.data - let checked = false - let multiplesStatus = -1 - if (this.range) { - if (multiples) { - multiplesStatus = multiples.findIndex((item) => { - return this.dateEqual(item, nowDate) - }) - } - if (multiplesStatus !== -1) { - checked = true - } - } - let data = { - fullDate: nowDate, - year: full.year, - date: i, - multiple: this.range ? checked : false, - beforeMultiple: this.isLogicBefore(nowDate, this.multipleStatus.before, this.multipleStatus.after), - afterMultiple: this.isLogicAfter(nowDate, this.multipleStatus.before, this.multipleStatus.after), - month: full.month, - disable: !(disableBefore && disableAfter), - isDay, - userChecked: false - } - if (info) { - data.extraInfo = info + disableAfter = dateCompare(currentDate, this.endDate) } - dateArr.push(data) + let multiples = this.multipleStatus.data + let multiplesStatus = -1 + if (this.range && multiples) { + multiplesStatus = multiples.findIndex((item) => { + return this.dateEqual(item, currentDate) + }) + } + const checked = multiplesStatus !== -1 + + result.push({ + fullDate: currentDate, + year: dateObj.year, + date: i, + multiple: this.range ? checked : false, + beforeMultiple: this.isLogicBefore(currentDate, this.multipleStatus.before, this.multipleStatus.after), + afterMultiple: this.isLogicAfter(currentDate, this.multipleStatus.before, this.multipleStatus.after), + month: dateObj.month, + disable: (this.startDate && !dateCompare(this.startDate, currentDate)) || (this.endDate && !dateCompare( + currentDate, this.endDate)), + isToday, + userChecked: false, + extraInfo: info + }) } - return dateArr + return result } /** - * 获取下月天数 + * 获取下一个月日期集合 */ - _getNextMonthDays(surplus, full) { - let dateArr = [] - for (let i = 1; i < surplus + 1; i++) { - dateArr.push({ + _getNextMonthDays(amount, dateObj) { + const result = [] + const month = dateObj.month + 1 + for (let i = 1; i <= amount; i++) { + result.push({ date: i, - month: Number(full.month) + 1, + month, disable: true }) } - return dateArr + return result } /** @@ -205,59 +182,38 @@ class Calendar { if (!date) { date = new Date() } - const dateInfo = this.canlender.find(item => item.fullDate === this.getDate(date).fullDate) - return dateInfo - } - - /** - * 比较时间大小 - */ - dateCompare(startDate, endDate) { - // 计算截止时间 - startDate = new Date(startDate.replace('-', '/').replace('-', '/')) - // 计算详细项的截止时间 - endDate = new Date(endDate.replace('-', '/').replace('-', '/')) - if (startDate <= endDate) { - return true - } else { - return false - } + const res = this.calendar.find(item => item.fullDate === this.getDateObj(date).fullDate) + return res ? res : this.getDateObj(date) } /** * 比较时间是否相等 */ dateEqual(before, after) { - // 计算截止时间 - before = new Date(before.replace('-', '/').replace('-', '/')) - // 计算详细项的截止时间 - after = new Date(after.replace('-', '/').replace('-', '/')) - if (before.getTime() - after.getTime() === 0) { - return true - } else { - return false - } + before = new Date(fixIosDateFormat(before)) + after = new Date(fixIosDateFormat(after)) + return before.valueOf() === after.valueOf() } - + /** * 比较真实起始日期 */ - - isLogicBefore(currentDay, before, after) { - let logicBefore = before - if (before && after) { - logicBefore = this.dateCompare(before, after) ? before : after - } - return this.dateEqual(logicBefore, currentDay) + + isLogicBefore(currentDate, before, after) { + let logicBefore = before + if (before && after) { + logicBefore = dateCompare(before, after) ? before : after + } + return this.dateEqual(logicBefore, currentDate) + } + + isLogicAfter(currentDate, before, after) { + let logicAfter = after + if (before && after) { + logicAfter = dateCompare(before, after) ? after : before + } + return this.dateEqual(logicAfter, currentDate) } - - isLogicAfter(currentDay, before, after) { - let logicAfter = after - if (before && after) { - logicAfter = this.dateCompare(before, after) ? after : before - } - return this.dateEqual(logicAfter, currentDay) - } /** * 获取日期范围内所有日期 @@ -276,7 +232,7 @@ class Calendar { var unixDe = de.getTime() - 24 * 60 * 60 * 1000 for (var k = unixDb; k <= unixDe;) { k = k + 24 * 60 * 60 * 1000 - arr.push(this.getDate(new Date(parseInt(k))).fullDate) + arr.push(this.getDateObj(new Date(parseInt(k))).fullDate) } return arr } @@ -285,11 +241,12 @@ class Calendar { * 获取多选状态 */ setMultiple(fullDate) { + if (!this.range) return + let { before, after - } = this.multipleStatus - if (!this.range) return + } = this.multipleStatus if (before && after) { if (!this.lastHover) { this.lastHover = true @@ -302,46 +259,48 @@ class Calendar { this.lastHover = false } else { if (!before) { - this.multipleStatus.before = fullDate + this.multipleStatus.before = fullDate + this.multipleStatus.after = undefined; this.lastHover = false } else { this.multipleStatus.after = fullDate - if (this.dateCompare(this.multipleStatus.before, this.multipleStatus.after)) { + if (dateCompare(this.multipleStatus.before, this.multipleStatus.after)) { this.multipleStatus.data = this.geDateAll(this.multipleStatus.before, this.multipleStatus .after); } else { this.multipleStatus.data = this.geDateAll(this.multipleStatus.after, this.multipleStatus .before); - } + } this.lastHover = true } } - this._getWeek(fullDate) + this.getWeeks(fullDate) } /** * 鼠标 hover 更新多选状态 */ setHoverMultiple(fullDate) { - let { - before, - after + //抖音小程序点击会触发hover事件,需要避免一下 + // #ifndef MP-TOUTIAO + if (!this.range || this.lastHover) return + const { + before } = this.multipleStatus - if (!this.range) return - if (this.lastHover) return - if (!before) { this.multipleStatus.before = fullDate } else { this.multipleStatus.after = fullDate - if (this.dateCompare(this.multipleStatus.before, this.multipleStatus.after)) { + if (dateCompare(this.multipleStatus.before, this.multipleStatus.after)) { this.multipleStatus.data = this.geDateAll(this.multipleStatus.before, this.multipleStatus.after); } else { this.multipleStatus.data = this.geDateAll(this.multipleStatus.after, this.multipleStatus.before); } } - this._getWeek(fullDate) + this.getWeeks(fullDate) + // #endif + } /** @@ -351,12 +310,12 @@ class Calendar { this.multipleStatus.before = before this.multipleStatus.after = after if (before && after) { - if (this.dateCompare(before, after)) { + if (dateCompare(before, after)) { this.multipleStatus.data = this.geDateAll(before, after); - this._getWeek(after) + this.getWeeks(after) } else { this.multipleStatus.data = this.geDateAll(after, before); - this._getWeek(before) + this.getWeeks(before) } } } @@ -365,46 +324,98 @@ class Calendar { * 获取每周数据 * @param {Object} dateData */ - _getWeek(dateData) { + getWeeks(dateData) { const { - fullDate, year, month, - date, - day - } = this.getDate(dateData) - let firstDay = new Date(year, month - 1, 1).getDay() - let currentDay = new Date(year, month, 0).getDate() - let dates = { - lastMonthDays: this._getLastMonthDays(firstDay, this.getDate(dateData)), // 上个月末尾几天 - currentMonthDys: this._currentMonthDys(currentDay, this.getDate(dateData)), // 本月天数 - nextMonthDays: [], // 下个月开始几天 - weeks: [] - } - let canlender = [] - const surplus = 42 - (dates.lastMonthDays.length + dates.currentMonthDys.length) - dates.nextMonthDays = this._getNextMonthDays(surplus, this.getDate(dateData)) - canlender = canlender.concat(dates.lastMonthDays, dates.currentMonthDys, dates.nextMonthDays) - let weeks = {} - // 拼接数组 上个月开始几天 + 本月天数+ 下个月开始几天 - for (let i = 0; i < canlender.length; i++) { - if (i % 7 === 0) { - weeks[parseInt(i / 7)] = new Array(7) + } = this.getDateObj(dateData) + + const preMonthDayAmount = new Date(year, month - 1, 1).getDay() + const preMonthDays = this.getPreMonthDays(preMonthDayAmount, this.getDateObj(dateData)) + + const currentMonthDayAmount = new Date(year, month, 0).getDate() + const currentMonthDays = this.getCurrentMonthDays(currentMonthDayAmount, this.getDateObj(dateData)) + + const nextMonthDayAmount = 42 - preMonthDayAmount - currentMonthDayAmount + const nextMonthDays = this._getNextMonthDays(nextMonthDayAmount, this.getDateObj(dateData)) + + const calendarDays = [...preMonthDays, ...currentMonthDays, ...nextMonthDays] + + const weeks = new Array(6) + for (let i = 0; i < calendarDays.length; i++) { + const index = Math.floor(i / 7) + if (!weeks[index]) { + weeks[index] = new Array(7) } - weeks[parseInt(i / 7)][i % 7] = canlender[i] + weeks[index][i % 7] = calendarDays[i] } - this.canlender = canlender + + this.calendar = calendarDays this.weeks = weeks } - - //静态方法 - // static init(date) { - // if (!this.instance) { - // this.instance = new Calendar(date); - // } - // return this.instance; - // } } +function getDateTime(date, hideSecond) { + return `${getDate(date)} ${getTime(date, hideSecond)}` +} -export default Calendar +function getDate(date) { + date = fixIosDateFormat(date) + date = new Date(date) + const year = date.getFullYear() + const month = date.getMonth() + 1 + const day = date.getDate() + return `${year}-${addZero(month)}-${addZero(day)}` +} + +function getTime(date, hideSecond) { + date = fixIosDateFormat(date) + date = new Date(date) + const hour = date.getHours() + const minute = date.getMinutes() + const second = date.getSeconds() + return hideSecond ? `${addZero(hour)}:${addZero(minute)}` : `${addZero(hour)}:${addZero(minute)}:${addZero(second)}` +} + +function addZero(num) { + if (num < 10) { + num = `0${num}` + } + return num +} + +function getDefaultSecond(hideSecond) { + return hideSecond ? '00:00' : '00:00:00' +} + +function dateCompare(startDate, endDate) { + startDate = new Date(fixIosDateFormat(typeof startDate === 'string' ? startDate.trim() : startDate)) + endDate = new Date(fixIosDateFormat(typeof endDate === 'string' ? endDate.trim() : endDate)) + return startDate <= endDate +} + +function checkDate(date) { + const dateReg = /((19|20)\d{2})(-|\/)\d{1,2}(-|\/)\d{1,2}/g + return date.match(dateReg) +} +//ios低版本15及以下,无法匹配 没有 ’秒‘ 时的情况,所以需要在末尾 秒 加上 问号 +const dateTimeReg = /^\d{4}-(0?[1-9]|1[012])-(0?[1-9]|[12][0-9]|3[01])( [0-5]?[0-9]:[0-5]?[0-9](:[0-5]?[0-9])?)?$/; + +function fixIosDateFormat(value) { + if (typeof value === 'string' && dateTimeReg.test(value)) { + value = value.replace(/-/g, '/') + } + return value +} + +export { + Calendar, + getDateTime, + getDate, + getTime, + addZero, + getDefaultSecond, + dateCompare, + checkDate, + fixIosDateFormat +} diff --git a/uni_modules/uni-datetime-picker/package.json b/uni_modules/uni-datetime-picker/package.json index f7a2e6a..55b8155 100644 --- a/uni_modules/uni-datetime-picker/package.json +++ b/uni_modules/uni-datetime-picker/package.json @@ -1,7 +1,7 @@ { "id": "uni-datetime-picker", "displayName": "uni-datetime-picker 日期选择器", - "version": "2.2.11", + "version": "2.2.42", "description": "uni-datetime-picker 日期时间选择器,支持日历,支持范围选择", "keywords": [ "uni-datetime-picker", @@ -12,12 +12,14 @@ ], "repository": "https://github.com/dcloudio/uni-ui", "engines": { - "HBuilderX": "" + "HBuilderX": "", + "uni-app": "^4.07", + "uni-app-x": "" }, "directories": { "example": "../../temps/example_temps" }, -"dcloudext": { + "dcloudext": { "sale": { "regular": { "price": "0.00" @@ -35,53 +37,71 @@ "permissions": "无" }, "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", - "type": "component-vue" + "type": "component-vue", + "darkmode": "x", + "i18n": "x", + "widescreen": "x" }, "uni_modules": { "dependencies": [ - "uni-scss", - "uni-icons" - ], + "uni-scss", + "uni-icons" + ], "encrypt": [], "platforms": { "cloud": { - "tcb": "y", - "aliyun": "y" + "tcb": "x", + "aliyun": "x", + "alipay": "x" }, "client": { - "App": { - "app-vue": "y", - "app-nvue": "n" + "uni-app": { + "vue": { + "vue2": "√", + "vue3": "√" + }, + "web": { + "safari": "√", + "chrome": "√" + }, + "app": { + "vue": "√", + "nvue": "√", + "android": "√", + "ios": "√", + "harmony": "√" + }, + "mp": { + "weixin": "√", + "alipay": "√", + "toutiao": "√", + "baidu": "√", + "kuaishou": "-", + "jd": "-", + "harmony": "-", + "qq": "√", + "lark": "-" + }, + "quickapp": { + "huawei": "√", + "union": "√" + } }, - "H5-mobile": { - "Safari": "y", - "Android Browser": "y", - "微信浏览器(Android)": "y", - "QQ浏览器(Android)": "y" - }, - "H5-pc": { - "Chrome": "y", - "IE": "y", - "Edge": "y", - "Firefox": "y", - "Safari": "y" - }, - "小程序": { - "微信": "y", - "阿里": "y", - "百度": "y", - "字节跳动": "y", - "QQ": "y" - }, - "快应用": { - "华为": "u", - "联盟": "u" - }, - "Vue": { - "vue2": "y", - "vue3": "y" + "uni-app-x": { + "web": { + "safari": "-", + "chrome": "-" + }, + "app": { + "android": "-", + "ios": "-", + "harmony": "-" + }, + "mp": { + "weixin": "-" + } } } } } -} +} \ No newline at end of file diff --git a/uni_modules/uni-icons/changelog.md b/uni_modules/uni-icons/changelog.md index 6449885..62e7682 100644 --- a/uni_modules/uni-icons/changelog.md +++ b/uni_modules/uni-icons/changelog.md @@ -1,3 +1,25 @@ +## 2.0.12(2025-08-26) +- 优化 uni-app x 下 size 类型问题 +## 2.0.11(2025-08-18) +- 修复 图标点击事件返回 +## 2.0.9(2024-01-12) +fix: 修复图标大小默认值错误的问题 +## 2.0.8(2023-12-14) +- 修复 项目未使用 ts 情况下,打包报错的bug +## 2.0.7(2023-12-14) +- 修复 size 属性为 string 时,不加单位导致尺寸异常的bug +## 2.0.6(2023-12-11) +- 优化 兼容老版本icon类型,如 top ,bottom 等 +## 2.0.5(2023-12-11) +- 优化 兼容老版本icon类型,如 top ,bottom 等 +## 2.0.4(2023-12-06) +- 优化 uni-app x 下示例项目图标排序 +## 2.0.3(2023-12-06) +- 修复 nvue下引入组件报错的bug +## 2.0.2(2023-12-05) +-优化 size 属性支持单位 +## 2.0.1(2023-12-05) +- 新增 uni-app x 支持定义图标 ## 1.3.5(2022-01-24) - 优化 size 属性可以传入不带单位的字符串数值 ## 1.3.4(2022-01-24) diff --git a/uni_modules/uni-icons/components/uni-icons/uni-icons.uvue b/uni_modules/uni-icons/components/uni-icons/uni-icons.uvue new file mode 100644 index 0000000..d2ef35a --- /dev/null +++ b/uni_modules/uni-icons/components/uni-icons/uni-icons.uvue @@ -0,0 +1,91 @@ + + + + + diff --git a/uni_modules/uni-icons/components/uni-icons/uni-icons.vue b/uni_modules/uni-icons/components/uni-icons/uni-icons.vue index a87f68e..a8a7332 100644 --- a/uni_modules/uni-icons/components/uni-icons/uni-icons.vue +++ b/uni_modules/uni-icons/components/uni-icons/uni-icons.vue @@ -1,24 +1,28 @@ -