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 @@
-
-
-
-
-
-
-
- 工程名称
- {{ device.engineeringName }}
-
-
- 项目名称
- {{ device.projectName }}
-
-
- 调试阶段
- {{ device.process == 2 ? '功能调试' : '出厂调试' }}
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+ 工程名称
+ {{ device.engineeringName }}
+
+
+ 项目名称
+ {{ device.projectName }}
+
+
+ 调试阶段
+ {{ device.process == 2 ? '功能调试' : '出厂调试' }}
+
+
+
+
+
+
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 @@
+
+
+
+
+
+ 取消
+ {{ title }}
+ 确定
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 @@
+
+
+
+
+
+ {{ year + '-' + season }}
+ {{ year + (year ? '年' : '') + (onlyYear ? '' : season) }}
+ 请选择时间
+
+
+
+
+
+
+
+
+
\ 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 @@
+
+
+
+
+
+
+
+
+ 监测点名称:
+
+
+
+ 所属工程:{{ engineeringName }}
+
+
+ 所属项目:{{ equipmentName }}
+
+
+
+ 通讯状态:{{ runStatus == 1 ? '离线' : '在线' }}
+
+
+
+
+
+
+
+
+ {{ realTime }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 电压有效值
+
+
+
+
+ 基波电压/电流
幅值(相位)
+
+
+
+
+
+
+
+
+
+
+
+ 电压有效值
+
+
+
+
+
+
+
+
+ {{ value.name }}
+ {{ value.A }}
+ {{ value.B }}
+ {{ value.C }}
+
+
+
+
+
+
+
+
+
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 @@
-
-
-
-
-
- 基本信息
-
- 名称:监测网关
- 项目:XXX项目1
-
-
- 设备型号:PQS-882
- 版本号:v1.0.0
-
- 设备列表
-
-
-
-
-
-
-
-
-
-
-
-
\ 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 @@
+
+
+
+
+
+
+
+ 全选
+
+
+
+
+
+ 共 {{ store.total }} 条事件 | 已选择 {{ checkedTotal }} 条事件
+
+
+ {{ array[sort] }}排序
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 发生时间:{{ item.startTime }},幅值:{{ item.evtParamVVaDepth }},持续时间:{{
+ item.evtParamTm
+ }},相别:{{ item.evtParamPhase }}
+
+
+
+
+
+
+
+
+
+
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 @@
-
+
-
@@ -102,7 +91,7 @@
diff --git a/pages/index/comp/engineering.vue b/pages/index/comp/engineering.vue
new file mode 100644
index 0000000..a59724e
--- /dev/null
+++ b/pages/index/comp/engineering.vue
@@ -0,0 +1,224 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/index/comp/indexGongCheng.vue b/pages/index/comp/indexGongCheng.vue
index bf48026..576a110 100644
--- a/pages/index/comp/indexGongCheng.vue
+++ b/pages/index/comp/indexGongCheng.vue
@@ -1,24 +1,38 @@
-
-
- 所有工程设备统计
-
-
-
- 当前工程设备统计
+
+
+ 所有工程设备统计
+
+
+
+
-
-
-
-
-
-
-
+ -->
+ 常用功能
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/index/comp/indexYunWei.vue b/pages/index/comp/indexYunWei.vue
index 0fc5610..eb86979 100644
--- a/pages/index/comp/indexYunWei.vue
+++ b/pages/index/comp/indexYunWei.vue
@@ -1,122 +1,122 @@
-
-
-
- 所有工程设备统计
-
-
-
- 当前工程设备统计
-
-
-
-
-
+
+
+
+ 所有工程设备统计
+
+
+
+ 当前工程设备统计
+
+
+
+
+
diff --git a/pages/index/comp/steadyState.vue b/pages/index/comp/steadyState.vue
new file mode 100644
index 0000000..f5cfc73
--- /dev/null
+++ b/pages/index/comp/steadyState.vue
@@ -0,0 +1,124 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 频率偏差越限111次
+ 不平衡度越限3次
+ 电压畸变率越限5次
+ 偶次电压越限5次
+
+
+ 下载报告
+
+
+
+
+
+
+
+
+
diff --git a/pages/index/comp/transient.vue b/pages/index/comp/transient.vue
new file mode 100644
index 0000000..44bb394
--- /dev/null
+++ b/pages/index/comp/transient.vue
@@ -0,0 +1,179 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.status == 1 ? '已完成' : '未完成' }}
+
+
+
+
+
+ 申请人:xxx
+ 电话号码:18888888888
+
+
+
+
+
+ {{ item.status == 1 ? '下载报告' : '生成报告' }}
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/index/index.vue b/pages/index/index.vue
index b044853..f3b2c7a 100644
--- a/pages/index/index.vue
+++ b/pages/index/index.vue
@@ -16,9 +16,18 @@
{{ select.engineeringName || emptyEngineeringName }}
+ >{{
+ userInfo.authorities === 'engineering_user'
+ ? '创建工程'
+ : select.engineeringName || emptyEngineeringName
+ }}
-
+
@@ -32,7 +41,13 @@
-
+
+
+ 工程列表
+
+
+
+
设备列表
@@ -47,6 +62,7 @@ import ZhuYongHu from './comp/indexZhuYongHu.vue'
import ZhuanZhi from './comp/indexZhuanZhi.vue'
import YouKe from './comp/indexYouKe.vue'
import Device from './comp/device.vue'
+import Engineering from './comp/engineering.vue'
import list from '../../common/js/list'
import { getDevCount } from '../../common/api/device.js'
import { queryEngineering } from '@/common/api/engineering.js'
@@ -60,6 +76,7 @@ export default {
ZhuanZhi,
YouKe,
Device,
+ Engineering,
},
data() {
return {
@@ -88,7 +105,11 @@ export default {
},
methods: {
selectEngineering() {
- if (this.select.engineeringName) {
+ if (this.userInfo.authorities === 'engineering_user') {
+ uni.navigateTo({
+ url: '/pages/engineering/new',
+ })
+ } else if (this.select.engineeringName) {
uni.navigateTo({
url: '/pages/home/selectEngineering',
})
@@ -140,6 +161,7 @@ export default {
console.log(this.$refs.device, 'this.$refs.device')
this.$nextTick(() => {
this.$refs.device && this.$refs.device.init()
+ this.$refs.engineering && this.$refs.engineering.init()
})
}
this.$refs.gongCheng?.init()
@@ -175,7 +197,7 @@ export default {
if (messagePage) {
uni.setTabBarBadge({
index: 1,
- text:messagePage ? (messagePage > 99 ? '99+' : messagePage + '') : '',
+ text: messagePage ? (messagePage > 99 ? '99+' : messagePage + '') : '',
})
} else {
uni.removeTabBarBadge({
@@ -197,8 +219,10 @@ export default {
// #endif
})
},
+ // 动态配置导航栏按钮
},
onLoad() {
+ // 页面加载时,动态配置导航栏按钮
if (!uni.getStorageSync(this.$cacheKey.access_token)) {
uni.reLaunch({
url: '/pages/user/login',
@@ -216,7 +240,11 @@ export default {
}, 1000)
}
this.timer = setInterval(this.getDevCount, 1000 * 60) // 定时请求
- this.store = this.DataSource('/cs-device-boot/EquipmentDelivery/queryEquipmentByProject')
+
+ this.store =
+ uni.getStorageSync(this.$cacheKey.userInfo).authorities === 'engineering_user'
+ ? this.DataSource('/cs-harmonic-boot/homePage/getEngineeringHomePage')
+ : this.DataSource('/cs-device-boot/EquipmentDelivery/queryEquipmentByProject')
// #ifdef APP-PLUS
setTimeout(() => {
// 获取nav高度
diff --git a/pages/index/message1.vue b/pages/index/message1.vue
new file mode 100644
index 0000000..243ff75
--- /dev/null
+++ b/pages/index/message1.vue
@@ -0,0 +1,287 @@
+
+
+
+
+
+
+
+
+ {{ badgeCounts[index] > 99 ? '99+' : badgeCounts[index] }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/index/mine.vue b/pages/index/mine.vue
index 64a97f9..9616261 100644
--- a/pages/index/mine.vue
+++ b/pages/index/mine.vue
@@ -1,382 +1,383 @@
-
-
-
-
-
-
- 角色升级
-
-
-
-
-
-
-
- 扫一扫
-
-
-
-
- 工程管理
-
-
-
-
-
- 项目管理
-
-
-
-
- 反馈列表
-
-
-
-
-
-
- 推送通知设置
-
-
-
-
- 关注工程配置
-
-
-
-
- 调试内容配置
-
-
-
-
- 设置
-
-
-
-
-
-
-
-
-
-
-
-
- 相机权限使用说明:
- 用于相机扫描二维码!
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+ 角色升级
+
+
+
+
+
+
+
+ 扫一扫
+
+
+
+
+ 工程管理
+
+
+
+
+
+ 项目管理
+
+
+
+
+ 反馈列表
+
+
+
+
+
+
+ 推送通知设置
+
+
+
+
+ 关注工程配置
+
+
+
+
+
+ 暂态事件
+
+
+
+
+ 设置
+
+
+
+
+
+
+
+
+
+
+
+
+ 相机权限使用说明:
+ 用于相机扫描二维码!
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/index/report.vue b/pages/index/report.vue
new file mode 100644
index 0000000..eb757f6
--- /dev/null
+++ b/pages/index/report.vue
@@ -0,0 +1,171 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/message/messageDetail.vue b/pages/message/messageDetail.vue
index 3047840..d7caac5 100644
--- a/pages/message/messageDetail.vue
+++ b/pages/message/messageDetail.vue
@@ -1,91 +1,91 @@
-
-
-
-
-
- {{ detail.startTime }}
-
-
- 基础信息
- 设备名称:{{ detail.equipmentName }}
- 项目名称:{{ detail.projectName }}
- 工程名称:{{ detail.engineeringName }}
- 事件名称:{{ detail.showName }}
-
- {{ item.showName + ':' + (item.value == 3.1415926 ? '-' : item.value) + (item.unit || '') }}
-
-
-
- 瞬时波形图
-
- 暂无
-
-
- RMS波形图
-
- 暂无
-
-
-
-
-
-
+
+
+
+
+
+ {{ detail.startTime }}
+
+
+ 基础信息
+ 设备名称:{{ detail.equipmentName }}
+ 项目名称:{{ detail.projectName }}
+ 工程名称:{{ detail.engineeringName }}
+ 事件名称:{{ detail.showName }}
+
+ {{ item.showName + ':' + (item.value == 3.1415926 ? '-' : item.value) + (item.unit || '') }}
+
+
+
+ 瞬时波形图
+
+ 暂无
+
+
+ RMS波形图
+
+ 暂无
+
+
+
+
+
+
diff --git a/pages/message1/alarm.vue b/pages/message1/alarm.vue
new file mode 100644
index 0000000..0d1b28e
--- /dev/null
+++ b/pages/message1/alarm.vue
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/message1/comp/F47.vue b/pages/message1/comp/F47.vue
new file mode 100644
index 0000000..42d4119
--- /dev/null
+++ b/pages/message1/comp/F47.vue
@@ -0,0 +1,231 @@
+
+
+
+
+
+
+
+
+
diff --git a/pages/message1/comp/ITIC.vue b/pages/message1/comp/ITIC.vue
new file mode 100644
index 0000000..8e8402d
--- /dev/null
+++ b/pages/message1/comp/ITIC.vue
@@ -0,0 +1,341 @@
+
+
+
+
+
+
+
+
+
diff --git a/pages/message1/comp/alarmDetails.vue b/pages/message1/comp/alarmDetails.vue
new file mode 100644
index 0000000..f55b963
--- /dev/null
+++ b/pages/message1/comp/alarmDetails.vue
@@ -0,0 +1,134 @@
+
+
+
+
+
+ {{ detail.date }}
+
+
+ 终端告警列表
+
+
+
+
+
+ {{ item.devName }}
+
+ 告警次数: {{ item.warnCounts }} 次
+ 通讯中断: {{ item.interruptCounts }} 次
+
+
+
+
+
+
+ 项目名称:{{ item.projectName }}
+
+ 工程名称:{{ item.engineeringName }}
+
+
+ 通讯信息:
+
+ 通讯正常
+ 通讯中断{{ item.interruptCounts }}次,具体如下所示:{{
+ date
+ }}
+
+ 告警信息:
+
+ 暂无终端告警信息
+ 终端告警{{ item.warnCounts }}次,具体如下所示:
+ {{ val.warnEventTime + '发生' + val.warnEventDesc }}
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/message1/comp/preview.vue b/pages/message1/comp/preview.vue
new file mode 100644
index 0000000..71b5a45
--- /dev/null
+++ b/pages/message1/comp/preview.vue
@@ -0,0 +1,326 @@
+
+
+
+
+ ✕
+
+
+
+
+ ⬇️
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 当前缩放: {{ Math.round(scaleValue * 100) }}%
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/message1/comp/steadyStateDetails.vue b/pages/message1/comp/steadyStateDetails.vue
new file mode 100644
index 0000000..764bd79
--- /dev/null
+++ b/pages/message1/comp/steadyStateDetails.vue
@@ -0,0 +1,148 @@
+
+
+
+
+
+ {{ detail.statisticsDate }}
+
+
+ 基础信息
+ 监测点名称:{{ detail.lineName }}
+ 设备名称:{{ detail.devName }}
+ 项目名称:{{ detail.projectName }}
+ 工程名称:{{ detail.engineeringName }}
+
+ 越限详情:
+ {{ detail.overLimitDesc }}
+
+
+ 指标越限详情(仅显示较为严重的10次)
+
+
+
+
+
+
+ {{ value.statisticsTime }}
+ {{ value.valueType }}
+ {{ value.dataA }}
+ {{ value.dataB }}
+ {{ value.dataC }}
+ {{ value.dataT }}
+ {{ value.overLimitData }}
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/message1/comp/transientDetails.vue b/pages/message1/comp/transientDetails.vue
new file mode 100644
index 0000000..c5b9ab2
--- /dev/null
+++ b/pages/message1/comp/transientDetails.vue
@@ -0,0 +1,95 @@
+
+
+
+
+
+ {{ detail.startTime }}
+
+
+ 基础信息
+ 设备名称:{{ detail.equipmentName }}
+ 项目名称:{{ detail.projectName }}
+ 工程名称:{{ detail.engineeringName }}
+ 暂态类型:{{ detail.showName }}
+
+ {{ item.showName + ':' + (item.value == 3.1415926 ? '-' : item.value) + (item.unit || '') }}
+
+
+
+ 瞬时波形图
+
+ 暂无
+
+
+ RMS波形图
+
+ 暂无
+
+
+
+
+
+
diff --git a/pages/message1/index.scss b/pages/message1/index.scss
new file mode 100644
index 0000000..98e2315
--- /dev/null
+++ b/pages/message1/index.scss
@@ -0,0 +1,182 @@
+/* 整体容器:横向排列,间距均匀 */
+.statistics {
+ display: flex;
+ gap: 20rpx; /* 盒子之间的间距 */
+ /* 通用盒子样式 */
+ .box {
+ flex: 1; /* 四个盒子等分宽度 */
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ height: 130rpx;
+ background-color: #ffffff;
+ border-radius: 16rpx;
+ }
+
+ /* 第一个盒子的特殊样式(蓝色背景) */
+ .box:first-child {
+ flex: 1.7;
+ background-color: $uni-theme-color;
+ color: #ffffff;
+ }
+
+ /* 数字样式 */
+ .num {
+ font-size: 38rpx;
+ font-weight: 600;
+ line-height: 1.2;
+ margin-bottom: 8rpx;
+ }
+
+ /* 标签文字样式 */
+ .label {
+ font-size: 24rpx;
+ color: inherit; /* 继承父元素颜色,适配蓝色背景 */
+ }
+}
+/* 列表容器 */
+.event-list {
+ background-color: #f5f7fa;
+ box-sizing: border-box;
+ /* 通用项样式 */
+ /deep/ .uni-card:first-of-type {
+ margin-top: 0 !important;
+ }
+ /deep/ .uni-card {
+ padding: 0 !important;
+ }
+ /* 头部:图标 + 信息 + 操作 */
+ .event-header {
+ display: flex;
+ align-items: center;
+ margin-bottom: 10rpx;
+ }
+
+ /* 图标区域(按类型区分背景色) */
+ .event-icon {
+ position: relative;
+ width: 120rpx;
+ height: 120rpx;
+ border-radius: 12rpx;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ margin-right: 20rpx;
+ }
+ .badge1 {
+ position: absolute;
+ top: -10rpx;
+ right: -10rpx;
+ width: 20rpx;
+ height: 20rpx;
+ background-color: #ff3b30; /* 红色徽章 */
+
+ border-radius: 20rpx;
+ }
+ /* 电压暂降 - 蓝色系 */
+ .sag .event-icon {
+ background-color: #2563eb20;
+ }
+ /* 电压暂升 - 橙色系 */
+ .swell .event-icon {
+ background-color: #e6a23c20;
+ }
+ .interrupt .event-icon {
+ background-color: #90939920;
+ }
+ .event-icon image {
+ width: 48rpx;
+ height: 48rpx;
+ }
+
+ /* 信息区域 */
+ .event-info {
+ flex: 1;
+ }
+ .event-title {
+ display: flex;
+ align-items: center;
+ margin-bottom: 5rpx;
+ flex-wrap: wrap; /* 适配小屏,防止文字溢出 */
+ }
+ .event-id {
+ font-size: 15px;
+ font-weight: 700;
+ color: #333333;
+ margin-right: 16rpx;
+ }
+ /* 标签样式(按类型区分) */
+ .event-tag {
+ font-size: 20rpx;
+ padding: 0rpx 10rpx;
+ border-radius: 8rpx;
+ color: #ffffff;
+ height: 38rpx;
+ }
+ .sag-tag {
+ background-color: #ecf5ff;
+ color: #2563eb;
+ }
+ .swell-tag {
+ background-color: #fdf6ec;
+ color: #e6a23c;
+ }
+ .interrupt-tag {
+ background-color: #f4f4f5;
+ color: #909399;
+ }
+ /* 描述文本 */
+ .event-desc {
+ display: flex;
+ flex-direction: column;
+ gap: 8rpx;
+ }
+ .event-desc text {
+ font-size: 26rpx;
+ color: #666666;
+ line-height: 1.2;
+ }
+
+ /* 操作按钮 */
+ .event-action {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ color: #999999;
+ font-size: 40rpx;
+ /* 点击反馈 */
+ touch-action: manipulation;
+ }
+ .event-action:active {
+ color: #376cf3;
+ transform: scale(0.95);
+ }
+
+ /* 详情文本 */
+ .event-detail {
+ font-size: 24rpx;
+ color: #666666;
+ line-height: 1.5;
+ padding-top: 10rpx;
+ border-top: 1rpx solid #f0f0f0;
+ word-wrap: break-word; /* 自动换行,防止长文本溢出 */
+ }
+}
+.smallLabel {
+ padding: 0 20rpx 20rpx 20rpx;
+ display: flex;
+ align-items: center;
+ justify-content: flex-end;
+ .segmented-control {
+ flex: 1;
+ margin-right: 20rpx;
+ height: 58rpx;
+ }
+ .uni-input {
+
+ font-size: 24rpx;
+ color: #2563eb;
+ margin-right: 10rpx;
+ }
+}
diff --git a/pages/message1/run.vue b/pages/message1/run.vue
new file mode 100644
index 0000000..e7c9977
--- /dev/null
+++ b/pages/message1/run.vue
@@ -0,0 +1,127 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ 于{{ item.startTime }}发生{{ item.showName }}
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/message1/steadyState.vue b/pages/message1/steadyState.vue
new file mode 100644
index 0000000..0240384
--- /dev/null
+++ b/pages/message1/steadyState.vue
@@ -0,0 +1,174 @@
+
+
+
+
+
+
+ {{ item.value }}
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.overLimitDesc }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/message1/transient.vue b/pages/message1/transient.vue
new file mode 100644
index 0000000..e1b39d0
--- /dev/null
+++ b/pages/message1/transient.vue
@@ -0,0 +1,251 @@
+
+
+
+
+
+
+
+ {{
+ store &&
+ store.data &&
+ store.data.filter((k) => (item.key == '' ? item : k.showName == item.key)).length
+ }}
+ {{ item.label }}
+
+
+
+
+
+
+ {{ array[sort] }}排序
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 发生时间:{{ item.startTime }},幅值:{{ item.evtParamVVaDepth }},持续时间:{{
+ item.evtParamTm
+ }},相别:{{ item.evtParamPhase }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/mine/transientSetting.vue b/pages/mine/transientSetting.vue
new file mode 100644
index 0000000..599eb76
--- /dev/null
+++ b/pages/mine/transientSetting.vue
@@ -0,0 +1,125 @@
+
+
+
+
+ ITIC
+
+
+
+ F47
+
+
+
+
+
+
+
+
+
diff --git a/pages/zhuanzhi/warning.vue b/pages/zhuanzhi/warning.vue
index 3d7bdbb..5c6bacb 100644
--- a/pages/zhuanzhi/warning.vue
+++ b/pages/zhuanzhi/warning.vue
@@ -1,57 +1,57 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/static/background.png b/static/background.png
new file mode 100644
index 0000000..ae667b3
Binary files /dev/null and b/static/background.png differ
diff --git a/static/iconfont/iconfont.css b/static/iconfont/iconfont.css
new file mode 100644
index 0000000..fda8fc6
--- /dev/null
+++ b/static/iconfont/iconfont.css
@@ -0,0 +1,61 @@
+@font-face {
+ font-family: 'iconfont'; /* Project id 5126335 */
+ src: url('/static/iconfont/iconfont.ttf') format('truetype');
+}
+
+.iconfont {
+ font-family: "iconfont" !important;
+ font-size: 16px;
+ font-style: normal;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+.icon-zaixianjianceshebei:before {
+ content: "\e683";
+}
+
+.icon-shebei1:before {
+ content: "\e74b";
+}
+
+.icon-shebei2:before {
+ content: "\e68c";
+}
+
+.icon-paixu1:before {
+ content: "\e60c";
+}
+
+.icon-gongcheng:before {
+ content: "\e61d";
+}
+
+.icon-zhongduan1:before {
+ content: "\e6c2";
+}
+
+.icon-shangsheng:before {
+ content: "\e6cd";
+}
+
+.icon-xiajiang:before {
+ content: "\e799";
+}
+
+.icon-shebei:before {
+ content: "\e665";
+}
+
+.icon-zhongduan:before {
+ content: "\e6cf";
+}
+
+.icon-terminal-box-fill:before {
+ content: "\e776";
+}
+
+.icon-kouanjiancedian:before {
+ content: "\e672";
+}
+
diff --git a/static/iconfont/iconfont.ttf b/static/iconfont/iconfont.ttf
new file mode 100644
index 0000000..9840686
Binary files /dev/null and b/static/iconfont/iconfont.ttf differ
diff --git a/static/reportIco.png b/static/reportIco.png
new file mode 100644
index 0000000..ab683e8
Binary files /dev/null and b/static/reportIco.png differ
diff --git a/static/reportIco1.png b/static/reportIco1.png
new file mode 100644
index 0000000..b0c4766
Binary files /dev/null and b/static/reportIco1.png differ
diff --git a/static/rotate_left.svg b/static/rotate_left.svg
new file mode 100644
index 0000000..b8f84c6
--- /dev/null
+++ b/static/rotate_left.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/rotate_right.svg b/static/rotate_right.svg
new file mode 100644
index 0000000..9b6273b
--- /dev/null
+++ b/static/rotate_right.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/zoom_in.svg b/static/zoom_in.svg
new file mode 100644
index 0000000..11019a1
--- /dev/null
+++ b/static/zoom_in.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/zoom_out.svg b/static/zoom_out.svg
new file mode 100644
index 0000000..37f43ea
--- /dev/null
+++ b/static/zoom_out.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/uni.css b/uni.css
new file mode 100644
index 0000000..53b524f
--- /dev/null
+++ b/uni.css
@@ -0,0 +1,27 @@
+@charset "UTF-8";
+/**
+ * 这里是uni-app内置的常用样式变量
+ *
+ * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
+ * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
+ *
+ */
+/**
+ * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
+ *
+ * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
+ */
+/* 颜色变量 */
+/* 行为相关颜色 */
+/* 文字基本颜色 */
+/* 背景颜色 */
+/* 边框颜色 */
+/* 尺寸变量 */
+/* 文字尺寸 */
+/* 图片尺寸 */
+/* Border Radius */
+/* 水平间距 */
+/* 垂直间距 */
+/* 透明度 */
+/* 文章场景相关 */
+/* 全局配置 */
diff --git a/uni.scss b/uni.scss
index 331fa66..e1e07b2 100644
--- a/uni.scss
+++ b/uni.scss
@@ -13,42 +13,48 @@
*/
/* 颜色变量 */
+@import 'uview-ui/theme.scss'; // 核心样式依赖此文
-
+$u-primary: #376cf3;
+$u-warning: #e8b956;
+$u-success: #4cd964;
+$u-error: #dd524d;
+$u-info: #909399;
/* 行为相关颜色 */
+
$uni-color-primary: #007aff;
$uni-color-success: #4cd964;
$uni-color-warning: #f0ad4e;
$uni-color-error: #dd524d;
/* 文字基本颜色 */
-$uni-text-color:#333;//基本色
-$uni-text-color-inverse:#fff;//反色
-$uni-text-color-grey:#999;//辅助灰色,如加载更多的提示信息
+$uni-text-color: #333; //基本色
+$uni-text-color-inverse: #fff; //反色
+$uni-text-color-grey: #999; //辅助灰色,如加载更多的提示信息
$uni-text-color-placeholder: #808080;
-$uni-text-color-disable:#c0c0c0;
+$uni-text-color-disable: #c0c0c0;
/* 背景颜色 */
-$uni-bg-color:#ffffff;
-$uni-bg-color-grey:#f6f6f6;
-$uni-bg-color-hover:#f1f1f1;//点击状态颜色
-$uni-bg-color-mask:rgba(0, 0, 0, 0.4);//遮罩颜色
+$uni-bg-color: #ffffff;
+$uni-bg-color-grey: #f6f6f6;
+$uni-bg-color-hover: #f1f1f1; //点击状态颜色
+$uni-bg-color-mask: rgba(0, 0, 0, 0.4); //遮罩颜色
/* 边框颜色 */
-$uni-border-color:#c8c7cc;
+$uni-border-color: #c8c7cc;
/* 尺寸变量 */
/* 文字尺寸 */
-$uni-font-size-sm:12px;
-$uni-font-size-base:14px;
-$uni-font-size-lg:16;
+$uni-font-size-sm: 12px;
+$uni-font-size-base: 14px;
+$uni-font-size-lg: 16;
/* 图片尺寸 */
-$uni-img-size-sm:20px;
-$uni-img-size-base:26px;
-$uni-img-size-lg:40px;
+$uni-img-size-sm: 20px;
+$uni-img-size-base: 26px;
+$uni-img-size-lg: 40px;
/* Border Radius */
$uni-border-radius-sm: 2px;
@@ -70,17 +76,16 @@ $uni-spacing-col-lg: 12px;
$uni-opacity-disabled: 0.3; // 组件禁用态的透明度
/* 文章场景相关 */
-$uni-color-title: #2C405A; // 文章标题颜色
-$uni-font-size-title:20px;
+$uni-color-title: #2c405a; // 文章标题颜色
+$uni-font-size-title: 20px;
$uni-color-subtitle: #555555; // 二级标题颜色
-$uni-font-size-subtitle:26px;
-$uni-color-paragraph: #3F536E; // 文章段落颜色
-$uni-font-size-paragraph:15px;
-
+$uni-font-size-subtitle: 26px;
+$uni-color-paragraph: #3f536e; // 文章段落颜色
+$uni-font-size-paragraph: 15px;
/* 全局配置 */
$uni-theme-color: #376cf3; // 全局主题色
$uni-theme-yellow: #e8b956; // 全局主题色
$uni-theme-white: #fff; // 全局主题色
-$uni-theme-radius: 12rpx; // 全局主题色
\ No newline at end of file
+$uni-theme-radius: 12rpx; // 全局主题色
diff --git a/uni_modules/uni-collapse/changelog.md b/uni_modules/uni-collapse/changelog.md
new file mode 100644
index 0000000..310821e
--- /dev/null
+++ b/uni_modules/uni-collapse/changelog.md
@@ -0,0 +1,48 @@
+## 1.4.8(2025-09-16)
+- 修复 modelValue 修改会两次触发 change 事件的 Bug
+## 1.4.7(2025-09-11)
+- 修复 modelValue 修改不会触发更新的 Bug
+## 1.4.6(2025-09-02)
+- 修复 modelValue 修改不会触发 change 事件的 Bug
+
+## 1.4.5(2025-09-02)
+- 修复 非手风琴模式 不能设置 modeValue 为 [] 的 Bug (question/205130)
+
+## 1.4.4(2024-03-20)
+- 修复 titleBorder类型修正
+## 1.4.3(2022-01-25)
+- 修复 初始化的时候 ,open 属性失效的bug
+## 1.4.2(2022-01-21)
+- 修复 微信小程序resize后组件收起的bug
+## 1.4.1(2021-11-22)
+- 修复 vue3中个别scss变量无法找到的问题
+## 1.4.0(2021-11-19)
+- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource)
+- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-collapse](https://uniapp.dcloud.io/component/uniui/uni-collapse)
+## 1.3.3(2021-08-17)
+- 优化 show-arrow 属性默认为true
+## 1.3.2(2021-08-17)
+- 新增 show-arrow 属性,控制是否显示右侧箭头
+## 1.3.1(2021-07-30)
+- 优化 vue3下小程序事件警告的问题
+## 1.3.0(2021-07-30)
+- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834)
+## 1.2.2(2021-07-21)
+- 修复 由1.2.0版本引起的 change 事件返回 undefined 的Bug
+## 1.2.1(2021-07-21)
+- 优化 组件示例
+## 1.2.0(2021-07-21)
+- 新增 组件折叠动画
+- 新增 value\v-model 属性 ,动态修改面板折叠状态
+- 新增 title 插槽 ,可定义面板标题
+- 新增 border 属性 ,显示隐藏面板内容分隔线
+- 新增 title-border 属性 ,显示隐藏面板标题分隔线
+- 修复 resize 方法失效的Bug
+- 修复 change 事件返回参数不正确的Bug
+- 优化 H5、App 平台自动更具内容更新高度,无需调用 reszie() 方法
+## 1.1.7(2021-05-12)
+- 新增 组件示例地址
+## 1.1.6(2021-02-05)
+- 优化 组件引用关系,通过uni_modules引用组件
+## 1.1.5(2021-02-05)
+- 调整为uni_modules目录规范
\ No newline at end of file
diff --git a/uni_modules/uni-collapse/components/uni-collapse-item/uni-collapse-item.vue b/uni_modules/uni-collapse/components/uni-collapse-item/uni-collapse-item.vue
new file mode 100644
index 0000000..63d30e3
--- /dev/null
+++ b/uni_modules/uni-collapse/components/uni-collapse-item/uni-collapse-item.vue
@@ -0,0 +1,402 @@
+
+
+
+
+
+
+
+
+ {{ title }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/uni_modules/uni-collapse/components/uni-collapse/uni-collapse.vue b/uni_modules/uni-collapse/components/uni-collapse/uni-collapse.vue
new file mode 100644
index 0000000..c69921e
--- /dev/null
+++ b/uni_modules/uni-collapse/components/uni-collapse/uni-collapse.vue
@@ -0,0 +1,147 @@
+
+
+
+
+
+
+
diff --git a/uni_modules/uni-collapse/package.json b/uni_modules/uni-collapse/package.json
new file mode 100644
index 0000000..cc9ccac
--- /dev/null
+++ b/uni_modules/uni-collapse/package.json
@@ -0,0 +1,106 @@
+{
+ "id": "uni-collapse",
+ "displayName": "uni-collapse 折叠面板",
+ "version": "1.4.8",
+ "description": "Collapse 组件,可以折叠 / 展开的内容区域。",
+ "keywords": [
+ "uni-ui",
+ "折叠",
+ "折叠面板",
+ "手风琴"
+],
+ "repository": "https://github.com/dcloudio/uni-ui",
+ "engines": {
+ "HBuilderX": "",
+ "uni-app": "^4.07",
+ "uni-app-x": ""
+ },
+ "directories": {
+ "example": "../../temps/example_temps"
+ },
+ "dcloudext": {
+ "sale": {
+ "regular": {
+ "price": "0.00"
+ },
+ "sourcecode": {
+ "price": "0.00"
+ }
+ },
+ "contact": {
+ "qq": ""
+ },
+ "declaration": {
+ "ads": "无",
+ "data": "无",
+ "permissions": "无"
+ },
+ "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui",
+ "type": "component-vue",
+ "darkmode": "x",
+ "i18n": "x",
+ "widescreen": "x"
+ },
+ "uni_modules": {
+ "dependencies": [
+ "uni-scss",
+ "uni-icons"
+ ],
+ "encrypt": [],
+ "platforms": {
+ "cloud": {
+ "tcb": "x",
+ "aliyun": "x",
+ "alipay": "x"
+ },
+ "client": {
+ "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": "√"
+ }
+ },
+ "uni-app-x": {
+ "web": {
+ "safari": "-",
+ "chrome": "-"
+ },
+ "app": {
+ "android": "-",
+ "ios": "-",
+ "harmony": "-"
+ },
+ "mp": {
+ "weixin": "-"
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/uni_modules/uni-collapse/readme.md b/uni_modules/uni-collapse/readme.md
new file mode 100644
index 0000000..bc758eb
--- /dev/null
+++ b/uni_modules/uni-collapse/readme.md
@@ -0,0 +1,12 @@
+
+
+## Collapse 折叠面板
+> **组件名:uni-collapse**
+> 代码块: `uCollapse`
+> 关联组件:`uni-collapse-item`、`uni-icons`。
+
+
+折叠面板用来折叠/显示过长的内容或者是列表。通常是在多内容分类项使用,折叠不重要的内容,显示重要内容。点击可以展开折叠部分。
+
+### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-collapse)
+#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839
\ No newline at end of file
diff --git a/uni_modules/uni-datetime-picker/changelog.md b/uni_modules/uni-datetime-picker/changelog.md
index 9f09862..1eee75e 100644
--- a/uni_modules/uni-datetime-picker/changelog.md
+++ b/uni_modules/uni-datetime-picker/changelog.md
@@ -1,41 +1,111 @@
+## 2.2.42(2025-08-20)
+- 修复 datetime-picker 小程序样式警告
+## 2.2.41(2025-08-20)
+- 修复 uni-datetime-picker组件时间对比报错问题
+## 2.2.40(2025-04-14)
+- 修复 绑定字符串值的时,日历面板选中状态未重置到默认值的问题
+## 2.2.39(2025-04-14)
+- 修复 在 iOS 微信小程序上type='daterange'时,传入'YYYY-MM-DD'格式不生效的问题
+
+## 2.2.38(2024-10-15)
+- 修复 微信小程序中的getSystemInfo警告
+## 2.2.35(2024-09-21)
+- 修复 没有选中日期时点击确定直接报错的Bug [详情](https://ask.dcloud.net.cn/question/198168)
+## 2.2.34(2024-04-24)
+- 新增 日期点击事件,在点击日期时会触发该事件。
+## 2.2.33(2024-04-15)
+- 修复 抖音小程序事件传递失效bug
+## 2.2.32(2024-02-20)
+- 修复 日历的close事件触发异常的bug [详情](https://github.com/dcloudio/uni-ui/issues/844)
+## 2.2.31(2024-02-20)
+- 修复 h5平台 右边日历的月份默认+1的bug [详情](https://github.com/dcloudio/uni-ui/issues/841)
+## 2.2.30(2024-01-31)
+- 修复 隐藏“秒”时,在IOS15及以下版本时出现 结束时间在开始时间之前 的bug [详情](https://github.com/dcloudio/uni-ui/issues/788)
+## 2.2.29(2024-01-20)
+- 新增 show事件,弹窗弹出时触发该事件 [详情](https://github.com/dcloudio/uni-app/issues/4694)
+## 2.2.28(2024-01-18)
+- 去除 noChange事件,当进行日期范围选择时,若只选了一天,则开始结束日期都为同一天 [详情](https://github.com/dcloudio/uni-ui/issues/815)
+## 2.2.27(2024-01-10)
+- 优化 增加noChange事件,当进行日期范围选择时,若有空值,则触发该事件 [详情](https://github.com/dcloudio/uni-ui/issues/815)
+## 2.2.26(2024-01-08)
+- 修复 字节小程序时间选择范围器失效问题 [详情](https://github.com/dcloudio/uni-ui/issues/834)
+## 2.2.25(2023-10-18)
+- 修复 PC端初次修改时间,开始时间未更新的Bug [详情](https://github.com/dcloudio/uni-ui/issues/737)
+## 2.2.24(2023-06-02)
+- 修复 部分情况修改时间,开始、结束时间显示异常的Bug [详情](https://ask.dcloud.net.cn/question/171146)
+- 优化 当前月可以选择上月、下月的日期的Bug
+## 2.2.23(2023-05-02)
+- 修复 部分情况修改时间,开始时间未更新的Bug [详情](https://github.com/dcloudio/uni-ui/issues/737)
+- 修复 部分平台及设备第一次点击无法显示弹框的Bug
+- 修复 ios 日期格式未补零显示及使用异常的Bug [详情](https://ask.dcloud.net.cn/question/162979)
+## 2.2.22(2023-03-30)
+- 修复 日历 picker 修改年月后,自动选中当月1日的Bug [详情](https://ask.dcloud.net.cn/question/165937)
+- 修复 小程序端 低版本 ios NaN的Bug [详情](https://ask.dcloud.net.cn/question/162979)
+## 2.2.21(2023-02-20)
+- 修复 firefox 浏览器显示区域点击无法拉起日历弹框的Bug [详情](https://ask.dcloud.net.cn/question/163362)
+## 2.2.20(2023-02-17)
+- 优化 值为空依然选中当天问题
+- 优化 提供 default-value 属性支持配置选择器打开时默认显示的时间
+- 优化 非范围选择未选择日期时间,点击确认按钮选中当前日期时间
+- 优化 字节小程序日期时间范围选择,底部日期换行的Bug
+## 2.2.19(2023-02-09)
+- 修复 2.2.18 引起范围选择配置 end 选择无效的Bug [详情](https://github.com/dcloudio/uni-ui/issues/686)
+## 2.2.18(2023-02-08)
+- 修复 移动端范围选择change事件触发异常的Bug [详情](https://github.com/dcloudio/uni-ui/issues/684)
+- 优化 PC端输入日期格式错误时返回当前日期时间
+- 优化 PC端输入日期时间超出 start、end 限制的Bug
+- 优化 移动端日期时间范围用法时间展示不完整问题
+## 2.2.17(2023-02-04)
+- 修复 小程序端绑定 Date 类型报错的Bug [详情](https://github.com/dcloudio/uni-ui/issues/679)
+- 修复 vue3 time-picker 无法显示绑定时分秒的Bug
+## 2.2.16(2023-02-02)
+- 修复 字节小程序报错的Bug
+## 2.2.15(2023-02-02)
+- 修复 某些情况切换月份错误的Bug
+## 2.2.14(2023-01-30)
+- 修复 某些情况切换月份错误的Bug [详情](https://ask.dcloud.net.cn/question/162033)
+## 2.2.13(2023-01-10)
+- 修复 多次加载组件造成内存占用的Bug
+## 2.2.12(2022-12-01)
+- 修复 vue3 下 i18n 国际化初始值不正确的Bug
## 2.2.11(2022-09-19)
-- 修复,支付宝小程序样式错乱,[详情](https://github.com/dcloudio/uni-app/issues/3861)
+- 修复 支付宝小程序样式错乱的Bug [详情](https://github.com/dcloudio/uni-app/issues/3861)
## 2.2.10(2022-09-19)
-- 修复,反向选择日期范围,日期显示异常,[详情](https://ask.dcloud.net.cn/question/153401?item_id=212892&rf=false)
+- 修复 反向选择日期范围,日期显示异常的Bug [详情](https://ask.dcloud.net.cn/question/153401?item_id=212892&rf=false)
## 2.2.9(2022-09-16)
- 可以使用 uni-scss 控制主题色
## 2.2.8(2022-09-08)
-- 修复 close事件无效的 bug
+- 修复 close事件无效的Bug
## 2.2.7(2022-09-05)
-- 修复 移动端 maskClick 无效的 bug,详见:[https://ask.dcloud.net.cn/question/140824?item_id=209458&rf=false](https://ask.dcloud.net.cn/question/140824?item_id=209458&rf=false)
+- 修复 移动端 maskClick 无效的Bug [详情](https://ask.dcloud.net.cn/question/140824)
## 2.2.6(2022-06-30)
- 优化 组件样式,调整了组件图标大小、高度、颜色等,与uni-ui风格保持一致
## 2.2.5(2022-06-24)
-- 修复 日历顶部年月及底部确认未国际化 bug
+- 修复 日历顶部年月及底部确认未国际化的Bug
## 2.2.4(2022-03-31)
-- 修复 Vue3 下动态赋值,单选类型未响应的 bug
+- 修复 Vue3 下动态赋值,单选类型未响应的Bug
## 2.2.3(2022-03-28)
-- 修复 Vue3 下动态赋值未响应的 bug
+- 修复 Vue3 下动态赋值未响应的Bug
## 2.2.2(2021-12-10)
-- 修复 clear-icon 属性在小程序平台不生效的 bug
+- 修复 clear-icon 属性在小程序平台不生效的Bug
## 2.2.1(2021-12-10)
-- 修复 日期范围选在小程序平台,必须多点击一次才能取消选中状态的 bug
+- 修复 日期范围选在小程序平台,必须多点击一次才能取消选中状态的Bug
## 2.2.0(2021-11-19)
-- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource)
-- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-datetime-picker](https://uniapp.dcloud.io/component/uniui/uni-datetime-picker)
-## 2.1.5(2021-11-09)
+- 优化 组件UI,并提供设计资源 [详情](https://uniapp.dcloud.io/component/uniui/resource)
+- 文档迁移 [https://uniapp.dcloud.io/component/uniui/uni-datetime-picker](https://uniapp.dcloud.io/component/uniui/uni-datetime-picker)
+## 2.1.5(2021-11-09)
- 新增 提供组件设计资源,组件样式调整
## 2.1.4(2021-09-10)
-- 修复 hide-second 在移动端的 bug
-- 修复 单选赋默认值时,赋值日期未高亮的 bug
-- 修复 赋默认值时,移动端未正确显示时间的 bug
+- 修复 hide-second 在移动端的Bug
+- 修复 单选赋默认值时,赋值日期未高亮的Bug
+- 修复 赋默认值时,移动端未正确显示时间的Bug
## 2.1.3(2021-09-09)
- 新增 hide-second 属性,支持只使用时分,隐藏秒
## 2.1.2(2021-09-03)
- 优化 取消选中时(范围选)直接开始下一次选择, 避免多点一次
- 优化 移动端支持清除按钮,同时支持通过 ref 调用组件的 clear 方法
- 优化 调整字号大小,美化日历界面
-- 修复 因国际化导致的 placeholder 失效的 bug
+- 修复 因国际化导致的 placeholder 失效的Bug
## 2.1.1(2021-08-24)
- 新增 支持国际化
- 优化 范围选择器在 pc 端过宽的问题
@@ -43,50 +113,50 @@
- 新增 适配 vue3
## 2.0.19(2021-08-09)
- 新增 支持作为 uni-forms 子组件相关功能
-- 修复 在 uni-forms 中使用时,选择时间报 NAN 错误的 bug
+- 修复 在 uni-forms 中使用时,选择时间报 NAN 错误的Bug
## 2.0.18(2021-08-05)
-- 修复 type 属性动态赋值无效的 bug
+- 修复 type 属性动态赋值无效的Bug
- 修复 ‘确认’按钮被 tabbar 遮盖 bug
-- 修复 组件未赋值时范围选左、右日历相同的 bug
+- 修复 组件未赋值时范围选左、右日历相同的Bug
## 2.0.17(2021-08-04)
-- 修复 范围选未正确显示当前值的 bug
-- 修复 h5 平台(移动端)报错 'cale' of undefined 的 bug
+- 修复 范围选未正确显示当前值的Bug
+- 修复 h5 平台(移动端)报错 'cale' of undefined 的Bug
## 2.0.16(2021-07-21)
- 新增 return-type 属性支持返回 date 日期对象
## 2.0.15(2021-07-14)
-- 修复 单选日期类型,初始赋值后不在当前日历的 bug
+- 修复 单选日期类型,初始赋值后不在当前日历的Bug
- 新增 clearIcon 属性,显示框的清空按钮可配置显示隐藏(仅 pc 有效)
- 优化 移动端移除显示框的清空按钮,无实际用途
## 2.0.14(2021-07-14)
-- 修复 组件赋值为空,界面未更新的 bug
-- 修复 start 和 end 不能动态赋值的 bug
-- 修复 范围选类型,用户选择后再次选择右侧日历(结束日期)显示不正确的 bug
+- 修复 组件赋值为空,界面未更新的Bug
+- 修复 start 和 end 不能动态赋值的Bug
+- 修复 范围选类型,用户选择后再次选择右侧日历(结束日期)显示不正确的Bug
## 2.0.13(2021-07-08)
-- 修复 范围选择不能动态赋值的 bug
+- 修复 范围选择不能动态赋值的Bug
## 2.0.12(2021-07-08)
- 修复 范围选择的初始时间在一个月内时,造成无法选择的bug
## 2.0.11(2021-07-08)
- 优化 弹出层在超出视窗边缘定位不准确的问题
## 2.0.10(2021-07-08)
-- 修复 范围起始点样式的背景色与今日样式的字体前景色融合,导致日期字体看不清的 bug
+- 修复 范围起始点样式的背景色与今日样式的字体前景色融合,导致日期字体看不清的Bug
- 优化 弹出层在超出视窗边缘被遮盖的问题
## 2.0.9(2021-07-07)
- 新增 maskClick 事件
-- 修复 特殊情况日历 rpx 布局错误的 bug,rpx -> px
+- 修复 特殊情况日历 rpx 布局错误的Bug,rpx -> px
- 修复 范围选择时清空返回值不合理的bug,['', ''] -> []
## 2.0.8(2021-07-07)
- 新增 日期时间显示框支持插槽
## 2.0.7(2021-07-01)
- 优化 添加 uni-icons 依赖
## 2.0.6(2021-05-22)
-- 修复 图标在小程序上不显示的 bug
+- 修复 图标在小程序上不显示的Bug
- 优化 重命名引用组件,避免潜在组件命名冲突
## 2.0.5(2021-05-20)
- 优化 代码目录扁平化
## 2.0.4(2021-05-12)
- 新增 组件示例地址
## 2.0.3(2021-05-10)
-- 修复 ios 下不识别 '-' 日期格式的 bug
+- 修复 ios 下不识别 '-' 日期格式的Bug
- 优化 pc 下弹出层添加边框和阴影
## 2.0.2(2021-05-08)
- 修复 在 admin 中获取弹出层定位错误的bug
@@ -97,7 +167,7 @@
> 注意:此版本不向后兼容,不再支持单独时间选择(type=time)及相关的 hide-second 属性(时间选可使用内置组件 picker)
## 1.0.6(2021-03-18)
- 新增 hide-second 属性,时间支持仅选择时、分
-- 修复 选择跟显示的日期不一样的 bug
-- 修复 chang事件触发2次的 bug
-- 修复 分、秒 end 范围错误的 bug
+- 修复 选择跟显示的日期不一样的Bug
+- 修复 chang事件触发2次的Bug
+- 修复 分、秒 end 范围错误的Bug
- 优化 更好的 nvue 适配
diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar-item.vue b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar-item.vue
index 222030d..8f3c461 100644
--- a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar-item.vue
+++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar-item.vue
@@ -13,10 +13,10 @@
'uni-calendar-item--after-checked':weeks.afterMultiple,
'uni-calendar-item--disable':weeks.disable,
}">
-
+
{{weeks.date}}
-
+
@@ -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 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{rangeSeparator}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ 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 @@
+
+
+ {{unicode}}
+
+
+
+
+
+
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 @@
-
-
- {{unicode}}
-
-
-
+
+
+ {{unicode}}
+
+
+
+
+
-
+
\ No newline at end of file
diff --git a/uni_modules/uni-icons/components/uni-icons/uniicons.css b/uni_modules/uni-icons/components/uni-icons/uniicons.css
index 2f56eab..0a6b6fe 100644
--- a/uni_modules/uni-icons/components/uni-icons/uniicons.css
+++ b/uni_modules/uni-icons/components/uni-icons/uniicons.css
@@ -1,3 +1,12 @@
+
+.uniui-cart-filled:before {
+ content: "\e6d0";
+}
+
+.uniui-gift-filled:before {
+ content: "\e6c4";
+}
+
.uniui-color:before {
content: "\e6cf";
}
@@ -58,10 +67,6 @@
content: "\e6c3";
}
-.uniui-gift-filled:before {
- content: "\e6c4";
-}
-
.uniui-fire-filled:before {
content: "\e6c5";
}
@@ -82,6 +87,18 @@
content: "\e698";
}
+.uniui-arrowthinleft:before {
+ content: "\e6d2";
+}
+
+.uniui-arrowthinup:before {
+ content: "\e6d3";
+}
+
+.uniui-arrowthindown:before {
+ content: "\e6d4";
+}
+
.uniui-back:before {
content: "\e6b9";
}
@@ -94,55 +111,43 @@
content: "\e6bb";
}
-.uniui-arrowthinright:before {
- content: "\e6bb";
-}
-
.uniui-arrow-left:before {
content: "\e6bc";
}
-.uniui-arrowthinleft:before {
- content: "\e6bc";
-}
-
.uniui-arrow-up:before {
content: "\e6bd";
}
-.uniui-arrowthinup:before {
- content: "\e6bd";
-}
-
.uniui-arrow-down:before {
content: "\e6be";
}
-.uniui-arrowthindown:before {
- content: "\e6be";
+.uniui-arrowthinright:before {
+ content: "\e6d1";
+}
+
+.uniui-down:before {
+ content: "\e6b8";
}
.uniui-bottom:before {
content: "\e6b8";
}
-.uniui-arrowdown:before {
- content: "\e6b8";
+.uniui-arrowright:before {
+ content: "\e6d5";
}
.uniui-right:before {
content: "\e6b5";
}
-.uniui-arrowright:before {
- content: "\e6b5";
-}
-
-.uniui-top:before {
+.uniui-up:before {
content: "\e6b6";
}
-.uniui-arrowup:before {
+.uniui-top:before {
content: "\e6b6";
}
@@ -150,8 +155,8 @@
content: "\e6b7";
}
-.uniui-arrowleft:before {
- content: "\e6b7";
+.uniui-arrowup:before {
+ content: "\e6d6";
}
.uniui-eye:before {
@@ -638,10 +643,6 @@
content: "\e627";
}
-.uniui-cart-filled:before {
- content: "\e629";
-}
-
.uniui-checkbox:before {
content: "\e62b";
}
diff --git a/uni_modules/uni-icons/components/uni-icons/uniicons.ttf b/uni_modules/uni-icons/components/uni-icons/uniicons.ttf
index 835f33b..14696d0 100644
Binary files a/uni_modules/uni-icons/components/uni-icons/uniicons.ttf and b/uni_modules/uni-icons/components/uni-icons/uniicons.ttf differ
diff --git a/uni_modules/uni-icons/components/uni-icons/uniicons_file.ts b/uni_modules/uni-icons/components/uni-icons/uniicons_file.ts
new file mode 100644
index 0000000..86318df
--- /dev/null
+++ b/uni_modules/uni-icons/components/uni-icons/uniicons_file.ts
@@ -0,0 +1,664 @@
+
+export type IconsData = {
+ id : string
+ name : string
+ font_family : string
+ css_prefix_text : string
+ description : string
+ glyphs : Array
+}
+
+export type IconsDataItem = {
+ font_class : string
+ unicode : string
+}
+
+
+export const fontData = [
+ {
+ "font_class": "arrow-down",
+ "unicode": "\ue6be"
+ },
+ {
+ "font_class": "arrow-left",
+ "unicode": "\ue6bc"
+ },
+ {
+ "font_class": "arrow-right",
+ "unicode": "\ue6bb"
+ },
+ {
+ "font_class": "arrow-up",
+ "unicode": "\ue6bd"
+ },
+ {
+ "font_class": "auth",
+ "unicode": "\ue6ab"
+ },
+ {
+ "font_class": "auth-filled",
+ "unicode": "\ue6cc"
+ },
+ {
+ "font_class": "back",
+ "unicode": "\ue6b9"
+ },
+ {
+ "font_class": "bars",
+ "unicode": "\ue627"
+ },
+ {
+ "font_class": "calendar",
+ "unicode": "\ue6a0"
+ },
+ {
+ "font_class": "calendar-filled",
+ "unicode": "\ue6c0"
+ },
+ {
+ "font_class": "camera",
+ "unicode": "\ue65a"
+ },
+ {
+ "font_class": "camera-filled",
+ "unicode": "\ue658"
+ },
+ {
+ "font_class": "cart",
+ "unicode": "\ue631"
+ },
+ {
+ "font_class": "cart-filled",
+ "unicode": "\ue6d0"
+ },
+ {
+ "font_class": "chat",
+ "unicode": "\ue65d"
+ },
+ {
+ "font_class": "chat-filled",
+ "unicode": "\ue659"
+ },
+ {
+ "font_class": "chatboxes",
+ "unicode": "\ue696"
+ },
+ {
+ "font_class": "chatboxes-filled",
+ "unicode": "\ue692"
+ },
+ {
+ "font_class": "chatbubble",
+ "unicode": "\ue697"
+ },
+ {
+ "font_class": "chatbubble-filled",
+ "unicode": "\ue694"
+ },
+ {
+ "font_class": "checkbox",
+ "unicode": "\ue62b"
+ },
+ {
+ "font_class": "checkbox-filled",
+ "unicode": "\ue62c"
+ },
+ {
+ "font_class": "checkmarkempty",
+ "unicode": "\ue65c"
+ },
+ {
+ "font_class": "circle",
+ "unicode": "\ue65b"
+ },
+ {
+ "font_class": "circle-filled",
+ "unicode": "\ue65e"
+ },
+ {
+ "font_class": "clear",
+ "unicode": "\ue66d"
+ },
+ {
+ "font_class": "close",
+ "unicode": "\ue673"
+ },
+ {
+ "font_class": "closeempty",
+ "unicode": "\ue66c"
+ },
+ {
+ "font_class": "cloud-download",
+ "unicode": "\ue647"
+ },
+ {
+ "font_class": "cloud-download-filled",
+ "unicode": "\ue646"
+ },
+ {
+ "font_class": "cloud-upload",
+ "unicode": "\ue645"
+ },
+ {
+ "font_class": "cloud-upload-filled",
+ "unicode": "\ue648"
+ },
+ {
+ "font_class": "color",
+ "unicode": "\ue6cf"
+ },
+ {
+ "font_class": "color-filled",
+ "unicode": "\ue6c9"
+ },
+ {
+ "font_class": "compose",
+ "unicode": "\ue67f"
+ },
+ {
+ "font_class": "contact",
+ "unicode": "\ue693"
+ },
+ {
+ "font_class": "contact-filled",
+ "unicode": "\ue695"
+ },
+ {
+ "font_class": "down",
+ "unicode": "\ue6b8"
+ },
+ {
+ "font_class": "bottom",
+ "unicode": "\ue6b8"
+ },
+ {
+ "font_class": "download",
+ "unicode": "\ue68d"
+ },
+ {
+ "font_class": "download-filled",
+ "unicode": "\ue681"
+ },
+ {
+ "font_class": "email",
+ "unicode": "\ue69e"
+ },
+ {
+ "font_class": "email-filled",
+ "unicode": "\ue69a"
+ },
+ {
+ "font_class": "eye",
+ "unicode": "\ue651"
+ },
+ {
+ "font_class": "eye-filled",
+ "unicode": "\ue66a"
+ },
+ {
+ "font_class": "eye-slash",
+ "unicode": "\ue6b3"
+ },
+ {
+ "font_class": "eye-slash-filled",
+ "unicode": "\ue6b4"
+ },
+ {
+ "font_class": "fire",
+ "unicode": "\ue6a1"
+ },
+ {
+ "font_class": "fire-filled",
+ "unicode": "\ue6c5"
+ },
+ {
+ "font_class": "flag",
+ "unicode": "\ue65f"
+ },
+ {
+ "font_class": "flag-filled",
+ "unicode": "\ue660"
+ },
+ {
+ "font_class": "folder-add",
+ "unicode": "\ue6a9"
+ },
+ {
+ "font_class": "folder-add-filled",
+ "unicode": "\ue6c8"
+ },
+ {
+ "font_class": "font",
+ "unicode": "\ue6a3"
+ },
+ {
+ "font_class": "forward",
+ "unicode": "\ue6ba"
+ },
+ {
+ "font_class": "gear",
+ "unicode": "\ue664"
+ },
+ {
+ "font_class": "gear-filled",
+ "unicode": "\ue661"
+ },
+ {
+ "font_class": "gift",
+ "unicode": "\ue6a4"
+ },
+ {
+ "font_class": "gift-filled",
+ "unicode": "\ue6c4"
+ },
+ {
+ "font_class": "hand-down",
+ "unicode": "\ue63d"
+ },
+ {
+ "font_class": "hand-down-filled",
+ "unicode": "\ue63c"
+ },
+ {
+ "font_class": "hand-up",
+ "unicode": "\ue63f"
+ },
+ {
+ "font_class": "hand-up-filled",
+ "unicode": "\ue63e"
+ },
+ {
+ "font_class": "headphones",
+ "unicode": "\ue630"
+ },
+ {
+ "font_class": "heart",
+ "unicode": "\ue639"
+ },
+ {
+ "font_class": "heart-filled",
+ "unicode": "\ue641"
+ },
+ {
+ "font_class": "help",
+ "unicode": "\ue679"
+ },
+ {
+ "font_class": "help-filled",
+ "unicode": "\ue674"
+ },
+ {
+ "font_class": "home",
+ "unicode": "\ue662"
+ },
+ {
+ "font_class": "home-filled",
+ "unicode": "\ue663"
+ },
+ {
+ "font_class": "image",
+ "unicode": "\ue670"
+ },
+ {
+ "font_class": "image-filled",
+ "unicode": "\ue678"
+ },
+ {
+ "font_class": "images",
+ "unicode": "\ue650"
+ },
+ {
+ "font_class": "images-filled",
+ "unicode": "\ue64b"
+ },
+ {
+ "font_class": "info",
+ "unicode": "\ue669"
+ },
+ {
+ "font_class": "info-filled",
+ "unicode": "\ue649"
+ },
+ {
+ "font_class": "left",
+ "unicode": "\ue6b7"
+ },
+ {
+ "font_class": "link",
+ "unicode": "\ue6a5"
+ },
+ {
+ "font_class": "list",
+ "unicode": "\ue644"
+ },
+ {
+ "font_class": "location",
+ "unicode": "\ue6ae"
+ },
+ {
+ "font_class": "location-filled",
+ "unicode": "\ue6af"
+ },
+ {
+ "font_class": "locked",
+ "unicode": "\ue66b"
+ },
+ {
+ "font_class": "locked-filled",
+ "unicode": "\ue668"
+ },
+ {
+ "font_class": "loop",
+ "unicode": "\ue633"
+ },
+ {
+ "font_class": "mail-open",
+ "unicode": "\ue643"
+ },
+ {
+ "font_class": "mail-open-filled",
+ "unicode": "\ue63a"
+ },
+ {
+ "font_class": "map",
+ "unicode": "\ue667"
+ },
+ {
+ "font_class": "map-filled",
+ "unicode": "\ue666"
+ },
+ {
+ "font_class": "map-pin",
+ "unicode": "\ue6ad"
+ },
+ {
+ "font_class": "map-pin-ellipse",
+ "unicode": "\ue6ac"
+ },
+ {
+ "font_class": "medal",
+ "unicode": "\ue6a2"
+ },
+ {
+ "font_class": "medal-filled",
+ "unicode": "\ue6c3"
+ },
+ {
+ "font_class": "mic",
+ "unicode": "\ue671"
+ },
+ {
+ "font_class": "mic-filled",
+ "unicode": "\ue677"
+ },
+ {
+ "font_class": "micoff",
+ "unicode": "\ue67e"
+ },
+ {
+ "font_class": "micoff-filled",
+ "unicode": "\ue6b0"
+ },
+ {
+ "font_class": "minus",
+ "unicode": "\ue66f"
+ },
+ {
+ "font_class": "minus-filled",
+ "unicode": "\ue67d"
+ },
+ {
+ "font_class": "more",
+ "unicode": "\ue64d"
+ },
+ {
+ "font_class": "more-filled",
+ "unicode": "\ue64e"
+ },
+ {
+ "font_class": "navigate",
+ "unicode": "\ue66e"
+ },
+ {
+ "font_class": "navigate-filled",
+ "unicode": "\ue67a"
+ },
+ {
+ "font_class": "notification",
+ "unicode": "\ue6a6"
+ },
+ {
+ "font_class": "notification-filled",
+ "unicode": "\ue6c1"
+ },
+ {
+ "font_class": "paperclip",
+ "unicode": "\ue652"
+ },
+ {
+ "font_class": "paperplane",
+ "unicode": "\ue672"
+ },
+ {
+ "font_class": "paperplane-filled",
+ "unicode": "\ue675"
+ },
+ {
+ "font_class": "person",
+ "unicode": "\ue699"
+ },
+ {
+ "font_class": "person-filled",
+ "unicode": "\ue69d"
+ },
+ {
+ "font_class": "personadd",
+ "unicode": "\ue69f"
+ },
+ {
+ "font_class": "personadd-filled",
+ "unicode": "\ue698"
+ },
+ {
+ "font_class": "personadd-filled-copy",
+ "unicode": "\ue6d1"
+ },
+ {
+ "font_class": "phone",
+ "unicode": "\ue69c"
+ },
+ {
+ "font_class": "phone-filled",
+ "unicode": "\ue69b"
+ },
+ {
+ "font_class": "plus",
+ "unicode": "\ue676"
+ },
+ {
+ "font_class": "plus-filled",
+ "unicode": "\ue6c7"
+ },
+ {
+ "font_class": "plusempty",
+ "unicode": "\ue67b"
+ },
+ {
+ "font_class": "pulldown",
+ "unicode": "\ue632"
+ },
+ {
+ "font_class": "pyq",
+ "unicode": "\ue682"
+ },
+ {
+ "font_class": "qq",
+ "unicode": "\ue680"
+ },
+ {
+ "font_class": "redo",
+ "unicode": "\ue64a"
+ },
+ {
+ "font_class": "redo-filled",
+ "unicode": "\ue655"
+ },
+ {
+ "font_class": "refresh",
+ "unicode": "\ue657"
+ },
+ {
+ "font_class": "refresh-filled",
+ "unicode": "\ue656"
+ },
+ {
+ "font_class": "refreshempty",
+ "unicode": "\ue6bf"
+ },
+ {
+ "font_class": "reload",
+ "unicode": "\ue6b2"
+ },
+ {
+ "font_class": "right",
+ "unicode": "\ue6b5"
+ },
+ {
+ "font_class": "scan",
+ "unicode": "\ue62a"
+ },
+ {
+ "font_class": "search",
+ "unicode": "\ue654"
+ },
+ {
+ "font_class": "settings",
+ "unicode": "\ue653"
+ },
+ {
+ "font_class": "settings-filled",
+ "unicode": "\ue6ce"
+ },
+ {
+ "font_class": "shop",
+ "unicode": "\ue62f"
+ },
+ {
+ "font_class": "shop-filled",
+ "unicode": "\ue6cd"
+ },
+ {
+ "font_class": "smallcircle",
+ "unicode": "\ue67c"
+ },
+ {
+ "font_class": "smallcircle-filled",
+ "unicode": "\ue665"
+ },
+ {
+ "font_class": "sound",
+ "unicode": "\ue684"
+ },
+ {
+ "font_class": "sound-filled",
+ "unicode": "\ue686"
+ },
+ {
+ "font_class": "spinner-cycle",
+ "unicode": "\ue68a"
+ },
+ {
+ "font_class": "staff",
+ "unicode": "\ue6a7"
+ },
+ {
+ "font_class": "staff-filled",
+ "unicode": "\ue6cb"
+ },
+ {
+ "font_class": "star",
+ "unicode": "\ue688"
+ },
+ {
+ "font_class": "star-filled",
+ "unicode": "\ue68f"
+ },
+ {
+ "font_class": "starhalf",
+ "unicode": "\ue683"
+ },
+ {
+ "font_class": "trash",
+ "unicode": "\ue687"
+ },
+ {
+ "font_class": "trash-filled",
+ "unicode": "\ue685"
+ },
+ {
+ "font_class": "tune",
+ "unicode": "\ue6aa"
+ },
+ {
+ "font_class": "tune-filled",
+ "unicode": "\ue6ca"
+ },
+ {
+ "font_class": "undo",
+ "unicode": "\ue64f"
+ },
+ {
+ "font_class": "undo-filled",
+ "unicode": "\ue64c"
+ },
+ {
+ "font_class": "up",
+ "unicode": "\ue6b6"
+ },
+ {
+ "font_class": "top",
+ "unicode": "\ue6b6"
+ },
+ {
+ "font_class": "upload",
+ "unicode": "\ue690"
+ },
+ {
+ "font_class": "upload-filled",
+ "unicode": "\ue68e"
+ },
+ {
+ "font_class": "videocam",
+ "unicode": "\ue68c"
+ },
+ {
+ "font_class": "videocam-filled",
+ "unicode": "\ue689"
+ },
+ {
+ "font_class": "vip",
+ "unicode": "\ue6a8"
+ },
+ {
+ "font_class": "vip-filled",
+ "unicode": "\ue6c6"
+ },
+ {
+ "font_class": "wallet",
+ "unicode": "\ue6b1"
+ },
+ {
+ "font_class": "wallet-filled",
+ "unicode": "\ue6c2"
+ },
+ {
+ "font_class": "weibo",
+ "unicode": "\ue68b"
+ },
+ {
+ "font_class": "weixin",
+ "unicode": "\ue691"
+ }
+] as IconsDataItem[]
+
+// export const fontData = JSON.parse(fontDataJson)
diff --git a/uni_modules/uni-icons/components/uni-icons/uniicons_file_vue.js b/uni_modules/uni-icons/components/uni-icons/uniicons_file_vue.js
new file mode 100644
index 0000000..49e42cd
--- /dev/null
+++ b/uni_modules/uni-icons/components/uni-icons/uniicons_file_vue.js
@@ -0,0 +1,649 @@
+
+export const fontData = [
+ {
+ "font_class": "arrow-down",
+ "unicode": "\ue6be"
+ },
+ {
+ "font_class": "arrow-left",
+ "unicode": "\ue6bc"
+ },
+ {
+ "font_class": "arrow-right",
+ "unicode": "\ue6bb"
+ },
+ {
+ "font_class": "arrow-up",
+ "unicode": "\ue6bd"
+ },
+ {
+ "font_class": "auth",
+ "unicode": "\ue6ab"
+ },
+ {
+ "font_class": "auth-filled",
+ "unicode": "\ue6cc"
+ },
+ {
+ "font_class": "back",
+ "unicode": "\ue6b9"
+ },
+ {
+ "font_class": "bars",
+ "unicode": "\ue627"
+ },
+ {
+ "font_class": "calendar",
+ "unicode": "\ue6a0"
+ },
+ {
+ "font_class": "calendar-filled",
+ "unicode": "\ue6c0"
+ },
+ {
+ "font_class": "camera",
+ "unicode": "\ue65a"
+ },
+ {
+ "font_class": "camera-filled",
+ "unicode": "\ue658"
+ },
+ {
+ "font_class": "cart",
+ "unicode": "\ue631"
+ },
+ {
+ "font_class": "cart-filled",
+ "unicode": "\ue6d0"
+ },
+ {
+ "font_class": "chat",
+ "unicode": "\ue65d"
+ },
+ {
+ "font_class": "chat-filled",
+ "unicode": "\ue659"
+ },
+ {
+ "font_class": "chatboxes",
+ "unicode": "\ue696"
+ },
+ {
+ "font_class": "chatboxes-filled",
+ "unicode": "\ue692"
+ },
+ {
+ "font_class": "chatbubble",
+ "unicode": "\ue697"
+ },
+ {
+ "font_class": "chatbubble-filled",
+ "unicode": "\ue694"
+ },
+ {
+ "font_class": "checkbox",
+ "unicode": "\ue62b"
+ },
+ {
+ "font_class": "checkbox-filled",
+ "unicode": "\ue62c"
+ },
+ {
+ "font_class": "checkmarkempty",
+ "unicode": "\ue65c"
+ },
+ {
+ "font_class": "circle",
+ "unicode": "\ue65b"
+ },
+ {
+ "font_class": "circle-filled",
+ "unicode": "\ue65e"
+ },
+ {
+ "font_class": "clear",
+ "unicode": "\ue66d"
+ },
+ {
+ "font_class": "close",
+ "unicode": "\ue673"
+ },
+ {
+ "font_class": "closeempty",
+ "unicode": "\ue66c"
+ },
+ {
+ "font_class": "cloud-download",
+ "unicode": "\ue647"
+ },
+ {
+ "font_class": "cloud-download-filled",
+ "unicode": "\ue646"
+ },
+ {
+ "font_class": "cloud-upload",
+ "unicode": "\ue645"
+ },
+ {
+ "font_class": "cloud-upload-filled",
+ "unicode": "\ue648"
+ },
+ {
+ "font_class": "color",
+ "unicode": "\ue6cf"
+ },
+ {
+ "font_class": "color-filled",
+ "unicode": "\ue6c9"
+ },
+ {
+ "font_class": "compose",
+ "unicode": "\ue67f"
+ },
+ {
+ "font_class": "contact",
+ "unicode": "\ue693"
+ },
+ {
+ "font_class": "contact-filled",
+ "unicode": "\ue695"
+ },
+ {
+ "font_class": "down",
+ "unicode": "\ue6b8"
+ },
+ {
+ "font_class": "bottom",
+ "unicode": "\ue6b8"
+ },
+ {
+ "font_class": "download",
+ "unicode": "\ue68d"
+ },
+ {
+ "font_class": "download-filled",
+ "unicode": "\ue681"
+ },
+ {
+ "font_class": "email",
+ "unicode": "\ue69e"
+ },
+ {
+ "font_class": "email-filled",
+ "unicode": "\ue69a"
+ },
+ {
+ "font_class": "eye",
+ "unicode": "\ue651"
+ },
+ {
+ "font_class": "eye-filled",
+ "unicode": "\ue66a"
+ },
+ {
+ "font_class": "eye-slash",
+ "unicode": "\ue6b3"
+ },
+ {
+ "font_class": "eye-slash-filled",
+ "unicode": "\ue6b4"
+ },
+ {
+ "font_class": "fire",
+ "unicode": "\ue6a1"
+ },
+ {
+ "font_class": "fire-filled",
+ "unicode": "\ue6c5"
+ },
+ {
+ "font_class": "flag",
+ "unicode": "\ue65f"
+ },
+ {
+ "font_class": "flag-filled",
+ "unicode": "\ue660"
+ },
+ {
+ "font_class": "folder-add",
+ "unicode": "\ue6a9"
+ },
+ {
+ "font_class": "folder-add-filled",
+ "unicode": "\ue6c8"
+ },
+ {
+ "font_class": "font",
+ "unicode": "\ue6a3"
+ },
+ {
+ "font_class": "forward",
+ "unicode": "\ue6ba"
+ },
+ {
+ "font_class": "gear",
+ "unicode": "\ue664"
+ },
+ {
+ "font_class": "gear-filled",
+ "unicode": "\ue661"
+ },
+ {
+ "font_class": "gift",
+ "unicode": "\ue6a4"
+ },
+ {
+ "font_class": "gift-filled",
+ "unicode": "\ue6c4"
+ },
+ {
+ "font_class": "hand-down",
+ "unicode": "\ue63d"
+ },
+ {
+ "font_class": "hand-down-filled",
+ "unicode": "\ue63c"
+ },
+ {
+ "font_class": "hand-up",
+ "unicode": "\ue63f"
+ },
+ {
+ "font_class": "hand-up-filled",
+ "unicode": "\ue63e"
+ },
+ {
+ "font_class": "headphones",
+ "unicode": "\ue630"
+ },
+ {
+ "font_class": "heart",
+ "unicode": "\ue639"
+ },
+ {
+ "font_class": "heart-filled",
+ "unicode": "\ue641"
+ },
+ {
+ "font_class": "help",
+ "unicode": "\ue679"
+ },
+ {
+ "font_class": "help-filled",
+ "unicode": "\ue674"
+ },
+ {
+ "font_class": "home",
+ "unicode": "\ue662"
+ },
+ {
+ "font_class": "home-filled",
+ "unicode": "\ue663"
+ },
+ {
+ "font_class": "image",
+ "unicode": "\ue670"
+ },
+ {
+ "font_class": "image-filled",
+ "unicode": "\ue678"
+ },
+ {
+ "font_class": "images",
+ "unicode": "\ue650"
+ },
+ {
+ "font_class": "images-filled",
+ "unicode": "\ue64b"
+ },
+ {
+ "font_class": "info",
+ "unicode": "\ue669"
+ },
+ {
+ "font_class": "info-filled",
+ "unicode": "\ue649"
+ },
+ {
+ "font_class": "left",
+ "unicode": "\ue6b7"
+ },
+ {
+ "font_class": "link",
+ "unicode": "\ue6a5"
+ },
+ {
+ "font_class": "list",
+ "unicode": "\ue644"
+ },
+ {
+ "font_class": "location",
+ "unicode": "\ue6ae"
+ },
+ {
+ "font_class": "location-filled",
+ "unicode": "\ue6af"
+ },
+ {
+ "font_class": "locked",
+ "unicode": "\ue66b"
+ },
+ {
+ "font_class": "locked-filled",
+ "unicode": "\ue668"
+ },
+ {
+ "font_class": "loop",
+ "unicode": "\ue633"
+ },
+ {
+ "font_class": "mail-open",
+ "unicode": "\ue643"
+ },
+ {
+ "font_class": "mail-open-filled",
+ "unicode": "\ue63a"
+ },
+ {
+ "font_class": "map",
+ "unicode": "\ue667"
+ },
+ {
+ "font_class": "map-filled",
+ "unicode": "\ue666"
+ },
+ {
+ "font_class": "map-pin",
+ "unicode": "\ue6ad"
+ },
+ {
+ "font_class": "map-pin-ellipse",
+ "unicode": "\ue6ac"
+ },
+ {
+ "font_class": "medal",
+ "unicode": "\ue6a2"
+ },
+ {
+ "font_class": "medal-filled",
+ "unicode": "\ue6c3"
+ },
+ {
+ "font_class": "mic",
+ "unicode": "\ue671"
+ },
+ {
+ "font_class": "mic-filled",
+ "unicode": "\ue677"
+ },
+ {
+ "font_class": "micoff",
+ "unicode": "\ue67e"
+ },
+ {
+ "font_class": "micoff-filled",
+ "unicode": "\ue6b0"
+ },
+ {
+ "font_class": "minus",
+ "unicode": "\ue66f"
+ },
+ {
+ "font_class": "minus-filled",
+ "unicode": "\ue67d"
+ },
+ {
+ "font_class": "more",
+ "unicode": "\ue64d"
+ },
+ {
+ "font_class": "more-filled",
+ "unicode": "\ue64e"
+ },
+ {
+ "font_class": "navigate",
+ "unicode": "\ue66e"
+ },
+ {
+ "font_class": "navigate-filled",
+ "unicode": "\ue67a"
+ },
+ {
+ "font_class": "notification",
+ "unicode": "\ue6a6"
+ },
+ {
+ "font_class": "notification-filled",
+ "unicode": "\ue6c1"
+ },
+ {
+ "font_class": "paperclip",
+ "unicode": "\ue652"
+ },
+ {
+ "font_class": "paperplane",
+ "unicode": "\ue672"
+ },
+ {
+ "font_class": "paperplane-filled",
+ "unicode": "\ue675"
+ },
+ {
+ "font_class": "person",
+ "unicode": "\ue699"
+ },
+ {
+ "font_class": "person-filled",
+ "unicode": "\ue69d"
+ },
+ {
+ "font_class": "personadd",
+ "unicode": "\ue69f"
+ },
+ {
+ "font_class": "personadd-filled",
+ "unicode": "\ue698"
+ },
+ {
+ "font_class": "personadd-filled-copy",
+ "unicode": "\ue6d1"
+ },
+ {
+ "font_class": "phone",
+ "unicode": "\ue69c"
+ },
+ {
+ "font_class": "phone-filled",
+ "unicode": "\ue69b"
+ },
+ {
+ "font_class": "plus",
+ "unicode": "\ue676"
+ },
+ {
+ "font_class": "plus-filled",
+ "unicode": "\ue6c7"
+ },
+ {
+ "font_class": "plusempty",
+ "unicode": "\ue67b"
+ },
+ {
+ "font_class": "pulldown",
+ "unicode": "\ue632"
+ },
+ {
+ "font_class": "pyq",
+ "unicode": "\ue682"
+ },
+ {
+ "font_class": "qq",
+ "unicode": "\ue680"
+ },
+ {
+ "font_class": "redo",
+ "unicode": "\ue64a"
+ },
+ {
+ "font_class": "redo-filled",
+ "unicode": "\ue655"
+ },
+ {
+ "font_class": "refresh",
+ "unicode": "\ue657"
+ },
+ {
+ "font_class": "refresh-filled",
+ "unicode": "\ue656"
+ },
+ {
+ "font_class": "refreshempty",
+ "unicode": "\ue6bf"
+ },
+ {
+ "font_class": "reload",
+ "unicode": "\ue6b2"
+ },
+ {
+ "font_class": "right",
+ "unicode": "\ue6b5"
+ },
+ {
+ "font_class": "scan",
+ "unicode": "\ue62a"
+ },
+ {
+ "font_class": "search",
+ "unicode": "\ue654"
+ },
+ {
+ "font_class": "settings",
+ "unicode": "\ue653"
+ },
+ {
+ "font_class": "settings-filled",
+ "unicode": "\ue6ce"
+ },
+ {
+ "font_class": "shop",
+ "unicode": "\ue62f"
+ },
+ {
+ "font_class": "shop-filled",
+ "unicode": "\ue6cd"
+ },
+ {
+ "font_class": "smallcircle",
+ "unicode": "\ue67c"
+ },
+ {
+ "font_class": "smallcircle-filled",
+ "unicode": "\ue665"
+ },
+ {
+ "font_class": "sound",
+ "unicode": "\ue684"
+ },
+ {
+ "font_class": "sound-filled",
+ "unicode": "\ue686"
+ },
+ {
+ "font_class": "spinner-cycle",
+ "unicode": "\ue68a"
+ },
+ {
+ "font_class": "staff",
+ "unicode": "\ue6a7"
+ },
+ {
+ "font_class": "staff-filled",
+ "unicode": "\ue6cb"
+ },
+ {
+ "font_class": "star",
+ "unicode": "\ue688"
+ },
+ {
+ "font_class": "star-filled",
+ "unicode": "\ue68f"
+ },
+ {
+ "font_class": "starhalf",
+ "unicode": "\ue683"
+ },
+ {
+ "font_class": "trash",
+ "unicode": "\ue687"
+ },
+ {
+ "font_class": "trash-filled",
+ "unicode": "\ue685"
+ },
+ {
+ "font_class": "tune",
+ "unicode": "\ue6aa"
+ },
+ {
+ "font_class": "tune-filled",
+ "unicode": "\ue6ca"
+ },
+ {
+ "font_class": "undo",
+ "unicode": "\ue64f"
+ },
+ {
+ "font_class": "undo-filled",
+ "unicode": "\ue64c"
+ },
+ {
+ "font_class": "up",
+ "unicode": "\ue6b6"
+ },
+ {
+ "font_class": "top",
+ "unicode": "\ue6b6"
+ },
+ {
+ "font_class": "upload",
+ "unicode": "\ue690"
+ },
+ {
+ "font_class": "upload-filled",
+ "unicode": "\ue68e"
+ },
+ {
+ "font_class": "videocam",
+ "unicode": "\ue68c"
+ },
+ {
+ "font_class": "videocam-filled",
+ "unicode": "\ue689"
+ },
+ {
+ "font_class": "vip",
+ "unicode": "\ue6a8"
+ },
+ {
+ "font_class": "vip-filled",
+ "unicode": "\ue6c6"
+ },
+ {
+ "font_class": "wallet",
+ "unicode": "\ue6b1"
+ },
+ {
+ "font_class": "wallet-filled",
+ "unicode": "\ue6c2"
+ },
+ {
+ "font_class": "weibo",
+ "unicode": "\ue68b"
+ },
+ {
+ "font_class": "weixin",
+ "unicode": "\ue691"
+ }
+]
+
+// export const fontData = JSON.parse(fontDataJson)
diff --git a/uni_modules/uni-icons/package.json b/uni_modules/uni-icons/package.json
index d1c4e77..60e45f0 100644
--- a/uni_modules/uni-icons/package.json
+++ b/uni_modules/uni-icons/package.json
@@ -1,7 +1,7 @@
{
"id": "uni-icons",
"displayName": "uni-icons 图标",
- "version": "1.3.5",
+ "version": "2.0.12",
"description": "图标组件,用于展示移动端常见的图标,可自定义颜色、大小。",
"keywords": [
"uni-ui",
@@ -11,16 +11,14 @@
],
"repository": "https://github.com/dcloudio/uni-ui",
"engines": {
- "HBuilderX": "^3.2.14"
+ "HBuilderX": "^3.2.14",
+ "uni-app": "^4.08",
+ "uni-app-x": "^4.61"
},
"directories": {
"example": "../../temps/example_temps"
},
"dcloudext": {
- "category": [
- "前端组件",
- "通用组件"
- ],
"sale": {
"regular": {
"price": "0.00"
@@ -37,48 +35,75 @@
"data": "无",
"permissions": "无"
},
- "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
+ "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui",
+ "type": "component-vue",
+ "darkmode": "x",
+ "i18n": "x",
+ "widescreen": "x"
},
"uni_modules": {
- "dependencies": ["uni-scss"],
+ "dependencies": [
+ "uni-scss"
+ ],
"encrypt": [],
"platforms": {
"cloud": {
- "tcb": "y",
- "aliyun": "y"
+ "tcb": "x",
+ "aliyun": "x",
+ "alipay": "x"
},
"client": {
- "App": {
- "app-vue": "y",
- "app-nvue": "y"
+ "uni-app": {
+ "vue": {
+ "vue2": "√",
+ "vue3": "√"
+ },
+ "web": {
+ "safari": "√",
+ "chrome": "√"
+ },
+ "app": {
+ "vue": "√",
+ "nvue": "-",
+ "android": {
+ "extVersion": "",
+ "minVersion": "29"
+ },
+ "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": {
+ "extVersion": "",
+ "minVersion": "29"
+ },
+ "ios": "√",
+ "harmony": "√"
+ },
+ "mp": {
+ "weixin": "√"
+ }
}
}
}