UNPKG

fx-form-widget

Version:
114 lines (112 loc) 4.31 kB
import _extends from "@babel/runtime/helpers/extends"; import _TimePicker from "antd/es/time-picker"; import _DatePicker from "antd/es/date-picker"; import * as React from 'react'; import dayjs from 'dayjs'; import { disabledDate, isNotNullValue } from './tools'; var RangePicker = _DatePicker.RangePicker; export var datePickerPickerType = { enumKeys: ['date', 'week', 'month', 'quarter', 'year'], enumNames: ['日', '周', '月', '季度', '年'] }; var getDateRange = function getDateRange(data, timeFormatType, picker) { if (!isNotNullValue(data)) { return; } if (timeFormatType === 'time') { return [dayjs(data[0], 'HH:mm:ss'), dayjs(data[1], 'HH:mm:ss')]; } if (timeFormatType === 'dateTime') { return [dayjs(data[0], 'YYYY-MM-DD HH:mm:ss'), dayjs(data[1], 'YYYY-MM-DD HH:mm:ss')]; } if (picker === 'week') { return [dayjs(data[0], 'YYYY-WW'), dayjs(data[1], 'YYYY-WW')]; } if (picker === 'year') { return [dayjs(data[0], 'YYYY'), dayjs(data[1], 'YYYY')]; } if (picker === 'month') { return [dayjs(data[0], 'YYYY-MM'), dayjs(data[1], 'YYYY-MM')]; } if (picker === 'quarter') { return [dayjs(data[0], 'YYYY-Q'), dayjs(data[1], 'YYYY-Q')]; } return [dayjs(data[0], 'YYYY-MM-DD'), dayjs(data[1], 'YYYY-MM-DD')]; }; var RangePickerWeidget = function RangePickerWeidget(_ref) { var _ref$schema = _ref.schema, schema = _ref$schema === void 0 ? {} : _ref$schema, _ref$onChange = _ref.onChange, onChange = _ref$onChange === void 0 ? function () {} : _ref$onChange, _ref$value = _ref.value, value = _ref$value === void 0 ? undefined : _ref$value; var _schema$readonly = schema.readonly, readonly = _schema$readonly === void 0 ? false : _schema$readonly, _schema$required = schema.required, required = _schema$required === void 0 ? false : _schema$required, _schema$allowClear = schema.allowClear, allowClear = _schema$allowClear === void 0 ? false : _schema$allowClear, _schema$picker = schema.picker, picker = _schema$picker === void 0 ? 'date' : _schema$picker, _schema$timeFormatTyp = schema.timeFormatType, timeFormatType = _schema$timeFormatTyp === void 0 ? 'date' : _schema$timeFormatTyp, _schema$timeChooseSec = schema.timeChooseSection, timeChooseSection = _schema$timeChooseSec === void 0 ? 1 : _schema$timeChooseSec; var DefaultWeigdet = timeFormatType === 'time' ? _TimePicker.RangePicker : RangePicker; var _React$useState = React.useState(), formatValue = _React$useState[0], setFormatValue = _React$useState[1]; // 默认值 var defaultOptions = {}; if (schema['ui_options']) { Object.keys(schema['ui_options']).forEach(function (key) { defaultOptions[key] = schema['ui_options'][key]; }); } // 设置placeholder var pickerName = ['请选择开始时间', '请选择结束时间']; var disabledFunc = function disabledFunc(e) { switch (timeChooseSection) { case 1: // 无限制 return false; case 2: // 今天之前(含今天) return disabledDate(e, 'below', 0); case 3: // 今天之后(含今天) return disabledDate(e, 'above'); } }; var options = _extends({ disabled: readonly, required: required, placeholder: pickerName, allowClear: allowClear, picker: picker, disabledDate: disabledFunc, showTime: timeFormatType === 'time' ? false : timeFormatType === 'dateTime' ? true : false }, defaultOptions); var handleChange = function handleChange(date, dateString) { var chooseValue = dateString; if (dateString[0].indexOf('周') !== -1) { var tempArr = dateString[0].slice(0, -1).split('-'); var tempArr2 = dateString[1].slice(0, -1).split('-'); chooseValue = [tempArr[0] + '-W' + tempArr[1], tempArr2[0] + '-W' + tempArr2[1]]; } onChange(chooseValue); setFormatValue(getDateRange(dateString, timeFormatType, picker)); }; React.useEffect(function () { setFormatValue(getDateRange(value, timeFormatType, picker)); }, [value, timeFormatType, picker]); return /*#__PURE__*/React.createElement(DefaultWeigdet, _extends({ style: { width: '100%' } }, options, { value: formatValue, onChange: handleChange })); }; export default RangePickerWeidget;