Newer
Older
xc-business-system / src / views / resource / file / noveltySearch / timeDialog.vue
<!-- 时间选择弹窗 -->
<script name="TimeSelectDialog" lang="ts" setup>
import type { FormInstance, FormRules } from 'element-plus'
// const $props = defineProps({
//   // 禁用此参数之前的时间
//   disabledTime: {
//     type: String,
//     default: '',
//   },
// })
const emits = defineEmits(['confirm'])
const dialogVisible = ref(false)
const dataFormRef = ref()
// 表单
const areaForm = ref({
  time: '',
})
// 前端校验规则
const rules: FormRules = {
  time: [{ required: true, message: '完成时间必选', trigger: ['blur', 'change'] }],
}
const disabledTime = ref('')
const initDialog = (disabledTime1: any) => {
  // 禁用此参数之前的时间
  disabledTime.value = ''
  dialogVisible.value = true
  areaForm.value.time = ''
  if (disabledTime1) {
    disabledTime.value = disabledTime1
  }
}
const cancel = () => {
  dialogVisible.value = false
}
const disabledDate = (time: any) => {
  if (disabledTime.value) {
    return time.getTime() <= new Date(disabledTime.value).getTime() - 8.64e7
  }
  else {
    return false
  }
}
// return
const saveForm = async (formEl: FormInstance | undefined) => {
  if (!formEl) { return }
  await formEl.validate((valid, fields) => {
    if (valid) {
      emits('confirm', areaForm.value.time)
      cancel()
    }
  })
}
defineExpose({
  initDialog,
})
</script>

<template>
  <el-dialog v-model="dialogVisible" title="编辑" width="400">
    <el-form ref="dataFormRef" :rules="rules" :model="areaForm" label-position="right" label-width="80px">
      <el-row :gutter="24">
        <el-col :span="24">
          <el-form-item label="完成时间" prop="time">
            <el-date-picker
              v-model="areaForm.time" type="datetime" format="YYYY-MM-DD HH:mm:ss"
              value-format="YYYY-MM-DD HH:mm:ss" placeholder="完成时间" style="width: 100%;"
              :disabled-date="disabledDate"
            />
          </el-form-item>
        </el-col>
      </el-row>
    </el-form>
    <template #footer>
      <div class="dialog-footer">
        <el-button type="primary" @click="saveForm(dataFormRef)">
          保存
        </el-button>
        <el-button @click="cancel">
          取消
        </el-button>
      </div>
    </template>
  </el-dialog>
</template>