diff --git a/package-lock.json b/package-lock.json
index f17178a..870800f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,6 +1,6 @@
{
- "name": "vue-h5-template",
- "version": "2.1.0",
+ "name": "health-student",
+ "version": "1.0.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@@ -5378,6 +5378,11 @@
"@sideway/pinpoint": "^2.0.0"
}
},
+ "js-base64": {
+ "version": "2.6.4",
+ "resolved": "https://registry.npmmirror.com/js-base64/-/js-base64-2.6.4.tgz",
+ "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ=="
+ },
"js-message": {
"version": "1.0.7",
"resolved": "https://registry.npmmirror.com/js-message/-/js-message-1.0.7.tgz",
diff --git a/package.json b/package.json
index 63ae9b6..611d81d 100644
--- a/package.json
+++ b/package.json
@@ -21,7 +21,8 @@
"vue-router": "^3.5.4",
"vuex": "^3.6.2",
"dayjs": "^1.11.7",
- "echarts": "^5.4.1"
+ "echarts": "^5.4.1",
+ "js-base64": "^2.5.2"
},
"devDependencies": {
"@babel/core": "^7.18.10",
diff --git a/src/api/core.js b/src/api/core.js
index 31b7bed..58a86d3 100644
--- a/src/api/core.js
+++ b/src/api/core.js
@@ -1,12 +1,14 @@
// b端的接口, 每次调用前先获取token
import axios from 'axios';
-const baseUrl = process.env.VUE_APP_BASE_API.replace('webapi', 'gateway');
+import { baseApi } from '@/config';
+import prefix from '@/store/prefix';
+const baseUrl = baseApi.replace('webapi', 'gateway');
const service = axios.create({
baseURL: baseUrl
});
service.interceptors.request.use(request => {
- if (localStorage.getItem('gatewayToken')) {
- request.headers.AccessToken = localStorage.getItem('gatewayToken');
+ if (localStorage.getItem(prefix + 'gatewayToken')) {
+ request.headers.AccessToken = localStorage.getItem(prefix + 'gatewayToken');
}
return request;
});
diff --git a/src/assets/css/mixin.scss b/src/assets/css/mixin.scss
index 327b6d4..aaf8601 100644
--- a/src/assets/css/mixin.scss
+++ b/src/assets/css/mixin.scss
@@ -1,4 +1,13 @@
// mixin
+@use "sass:math";
+$background: #f2f4f5;
+$blue: #2599ff;
+$next: #8bc6fa;
+$border_color: #d1d1d1;
+$green: #189b3b;
+$next_green: #8ccd9d;
+$red: #ff8c8c;
+
// 清除浮动
@mixin clearfix {
&:after {
@@ -34,3 +43,71 @@
flex-wrap: $fw;
-webkit-flex-wrap: $fw;
}
+// 雪碧图路径
+/* @mixin icon($spriteUrl) {
+ background: transparent url($spriteUrl) no-repeat;
+ background-size: 400px 400px;
+} */
+@mixin icon {
+ background: transparent url('~@/assets/icon.png') no-repeat;
+ background-size: 400px 400px;
+}
+@mixin bgPosition(
+ $spriteWidth,
+ $spriteHeight,
+ $iconWidth,
+ $iconHeight,
+ $iconX,
+ $iconY
+) {
+ background-position: (
+ math.div($iconX ,($spriteWidth - $iconWidth)) * 100%
+ math.div($iconY,($spriteHeight - $iconHeight)) * 100%
+ );
+}
+
+@mixin icon_position($iconWidth, $iconHeight, $iconX, $iconY) {
+ $spriteWidth: 400;
+ $spriteHeight: 400;
+ @include bgPosition(
+ $spriteWidth,
+ $spriteHeight,
+ $iconWidth,
+ $iconHeight,
+ $iconX,
+ $iconY
+ );
+ }
+ @mixin border {
+ position: absolute;
+ box-sizing: border-box;
+ content: ' ';
+ pointer-events: none;
+ top: -50%;
+ right: -50%;
+ bottom: -50%;
+ left: -50% !important;
+ border-bottom: 1px solid $border_color;
+ -webkit-transform: scale(.5);
+ transform: scale(.5);
+ }
+
+ @mixin colorAndFont($color, $fontSize) {
+ color: $color;
+ font-size: $fontSize + px;
+ }
+
+ @mixin center {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ }
+ @mixin bgimg($path, $width, $height) {
+ background-image: $path;
+ background-size: $width, $height;
+ width: $width + px;
+ height: $height + px;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+}
\ No newline at end of file
diff --git a/src/assets/icon.png b/src/assets/icon.png
new file mode 100644
index 0000000..311bfbc
Binary files /dev/null and b/src/assets/icon.png differ
diff --git a/src/assets/img/callLog.png b/src/assets/img/callLog.png
new file mode 100644
index 0000000..055e1b4
Binary files /dev/null and b/src/assets/img/callLog.png differ
diff --git a/src/assets/img/drownReport.png b/src/assets/img/drownReport.png
new file mode 100644
index 0000000..3489ecf
Binary files /dev/null and b/src/assets/img/drownReport.png differ
diff --git a/src/assets/img/health/blood_icon.png b/src/assets/img/health/blood_icon.png
new file mode 100644
index 0000000..901f1d7
Binary files /dev/null and b/src/assets/img/health/blood_icon.png differ
diff --git a/src/assets/img/health/blood_oxygen.png b/src/assets/img/health/blood_oxygen.png
new file mode 100644
index 0000000..b3c53bb
Binary files /dev/null and b/src/assets/img/health/blood_oxygen.png differ
diff --git a/src/assets/img/health/bulb.png b/src/assets/img/health/bulb.png
new file mode 100644
index 0000000..4aa2fbf
Binary files /dev/null and b/src/assets/img/health/bulb.png differ
diff --git a/src/assets/img/health/gps.png b/src/assets/img/health/gps.png
new file mode 100644
index 0000000..a6607f1
Binary files /dev/null and b/src/assets/img/health/gps.png differ
diff --git a/src/assets/img/health/gps_frequency.png b/src/assets/img/health/gps_frequency.png
new file mode 100644
index 0000000..caeef61
Binary files /dev/null and b/src/assets/img/health/gps_frequency.png differ
diff --git a/src/assets/img/health/health.png b/src/assets/img/health/health.png
new file mode 100644
index 0000000..df0caec
Binary files /dev/null and b/src/assets/img/health/health.png differ
diff --git a/src/assets/img/health/heartRate.png b/src/assets/img/health/heartRate.png
new file mode 100644
index 0000000..f597f82
Binary files /dev/null and b/src/assets/img/health/heartRate.png differ
diff --git a/src/assets/img/health/location.png b/src/assets/img/health/location.png
new file mode 100644
index 0000000..2d1f035
Binary files /dev/null and b/src/assets/img/health/location.png differ
diff --git a/src/assets/img/health/psychological_icon.png b/src/assets/img/health/psychological_icon.png
new file mode 100644
index 0000000..6a92ded
Binary files /dev/null and b/src/assets/img/health/psychological_icon.png differ
diff --git a/src/assets/img/health/report_ frequency.png b/src/assets/img/health/report_ frequency.png
new file mode 100644
index 0000000..e422926
Binary files /dev/null and b/src/assets/img/health/report_ frequency.png differ
diff --git a/src/assets/img/health/rest.png b/src/assets/img/health/rest.png
new file mode 100644
index 0000000..40f8cc0
Binary files /dev/null and b/src/assets/img/health/rest.png differ
diff --git a/src/assets/img/health/right_more.png b/src/assets/img/health/right_more.png
new file mode 100644
index 0000000..50e6a01
Binary files /dev/null and b/src/assets/img/health/right_more.png differ
diff --git a/src/assets/img/health/setting.png b/src/assets/img/health/setting.png
new file mode 100644
index 0000000..0ed7f96
Binary files /dev/null and b/src/assets/img/health/setting.png differ
diff --git a/src/assets/img/health/temperature.png b/src/assets/img/health/temperature.png
new file mode 100644
index 0000000..f0ede62
Binary files /dev/null and b/src/assets/img/health/temperature.png differ
diff --git a/src/assets/img/healthy.png b/src/assets/img/healthy.png
new file mode 100644
index 0000000..ad2cb54
Binary files /dev/null and b/src/assets/img/healthy.png differ
diff --git a/src/assets/img/home/layer.png b/src/assets/img/home/layer.png
new file mode 100644
index 0000000..8179386
Binary files /dev/null and b/src/assets/img/home/layer.png differ
diff --git a/src/assets/img/home/lbs_icon.png b/src/assets/img/home/lbs_icon.png
new file mode 100644
index 0000000..b88553c
Binary files /dev/null and b/src/assets/img/home/lbs_icon.png differ
diff --git a/src/assets/img/home/md-highlight_off.svg b/src/assets/img/home/md-highlight_off.svg
new file mode 100644
index 0000000..d214847
--- /dev/null
+++ b/src/assets/img/home/md-highlight_off.svg
@@ -0,0 +1,6 @@
+
\ No newline at end of file
diff --git a/src/assets/img/home/message.png b/src/assets/img/home/message.png
new file mode 100644
index 0000000..521c2dd
Binary files /dev/null and b/src/assets/img/home/message.png differ
diff --git a/src/assets/img/home/phone.png b/src/assets/img/home/phone.png
new file mode 100644
index 0000000..627c0ac
Binary files /dev/null and b/src/assets/img/home/phone.png differ
diff --git a/src/assets/img/home/spread_left.png b/src/assets/img/home/spread_left.png
new file mode 100644
index 0000000..14640c8
Binary files /dev/null and b/src/assets/img/home/spread_left.png differ
diff --git a/src/assets/img/home/spread_right.png b/src/assets/img/home/spread_right.png
new file mode 100644
index 0000000..f2e0fcb
Binary files /dev/null and b/src/assets/img/home/spread_right.png differ
diff --git a/src/assets/img/home/trajectory.png b/src/assets/img/home/trajectory.png
new file mode 100644
index 0000000..324027b
Binary files /dev/null and b/src/assets/img/home/trajectory.png differ
diff --git a/src/assets/img/home/warning.png b/src/assets/img/home/warning.png
new file mode 100644
index 0000000..db7f732
Binary files /dev/null and b/src/assets/img/home/warning.png differ
diff --git a/src/assets/img/leaveDrownReport.png b/src/assets/img/leaveDrownReport.png
new file mode 100644
index 0000000..c5bf8e3
Binary files /dev/null and b/src/assets/img/leaveDrownReport.png differ
diff --git a/src/assets/img/noWear.png b/src/assets/img/noWear.png
new file mode 100644
index 0000000..47b2f51
Binary files /dev/null and b/src/assets/img/noWear.png differ
diff --git a/src/assets/img/phone_ record.png b/src/assets/img/phone_ record.png
new file mode 100644
index 0000000..c4a696c
Binary files /dev/null and b/src/assets/img/phone_ record.png differ
diff --git a/src/assets/img/prohibition.png b/src/assets/img/prohibition.png
new file mode 100644
index 0000000..e585798
Binary files /dev/null and b/src/assets/img/prohibition.png differ
diff --git a/src/assets/img/spo.png b/src/assets/img/spo.png
new file mode 100644
index 0000000..45fdc35
Binary files /dev/null and b/src/assets/img/spo.png differ
diff --git a/src/assets/img/tooltip-sizing.png b/src/assets/img/tooltip-sizing.png
new file mode 100644
index 0000000..30be8cb
Binary files /dev/null and b/src/assets/img/tooltip-sizing.png differ
diff --git a/src/assets/img/wear.png b/src/assets/img/wear.png
new file mode 100644
index 0000000..aed0abb
Binary files /dev/null and b/src/assets/img/wear.png differ
diff --git a/src/common/amap.js b/src/common/amap.js
new file mode 100644
index 0000000..b96e890
--- /dev/null
+++ b/src/common/amap.js
@@ -0,0 +1,40 @@
+export default function MapLoader(isSyncLoad = false, pluginsArr = []) {
+ // plugin: 字符串数组[ 'AMap.Geocoder', ... ]
+ return new Promise((resolve, reject) => {
+ try {
+ if (window.AMap && (pluginsArr === null || pluginsArr === undefined || pluginsArr.length === 0)) {
+ resolve(window.AMap);
+ } else {
+ var script = document.createElement('script');
+ script.type = 'text/javascript';
+ script.async = !isSyncLoad;
+ script.src = 'https://webapi.amap.com/maps?v=1.4.15&callback=initAMap&key='
+ + '6e4a6c39ea6d18b8dd3151baa3a7c0d5'
+ + '&plugin=AMap.BezierCurveEditor'
+ + (pluginsArr ? ',' + pluginsArr.join(',') : '');
+ script.onerror = reject;
+ document.head.appendChild(script);
+
+ var script1 = document.createElement('script');
+ script1.type = 'text/javascript';
+ script1.async = false;
+ script1.src = 'https://webapi.amap.com/ui/1.0/main.js?v=1.0.11';
+ script1.onerror = reject;
+ if (isSyncLoad) {
+ document.head.appendChild(script1);
+ }
+
+ }
+ window.initAMap = () => {
+ resolve(window.AMap);
+ }
+ // JSAPI key搭配静态安全密钥以明文设置, 详情见: https://lbs.amap.com/api/jsapi-v2/guide/abc/load
+ window._AMapSecurityConfig = {
+ securityJsCode:'6a421e1233cd12dd4899e373e11bb641',
+ }
+ } catch (e) {
+ console.log(e);
+ }
+
+ })
+}
\ No newline at end of file
diff --git a/src/common/own.js b/src/common/own.js
new file mode 100644
index 0000000..de08c2e
--- /dev/null
+++ b/src/common/own.js
@@ -0,0 +1,246 @@
+import { Base64 } from 'js-base64';
+
+function formatTime(date) {
+ let datee = date.toString();
+ return datee.replace(/T/g, ' ').replace(/-/g, '/');
+}
+
+function getNowFormatDate(val, type, flag) {
+ let i = 1 * val;
+ let sp = '-';
+ const oneDay = 24 * 60 * 60 * 1000;
+ let date = new Date(new Date() - -i * oneDay);
+ let year = date.getFullYear();
+ let month = date.getMonth() + 1;
+ let strDate = date.getDate();
+ if (month >= 1 && month <= 9) {
+ month = '0' + month;
+ }
+ if (strDate >= 0 && strDate <= 9) {
+ strDate = '0' + strDate;
+ }
+ if (type == 'year') {
+ return year;
+ } else if (type == 'month') {
+ return year + sp + month;
+ } else {
+ if (flag) {
+ return year + '年' + month + '月' + strDate + '日';
+ }
+ return year + sp + month + sp + strDate;
+ }
+}
+
+// 将时间改为 *分钟前|*小时前|刚刚……
+function translateTime(date) {
+ return getDateDiff(formatTime(date));
+}
+
+function getDateDiff(date) {
+ let minute = 1000 * 60;
+ let hour = minute * 60;
+ let day = hour * 24;
+ // eslint-disable-next-line no-unused-vars
+ let halfamonth = day * 15;
+ let month = day * 30;
+ let result = null;
+
+ var dateTimeStamp = new Date(date);
+ var now = new Date().getTime();
+ var diffValue = now - dateTimeStamp;
+ /* if (diffValue < 0) {
+ console.log('结束日期不能小于开始日期!');
+ console.log(`开始日期:${dateTimeStamp}结束日期:${now}`);
+ console.log(`参数为:${date}`);
+ return 'null'; // TODO 方便测试
+ } */
+ var monthC = diffValue / month;
+ var weekC = diffValue / (7 * day);
+ var dayC = diffValue / day;
+ var hourC = diffValue / hour;
+ var minC = diffValue / minute;
+ if (monthC >= 1) {
+ result = `${parseInt(monthC)}个月前`;
+ } else if (weekC >= 1) {
+ result = `${parseInt(weekC)}周前`;
+ } else if (dayC >= 1) {
+ result = `${parseInt(dayC)}天前`;
+ } else if (hourC >= 1) {
+ result = `${parseInt(hourC)}小时前`;
+ } else if (minC >= 1) {
+ result = `${parseInt(minC)}分钟前`;
+ } else result = '刚刚';
+ return result;
+}
+
+Date.prototype.Format = function (fmt) {
+ 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;
+};
+
+function formatnumber(value, num) {
+ let _value = value.toString();
+ let _dot = _value.indexOf('.');
+ let _valueLen = _value.length;
+ if (num == 0) {
+ if (_dot != -1) {
+ _value = _value.substring(0, _dot);
+ }
+ } else {
+ //如果没有小数点
+ if (_dot == -1) {
+ _value = _value + '.';
+ for (let i = 1; i <= num; i++) {
+ _value = _value + '0';
+ }
+ } else {
+ //有小数点,超出位数自动截取,否则补0
+ _value = _value.substring(0, _dot + num + 1);
+ for (let i = _valueLen; i <= _dot + num; i++) {
+ _value = _value + '0';
+ }
+ }
+ }
+ return _value;
+}
+
+function round(src, pos, type) {
+ //src代表要转化的值,pos表示要保留的位数
+ let num = Math.floor(src * Math.pow(10, pos)) / Math.pow(10, pos);
+ let val = type == 'string' ? formatnumber(num, pos) : parseFloat(formatnumber(num, pos));
+ return val;
+}
+
+/**
+ * 防抖使用,_type,index,item不用管,是changfield的参数
+ * methods: {
+ 改变场数
+ changefield: _debounce(function(_type, index, item) {
+ do something ...
+ }, 200)
+ }
+ */
+// 防抖
+function _debounce(fn, delay) {
+ // eslint-disable-next-line no-redeclare
+ var delay = delay || 200;
+ var timer;
+ return function () {
+ var th = this;
+ var args = arguments;
+ if (timer) {
+ clearTimeout(timer);
+ }
+ timer = setTimeout(function () {
+ timer = null;
+ fn.apply(th, args);
+ }, delay);
+ };
+}
+
+// 节流
+function _throttle(fn, interval) {
+ var last;
+ var timer;
+ // eslint-disable-next-line no-redeclare
+ var interval = interval || 200;
+ return function () {
+ var th = this;
+ var args = arguments;
+ var now = +new Date();
+ /* + 隐式类型转换,通过调用 valueOf() 获取时间戳 */
+ if (last && now - last < interval) {
+ clearTimeout(timer);
+ timer = setTimeout(function () {
+ last = now;
+ fn.apply(th, args);
+ }, interval);
+ } else {
+ last = now;
+ fn.apply(th, args);
+ }
+ };
+}
+
+// base64 编码
+function base64Encode(str, isURI) {
+ if (isURI) {
+ return Base64.encodeURI(str);
+ }
+ return Base64.encode(str);
+}
+
+// base64 解码
+function base64Decode(str) {
+ return Base64.decode(str);
+}
+
+/**
+ * 判断是否为空
+ */
+function isNull(o) {
+ /*return o === null
+ || o === undefined
+ || o === ''
+ || JSON.stringify(o) === '{}'
+ || JSON.stringify(o) === '[]';*/
+ if (o === null || o === undefined || o === '') {
+ return true;
+ // eslint-disable-next-line
+ } else if (Array.prototype.isPrototypeOf(o) && o.length === 0) {
+ return true;
+ // eslint-disable-next-line
+ } else if (Object.prototype.isPrototypeOf(o) && Object.keys(o).length === 0) {
+ return true;
+ }
+ return false;
+}
+
+/**
+ * 判断是否为非空
+ */
+function isNotNull(o) {
+ return !isNull(o);
+}
+
+/**
+ * 清除 localStorage
+ * @param store 要将 $store 传进来
+ */
+function clearLocalStorage(store) {
+ try {
+ for (let k in store.getters) {
+ store.commit(k, '');
+ }
+ } catch (e) {
+ console.log(e);
+ }
+}
+
+export default {
+ formatTime,
+ getDateDiff,
+ getNowFormatDate,
+ translateTime,
+ formatnumber,
+ round,
+ _debounce,
+ _throttle,
+ base64Encode,
+ base64Decode,
+ isNull,
+ isNotNull,
+ clearLocalStorage
+};
diff --git a/src/components/NavBar.vue b/src/components/NavBar.vue
index 12359e5..33a4d9e 100644
--- a/src/components/NavBar.vue
+++ b/src/components/NavBar.vue
@@ -8,7 +8,8 @@
:left-arrow="leftArrow"
@click-left="onClickLeft"
@click-right="onClickRight"
- >
+ >
+
diff --git a/src/components/SubmenuList.vue b/src/components/SubmenuList.vue
index 9b83902..e2bb660 100644
--- a/src/components/SubmenuList.vue
+++ b/src/components/SubmenuList.vue
@@ -21,10 +21,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/config/env.development.js b/src/config/env.development.js
index 7b3f6e2..cff186b 100644
--- a/src/config/env.development.js
+++ b/src/config/env.development.js
@@ -1,8 +1,8 @@
// 本地环境配置
module.exports = {
title: '健康同学',
- baseUrl: 'https://id.ssjlai.com/', // 项目地址
- baseApi: 'https://id.ssjlai.com/', // 本地api请求地址,注意:如果你使用了代理,请设置成'/'
+ baseUrl: 'https://id.ssjlai.com/webapi', // 项目地址
+ baseApi: 'https://id.ssjlai.com/webapi', // 本地api请求地址,注意:如果你使用了代理,请设置成'/'
APPID: 'xxx',
APPSECRET: 'xxx',
$cdn: 'https://www.sunniejs.cn/static'
diff --git a/src/config/env.production.js b/src/config/env.production.js
index 16469bf..c1a8d5b 100644
--- a/src/config/env.production.js
+++ b/src/config/env.production.js
@@ -1,8 +1,8 @@
// 正式
module.exports = {
title: '健康同学',
- baseUrl: 'https://ai.ssjlai.com/', // 正式项目地址
- baseApi: 'https://ai.ssjlai.com/', // 正式api请求地址
+ baseUrl: 'https://ai.ssjlai.com/webapi', // 正式项目地址
+ baseApi: 'https://ai.ssjlai.com/webapi', // 正式api请求地址
APPID: 'xxx',
APPSECRET: 'xxx',
$cdn: 'https://www.sunniejs.cn/static'
diff --git a/src/config/env.test.js b/src/config/env.test.js
index b67dfb0..ab8dbcd 100644
--- a/src/config/env.test.js
+++ b/src/config/env.test.js
@@ -1,7 +1,7 @@
module.exports = {
title: '健康同学',
- baseUrl: 'https://id.ssjlai.com/', // 测试项目地址
- baseApi: 'https://id.ssjlai.com/', // 测试api请求地址
+ baseUrl: 'https://id.ssjlai.com/webapi', // 测试项目地址
+ baseApi: 'https://id.ssjlai.com/webapi', // 测试api请求地址
APPID: 'xxx',
APPSECRET: 'xxx',
$cdn: 'https://www.sunniejs.cn/static'
diff --git a/src/config/models.js b/src/config/models.js
index 35eabf1..8265168 100644
--- a/src/config/models.js
+++ b/src/config/models.js
@@ -85,3 +85,10 @@ export const WxOcrServiceId = {
test: 'wx79ac3de8be320b71',
development: 'wx79ac3de8be320b71'
};
+export const ErrorAMapMsgModel = {
+ OUT_OF_SERVICE: 'OUT_OF_SERVICE', // 使用路径规划服务接口时可能出现该问题,规划点(包括起点、终点、途经点)不在中国陆地范围内
+ NO_ROADS_NEARBY: 'NO_ROADS_NEARBY', // 使用路径规划服务接口时可能出现该问题,划点(起点、终点、途经点)附近搜不到路
+ ROUTE_FAIL: 'ROUTE_FAIL', // 使用路径规划服务接口时可能出现该问题,路线计算失败,通常是由于道路连通关系导致
+ OVER_DIRECTION_RANGE: 'OVER_DIRECTION_RANGE', // 使用路径规划服务接口时可能出现该问题,路线计算失败,通常是由于道路起点和终点距离过长导致
+ NO_DATA: 'NO_DATA' // 此错误在服务接口status='complete'时的result.info值出现,故判断时需要注意(与以上的错误不一样,status!=='complete')
+};
diff --git a/src/main.js b/src/main.js
index 1a9649a..17b3398 100644
--- a/src/main.js
+++ b/src/main.js
@@ -7,10 +7,12 @@ import Vue from 'vue';
import App from './App.vue';
import router from './router';
import store from './store/index';
+import request from './config/request';
// 设置 js中可以访问 $cdn
import { $cdn } from '@/config';
Vue.prototype.$cdn = $cdn;
import dayjs from 'dayjs';
+import own from '@/common/own.js';
// 引入echarts
import * as echarts from 'echarts';
// 全局引入按需引入UI库 vant
@@ -22,6 +24,9 @@ import 'amfe-flexible';
Vue.prototype.$dayjs = dayjs;
Vue.prototype.$echarts = echarts;
Vue.prototype.$store = store;
+Vue.prototype.$own = own;
+Vue.prototype.$axios = request;
+Vue.prototype.$green = '#189b3b';
// filters
import './filters';
diff --git a/src/router/router.config.js b/src/router/router.config.js
index a84d307..4b29081 100644
--- a/src/router/router.config.js
+++ b/src/router/router.config.js
@@ -59,6 +59,162 @@ export const constantRouterMap = [
name: 'addFamilyNumber',
component: () => import('@/views/myself/addFamilyNumber'),
meta: { title: '增加亲情号码', keepAlive: false }
+ },
+ {
+ path: '/sendMessage',
+ name: 'sendMessage',
+ component: () => import('@/views/myself/sendMessage'),
+ meta: { title: '留言', keepAlive: false }
+ },
+ {
+ path: '/callList',
+ name: 'callList',
+ component: () => import('@/views/myself/callList'),
+ meta: { title: '通话记录', keepAlive: false }
+ },
+ {
+ path: '/prohibit',
+ name: 'prohibit',
+ component: () => import('@/views/myself/prohibit'),
+ meta: { title: '上课禁止时段', keepAlive: false }
+ },
+ {
+ path: '/setupProhibitPeriod',
+ name: 'setupProhibitPeriod',
+ component: () => import('@/views/myself/setupProhibitPeriod'),
+ meta: { title: '设置上课禁止时段', keepAlive: false }
+ },
+ {
+ path: '/clock',
+ name: 'clock',
+ component: () => import('@/views/myself/clock'),
+ meta: { title: '闹钟', keepAlive: false }
+ },
+ {
+ path: '/setupClockPeriod',
+ name: 'setupClockPeriod',
+ component: () => import('@/views/myself/setupClockPeriod'),
+ meta: { title: '设置闹钟', keepAlive: false }
+ },
+ {
+ path: '/changePayPassword',
+ name: 'changePayPassword',
+ component: () => import('@/views/myself/changePayPassword'),
+ meta: { title: '修改支付密码', keepAlive: false }
+ },
+ {
+ path: '/messageList',
+ name: 'messageList',
+ component: () => import('@/views/myself/messageList'),
+ meta: { title: '短信代收', keepAlive: false }
+ },
+ {
+ path: '/management',
+ name: 'management',
+ component: () => import('@/views/myself/management'),
+ meta: { title: '亲友关注', keepAlive: false }
+ },
+ {
+ path: '/replace',
+ name: 'replace',
+ component: () => import('@/views/myself/replace'),
+ meta: { title: '管理员转让', keepAlive: false }
+ },
+ {
+ path: '/sleep',
+ name: 'sleep',
+ component: () => import('@/views/myself/sleep'),
+ meta: { title: '休眠设置', keepAlive: false }
+ },
+ {
+ path: '/watchSetting',
+ name: 'watchSetting',
+ component: () => import('@/views/myself/deviceSetting/settingIndex'),
+ meta: { title: '参数设置', keepAlive: false }
+ },
+ {
+ path: '/sceneMode',
+ name: 'sceneMode',
+ component: () => import('@/views/myself/deviceSetting/sceneMode'),
+ meta: { title: '场景模式', keepAlive: false }
+ },
+ {
+ path: '/locationMonitor',
+ name: 'locationMonitor',
+ component: () => import('@/views/myself/deviceSetting/locationMonitor'),
+ meta: { title: '定位监测', keepAlive: false }
+ },
+ {
+ path: '/dangerAreaMonitor',
+ name: 'dangerAreaMonitor',
+ component: () => import('@/views/myself/deviceSetting/dangerAreaMonitor'),
+ meta: { title: '危险区域监测', keepAlive: false }
+ },
+ {
+ path: '/drownWhiteList',
+ name: 'drownWhiteList',
+ component: () => import('@/views/myself/deviceSetting/drownWhiteList'),
+ meta: { title: '免告警水域', keepAlive: false }
+ },
+ {
+ path: '/healthMonitor',
+ name: 'healthMonitor',
+ component: () => import('@/views/myself/deviceSetting/healthMonitor'),
+ meta: { title: '健康监测', keepAlive: false }
+ },
+ {
+ path: '/blood',
+ name: 'blood',
+ component: () => import('@/views/myself/deviceSetting/blood'),
+ meta: { title: '血压监测', keepAlive: false }
+ },
+ {
+ path: '/psychologicalSetting',
+ name: 'psychologicalSetting',
+ component: () => import('@/views/myself/deviceSetting/psychologicalSetting'),
+ meta: { title: '心理监测', keepAlive: false }
+ },
+ {
+ path: '/personInfos',
+ name: 'personInfos',
+ component: () => import('@/views/myself/deviceSetting/personInfos'),
+ meta: { title: '个人资料设置', keepAlive: false }
+ },
+ {
+ path: '/wearMonitor',
+ name: 'wearMonitor',
+ component: () => import('@/views/myself/deviceSetting/wearMonitor'),
+ meta: { title: '佩戴监测', keepAlive: false }
+ },
+ {
+ path: '/setupSleepPeriod',
+ name: 'setupSleepPeriod',
+ component: () => import('@/views/myself/setupSleepPeriod'),
+ meta: { title: '休眠设置', keepAlive: false }
+ },
+ {
+ path: '/help',
+ name: 'help',
+ component: () => import('@/views/myself/help'),
+ meta: { title: '常见问题', keepAlive: false }
+ },
+ {
+ path: '/location',
+ name: 'location',
+ component: () => import('@/views/myself/location'),
+ meta: { title: '定位', keepAlive: false }
+ },
+ {
+ path: '/trajectory',
+ name: 'trajectory',
+ component: () => import('@/views/myself/trajectory'),
+ meta: { title: '轨迹', keepAlive: false }
+ },
+ {
+ path: '/news',
+ name: 'news',
+ component: () => import('@/views/myself/news/news'),
+ meta: { title: '消息', keepAlive: false }
}
]
}
diff --git a/src/services/dialog-service.js b/src/services/dialog-service.js
index f9be8fc..523d160 100644
--- a/src/services/dialog-service.js
+++ b/src/services/dialog-service.js
@@ -12,7 +12,7 @@ let DialogService = {
cancelButtonText
}) {
return Dialog.confirm({
- title: title || '信息提示',
+ title: title || '提示',
message: message || '',
className: className || 'device_confirm',
showCancelButton: showCancelButton || false,
diff --git a/src/views/myself/addFamilyNumber.vue b/src/views/myself/addFamilyNumber.vue
index 2f7a574..72dd66e 100644
--- a/src/views/myself/addFamilyNumber.vue
+++ b/src/views/myself/addFamilyNumber.vue
@@ -532,8 +532,8 @@ export default {
diff --git a/src/views/myself/changeFamilyNumber.vue b/src/views/myself/changeFamilyNumber.vue
index 5c283bb..5b64185 100644
--- a/src/views/myself/changeFamilyNumber.vue
+++ b/src/views/myself/changeFamilyNumber.vue
@@ -573,8 +573,8 @@ export default {
padding: 0 10px;
}
.save {
- width: 100px;
- line-height: 60px;
+ width: 80px;
+ line-height: 40px;
background: #1989fa;
color: #fff;
font-size: 30px;
diff --git a/src/views/myself/changePayPassword.vue b/src/views/myself/changePayPassword.vue
new file mode 100644
index 0000000..d29c06d
--- /dev/null
+++ b/src/views/myself/changePayPassword.vue
@@ -0,0 +1,235 @@
+
+
+
+
+
+
+
+>
diff --git a/src/views/myself/clock.vue b/src/views/myself/clock.vue
new file mode 100644
index 0000000..95807b4
--- /dev/null
+++ b/src/views/myself/clock.vue
@@ -0,0 +1,225 @@
+
+
+
+
+
+
+
+
+
+
+
{{ item.StartTime }}
+
+ {{ data }}
+
+
+
+
+
+
+
+
+
+
您还没有给定位卡设置闹钟,快去添加吧~
+
+
+
+
+
+
+
diff --git a/src/views/myself/deviceSetting/blood.vue b/src/views/myself/deviceSetting/blood.vue
new file mode 100644
index 0000000..dfca15b
--- /dev/null
+++ b/src/views/myself/deviceSetting/blood.vue
@@ -0,0 +1,588 @@
+
+
+
+
+
+
+
+ 保存
+
+
+
+
+
+
+
+
+
+
+
+ 检测周期:
+
+
+
{{ formatInteval(bloodConfig.bloodPressinteval) }}
+
+
+
+
+
+
+ 告警阈值-收缩压:
+
+
+
{{ bloodConfig.systolicmaxvalue }}
+
+
+
+
+
+
+ 修改登记信息
+
+
+
修改
+
+
+
+
+
+
+
+
+
+
+ 设置
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/myself/deviceSetting/dangerAreaMonitor.vue b/src/views/myself/deviceSetting/dangerAreaMonitor.vue
new file mode 100644
index 0000000..054e6af
--- /dev/null
+++ b/src/views/myself/deviceSetting/dangerAreaMonitor.vue
@@ -0,0 +1,1398 @@
+
+
+
+
+
+
+
+ 保存
+
+
+
+
+
+
+
+
+
+
+
+
+ 取消告警时段:
+
+
+
+
+
{{ item.startTime }} - {{ item.endTime }}
+
+
+
+
+
+
+
+
+
+
+
+
+ 检测周期:
+
+
+
{{ drownConfig.intervallvl1 }} + {{ drownConfig.intervallvl2 }}分钟
+
+
+
+
+
+
+ 告警阈值:
+
+
+
{{ drownConfig.warningdistance }}米
+
+
+
+
+
+
+ 涉水停留告警间隔:
+
+
+
{{ drownConfig.reportfreq }}分钟
+
+
+
+
+
+
+ 告警提示持续次数:
+
+
+
{{ drownConfig.warningtimes }}次
+
+
+
+
+
+ 首次告警逗留设置:
+
+
+
{{ drownConfig.delaytimes }}次
+
+
+
+
+
+
+ 时速免告警(≥):
+
+
+
{{ drownConfig.ignorespeed }}公里
+
+
+
+
+
+
+ 免告警水域:
+
+
+
查看
+
+
+
+
+
+
+
+
+
+
+
+
+ 设置
+
+
+
+
+
+
+
+
+
+
+ 水域采集频率修改
+
+
+
+
+
+
+
+
+ 1000米内采集周期为:
+
+
+
{{ drownConfig.intervallvl1 }}分钟
+
+
+
+
+
+ 300米内采集周期为:
+
+
+
{{ drownConfig.intervallvl2 }}分钟
+
+
+
+
+
+
温馨提示:
+
周期越小,告警越及时,也越耗电
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 告警阈值设置
+
+
+
+
+
+
+
请设置多少米内产生告警:
+
+
+
+
+
+
+
+
+
{{ warningDistanceTips }}
+
+
+
+
+
+
+
+
+
+
+
+ 告警提示持续次数
+
+
+
+
+
+
+
请设置告警提示持续次数:
+
设置范围:2~30之间
+
+
+
+
+
+
+
+
+
+
{{ warningtimesTips }}
+
+
+
+
+
+
+
+
+
+
+
+ 首次告警逗留设置
+
+
+
+
+
+
+
请设置首次告警逗留次数:
+
设置范围:1~3之间
+
+
+
+
+
+
+
+
+
{{ delaytimesTips }}
+
+
+
+
+
+
+
+
+
+
+
+ 时速免告警设置
+
+
+
+
+
+
+
请设置时速免告警参数:
+
设置范围:0~20之间
+
+
+
+
+
+
+
+
+
{{ warningSpeedTips }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/myself/deviceSetting/drownWhiteList.vue b/src/views/myself/deviceSetting/drownWhiteList.vue
new file mode 100644
index 0000000..87a4cf2
--- /dev/null
+++ b/src/views/myself/deviceSetting/drownWhiteList.vue
@@ -0,0 +1,199 @@
+
+
+
+
+
+
+
+
+ poiId:{{ item.poiId }}
+
+
+ 水域类型:{{ item.title }}
+
+
+ 水域名称:{{ item.address }}
+
+
+ 设置时间:{{ item.createTime }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/myself/deviceSetting/healthMonitor.vue b/src/views/myself/deviceSetting/healthMonitor.vue
new file mode 100644
index 0000000..c8d496f
--- /dev/null
+++ b/src/views/myself/deviceSetting/healthMonitor.vue
@@ -0,0 +1,1094 @@
+
+
+
+
+
+
+
+ 保存
+
+
+
+
+
+
+
+
+
+
+
+ 检测周期:
+
+
+
{{ healthConfig.bloodinteval }}分钟
+
+
+
+
+
+
+ 告警阈值-收缩压:
+
+
+
{{ healthConfig.bloodmaxvalue }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 检测周期:
+
+
+
{{ formatInteval(healthConfig.temperatureinteval) }}
+
+
+
+
+
+
+ 告警阈值-高温:
+
+
+
{{ healthConfig.temperaturemaxvalue }}度
+
+
+
+
+
+
+ 告警阈值-低温:
+
+
+
{{ healthConfig.temperatureminvalue }}度
+
+
+
+
+
+
+
+
+
+
+
+
+ 检测周期:
+
+
+
{{ formatInteval(healthConfig.heartrateinteval) }}
+
+
+
+
+
+
+ 告警阈值-上限:
+
+
+
{{ healthConfig.heartratemaxvalue }}次
+
+
+
+
+
+
+ 告警阈值-下限:
+
+
+
{{ healthConfig.heartrateminvalue }}次
+
+
+
+
+
+
+
+
+
+
+
+
+ 检测周期:
+
+
+
{{ formatInteval(healthConfig.spo2inteval) }}
+
+
+
+
+
+
+
+ 告警阈值-低于:
+
+
+
{{ healthConfig.spo2minvalue }}%
+
+
+
+
+
+
+
+
+
+
+
+
+ 设置
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/myself/deviceSetting/locationMonitor.vue b/src/views/myself/deviceSetting/locationMonitor.vue
new file mode 100644
index 0000000..a049a1b
--- /dev/null
+++ b/src/views/myself/deviceSetting/locationMonitor.vue
@@ -0,0 +1,407 @@
+
+
+
+
+
+
+
+ 保存
+
+
+
+
+
+
+
+
+
+
+ 检测周期:
+
+
+
{{ sampleinteval }}分钟
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ dialog.title }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/myself/deviceSetting/personInfos.vue b/src/views/myself/deviceSetting/personInfos.vue
new file mode 100644
index 0000000..5601306
--- /dev/null
+++ b/src/views/myself/deviceSetting/personInfos.vue
@@ -0,0 +1,889 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ 设备昵称:
+
+
+
+
+
+
+
+
+ 性别:
+
+
+
{{ unshiftGender(personData.gender) || '请输入' }}
+
+
+
+
+
+
+ 身高(cm):
+
+
+
+
+
+
+
+
+
+
+ 体重(kg):
+
+
+
+
+
+
+
+
+
+ 出生日期:
+
+
+
{{ formatBorndate(handleData(personData.bornDate)) || '请输入' }}
+
+
+
+
+
+
+ 职业:
+
+
+
{{ calcProfession(personData.profession) || '请选择' }}
+
+
+
+
+
+
+ 是否有高血压史:
+
+
+
+
+ 有过
+ 没有
+
+
+
+
+
+
+ 作息是否规律:
+
+
+
+ 是
+ 否
+
+
+
+
+
+
+ 是否受到慢性病困扰:
+
+
+
+ 是
+ 否
+
+
+
+
+
+
+
+
+
+
+
+ 出生日期
+
+
+
+
+
+
+
+
+
+
+
+ {{ dialogTitle }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/myself/deviceSetting/psychologicalSetting.vue b/src/views/myself/deviceSetting/psychologicalSetting.vue
new file mode 100644
index 0000000..6852013
--- /dev/null
+++ b/src/views/myself/deviceSetting/psychologicalSetting.vue
@@ -0,0 +1,1288 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 监测时段:
+
+
+
+
添加时段
+
+
+
+
+
+
+
+
+
+
+ 时段{{ index + 1 }}:
+
+
+
{{ item.startTime }}
+
-
+
{{ item.endTime }}
+
+
+
+
+
+ 时长:
+
+ 小时
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 抑郁等级:
+
+
+
{{ formatReminder(setting.depressive) || '请选择' }}
+
+
+
+
+
+
+ 压力等级:
+
+
+
{{ formatReminder(setting.pressure) || '请选择' }}
+
+
+
+
+
+
+ 疲劳等级:
+
+
+
{{ formatReminder(setting.fatigue) || '请选择' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ dialog.title }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 检测周期
+
+
+
+
+
+
+
请输入时间:
+
+
+
+
+
+
+
+
+
{{ warningDistanceTips }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/myself/deviceSetting/sceneMode.vue b/src/views/myself/deviceSetting/sceneMode.vue
new file mode 100644
index 0000000..feef762
--- /dev/null
+++ b/src/views/myself/deviceSetting/sceneMode.vue
@@ -0,0 +1,223 @@
+
+
+
+
+
+
+
+ 保存
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/myself/deviceSetting/settingIndex.vue b/src/views/myself/deviceSetting/settingIndex.vue
new file mode 100644
index 0000000..a12bafa
--- /dev/null
+++ b/src/views/myself/deviceSetting/settingIndex.vue
@@ -0,0 +1,886 @@
+
+
+
+
+
+
+
+
+
+ {{ item.name }} ({{ item.remark }})
+
+
+
+
+
+
+
+
+
+ {{ item.name }}({{ item.remark }})
+
+
+
{{ item.powerStatus }}
+
+
+
+
+
+
+
+
+ {{ item.name }}({{ item.remark }})
+
+
+
{{ item.powerStatus }}
+
+
+
+
+
+
+
+
+
+ {{ dialog.title }}
+
+
+
+
+
+
+
请选择多少时间上报一次数据:
+
+
+
温馨提示:
+
数字越小,越耗电,请慎重修改
+
+
+
+
+
+
+
+
+
+
+ 监护角色
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/myself/deviceSetting/wearMonitor.vue b/src/views/myself/deviceSetting/wearMonitor.vue
new file mode 100644
index 0000000..925bfba
--- /dev/null
+++ b/src/views/myself/deviceSetting/wearMonitor.vue
@@ -0,0 +1,1168 @@
+
+
+
+
+
+
+
+
+ 保存
+
+
+
+
+
+
+
+
+
+
+ 检测周期:
+
+
+
{{ interval }}分钟
+
+
+
+
+
+
+ 检测时段:
+
+
+
+
+
{{ item.startTime }} - {{ item.endTime }}
+
+
+
+
+
+
+
+
添加时段
+
+
+
+ 监测时段最大可设置10个
+
+
+
+
+
+
+
+
+
+
+
+
+ 提醒时间间隔:
+
+
+
{{ warningInterval }}分钟
+
+
+
+
+
+
+ 提醒次数:
+
+
+
{{ warningTimes }}次
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ dialog.title }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 检测周期
+
+
+
+
+
+
+
请输入时间:
+
+
+
+
+
+
+
+
+
{{ warningDistanceTips }}
+
+
+
+
+
+
+
+
+
+
+
+ 提醒时间间隔
+
+
+
+
+
+
+
请输入提醒时间间隔:
+
设置范围:0~60之间
+
+
+
+
+
+
+
{{ warningIntervalTips }}
+
+
+
+
+
+
+
+
+
+
+
+ 提醒次数
+
+
+
+
+
+
+
请输入提醒次数:
+
设置范围:1~3之间
+
+
+
+
+
+
+
+
+
{{ warningTimesTips }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/myself/help.vue b/src/views/myself/help.vue
new file mode 100644
index 0000000..b439e8d
--- /dev/null
+++ b/src/views/myself/help.vue
@@ -0,0 +1,102 @@
+
+
+
+
+
+
4G电子设备如何激活并绑定?
+
+ 1)首次使用4G电子设备,请按照说明书的流程正确安装好SIM卡,然后按照移动端提示扫描说明书上的二维码完成绑定操作。
+
+
2)已绑定4G电子设备,请按照移动端提示扫描4G电子设备二维码并让管理员在移动端中点击“同意”加入家庭按钮。
+
4G电子设备管理员是谁?
+
+ 默认情况下,4G电子设备管理员是第一个绑定4G电子设备的家庭成员;在“用户列表”界面可以查看当前管理员是谁,管理员可以在此界面下将自己的权限转移给任意一个家庭成员。
+
+
一台手机可以绑定几张4G电子设备,如何绑定更多4G电子设备?
+
一台手机最多可以绑定5张4G电子设备;在移动端我的界面的“添加设备”菜单即可绑定4G电子设备支付。
+
什么是亲情号码?
+
设置为亲情号码则可以给4G电子设备打电话;4G电子设备只能给亲情号码打电话。
+
如何确定4G电子设备充电状态?
+
+ 4G电子设备充电时,会有充电状态提示,充满时也会有充满提示(注意:全新的4G电子设备或长时间不用的4G电子设备刚充电时可能要等待一段时间才会显示充电图标)。
+
+
+
如何判断4G电子设备联网状态?
+
4G电子设备开机后,在屏幕顶部有图标显示联网状态;若联网不正常,请长按电源键5秒重启4G电子设备。
+
4G电子设备如何关机?
+
+ 为保证宝贝使用4G电子设备的安全,4G电子设备端不建议关机操作,需操作关机长按电源键5秒,关机可以通过移动端远程操作。
+
+
4G电子设备能待机多久?
+
+ 4G电子设备电池容量为1000毫安,理想情况下可待机5天,实际续航时间与所在地区网络信号状况及4G电子设备使用频率有关系。
+
+
4G电子设备支持什么SIM卡?
+
4G电子设备支持Nano-SIM卡,支持移动/电信/联通4G-LTE网络;不支持使用剪卡。
+
如何为4G电子设备电话号码充值?
+
根据4G电子设备sim卡类型(移动、电信、联通等)进行充值。
+
4G电子设备支持7天无理由退货吗?
+
支持7天无理由退货。
+
您购买时支付的费用将全额原路退还至您的支付渠道。
+
4G电子设备的定位精度怎么样?
+
室外最高精度可达15米,室内最高精度可达20米。
+
Wifi热点分布、基站信号强弱、建筑物遮挡及天气状况对定位精度会有一定程度影响。
+
通话质量怎么样?
+
4G电子设备通话的效果跟手机基本一样,通话信号质量跟您当地的移动/电信/联通信号有关。
+
智能卡的辐射大吗?
+
+ 4G电子设备打电话时是免提模式,无需紧贴头部,所以对人体的辐射非常小。
+ 经权威认证机构测试,4G电子设备在通话时SAR辐射峰值小于2 W/Kg,低于中国国家标准GB 21288-2007对手机SAR值不超过2
+ W/Kg的要求,请家长们放心给孩子使用。
+
+
+
4G电子设备充电时有哪些注意事项?
+
1)请将4G电子设备置于0度以上的环境中充电,避免低温下充电损伤电池。
+
2)4G电子设备从低电状态到充满,大约需要3小时。
+
+ 3)如果4G电子设备插上充电器很快充满(例如,当前40%电量,花30分钟就已经充满),这是充电虚高现象,请持续充电1小时以上。
+
+
4)4G电子设备电量严重不足并关机,需要持续充电几分钟后才会开机。
+
+
如何绑定支付宝支付?
+
1)手机打开数据,定位,蓝牙,保证手机能连接到公网;
+
2)打开4G电子设备的“支付码”。
+
3)打开手机的支付宝扫码功能,扫“支付码”显示绑定码。
+
4)扫码过程中手机会通过蓝牙与4G电子设备通讯,完成绑定后,则提示绑定成功,则完成绑定。
+
+
+
+
diff --git a/src/views/myself/index.scss b/src/views/myself/index.scss
index 177c930..9f2be58 100644
--- a/src/views/myself/index.scss
+++ b/src/views/myself/index.scss
@@ -11,7 +11,7 @@
.banner {
height: 420px;
width: 100%;
- background-color: greenyellow;
+ background-color: green;
border-radius: 60px;
.top {
height: 320px;
@@ -59,8 +59,9 @@
max-width: 90px;
min-width: 90px;
border-radius: 10px;
- background-color: green;
+ background-color: $green;
@include flexbox(center, center, column, nowrap);
+ color: #fff;
}
}
&.safe-helper {
diff --git a/src/views/myself/index.vue b/src/views/myself/index.vue
index 4eb8ad3..95dcbb9 100644
--- a/src/views/myself/index.vue
+++ b/src/views/myself/index.vue
@@ -32,11 +32,11 @@
-
桂城街道深海路105号平洲桂城广东天波教育科技有限公司
-
纬度:23.0263313634643 经度:113.175114274988
+
{{ currentDevice.address }}
+
纬度: {{ currentDevice.lat }} 经度: {{ currentDevice.lng }}
@@ -77,23 +77,35 @@ export default {
{
imgPath: require('../../assets/logo.png'),
text: '亲情号码',
- bgColor: 'red',
+ bgColor: this.$green,
showType: 'newPage',
routerName: 'familyNumber'
},
- { imgPath: require('../../assets/logo.png'), text: '留言', bgColor: 'green' },
- { imgPath: require('../../assets/logo.png'), text: '通话记录', bgColor: 'red' }
+ {
+ imgPath: require('../../assets/logo.png'),
+ text: '留言',
+ bgColor: this.$green,
+ showType: 'newPage',
+ routerName: 'sendMessage'
+ },
+ {
+ imgPath: require('../../assets/logo.png'),
+ text: '通话记录',
+ bgColor: this.$green,
+ showType: 'newPage',
+ routerName: 'callList'
+ }
]
},
device: {
title: '孩子管理',
list: [
/* { imgPath: require('../../assets/logo.png'), text: '测试设置', bgColor: 'green' },
- { imgPath: require('../../assets/logo.png'), text: '测试设置', bgColor: 'red' },
- { imgPath: require('../../assets/logo.png'), text: '测试设置', bgColor: 'red' },
+ { imgPath: require('../../assets/logo.png'), text: '测试设置', bgColor: 'green' },
+ { imgPath: require('../../assets/logo.png'), text: '测试设置', bgColor: 'green' },
{ imgPath: require('../../assets/logo.png'), text: '留言', bgColor: 'green' },
{ imgPath: require('../../assets/logo.png'), text: '留言', bgColor: 'green' },
- { imgPath: require('../../assets/logo.png'), text: '测试设置', bgColor: 'red' },
+ { imgPath: require('../../assets/logo.png'), text: '测试设置', bgColor: 'green' },
{ imgPath: require('../../assets/logo.png'), text: '留言', bgColor: 'green' },
{ imgPath: require('../../assets/logo.png'), text: '留言', bgColor: 'green' } */
]
@@ -101,39 +113,109 @@ export default {
studyHelper: {
title: '学习助手',
list: [
- { imgPath: require('../../assets/logo.png'), text: '课堂禁用', bgColor: 'green' },
- { imgPath: require('../../assets/logo.png'), text: '课程表', bgColor: 'red' }
+ {
+ imgPath: require('../../assets/logo.png'),
+ text: '课堂禁用',
+ bgColor: this.$green,
+ showType: 'newPage',
+ routerName: 'prohibit'
+ },
+ { imgPath: require('../../assets/logo.png'), text: '课程表', bgColor: 'green' }
]
},
lifeHelper: {
title: '生活助手',
list: [
- { imgPath: require('../../assets/logo.png'), text: '闹钟', bgColor: 'green' },
- { imgPath: require('../../assets/logo.png'), text: '支付密码修改', bgColor: 'red' },
- { imgPath: require('../../assets/logo.png'), text: '短信修改', bgColor: 'red' },
- { imgPath: require('../../assets/logo.png'), text: '亲友关注', bgColor: 'red' }
+ {
+ imgPath: require('../../assets/logo.png'),
+ text: '闹钟',
+ bgColor: this.$green,
+ showType: 'newPage',
+ routerName: 'clock'
+ },
+ {
+ imgPath: require('../../assets/logo.png'),
+ text: '支付密码修改',
+ bgColor: this.$green,
+ showType: 'newPage',
+ routerName: 'changePayPassword'
+ },
+ {
+ imgPath: require('../../assets/logo.png'),
+ text: '短信代收',
+ bgColor: this.$green,
+ showType: 'newPage',
+ routerName: 'messageList'
+ },
+ {
+ imgPath: require('../../assets/logo.png'),
+ text: '亲友关注',
+ bgColor: this.$green,
+ showType: 'newPage',
+ routerName: 'management'
+ }
]
},
paramSetting: {
title: '参数设置',
list: [
- { imgPath: require('../../assets/logo.png'), text: '参数设置', bgColor: 'green' },
- { imgPath: require('../../assets/logo.png'), text: '远程设置', bgColor: 'red' },
- { imgPath: require('../../assets/logo.png'), text: '休眠设置', bgColor: 'red' }
+ {
+ imgPath: require('../../assets/logo.png'),
+ text: '参数设置',
+ bgColor: this.$green,
+ showType: 'newPage',
+ routerName: 'watchSetting'
+ },
+ {
+ imgPath: require('../../assets/logo.png'),
+ text: '远程控制',
+ bgColor: this.$green,
+ showType: 'newDialog',
+ routerName: 'remote'
+ },
+ {
+ imgPath: require('../../assets/logo.png'),
+ text: '休眠设置',
+ bgColor: this.$green,
+ showType: 'newPage',
+ routerName: 'sleep'
+ }
]
},
othersSetting: {
title: '其他设置',
list: [
- { imgPath: require('../../assets/logo.png'), text: '账号安全', bgColor: 'green' },
- { imgPath: require('../../assets/logo.png'), text: '常见问题', bgColor: 'red' },
- { imgPath: require('../../assets/logo.png'), text: '版本信息', bgColor: 'red' },
- { imgPath: require('../../assets/logo.png'), text: '关于我们', bgColor: 'red' },
- { imgPath: require('../../assets/logo.png'), text: '退出登录', bgColor: 'red' }
+ {
+ imgPath: require('../../assets/logo.png'),
+ text: '常见问题',
+ bgColor: this.$green,
+ showType: 'newPage',
+ routerName: 'help'
+ },
+ {
+ imgPath: require('../../assets/logo.png'),
+ text: '版本信息',
+ bgColor: this.$green,
+ showType: 'newDialog',
+ routerName: 'version'
+ },
+ { imgPath: require('../../assets/logo.png'), text: '关于我们', bgColor: 'green' },
+ {
+ imgPath: require('../../assets/logo.png'),
+ text: '退出登录',
+ bgColor: 'green',
+ showType: 'newDialog',
+ routerName: 'logout'
+ }
]
},
- userImg: require('../../assets/logo.png') //用户头像
+ userImg: require('../../assets/logo.png'), //用户头像
+ currentDevice: {
+ address: '',
+ lat: '',
+ lng: ''
+ }
};
},
created() {},
@@ -184,6 +266,7 @@ export default {
});
if (isNotNull(item.devicesList)) {
+ this.currentDevice = { ...item.devicesList[0] };
item.devicesList.forEach(val => {
if (val.deviceId == that.$store.getters.deviceId) {
this.$store.commit('roleUser', val.roleUser);
@@ -201,11 +284,15 @@ export default {
.finally(() => {
ToastService.clear();
});
+ },
+ goMap() {
+ this.$router.push({
+ name: 'location'
+ });
}
}
};
diff --git a/src/views/myself/location.scss b/src/views/myself/location.scss
new file mode 100644
index 0000000..f3371c8
--- /dev/null
+++ b/src/views/myself/location.scss
@@ -0,0 +1,581 @@
+.home {
+
+ overflow: hidden;
+ .map-con {
+ height: calc(100vh - 160px);
+ background-color: $background;
+ padding: 20px;
+ overflow: scroll;
+
+ .areaMask {
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ z-index: 666;
+ }
+
+ .top {
+ width: 100%;
+ position: absolute;
+ top: 100px;
+ left: 0;
+ font-size: 16px;
+ /* 掉线提示语 */
+ .notice-is-online {
+ height: 80px;
+ position: relative;
+ z-index: 11;
+ .van-notice-bar {
+ height: 100%;
+ font-size: 16px;
+ .van-notice-bar__content {
+ font-size: 16px !important;
+ }
+ .van-notice-bar__left-icon {
+ font-size: 16px;
+ }
+ .van-notice-bar__wrap {
+ height: 80px;
+ line-height: 80px;
+ padding-left: 5px;
+ font-size: 16px;
+ }
+ .van-notice-bar__right-icon {
+ font-size: 16px;
+ }
+ }
+ }
+ i.news {
+ position: absolute;
+ right: 30px;
+ top: 30px;
+ width: 70px;
+ height: 70px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ background-color: #fff;
+ border-radius: 50%;
+ z-index: 11;
+
+ &:before {
+ content: '';
+ position: absolute;
+ left: 10px;
+ top: 10px;
+ width: 50px;
+ height: 50px;
+ @include icon;
+ @include icon_position(50, 50, 0, 150);
+ z-index: 8;
+ }
+
+ &.on {
+ &:after {
+ content: '';
+ position: absolute;
+ right: 2px;
+ top: 4px;
+ width: 16px;
+ height: 16px;
+ background: #f35151;
+ border-radius: 50%;
+
+ }
+ }
+ }
+ .shortcuts-container {
+ position: absolute;
+ right: 30px;
+ top: 15vh;
+ width: 110px;
+ padding: 20px 0;
+ background-color: #FFFFFF;
+ border-radius: 55px;
+ box-shadow: 0px 8px 25px 0px rgba(117,124,140,0.48);
+ opacity: 0.9;
+ z-index: 19;
+ .shortcuts {
+ position: relative;
+ border-width: 80%;
+ height: 80px;
+ @include center();
+ flex-direction: column;
+ padding: 10px;
+ margin: 10px 0;
+ /* .van-image {
+ height: 40px;
+ width: 40px;
+ } */
+ .layer {
+ height: 40px;
+ width: 28px;
+ }
+ .trajectory {
+ height: 40px;
+ width: 36px;
+ }
+ .warning {
+ height: 35px;
+ width: 40px;
+ }
+ .message {
+ height: 38px;
+ width: 38px;
+ }
+ .phone {
+ height: 36px;
+ width: 38px;
+ }
+ .spread_right {
+ height: 35px;
+ width: 34px;
+ }
+ .shortcuts-title {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ height: 40px;
+ p {
+ font-size: 24px;
+ line-height: 40px;
+ color: #666;
+ padding-top: 8px;
+ }
+ }
+ }
+ .hide {
+ @include center();
+ }
+ // :nth-child(3)告警消息在哪里就给哪里添加样式 first-child
+ .shortcuts:nth-child(3) {
+ .news {
+ &:before {
+ }
+ &.on {
+ &:after {
+ content: '';
+ position: absolute;
+ right: 1px;
+ top: 4px;
+ width: 16px;
+ height: 16px;
+ background: #f35151;
+ border-radius: 50%;
+
+ }
+ }
+ }
+ }
+ .shortcuts:last-child {
+ border:none;
+ }
+ .shortcuts::after {
+ content: '';
+ width: 20px;
+ height: 1px;
+ display: block;
+ margin: 0 auto;
+ border-bottom: 1px solid rgba(151, 151, 151, 0.1);
+ }
+ }
+ .shortcuts-hide {
+ position: absolute;
+ right: 0;
+ top: 60vh;
+ height: 68px;
+ width: 129px;
+ background-color: #FFFFFF;
+ z-index: 19;
+ padding: 19px 0;
+ border-top-left-radius: 53px;
+ border-bottom-left-radius: 53px;
+ box-shadow: 0px 8px 25px 0px rgba(117,124,140,0.48);
+ opacity: 0.9;
+ p {
+ font-size: 24px;
+ margin: 0 34px 0 46px;
+ }
+ i {
+ /* @include icon_position(50, 50, 50, 200); */
+ background: no-repeat;
+ margin: 5px 42px 0 53px;
+ @include bgimg(url('../..//assets/img/home/spread_left.png'), 34, 35);
+ }
+ }
+ .noData {
+ position: absolute;
+ left: 0;
+ width: 100%;
+ height: 70px;
+ @include center();
+ @include colorAndFont(#ff9625, 28);
+ background-color: #ffe9d2;
+ z-index: 12;
+ }
+ .imgArea {
+ position: absolute;
+ top: 20px;
+ left: 20px;
+ padding: 8px;
+ display: flex;
+ justify-content: flex-start;
+ align-items: center;
+ background: #fff;
+ border-radius: 50px;
+ z-index: 13;
+
+
+ img {
+ width: 60px !important;
+ height: 60px !important;
+ border-radius: 50%;
+ object-fit: cover;
+ }
+
+ span {
+ padding: 0 12px;
+ @include colorAndFont(#333, 28);
+ }
+ }
+
+ .conArea {
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 100%;
+ padding: 12px 0 12px 20px;
+ background: #fff;
+ box-sizing: border-box;
+ display: flex;
+ transform: translateX(-100%);
+ transition: left .4s ease-in-out;
+ z-index: 667;
+ overflow: scroll;
+
+ &.active {
+ transform: translateX(0);
+ }
+
+ .list {
+ @include center();
+ flex-flow: column;
+ @include colorAndFont(#333, 24);
+ margin-right: 28px;
+
+ .Myname {
+ &.active {
+ text-decoration: underline;
+ font-weight: bold;
+ }
+ }
+
+ .imgA {
+ width: 100px;
+ height: 100px;
+ background: #c5c5c5;
+ border-radius: 50%;
+ position: relative;
+ @include center();
+ margin-bottom: 12px;
+
+
+
+ &>img {
+ width: 88px;
+ height: 88px;
+ border-radius: 50%;
+ object-fit: cover;
+ }
+
+ &.active {
+ width: 105px;
+ height: 105px;
+ position: relative;
+ background: #c5c5c5;
+ box-shadow: 0 0 10px 4px rgba(185, 185, 185, 0.8);
+
+ &:after {
+ content: '';
+ position: absolute;
+ bottom: -15px;
+ width: 0;
+ height: 0;
+ border-top: 16px solid #c5c5c5;
+ border-left: 8px solid transparent;
+ border-right: 8px solid transparent;
+ }
+ }
+
+ &.online {
+ background: #5fcc0e;
+
+ &.active {
+ position: relative;
+ background: #5fcc0e;
+ box-shadow: 0 0 10px 4px rgba(95, 204, 14, 0.8);
+
+ &:after {
+ content: '';
+ position: absolute;
+ bottom: -15px;
+ width: 0;
+ height: 0;
+ border-top: 16px solid #5fcc0e;
+ border-left: 8px solid transparent;
+ border-right: 8px solid transparent;
+ }
+ }
+ }
+ }
+
+ }
+ }
+ }
+
+ .bottom {
+ width: 100%;
+ position: fixed;
+ left: 0;
+ bottom: 0;
+ z-index: 600;
+ box-shadow: 0 0 20px rgba(185, 185, 185, 0.4);
+
+ .conArea {
+ position: relative;
+
+ .toggle {
+ position: absolute;
+ left: 20px;
+ // top: px2rem(-238);
+ top: -154px;
+ width: 84px;
+ background: #fff;
+ border-radius: 10px;
+ @include center();
+ flex-flow: column;
+
+ span {
+ width: 84px;
+ height: 92px;
+ @include center();
+
+ i {
+ width: 50px;
+ height: 50px;
+ @include icon;
+ @include icon_position(50, 50, 0, 200);
+
+ &.tole {
+ @include icon_position(50, 50, 300, 100);
+ }
+ }
+
+ // &:last-child i {
+ // @include icon_position(50, 50, 0, 300);
+
+ // &.on {
+ // -webkit-transform: rotate(360deg);
+ // animation: rotation 1s linear infinite;
+ // -moz-animation: rotation 1s linear infinite;
+ // -webkit-animation: rotation 1s linear infinite;
+ // -o-animation: rotation 1s linear infinite;
+ // }
+ // }
+
+ }
+ }
+ .con {
+ margin-bottom: 5px;
+ padding: 20px 0 0 28px;
+ // min-height: px2rem(184);
+ background: #fff;
+ border-radius: 24px 24px 0 0;
+ // box-shadow: 0 5px 4px palegoldenrod;
+
+ .title {
+ width: 600px;
+ @include colorAndFont(#333, 34);
+ margin-bottom: 36px;
+ }
+
+ .adr {
+ // @include colorAndFont(#999, 28);
+ // padding-right: px2rem(140);
+ // margin-bottom: 36px;
+
+ span {
+ margin-left: 15px;
+ padding: 0 8px;
+ height: 30px;
+ @include colorAndFont(#999, 20);
+ background: #fafafa;
+ border: 1px solid #b5b5b5;
+ border-radius: 4px;
+ }
+ }
+
+ .states {
+ display: flex;
+ justify-content: flex-start;
+ align-items: center;
+
+ span {
+ display: flex;
+ justify-content: flex-start;
+ align-items: center;
+ @include colorAndFont(#999, 24);
+
+ em {
+ position: relative;
+ margin-right: 10px;
+ padding: 1px;
+ width: 34px;
+ height: 20px;
+ border: 2px solid #5fcc0e;
+ border-radius: 4px;
+ box-sizing: border-box;
+ display: flex;
+ align-items: center;
+
+ i {
+ content: '';
+ width: 100%;
+ height: 100%;
+ background: #5fcc0e;
+ }
+
+ &:after {
+ content: ' ';
+ width: 4px;
+ height: 8px;
+ background: #5fcc0e;
+ position: absolute;
+ right: -4px;
+ }
+
+ &.red {
+ @include center();
+ border-color: #ff4b21;
+ background: transparent;
+
+ i {
+ width: 11px;
+ height: 14px;
+ @include icon;
+ @include icon_position(11, 14, 20, 125);
+ }
+
+ &:after {
+ background: #ff4b21;
+ }
+ }
+
+ &.warn {
+ justify-content: flex-start;
+ border-color: #ff4b21;
+ background: transparent;
+
+ i {
+ background: #ff4b21;
+ }
+
+ &:after {
+ background: #ff4b21;
+ }
+ }
+ }
+
+ &:first-child {
+ color: $blue;
+ margin-right: 24px;
+ // &:before {
+ // content: '';
+ // margin-right: 10px;
+ // display: inline-block;
+ // width: 42px;
+ // height: px2rem(26);
+ // background: #ff8c8c;
+ // }
+ }
+ }
+ }
+
+ .operate {
+ position: absolute;
+ right: 40px;
+ top: -50px;
+ display: flex;
+ justify-content: flex-start;
+ align-items: center;
+ flex-flow: column;
+
+ span {
+ width: 84px;
+ height: 84px;
+ background: #fff;
+ border-radius: 50%;
+ margin-top: 4px;
+ margin-bottom: 20px;
+ box-shadow: 0 0 14px 2px rgba(150, 150, 150, 0.4);
+ @include center();
+
+ i {
+ width: 50px;
+ height: 50px;
+ @include icon;
+ @include icon_position(50, 50, 0, 300);
+ }
+
+ &.position {
+ background: $blue;
+ box-shadow: 0 0 14px 2px rgba(37, 153, 255, 0.4);
+ i {
+ @include icon_position(50, 50, 0, 350);
+
+ &.on {
+ -webkit-transform: rotate(360deg);
+
+ animation: rotation 1s linear infinite;
+
+ -moz-animation: rotation 1s linear infinite;
+
+ -webkit-animation: rotation 1s linear infinite;
+
+ -o-animation: rotation 1s linear infinite;
+ }
+ }
+ .interval-time {
+ @include colorAndFont(#eee, 24);
+ }
+ .icon-loading {
+ /* position: absolute;
+ top: 0;
+ left: 0; */
+ height: 40px;
+ width: 40px;
+ .van-loading__circular {
+ background: #3296fa;
+ }
+ }
+ }
+ }
+
+ em {
+ font-style: normal;
+ @include colorAndFont(#999, 20);
+ }
+ }
+ }
+ }
+
+
+
+ .tarbar {
+ position: relative;
+ }
+ }
+}
+}
diff --git a/src/views/myself/location.vue b/src/views/myself/location.vue
new file mode 100644
index 0000000..70f02f3
--- /dev/null
+++ b/src/views/myself/location.vue
@@ -0,0 +1,1705 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{
+ currentDevice.nickName == null || currentDevice.nickName == ''
+ ? (currentDevice.serialNo || '').slice(-3)
+ : currentDevice.nickName
+ }}
+
切换
+
+
+
+
+
+
+
+
+ {{ item.nickName == null || item.nickName == '' ? item.serialNo.slice(-3) : item.nickName }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
当前位置采用基站定位方式,可以刷新定位
+
+
+
+
+
+
+
+
+
{{ currentDevice.address }}(附近)
+
+
+
+
+
+ {{ currentDevice.deviceStatus.battery > 0 ? `${currentDevice.deviceStatus.battery}%` : '0%' }}
+
+ {{
+ this.timeToText(currentDevice.positionTime) || ''
+ }}
+
+
+
+
+
+
+
+
+
+ 刷新定位
+
+
+
+
+
+
+
+
+
+ 请点击,绑定设备
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/myself/management.vue b/src/views/myself/management.vue
new file mode 100644
index 0000000..0e5656d
--- /dev/null
+++ b/src/views/myself/management.vue
@@ -0,0 +1,260 @@
+
+
+
+
+
+
+
+
+
+
+ {{ item.relationName }}
+ ({{ item.userName }})
+
+ {{ item.userMobile }}
+
+ (管理员)
+
+
+
+
+
+
+
+
diff --git a/src/views/myself/messageList.vue b/src/views/myself/messageList.vue
new file mode 100644
index 0000000..f6cec1f
--- /dev/null
+++ b/src/views/myself/messageList.vue
@@ -0,0 +1,227 @@
+
+
+
+
宝贝暂时还没有短信记录~
+
+
+
+
+
+ 选项
+ 内容 {{ tabActive }}
+
+
+ 选项
+ 内容 {{ tabActive }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 发送方:
+ {{ item.sendNumber || '' }}
+
+
+
+ {{ item.createTime || '' }}
+
+
+
+
+ {{ item.smsContent || '' }}
+
+
+
+
+ 接收方:{{ item.receiveNumber || '' }}
+
+
+ 宝贝{{ item.readFlag ? '已读' : '未读' }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/myself/news/news.vue b/src/views/myself/news/news.vue
new file mode 100644
index 0000000..7f1daf4
--- /dev/null
+++ b/src/views/myself/news/news.vue
@@ -0,0 +1,435 @@
+
+
+
+
+
+
+
+
+ {{ new Date($own.formatTime(item.time)).Format('MM月dd日 hh:mm') }}
+
+
+
+
+
+
+
{{ formatClass(item.typeName, true) }}
+
{{ new Date($own.formatTime(item.time)).Format('yyyy-MM-dd hh:mm:ss') }}
+
{{ item.message }}
+
+
+ 详情
+
+
+
+
+
+
暂无消息~
+
+
+
+
+
+
diff --git a/src/views/myself/prohibit.vue b/src/views/myself/prohibit.vue
new file mode 100644
index 0000000..8bd0ba3
--- /dev/null
+++ b/src/views/myself/prohibit.vue
@@ -0,0 +1,252 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ item.StartTime }}-{{ item.EndTime }}
+
+ {{ data }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
课堂免打扰时段不能使用设备,也不能呼入电话及无响铃
+
+
+
+
+
您还没有给定位卡设置禁用时段,快去添加吧~
+
+
请点击右上角“+”号添加课堂免打扰时段。
+
课堂免打扰时段不能使用设备,也不能呼入电话及无响铃
+
+
+
+
+
+
+
+
diff --git a/src/views/myself/replace.vue b/src/views/myself/replace.vue
new file mode 100644
index 0000000..23c104a
--- /dev/null
+++ b/src/views/myself/replace.vue
@@ -0,0 +1,321 @@
+
+
+
+
+
+
+
+
+
+ {{ item.relationName }}
+ ({{ item.userName }})
+
+ {{ item.userMobile }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/myself/sendMessage.vue b/src/views/myself/sendMessage.vue
new file mode 100644
index 0000000..d8f7527
--- /dev/null
+++ b/src/views/myself/sendMessage.vue
@@ -0,0 +1,157 @@
+
+
+
+
+
+
+ {{ this.num }}/70
+
+
发送
+
+
+
+
+
diff --git a/src/views/myself/setupClockPeriod.vue b/src/views/myself/setupClockPeriod.vue
new file mode 100644
index 0000000..28e3d2b
--- /dev/null
+++ b/src/views/myself/setupClockPeriod.vue
@@ -0,0 +1,317 @@
+/* * @Author: chenjinxu * @Date: 2021-04-15 10:48:22 * @Last Modified by: chenjinxu * @Last Modified time: 2021-05-06
+18:55:52 */
+
+
+
+
+ 保存
+
+
+
+
+
+
+ {{ item.value.slice(1, 3) }}
+ 不勾选周期时默认为一次性闹钟
+
+
+
+
+
+
+
+
+
diff --git a/src/views/myself/setupProhibitPeriod.vue b/src/views/myself/setupProhibitPeriod.vue
new file mode 100644
index 0000000..c7c4d08
--- /dev/null
+++ b/src/views/myself/setupProhibitPeriod.vue
@@ -0,0 +1,443 @@
+
+
+
+ 保存
+
+
+
+
+
+
+
+
+
+
+ {{ item.value.slice(1, 3) }}
+ 至少选一个周期
+
+
+
+
+
+
+
+
diff --git a/src/views/myself/setupSleepPeriod.vue b/src/views/myself/setupSleepPeriod.vue
new file mode 100644
index 0000000..0e2982f
--- /dev/null
+++ b/src/views/myself/setupSleepPeriod.vue
@@ -0,0 +1,237 @@
+
+
+
+ 保存
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/myself/sleep.vue b/src/views/myself/sleep.vue
new file mode 100644
index 0000000..596461f
--- /dev/null
+++ b/src/views/myself/sleep.vue
@@ -0,0 +1,239 @@
+
+
+
+
+
+
+
+
+
+
+
+
{{ item.StartTime }}-{{ item.EndTime }}
+
+
+
+
+
+
+
+
+
+
休眠时间段:期间会自动切断网络,但有呼入电话或者亮屏设备时自动结束休眠
+
+
+
+
+
您还没有给定位卡设置休眠时段,赶紧去添加吧~
+
+
请点击右上角“+”号添加休眠时段。
+
休眠时间段:期间会自动切断网络,但有呼入电话或者亮屏设备时自动结束休眠
+
+
+
+
+
+
+
+
diff --git a/src/views/myself/trajectory.scss b/src/views/myself/trajectory.scss
new file mode 100644
index 0000000..0e433e5
--- /dev/null
+++ b/src/views/myself/trajectory.scss
@@ -0,0 +1,50 @@
+.calendar {
+ position: relative;
+ width: 100%;
+ height: 500px;
+ background-color: #fff;
+ z-index: 999;
+ .van-calendar {
+ .van-calendar__header {
+ box-shadow: unset;
+
+ .van-calendar__header-title {
+ display: none;
+ }
+
+ .van-calendar__month-title {
+ display: none;
+ @include colorAndFont(#333, 16);
+ padding: 20px 0 10px;
+ }
+
+ .van-calendar__weekdays {
+ span {
+ @include colorAndFont(#666, 14);
+ padding: 25px 0;
+ }
+ }
+ }
+
+ .van-calendar__month-title {
+ @include colorAndFont(#666, 14);
+ }
+
+ .van-calendar__days {
+ .van-calendar__day {
+ @include colorAndFont(#666, 14);
+ height: 35px;
+
+ .van-calendar__selected-day {
+ width: 27px;
+ height: 27px;
+ border-radius: 50%;
+ }
+ }
+
+ .van-calendar__day--disabled {
+ color: #c8c9cc;
+ }
+ }
+ }
+ }
\ No newline at end of file
diff --git a/src/views/myself/trajectory.vue b/src/views/myself/trajectory.vue
new file mode 100644
index 0000000..86ef401
--- /dev/null
+++ b/src/views/myself/trajectory.vue
@@ -0,0 +1,2203 @@
+
+
+
+
+
+
+
+
+
+
+ 时间
+
+
+ {{ initTimePick.initStartTime }}
+
+ {{ initTimePick.initEndTime }}
+
+
+
+
+
+
+
+ {{ new Date(date).Format('yyyy年MM月dd日') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
暂无地址信息
+
+
+
{{ item.address ? item.address + '(附近)' : '暂无位置信息' }}
+
+
+ {{ item.s_time.split(' ')[1] }}
+ ~
+ {{ item.repeat_last_time.split(' ')[1] }}
+
+
+ {{ item.time.split(' ')[1] }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/myself/week.vue b/src/views/myself/week.vue
new file mode 100644
index 0000000..ae4a4a2
--- /dev/null
+++ b/src/views/myself/week.vue
@@ -0,0 +1,141 @@
+
+
+
+
+
+
diff --git a/vue.config.js b/vue.config.js
index 81ad259..73d41a9 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -45,7 +45,7 @@ module.exports = defineConfig({
lintOnSave: !IS_PROD,
productionSourceMap: false, // 如果你不需要生产环境的 source map,可以将其设置为 false 以加速生产环境构建。
devServer: {
- port: 9020, // 端口
+ port: 8080, // 端口
open: false, // 启动后打开浏览器
client: {
overlay: {