// pages/index/achievement/achievement.js // 引入插件安装器 import plugin from '../../../component/v2/plugins/index' import week from '../../../component/v2/plugins/week' import todo from '../../../component/v2/plugins/todo' import selectable from '../../../component/v2/plugins/selectable' import request from '../../../api/request.js' import moment from 'moment'; plugin .use(week) .use(todo) .use(selectable) Page({ /** * 页面的初始数据 */ data: { calendarConfig: { theme: 'elegant', weekMode: true, // 周视图模式 highlightToday: true, // 是否高亮显示当天 hideHeader: true, // 隐藏日历头部操作栏 disableMode: { // 禁用某一天之前/之后的所有日期 type: 'after', // [‘before’, 'after'] // 无该属性或该属性值为假,则默认为当天 }, }, isDisplay: false, clockShow: false, form: { id: '', //任务ID isRepair: 1, //是否补卡1立即打卡2补卡 repairDate: '', //补卡日期,当isRepair=2时必传,格式:YYYY-MM-dd statisticsUnit: '', //统计单位所含内容 taskDesc: '', //打卡描述内容 taskFileUrl: [], //任务文件(含多个) userId: '' }, fileList: [], calendar: {}, //日历 valueId: '', //任务ID taskVo: { allowRepairCard: 0, hasData: 0, statisticsUnit: "", submitCondition: "", id: 0, releaseTime: "", signTotal: 0, taskCycle: 0, taskDesc: "", taskFrequency: "", taskTitle: "", weekDay: "" }, resData: [], //成果数据 recordVo: { commitTime: "", files: [], signDate: "", taskRecordDesc: "", taskStatisticsParam: "" }, //成果数据当天 recordVoShow: false, isToday: true, //是否是今天 isLarge: false, //是否大于今天 repairText: '', dayMoment: '' }, /** * 选择日期后执行的事件 */ afterTapDate(e) { let date = e.detail.date this.resetV2(e.detail.year, e.detail.month, date) this.setData({ isToday: e.detail.isToday }) //选择的年月日 let checkDay = e.detail.year + '-' + e.detail.month + '-' + e.detail.date let checktimeDate = new Date(moment(checkDay).format('YYYY-MM-DD')).getTime() //选择的日期是否大于今天 if (checktimeDate > new Date().getTime()) { this.setData({ isLarge: true }) } else { this.setData({ isLarge: false }) } this.setData({ repairText: e.detail.todoText }) let recordVo = this.data.resData.eventDetails[date - 1].recordVo //匹配数据 if (recordVo != null) { console.log('复制', recordVo) this.setData({ recordVo: recordVo }) this.setData({ recordVoShow: true }) } else { this.setData({ recordVoShow: false }) } }, //获取信息(第一次进来,模拟点击渲染) getInfo(doday, isOne = 0, e) { request({ url: `/wx/task/getSignRecord`, method: 'get', data: { // wx.getStorageSync('userInfo_id'), "taskId": this.data.valueId, "signDate": doday }, }).then(res => { if (res.code == 0) { this.setData({ resData: res.data }) this.getV2(res.data) if (isOne == 1) { this.afterTapDate(e) } } else { wx.showToast({ title: res.msg, icon: 'none' }) } }) }, //初始化日历 initialize() { // 设置待办 this.setData({ 'calendar': this.selectComponent('#calendar').calendar }) }, //重置日历 resetV2(year, month, date) { console.log(year, month, date) if (this.data.dayMoment == month) {} else { let e = { detail: { date: date, month: month, year: year } } this.setData({ dayMoment: month }) this.getInfo(moment(year + '-' + month + '-' + date).format('YYYY-MM-DD'), 1, e) } }, //显示日历 getV2(resData) { this.setData({ taskVo: resData.taskVo }) // const calendar = this.selectComponent('#calendar').calendar this.data.calendar.setTodos({ // 待办点标记设置 pos: 'bottom', // 待办点标记位置 ['top', 'bottom'] dotColor: 'purple', // 待办点标记颜色 circle: false, // 待办圆圈标记设置(如圆圈标记已签到日期),该设置与点标记设置互斥 showLabelAlways: true, // 点击时是否显示待办事项(圆点/文字),在 circle 为 true 及当日历配置 showLunar 为 true 时,此配置失效 dates: resData.eventDetails, }) this.data.calendar.enableArea([this.data.taskVo.startDate, moment(new Date().getTime()).format('YYYY-MM-DD')]) }, //成果 toAchieve(e) { wx.navigateTo({ url: '../achievement/achievement?valueId=' + this.data.valueId, }) }, //唤起 打卡 toClock() { this.setData({ clockShow: true }) }, //唤起补卡 toRepairClock() { let selectData = this.data.calendar.getSelectedDates() let doday = selectData[0].year + '-' + selectData[0].month + '-' + selectData[0].date console.log(doday) let repairDate = moment(doday).format('YYYY-MM-DD') this.setData({ 'form.isRepair': 2 }) this.setData({ 'form.repairDate': repairDate }) this.setData({ clockShow: true }) }, //确定-打卡 toCardTask() { this.setData({ 'form.id': this.data.valueId }) this.setData({ 'form.userId': wx.getStorageSync('userInfo_id') }) if (this.data.taskVo.submitCondition == '图片') { if (this.data.form.taskFileUrl.length == 0) { return wx.showToast({ title: '请上传图片', icon: 'none' }) } } request({ url: `/wx/task/commitCardTask`, method: 'post', data: this.data.form, }).then(res => { if (res.code == 0) { wx.showToast({ title: '打卡成功', icon: 'none' }) let e = { detail: { date: moment(this.data.form.repairDate).format('DD'), month: moment(this.data.form.repairDate).format('MM'), year: moment(this.data.form.repairDate).format('YYYY') } } this.getInfo(moment(this.data.form.repairDate).format('YYYY-MM-DD'), 1, e) this.closeClockShow() } else { wx.showToast({ title: res.msg + res.data, icon: 'none' }) } }) }, /** * 生命周期函数--监听页面加载 */ onLoad(options) { this.setData({ valueId: options.valueId }) }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady() { this.initialize() let e = { detail: { date: moment().date(), month: moment().month() + 1, year: moment().year() } } this.getInfo(moment(new Date().getTime()).format('YYYY-MM-DD'), 1, e) }, // 统一返回 handleBack() { wx.navigateBack() }, /** * 用户点击右上角分享 */ onShareAppMessage() { }, //统计单位所含内容 onStatisChange(e) { this.setData({ 'form.statisticsUnit': e.detail }) }, //内容 onTaskDescChange(e) { this.setData({ 'form.taskDesc': 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) }) }, }); }, //删除 delFile(event) { let [list, index] = [this.data.fileList, event.detail.index] list.splice(index, 1) this.setData({ fileList: list }) this.setData({ 'form.taskFileUrl': this.data.fileList.map(v => v.url) }) }, //关闭 closeClockShow() { this.setData({ clockShow: false }) let form = { id: '', //任务ID isRepair: 1, //是否补卡1立即打卡2补卡 repairDate: '', //补卡日期,当isRepair=2时必传,格式:YYYY-MM-dd statisticsUnit: '', //统计单位所含内容 taskDesc: '', //打卡描述内容 taskFileUrl: [], //任务文件(含多个) userId: '' } this.setData({ form: form }) } })