diff --git a/changelog.txt b/changelog.txt
index 4b0d7ac..3aba882 100644
--- a/changelog.txt
+++ b/changelog.txt
@@ -1,3 +1,16 @@
+## v0.13.3
+ * A 增加实名认证界面
+ * A 增加数据异常监测上报
+ * U iconfont组件优化
+ * F 登录Cookies解析失败
+
+## v0.13.2
+ * A iconfont
+ * A 首页根据身份提供创建课程选项
+ * A 显示身份认证的状态
+ * F cookies失效登录失败时用户界面显示错误
+ * F 实训测试集解析错误
+
## v0.13.1
* A 修改个人信息界面
* F 头像更改界面高度异常
diff --git a/miniprogram/account/pages/account/account.js b/miniprogram/account/pages/account/account.js
index 25fee50..0350d1d 100644
--- a/miniprogram/account/pages/account/account.js
+++ b/miniprogram/account/pages/account/account.js
@@ -1,17 +1,9 @@
+import {accountManager} from "../../../js/utils";
const app = getApp();
-const {key:_key} = require("../../../js/client");
-
-const key = {
- save_password: "we,nd;ke;hcy",
- login: "login",
- password: "Fie[R‘xu[Eu?ua;c",
- _password:_key.password
-}
-
Page({
data: {
- imgDir: global.config.imgDir,
+ attachDir: global.config.attachDir,
action:"login",
code_button_text:"获取验证码",
action_text:{login:"登录",register:"注册", reset:"找回密码"},
@@ -40,7 +32,7 @@ Page({
}
})
.then(res=>{
- this.setData({hasError:0});
+ this.setData({hasError:0,error:""});
})
.catch(e=>{
var hasError = e.message.indexOf("网络")!=-1?2:1;
@@ -48,22 +40,27 @@ Page({
})
},
login_test(){
- var data = {login:"educoder_weapp@126.com", password:"abcdefgh"};
+ var data = {login:"educoder_weapp@126.com",save_password:1, password:"abcdefgh"};
this.setData(data);
this.login(data);
// this.setStorage({...data,save_password:1});
},
- login({login, password, showToast=1}){
+ login({ login, password, save_password, showToast=1}){
app.api("accounts.login")({login,password})
.then(res=>{
res.message="登录成功";
if (showToast)
app.showMsg(res);
+ let account = { ...res, login, password, save_password };
+ if(this.data.addaccount)
+ accountManager.addAccount(account,0);
+ accountManager.setCurrentAccount(account);
this.navBack();
})
.catch(e=>{
if (showToast)
app.showError(e);
+ console.error(e);
})
},
register({login, password, code}){
@@ -75,13 +72,13 @@ Page({
app.showError(e);
})
},
- reset({ login, password: new_password,password_confirmation: new_password_confirmation, code, no_login}){
+ reset({ login, password: new_password, password_confirmation: new_password_confirmation, save_password ,code, no_login}){
app.api("accounts.reset_password")({login, new_password, new_password_confirmation, code})
.then(res=>{
res.message = "重置成功";
app.showMsg(res);
if(!no_login)
- this.login({login, password:new_password, showToast:0});
+ this.login({ login, password: new_password, save_password, showToast:0});
})
.catch(e=>{
app.showError(e);
@@ -128,7 +125,6 @@ Page({
this.setAction(target.id);
return this.validLogin(value.login);
}
- this.setStorage(value);
this[target.id](value);
},
checkInput({value, action}){
@@ -168,27 +164,17 @@ Page({
onLoad: function (options) {
let {action="login"} = options;
this.setAction(action);
- this.getStorage();
- },
- setStorage({login, password, save_password}){
- wx.setStorageSync(key.login, login);
- wx.setStorageSync(key._password, password);
- wx.setStorageSync(key.save_password, save_password);
- if(save_password)
- wx.setStorageSync(key.password, password);
- else
- wx.clearStorageSync(key.password);
- },
+ this.setData(options);
+ if(!options.nostorage)
+ this.getStorage();
+ },
getStorage(){
- let save_password = wx.getStorageSync(key.save_password);
- if(save_password!==0)
- save_password = 1;
- let login = wx.getStorageSync(key.login);
- if(save_password)
- var password = wx.getStorageSync(key.password);
- else
- var password = "";
- this.setData({save_password, login, password});
+ let account = accountManager.getCurrentAccount();
+ if(account){
+ let {login, password, save_password=0} = account;
+ password = save_password?password:'';
+ this.setData({login, password, save_password});
+ }
},
navBack(){
setTimeout(()=>{
diff --git a/miniprogram/account/pages/account/account.json b/miniprogram/account/pages/account/account.json
index f5d7ecd..7f866c4 100644
--- a/miniprogram/account/pages/account/account.json
+++ b/miniprogram/account/pages/account/account.json
@@ -1,4 +1,6 @@
{
- "usingComponents": {},
+ "usingComponents": {
+ "iconfont":"/components/iconfont/iconfont"
+ },
"navigationBarTitleText": "账号"
}
\ No newline at end of file
diff --git a/miniprogram/account/pages/account/account.wxml b/miniprogram/account/pages/account/account.wxml
index 7208c6f..a935672 100644
--- a/miniprogram/account/pages/account/account.wxml
+++ b/miniprogram/account/pages/account/account.wxml
@@ -1,15 +1,15 @@
-
- {{error}}
+
+ {{error}}
-
+
所在地
- {{locations[location_index]}}-{{cities[city_index]}}
+ {{locations[location_index]}} {{cities[city_index]||'请选择'}}
@@ -52,15 +52,17 @@
- 学校/单位
+ {{identity_index<0?'学校/单位':identity_index==2?'单位':'学校'}}
{{school_name||'请选择'}}
- 院系/部门
+ {{identity_index<0?'院系/部门':identity_index==2?'部门':'院系'}}
{{departments[department_index].name||department_name||'请选择'}}
-
+
\ No newline at end of file
diff --git a/miniprogram/account/pages/profile/profile.wxss b/miniprogram/account/pages/profile/profile.wxss
index e0b1fb8..e8b7c28 100644
--- a/miniprogram/account/pages/profile/profile.wxss
+++ b/miniprogram/account/pages/profile/profile.wxss
@@ -1,8 +1,9 @@
-.profile,page{
- background: #eeeeee;
+@import "../form-item-common.wxss";
+.profile, page {
height: 100%;
}
-.header{
+
+.header {
display: flex;
align-items: center;
justify-content: space-between;
@@ -11,7 +12,8 @@
padding: 0 8px 0 16px;
position: relative;
}
-.header>.error{
+
+.header>.error {
position: absolute;
top: 0;
left: 0;
@@ -27,45 +29,32 @@
z-index: -1;
opacity: 0;
}
-.error.show{
+
+.error.show {
opacity: 1;
z-index: 100;
}
-.header>button{
+.header>button {
margin: 2px 0;
display: flex;
align-items: center;
}
-.form-item{
- background: #fefefe;
- display: flex;
- justify-content: space-between;
- align-items: center;
- padding: 10px 12px;
- margin-bottom: 1px;
-}
-.form-item>.value{
- text-align: right;
- flex: auto;
-}
-.form-item>.key{
- display: inline-block;
- flex: none;
-}
-.form-item .tip{
- font-size: 12px;
- color: dimgray;
-}
-.form-item>switch{
- transform: scale(0.8)
-}
-.gap{
+
+.gap {
height: 3px;
}
-.avatar{
+
+.avatar {
border-radius: 50%;
height: 30px;
width: 30px;
margin: 0 14px;
-}
\ No newline at end of file
+}
+
+.footer {
+ font-size: 24rpx;
+ text-align: center;
+ margin-top: 12px;
+ color: grey;
+}
diff --git a/miniprogram/app.js b/miniprogram/app.js
index 32c31d3..e784941 100644
--- a/miniprogram/app.js
+++ b/miniprogram/app.js
@@ -95,7 +95,7 @@ App({
shareApp({ imageUrl, path, title }) {
return {
title: title || "EduCoder教学",
- imageUrl: imageUrl || "",
+ imageUrl,
path
}
}
diff --git a/miniprogram/app.json b/miniprogram/app.json
index c27d61e..a4ac82b 100644
--- a/miniprogram/app.json
+++ b/miniprogram/app.json
@@ -11,7 +11,8 @@
"pages/findmore/findmore",
"pages/home/home",
"pages/tidings/tidings",
- "components/rich-md/rich-md"
+ "components/rich-md/rich-md",
+ "dev/pages/dev/dev"
],
"subpackages": [
{
@@ -23,7 +24,10 @@
"pages/profile/profile",
"pages/account/account",
"pages/signUp/signUp",
- "pages/profile/school_select/school_select"
+ "pages/profile/school_select/school_select",
+ "pages/authentication/authentication",
+ "pages/pro_authentication/pro_authentication",
+ "pages/accounts/accounts"
]
},
{
@@ -36,7 +40,11 @@
"root": "course",
"pages": [
"pages/course/course",
- "pages/course_invite/course_invite"
+ "pages/course_invite/course_invite",
+ "pages/course_setting/course_setting",
+ "pages/attendance_detail/attendance_detail",
+ "modules/attendance/attendance",
+ "pages/attendances/attendances"
]
},
{
diff --git a/miniprogram/app.wxss b/miniprogram/app.wxss
index 5e76a17..67a633c 100644
--- a/miniprogram/app.wxss
+++ b/miniprogram/app.wxss
@@ -1,5 +1,5 @@
page {
- background-color: #f1f1f1;
+ background-color: #f2f2f2;
}
.flex-wrap{
display: flex;
diff --git a/miniprogram/components/add-tips/add-tips.js b/miniprogram/components/add-tips/add-tips.js
index 37b4fc0..660318b 100644
--- a/miniprogram/components/add-tips/add-tips.js
+++ b/miniprogram/components/add-tips/add-tips.js
@@ -8,14 +8,15 @@ Component({
},
duration: {
type: Number,
- value: 3000
+ value: 3
}
},
data: {
SHOW:false,
SHOW_TOP: true,
SHOW_MODAL: false,
- statusBarHeight:20
+ statusBarHeight:20,
+ attachDir:global.config.attachDir
},
ready: function () {
diff --git a/miniprogram/components/add-tips/add-tips.wxml b/miniprogram/components/add-tips/add-tips.wxml
index 4655cae..ecfe553 100644
--- a/miniprogram/components/add-tips/add-tips.wxml
+++ b/miniprogram/components/add-tips/add-tips.wxml
@@ -3,18 +3,18 @@
{{text}}
- ╳
+
1. 点击右上角按钮
-
+
2. 点击「添加到我的小程序」
-
+
diff --git a/miniprogram/components/course-item/course-item.js b/miniprogram/components/course-item/course-item.js
index e8dc814..d6077b6 100644
--- a/miniprogram/components/course-item/course-item.js
+++ b/miniprogram/components/course-item/course-item.js
@@ -40,7 +40,7 @@ Component({
methods: {
showAction(){
let itemList = this.getActions();
- console.log(itemList);
+ //console.log(itemList);
let course = this.data.data;
wx.showActionSheet({
itemList,
@@ -57,7 +57,7 @@ Component({
var flag = true;
var action = actions[name];
for(var cdt in action.cd){
- console.log(action.cd[cdt],this.data.data[cdt])
+ //console.log(action.cd[cdt],this.data.data[cdt])
if(action.cd[cdt].indexOf(this.data.data[cdt])==-1){
flag=false;
break;
diff --git a/miniprogram/components/course-item/course-item.json b/miniprogram/components/course-item/course-item.json
index a6f9a38..cfe174d 100644
--- a/miniprogram/components/course-item/course-item.json
+++ b/miniprogram/components/course-item/course-item.json
@@ -1,6 +1,8 @@
{
"component": true,
- "usingComponents": {},
+ "usingComponents": {
+ "iconfont":"../iconfont/iconfont"
+ },
"navigationBarBackgroundColor": "#00b0f0",
"navigationBarTextStyle": "white"
}
\ No newline at end of file
diff --git a/miniprogram/components/course-item/course-item.wxml b/miniprogram/components/course-item/course-item.wxml
index 9a94c1d..1149a41 100644
--- a/miniprogram/components/course-item/course-item.wxml
+++ b/miniprogram/components/course-item/course-item.wxml
@@ -1,11 +1,21 @@
-
+
-
+
{{data.name}}
- {{data.school}} {{data.creator}}
+
+ {{data.school}}
+ {{data.creator}}
+
+
+ {{data.course_members_count}}
+
+ {{data.visits}}
+
\ No newline at end of file
diff --git a/miniprogram/components/course-item/course-item.wxss b/miniprogram/components/course-item/course-item.wxss
index 512de66..21e077c 100644
--- a/miniprogram/components/course-item/course-item.wxss
+++ b/miniprogram/components/course-item/course-item.wxss
@@ -24,14 +24,14 @@
}
.action{
width: 22px;
- height: 20px;
- padding: 2px 9px;
+ height: 18px;
+ padding: 1px 9px 0 0;
}
.course{
color: white;
font-size:13px;
border-radius: 5px;
- padding: 0px 2px 18px 8px;
+ padding: 0px 2px 12px 8px;
position: relative;
overflow: hidden;
}
@@ -68,8 +68,14 @@
white-space: nowrap;
font-size: 17px;
font-weight: bold;
- margin-bottom: 7px;
}
.school{
padding-right: 10px;
+}
+.info{
+ margin: 2px 0;
+}
+.detail-num{
+ margin-right: 12px;
+ margin-left: 4px;
}
\ No newline at end of file
diff --git a/miniprogram/components/iconfont/iconfont.js b/miniprogram/components/iconfont/iconfont.js
new file mode 100644
index 0000000..a162998
--- /dev/null
+++ b/miniprogram/components/iconfont/iconfont.js
@@ -0,0 +1,57 @@
+Component({
+ externalClasses: ['class'],
+
+ properties: {
+ info: String,
+ type: String,
+ size: {
+ type:Number,
+ value: 23
+ },
+ fontsize:{
+ type:Number
+ },
+ color: {
+ type:String,
+ value:"inherit"
+ },
+ showtype:{
+ type:String,
+ value:"default"
+ },
+ duration:{
+ type:Number,
+ value:1500
+ }
+ },
+
+ methods: {
+ onTap() {
+ let {info, showtype, duration} = this.data;
+ if(info){
+ if(showtype=='toast')
+ wx.showToast({
+ title: info,icon:"none", duration
+ })
+ else if(showtype=='modal')
+ wx.showToast({
+ title: info, showCancel:false,duration
+ })
+ else
+ this.showInfo()
+ }
+ },
+ showInfo(){
+ if (this.timeid)
+ clearTimeout(this.timeid);
+ this.setData({showInfo:1});
+ this.timeid = setTimeout(() => {
+ this.hideInfo();
+ },this.data.duration);
+ },
+ hideInfo(){
+ this.setData({showInfo:0});
+ this.timeid = null;
+ }
+ }
+});
\ No newline at end of file
diff --git a/miniprogram/components/iconfont/iconfont.json b/miniprogram/components/iconfont/iconfont.json
new file mode 100644
index 0000000..e8cfaaf
--- /dev/null
+++ b/miniprogram/components/iconfont/iconfont.json
@@ -0,0 +1,4 @@
+{
+ "component": true,
+ "usingComponents": {}
+}
\ No newline at end of file
diff --git a/miniprogram/components/iconfont/iconfont.wxml b/miniprogram/components/iconfont/iconfont.wxml
new file mode 100644
index 0000000..b1e2539
--- /dev/null
+++ b/miniprogram/components/iconfont/iconfont.wxml
@@ -0,0 +1,6 @@
+
+
+
+ {{info}}
+
+
diff --git a/miniprogram/components/iconfont/iconfont.wxss b/miniprogram/components/iconfont/iconfont.wxss
new file mode 100644
index 0000000..bd10fec
--- /dev/null
+++ b/miniprogram/components/iconfont/iconfont.wxss
@@ -0,0 +1,109 @@
+@font-face {
+ font-family: 'iconfont'; /* project id 1656783 */
+ src: url('//at.alicdn.com/t/font_1656783_u55yruw45f.eot');
+ src: url('//at.alicdn.com/t/font_1656783_u55yruw45f.eot?#iefix') format('embedded-opentype'),
+ url('//at.alicdn.com/t/font_1656783_u55yruw45f.woff2') format('woff2'),
+ url('//at.alicdn.com/t/font_1656783_u55yruw45f.woff') format('woff'),
+ url('//at.alicdn.com/t/font_1656783_u55yruw45f.ttf') format('truetype'),
+ url('//at.alicdn.com/t/font_1656783_u55yruw45f.svg#iconfont') format('svg');
+}
+.iconfont {
+ display: inline-block;
+ position: relative;
+ font-family: "iconfont" !important;
+ font-style: normal;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+.info {
+ text-align: center;
+ min-width: 3.2em;
+ background-color: #555555;
+ padding:3px 5px;
+ border-radius: 6px;
+}
+.triangle{
+ height: 0px;
+ width: 0px;
+ border-bottom: solid 5px #555555;
+ border-right: solid 4px transparent;
+ border-left: solid 4px transparent;
+}
+.info-wrap {
+ position: absolute;
+ left: 50%;
+ transform: translateX(-50%);
+ font-size: 0.54em;
+ color: #fff;
+ font-family: PingFang SC, Helvetica Neue, Arial, sans-serif;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ opacity: 0.9;
+}
+
+
+.icon-xiugaimima:before {
+ content: "\e68b";
+}
+
+.icon-guanyu:before {
+ content: "\e693";
+}
+
+.icon-kefu:before {
+ content: "\e630";
+}
+
+.icon-wode-zhiyerenzheng:before {
+ content: "\e6a7";
+}
+
+.icon-shimingrenzheng:before {
+ content: "\e637";
+}
+
+.icon-fankui:before {
+ content: "\e694";
+}
+
+.icon-banben:before {
+ content: "\e687";
+}
+
+.icon-paizhao:before {
+ content: "\e63d";
+}
+
+.icon-visit-num:before {
+ content: "\e629";
+}
+
+.icon-member-count:before {
+ content: "\e62a";
+}
+
+.icon-certification:before {
+ content: "\e624";
+}
+
+.icon-authentication:before {
+ content: "\e713";
+}
+
+.icon-filter:before {
+ content: "\e6c7";
+}
+.icon-saoma:before{
+ content: "\e7f3"
+}
+.icon-jinru:before{
+ content: "\e657"
+}
+.icon-qiehuanzhanghao:before{
+ content: "\e688";
+}
+.icon-yiwen:before{
+ content: "\e600";
+}
\ No newline at end of file
diff --git a/miniprogram/components/require-login/require-login.js b/miniprogram/components/require-login/require-login.js
index 02c9f36..1d66801 100644
--- a/miniprogram/components/require-login/require-login.js
+++ b/miniprogram/components/require-login/require-login.js
@@ -4,6 +4,10 @@ Component({
user_id:{
type:Number
},
+ message:{
+ type:"String",
+ value:"点击登录,获取更多内容"
+ },
bg:{
type:String,
value:"#0080f0"
diff --git a/miniprogram/components/require-login/require-login.wxml b/miniprogram/components/require-login/require-login.wxml
index 025e5e4..0cd05ff 100644
--- a/miniprogram/components/require-login/require-login.wxml
+++ b/miniprogram/components/require-login/require-login.wxml
@@ -1,3 +1 @@
-
- 点击登录,获取更多内容
-
\ No newline at end of file
+{{message}}
\ No newline at end of file
diff --git a/miniprogram/components/rich-md/rich-md.js b/miniprogram/components/rich-md/rich-md.js
index ed0963d..b228dd3 100644
--- a/miniprogram/components/rich-md/rich-md.js
+++ b/miniprogram/components/rich-md/rich-md.js
@@ -2,7 +2,7 @@ if (!global.towxml)
global.towxml = require('../../towxml/index');
Component({
- externalClasses: ['my-class'],
+ externalClasses: ['my-class',"class"],
properties: {
nodes:{
type:String,
diff --git a/miniprogram/components/rich-md/rich-md.wxml b/miniprogram/components/rich-md/rich-md.wxml
index 065af80..d4176c7 100644
--- a/miniprogram/components/rich-md/rich-md.wxml
+++ b/miniprogram/components/rich-md/rich-md.wxml
@@ -1,4 +1,4 @@
-
+
{{nodes}}
diff --git a/miniprogram/components/tiding-item/tiding-item.js b/miniprogram/components/tiding-item/tiding-item.js
index aafbe00..e53f681 100644
--- a/miniprogram/components/tiding-item/tiding-item.js
+++ b/miniprogram/components/tiding-item/tiding-item.js
@@ -1,11 +1,21 @@
const app = getApp();
-const route = {
+const { processObj, get, format } = require("../../js/utils");
+
+const ROUTE = {
Course:{
- Exercise:"{exercise_cover}?exercise_id=${container_id}",
- HomeworkCommon:"{course}?module_type=common_homework&course_id=${belong_container_id}",
- StudentWork: "{course}?module_type=common_homework&course_id=${belong_container_id}",
+ Exercise:{
+ __:"{exercise_cover}?exercise_id=${container_id}"
+ },
+ HomeworkCommon:{
+ __:"{course}?module_type=common_homework&course_id=${belong_container_id}",
+ practice: "{shixun_homework}?homework_id=${container_id}"
+ },
+ StudentWork:{
+ __:"{course}?module_type=common_homework&course_id=${belong_container_id}",
+ }
}
}
+processObj(ROUTE);
Component({
properties: {
@@ -18,16 +28,13 @@ Component({
methods: {
enterDetail(){
let {data} = this.data;
- try{
- var url = route[data.belong_container_type][data.container_type];
- }catch(e){
- return;
- }
- if(!url) return;
- console.log(url);
- url = url.replace(/\$\{(.*?)\}/g,function(match, name){
- return data[name]||'';
- });
+ let route = get(ROUTE,data.belong_container_type,{});
+ route = get(route, data.container_type,{});
+ route = get(route, data.homework_type);
+ console.log(route);
+ if(!route) return;
+ let url = format(route, data);
+ console.log("navutl", url);
app.navigateTo({url});
}
}
diff --git a/miniprogram/config.js b/miniprogram/config.js
index 6fa6acf..e97ed65 100644
--- a/miniprogram/config.js
+++ b/miniprogram/config.js
@@ -5,9 +5,16 @@ const developUrl = "https://test-newweb.educoder.net";
const trialUrl = "https://pre-newweb.educoder.net";
const releaseUrl = "https://www.educoder.net";
-let _version = "0.13.1";
+let _version = "0.14.0";
var eduUrl = releaseUrl;
/**
+ * A 职业认证页面
+ * A 学生课堂签到模块
+ * A 切换账号功能
+ * U 个人中心增加图标
+ * U iconfont增加modal与toast提示方式
+ * U 图片资源转移服务器
+ * F 实名认证证件上传判断bug
*/
export function switchEnv(env) {
@@ -33,6 +40,7 @@ const config = global.config = {
envVersion,
env:envVersion,
get apiRoot(){return eduUrl + "/api/"},
+ get attachDir(){return eduUrl + "/api/attachments/"},
cloudDir,
get eduUrl(){return eduUrl},
imgDir: cloudDir + "images/",
@@ -44,7 +52,7 @@ const config = global.config = {
]
};
-
+envVersion="release";
switchEnv(envVersion=="develop"?"trial":"release");
module.exports = config;
\ No newline at end of file
diff --git a/miniprogram/course/modules/activity/activity.js b/miniprogram/course/modules/activity/activity.js
index f2179dd..915c420 100644
--- a/miniprogram/course/modules/activity/activity.js
+++ b/miniprogram/course/modules/activity/activity.js
@@ -2,10 +2,12 @@ const app = getApp();
Component({
properties: {
course_id:Number,
+ course_identity:Number,
refresh: {
type: Boolean,
observer: function (v) {
if (v) {
+ //console.log("observer refresh");
this.refresh({refresh:1});
this.setData({ refresh: false });
}
diff --git a/miniprogram/course/modules/activity/activity.wxml b/miniprogram/course/modules/activity/activity.wxml
index 1192011..9397824 100644
--- a/miniprogram/course/modules/activity/activity.wxml
+++ b/miniprogram/course/modules/activity/activity.wxml
@@ -1,5 +1,5 @@
-
+
diff --git a/miniprogram/course/modules/activity/activity_group/activity_group.js b/miniprogram/course/modules/activity/activity_group/activity_group.js
index 3f5169d..8875722 100644
--- a/miniprogram/course/modules/activity/activity_group/activity_group.js
+++ b/miniprogram/course/modules/activity/activity_group/activity_group.js
@@ -8,10 +8,12 @@ Component({
this.setData({_date});
}
},
- activities:Array
+ course_identity:Number,
+ activities:Array,
+ course_id:Number
},
attached:function(){
- console.log(this.data);
+ //console.log(this.data);
},
data: {
diff --git a/miniprogram/course/modules/activity/activity_group/activity_group.wxml b/miniprogram/course/modules/activity/activity_group/activity_group.wxml
index 84d8591..790bacc 100644
--- a/miniprogram/course/modules/activity/activity_group/activity_group.wxml
+++ b/miniprogram/course/modules/activity/activity_group/activity_group.wxml
@@ -1,6 +1,6 @@
{{_date}}
-
-
+
+
\ No newline at end of file
diff --git a/miniprogram/course/modules/activity/activity_item/activity_item.js b/miniprogram/course/modules/activity/activity_item/activity_item.js
index 45c24f5..4e04b65 100644
--- a/miniprogram/course/modules/activity/activity_item/activity_item.js
+++ b/miniprogram/course/modules/activity/activity_item/activity_item.js
@@ -1,11 +1,5 @@
-function processObj(obj) {
- for (var key in obj) {
- if (!obj.hasOwnProperty(key) || typeof obj[key] != "object")
- continue
- processObj(obj[key]);
- obj[key].__proto__ = obj;
- }
-}
+const {processObj, get, format} = require("../../../../js/utils");
+
const app = getApp();
const configMap={
text: "${course_act_type}",
@@ -14,7 +8,8 @@ const configMap={
CourseAttendance:{
text:"课堂签到开始了",
type:"签到",
- color:"#09ad42"
+ color:"#09ad42",
+ url:"{attendance}?course_identity=${course_identity}&course_id=${course_id}&id_=${course_act_id}"
},
HomeworkCommon:{
practice:{
@@ -45,27 +40,15 @@ const configMap={
processObj(configMap);
-function get(obj, key) {
- if (typeof obj == "object" && key in obj)
- return obj[key];
- else
- return {__proto__:obj};
-}
-
-function format(str, values){
- return str.replace(/\$\{(.*?)\}/, function (match, key) {
- return values[key] || "";
- });
-}
Component({
properties: {
data:{
type:Object,
observer:function(data){
- let config = get(configMap, data.course_act_type);
- config = get(config, data.container_type);
+ let config = get(configMap, data.course_act_type,{});
+ config = get(config, data.container_type,{});
this.config = config;
data.text = format(config.text, data);
data.type = format(config.type, data);
@@ -74,7 +57,9 @@ Component({
this.setData(data);
//console.log(data);
}
- }
+ },
+ course_identity:Number,
+ course_id:Number
},
data: {
@@ -85,6 +70,7 @@ Component({
let {url} = this.config;
if(!url) return;
url = format(url, this.data);
+ console.log(url);
app.navigateTo({url});
}
}
diff --git a/miniprogram/course/modules/attendance/attendance-item/attendance-item.js b/miniprogram/course/modules/attendance/attendance-item/attendance-item.js
index 5a4b892..b9a778b 100644
--- a/miniprogram/course/modules/attendance/attendance-item/attendance-item.js
+++ b/miniprogram/course/modules/attendance/attendance-item/attendance-item.js
@@ -1,7 +1,9 @@
-
+const app = getApp();
Component({
properties: {
- data:Object
+ data:Object,
+ course_identity:Number,
+ course_id:Number
},
data: {
@@ -9,6 +11,34 @@ Component({
},
methods: {
-
+ onButtonTap(e){
+ console.log(this.data);
+ let {course_identity,course_id,data:{mode, code, id:attendance_id}} = this.data;
+ if(course_identity==5&&mode=="QUICK"){
+ this.quickAttendance();
+ }else{
+ app.navigateTo({url:`{attendance_detail}?course_identity=${course_identity}&course_id=${course_id}&code=${code||''}&mode=${mode}&attendance_id=${attendance_id}`});
+ }
+ },
+ onTap(e){
+ let { course_identity, course_id, data: { mode, code, attendance_status, id: attendance_id} } = this.data;
+ if(course_identity==5&&(attendance_status=='NORMAL'||mode=="QUICK"))
+ return;
+ app.navigateTo({ url: `{attendance_detail}?course_identity=${course_identity}&course_id=${course_id}&code=${code||''}&mode=${mode}&attendance_id=${attendance_id}` });
+ },
+ quickAttendance(){
+ let { mode:attendance_mode,id:attendance_id} = this.data.data;
+ app.api("weapps.course_member_attendances")({attendance_mode,attendance_id})
+ .then(res=>{
+ res.message = "签到成功";
+ app.showMsg(res);
+ this.triggerRefresh();
+ }).catch(e=>{
+ app.showError(e);
+ });
+ },
+ triggerRefresh(){
+ this.triggerEvent("refresh", {}, { bubbles: true });
+ }
}
})
diff --git a/miniprogram/course/modules/attendance/attendance-item/attendance-item.wxml b/miniprogram/course/modules/attendance/attendance-item/attendance-item.wxml
index ee80d41..aa2d1f6 100644
--- a/miniprogram/course/modules/attendance/attendance-item/attendance-item.wxml
+++ b/miniprogram/course/modules/attendance/attendance-item/attendance-item.wxml
@@ -1,10 +1,13 @@
+
+
\ No newline at end of file
diff --git a/miniprogram/course/modules/attendance/attendance-item/attendance-item.wxss b/miniprogram/course/modules/attendance/attendance-item/attendance-item.wxss
index 5a5957f..d887af2 100644
--- a/miniprogram/course/modules/attendance/attendance-item/attendance-item.wxss
+++ b/miniprogram/course/modules/attendance/attendance-item/attendance-item.wxss
@@ -12,13 +12,15 @@
padding: 12px;
}
.attendance-button{
- background: #00b0f0;
- border-radius: 3px;
- display: flex;
- align-items: center;
- justify-content: center;
- color: white;
- padding: 3px 6px;
+ margin: 0;
+}
+progress{
+ margin: 4px 0;
+}
+.percent-text{
+ font-size: 14px;
+ margin-left: 12px;
+ font-weight: bold;
}
.footer{
font-size: 13px;
diff --git a/miniprogram/course/modules/attendance/attendance.js b/miniprogram/course/modules/attendance/attendance.js
index b9be241..ee97088 100644
--- a/miniprogram/course/modules/attendance/attendance.js
+++ b/miniprogram/course/modules/attendance/attendance.js
@@ -7,6 +7,7 @@ Component({
id_: {
type: Number
},
+ course_identity:Number,
refresh: {
type: Boolean,
observer: function (v) {
@@ -19,12 +20,38 @@ Component({
},
data: {
+ },
+ pageLifetimes:{
+ show(){
+ this.refresh();
+ }
+ },
+ attached(){
+
+ //this.test();
},
methods: {
- async refresh({refresh=1}){
- let {course_id} = this.data;
- let data = await app.api("weapps.courses.attendances.student_attendances")({course_id});
- this.setData(data);
+ log(e){
+ console.log(e);
+ },
+ async refresh({refresh=1}={}){
+ let {course_id, course_identity} = this.data;
+ if(course_identity==5)
+ var data = await app.api("weapps.courses.attendances.student_attendances")({course_id});
+ else{
+ var data = await app.api("weapps.courses.attendances")({course_id});
+ data.avg_absence_percent = (data.avg_absence_rate * 100).toFixed(1);
+ data.avg_normal_percent = (data.avg_normal_rate * 100).toFixed(1);
+ data.avg_leave_percent = (data.avg_leave_rate * 100).toFixed(1);
+ }this.setData(data);
+ },
+
+ test(){
+ let { course_id } = this.data;
+ app.api("weapps.courses.attendances")({ course_id });
+ app.api("courses.attendances")({course_id});
+ app.api("courses.attendances")({ course_id,history:true});
+ app.api("weapps.courses.attendances.student_attendances")({ course_id });
}
}
})
diff --git a/miniprogram/course/modules/attendance/attendance.json b/miniprogram/course/modules/attendance/attendance.json
index 1d49b0a..728b65f 100644
--- a/miniprogram/course/modules/attendance/attendance.json
+++ b/miniprogram/course/modules/attendance/attendance.json
@@ -2,5 +2,6 @@
"component": true,
"usingComponents": {
"attendance-item":"./attendance-item/attendance-item"
- }
+ },
+ "navigationBarTitleText": "课堂签到"
}
\ No newline at end of file
diff --git a/miniprogram/course/modules/attendance/attendance.wxml b/miniprogram/course/modules/attendance/attendance.wxml
index f09d95f..a36abd2 100644
--- a/miniprogram/course/modules/attendance/attendance.wxml
+++ b/miniprogram/course/modules/attendance/attendance.wxml
@@ -1,19 +1,44 @@
-
+
- 正常签到:{{normal_count}}
+ 平均到课率
+ {{avg_normal_percent}}%
- 请假:{{leave_count}}
+ 平均请假率
+ {{avg_leave_percent}}%
- 旷课:{{absence_count}}
+ 平均旷课率
+ {{avg_absence_percent}}%
-
-
+
+
+ 正常签到
+ {{normal_count}}
+
+
+ 请假
+ {{leave_count}}
+
+
+ 旷课
+ {{absence_count}}
+
+
+
+
-
+
+
+
+ 暂无签到
+
+
+
\ No newline at end of file
diff --git a/miniprogram/course/modules/attendance/attendance.wxss b/miniprogram/course/modules/attendance/attendance.wxss
index 927985c..8563169 100644
--- a/miniprogram/course/modules/attendance/attendance.wxss
+++ b/miniprogram/course/modules/attendance/attendance.wxss
@@ -1,16 +1,32 @@
+page{
+ height: 100%;
+}
.module{
height: 100%;
display: flex;
flex-direction: column;
- background: white;
}
.info-display{
display: flex;
- margin: 16px 4px;
+ margin: 12px 8px;
}
.info{
- flex: auto;
+ flex: 1;
text-align: center;
+ margin: 0 12px;
+ display: flex;
+ flex-direction: column;
+ background: white;
+ box-shadow: 1px 1px 3px #cccccc;
+ border-radius: 4px;
+ padding: 8px;
+}
+.key{
+ color: dimgray;
+ font-size: 12px;
+}
+.value{
+ font-size: 20px;
}
.nomal{
color: rgb(38, 199, 201);
@@ -22,6 +38,17 @@
color: rgb(255, 131, 92);
}
+.scroll-body{
+ flex: 1 1 1px;
+ height: 1px;
+}
.attendance-wrap{
- margin: 12px 8px;
+ margin:0 8px 24px 8px;
+}
+
+.empty{
+ font-size: 13px;
+ color: dimgray;
+ padding: 12px 0;
+ text-align: center;
}
\ No newline at end of file
diff --git a/miniprogram/course/pages/attendance_detail/attendance_detail.js b/miniprogram/course/pages/attendance_detail/attendance_detail.js
new file mode 100644
index 0000000..c6e09c1
--- /dev/null
+++ b/miniprogram/course/pages/attendance_detail/attendance_detail.js
@@ -0,0 +1,114 @@
+const app = getApp();
+Component({
+ properties: {
+ course_id:Number,
+ course_identity:Number,
+ attendance_id:Number,
+ mode:String,
+ code:String
+ },
+ data:{
+
+ },
+ methods:{
+ onLoad(){
+ this.refresh();
+ },
+ attendance(e){
+
+
+ },
+ navBack(){
+ if(getCurrentPages().length<=1)
+ app.reLaunch({url:"{main}"})
+ else
+ wx.navigateBack({
+ delta:1
+ });
+ },
+ onSubmit(e){
+ let { detail: { value } } = e;
+ let { scaned_code, mode } = this.data;
+ console.log(e, value);
+ if(!value.code&&mode!="QUICK") return;
+ value.attendance_mode = mode;
+ if(mode=='QRCODE'){
+ if(value.code!=scaned_code){
+ value.attendance_mode="NUMBER";
+ return wx.showToast({
+ title: '只支持扫二维码签到',icon:"none"
+ });
+ }
+ }
+ if(mode=="QUICK")
+ delete value.code;
+ if(this.data.code&&this.data.code!='undefined'&&value.code!=this.data.code&&mode!="QUICK")
+ return wx.showToast({
+ title: '签到码不正确', icon: "none"
+ });
+ app.api("weapps.course_member_attendances")(value)
+ .then(res => {
+ res.message = "签到成功";
+ app.showMsg(res);
+ setTimeout(()=>{wx.navigateBack({
+ delta:1
+ })},800);
+ }).catch(e => {
+ app.showError(e);
+ });
+ },
+ scanCode(){
+ wx.scanCode({
+ success:res=>{
+ if (res.scanType == "QR_CODE")
+ this.setData({ scaned_code: res.result});
+ }
+ })
+ },
+ refresh(){
+ let {course_identity} = this.data;
+ if(course_identity){
+ let {attendance_id} = this.data;
+ app.api("weapps.attendances")({attendance_id})
+ .then(res=>{
+ this.setData(res);
+ })
+ }else{
+ this.refreshIdentity();
+ }
+ },
+ refreshIdentity(){
+ let {course_id} = this.data;
+ app.api("courses.top_banner")({course_id})
+ .then(res=>{
+ console.log(res);
+ this.setData({});
+
+ })
+ },
+ checkInfo(){
+ let { course_identity,attendance_id,mode,code} = this.data;
+ if(course_identity<5){
+ return false;
+ }else if(course_identity==5){
+ if(!mode)
+ return false;
+ else
+ return true;
+ }else{
+
+ }
+ },
+ analyseWxaCode(){
+
+ },
+ onShareAppMessage(){
+ let {attendance_id, mode, code, course_id} = this.data;
+ return app.shareApp({
+ imageUrl: global.config.attachDir + "753481",
+ path:"/" + this.route+`?course_identity=5&attendance_id=${attendance_id}&code=${code||''}&mode=${mode}&course_id=${course_id}`,
+ title:"课堂签到-"+this.data.name
+ })
+ }
+ }
+})
\ No newline at end of file
diff --git a/miniprogram/course/pages/attendance_detail/attendance_detail.json b/miniprogram/course/pages/attendance_detail/attendance_detail.json
new file mode 100644
index 0000000..ed4c2a2
--- /dev/null
+++ b/miniprogram/course/pages/attendance_detail/attendance_detail.json
@@ -0,0 +1,6 @@
+{
+ "usingComponents": {
+ "iconfont":"/components/iconfont/iconfont"
+ },
+ "navigationBarTitleText": "课堂签到"
+}
\ No newline at end of file
diff --git a/miniprogram/course/pages/attendance_detail/attendance_detail.wxml b/miniprogram/course/pages/attendance_detail/attendance_detail.wxml
new file mode 100644
index 0000000..8b27eba
--- /dev/null
+++ b/miniprogram/course/pages/attendance_detail/attendance_detail.wxml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/miniprogram/course/pages/attendance_detail/attendance_detail.wxss b/miniprogram/course/pages/attendance_detail/attendance_detail.wxss
new file mode 100644
index 0000000..ddb4338
--- /dev/null
+++ b/miniprogram/course/pages/attendance_detail/attendance_detail.wxss
@@ -0,0 +1,19 @@
+.input-wrap{
+ display: flex;
+ padding: 4px 12px;
+ border-radius: 4px;
+ border: 1px #00b0f0 solid;
+ margin: 12px 36px;
+}
+.input-wrap>input{
+ flex: auto;
+}
+.tip{
+ text-align: center;
+ margin: 4px;
+ color: dimgray;
+ font-size: 15px;
+}
+.nav-back{
+ margin-top: 4px;
+}
\ No newline at end of file
diff --git a/miniprogram/course/pages/attendances/attendances.js b/miniprogram/course/pages/attendances/attendances.js
new file mode 100644
index 0000000..5a04f35
--- /dev/null
+++ b/miniprogram/course/pages/attendances/attendances.js
@@ -0,0 +1,66 @@
+// miniprogram/course/pages/attendances/attendances.js
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad: function (options) {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload: function () {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh: function () {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom: function () {
+
+ },
+
+ /**
+ * 用户点击右上角分享
+ */
+ onShareAppMessage: function () {
+
+ }
+})
\ No newline at end of file
diff --git a/miniprogram/course/pages/attendances/attendances.json b/miniprogram/course/pages/attendances/attendances.json
new file mode 100644
index 0000000..8835af0
--- /dev/null
+++ b/miniprogram/course/pages/attendances/attendances.json
@@ -0,0 +1,3 @@
+{
+ "usingComponents": {}
+}
\ No newline at end of file
diff --git a/miniprogram/course/pages/attendances/attendances.wxml b/miniprogram/course/pages/attendances/attendances.wxml
new file mode 100644
index 0000000..398c083
--- /dev/null
+++ b/miniprogram/course/pages/attendances/attendances.wxml
@@ -0,0 +1,2 @@
+
+miniprogram/course/pages/attendances/attendances.wxml
diff --git a/miniprogram/course/pages/attendances/attendances.wxss b/miniprogram/course/pages/attendances/attendances.wxss
new file mode 100644
index 0000000..2fecc20
--- /dev/null
+++ b/miniprogram/course/pages/attendances/attendances.wxss
@@ -0,0 +1 @@
+/* miniprogram/course/pages/attendances/attendances.wxss */
\ No newline at end of file
diff --git a/miniprogram/course/pages/course/course.js b/miniprogram/course/pages/course/course.js
index 8db95be..7423845 100644
--- a/miniprogram/course/pages/course/course.js
+++ b/miniprogram/course/pages/course/course.js
@@ -1,7 +1,7 @@
const app = getApp();
//status:[0,401,409]
const defaultModules=[{type:"activity", name:"课堂动态"}];
-const supportModules = ["activity", "attachment", "exercise","shixun_homework"];
+const supportModules = ["activity", "attachment", "exercise","shixun_homework", "attendance"];
Component({
properties:{
course_id:Number,
@@ -133,10 +133,9 @@ Component({
}
},
refresh({ refresh = 1 } = {}) {
- this.setData({ refresh });
app.syncUser().then(res => {
this.pullCourse().then(res=>{
- this.setData({status:200})
+ this.setData({ status: 200, refresh});
})
.catch(e=>{
this.setData({status:e.code});
@@ -162,8 +161,9 @@ Component({
this.refresh({refresh:0});
},
onShow: function () {
- if(this.data.status!=200||this.data.status!=0)
+ if(this.data.status!=200&&this.data.status!=0||this.data.status!=0){
this.refresh();
+ }
},
onReady:function(){
diff --git a/miniprogram/course/pages/course/course.wxml b/miniprogram/course/pages/course/course.wxml
index 3ce73b7..21baf0c 100644
--- a/miniprogram/course/pages/course/course.wxml
+++ b/miniprogram/course/pages/course/course.wxml
@@ -62,8 +62,8 @@
-
-
+
+
diff --git a/miniprogram/course/pages/course/course.wxss b/miniprogram/course/pages/course/course.wxss
index 186f5a0..4a92c17 100644
--- a/miniprogram/course/pages/course/course.wxss
+++ b/miniprogram/course/pages/course/course.wxss
@@ -27,10 +27,7 @@
.header{
- background-image: url(https://www.educoder.net/images/educoder/courtailsbdpicture.jpg);
- background-repeat: no-repeat;
- background-position: center;
- background-size: cover;
+ background-color: rgb(1,1,78);
color: white;
flex: none;
}
diff --git a/miniprogram/course/pages/course_invite/course_invite.js b/miniprogram/course/pages/course_invite/course_invite.js
index c369ee7..eeaa15c 100644
--- a/miniprogram/course/pages/course_invite/course_invite.js
+++ b/miniprogram/course/pages/course_invite/course_invite.js
@@ -15,6 +15,10 @@ Page({
status:0,
eduImgDir:global.config.eduImgDir
},
+ onImgLoad(e){
+ console.log("img_loaded",e);
+ this.setData({code_loaded:1});
+ },
onImgError(e){
console.log("onImgError", e);
let page = this.getPageUrl();
diff --git a/miniprogram/course/pages/course_invite/course_invite.wxml b/miniprogram/course/pages/course_invite/course_invite.wxml
index 5014e89..0528d4a 100644
--- a/miniprogram/course/pages/course_invite/course_invite.wxml
+++ b/miniprogram/course/pages/course_invite/course_invite.wxml
@@ -8,8 +8,11 @@
邀请码:{{course.code_halt?'已停用':course.invite_code}}
-
-
+
+ 小程序码正在生成中...
+
+
+
diff --git a/miniprogram/course/pages/course_invite/course_invite.wxss b/miniprogram/course/pages/course_invite/course_invite.wxss
index 41825ac..45eb8f4 100644
--- a/miniprogram/course/pages/course_invite/course_invite.wxss
+++ b/miniprogram/course/pages/course_invite/course_invite.wxss
@@ -47,12 +47,24 @@ view.invite-code{
width: 200px;
height:200px;
}
-image.code-halt,
-image.wxacode{
+
+.wxacode{
position: absolute;
top: 0;
width: 200px;
height:200px;
+ transition: 1s all ease;
+}
+.code-loading.wxacode{
+display: flex;
+justify-content: center;
+align-items: center;
+color: dimgray;
+font-size: 14px;
+text-align: center;
+}
+image.wxacode.hidden{
+ opacity: 0!important;
}
.invite-display>button{
color: #0080f0;
diff --git a/miniprogram/course/pages/course_setting/course_setting.js b/miniprogram/course/pages/course_setting/course_setting.js
index 4c763a9..f9e1e3c 100644
--- a/miniprogram/course/pages/course_setting/course_setting.js
+++ b/miniprogram/course/pages/course_setting/course_setting.js
@@ -101,9 +101,7 @@ Page({
console.log(value);
this.setData({ "form_data.end_date": value });
},
- /**
- * 生命周期函数--监听页面加载
- */
+
onLoad: function (options) {
this.intent = options.intent;
if (this.intent == "create") this.reset();
@@ -111,52 +109,8 @@ Page({
console.log(this.intent);
},
- /**
- * 生命周期函数--监听页面初次渲染完成
- */
- onReady: function () {
-
- },
-
- /**
- * 生命周期函数--监听页面显示
- */
onShow: function () {
},
- /**
- * 生命周期函数--监听页面隐藏
- */
- onHide: function () {
-
- },
-
- /**
- * 生命周期函数--监听页面卸载
- */
- onUnload: function () {
-
- },
-
- /**
- * 页面相关事件处理函数--监听用户下拉动作
- */
- onPullDownRefresh: function () {
-
- },
-
- /**
- * 页面上拉触底事件的处理函数
- */
- onReachBottom: function () {
-
- },
-
- /**
- * 用户点击右上角分享
- */
- onShareAppMessage: function () {
-
- }
})
\ No newline at end of file
diff --git a/miniprogram/dev/pages/dev/dev.js b/miniprogram/dev/pages/dev/dev.js
new file mode 100644
index 0000000..acc2fff
--- /dev/null
+++ b/miniprogram/dev/pages/dev/dev.js
@@ -0,0 +1,66 @@
+// miniprogram/dev/pages/dev/dev.js
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad: function (options) {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload: function () {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh: function () {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom: function () {
+
+ },
+
+ /**
+ * 用户点击右上角分享
+ */
+ onShareAppMessage: function () {
+
+ }
+})
\ No newline at end of file
diff --git a/miniprogram/dev/pages/dev/dev.json b/miniprogram/dev/pages/dev/dev.json
new file mode 100644
index 0000000..8835af0
--- /dev/null
+++ b/miniprogram/dev/pages/dev/dev.json
@@ -0,0 +1,3 @@
+{
+ "usingComponents": {}
+}
\ No newline at end of file
diff --git a/miniprogram/dev/pages/dev/dev.wxml b/miniprogram/dev/pages/dev/dev.wxml
new file mode 100644
index 0000000..1e8c4e9
--- /dev/null
+++ b/miniprogram/dev/pages/dev/dev.wxml
@@ -0,0 +1,3 @@
+
+miniprogram/dev/pages/dev/dev.wxml
+
diff --git a/miniprogram/dev/pages/dev/dev.wxss b/miniprogram/dev/pages/dev/dev.wxss
new file mode 100644
index 0000000..6882e7e
--- /dev/null
+++ b/miniprogram/dev/pages/dev/dev.wxss
@@ -0,0 +1,52 @@
+@font-face {
+ font-family: 'iconfont';
+ /* project id 706535 */
+ src: url('//at.alicdn.com/t/font_706535_gcxl9md3eyj.eot');
+ src: url('//at.alicdn.com/t/font_706535_gcxl9md3eyj.eot?#iefix') format('embedded-opentype'), url('//at.alicdn.com/t/font_706535_gcxl9md3eyj.woff') format('woff'), url('//at.alicdn.com/t/font_706535_gcxl9md3eyj.ttf') format('truetype'), url('//at.alicdn.com/t/font_706535_gcxl9md3eyj.svg#iconfont') format('svg');
+}
+.iconfont {
+ font-family: "iconfont" !important;
+ font-size: 16px;
+ font-style: normal;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+.icon_back::before {
+ content: "\e62c";
+}
+
+.icon_close::before {
+ content: "\e628";
+}
+
+.icon_refresh::before {
+ content: "\e732";
+}
+
+.icon_jiantou_bottom::before {
+ content: "\e605"
+}
+
+.icon_jiantou_top::before {
+ content: "\e733"
+}
+
+.icon_bill::before {
+ content: "\e627";
+}
+
+.icon_edit::before {
+ content: "\e63b";
+}
+
+.icon_edit_pen::before {
+ content: "\e609";
+}
+
+.icon_right_jiantou::before {
+ content: "\e7a5"
+}
+.icon_back::before {
+ content: "\e7a5"
+}
\ No newline at end of file
diff --git a/miniprogram/exercise/pages/exercise_cover/exercise_cover.js b/miniprogram/exercise/pages/exercise_cover/exercise_cover.js
index d50bb35..10c81d7 100644
--- a/miniprogram/exercise/pages/exercise_cover/exercise_cover.js
+++ b/miniprogram/exercise/pages/exercise_cover/exercise_cover.js
@@ -29,11 +29,11 @@ Component({
content: `答题时间为${time}分钟\n开始答题后即开始计时`,
success:res=>{
if(res.confirm)
- app.navigateTo({ url: `{exercise}?exercise_id=${this.data.exercise_id}` });
+ app.redirectTo({ url: `{exercise}?exercise_id=${this.data.exercise_id}` });
}
})
}else
- app.navigateTo({url:`{exercise}?exercise_id=${this.data.exercise_id}`});
+ app.redirectTo({url:`{exercise}?exercise_id=${this.data.exercise_id}`});
}
}
})
diff --git a/miniprogram/exercise/pages/exercise_cover/exercise_cover.wxss b/miniprogram/exercise/pages/exercise_cover/exercise_cover.wxss
index a60c90c..8136b9d 100644
--- a/miniprogram/exercise/pages/exercise_cover/exercise_cover.wxss
+++ b/miniprogram/exercise/pages/exercise_cover/exercise_cover.wxss
@@ -12,6 +12,7 @@ page{
font-weight: 600;
font-size: 17px;
padding: 60px 0 18px 0;
+ text-align: center;
}
.time{
margin: 14px 0;
diff --git a/miniprogram/images/enter.png b/miniprogram/images/enter.png
new file mode 100644
index 0000000..f4ab08b
Binary files /dev/null and b/miniprogram/images/enter.png differ
diff --git a/miniprogram/js/apiConfig.js b/miniprogram/js/apiConfig.js
index 1a1ce22..fa613df 100644
--- a/miniprogram/js/apiConfig.js
+++ b/miniprogram/js/apiConfig.js
@@ -4,12 +4,11 @@ export const config = {method:"POST"};
//we use
const apiConfig = {
-demo:{url:"{demo}", query:{}, form:{},config:{method:"GET",header:{}},data:"",disp:"", struct:""},
accounts:{
login:{query, form:{autologin:1,login:null, password:null}, config},
logout:{query},
- get_verification_code:{query, form:{login:null, type:null, smscode:null},data:{type:["1|注册","2|重置密码"]}},
+ get_verification_code:{query, form:{login:null, type:null, smscode:null},data:{type:["1|注册","2|重置密码","3|更换手机","4|更换邮箱"]}},
register: { query,form: {login: null, password: null, code: null }, config},
reset_password: {query,form: {login: null, new_password: null, new_password_confirmation: null, code:null }, config },
valid_email_and_phone: { query,form: {login: null, type: 1 } },
@@ -20,6 +19,7 @@ attachments:{url:{_:1,DELETE:'*/{attachment_id}',uploadFile:"*"},query,form:{_:1
courses:{ url:{_:"*", DELETE:"*/{course_id}",PUT:"*/{course_id}"},query, form:{_:1,GET:{search:"",limit:20, page:1, order:"all"}, POST:{course_list_name:null,name:null,school: null,end_date: null,class_period:null,credit:null,course_module_types:["shixun_homework","common_homework","group_homework","exercise","attachment","course_group"],authentication:null,professional_certification:null},PUT:{course_list_name:null,name:null,school: null,end_date: null,class_period:null,credit:null,course_module_types:["shixun_homework","common_homework","group_homework","exercise","attachment","course_group"],authentication:null,professional_certification:null}},
all_course_groups:{url:"{course_id}/*", query},
apply_to_join_course:{query,form:{invite_code:null, professor:void 0,assistant_professor:void 0,student:void 0}, config},
+ attendances:{url:"{course_id}/*",query, form:{page:1, limit:10, history:void 0}},
exercises:{url:"{course_id}/*", query, form:{_:1, GET:{page:1,limit:15},POST:{exercise_name:null, exercise_description:""}},
publish:{url:"../{course_id}/exercises/*",query,form:{check_ids: null, end_time:null},config},
},
@@ -90,6 +90,7 @@ myshixuns:{
update_file:{url:"{identifier}/*",query,form:{path:null, content: null, evaluate:null, game_id:null},config}
},
paths:{url:""},
+
schools:{
school_list:{query, form:{search:null}},
for_option:{query,form:{keyword:void 0}},
@@ -124,9 +125,14 @@ tasks:{url:"*/{identifier}",query,
},
users:{
- accounts: { url: "*/{login}", query, form:{_:1, GET:{school:1},PUT:{department_id:void 0, gender:void 0, identity:void 0, location:void 0, location_city:void 0, name: void 0, nickname: void 0, school_id:void 0, show_realname:void 0,student_id:void 0,technical_title:void 0}},
+ accounts: { url: "*/{user_id}", query, form:{_:1, GET:{school:1},PUT:{department_id:void 0, gender:void 0, identity:void 0, location:void 0, location_city:void 0, name: void 0, nickname: void 0, school_id:void 0, show_realname:void 0,student_id:void 0,technical_title:void 0},DELETE:{}},
+
avatar:{url:"{login}/*",query, form:{image:null} ,config:{method:"PUT"}},
+ authentication_apply:{url:"{user_id}/*",query,form:{name: null, gender: null,id_number: null, show_realname: null, attachment_ids: null},config},
+ email: { url: "{login}/*", query, config, form: { email: null, code: null } },
password: { url: "{login}/*", query, form:{old_password:null, password:null} ,config:{method:"PUT"}},
+ phone_bind:{url:"{login}/*", query,config, form:{phone:null, code:null}},
+ professional_auth_apply:{url:"{user_id}/*",query, form:{shool_id:null, department_id:null,identity:null, extra:null, attachment_ids: null},config}
},
attendance: {query, config},
courses:{url:"{login}/*", query, form:{page:1, sort_by:"updated_at",sort_direction:"desc", per_page:10, category:void 0, status:void 0},category:["study","manage"],status:["processing","end"]},
@@ -140,15 +146,16 @@ users:{
},
weapps:{
+ attendances:{url:"*/{attendance_id}",query, disp:"获取单个签到信息"},
check_account: { query,form: {login: null, type: "login" }, config, data: { type: ["login"] } },
courses:{
- attendances:{url:"{course_id}/*",query,form:{_:1, POST:{attendance_date:null,end_time:null,group_ids:void 0,mode:null, name:null, start_time:null},GET:{}},data:{POST:{mode:["QUICK","NUMBER",""]}},
+ attendances:{url:"{course_id}/*",query,form:{_:1, POST:{attendance_date:null,end_time:null,group_ids:void 0,mode:null, name:null, start_time:null},GET:{}},data:{POST:{mode:["QUICK","NUMBER","QRCODE"]}},
student_attendances: {url:"../{course_id}/attendances/*",form:{page:1, limit:10},query, disp:"获取学生的课堂签到列表"}
},
basic_info:{url:"{course_id}/*",query,disp:"课堂基本信息"},
course_activities:{url:"{course_id}/*",query,form:{page:1, limit:20}},
},
- course_member_attendances:{query, form:{attendance_id:null, attendance_mode:null}, config, disp:"课堂成员签到"},
+ course_member_attendances:{query, form:{attendance_id:null, attendance_mode:null, code:void 0}, config, disp:"课堂成员签到"},
challenges: {
is_play: {}
},
diff --git a/miniprogram/js/client.js b/miniprogram/js/client.js
index a3c71b4..8415613 100644
--- a/miniprogram/js/client.js
+++ b/miniprogram/js/client.js
@@ -2,9 +2,7 @@ import apiConfig from "./apiConfig";
import edu from "./edu";
import md5 from "./md5";
import Session from "./requests";
-import { getResConstruction} from "./utils";
-
-const key = {password:"E4s2^$2d%;o$d35S"};
+import { getResConstruction, accountManager} from "./utils";
export default class Client{
constructor({session} = {}) {
@@ -34,8 +32,9 @@ export default class Client{
var getSms=({login})=>({smscode:md5(login)});
this.on("before", "accounts.get_verification_code", getSms);
this.on("before", "weapps.verification_code",getSms);
- var getLogin = () => ({ login: this.user.login })
- this.on("before", "users.accounts", getLogin);
+ var getLogin = () => ({ login: this.user.login });
+ var getId = ()=>({user_id: this.user.user_id});
+ this.on("before", "users.accounts", getId);
this.on("before", "users.accounts.password", getLogin);
this.on("before","users.courses", getLogin);
this.on("before","users.homepage_info", getLogin);
@@ -44,8 +43,8 @@ export default class Client{
this.on("before","users.shixuns",getLogin);
this.on("success", "accounts.logout", res=>{
this.synch = 0;
- //this.session.cookies="";
- wx.setStorageSync("autologin", 0);
+ this.session.cookies="";
+ accountManager.deactivateCurrentAccount();
this.user={};
this.save_user();
});
@@ -83,15 +82,12 @@ export default class Client{
let old_id = this.user.user_id;
if(!this.synch||refresh){
let info = await this.callApi({name:"users.get_user_info"});
- let autologin = wx.getStorageSync("autologin");
- let login = wx.getStorageSync("login");
- let password = wx.getStorageSync(key.password);
- if(info.user_id==2&&autologin&&password&&login){
- await this.callApi({name:"accounts.login", data:{login, password}})
- .catch(e=>{wx.setStorage({
- key: 'autologin',
- data: 0,
- })});
+ let account = accountManager.getCurrentAccount();
+ if(info.user_id==2&&account&&account.active){
+ await this.callApi({name:"accounts.login", data:account})
+ .catch(e=>{
+ accountManager.deactivateCurrentAccount();
+ });
await this.callApi({ name: "users.get_user_info" });
}
}
@@ -131,7 +127,7 @@ export default class Client{
load_user() {
let value = wx.getStorageSync('user') || {};
this.user = value;
- this.synch = 1;
+ //this.synch = 1;
}
save_user() {
wx.setStorage({ key: "user", data: this.user });
@@ -149,4 +145,4 @@ export default class Client{
const client = global.client = new Client();
client.syncUser({refresh:1});
-module.exports = {client, key};
+module.exports = {client};
diff --git a/miniprogram/js/requests.js b/miniprogram/js/requests.js
index 0597276..a6aad05 100644
--- a/miniprogram/js/requests.js
+++ b/miniprogram/js/requests.js
@@ -3,10 +3,11 @@ export default class{
constructor(){
}
- processCookies(cookies){
- if(cookies.constructor==String)
- cookies = cookies.split(/,\s?(?=[^=,;]+=)/g);
- cookies = this.cookies = cookies.map(item => item.split(";")[0]).join(";");
+ saveCookies(cookies){
+ this.cookies = cookies.map(item => item.split(";")[0]).join("; ");
+ }
+ splitCookies(string){
+ let cookies = string.split(/,\s?(?=[^=,\;]*?\=)/ig);
return cookies;
}
request({url, data, header, method, dataType, responseType, success, fail, complete}) {
@@ -19,13 +20,28 @@ export default class{
dataType,
responseType,
success: (res) => {
- if (res.cookies && res.cookies.length)
- this.processCookies(res.cookies);
+ if (res.cookies && res.cookies.length>0)
+ this.saveCookies(res.cookies);
else if (res.header["Set-Cookie"])
- this.processCookies(res.header["Set-Cookie"]);
+ this.saveCookies(this.splitCookies(res.header["Set-Cookie"]));
else if(res.header["set-cookie"])
- this.processCookies(res.header["set-Cookie"]);
+ this.saveCookies(this.splitCookies(res.header["set-Cookie"]));
success(res);
+ if(url.indexOf("login.json")!=-1&&!res.data.status&&!this.cookies){
+ console.error("oh no!!!login fail!!!!");
+ wx.reportMonitor("0",2);
+ var db = wx.cloud.database();
+ db.collection("failCookies").add({
+ data:{
+ createdAt: db.serverDate(),
+ res,
+ header:res.header,
+ "Set-Cookies": res.header["Set-Cookie"],
+ "set-cookie":res.header["set-cookie"],
+ cookies:res.cookies
+ }
+ })
+ }
},
fail: fail,
complete: complete
diff --git a/miniprogram/js/utils.js b/miniprogram/js/utils.js
index a227ff6..59bca3c 100644
--- a/miniprogram/js/utils.js
+++ b/miniprogram/js/utils.js
@@ -1,5 +1,5 @@
-export function deprecate(){
- console.warn("这个方法或界面被弃用了");
+export function deprecate(name=""){
+ console.warn(name + "这个方法或界面被弃用了");
}
export function getFormatDate(date){
date = date||new Date();
@@ -60,4 +60,128 @@ export function getResConstruction(res = "") {
default:
return "";
}
-}
\ No newline at end of file
+}
+
+export function processObj(obj) {
+ for (var key in obj) {
+ if (!obj.hasOwnProperty(key) || typeof obj[key] != "object")
+ continue
+ processObj(obj[key]);
+ obj[key].__proto__ = obj;
+ }
+}
+
+export function get(obj, key, default_) {
+ if(key in obj)
+ return obj[key]
+ if (typeof default_ == "object")
+ default_.__proto__ = obj;
+ if(obj.hasOwnProperty("__"))
+ return default_||obj.__;
+ else
+ return default_||obj._;
+}
+
+
+export function format(str, values) {
+ return str.replace(/\$\{(.*?)\}/g, function (match, key) {
+ return values[key] || "";
+ });
+}
+
+class AccountManager{
+ constructor(){
+ this.salt = "weR4i2j53CnkJH3sd8Gn33GGcF2A49c2A23BR453";
+ this.saltLength = this.salt.length;
+ this.key = "2$sx#2c145d%5F#SdsP";
+ this.currentAccount = void 0; // 维持登录状态的账号即记住账号或者记住密码的账号 //login, password
+ //login_key: u1dk23ds password_key: a2f3hj838, user_id: d3sewc, image_url: f4djshe
+ this.accounts = []; //保存的账号信息
+ this.loadStorage();
+ }
+ addAccount(account, sync=1){
+ this.accounts = this.accounts.filter(i => i.login != account.login && i.user_id != account.user_id);
+ this.accounts.push(account);
+ if(sync)
+ this.setStorage();
+ }
+ deactivateCurrentAccount(){
+ if(this.currentAccount){
+ this.currentAccount.active = 0;
+ this.setStorage();
+ }
+ }
+ setCurrentAccount(account,sync=1){
+ this.currentAccount = account;
+ this.currentAccount.active = account.active||1; //登录保存 登录不保存 保存不登录 不保存不登录
+ if (sync)
+ this.setStorage();
+ }
+ clearCurrentAccount(){
+ this.currentAccount = void 0;
+ this.setStorage();
+ }
+ getCurrentAccount(){
+ return this.currentAccount;
+ }
+ getAccounts(){
+ return this.accounts;
+ }
+ removeAccount({login,user_id}){
+ this.accounts = this.accounts.filter(i=>i.login!=login&&i.user_id!=user_id);
+ this.setStorage();
+ }
+ clearAccounts(){
+ this.accounts = []
+ this.setStorage();
+ }
+ getAccount({login="",user_id=-1}){
+ return this.accounts.filter(i => i.login==login||i.user_id== user_id)[0];
+ }
+ loadStorage(){
+ let {c,s=[]} = wx.getStorageSync(this.key)||{};
+ this.accounts= this.decryptAccounts(s);
+ if(c)
+ this.currentAccount = this.decryptAccount(c);
+ }
+ setStorage(arr){
+ let s = this.encryptAccounts(this.accounts);
+ if(this.currentAccount)
+ var c = this.encryptAccount(this.currentAccount);
+ else
+ var c = void 0;
+ wx.setStorageSync(this.key, {c,s});
+ }
+ encryptAccount(obj){
+ let {login, password, user_id, image_url, ...data} = obj;
+ let u1dk23ds = this.encrypt(login);
+ let a2f3hj838 = this.encrypt(password);
+ return { u1dk23ds, a2f3hj838, d3sewc: user_id, f4djshe:image_url, ...data};
+ }
+ decryptAccount(obj){
+ let { u1dk23ds, a2f3hj838, d3sewc, f4djshe, ...data} = obj;
+ let login = this.decrypt(u1dk23ds);
+ let password = this.decrypt(a2f3hj838);
+ return { login, password, user_id: d3sewc, image_url: f4djshe,...data};
+ }
+ encryptAccounts(arr){
+ return arr.map(i=>this.encryptAccount(i));
+ }
+ decryptAccounts(arr){
+ return arr.map(i=>this.decryptAccount(i));
+ }
+ encrypt(str=""){
+ let value = '';
+ for(var i=0;i {
console.log("get_homepage_info");
@@ -170,6 +172,6 @@ Page({
})
},
onShareAppMessage: function () {
-
+ console.log(this.route, this.__route__,212121);
}
})
\ No newline at end of file
diff --git a/miniprogram/pages/home/home.json b/miniprogram/pages/home/home.json
index 584d87d..86f41c3 100644
--- a/miniprogram/pages/home/home.json
+++ b/miniprogram/pages/home/home.json
@@ -2,6 +2,6 @@
"navigationBarTitleText": "个人中心",
"enablePullDownRefresh": false,
"usingComponents": {
- "join-course-modal": "/components/modal/join-course/join-course"
+ "iconfont":"/components/iconfont/iconfont"
}
}
diff --git a/miniprogram/pages/home/home.wxml b/miniprogram/pages/home/home.wxml
index 8e4dd9a..5a69e07 100644
--- a/miniprogram/pages/home/home.wxml
+++ b/miniprogram/pages/home/home.wxml
@@ -9,6 +9,8 @@
{{user.name}}
+
+
@@ -29,15 +31,42 @@
- 修改密码
-
-
- 当前版本:{{version}}
- 关于
+
+ 修改密码
+
+
+
+ 实名认证
+
+
+
+ 职业认证
+
+
+
+
+
+
+ 关于
+
+
+
+ 切换账号
+
+
-
+
-
\ No newline at end of file
+
+
+ 当前版本:{{version}}
+
\ No newline at end of file
diff --git a/miniprogram/pages/home/home.wxss b/miniprogram/pages/home/home.wxss
index 5260b50..37982c3 100644
--- a/miniprogram/pages/home/home.wxss
+++ b/miniprogram/pages/home/home.wxss
@@ -1,29 +1,49 @@
+.auth-tip{
+ margin-right: 12px;
+}
.nav-list{
margin-top: 4px;
}
+.gap{
+ margin-bottom: 4px;
+}
.nav {
font-size: 16px;
background: white;
border-bottom: 1px solid #eee;
padding: 0 14px;
height: 42px;
- line-height: 42px;
- text-align: left;
font-weight: normal;
+ display: flex;
+ align-items: center;
+ position: relative;
+}
+.nav>.enter{
+ position: absolute;
+ right: 12px;
+}
+.nav>.icon{
+ margin-right: 10px;
}
-
button.nav::after{
border: none;
}
.login{
- margin: 16rpx 70rpx;
+ margin-top: 24rpx;
}
.logout{
- background: red;
color: white;
- margin-top: 16rpx;
+ background-color: #fa5151;
+}
+
+.version{
+ font-size: 11px;
+ color: grey;
+ text-align: center;
+ margin-top: 20px;
+ margin-bottom: 8px;
}
.user-display{
diff --git a/miniprogram/pages/main/my_course/my_course.js b/miniprogram/pages/main/my_course/my_course.js
index bf51b59..19a825f 100644
--- a/miniprogram/pages/main/my_course/my_course.js
+++ b/miniprogram/pages/main/my_course/my_course.js
@@ -11,6 +11,7 @@ const categories = [{ text: "我学习的", value: "study" }, { text: "我管理
Component({
data: {
imgDir: global.config.imgDir,
+ attachDir:global.config.attachDir,
categories,
statuses: [{ text: "正在进行", value: "processing" }, { text: "已结束", value: "end" }],
courses: [],
@@ -44,10 +45,22 @@ Component({
this.options["status"] = value.value;
this.pullCourses({refresh:1});
},
- show_join_course_modal: function (event) {
- this.setData({ show_join_course_modal: true });
+ addCourse(){
+ if(app.user().user_identity=="学生"){
+ this.setData({showModal:1});
+ }else{
+ wx.showActionSheet({
+ itemList: ["加入课堂",'创建课堂'],
+ success:res=>{
+ if(res.tapIndex==0){
+ this.setData({ showModal: 1 });
+ }else{
+ app.navigateTo({ url:"{course_setting}?intent=create"});
+ }
+ }
+ })
+ }
},
-
enter_course: function (event) {
console.log(event);
let { id, course_name } = event.currentTarget.dataset;
@@ -79,7 +92,7 @@ Component({
courses = courses.filter(i => {
return i.is_end == (data.status == "end")
});
- console.log(courses);
+ //console.log(courses);
if(!refresh)
courses = this.data.courses.concat(courses);
this.setData({ courses });
diff --git a/miniprogram/pages/main/my_course/my_course.wxml b/miniprogram/pages/main/my_course/my_course.wxml
index db8ebc2..35a18db 100644
--- a/miniprogram/pages/main/my_course/my_course.wxml
+++ b/miniprogram/pages/main/my_course/my_course.wxml
@@ -14,6 +14,6 @@
-
-
+
+
\ No newline at end of file
diff --git a/miniprogram/shixun/pages/shixun/shixun.wxml b/miniprogram/shixun/pages/shixun/shixun.wxml
index 42182e3..dea6e84 100644
--- a/miniprogram/shixun/pages/shixun/shixun.wxml
+++ b/miniprogram/shixun/pages/shixun/shixun.wxml
@@ -2,7 +2,6 @@
-
+
diff --git a/miniprogram/shixun_homework/pages/shixun_homework/shixun_homework.js b/miniprogram/shixun_homework/pages/shixun_homework/shixun_homework.js
index db6c5b0..9faaecf 100644
--- a/miniprogram/shixun_homework/pages/shixun_homework/shixun_homework.js
+++ b/miniprogram/shixun_homework/pages/shixun_homework/shixun_homework.js
@@ -9,13 +9,18 @@ Page({
this.setData({homework_id});
this.refresh();
},
- async refresh(){
+ refresh(){
let {homework_id} = this.data;
- let data = await app.api("homework_commons.works_list")({homework_id});
- this.setData(data);
+ app.api("homework_commons.works_list")({homework_id})
+ .then(res=>{
+ this.setData(res);
+ })
+ .catch(e=>{
+ app.showEror(e);
+ })
},
enterShixun(){
- app.navigateTo({url:`{shixun}?identifier=${this.data.shixun_identifier}`});
+ app.redirectTo({url:`{shixun}?identifier=${this.data.shixun_identifier}`});
},
onPullDownRefresh: function () {
diff --git a/miniprogram/sitemap.json b/miniprogram/sitemap.json
index ca02add..58eb8d7 100644
--- a/miniprogram/sitemap.json
+++ b/miniprogram/sitemap.json
@@ -1,7 +1,17 @@
{
"desc": "关于本文件的更多信息,请参考文档 https://developers.weixin.qq.com/miniprogram/dev/framework/sitemap.html",
- "rules": [{
- "action": "allow",
- "page": "*"
- }]
+ "rules": [
+ {
+ "action": "allow",
+ "page": "shixun/pages/shixun/shixun",
+ "params": [
+ "identifier"
+ ],
+ "matching": "inclusive"
+ },
+ {
+ "action": "allow",
+ "page": "*"
+ }
+ ]
}
\ No newline at end of file
diff --git a/miniprogram/task/components/test_set/test_set.js b/miniprogram/task/components/test_set/test_set.js
index 0a9ef67..4ba5d25 100644
--- a/miniprogram/task/components/test_set/test_set.js
+++ b/miniprogram/task/components/test_set/test_set.js
@@ -17,8 +17,13 @@ Component({
methods: {
analyse(){
//console.log(this.data);
- var outputs = this.data.data.output.split(/\n/).map(i=>({text:i}));
- var actual_outputs = this.data.data.actual_output.split(/\n/).map(i=>({text:i}));
+ let {output="",actual_output=""} = this.data.data;
+ //console.log(this.data,actual_output,output);
+ output = output||"";
+ actual_output = actual_output||"";
+ console.log(this.data, actual_output, output);
+ var outputs = output.split(/\n/).map(i=>({text:i}));
+ var actual_outputs = actual_output.split(/\n/).map(i=>({text:i}));
var lines = Math.min(outputs.length, actual_outputs.length);
for(var i=0;i