punchDetail.js 8.95 KB
// 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 request from '../../../api/request.js'
import moment from 'moment';
plugin
    .use(week)
    .use(todo)
Page({

    /**
     * 页面的初始数据
     */
    data: {
        calendarConfig: {
            theme: 'elegant',
            weekMode: true, // 周视图模式
            highlightToday: true, // 是否高亮显示当天
            hideHeader: true, // 隐藏日历头部操作栏
        },
        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: ''
    },
     /**
     * 选择日期后执行的事件
     */
    afterTapDate(e) {
        let date = e.detail.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()) {
            console.log('ff')
            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) {
        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)
            } else {
                wx.showToast({
                    title: res.msg,
                    icon: 'none'
                })
            }
        })
    },
    //初始化日历
    initialize() {
        // 设置待办
        this.setData({
            'calendar': this.selectComponent('#calendar').calendar
        })

    },
    //显示日历
    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
        })
    },
    //成果
    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'
                })
                this.closeClockShow()
                this.getInfo(moment(new Date().getTime()).format('YYYY-MM-DD'))
            } else {
                wx.showToast({
                    title: res.msg,
                    icon: 'none'
                })
            }
        })
    },
    /**
     * 生命周期函数--监听页面加载
     */
    onLoad(options) {
        this.setData({
            valueId: options.valueId
        })
    },
    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady() {
        this.initialize()
        this.getInfo(moment(new Date().getTime()).format('YYYY-MM-DD'))
    },
    // 统一返回
    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
        })
    }
})