From 1ed039c656453814a2357671fa81bdb4ad0306fb Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期五, 07 七月 2023 09:25:37 +0800
Subject: [PATCH] Merge branch 'develop'

---
 src/menu/components/calendar/board/index.jsx |  288 +++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 219 insertions(+), 69 deletions(-)

diff --git a/src/menu/components/calendar/board/index.jsx b/src/menu/components/calendar/board/index.jsx
index 5c1d5f5..4796157 100644
--- a/src/menu/components/calendar/board/index.jsx
+++ b/src/menu/components/calendar/board/index.jsx
@@ -1,12 +1,15 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
 import { is, fromJS } from 'immutable'
-import { Select, Radio, Row, Col, Badge } from 'antd'
+import { Select, Radio, Row, Col } from 'antd'
 import moment from 'moment'
+import 'moment/locale/zh-cn'
 
 import './index.scss'
 
 const { Option } = Select
+
+moment.locale('zh-cn')
 
 class CalendarBoard extends Component {
   static propTpyes = {
@@ -31,7 +34,7 @@
     let _selectYear = +this.state.selectYear
     yearlist.push(`${_selectYear}`)
     
-    for (let i = 1; i <= 50; i++) {
+    for (let i = 1; i <= 10; i++) {
       yearlist.unshift(`${_selectYear - i}`)
       yearlist.push(`${_selectYear + i}`)
     }
@@ -40,11 +43,7 @@
 
     let _levels = config.wrap.levels
     let level = _levels[0]
-    let monthlist = null
-
-    if (_levels.includes('month')) {
-      monthlist = datelist.filter(item => item.month === moment().format('MM'))[0]
-    }
+    let monthlist = datelist.filter(item => item.month === moment().format('MM'))[0].children.filter(cell => !cell.children[0].$disable || !cell.children[6].$disable)
 
     this.setState({
       yearlist,
@@ -58,7 +57,8 @@
   UNSAFE_componentWillReceiveProps(nextProps) {
     if (!is(fromJS(this.props.config.wrap), fromJS(nextProps.config.wrap))) {
       this.setState({
-        levels: nextProps.config.wrap.levels
+        levels: nextProps.config.wrap.levels,
+        level: nextProps.config.wrap.levels[0]
       })
     }
   }
@@ -67,11 +67,7 @@
     return !is(fromJS(this.state), fromJS(nextState))
   }
 
-  getNongLi = (nyear, nmonth, nday) => {
-    let jq = this.getjq(nyear, nmonth, nday)
-
-    if (jq) return jq
-
+  getNongLi = (nyear, nmonth, nday, week) => {
     let lmonth;
     let lday;
     let lleap; //鍐滃巻鍙傛暟
@@ -180,11 +176,93 @@
       lmonth = '闂�' + lmonth
     }
 
-    if (lday === '鍒濅竴') {
-      return lmonth + '鏈�'
+    lmonth = lmonth + '鏈�'
+
+    if (!week) {
+      return lmonth + lday
     }
 
-    return lday
+    let jq = this.getjq(nyear, nmonth, nday)
+
+    let nl = lday
+
+    if (lday === '鍒濅竴') {
+      nl = lmonth
+    }
+    if (jq) {
+      nl = jq
+    }
+
+    let sign = '鐝�'
+    if (week > 5) {
+      sign = '浼�'
+    }
+
+    let jr = ''
+    let gr = '' + nmonth + '-' + nday
+    let nr = lmonth + lday
+    if (gr === '1-1') {
+      jr = '鍏冩棪'
+      sign = '浼�'
+    } else if (nr === '姝f湀鍒濅竴') {
+      jr = '鏄ヨ妭'
+      sign = '浼�'
+    } else if (nr === '姝f湀鍗佷簲') {
+      jr = '鍏冨鑺�'
+    } else if (jq === '娓呮槑') {
+      sign = '浼�'
+    } else if (gr === '3-8') {
+      jr = '濡囧コ鑺�'
+    } else if (gr === '5-1') {
+      jr = '鍔冲姩鑺�'
+      sign = '浼�'
+    } else if (nr === '浜旀湀鍒濅簲') {
+      jr = '绔崍鑺�'
+      sign = '浼�'
+    } else if (nr === '涓冩湀鍒濅竷') {
+      jr = '涓冨鑺�'
+    } else if (nr === '涓冩湀鍗佷簲') {
+      jr = '涓厓鑺�'
+    } else if (nr === '鍏湀鍗佷簲') {
+      jr = '涓鑺�'
+      sign = '浼�'
+    } else if (gr === '7-1') {
+      jr = '寤哄厷鑺�'
+    } else if (gr === '8-1') {
+      jr = '寤哄啗鑺�'
+    } else if (gr === '9-10') {
+      jr = '鏁欏笀鑺�'
+    } else if (gr === '10-1') {
+      jr = '鍥藉簡鑺�'
+      sign = '浼�'
+    } else if (nr === '涔濇湀鍒濅節') {
+      jr = '閲嶉槼鑺�'
+    } else if (nr === '鍗佷簩鏈堜笁鍗�') {
+      jr = '闄ゅ'
+      sign = '浼�'
+    } else if (['姝f湀鍒濅簩', '姝f湀鍒濅笁', '姝f湀鍒濆洓', '姝f湀鍒濅簲', '姝f湀鍒濆叚'].includes(nr)) {
+      sign = '浼�'
+    } else if (['10-2', '10-3'].includes(gr)) {
+      sign = '浼�'
+    } else if (nr === '鍗佷簩鏈堝豢涔�') {
+      let tis = moment(`${nyear}${nmonth < 10 ? '0' + nmonth : nmonth}${nday < 10 ?  '0' + nday : nday}`, 'YYYYMMDD').add(1, 'days').format('YYYY-MM-DD').split('-')
+      let nd = this.getNongLi(+tis[0], +tis[1], +tis[2])
+
+      if (nd === '姝f湀鍒濅竴') {
+        jr = '闄ゅ'
+        sign = '浼�'
+      }
+    }
+
+    return {
+      nlday: lday,
+      nlmonth: lmonth,
+      nljq: jq,
+      nl: nl,
+      jr: jr,
+      week: week,
+      sign: sign
+    }
   }
 
   getjq = (yyyy, mm, dd) => {
@@ -207,22 +285,6 @@
     return solarTerms
   }
 
-  getStyle = (item ) => {
-    if (!item || !item.color) return null
-    let style = {background: item.color}
-    
-    if (/rgb/ig.test(item.color)) {
-      try {
-        let colors = item.color.match(/\d+/g)
-        if ((colors[0] * 0.299 + colors[1] * 0.578 + colors[2] * 0.114) * colors[3] < 192) {
-          style.color = '#ffffff'
-        }
-      } catch (e) {}
-    }
-
-    return style
-  }
-
   getDateList = (selectYear) => {
     let datelist = []
     let months = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12']
@@ -232,43 +294,81 @@
     }
 
     months.forEach(month => {
-      let _weeklist = [{week: 1, sublist: []}]
+      let _weeklist = []
       let weekday = moment(`${selectYear}${month}01`, 'YYYYMMDD').weekday()
       let end = +moment(`${selectYear}${month}`, 'YYYYMM').endOf('month').format('DD')
 
-      for (let i = 0; i < weekday; i++) {
-        _weeklist[0].sublist.push(null)
+      let children = []
+      if (weekday > 0) {
+        let times = moment(`${selectYear}${month}01`, 'YYYYMMDD').subtract(1, 'days').format('YYYY-MM-DD').split('-')
+        for (let i = 0; i < weekday; i++) {
+          let _day = times[2] - i
+          let nl = this.getNongLi(+times[0], +times[1], +_day, weekday - i)
+  
+          let item = {
+            day: _day,
+            time: times[0] + times[1] + _day,
+            label: _day,
+            subData: [],
+            $disable: true,
+            ...nl
+          }
+          children.unshift(item)
+        }
       }
 
       for (let i = 1; i <= end; i++) {
         let _day = i < 10 ? `0${i}` : `${i}`
+        let nl = this.getNongLi(+selectYear, +month, +_day, children.length + 1)
 
         let item = {
           day: _day,
           time: selectYear + month + _day,
-          nltime: this.getNongLi(+selectYear, +month, +_day),
           label: i,
-          subData: []
+          subData: [],
+          ...nl
         }
 
-        if (_weeklist[_weeklist.length - 1].sublist.length < 7) {
-          _weeklist[_weeklist.length - 1].sublist.push(item)
-        } else {
-          let _week = {week: _weeklist.length + 1, sublist: [item]}
-          _weeklist.push(_week)
+        children.push(item)
+
+        if (children.length === 7) {
+          _weeklist.push({
+            children: [...children]
+          })
+          children = []
         }
       }
 
-      let re = 7 - _weeklist.slice(-1)[0].sublist.length
-      for (let i = 0; i < re; i++) {
-        _weeklist[_weeklist.length - 1].sublist.push(null)
+      let times = moment(`${selectYear}${month}`, 'YYYYMM').endOf('month').add(1, 'days').format('YYYY-MM-DD').split('-')
+      let tick = 42 - _weeklist.length * 7 - children.length
+
+      for (let i = 1; i <= tick; i++) {
+        let _day = i < 10 ? '0' + i : i
+        let nl = this.getNongLi(+times[0], +times[1], +_day, children.length + 1)
+  
+        let item = {
+          day: _day,
+          time: times[0] + times[1] + _day,
+          label: i,
+          subData: [],
+          $disable: true,
+          ...nl
+        }
+        children.push(item)
+
+        if (children.length === 7) {
+          _weeklist.push({
+            children: [...children]
+          })
+          children = []
+        }
       }
 
       datelist.push({
         month: month,
         time: selectYear + month,
         label: monthName[month],
-        sublist: _weeklist,
+        children: _weeklist,
         subData: []
       })
     })
@@ -281,20 +381,30 @@
   }
 
   yearChange = (value) => {
-    const { levels, selectMonth } = this.state
+    const { selectMonth } = this.state
     let datelist = this.getDateList(value)
-    let monthlist = null
-
-    if (levels.includes('month')) {
-      monthlist = datelist.filter(item => item.month === selectMonth)[0]
-    }
+    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 })
   }
 
+  monthChange = (value) => {
+    const { datelist, levels } = this.state
+
+    if (!levels.includes('month')) {
+      return
+    }
+
+    this.setState({
+      level: 'month',
+      selectMonth: value,
+      monthlist: datelist.filter(item => item.month === value)[0].children.filter(cell => !cell.children[0].$disable || !cell.children[6].$disable)
+    })
+  }
+
   render() {
-    const { level, selectYear, yearlist, levels, datelist, monthlist } = this.state
-    const _levelName = {day: '鏃�', month: '鏈�'}
+    const { level, selectYear, selectMonth, yearlist, levels, datelist, monthlist } = this.state
+    const _levelName = {day: '鏃�', month: '鏈�', year: '骞�'}
 
     return (
       <div className="mk-calendar">
@@ -302,6 +412,20 @@
           <Select value={selectYear} onChange={this.yearChange}>
             {yearlist.map(item => (<Option key={item} value={item}>{item}骞�</Option>))}
           </Select>
+          {level === 'month' ? <Select value={selectMonth} onChange={this.monthChange}>
+            <Option value="01">1鏈�</Option>
+            <Option value="02">2鏈�</Option>
+            <Option value="03">3鏈�</Option>
+            <Option value="04">4鏈�</Option>
+            <Option value="05">5鏈�</Option>
+            <Option value="06">6鏈�</Option>
+            <Option value="07">7鏈�</Option>
+            <Option value="08">8鏈�</Option>
+            <Option value="09">9鏈�</Option>
+            <Option value="10">10鏈�</Option>
+            <Option value="11">11鏈�</Option>
+            <Option value="12">12鏈�</Option>
+          </Select> : null}
           {levels.length > 1 ? <Radio.Group value={level} onChange={this.levelChange}>
             {levels.map(item => (<Radio.Button key={item} value={item}>{_levelName[item]}</Radio.Button>))}
           </Radio.Group> : null}
@@ -320,13 +444,13 @@
                     </tr>
                   </thead>
                   <tbody>
-                    {item.sublist.map(cell => (
-                      <tr key={cell.week}>
-                        {cell.sublist.map((d, i) => (
+                    {item.children.map((cell, m) => (
+                      <tr key={m}>
+                        {cell.children.map((d, i) => (
                           <td key={i}>
-                            {d ? <div className="day-wrap" style={d.style || null}>
+                            <div className={'day-wrap' + (d.$disable ? ' disabled' : '')}>
                               {d.label}
-                            </div> : null }
+                            </div>
                           </td>
                         ))}
                       </tr>
@@ -336,20 +460,46 @@
               </Col>
             ))}
           </Row> : null}
-          {level === 'month' && monthlist ? <Row className="year-calendar">
+          {level === 'month' && monthlist ? <div className="month-calendar">
+            <table>
+              <thead>
+                <tr>
+                  <th>鏄熸湡涓�</th><th>鏄熸湡浜�</th><th>鏄熸湡涓�</th><th>鏄熸湡鍥�</th><th>鏄熸湡浜�</th><th>鏄熸湡鍏�</th><th>鏄熸湡鏃�</th>
+                </tr>
+              </thead>
+              <tbody>
+                {monthlist.map((cell, m) => (
+                  <tr key={m}>
+                    {cell.children.map((d, i) => (
+                      <td key={i}>
+                        <div className={'month-wrap' + (d.$disable ? ' disabled' : '')}>
+                          <div className="header">
+                            <div className="message">
+                              {d.label}
+                              <span className={'right' + (d.sign === '浼�' ? ' danger' : '')}>{d.sign}</span>
+                            </div>
+                            <div className="message">
+                              {d.nl}
+                              <span className="right">{d.jr}</span>
+                            </div>
+                          </div>
+                          <ul className="content"></ul>
+                        </div>
+                      </td>
+                    ))}
+                  </tr>
+                ))}
+              </tbody>
+            </table>
+          </div>: null}
+          {level === 'year' ? <Row className="year-calendar">
             {datelist.map(item => (
               <Col span={8} key={item.month}>
-                <div className="year-wrap" style={item.style || null}>
-                  <div className="header" style={item.style ? null : {color: '#1890ff'}}>
+                <div className="year-wrap">
+                  <div className="header" style={{color: '#1890ff'}}>
                     {item.label}
                   </div>
-                  <ul className="content">
-                    {item.subData.map((data, index) => (
-                      <li key={index} className="message">
-                        <Badge color={item.style ? (data.color === item.style.background ? '#ffffff' : data.color) : data.color} text={`${data.remark} (${data.startTime} ~ ${data.endTime})`}/>
-                      </li>
-                    ))}
-                  </ul>
+                  <ul className="content"></ul>
                 </div>
               </Col>
             ))}

--
Gitblit v1.8.0