UNPKG

@ttk/component

Version:

ttk组件库

637 lines (559 loc) 24.9 kB
import { _ as _extends } from '../extends-b1af4ff7.js'; import { _ as _defineProperty } from '../defineProperty-847730aa.js'; import React__default from 'react'; import { Timeline } from 'antd'; import classNames from 'classnames'; import { _ as _inherits, a as _getPrototypeOf, b as _possibleConstructorReturn, c as _classCallCheck, f as _typeof, d as _createClass } from '../getPrototypeOf-b95655c5.js'; import { _ as _objectWithoutProperties } from '../objectWithoutProperties-0c3c7796.js'; import Icon from '../icon'; import moment from 'moment'; import { is, fromJS } from 'immutable'; import '../_commonjsHelpers-471920d6.js'; var _excluded = ["handleSelectData"], _excluded2 = ["handleSelectData"], _excluded3 = ["handleSelectData"]; function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } var TimeLineComponent = /*#__PURE__*/function (_React$Component) { _inherits(TimeLineComponent, _React$Component); var _super = _createSuper(TimeLineComponent); function TimeLineComponent(_props) { var _this; _classCallCheck(this, TimeLineComponent); _this = _super.call(this, _props); _this.componentDidMount = function () { var _this$props = _this.props; _this$props.handleSelectData; var props = _objectWithoutProperties(_this$props, _excluded); _this.handleList(props); //this.setState(Object.assign({}, this.state, props), this.handleList) }; _this.componentWillReceiveProps = function (nextProps) { nextProps.handleSelectData; var nprops = _objectWithoutProperties(nextProps, _excluded2); var _this$props2 = _this.props; _this$props2.handleSelectData; var tprops = _objectWithoutProperties(_this$props2, _excluded3); if (!is(fromJS(nprops), fromJS(tprops))) { _this.handleList(nprops); //this.setState(Object.assign({}, this.state, nprops), this.handleList) } }; _this.handleList = function (props) { var stateObj = _objectSpread(_objectSpread({}, _this.state), props); var timeArr = [], startDate = stateObj.startDate, endDate = stateObj.endDate, currentDate = stateObj.currentDate, type = stateObj.type, enabledDate = stateObj.enabledDate, selectTimeData = stateObj.selectTimeData, queryData = stateObj.queryData, haveDataRang = stateObj.haveDataRang, maxEndDate = stateObj.maxEndDate, chargeNum = undefined; // 展示的内容 if (type == 'month') { if (startDate && endDate) { var diffMonth = moment(endDate).diff(moment(startDate), 'month'); if (diffMonth > 36) return null; if (startDate == endDate) { var year = moment(startDate).format('YYYY'); var list = [+year - 1, +year, +year + 1]; list.forEach(function (item) { timeArr.push({ name: item, isTitle: true, id: item, value: item, isSelect: false }); for (var i = 0; i < 12; i++) { var num = i < 9 ? '0' + (i + 1) : String(i + 1); timeArr.push({ name: item + '-' + num, isTitle: false, id: item + num, value: num, isSelect: false }); } }); } else { var beforeDate = moment(moment(startDate).subtract(Math.floor((36 - diffMonth) / 2), 'month')).format('YYYY-MM'); for (var i = 0; i < 36; i++) { var time = moment(beforeDate).add(i + 1, 'month').format('YYYY-MM'); var month = moment(time).month(); var _year = moment(time).year(); month = month < 9 ? '0' + (month + 1) : String(month + 1); if (month == 12) { timeArr.push({ name: time, isTitle: false, id: moment(time).format('YYYYMM'), value: month, isSelect: false }); timeArr.push({ name: Number(_year) + 1, isTitle: true, id: Number(_year) + 1, value: Number(_year) + 1, isSelect: false }); } else { timeArr.push({ name: time, isTitle: false, id: moment(time).format('YYYYMM'), value: month, isSelect: false }); } } } } else { var _year2 = moment(currentDate).year(); if (queryData) { _year2 = queryData.slice(0, 4); } var _list = [+_year2 - 1, +_year2, +_year2 + 1]; _list.forEach(function (item) { timeArr.push({ name: item, isTitle: true, id: item, value: item, isSelect: false }); for (var _i = 0; _i < 12; _i++) { var num = _i < 9 ? '0' + (_i + 1) : String(_i + 1); timeArr.push({ name: item + '-' + num, isTitle: false, id: item + num, value: num, isSelect: false }); } }); } } else if (type == 'quarter') { var _year3 = moment(currentDate).year(); if (queryData) { _year3 = queryData.slice(0, 4); } var _list2 = [+_year3 - 1, +_year3, +_year3 + 1]; _list2.forEach(function (item) { timeArr.push({ name: item, isTitle: true, id: item, value: item, isSelect: false }); for (var _i2 = 0; _i2 < 4; _i2++) { timeArr.push({ name: "".concat(item, "\u5E74\u7B2C").concat(_i2 + 1, "\u5B63\u5EA6"), isTitle: false, id: item + '' + (_i2 + 1), value: "".concat(_i2 + 1, "\u5B63\u5EA6"), isSelect: false }); } }); } else if (type == 'halfYear') { var _year4 = moment(currentDate).year(); // let list = [+year-1, +year, +year+1] if (queryData) { _year4 = queryData.slice(0, 4); } var _list3 = [+_year4 - 2, +_year4 - 1, +_year4, +_year4 + 1, +_year4 + 2]; _list3.forEach(function (item) { timeArr.push({ name: item, isTitle: true, id: item, value: item }); for (var _i3 = 0; _i3 < 2; _i3++) { var tip = _i3 % 2 == 0 ? '上半年' : '下半年'; timeArr.push({ name: "".concat(item, "\u5E74").concat(tip), isTitle: false, id: item + '' + (_i3 + 1), value: tip, isSelect: false }); } }); } //控制启用日期之前的不能选 if (enabledDate) { timeArr.forEach(function (item, index) { item.disabled = false; var month = enabledDate.slice(4); var year = enabledDate.slice(0, 4); if (type == 'month') { if (Number(item.id) < Number(enabledDate)) { item.disabled = true; } if (startDate && endDate) { if (startDate == endDate) { if (item.name == startDate) { item.isSelect = true; chargeNum = index; } } else { if (item.name == startDate) { chargeNum = index; } } } if (selectTimeData.length) { var obj = selectTimeData.find(function (ele) { var mon = ele.period < 10 ? "0".concat(ele.period) : ele.period + ''; var date = ele.year + mon; if (date == item.id) return true; }); // if(obj) item.isHaveData = true //哪些有数据 if (obj) { item.isHaveData = true; //哪些有数据(哪些是下拉选里的可选择的) } else { item.disabled = true; //(下拉选里没有的这里控制它不能选择) } var selectObj = selectTimeData.find(function (e) { return e.name == queryData; }); if (selectObj) { var mon = selectObj.period < 10 ? "0".concat(selectObj.period) : selectObj.period + ''; var date = selectObj.year + mon; if (item.id == date) { item.isSelect = true; chargeNum = index; } } } if (haveDataRang && +haveDataRang.minDataPeriod <= +item.id && item.id <= +haveDataRang.maxDataPeriod) { item.isHaveData = true; } if (maxEndDate && item.name > maxEndDate) item.disabled = true; } else { var fm = type == 'halfYear' ? 7 : 4; var quarter = parseInt(month / fm) + 1; if (Number(item.id) < Number('' + year + quarter)) { item.disabled = true; } if (selectTimeData.length) { var _obj = selectTimeData.find(function (ele) { return ele.name == item.name; }); // if(obj) item.isHaveData = true if (_obj) { item.isHaveData = true; //哪些有数据(哪些是下拉选里的可选择的) } else { item.disabled = true; //(下拉选里没有的这里控制它不能选择) } var _selectObj = selectTimeData.find(function (e) { return e.name == queryData; }); if (_selectObj) { if (item.name == _selectObj.name) { item.isSelect = true; chargeNum = index; } } } } if (item.isTitle) { if (item.name < +year) { item.disabled = true; } else { item.disabled = false; } } }); } _this.setState(_objectSpread(_objectSpread({}, stateObj), {}, { timeArr: timeArr })); _this.scrollTop(chargeNum); }; _this.scrollTop = function (chargeNum) { if (_typeof(chargeNum) != undefined) { clearTimeout(_this.renderTime); _this.renderTime = setTimeout(function () { try { var domList = document.getElementsByClassName('ant-timeline-itemLi'), height = 0; for (var i in domList) { if (i < chargeNum + 1) { height += domList[i].offsetHeight; } } var leftLineDom = document.getElementsByClassName('mk-timeline-componentwrap')[0]; leftLineDom.scrollTop = height - leftLineDom.offsetHeight / 2 + 10; //(当为选中状态时高度比较高所以为了更居中加10) leftLineDom = null; } catch (e) {} }, 10); } }; _this.handleLiClick = function (currentLi) { if (currentLi.disabled) return; _this.handleList({ queryData: currentLi.name, startDate: currentLi.name, endDate: currentLi.name }); // let { timeArr, type, enabledDate, startDate, endDate, selectTimeData, queryData, haveDataRang } = this.state, chargeNum = undefined // let newTimeArr = [] // if (type == 'month') { // let year = moment(currentLi.name).format('YYYY') // let list = [+year - 1, +year, +year + 1] // list.forEach(item => { // newTimeArr.push({ name: item, isTitle: true, id: item, value: item, isSelect: false }) // for (let i = 0; i < 12; i++) { // let num = i < 9 ? '0' + (i + 1) : String(i + 1) // newTimeArr.push({ name: item + '-' + num, isTitle: false, id: item + num, value: num, isSelect: false }) // } // }) // } else if (type == 'quarter') { // let year = moment(currentLi.name).year() // let list = [+year - 1, +year, +year + 1] // list.forEach(item => { // timeArr.push({ name: item, isTitle: true, id: item, value: item, isSelect: false }) // for (let i = 0; i < 4; i++) { // timeArr.push({ name: `${item}年第${i + 1}季度`, isTitle: false, id: item + '' + (i + 1), value: `${i + 1}季度`, isSelect: false }) // } // }) // } else if (type == 'halfYear') { // let year = moment(currentLi.name).year() // let list = [+year - 2, +year - 1, +year, +year + 1, +year + 2] // list.forEach(item => { // timeArr.push({ name: item, isTitle: true, id: item, value: item }) // for (let i = 0; i < 2; i++) { // let tip = i % 2 == 0 ? '上半年' : '下半年' // timeArr.push({ name: `${item}年${tip}`, isTitle: false, id: item + '' + (i + 1), value: tip, isSelect: false }) // } // }) // } // newTimeArr.forEach((item, index) => { // if (item.id == currentLi.id) { // item.isSelect = true // chargeNum = index // } else { // item.isSelect = false // } // }) //控制启用日期之前的不能选 // if (enabledDate) { // newTimeArr.forEach((item, index) => { // item.disabled = false // let month = enabledDate.slice(4) // let year = enabledDate.slice(0, 4) // if (type == 'month') { // if (Number(item.id) < Number(enabledDate)) { // item.disabled = true // } // if (startDate && endDate && startDate == endDate) { // if (item.name == startDate) { // item.isSelect = true // chargeNum = index // } // } // if (selectTimeData.length) { // let obj = selectTimeData.find(ele => { // let mon = ele.period < 10 ? `0${ele.period}` : ele.period + '' // let date = ele.year + mon // if (date == item.id) return true // }) // // if(obj) item.isHaveData = true //哪些有数据 // if (obj) { // item.isHaveData = true //哪些有数据(哪些是下拉选里的可选择的) // } else { // item.disabled = true //(下拉选里没有的这里控制它不能选择) // } // let selectObj = selectTimeData.find(e => e.name == queryData) // if (selectObj) { // let mon = selectObj.period < 10 ? `0${selectObj.period}` : selectObj.period + '' // let date = selectObj.year + mon // if (item.id == date) { // item.isSelect = true // chargeNum = index // } // } // // let mon = selectTimeData[0].period < 10 ? `0${selectTimeData[0].period}` : selectTimeData[0].period+'' // // let date = selectTimeData[0].year + mon // // if(item.id == date) { // // item.isSelect = true // // chargeNum = index // // } // } // if (haveDataRang && (+haveDataRang.minDataPeriod <= +item.id && item.id <= +haveDataRang.maxDataPeriod)) { // item.isHaveData = true // } // } else { // let fm = type == 'halfYear' ? 7 : 4 // let quarter = parseInt(month / fm) + 1 // if (Number(item.id) < Number('' + year + quarter)) { // item.disabled = true // } // if (selectTimeData.length) { // let obj = selectTimeData.find(ele => ele.name == item.name) // // if(obj) item.isHaveData = true // if (obj) { // item.isHaveData = true //哪些有数据(哪些是下拉选里的可选择的) // } else { // item.disabled = true //(下拉选里没有的这里控制它不能选择) // } // // if(item.name == selectTimeData[0].name) { // // item.isSelect = true // // chargeNum = index // // } // let selectObj = selectTimeData.find(e => e.name == queryData) // if (selectObj) { // if (item.name == selectObj.name) { // item.isSelect = true // chargeNum = index // } // } // } // } // if (item.isTitle) { // if (item.name < +year) { // item.disabled = true // } else { // item.disabled = false // } // } // }) // } // if (typeof chargeNum != undefined) { // clearTimeout(this.renderTime) // this.renderTime = setTimeout(() => { // try { // let domList = document.getElementsByClassName('ant-timeline-itemLi'), // height = 0 // for (let i in domList) { // if (i < chargeNum + 1) { // height += domList[i].offsetHeight // } // } // let leftLineDom = document.getElementsByClassName('mk-timeline-componentwrap')[0] // leftLineDom.scrollTop = height - leftLineDom.offsetHeight / 2 + 10 //(当为选中状态时高度比较高所以为了更居中加10) // leftLineDom = null // } catch (e) { // } // }, 10) // } // this.setState({ timeArr: newTimeArr }) //调查询接口 _this.props.handleSelectData(currentLi.name); }; _this.state = { type: 'month', //按什么查询 endDate: '', //结束日期 startDate: '', //开始日期 disabled: '', //控制条件 currentDate: moment().format('YYYY-MM'), //当前日期 timeArr: [], //时间轴列表 enabledDate: '', //企业启用期间 selectTimeData: [], // 选择框内容 queryData: '', //选择框所选的内容(查询条件) haveDataRang: null, //有数据的日期范围 maxEndDate: '' //最大日期限制 }; return _this; } _createClass(TimeLineComponent, [{ key: "shouldComponentUpdate", value: function shouldComponentUpdate(nextProps, nextState) { return !is(fromJS(this.props), fromJS(nextProps)) || !is(fromJS(this.state), fromJS(nextState)); } }, { key: "render", value: function render() { var _this2 = this; var _this$state = this.state, timeArr = _this$state.timeArr, type = _this$state.type, enabledDate = _this$state.enabledDate; if (timeArr.length) { return /*#__PURE__*/React__default.createElement("div", { className: "mk-timeline-componentwrap", style: { width: '80px' } }, /*#__PURE__*/React__default.createElement("ul", { className: "ulCss" }, /*#__PURE__*/React__default.createElement("li", { class: "ant-timeline-item ant-timeline-itemLi" }, /*#__PURE__*/React__default.createElement("div", { className: "ant-timeline-item-tail-title-head" })), timeArr.map(function (item) { if (item.isTitle) { return /*#__PURE__*/React__default.createElement("li", { key: item.name, class: item.disabled ? "ant-timeline-itemDis ant-timeline-itemLi" : "ant-timeline-item ant-timeline-itemLi" }, /*#__PURE__*/React__default.createElement("div", { className: "ant-timeline-item-tail-title" }), /*#__PURE__*/React__default.createElement("span", { className: "title" }, item.value), /*#__PURE__*/React__default.createElement(Icon, { type: "arrow-down" })); } return /*#__PURE__*/React__default.createElement("li", { key: item.name, class: item.disabled ? "ant-timeline-itemDis ant-timeline-itemLi" : "ant-timeline-item ant-timeline-itemLi", onClick: function onClick() { return _this2.handleLiClick(item); } }, /*#__PURE__*/React__default.createElement("div", { className: "ant-timeline-item-tail" }), type == 'month' && item.id == enabledDate ? /*#__PURE__*/React__default.createElement(Icon, { type: "qiyongriqi", fontFamily: "edficon", style: { fontSize: '16px', position: "absolute", top: '-3px', left: '-2px' }, title: "\u542F\u7528\u65E5\u671F" }) : /*#__PURE__*/React__default.createElement("div", { className: item.isHaveData ? 'ant-timeline-item-head ant-timeline-item-head-blue' : 'ant-timeline-item-head', style: item.isSelect ? { display: 'none' } : {} }), /*#__PURE__*/React__default.createElement("div", { class: item.isSelect ? "ant-timeline-item-content ant-timeline-item-selectItem" : "ant-timeline-item-content", style: item.isSelect ? { width: '65px', padding: 0, textAlign: 'center' } : {} }, item.isSelect && type == 'month' ? item.name : item.value)); }))); } else { return null; } } }]); return TimeLineComponent; }(React__default.Component); function TimelineComponent(props) { var className = classNames(_defineProperty({ 'mk-timeline': true }, props.className, !!props.className)); return /*#__PURE__*/React__default.createElement(Timeline, _extends({}, props, { className: className })); } TimelineComponent.Item = Timeline.Item; TimelineComponent.TimeLineComponentGl = TimeLineComponent; export { TimelineComponent as default };