From ac4e2892a68bb4ef5b35e8e2e12e76d3ec3ede35 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期五, 07 七月 2023 18:50:11 +0800 Subject: [PATCH] 2023-07-07 --- src/tabviews/custom/components/calendar/board/index.jsx | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 51 insertions(+), 8 deletions(-) diff --git a/src/tabviews/custom/components/calendar/board/index.jsx b/src/tabviews/custom/components/calendar/board/index.jsx index 911cc2d..44c208d 100644 --- a/src/tabviews/custom/components/calendar/board/index.jsx +++ b/src/tabviews/custom/components/calendar/board/index.jsx @@ -55,16 +55,53 @@ } UNSAFE_componentWillReceiveProps(nextProps) { - if (!is(fromJS(this.props.config.wrap), fromJS(nextProps.config.wrap))) { + const { datelist } = this.state + if (!is(fromJS(this.props.data), fromJS(nextProps.data))) { this.setState({ - levels: nextProps.config.wrap.levels, - level: nextProps.config.wrap.levels[0] + datelist: this.mountdata(datelist, nextProps.data) }) } } shouldComponentUpdate (nextProps, nextState) { return !is(fromJS(this.state), fromJS(nextState)) + } + + mountdata = (datelist, data) => { + return fromJS(datelist).toJS().map(month => { + month.subData = [] + data.forEach(item => { + if (item.$startM <= month.time && item.$endM >= month.time) { + month.subData.push(item) + } + }) + + month.children = month.children.map(week => { + week.children = week.children.map(day => { + if (day.$disable) return day + + day.subData = [] + day.style = null + day.$level = 100 + data.forEach(item => { + if (item.$start <= day.time && item.$end >= day.time) { + day.subData.push(item) + + if (!day.style) { + day.style = item.$style + day.$level = item.$level + } else if (item.$level < day.$level) { + day.style = item.$style + day.$level = item.$level + } + } + }) + return day + }) + return week + }) + return month + }) } getNongLi = (nyear, nmonth, nday, week) => { @@ -307,7 +344,7 @@ let item = { day: _day, - time: times[0] + times[1] + _day, + time: +(times[0] + times[1] + _day), label: _day, subData: [], $disable: true, @@ -323,7 +360,7 @@ let item = { day: _day, - time: selectYear + month + _day, + time: +(selectYear + month + _day), label: i, subData: [], ...nl @@ -348,7 +385,7 @@ let item = { day: _day, - time: times[0] + times[1] + _day, + time: +(times[0] + times[1] + _day), label: i, subData: [], $disable: true, @@ -366,7 +403,7 @@ datelist.push({ month: month, - time: selectYear + month, + time: +(selectYear + month), label: monthName[month], children: _weeklist, subData: [] @@ -381,8 +418,14 @@ } yearChange = (value) => { + const { data } = this.props const { selectMonth } = this.state let datelist = this.getDateList(value) + + if (data.length > 0) { + datelist = this.mountdata(datelist, data) + } + let monthlist = datelist.filter(item => item.month === selectMonth)[0].children.filter(cell => !cell.children[0].$disable || !cell.children[6].$disable) this.setState({ selectYear: value, datelist, monthlist }) @@ -448,7 +491,7 @@ <tr key={m}> {cell.children.map((d, i) => ( <td key={i}> - <div className={'day-wrap' + (d.$disable ? ' disabled' : '')}> + <div style={d.style} className={'day-wrap' + (d.$disable ? ' disabled' : '')}> {d.label} </div> </td> -- Gitblit v1.8.0