UNPKG

dm-vue3-ui

Version:

This Components Library will help get you started developing in Vue 3.

201 lines (200 loc) 7.48 kB
import { SelectOption, Select, RangePicker, DatePicker, Button } from "ant-design-vue/es"; import { defineComponent, ref, openBlock, createElementBlock, createElementVNode, createVNode, withCtx, createTextVNode, toDisplayString, unref, createBlock, withDirectives, vShow } from "vue"; import { store } from "../../../utils"; import { $t } from "../../../i18n/index"; import locale1 from "ant-design-vue/es/date-picker/locale/zh_CN"; import locale2 from "ant-design-vue/es/date-picker/locale/en_US"; import dayjs from "dayjs"; const _hoisted_1 = { class: "dm-date-picker__absolute" }; const _hoisted_2 = { class: "custom-time-box" }; const _hoisted_3 = { class: "time-type" }; const _hoisted_4 = { class: "date-picker-box" }; const dateFormat = "YYYY-MM-DD HH:mm:ss"; const _sfc_main = /* @__PURE__ */ defineComponent({ __name: "index", props: { dateFormatBack: { default: "YYYY-MM-DD HH:mm:ss" } }, emits: ["change"], setup(__props, { expose: __expose, emit: __emit }) { const props = __props; const rangeType = ref("between"); const singleTime = ref(""); const rangeTime = ref([]); const isError = ref(false); const errorMsg = ref(""); const validateDate = () => { isError.value = false; errorMsg.value = ""; switch (rangeType.value) { case "before": if (singleTime.value == "") { isError.value = true; errorMsg.value = $t("datePicker.validateMsg")[0]; } break; case "between": if (!Array.isArray(rangeTime.value) || rangeTime.value.length != 2) { isError.value = true; errorMsg.value = $t("datePicker.validateMsg")[0]; } else { if (new Date(rangeTime.value[0]).getTime() == new Date(rangeTime.value[1]).getTime()) { isError.value = true; errorMsg.value = $t("datePicker.validateMsg")[1]; } } break; case "after": if (singleTime.value == "") { isError.value = true; errorMsg.value = $t("datePicker.validateMsg")[0]; } break; } }; const emit = __emit; const setDateFormat = (time) => { if (!props.dateFormatBack) { return time; } else if (props.dateFormatBack === "unix") { return dayjs(time).unix(); } else { return dayjs(time).format(props.dateFormatBack); } }; const onSubmit = () => { validateDate(); if (!isError.value) { let value = { date: [], type: "absolute" }; if (rangeType.value == "between") { value.date = [setDateFormat(rangeTime.value[0]), setDateFormat(rangeTime.value[1])]; } else if (rangeType.value == "before") { let startTime = ""; let endTime = setDateFormat(singleTime.value); value.date = [startTime, endTime]; } else { let startTime = setDateFormat(singleTime.value); let endTime = ""; value.date = [startTime, endTime]; } emit("change", value); } else { return false; } }; let locales = ref(""); let lang = store("lang") || store("currentLang") || "zh_CN"; if (lang === "zh_CN") { locales.value = locale1; } else { locales.value = locale2; } const setValue = (startTime, endTime) => { if (props.dateFormatBack === "unix") { if (endTime == "") { rangeType.value = "after"; singleTime.value = dayjs.unix(startTime).format(dateFormat); } else if (startTime == "") { rangeType.value = "before"; singleTime.value = dayjs.unix(endTime).format(dateFormat); } else { rangeType.value = "between"; rangeTime.value = [ dayjs.unix(startTime).format(dateFormat), dayjs.unix(endTime).format(dateFormat) ]; } } else { if (endTime == "") { rangeType.value = "after"; singleTime.value = startTime; } else if (startTime == "") { rangeType.value = "before"; singleTime.value = endTime; } else { rangeType.value = "between"; rangeTime.value = [startTime, endTime]; } } }; __expose({ setValue }); return (_ctx, _cache) => { const _component_a_select_option = SelectOption; const _component_a_select = Select; const _component_a_range_picker = RangePicker; const _component_a_date_picker = DatePicker; const _component_a_button = Button; return openBlock(), createElementBlock("div", _hoisted_1, [ createElementVNode("div", _hoisted_2, [ createElementVNode("div", _hoisted_3, [ createVNode(_component_a_select, { value: rangeType.value, "onUpdate:value": _cache[0] || (_cache[0] = ($event) => rangeType.value = $event) }, { default: withCtx(() => [ createVNode(_component_a_select_option, { value: "between" }, { default: withCtx(() => [ createTextVNode(toDisplayString(unref($t)("datePicker.absolute.between")), 1) ]), _: 1 }), createVNode(_component_a_select_option, { value: "before" }, { default: withCtx(() => [ createTextVNode(toDisplayString(unref($t)("datePicker.absolute.before")), 1) ]), _: 1 }), createVNode(_component_a_select_option, { value: "after" }, { default: withCtx(() => [ createTextVNode(toDisplayString(unref($t)("datePicker.absolute.since")), 1) ]), _: 1 }) ]), _: 1 }, 8, ["value"]) ]), createElementVNode("div", _hoisted_4, [ rangeType.value == "between" ? (openBlock(), createBlock(_component_a_range_picker, { key: 0, locale: unref(locales), value: rangeTime.value, "onUpdate:value": _cache[1] || (_cache[1] = ($event) => rangeTime.value = $event), format: dateFormat, valueFormat: dateFormat, "show-time": "", onChange: validateDate }, null, 8, ["locale", "value"])) : (openBlock(), createBlock(_component_a_date_picker, { key: 1, format: dateFormat, valueFormat: dateFormat, locale: unref(locales), value: singleTime.value, "onUpdate:value": _cache[2] || (_cache[2] = ($event) => singleTime.value = $event), "show-time": "", onChange: validateDate }, null, 8, ["locale", "value"])), createVNode(_component_a_button, { type: "primary", onClick: onSubmit }, { default: withCtx(() => [ createTextVNode(toDisplayString(unref($t)("datePicker.confirm")), 1) ]), _: 1 }) ]), withDirectives(createElementVNode("div", { class: "error-text" }, toDisplayString(errorMsg.value), 513), [ [vShow, isError.value] ]) ]) ]); }; } }); export { _sfc_main as default };