5.22
This commit is contained in:
commit
7aa728df28
13
.gitignore
vendored
Normal file
13
.gitignore
vendored
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
# Build Tools
|
||||||
|
unpackage/*
|
||||||
|
!unpackage/res
|
||||||
|
|
||||||
|
|
||||||
|
# Development Tools
|
||||||
|
.idea
|
||||||
|
.vscode
|
||||||
|
.hbuilderx/*
|
||||||
|
|
||||||
|
package-lock.json
|
||||||
|
yarn.lock
|
||||||
|
.DS_Store
|
128
App.vue
Normal file
128
App.vue
Normal file
@ -0,0 +1,128 @@
|
|||||||
|
<script>
|
||||||
|
import store from '@/store';
|
||||||
|
export default {
|
||||||
|
//监听路由变化,实现路由拦截,实现全局路由守卫
|
||||||
|
// watch: {
|
||||||
|
// $route(to, from) {
|
||||||
|
// let token = uni.getStorageSync('token')
|
||||||
|
// // vuex存储token
|
||||||
|
// uni.$u.vuex('vuex_token', token);
|
||||||
|
// if (to.path === '/pages/tabBar/scene/index' && (token == '' || token == null)) {
|
||||||
|
// uni.showModal({
|
||||||
|
// title: "提示",
|
||||||
|
// content: '该功能需要登陆后使用,是否前往登录?',
|
||||||
|
// success: function(res) {
|
||||||
|
// if (res.confirm) {
|
||||||
|
// console.log('用户点击确定');
|
||||||
|
// self.$router.push('/pages/login/index');
|
||||||
|
// } else if (res.cancel) {
|
||||||
|
// console.log('用户点击取消');
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// })
|
||||||
|
// // 如果需要登录验证且未登录,则跳转到登录页
|
||||||
|
// }
|
||||||
|
// if (to.path === '/pagesA/scene/alert/index' && (token == '' || token == null)) {
|
||||||
|
// // 如果需要登录验证且未登录,则跳转到登录页
|
||||||
|
// this.$router.push('/pages/login/index');
|
||||||
|
// }
|
||||||
|
// if (to.path === '/pagesA/scene/alert/index' && (token == '' || token == null)) {
|
||||||
|
// // 如果需要登录验证且未登录,则跳转到登录页
|
||||||
|
// this.$router.push('/pages/login/index');
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// },
|
||||||
|
onLaunch: function() {
|
||||||
|
console.log('App Launch');
|
||||||
|
//判断用户是否首次打开
|
||||||
|
var isFirstOpen = uni.getStorageSync('isFirstOpen');
|
||||||
|
// 如果isFirstOpen不存在,说明是首次打开系统
|
||||||
|
if (!isFirstOpen) {
|
||||||
|
// 执行首次打开系统的逻辑,比如显示弹窗
|
||||||
|
uni.reLaunch({
|
||||||
|
url: '/pagesB/login/firstOpen'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
//else {
|
||||||
|
// // 如果不是首次打开系统,直接跳转到登录页
|
||||||
|
// uni.reLaunch({
|
||||||
|
// url: '/pages/login/index'
|
||||||
|
// });
|
||||||
|
// // uni.setStorageSync('isFirstOpen', false);
|
||||||
|
// }
|
||||||
|
},
|
||||||
|
onShow: function() {
|
||||||
|
this.$watch('$route', (to, from) => {
|
||||||
|
this.checkLoginStatus(to);
|
||||||
|
});
|
||||||
|
console.log('App Show');
|
||||||
|
// #ifndef H5 || APP-PLUS||MP-WEIXIN
|
||||||
|
//判断当前微信版本是否支持版本更新
|
||||||
|
if (uni.canIUse('getUpdateManager')) {
|
||||||
|
const updateManager = uni.getUpdateManager();
|
||||||
|
// 请求完新版本信息的回调
|
||||||
|
updateManager.onCheckForUpdate(function(res) {
|
||||||
|
if (res.hasUpdate) {
|
||||||
|
updateManager.onUpdateReady(function() {
|
||||||
|
uni.showModal({
|
||||||
|
title: '更新提示',
|
||||||
|
content: '新版本已经准备好,是否重启应用?',
|
||||||
|
success: function(res) {
|
||||||
|
// 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
|
||||||
|
if (res.confirm) {
|
||||||
|
updateManager.applyUpdate()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
});
|
||||||
|
// 新的版本下载失败
|
||||||
|
updateManager.onUpdateFailed(function() {
|
||||||
|
uni.showModal({
|
||||||
|
title: '已经有新版本了哟~',
|
||||||
|
content: '新版本已经上线啦~,请您删除当前小程序,重新搜索打开哟~',
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
// 如果希望用户在最新版本的客户端上体验您的小程序,可以这样子提示
|
||||||
|
uni.showModal({
|
||||||
|
title: '提示',
|
||||||
|
content: '当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// #endif
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
checkLoginStatus(route) {
|
||||||
|
let token = uni.getStorageSync('token');
|
||||||
|
if ((route.path === '/pages/tabBar/scene/index' || route.path === '/pages/tabBar/alert/index') && (token ==
|
||||||
|
'' || token == null)) {
|
||||||
|
uni.showModal({
|
||||||
|
title: this.$tt('common.tips'),
|
||||||
|
content: this.$tt('common.loginTips'),
|
||||||
|
cancelText: "取消",
|
||||||
|
confirmText: "确定",
|
||||||
|
success: (res) => {
|
||||||
|
if (res.confirm) {
|
||||||
|
console.log('用户点击确定');
|
||||||
|
uni.navigateTo({
|
||||||
|
url: '/pages/login/index'
|
||||||
|
});
|
||||||
|
} else if (res.cancel) {
|
||||||
|
console.log('用户点击取消');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onHide: function() {
|
||||||
|
console.log('App Hide');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
@import '@/uni_modules/uview-ui/index.scss';
|
||||||
|
</style>
|
124
README.md
Normal file
124
README.md
Normal file
@ -0,0 +1,124 @@
|
|||||||
|
### 请勿随意分发和转售
|
||||||
|
|
||||||
|
|微信小程序|安卓|IOS|H5|Vue2|
|
||||||
|
|:---:|:---:|:---:|:---:|:---:|
|
||||||
|
|√|√|√|√|√|
|
||||||
|
|
||||||
|
|
||||||
|
### 一、项目介绍
|
||||||
|
1. 项目使用uniapp开发,适配微信小程序、安卓、IOS和H5,其他平台未测试。
|
||||||
|
2. UI框架使用uView2.0。
|
||||||
|
3. 组件使用easycom模式,只要组件安装在项目的components目录下或uni_modules目录下,并符合components/组件名称/组件名称.vue目录结构。就可以不用引用、注册,直接在页面中使用。
|
||||||
|
4. 开发工具为Hbuilder3.3以上版本。
|
||||||
|
5. 近期在开发项目升级过程中会逐步优化项目结构,由于旧代码比较庞大需要很多时间优化,所以项目结构目录这块暂时没有更新,希望谅解。
|
||||||
|
|
||||||
|
|
||||||
|
### 二、项目结构
|
||||||
|
|
||||||
|
```
|
||||||
|
├─apis // 接口管理
|
||||||
|
│ ├─modules // api模块化目录
|
||||||
|
│ │ └─device.js // 设备接口地址
|
||||||
|
│ ├─http.api.js // 接口定义文件
|
||||||
|
│ └─http.interceptor // 拦截器
|
||||||
|
├─common // 公共文件
|
||||||
|
│ ├─mqttTool // mqtt工具
|
||||||
|
│ ├─extend // 扩展原型方法
|
||||||
|
│ ├─filters // 全局过滤器
|
||||||
|
│ └─tools // 全局公共方法
|
||||||
|
├─components // 项目组件库,组件放置这里,其他页面可直接使用
|
||||||
|
│ ├─cl-test // easycom测试组件
|
||||||
|
│ ├─cl-icon // iconfont图标组件
|
||||||
|
│ ├─deviceMonitor // 设备实时监测组件
|
||||||
|
│ └─other... // 使用的其他组件等等
|
||||||
|
├─pages // 页面目录
|
||||||
|
│ ├─public // 公共页面
|
||||||
|
│ └─tarbar // 底部导航栏页面
|
||||||
|
│ ├─home // 首页的所有页面
|
||||||
|
│ ├─scene // 场景联动页面
|
||||||
|
│ ├─trend // 新闻动态页面
|
||||||
|
│ └─user // 个人中心页面
|
||||||
|
├─static // 图片目录
|
||||||
|
├─store // vuex
|
||||||
|
│ ├─$u.mixin // store全局混入方法
|
||||||
|
│ └─index // vuex 组件全局状态管理
|
||||||
|
├─uni_modules // 插件市场插件目录
|
||||||
|
│ └─uview-ui // uview-ui
|
||||||
|
├─env.config.js // 接口地址和mqtt地址配置文件
|
||||||
|
├─mainfest.json // 各个平台的配置信息
|
||||||
|
```
|
||||||
|
|
||||||
|
### 三、基本配置
|
||||||
|
1. 打开根目录的mainfest.json文件, 基础配置中 AppId改为自己的 [uni-app应用标识](https://ask.dcloud.net.cn/article/35907),微信小程序配置中,AppId改为自己的 [微信小程序AppId](https://mp.weixin.qq.com/) 。
|
||||||
|
|
||||||
|
2. 打开根目录的 `env.config.js` 文件,修改服务端接口地址和emqx消息服务器地址
|
||||||
|
```
|
||||||
|
// H5端开发和生产环境协议
|
||||||
|
let protocalDev = "ws://";
|
||||||
|
let protocalProd = "wss://";
|
||||||
|
|
||||||
|
// 条件编译,微信端和App端使用wxs协议
|
||||||
|
// #ifdef MP-WEIXIN || APP-PLUS
|
||||||
|
protocalDev = 'wxs://';
|
||||||
|
protocalProd = 'wxs://';
|
||||||
|
// #endif
|
||||||
|
|
||||||
|
const CONFIG = {
|
||||||
|
// 开发环境配置
|
||||||
|
development: {
|
||||||
|
baseUrl: 'http://localhost:8080',
|
||||||
|
mqttServer: protocalDev + 'localhost:8083/mqtt',
|
||||||
|
},
|
||||||
|
// 生产环境配置
|
||||||
|
production: {
|
||||||
|
baseUrl: 'https://domain.com/prod-api/',
|
||||||
|
mqttServer: protocalProd + 'domain.com/mqtt',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
* 小程序调用接口必须使用https协议,可以去阿里、腾讯、百度等平台申请免费证书,Nginx配置https和wss参考 [官网文档](https://fastbee.cn/doc/pages/applet/)
|
||||||
|
* H5端使用ws(未加密)或者wss(加密)协议
|
||||||
|
* 微信小程序和App端使用wxs协议,同时需要配置域名,App端使用wss连接失败,可能跟mqtt.js版本有关系。
|
||||||
|
|
||||||
|
### 四、Mqtt协议
|
||||||
|
|协议 |一般使用端口 |说明 |
|
||||||
|
|:-----|:----------|:------------------|
|
||||||
|
| mqtt | 1883端口 | 未加密 TCP 连接,硬件端和服务端使用|
|
||||||
|
| mqtts| 8883端口 | 加密 TCP 连接,硬件端和服务端使用|
|
||||||
|
| ws | 8083端口 | 未加密 WebSocket 连接,前端和移动端使用|
|
||||||
|
| wss | 8084端口 | 加密 WebSocket 连接,前端和移动端使用,通过代理访问8083端口|
|
||||||
|
| wxs | 8084端口 | 微信小程序连接,微信小程序端使用,通过代理访问8083端口|
|
||||||
|
| alis | 8084端口 | 支付宝小程序连接,支付宝小程序端使用,通过代理访问8083端口|
|
||||||
|
|
||||||
|
### 五、使用说明
|
||||||
|
1. 项目使用uChart图表,部分图标启用canvas2d模式,解决小程序层级过高及拖拽卡顿问题。微信开发工具中图表显示会有问题,发布后正常显示。
|
||||||
|
2. 微信小程序支持多设备配网,mainfest.json微信小程序配置中要启用位置接口才能使用。微信小程序端配网需要使用真机调试。
|
||||||
|
3. 微信小程序视频需要向微信官方申请权限,Android 和 IOS 需要用Wap2App 方式打包,播放器暂时不支持原生App。
|
||||||
|
4. 项目天气预报使用的是心知天气API需要自行前往官网申请(小程序配置心知天气域名),也可以使用其他天气API,但需要调整一下weather的数据(已自定义组件),由于某些浏览器原因,为保证H5正常运行,可以申请腾讯地图key来定位。
|
||||||
|
|
||||||
|
### 六、设备配网 / 扫码添加设备
|
||||||
|
1. 有两种情况:第一种是系统不存在该设备,配网或扫码后会新建设备到用户账号下;第二种是系统已存在该设备,配网或扫码后是关联设备到用户账号下。
|
||||||
|
2. 设备配网:通过配网可以把wifi信息配置到设备,以及新建设备到用户账号下。目前H5、微信小程序、安卓和IOS都支持单设备配网,多设备配网只有微信小程序支持。单设备配网时用户手动切换手机wifi为设备热点,然后进行配网。
|
||||||
|
3. 扫码添加设备:用户通过扫码新建设备到自己账号下。系统中的每个设备都有二维码,在设备详情摘要中查看。二维码固定为下面JSON格式:
|
||||||
|
```
|
||||||
|
# type固定值为1,代表扫码添加设备
|
||||||
|
# type、deviceNumber、productId 为必填项,productName为可选项
|
||||||
|
# 如果系统中还不存在该设备,设备编号使用一个唯一性编码即可,不能包含特殊字符
|
||||||
|
{
|
||||||
|
"type": 1,
|
||||||
|
"deviceNumber": "D888666",
|
||||||
|
"productId": 5,
|
||||||
|
"productName": "智能插座"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 七、相关文档
|
||||||
|
[uView2.0文档 >>](https://www.uviewui.com/components/intro.html) <br />
|
||||||
|
[uniapp文档 >>](https://uniapp.dcloud.io/tutorial/) <br />
|
||||||
|
[easycom说明 >>](https://uniapp.dcloud.io/component/#easycom%E7%BB%84%E4%BB%B6%E8%A7%84%E8%8C%83) <br />
|
||||||
|
[uChart2.0文档 >>](https://www.ucharts.cn/v2/#/guide/index) <br />
|
||||||
|
[Wap2App打包](https://code.wumei.live/ultimate/wumei-smart/-/wikis/Wap2App打包)
|
||||||
|
|
||||||
|
### 八、项目运行
|
||||||
|
运行前先跑 npm install 下载所需要的依赖包!
|
30
apis/http.api.js
Normal file
30
apis/http.api.js
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
import * as common from './modules/common.js';
|
||||||
|
import * as account from './modules/account.js';
|
||||||
|
import * as scene from './modules/scene.js';
|
||||||
|
import * as group from './modules/group.js';
|
||||||
|
import * as deviceUser from './modules/deviceUser.js';
|
||||||
|
import * as deviceLog from './modules/deviceLog.js';
|
||||||
|
import * as device from './modules/device.js';
|
||||||
|
// const http = uni.$u.http;
|
||||||
|
|
||||||
|
// api 接口管理
|
||||||
|
const install = (Vue, vm) => {
|
||||||
|
|
||||||
|
Vue.prototype.$api = {
|
||||||
|
// 登录
|
||||||
|
// login:(params = {})=>http.post('/login',params),
|
||||||
|
|
||||||
|
// import modules
|
||||||
|
common,
|
||||||
|
scene,
|
||||||
|
group,
|
||||||
|
deviceUser,
|
||||||
|
deviceLog,
|
||||||
|
device,
|
||||||
|
account
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
export default {
|
||||||
|
install
|
||||||
|
}
|
129
apis/http.interceptor.js
Normal file
129
apis/http.interceptor.js
Normal file
@ -0,0 +1,129 @@
|
|||||||
|
// common/http.interceptor.js
|
||||||
|
|
||||||
|
import projectConfig from '@/env.config.js';
|
||||||
|
|
||||||
|
const codeMessage = {
|
||||||
|
404: '您所请求的资源无法找到',
|
||||||
|
500: '服务器内部错误,无法完成请求',
|
||||||
|
};
|
||||||
|
|
||||||
|
const install = (Vue, vm) => {
|
||||||
|
// 这个配置是一次配置,全局通用的,具体参数见 https://www.uviewui.com/js/http.html
|
||||||
|
uni.$u.http.setConfig((config) => {
|
||||||
|
// 域名设置
|
||||||
|
config.baseURL = projectConfig.baseUrl;
|
||||||
|
// 全局header
|
||||||
|
config.header = {};
|
||||||
|
//
|
||||||
|
config.method = '';
|
||||||
|
// 设置为json,返回后会对数据进行一次JSON.parse()
|
||||||
|
config.dataType = 'json';
|
||||||
|
//
|
||||||
|
config.responseType = 'text';
|
||||||
|
// 注:如果局部custom与全局custom有同名属性,则后面的属性会覆盖前面的属性,相当于Object.assign(全局,局部)
|
||||||
|
config.custom = {
|
||||||
|
// 请求接口展示Loading
|
||||||
|
ShowLoading: true,
|
||||||
|
// Loading中是否遮罩
|
||||||
|
LoadingMask: true,
|
||||||
|
// Loading文本
|
||||||
|
LoadingText: '正在加载',
|
||||||
|
}; // 全局自定义参数默认值
|
||||||
|
// #ifdef H5 || APP-PLUS || MP-ALIPAY || MP-WEIXIN
|
||||||
|
config.timeout = 60000;
|
||||||
|
// #endif
|
||||||
|
// #ifdef APP-PLUS
|
||||||
|
// 验证 ssl 证书 仅5+App安卓端支持(HBuilderX 2.3.3+)
|
||||||
|
config.sslVerify = true;
|
||||||
|
// #endif
|
||||||
|
// #ifdef H5
|
||||||
|
// 跨域请求时是否携带凭证(cookies)仅H5支持(HBuilderX 2.6.15+)
|
||||||
|
config.withCredentials = false;
|
||||||
|
// #endif
|
||||||
|
// #ifdef APP-PLUS
|
||||||
|
// DNS解析时优先使用ipv4 仅 App-Android 支持 (HBuilderX 2.8.0+)
|
||||||
|
config.firstIpv4 = false;
|
||||||
|
// #endif
|
||||||
|
// 局部优先级高于全局,返回当前请求的task,options。请勿在此处修改options。非必填
|
||||||
|
// getTask: (task, options) => {
|
||||||
|
// 相当于设置了请求超时时间500ms
|
||||||
|
// setTimeout(() => {
|
||||||
|
// task.abort()
|
||||||
|
// }, 500)
|
||||||
|
// },
|
||||||
|
// 全局自定义验证器。参数为statusCode 且必存在,不用判断空情况。
|
||||||
|
config.validateStatus = (statusCode) => { // statusCode 必存在。此处示例为全局默认配置
|
||||||
|
return statusCode >= 200 && statusCode < 300
|
||||||
|
};
|
||||||
|
return config;
|
||||||
|
});
|
||||||
|
|
||||||
|
// 请求拦截部分,如配置,每次请求前都会执行
|
||||||
|
uni.$u.http.interceptors.request.use((config) => {
|
||||||
|
config.header.language = wx.getStorageSync('language') || 'zh-CN';
|
||||||
|
if (config.custom.ShowLoading) {
|
||||||
|
uni.showLoading({
|
||||||
|
title: config.custom.LoadingText || '正在加载',
|
||||||
|
mask: config.custom.LoadingMask || false
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 引用token
|
||||||
|
// 方式一,存放在vuex的token,假设使用了uView封装的vuex方式
|
||||||
|
// 见:https://uviewui.com/components/globalVariable.html
|
||||||
|
// config.header.token = vm.token;
|
||||||
|
|
||||||
|
// 方式二,如果没有使用uView封装的vuex方法,那么需要使用$store.state获取
|
||||||
|
if (config.url != '/captchaImage' && config.url != '/login' && config.url != '/iot/tool/register') {
|
||||||
|
config.header.Authorization = 'Bearer ' + vm.$store.state.vuex_token;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 方式三,如果token放在了globalData,通过getApp().globalData获取
|
||||||
|
// config.header.token = getApp().globalData.username;
|
||||||
|
|
||||||
|
// 方式四,如果token放在了Storage本地存储中,拦截是每次请求都执行的
|
||||||
|
// 所以哪怕您重新登录修改了Storage,下一次的请求将会是最新值
|
||||||
|
// const token = uni.getStorageSync('token');
|
||||||
|
// config.header.token = token;
|
||||||
|
// config.header.Token = 'xxxxxx';
|
||||||
|
|
||||||
|
// 可以对某个url进行特别处理,此url参数为this.$u.get(url)中的url值
|
||||||
|
// if (config.url == '/pages/login') config.header.noToken = true;
|
||||||
|
// 最后需要将config进行return
|
||||||
|
return config;
|
||||||
|
// 如果return一个false值,则会取消本次请求
|
||||||
|
// if(config.url == '/user/rest') return false; // 取消某次请求
|
||||||
|
})
|
||||||
|
|
||||||
|
// 响应拦截,如配置,每次请求结束都会执行本方法
|
||||||
|
uni.$u.http.interceptors.response.use((res) => {
|
||||||
|
if (res.config.custom.ShowLoading) {
|
||||||
|
uni.hideLoading();
|
||||||
|
}
|
||||||
|
// if 状态码是否正常
|
||||||
|
if (res.statusCode === 200) {
|
||||||
|
let result = res.data;
|
||||||
|
// if 与后台规定的成功码是否正常
|
||||||
|
if (result.code === 200 || result.code === 500 || result.code === 450) {
|
||||||
|
return result
|
||||||
|
} else if (result.code == 401) {
|
||||||
|
// 本地缓存存储token
|
||||||
|
uni.setStorageSync('token', '');
|
||||||
|
uni.reLaunch({
|
||||||
|
url: '/pages/tabBar/home/index'
|
||||||
|
});
|
||||||
|
return result
|
||||||
|
} else {
|
||||||
|
console.log(result);
|
||||||
|
vm.$u.toast(result.msg);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
vm.$u.toast(res.data.msg);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export default {
|
||||||
|
install
|
||||||
|
}
|
25
apis/modules/account.js
Normal file
25
apis/modules/account.js
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
const http = uni.$u.http;
|
||||||
|
|
||||||
|
import upload from '@/utils/upload'
|
||||||
|
//修改个人信息
|
||||||
|
export function updateProfile(params) {
|
||||||
|
return http.put('/system/user/profile', params);
|
||||||
|
}
|
||||||
|
|
||||||
|
//用户头像上传
|
||||||
|
export function uploadAvatar(data) {
|
||||||
|
return upload({
|
||||||
|
url: '/system/user/profile/avatar',
|
||||||
|
method: 'post',
|
||||||
|
name: data.name,
|
||||||
|
filePath: data.filePath
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
//用户密码重置
|
||||||
|
export function updateUserPwd(oldPassword, newPassword) {
|
||||||
|
return http.request({
|
||||||
|
url: '/system/user/profile/updatePwd?oldPassword=' + oldPassword + '&newPassword=' + newPassword,
|
||||||
|
method: 'put',
|
||||||
|
})
|
||||||
|
}
|
32
apis/modules/alertLog.js
Normal file
32
apis/modules/alertLog.js
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
const http = uni.$u.http;
|
||||||
|
|
||||||
|
// 查询设备告警数据
|
||||||
|
export function getAlertList (query) {
|
||||||
|
return http.request({
|
||||||
|
url: '/iot/alertLog/list',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询单个设备告警详情
|
||||||
|
export function getAlertLog (id) {
|
||||||
|
return http.get('/iot/alertLog/' + id);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改单个设备告警详情
|
||||||
|
export function editAlertLog (data) {
|
||||||
|
return http.request({
|
||||||
|
url: '/iot/alertLog',
|
||||||
|
method: 'put',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询微信小程序告警通知模板id
|
||||||
|
export function getAlertTemplateId() {
|
||||||
|
return http.request({
|
||||||
|
url: '/notify/template/getAlertWechatMini',
|
||||||
|
method: 'get',
|
||||||
|
})
|
||||||
|
}
|
83
apis/modules/common.js
Normal file
83
apis/modules/common.js
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
const http = uni.$u.http;
|
||||||
|
|
||||||
|
// 查询所有产品列表
|
||||||
|
export function listShortProduct() {
|
||||||
|
return http.get('/iot/product/shortList');
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取验证码
|
||||||
|
export function captchaImage(showCode) {
|
||||||
|
return http.request({
|
||||||
|
url: '/captchaImage?showCode=' + showCode,
|
||||||
|
method: 'get',
|
||||||
|
})
|
||||||
|
|
||||||
|
//return http.get('/captchaImage',params);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取用户信息
|
||||||
|
export function getProfile() {
|
||||||
|
return http.get('/system/user/profile');
|
||||||
|
}
|
||||||
|
|
||||||
|
// 个人中心-微信绑定-app和小程序
|
||||||
|
export function wechatBind(params) {
|
||||||
|
return http.post('/wechat/bind', params);
|
||||||
|
}
|
||||||
|
|
||||||
|
//解除微信绑定
|
||||||
|
export function secureBind(params) {
|
||||||
|
return http.post('/wechat/cancelBind', params);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 登录
|
||||||
|
export function login(params) {
|
||||||
|
return http.post('/login', params);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 绑定登录
|
||||||
|
export function bindLogin(params) {
|
||||||
|
return http.post('/auth/bind/login', params);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 绑定注册
|
||||||
|
export function bindRegister(params) {
|
||||||
|
return http.post('/auth/bind/register', params);
|
||||||
|
}
|
||||||
|
//获取短信验证码
|
||||||
|
export function getSmsCode(phoneNumber) {
|
||||||
|
return http.request({
|
||||||
|
url: '/notify/smsLoginCaptcha?phoneNumber=' + phoneNumber,
|
||||||
|
method: 'get',
|
||||||
|
})
|
||||||
|
}
|
||||||
|
//短信登录
|
||||||
|
export function smsLogin(params) {
|
||||||
|
return http.post('/auth/sms/login', params);
|
||||||
|
}
|
||||||
|
// 退出登录
|
||||||
|
export function logout() {
|
||||||
|
return http.post('/logout');
|
||||||
|
}
|
||||||
|
|
||||||
|
// 注册方法
|
||||||
|
export function register(params) {
|
||||||
|
return http.post('/iot/tool/register', params);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询用户列表
|
||||||
|
export function listUser(params) {
|
||||||
|
return http.get('/iot/tool/userList', {
|
||||||
|
params: params
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 注销账号
|
||||||
|
export function unsubscribe() {
|
||||||
|
return http.post('/unsubscribe');
|
||||||
|
}
|
||||||
|
|
||||||
|
// 忘记密码
|
||||||
|
export function forgetPwdReset(params) {
|
||||||
|
return http.put('/system/user/forgetPwdReset', params);
|
||||||
|
}
|
131
apis/modules/device.js
Normal file
131
apis/modules/device.js
Normal file
@ -0,0 +1,131 @@
|
|||||||
|
const http = uni.$u.http;
|
||||||
|
|
||||||
|
// 查询设备简短列表
|
||||||
|
export function listDeviceShort(params) {
|
||||||
|
return http.get('/iot/device/shortList', {
|
||||||
|
params: params
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询设备详细
|
||||||
|
export function getDevice(deviceId) {
|
||||||
|
return http.get('/iot/device/' + deviceId);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 设备数据同步
|
||||||
|
export function deviceSynchronization(serialNumber) {
|
||||||
|
return http.get('/iot/device/synchronization/' + serialNumber);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询设备运行状态详细
|
||||||
|
export function getRunningStatus(deviceId, slaveId, type, productId, serialNumber) {
|
||||||
|
let params = {
|
||||||
|
deviceId: deviceId,
|
||||||
|
slaveId: slaveId,
|
||||||
|
type: type,
|
||||||
|
productId: productId,
|
||||||
|
serialNumber: serialNumber,
|
||||||
|
|
||||||
|
};
|
||||||
|
return http.get('/iot/device/runningStatus', {
|
||||||
|
params: params
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询设备物模型的值
|
||||||
|
export function getDeviceThingsModelValue(deviceId) {
|
||||||
|
return http.get('/iot/device/thingsModelValue/' + deviceId);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 根据产品ID获取缓存的物模型
|
||||||
|
export function cacheJsonThingsModel(productId) {
|
||||||
|
return http.get('/iot/model/cache/' + productId, {
|
||||||
|
custom: {
|
||||||
|
ShowLoading: false
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 根据产品ID获取缓存的物模型
|
||||||
|
export function getCacheThingsModel(productId) {
|
||||||
|
return http.get('/iot/model/cache/' + productId);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改设备
|
||||||
|
export function updateDevice(data) {
|
||||||
|
return http.put('/iot/device', data)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 用户关联设备
|
||||||
|
export function deviceRelateUser(data) {
|
||||||
|
return http.post('/iot/device/relateUser', data)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除设备
|
||||||
|
export function delDevice(deviceId) {
|
||||||
|
return http.delete('/iot/device/' + deviceId);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询设备最新固件
|
||||||
|
export function getLatestFirmware(deviceId) {
|
||||||
|
return http.get('/iot/firmware/getLatest/' + deviceId);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询分组可添加设备分页列表
|
||||||
|
export function listDeviceByGroup(query) {
|
||||||
|
return http.get('/iot/device/listByGroup', {
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询设备绑定的视频通道列表
|
||||||
|
export function relateChannelList(deviceId) {
|
||||||
|
return http.get('/iot/relation/dev/' + deviceId);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询设备变量概况
|
||||||
|
export function listThingsModel(data) {
|
||||||
|
return http.get('/iot/device/listThingsModel', {
|
||||||
|
params: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 查询指令权限
|
||||||
|
export function getOrderControl(params) {
|
||||||
|
return http.request({
|
||||||
|
url: '/order/control/get',
|
||||||
|
method: 'get',
|
||||||
|
params: params
|
||||||
|
})
|
||||||
|
}
|
||||||
|
//主动采集
|
||||||
|
export function propGet(params) {
|
||||||
|
return http.request({
|
||||||
|
url: '/iot/runtime/prop/get',
|
||||||
|
method: 'get',
|
||||||
|
params: params,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
//告警记录列表
|
||||||
|
export function listAlertLog(params) {
|
||||||
|
return http.request({
|
||||||
|
url: '/iot/alertLog/list',
|
||||||
|
method: 'get',
|
||||||
|
params: params,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
//服务调用,等待设备响应
|
||||||
|
export function serviceInvokeReply(data) {
|
||||||
|
return http.request({
|
||||||
|
url: '/iot/runtime/service/invokeReply',
|
||||||
|
method: 'post',
|
||||||
|
data: data,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
//服务调用,不需要等待设备响应
|
||||||
|
export function serviceInvoke(data) {
|
||||||
|
return http.request({
|
||||||
|
url: '/iot/runtime/service/invoke',
|
||||||
|
method: 'post',
|
||||||
|
data: data,
|
||||||
|
});
|
||||||
|
}
|
76
apis/modules/deviceLog.js
Normal file
76
apis/modules/deviceLog.js
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
const http = uni.$u.http;
|
||||||
|
|
||||||
|
// 查询设备日志列表
|
||||||
|
export function listDeviceLog (query) {
|
||||||
|
return http.request({
|
||||||
|
url: '/iot/deviceLog/list',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询事件日志列表
|
||||||
|
export function getEventLogList (query) {
|
||||||
|
return http.request({
|
||||||
|
url: '/iot/event/list',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询设备监测数据
|
||||||
|
export function listMonitor (query) {
|
||||||
|
return http.request({
|
||||||
|
url: '/iot/deviceLog/monitor',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询设备历史监测数据
|
||||||
|
export function getDeviceHistory (params) {
|
||||||
|
return http.get('/iot/deviceLog/history', { params: params });
|
||||||
|
}
|
||||||
|
|
||||||
|
//查询历史监测数据
|
||||||
|
export function getHistoryList (data) {
|
||||||
|
return http.request({
|
||||||
|
url: '/data/center/deviceHistory',
|
||||||
|
method: 'post',
|
||||||
|
data: data,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询设备日志详细
|
||||||
|
export function getDeviceLog (logId) {
|
||||||
|
return http.request({
|
||||||
|
url: '/iot/deviceLog/' + logId,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增设备日志
|
||||||
|
export function addDeviceLog (data) {
|
||||||
|
return http.request({
|
||||||
|
url: '/iot/deviceLog',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改设备日志
|
||||||
|
export function updateDeviceLog (data) {
|
||||||
|
return http.request({
|
||||||
|
url: '/iot/deviceLog',
|
||||||
|
method: 'put',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除设备日志
|
||||||
|
export function delDeviceLog (logId) {
|
||||||
|
return http.request({
|
||||||
|
url: '/iot/deviceLog/' + logId,
|
||||||
|
method: 'delete'
|
||||||
|
})
|
||||||
|
}
|
31
apis/modules/deviceUser.js
Normal file
31
apis/modules/deviceUser.js
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
const http = uni.$u.http;
|
||||||
|
|
||||||
|
// 查询设备用户详细
|
||||||
|
export function getDeviceUser (deviceId) {
|
||||||
|
return http.get('/iot/deviceUser/' + deviceId)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增设备用户
|
||||||
|
export function addDeviceUser (data) {
|
||||||
|
return http.post('/iot/share', data);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改设备用户
|
||||||
|
export function updateDeviceUser (data) {
|
||||||
|
return http.put('/iot/share', data)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除设备用户
|
||||||
|
export function delDeviceUser (device) {
|
||||||
|
return http.delete('/iot/share', device)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询可分享用户列表
|
||||||
|
export function getShareUser (data) {
|
||||||
|
return http.get('/iot/share/shareUser', { params: data });
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询已经分享用户列表
|
||||||
|
export function getUserList (params) {
|
||||||
|
return http.get('/iot/share/list', { params: params });
|
||||||
|
}
|
8
apis/modules/gateway.js
Normal file
8
apis/modules/gateway.js
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
const http = uni.$u.http;
|
||||||
|
|
||||||
|
// 查询设备简短列表
|
||||||
|
export function getSubGatewayList (query) {
|
||||||
|
return http.get('/sub/gateway/list', {
|
||||||
|
params: query
|
||||||
|
});
|
||||||
|
}
|
58
apis/modules/group.js
Normal file
58
apis/modules/group.js
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
const http = uni.$u.http;
|
||||||
|
|
||||||
|
// 获取设备分组列表
|
||||||
|
export function getGroupList (query) {
|
||||||
|
return http.request({
|
||||||
|
url: '/iot/group/list',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询设备分组详细
|
||||||
|
export function getGroup (groupId) {
|
||||||
|
return http.request({
|
||||||
|
url: '/iot/group/' + groupId,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增设备分组
|
||||||
|
export function addGroup (data) {
|
||||||
|
return http.request({
|
||||||
|
url: '/iot/group',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改设备分组
|
||||||
|
export function updateGroup (data) {
|
||||||
|
return http.request({
|
||||||
|
url: '/iot/group',
|
||||||
|
method: 'put',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新分组下的设备
|
||||||
|
export function updateDeviceGroups (data) {
|
||||||
|
return http.request({
|
||||||
|
url: '/iot/group/updateDeviceGroups',
|
||||||
|
method: 'put',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除设备分组
|
||||||
|
export function delGroup (groupId) {
|
||||||
|
return http.request({
|
||||||
|
url: '/iot/group/' + groupId,
|
||||||
|
method: 'delete'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询分组下的关联设备ID数组
|
||||||
|
export function getDeviceIds (groupId) {
|
||||||
|
return http.get('/iot/group/getDeviceIds/' + groupId);
|
||||||
|
}
|
62
apis/modules/job.js
Normal file
62
apis/modules/job.js
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
const http = uni.$u.http;
|
||||||
|
|
||||||
|
// 查询定时任务调度列表
|
||||||
|
export function getJobList (query) {
|
||||||
|
return http.request({
|
||||||
|
url: '/iot/job/list',
|
||||||
|
method: 'get',
|
||||||
|
data: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 定时任务立即执行一次
|
||||||
|
export function runJob (data) {
|
||||||
|
return http.request({
|
||||||
|
url: '/iot/job/run',
|
||||||
|
method: 'put',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 任务状态修改
|
||||||
|
export function changeJobStatus (data) {
|
||||||
|
return http.request({
|
||||||
|
url: '/iot/job/changeStatus',
|
||||||
|
method: 'put',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增定时任务调度
|
||||||
|
export function addJob (data) {
|
||||||
|
return http.request({
|
||||||
|
url: '/iot/job',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询定时任务调度详细
|
||||||
|
export function getJob (jobId) {
|
||||||
|
return http.request({
|
||||||
|
url: '/iot/job/' + jobId,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改定时任务调度
|
||||||
|
export function updateJob (data) {
|
||||||
|
return http.request({
|
||||||
|
url: '/iot/job',
|
||||||
|
method: 'put',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除定时任务调度
|
||||||
|
export function delJob (jobId) {
|
||||||
|
return http.request({
|
||||||
|
url: '/iot/job/' + jobId,
|
||||||
|
method: 'delete'
|
||||||
|
})
|
||||||
|
}
|
10
apis/modules/log.js
Normal file
10
apis/modules/log.js
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
const http = uni.$u.http;
|
||||||
|
|
||||||
|
// 查询指令日志列表
|
||||||
|
export function getOrderLogList (query) {
|
||||||
|
return http.request({
|
||||||
|
url: '/iot/log/list',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
6
apis/modules/model.js
Normal file
6
apis/modules/model.js
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
const http = uni.$u.http;
|
||||||
|
|
||||||
|
// 查询物模型对应分享设备用户权限列表
|
||||||
|
export function getModelPermList (productId) {
|
||||||
|
return http.get('/iot/model/permList/' + productId);
|
||||||
|
}
|
11
apis/modules/notice.js
Normal file
11
apis/modules/notice.js
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
const http = uni.$u.http;
|
||||||
|
|
||||||
|
// 查询公告列表
|
||||||
|
export function getNoticeList (datas) {
|
||||||
|
return http.get('/system/notice/list', { params: datas })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询公告详情
|
||||||
|
export function getNoticedDetail (noticeId) {
|
||||||
|
return http.get('/system/notice/' + noticeId);
|
||||||
|
}
|
50
apis/modules/player.js
Normal file
50
apis/modules/player.js
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
//播放器
|
||||||
|
const http = uni.$u.http;
|
||||||
|
export function startPlay(deviceId, channelId) {
|
||||||
|
return http.get('/sip/player/play/' + deviceId + "/" + channelId);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function closeStream(deviceId, channelId, streamId) {
|
||||||
|
return http.get('/sip/player/closeStream/' + deviceId + "/" + channelId + "/" + streamId);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function playback(deviceId, channelId, query) {
|
||||||
|
return http.get('/sip/player/playback/' + deviceId + "/" + channelId,{params: query});
|
||||||
|
}
|
||||||
|
|
||||||
|
export function playbackPause(deviceId, channelId, streamId) {
|
||||||
|
return http.get('/sip/player/playbackPause/' + deviceId + "/" + channelId + "/" + streamId);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function playbackReplay(deviceId, channelId, streamId) {
|
||||||
|
return http.get('/sip/player/playbackReplay/' + deviceId + "/" + channelId + "/" + streamId);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function playbackSeek(deviceId, channelId, streamId, query) {
|
||||||
|
return http.get('/sip/player/playbackSeek/' + deviceId + "/" + channelId + "/" + streamId,{params: query});
|
||||||
|
}
|
||||||
|
|
||||||
|
export function playbackSpeed(deviceId, channelId, streamId, query) {
|
||||||
|
return http.get('/sip/player/playbackSpeed/' + deviceId + "/" + channelId + "/" + streamId,{params: query});
|
||||||
|
}
|
||||||
|
|
||||||
|
// record
|
||||||
|
export function getDevRecord(deviceId,channelId,query) {
|
||||||
|
return http.get('/sip/record/devquery/' + deviceId + "/" + channelId,{params: query});
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getRecord(channelId,sn) {
|
||||||
|
return http.get('/sip/record/query/' + channelId + "/" + sn);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getPushUrl(deviceId, channelId) {
|
||||||
|
return http.get('/sip/talk/getPushUrl/' + deviceId + "/" + channelId);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function startBroadcast(deviceId, channelId) {
|
||||||
|
return http.get('/sip/talk/broadcast/' + deviceId + "/" + channelId);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function stopBroadcast(deviceId, channelId) {
|
||||||
|
return http.get('/sip/talk/broadcast/stop/' + deviceId + "/" + channelId);
|
||||||
|
}
|
8
apis/modules/product.js
Normal file
8
apis/modules/product.js
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
const http = uni.$u.http;
|
||||||
|
|
||||||
|
// 查询产品列表
|
||||||
|
export function getProductList (query) {
|
||||||
|
return http.get('/iot/product/list', {
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
6
apis/modules/runtime.js
Normal file
6
apis/modules/runtime.js
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
const http = uni.$u.http;
|
||||||
|
|
||||||
|
// 发送设备实时数据
|
||||||
|
export function serviceInvoke (data) {
|
||||||
|
return http.post('/iot/runtime/service/invoke', data);
|
||||||
|
}
|
10
apis/modules/scada.js
Normal file
10
apis/modules/scada.js
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
const http = uni.$u.http;
|
||||||
|
|
||||||
|
// 查询独立组态列表
|
||||||
|
export function getIndeScadaList (query) {
|
||||||
|
return http.request({
|
||||||
|
url: '/scada/center/list',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
41
apis/modules/scene.js
Normal file
41
apis/modules/scene.js
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
const http = uni.$u.http;
|
||||||
|
|
||||||
|
// 查询场景联动列表
|
||||||
|
export function listScene (query) {
|
||||||
|
return http.get('/iot/scene/list', { params: query });
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询场景联动详细
|
||||||
|
export function getScene (sceneId) {
|
||||||
|
return http.get('/iot/scene/' + sceneId);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增场景联动
|
||||||
|
export function addScene (data) {
|
||||||
|
return http.post('/iot/scene', data);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改场景联动
|
||||||
|
export function updateScene (data) {
|
||||||
|
return http.put('/iot/scene', data);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除场景联动
|
||||||
|
export function delScene (sceneId) {
|
||||||
|
return http.delete('/iot/scene/' + sceneId);
|
||||||
|
}
|
||||||
|
|
||||||
|
//获取设备列表
|
||||||
|
export function deviceShortList (params) {
|
||||||
|
return http.get('/iot/device/shortList', { params });
|
||||||
|
}
|
||||||
|
|
||||||
|
//根据设备id获取下拉选项数据
|
||||||
|
export function runScene (query) {
|
||||||
|
return http.post('/iot/runtime/runScene', null, { params: query });
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改场景状态
|
||||||
|
export function updateStatus (data) {
|
||||||
|
return http.put('/iot/scene/updateStatus', data);
|
||||||
|
}
|
40
apis/modules/sip.js
Normal file
40
apis/modules/sip.js
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
// sipchannel
|
||||||
|
// 查询监控设备通道信息列表
|
||||||
|
const http = uni.$u.http;
|
||||||
|
|
||||||
|
export function listChannel(query) {
|
||||||
|
return http.request({
|
||||||
|
url: '/sip/channel/list',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询监控设备通道信息详细
|
||||||
|
export function getChannel(channelId) {
|
||||||
|
return http.get('/sip/channel/' + channelId);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增监控设备通道信息
|
||||||
|
export function addChannel(createNum, data) {
|
||||||
|
return http.post('/sip/channel/'+ createNum,data);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改监控设备通道信息
|
||||||
|
export function updateChannel(data) {
|
||||||
|
return http.put('/sip/channel',data)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除监控设备通道信息
|
||||||
|
export function delChannel(channelId) {
|
||||||
|
return http.delete('/sip/channel/'+ channelId)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ptz控制
|
||||||
|
export function ptzdirection(deviceId,channelId,data) {
|
||||||
|
return http.post('/sip/ptz/direction/'+ deviceId + "/" + channelId,data);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function ptzscale(deviceId,channelId,data) {
|
||||||
|
return http.post('/sip/ptz/scale/'+ deviceId + "/" + channelId,data);
|
||||||
|
}
|
30
apis/modules/trend.js
Normal file
30
apis/modules/trend.js
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
const http = uni.$u.http;
|
||||||
|
|
||||||
|
// 查询动态
|
||||||
|
export function topListTrend () {
|
||||||
|
return http.get('/iot/news/topList')
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询轮播广告图
|
||||||
|
export function bannerListTrend () {
|
||||||
|
return http.get('/iot/news/bannerList')
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询分类下动态
|
||||||
|
export function listTrend (params) {
|
||||||
|
return http.get('/iot/news/list', { params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询动态详情
|
||||||
|
export function getTrend (newsId) {
|
||||||
|
return http.get('/iot/news/' + newsId);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询动态详情
|
||||||
|
export function getNewsDetail (query) {
|
||||||
|
return http.request({
|
||||||
|
url: '/iot/news/getDetail',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
5
common/bus.js
Normal file
5
common/bus.js
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
import Vue from 'vue';
|
||||||
|
|
||||||
|
const bus = new Vue();
|
||||||
|
|
||||||
|
export default bus
|
24
common/extend.js
Normal file
24
common/extend.js
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
// 对Date的扩展,将 Date 转化为指定格式的String
|
||||||
|
// 月(M)、日(d)、小时(H)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符,
|
||||||
|
// 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
|
||||||
|
// 例子:
|
||||||
|
// (new Date()).Format("yyyy-MM-dd HH:mm:ss.S") ==> 2006-07-02 08:09:04.423
|
||||||
|
// (new Date()).Format("yyyy-M-d H:m:s.S") ==> 2006-7-2 8:9:4.18
|
||||||
|
Date.prototype.Format = function(fmt)
|
||||||
|
{ //author: meizz
|
||||||
|
var o = {
|
||||||
|
"M+" : this.getMonth()+1, //月份
|
||||||
|
"d+" : this.getDate(), //日
|
||||||
|
"h+" : this.getHours(), //小时
|
||||||
|
"m+" : this.getMinutes(), //分
|
||||||
|
"s+" : this.getSeconds(), //秒
|
||||||
|
"q+" : Math.floor((this.getMonth()+3)/3), //季度
|
||||||
|
"S" : this.getMilliseconds() //毫秒
|
||||||
|
};
|
||||||
|
if(/(y+)/.test(fmt))
|
||||||
|
fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));
|
||||||
|
for(var k in o)
|
||||||
|
if(new RegExp("("+ k +")").test(fmt))
|
||||||
|
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
|
||||||
|
return fmt;
|
||||||
|
}
|
7
common/filters.js
Normal file
7
common/filters.js
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
import Vue from 'vue';
|
||||||
|
let vm = new Vue();
|
||||||
|
|
||||||
|
// 测试过滤器
|
||||||
|
export function toUpperCase(arg) {
|
||||||
|
return arg && arg.toUpperCase();
|
||||||
|
}
|
149
common/mqttTool.js
Normal file
149
common/mqttTool.js
Normal file
@ -0,0 +1,149 @@
|
|||||||
|
import projectConfig from '@/env.config.js';
|
||||||
|
|
||||||
|
var mqtt = require('mqtt/dist/mqtt.min.js')
|
||||||
|
var url = projectConfig.mqttServer;
|
||||||
|
|
||||||
|
let mqttTool = {
|
||||||
|
client: null
|
||||||
|
}
|
||||||
|
|
||||||
|
mqttTool.connect = function (token) {
|
||||||
|
let options = {
|
||||||
|
clientId: 'phone-' + Math.random().toString(16).substr(2),
|
||||||
|
username: 'fastbee',
|
||||||
|
password: token,
|
||||||
|
cleanSession: true,
|
||||||
|
keepalive: 30,
|
||||||
|
connectTimeout: 60000,
|
||||||
|
};
|
||||||
|
mqttTool.client = mqtt.connect(url, options);
|
||||||
|
// 连接成功
|
||||||
|
mqttTool.client.on('connect', function (res) {
|
||||||
|
console.log('mqtt连接成功');
|
||||||
|
});
|
||||||
|
// 重新连接
|
||||||
|
mqttTool.client.on('reconnect', function (res) {
|
||||||
|
console.log('mqtt重连');
|
||||||
|
});
|
||||||
|
// 发生错误
|
||||||
|
mqttTool.client.on('error', function (err) {
|
||||||
|
console.log('mqtt连接错误:', err);
|
||||||
|
uni.showToast({
|
||||||
|
icon: 'none',
|
||||||
|
title: 'mqtt连接错误',
|
||||||
|
});
|
||||||
|
});
|
||||||
|
// 断开连接
|
||||||
|
mqttTool.client.on('close', function (res) {
|
||||||
|
console.log('mqtt断开连接');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
mqttTool.end = function () {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
if (mqttTool.client == null) {
|
||||||
|
resolve('未连接')
|
||||||
|
console.log("未连接")
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
mqttTool.client.end()
|
||||||
|
mqttTool.client = null
|
||||||
|
resolve('连接终止')
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
mqttTool.reconnect = function () {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
if (mqttTool.client == null) {
|
||||||
|
// 调用resolve方法,Promise变为操作成功状态(fulfilled)
|
||||||
|
resolve('未连接')
|
||||||
|
console.log("未连接")
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
console.log('正在重连...', res);
|
||||||
|
mqttTool.client.reconnect()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
mqttTool.subscribe = function (topics) {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
if (mqttTool.client == null) {
|
||||||
|
resolve('未连接')
|
||||||
|
console.log("未连接")
|
||||||
|
uni.showToast({
|
||||||
|
icon: 'none',
|
||||||
|
title: 'mqtt未连接',
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
mqttTool.client.subscribe(topics, {
|
||||||
|
qos: 0
|
||||||
|
}, function (err, res) {
|
||||||
|
console.log("订阅主题:", topics);
|
||||||
|
if (!err && res.length > 0) {
|
||||||
|
console.log("订阅成功")
|
||||||
|
resolve('订阅成功')
|
||||||
|
} else {
|
||||||
|
console.log("订阅失败,主题可能已经订阅")
|
||||||
|
resolve('订阅失败')
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
mqttTool.unsubscribe = function (topics) {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
if (mqttTool.client == null) {
|
||||||
|
resolve('未连接')
|
||||||
|
console.log("未连接")
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
mqttTool.client.unsubscribe(topics, function (err) {
|
||||||
|
if (!err) {
|
||||||
|
resolve('取消订阅成功')
|
||||||
|
console.log("取消订阅成功")
|
||||||
|
} else {
|
||||||
|
resolve('取消订阅失败')
|
||||||
|
console.log("取消订阅失败")
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
mqttTool.publish = function (topic, message, name) {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
if (mqttTool.client == null) {
|
||||||
|
resolve('未连接')
|
||||||
|
console.log("未连接")
|
||||||
|
uni.showToast({
|
||||||
|
icon: 'none',
|
||||||
|
title: '已断开Mqtt连接',
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
mqttTool.client.publish(topic, message, function (err) {
|
||||||
|
if (!err) {
|
||||||
|
resolve(topic + '-' + message + '-发布成功')
|
||||||
|
console.log('发布主题:' + topic + ",内容:" + message);
|
||||||
|
uni.showToast({
|
||||||
|
icon: 'none',
|
||||||
|
title: "[ " + name + " ] 指令发送成功",
|
||||||
|
duration: 1000,
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
resolve(topic + '-' + message + '-发布失败')
|
||||||
|
console.log("发布失败")
|
||||||
|
uni.showToast({
|
||||||
|
icon: 'none',
|
||||||
|
title: "[ " + name + " ] 指令发送失败",
|
||||||
|
duration: 1000,
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export default mqttTool
|
1
common/qqmap-wx-jssdk.min.js
vendored
Normal file
1
common/qqmap-wx-jssdk.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
60
common/tools.js
Normal file
60
common/tools.js
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
const install = (Vue, vm) => {
|
||||||
|
|
||||||
|
Vue.prototype.$t = {
|
||||||
|
// 测试加法
|
||||||
|
toUpperCase(arg){
|
||||||
|
return arg && arg.toUpperCase();
|
||||||
|
},
|
||||||
|
// 转换字符串,undefined,null等转化为""
|
||||||
|
praseStrEmpty(str) {
|
||||||
|
if (!str || str == "undefined" || str == "null") {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
return str;
|
||||||
|
},
|
||||||
|
// 日期格式化
|
||||||
|
parseTime(time, pattern) {
|
||||||
|
if (arguments.length === 0 || !time) {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
const format = pattern || '{y}-{m}-{d} {h}:{i}:{s}'
|
||||||
|
let date
|
||||||
|
if (typeof time === 'object') {
|
||||||
|
date = time
|
||||||
|
} else {
|
||||||
|
if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {
|
||||||
|
time = parseInt(time)
|
||||||
|
} else if (typeof time === 'string') {
|
||||||
|
time = time.replace(new RegExp(/-/gm), '/').replace('T', ' ').replace(new RegExp(/\.[\d]{3}/gm),'');
|
||||||
|
}
|
||||||
|
if ((typeof time === 'number') && (time.toString().length === 10)) {
|
||||||
|
time = time * 1000
|
||||||
|
}
|
||||||
|
date = new Date(time)
|
||||||
|
}
|
||||||
|
const formatObj = {
|
||||||
|
y: date.getFullYear(),
|
||||||
|
m: date.getMonth() + 1,
|
||||||
|
d: date.getDate(),
|
||||||
|
h: date.getHours(),
|
||||||
|
i: date.getMinutes(),
|
||||||
|
s: date.getSeconds(),
|
||||||
|
a: date.getDay()
|
||||||
|
}
|
||||||
|
const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
|
||||||
|
let value = formatObj[key]
|
||||||
|
// Note: getDay() returns 0 on Sunday
|
||||||
|
if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value] }
|
||||||
|
if (result.length > 0 && value < 10) {
|
||||||
|
value = '0' + value
|
||||||
|
}
|
||||||
|
return value || 0
|
||||||
|
})
|
||||||
|
return time_str
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default {
|
||||||
|
install
|
||||||
|
}
|
180
components/circleProgress/circleProgress.vue
Normal file
180
components/circleProgress/circleProgress.vue
Normal file
@ -0,0 +1,180 @@
|
|||||||
|
<template>
|
||||||
|
<view
|
||||||
|
class="circle-progress"
|
||||||
|
:style="{
|
||||||
|
width: widthPx + 'px',
|
||||||
|
height: widthPx + 'px',
|
||||||
|
backgroundColor: bgColor
|
||||||
|
}"
|
||||||
|
>
|
||||||
|
<!-- 有的不支持canvas-id属性,必须用id属性 -->
|
||||||
|
<canvas
|
||||||
|
v-if="canvasId"
|
||||||
|
class="canvas-bg"
|
||||||
|
:canvas-id="canvasId"
|
||||||
|
:id="canvasId"
|
||||||
|
:style="{
|
||||||
|
width: widthPx + 'px',
|
||||||
|
height: widthPx + 'px'
|
||||||
|
}"
|
||||||
|
></canvas>
|
||||||
|
<canvas
|
||||||
|
class="canvas"
|
||||||
|
v-if="elId"
|
||||||
|
:canvas-id="elId"
|
||||||
|
:id="elId"
|
||||||
|
:style="{
|
||||||
|
width: widthPx + 'px',
|
||||||
|
height: widthPx + 'px'
|
||||||
|
}"
|
||||||
|
></canvas>
|
||||||
|
<slot></slot>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: 'circle-progress',
|
||||||
|
props: {
|
||||||
|
// 圆环进度百分比值
|
||||||
|
percent: {
|
||||||
|
type: Number,
|
||||||
|
default: 0,
|
||||||
|
// 值在0到100之间
|
||||||
|
validator: val => {
|
||||||
|
return val >= 0 && val <= 100;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 圆环底色(灰色的圆环)
|
||||||
|
inactiveColor: {
|
||||||
|
type: String,
|
||||||
|
default: '#ececec'
|
||||||
|
},
|
||||||
|
// 圆环激活部分的颜色
|
||||||
|
activeColor: {
|
||||||
|
type: String,
|
||||||
|
default: '#009dff'
|
||||||
|
},
|
||||||
|
// 圆环线条的宽度,单位rpx
|
||||||
|
borderWidth: {
|
||||||
|
type: [Number, String],
|
||||||
|
default: 14
|
||||||
|
},
|
||||||
|
// 整个圆形的宽度,单位rpx
|
||||||
|
width: {
|
||||||
|
type: [Number, String],
|
||||||
|
default: 200
|
||||||
|
},
|
||||||
|
// 整个圆环执行一圈的时间,单位ms
|
||||||
|
duration: {
|
||||||
|
type: [Number, String],
|
||||||
|
default: 1500
|
||||||
|
},
|
||||||
|
// 圆环进度区域的背景色
|
||||||
|
bgColor: {
|
||||||
|
type: String,
|
||||||
|
default: '#ffffff'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
canvasId: this.randomId(), //一个页面多个圆形进度
|
||||||
|
elId: this.randomId(),
|
||||||
|
widthPx: uni.upx2px(this.width), // 转成px后的整个组件的背景宽度
|
||||||
|
borderWidthPx: uni.upx2px(this.borderWidth), // 转成px后的圆环的宽度
|
||||||
|
startAngle: -Math.PI / 2, // canvas画圆的起始角度,默认为3点钟方向,定位到12点钟方向
|
||||||
|
progressContext: null, // 活动圆的canvas上下文
|
||||||
|
newPercent: 0, // 当动态修改进度值的时候,保存进度值的变化前后值,用于比较用
|
||||||
|
oldPercent: 0 // 当动态修改进度值的时候,保存进度值的变化前后值,用于比较用
|
||||||
|
};
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
percent(nVal, oVal = 0) {
|
||||||
|
if (nVal > 100) nVal = 100;
|
||||||
|
if (nVal < 0) oVal = 0;
|
||||||
|
this.newPercent = nVal;
|
||||||
|
this.oldPercent = oVal;
|
||||||
|
setTimeout(() => {
|
||||||
|
this.drawCircleByProgress(oVal);
|
||||||
|
}, 50);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
// 赋值,用于加载后第一个画圆使用
|
||||||
|
this.newPercent = this.percent;
|
||||||
|
this.oldPercent = 0;
|
||||||
|
},
|
||||||
|
|
||||||
|
mounted() {
|
||||||
|
this.drawProgressBg();
|
||||||
|
this.drawCircleByProgress(this.oldPercent);
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
//一个页面多个progress时ID需不同
|
||||||
|
randomId(){
|
||||||
|
return 'progressId'+parseInt(Math.random()*1000000)
|
||||||
|
},
|
||||||
|
drawProgressBg() {
|
||||||
|
let ctx = uni.createCanvasContext(this.canvasId, this);
|
||||||
|
ctx.setLineWidth(this.borderWidthPx); // 设置圆环宽度
|
||||||
|
ctx.setStrokeStyle(this.inactiveColor); // 线条颜色
|
||||||
|
ctx.beginPath(); // 开始描绘路径
|
||||||
|
let radius = this.widthPx / 2;
|
||||||
|
ctx.arc(radius, radius, radius - this.borderWidthPx, 0, 2 * Math.PI, false);
|
||||||
|
ctx.stroke(); // 对路径进行描绘
|
||||||
|
ctx.draw();
|
||||||
|
},
|
||||||
|
drawCircleByProgress(progress) {
|
||||||
|
if (this.oldPercent === 0 && this.newPercent === 0) { return; }
|
||||||
|
let ctx = this.progressContext;
|
||||||
|
if (!ctx) {
|
||||||
|
ctx = uni.createCanvasContext(this.elId, this);
|
||||||
|
this.progressContext = ctx;
|
||||||
|
}
|
||||||
|
// 表示进度的两端为圆形
|
||||||
|
ctx.setLineCap('round');
|
||||||
|
// 设置线条的宽度和颜色
|
||||||
|
ctx.setLineWidth(this.borderWidthPx);
|
||||||
|
ctx.setStrokeStyle(this.activeColor);
|
||||||
|
// 计算过渡时间
|
||||||
|
let time = Math.floor(this.duration / 200);
|
||||||
|
let endAngle = ((2 * Math.PI) / 100) * progress + this.startAngle;
|
||||||
|
ctx.beginPath();
|
||||||
|
// 半径为整个canvas宽度的一半
|
||||||
|
let radius = this.widthPx / 2;
|
||||||
|
ctx.arc(radius, radius, radius - this.borderWidthPx, this.startAngle, endAngle, false);
|
||||||
|
ctx.stroke();
|
||||||
|
ctx.draw();
|
||||||
|
// 增大了百分比
|
||||||
|
if (this.newPercent > this.oldPercent) {
|
||||||
|
progress++;
|
||||||
|
if (progress > this.newPercent) return;
|
||||||
|
} else {
|
||||||
|
// 减少百分比
|
||||||
|
progress--;
|
||||||
|
if (progress < this.newPercent) return;
|
||||||
|
}
|
||||||
|
setTimeout(() => {
|
||||||
|
// 定时器,为了让进度条有动画效果
|
||||||
|
this.drawCircleByProgress(progress);
|
||||||
|
}, time);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.circle-progress {
|
||||||
|
position: relative;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
margin:auto;
|
||||||
|
}
|
||||||
|
.canvas-bg {
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
.canvas {
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
</style>
|
38
components/cl-icon/cl-icon.vue
Normal file
38
components/cl-icon/cl-icon.vue
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
<template>
|
||||||
|
<view :class="'iconfont ' + type" :style="{ color: color,'line-height':size + 'px', 'font-size': size + 'px' }"
|
||||||
|
@click="_onClick" />
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: 'UniIcon',
|
||||||
|
props: {
|
||||||
|
type: {
|
||||||
|
type: String,
|
||||||
|
default: ''
|
||||||
|
},
|
||||||
|
color: {
|
||||||
|
type: String,
|
||||||
|
default: '#333333'
|
||||||
|
},
|
||||||
|
size: {
|
||||||
|
type: [Number, String],
|
||||||
|
default: 20
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
_onClick() {
|
||||||
|
this.$emit('click')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
@import './iconfont.css';
|
||||||
|
|
||||||
|
.iconfont {
|
||||||
|
display: inline-block;
|
||||||
|
font-weight: 400;
|
||||||
|
}
|
||||||
|
</style>
|
19
components/cl-icon/iconfont.css
Normal file
19
components/cl-icon/iconfont.css
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
@font-face {
|
||||||
|
font-family: "iconfont"; /* Project id 2505219 */
|
||||||
|
src: url('iconfont.woff2?t=1626686156492') format('woff2'),
|
||||||
|
url('iconfont.woff?t=1626686156492') format('woff'),
|
||||||
|
url('iconfont.ttf?t=1626686156492') format('truetype');
|
||||||
|
}
|
||||||
|
|
||||||
|
.iconfont {
|
||||||
|
font-family: "iconfont" !important;
|
||||||
|
font-size: 16px;
|
||||||
|
font-style: normal;
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
-moz-osx-font-smoothing: grayscale;
|
||||||
|
}
|
||||||
|
|
||||||
|
.iconlaba:before {
|
||||||
|
content: "\e600";
|
||||||
|
}
|
||||||
|
|
16
components/cl-icon/iconfont.json
Normal file
16
components/cl-icon/iconfont.json
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"id": "2505219",
|
||||||
|
"name": "uniapp 插件市场",
|
||||||
|
"font_family": "iconfont",
|
||||||
|
"css_prefix_text": "icon",
|
||||||
|
"description": "",
|
||||||
|
"glyphs": [
|
||||||
|
{
|
||||||
|
"icon_id": "8478792",
|
||||||
|
"name": "喇叭",
|
||||||
|
"font_class": "laba",
|
||||||
|
"unicode": "e600",
|
||||||
|
"unicode_decimal": 58880
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
BIN
components/cl-icon/iconfont.ttf
Normal file
BIN
components/cl-icon/iconfont.ttf
Normal file
Binary file not shown.
BIN
components/cl-icon/iconfont.woff
Normal file
BIN
components/cl-icon/iconfont.woff
Normal file
Binary file not shown.
BIN
components/cl-icon/iconfont.woff2
Normal file
BIN
components/cl-icon/iconfont.woff2
Normal file
Binary file not shown.
38
components/cl-icon/index.vue
Normal file
38
components/cl-icon/index.vue
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
<template>
|
||||||
|
<view :class="'iconfont ' + type" :style="{ color: color,'line-height':size + 'px', 'font-size': size + 'px' }"
|
||||||
|
@click="_onClick" />
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: 'UniIcon',
|
||||||
|
props: {
|
||||||
|
type: {
|
||||||
|
type: String,
|
||||||
|
default: ''
|
||||||
|
},
|
||||||
|
color: {
|
||||||
|
type: String,
|
||||||
|
default: '#333333'
|
||||||
|
},
|
||||||
|
size: {
|
||||||
|
type: [Number, String],
|
||||||
|
default: 20
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
_onClick() {
|
||||||
|
this.$emit('click')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
@import './iconfont.css';
|
||||||
|
|
||||||
|
.iconfont {
|
||||||
|
display: inline-block;
|
||||||
|
font-weight: 400;
|
||||||
|
}
|
||||||
|
</style>
|
33
components/cl-icon/readme.md
Normal file
33
components/cl-icon/readme.md
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
### Tag 标签
|
||||||
|
|
||||||
|
图标
|
||||||
|
项目图标当前管理者1209559047@qq.com
|
||||||
|
|
||||||
|
**使用方式:**
|
||||||
|
|
||||||
|
在 ``script`` 中引用组件
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
import mIcon from "@/components/m-icon/m-icon.vue"
|
||||||
|
export default {
|
||||||
|
components: {mIcon},
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
在 ``template`` 中使用组件
|
||||||
|
|
||||||
|
```html
|
||||||
|
<mIcon type="test" :size="20"></mIcon>
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
**属性说明:**
|
||||||
|
|
||||||
|
|属性名 |类型 |默认值 |说明 |
|
||||||
|
|--- |---- |--- |--- |
|
||||||
|
|
||||||
|
**事件说明:**
|
||||||
|
|
||||||
|
|事件称名|说明|
|
||||||
|
|---|----|---|
|
||||||
|
|click|接管了点击事件|
|
19
components/cl-test/cl-test.vue
Normal file
19
components/cl-test/cl-test.vue
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
<template>
|
||||||
|
<view>
|
||||||
|
我是cl-test组件
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
|
||||||
|
</style>
|
19
components/cl-test/index.vue
Normal file
19
components/cl-test/index.vue
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
<template>
|
||||||
|
<view>
|
||||||
|
我是cl-test组件
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
|
||||||
|
</style>
|
1053
components/cropping/index.vue
Normal file
1053
components/cropping/index.vue
Normal file
File diff suppressed because it is too large
Load Diff
216
components/model/vip-model.vue
Normal file
216
components/model/vip-model.vue
Normal file
@ -0,0 +1,216 @@
|
|||||||
|
<template>
|
||||||
|
<u-popup :show="isShow" :round="10" :closeOnClickOverlay="false" mode="bottom" closeable overlay @close="hadleClose"
|
||||||
|
@open="hadleOpen">
|
||||||
|
<view class="vip-wrap">
|
||||||
|
<view class="title">
|
||||||
|
<u--text type="info" text="当前账号未开通会员"></u--text>
|
||||||
|
</view>
|
||||||
|
<view class="recharge">
|
||||||
|
<view class="recharge-item" :class="current == index ? 'recharge-item-active': ''"
|
||||||
|
v-for="(item, index) in memberGrade" :key="index" @click="handleRechargeItem(index)">
|
||||||
|
<view class="recharge-tag">
|
||||||
|
<text class="recharge-tag-text"
|
||||||
|
v-if="parseInt(item.validDay) > 0">{{ item.validDay }}天有效期</text>
|
||||||
|
<text class="recharge-tag-text" v-else>永久有效期</text>
|
||||||
|
</view>
|
||||||
|
<text class="recharge-item-duration">{{ item.name }}</text>
|
||||||
|
<view class="recharge-item-price">
|
||||||
|
<text class="rmb">¥</text>
|
||||||
|
<text class="recharge-item-price-text">{{ item.catchValue }}</text>
|
||||||
|
</view>
|
||||||
|
<text class="recharge-item-des"
|
||||||
|
v-if="item.validDay > 30">折合¥{{ Math.round((item.catchValue/item.validDay)*30 * 100) / 100 }}/月</text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="agreement">
|
||||||
|
<checkbox-group @change="handleClauseCheckbox">
|
||||||
|
<label>
|
||||||
|
<checkbox :checked="isClause" style="transform:scale(0.6)" />
|
||||||
|
</label>
|
||||||
|
<text class="check_text">
|
||||||
|
<text>已阅读并勾选</text>
|
||||||
|
<text class="service" @click="handleService">《会员服务协议》</text>
|
||||||
|
</text>
|
||||||
|
</checkbox-group>
|
||||||
|
</view>
|
||||||
|
<view class="bug-btn-wrap">
|
||||||
|
<u-button type="warning" shape="circle" text="立即购买" @click="handleBug"></u-button>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</u-popup>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
props: {
|
||||||
|
show: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
required: true
|
||||||
|
},
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
// 兼容小程序
|
||||||
|
show: function (newVal, oldVal) {
|
||||||
|
this.isShow = newVal;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
data () {
|
||||||
|
return {
|
||||||
|
isShow: false,
|
||||||
|
// 会员信息
|
||||||
|
memberGrade: [{
|
||||||
|
name: '年度会员',
|
||||||
|
validDay: 365,
|
||||||
|
catchValue: 33
|
||||||
|
}, {
|
||||||
|
name: '月度会员',
|
||||||
|
validDay: 30,
|
||||||
|
catchValue: 5
|
||||||
|
}],
|
||||||
|
current: 0, // 当前会员类型选项
|
||||||
|
isClause: false, // 勾选协议
|
||||||
|
};
|
||||||
|
},
|
||||||
|
created () {
|
||||||
|
// 获取设备状态(兼容H5和APP)
|
||||||
|
if (this.show) {
|
||||||
|
this.isShow = this.show;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
hadleClose (e) {
|
||||||
|
this.$emit('close');
|
||||||
|
},
|
||||||
|
hadleOpen (e) {
|
||||||
|
this.$emit('open', e);
|
||||||
|
},
|
||||||
|
// 选择会员类型
|
||||||
|
handleRechargeItem (index) {
|
||||||
|
this.current = index
|
||||||
|
},
|
||||||
|
// 勾选协议
|
||||||
|
handleClauseCheckbox () {
|
||||||
|
this.isClause = !this.isClause;
|
||||||
|
},
|
||||||
|
// 购买
|
||||||
|
handleBug () {
|
||||||
|
if (this.isClause) {
|
||||||
|
uni.showToast({
|
||||||
|
icon: 'none',
|
||||||
|
title: '功能开发中,敬请期待!'
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
uni.showToast({
|
||||||
|
icon: 'none',
|
||||||
|
title: '请先阅读并勾选协议'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
handleService () {}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.vip-wrap {
|
||||||
|
padding: 10px;
|
||||||
|
|
||||||
|
.title {
|
||||||
|
padding: 10px
|
||||||
|
}
|
||||||
|
|
||||||
|
.recharge {
|
||||||
|
position: relative;
|
||||||
|
margin: 10px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
|
||||||
|
&-tag {
|
||||||
|
position: absolute;
|
||||||
|
top: -2rpx;
|
||||||
|
left: -2rpx;
|
||||||
|
width: 170rpx;
|
||||||
|
height: 36rpx;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
background-image: url('/static/tag.png');
|
||||||
|
background-size: 100%;
|
||||||
|
|
||||||
|
&-text {
|
||||||
|
font-size: 20rpx;
|
||||||
|
color: #FFFFFF;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&-item {
|
||||||
|
position: relative;
|
||||||
|
padding: 40rpx 0;
|
||||||
|
width: 40%;
|
||||||
|
height: 123px;
|
||||||
|
flex-shrink: 0;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
border: solid 1rpx #CBCCCE;
|
||||||
|
border-radius: 12rpx;
|
||||||
|
|
||||||
|
&:not(:first-child) {
|
||||||
|
margin-left: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-active {
|
||||||
|
border: solid 2rpx #EDD2A9;
|
||||||
|
background-color: #FBF1E5;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-duration {
|
||||||
|
margin: 10px 0;
|
||||||
|
font-size: 16px;
|
||||||
|
color: #1C1C1C;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-price {
|
||||||
|
margin-bottom: 20rpx;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: baseline;
|
||||||
|
|
||||||
|
&-text {
|
||||||
|
font-size: 38px;
|
||||||
|
color: #E3BE83;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&-des {
|
||||||
|
font-size: 22rpx;
|
||||||
|
color: #A5A3A2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.agreement {
|
||||||
|
padding: 10px;
|
||||||
|
font-size: 14px;
|
||||||
|
|
||||||
|
.check_text {
|
||||||
|
display: inline-block;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.service {
|
||||||
|
color: #3c9cff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.bug-btn-wrap {
|
||||||
|
margin-top: 10px;
|
||||||
|
padding: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
122
components/navBar/index.vue
Normal file
122
components/navBar/index.vue
Normal file
@ -0,0 +1,122 @@
|
|||||||
|
<template>
|
||||||
|
<view class="navbar">
|
||||||
|
<view class="fixed">
|
||||||
|
<!-- 状态栏站位 -->
|
||||||
|
<view :style="{height: statusBarHeight + 'px'}"></view>
|
||||||
|
<!-- 导航栏内容 -->
|
||||||
|
<view class="content" :style="{height: navbarHeight + 'px', width: windowWidth + 'px'}">
|
||||||
|
<view class="title">
|
||||||
|
<view class="icon" v-if="isBack">
|
||||||
|
<u-icon name="arrow-left" :color="color" size="18" @click="handleGoBack"></u-icon>
|
||||||
|
</view>
|
||||||
|
<view class="text" :style="{marginLeft: menuButtonWidth + 'px', color: color}">
|
||||||
|
<slot></slot>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<!-- 下面的45px元素是为了将内容挤下去 -->
|
||||||
|
<view :style="{height: computedHeight + 'px'}"></view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import { handleError } from 'vue';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: "NavBar",
|
||||||
|
props: {
|
||||||
|
color: {
|
||||||
|
type: String,
|
||||||
|
default: '#000000',
|
||||||
|
},
|
||||||
|
isBack: {
|
||||||
|
type: Boolean,
|
||||||
|
default: true,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
statusBarHeight: 20,
|
||||||
|
navbarHeight: 45,
|
||||||
|
windowWidth: 375,
|
||||||
|
menuButtonWidth: 0,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
computedHeight() {
|
||||||
|
return this.statusBarHeight + this.navbarHeight
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
// 获取手机系统信息
|
||||||
|
const info = uni.getSystemInfoSync()
|
||||||
|
// 设置状态栏高度
|
||||||
|
this.statusBarHeight = info.statusBarHeight
|
||||||
|
this.windowWidth = info.windowWidth
|
||||||
|
|
||||||
|
/* h5 app mp-ali都是不支持getMenuButtonBoundingClientRect这个api的 */
|
||||||
|
/* 微信、百度、QQ都是支持getMenuButtonBoundingClientRect这个api的 */
|
||||||
|
// #ifndef H5 || APP-PLUS || MP-ALIPAY
|
||||||
|
// 获取微信小程序胶囊的位置
|
||||||
|
const menuButtonInfo = uni.getMenuButtonBoundingClientRect()
|
||||||
|
// (胶囊底部高度 - 状态栏高度) + (胶囊顶部高度 - 状态栏高度) = 导航栏高度
|
||||||
|
this.navbarHeight = (menuButtonInfo.bottom - info.statusBarHeight) + (menuButtonInfo.top - info
|
||||||
|
.statusBarHeight)
|
||||||
|
// 动态计算导航栏宽度
|
||||||
|
this.windowWidth = menuButtonInfo.left
|
||||||
|
// 胶囊宽度
|
||||||
|
this.menuButtonWidth = menuButtonInfo.width;
|
||||||
|
// #endif
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
// 返回
|
||||||
|
handleGoBack() {
|
||||||
|
uni.navigateBack();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
.navbar {
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
.fixed {
|
||||||
|
position: fixed;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
top: 0;
|
||||||
|
|
||||||
|
.content {
|
||||||
|
position: relative;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
.title {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
|
||||||
|
.icon {
|
||||||
|
position: absolute;
|
||||||
|
left: 20rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.text {
|
||||||
|
font-weight: 400;
|
||||||
|
font-size: 34rpx;
|
||||||
|
line-height: 50rpx;
|
||||||
|
text-align: center;
|
||||||
|
font-style: normal;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
overflow: hidden;
|
||||||
|
padding: 0 80rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
415
components/weather/index.vue
Normal file
415
components/weather/index.vue
Normal file
@ -0,0 +1,415 @@
|
|||||||
|
<template>
|
||||||
|
<view class="weather-wrap" :style="[weatherBg(nowData.code)]" @click="handleLocation">
|
||||||
|
<view class="content-wrap">
|
||||||
|
<view style="display: inline-block;">
|
||||||
|
<view class="temp-wrap">
|
||||||
|
<view class="num-wrap">
|
||||||
|
<view v-if="nowData.temperature" class="temperature">
|
||||||
|
{{nowData.temperature}}℃
|
||||||
|
</view>
|
||||||
|
<view v-if="nowData.temperature" class="text">
|
||||||
|
/ {{nowData.text}}
|
||||||
|
</view>
|
||||||
|
<view v-else class="null-data"></view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="city-wrap">
|
||||||
|
<view class="city" style="display: flex;margin-left: 0.5rem">
|
||||||
|
<u-icon name="map" color="#606266" size="16"></u-icon>
|
||||||
|
<text class="city-name" v-if="nowData.city">
|
||||||
|
{{nowData.city}} {{$u.timeFormat(nowData.time, 'mm-dd hh:MM')}}</text>
|
||||||
|
<view v-else class="null-loc-wrap">
|
||||||
|
<view>{{$tt('home.location')}}</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="img-wrap">
|
||||||
|
<image :src="`/static/weather/${nowData.code}@1x.png`" style="width: 176rpx; height: 176rpx;"
|
||||||
|
mode="aspectFit"></image>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view style="border: 1px solid rgba(0,0,0,0.05);"></view>
|
||||||
|
<view class="bottom-wrap">
|
||||||
|
<view class="item-wrap" v-for="(item,index) in nextData" :key="index">
|
||||||
|
<view class="i-top-wrap">
|
||||||
|
<view v-if="index===0" class="point">
|
||||||
|
</view>
|
||||||
|
<text>{{item.date_text}}</text>
|
||||||
|
<text style="margin-left: 10rpx;">{{item.date}}</text>
|
||||||
|
</view>
|
||||||
|
<view class="i-bot-wrap">
|
||||||
|
<image :src="'/static/weather/'+item.code_day+'@1x.png'" style="width: 50rpx; height: 50rpx;"
|
||||||
|
mode="aspectFit"></image>
|
||||||
|
<text v-if="item.high && item.low" style="margin-left: 30rpx;">{{item.high}}°/{{item.low}}°</text>
|
||||||
|
<text v-else class="null-data"></text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
Date.prototype.formatCode = function(formatStr = "yyyy-MM-DD HH:mm:ss") {
|
||||||
|
const paddingZero = num => num >= 10 ? num : '0' + num;
|
||||||
|
let str = formatStr;
|
||||||
|
str = str.replace(/yyyy|YYYY/, this.getFullYear());
|
||||||
|
str = str.replace(/MM/, paddingZero(this.getMonth() + 1));
|
||||||
|
str = str.replace(/dd|DD/, paddingZero(this.getDate()));
|
||||||
|
str = str.replace(/hh|HH/, paddingZero(this.getHours()));
|
||||||
|
str = str.replace(/mm/, paddingZero(this.getMinutes()));
|
||||||
|
str = str.replace(/ss/, paddingZero(this.getSeconds()));
|
||||||
|
str = str.replace(/SS/, paddingZero(this.getMilliseconds()));
|
||||||
|
return str;
|
||||||
|
};
|
||||||
|
|
||||||
|
import projectConfig from '@/env.config.js';
|
||||||
|
import QQMapWX from "@/common/qqmap-wx-jssdk.min.js";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'weather',
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
// 天气数据
|
||||||
|
nowData: {
|
||||||
|
code: "10",
|
||||||
|
temperature: "",
|
||||||
|
text: "阵雨",
|
||||||
|
city: "",
|
||||||
|
time: ""
|
||||||
|
},
|
||||||
|
nextData: [{
|
||||||
|
date_text: '今天',
|
||||||
|
code_day: "10",
|
||||||
|
date: "08/14",
|
||||||
|
high: "",
|
||||||
|
low: "",
|
||||||
|
}, {
|
||||||
|
date_text: '明天',
|
||||||
|
code_day: "4",
|
||||||
|
date: "08/15",
|
||||||
|
high: "",
|
||||||
|
low: "",
|
||||||
|
}, {
|
||||||
|
date_text: '后天',
|
||||||
|
code_day: "4",
|
||||||
|
date: "08/16",
|
||||||
|
high: "",
|
||||||
|
low: "",
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
// 由于权限问题,app 平台除外,其他平台自动定位
|
||||||
|
// #ifndef APP-PLUS
|
||||||
|
this.initData();
|
||||||
|
// #endif
|
||||||
|
|
||||||
|
// #ifdef APP-PLUS
|
||||||
|
const location = uni.getStorageSync('location');
|
||||||
|
if (location) {
|
||||||
|
this.initData();
|
||||||
|
}
|
||||||
|
// #endif
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
weatherBg() {
|
||||||
|
return icon => {
|
||||||
|
if (icon >= '0' && icon <= '1') {
|
||||||
|
return {
|
||||||
|
background: 'linear-gradient( 50deg, #F8F9F3 0%, #FDD563 100%)'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (icon >= '2' && icon <= '12') {
|
||||||
|
return {
|
||||||
|
background: 'linear-gradient( 50deg, #E5F5FF 0%, #B1CEFE 100%)'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (icon >= '13' && icon <= '17') {
|
||||||
|
return {
|
||||||
|
background: 'linear-gradient( 50deg, #F1E7FD 0%, #9EABFF 100%)'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (icon >= '18' && icon <= '20') {
|
||||||
|
return {
|
||||||
|
background: 'linear-gradient( 50deg, #EEF0F2 0%, #E9EBF2 100%)'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (icon >= '21' && icon <= '30') {
|
||||||
|
return {
|
||||||
|
background: 'linear-gradient( 50deg, #E9EBF2 0%, #BCC4E0 100%)'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (icon >= '32' && icon <= '34') {
|
||||||
|
return {
|
||||||
|
background: 'linear-gradient( 50deg, #F8EEE4 0%, #F1D4B0 100%)'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
background: 'linear-gradient(235deg, #EEF5FF 0%, #D6DDEE 100%)'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
initData() {
|
||||||
|
this.getLocation();
|
||||||
|
},
|
||||||
|
format(index) {
|
||||||
|
var b = "";
|
||||||
|
switch (index) {
|
||||||
|
case 0:
|
||||||
|
b = "星期日";
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
b = "星期一";
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
b = "星期二";
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
b = "星期三";
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
b = "星期四";
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
b = "星期五";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
b = "星期六";
|
||||||
|
}
|
||||||
|
return b;
|
||||||
|
},
|
||||||
|
// 获取定位查询天气
|
||||||
|
getLocation() {
|
||||||
|
console.log('获取定位');
|
||||||
|
let _this = this;
|
||||||
|
uni.getLocation({
|
||||||
|
type: 'wgs84',
|
||||||
|
success(res) {
|
||||||
|
_this.getCurrWeather(res);
|
||||||
|
_this.getNextWeather(res);
|
||||||
|
},
|
||||||
|
fail(e) {
|
||||||
|
console.log(e);
|
||||||
|
uni.showToast({
|
||||||
|
title: '无法获取定位',
|
||||||
|
icon: 'none'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 获取天气信息
|
||||||
|
getCurrWeather(ad) {
|
||||||
|
let _this = this;
|
||||||
|
uni.request({
|
||||||
|
url: 'https://api.seniverse.com/v3/weather/now.json',
|
||||||
|
data: {
|
||||||
|
key: projectConfig.xinzhiKey,
|
||||||
|
location: `${ad.latitude}:${ad.longitude}`,
|
||||||
|
},
|
||||||
|
success(res) {
|
||||||
|
const { statusCode, data } = res;
|
||||||
|
uni.showToast({
|
||||||
|
image: '/static/right.png',
|
||||||
|
title: data.results[0].now,
|
||||||
|
})
|
||||||
|
if (statusCode === 200) {
|
||||||
|
_this.nowData = {
|
||||||
|
...data.results[0].now,
|
||||||
|
city: data.results[0].location.name,
|
||||||
|
time: data.results[0].last_update
|
||||||
|
};
|
||||||
|
console.log(data, _this.nowData, '_this.nowData');
|
||||||
|
} else {
|
||||||
|
console.log('获取当前天气信息失败!');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
fail(err) {
|
||||||
|
console.log('获取当前天气信息失败!', err);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
getNextWeather(ad) {
|
||||||
|
let _this = this;
|
||||||
|
uni.request({
|
||||||
|
url: 'https://api.seniverse.com/v3/weather/daily.json',
|
||||||
|
data: {
|
||||||
|
key: projectConfig.xinzhiKey,
|
||||||
|
location: `${ad.latitude}:${ad.longitude}`,
|
||||||
|
},
|
||||||
|
success(res) {
|
||||||
|
const { statusCode, data } = res;
|
||||||
|
if (statusCode === 200) {
|
||||||
|
_this.nextData = _this.formNextData(data.results[0].daily);
|
||||||
|
console.log(_this.nextData, '_this.nextData');
|
||||||
|
} else {
|
||||||
|
console.log('获取未来3天天气信息失败!');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
fail(err) {
|
||||||
|
console.log('获取未来3天天气信息失败!', err);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
formNextData(list) {
|
||||||
|
return list.map((item, index) => ({
|
||||||
|
...item,
|
||||||
|
date: `${item.date.split('-')[1]}/${item.date.split('-')[2]}`,
|
||||||
|
date_text: index === 0 ? '今天' : index === 1 ? '明天' : '后天',
|
||||||
|
}))
|
||||||
|
},
|
||||||
|
// 点击界面获取定位
|
||||||
|
async handleLocation() {
|
||||||
|
// 权限问题,app 平台需要判断
|
||||||
|
// #ifdef APP-PLUS
|
||||||
|
const location = uni.getStorageSync('location');
|
||||||
|
if (!location) {
|
||||||
|
let result = await this.$store.dispatch("permission/requestPermissions", 'ACCESS_FINE_LOCATION');
|
||||||
|
if (result !== 1) return;
|
||||||
|
uni.setStorageSync('location', true);
|
||||||
|
}
|
||||||
|
// #endif
|
||||||
|
// 其他平台直接获取定位
|
||||||
|
this.getLocation();
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.weather-wrap {
|
||||||
|
position: relative;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: center;
|
||||||
|
border-radius: 36rpx;
|
||||||
|
padding: 20rpx;
|
||||||
|
height: 100%;
|
||||||
|
box-sizing: border-box;
|
||||||
|
|
||||||
|
.content-wrap {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
padding: 20rpx 20rpx 10rpx;
|
||||||
|
|
||||||
|
.temp-wrap {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: flex-start;
|
||||||
|
padding: 10rpx 0;
|
||||||
|
|
||||||
|
.num-wrap {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
height: 100rpx;
|
||||||
|
|
||||||
|
.temperature {
|
||||||
|
margin: 0.56rem 0.5rem 0;
|
||||||
|
font-size: 76rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.text {
|
||||||
|
margin: 1.8rem 0.1rem 0;
|
||||||
|
font-size: 34rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.img-wrap {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.city-wrap {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
padding: 20rpx 0rpx;
|
||||||
|
|
||||||
|
.city {
|
||||||
|
font-size: 36rpx;
|
||||||
|
|
||||||
|
.city-name {
|
||||||
|
margin-left: 0.3rem;
|
||||||
|
font-weight: 400;
|
||||||
|
font-size: 26rpx;
|
||||||
|
color: #7E7F79;
|
||||||
|
line-height: 28rpx;
|
||||||
|
text-align: left;
|
||||||
|
font-style: normal;
|
||||||
|
text-transform: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.null-loc-wrap {
|
||||||
|
font-size: 28rpx;
|
||||||
|
text-align: center;
|
||||||
|
margin-left: 10rpx;
|
||||||
|
|
||||||
|
.loc {
|
||||||
|
margin-top: 6rpx;
|
||||||
|
font-size: 22rpx;
|
||||||
|
color: #888;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.bottom-wrap {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
padding: 20rpx;
|
||||||
|
font-size: 28rpx;
|
||||||
|
|
||||||
|
.item-wrap {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
margin-top: 10rpx;
|
||||||
|
background: rgba(255, 255, 255, 0.22);
|
||||||
|
border: 1px solid rgba(255, 255, 255, 0.41);
|
||||||
|
border-radius: 20rpx;
|
||||||
|
padding: 10rpx;
|
||||||
|
width: 28%;
|
||||||
|
|
||||||
|
.i-top-wrap {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
.point {
|
||||||
|
width: 8rpx;
|
||||||
|
height: 8rpx;
|
||||||
|
background: #005EFF;
|
||||||
|
margin-right: 10rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.i-bot-wrap {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: center;
|
||||||
|
margin-top: 10rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.null-data {
|
||||||
|
border-bottom: 10rpx solid #000000;
|
||||||
|
width: 60rpx;
|
||||||
|
transform: scaleY(0.5);
|
||||||
|
border-top-color: #000000;
|
||||||
|
border-right-color: #000000;
|
||||||
|
border-left-color: #000000;
|
||||||
|
margin-left: 30rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
37
env.config.js
Normal file
37
env.config.js
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
// H5端开发和生产环境协议
|
||||||
|
let protocalDev = "wss://";
|
||||||
|
let protocalProd = "wss://";
|
||||||
|
|
||||||
|
// 条件编译,微信端和移动端使用wxs协议
|
||||||
|
// #ifdef MP-WEIXIN || APP-PLUS
|
||||||
|
protocalDev = 'wxs://';
|
||||||
|
protocalProd = 'wxs://';
|
||||||
|
// #endif
|
||||||
|
|
||||||
|
// 腾讯地图key
|
||||||
|
let qqmapKey = '4PDBZ-4KQKU-AX6VO-GU7NB-INDZJ-YBFXC';
|
||||||
|
|
||||||
|
// 心知天气key
|
||||||
|
let xinzhiKey = 'SBh45_yy21FU5ErV_';
|
||||||
|
|
||||||
|
const CONFIG = {
|
||||||
|
// 开发环境配置
|
||||||
|
development: {
|
||||||
|
officialWebUrl: 'https://iot-xcwl.cn/',
|
||||||
|
baseUrl: 'https://iot-xcwl.cn/prod-api/',
|
||||||
|
mqttServer: protocalProd + 'iot-xcwl.cn/mqtt',
|
||||||
|
decoderUrl: 'https://iot-xcwl.cn/',
|
||||||
|
qqmapKey,
|
||||||
|
xinzhiKey,
|
||||||
|
},
|
||||||
|
// 生产环境配置
|
||||||
|
production: {
|
||||||
|
officialWebUrl: 'https://iot-xcwl.cn/',
|
||||||
|
baseUrl: 'https://iot-xcwl.cn/prod-api/',
|
||||||
|
mqttServer: protocalProd + 'iot-xcwl.cn/mqtt',
|
||||||
|
decoderUrl: 'https://iot-xcwl.cn/',
|
||||||
|
qqmapKey,
|
||||||
|
xinzhiKey,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
export default CONFIG[process.env.NODE_ENV];
|
55
helpers/common.js
Normal file
55
helpers/common.js
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
/**
|
||||||
|
* 获取sip状态名称、颜色等信息
|
||||||
|
* @param {Number} value 状态id
|
||||||
|
* @returns {Object} { id, name, type }
|
||||||
|
*/
|
||||||
|
export function getSipStatusInfo (id) {
|
||||||
|
if (id === 1) {
|
||||||
|
return { id: id, name: '未使用', type: 'info' };
|
||||||
|
}else if (id === 2) {
|
||||||
|
return { id: id, name: '禁用', type: 'info' };
|
||||||
|
} else if (id === 3) {
|
||||||
|
return { id: id, name: '在线', type: 'success' };
|
||||||
|
} else if (id === 4) {
|
||||||
|
return { id: id, name: '离线', type: 'warning' };
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取device状态名称、颜色等信息
|
||||||
|
* @param {Number} value 状态id
|
||||||
|
* @returns {Object} { id, name, type }
|
||||||
|
*/
|
||||||
|
export function getDeviceStatusInfo (id) {
|
||||||
|
if (id === 1) {
|
||||||
|
return { id: id, name: '未激活', type: 'info' };
|
||||||
|
} else if (id === 2) {
|
||||||
|
return { id: id, name: '禁用', type: 'info' };
|
||||||
|
} else if (id === 3) {
|
||||||
|
return { id: id, name: '在线', type: 'success' };
|
||||||
|
} else if (id === 4) {
|
||||||
|
return { id: id, name: '离线', type: 'warning' };
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取状态名称、颜色等信息
|
||||||
|
* @param {Number} value 定位方式id
|
||||||
|
* @returns {Object} { id, name }
|
||||||
|
*/
|
||||||
|
export function getLocationWayInfo (id) {
|
||||||
|
if (id === 1) {
|
||||||
|
return { id: id, name: '自动定位' };
|
||||||
|
} else if (id === 2) {
|
||||||
|
return { id: id, name: '设备定位' };
|
||||||
|
} else if (id === 3) {
|
||||||
|
return { id: id, name: '自定义位置' };
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
870
locale/en-US.json
Normal file
870
locale/en-US.json
Normal file
@ -0,0 +1,870 @@
|
|||||||
|
{
|
||||||
|
"locale.auto": "System",
|
||||||
|
"locale.en-US": "English",
|
||||||
|
"locale.zh-CN": "简体中文",
|
||||||
|
"navBar.login": "Login",
|
||||||
|
"navBar.registration": "User Registration",
|
||||||
|
"navBar.loginBinding": "User Login Binding",
|
||||||
|
"navBar.registrationBinding": "User Registration Binding",
|
||||||
|
"navBar.smsBogin": "SMS Login",
|
||||||
|
"navBar.home": "Home",
|
||||||
|
"navBar.scene": "Scene",
|
||||||
|
"navBar.alert": "Alert",
|
||||||
|
"navBar.news": "Dynamic",
|
||||||
|
"navBar.user": "Me",
|
||||||
|
"navBar.browse": "Browsing web pages",
|
||||||
|
"navBar.sceneDetail": "Scene Detail",
|
||||||
|
"navBar.sceneList": "Scene List",
|
||||||
|
"navBar.productList": "Product List",
|
||||||
|
"navBar.deviceList": "Device List",
|
||||||
|
"navBar.physicalModels": "List Of Physical Models",
|
||||||
|
"navBar.alarmList": "Alarm List",
|
||||||
|
"navBar.timer": "Timer",
|
||||||
|
"navBar.alarmLog": "Alarm Log",
|
||||||
|
"navBar.alarmHandling": "Alarm Handling",
|
||||||
|
"navBar.deviceDetails": "Device Details ",
|
||||||
|
"navBar.timedList": "Timed List",
|
||||||
|
"navBar.timedDetails": "Timed Details",
|
||||||
|
"navBar.dynamic": "Latest updates",
|
||||||
|
"navBar.dynamicDetails": "Dynamic Details",
|
||||||
|
"navBar.classification": "Classification Dynamics",
|
||||||
|
"navBar.addDevice": "Add Device",
|
||||||
|
"navBar.associatedDevices": "Associated Devices",
|
||||||
|
"navBar.deviceSharing": "Device Dharing",
|
||||||
|
"navBar.shareDetails": "Share User Details",
|
||||||
|
"navBar.about ": "About Us",
|
||||||
|
"navBar.latest": "Latest news",
|
||||||
|
"navBar.newsDetail": "News Detail",
|
||||||
|
"navBar.setting": "System Setting",
|
||||||
|
"navBar.simulation": "Device Simulation",
|
||||||
|
"navBar.mobile": "Mobile monitoring",
|
||||||
|
"navBar.account": "Account Messages",
|
||||||
|
"navBar.language": "Language Setting",
|
||||||
|
"navBar.updateAvatar": "Update Avatar",
|
||||||
|
"navBar.unbind": "Unbind WeChat",
|
||||||
|
"navBar.group": "Device grouping",
|
||||||
|
"navBar.running": "Runiing Status",
|
||||||
|
"navBar.updateGroup": "Edit group",
|
||||||
|
"navBar.updateDevice": "Device Update",
|
||||||
|
"navBar.eventLog": "Event Log",
|
||||||
|
"navBar.orderLog": "Instruction log",
|
||||||
|
"navBar.player": "Player",
|
||||||
|
"navBar.resetPsd": "Change Password",
|
||||||
|
"common.fastbee": "Fastbee",
|
||||||
|
"common.add": "add",
|
||||||
|
"common.delete": "Delete",
|
||||||
|
"common.save": "Save",
|
||||||
|
"common.cancel": "Cancel",
|
||||||
|
"common.confirm": "Comfirm",
|
||||||
|
"common.back": "Back",
|
||||||
|
"common.edit": "Edit",
|
||||||
|
"common.updateSuccessful": "upadte successful",
|
||||||
|
"common.addSuccessful": "add successsful",
|
||||||
|
"common.saveError": "Save failed",
|
||||||
|
"common.saveSuccessful": "Save Successful",
|
||||||
|
"common.operation": "Operation successful",
|
||||||
|
"common.search": "Search",
|
||||||
|
"common.tips": "Tips",
|
||||||
|
"common.loginTips": "This function can be used only after you log in. Do you want to log in ?",
|
||||||
|
"common.PleaseIpt": "Please Input",
|
||||||
|
"common.PleaseSelect": "Please Select",
|
||||||
|
"common.Welcome": "Welcome",
|
||||||
|
"common.viewDetail": "View Detail",
|
||||||
|
"variable.041-0": "Please enter the variable name",
|
||||||
|
"variable.041-1": "event",
|
||||||
|
"variable.041-2": "attribute",
|
||||||
|
"variable.041-3": "function",
|
||||||
|
"variable.041-4": "Issue instructions to actively collect variables. Do you want to continue?",
|
||||||
|
"variable.041-5": "Trying to load",
|
||||||
|
"variable.041-6": "Click on me to load more",
|
||||||
|
"variable.041-7": "There's really nothing left",
|
||||||
|
"variable.041-8": "Device not activated",
|
||||||
|
"variable.041-9": "The device is in a disabled state",
|
||||||
|
"variable.041-10": "The device is offline",
|
||||||
|
"variable.041-11": "Issued successfully",
|
||||||
|
"variable.041-12": "The value is not within the range and cannot be issued. Please re-enter!",
|
||||||
|
"cron.day.304304-0": "Day, allowed wildcard characters [, - *?/L W]",
|
||||||
|
"cron.day.304304-1": "Not specified",
|
||||||
|
"cron.day.304304-2": "Cycle from",
|
||||||
|
"cron.day.304304-3": "day",
|
||||||
|
"cron.day.304304-4": "from",
|
||||||
|
"cron.day.304304-5": "Starting from number, every",
|
||||||
|
"cron.day.304304-6": "Execute once a day",
|
||||||
|
"cron.day.304304-7": "monthly",
|
||||||
|
"cron.day.304304-8": "The most recent working day",
|
||||||
|
"cron.day.304304-9": "On the last day of this month",
|
||||||
|
"cron.day.304304-10": "appoint",
|
||||||
|
"cron.day.304304-11": "Multiple options available",
|
||||||
|
"cron.hour.304304-0": "Hours, allowed wildcards [, - */]",
|
||||||
|
"cron.hour.304304-1": "Cycle from",
|
||||||
|
"cron.hour.304304-2": "hour",
|
||||||
|
"cron.hour.304304-3": "from",
|
||||||
|
"cron.hour.304304-4": "Starting from the hour, every",
|
||||||
|
"cron.hour.304304-5": "Execute every hour",
|
||||||
|
"cron.hour.304304-6": "appoint",
|
||||||
|
"cron.index.464657-0": "second",
|
||||||
|
"cron.index.464657-1": "minute",
|
||||||
|
"cron.index.464657-2": "hour",
|
||||||
|
"cron.index.464657-3": "day",
|
||||||
|
"cron.index.464657-4": "month",
|
||||||
|
"cron.index.464657-5": "week",
|
||||||
|
"cron.index.464657-6": "year",
|
||||||
|
"cron.index.464657-7": "Time expression",
|
||||||
|
"cron.index.464657-8": "Cron expression",
|
||||||
|
"cron.index.464657-9": "determine",
|
||||||
|
"cron.index.464657-10": "Reset",
|
||||||
|
"cron.index.464657-11": "Generate expression",
|
||||||
|
"cron.min.411657-0": "Minutes, allowed wildcards [, - */]",
|
||||||
|
"cron.min.411657-1": "Cycle from",
|
||||||
|
"cron.min.411657-2": "minute",
|
||||||
|
"cron.min.411657-3": "from",
|
||||||
|
"cron.min.411657-4": "Starting from minutes, every",
|
||||||
|
"cron.min.411657-5": "Execute every minute",
|
||||||
|
"cron.min.411657-6": "appoint",
|
||||||
|
"cron.month.382453-0": "Month, allowed wildcard characters [, - */]",
|
||||||
|
"cron.month.382453-1": "Cycle from",
|
||||||
|
"cron.month.382453-2": "month",
|
||||||
|
"cron.month.382453-3": "from",
|
||||||
|
"cron.month.382453-4": "Starting from the month, every",
|
||||||
|
"cron.month.382453-5": "Execute once a month",
|
||||||
|
"cron.month.382453-6": "appoint",
|
||||||
|
"cron.month.382453-7": "Multiple options available",
|
||||||
|
"cron.second.452546-0": "Seconds, allowed wildcards [, - */]",
|
||||||
|
"cron.second.452546-1": "Cycle from",
|
||||||
|
"cron.second.452546-2": "second",
|
||||||
|
"cron.second.452546-3": "from",
|
||||||
|
"cron.second.452546-4": "Starting from seconds, every",
|
||||||
|
"cron.second.452546-5": "Execute every second",
|
||||||
|
"cron.second.452546-6": "appoint",
|
||||||
|
"cron.second.452546-7": "Multiple options available",
|
||||||
|
"cron.week.903494-0": "Week, allowed wildcard characters [, - */]",
|
||||||
|
"cron.week.903494-1": "Not specified",
|
||||||
|
"cron.week.903494-2": "Cycle from week",
|
||||||
|
"cron.week.903494-3": "Section",
|
||||||
|
"cron.week.903494-4": "The week of the week",
|
||||||
|
"cron.week.903494-5": "Last week of this month",
|
||||||
|
"cron.week.903494-6": "appoint",
|
||||||
|
"cron.week.903494-7": "Monday",
|
||||||
|
"cron.week.903494-8": "Tuesday",
|
||||||
|
"cron.week.903494-9": "Wednesday",
|
||||||
|
"cron.week.903494-10": "Thursday",
|
||||||
|
"cron.week.903494-11": "Friday",
|
||||||
|
"cron.week.903494-12": "Saturday",
|
||||||
|
"cron.week.903494-13": "Sunday",
|
||||||
|
"cron.year.999034-0": "Not filled in, allowed wildcard characters [, - */]",
|
||||||
|
"cron.year.999034-1": "annually",
|
||||||
|
"cron.year.999034-2": "Cycle from",
|
||||||
|
"cron.year.999034-3": "from",
|
||||||
|
"cron.year.999034-4": "Starting from the year, every",
|
||||||
|
"cron.year.999034-5": "Once a year",
|
||||||
|
"cron.year.999034-6": "appoint",
|
||||||
|
"cron.year.999034-7": "Multiple options available",
|
||||||
|
"cron.result.893023-0": "Last 5 run times",
|
||||||
|
"cron.result.893023-1": "In the calculation results",
|
||||||
|
"cron.result.893023-2": "The result did not meet the conditions!",
|
||||||
|
"cron.result.893023-3": "In the past 100 years, only the top",
|
||||||
|
"cron.result.893023-4": "Results!",
|
||||||
|
"login": {
|
||||||
|
"accountLogin": "Account Login",
|
||||||
|
"inputUserName": "Please Input Username",
|
||||||
|
"inputPassword": "Please Input Password",
|
||||||
|
"inputCode": "Please Input Code",
|
||||||
|
"login": "Log in",
|
||||||
|
"exampleAccount": "Example:fastbee 123456",
|
||||||
|
"HuapuIoT": "HuapuIoT",
|
||||||
|
"registerNow": "Register",
|
||||||
|
"readAndAgree": "Read and Agree",
|
||||||
|
"serviceAgreement": "Service Agreement",
|
||||||
|
"and": "and",
|
||||||
|
"privacyPolicy": "Privacy Policy",
|
||||||
|
"childProtectionStatement": "Children's Privacy Statement",
|
||||||
|
"commonBill": "Third-party Sharing And SDK Bill",
|
||||||
|
"readAndCheckTheAgreement": "Please read and check the agreement",
|
||||||
|
"accontMsg": "Account information cannot be empty",
|
||||||
|
"phoneLogin": "Phone Login",
|
||||||
|
"welcomeToLogin": "Welcome to login FastBee",
|
||||||
|
"phoneAuthorization": "phone Login",
|
||||||
|
"remember": "Remember password",
|
||||||
|
"other": "Other login methods",
|
||||||
|
"account": "Account login",
|
||||||
|
"forgetPassword": "Forget Password",
|
||||||
|
"thirdPartyLogin": "Third Party Login",
|
||||||
|
"smsLogin": "SMS Login",
|
||||||
|
"weChat": "WeChat",
|
||||||
|
"mobileLogin": "Mobile Login"
|
||||||
|
},
|
||||||
|
"register": {
|
||||||
|
"userRegister": "User Registration",
|
||||||
|
"inputUserName": "Please Input Username",
|
||||||
|
"inputPhone": "Please Input Phonenumber",
|
||||||
|
"inputPassword": "Please Input Password",
|
||||||
|
"inputPasswordAgain": "Please Input Password Again",
|
||||||
|
"inputUserNameSize": "Please Input Username And Length greater than four",
|
||||||
|
"inputCode": "Please Input Code",
|
||||||
|
"registration": "Sign up",
|
||||||
|
"accountLogin": "Log In To An Existing Account",
|
||||||
|
"congratulations": "congratulations,your account ",
|
||||||
|
"registeredSuccessfully": "Registered Successfully"
|
||||||
|
},
|
||||||
|
"smsLogin": {
|
||||||
|
"smsLogin": "Sms Login",
|
||||||
|
"login": "Log in",
|
||||||
|
"HuapuIoT": "HuapuIoT ",
|
||||||
|
"accountLogin": "Account Login",
|
||||||
|
"obtainCode": "Obtain Code",
|
||||||
|
"correctPhone": "Please Input Correct PhoneNumber",
|
||||||
|
"obtainSmsCode": "Obtaining Verification Code",
|
||||||
|
"codeSent": "Verification code has been sent",
|
||||||
|
"sending": "The countdown ends before sending"
|
||||||
|
},
|
||||||
|
"bindLogin": {
|
||||||
|
"bindLogin": "Bind Account Login",
|
||||||
|
"bindRegister": "Bind Register",
|
||||||
|
"alert": "Alert",
|
||||||
|
"alertTitle": "The account does not exist. Do you want to register a new account",
|
||||||
|
"notRegister": "Cancel",
|
||||||
|
"confirmRegister": "Confirm",
|
||||||
|
"accountNotNull": "Account cannot be empty",
|
||||||
|
"bind": "Bind"
|
||||||
|
},
|
||||||
|
"bindRegister": {
|
||||||
|
"bindRegister": "Bind Register",
|
||||||
|
"incorrectPhone": "Incorrect phone number format",
|
||||||
|
"inputPasswordSize": "Please Input Code And Length greater than five",
|
||||||
|
"enterPasswordsDiffer": "Entered passwords differ",
|
||||||
|
"policy0": "Please allow us to use your account information reasonably in necessary situations, and read and agree to it",
|
||||||
|
"policy1": "《Privacy Policy》",
|
||||||
|
"policy2": "《User Agreement》",
|
||||||
|
"policy3": "《Children's Privacy Protection Statement》",
|
||||||
|
"policy4": "《List of Third Party Sharing and SDK》",
|
||||||
|
"policy5": "User Agreement and Privacy Policy",
|
||||||
|
"policy6": "Thank you for your trust in us all along! We have updated our system based on the latest regulatory requirements",
|
||||||
|
"policy7": "To better protect your privacy and information security, please read and understand carefully before use. If you agree to the updated privacy policy, please click 'Agree' and continue to use our products and services.",
|
||||||
|
"agree0": "agree",
|
||||||
|
"agree1": "disagree"
|
||||||
|
},
|
||||||
|
"user": {
|
||||||
|
"personalCentre": "Personal Centre",
|
||||||
|
"openIOT": "FastBee-Open source IoT platform",
|
||||||
|
"addDevice": "Add Device",
|
||||||
|
"addScene": "Add Scene",
|
||||||
|
"groupManagement": "Group Manage",
|
||||||
|
"platformMsg": "Platform Msg",
|
||||||
|
"ordinaryMembers": "Ordinary Members",
|
||||||
|
"currentAccountAlert": "Current Account No Membership Has Been Opened",
|
||||||
|
"openAtOnce": "Open At Once",
|
||||||
|
"account": "Account Number",
|
||||||
|
"messages": "Messages",
|
||||||
|
"signOut": "Sign Out",
|
||||||
|
"about": "About Us",
|
||||||
|
"language": "language",
|
||||||
|
"appDownload": "App Download",
|
||||||
|
"discoverNewVer": "Discover New Version",
|
||||||
|
"isUpdateNewVer": "Found a new version, is it updated?",
|
||||||
|
"thisLatestVer": "This is the latest version",
|
||||||
|
"verCheckFailed": "Version check failed",
|
||||||
|
"copyTip": "The link has been copied, please open it in your browser",
|
||||||
|
"browserOpen": "Please click on the top right corner to open it in your browser",
|
||||||
|
"noDownloadApp": "You haven't downloaded the ap",
|
||||||
|
"isDownloadApp": "Do you want to download the app ?",
|
||||||
|
"appUpdate": "Check for updates",
|
||||||
|
"exitAccount": "Exit",
|
||||||
|
"confirmExit": "confirm Exit",
|
||||||
|
"confirmSignOut": "confirm Sign Out",
|
||||||
|
"signOutAlert": "After account cancellation, all information will be cleared and cannot be restored. Do you want to cancel?",
|
||||||
|
"notWriteOff": "Not Write Off",
|
||||||
|
"confirmWriteOff": "Confirm Write Off",
|
||||||
|
"confirmWxBind": "Confirm Bind Wechat",
|
||||||
|
"wxBindAlertTitle": "Do you want to bind WeChat",
|
||||||
|
"notBind": "Not Currently Bind",
|
||||||
|
"confirmBind": "Confirm Binding",
|
||||||
|
"saveSuccess": "Save Success",
|
||||||
|
"occurError": "Occur Error",
|
||||||
|
"scanning": "Scanning only supports apps and mini programs",
|
||||||
|
"parseQrCode": "After parsing the QR code,Unable to find corresponding processing type",
|
||||||
|
"errorParseQRcode": "Error parsing QR code,Incorrect format",
|
||||||
|
"language-01": "Language",
|
||||||
|
"updatePassword": "Edit Password",
|
||||||
|
"login": "Login/Register",
|
||||||
|
"visitor": "Visitor",
|
||||||
|
"configuration": "Independent Configuration",
|
||||||
|
"notice": "This feature requires you to log in to use it. Would you like to log in?",
|
||||||
|
"bindSuccess": "Binding successful",
|
||||||
|
"selectAlbum": "Select from phone photo album",
|
||||||
|
"photograph": "photograph",
|
||||||
|
"password0": "Old password",
|
||||||
|
"password1": "Please enter old password",
|
||||||
|
"password2": "New password",
|
||||||
|
"password3": "Please enter a new password",
|
||||||
|
"password4": "Confirm password",
|
||||||
|
"password5": "preservation",
|
||||||
|
"password6": "Length between 6-20 characters",
|
||||||
|
"password7": "Confirm password cannot be empty",
|
||||||
|
"password8": "The passwords entered twice are inconsistent"
|
||||||
|
},
|
||||||
|
"account": {
|
||||||
|
"avatar": "Avatar",
|
||||||
|
"nikeName": "Nikename",
|
||||||
|
"email": "Email",
|
||||||
|
"phone": "Phonenumber",
|
||||||
|
"createTime": "Createtime",
|
||||||
|
"Ip": "IP",
|
||||||
|
"save": "Save",
|
||||||
|
"inputPhone": "Please Input PhoneNumber",
|
||||||
|
"inputEmail": "Please Input Email",
|
||||||
|
"inputNickname": "PleaseInput NickName",
|
||||||
|
"inputCreatetime": "Please Input Createtime",
|
||||||
|
"inputIP": "Please Input IP",
|
||||||
|
"incorrectEmail": "Incorrect Email format"
|
||||||
|
},
|
||||||
|
"home": {
|
||||||
|
"netWork": "Distribution Network Add",
|
||||||
|
"wifi-type": "Common For WIFI-type Devices",
|
||||||
|
"qrCode": "SCAN QR Code To Add",
|
||||||
|
"networksDevices": "For Cellular Networks/Ethernet Devices",
|
||||||
|
"association": "Association Is Added",
|
||||||
|
"supportBatchOperations": "For Cellular Networks/Ethernet Devices, And Support Batch Operations",
|
||||||
|
"errorLoading": "Loading Error",
|
||||||
|
"sureAdd": "Are you sure to add it?",
|
||||||
|
"productName": "productName",
|
||||||
|
"serialNumber": "serialNumber",
|
||||||
|
"notActive": "Not Active",
|
||||||
|
"disabled": "disAbled",
|
||||||
|
"onLine": "onLine",
|
||||||
|
"offline": "offline",
|
||||||
|
"all": "All",
|
||||||
|
"shadow": "Shadow",
|
||||||
|
"eventLog": "Event Log",
|
||||||
|
"Instructionlog": "Instruction log",
|
||||||
|
"createBtn": "Create Device",
|
||||||
|
"content": "This feature requires login to use. Do you want to log in?",
|
||||||
|
"location": "Unknown location, tap the screen to relocate",
|
||||||
|
"welcome": "Welcome to Fastbee!"
|
||||||
|
},
|
||||||
|
"about": {
|
||||||
|
"about": "about",
|
||||||
|
"authorQQ": "Author QQ : 164770707",
|
||||||
|
"authorWechat": "Author Wechat : QQ164770707",
|
||||||
|
"group": "Group: 720136372, 1073236354",
|
||||||
|
"webSite": "Official Website",
|
||||||
|
"sourceCode": "View The Source Code",
|
||||||
|
"open": "Version v2.6.0",
|
||||||
|
"message": "Qujing Fengxin Technology Co., Ltd",
|
||||||
|
"copyTip": "The link has been copied, please open it in your browser"
|
||||||
|
},
|
||||||
|
"deviceDetail": {
|
||||||
|
"basicMsg": "Basic Messages",
|
||||||
|
"deviceName": "DeviceName",
|
||||||
|
"position": "Position",
|
||||||
|
"longitude": "Longitude",
|
||||||
|
"latitude": "Latitude",
|
||||||
|
"address": "Address",
|
||||||
|
"shadow": "Shadow",
|
||||||
|
"disabledDevice": "DSisable",
|
||||||
|
"remark": "Remarks",
|
||||||
|
"inputMsg": "Please Input The Content",
|
||||||
|
"inputLongitude": "Please Input Device Longitude",
|
||||||
|
"inputLatitude": "Please Input Device latitudel",
|
||||||
|
"loadingFail": "Loading Fail",
|
||||||
|
"veryGood": "Very Good",
|
||||||
|
"excellent": "excellent",
|
||||||
|
"good": "Good",
|
||||||
|
"average": "Average",
|
||||||
|
"poor": "Poor",
|
||||||
|
"device": "Device",
|
||||||
|
"timing": "Timing",
|
||||||
|
"journal": "Journal",
|
||||||
|
"static": "static",
|
||||||
|
"share": "Share",
|
||||||
|
"preserve": "Preserve",
|
||||||
|
"deviceStatus": "Status",
|
||||||
|
"serialNumber": "Serial Number",
|
||||||
|
"belongingProducts": "Product",
|
||||||
|
"firmwareVersion": "Version",
|
||||||
|
"positionMethod": "Position",
|
||||||
|
"equipmentSignal": "Signal",
|
||||||
|
"networkAddress": "networkIp",
|
||||||
|
"address": "Address",
|
||||||
|
"activationTime": "activeTime",
|
||||||
|
"deleteDevice": "Delete",
|
||||||
|
"monitor": "monitor",
|
||||||
|
"runningStatus": "runningStatus",
|
||||||
|
"deviceDetail": "Device Detail",
|
||||||
|
"channel": "Channel",
|
||||||
|
"autoPosition": "Auto Position",
|
||||||
|
"devicePosition": "Device Position",
|
||||||
|
"customLocation": "Custom Location",
|
||||||
|
"deviceCheck": "The device name cannot be empty",
|
||||||
|
"positionCheck": "The position methods cannot be empty",
|
||||||
|
"updateSuccess": "Update Success",
|
||||||
|
"overview": "Device Overview",
|
||||||
|
"Surveillance": "Video Surveillance",
|
||||||
|
"alert": "Alert Log",
|
||||||
|
"scada": "scada",
|
||||||
|
"emptyNull": "Data Null",
|
||||||
|
"remove": "Remove Warning",
|
||||||
|
"result": "Result description:",
|
||||||
|
"issueTime": "Issuing time:",
|
||||||
|
"identifier": "identifier",
|
||||||
|
"value": "value",
|
||||||
|
"logContent": "Log Content",
|
||||||
|
"reportTime": "Report Time",
|
||||||
|
"modelName": "Name",
|
||||||
|
"open": "open",
|
||||||
|
"close": "close"
|
||||||
|
},
|
||||||
|
"timing": {
|
||||||
|
"timingName": "Please Input Timing Name",
|
||||||
|
"search": "search",
|
||||||
|
"execute": "Execute once",
|
||||||
|
"effortLoading": "hard Loading...",
|
||||||
|
"loadMore": "Click on me to load more",
|
||||||
|
"nothing": "There's really nothing left",
|
||||||
|
"emptyNull": "Data is empty",
|
||||||
|
"all": "All",
|
||||||
|
"enable": "Enable",
|
||||||
|
"notEnabled": "Not Enabled",
|
||||||
|
"nosupported": "WeChat mini programs are currently not supported",
|
||||||
|
"wap2": "Please use wap2app to package!"
|
||||||
|
},
|
||||||
|
"deviceStatic": {
|
||||||
|
"selectSub": "Please Select Device Slave",
|
||||||
|
"rangeTime": "BeginTime-EndTime",
|
||||||
|
"selectTime": "Please Select Range Time",
|
||||||
|
"search": "search"
|
||||||
|
},
|
||||||
|
"monitior": {
|
||||||
|
"stop": "stop",
|
||||||
|
"monitoringInterval": "Monitoring interval(ms) And number of times",
|
||||||
|
"inputNumber": "Enter the number of milliseconds between inputs",
|
||||||
|
"inputTimes": " Input count",
|
||||||
|
"stop": "Stop",
|
||||||
|
"monitior": "Monitior",
|
||||||
|
"receivingData": "Receive Data...",
|
||||||
|
"monitoringRange": "Monitoring interval range 500-10000 milliseconds",
|
||||||
|
"monitoringQuantity": "Monitoring quantity range 1-300",
|
||||||
|
"real-timeMonitor": "real-time monitor",
|
||||||
|
"stopMonitor": "Stop Monitior"
|
||||||
|
},
|
||||||
|
"scene": {
|
||||||
|
"sceneLink": "Scene Linkage",
|
||||||
|
"inputSceneName": "Please Enter The Scene Name",
|
||||||
|
"search": "Search",
|
||||||
|
"condition": "Condition",
|
||||||
|
"way": "Way",
|
||||||
|
"task": "Task",
|
||||||
|
"execute": "Execute once",
|
||||||
|
"tryingToLoad": "Trying To Load...",
|
||||||
|
"gentlyPullUp": "Gently Pull Up",
|
||||||
|
"nothingLeft": "There's Really Nothing Left",
|
||||||
|
"emptyData": "Data Is Empty",
|
||||||
|
"administration": "Administration",
|
||||||
|
"alarm": "Alarm",
|
||||||
|
"anyCondition": " Any Condition",
|
||||||
|
"allCondition": "All Conditions",
|
||||||
|
"notConditions": "Not Meeting The Conditions",
|
||||||
|
"unknown": "Unknown",
|
||||||
|
"serial": "Serial",
|
||||||
|
"parallel": "Parallel",
|
||||||
|
"switchSuccessful": "Switch Successful",
|
||||||
|
"switchFail": "Switch Fail",
|
||||||
|
"seeMore": "See more >",
|
||||||
|
"delay": "Delay matching:",
|
||||||
|
"iptDelayTime": "Please enter the delay time",
|
||||||
|
"second": "second"
|
||||||
|
},
|
||||||
|
"share": {
|
||||||
|
"userDetail": "User Details",
|
||||||
|
"userMsg": "User Information ",
|
||||||
|
"userId": "userId:",
|
||||||
|
"userName": "userName:",
|
||||||
|
"phoneNumber": "phoneNumber:",
|
||||||
|
"userPermissions": "User permissions",
|
||||||
|
"remark": "Remark",
|
||||||
|
"notRemark": "There are currently no notes available",
|
||||||
|
"confirmShare": "Confirm Share",
|
||||||
|
"deviceUpgradation": "Device upgradation",
|
||||||
|
"otaUpgradation": "Device OTA upgradation",
|
||||||
|
"timing": "Device Timing",
|
||||||
|
"timedTaskExecution": "Timed task execution",
|
||||||
|
"deviceLog": "Device Log",
|
||||||
|
"contains": "Contains event logs and instruction logs",
|
||||||
|
"monitior": "Monitior",
|
||||||
|
"afterMonitior": "After Issuing Real-time Monitoring Instructions, The Chart Displays The Data Reported By The Device In Real Time",
|
||||||
|
"monitioringStatic": "Monitoring Statistics",
|
||||||
|
"chartDisplay": "Chart Displays Stored Historical Monitoring Data",
|
||||||
|
"deviceShareSuccess": "Device Sharing Successful",
|
||||||
|
"title": "prompted",
|
||||||
|
"alert": "Are you sure to delete the current user ?",
|
||||||
|
"delete": "Delete...",
|
||||||
|
"inputUserPhone": "Please enter the user's mobile phone number ",
|
||||||
|
"deviceShare": "Share Device",
|
||||||
|
"query": "query",
|
||||||
|
"sharedUsers": "Shared Users",
|
||||||
|
"master": "master",
|
||||||
|
"share": "Share",
|
||||||
|
"unable": "Unable to find user information, or the user is already a device user",
|
||||||
|
"correct": "Please enter the correct phone number"
|
||||||
|
},
|
||||||
|
"sceneDetail": {
|
||||||
|
"inputName": "Please Enter A Name",
|
||||||
|
"sceneState": "Scene State",
|
||||||
|
"trigger": "Trigger",
|
||||||
|
"addConditions": "Add Conditions",
|
||||||
|
"deviceNumber": "Number Of Devices",
|
||||||
|
"deviceOnline": "Device Online",
|
||||||
|
"Equipment": "Equipment Offline",
|
||||||
|
"action": "Execute Action",
|
||||||
|
"addAction": "Add Action",
|
||||||
|
"alertExecute": "Alarm Execution",
|
||||||
|
"moreSetting": "More Settings",
|
||||||
|
"silentTimeAlert": "Silent Time: Within The Set Time Range, It Will No Longer Be Executed Repeatedly;Delay Execution: The Delay Will Not Be Stored And Is limited To 90 Seconds.",
|
||||||
|
"silentTime": "Silent Time",
|
||||||
|
"inputTime": "Please Enter The Silence Time",
|
||||||
|
"minute": "Minute",
|
||||||
|
"executionMethod": "Execution Method",
|
||||||
|
"serial": " Serial",
|
||||||
|
"parallel": "Parallel",
|
||||||
|
"delayed ": "Delayed Execution",
|
||||||
|
"inputExtensionTime": "Please Enter An Extension Time ",
|
||||||
|
"seconds": "Seconds",
|
||||||
|
"complete": "Complete",
|
||||||
|
"deviceTriggered": "Device Triggered",
|
||||||
|
"productTriggering": "Product Triggering",
|
||||||
|
"timedTrigger": "Timed Trigger",
|
||||||
|
"deviceExecution": "Device Execution",
|
||||||
|
"productExecution": "Product Execution",
|
||||||
|
"sceneValidate": "Scene name cannot be empty",
|
||||||
|
"triggerValidate": "Trigger condition cannot be empty",
|
||||||
|
"taskValidate": "Task execution cannot be empty",
|
||||||
|
"tips": "Tips"
|
||||||
|
},
|
||||||
|
"product": {
|
||||||
|
"inputDeviceName": "Please Input DeviceName",
|
||||||
|
"next": "Next",
|
||||||
|
"selectThingModel": "Selcet ThingsModel",
|
||||||
|
"attribute": "attribute",
|
||||||
|
"function": "function",
|
||||||
|
"event": "Event",
|
||||||
|
"selectDevice": "Please Select DeviceName",
|
||||||
|
"selectThingsModels": "Please Select ThingsModels",
|
||||||
|
"inputProduct": "Please input Product Name",
|
||||||
|
"selectProducts": "Please Select Product",
|
||||||
|
"operator": "Operator",
|
||||||
|
"selectOperator": "select Operator",
|
||||||
|
"on": "ON",
|
||||||
|
"off": "OFF",
|
||||||
|
"input": "Please Enter",
|
||||||
|
"inputValue": "Please Set corresponding values",
|
||||||
|
"selectValue": "Please Select Value",
|
||||||
|
"timedName": "Timed name cannot be empty",
|
||||||
|
"taskExecution": "Task execution cannot be empty"
|
||||||
|
},
|
||||||
|
"sceneTiming": {
|
||||||
|
"time": "Time",
|
||||||
|
"selectTime": "Please Select Time",
|
||||||
|
"again": "Again",
|
||||||
|
"selectWeek": "Please Select Week",
|
||||||
|
"default": "Default",
|
||||||
|
"auto": "Auto",
|
||||||
|
"inputCRON": "Please Input CRON",
|
||||||
|
"expression": "Generate expression",
|
||||||
|
"monday": "Monday",
|
||||||
|
"tuesday": "Tuesday",
|
||||||
|
"wednesday": "Wednesday",
|
||||||
|
"thursday": "Thursday",
|
||||||
|
"friday": "Friday",
|
||||||
|
"saturday": "Saturday",
|
||||||
|
"sunday": "Sunday",
|
||||||
|
"everyDay": "EveryDay",
|
||||||
|
"status": "Timing Status",
|
||||||
|
"trigger": "The trigger has only one timing, and the alarm during the execution action is invalid",
|
||||||
|
"alarm": "Alarm execution",
|
||||||
|
"develop": "Under development...",
|
||||||
|
"select": "Please select an alarm"
|
||||||
|
},
|
||||||
|
"alert": {
|
||||||
|
"inputAlertName": "Please input alert name",
|
||||||
|
"all": "All",
|
||||||
|
"pending": "Pending",
|
||||||
|
"untreated": "Untreated",
|
||||||
|
"processed": "Processed",
|
||||||
|
"notice": "Notice",
|
||||||
|
"minor": "Minor",
|
||||||
|
"warning": "Warning",
|
||||||
|
"alertName": "Alert Name",
|
||||||
|
"processState": "Process State",
|
||||||
|
"data": "Data",
|
||||||
|
"alertTime": "Alert Time",
|
||||||
|
"process": "Process",
|
||||||
|
"alertInformation": "Warning Information",
|
||||||
|
"serialNumber": "Serial Number",
|
||||||
|
"deviceName": "Device Name",
|
||||||
|
"alertType": "Alert Level",
|
||||||
|
"alertProcess": "Alert Process",
|
||||||
|
"processAlert": "Process Alert",
|
||||||
|
"processResult": "Process Result",
|
||||||
|
"processTime": "Process Time",
|
||||||
|
"inputProcessMsg": "Please input process message, do not fill",
|
||||||
|
"noNeed": "No need to handle it",
|
||||||
|
"Unprocessed": "Unprocessed"
|
||||||
|
},
|
||||||
|
"status": {
|
||||||
|
"deviceVersion": "Version",
|
||||||
|
"deviceFirmware": "Device Firmware Upgrade",
|
||||||
|
"grade": "grade",
|
||||||
|
"noNeedToUpgrade": "It Is Already The Latest Version, No Need To Upgrade",
|
||||||
|
"upgraded": "There Is A New Version That Can Be Upgraded",
|
||||||
|
"name": "Name:",
|
||||||
|
"version": "Version:",
|
||||||
|
"description": "Description:",
|
||||||
|
"inputString": "Please Enter A String",
|
||||||
|
"unit": "Unit",
|
||||||
|
"send": "Send Out",
|
||||||
|
"decimals": "Please Enter Decimals",
|
||||||
|
"integer": " Please Enter An Integer",
|
||||||
|
"monitior": "Monitoring Data",
|
||||||
|
"offline": "Offline",
|
||||||
|
"service": "Service Call Successful",
|
||||||
|
"equip": "Equipment Upgrade",
|
||||||
|
"online": "Device Online",
|
||||||
|
"shadow": "Shadow Mode",
|
||||||
|
"deviceOffline": "Device Offline",
|
||||||
|
"control": "Equipment control",
|
||||||
|
"stateModel": "State Model",
|
||||||
|
"dataModel": "Data Model",
|
||||||
|
"devDetail": "Device Detail",
|
||||||
|
"attribute": "attribute",
|
||||||
|
"operation": "operation",
|
||||||
|
"pleaseEnter": "Please enter the correct value!",
|
||||||
|
"pleaseSelect": "Please select a numerical value!",
|
||||||
|
"service": "Service call successful"
|
||||||
|
},
|
||||||
|
"deviceAdd": {
|
||||||
|
"addDevice": "Add Device",
|
||||||
|
"wifi": "Name",
|
||||||
|
"inputWifiName": "Please Enter The WIFI Name",
|
||||||
|
"passsword": "Password",
|
||||||
|
"inputWifiPassword": "Please Enter The WIFI Password",
|
||||||
|
"remember": "Remember Password",
|
||||||
|
"senior": "Senior",
|
||||||
|
"userId": "User Number",
|
||||||
|
"inputUserId": "Please Enter The User Number",
|
||||||
|
"deviceNum": "DeviceNum",
|
||||||
|
"inputDeviceNum": "Please Enter The Device Number",
|
||||||
|
"authorization": "Authorization Code",
|
||||||
|
"inputAuthor": "Please Enter The Authorization Code",
|
||||||
|
"supplementary": "Supplementary Information",
|
||||||
|
"inputSupplementary": "Please Enter Supplementary Information",
|
||||||
|
"step1": "Step 1: Fill in WIFI information",
|
||||||
|
"step2": "Step 2: The Device Enters Distribution Network Mode",
|
||||||
|
"step3": "Step 3: Distribution Network",
|
||||||
|
"single": "Single",
|
||||||
|
"multiple": "Multiple",
|
||||||
|
"networkMode": "Equipment Enters Distribution Network Mode",
|
||||||
|
"wifiHotspot": "The Device Will Activate WIFI Hotspot",
|
||||||
|
"manually": "Manually Connecting Device Hotspots",
|
||||||
|
"mobile": "Mobile Phone Connection Device WIFI Hotspot",
|
||||||
|
"detection": "Detection Equipment",
|
||||||
|
"system": "System Automatic Detection",
|
||||||
|
"end": "End Of Distribution Network",
|
||||||
|
"reconnected": "Mobile Phone Can Be Reconnected To WIFI",
|
||||||
|
"startWork": "Start Network Distribution",
|
||||||
|
"redistributingNetwork": "Redistributing The Network",
|
||||||
|
"after": "After Reconnecting ThePhone To WiFi, Return To View",
|
||||||
|
"tip": "Tip: Currently, Multi Device Networking Only Supports WeChat Mini Programs And Requires Enabling The Mobile WiFi Switch",
|
||||||
|
"noData": "No Further Data Available At The Moment",
|
||||||
|
"select": "Please Select A Device Hotspot",
|
||||||
|
"refresh": "Refresh",
|
||||||
|
"start": "Start Distribution Network",
|
||||||
|
"distribution": "Distribution network...",
|
||||||
|
"connect": "Connecting to network...",
|
||||||
|
"return": "Return To View",
|
||||||
|
"noDevice": "No device detected",
|
||||||
|
"wifiName": "WIFI Name cannot be empty",
|
||||||
|
"wifiPassword": "WIFI Password Cannot be empty",
|
||||||
|
"userNum": "userName is Cannot be empty",
|
||||||
|
"deviceDetected": "Device detected",
|
||||||
|
"userIdAndWifiAccount": "User ID and WIFI account password cannot be empty",
|
||||||
|
"sendInformation": "Send configuration information...",
|
||||||
|
"successNetwork": "Network configuration successful. If the device is not connected properly, please check if the WIFI information is correct and the network condition",
|
||||||
|
"fail": "Distribution network failed. Please confirm that the device has entered distribution network mode and is connected to the hotspot",
|
||||||
|
"selectNetwork": "Please select a device hotspot",
|
||||||
|
"successDistribution": "Successful distribution network",
|
||||||
|
"afterNetwork": "After network configuration, please connect to the WiFi network for internet connection.",
|
||||||
|
"failNetwork": "Network configuration failed",
|
||||||
|
"phoneTurnOn": "Please ensure that your phone's WiFi is turned on, and then re-enter the page",
|
||||||
|
"prepare": "Prepare the distribution network",
|
||||||
|
"miniProgrem": "Failed to start WiFi module, please reopen the mini program"
|
||||||
|
},
|
||||||
|
"linkDevice": {
|
||||||
|
"linkDevice": "Device Linkage",
|
||||||
|
"scan": "Scan",
|
||||||
|
"deviceNum": "DeviceNum",
|
||||||
|
"productNum": "ProductNum",
|
||||||
|
"productName": "ProductName",
|
||||||
|
"userName": "userName cannot be empty",
|
||||||
|
"deviceEmpty": "deviceNum cannot be empty",
|
||||||
|
"productIdEmpty": "productId cannot be empty ",
|
||||||
|
"format": "Parsing QR code, incorrect format",
|
||||||
|
"inputDeviceId": "Please Input DeviceId",
|
||||||
|
"inputProductId": "Please Input productId",
|
||||||
|
"product": "ProductName can be left blank"
|
||||||
|
},
|
||||||
|
"group": {
|
||||||
|
"equipment": "Device Grouping",
|
||||||
|
"add": " Add Device",
|
||||||
|
"detail": "Details",
|
||||||
|
"select": "Select Device",
|
||||||
|
"update": "Device Update Successful",
|
||||||
|
"name": "Name",
|
||||||
|
"inputName": "Please Enter The Group Name",
|
||||||
|
"sort": "Sort",
|
||||||
|
"inputSort": "Please Enter Grouping Sorting",
|
||||||
|
"remark": "Remarks",
|
||||||
|
"content": "Please Enter The Content",
|
||||||
|
"groupName": "Group Name Cannot Be Empty",
|
||||||
|
"serialNumber": "The Serial Number Cannot Be Empty",
|
||||||
|
"updateGroup": "Update Group",
|
||||||
|
"submit": "Submitting",
|
||||||
|
"system": "System Prompt",
|
||||||
|
"delete": "Are You Sure To Delete The Current Group ?",
|
||||||
|
"deleting": "Deleting...",
|
||||||
|
"inputContent": "Please enter keywords",
|
||||||
|
"nomore": "No More",
|
||||||
|
"confirm": "Confirm",
|
||||||
|
"cancel": "Cancel"
|
||||||
|
},
|
||||||
|
"log": {
|
||||||
|
"all": "All",
|
||||||
|
"function": "function",
|
||||||
|
"attribute": "Attribute reporting",
|
||||||
|
"event": "Event reporting",
|
||||||
|
"online": "online",
|
||||||
|
"offline": "offline",
|
||||||
|
"upgrade": "Upgrade",
|
||||||
|
"element": "Element",
|
||||||
|
"service": "Service distribution",
|
||||||
|
"acquisition": "Attribute acquisition",
|
||||||
|
"ota": "OTA Upgrade"
|
||||||
|
},
|
||||||
|
"modbus": {
|
||||||
|
"deviceName": "Device Name",
|
||||||
|
"firmware": "Firmware version",
|
||||||
|
"inputDeviceName": "Please Enter Device Name",
|
||||||
|
"inputVersion": "Please Enter Firmware version",
|
||||||
|
"time": "Time",
|
||||||
|
"range": "Range",
|
||||||
|
"unknown": "unknown"
|
||||||
|
},
|
||||||
|
"message": {
|
||||||
|
"message": "Platform Message",
|
||||||
|
"all": "All",
|
||||||
|
"inform": "Inform",
|
||||||
|
"notice": "Notice",
|
||||||
|
"creator": "Creator",
|
||||||
|
"creationTime": "Creation Time",
|
||||||
|
"noticeDetail": "Notice Detail",
|
||||||
|
"noContent": "There is currently no content available",
|
||||||
|
"config": "Equipment configuration",
|
||||||
|
"NTP": "NTP address",
|
||||||
|
"productConfig": "Product configuration",
|
||||||
|
"productPassword": "Product Password",
|
||||||
|
"mqttConfig": "Mqtt Configuration",
|
||||||
|
"mqttAddress": "Mqtt Address",
|
||||||
|
"mqttAccount": " Mqtt Account",
|
||||||
|
"mqttPassword": " Mqtt Password",
|
||||||
|
"save": "Save Config",
|
||||||
|
"report": "Reporting attributes",
|
||||||
|
"reportfunction": "Reporting function",
|
||||||
|
"event": "Reporting Event",
|
||||||
|
"abtainTime": "Get Time",
|
||||||
|
"monitior": "Reporting monitoring data",
|
||||||
|
"mobile": "Mobile Phone monitoring",
|
||||||
|
"function": "Function",
|
||||||
|
"call": "Call",
|
||||||
|
"bright": "screen brightness",
|
||||||
|
"vibration": "vibration",
|
||||||
|
"bluetooth": "Bluetooth",
|
||||||
|
"photo": "Taking photos",
|
||||||
|
"record": "Recording",
|
||||||
|
"videos": "Videos",
|
||||||
|
"attribute": "attribute",
|
||||||
|
"information": "Device Information",
|
||||||
|
"pointer": "Acceleration pointer",
|
||||||
|
"gyroscope": "gyroscope",
|
||||||
|
"compass": "compass",
|
||||||
|
"memory": "insufficient memory",
|
||||||
|
"network": "Network changes",
|
||||||
|
"screenshot": "User screenshot",
|
||||||
|
"setting": "System Setting",
|
||||||
|
"system": "system configuration",
|
||||||
|
"address": "Server address",
|
||||||
|
"text": "Text",
|
||||||
|
"statusReset": "Device status reset",
|
||||||
|
"reset": "Reset",
|
||||||
|
"mqttReconnection": "Mqtt reconnection",
|
||||||
|
"reconnection": "reconnection"
|
||||||
|
},
|
||||||
|
"avatar": {
|
||||||
|
"cropping": "Cropping",
|
||||||
|
"album": "album",
|
||||||
|
"relieve": "relieve"
|
||||||
|
},
|
||||||
|
"player": {
|
||||||
|
"stream": "Live streaming on devices",
|
||||||
|
"replay": "Replay Theater",
|
||||||
|
"play": "Play",
|
||||||
|
"suspend": "suspend",
|
||||||
|
"enlarge": "enlarge",
|
||||||
|
"narrow": "narrow",
|
||||||
|
"recording": "Select recording date",
|
||||||
|
"storage": "Device storage",
|
||||||
|
"screenshot": "screenshot",
|
||||||
|
"channel": "Device Channel",
|
||||||
|
"loading": "Loading",
|
||||||
|
"noRecording": "There is no recording in the current channel",
|
||||||
|
"purchase": "Commercial version, please purchase authorization, loading in progress",
|
||||||
|
"monitior": "Monitoring details",
|
||||||
|
"startRecord": "start recording",
|
||||||
|
"stopRecord": "stop recording",
|
||||||
|
"Recording": "Recording",
|
||||||
|
"definition": "definition",
|
||||||
|
"more": "more"
|
||||||
|
},
|
||||||
|
"waitLogin": {
|
||||||
|
"loginOrregister": "Login/Register",
|
||||||
|
"ExperienceAccountLogin": "Experience account login",
|
||||||
|
"agree": "I have read and agree",
|
||||||
|
"privacy": "Privacy Policy",
|
||||||
|
"agreement": "User Agreement",
|
||||||
|
"children": "Children's Privacy Protection Statement",
|
||||||
|
"third": "Third-Party Sharing and SDK List"
|
||||||
|
},
|
||||||
|
"indeScada": {
|
||||||
|
"inputScada": "Please enter a scada name",
|
||||||
|
"search": "Search",
|
||||||
|
"tryingToLoad": "Trying To Load...",
|
||||||
|
"gentlyPullUp": "Gently Pull Up",
|
||||||
|
"nothingLeft": "There's Really Nothing Left",
|
||||||
|
"emptyData": "Data Is Empty"
|
||||||
|
},
|
||||||
|
"deviceHistory": {
|
||||||
|
"lastTwoHours": "last 2 hours",
|
||||||
|
"lastOneDay": "last 1 day",
|
||||||
|
"lastThirtyDay": "last 30 day",
|
||||||
|
"custom": "custom",
|
||||||
|
"inputDate": "starting time",
|
||||||
|
"cancel": "Cancel",
|
||||||
|
"nextStep": "Next Step",
|
||||||
|
"confirm": "Confirm",
|
||||||
|
"filtrate": "Filtrate",
|
||||||
|
"variable": "Variable",
|
||||||
|
"updateTime": "Update Time",
|
||||||
|
"emptyTable": "No further data available",
|
||||||
|
"emptyData": "No data",
|
||||||
|
"countTip": "The number of variables cannot exceed 9!",
|
||||||
|
"select": "Please select a variable!"
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
6
locale/index.js
Normal file
6
locale/index.js
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
import en from './en-US.json';
|
||||||
|
import zhHans from './zh-CN.json';
|
||||||
|
export default {
|
||||||
|
'zh-CN': zhHans,
|
||||||
|
'en-US': en,
|
||||||
|
}
|
873
locale/zh-CN.json
Normal file
873
locale/zh-CN.json
Normal file
@ -0,0 +1,873 @@
|
|||||||
|
{
|
||||||
|
"locale.en-US": "English",
|
||||||
|
"locale.zh-CN": "简体中文",
|
||||||
|
"navBar.login": "登录",
|
||||||
|
"navBar.registration": "用户注册",
|
||||||
|
"navBar.loginBinding": "用户登录绑定",
|
||||||
|
"navBar.registrationBinding": "用户注册绑定",
|
||||||
|
"navBar.smsBogin": "短信登录",
|
||||||
|
"navBar.home": "首页",
|
||||||
|
"navBar.scene": "场景",
|
||||||
|
"navBar.alert": "告警",
|
||||||
|
"navBar.news": "动态",
|
||||||
|
"navBar.user": "我的",
|
||||||
|
"navBar.browse": "浏览网页",
|
||||||
|
"navBar.sceneDetail": "场景详情",
|
||||||
|
"navBar.sceneList": "场景列表",
|
||||||
|
"navBar.productList": "产品列表",
|
||||||
|
"navBar.deviceList": "设备列表",
|
||||||
|
"navBar.physicalModels": "物模列表",
|
||||||
|
"navBar.alarmList": "告警列表",
|
||||||
|
"navBar.timer": "定时器",
|
||||||
|
"navBar.alarmLog": "告警记录",
|
||||||
|
"navBar.alarmHandling": "告警处理",
|
||||||
|
"navBar.deviceDetails": "设备详情",
|
||||||
|
"navBar.timedList": "定时列表",
|
||||||
|
"navBar.timedDetails": "定时详情",
|
||||||
|
"navBar.dynamic": "最新动态",
|
||||||
|
"navBar.dynamicDetails": "动态详情",
|
||||||
|
"navBar.classification": "分类动态",
|
||||||
|
"navBar.addDevice": "添加设备",
|
||||||
|
"navBar.associatedDevices": "关联设备",
|
||||||
|
"navBar.deviceSharing": "设备分享",
|
||||||
|
"navBar.shareDetails": "分享用户详情",
|
||||||
|
"navBar.latest": "最新消息",
|
||||||
|
"navBar.newsDetail": "消息详情",
|
||||||
|
"navBar.setting": "系统设置",
|
||||||
|
"navBar.simulation": "设备模拟",
|
||||||
|
"navBar.mobile": "手机监控",
|
||||||
|
"navBar.account": "账号信息",
|
||||||
|
"navBar.language": "语言设置",
|
||||||
|
"navBar.updateAvatar": "修改头像",
|
||||||
|
"navBar.unbind": "解除微信绑定",
|
||||||
|
"navBar.group": "设备分组",
|
||||||
|
"navBar.running": "运行状态",
|
||||||
|
"navBar.updateGroup": "编辑分组",
|
||||||
|
"navBar.updateDevice": "设备修改",
|
||||||
|
"navBar.eventLog": "事件日志",
|
||||||
|
"navBar.orderLog": "指令日志",
|
||||||
|
"navBar.player": "播放器",
|
||||||
|
"navBar.resetPsd": "密码修改",
|
||||||
|
"common.fastbee": "蜂信物联",
|
||||||
|
"common.add": "添加",
|
||||||
|
"common.delete": "删除",
|
||||||
|
"common.save": "保存",
|
||||||
|
"common.cancel": "取消",
|
||||||
|
"common.confirm": "确认",
|
||||||
|
"common.back": "返回",
|
||||||
|
"common.edit": "编辑",
|
||||||
|
"common.updateSuccessful": "编辑成功",
|
||||||
|
"common.addSuccessful": "新增成功",
|
||||||
|
"common.saveError": "保存失败",
|
||||||
|
"common.saveSuccessful": "保存成功",
|
||||||
|
"common.operation": "操作成功",
|
||||||
|
"common.search": "搜索",
|
||||||
|
"common.tips": "提示",
|
||||||
|
"common.loginTips": "该功能需要登录后才可使用,是否去登录?",
|
||||||
|
"common.PleaseIpt": "请输入",
|
||||||
|
"common.PleaseSelect": "请选择",
|
||||||
|
"common.Welcome": "欢迎来到",
|
||||||
|
"common.viewDetail": "查看详情",
|
||||||
|
"variable.041-0": "请输入变量名称",
|
||||||
|
"variable.041-1": "事件",
|
||||||
|
"variable.041-2": "属性",
|
||||||
|
"variable.041-3": "功能",
|
||||||
|
"variable.041-4": "下发指令主动采集变量,是否继续?",
|
||||||
|
"variable.041-5": "努力加载中...",
|
||||||
|
"variable.041-6": "点击我加载更多",
|
||||||
|
"variable.041-7": "实在没有了",
|
||||||
|
"variable.041-8": "设备未激活",
|
||||||
|
"variable.041-9": "设备处于禁用状态",
|
||||||
|
"variable.041-10": "设备处于离线状态",
|
||||||
|
"variable.041-11": "下发成功",
|
||||||
|
"variable.041-12": "数值不在范围内,不能下发,请重新输入!",
|
||||||
|
"cron.day.304304-0": "日,允许的通配符[, - * ? / L W]",
|
||||||
|
"cron.day.304304-1": "不指定",
|
||||||
|
"cron.day.304304-2": "周期从",
|
||||||
|
"cron.day.304304-3": "日",
|
||||||
|
"cron.day.304304-4": "从",
|
||||||
|
"cron.day.304304-5": "号开始,每",
|
||||||
|
"cron.day.304304-6": "日执行一次",
|
||||||
|
"cron.day.304304-7": "每月",
|
||||||
|
"cron.day.304304-8": "号最近的那个工作日",
|
||||||
|
"cron.day.304304-9": "本月最后一天",
|
||||||
|
"cron.day.304304-10": "指定",
|
||||||
|
"cron.day.304304-11": "可多选",
|
||||||
|
"cron.hour.304304-0": "小时,允许的通配符[, - * /]",
|
||||||
|
"cron.hour.304304-1": "周期从",
|
||||||
|
"cron.hour.304304-2": "小时",
|
||||||
|
"cron.hour.304304-3": "从",
|
||||||
|
"cron.hour.304304-4": "小时开始,每",
|
||||||
|
"cron.hour.304304-5": "小时执行一次",
|
||||||
|
"cron.hour.304304-6": "指定",
|
||||||
|
"cron.index.464657-0": "秒",
|
||||||
|
"cron.index.464657-1": "分钟",
|
||||||
|
"cron.index.464657-2": "小时",
|
||||||
|
"cron.index.464657-3": "日",
|
||||||
|
"cron.index.464657-4": "月",
|
||||||
|
"cron.index.464657-5": "周",
|
||||||
|
"cron.index.464657-6": "年",
|
||||||
|
"cron.index.464657-7": "时间表达式",
|
||||||
|
"cron.index.464657-8": "Cron 表达式",
|
||||||
|
"cron.index.464657-9": "确定",
|
||||||
|
"cron.index.464657-10": "重置",
|
||||||
|
"cron.index.464657-11": "生成表达式",
|
||||||
|
"cron.min.411657-0": "分钟,允许的通配符[, - * /]",
|
||||||
|
"cron.min.411657-1": "周期从",
|
||||||
|
"cron.min.411657-2": "分钟",
|
||||||
|
"cron.min.411657-3": "从",
|
||||||
|
"cron.min.411657-4": "分钟开始,每",
|
||||||
|
"cron.min.411657-5": "分钟执行一次",
|
||||||
|
"cron.min.411657-6": "指定",
|
||||||
|
"cron.month.382453-0": "月,允许的通配符[, - * /]",
|
||||||
|
"cron.month.382453-1": "周期从",
|
||||||
|
"cron.month.382453-2": "月",
|
||||||
|
"cron.month.382453-3": "从",
|
||||||
|
"cron.month.382453-4": "月开始,每",
|
||||||
|
"cron.month.382453-5": "月执行一次",
|
||||||
|
"cron.month.382453-6": "指定",
|
||||||
|
"cron.month.382453-7": "可多选",
|
||||||
|
"cron.second.452546-0": "秒,允许的通配符[, - * /]",
|
||||||
|
"cron.second.452546-1": "周期从",
|
||||||
|
"cron.second.452546-2": "秒",
|
||||||
|
"cron.second.452546-3": "从",
|
||||||
|
"cron.second.452546-4": "秒开始,每",
|
||||||
|
"cron.second.452546-5": "秒执行一次",
|
||||||
|
"cron.second.452546-6": "指定",
|
||||||
|
"cron.second.452546-7": "可多选",
|
||||||
|
"cron.week.903494-0": "周,允许的通配符[, - * /]",
|
||||||
|
"cron.week.903494-1": "不指定",
|
||||||
|
"cron.week.903494-2": "周期从",
|
||||||
|
"cron.week.903494-3": "第",
|
||||||
|
"cron.week.903494-4": "周的",
|
||||||
|
"cron.week.903494-5": "本月最后一个星期",
|
||||||
|
"cron.week.903494-6": "指定",
|
||||||
|
"cron.week.903494-7": "星期一",
|
||||||
|
"cron.week.903494-8": "星期二",
|
||||||
|
"cron.week.903494-9": "星期三",
|
||||||
|
"cron.week.903494-10": "星期四",
|
||||||
|
"cron.week.903494-11": "星期五",
|
||||||
|
"cron.week.903494-12": "星期六",
|
||||||
|
"cron.week.903494-13": "星期日",
|
||||||
|
"cron.year.999034-0": "不填,允许的通配符[, - * /]",
|
||||||
|
"cron.year.999034-1": "每年",
|
||||||
|
"cron.year.999034-2": "周期从",
|
||||||
|
"cron.year.999034-3": "从",
|
||||||
|
"cron.year.999034-4": "年开始,每",
|
||||||
|
"cron.year.999034-5": "年执行一次",
|
||||||
|
"cron.year.999034-6": "指定",
|
||||||
|
"cron.year.999034-7": "可多选",
|
||||||
|
"cron.result.893023-0": "最近5次运行时间",
|
||||||
|
"cron.result.893023-1": "计算结果中...",
|
||||||
|
"cron.result.893023-2": "没有达到条件的结果!",
|
||||||
|
"cron.result.893023-3": "最近100年内只有上面",
|
||||||
|
"cron.result.893023-4": "条结果!",
|
||||||
|
"login": {
|
||||||
|
"accountLogin": "账号登录",
|
||||||
|
"inputUserName": "请输入用户名",
|
||||||
|
"inputPassword": "请输入密码",
|
||||||
|
"inputCode": "请输入验证码",
|
||||||
|
"login": "登录",
|
||||||
|
"exampleAccount": "演示账号: fastbee 123456",
|
||||||
|
"HuapuIoT": "华普物联",
|
||||||
|
"registerNow": "现在注册",
|
||||||
|
"readAndAgree": "已阅读并同意",
|
||||||
|
"serviceAgreement": "服务协议",
|
||||||
|
"and": "与",
|
||||||
|
"privacyPolicy": "隐私政策",
|
||||||
|
"childProtectionStatement": "儿童隐私保护声明",
|
||||||
|
"commonBill": "第三方共享与SDK清单",
|
||||||
|
"readAndCheckTheAgreement": "请阅读并勾选协议",
|
||||||
|
"accontMsg": "账号信息不能为空",
|
||||||
|
"phoneLogin": "手机号快捷登录",
|
||||||
|
"welcomeToLogin": "欢迎登录峰信物联",
|
||||||
|
"phoneAuthorization": "手机授权登录",
|
||||||
|
"remember": "记住密码",
|
||||||
|
"other": "其他方式登录",
|
||||||
|
"account": "账号登录",
|
||||||
|
"forgetPassword": "忘记密码",
|
||||||
|
"thirdPartyLogin": "第三方登录",
|
||||||
|
"smsLogin": "短信登录",
|
||||||
|
"weChat": "微信登录",
|
||||||
|
"mobileLogin": "手机快捷登录"
|
||||||
|
},
|
||||||
|
"register": {
|
||||||
|
"userRegister": "用户注册",
|
||||||
|
"inputUserName": "请输入用户名",
|
||||||
|
"inputPhone": "请输入手机号码",
|
||||||
|
"inputPassword": "请输入密码",
|
||||||
|
"inputPasswordAgain": "请再次输入密码",
|
||||||
|
"inputUserNameSize": "请输入用户名,长度大于4",
|
||||||
|
"inputCode": "请输入验证码",
|
||||||
|
"registration": "注册",
|
||||||
|
"accountLogin": "已有账号登录",
|
||||||
|
"congratulations": "恭喜你,您的账号",
|
||||||
|
"registeredSuccessfully": "注册成功"
|
||||||
|
},
|
||||||
|
"smsLogin": {
|
||||||
|
"smsLogin": "短信登录",
|
||||||
|
"inputPhone": "请输入手机号码",
|
||||||
|
"inputCode": "请输入验证码",
|
||||||
|
"login": "登录",
|
||||||
|
"HuapuIoT": "华普物联",
|
||||||
|
"accountLogin": "账号登录",
|
||||||
|
"obtainCode": "获取验证码",
|
||||||
|
"correctPhone": "请输入正确的手机号码",
|
||||||
|
"obtainSmsCode": "正在获取验证码",
|
||||||
|
"codeSent": "验证码已发送",
|
||||||
|
"sending": "倒计时结束在发送!"
|
||||||
|
},
|
||||||
|
"bindLogin": {
|
||||||
|
"bindLogin": "账号绑定登录",
|
||||||
|
"bindRegister": "注册绑定",
|
||||||
|
"alert": "提示",
|
||||||
|
"alertTitle": "账户不存在,您是否要注册新账户",
|
||||||
|
"notRegister": "暂不注册",
|
||||||
|
"confirmRegister": "确认注册",
|
||||||
|
"accountNotNull": "账号不能为空",
|
||||||
|
"bind": "绑 定"
|
||||||
|
},
|
||||||
|
"bindRegister": {
|
||||||
|
"bindRegister": "绑 定 注 册",
|
||||||
|
"incorrectPhone": "手机号码格式不正确",
|
||||||
|
"inputPasswordSize": "请输入密码且长度大于",
|
||||||
|
"enterPasswordsDiffer": "两次输入的密码不一致",
|
||||||
|
"policy0": "请允许我们在必要场景下合理使用你的账号信息,且阅读并同意",
|
||||||
|
"policy1": "《隐私政策》",
|
||||||
|
"policy2": "《用户协议》",
|
||||||
|
"policy3": "《儿童隐私保护声明》",
|
||||||
|
"policy4": "《第三方共享与SDK清单》",
|
||||||
|
"policy5": "用户协议与隐私政策",
|
||||||
|
"policy6": "感谢您一直以来对我们的信任!我们依据最新的监管要求更新了我们的",
|
||||||
|
"policy7": "。为了更好地保护您的隐私和信息安全,请您务必在使用前仔细阅读和理解,若您同意更新后的隐私政策,请点击同意并继续使用我们的产品和服务。",
|
||||||
|
"agree0": "同意",
|
||||||
|
"agree1": "不同意"
|
||||||
|
},
|
||||||
|
"user": {
|
||||||
|
"personalCentre": "个人中心",
|
||||||
|
"openIOT": "蜂信物联-开源物联网平台",
|
||||||
|
"addDevice": "添加设备",
|
||||||
|
"addScene": "添加场景",
|
||||||
|
"groupManagement": "分组管理",
|
||||||
|
"platformMsg": "平台消息",
|
||||||
|
"ordinaryMembers": "普通会员",
|
||||||
|
"currentAccountAlert": "当前账号未开通会员",
|
||||||
|
"openAtOnce": "立即开通",
|
||||||
|
"account": "账号",
|
||||||
|
"messages": "信息",
|
||||||
|
"signOut": "注销账号",
|
||||||
|
"about": "关于我们",
|
||||||
|
"language": "语言设置",
|
||||||
|
"appDownload": "app下载",
|
||||||
|
"copyTip": "链接已复制,请在浏览器打开",
|
||||||
|
"browserOpen": "请点击右上角在浏览器中打开",
|
||||||
|
"noDownloadApp": "你还没下载app",
|
||||||
|
"isDownloadApp": "是否前去下载app?",
|
||||||
|
"appUpdate": "检查更新",
|
||||||
|
"discoverNewVer": "发现新版本",
|
||||||
|
"isUpdateNewVer": "发现新版本,是否更新?",
|
||||||
|
"thisLatestVer": "当前已是最新版本",
|
||||||
|
"verCheckFailed": "版本检查失败",
|
||||||
|
"exitAccount": "退出登录",
|
||||||
|
"confirmExit": "确认退出账号",
|
||||||
|
"confirmSignOut": "账户注销确认",
|
||||||
|
"signOutAlert": "账户注销后,所有信息将被清空,且无法恢复,您是否要注销?",
|
||||||
|
"notWriteOff": "暂不注销",
|
||||||
|
"confirmWriteOff": "确认注销",
|
||||||
|
"confirmWxBind": "微信绑定确认",
|
||||||
|
"wxBindAlertTitle": "您是否要绑定微信",
|
||||||
|
"notBind": "暂不绑定",
|
||||||
|
"confirmBind": "确认绑定",
|
||||||
|
"saveSuccess": "保存成功",
|
||||||
|
"occurError": "发生错误",
|
||||||
|
"scanning": "扫码只支持App和小程序",
|
||||||
|
"parseQrCode": "解析二维码后,找不到对应处理类型",
|
||||||
|
"errorParseQRcode": "解析二维码错误,格式不正确",
|
||||||
|
"language-01": "多语言",
|
||||||
|
"updatePassword": "密码修改",
|
||||||
|
"login": "登录/注册",
|
||||||
|
"visitor": "游客",
|
||||||
|
"configuration": "独立组态",
|
||||||
|
"notice": "该功能需要登录才可使用,是否去登录?",
|
||||||
|
"bindSuccess": "绑定成功",
|
||||||
|
"selectAlbum": "从手机相册选择",
|
||||||
|
"photograph": "拍照",
|
||||||
|
"password0": "旧密码",
|
||||||
|
"password1": "请输入旧密码",
|
||||||
|
"password2": "新密码",
|
||||||
|
"password3": "请输入新密码",
|
||||||
|
"password4": "确认密码",
|
||||||
|
"password5": "保 存",
|
||||||
|
"password6": "长度在6-20个字符",
|
||||||
|
"password7": "确认密码不能为空",
|
||||||
|
"password8": "两次输入的密码不一致"
|
||||||
|
},
|
||||||
|
"account": {
|
||||||
|
"avatar": "用户头像",
|
||||||
|
"nikeName": "用户昵称",
|
||||||
|
"email": "电子邮箱",
|
||||||
|
"phone": "电话号码",
|
||||||
|
"createTime": "创建时间",
|
||||||
|
"Ip": "IP",
|
||||||
|
"save": "保存",
|
||||||
|
"inputNickname": "请输入用户昵称",
|
||||||
|
"inputEmail": "请输入电子邮箱",
|
||||||
|
"inputPhone": "请输入电话号码",
|
||||||
|
"inputCreatetime": "请输入创建时间",
|
||||||
|
"inputIP": "请输入登录ip",
|
||||||
|
"incorrectEmail": "邮箱号码格式不正确"
|
||||||
|
},
|
||||||
|
"home": {
|
||||||
|
"netWork": "配网添加",
|
||||||
|
"wifi-type": "通用于WIFI类型的设备",
|
||||||
|
"qrCode": "扫码添加",
|
||||||
|
"networksDevices": "适用于蜂窝网络/以太网类设备",
|
||||||
|
"association": "关联添加",
|
||||||
|
"supportBatchOperations": "适用于蜂窝网络/以太网类设备,并支持批量操作",
|
||||||
|
"errorLoading": "加载失败",
|
||||||
|
"serialNumber": "设备编号",
|
||||||
|
"productName": "产品名称",
|
||||||
|
"sureAdd": "确定添加吗",
|
||||||
|
"notActive": "未激活",
|
||||||
|
"disabled": "禁用",
|
||||||
|
"onLine": "在线",
|
||||||
|
"offline": "离线",
|
||||||
|
"shadow": "影子",
|
||||||
|
"all": "全部",
|
||||||
|
"eventLog": "事件日志",
|
||||||
|
"Instructionlog": "指令日志",
|
||||||
|
"createBtn": "创建设备",
|
||||||
|
"content": "该功能需要登录才可使用,是否去登录?",
|
||||||
|
"location": "未知位置,点击屏幕重新定位",
|
||||||
|
"welcome": "欢迎使用蜂信物联!"
|
||||||
|
},
|
||||||
|
"about": {
|
||||||
|
"about": "关于我们",
|
||||||
|
"authorQQ": "作者企鹅:164770707",
|
||||||
|
"authorWechat": "作者微信:QQ164770707",
|
||||||
|
"group": "交流群:720136372,1073236354",
|
||||||
|
"webSite": "官方网站",
|
||||||
|
"sourceCode": "查看源码",
|
||||||
|
"open": "版本 v2.6.0",
|
||||||
|
"message": "曲靖蜂信科技有限公司",
|
||||||
|
"copyTip": "链接已复制,请在浏览器打开"
|
||||||
|
},
|
||||||
|
"deviceDetail": {
|
||||||
|
"basicMsg": "基本信息",
|
||||||
|
"deviceName": "设备名称",
|
||||||
|
"position": "定位方式",
|
||||||
|
"longitude": "设备经度",
|
||||||
|
"latitude": "设备纬度",
|
||||||
|
"address": "所在地址",
|
||||||
|
"shadow": "设备影子",
|
||||||
|
"disabledDevice": "禁用设备",
|
||||||
|
"remark": "备注信息",
|
||||||
|
"inputMsg": "请输入内容",
|
||||||
|
"inputLongitude": "请输入设备经度",
|
||||||
|
"inputLatitude": "请输入设备经度",
|
||||||
|
"loadingFail": "加载失败",
|
||||||
|
"veryGood": "极好",
|
||||||
|
"excellent": "优",
|
||||||
|
"good": "良",
|
||||||
|
"average": "中",
|
||||||
|
"poor": "差",
|
||||||
|
"device": "设备",
|
||||||
|
"timing": "定时",
|
||||||
|
"journal": "日志",
|
||||||
|
"static": "统计",
|
||||||
|
"share": "分享",
|
||||||
|
"preserve": "保存",
|
||||||
|
"deviceStatus": "设备状态",
|
||||||
|
"serialNumber": "设备编号",
|
||||||
|
"belongingProducts": "所属产品",
|
||||||
|
"firmwareVersion": "固件版本",
|
||||||
|
"positionMethod": "定位方式",
|
||||||
|
"equipmentSignal": "设备信号",
|
||||||
|
"address": "所在地址",
|
||||||
|
"networkAddress": "入网地址",
|
||||||
|
"activationTime": "激活时间",
|
||||||
|
"deleteDevice": "删除设备",
|
||||||
|
"runningStatus": "运行状态",
|
||||||
|
"monitor": "实时监测",
|
||||||
|
"deviceDetail": "设备详情",
|
||||||
|
"channel": "设备通道",
|
||||||
|
"autoPosition": "自动定位",
|
||||||
|
"devicePosition": "设备定位",
|
||||||
|
"customLocation": "自定义位置",
|
||||||
|
"deviceCheck": "设备名称不能为空",
|
||||||
|
"positionCheck": "定位方式不能为空",
|
||||||
|
"updateSuccess": "修改成功",
|
||||||
|
"overview": "设备概况",
|
||||||
|
"Surveillance": "视频监控",
|
||||||
|
"alert": "告警记录",
|
||||||
|
"scada": "组态",
|
||||||
|
"emptyNull": "数据为空",
|
||||||
|
"remove": "删除警告",
|
||||||
|
"identifier": "标识符",
|
||||||
|
"value": "值",
|
||||||
|
"logContent": "日志内容",
|
||||||
|
"reportTime": "上报时间",
|
||||||
|
"result": "结果描述",
|
||||||
|
"issueTime": "下发时间",
|
||||||
|
"modelName": "名称",
|
||||||
|
"open": "打开",
|
||||||
|
"close": "关闭"
|
||||||
|
},
|
||||||
|
"timing": {
|
||||||
|
"timingName": "请输入定时名称",
|
||||||
|
"search": "搜索",
|
||||||
|
"execute": "执行一次",
|
||||||
|
"effortLoading": "努力加载中...",
|
||||||
|
"loadMore": "点击我加载更多",
|
||||||
|
"nothing": "实在没有了",
|
||||||
|
"emptyNull": "数据为空",
|
||||||
|
"all": "全部",
|
||||||
|
"enable": "启用",
|
||||||
|
"notEnabled": "未启用",
|
||||||
|
"nosupported": "暂不支持微信小程序",
|
||||||
|
"wap2": "请使用wap2app方式打包!"
|
||||||
|
},
|
||||||
|
"deviceStatic": {
|
||||||
|
"selectSub": "请选择设备从机",
|
||||||
|
"rangeTime": "开始时间 - 结束时间",
|
||||||
|
"selectTime": "选择时间范围",
|
||||||
|
"search": "查询"
|
||||||
|
},
|
||||||
|
"monitior": {
|
||||||
|
"monitoringInterval": "监测间隔(ms) 和 次数:",
|
||||||
|
"inputNumber": "输入间隔毫秒数",
|
||||||
|
"inputTimes": " 输入次数",
|
||||||
|
"stop": "停止",
|
||||||
|
"monitior": "监测",
|
||||||
|
"receivingData": "正在接收数据...",
|
||||||
|
"MonitoringRange": "监测的间隔范围500-10000毫秒",
|
||||||
|
"monitoringQuantity": " 监测数量范围1-300",
|
||||||
|
"real-timeMonitor": "实时监测",
|
||||||
|
"stopMonitor": "停止监测"
|
||||||
|
},
|
||||||
|
"scene": {
|
||||||
|
"sceneLink": "场景联动",
|
||||||
|
"inputSceneName": "请输入场景名称",
|
||||||
|
"search": "搜索",
|
||||||
|
"condition": "条件",
|
||||||
|
"way": "方式",
|
||||||
|
"task": "任务",
|
||||||
|
"execute": "执行一次",
|
||||||
|
"tryingToLoad": "努力加载中...",
|
||||||
|
"gentlyPullUp": "轻轻上拉",
|
||||||
|
"nothingLeft": "实在没有了",
|
||||||
|
"emptyData": "数据为空",
|
||||||
|
"administration": "管理",
|
||||||
|
"alarm": "告警",
|
||||||
|
"anyCondition": "任意条件",
|
||||||
|
"allCondition": "所有条件",
|
||||||
|
"notConditions": "不满足条件",
|
||||||
|
"unknown": "未知",
|
||||||
|
"serial": "串行",
|
||||||
|
"parallel": "并行",
|
||||||
|
"switchSuccessful": "切换成功",
|
||||||
|
"switchFail": "切换失败",
|
||||||
|
"seeMore": "查看更多 >",
|
||||||
|
"delay": "延时匹配 :",
|
||||||
|
"iptDelayTime": "请输入延时时间",
|
||||||
|
"second": "秒钟"
|
||||||
|
},
|
||||||
|
"share": {
|
||||||
|
"userDetail": "用户详情",
|
||||||
|
"userMsg": "用户信息",
|
||||||
|
"userId": "用户编号:",
|
||||||
|
"userName": "用户名称:",
|
||||||
|
"phoneNumber": "手机号码:",
|
||||||
|
"userPermissions": "设置用户权限",
|
||||||
|
"notRemark": "暂无备注",
|
||||||
|
"remark": "备注信息",
|
||||||
|
"confirmShare": "确认分享",
|
||||||
|
"deviceUpgradation": "设备升级",
|
||||||
|
"otaUpgradation": "设备OTA升级",
|
||||||
|
"timing": "设备定时",
|
||||||
|
"timedTaskExecution": "定时执行任务",
|
||||||
|
"deviceLog": "设备日志",
|
||||||
|
"contains": "包含事件日志和指令日志",
|
||||||
|
"monitior": "实时监测",
|
||||||
|
"afterMonitior": "下发实时监测指令后,图表实时显示设备上报数据",
|
||||||
|
"monitioringStatic": "监测统计",
|
||||||
|
"chartDisplay": "图表显示存储的历史监测数据",
|
||||||
|
"deviceShareSuccess": "设备分享成功",
|
||||||
|
"title": "系统提示",
|
||||||
|
"alert": "确定删除当前用户吗?",
|
||||||
|
"delete": "删除中...",
|
||||||
|
"inputUserPhone": "请输入用户手机号码",
|
||||||
|
"deviceShare": "设备分享",
|
||||||
|
"query": "查 询",
|
||||||
|
"sharedUsers": "已分享用户",
|
||||||
|
"master": "主人",
|
||||||
|
"share": "分享",
|
||||||
|
"unable": "查询不到用户信息,或者该用户已经是设备用户",
|
||||||
|
"correct": "请输入正确手机号码"
|
||||||
|
},
|
||||||
|
"sceneDetail": {
|
||||||
|
"inputName": "请输入名称",
|
||||||
|
"sceneState": "场景状态",
|
||||||
|
"trigger": "触发器",
|
||||||
|
"addConditions": "添加条件",
|
||||||
|
"deviceNumber": "设备数量",
|
||||||
|
"deviceOnline": "设备上线",
|
||||||
|
"Equipment": "设备下线",
|
||||||
|
"action": "执行动作",
|
||||||
|
"addAction": "添加动作",
|
||||||
|
"alertExecute": "告警执行",
|
||||||
|
"moreSetting": "更多设置",
|
||||||
|
"silentTimeAlert": "静默时间:在设定的时间范围内将不再重复执行;延时执行:延时不会存储,限制为90秒内。",
|
||||||
|
"silentTime": "静默时间",
|
||||||
|
"inputTime": "请输入静默时间",
|
||||||
|
"minute": "分钟",
|
||||||
|
"executionMethod": "执行方式",
|
||||||
|
"serial": "串行",
|
||||||
|
"parallel": "并行",
|
||||||
|
"delayed ": "延时执行",
|
||||||
|
"inputExtensionTime": "请输入延长时间 ",
|
||||||
|
"seconds": "秒钟",
|
||||||
|
"complete": "完成",
|
||||||
|
"deviceTriggered": "设备触发",
|
||||||
|
"productTriggering": "产品触发",
|
||||||
|
"timedTrigger": "定时触发",
|
||||||
|
"deviceExecution": "设备执行",
|
||||||
|
"productExecution": "产品执行",
|
||||||
|
"sceneValidate": "场景名称不能为空",
|
||||||
|
"triggerValidate": "触发条件不能为空",
|
||||||
|
"taskValidate": "执行任务不能为空",
|
||||||
|
"tips": "温馨提示"
|
||||||
|
},
|
||||||
|
"product": {
|
||||||
|
"inputDeviceName": "请输入设备名称",
|
||||||
|
"next": "下一步",
|
||||||
|
"selectThingModel": "物模型选择",
|
||||||
|
"attribute": "属性",
|
||||||
|
"function": "功能",
|
||||||
|
"event": "事件",
|
||||||
|
"selectDevice": "请选择设备",
|
||||||
|
"selectThingsModels": "请选择物模型",
|
||||||
|
"inputProduct": "请输入产品名称",
|
||||||
|
"selectProducts": "请选择产品",
|
||||||
|
"operator": "操作符",
|
||||||
|
"selectOperator": "请选择操作符",
|
||||||
|
"on": "开",
|
||||||
|
"off": "关",
|
||||||
|
"input": "请输入",
|
||||||
|
"inputValue": "请设置对应值",
|
||||||
|
"selectValue": "请选择值",
|
||||||
|
"timedName": "定时名称不能为空",
|
||||||
|
"taskExecution": "执行任务不能为空"
|
||||||
|
},
|
||||||
|
"sceneTiming": {
|
||||||
|
"time": "时间",
|
||||||
|
"selectTime": "请选择时间",
|
||||||
|
"again": "重复",
|
||||||
|
"selectWeek": "请选择星期",
|
||||||
|
"default": "默认",
|
||||||
|
"auto": "自定义",
|
||||||
|
"inputCRON": "请输入CRON",
|
||||||
|
"expression": "生成表达式",
|
||||||
|
"monday": "周一",
|
||||||
|
"tuesday": "周二",
|
||||||
|
"wednesday": "周三",
|
||||||
|
"thursday": "周四",
|
||||||
|
"friday": "周五",
|
||||||
|
"saturday": "周六",
|
||||||
|
"sunday": "周天",
|
||||||
|
"everyDay": "每天",
|
||||||
|
"status": "定时状态",
|
||||||
|
"trigger": "触发器有且只有一个定时,执行动作中的告警无效",
|
||||||
|
"alarm": "告警执行",
|
||||||
|
"develop": "开发中...",
|
||||||
|
"select": "请选择告警"
|
||||||
|
},
|
||||||
|
"alert": {
|
||||||
|
"inputAlertName": "请输入告警名称",
|
||||||
|
"all": "全部",
|
||||||
|
"pending": "待处理",
|
||||||
|
"untreated": "无需处理",
|
||||||
|
"processed": "已处理",
|
||||||
|
"notice": "提醒通知",
|
||||||
|
"minor": "轻微问题",
|
||||||
|
"warning": "严重警告",
|
||||||
|
"alertName": "告警名称",
|
||||||
|
"processState": "处理状态",
|
||||||
|
"data": "数据",
|
||||||
|
"alertTime": "告警时间",
|
||||||
|
"process": "处理",
|
||||||
|
"alertInformation": "告警信息",
|
||||||
|
"serialNumber": "设备编号",
|
||||||
|
"deviceName": "设备名称",
|
||||||
|
"alertType": "告警级别",
|
||||||
|
"alertProcess": "告警处理",
|
||||||
|
"processAlert": "处理告警",
|
||||||
|
"processResult": "处理结果",
|
||||||
|
"processTime": "处理时间",
|
||||||
|
"inputProcessMsg": "请输入处理内容,可不填",
|
||||||
|
"noNeed": "不需要处理",
|
||||||
|
"Unprocessed": "未处理"
|
||||||
|
},
|
||||||
|
"status": {
|
||||||
|
"deviceVersion": "设备版本",
|
||||||
|
"deviceFirmware": "设备固件升级",
|
||||||
|
"grade": "升级",
|
||||||
|
"noNeedToUpgrade": "已经是最新版本,不需要升级",
|
||||||
|
"upgraded": "有新版本可以升级",
|
||||||
|
"name": "名称:",
|
||||||
|
"version": "版本:",
|
||||||
|
"description": "描述:",
|
||||||
|
"inputString": "请输入字符串",
|
||||||
|
"unit": "单位",
|
||||||
|
"send": "发送",
|
||||||
|
"decimals": "请输入小数",
|
||||||
|
"integer": "请输入整数",
|
||||||
|
"monitior": "监测数据",
|
||||||
|
"offline": "离线时状态",
|
||||||
|
"service": "服务调用成功",
|
||||||
|
"equip": "设备升级",
|
||||||
|
"online": "设备在线",
|
||||||
|
"shadow": "影子模式",
|
||||||
|
"deviceOffline": "设备离线",
|
||||||
|
"control": "设备控制",
|
||||||
|
"stateModel": "状态模式",
|
||||||
|
"dataModel": "数据模式",
|
||||||
|
"devDetail": "设备详情",
|
||||||
|
"attribute": "属性",
|
||||||
|
"operation": "操作",
|
||||||
|
"pleaseEnter": "请输入正确值!",
|
||||||
|
"pleaseSelect": "请选择数值!",
|
||||||
|
"Service": "服务调用成功"
|
||||||
|
},
|
||||||
|
"deviceAdd": {
|
||||||
|
"addDevice": "添加设备",
|
||||||
|
"wifi": "WIFI名称",
|
||||||
|
"inputWifiName": "请输入WIFI名称",
|
||||||
|
"passsword": "WIFI密码",
|
||||||
|
"inputWifiPassword": "请输入WIFI密码",
|
||||||
|
"remember": "记住密码",
|
||||||
|
"senior": "高级",
|
||||||
|
"userId": "用户编号",
|
||||||
|
"inputUserId": "请输入用户编号",
|
||||||
|
"deviceNum": "设备编号",
|
||||||
|
"inputDeviceNum": "请输入设备编号",
|
||||||
|
"authorization": "授 权 码",
|
||||||
|
"inputAuthor": "请输入授权码",
|
||||||
|
"supplementary": "补充信息",
|
||||||
|
"inputSupplementary": "请输入补充信息",
|
||||||
|
"step1": "第一步: 填写WIFI信息",
|
||||||
|
"step2": "第二步: 设备进入配网模式",
|
||||||
|
"step3": "第三步: 配网",
|
||||||
|
"single": "单设备",
|
||||||
|
"multiple": "多设备",
|
||||||
|
"networkMode": "设备进入配网模式",
|
||||||
|
"wifiHotspot": "设备会启动WIFI热点",
|
||||||
|
"manually": "手动连接设备热点",
|
||||||
|
"mobile": "手机连接设备WIFI热点",
|
||||||
|
"detection": "检测设备",
|
||||||
|
"system": "系统自动检测",
|
||||||
|
"end": "配网结束",
|
||||||
|
"reconnected": "手机可重新连接WIFI",
|
||||||
|
"startWork": "开始配网",
|
||||||
|
"redistributingNetwork": "重新配网",
|
||||||
|
"after": "手机重连Wifi后, 返回查看",
|
||||||
|
"tip": "提示:多设备配网目前只支持微信小程序, 需要启用手机Wifi开关 ",
|
||||||
|
"noData": "暂无更多数据",
|
||||||
|
"select": "请选择设备热点",
|
||||||
|
"refresh": "刷新",
|
||||||
|
"start": "开始配网",
|
||||||
|
"distribution": "配网中...",
|
||||||
|
"connect": "正在连接网络...",
|
||||||
|
"return": "返回查看",
|
||||||
|
"noDevice": "未检测到设备",
|
||||||
|
"wifiName": "WIFI名称不能为空",
|
||||||
|
"wifiPassword": "WIFI密码不能为空",
|
||||||
|
"userNum": "用户编号不能为空",
|
||||||
|
"deviceDetected": "已检测到设备",
|
||||||
|
"userIdAndWifiAccount": "用户编号和WIFI账号密码不能为空",
|
||||||
|
"sendInformation": "发送配置信息...",
|
||||||
|
"successNetwork": "配网成功,如果设备没有正常连接,请检查WIFI信息是否正确以及网络状况",
|
||||||
|
"fail": "配网失败,请确认设备进入配网模式,并连接了该热点",
|
||||||
|
"selectNetwork": "请选择设备热点",
|
||||||
|
"successDistribution": "配网成功",
|
||||||
|
"afterNetwork": "配网后,请连接上网用的Wifi",
|
||||||
|
"failNetwork": "配网失败",
|
||||||
|
"phoneTurnOn": "请确保手机Wifi已打开,然后重新进入页面",
|
||||||
|
"prepare": "准备配网",
|
||||||
|
"miniProgrem": "启动Wifi模块失败,请重新打开小程序"
|
||||||
|
},
|
||||||
|
|
||||||
|
"linkDevice": {
|
||||||
|
"linkDevice": "关联设备",
|
||||||
|
"scan": "扫码识别",
|
||||||
|
"deviceNum": "设备编号",
|
||||||
|
"productNum": "产品编号",
|
||||||
|
"productName": "产品名称",
|
||||||
|
"userName": "用户名不能为空",
|
||||||
|
"deviceEmpty": "设备编号不能为空",
|
||||||
|
"productIdEmpty": "产品ID不能为空 ",
|
||||||
|
"format": "解析二维码,格式不正确",
|
||||||
|
"inputDeviceId": "请输入设备编号",
|
||||||
|
"inputProductId": "请输入产品编号",
|
||||||
|
"product": "产品名称可不填"
|
||||||
|
},
|
||||||
|
"group": {
|
||||||
|
"equipment": "设备分组",
|
||||||
|
"add": "添加设备",
|
||||||
|
"detail": "详情",
|
||||||
|
"select": "选择设备",
|
||||||
|
"update": "设备更新成功",
|
||||||
|
"name": "名称",
|
||||||
|
"inputName": "请输入分组名称",
|
||||||
|
"sort": "排序",
|
||||||
|
"inputSort": "请输入分组排序",
|
||||||
|
"remark": "备注",
|
||||||
|
"content": "请输入内容",
|
||||||
|
"groupName": "分组名称不能为空",
|
||||||
|
"serialNumber": "序号不能为空",
|
||||||
|
"updateGroup": "修改分组",
|
||||||
|
"submit": "提交中...",
|
||||||
|
"system": "系统提示",
|
||||||
|
"delete": "确定删除当前分组吗?",
|
||||||
|
"deleting": "删除中...",
|
||||||
|
"inputContent": "请输入关键字",
|
||||||
|
"nomore": "没有更多了",
|
||||||
|
"confirm": "确认",
|
||||||
|
"cancel": "取消"
|
||||||
|
},
|
||||||
|
"log": {
|
||||||
|
"all": "全部",
|
||||||
|
"function": "功能调用",
|
||||||
|
"attribute": "属性上报",
|
||||||
|
"event": "事件上报",
|
||||||
|
"online": "设备上线",
|
||||||
|
"offline": "设备离线",
|
||||||
|
"upgrade": "设备升级",
|
||||||
|
"element": "元素",
|
||||||
|
"service": "服务下发",
|
||||||
|
"acquisition": "属性获取",
|
||||||
|
"ota": "OTA升级"
|
||||||
|
},
|
||||||
|
"modbus": {
|
||||||
|
"deviceName": "设备名",
|
||||||
|
"firmware": "固件版本",
|
||||||
|
"inputDeviceName": "请填写设备名",
|
||||||
|
"inputVersion": "请填写固件版本",
|
||||||
|
"time": "时间",
|
||||||
|
"range": "数据范围",
|
||||||
|
"unknown": "未知"
|
||||||
|
},
|
||||||
|
"message": {
|
||||||
|
"message": "平台消息",
|
||||||
|
"all": "全部",
|
||||||
|
"inform": "通知",
|
||||||
|
"notice": "公告",
|
||||||
|
"creator": "创建人",
|
||||||
|
"creationTime": "创建时间",
|
||||||
|
"noticeDetail": "公告详情",
|
||||||
|
"noContent": "暂无内容...",
|
||||||
|
"config": "设备配置",
|
||||||
|
"NTP": " NTP地址",
|
||||||
|
"productConfig": "产品配置",
|
||||||
|
"productPassword": "产品秘钥",
|
||||||
|
"mqttConfig": "Mqtt配置",
|
||||||
|
"mqttAddress": "Mqtt地址",
|
||||||
|
"mqttAccount": " Mqtt账号",
|
||||||
|
"mqttPassword": " Mqtt密码",
|
||||||
|
"save": "保存配置",
|
||||||
|
"report": "上报属性",
|
||||||
|
"reportfunction": "上报功能",
|
||||||
|
"event": "上报事件",
|
||||||
|
"abtainTime": "获取时间",
|
||||||
|
"monitior": "上报监测数据",
|
||||||
|
"mobile": "手机监控",
|
||||||
|
"function": "功能",
|
||||||
|
"call": "拨打电话",
|
||||||
|
"bright": "屏幕亮度",
|
||||||
|
"vibration": "震动",
|
||||||
|
"bluetooth": "蓝牙",
|
||||||
|
"photo": "拍照",
|
||||||
|
"record": "录音",
|
||||||
|
"videos": "视频",
|
||||||
|
"attribute": "属性",
|
||||||
|
"information": "设备信息",
|
||||||
|
"pointer": "加速指针",
|
||||||
|
"gyroscope": "陀螺仪",
|
||||||
|
"compass": "罗盘",
|
||||||
|
"memory": "内存不足",
|
||||||
|
"network": "网络变化",
|
||||||
|
"screenshot": "用户截屏",
|
||||||
|
"setting": "系统设置",
|
||||||
|
"system": "系统配置",
|
||||||
|
"address": "服务端地址",
|
||||||
|
"text": "测试",
|
||||||
|
"statusReset": "设备状态重置",
|
||||||
|
"reset": "重置",
|
||||||
|
"mqttReconnection": "Mqtt重连",
|
||||||
|
"reconnection": "重连"
|
||||||
|
},
|
||||||
|
"avatar": {
|
||||||
|
"cropping": "裁剪",
|
||||||
|
"album": "相册",
|
||||||
|
"relieve": "解 除"
|
||||||
|
},
|
||||||
|
"player": {
|
||||||
|
"stream": "设备直播",
|
||||||
|
"replay": "录像回放",
|
||||||
|
"play": "播放",
|
||||||
|
"suspend": "暂停",
|
||||||
|
"enlarge": "放大",
|
||||||
|
"narrow": "缩小",
|
||||||
|
"recording": "选择录像日期",
|
||||||
|
"storage": "设备存储",
|
||||||
|
"screenshot": "截图",
|
||||||
|
"channel": "设备通道",
|
||||||
|
"loading": "加载中...",
|
||||||
|
"noRecording": "当前通道没有录像",
|
||||||
|
"purchase": "商用版请购买授权,加载中",
|
||||||
|
"monitior": "监控详情",
|
||||||
|
"startRecord": "开始录制",
|
||||||
|
"stopRecord": "结束录制",
|
||||||
|
"Recording": "录制",
|
||||||
|
"definition": "清晰度",
|
||||||
|
"more": "更多"
|
||||||
|
|
||||||
|
|
||||||
|
},
|
||||||
|
"waitLogin": {
|
||||||
|
"loginOrregister": "登录/注册",
|
||||||
|
"ExperienceAccountLogin": "体验账号登录",
|
||||||
|
"agree": "我已阅读并同意",
|
||||||
|
"privacy": "隐私政策",
|
||||||
|
"agreement": "用户协议",
|
||||||
|
"children": "儿童隐私保护申明",
|
||||||
|
"third": "第三方共享与SDK清单"
|
||||||
|
},
|
||||||
|
"indeScada": {
|
||||||
|
"inputScada": "请输入组态名称",
|
||||||
|
"search": "搜索",
|
||||||
|
"tryingToLoad": "努力加载中...",
|
||||||
|
"gentlyPullUp": "轻轻上拉",
|
||||||
|
"nothingLeft": "实在没有了",
|
||||||
|
"emptyData": "数据为空"
|
||||||
|
},
|
||||||
|
"deviceHistory": {
|
||||||
|
"lastTwoHours": "最近2小时",
|
||||||
|
"lastOneDay": "最近1天",
|
||||||
|
"lastThirtyDay": "最近30天",
|
||||||
|
"custom": "自定义",
|
||||||
|
"inputDate": "起始时间",
|
||||||
|
"cancel": "取消",
|
||||||
|
"nextStep": "下一步",
|
||||||
|
"confirm": "确定",
|
||||||
|
"filtrate": "筛选",
|
||||||
|
"variable": "变量",
|
||||||
|
"updateTime": "更新时间",
|
||||||
|
"emptyTable": "暂无更多数据",
|
||||||
|
"emptyData": "暂无数据",
|
||||||
|
"countTip": "变量数不能超过9个!",
|
||||||
|
"select": "请选择变量!"
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
55
main.js
Normal file
55
main.js
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
import Vue from 'vue';
|
||||||
|
import App from './App';
|
||||||
|
import store from '@/store';
|
||||||
|
import * as filters from '@/common/filters.js';
|
||||||
|
import mqttTool from '@/common/mqttTool.js';
|
||||||
|
import bus from "@/common/bus.js"
|
||||||
|
|
||||||
|
Vue.prototype.$mqttTool = mqttTool;
|
||||||
|
Vue.prototype.$bus = bus;
|
||||||
|
|
||||||
|
// 注入全局过滤器
|
||||||
|
Object.keys(filters).forEach(key => {
|
||||||
|
Vue.filter(key, filters[key])
|
||||||
|
})
|
||||||
|
|
||||||
|
// 引入uview
|
||||||
|
import uView from '@/uni_modules/uview-ui';
|
||||||
|
Vue.use(uView);
|
||||||
|
|
||||||
|
// 全局引入vuex
|
||||||
|
let vuexStore = require("@/store/$u.mixin.js");
|
||||||
|
Vue.mixin(vuexStore);
|
||||||
|
|
||||||
|
// 引入扩展方法
|
||||||
|
import '@/common/extend.js';
|
||||||
|
Vue.config.productionTip = false
|
||||||
|
|
||||||
|
App.mpType = 'app'
|
||||||
|
|
||||||
|
import VueI18n from 'vue-i18n';
|
||||||
|
import messages from '@/locale';
|
||||||
|
Vue.use(VueI18n);
|
||||||
|
const i18n = new VueI18n({
|
||||||
|
locale: wx.getStorageSync('language') || 'zh-CN',
|
||||||
|
messages, // 设置语言环境信息
|
||||||
|
silentFallbackWarn: true,
|
||||||
|
})
|
||||||
|
Vue.prototype.$tt = Vue.prototype.$t; //设置别名,因为$t已经在项目中有使用
|
||||||
|
const app = new Vue({
|
||||||
|
store,
|
||||||
|
i18n,
|
||||||
|
...App
|
||||||
|
})
|
||||||
|
// http拦截器,将此部分放在new Vue()和app.$mount()之间,才能App.vue中正常使用
|
||||||
|
import httpInterceptor from '@/apis/http.interceptor.js'
|
||||||
|
Vue.use(httpInterceptor, app)
|
||||||
|
|
||||||
|
// http接口API集中管理引入部分
|
||||||
|
import httpApi from '@/apis/http.api.js'
|
||||||
|
Vue.use(httpApi, app)
|
||||||
|
|
||||||
|
import tools from '@/common/tools.js';
|
||||||
|
Vue.use(tools, app)
|
||||||
|
|
||||||
|
app.$mount()
|
186
manifest.json
Normal file
186
manifest.json
Normal file
@ -0,0 +1,186 @@
|
|||||||
|
{
|
||||||
|
"name" : "芯程物联",
|
||||||
|
"appid" : "__UNI__0B4DD99",
|
||||||
|
"description" : "开源物联网平台",
|
||||||
|
"versionName" : "1.0.0",
|
||||||
|
"versionCode" : 260,
|
||||||
|
"transformPx" : false,
|
||||||
|
"app-plus" : {
|
||||||
|
"kernel" : {
|
||||||
|
"ios" : "WKWebview"
|
||||||
|
},
|
||||||
|
"usingComponents" : true,
|
||||||
|
"nvueCompiler" : "uni-app",
|
||||||
|
"compilerVersion" : 3,
|
||||||
|
"splashscreen" : {
|
||||||
|
"alwaysShowBeforeRender" : true,
|
||||||
|
"waiting" : true,
|
||||||
|
"autoclose" : true,
|
||||||
|
"delay" : 0
|
||||||
|
},
|
||||||
|
"modules" : {
|
||||||
|
"Barcode" : {},
|
||||||
|
"OAuth" : {},
|
||||||
|
"Camera" : {}
|
||||||
|
},
|
||||||
|
"distribute" : {
|
||||||
|
"android" : {
|
||||||
|
"permissions" : [
|
||||||
|
"<uses-feature android:name=\"android.hardware.camera\"/>",
|
||||||
|
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.INTERNET\"/>"
|
||||||
|
],
|
||||||
|
"minSdkVersion" : 22,
|
||||||
|
"targetSdkVersion" : 30,
|
||||||
|
"abiFilters" : [ "armeabi-v7a", "arm64-v8a" ],
|
||||||
|
"permissionExternalStorage" : {
|
||||||
|
"request" : "none",
|
||||||
|
"prompt" : "应用保存运行状态等信息,需要获取读写手机存储权限,请允许。"
|
||||||
|
},
|
||||||
|
"permissionPhoneState" : {
|
||||||
|
"request" : "none",
|
||||||
|
"prompt" : "为保证您正常、安全地使用,需要获取设备识别码使用权限,请允许。"
|
||||||
|
},
|
||||||
|
"schemes" : "fastbee"
|
||||||
|
},
|
||||||
|
"ios" : {
|
||||||
|
"idfa" : true,
|
||||||
|
"privacyDescription" : {
|
||||||
|
"NSLocationAlwaysUsageDescription" : "便于您使用该功能获取当前位置天气情况、WIFI列表等场景。",
|
||||||
|
"NSLocationAlwaysAndWhenInUseUsageDescription" : "便于您使用该功能获取当前位置天气情况、WIFI列表等场景。",
|
||||||
|
"NSLocalNetworkUsageDescription" : "允许访问蜂窝网络,用于扫码/关联式添加设备",
|
||||||
|
"NSLocationWhenInUseUsageDescription" : "便于您使用该功能获取当前位置天气情况、WIFI列表等场景。"
|
||||||
|
},
|
||||||
|
"dSYMs" : false,
|
||||||
|
"urltypes" : "fastbee"
|
||||||
|
},
|
||||||
|
"sdkConfigs" : {
|
||||||
|
"push" : {},
|
||||||
|
"statics" : {},
|
||||||
|
"maps" : {},
|
||||||
|
"ad" : {},
|
||||||
|
"oauth" : {
|
||||||
|
"weixin" : {
|
||||||
|
"appid" : "wx6be3f0d7bf7154e1",
|
||||||
|
"appsecret" : "b6c1d0da60bd5250857d211cdc64fdc9",
|
||||||
|
"UniversalLinks" : ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"splashscreen" : {
|
||||||
|
"iosStyle" : "common",
|
||||||
|
"androidStyle" : "default",
|
||||||
|
"alwaysShowBeforeRender" : false,
|
||||||
|
"waiting" : true,
|
||||||
|
"autoclose" : false,
|
||||||
|
"delay" : 0,
|
||||||
|
"android" : {
|
||||||
|
"hdpi" : "./static/logo.9.png",
|
||||||
|
"xhdpi" : "./static/logo.9.png",
|
||||||
|
"xxhdpi" : "./static/logo.9.png"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"icons" : {
|
||||||
|
"android" : {
|
||||||
|
"hdpi" : "unpackage/res/icons/72x72.png",
|
||||||
|
"xhdpi" : "unpackage/res/icons/96x96.png",
|
||||||
|
"xxhdpi" : "unpackage/res/icons/144x144.png",
|
||||||
|
"xxxhdpi" : "unpackage/res/icons/192x192.png"
|
||||||
|
},
|
||||||
|
"ios" : {
|
||||||
|
"appstore" : "unpackage/res/icons/1024x1024.png",
|
||||||
|
"ipad" : {
|
||||||
|
"app" : "unpackage/res/icons/76x76.png",
|
||||||
|
"app@2x" : "unpackage/res/icons/152x152.png",
|
||||||
|
"notification" : "unpackage/res/icons/20x20.png",
|
||||||
|
"notification@2x" : "unpackage/res/icons/40x40.png",
|
||||||
|
"proapp@2x" : "unpackage/res/icons/167x167.png",
|
||||||
|
"settings" : "unpackage/res/icons/29x29.png",
|
||||||
|
"settings@2x" : "unpackage/res/icons/58x58.png",
|
||||||
|
"spotlight" : "unpackage/res/icons/40x40.png",
|
||||||
|
"spotlight@2x" : "unpackage/res/icons/80x80.png"
|
||||||
|
},
|
||||||
|
"iphone" : {
|
||||||
|
"app@2x" : "unpackage/res/icons/120x120.png",
|
||||||
|
"app@3x" : "unpackage/res/icons/180x180.png",
|
||||||
|
"notification@2x" : "unpackage/res/icons/40x40.png",
|
||||||
|
"notification@3x" : "unpackage/res/icons/60x60.png",
|
||||||
|
"settings@2x" : "unpackage/res/icons/58x58.png",
|
||||||
|
"settings@3x" : "unpackage/res/icons/87x87.png",
|
||||||
|
"spotlight@2x" : "unpackage/res/icons/80x80.png",
|
||||||
|
"spotlight@3x" : "unpackage/res/icons/120x120.png"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"uniStatistics" : {
|
||||||
|
"enable" : false
|
||||||
|
},
|
||||||
|
"nativePlugins" : {}
|
||||||
|
},
|
||||||
|
"quickapp" : {},
|
||||||
|
"mp-weixin" : {
|
||||||
|
"appid" : "wx735fe3b42677d2ac",
|
||||||
|
"setting" : {
|
||||||
|
"urlCheck" : false,
|
||||||
|
"minified" : true,
|
||||||
|
"es6" : true
|
||||||
|
},
|
||||||
|
"usingComponents" : true,
|
||||||
|
"uniStatistics" : {
|
||||||
|
"enable" : false
|
||||||
|
},
|
||||||
|
"optimization" : {
|
||||||
|
"subPackages" : true
|
||||||
|
},
|
||||||
|
"permission" : {
|
||||||
|
"scope.userLocation" : {
|
||||||
|
"desc" : "便于您使用该功能获取当前位置天气情况、WIFI列表等场景。"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requiredPrivateInfos" : [ "getLocation" ],
|
||||||
|
"lazyCodeLoading" : "requiredComponents"
|
||||||
|
},
|
||||||
|
"mp-alipay" : {
|
||||||
|
"usingComponents" : true
|
||||||
|
},
|
||||||
|
"mp-baidu" : {
|
||||||
|
"usingComponents" : true
|
||||||
|
},
|
||||||
|
"mp-toutiao" : {
|
||||||
|
"usingComponents" : true
|
||||||
|
},
|
||||||
|
"uniStatistics" : {
|
||||||
|
"enable" : false
|
||||||
|
},
|
||||||
|
"h5" : {
|
||||||
|
"title" : "蜂信物联",
|
||||||
|
"router" : {
|
||||||
|
"mode" : "hash",
|
||||||
|
"base" : "./"
|
||||||
|
},
|
||||||
|
"devServer" : {
|
||||||
|
// "disableHostCheck": true, // 禁止访问本地host文件
|
||||||
|
"port" : 8090
|
||||||
|
},
|
||||||
|
"optimization" : {
|
||||||
|
"treeShaking" : {
|
||||||
|
"enable" : false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"template" : "uni_modules/jessibuca/hybrid/index.html",
|
||||||
|
"sdkConfigs" : {
|
||||||
|
"maps" : {
|
||||||
|
"qqmap" : {
|
||||||
|
"key" : "4PDBZ-4KQKU-AX6VO-GU7NB-INDZJ-YBFXC"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
16
node_modules/.bin/mqtt
generated
vendored
Normal file
16
node_modules/.bin/mqtt
generated
vendored
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||||
|
|
||||||
|
case `uname` in
|
||||||
|
*CYGWIN*|*MINGW*|*MSYS*)
|
||||||
|
if command -v cygpath > /dev/null 2>&1; then
|
||||||
|
basedir=`cygpath -w "$basedir"`
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [ -x "$basedir/node" ]; then
|
||||||
|
exec "$basedir/node" "$basedir/../mqtt/mqtt.js" "$@"
|
||||||
|
else
|
||||||
|
exec node "$basedir/../mqtt/mqtt.js" "$@"
|
||||||
|
fi
|
17
node_modules/.bin/mqtt.cmd
generated
vendored
Normal file
17
node_modules/.bin/mqtt.cmd
generated
vendored
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
@ECHO off
|
||||||
|
GOTO start
|
||||||
|
:find_dp0
|
||||||
|
SET dp0=%~dp0
|
||||||
|
EXIT /b
|
||||||
|
:start
|
||||||
|
SETLOCAL
|
||||||
|
CALL :find_dp0
|
||||||
|
|
||||||
|
IF EXIST "%dp0%\node.exe" (
|
||||||
|
SET "_prog=%dp0%\node.exe"
|
||||||
|
) ELSE (
|
||||||
|
SET "_prog=node"
|
||||||
|
SET PATHEXT=%PATHEXT:;.JS;=;%
|
||||||
|
)
|
||||||
|
|
||||||
|
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\mqtt\mqtt.js" %*
|
28
node_modules/.bin/mqtt.ps1
generated
vendored
Normal file
28
node_modules/.bin/mqtt.ps1
generated
vendored
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
#!/usr/bin/env pwsh
|
||||||
|
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
|
||||||
|
|
||||||
|
$exe=""
|
||||||
|
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
|
||||||
|
# Fix case when both the Windows and Linux builds of Node
|
||||||
|
# are installed in the same directory
|
||||||
|
$exe=".exe"
|
||||||
|
}
|
||||||
|
$ret=0
|
||||||
|
if (Test-Path "$basedir/node$exe") {
|
||||||
|
# Support pipeline input
|
||||||
|
if ($MyInvocation.ExpectingInput) {
|
||||||
|
$input | & "$basedir/node$exe" "$basedir/../mqtt/mqtt.js" $args
|
||||||
|
} else {
|
||||||
|
& "$basedir/node$exe" "$basedir/../mqtt/mqtt.js" $args
|
||||||
|
}
|
||||||
|
$ret=$LASTEXITCODE
|
||||||
|
} else {
|
||||||
|
# Support pipeline input
|
||||||
|
if ($MyInvocation.ExpectingInput) {
|
||||||
|
$input | & "node$exe" "$basedir/../mqtt/mqtt.js" $args
|
||||||
|
} else {
|
||||||
|
& "node$exe" "$basedir/../mqtt/mqtt.js" $args
|
||||||
|
}
|
||||||
|
$ret=$LASTEXITCODE
|
||||||
|
}
|
||||||
|
exit $ret
|
16
node_modules/.bin/mqtt_pub
generated
vendored
Normal file
16
node_modules/.bin/mqtt_pub
generated
vendored
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||||
|
|
||||||
|
case `uname` in
|
||||||
|
*CYGWIN*|*MINGW*|*MSYS*)
|
||||||
|
if command -v cygpath > /dev/null 2>&1; then
|
||||||
|
basedir=`cygpath -w "$basedir"`
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [ -x "$basedir/node" ]; then
|
||||||
|
exec "$basedir/node" "$basedir/../mqtt/bin/pub.js" "$@"
|
||||||
|
else
|
||||||
|
exec node "$basedir/../mqtt/bin/pub.js" "$@"
|
||||||
|
fi
|
17
node_modules/.bin/mqtt_pub.cmd
generated
vendored
Normal file
17
node_modules/.bin/mqtt_pub.cmd
generated
vendored
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
@ECHO off
|
||||||
|
GOTO start
|
||||||
|
:find_dp0
|
||||||
|
SET dp0=%~dp0
|
||||||
|
EXIT /b
|
||||||
|
:start
|
||||||
|
SETLOCAL
|
||||||
|
CALL :find_dp0
|
||||||
|
|
||||||
|
IF EXIST "%dp0%\node.exe" (
|
||||||
|
SET "_prog=%dp0%\node.exe"
|
||||||
|
) ELSE (
|
||||||
|
SET "_prog=node"
|
||||||
|
SET PATHEXT=%PATHEXT:;.JS;=;%
|
||||||
|
)
|
||||||
|
|
||||||
|
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\mqtt\bin\pub.js" %*
|
28
node_modules/.bin/mqtt_pub.ps1
generated
vendored
Normal file
28
node_modules/.bin/mqtt_pub.ps1
generated
vendored
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
#!/usr/bin/env pwsh
|
||||||
|
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
|
||||||
|
|
||||||
|
$exe=""
|
||||||
|
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
|
||||||
|
# Fix case when both the Windows and Linux builds of Node
|
||||||
|
# are installed in the same directory
|
||||||
|
$exe=".exe"
|
||||||
|
}
|
||||||
|
$ret=0
|
||||||
|
if (Test-Path "$basedir/node$exe") {
|
||||||
|
# Support pipeline input
|
||||||
|
if ($MyInvocation.ExpectingInput) {
|
||||||
|
$input | & "$basedir/node$exe" "$basedir/../mqtt/bin/pub.js" $args
|
||||||
|
} else {
|
||||||
|
& "$basedir/node$exe" "$basedir/../mqtt/bin/pub.js" $args
|
||||||
|
}
|
||||||
|
$ret=$LASTEXITCODE
|
||||||
|
} else {
|
||||||
|
# Support pipeline input
|
||||||
|
if ($MyInvocation.ExpectingInput) {
|
||||||
|
$input | & "node$exe" "$basedir/../mqtt/bin/pub.js" $args
|
||||||
|
} else {
|
||||||
|
& "node$exe" "$basedir/../mqtt/bin/pub.js" $args
|
||||||
|
}
|
||||||
|
$ret=$LASTEXITCODE
|
||||||
|
}
|
||||||
|
exit $ret
|
16
node_modules/.bin/mqtt_sub
generated
vendored
Normal file
16
node_modules/.bin/mqtt_sub
generated
vendored
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||||
|
|
||||||
|
case `uname` in
|
||||||
|
*CYGWIN*|*MINGW*|*MSYS*)
|
||||||
|
if command -v cygpath > /dev/null 2>&1; then
|
||||||
|
basedir=`cygpath -w "$basedir"`
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [ -x "$basedir/node" ]; then
|
||||||
|
exec "$basedir/node" "$basedir/../mqtt/bin/sub.js" "$@"
|
||||||
|
else
|
||||||
|
exec node "$basedir/../mqtt/bin/sub.js" "$@"
|
||||||
|
fi
|
17
node_modules/.bin/mqtt_sub.cmd
generated
vendored
Normal file
17
node_modules/.bin/mqtt_sub.cmd
generated
vendored
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
@ECHO off
|
||||||
|
GOTO start
|
||||||
|
:find_dp0
|
||||||
|
SET dp0=%~dp0
|
||||||
|
EXIT /b
|
||||||
|
:start
|
||||||
|
SETLOCAL
|
||||||
|
CALL :find_dp0
|
||||||
|
|
||||||
|
IF EXIST "%dp0%\node.exe" (
|
||||||
|
SET "_prog=%dp0%\node.exe"
|
||||||
|
) ELSE (
|
||||||
|
SET "_prog=node"
|
||||||
|
SET PATHEXT=%PATHEXT:;.JS;=;%
|
||||||
|
)
|
||||||
|
|
||||||
|
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\mqtt\bin\sub.js" %*
|
28
node_modules/.bin/mqtt_sub.ps1
generated
vendored
Normal file
28
node_modules/.bin/mqtt_sub.ps1
generated
vendored
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
#!/usr/bin/env pwsh
|
||||||
|
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
|
||||||
|
|
||||||
|
$exe=""
|
||||||
|
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
|
||||||
|
# Fix case when both the Windows and Linux builds of Node
|
||||||
|
# are installed in the same directory
|
||||||
|
$exe=".exe"
|
||||||
|
}
|
||||||
|
$ret=0
|
||||||
|
if (Test-Path "$basedir/node$exe") {
|
||||||
|
# Support pipeline input
|
||||||
|
if ($MyInvocation.ExpectingInput) {
|
||||||
|
$input | & "$basedir/node$exe" "$basedir/../mqtt/bin/sub.js" $args
|
||||||
|
} else {
|
||||||
|
& "$basedir/node$exe" "$basedir/../mqtt/bin/sub.js" $args
|
||||||
|
}
|
||||||
|
$ret=$LASTEXITCODE
|
||||||
|
} else {
|
||||||
|
# Support pipeline input
|
||||||
|
if ($MyInvocation.ExpectingInput) {
|
||||||
|
$input | & "node$exe" "$basedir/../mqtt/bin/sub.js" $args
|
||||||
|
} else {
|
||||||
|
& "node$exe" "$basedir/../mqtt/bin/sub.js" $args
|
||||||
|
}
|
||||||
|
$ret=$LASTEXITCODE
|
||||||
|
}
|
||||||
|
exit $ret
|
16
node_modules/.bin/nanoid
generated
vendored
Normal file
16
node_modules/.bin/nanoid
generated
vendored
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||||
|
|
||||||
|
case `uname` in
|
||||||
|
*CYGWIN*|*MINGW*|*MSYS*)
|
||||||
|
if command -v cygpath > /dev/null 2>&1; then
|
||||||
|
basedir=`cygpath -w "$basedir"`
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [ -x "$basedir/node" ]; then
|
||||||
|
exec "$basedir/node" "$basedir/../nanoid/bin/nanoid.cjs" "$@"
|
||||||
|
else
|
||||||
|
exec node "$basedir/../nanoid/bin/nanoid.cjs" "$@"
|
||||||
|
fi
|
17
node_modules/.bin/nanoid.cmd
generated
vendored
Normal file
17
node_modules/.bin/nanoid.cmd
generated
vendored
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
@ECHO off
|
||||||
|
GOTO start
|
||||||
|
:find_dp0
|
||||||
|
SET dp0=%~dp0
|
||||||
|
EXIT /b
|
||||||
|
:start
|
||||||
|
SETLOCAL
|
||||||
|
CALL :find_dp0
|
||||||
|
|
||||||
|
IF EXIST "%dp0%\node.exe" (
|
||||||
|
SET "_prog=%dp0%\node.exe"
|
||||||
|
) ELSE (
|
||||||
|
SET "_prog=node"
|
||||||
|
SET PATHEXT=%PATHEXT:;.JS;=;%
|
||||||
|
)
|
||||||
|
|
||||||
|
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\nanoid\bin\nanoid.cjs" %*
|
28
node_modules/.bin/nanoid.ps1
generated
vendored
Normal file
28
node_modules/.bin/nanoid.ps1
generated
vendored
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
#!/usr/bin/env pwsh
|
||||||
|
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
|
||||||
|
|
||||||
|
$exe=""
|
||||||
|
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
|
||||||
|
# Fix case when both the Windows and Linux builds of Node
|
||||||
|
# are installed in the same directory
|
||||||
|
$exe=".exe"
|
||||||
|
}
|
||||||
|
$ret=0
|
||||||
|
if (Test-Path "$basedir/node$exe") {
|
||||||
|
# Support pipeline input
|
||||||
|
if ($MyInvocation.ExpectingInput) {
|
||||||
|
$input | & "$basedir/node$exe" "$basedir/../nanoid/bin/nanoid.cjs" $args
|
||||||
|
} else {
|
||||||
|
& "$basedir/node$exe" "$basedir/../nanoid/bin/nanoid.cjs" $args
|
||||||
|
}
|
||||||
|
$ret=$LASTEXITCODE
|
||||||
|
} else {
|
||||||
|
# Support pipeline input
|
||||||
|
if ($MyInvocation.ExpectingInput) {
|
||||||
|
$input | & "node$exe" "$basedir/../nanoid/bin/nanoid.cjs" $args
|
||||||
|
} else {
|
||||||
|
& "node$exe" "$basedir/../nanoid/bin/nanoid.cjs" $args
|
||||||
|
}
|
||||||
|
$ret=$LASTEXITCODE
|
||||||
|
}
|
||||||
|
exit $ret
|
16
node_modules/.bin/parser
generated
vendored
Normal file
16
node_modules/.bin/parser
generated
vendored
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||||
|
|
||||||
|
case `uname` in
|
||||||
|
*CYGWIN*|*MINGW*|*MSYS*)
|
||||||
|
if command -v cygpath > /dev/null 2>&1; then
|
||||||
|
basedir=`cygpath -w "$basedir"`
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [ -x "$basedir/node" ]; then
|
||||||
|
exec "$basedir/node" "$basedir/../@babel/parser/bin/babel-parser.js" "$@"
|
||||||
|
else
|
||||||
|
exec node "$basedir/../@babel/parser/bin/babel-parser.js" "$@"
|
||||||
|
fi
|
17
node_modules/.bin/parser.cmd
generated
vendored
Normal file
17
node_modules/.bin/parser.cmd
generated
vendored
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
@ECHO off
|
||||||
|
GOTO start
|
||||||
|
:find_dp0
|
||||||
|
SET dp0=%~dp0
|
||||||
|
EXIT /b
|
||||||
|
:start
|
||||||
|
SETLOCAL
|
||||||
|
CALL :find_dp0
|
||||||
|
|
||||||
|
IF EXIST "%dp0%\node.exe" (
|
||||||
|
SET "_prog=%dp0%\node.exe"
|
||||||
|
) ELSE (
|
||||||
|
SET "_prog=node"
|
||||||
|
SET PATHEXT=%PATHEXT:;.JS;=;%
|
||||||
|
)
|
||||||
|
|
||||||
|
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\@babel\parser\bin\babel-parser.js" %*
|
28
node_modules/.bin/parser.ps1
generated
vendored
Normal file
28
node_modules/.bin/parser.ps1
generated
vendored
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
#!/usr/bin/env pwsh
|
||||||
|
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
|
||||||
|
|
||||||
|
$exe=""
|
||||||
|
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
|
||||||
|
# Fix case when both the Windows and Linux builds of Node
|
||||||
|
# are installed in the same directory
|
||||||
|
$exe=".exe"
|
||||||
|
}
|
||||||
|
$ret=0
|
||||||
|
if (Test-Path "$basedir/node$exe") {
|
||||||
|
# Support pipeline input
|
||||||
|
if ($MyInvocation.ExpectingInput) {
|
||||||
|
$input | & "$basedir/node$exe" "$basedir/../@babel/parser/bin/babel-parser.js" $args
|
||||||
|
} else {
|
||||||
|
& "$basedir/node$exe" "$basedir/../@babel/parser/bin/babel-parser.js" $args
|
||||||
|
}
|
||||||
|
$ret=$LASTEXITCODE
|
||||||
|
} else {
|
||||||
|
# Support pipeline input
|
||||||
|
if ($MyInvocation.ExpectingInput) {
|
||||||
|
$input | & "node$exe" "$basedir/../@babel/parser/bin/babel-parser.js" $args
|
||||||
|
} else {
|
||||||
|
& "node$exe" "$basedir/../@babel/parser/bin/babel-parser.js" $args
|
||||||
|
}
|
||||||
|
$ret=$LASTEXITCODE
|
||||||
|
}
|
||||||
|
exit $ret
|
1004
node_modules/.package-lock.json
generated
vendored
Normal file
1004
node_modules/.package-lock.json
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
22
node_modules/@babel/helper-string-parser/LICENSE
generated
vendored
Normal file
22
node_modules/@babel/helper-string-parser/LICENSE
generated
vendored
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2014-present Sebastian McKenzie and other contributors
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining
|
||||||
|
a copy of this software and associated documentation files (the
|
||||||
|
"Software"), to deal in the Software without restriction, including
|
||||||
|
without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
distribute, sublicense, and/or sell copies of the Software, and to
|
||||||
|
permit persons to whom the Software is furnished to do so, subject to
|
||||||
|
the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be
|
||||||
|
included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||||
|
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||||
|
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||||
|
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
19
node_modules/@babel/helper-string-parser/README.md
generated
vendored
Normal file
19
node_modules/@babel/helper-string-parser/README.md
generated
vendored
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
# @babel/helper-string-parser
|
||||||
|
|
||||||
|
> A utility package to parse strings
|
||||||
|
|
||||||
|
See our website [@babel/helper-string-parser](https://babeljs.io/docs/babel-helper-string-parser) for more information.
|
||||||
|
|
||||||
|
## Install
|
||||||
|
|
||||||
|
Using npm:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
npm install --save @babel/helper-string-parser
|
||||||
|
```
|
||||||
|
|
||||||
|
or using yarn:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
yarn add @babel/helper-string-parser
|
||||||
|
```
|
295
node_modules/@babel/helper-string-parser/lib/index.js
generated
vendored
Normal file
295
node_modules/@babel/helper-string-parser/lib/index.js
generated
vendored
Normal file
@ -0,0 +1,295 @@
|
|||||||
|
"use strict";
|
||||||
|
|
||||||
|
Object.defineProperty(exports, "__esModule", {
|
||||||
|
value: true
|
||||||
|
});
|
||||||
|
exports.readCodePoint = readCodePoint;
|
||||||
|
exports.readInt = readInt;
|
||||||
|
exports.readStringContents = readStringContents;
|
||||||
|
var _isDigit = function isDigit(code) {
|
||||||
|
return code >= 48 && code <= 57;
|
||||||
|
};
|
||||||
|
const forbiddenNumericSeparatorSiblings = {
|
||||||
|
decBinOct: new Set([46, 66, 69, 79, 95, 98, 101, 111]),
|
||||||
|
hex: new Set([46, 88, 95, 120])
|
||||||
|
};
|
||||||
|
const isAllowedNumericSeparatorSibling = {
|
||||||
|
bin: ch => ch === 48 || ch === 49,
|
||||||
|
oct: ch => ch >= 48 && ch <= 55,
|
||||||
|
dec: ch => ch >= 48 && ch <= 57,
|
||||||
|
hex: ch => ch >= 48 && ch <= 57 || ch >= 65 && ch <= 70 || ch >= 97 && ch <= 102
|
||||||
|
};
|
||||||
|
function readStringContents(type, input, pos, lineStart, curLine, errors) {
|
||||||
|
const initialPos = pos;
|
||||||
|
const initialLineStart = lineStart;
|
||||||
|
const initialCurLine = curLine;
|
||||||
|
let out = "";
|
||||||
|
let firstInvalidLoc = null;
|
||||||
|
let chunkStart = pos;
|
||||||
|
const {
|
||||||
|
length
|
||||||
|
} = input;
|
||||||
|
for (;;) {
|
||||||
|
if (pos >= length) {
|
||||||
|
errors.unterminated(initialPos, initialLineStart, initialCurLine);
|
||||||
|
out += input.slice(chunkStart, pos);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
const ch = input.charCodeAt(pos);
|
||||||
|
if (isStringEnd(type, ch, input, pos)) {
|
||||||
|
out += input.slice(chunkStart, pos);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (ch === 92) {
|
||||||
|
out += input.slice(chunkStart, pos);
|
||||||
|
const res = readEscapedChar(input, pos, lineStart, curLine, type === "template", errors);
|
||||||
|
if (res.ch === null && !firstInvalidLoc) {
|
||||||
|
firstInvalidLoc = {
|
||||||
|
pos,
|
||||||
|
lineStart,
|
||||||
|
curLine
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
out += res.ch;
|
||||||
|
}
|
||||||
|
({
|
||||||
|
pos,
|
||||||
|
lineStart,
|
||||||
|
curLine
|
||||||
|
} = res);
|
||||||
|
chunkStart = pos;
|
||||||
|
} else if (ch === 8232 || ch === 8233) {
|
||||||
|
++pos;
|
||||||
|
++curLine;
|
||||||
|
lineStart = pos;
|
||||||
|
} else if (ch === 10 || ch === 13) {
|
||||||
|
if (type === "template") {
|
||||||
|
out += input.slice(chunkStart, pos) + "\n";
|
||||||
|
++pos;
|
||||||
|
if (ch === 13 && input.charCodeAt(pos) === 10) {
|
||||||
|
++pos;
|
||||||
|
}
|
||||||
|
++curLine;
|
||||||
|
chunkStart = lineStart = pos;
|
||||||
|
} else {
|
||||||
|
errors.unterminated(initialPos, initialLineStart, initialCurLine);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
++pos;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
pos,
|
||||||
|
str: out,
|
||||||
|
firstInvalidLoc,
|
||||||
|
lineStart,
|
||||||
|
curLine,
|
||||||
|
containsInvalid: !!firstInvalidLoc
|
||||||
|
};
|
||||||
|
}
|
||||||
|
function isStringEnd(type, ch, input, pos) {
|
||||||
|
if (type === "template") {
|
||||||
|
return ch === 96 || ch === 36 && input.charCodeAt(pos + 1) === 123;
|
||||||
|
}
|
||||||
|
return ch === (type === "double" ? 34 : 39);
|
||||||
|
}
|
||||||
|
function readEscapedChar(input, pos, lineStart, curLine, inTemplate, errors) {
|
||||||
|
const throwOnInvalid = !inTemplate;
|
||||||
|
pos++;
|
||||||
|
const res = ch => ({
|
||||||
|
pos,
|
||||||
|
ch,
|
||||||
|
lineStart,
|
||||||
|
curLine
|
||||||
|
});
|
||||||
|
const ch = input.charCodeAt(pos++);
|
||||||
|
switch (ch) {
|
||||||
|
case 110:
|
||||||
|
return res("\n");
|
||||||
|
case 114:
|
||||||
|
return res("\r");
|
||||||
|
case 120:
|
||||||
|
{
|
||||||
|
let code;
|
||||||
|
({
|
||||||
|
code,
|
||||||
|
pos
|
||||||
|
} = readHexChar(input, pos, lineStart, curLine, 2, false, throwOnInvalid, errors));
|
||||||
|
return res(code === null ? null : String.fromCharCode(code));
|
||||||
|
}
|
||||||
|
case 117:
|
||||||
|
{
|
||||||
|
let code;
|
||||||
|
({
|
||||||
|
code,
|
||||||
|
pos
|
||||||
|
} = readCodePoint(input, pos, lineStart, curLine, throwOnInvalid, errors));
|
||||||
|
return res(code === null ? null : String.fromCodePoint(code));
|
||||||
|
}
|
||||||
|
case 116:
|
||||||
|
return res("\t");
|
||||||
|
case 98:
|
||||||
|
return res("\b");
|
||||||
|
case 118:
|
||||||
|
return res("\u000b");
|
||||||
|
case 102:
|
||||||
|
return res("\f");
|
||||||
|
case 13:
|
||||||
|
if (input.charCodeAt(pos) === 10) {
|
||||||
|
++pos;
|
||||||
|
}
|
||||||
|
case 10:
|
||||||
|
lineStart = pos;
|
||||||
|
++curLine;
|
||||||
|
case 8232:
|
||||||
|
case 8233:
|
||||||
|
return res("");
|
||||||
|
case 56:
|
||||||
|
case 57:
|
||||||
|
if (inTemplate) {
|
||||||
|
return res(null);
|
||||||
|
} else {
|
||||||
|
errors.strictNumericEscape(pos - 1, lineStart, curLine);
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
if (ch >= 48 && ch <= 55) {
|
||||||
|
const startPos = pos - 1;
|
||||||
|
const match = /^[0-7]+/.exec(input.slice(startPos, pos + 2));
|
||||||
|
let octalStr = match[0];
|
||||||
|
let octal = parseInt(octalStr, 8);
|
||||||
|
if (octal > 255) {
|
||||||
|
octalStr = octalStr.slice(0, -1);
|
||||||
|
octal = parseInt(octalStr, 8);
|
||||||
|
}
|
||||||
|
pos += octalStr.length - 1;
|
||||||
|
const next = input.charCodeAt(pos);
|
||||||
|
if (octalStr !== "0" || next === 56 || next === 57) {
|
||||||
|
if (inTemplate) {
|
||||||
|
return res(null);
|
||||||
|
} else {
|
||||||
|
errors.strictNumericEscape(startPos, lineStart, curLine);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return res(String.fromCharCode(octal));
|
||||||
|
}
|
||||||
|
return res(String.fromCharCode(ch));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function readHexChar(input, pos, lineStart, curLine, len, forceLen, throwOnInvalid, errors) {
|
||||||
|
const initialPos = pos;
|
||||||
|
let n;
|
||||||
|
({
|
||||||
|
n,
|
||||||
|
pos
|
||||||
|
} = readInt(input, pos, lineStart, curLine, 16, len, forceLen, false, errors, !throwOnInvalid));
|
||||||
|
if (n === null) {
|
||||||
|
if (throwOnInvalid) {
|
||||||
|
errors.invalidEscapeSequence(initialPos, lineStart, curLine);
|
||||||
|
} else {
|
||||||
|
pos = initialPos - 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
code: n,
|
||||||
|
pos
|
||||||
|
};
|
||||||
|
}
|
||||||
|
function readInt(input, pos, lineStart, curLine, radix, len, forceLen, allowNumSeparator, errors, bailOnError) {
|
||||||
|
const start = pos;
|
||||||
|
const forbiddenSiblings = radix === 16 ? forbiddenNumericSeparatorSiblings.hex : forbiddenNumericSeparatorSiblings.decBinOct;
|
||||||
|
const isAllowedSibling = radix === 16 ? isAllowedNumericSeparatorSibling.hex : radix === 10 ? isAllowedNumericSeparatorSibling.dec : radix === 8 ? isAllowedNumericSeparatorSibling.oct : isAllowedNumericSeparatorSibling.bin;
|
||||||
|
let invalid = false;
|
||||||
|
let total = 0;
|
||||||
|
for (let i = 0, e = len == null ? Infinity : len; i < e; ++i) {
|
||||||
|
const code = input.charCodeAt(pos);
|
||||||
|
let val;
|
||||||
|
if (code === 95 && allowNumSeparator !== "bail") {
|
||||||
|
const prev = input.charCodeAt(pos - 1);
|
||||||
|
const next = input.charCodeAt(pos + 1);
|
||||||
|
if (!allowNumSeparator) {
|
||||||
|
if (bailOnError) return {
|
||||||
|
n: null,
|
||||||
|
pos
|
||||||
|
};
|
||||||
|
errors.numericSeparatorInEscapeSequence(pos, lineStart, curLine);
|
||||||
|
} else if (Number.isNaN(next) || !isAllowedSibling(next) || forbiddenSiblings.has(prev) || forbiddenSiblings.has(next)) {
|
||||||
|
if (bailOnError) return {
|
||||||
|
n: null,
|
||||||
|
pos
|
||||||
|
};
|
||||||
|
errors.unexpectedNumericSeparator(pos, lineStart, curLine);
|
||||||
|
}
|
||||||
|
++pos;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (code >= 97) {
|
||||||
|
val = code - 97 + 10;
|
||||||
|
} else if (code >= 65) {
|
||||||
|
val = code - 65 + 10;
|
||||||
|
} else if (_isDigit(code)) {
|
||||||
|
val = code - 48;
|
||||||
|
} else {
|
||||||
|
val = Infinity;
|
||||||
|
}
|
||||||
|
if (val >= radix) {
|
||||||
|
if (val <= 9 && bailOnError) {
|
||||||
|
return {
|
||||||
|
n: null,
|
||||||
|
pos
|
||||||
|
};
|
||||||
|
} else if (val <= 9 && errors.invalidDigit(pos, lineStart, curLine, radix)) {
|
||||||
|
val = 0;
|
||||||
|
} else if (forceLen) {
|
||||||
|
val = 0;
|
||||||
|
invalid = true;
|
||||||
|
} else {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
++pos;
|
||||||
|
total = total * radix + val;
|
||||||
|
}
|
||||||
|
if (pos === start || len != null && pos - start !== len || invalid) {
|
||||||
|
return {
|
||||||
|
n: null,
|
||||||
|
pos
|
||||||
|
};
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
n: total,
|
||||||
|
pos
|
||||||
|
};
|
||||||
|
}
|
||||||
|
function readCodePoint(input, pos, lineStart, curLine, throwOnInvalid, errors) {
|
||||||
|
const ch = input.charCodeAt(pos);
|
||||||
|
let code;
|
||||||
|
if (ch === 123) {
|
||||||
|
++pos;
|
||||||
|
({
|
||||||
|
code,
|
||||||
|
pos
|
||||||
|
} = readHexChar(input, pos, lineStart, curLine, input.indexOf("}", pos) - pos, true, throwOnInvalid, errors));
|
||||||
|
++pos;
|
||||||
|
if (code !== null && code > 0x10ffff) {
|
||||||
|
if (throwOnInvalid) {
|
||||||
|
errors.invalidCodePoint(pos, lineStart, curLine);
|
||||||
|
} else {
|
||||||
|
return {
|
||||||
|
code: null,
|
||||||
|
pos
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
({
|
||||||
|
code,
|
||||||
|
pos
|
||||||
|
} = readHexChar(input, pos, lineStart, curLine, 4, false, throwOnInvalid, errors));
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
code,
|
||||||
|
pos
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
//# sourceMappingURL=index.js.map
|
1
node_modules/@babel/helper-string-parser/lib/index.js.map
generated
vendored
Normal file
1
node_modules/@babel/helper-string-parser/lib/index.js.map
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
31
node_modules/@babel/helper-string-parser/package.json
generated
vendored
Normal file
31
node_modules/@babel/helper-string-parser/package.json
generated
vendored
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
{
|
||||||
|
"name": "@babel/helper-string-parser",
|
||||||
|
"version": "7.25.9",
|
||||||
|
"description": "A utility package to parse strings",
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/babel/babel.git",
|
||||||
|
"directory": "packages/babel-helper-string-parser"
|
||||||
|
},
|
||||||
|
"homepage": "https://babel.dev/docs/en/next/babel-helper-string-parser",
|
||||||
|
"license": "MIT",
|
||||||
|
"publishConfig": {
|
||||||
|
"access": "public"
|
||||||
|
},
|
||||||
|
"main": "./lib/index.js",
|
||||||
|
"devDependencies": {
|
||||||
|
"charcodes": "^0.2.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6.9.0"
|
||||||
|
},
|
||||||
|
"author": "The Babel Team (https://babel.dev/team)",
|
||||||
|
"exports": {
|
||||||
|
".": {
|
||||||
|
"types": "./lib/index.d.ts",
|
||||||
|
"default": "./lib/index.js"
|
||||||
|
},
|
||||||
|
"./package.json": "./package.json"
|
||||||
|
},
|
||||||
|
"type": "commonjs"
|
||||||
|
}
|
22
node_modules/@babel/helper-validator-identifier/LICENSE
generated
vendored
Normal file
22
node_modules/@babel/helper-validator-identifier/LICENSE
generated
vendored
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2014-present Sebastian McKenzie and other contributors
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining
|
||||||
|
a copy of this software and associated documentation files (the
|
||||||
|
"Software"), to deal in the Software without restriction, including
|
||||||
|
without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
distribute, sublicense, and/or sell copies of the Software, and to
|
||||||
|
permit persons to whom the Software is furnished to do so, subject to
|
||||||
|
the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be
|
||||||
|
included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||||
|
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||||
|
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||||
|
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
19
node_modules/@babel/helper-validator-identifier/README.md
generated
vendored
Normal file
19
node_modules/@babel/helper-validator-identifier/README.md
generated
vendored
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
# @babel/helper-validator-identifier
|
||||||
|
|
||||||
|
> Validate identifier/keywords name
|
||||||
|
|
||||||
|
See our website [@babel/helper-validator-identifier](https://babeljs.io/docs/babel-helper-validator-identifier) for more information.
|
||||||
|
|
||||||
|
## Install
|
||||||
|
|
||||||
|
Using npm:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
npm install --save @babel/helper-validator-identifier
|
||||||
|
```
|
||||||
|
|
||||||
|
or using yarn:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
yarn add @babel/helper-validator-identifier
|
||||||
|
```
|
70
node_modules/@babel/helper-validator-identifier/lib/identifier.js
generated
vendored
Normal file
70
node_modules/@babel/helper-validator-identifier/lib/identifier.js
generated
vendored
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
"use strict";
|
||||||
|
|
||||||
|
Object.defineProperty(exports, "__esModule", {
|
||||||
|
value: true
|
||||||
|
});
|
||||||
|
exports.isIdentifierChar = isIdentifierChar;
|
||||||
|
exports.isIdentifierName = isIdentifierName;
|
||||||
|
exports.isIdentifierStart = isIdentifierStart;
|
||||||
|
let nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u0870-\u0887\u0889-\u088e\u08a0-\u08c9\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c5d\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cdd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u1711\u171f-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4c\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c8a\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7cd\ua7d0\ua7d1\ua7d3\ua7d5-\ua7dc\ua7f2-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc";
|
||||||
|
let nonASCIIidentifierChars = "\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0897-\u089f\u08ca-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3c\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0cf3\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ece\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u180f-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf-\u1ace\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1dff\u200c\u200d\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\u30fb\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f\uff65";
|
||||||
|
const nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]");
|
||||||
|
const nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]");
|
||||||
|
nonASCIIidentifierStartChars = nonASCIIidentifierChars = null;
|
||||||
|
const astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 4, 51, 13, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 39, 27, 10, 22, 251, 41, 7, 1, 17, 2, 60, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 31, 9, 2, 0, 3, 0, 2, 37, 2, 0, 26, 0, 2, 0, 45, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 200, 32, 32, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 26, 3994, 6, 582, 6842, 29, 1763, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 433, 44, 212, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 42, 9, 8936, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 229, 29, 3, 0, 496, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4153, 7, 221, 3, 5761, 15, 7472, 16, 621, 2467, 541, 1507, 4938, 6, 4191];
|
||||||
|
const astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 7, 9, 32, 4, 318, 1, 80, 3, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 68, 8, 2, 0, 3, 0, 2, 3, 2, 4, 2, 0, 15, 1, 83, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 7, 19, 58, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 343, 9, 54, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 10, 5350, 0, 7, 14, 11465, 27, 2343, 9, 87, 9, 39, 4, 60, 6, 26, 9, 535, 9, 470, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4178, 9, 519, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 245, 1, 2, 9, 726, 6, 110, 6, 6, 9, 4759, 9, 787719, 239];
|
||||||
|
function isInAstralSet(code, set) {
|
||||||
|
let pos = 0x10000;
|
||||||
|
for (let i = 0, length = set.length; i < length; i += 2) {
|
||||||
|
pos += set[i];
|
||||||
|
if (pos > code) return false;
|
||||||
|
pos += set[i + 1];
|
||||||
|
if (pos >= code) return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
function isIdentifierStart(code) {
|
||||||
|
if (code < 65) return code === 36;
|
||||||
|
if (code <= 90) return true;
|
||||||
|
if (code < 97) return code === 95;
|
||||||
|
if (code <= 122) return true;
|
||||||
|
if (code <= 0xffff) {
|
||||||
|
return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code));
|
||||||
|
}
|
||||||
|
return isInAstralSet(code, astralIdentifierStartCodes);
|
||||||
|
}
|
||||||
|
function isIdentifierChar(code) {
|
||||||
|
if (code < 48) return code === 36;
|
||||||
|
if (code < 58) return true;
|
||||||
|
if (code < 65) return false;
|
||||||
|
if (code <= 90) return true;
|
||||||
|
if (code < 97) return code === 95;
|
||||||
|
if (code <= 122) return true;
|
||||||
|
if (code <= 0xffff) {
|
||||||
|
return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));
|
||||||
|
}
|
||||||
|
return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes);
|
||||||
|
}
|
||||||
|
function isIdentifierName(name) {
|
||||||
|
let isFirst = true;
|
||||||
|
for (let i = 0; i < name.length; i++) {
|
||||||
|
let cp = name.charCodeAt(i);
|
||||||
|
if ((cp & 0xfc00) === 0xd800 && i + 1 < name.length) {
|
||||||
|
const trail = name.charCodeAt(++i);
|
||||||
|
if ((trail & 0xfc00) === 0xdc00) {
|
||||||
|
cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (isFirst) {
|
||||||
|
isFirst = false;
|
||||||
|
if (!isIdentifierStart(cp)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
} else if (!isIdentifierChar(cp)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return !isFirst;
|
||||||
|
}
|
||||||
|
|
||||||
|
//# sourceMappingURL=identifier.js.map
|
1
node_modules/@babel/helper-validator-identifier/lib/identifier.js.map
generated
vendored
Normal file
1
node_modules/@babel/helper-validator-identifier/lib/identifier.js.map
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
57
node_modules/@babel/helper-validator-identifier/lib/index.js
generated
vendored
Normal file
57
node_modules/@babel/helper-validator-identifier/lib/index.js
generated
vendored
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
"use strict";
|
||||||
|
|
||||||
|
Object.defineProperty(exports, "__esModule", {
|
||||||
|
value: true
|
||||||
|
});
|
||||||
|
Object.defineProperty(exports, "isIdentifierChar", {
|
||||||
|
enumerable: true,
|
||||||
|
get: function () {
|
||||||
|
return _identifier.isIdentifierChar;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Object.defineProperty(exports, "isIdentifierName", {
|
||||||
|
enumerable: true,
|
||||||
|
get: function () {
|
||||||
|
return _identifier.isIdentifierName;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Object.defineProperty(exports, "isIdentifierStart", {
|
||||||
|
enumerable: true,
|
||||||
|
get: function () {
|
||||||
|
return _identifier.isIdentifierStart;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Object.defineProperty(exports, "isKeyword", {
|
||||||
|
enumerable: true,
|
||||||
|
get: function () {
|
||||||
|
return _keyword.isKeyword;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Object.defineProperty(exports, "isReservedWord", {
|
||||||
|
enumerable: true,
|
||||||
|
get: function () {
|
||||||
|
return _keyword.isReservedWord;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Object.defineProperty(exports, "isStrictBindOnlyReservedWord", {
|
||||||
|
enumerable: true,
|
||||||
|
get: function () {
|
||||||
|
return _keyword.isStrictBindOnlyReservedWord;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Object.defineProperty(exports, "isStrictBindReservedWord", {
|
||||||
|
enumerable: true,
|
||||||
|
get: function () {
|
||||||
|
return _keyword.isStrictBindReservedWord;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Object.defineProperty(exports, "isStrictReservedWord", {
|
||||||
|
enumerable: true,
|
||||||
|
get: function () {
|
||||||
|
return _keyword.isStrictReservedWord;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
var _identifier = require("./identifier.js");
|
||||||
|
var _keyword = require("./keyword.js");
|
||||||
|
|
||||||
|
//# sourceMappingURL=index.js.map
|
1
node_modules/@babel/helper-validator-identifier/lib/index.js.map
generated
vendored
Normal file
1
node_modules/@babel/helper-validator-identifier/lib/index.js.map
generated
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
{"version":3,"names":["_identifier","require","_keyword"],"sources":["../src/index.ts"],"sourcesContent":["export {\n isIdentifierName,\n isIdentifierChar,\n isIdentifierStart,\n} from \"./identifier.ts\";\nexport {\n isReservedWord,\n isStrictBindOnlyReservedWord,\n isStrictBindReservedWord,\n isStrictReservedWord,\n isKeyword,\n} from \"./keyword.ts\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AAKA,IAAAC,QAAA,GAAAD,OAAA","ignoreList":[]}
|
35
node_modules/@babel/helper-validator-identifier/lib/keyword.js
generated
vendored
Normal file
35
node_modules/@babel/helper-validator-identifier/lib/keyword.js
generated
vendored
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
"use strict";
|
||||||
|
|
||||||
|
Object.defineProperty(exports, "__esModule", {
|
||||||
|
value: true
|
||||||
|
});
|
||||||
|
exports.isKeyword = isKeyword;
|
||||||
|
exports.isReservedWord = isReservedWord;
|
||||||
|
exports.isStrictBindOnlyReservedWord = isStrictBindOnlyReservedWord;
|
||||||
|
exports.isStrictBindReservedWord = isStrictBindReservedWord;
|
||||||
|
exports.isStrictReservedWord = isStrictReservedWord;
|
||||||
|
const reservedWords = {
|
||||||
|
keyword: ["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "const", "while", "with", "new", "this", "super", "class", "extends", "export", "import", "null", "true", "false", "in", "instanceof", "typeof", "void", "delete"],
|
||||||
|
strict: ["implements", "interface", "let", "package", "private", "protected", "public", "static", "yield"],
|
||||||
|
strictBind: ["eval", "arguments"]
|
||||||
|
};
|
||||||
|
const keywords = new Set(reservedWords.keyword);
|
||||||
|
const reservedWordsStrictSet = new Set(reservedWords.strict);
|
||||||
|
const reservedWordsStrictBindSet = new Set(reservedWords.strictBind);
|
||||||
|
function isReservedWord(word, inModule) {
|
||||||
|
return inModule && word === "await" || word === "enum";
|
||||||
|
}
|
||||||
|
function isStrictReservedWord(word, inModule) {
|
||||||
|
return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);
|
||||||
|
}
|
||||||
|
function isStrictBindOnlyReservedWord(word) {
|
||||||
|
return reservedWordsStrictBindSet.has(word);
|
||||||
|
}
|
||||||
|
function isStrictBindReservedWord(word, inModule) {
|
||||||
|
return isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word);
|
||||||
|
}
|
||||||
|
function isKeyword(word) {
|
||||||
|
return keywords.has(word);
|
||||||
|
}
|
||||||
|
|
||||||
|
//# sourceMappingURL=keyword.js.map
|
1
node_modules/@babel/helper-validator-identifier/lib/keyword.js.map
generated
vendored
Normal file
1
node_modules/@babel/helper-validator-identifier/lib/keyword.js.map
generated
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
{"version":3,"names":["reservedWords","keyword","strict","strictBind","keywords","Set","reservedWordsStrictSet","reservedWordsStrictBindSet","isReservedWord","word","inModule","isStrictReservedWord","has","isStrictBindOnlyReservedWord","isStrictBindReservedWord","isKeyword"],"sources":["../src/keyword.ts"],"sourcesContent":["const reservedWords = {\n keyword: [\n \"break\",\n \"case\",\n \"catch\",\n \"continue\",\n \"debugger\",\n \"default\",\n \"do\",\n \"else\",\n \"finally\",\n \"for\",\n \"function\",\n \"if\",\n \"return\",\n \"switch\",\n \"throw\",\n \"try\",\n \"var\",\n \"const\",\n \"while\",\n \"with\",\n \"new\",\n \"this\",\n \"super\",\n \"class\",\n \"extends\",\n \"export\",\n \"import\",\n \"null\",\n \"true\",\n \"false\",\n \"in\",\n \"instanceof\",\n \"typeof\",\n \"void\",\n \"delete\",\n ],\n strict: [\n \"implements\",\n \"interface\",\n \"let\",\n \"package\",\n \"private\",\n \"protected\",\n \"public\",\n \"static\",\n \"yield\",\n ],\n strictBind: [\"eval\", \"arguments\"],\n};\nconst keywords = new Set(reservedWords.keyword);\nconst reservedWordsStrictSet = new Set(reservedWords.strict);\nconst reservedWordsStrictBindSet = new Set(reservedWords.strictBind);\n\n/**\n * Checks if word is a reserved word in non-strict mode\n */\nexport function isReservedWord(word: string, inModule: boolean): boolean {\n return (inModule && word === \"await\") || word === \"enum\";\n}\n\n/**\n * Checks if word is a reserved word in non-binding strict mode\n *\n * Includes non-strict reserved words\n */\nexport function isStrictReservedWord(word: string, inModule: boolean): boolean {\n return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);\n}\n\n/**\n * Checks if word is a reserved word in binding strict mode, but it is allowed as\n * a normal identifier.\n */\nexport function isStrictBindOnlyReservedWord(word: string): boolean {\n return reservedWordsStrictBindSet.has(word);\n}\n\n/**\n * Checks if word is a reserved word in binding strict mode\n *\n * Includes non-strict reserved words and non-binding strict reserved words\n */\nexport function isStrictBindReservedWord(\n word: string,\n inModule: boolean,\n): boolean {\n return (\n isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word)\n );\n}\n\nexport function isKeyword(word: string): boolean {\n return keywords.has(word);\n}\n"],"mappings":";;;;;;;;;;AAAA,MAAMA,aAAa,GAAG;EACpBC,OAAO,EAAE,CACP,OAAO,EACP,MAAM,EACN,OAAO,EACP,UAAU,EACV,UAAU,EACV,SAAS,EACT,IAAI,EACJ,MAAM,EACN,SAAS,EACT,KAAK,EACL,UAAU,EACV,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,KAAK,EACL,KAAK,EACL,OAAO,EACP,OAAO,EACP,MAAM,EACN,KAAK,EACL,MAAM,EACN,OAAO,EACP,OAAO,EACP,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,MAAM,EACN,OAAO,EACP,IAAI,EACJ,YAAY,EACZ,QAAQ,EACR,MAAM,EACN,QAAQ,CACT;EACDC,MAAM,EAAE,CACN,YAAY,EACZ,WAAW,EACX,KAAK,EACL,SAAS,EACT,SAAS,EACT,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,OAAO,CACR;EACDC,UAAU,EAAE,CAAC,MAAM,EAAE,WAAW;AAClC,CAAC;AACD,MAAMC,QAAQ,GAAG,IAAIC,GAAG,CAACL,aAAa,CAACC,OAAO,CAAC;AAC/C,MAAMK,sBAAsB,GAAG,IAAID,GAAG,CAACL,aAAa,CAACE,MAAM,CAAC;AAC5D,MAAMK,0BAA0B,GAAG,IAAIF,GAAG,CAACL,aAAa,CAACG,UAAU,CAAC;AAK7D,SAASK,cAAcA,CAACC,IAAY,EAAEC,QAAiB,EAAW;EACvE,OAAQA,QAAQ,IAAID,IAAI,KAAK,OAAO,IAAKA,IAAI,KAAK,MAAM;AAC1D;AAOO,SAASE,oBAAoBA,CAACF,IAAY,EAAEC,QAAiB,EAAW;EAC7E,OAAOF,cAAc,CAACC,IAAI,EAAEC,QAAQ,CAAC,IAAIJ,sBAAsB,CAACM,GAAG,CAACH,IAAI,CAAC;AAC3E;AAMO,SAASI,4BAA4BA,CAACJ,IAAY,EAAW;EAClE,OAAOF,0BAA0B,CAACK,GAAG,CAACH,IAAI,CAAC;AAC7C;AAOO,SAASK,wBAAwBA,CACtCL,IAAY,EACZC,QAAiB,EACR;EACT,OACEC,oBAAoB,CAACF,IAAI,EAAEC,QAAQ,CAAC,IAAIG,4BAA4B,CAACJ,IAAI,CAAC;AAE9E;AAEO,SAASM,SAASA,CAACN,IAAY,EAAW;EAC/C,OAAOL,QAAQ,CAACQ,GAAG,CAACH,IAAI,CAAC;AAC3B","ignoreList":[]}
|
31
node_modules/@babel/helper-validator-identifier/package.json
generated
vendored
Normal file
31
node_modules/@babel/helper-validator-identifier/package.json
generated
vendored
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
{
|
||||||
|
"name": "@babel/helper-validator-identifier",
|
||||||
|
"version": "7.25.9",
|
||||||
|
"description": "Validate identifier/keywords name",
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/babel/babel.git",
|
||||||
|
"directory": "packages/babel-helper-validator-identifier"
|
||||||
|
},
|
||||||
|
"license": "MIT",
|
||||||
|
"publishConfig": {
|
||||||
|
"access": "public"
|
||||||
|
},
|
||||||
|
"main": "./lib/index.js",
|
||||||
|
"exports": {
|
||||||
|
".": {
|
||||||
|
"types": "./lib/index.d.ts",
|
||||||
|
"default": "./lib/index.js"
|
||||||
|
},
|
||||||
|
"./package.json": "./package.json"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@unicode/unicode-16.0.0": "^1.0.0",
|
||||||
|
"charcodes": "^0.2.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6.9.0"
|
||||||
|
},
|
||||||
|
"author": "The Babel Team (https://babel.dev/team)",
|
||||||
|
"type": "commonjs"
|
||||||
|
}
|
1073
node_modules/@babel/parser/CHANGELOG.md
generated
vendored
Normal file
1073
node_modules/@babel/parser/CHANGELOG.md
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
19
node_modules/@babel/parser/LICENSE
generated
vendored
Normal file
19
node_modules/@babel/parser/LICENSE
generated
vendored
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
Copyright (C) 2012-2014 by various contributors (see AUTHORS)
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
THE SOFTWARE.
|
19
node_modules/@babel/parser/README.md
generated
vendored
Normal file
19
node_modules/@babel/parser/README.md
generated
vendored
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
# @babel/parser
|
||||||
|
|
||||||
|
> A JavaScript parser
|
||||||
|
|
||||||
|
See our website [@babel/parser](https://babeljs.io/docs/babel-parser) for more information or the [issues](https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20parser%22+is%3Aopen) associated with this package.
|
||||||
|
|
||||||
|
## Install
|
||||||
|
|
||||||
|
Using npm:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
npm install --save-dev @babel/parser
|
||||||
|
```
|
||||||
|
|
||||||
|
or using yarn:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
yarn add @babel/parser --dev
|
||||||
|
```
|
15
node_modules/@babel/parser/bin/babel-parser.js
generated
vendored
Normal file
15
node_modules/@babel/parser/bin/babel-parser.js
generated
vendored
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#!/usr/bin/env node
|
||||||
|
/* eslint no-var: 0 */
|
||||||
|
|
||||||
|
var parser = require("..");
|
||||||
|
var fs = require("fs");
|
||||||
|
|
||||||
|
var filename = process.argv[2];
|
||||||
|
if (!filename) {
|
||||||
|
console.error("no filename specified");
|
||||||
|
} else {
|
||||||
|
var file = fs.readFileSync(filename, "utf8");
|
||||||
|
var ast = parser.parse(file);
|
||||||
|
|
||||||
|
console.log(JSON.stringify(ast, null, " "));
|
||||||
|
}
|
5
node_modules/@babel/parser/index.cjs
generated
vendored
Normal file
5
node_modules/@babel/parser/index.cjs
generated
vendored
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
try {
|
||||||
|
module.exports = require("./lib/index.cjs");
|
||||||
|
} catch {
|
||||||
|
module.exports = require("./lib/index.js");
|
||||||
|
}
|
14246
node_modules/@babel/parser/lib/index.js
generated
vendored
Normal file
14246
node_modules/@babel/parser/lib/index.js
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1
node_modules/@babel/parser/lib/index.js.map
generated
vendored
Normal file
1
node_modules/@babel/parser/lib/index.js.map
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
50
node_modules/@babel/parser/package.json
generated
vendored
Normal file
50
node_modules/@babel/parser/package.json
generated
vendored
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
{
|
||||||
|
"name": "@babel/parser",
|
||||||
|
"version": "7.27.0",
|
||||||
|
"description": "A JavaScript parser",
|
||||||
|
"author": "The Babel Team (https://babel.dev/team)",
|
||||||
|
"homepage": "https://babel.dev/docs/en/next/babel-parser",
|
||||||
|
"bugs": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A+parser+%28babylon%29%22+is%3Aopen",
|
||||||
|
"license": "MIT",
|
||||||
|
"publishConfig": {
|
||||||
|
"access": "public"
|
||||||
|
},
|
||||||
|
"keywords": [
|
||||||
|
"babel",
|
||||||
|
"javascript",
|
||||||
|
"parser",
|
||||||
|
"tc39",
|
||||||
|
"ecmascript",
|
||||||
|
"@babel/parser"
|
||||||
|
],
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/babel/babel.git",
|
||||||
|
"directory": "packages/babel-parser"
|
||||||
|
},
|
||||||
|
"main": "./lib/index.js",
|
||||||
|
"types": "./typings/babel-parser.d.ts",
|
||||||
|
"files": [
|
||||||
|
"bin",
|
||||||
|
"lib",
|
||||||
|
"typings/babel-parser.d.ts",
|
||||||
|
"index.cjs"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6.0.0"
|
||||||
|
},
|
||||||
|
"# dependencies": "This package doesn't actually have runtime dependencies. @babel/types is only needed for type definitions.",
|
||||||
|
"dependencies": {
|
||||||
|
"@babel/types": "^7.27.0"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@babel/code-frame": "^7.26.2",
|
||||||
|
"@babel/helper-check-duplicate-nodes": "^7.25.9",
|
||||||
|
"@babel/helper-fixtures": "^7.26.0",
|
||||||
|
"@babel/helper-string-parser": "^7.25.9",
|
||||||
|
"@babel/helper-validator-identifier": "^7.25.9",
|
||||||
|
"charcodes": "^0.2.0"
|
||||||
|
},
|
||||||
|
"bin": "./bin/babel-parser.js",
|
||||||
|
"type": "commonjs"
|
||||||
|
}
|
235
node_modules/@babel/parser/typings/babel-parser.d.ts
generated
vendored
Normal file
235
node_modules/@babel/parser/typings/babel-parser.d.ts
generated
vendored
Normal file
@ -0,0 +1,235 @@
|
|||||||
|
// This file is auto-generated! Do not modify it directly.
|
||||||
|
// Run `yarn gulp bundle-dts` to re-generate it.
|
||||||
|
/* eslint-disable @typescript-eslint/consistent-type-imports, @typescript-eslint/no-redundant-type-constituents */
|
||||||
|
import { File, Expression } from '@babel/types';
|
||||||
|
|
||||||
|
type BABEL_8_BREAKING = false;
|
||||||
|
type IF_BABEL_7<V> = false extends BABEL_8_BREAKING ? V : never;
|
||||||
|
|
||||||
|
type Plugin$1 =
|
||||||
|
| "asyncDoExpressions"
|
||||||
|
| IF_BABEL_7<"asyncGenerators">
|
||||||
|
| IF_BABEL_7<"bigInt">
|
||||||
|
| IF_BABEL_7<"classPrivateMethods">
|
||||||
|
| IF_BABEL_7<"classPrivateProperties">
|
||||||
|
| IF_BABEL_7<"classProperties">
|
||||||
|
| IF_BABEL_7<"classStaticBlock">
|
||||||
|
| IF_BABEL_7<"decimal">
|
||||||
|
| "decorators-legacy"
|
||||||
|
| "deferredImportEvaluation"
|
||||||
|
| "decoratorAutoAccessors"
|
||||||
|
| "destructuringPrivate"
|
||||||
|
| "deprecatedImportAssert"
|
||||||
|
| "doExpressions"
|
||||||
|
| IF_BABEL_7<"dynamicImport">
|
||||||
|
| "explicitResourceManagement"
|
||||||
|
| "exportDefaultFrom"
|
||||||
|
| IF_BABEL_7<"exportNamespaceFrom">
|
||||||
|
| "flow"
|
||||||
|
| "flowComments"
|
||||||
|
| "functionBind"
|
||||||
|
| "functionSent"
|
||||||
|
| "importMeta"
|
||||||
|
| "jsx"
|
||||||
|
| IF_BABEL_7<"jsonStrings">
|
||||||
|
| IF_BABEL_7<"logicalAssignment">
|
||||||
|
| IF_BABEL_7<"importAssertions">
|
||||||
|
| IF_BABEL_7<"importReflection">
|
||||||
|
| "moduleBlocks"
|
||||||
|
| IF_BABEL_7<"moduleStringNames">
|
||||||
|
| IF_BABEL_7<"nullishCoalescingOperator">
|
||||||
|
| IF_BABEL_7<"numericSeparator">
|
||||||
|
| IF_BABEL_7<"objectRestSpread">
|
||||||
|
| IF_BABEL_7<"optionalCatchBinding">
|
||||||
|
| IF_BABEL_7<"optionalChaining">
|
||||||
|
| "partialApplication"
|
||||||
|
| "placeholders"
|
||||||
|
| IF_BABEL_7<"privateIn">
|
||||||
|
| IF_BABEL_7<"regexpUnicodeSets">
|
||||||
|
| "sourcePhaseImports"
|
||||||
|
| "throwExpressions"
|
||||||
|
| IF_BABEL_7<"topLevelAwait">
|
||||||
|
| "v8intrinsic"
|
||||||
|
| ParserPluginWithOptions[0];
|
||||||
|
|
||||||
|
type ParserPluginWithOptions =
|
||||||
|
| ["decorators", DecoratorsPluginOptions]
|
||||||
|
| ["estree", { classFeatures?: boolean }]
|
||||||
|
| IF_BABEL_7<["importAttributes", { deprecatedAssertSyntax: boolean }]>
|
||||||
|
| IF_BABEL_7<["moduleAttributes", { version: "may-2020" }]>
|
||||||
|
| ["optionalChainingAssign", { version: "2023-07" }]
|
||||||
|
| ["pipelineOperator", PipelineOperatorPluginOptions]
|
||||||
|
| ["recordAndTuple", RecordAndTuplePluginOptions]
|
||||||
|
| ["flow", FlowPluginOptions]
|
||||||
|
| ["typescript", TypeScriptPluginOptions];
|
||||||
|
|
||||||
|
type PluginConfig = Plugin$1 | ParserPluginWithOptions;
|
||||||
|
|
||||||
|
interface DecoratorsPluginOptions {
|
||||||
|
decoratorsBeforeExport?: boolean;
|
||||||
|
allowCallParenthesized?: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface PipelineOperatorPluginOptions {
|
||||||
|
proposal: BABEL_8_BREAKING extends false
|
||||||
|
? "minimal" | "fsharp" | "hack" | "smart"
|
||||||
|
: "fsharp" | "hack";
|
||||||
|
topicToken?: "%" | "#" | "@@" | "^^" | "^";
|
||||||
|
}
|
||||||
|
|
||||||
|
interface RecordAndTuplePluginOptions {
|
||||||
|
syntaxType: "bar" | "hash";
|
||||||
|
}
|
||||||
|
|
||||||
|
type FlowPluginOptions = BABEL_8_BREAKING extends true
|
||||||
|
? {
|
||||||
|
all?: boolean;
|
||||||
|
enums?: boolean;
|
||||||
|
}
|
||||||
|
: {
|
||||||
|
all?: boolean;
|
||||||
|
};
|
||||||
|
|
||||||
|
interface TypeScriptPluginOptions {
|
||||||
|
dts?: boolean;
|
||||||
|
disallowAmbiguousJSXLike?: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
type Plugin = PluginConfig;
|
||||||
|
|
||||||
|
interface Options {
|
||||||
|
/**
|
||||||
|
* By default, import and export declarations can only appear at a program's top level.
|
||||||
|
* Setting this option to true allows them anywhere where a statement is allowed.
|
||||||
|
*/
|
||||||
|
allowImportExportEverywhere?: boolean;
|
||||||
|
/**
|
||||||
|
* By default, await use is not allowed outside of an async function.
|
||||||
|
* Set this to true to accept such code.
|
||||||
|
*/
|
||||||
|
allowAwaitOutsideFunction?: boolean;
|
||||||
|
/**
|
||||||
|
* By default, a return statement at the top level raises an error.
|
||||||
|
* Set this to true to accept such code.
|
||||||
|
*/
|
||||||
|
allowReturnOutsideFunction?: boolean;
|
||||||
|
/**
|
||||||
|
* By default, new.target use is not allowed outside of a function or class.
|
||||||
|
* Set this to true to accept such code.
|
||||||
|
*/
|
||||||
|
allowNewTargetOutsideFunction?: boolean;
|
||||||
|
allowSuperOutsideMethod?: boolean;
|
||||||
|
/**
|
||||||
|
* By default, exported identifiers must refer to a declared variable.
|
||||||
|
* Set this to true to allow export statements to reference undeclared variables.
|
||||||
|
*/
|
||||||
|
allowUndeclaredExports?: boolean;
|
||||||
|
/**
|
||||||
|
* By default, yield use is not allowed outside of a generator function.
|
||||||
|
* Set this to true to accept such code.
|
||||||
|
*/
|
||||||
|
allowYieldOutsideFunction?: boolean;
|
||||||
|
/**
|
||||||
|
* By default, Babel parser JavaScript code according to Annex B syntax.
|
||||||
|
* Set this to `false` to disable such behavior.
|
||||||
|
*/
|
||||||
|
annexB?: boolean;
|
||||||
|
/**
|
||||||
|
* By default, Babel attaches comments to adjacent AST nodes.
|
||||||
|
* When this option is set to false, comments are not attached.
|
||||||
|
* It can provide up to 30% performance improvement when the input code has many comments.
|
||||||
|
* @babel/eslint-parser will set it for you.
|
||||||
|
* It is not recommended to use attachComment: false with Babel transform,
|
||||||
|
* as doing so removes all the comments in output code, and renders annotations such as
|
||||||
|
* /* istanbul ignore next *\/ nonfunctional.
|
||||||
|
*/
|
||||||
|
attachComment?: boolean;
|
||||||
|
/**
|
||||||
|
* By default, Babel always throws an error when it finds some invalid code.
|
||||||
|
* When this option is set to true, it will store the parsing error and
|
||||||
|
* try to continue parsing the invalid input file.
|
||||||
|
*/
|
||||||
|
errorRecovery?: boolean;
|
||||||
|
/**
|
||||||
|
* Indicate the mode the code should be parsed in.
|
||||||
|
* Can be one of "script", "module", or "unambiguous". Defaults to "script".
|
||||||
|
* "unambiguous" will make @babel/parser attempt to guess, based on the presence
|
||||||
|
* of ES6 import or export statements.
|
||||||
|
* Files with ES6 imports and exports are considered "module" and are otherwise "script".
|
||||||
|
*/
|
||||||
|
sourceType?: "script" | "module" | "unambiguous";
|
||||||
|
/**
|
||||||
|
* Correlate output AST nodes with their source filename.
|
||||||
|
* Useful when generating code and source maps from the ASTs of multiple input files.
|
||||||
|
*/
|
||||||
|
sourceFilename?: string;
|
||||||
|
/**
|
||||||
|
* By default, all source indexes start from 0.
|
||||||
|
* You can provide a start index to alternatively start with.
|
||||||
|
* Useful for integration with other source tools.
|
||||||
|
*/
|
||||||
|
startIndex?: number;
|
||||||
|
/**
|
||||||
|
* By default, the first line of code parsed is treated as line 1.
|
||||||
|
* You can provide a line number to alternatively start with.
|
||||||
|
* Useful for integration with other source tools.
|
||||||
|
*/
|
||||||
|
startLine?: number;
|
||||||
|
/**
|
||||||
|
* By default, the parsed code is treated as if it starts from line 1, column 0.
|
||||||
|
* You can provide a column number to alternatively start with.
|
||||||
|
* Useful for integration with other source tools.
|
||||||
|
*/
|
||||||
|
startColumn?: number;
|
||||||
|
/**
|
||||||
|
* Array containing the plugins that you want to enable.
|
||||||
|
*/
|
||||||
|
plugins?: Plugin[];
|
||||||
|
/**
|
||||||
|
* Should the parser work in strict mode.
|
||||||
|
* Defaults to true if sourceType === 'module'. Otherwise, false.
|
||||||
|
*/
|
||||||
|
strictMode?: boolean;
|
||||||
|
/**
|
||||||
|
* Adds a ranges property to each node: [node.start, node.end]
|
||||||
|
*/
|
||||||
|
ranges?: boolean;
|
||||||
|
/**
|
||||||
|
* Adds all parsed tokens to a tokens property on the File node.
|
||||||
|
*/
|
||||||
|
tokens?: boolean;
|
||||||
|
/**
|
||||||
|
* By default, the parser adds information about parentheses by setting
|
||||||
|
* `extra.parenthesized` to `true` as needed.
|
||||||
|
* When this option is `true` the parser creates `ParenthesizedExpression`
|
||||||
|
* AST nodes instead of using the `extra` property.
|
||||||
|
*/
|
||||||
|
createParenthesizedExpressions?: boolean;
|
||||||
|
/**
|
||||||
|
* The default is false in Babel 7 and true in Babel 8
|
||||||
|
* Set this to true to parse it as an `ImportExpression` node.
|
||||||
|
* Otherwise `import(foo)` is parsed as `CallExpression(Import, [Identifier(foo)])`.
|
||||||
|
*/
|
||||||
|
createImportExpressions?: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
type ParserOptions = Partial<Options>;
|
||||||
|
interface ParseError {
|
||||||
|
code: string;
|
||||||
|
reasonCode: string;
|
||||||
|
}
|
||||||
|
type ParseResult<Result extends File | Expression = File> = Result & {
|
||||||
|
errors: null | ParseError[];
|
||||||
|
};
|
||||||
|
/**
|
||||||
|
* Parse the provided code as an entire ECMAScript program.
|
||||||
|
*/
|
||||||
|
declare function parse(input: string, options?: ParserOptions): ParseResult<File>;
|
||||||
|
declare function parseExpression(input: string, options?: ParserOptions): ParseResult<Expression>;
|
||||||
|
|
||||||
|
declare const tokTypes: {
|
||||||
|
// todo(flow->ts) real token type
|
||||||
|
[name: string]: any;
|
||||||
|
};
|
||||||
|
|
||||||
|
export { DecoratorsPluginOptions, FlowPluginOptions, ParseError, ParseResult, ParserOptions, PluginConfig as ParserPlugin, ParserPluginWithOptions, PipelineOperatorPluginOptions, RecordAndTuplePluginOptions, TypeScriptPluginOptions, parse, parseExpression, tokTypes };
|
22
node_modules/@babel/types/LICENSE
generated
vendored
Normal file
22
node_modules/@babel/types/LICENSE
generated
vendored
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2014-present Sebastian McKenzie and other contributors
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining
|
||||||
|
a copy of this software and associated documentation files (the
|
||||||
|
"Software"), to deal in the Software without restriction, including
|
||||||
|
without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
distribute, sublicense, and/or sell copies of the Software, and to
|
||||||
|
permit persons to whom the Software is furnished to do so, subject to
|
||||||
|
the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be
|
||||||
|
included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||||
|
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||||
|
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||||
|
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
19
node_modules/@babel/types/README.md
generated
vendored
Normal file
19
node_modules/@babel/types/README.md
generated
vendored
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
# @babel/types
|
||||||
|
|
||||||
|
> Babel Types is a Lodash-esque utility library for AST nodes
|
||||||
|
|
||||||
|
See our website [@babel/types](https://babeljs.io/docs/babel-types) for more information or the [issues](https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20types%22+is%3Aopen) associated with this package.
|
||||||
|
|
||||||
|
## Install
|
||||||
|
|
||||||
|
Using npm:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
npm install --save-dev @babel/types
|
||||||
|
```
|
||||||
|
|
||||||
|
or using yarn:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
yarn add @babel/types --dev
|
||||||
|
```
|
16
node_modules/@babel/types/lib/asserts/assertNode.js
generated
vendored
Normal file
16
node_modules/@babel/types/lib/asserts/assertNode.js
generated
vendored
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
"use strict";
|
||||||
|
|
||||||
|
Object.defineProperty(exports, "__esModule", {
|
||||||
|
value: true
|
||||||
|
});
|
||||||
|
exports.default = assertNode;
|
||||||
|
var _isNode = require("../validators/isNode.js");
|
||||||
|
function assertNode(node) {
|
||||||
|
if (!(0, _isNode.default)(node)) {
|
||||||
|
var _node$type;
|
||||||
|
const type = (_node$type = node == null ? void 0 : node.type) != null ? _node$type : JSON.stringify(node);
|
||||||
|
throw new TypeError(`Not a valid node of type "${type}"`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//# sourceMappingURL=assertNode.js.map
|
1
node_modules/@babel/types/lib/asserts/assertNode.js.map
generated
vendored
Normal file
1
node_modules/@babel/types/lib/asserts/assertNode.js.map
generated
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
{"version":3,"names":["_isNode","require","assertNode","node","isNode","_node$type","type","JSON","stringify","TypeError"],"sources":["../../src/asserts/assertNode.ts"],"sourcesContent":["import isNode from \"../validators/isNode.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default function assertNode(node?: any): asserts node is t.Node {\n if (!isNode(node)) {\n const type = node?.type ?? JSON.stringify(node);\n throw new TypeError(`Not a valid node of type \"${type}\"`);\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAGe,SAASC,UAAUA,CAACC,IAAU,EAA0B;EACrE,IAAI,CAAC,IAAAC,eAAM,EAACD,IAAI,CAAC,EAAE;IAAA,IAAAE,UAAA;IACjB,MAAMC,IAAI,IAAAD,UAAA,GAAGF,IAAI,oBAAJA,IAAI,CAAEG,IAAI,YAAAD,UAAA,GAAIE,IAAI,CAACC,SAAS,CAACL,IAAI,CAAC;IAC/C,MAAM,IAAIM,SAAS,CAAC,6BAA6BH,IAAI,GAAG,CAAC;EAC3D;AACF","ignoreList":[]}
|
1243
node_modules/@babel/types/lib/asserts/generated/index.js
generated
vendored
Normal file
1243
node_modules/@babel/types/lib/asserts/generated/index.js
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1
node_modules/@babel/types/lib/asserts/generated/index.js.map
generated
vendored
Normal file
1
node_modules/@babel/types/lib/asserts/generated/index.js.map
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
3
node_modules/@babel/types/lib/ast-types/generated/index.js
generated
vendored
Normal file
3
node_modules/@babel/types/lib/ast-types/generated/index.js
generated
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
|
//# sourceMappingURL=index.js.map
|
1
node_modules/@babel/types/lib/ast-types/generated/index.js.map
generated
vendored
Normal file
1
node_modules/@babel/types/lib/ast-types/generated/index.js.map
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
18
node_modules/@babel/types/lib/builders/flow/createFlowUnionType.js
generated
vendored
Normal file
18
node_modules/@babel/types/lib/builders/flow/createFlowUnionType.js
generated
vendored
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
"use strict";
|
||||||
|
|
||||||
|
Object.defineProperty(exports, "__esModule", {
|
||||||
|
value: true
|
||||||
|
});
|
||||||
|
exports.default = createFlowUnionType;
|
||||||
|
var _index = require("../generated/index.js");
|
||||||
|
var _removeTypeDuplicates = require("../../modifications/flow/removeTypeDuplicates.js");
|
||||||
|
function createFlowUnionType(types) {
|
||||||
|
const flattened = (0, _removeTypeDuplicates.default)(types);
|
||||||
|
if (flattened.length === 1) {
|
||||||
|
return flattened[0];
|
||||||
|
} else {
|
||||||
|
return (0, _index.unionTypeAnnotation)(flattened);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//# sourceMappingURL=createFlowUnionType.js.map
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user