diff --git a/app.json b/app.json index b988a6e..649a598 100644 --- a/app.json +++ b/app.json @@ -1,8 +1,8 @@ { "pages": [ + "pages/login/codeLogin/codeLogin", "pages/index/rank/rank", "pages/index/index", - "pages/login/codeLogin/codeLogin", "pages/index/achievement/achievement", "pages/index/newPunch/newPunch", "pages/mine/record/record", diff --git a/package-lock.json b/package-lock.json index 27928ac..9d0453a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,11 @@ "version": "1.10.5", "resolved": "https://registry.npmmirror.com/@vant/weapp/-/weapp-1.10.5.tgz", "integrity": "sha512-bAHp9r0ZiRsOqPOLzQHI/ZvkAlXzol1/TFhM70MyghuxkzJTjcDUd8RIfLkCN3c1MCK/PfBGw2an8/afygftCg==" + }, + "moment": { + "version": "2.29.4", + "resolved": "https://registry.npmmirror.com/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==" } } } diff --git a/package.json b/package.json index 1979798..732edaa 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,8 @@ "description": "计划管家", "main": "app.js", "dependencies": { - "@vant/weapp": "^1.10.5" + "@vant/weapp": "^1.10.5", + "moment": "^2.29.4" }, "scripts": { "test": "echo \"Error: no test specified\" && exit 1" diff --git a/pages/index/index.js b/pages/index/index.js index f4e2a95..3fc231d 100644 --- a/pages/index/index.js +++ b/pages/index/index.js @@ -5,6 +5,7 @@ import request from '../../api/request.js' Page({ data: { active: 1, + taskList: [] // bannerList: [], // 轮播图 }, checkTabs(e) { @@ -13,11 +14,37 @@ Page({ active: index }) //修改参数 }, + + //打卡记录列表 + getTaskList() { + request({ + url: `/wx/task/cardTaskList`, + method: 'post', + data: { + "oneselfFlag": 1, + "page": 1, + "pageSize": 999, + "userId": wx.getStorageSync("userInfo_id") + }, + }).then(res => { + if (res.code == 0) { + this.setData({ + taskList: res.rows + }) + } else { + wx.showToast({ + title: res.msg, + icon: 'none', + duration: 1500 + }) + } + }) + }, //查看排行榜 toRank() { - wx.navigateTo({ - url: `../index/rank/rank` + wx.switchTab({ + url: './rank/rank', }) }, @@ -40,6 +67,7 @@ Page({ // this.getBannerList() //获取banner }, onShow: function (options) { + this.getTaskList() this.setData({ showAdd: false }) diff --git a/pages/index/index.wxml b/pages/index/index.wxml index 9ea689d..a57c01a 100644 --- a/pages/index/index.wxml +++ b/pages/index/index.wxml @@ -13,34 +13,34 @@ - + - 英语单词每日打卡 - 我发布于09-09 08:21 + {{value.taskTitle}} + 开始时间 {{value.startDate}} - 每日20个英文单词背诵 - 已坚持打卡 + {{value.taskDesc}} + 打卡频次: - 每天 + {{value.taskFrequency}} - + 打卡要求: - 需填写单词个数 + {{'需要' + value.submitCondition}} 其他: - 不允许补卡 + {{value.allowRepairCard == 1 ? '允许补卡': '不允许补卡'}} diff --git a/pages/index/index.wxss b/pages/index/index.wxss index 8851334..808f00e 100644 --- a/pages/index/index.wxss +++ b/pages/index/index.wxss @@ -63,10 +63,10 @@ .card { width: 90vw; - height: 400px; background-color: #fff; border-radius: 8vw; padding: 8vw 7vw; + margin-bottom: 30px; box-sizing: border-box; box-shadow: 1px 1px 1px 1px rgb(196, 196, 196); } diff --git a/pages/index/newPunch/newPunch.js b/pages/index/newPunch/newPunch.js index 29d448b..df1c5db 100644 --- a/pages/index/newPunch/newPunch.js +++ b/pages/index/newPunch/newPunch.js @@ -1,41 +1,187 @@ // pages/index/rank/rank.js +import request from '../../../api/request.js' +import moment from 'moment'; Page({ /** * 页面的初始数据 */ data: { + tempId: 0, form: { - biaoti: '', - message: '', - checked: true + taskTitle: '', //任务标题 + taskDesc: '', //任务描述内容 + allowRepairCard: false, //是否允许补卡 1是 2否 + hasData: false, //是否需要提交数据 1是 2否 + // id: '', // 任务ID + lackNum: '', // 缺卡次数 + remindTime: '', // 打卡提醒时间点 + startDate: '', // 打卡开始时间 + statisticsUnit: '', // 统计单位 hasData=1 时,必传 + submitCondition: '', //提交包含条件:图片、视频、音频 + taskCycle: '', //打卡周期 + taskFileUrl: [], //任务文件(含多个) + taskFrequency: '', //打卡频次 + userId: '', //所属用户ID }, + fileList: [], //弹出层 //统计单位 unitShow: false, - columnsUnit: ['杭州', '宁波', '温州', '嘉兴', '湖州'], + columnsUnit: ['小时', '天', '月'], //开始时间 startTimeShow: false, columnsStartTime: ['9', '10', '11', '12'], + minDate: new Date().getTime(), + currentDate: new Date().getTime(), + formatter(type, value) { + if (type === 'year') { + return `${value}年`; + } + if (type === 'month') { + return `${value}月`; + } + return value; + }, //打卡周期 clockCycleShow: false, - columnsClockCycle: ['30天', '60天', '90天', '120天'], + columnsClockCycle: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10'], //打卡频次 clockRateShow: false, columnsClockRate: ['每天', '7天', '一个月'], //打卡提醒 clockRemindShow: false, - columnsClockRemind: ['18:00', '19:00'], + columnsClockRemind: [ + { + values: ['周一', '周二', '周三', '周四', '周五', '周六', '周日'], + defaultIndex: 2, + }, + // 第二列 + { + values: ['8:00', '9:00', '10:00', '11:00', '12:00', '13:00', '14:00', '15:00', '16:00', '17:00', '18:00', '19:00', '20:00', '21:00'], + defaultIndex: 1, + }, + ], //打卡缺卡提醒 clockLackShow: false, - columnsClockLack: ['缺卡三天以上', '缺卡十天以上', '缺卡三十天以上'], + columnsClockLack: [1,2,3], //必须包含 containShow: false, - columnsContain: ['图片', '视频', '音频'], + columnsContain: ['图片'], + }, + //获取模板详情 / 空模板 + getDetail() { + request({ + url: `/wx/temp/getTempDetail`, + method: 'get', + data: { + "tempId": this.data.tempId, + }, + }).then(res => { + if (res.code == 0) { + const data = res.data + this.setData({ + 'form.taskTitle': data.taskTitle + }) + this.setData({ + 'form.taskDesc': data.taskDesc + }) + this.setData({ + 'form.allowRepairCard': data.allowRepairCard + }) + this.setData({ + 'form.hasData': data.hasData + }) + this.setData({ + 'form.lackNum': data.lackNum + }) + this.setData({ + 'form.remindTime': data.remindTime + }) + this.setData({ + 'form.startDate': data.startDate + }) + this.setData({ + 'form.statisticsUnit': data.statisticsUnit + }) + this.setData({ + 'form.submitCondition': data.submitCondition + }) + this.setData({ + 'form.taskCycle': data.taskCycle + }) + this.setData({ + 'form.taskFileUrl': [] + }) + this.setData({ + 'form.taskFrequency': data.taskFrequency + }) + } else { + wx.showToast({ + title: res.msg, + icon: 'none', + duration: 1000 + }) + } + }) }, //输入 - onfieldChange() { - + onfieldChange(e) { + this.setData({ + 'form.taskTitle': e.detail + }) + }, + //输入 + onfieldDescChange(e) { + this.setData({ + 'form.taskDesc': e.detail + }) + }, + //开关 + onSwitch(e) { + console.log(e) + this.setData({ + 'form.hasData': e.detail + }) + }, + onChange(e) { + console.log(e) + this.setData({ + 'form.allowRepairCard': e.detail + }) + }, + //文件上传 + afterRead(event) { + const { + file + } = event.detail; + var that = this + // 当设置 mutiple 为 true 时, file 为数组格式,否则为对象格式 + wx.uploadFile({ + url: 'https://market.myjxt.com:51311/file/fileUpload', // 仅为示例,非真实的接口地址 + filePath: file.url, + name: 'file', + formData: { + user: 'test' + }, + success(res) { + // 上传完成需要更新 fileList + const { + fileList = [] + } = that.data; + fileList.push({ + ...file, + url: res.data + }); + console.log(res,fileList) + that.setData({ + fileList + }); + that.setData({ + 'form.taskFileUrl': fileList.map(v => v.url) + }) + }, + }); }, //开关 onswitchChange({ @@ -45,11 +191,39 @@ Page({ 'form.checked': detail }); }, + //创建 + createTask() { + console.log(this.data.form) + request({ + url: `/wx/task/addCardTask`, + method: 'post', + data: this.data.form, + }).then(res => { + if (res.code == 0) { + wx.navigateTo({ +    url: '../../mine/record/record' + }) + }else { + wx.showToast({ + title: res.msg, + icon: 'none', + duration: 1000 + }) + } + }) + }, /** * 生命周期函数--监听页面加载 */ onLoad(options) { - + this.setData({ + 'form.userId': wx.getStorageSync('userInfo_id') + }) + this.setData({ + tempId: options.tempId + }, () => { + this.getDetail() + }) }, // 创建完成 handleCreate() { @@ -81,7 +255,11 @@ Page({ unitShow: false }) }, - changeUnitShow() { + changeUnitShow(e) { + console.log(e) + this.setData({ + 'form.statisticsUnit': e.detail.value + }) this.setData({ unitShow: false }) @@ -99,7 +277,11 @@ Page({ startTimeShow: false }) }, - changeStartTimeShow() { + changeStartTimeShow(e) { + let time = moment(e.detail).format('YYYY-MM-DD') + this.setData({ + 'form.startDate': time, + }); this.setData({ startTimeShow: false }) @@ -117,7 +299,10 @@ Page({ clockCycleShow: false }) }, - changeClockCycleShow() { + changeClockCycleShow(e) { + this.setData({ + 'form.taskCycle': e.detail.value + }) this.setData({ clockCycleShow: false }) @@ -135,7 +320,10 @@ Page({ clockRateShow: false }) }, - changeClockRateShow() { + changeClockRateShow(e) { + this.setData({ + 'form.taskFrequency': e.detail.value + }) this.setData({ clockRateShow: false }) @@ -153,7 +341,10 @@ Page({ clockRemindShow: false }) }, - changeClockRemindShow() { + changeClockRemindShow(e) { + this.setData({ + 'form.remindTime': e.detail.value[0] + '::' + e.detail.value[1] + }) this.setData({ clockRemindShow: false }) @@ -171,7 +362,10 @@ Page({ clockLackShow: false }) }, - changeClockLackShow() { + changeClockLackShow(e) { + this.setData({ + 'form.lackNum': e.detail.value + }) this.setData({ clockLackShow: false }) @@ -189,7 +383,10 @@ Page({ containShow: false }) }, - changeContainShow() { + changeContainShow(e) { + this.setData({ + 'form.submitCondition': e.detail.value + }) this.setData({ containShow: false }) diff --git a/pages/index/newPunch/newPunch.json b/pages/index/newPunch/newPunch.json index 9b50ec7..6cc0a80 100644 --- a/pages/index/newPunch/newPunch.json +++ b/pages/index/newPunch/newPunch.json @@ -7,7 +7,9 @@ "van-switch": "@vant/weapp/switch/index", "van-button": "@vant/weapp/button/index", "van-popup": "@vant/weapp/popup/index", - "van-picker": "@vant/weapp/picker/index" + "van-picker": "@vant/weapp/picker/index", + "van-uploader": "@vant/weapp/uploader/index", + "van-datetime-picker": "@vant/weapp/datetime-picker/index" }, - "navigationBarTitleText": "自定义打卡" + "navigationBarTitleText": "打卡模板" } \ No newline at end of file diff --git a/pages/index/newPunch/newPunch.wxml b/pages/index/newPunch/newPunch.wxml index de3ce80..ecfde4b 100644 --- a/pages/index/newPunch/newPunch.wxml +++ b/pages/index/newPunch/newPunch.wxml @@ -1,164 +1,125 @@ - - - - + + + + + + + + + + + + + + + + + + + + + 需要提交数据 + + + + - - - - + + + + + + + 允许补卡 + + + - - - - - - - - - - + + 开启后,在打卡周期内,学生家长可对未打卡的任务进行补卡。 - - - 需要提交数据 - - + + + + - - - - - - - - - 允许补卡 - - + + + + + + + + + - - - 开启后,在打卡周期内,学生家长可对未打卡的任务进行补卡。 - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + - - 学生如缺卡达到一定条件,将会提醒家长 - - - - - - + + 学生如缺卡达到一定条件,将会提醒家长 + + + + + + - - - 创建打卡 - + + + 创建打卡 + - - + + - - + + + - - + + - - + + - - + + - - + + - - + + \ No newline at end of file diff --git a/pages/index/rank/rank.js b/pages/index/rank/rank.js index b530104..1755237 100644 --- a/pages/index/rank/rank.js +++ b/pages/index/rank/rank.js @@ -1,17 +1,48 @@ // pages/index/rank/rank.js +import request from '../../../api/request.js' +import moment from 'moment'; Page({ /** * 页面的初始数据 */ data: { - rankList: [ - {name: '小米',num: 20}, - {name: '杰瑞',num: 110}, - {name: '王小明',num: 75}, - ] + rankList: [], + dayTime: '', + user: { + id: '', + name: '', + nickname: '', + phone: "", + token: "", + } + }, + + //排行榜列表 + getRankList() { + request({ + url: `/wx/task/getSignRank`, + method: 'post', + data: { + "page": 1, + "pageSize": 999, + "userId": wx.getStorageSync("userInfo_id") + }, + }).then(res => { + if (res.code == 0) { + this.setData({ + rankList: res.rows + }) + console.log(this.data.rankList) + } else { + wx.showToast({ + title: res.msg, + icon: 'none', + duration: 1500 + }) + } + }) }, - //去打卡 toOpen() { wx.navigateTo({ @@ -22,7 +53,13 @@ Page({ * 生命周期函数--监听页面加载 */ onLoad(options) { - + this.setData({ + 'user': wx.getStorageSync('userInfo') + }) + this.setData({ + "dayTime": moment(new Date().getTime()).format('YYYY-MM-DD') + }) + this.getRankList() }, // 统一返回 handleBack() { diff --git a/pages/index/rank/rank.wxml b/pages/index/rank/rank.wxml index 779d525..a100a1a 100644 --- a/pages/index/rank/rank.wxml +++ b/pages/index/rank/rank.wxml @@ -1,15 +1,15 @@ - 更新时间:2022-03-12 + 更新时间:{{dayTime}} - 陈浩然 + {{user.name}} - 已坚持12天 - 34次 + 已坚持xx天 + xx次 @@ -24,7 +24,7 @@ - {{index + 1}} + {{index + 1}} {{value.name}} diff --git a/pages/index/rank/rank.wxss b/pages/index/rank/rank.wxss index efb3465..d8723a0 100644 --- a/pages/index/rank/rank.wxss +++ b/pages/index/rank/rank.wxss @@ -58,6 +58,10 @@ width: 28vw; display: flex; justify-content: space-between; + +} +.L_box { + width: 50px; } .table_item { @@ -81,6 +85,7 @@ .tem_pic { width: 22px; height: 28px; + text-align: center; } .btn { position: fixed; diff --git a/pages/login/codeLogin/codeLogin.js b/pages/login/codeLogin/codeLogin.js index 06c2b54..35ee43e 100644 --- a/pages/login/codeLogin/codeLogin.js +++ b/pages/login/codeLogin/codeLogin.js @@ -1,5 +1,8 @@ // pages/login/codeLogin/codeLogin.js -var app = getApp(); +// var app = getApp(); +var api = 'https://proxy.shunzhi.net/'; +var api_card = 'https://proxy.shunzhi.net/card/'; +var appid = 'wx186236fdcd93edcc'; var util = require('../../../utils/md5.js') import request from '../../../api/request.js' Page({ @@ -21,6 +24,7 @@ Page({ path: '', //登录后跳转页面 modelShow: false, //完善信息 phone: '', //getUserInfo获取到的手机号 + openId: '' }, onLoad: function (options) { console.log('登录页options:', options) @@ -69,20 +73,25 @@ Page({ }) } request({ - url: `h5/user/Oneclicklogin`, - method: 'get', + url: `/wx/app/oneClickLogin/`+ appid, + method: 'post', data: { "encryptedData": this.data.encryptedData, - "session_key": this.data.session_key, + "sessionKey": this.data.session_key, "iv": this.data.iv, + "openId": this.data.openId }, }).then(res => { - if (res.success) { + if (res.code == 0) { if (res.data) { this.setData({ phone: res.data.phone }, () => { - this.getUserInfo() + wx.setStorageSync('userInfo', res.data) + wx.setStorageSync('userInfo_id', res.data.id) + wx.switchTab({ + url: '/pages/index/rank/rank', + }) }) } else { wx.showToast({ @@ -107,23 +116,23 @@ Page({ } }, getUserInfo() { - let that = this - request({ - url: `h5/user/getuserInfoNew`, - method: 'get', - data: { - // PhoneName: '13355752969' - PhoneName: this.data.phone - }, - }).then((res) => { - if (res.success) { - if (res.data) { - wx.setStorageSync('userInfo', res.data) - wx.setStorageSync('showModal', '') + // let that = this + // request({ + // url: `h5/user/getuserInfoNew`, + // method: 'get', + // data: { + // // PhoneName: '13355752969' + // PhoneName: this.data.phone + // }, + // }).then((res) => { + // if (res.success) { + // if (res.data) { + // wx.setStorageSync('userInfo', res.data) + // wx.setStorageSync('showModal', '') - } - } - }) + // } + // } + // }) }, getOpenId() { return request({ @@ -133,10 +142,13 @@ Page({ code: this.data.loginCode }, }).then(res2 => { - // console.log(res2.data); this.setData({ - session_key: JSON.parse(res2.data).session_key + session_key: res2.data.sessionKey }) + this.setData({ + openId: res2.data.openid + }) + console.log(this.data); }) }, bindUserName: function (e) { @@ -182,17 +194,16 @@ Page({ title: '请求中', }) wx.request({ - url: api + '/wx/app/loginCode', + url: api_card + '/wx/app/loginCode', data: { - captcha: code, - mobile: username + code: code, + phone: username }, - method: 'get', + method: 'post', success: (res) => { wx.hideLoading(); if (res.data.success) { console.log(res.data) - return if (res.data.data) { this.setData({ phone: res.data.data.phone @@ -308,7 +319,7 @@ Page({ } }, getPhoneNumber(e) { - // console.log(e.detail) + console.log(e.detail) if (e.detail.errMsg == 'getPhoneNumber:ok') { this.setData({ encryptedData: e.detail.encryptedData, @@ -317,7 +328,6 @@ Page({ this.login() }) } - }, //去查看协议 toProtocol() { @@ -333,7 +343,7 @@ Page({ }, goIndex() { wx.switchTab({ - url: '/pages/index/index', + url: '/pages/index/rank/rank', }) }, diff --git a/pages/login/codeLogin/codeLogin.wxml b/pages/login/codeLogin/codeLogin.wxml index 0594c9e..40c331b 100644 --- a/pages/login/codeLogin/codeLogin.wxml +++ b/pages/login/codeLogin/codeLogin.wxml @@ -7,18 +7,18 @@ 欢迎登录 - 请输入登录资料 + - + - 登  录 + diff --git a/pages/mine/index.js b/pages/mine/index.js index 1c375ff..347d55b 100644 --- a/pages/mine/index.js +++ b/pages/mine/index.js @@ -6,7 +6,8 @@ Page({ * 页面的初始数据 */ data: { - + user_name: '', + user_phone: '', }, // 打卡记录 handleRecord(){ @@ -21,6 +22,16 @@ Page({ }) }, /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + let userInfo = wx.getStorageSync('userInfo') + this.setData({ + "user_name": userInfo.name || userInfo.nickname, + "user_phone": userInfo.phone + }) + }, + /** * 用户点击右上角分享 */ onShareAppMessage: function () { diff --git a/pages/mine/index.wxml b/pages/mine/index.wxml index 84955d8..bef06c2 100644 --- a/pages/mine/index.wxml +++ b/pages/mine/index.wxml @@ -4,8 +4,8 @@ - 陈浩然 - 绍兴市高级中学.20级 + {{user_name}} + {{user_phone}} diff --git a/pages/mine/record/record.js b/pages/mine/record/record.js index ebbad0c..35ac02a 100644 --- a/pages/mine/record/record.js +++ b/pages/mine/record/record.js @@ -1,4 +1,5 @@ // pages/index/record/record.js +import request from '../../../api/request.js' Page({ /** @@ -7,16 +8,65 @@ Page({ data: { tabindex: 0, showAdd: false, - + taskList: [], + tempList: [ - {name:'自定义模板',url: '/img/answer/zdy.png'}, - {name:'英语模板',url: '/img/answer/english.png'}, - {name:'数学模板',url: '/img/answer/math.png'}, - ] + // {name:'自定义模板',url: '/img/answer/zdy.png'}, + // {name:'英语模板',url: '/img/answer/english.png'}, + // {name:'数学模板',url: '/img/answer/math.png'}, + ] + }, + + //打卡记录列表 + getTaskList() { + request({ + url: `/wx/task/cardTaskList`, + method: 'post', + data: { + "oneselfFlag": this.data.tabindex + 1, + "page": 1, + "pageSize": 999, + "userId": wx.getStorageSync("userInfo_id") + }, + }).then(res => { + if (res.code == 0) { + this.setData({ + taskList: res.rows + }) + } else { + wx.showToast({ + title: res.msg, + icon: 'none', + duration: 1500 + }) + } + }) + }, + + //模板列表 + getTempList() { + request({ + url: `/wx/temp/tempList`, + method: 'post', + data: {}, + }).then(res => { + if (res.code == 0) { + this.setData({ + tempList: res.data + }) + } else { + wx.showToast({ + title: res.msg, + icon: 'none', + duration: 1500 + }) + } + }) }, //打卡 toShow(e) { + this.getTempList() this.setData({ showAdd: true }) @@ -28,22 +78,25 @@ Page({ }) }, //选择模板 - toPunch() { + toPunch(e) { + let obj = e.currentTarget.dataset + let id = obj.value ? obj.value.id :0 wx.navigateTo({ - url: `../../index/newPunch/newPunch` + url: `../../index/newPunch/newPunch?tempId=${id}` }) }, /** * 生命周期函数--监听页面加载 */ onLoad(options) { - + this.getTaskList() }, //切换 handleTab(e) { this.setData({ tabindex: e.detail.index }) + this.getTaskList() }, // 打卡成果 handleAchievement() { diff --git a/pages/mine/record/record.wxml b/pages/mine/record/record.wxml index 152e408..e70ea39 100644 --- a/pages/mine/record/record.wxml +++ b/pages/mine/record/record.wxml @@ -8,34 +8,34 @@ 进行中打卡 - + - 英语单词每日打卡 - 我发布于09-09 08:21 + {{value.taskTitle}} + 开始时间 {{value.startDate}} - 每日20个英文单词背诵 - 已坚持打卡 + {{value.taskDesc}} + 打卡频次: - 每天 + {{value.taskFrequency}} - + 打卡要求: - 需填写单词个数 + {{'需要' + value.submitCondition}} 其他: - 不允许补卡 + {{value.allowRepairCard == 1 ? '允许补卡': '不允许补卡'}} @@ -58,9 +58,13 @@ 选择模板 + + + 自定义模板 + - - {{value.name}} + + {{value.taskTitle}} -- libgit2 0.21.0