From 055b87996dee5bbbc805002bf6cc58b8ba7b5c3f Mon Sep 17 00:00:00 2001
From: wally <18603454788@163.com>
Date: Wed, 15 Jul 2020 09:52:32 +0800
Subject: [PATCH] init
---
App.vue | 59 +-
README.md | 111 ++++
{config/api => api}/base.js | 0
api/user.js | 5 +
common/script/filters.js | 24 -
common/script/util.js | 34 --
common/style/iconfont.scss | 88 ---
components/auth/auth.vue | 105 ----
components/history-map/history-map.vue | 45 --
components/nav-bottom/nav-bottom.vue | 42 --
components/rattenking-dtpicker/GetDate.js | 167 ------
.../rattenking-dtpicker.vue | 221 -------
components/rattenking-dtpicker/readme.md | 69 ---
components/school-map/school-map.vue | 102 ----
components/test/test.vue | 19 +
components/timeline/timeline.vue | 44 --
components/uni-calendar/calendar.js | 546 -----------------
components/uni-calendar/uni-calendar-item.vue | 152 -----
components/uni-calendar/uni-calendar.vue | 434 --------------
components/uni-calendar/util.js | 327 ----------
.../uni-segmented-control.vue | 124 ----
components/user-agreement/user-agreement.vue | 103 ----
config/api/api.js | 49 --
config/api/user.js | 10 -
package.json | 4 +-
pages.json | 80 +--
pages/add-stroke/add-stroke.vue | 291 ---------
.../components/end-date-selector.vue | 73 ---
.../components/start-date-selector.vue | 73 ---
pages/apply-code/apply-code.vue | 489 ---------------
pages/basic-info/basic-info.vue | 281 ---------
pages/get-code/get-code.vue | 238 --------
pages/index/components/home.vue | 175 ------
pages/index/components/mine.vue | 100 ----
pages/index/index.vue | 78 +--
pages/my-code/my-code.vue | 175 ------
pages/my-signs/my-signs.vue | 157 -----
pages/my-trips/my-trips.vue | 195 ------
pages/privacy-aolicy/privacy-aolicy.vue | 398 -------------
pages/punch-the-clock/punch-the-clock.vue | 559 ------------------
pages/service-agreement/service-agreement.vue | 79 ---
pages/sign/sign.vue | 143 -----
pages/statistics/components/date-selector.vue | 124 ----
pages/statistics/components/health-data.vue | 90 ---
pages/statistics/components/location-map.vue | 57 --
pages/statistics/statistics.vue | 80 ---
pages/user-code/user-code.vue | 196 ------
plugins/request/index.js | 4 +-
static/head-portrait.png | Bin 20457 -> 0 bytes
static/img/home.png | Bin 2637 -> 0 bytes
static/img/homeHL.png | Bin 2196 -> 0 bytes
static/img/shanda1.png | Bin 134814 -> 0 bytes
static/img/shanda2.png | Bin 212153 -> 0 bytes
static/img/user.png | Bin 4793 -> 0 bytes
static/img/userHL.png | Bin 4214 -> 0 bytes
store/index.js | 5 +-
store/modules/site/actions.js | 74 ---
store/modules/site/index.js | 5 -
store/modules/site/mutations.js | 21 -
store/modules/site/state.js | 6 -
store/modules/statistics/actions.js | 79 ---
store/modules/statistics/index.js | 5 -
store/modules/statistics/mutations.js | 36 --
store/modules/statistics/state.js | 12 -
store/modules/user/actions.js | 138 +----
store/modules/user/mutations.js | 58 --
store/modules/user/state.js | 5 -
vue.config.js | 3 +-
68 files changed, 152 insertions(+), 7314 deletions(-)
create mode 100644 README.md
rename {config/api => api}/base.js (100%)
create mode 100644 api/user.js
delete mode 100644 common/script/filters.js
delete mode 100644 common/script/util.js
delete mode 100644 components/auth/auth.vue
delete mode 100644 components/history-map/history-map.vue
delete mode 100644 components/nav-bottom/nav-bottom.vue
delete mode 100644 components/rattenking-dtpicker/GetDate.js
delete mode 100644 components/rattenking-dtpicker/rattenking-dtpicker.vue
delete mode 100644 components/rattenking-dtpicker/readme.md
delete mode 100644 components/school-map/school-map.vue
create mode 100644 components/test/test.vue
delete mode 100644 components/timeline/timeline.vue
delete mode 100644 components/uni-calendar/calendar.js
delete mode 100644 components/uni-calendar/uni-calendar-item.vue
delete mode 100644 components/uni-calendar/uni-calendar.vue
delete mode 100644 components/uni-calendar/util.js
delete mode 100644 components/uni-segmented-control/uni-segmented-control.vue
delete mode 100644 components/user-agreement/user-agreement.vue
delete mode 100644 config/api/api.js
delete mode 100644 config/api/user.js
delete mode 100644 pages/add-stroke/add-stroke.vue
delete mode 100644 pages/add-stroke/components/end-date-selector.vue
delete mode 100644 pages/add-stroke/components/start-date-selector.vue
delete mode 100644 pages/apply-code/apply-code.vue
delete mode 100644 pages/basic-info/basic-info.vue
delete mode 100644 pages/get-code/get-code.vue
delete mode 100644 pages/index/components/home.vue
delete mode 100644 pages/index/components/mine.vue
delete mode 100644 pages/my-code/my-code.vue
delete mode 100644 pages/my-signs/my-signs.vue
delete mode 100644 pages/my-trips/my-trips.vue
delete mode 100644 pages/privacy-aolicy/privacy-aolicy.vue
delete mode 100644 pages/punch-the-clock/punch-the-clock.vue
delete mode 100644 pages/service-agreement/service-agreement.vue
delete mode 100644 pages/sign/sign.vue
delete mode 100644 pages/statistics/components/date-selector.vue
delete mode 100644 pages/statistics/components/health-data.vue
delete mode 100644 pages/statistics/components/location-map.vue
delete mode 100644 pages/statistics/statistics.vue
delete mode 100644 pages/user-code/user-code.vue
delete mode 100644 static/head-portrait.png
delete mode 100644 static/img/home.png
delete mode 100644 static/img/homeHL.png
delete mode 100644 static/img/shanda1.png
delete mode 100644 static/img/shanda2.png
delete mode 100644 static/img/user.png
delete mode 100644 static/img/userHL.png
delete mode 100644 store/modules/site/actions.js
delete mode 100644 store/modules/site/index.js
delete mode 100644 store/modules/site/mutations.js
delete mode 100644 store/modules/site/state.js
delete mode 100644 store/modules/statistics/actions.js
delete mode 100644 store/modules/statistics/index.js
delete mode 100644 store/modules/statistics/mutations.js
delete mode 100644 store/modules/statistics/state.js
diff --git a/App.vue b/App.vue
index c503477..f22c7d6 100644
--- a/App.vue
+++ b/App.vue
@@ -1,68 +1,11 @@
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..f49a92d
--- /dev/null
+++ b/README.md
@@ -0,0 +1,111 @@
+# uni-templete使用说明
+
+## 环境准备
+
++ 使用HbuilderX作为构建开发环境, 主要使用HX的编译环境, 也可以使用vscode编码 + HX编译的搭配
++ HX需要安装插件
+ + es6编译
+ + Eslint-js
+ + Eslint-plugin-vue
+ + git
+ + prettier
+ + **Scss/sass编译**
++ 微信小程序开发工具
++ appId申请
+
+## 目录说明
+
++ **api**
+
+ + api接口统一管理文件夹,不允许在组件中直接定义api地址,必须在api文件夹下进行统一管理
+ + 不同的模块,分成不同的js文件进行管理
+ + 采用`export const signin = params => http.post('/api/xxx', params);`格式,封装请求方法及请求地址,方便统一管理
+
++ **colorui** colorui样式库引入,如果不需要直接删除,注意删除app.vue里的引用
+
++ **common** 存放公用的css js font等文件,工具类js建议封装到utils文件里
+
++ **components**
+
+ + 组件存放文件夹
+ + 统一格式 `组件/组件.vue ` 文件夹与组件同名,在页面或组件中引入就不用再`import`和在`components`注册了
+ + 如果是某个组件特用的子组件,确定不公用的情况下,建议封装到 `组件/components`文件夹里
+
++ **config** 配置信息文件,一些复杂对象或复杂数组的配置信息,不要在组件内直接定义,公用的建议提到config文件夹下(分模块管理),确定非公用的直接写到组件的文件夹内部即可
+
++ **pages** 页面存放目录
+
++ **plugins** 插件,request插件是封装的类似axios请求处理插件,跟axios用法一致,**注意返回值**:成功的返回对象是res.data.data,失败的返回值是res.data.msg,可根据后台接口对应修改。请求做了header里的token处理
+
++ **static** 存放静态文件
+
++ **store** vuex文件,注意分模块处理,参考模板中的user,组件中使用store文件时,优先使用mapState等解构方法
+
++ **utils** 公用工具类,注意分模块,如:`ui.js` `time.js` ` query.js`等
+
++ **.eslintrc.js** eslint代码格式检测配置文件
+
++ **.gitignore** 上传git仓库忽略的文件
+
++ **.prettierrc** prettier自动格式化代码风格的插件配置文件
+
++ App.vue 入口文件
+
++ Main.js 入口文件
+
++ **Manifest.json** 项目配置文件
+
++ **package.json** 项目中有使用到npm包,初始时先运行`npm i`
+
++ **uni.scss** scss样式遍历定义文件,在组件中可直接使用其变量而不需要导入
+
++ **Vue.config.js** vue配置文件,定义了常用的alias,使用时尽量使用alias的绝对路径代替相对路径,如:`api/user.js`代替`./api/user.js`
+
+ ```js
+ '~': __dirname,
+ config: resolve('config'),
+ api: resolve('api'),
+ store: resolve('store'),
+ components: resolve('components'),
+ pages: resolve('pages'),
+ common: resolve('common'),
+ plugins: resolve('plugins'),
+ utils: resolve('utils'),
+ ```
+
+
+
+## scss
+
++ 使用scss代替css样式
++ HX必须要安装`scss插件`
++ 项目开发前应该先定义好uni.scss里的变量,统一引用这里的变量,有利用界面风格统一及后期维护
+
+[官方文档uni.scss](https://uniapp.dcloud.io/collocation/uni-scss)
+
+## 约定
+
++ Package.json里内置了时间处理插件`moment.js`,统一使用`moment.js`进行时间处理
+
++ 使用scss进行样式开发
+
++ 样式变量(颜色,字体大小,间距等)统一定义到`uni.scss`文件里
+
++ 尽量使用alias定义的绝对路径代替相对路径,如:`api/user.js`代替`./api/user.js`
+
++ 保持代码风格统一,建议使用vscode + prettier插件,自动格式化代码
+
++ 代码提交前,进行lint检测,不允许有eslint未通过提交的情况
+
++ `components`里的组件统一格式 `组件/组件.vue ` 文件夹与组件同名,在页面或组件中引入就不用再`import`和在`components`注册了
+
++ 页面及组件中分割出来的子组件,确定不公用的情况下,建议封装到 `组件/components`文件夹里
+
++ 一些复杂对象或复杂数组的配置信息,不要在组件内直接定义,公用的建议提到config文件夹下(分模块管理),确定非公用的直接写到组件的文件夹内部即可
+
++ api 参考上文目录说明中的api项
+
++ git提交规范参考前端规范里的代码提交规范
+
+ https://kdocs.cn/l/saAjmwvzT?f=130
+ [文档] 1-前端技术规范-v1.0-20200618.docx
\ No newline at end of file
diff --git a/config/api/base.js b/api/base.js
similarity index 100%
rename from config/api/base.js
rename to api/base.js
diff --git a/api/user.js b/api/user.js
new file mode 100644
index 0000000..0959abc
--- /dev/null
+++ b/api/user.js
@@ -0,0 +1,5 @@
+const proxyUrl = '/tall/v1.0';
+import { http } from 'plugins/request/index';
+
+// 请求统一使用如下格式
+// export const signin = params => http.post('/api/xxx', params);
diff --git a/common/script/filters.js b/common/script/filters.js
deleted file mode 100644
index 8e58bfa..0000000
--- a/common/script/filters.js
+++ /dev/null
@@ -1,24 +0,0 @@
-// 定义过滤器 时间戳转化
-export function formatDate(date, fmt) {
- if (/(y+)/.test(fmt)) {
- fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));
- }
- let o = {
- 'M+': date.getMonth() + 1,
- 'd+': date.getDate(),
- 'h+': date.getHours(),
- 'm+': date.getMinutes(),
- 's+': date.getSeconds()
- };
- for (let k in o) {
- if (new RegExp(`(${k})`).test(fmt)) {
- let str = o[k] + '';
- fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? str : padLeftZero(str));
- }
- }
- return fmt;
-};
-
-function padLeftZero(str) {
- return ('00' + str).substr(str.length);
-};
diff --git a/common/script/util.js b/common/script/util.js
deleted file mode 100644
index 0d5521e..0000000
--- a/common/script/util.js
+++ /dev/null
@@ -1,34 +0,0 @@
-/**
- * 显示模态框
- * @param {string} msg
- * @param {boolean} showCancel
- * @param {string} confirmText
- */
-export const showModal = (msg, showCancel = false, confirmText = '知道了') =>
- uni.showModal({
- title: '提示',
- content: msg,
- showCancel,
- confirmText,
- confirmColor: '#1890ff',
- });
-
-/**
- * 显示toast
- * @param {string} msg
- */
-export const showToast = msg =>
- uni.showToast({
- title: msg,
- icon: 'none',
- duration: 3000,
- });
-
-// 显示加载动画
-export const showLoading = (msg = '努力加载中...') => uni.showLoading({ title: msg });
-
-// 隐藏加载动画
-export const hideLoading = () =>
- setTimeout(() => {
- uni.hideLoading();
- }, 1000);
diff --git a/common/style/iconfont.scss b/common/style/iconfont.scss
index ea7522a..e69de29 100644
--- a/common/style/iconfont.scss
+++ b/common/style/iconfont.scss
@@ -1,88 +0,0 @@
-@font-face {font-family: "iconfont";
- src: url('data:application/x-font-woff2;charset=utf-8;base64,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') format('woff2'); /* iOS 4.1- */
-}
-
-.iconfont {
- font-family: "iconfont" !important;
- font-size: 26px;
- font-style: normal;
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
-}
-
-.icon-border:before {
- content: "\e7a9";
-}
-
-.icon-timer:before {
- content: "\e668";
-}
-
-.icon-history:before {
- content: "\e60d";
-}
-
-.icon-room:before {
- content: "\e600";
-}
-
-.icon-check-square:before {
- content: "\e7a8";
-}
-
-.icon-user:before {
- content: "\e7ae";
-}
-
-.icon-linechart:before {
- content: "\e7af";
-}
-
-.icon-home:before {
- content: "\e7c6";
-}
-
-.icon-carryout:before {
- content: "\e7d3";
-}
-
-.icon-car:before {
- content: "\e7d7";
-}
-
-.icon-right:before {
- content: "\e7eb";
-}
-
-.icon-left:before {
- content: "\e7ec";
-}
-
-.icon-flag-fill:before {
- content: "\e863";
-}
-
-.icon-plus:before {
- content: "\e8fe";
-}
-
-.icon-wenduji_thermometer:before {
- content: "\e611";
-}
-
-.icon-calendar:before {
- content: "\e7d3";
-}
-
-.icon-scan:before {
- content: "\e7d4";
-}
-
-.icon-qrcode:before {
- content: "\e7dd";
-}
-
-.icon-check-circle-fill:before {
- content: "\e844";
-}
-
diff --git a/components/auth/auth.vue b/components/auth/auth.vue
deleted file mode 100644
index bfa0b3c..0000000
--- a/components/auth/auth.vue
+++ /dev/null
@@ -1,105 +0,0 @@
-
-
-
- 健康码小程序
- 为了您的正常使用
- 小程序需要获得您的基本公开信息
-
-
-
-
-
-
-
-
-
diff --git a/components/history-map/history-map.vue b/components/history-map/history-map.vue
deleted file mode 100644
index d39935b..0000000
--- a/components/history-map/history-map.vue
+++ /dev/null
@@ -1,45 +0,0 @@
-
-
-
-
-
diff --git a/components/nav-bottom/nav-bottom.vue b/components/nav-bottom/nav-bottom.vue
deleted file mode 100644
index e7d47ac..0000000
--- a/components/nav-bottom/nav-bottom.vue
+++ /dev/null
@@ -1,42 +0,0 @@
-
-
-
- 首页
-
-
-
- 扫一扫
-
-
-
-
- 我的
-
-
-
-
-
diff --git a/components/rattenking-dtpicker/GetDate.js b/components/rattenking-dtpicker/GetDate.js
deleted file mode 100644
index 8933c77..0000000
--- a/components/rattenking-dtpicker/GetDate.js
+++ /dev/null
@@ -1,167 +0,0 @@
-const GetDate = {
- withData: (num) => {
- let param = parseInt(num);
- return param < 10 ? '0' + param : '' + param;
- },
- getTimes(str){
- return new Date(str.replace(/-/g,'/')).getTime();
- },
- getCurrentTimes(){
- const date = new Date();
- const year = date.getFullYear();
- const month = date.getMonth() + 1;
- const day = date.getDate();
- const hour = date.getHours();
- const minute = date.getMinutes();
- const second = date.getSeconds();
- return {
- detail: {
- year: year,
- month: month,
- day: day,
- hour: hour,
- minute: minute,
- second: second
- }
- }
- },
- format(arr){
- let curarr = [];
- let curarr0 = [];
- let str = '';
- arr.forEach((cur,index) => {
- let o = GetDate.withData(cur);
- if(index > 2){
- curarr.push(o);
- }else{
- curarr0.push(o);
- }
- })
- if(arr.length < 4){
- str = curarr0.join('-');
- }else{
- str = curarr0.join('-') + ' ' + curarr.join(':');
- }
- return str;
- },
- getCurrentStringValue(str){
- let newstr = str.split(' ');
- if(newstr && newstr[1]){
- let arr = [...newstr[0].split('-'),...newstr[1].split(':')];
- return arr;
- }
- return newstr[0].split('-');
- },
- getCompare(curp,startp,endp,timesp){
- let cur = GetDate.getTimes(curp);
- let start = GetDate.getTimes(startp);
- let end = GetDate.getTimes(endp);
- if(cur < start){
- return GetDate.getTimeIndex(timesp,GetDate.getCurrentStringValue(startp));
- }else if(cur > end){
- return GetDate.getTimeIndex(timesp,GetDate.getCurrentStringValue(endp));
- }else{
- return GetDate.getTimeIndex(timesp,GetDate.getCurrentStringValue(curp));
- }
- },
- getChooseArr(times,indexs){
- let arr = [];
- times.forEach((cur,index) => arr.push(cur[indexs[index]]));
- return arr;
- },
- getNewArray(arr){
- let newarr = [];
- arr.forEach(cur => newarr.push(cur));
- return newarr;
- },
- getLoopArray: (start, end) => {
- var start = start || 0;
- var end = end || 1;
- var array = [];
- for (var i = start; i <= end; i++) {
- array.push(GetDate.withData(i));
- }
- return array;
- },
- getMonthDay: (year, month) => {
- var flag = year % 400 == 0 || (year % 4 == 0 && year % 100 != 0), array = null;
-
- switch (month) {
- case '01':
- case '03':
- case '05':
- case '07':
- case '08':
- case '10':
- case '12':
- array = GetDate.getLoopArray(1, 31)
- break;
- case '04':
- case '06':
- case '09':
- case '11':
- array = GetDate.getLoopArray(1, 30)
- break;
- case '02':
- array = flag ? GetDate.getLoopArray(1, 29) : GetDate.getLoopArray(1, 28)
- break;
- default:
- array = '月份格式不正确,请重新输入!'
- }
- return array;
- },
- getDateTimes: (opts) => {
- var years = GetDate.getLoopArray(opts.start, opts.end);
- var months = GetDate.getLoopArray(1, 12);
- var days = GetDate.getMonthDay(opts.curyear, opts.curmonth);
- var hours = GetDate.getLoopArray(0, 23);
- var minutes = GetDate.getLoopArray(0, 59);
- var seconds = GetDate.getLoopArray(0, 59);
- var times = null;
-
- switch (opts.fields) {
- case 'year':
- times = [years]
- break;
- case 'month':
- times = [years, months]
- break;
- case 'day':
- times = [years, months, days]
- break;
- case 'hour':
- times = [years, months, days, hours]
- break;
- case 'minute':
- times = [years, months, days, hours, minutes]
- break;
- case 'second':
- times = [years, months, days, hours, minutes, seconds]
- break;
- default:
- times = [years, months, days, hours, minutes, seconds]
- }
- return times;
- },
- getIndex(arr,target){
- let len = arr.length;
- for(let i = 0; i < len; i++){
- if(arr[i] == target){
- return i;
- }
- }
- },
- getTimeIndex(arrs, targets){
- let len = arrs.length;
- let arr = [];
- for(let i = 0; i < len; i++){
- arr.push(GetDate.getIndex(arrs[i], targets[i]))
- }
- return arr;
- },
- error(str){
- console.error(str);
- }
-}
-
-module.exports = GetDate;
\ No newline at end of file
diff --git a/components/rattenking-dtpicker/rattenking-dtpicker.vue b/components/rattenking-dtpicker/rattenking-dtpicker.vue
deleted file mode 100644
index 33a6605..0000000
--- a/components/rattenking-dtpicker/rattenking-dtpicker.vue
+++ /dev/null
@@ -1,221 +0,0 @@
-
-
- {{curValue}}
-
-
-
-
-
-
diff --git a/components/rattenking-dtpicker/readme.md b/components/rattenking-dtpicker/readme.md
deleted file mode 100644
index 86d3909..0000000
--- a/components/rattenking-dtpicker/readme.md
+++ /dev/null
@@ -1,69 +0,0 @@
-### DatePicker 多粒度时间选择器
-
-可进行多粒度的时间选择器,组件名:``rattenking-dtpicker``,代码块: ruiDatePicker。
-
-**使用方式:**
-
-在 ``script`` 中引用组件
-
-```javascript
-import ruiDatePicker from '@/components/rattenking-dtpicker/rattenking-dtpicker.vue';
-export default {
- components: {ruiDatePicker}
-}
-```
-
-在 ``template`` 中使用组件
-
-```html
-
-```
-
-实际效果参考:[https://github.com/Rattenking/rui-uni-components](https://github.com/Rattenking/rui-uni-components)
-
-**DatePicker 属性说明:**
-
-|属性名 |类型 |默认值 |说明 |
-|--- |---- |--- |--- |
-|start |String |'1900-00-00 00:00:00' |限制选择器选择的最小时间 |
-|end |String |'2500-12-30 23:59:59' |限制选择器选择的最大时间 |
-|value |String |'' |当前时间选择器显示的时间 |
-|fields |String |'second' |时间选择器的粒度 |
-|disabled |Boolean|false |是否为禁用状态 |
-
-
-**fields 值说明:**
-
-|值 |类型 |说明 |
-|--- |---- |--- |
-|year |String |选择器粒度为年 |
-|month |String |选择器粒度为月份 |
-|day |String |选择器粒度为天 |
-|hour |String |选择器粒度为小时 |
-|minute |String |选择器粒度为分钟 |
-|second |String |选择器粒度为秒 |
-
-**事件说明:**
-
-|事件名称 |说明 |
-|---|---|
-|change |时间选择器点击【确定】按钮时时触发的事件,参数为picker的当前的 value|
-|cancel |时间选择器点击【取消】按钮时时触发的事件|
-
-**修复BUG说明:**
-
-1. 修复每个月都是 31 天的 bug !
-2. 修复 value 值做出改变,在外部赋值才改变的 bug ,当前版本只要 value 改变,显示值就会改变!
-3. 优化了默认显示值问题,如果用户不填写,直接默认当前设备的当前时间!
-4. 修复二月份能够选择 31 号的 bug!
-
-**感谢:**
-
-> 在这里特别感谢**AimerQAQ**、**icare**、**281245387@qq.com**、**椰子皮**等反馈的 bug 和给出的优化建议。有更多优化建议和需求,请联系作者。谢谢!
\ No newline at end of file
diff --git a/components/school-map/school-map.vue b/components/school-map/school-map.vue
deleted file mode 100644
index a289de9..0000000
--- a/components/school-map/school-map.vue
+++ /dev/null
@@ -1,102 +0,0 @@
-
-
-
-
-
diff --git a/components/test/test.vue b/components/test/test.vue
new file mode 100644
index 0000000..39b6903
--- /dev/null
+++ b/components/test/test.vue
@@ -0,0 +1,19 @@
+
+
+ test组件
+
+
+
+
+
+
diff --git a/components/timeline/timeline.vue b/components/timeline/timeline.vue
deleted file mode 100644
index 3014d25..0000000
--- a/components/timeline/timeline.vue
+++ /dev/null
@@ -1,44 +0,0 @@
-
-
-
-
-
-
- {{ generateTime(item.time - 0) }}
- 【 {{ item.siteName }} 】打卡
-
-
-
-
-
-
-
diff --git a/components/uni-calendar/calendar.js b/components/uni-calendar/calendar.js
deleted file mode 100644
index b8d7d6f..0000000
--- a/components/uni-calendar/calendar.js
+++ /dev/null
@@ -1,546 +0,0 @@
-/**
-* @1900-2100区间内的公历、农历互转
-* @charset UTF-8
-* @github https://github.com/jjonline/calendar.js
-* @Author Jea杨(JJonline@JJonline.Cn)
-* @Time 2014-7-21
-* @Time 2016-8-13 Fixed 2033hex、Attribution Annals
-* @Time 2016-9-25 Fixed lunar LeapMonth Param Bug
-* @Time 2017-7-24 Fixed use getTerm Func Param Error.use solar year,NOT lunar year
-* @Version 1.0.3
-* @公历转农历:calendar.solar2lunar(1987,11,01); //[you can ignore params of prefix 0]
-* @农历转公历:calendar.lunar2solar(1987,09,10); //[you can ignore params of prefix 0]
-*/
-/* eslint-disable */
-var calendar = {
-
- /**
- * 农历1900-2100的润大小信息表
- * @Array Of Property
- * @return Hex
- */
- lunarInfo: [0x04bd8, 0x04ae0, 0x0a570, 0x054d5, 0x0d260, 0x0d950, 0x16554, 0x056a0, 0x09ad0, 0x055d2, // 1900-1909
- 0x04ae0, 0x0a5b6, 0x0a4d0, 0x0d250, 0x1d255, 0x0b540, 0x0d6a0, 0x0ada2, 0x095b0, 0x14977, // 1910-1919
- 0x04970, 0x0a4b0, 0x0b4b5, 0x06a50, 0x06d40, 0x1ab54, 0x02b60, 0x09570, 0x052f2, 0x04970, // 1920-1929
- 0x06566, 0x0d4a0, 0x0ea50, 0x06e95, 0x05ad0, 0x02b60, 0x186e3, 0x092e0, 0x1c8d7, 0x0c950, // 1930-1939
- 0x0d4a0, 0x1d8a6, 0x0b550, 0x056a0, 0x1a5b4, 0x025d0, 0x092d0, 0x0d2b2, 0x0a950, 0x0b557, // 1940-1949
- 0x06ca0, 0x0b550, 0x15355, 0x04da0, 0x0a5b0, 0x14573, 0x052b0, 0x0a9a8, 0x0e950, 0x06aa0, // 1950-1959
- 0x0aea6, 0x0ab50, 0x04b60, 0x0aae4, 0x0a570, 0x05260, 0x0f263, 0x0d950, 0x05b57, 0x056a0, // 1960-1969
- 0x096d0, 0x04dd5, 0x04ad0, 0x0a4d0, 0x0d4d4, 0x0d250, 0x0d558, 0x0b540, 0x0b6a0, 0x195a6, // 1970-1979
- 0x095b0, 0x049b0, 0x0a974, 0x0a4b0, 0x0b27a, 0x06a50, 0x06d40, 0x0af46, 0x0ab60, 0x09570, // 1980-1989
- 0x04af5, 0x04970, 0x064b0, 0x074a3, 0x0ea50, 0x06b58, 0x05ac0, 0x0ab60, 0x096d5, 0x092e0, // 1990-1999
- 0x0c960, 0x0d954, 0x0d4a0, 0x0da50, 0x07552, 0x056a0, 0x0abb7, 0x025d0, 0x092d0, 0x0cab5, // 2000-2009
- 0x0a950, 0x0b4a0, 0x0baa4, 0x0ad50, 0x055d9, 0x04ba0, 0x0a5b0, 0x15176, 0x052b0, 0x0a930, // 2010-2019
- 0x07954, 0x06aa0, 0x0ad50, 0x05b52, 0x04b60, 0x0a6e6, 0x0a4e0, 0x0d260, 0x0ea65, 0x0d530, // 2020-2029
- 0x05aa0, 0x076a3, 0x096d0, 0x04afb, 0x04ad0, 0x0a4d0, 0x1d0b6, 0x0d250, 0x0d520, 0x0dd45, // 2030-2039
- 0x0b5a0, 0x056d0, 0x055b2, 0x049b0, 0x0a577, 0x0a4b0, 0x0aa50, 0x1b255, 0x06d20, 0x0ada0, // 2040-2049
- /** Add By JJonline@JJonline.Cn**/
- 0x14b63, 0x09370, 0x049f8, 0x04970, 0x064b0, 0x168a6, 0x0ea50, 0x06b20, 0x1a6c4, 0x0aae0, // 2050-2059
- 0x0a2e0, 0x0d2e3, 0x0c960, 0x0d557, 0x0d4a0, 0x0da50, 0x05d55, 0x056a0, 0x0a6d0, 0x055d4, // 2060-2069
- 0x052d0, 0x0a9b8, 0x0a950, 0x0b4a0, 0x0b6a6, 0x0ad50, 0x055a0, 0x0aba4, 0x0a5b0, 0x052b0, // 2070-2079
- 0x0b273, 0x06930, 0x07337, 0x06aa0, 0x0ad50, 0x14b55, 0x04b60, 0x0a570, 0x054e4, 0x0d160, // 2080-2089
- 0x0e968, 0x0d520, 0x0daa0, 0x16aa6, 0x056d0, 0x04ae0, 0x0a9d4, 0x0a2d0, 0x0d150, 0x0f252, // 2090-2099
- 0x0d520], // 2100
-
- /**
- * 公历每个月份的天数普通表
- * @Array Of Property
- * @return Number
- */
- solarMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
-
- /**
- * 天干地支之天干速查表
- * @Array Of Property trans["甲","乙","丙","丁","戊","己","庚","辛","壬","癸"]
- * @return Cn string
- */
- Gan: ['\u7532', '\u4e59', '\u4e19', '\u4e01', '\u620a', '\u5df1', '\u5e9a', '\u8f9b', '\u58ec', '\u7678'],
-
- /**
- * 天干地支之地支速查表
- * @Array Of Property
- * @trans["子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"]
- * @return Cn string
- */
- Zhi: ['\u5b50', '\u4e11', '\u5bc5', '\u536f', '\u8fb0', '\u5df3', '\u5348', '\u672a', '\u7533', '\u9149', '\u620c', '\u4ea5'],
-
- /**
- * 天干地支之地支速查表<=>生肖
- * @Array Of Property
- * @trans["鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪"]
- * @return Cn string
- */
- Animals: ['\u9f20', '\u725b', '\u864e', '\u5154', '\u9f99', '\u86c7', '\u9a6c', '\u7f8a', '\u7334', '\u9e21', '\u72d7', '\u732a'],
-
- /**
- * 24节气速查表
- * @Array Of Property
- * @trans["小寒","大寒","立春","雨水","惊蛰","春分","清明","谷雨","立夏","小满","芒种","夏至","小暑","大暑","立秋","处暑","白露","秋分","寒露","霜降","立冬","小雪","大雪","冬至"]
- * @return Cn string
- */
- solarTerm: ['\u5c0f\u5bd2', '\u5927\u5bd2', '\u7acb\u6625', '\u96e8\u6c34', '\u60ca\u86f0', '\u6625\u5206', '\u6e05\u660e', '\u8c37\u96e8', '\u7acb\u590f', '\u5c0f\u6ee1', '\u8292\u79cd', '\u590f\u81f3', '\u5c0f\u6691', '\u5927\u6691', '\u7acb\u79cb', '\u5904\u6691', '\u767d\u9732', '\u79cb\u5206', '\u5bd2\u9732', '\u971c\u964d', '\u7acb\u51ac', '\u5c0f\u96ea', '\u5927\u96ea', '\u51ac\u81f3'],
-
- /**
- * 1900-2100各年的24节气日期速查表
- * @Array Of Property
- * @return 0x string For splice
- */
- sTermInfo: ['9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf97c3598082c95f8c965cc920f',
- '97bd0b06bdb0722c965ce1cfcc920f', 'b027097bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
- '97bcf97c359801ec95f8c965cc920f', '97bd0b06bdb0722c965ce1cfcc920f', 'b027097bd097c36b0b6fc9274c91aa',
- '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', '97bd0b06bdb0722c965ce1cfcc920f',
- 'b027097bd097c36b0b6fc9274c91aa', '9778397bd19801ec9210c965cc920e', '97b6b97bd19801ec95f8c965cc920f',
- '97bd09801d98082c95f8e1cfcc920f', '97bd097bd097c36b0b6fc9210c8dc2', '9778397bd197c36c9210c9274c91aa',
- '97b6b97bd19801ec95f8c965cc920e', '97bd09801d98082c95f8e1cfcc920f', '97bd097bd097c36b0b6fc9210c8dc2',
- '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec95f8c965cc920e', '97bcf97c3598082c95f8e1cfcc920f',
- '97bd097bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec9210c965cc920e',
- '97bcf97c3598082c95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
- '97b6b97bd19801ec9210c965cc920e', '97bcf97c3598082c95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722',
- '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f',
- '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
- '97bcf97c359801ec95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
- '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', '97bd097bd07f595b0b6fc920fb0722',
- '9778397bd097c36b0b6fc9210c8dc2', '9778397bd19801ec9210c9274c920e', '97b6b97bd19801ec95f8c965cc920f',
- '97bd07f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c920e',
- '97b6b97bd19801ec95f8c965cc920f', '97bd07f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2',
- '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bd07f1487f595b0b0bc920fb0722',
- '7f0e397bd097c36b0b6fc9210c8dc2', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
- '97bcf7f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
- '97b6b97bd19801ec9210c965cc920e', '97bcf7f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722',
- '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf7f1487f531b0b0bb0b6fb0722',
- '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
- '97bcf7f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
- '97b6b97bd19801ec9210c9274c920e', '97bcf7f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722',
- '9778397bd097c36b0b6fc9210c91aa', '97b6b97bd197c36c9210c9274c920e', '97bcf7f0e47f531b0b0bb0b6fb0722',
- '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c920e',
- '97b6b7f0e47f531b0723b0b6fb0722', '7f0e37f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2',
- '9778397bd097c36b0b70c9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', '7f0e37f1487f595b0b0bb0b6fb0722',
- '7f0e397bd097c35b0b6fc9210c8dc2', '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721',
- '7f0e27f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
- '97b6b7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722',
- '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722',
- '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721',
- '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
- '97b6b7f0e47f531b0723b0787b0721', '7f0e27f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722',
- '9778397bd097c36b0b6fc9210c91aa', '97b6b7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722',
- '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9210c8dc2', '977837f0e37f149b0723b0787b0721',
- '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f5307f595b0b0bc920fb0722', '7f0e397bd097c35b0b6fc9210c8dc2',
- '977837f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e37f1487f595b0b0bb0b6fb0722',
- '7f0e397bd097c35b0b6fc9210c8dc2', '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
- '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '977837f0e37f14998082b0787b06bd',
- '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722',
- '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722',
- '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
- '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14998082b0787b06bd',
- '7f07e7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722',
- '977837f0e37f14998082b0723b06bd', '7f07e7f0e37f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722',
- '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b0721',
- '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f1487f595b0b0bb0b6fb0722', '7f0e37f0e37f14898082b0723b02d5',
- '7ec967f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f1487f531b0b0bb0b6fb0722',
- '7f0e37f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
- '7f0e37f1487f531b0b0bb0b6fb0722', '7f0e37f0e37f14898082b072297c35', '7ec967f0e37f14998082b0787b06bd',
- '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e37f0e37f14898082b072297c35',
- '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722',
- '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f149b0723b0787b0721',
- '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14998082b0723b06bd',
- '7f07e7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722', '7f0e37f0e366aa89801eb072297c35',
- '7ec967f0e37f14998082b0723b06bd', '7f07e7f0e37f14998083b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722',
- '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14898082b0723b02d5', '7f07e7f0e37f14998082b0787b0721',
- '7f07e7f0e47f531b0723b0b6fb0722', '7f0e36665b66aa89801e9808297c35', '665f67f0e37f14898082b0723b02d5',
- '7ec967f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0722', '7f0e36665b66a449801e9808297c35',
- '665f67f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
- '7f0e36665b66a449801e9808297c35', '665f67f0e37f14898082b072297c35', '7ec967f0e37f14998082b0787b06bd',
- '7f07e7f0e47f531b0723b0b6fb0721', '7f0e26665b66a449801e9808297c35', '665f67f0e37f1489801eb072297c35',
- '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722'],
-
- /**
- * 数字转中文速查表
- * @Array Of Property
- * @trans ['日','一','二','三','四','五','六','七','八','九','十']
- * @return Cn string
- */
- nStr1: ['\u65e5', '\u4e00', '\u4e8c', '\u4e09', '\u56db', '\u4e94', '\u516d', '\u4e03', '\u516b', '\u4e5d', '\u5341'],
-
- /**
- * 日期转农历称呼速查表
- * @Array Of Property
- * @trans ['初','十','廿','卅']
- * @return Cn string
- */
- nStr2: ['\u521d', '\u5341', '\u5eff', '\u5345'],
-
- /**
- * 月份转农历称呼速查表
- * @Array Of Property
- * @trans ['正','一','二','三','四','五','六','七','八','九','十','冬','腊']
- * @return Cn string
- */
- nStr3: ['\u6b63', '\u4e8c', '\u4e09', '\u56db', '\u4e94', '\u516d', '\u4e03', '\u516b', '\u4e5d', '\u5341', '\u51ac', '\u814a'],
-
- /**
- * 返回农历y年一整年的总天数
- * @param lunar Year
- * @return Number
- * @eg:var count = calendar.lYearDays(1987) ;//count=387
- */
- lYearDays: function (y) {
- var i; var sum = 348
- for (i = 0x8000; i > 0x8; i >>= 1) { sum += (this.lunarInfo[y - 1900] & i) ? 1 : 0 }
- return (sum + this.leapDays(y))
- },
-
- /**
- * 返回农历y年闰月是哪个月;若y年没有闰月 则返回0
- * @param lunar Year
- * @return Number (0-12)
- * @eg:var leapMonth = calendar.leapMonth(1987) ;//leapMonth=6
- */
- leapMonth: function (y) { // 闰字编码 \u95f0
- return (this.lunarInfo[y - 1900] & 0xf)
- },
-
- /**
- * 返回农历y年闰月的天数 若该年没有闰月则返回0
- * @param lunar Year
- * @return Number (0、29、30)
- * @eg:var leapMonthDay = calendar.leapDays(1987) ;//leapMonthDay=29
- */
- leapDays: function (y) {
- if (this.leapMonth(y)) {
- return ((this.lunarInfo[y - 1900] & 0x10000) ? 30 : 29)
- }
- return (0)
- },
-
- /**
- * 返回农历y年m月(非闰月)的总天数,计算m为闰月时的天数请使用leapDays方法
- * @param lunar Year
- * @return Number (-1、29、30)
- * @eg:var MonthDay = calendar.monthDays(1987,9) ;//MonthDay=29
- */
- monthDays: function (y, m) {
- if (m > 12 || m < 1) { return -1 }// 月份参数从1至12,参数错误返回-1
- return ((this.lunarInfo[y - 1900] & (0x10000 >> m)) ? 30 : 29)
- },
-
- /**
- * 返回公历(!)y年m月的天数
- * @param solar Year
- * @return Number (-1、28、29、30、31)
- * @eg:var solarMonthDay = calendar.leapDays(1987) ;//solarMonthDay=30
- */
- solarDays: function (y, m) {
- if (m > 12 || m < 1) { return -1 } // 若参数错误 返回-1
- var ms = m - 1
- if (ms == 1) { // 2月份的闰平规律测算后确认返回28或29
- return (((y % 4 == 0) && (y % 100 != 0) || (y % 400 == 0)) ? 29 : 28)
- } else {
- return (this.solarMonth[ms])
- }
- },
-
- /**
- * 农历年份转换为干支纪年
- * @param lYear 农历年的年份数
- * @return Cn string
- */
- toGanZhiYear: function (lYear) {
- var ganKey = (lYear - 3) % 10
- var zhiKey = (lYear - 3) % 12
- if (ganKey == 0) ganKey = 10// 如果余数为0则为最后一个天干
- if (zhiKey == 0) zhiKey = 12// 如果余数为0则为最后一个地支
- return this.Gan[ganKey - 1] + this.Zhi[zhiKey - 1]
- },
-
- /**
- * 公历月、日判断所属星座
- * @param cMonth [description]
- * @param cDay [description]
- * @return Cn string
- */
- toAstro: function (cMonth, cDay) {
- var s = '\u9b54\u7faf\u6c34\u74f6\u53cc\u9c7c\u767d\u7f8a\u91d1\u725b\u53cc\u5b50\u5de8\u87f9\u72ee\u5b50\u5904\u5973\u5929\u79e4\u5929\u874e\u5c04\u624b\u9b54\u7faf'
- var arr = [20, 19, 21, 21, 21, 22, 23, 23, 23, 23, 22, 22]
- return s.substr(cMonth * 2 - (cDay < arr[cMonth - 1] ? 2 : 0), 2) + '\u5ea7'// 座
- },
-
- /**
- * 传入offset偏移量返回干支
- * @param offset 相对甲子的偏移量
- * @return Cn string
- */
- toGanZhi: function (offset) {
- return this.Gan[offset % 10] + this.Zhi[offset % 12]
- },
-
- /**
- * 传入公历(!)y年获得该年第n个节气的公历日期
- * @param y公历年(1900-2100);n二十四节气中的第几个节气(1~24);从n=1(小寒)算起
- * @return day Number
- * @eg:var _24 = calendar.getTerm(1987,3) ;//_24=4;意即1987年2月4日立春
- */
- getTerm: function (y, n) {
- if (y < 1900 || y > 2100) { return -1 }
- if (n < 1 || n > 24) { return -1 }
- var _table = this.sTermInfo[y - 1900]
- var _info = [
- parseInt('0x' + _table.substr(0, 5)).toString(),
- parseInt('0x' + _table.substr(5, 5)).toString(),
- parseInt('0x' + _table.substr(10, 5)).toString(),
- parseInt('0x' + _table.substr(15, 5)).toString(),
- parseInt('0x' + _table.substr(20, 5)).toString(),
- parseInt('0x' + _table.substr(25, 5)).toString()
- ]
- var _calday = [
- _info[0].substr(0, 1),
- _info[0].substr(1, 2),
- _info[0].substr(3, 1),
- _info[0].substr(4, 2),
-
- _info[1].substr(0, 1),
- _info[1].substr(1, 2),
- _info[1].substr(3, 1),
- _info[1].substr(4, 2),
-
- _info[2].substr(0, 1),
- _info[2].substr(1, 2),
- _info[2].substr(3, 1),
- _info[2].substr(4, 2),
-
- _info[3].substr(0, 1),
- _info[3].substr(1, 2),
- _info[3].substr(3, 1),
- _info[3].substr(4, 2),
-
- _info[4].substr(0, 1),
- _info[4].substr(1, 2),
- _info[4].substr(3, 1),
- _info[4].substr(4, 2),
-
- _info[5].substr(0, 1),
- _info[5].substr(1, 2),
- _info[5].substr(3, 1),
- _info[5].substr(4, 2)
- ]
- return parseInt(_calday[n - 1])
- },
-
- /**
- * 传入农历数字月份返回汉语通俗表示法
- * @param lunar month
- * @return Cn string
- * @eg:var cnMonth = calendar.toChinaMonth(12) ;//cnMonth='腊月'
- */
- toChinaMonth: function (m) { // 月 => \u6708
- if (m > 12 || m < 1) { return -1 } // 若参数错误 返回-1
- var s = this.nStr3[m - 1]
- s += '\u6708'// 加上月字
- return s
- },
-
- /**
- * 传入农历日期数字返回汉字表示法
- * @param lunar day
- * @return Cn string
- * @eg:var cnDay = calendar.toChinaDay(21) ;//cnMonth='廿一'
- */
- toChinaDay: function (d) { // 日 => \u65e5
- var s
- switch (d) {
- case 10:
- s = '\u521d\u5341'; break
- case 20:
- s = '\u4e8c\u5341'; break
- break
- case 30:
- s = '\u4e09\u5341'; break
- break
- default :
- s = this.nStr2[Math.floor(d / 10)]
- s += this.nStr1[d % 10]
- }
- return (s)
- },
-
- /**
- * 年份转生肖[!仅能大致转换] => 精确划分生肖分界线是“立春”
- * @param y year
- * @return Cn string
- * @eg:var animal = calendar.getAnimal(1987) ;//animal='兔'
- */
- getAnimal: function (y) {
- return this.Animals[(y - 4) % 12]
- },
-
- /**
- * 传入阳历年月日获得详细的公历、农历object信息 <=>JSON
- * @param y solar year
- * @param m solar month
- * @param d solar day
- * @return JSON object
- * @eg:console.log(calendar.solar2lunar(1987,11,01));
- */
- solar2lunar: function (y, m, d) { // 参数区间1900.1.31~2100.12.31
- // 年份限定、上限
- if (y < 1900 || y > 2100) {
- return -1// undefined转换为数字变为NaN
- }
- // 公历传参最下限
- if (y == 1900 && m == 1 && d < 31) {
- return -1
- }
- // 未传参 获得当天
- if (!y) {
- var objDate = new Date()
- } else {
- var objDate = new Date(y, parseInt(m) - 1, d)
- }
- var i; var leap = 0; var temp = 0
- // 修正ymd参数
- var y = objDate.getFullYear()
- var m = objDate.getMonth() + 1
- var d = objDate.getDate()
- var offset = (Date.UTC(objDate.getFullYear(), objDate.getMonth(), objDate.getDate()) - Date.UTC(1900, 0, 31)) / 86400000
- for (i = 1900; i < 2101 && offset > 0; i++) {
- temp = this.lYearDays(i)
- offset -= temp
- }
- if (offset < 0) {
- offset += temp; i--
- }
-
- // 是否今天
- var isTodayObj = new Date()
- var isToday = false
- if (isTodayObj.getFullYear() == y && isTodayObj.getMonth() + 1 == m && isTodayObj.getDate() == d) {
- isToday = true
- }
- // 星期几
- var nWeek = objDate.getDay()
- var cWeek = this.nStr1[nWeek]
- // 数字表示周几顺应天朝周一开始的惯例
- if (nWeek == 0) {
- nWeek = 7
- }
- // 农历年
- var year = i
- var leap = this.leapMonth(i) // 闰哪个月
- var isLeap = false
-
- // 效验闰月
- for (i = 1; i < 13 && offset > 0; i++) {
- // 闰月
- if (leap > 0 && i == (leap + 1) && isLeap == false) {
- --i
- isLeap = true; temp = this.leapDays(year) // 计算农历闰月天数
- } else {
- temp = this.monthDays(year, i)// 计算农历普通月天数
- }
- // 解除闰月
- if (isLeap == true && i == (leap + 1)) { isLeap = false }
- offset -= temp
- }
- // 闰月导致数组下标重叠取反
- if (offset == 0 && leap > 0 && i == leap + 1) {
- if (isLeap) {
- isLeap = false
- } else {
- isLeap = true; --i
- }
- }
- if (offset < 0) {
- offset += temp; --i
- }
- // 农历月
- var month = i
- // 农历日
- var day = offset + 1
- // 天干地支处理
- var sm = m - 1
- var gzY = this.toGanZhiYear(year)
-
- // 当月的两个节气
- // bugfix-2017-7-24 11:03:38 use lunar Year Param `y` Not `year`
- var firstNode = this.getTerm(y, (m * 2 - 1))// 返回当月「节」为几日开始
- var secondNode = this.getTerm(y, (m * 2))// 返回当月「节」为几日开始
-
- // 依据12节气修正干支月
- var gzM = this.toGanZhi((y - 1900) * 12 + m + 11)
- if (d >= firstNode) {
- gzM = this.toGanZhi((y - 1900) * 12 + m + 12)
- }
-
- // 传入的日期的节气与否
- var isTerm = false
- var Term = null
- if (firstNode == d) {
- isTerm = true
- Term = this.solarTerm[m * 2 - 2]
- }
- if (secondNode == d) {
- isTerm = true
- Term = this.solarTerm[m * 2 - 1]
- }
- // 日柱 当月一日与 1900/1/1 相差天数
- var dayCyclical = Date.UTC(y, sm, 1, 0, 0, 0, 0) / 86400000 + 25567 + 10
- var gzD = this.toGanZhi(dayCyclical + d - 1)
- // 该日期所属的星座
- var astro = this.toAstro(m, d)
-
- return { 'lYear': year, 'lMonth': month, 'lDay': day, 'Animal': this.getAnimal(year), 'IMonthCn': (isLeap ? '\u95f0' : '') + this.toChinaMonth(month), 'IDayCn': this.toChinaDay(day), 'cYear': y, 'cMonth': m, 'cDay': d, 'gzYear': gzY, 'gzMonth': gzM, 'gzDay': gzD, 'isToday': isToday, 'isLeap': isLeap, 'nWeek': nWeek, 'ncWeek': '\u661f\u671f' + cWeek, 'isTerm': isTerm, 'Term': Term, 'astro': astro }
- },
-
- /**
- * 传入农历年月日以及传入的月份是否闰月获得详细的公历、农历object信息 <=>JSON
- * @param y lunar year
- * @param m lunar month
- * @param d lunar day
- * @param isLeapMonth lunar month is leap or not.[如果是农历闰月第四个参数赋值true即可]
- * @return JSON object
- * @eg:console.log(calendar.lunar2solar(1987,9,10));
- */
- lunar2solar: function (y, m, d, isLeapMonth) { // 参数区间1900.1.31~2100.12.1
- var isLeapMonth = !!isLeapMonth
- var leapOffset = 0
- var leapMonth = this.leapMonth(y)
- var leapDay = this.leapDays(y)
- if (isLeapMonth && (leapMonth != m)) { return -1 }// 传参要求计算该闰月公历 但该年得出的闰月与传参的月份并不同
- if (y == 2100 && m == 12 && d > 1 || y == 1900 && m == 1 && d < 31) { return -1 }// 超出了最大极限值
- var day = this.monthDays(y, m)
- var _day = day
- // bugFix 2016-9-25
- // if month is leap, _day use leapDays method
- if (isLeapMonth) {
- _day = this.leapDays(y, m)
- }
- if (y < 1900 || y > 2100 || d > _day) { return -1 }// 参数合法性效验
-
- // 计算农历的时间差
- var offset = 0
- for (var i = 1900; i < y; i++) {
- offset += this.lYearDays(i)
- }
- var leap = 0; var isAdd = false
- for (var i = 1; i < m; i++) {
- leap = this.leapMonth(y)
- if (!isAdd) { // 处理闰月
- if (leap <= i && leap > 0) {
- offset += this.leapDays(y); isAdd = true
- }
- }
- offset += this.monthDays(y, i)
- }
- // 转换闰月农历 需补充该年闰月的前一个月的时差
- if (isLeapMonth) { offset += day }
- // 1900年农历正月一日的公历时间为1900年1月30日0时0分0秒(该时间也是本农历的最开始起始点)
- var stmap = Date.UTC(1900, 1, 30, 0, 0, 0)
- var calObj = new Date((offset + d - 31) * 86400000 + stmap)
- var cY = calObj.getUTCFullYear()
- var cM = calObj.getUTCMonth() + 1
- var cD = calObj.getUTCDate()
-
- return this.solar2lunar(cY, cM, cD)
- }
-}
-
-export default calendar
diff --git a/components/uni-calendar/uni-calendar-item.vue b/components/uni-calendar/uni-calendar-item.vue
deleted file mode 100644
index 7bd0c54..0000000
--- a/components/uni-calendar/uni-calendar-item.vue
+++ /dev/null
@@ -1,152 +0,0 @@
-
-
-
-
- {{weeks.date}}
- 今天
- {{weeks.isDay?'今天': (weeks.lunar.IDayCn === '初一'?weeks.lunar.IMonthCn:weeks.lunar.IDayCn)}}
- {{weeks.extraInfo.info}}
-
-
-
-
-
-
-
diff --git a/components/uni-calendar/uni-calendar.vue b/components/uni-calendar/uni-calendar.vue
deleted file mode 100644
index d866fd8..0000000
--- a/components/uni-calendar/uni-calendar.vue
+++ /dev/null
@@ -1,434 +0,0 @@
-
-
-
-
-
-
-
-
- {{nowDate.month}}
-
-
-
- 日
-
-
- 一
-
-
- 二
-
-
- 三
-
-
- 四
-
-
- 五
-
-
- 六
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/components/uni-calendar/util.js b/components/uni-calendar/util.js
deleted file mode 100644
index 54db66f..0000000
--- a/components/uni-calendar/util.js
+++ /dev/null
@@ -1,327 +0,0 @@
-import CALENDAR from './calendar.js'
-
-class Calendar {
- constructor({
- date,
- selected,
- startDate,
- endDate,
- range
- } = {}) {
- // 当前日期
- this.date = this.getDate(date) // 当前初入日期
- // 打点信息
- this.selected = selected || [];
- // 范围开始
- this.startDate = startDate
- // 范围结束
- this.endDate = endDate
- this.range = range
- // 多选状态
- this.multipleStatus = {
- before: '',
- after: '',
- data: []
- }
- // 每周日期
- this.weeks = {}
-
- this._getWeek(this.date.fullDate)
- }
-
- /**
- * 获取任意时间
- */
- getDate(date, AddDayCount = 0, str = 'day') {
- if (!date) {
- date = new Date()
- }
- if (typeof date !== 'object') {
- date = date.replace(/-/g, '/')
- }
- const dd = new Date(date)
- switch (str) {
- case 'day':
- dd.setDate(dd.getDate() + AddDayCount) // 获取AddDayCount天后的日期
- break
- case 'month':
- if (dd.getDate() === 31) {
- dd.setDate(dd.getDate() + AddDayCount)
- } else {
- dd.setMonth(dd.getMonth() + AddDayCount) // 获取AddDayCount天后的日期
- }
- break
- case 'year':
- dd.setFullYear(dd.getFullYear() + AddDayCount) // 获取AddDayCount天后的日期
- break
- }
- const y = dd.getFullYear()
- const m = dd.getMonth() + 1 < 10 ? '0' + (dd.getMonth() + 1) : dd.getMonth() + 1 // 获取当前月份的日期,不足10补0
- const d = dd.getDate() < 10 ? '0' + dd.getDate() : dd.getDate() // 获取当前几号,不足10补0
- return {
- fullDate: y + '-' + m + '-' + d,
- year: y,
- month: m,
- date: d,
- day: dd.getDay()
- }
- }
-
-
- /**
- * 获取上月剩余天数
- */
- _getLastMonthDays(firstDay, full) {
- let dateArr = []
- for (let i = firstDay; i > 0; i--) {
- const beforeDate = new Date(full.year, full.month - 1, -i + 1).getDate()
- dateArr.push({
- date: beforeDate,
- month: full.month - 1,
- lunar: this.getlunar(full.year, full.month - 1, beforeDate),
- disable: true
- })
- }
- return dateArr
- }
- /**
- * 获取本月天数
- */
- _currentMonthDys(dateData, full) {
- let dateArr = []
- let fullDate = this.date.fullDate
- for (let i = 1; i <= dateData; i++) {
- let isinfo = false
- let nowDate = full.year + '-' + (full.month < 10 ?
- full.month : full.month) + '-' + (i < 10 ?
- '0' + i : i)
- // 是否今天
- let isDay = fullDate === nowDate
- // 获取打点信息
- let info = this.selected && this.selected.find((item) => {
- if (this.dateEqual(nowDate, item.date)) {
- return item
- }
- })
-
- // 日期禁用
- let disableBefore = true
- let disableAfter = true
- if (this.startDate) {
- let dateCompBefore = this.dateCompare(this.startDate, fullDate)
- disableBefore = this.dateCompare(dateCompBefore ? this.startDate : fullDate, nowDate)
- }
-
- if (this.endDate) {
- let dateCompAfter = this.dateCompare(fullDate, this.endDate)
- disableAfter = this.dateCompare(nowDate, dateCompAfter ? this.endDate : fullDate)
- }
-
- let multiples = this.multipleStatus.data
- let checked = false
- let multiplesStatus = -1
- if (this.range) {
- if (multiples) {
- multiplesStatus = multiples.findIndex((item) => {
- return this.dateEqual(item, nowDate)
- })
- }
- if (multiplesStatus !== -1) {
- checked = true
- }
- }
-
- let data = {
- fullDate: nowDate,
- year: full.year,
- date: i,
- multiple: this.range ? checked : false,
- month: full.month,
- lunar: this.getlunar(full.year, full.month, i),
- disable: !disableBefore || !disableAfter,
- isDay
- }
- if (info) {
- data.extraInfo = info
- }
-
- dateArr.push(data)
- }
- return dateArr
- }
- /**
- * 获取下月天数
- */
- _getNextMonthDays(surplus, full) {
- let dateArr = []
- for (let i = 1; i < surplus + 1; i++) {
- dateArr.push({
- date: i,
- month: Number(full.month) + 1,
- lunar: this.getlunar(full.year, Number(full.month) + 1, i),
- disable: true
- })
- }
- return dateArr
- }
- /**
- * 设置日期
- * @param {Object} date
- */
- setDate(date) {
- this._getWeek(date)
- }
- /**
- * 获取当前日期详情
- * @param {Object} date
- */
- getInfo(date) {
- if (!date) {
- date = new Date()
- }
- const dateInfo = this.canlender.find(item => item.fullDate === this.getDate(date).fullDate)
- return dateInfo
- }
-
- /**
- * 比较时间大小
- */
- dateCompare(startDate, endDate) {
- // 计算截止时间
- startDate = new Date(startDate.replace('-', '/').replace('-', '/'))
- // 计算详细项的截止时间
- endDate = new Date(endDate.replace('-', '/').replace('-', '/'))
- if (startDate <= endDate) {
- return true
- } else {
- return false
- }
- }
-
- /**
- * 比较时间是否相等
- */
- dateEqual(before, after) {
- // 计算截止时间
- before = new Date(before.replace('-', '/').replace('-', '/'))
- // 计算详细项的截止时间
- after = new Date(after.replace('-', '/').replace('-', '/'))
- if (before.getTime() - after.getTime() === 0) {
- return true
- } else {
- return false
- }
- }
-
-
- /**
- * 获取日期范围内所有日期
- * @param {Object} begin
- * @param {Object} end
- */
- geDateAll(begin, end) {
- var arr = []
- var ab = begin.split('-')
- var ae = end.split('-')
- var db = new Date()
- db.setFullYear(ab[0], ab[1] - 1, ab[2])
- var de = new Date()
- de.setFullYear(ae[0], ae[1] - 1, ae[2])
- var unixDb = db.getTime() - 24 * 60 * 60 * 1000
- var unixDe = de.getTime() - 24 * 60 * 60 * 1000
- for (var k = unixDb; k <= unixDe;) {
- k = k + 24 * 60 * 60 * 1000
- arr.push(this.getDate(new Date(parseInt(k))).fullDate)
- }
- return arr
- }
- /**
- * 计算阴历日期显示
- */
- getlunar(year, month, date) {
- return CALENDAR.solar2lunar(year, month, date)
- }
- /**
- * 设置打点
- */
- setSelectInfo(data, value) {
- this.selected = value
- this._getWeek(data)
- }
-
- /**
- * 获取多选状态
- */
- setMultiple(fullDate) {
- let {
- before,
- after
- } = this.multipleStatus
- if (!this.range) return
- if (before && after) {
- this.multipleStatus.before = ''
- this.multipleStatus.after = ''
- this.multipleStatus.data = []
- this._getWeek(fullDate)
- } else {
- if (!before) {
- this.multipleStatus.before = fullDate
- } else {
- this.multipleStatus.after = fullDate
- if (this.dateCompare(this.multipleStatus.before, this.multipleStatus.after)) {
- this.multipleStatus.data = this.geDateAll(this.multipleStatus.before, this.multipleStatus.after);
- } else {
- this.multipleStatus.data = this.geDateAll(this.multipleStatus.after, this.multipleStatus.before);
- }
- this._getWeek(fullDate)
- }
- }
- }
-
- /**
- * 获取每周数据
- * @param {Object} dateData
- */
- _getWeek(dateData) {
- const {
- fullDate,
- year,
- month,
- date,
- day
- } = this.getDate(dateData)
- let firstDay = new Date(year, month - 1, 1).getDay()
- let currentDay = new Date(year, month, 0).getDate()
- let dates = {
- lastMonthDays: this._getLastMonthDays(firstDay, this.getDate(dateData)), // 上个月末尾几天
- currentMonthDys: this._currentMonthDys(currentDay, this.getDate(dateData)), // 本月天数
- nextMonthDays: [], // 下个月开始几天
- weeks: []
- }
- let canlender = []
- const surplus = 42 - (dates.lastMonthDays.length + dates.currentMonthDys.length)
- dates.nextMonthDays = this._getNextMonthDays(surplus, this.getDate(dateData))
- canlender = canlender.concat(dates.lastMonthDays, dates.currentMonthDys, dates.nextMonthDays)
- let weeks = {}
- // 拼接数组 上个月开始几天 + 本月天数+ 下个月开始几天
- for (let i = 0; i < canlender.length; i++) {
- if (i % 7 === 0) {
- weeks[parseInt(i / 7)] = new Array(7)
- }
- weeks[parseInt(i / 7)][i % 7] = canlender[i]
- }
- this.canlender = canlender
- this.weeks = weeks
- }
-
- //静态方法
- // static init(date) {
- // if (!this.instance) {
- // this.instance = new Calendar(date);
- // }
- // return this.instance;
- // }
-}
-
-
-export default Calendar
diff --git a/components/uni-segmented-control/uni-segmented-control.vue b/components/uni-segmented-control/uni-segmented-control.vue
deleted file mode 100644
index 2074131..0000000
--- a/components/uni-segmented-control/uni-segmented-control.vue
+++ /dev/null
@@ -1,124 +0,0 @@
-
-
-
- {{ item }}
-
-
-
-
-
-
-
diff --git a/components/user-agreement/user-agreement.vue b/components/user-agreement/user-agreement.vue
deleted file mode 100644
index 52324a8..0000000
--- a/components/user-agreement/user-agreement.vue
+++ /dev/null
@@ -1,103 +0,0 @@
-
-
-
-
-
- 请认真阅读
- 《用户服务协议》和
- 《隐私政策》,
- 勾选代表您已同意此协议
-
-
-
-
- 本人郑重承诺:
-
-
-
-
- 为疫情防控,本人同意以上信息依法提交山西大学统筹管理。
-
-
-
-
-
- 上述信息是我本人填写,本人对信息内容的真实性和完整性负责。如果信息有误或者缺失,本人愿承担相应的法律责任。同时,本人保证遵守防疫管控的各项规定,配合并听从各项措施和要求。
-
-
-
-
-
-
-
-
-
diff --git a/config/api/api.js b/config/api/api.js
deleted file mode 100644
index 7297a40..0000000
--- a/config/api/api.js
+++ /dev/null
@@ -1,49 +0,0 @@
-const HEALTH = '/health';
-const users = `${HEALTH}/users`;
-const health = `${HEALTH}/health`;
-const sites = `${HEALTH}/sites`;
-const journeys = `${HEALTH}/journeys`;
-
-// 保存个人信息
-export const SUBMIT_USER_INFO = `${users}/addInfo`;
-
-// 获取个人信息
-export const GET_USER_INFO = `${users}/info`;
-
-// 获取健康打卡记录
-export const HEALTH_SIGN_HISTORY = `${health}/info`;
-
-// 健康上报数目统计
-export const HEALTH_TYPE_STATISTICS = `${health}/statistics`;
-
-// 查询健康状态类型
-export const HEALTH_TYPE_STATUS = `${health}/type`;
-
-// 健康打卡
-export const HEALTH_SIGN = `${health}/upload`;
-
-// 上传备注图片
-export const HEALTH_FILE = `${health}/file`;
-
-// 查看自己的打卡记录
-export const USER_SIGNS = `${sites}/info`;
-
-// 获取所有场景信息
-export const SITES_INFO = `${sites}/siteInfo`;
-
-// 根据二维码的id获取场所的信息
-export const SITE = `${sites}/site`;
-
-// 扫码统计
-export const SCHOOL_SIGNS = `${sites}/statistics`;
-
-// 扫码打卡
-export const SCAN_SIGN = `${sites}/upload`;
-
-// 查询行程
-export const GET_JOURNEYS = `${journeys}/info`;
-
-// 上报行程
-export const SUBMIT_JOURNEYS = `${journeys}/upload`;
-
-
diff --git a/config/api/user.js b/config/api/user.js
deleted file mode 100644
index dd9cff9..0000000
--- a/config/api/user.js
+++ /dev/null
@@ -1,10 +0,0 @@
-const proxyUrl = '/tall/v1.0';
-
-// 登录api
-export const SIGN_IN = `${proxyUrl}/users/signin`;
-
-// 上传用户微信信息
-export const UPDATE_USER = `${proxyUrl}/users/userInfo`;
-
-// 通过userId 获取token
-export const USER_ID_EXCHANGE_TOKEN = `${proxyUrl}/users/userId`;
diff --git a/package.json b/package.json
index 93ce37f..0b2c43d 100644
--- a/package.json
+++ b/package.json
@@ -1,5 +1,5 @@
{
- "name": "healthycode",
+ "name": "uniTemplete",
"version": "1.0.0",
"description": "",
"main": "main.js",
@@ -21,7 +21,7 @@
},
"repository": {
"type": "git",
- "url": "https://gitee.com/ccsens_s/healthyCode.git"
+ "url": ""
},
"author": "wally",
"license": "ISC",
diff --git a/pages.json b/pages.json
index c531b05..354b42c 100644
--- a/pages.json
+++ b/pages.json
@@ -3,87 +3,13 @@
{
"path": "pages/index/index",
"style": {
- "navigationBarTitleText": "山大健康码"
+ "navigationBarTitleText": "模板"
}
- },
- {
- "path": "pages/sign/sign",
- "style": {
- "navigationBarTitleText": "打卡"
- }
- },
- {
- "path": "pages/user-code/user-code",
- "style": {"navigationBarTitleText": "健康码"}
- },
- {
- "path": "pages/statistics/statistics",
- "style": { "navigationBarTitleText": "统计" }
- },
-
- {
- "path": "pages/my-signs/my-signs",
- "style": { "navigationBarTitleText": "我的校园打卡" }
- },
-
- {
- "path": "pages/get-code/get-code",
- "style": {
- "navigationBarTitleText": "领取健康码"
- }
- },
- {
- "path": "pages/punch-the-clock/punch-the-clock",
- "style": {
- "navigationBarTitleText": "每日健康打卡"
- }
- },
- {
- "path": "pages/basic-info/basic-info",
- "style": {
- "navigationBarTitleText": "基本信息填写"
- }
- },
- {
- "path": "pages/add-stroke/add-stroke",
- "style": {
- "navigationBarTitleText": "添加行程"
- }
- },
- {
- "path": "pages/apply-code/apply-code",
- "style": {
- "navigationBarTitleText": "申请健康码"
- }
- },
- {
- "path": "pages/my-code/my-code",
- "style": {
- "navigationBarTitleText": "我的健康打卡"
- }
- },
- {
- "path": "pages/my-trips/my-trips",
- "style": {
- "navigationBarTitleText": "我的行程"
- }
- },
- {
- "path": "pages/service-agreement/service-agreement",
- "style": {
- "navigationBarTitleText": "服务协议"
- }
- },
- {
- "path": "pages/privacy-aolicy/privacy-aolicy",
- "style": {
- "navigationBarTitleText": "隐私政策"
- }
- }
+ }
],
"globalStyle": {
"navigationBarTextStyle": "black",
- "navigationBarTitleText": "山大健康码",
+ "navigationBarTitleText": "模板项目",
"navigationBarBackgroundColor": "#F8F8F8",
"backgroundColor": "#F8F8F8"
},
diff --git a/pages/add-stroke/add-stroke.vue b/pages/add-stroke/add-stroke.vue
deleted file mode 100644
index 6c83c62..0000000
--- a/pages/add-stroke/add-stroke.vue
+++ /dev/null
@@ -1,291 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/pages/add-stroke/components/end-date-selector.vue b/pages/add-stroke/components/end-date-selector.vue
deleted file mode 100644
index e3f3acf..0000000
--- a/pages/add-stroke/components/end-date-selector.vue
+++ /dev/null
@@ -1,73 +0,0 @@
-
-
-
- {{ endDate }}
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/pages/add-stroke/components/start-date-selector.vue b/pages/add-stroke/components/start-date-selector.vue
deleted file mode 100644
index 1400ad7..0000000
--- a/pages/add-stroke/components/start-date-selector.vue
+++ /dev/null
@@ -1,73 +0,0 @@
-
-
-
- {{ startDate }}
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/pages/apply-code/apply-code.vue b/pages/apply-code/apply-code.vue
deleted file mode 100644
index 4aff07f..0000000
--- a/pages/apply-code/apply-code.vue
+++ /dev/null
@@ -1,489 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/pages/basic-info/basic-info.vue b/pages/basic-info/basic-info.vue
deleted file mode 100644
index 1d36855..0000000
--- a/pages/basic-info/basic-info.vue
+++ /dev/null
@@ -1,281 +0,0 @@
-
-
-
-
-
- 微信小程序和企业微信应用同时实名后,可以绑定微信小程序帐号和企业微信应用帐号,方便操作
-
-
-
-
-
-
-
-
-
diff --git a/pages/get-code/get-code.vue b/pages/get-code/get-code.vue
deleted file mode 100644
index eacbb6f..0000000
--- a/pages/get-code/get-code.vue
+++ /dev/null
@@ -1,238 +0,0 @@
-
-
-
-
-
-
-
- 以上信息是我本人填写,本人对信息的真实性和完整性负责。
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/pages/index/components/home.vue b/pages/index/components/home.vue
deleted file mode 100644
index 20bddd8..0000000
--- a/pages/index/components/home.vue
+++ /dev/null
@@ -1,175 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 领取健康码
- 领取健康码,查看健康状态
-
-
-
-
-
-
-
-
-
- 每日健康打卡
- 山大人员健康情况打卡
-
-
-
-
-
-
-
-
-
- 行程上报
- 外出行程及时上报
-
-
-
-
-
-
-
-
-
- 统计
- 山大校园疫情统计
-
-
-
-
-
-
-
-
-
-
diff --git a/pages/index/components/mine.vue b/pages/index/components/mine.vue
deleted file mode 100644
index c9ddd50..0000000
--- a/pages/index/components/mine.vue
+++ /dev/null
@@ -1,100 +0,0 @@
-
-
-
-
-
-
-
-
-
- {{ user.wxInfo.nickname }}
-
-
-
-
-
-
-
-
-
-
-
-
- {{ userInfo.nickName }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/pages/index/index.vue b/pages/index/index.vue
index 6fec965..d27fa49 100644
--- a/pages/index/index.vue
+++ b/pages/index/index.vue
@@ -1,87 +1,17 @@
-
-
-
-
-
-
-
-
-
-
+ 模板首页
+
+
diff --git a/pages/my-code/my-code.vue b/pages/my-code/my-code.vue
deleted file mode 100644
index db918da..0000000
--- a/pages/my-code/my-code.vue
+++ /dev/null
@@ -1,175 +0,0 @@
-
-
-
-
-
-
- {{ +item.time | formatDate }}
-
- {{ item.district }},{{ item.address }}
-
-
-
-
- 体温:{{ item.animalHeat }}℃,
-
- 状态:{{ state.name }}
-
-
-
- 武汉接触史
- 患者接触史
-
-
- 境外人员接触史
- 在校
- 不在校
-
- 紧急联系人:{{ item.emergencyName }} {{ item.emergencyPhone }}
-
- 备注:{{ item.remark }}
-
-
-
-
-
-
-
- 您还没有申请健康码,请点击右下角加号申请健康码。
-
-
-
-
-
-
diff --git a/pages/my-signs/my-signs.vue b/pages/my-signs/my-signs.vue
deleted file mode 100644
index eef36d0..0000000
--- a/pages/my-signs/my-signs.vue
+++ /dev/null
@@ -1,157 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/pages/my-trips/my-trips.vue b/pages/my-trips/my-trips.vue
deleted file mode 100644
index fe50f8d..0000000
--- a/pages/my-trips/my-trips.vue
+++ /dev/null
@@ -1,195 +0,0 @@
-
-
-
-
-
- {{ +item.startTime | formatDate }}
-
-
- {{ +item.startTime | formatDate1 }} 至 {{ +item.endTime | formatDate1 }}
-
-
-
-
-
- 返校行程
- 日常外出
-
-
- 同行人:{{ item.together }}
-
-
- 出行方式:
- {{ trip.name }}
-
-
- 乘坐航班车次或车牌号码及座位号:
- {{ item.carNo }}
-
-
-
-
-
-
- 您还没有添加行程,请点击右下角加号添加行程。
-
-
-
-
-
-
-
-
-
diff --git a/pages/privacy-aolicy/privacy-aolicy.vue b/pages/privacy-aolicy/privacy-aolicy.vue
deleted file mode 100644
index 65b3051..0000000
--- a/pages/privacy-aolicy/privacy-aolicy.vue
+++ /dev/null
@@ -1,398 +0,0 @@
-
-
- 隐私政策
-
- 感谢您信任并使用传控科技的产品和服务,我们根据最新的法律法规、监管政策要求,更新了《传控科技隐私政策》。请您仔细阅读并充分理解以下条款。
-
-
-
-
- 引言
-
-
- 传控科技严格遵守法律法规,遵循以下隐私保护原则,为您提供更加安全、可靠的服务:
-
-
-
- 1、安全可靠:
-
-
- 我们竭尽全力通过合理有效的信息安全技术及管理流程,防止您的信息泄露、损毁、丢失。
-
-
- 2、自主选择:
-
-
- 我们为您提供便利的信息管理选项,以便您做出合适的选择,管理您的个人信息。
-
-
- 3、保护通信秘密:
-
-
- 我们严格遵照法律法规,保护您的通信秘密,为您提供安全的通信服务。
-
-
- 4、合理必要:
-
-
- 为了向您和其他用户提供更好的服务,我们仅收集必要的信息。
-
-
- 5、清晰透明:
-
-
- 我们努力使用简明易懂的表述,向您介绍隐私政策,以便您清晰地了解我们的信息处理方式。
-
-
- 6、将隐私保护融入产品设计:
-
-
- 我们在产品或服务开发的各个环节,综合法律、产品、设计等多方因素,融入隐私保护的理念。
-
-
-
- 本《隐私政策》主要向您说明:
-
-
- 我们收集哪些信息
-
-
- 我们收集信息的用途
-
-
- 您所享有的权利
-
-
- 希望您仔细阅读《隐私政策》(以下简称“本政策”),详细了解我们对信息的收集、使用方式,以便您更好地了解我们的服务并作出适当的选择。
-
-
- 若您使用传控科技服务,即表示您认同我们在本政策中所述内容。除另有约定外,本政策所用术语与《用户服务协议》中的术语具有相同的涵义。如您有问题,请联系我们。
-
-
-
-
-
- 我们收集的信息
-
- 我们根据合法、正当、必要的原则,仅收集实现产品功能所必要的信息。
-
- 您在使用我们服务时主动提供的信息
- 您在登录系统时,经授权产生的信息,比如昵称、头像等
- 您在使用服务时上传的信息
- 例如,您在使用我们的微信小程序时,上传的头像、分享的照片。
- 我们的部分服务可能需要您提供特定的个人敏感信息来实现特定功能。若您选择不提供该类信息,则可能无法正常使用服务中的特定功能,但不影响您使用服务中的其他功能。若您主动提供您的个人敏感信息,即表示您同意我们按本政策所述目的和方式来处理您的个人敏感信息。
-
-
- 我们在您使用服务时获取的信息
-
-
- 日志信息
- 当您使用我们的服务时,我们可能会自动收集相关信息并存储为服务日志信息。
-
-
- 1)设备信息
- 例如,设备型号、操作系统版本、唯一设备标识符、电池、信号强度等信息。
- 2)软件信息
- 例如,软件的版本号、浏览器类型。为确保操作环境的安全或提供服务所需,我们会收集有关您使用的移动应用和其他软件的信息。
- 3)IP地址
- 4)服务日志信息
- 例如,您在使用我们服务时搜索、查看的信息、服务故障信息、引荐网址等信息。
- 5)通讯日志信息
- 例如,您在使用我们服务时曾经通讯的账户、通讯时间和时长。
-
-
-
- 位置信息
- 当您使用与位置有关的服务时,我们可能会记录您设备所在的位置信息,以便为您提供相关服务。
- 在您使用服务时,我们可能会通过IP地址 、GPS、WLAN(如 WiFi)或基站等途径获取您的地理位置信息;
- 您或其他用户在使用服务时提供的信息中可能包含您所在地理位置信息,例如您提供的帐号信息中可能包含的您所在地区信息,您或其他人共享的照片包含的地理标记信息。
-
-
-
- 其他相关信息
- 为了帮助您更好地使用我们的产品或服务,我们会收集相关信息。例如,我们收集的好友列表、群列表信息、声纹特征值信息。为确保您使用我们服务时能与您认识的人进行联系,如您选择开启导入通讯录功能,我们可能对您联系人的姓名和电话号码进行加密,并仅收集加密后的信息。
-
-
-
- 其他用户分享的信息中含有您的信息
-
-
- 例如,其他用户发布的照片或分享的视频中可能包含您的信息。
-
-
-
- 从第三方合作伙伴获取的信息
-
-
- 我们可能会获得您在使用第三方合作伙伴服务时所产生或分享的信息。例如,您使用微信或QQ帐户登录第三方合作伙伴服务时,我们会获得您登录第三方合作伙伴服务的名称、登录时间,方便您进行授权管理。请您仔细阅读第三方合作伙伴服务的用户协议或隐私政策。
-
-
-
-
-
- 我们如何使用收集的信息
-
-
- 我们严格遵守法律法规的规定及与用户的约定,将收集的信息用于以下用途。若我们超出以下用途使用您的信息,我们将再次向您进行说明,并征得您的同意。
-
-
-
- 向您提供服务
-
-
- 满足您的个性化需求
-
-
- 例如,语言设定、位置设定、个性化的帮助服务。
-
-
- 产品开发和服务优化
-
-
- 例如,当我们的系统发生故障时,我们会记录和分析系统故障时产生的信息,优化我们的服务。
-
-
- 安全保障
-
-
- 例如,我们会将您的信息用于身份验证、安全防范、反诈骗监测、存档备份、客户的安全服务等用途。例如,您下载或安装的安全软件会对恶意程序或病毒进行检测,或为您识别诈骗信息。
-
-
- 向您推荐您可能感兴趣的广告、资讯等
-
-
- 评估、改善我们的广告投放和其他促销及推广活动的效果
-
-
- 管理软件
-
-
- 例如,进行软件认证、软件升级等。
-
-
- 邀请您参与有关我们服务的调查
-
-
-
- 为了让您有更好的体验、改善我们的服务或经您同意的其他用途,在符合相关法律法规的前提下,我们可能将通过某些服务所收集的信息用于我们的其他服务。例如,将您在使用我们某项服务时的信息,用于另一项服务中向您展示个性化的内容或广告、用于用户研究分析与统计等服务。
-
-
- 为了确保服务的安全,帮助我们更好地了解我们应用程序的运行情况,我们可能记录相关信息,例如,您使用应用程序的频率、故障信息、总体使用情况、性能数据以及应用程序的来源。我们不会将我们存储在分析软件中的信息与您在应用程序中提供的个人身份信息相结合。
-
-
-
-
-
- 您分享的信息
-
-
- 您可以通过我们的服务与您的好友、家人及其他用户分享您的相关信息。例如,您在微信朋友圈中公开分享的文字和照片。
-
-
- 请注意,这其中可能包含您的个人身份信息、个人财产信息等敏感信息。请您谨慎考虑披露您的相关个人敏感信息。
-
-
- 您可通过我们服务中的隐私设置来控制您分享信息的范围,也可通过服务中的设置或我们提供的指引删除您公开分享的信息。但请您注意,这些信息仍可能由其他用户或不受我们控制的非关联第三方独立地保存。
-
-
-
-
-
- 您如何管理自己的信息
-
-
- 您可以在使用我们服务的过程中,访问、修改和删除您提供的注册信息和其他个人信息,也可按照通知指引与我们联系。您访问、修改和删除个人信息的范围和方式将取决于您使用的具体服务。
-
-
- 例如,若您在使用地理位置相关服务时,希望停止分享您的地理位置信息,您可通过手机定位关闭功能、软硬件服务商及通讯服务提供商的关闭方式停止分享,建议您仔细阅读相关指引。
-
-
- 我们将按照本政策所述,仅为实现我们产品或服务的功能,收集、使用您的信息。
-
-
- 如您发现我们违反法律、行政法规的规定或者双方的约定收集、使用您的个人信息,您可以要求我们删除。
-
-
- 如您发现我们收集、存储的您的个人信息有错误的,您也可以要求我们更正。
-
-
- 请通过本政策列明的联系方式与我们联系。
-
-
- 在您访问、修改和删除相关信息时,我们可能会要求您进行身份验证,以保障帐号的安全。
-
-
- 请您理解,由于技术所限、法律或监管要求,我们可能无法满足您的所有要求,我们会在合理的期限内答复您的请求。
-
-
-
-
-
- 我们分享的信息
-
-
- 我们遵照法律法规的规定,对信息的分享进行严格的限制,例如:
-
-
-
- 经您事先同意,我们可能与第三方分享您的个人信息
-
-
- 仅为实现外部处理的目的,我们可能会与第三方合作伙伴(第三方服务供应商、承包商、代理、广告合作伙伴、应用开发者等,例如,代表我们发出电子邮件或推送通知的通讯服务提供商、为我们提供位置服务的地图服务供应商)(他们可能并非位于您所在的法域)分享您的个人信息,让他们按照我们的说明、隐私政策以及其他相关的保密和安全措施来为我们处理上述信息,并用于以下用途:
-
- 向您提供我们的服务;
-
-
- 实现“我们如何使用收集的信息”部分所述目的;
-
-
- 履行我们在《用户服务协议》或本政策中的义务和行使我们的权利;
-
-
- 理解、维护和改善我们的服务。
-
-
-
- 如我们与上述第三方分享您的信息,我们将会采用加密、匿名化处理等手段保障您的信息安全。
-
-
- 随着我们业务的持续发展,当发生合并、收购、资产转让等交易导致向第三方分享您的个人信息时,我们将通过推送通知、公告等形式告知您相关情形,按照法律法规及不低于本政策所要求的标准继续保护或要求新的管理者继续保护您的个人信息。
-
-
- 我们会将所收集到的信息用于大数据分析。
-
- 例如,我们将收集到的信息用于分析形成不包含任何个人信息的城市热力图或行业洞察报告。
-
-
- 我们可能对外公开并与我们的合作伙伴分享经统计加工后不含身份识别内容的信息,用于了解用户如何使用我们服务或让公众了解我们服务的总体使用趋势。
-
-
-
- 我们可能基于以下目的披露您的个人信息
-
- 遵守适用的法律法规等有关规定;
-
-
- 遵守法院判决、裁定或其他法律程序的规定;
-
-
- 遵守相关政府机关或其他法定授权组织的要求;
-
-
- 我们有理由确信需要遵守法律法规等有关规定;
-
-
- 为执行相关服务协议或本政策、维护社会公共利益,为保护我们的客户、我们或我们的关联公司、其他用户或雇员的人身财产安全或其他合法权益合理且必要的用途。
-
-
-
-
-
-
-
- 我们可能向您发送的信息
-
-
- 信息推送
-
-
- 您在使用我们的服务时,我们可能向您发送电子邮件、短信、资讯或推送通知。
-
-
- 您可以按照我们的相关提示,在设备上选择取消订阅。
-
-
- 与服务有关的公告
-
-
- 我们可能在必要时(例如,因系统维护而暂停某一项服务时)向您发出与服务有关的公告。
-
-
- 您可能无法取消这些与服务有关、性质不属于广告的公告。
-
-
-
-
-
- 信息安全
-
-
- 我们为您的信息提供相应的安全保障,以防止信息的丢失、不当使用、未经授权访问或披露。
-
-
-
- 我们严格遵守法律法规保护用户的通信秘密。
-
-
- 我们将在合理的安全水平内使用各种安全保护措施以保障信息的安全。
-
-
- 例如,我们使用加密技术(例如,TLS、SSL)、匿名化处理等手段来保护您的个人信息。
-
-
- 我们建立专门的管理制度、流程和组织确保信息安全。
-
-
- 例如,我们严格限制访问信息的人员范围,要求他们遵守保密义务,并进行审查。
-
-
- 若发生个人信息泄露等安全事件,我们会启动应急预案,阻止安全事件扩大,并以推送通知、公告等形式告知您。
-
-
-
-
-
-
- 广告
-
-
- 我们可能使用您的相关信息,在相关网站、应用及其他渠道向您提供与您更加相关的广告。
-
-
-
-
-
- 适用范围
-
-
- 我们的所有服务均适用本政策。
-
-
-
- 某些服务有其特定的隐私指引/声明,该特定隐私指引/声明更具体地说明我们在该服务中如何处理您的信息。
-
-
- 如本政策与特定服务的隐私指引/声明有不一致之处,请以该特定隐私指引声明为准。
-
-
- 请您注意,本政策不适用由其他公司或个人提供的服务。
-
-
- 例如,您通过使用微信帐号登录其他公司或个人提供的服务。
-
-
- 您使用该等第三方服务须受其隐私政策(而非本政策)约束,您需要仔细阅读其政策内容。
-
-
-
-
-
-
- 联系我们
-
-
- 如您对本政策或其他相关事宜有疑问,请通过 https://www.ccsens.com 与我们联系。
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/pages/punch-the-clock/punch-the-clock.vue b/pages/punch-the-clock/punch-the-clock.vue
deleted file mode 100644
index 334d2af..0000000
--- a/pages/punch-the-clock/punch-the-clock.vue
+++ /dev/null
@@ -1,559 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/pages/service-agreement/service-agreement.vue b/pages/service-agreement/service-agreement.vue
deleted file mode 100644
index 16eb762..0000000
--- a/pages/service-agreement/service-agreement.vue
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
- 用户服务协议
-
-
- 一、特别提示
-
-
- 在此特别提醒您(用户)在使用tall健康码之前,请认真阅读本《tall健康码用户服务协议》 (以下简称“协议”),确保您充分理解本协议中各条款。请您审慎阅读并选择接受或不接 受本协议。除非您接受本协议所有条款,否则您无权注册、登录或使用本协议所涉服务。您的注册、登录、使用等行为将视为对本协议的接受,并同意接受本协议各项条款的约束。
-
-
-
-
- 二、账号注册
-
- 1、tall健康码以微信小程序方式提供服务,不需要用户刻意注册,我们会通过调用微信接口自动使用您在微信平台的身份信息。
- 2、本系统面向特定用户群体,在登录系统后,需要您填写在该群体下的特定用户信息,tall健康码需要搜集能识别用户身份的个人信息以便传控科技可以在必要时联系用户,或为用户提供更好的使用体验。
-
-
-
- 三、账户安全
-
-
- 1、用户一旦注册/登录成功,成为tall健康码的用户,传控科技会尽最大限度保证用户的账户信息安全。
-
-
-
-
- 四、服务内容
-
-
- 1、上报健康信息
-
-
- 2、查询疫情情况
-
-
- 3、查询个人打卡轨迹
-
-
-
-
- 五、服务的终止
-
-
- 1、在下列情况下,传控科技有权终止向用户提供服务:
-
-
- 1)在用户违反本服务协议相关规定时,传控科技有权终止向该用户提供服务。
-
-
- 2)用户不得通过程序或人工方式进行恶意注册,若发现用户有该类行为,传控科技将立即终止服务,并有权扣留账户内金额。
-
-
-
-
- 六、免责与赔偿声明
-
-
- 1、请用户在使用过程中,对自己的账号密码妥善保管,不要告知他人,避免给您带来不必要的损失。
-
-
- 2、本协议最终解释权归安庆公共交通有限公司(简称“传控科技”)所有。
-
-
- 3、本协议从 2020年3月1日起适用
-
-
-
-
-
-
\ No newline at end of file
diff --git a/pages/sign/sign.vue b/pages/sign/sign.vue
deleted file mode 100644
index 0a654b4..0000000
--- a/pages/sign/sign.vue
+++ /dev/null
@@ -1,143 +0,0 @@
-
-
-
-
- {{ site.siteName }}
-
-
-
-
-
- 打卡成功
-
-
-
-
-
-
-
-
diff --git a/pages/statistics/components/date-selector.vue b/pages/statistics/components/date-selector.vue
deleted file mode 100644
index bf8d945..0000000
--- a/pages/statistics/components/date-selector.vue
+++ /dev/null
@@ -1,124 +0,0 @@
-
-
-
-
-
-
- 选择时间
- {{ date }}
-
-
-
-
-
-
-
-
-
-
diff --git a/pages/statistics/components/health-data.vue b/pages/statistics/components/health-data.vue
deleted file mode 100644
index 44bf7c2..0000000
--- a/pages/statistics/components/health-data.vue
+++ /dev/null
@@ -1,90 +0,0 @@
-
-
-
-
-
-
-
- 健康上报
-
-
-
-
-
-
- {{ item.number }}
- {{ item.name }}
-
-
-
-
-
-
-
-
-
diff --git a/pages/statistics/components/location-map.vue b/pages/statistics/components/location-map.vue
deleted file mode 100644
index b18fcde..0000000
--- a/pages/statistics/components/location-map.vue
+++ /dev/null
@@ -1,57 +0,0 @@
-
-
-
-
-
-
-
- 校园打卡
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/pages/statistics/statistics.vue b/pages/statistics/statistics.vue
deleted file mode 100644
index 6498f4f..0000000
--- a/pages/statistics/statistics.vue
+++ /dev/null
@@ -1,80 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/pages/user-code/user-code.vue b/pages/user-code/user-code.vue
deleted file mode 100644
index 645b9c6..0000000
--- a/pages/user-code/user-code.vue
+++ /dev/null
@@ -1,196 +0,0 @@
-
-
-
-
-
- 个人申报信息
-
- {{ userInfo.name }}
- {{ post }}
-
-
-
- 手机号:
- {{ userInfo.phone }}
-
-
- 学号:
- {{ userInfo.no }}
-
-
- 登记时间:
- {{ time }}
-
-
- 健康状态:
- {{ level }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/plugins/request/index.js b/plugins/request/index.js
index 8da73a3..114ea53 100755
--- a/plugins/request/index.js
+++ b/plugins/request/index.js
@@ -92,9 +92,9 @@ http.interceptor.response(
/* 请求之后拦截器 */
if (response.data.code !== ERR_CODE) {
// 服务端返回的状态码不等于200,则reject()
- return Promise.reject(response.data);
+ return Promise.reject(response.data.msg);
}
- return response;
+ return response.data.data;
},
response => {
// 请求错误做点什么
diff --git a/static/head-portrait.png b/static/head-portrait.png
deleted file mode 100644
index b45d79ced1a7506a97727a2cf80fa1d3937606f7..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 20457
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
diff --git a/static/img/home.png b/static/img/home.png
deleted file mode 100644
index 3d9412aaf1dc1d5ad9823a875a4cd55a8cfa290b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 2637
zcmZ`*c{J307yk`SVJtJrPBLU^EHm~c`(W(5EXi){!VKA`kg=!m$Px(=#+oS^Hl=?x)pu2rq!*F
zTZNHkR+D_ao##St!_CKu$t>0OPhkGh@n*i((&cJqGQ|sRs5tKK9-M{w2amAXbH(z;
zDWbZ{%&Bj-m4syoMDEmXS(9n63w%{i?h3ujZLTbTbERS6^sqO$ww1E~acOS$B>Hr!
zWsi4Ab!CR7vvIFLwGHS&GXCTJyhT@r_=L!%poJMAA=Nk=Uxo5A^O6_Zm3@7-X^(CB
z`Hbacp}+Tk7#2W(VdgtjgmjETQ^gQ6kVYgVQG4yMijRF8ws>Qp!)ByWj|EnuI%#2T
zoiP7|c|xjVhoat|5aViUoYssHZ&VNxX^U@>ZnC)mZNO~Sjr@?^yFPe
zfBrKB!j6*IqaA|CxNx)fgUD`n4*PX^r;#FkLs~$9c+rME6WaRZ4ZXafIm`z|uW4r&
zydYn#7aiTP>oB^gDC?i+OCjS8*LD%cFH=_aL9;Fb{6z$|(R`ZL9xb&z0&Be>7?+44
z&iIyt4pQU;F1+6H<<5C1CUW-0J&<6@{Xb>RufOS7Js^CoySMk<0X89CtRh~@KO}f~
zpKx9a%C;-7upUObzNW^KWL4d@zx`#aL)1v-dF#jL2R(Gt&pUk%$j!}ZgxXK6iYY14
z<{I<@L{A`uwp(;rM0@k)Xy4
z;s<9!TbSP!A9Ll)(+f(J?C;=|MtcQIhtaPJsMg(0a@-14F0WL_RiqJWU_JccEa;sI
zGdFTc?c29PDIdg4a-E5m7ep?mxQ{l^#-OTp)^d2B|Q@
z1#p?=0tcPqVw%c>PsK>#*MMXlOl`{QAq#}%uV!n5wvUU{QLYvGm|CVm7Ur&r3I8)$
z@9#{*%qIJapU)WUkJc!p*WHzuU3F3*HDnJy+NwD`zPfodnqHfMZgw
zranY!4qc*GoC<~y@9$1qBsPhyUNuRkg|L6>#Aw~{6YtP&tUT&Ym|Lfd?Fk1*7ks;X
zxhtu~RxY?SS1O)}5XTL#B;!n;E;opV6xcSub;O7fFngA*osUShy*jA|=?15hiL~by
zAjgHltmhZwd)drNAX-5xqO0UD&|@jg_L^{!07KV{klM})y8ODP=-V?1udbD7+4c`C
zG1lxgV#9}j#FA0HUpo+dRJcp81{?Ew^C4NyND*R-W(NtyoXBW
znjqj)(;jI>4i?P?7ucCK&iXx@iyA5#lYGU1V2XU@}nkr5Hf=kkz
zkv5lgR&Xv7{;_E{i(y@gC3~57*)@**-keb?o351w{a#j&OiwZzui_{>r{cA|{l(uV
z;;Qk6r8xH*(@No&-k-}$gN?^KnZ^QTW2IF!s)M%Nm?Ysh
zIXv}l6sehDLmGA8)l5GiC#y-QzE(InvJ9(#C`>*gMSV8f=^YK2Ey&jF5eq+wC_B>h
zrit+?r^9K5ZlDj$HB!-676t}>*4p+n;XP%5$-{T8*p~h@9)KV*HFfBvoj1YBV`%vL
zXvCy2`OFNo?L4b7o3M1IE^CDop0^H$+Hii~m1e1}T}BZqe2Q+>;PLV8z&ozkXjqL;
z^oi&$C`IwHFDt*emZ2f&tTT@Gf%DC)yWcrxjk?VriGrViC$}FoFU>!K0Jl|K`0JRk
zxfDyo*yxC+4^X$7Q`JkQd_CN7V+G{sSGh9IjJx5sO>*(X#q*RMj0s~(Uq1~
zSz{BHh*n)kx0v5^9cwZ(x^}K51<>1q3r!JWkY}O81|wQ4INlGCQYk+6FOXZeQS;rOkdn
zO9U5+cb$#g@IANrW_PLDHvBkN&;5?Mwf<34J
zNFz~-5=cb}l!6rsrHoWmmXk(MBNBO_$vO3Z0{=jFZ_n_57Z7=iJ*WcHKNCVivC6J4
zAs!O=U~jJLl=X~7TQ#Lc%^iems3Ph{*IVno_s9L#I%lu*owLtg>-@8Cxx3jz#TCQ>0Dw9=
z*m?-?>|RKT3i8(Re2M^sL#$n`0iY&Zf*&X%s6o*l_BKFO-_g&4LOIyM!xaGH)B%8Y
zO+XQR(G~!J0tbLE7yvN20|0VSMU7|81P#$3XM0-#3f?A)l`H_UCT?RLfb^JNJjTA>QVV0ru)pu$2`%2vh?g>HI%)4e+p=tl1upKf6h*#wN9NG#}q(u%_7){qynt3Fhp8mH?|$6?q;`|4o_MNOM~I8;8^8AMY{R%+%FZU*0JR35R3
zAFI#vT0$r-_x87;s10F^C>#K`OTnme%f295;E!i2{2b|
z(q+Vs-;!h){g92~9py6jn}j
zHY9@35+b9ay9E5aX6N>^O{`yWi3$1Eqe@9wdE$I=ZsY-E
zzB@zlnGLC5=_AUd9X=kH-rIL(|LXS4BhO)xBV)lX>^H&+Si{K17=t}AV;~!7djgp?5xA$D+|cyz)dB4m%#4xw9*reOYg0!$;ey%Kw;g
zK~vw>NoMHncdJe^zT7eYa=&v6rr6gS{UyhY^;nl)ueUG@%R8pI!IHTUNtXxFqwAD<
zPtU~Wp@iD9;0L?%t#a^a$DTAI!*dQsc=^KEoMroI^@3ujAL|4+@rhA!6Pd6Un<0%|
zSlyq@u2G8YU0P#Y>0eXtEHbXW#-{pM>$f@6yM{==RPRXzO1=($b_sksaTkBGjs^
zB{TmN>RO-7w5kz*Xg9pY+Z&9Kc<5wHjF0*_Dl^HP{{hw$5~6pm*p!BRhcGQVo37L-
zRU?KZnpWO)2cMABJCdq4GxkE~Q!;IEuys$MIlg1RyRnYU%+PC9ZLI`Ii?{H_Ce3@Z
z6b!W?nP-rcvoVpqem++Wgqm;h-sn
zP2QJn6xV6_(+%@5PdzK81V$+a!pM*5NoQqvOs2!W*=!mQ498Y%_h!>eN|qsuYs8N>
zsQvPr+6J)f-Fgd=d-u*x`GT*^NS|2I4GId-sKtP2kRmX^MoI7>aq*s6cTEYF+r;D-
z$z{~O(%874Zq8d$1}Uw|#)*wP6kmW$={mtz>g-7$-kM>3kThFk6ko4Y@$+NTL~8G2
zqFhJOIR`Asaq&pC&%5I5`BY1xm&6=92H}5J(yPA5><1yX0j%LaONTi7M
z%F4b~xn&+}G%e_Pqe<;l4^nt$W>RbjT-`jk787;;?UM8?h`+BkRF;MUI0aIG5WSUx
z^Ury#^)!S3Wku}SBo`Q%I54SUg{wFlm}E6KUnbjZb-AYgrkv&}v55eE-$+VPdwl!L
zZG2^g-FFw21avniD~tNVqB1tLnarmd}9HZEgI`ZdpUyS#gC2BoXLYW=iVA
zi`IYB9!}My5W$wa{4c>WAbEMWZ0$fkN`e0E+cJu+e1ZNimC74N3d5GAm1o6I=Kk)Xg8Du#BV%vm1q{_OXQr
z2ixN;YNoch92}eYy0STe+0k~;Axt}Fx<<@zp``qk&q>K7k0Di$-)7gS=;&j`k;WZU+AfykI>m_6wE9p>p^QhUv+VcO|
z(SM9dycIU|0Kr+rGn1mAma2l?U)P*B;^$}kB`X+FMi6K%O
zjx>S8F^r=Ev;H4KcqEo^>B`>|q+gdK1qAm!h3J?Nlc2z8oGyh#04@=TI1?BQhK~%#
z!2+@2ga{ZRI5I-_Qe*@fMh=hqRRtK4DG{;3L@L4%3k#$WbbpQPQS=1M{_U2bA=nK#
M+PT?Q*Bm<6iCKGX2L&a+*feE
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