UNPKG

@fecp/mobile

Version:

177 lines (176 loc) 7.57 kB
"use strict"; Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } }); ;/* empty css */ ;/* empty css */ ;/* empty css */ ;/* empty css */ ;/* empty css */ ;/* empty css */ ;/* empty css */ ;/* empty css */ ;/* empty css */ ;/* empty css */ ;/* empty css */ ;/* empty css */ ;/* empty css */ const vue = require("vue"); const index = require("../field/index.js"); const moment = require("../../../../../../node_modules/.pnpm/moment@2.30.1/node_modules/moment/dist/moment.js"); const dateUtil = require("../../../utils/dateUtil.js"); const index$2 = require("../../../../../../node_modules/.pnpm/vant@4.9.17_vue@3.5.13_typescript@5.7.3_/node_modules/vant/es/date-picker/index.js"); const index$1 = require("../../../../../../node_modules/.pnpm/vant@4.9.17_vue@3.5.13_typescript@5.7.3_/node_modules/vant/es/popup/index.js"); const index$3 = require("../../../../../../node_modules/.pnpm/vant@4.9.17_vue@3.5.13_typescript@5.7.3_/node_modules/vant/es/icon/index.js"); const _sfc_main = { __name: "FieldDatePicker", props: { modelValue: { type: String, default: "" }, // textFormat: { // type: String, // default: "YYYY-MM-DD", // }, // valueFormat: { // type: String, // default: "YYYYMMDD", // }, dateColumnsType: { type: String, default: "year,month,day" }, dateTextFormat: { //0:YYYYMMDD;1: YYYY-MM-DD;2:YYYY/MM/DD;3:YYYY年MM月DD日 type: String, default: "1" }, disabled: { type: Boolean, default: false }, readonly: { type: Boolean, default: false }, "is-link": false }, emits: ["update:modelValue"], setup(__props, { emit: __emit }) { const props = __props; const fieldTextValue = vue.ref(""); const showPicker = vue.ref(false); const emit = __emit; let textFormat = dateUtil.parseDateFormatter( props.dateTextFormat, props.dateColumnsType ); let valueFormat = dateUtil.parseDateFormatter("0", props.dateColumnsType); const pickerValue = vue.computed(() => { let date; if (!props.modelValue) { date = moment.default(); } else { date = moment.default(props.modelValue, valueFormat); } const year = date.year(); const month = date.month() + 1; const day = date.date(); let value = []; const columnsTypeArr = props.dateColumnsType.split(","); if (columnsTypeArr.length == 1) { value = [year]; } else if (columnsTypeArr.length == 2) { value = [year, month]; } else if (columnsTypeArr.length == 3) { value = [year, month, day]; } return value; }); const columnsType = vue.computed(() => { return props.dateColumnsType.split(","); }); const formatter = (type, option) => { if (type === "year") { option.text += "年"; } else if (type === "month") { option.text += "月"; } else if (type === "day") { option.text += "日"; } return option; }; vue.watch( () => props.modelValue, (value) => { if (!value) { fieldTextValue.value = ""; return; } fieldTextValue.value = moment.default(value, valueFormat).format(textFormat); }, { immediate: true } ); const onConfirm = ({ selectedValues, selectedOptions, selectedIndexes }) => { const val = moment.default( `${selectedValues[0]}${selectedValues[1]}${selectedValues[2]}`, "YYYYMMDD" ).format(valueFormat); emit("update:modelValue", val); showPicker.value = false; }; return (_ctx, _cache) => { const _component_van_icon = index$3.Icon; const _component_van_date_picker = index$2.DatePicker; const _component_van_popup = index$1.Popup; return vue.openBlock(), vue.createBlock(vue.unref(index.MobileField), vue.mergeProps(_ctx.$attrs, { modelValue: vue.unref(fieldTextValue), "onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => vue.isRef(fieldTextValue) ? fieldTextValue.value = $event : null), isLink: __props.readonly ? false : true, readonly: "", disabled: __props.disabled, onOpenPicker: _cache[5] || (_cache[5] = () => { if (!__props.readonly) { showPicker.value = true; } }) }), vue.createSlots({ default: vue.withCtx(() => [ vue.createVNode(_component_van_popup, { show: vue.unref(showPicker), "onUpdate:show": _cache[3] || (_cache[3] = ($event) => vue.isRef(showPicker) ? showPicker.value = $event : null), "destroy-on-close": "", position: "bottom", teleport: "body" }, { default: vue.withCtx(() => [ vue.createVNode(_component_van_date_picker, vue.mergeProps(_ctx.$attrs, { modelValue: vue.unref(pickerValue), "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => vue.isRef(pickerValue) ? pickerValue.value = $event : null), readonly: false, onConfirm, columnsType: vue.unref(columnsType), formatter, onCancel: _cache[2] || (_cache[2] = ($event) => showPicker.value = false) }), null, 16, ["modelValue", "columnsType"]) ]), _: 1 }, 8, ["show"]) ]), _: 2 }, [ !__props.readonly && !__props.disabled && vue.unref(fieldTextValue) ? { name: "right-icon", fn: vue.withCtx(() => [ vue.createVNode(_component_van_icon, { name: "clear", class: "custom-close-icon", onClick: _cache[0] || (_cache[0] = vue.withModifiers(($event) => emit("update:modelValue", null), ["stop"])) }) ]), key: "0" } : void 0 ]), 1040, ["modelValue", "isLink", "disabled"]); }; } }; exports.default = _sfc_main;