<template> <div class="app-date-range"> <el-date-picker v-model='curdate' :type="datetype" popper-class="app-date-range-popper" :format="valFormat" :disabled="disabled" :readonly="readonly" :range-separator="$t('components.appdaterange.separator')" :start-placeholder="$t('components.appdaterange.start')" :end-placeholder="$t('components.appdaterange.end')" align="center"> </el-date-picker> </div> </template> <script lang="ts"> import { Component, Vue, Prop } from 'vue-property-decorator'; @Component({ }) export default class AppDateRange extends Vue { /** * 编辑项名称 * * @type {string} * @memberof AppDateRange */ @Prop() public name!: string; /** * 是否禁用 * * @type {boolean} * @memberof AppDateRange */ @Prop() public disabled!: boolean; /** * 只读模式 * * @type {boolean} */ @Prop({default: false}) public readonly?: boolean; /** * 表单数据对象 * * @type {*} * @memberof AppDateRange */ @Prop() public activeData: any; /** * 值格式 * * @type {string} * @memberof AppDateRange */ @Prop() public format!: string; /** * 编辑器类型 * * @type {string} * @memberof AppDateRange */ @Prop() public editorType!: string; /** * 关系表单项集合 * * @type {string[]} * @memberof AppDateRange */ @Prop() public refFormItem!: string[]; /** * 处理值格式 * * @readonly * @memberof AppDateRange */ get valFormat() { if (this.format) { return this.format.replace('YYYY', 'yyyy').replace('DD', 'dd'); } else { return ''; } } /** * 处理时间格式 * * @readonly * @memberof AppDateRange */ get curdate() { let value: any[] = []; this.refFormItem.forEach((foritem: any) => { if (this.activeData[foritem]) { value.push(this.activeData[foritem]); } }) return value; } /** * 处理时间格式 * * @readonly * @memberof AppDateRange */ get datetype() { return Object.is(this.editorType,'DATERANGE') ? 'datetimerange' : 'daterange'; } /** * 处理时间格式 * * @readonly * @memberof AppDateRange */ set curdate(dates: any) { if(dates) { dates.forEach((date: any,index: number) => { this.$emit('formitemvaluechange', { name: this.refFormItem[index], value: date }); }); } else { this.refFormItem.forEach((foritem: any) => { this.$emit('formitemvaluechange', { name: foritem, value: null }); }) } } } </script>