From 6b988bd582bfcd17fee48c476a5a6e5cc172b0d5 Mon Sep 17 00:00:00 2001 From: baoshiwei <baoshiwei@shlanbao.cn> Date: 星期三, 12 三月 2025 10:08:33 +0800 Subject: [PATCH] dev-2 --- src/bpmn/panel/property/DueDate.vue | 252 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 252 insertions(+), 0 deletions(-) diff --git a/src/bpmn/panel/property/DueDate.vue b/src/bpmn/panel/property/DueDate.vue new file mode 100644 index 0000000..882766b --- /dev/null +++ b/src/bpmn/panel/property/DueDate.vue @@ -0,0 +1,252 @@ +<template> + <div> + <el-dialog v-model="visible" :title="title" width="600px" append-to-body> + <el-form label-width="100px"> + <el-form-item label="灏忔椂"> + <el-radio-group v-model="hourValue" @change="hourChange"> + <el-radio-button label="4" value="4" /> + <el-radio-button label="8" value="8" /> + <el-radio-button label="12" value="12" /> + <el-radio-button label="24" value="24" /> + <el-radio-button label="鑷畾涔�" value="鑷畾涔�" /> + <el-input-number v-show="hourValue === '鑷畾涔�'" v-model="customHourValue" :min="1" @change="customHourValueChange"></el-input-number> + </el-radio-group> + </el-form-item> + <el-form-item label="澶�"> + <el-radio-group v-model="dayValue" @change="dayChange"> + <el-radio-button label="1" value="1" /> + <el-radio-button label="2" value="2" /> + <el-radio-button label="3" value="3" /> + <el-radio-button label="4" value="4" /> + <el-radio-button label="鑷畾涔�" value="鑷畾涔�" /> + <el-input-number v-show="dayValue === '鑷畾涔�'" v-model="customDayValue" :min="1" @change="customDayValueChange"></el-input-number> + </el-radio-group> + </el-form-item> + <el-form-item label="鍛�"> + <el-radio-group v-model="weekValue" @change="weekChange"> + <el-radio-button label="1" value="1" /> + <el-radio-button label="2" value="2" /> + <el-radio-button label="3" value="3" /> + <el-radio-button label="4" value="4" /> + <el-radio-button label="鑷畾涔�" value="鑷畾涔�" /> + <el-input-number v-show="weekValue === '鑷畾涔�'" v-model="customWeekValue" :min="1" @change="customWeekValueChange"></el-input-number> + </el-radio-group> + </el-form-item> + <el-form-item label="鏈�"> + <el-radio-group v-model="monthValue" @change="monthChange"> + <el-radio-button label="1" value="1" /> + <el-radio-button label="2" value="2" /> + <el-radio-button label="3" value="3" /> + <el-radio-button label="4" value="4" /> + <el-radio-button label="鑷畾涔�" value="鑷畾涔�" /> + <el-input-number v-show="monthValue === '鑷畾涔�'" v-model="customMonthValue" :min="1" @change="customMonthValueChange"></el-input-number> + </el-radio-group> + </el-form-item> + </el-form> + + <template #footer> + <div> + <el-button @click="closeDialog">鍙栨秷</el-button> + <el-button type="primary" @click="confirm">纭畾</el-button> + </div> + </template> + </el-dialog> + </div> +</template> + +<script setup lang="ts"> +import useDialog from '@/hooks/useDialog'; + +interface PropType { + modelValue?: string; + data?: string; +} +const prop = withDefaults(defineProps<PropType>(), { + modelValue: '', + data: '' +}); +const emit = defineEmits(['update:modelValue', 'confirmCallBack']); + +const { title, visible, openDialog, closeDialog } = useDialog({ + title: '璁剧疆浠诲姟鍒版湡鏃堕棿' +}); +const formValue = ref(); +const valueType = ref(); + +const hourValue = ref(''); +const dayValue = ref(''); +const weekValue = ref(''); +const monthValue = ref(''); + +const customHourValue = ref(1); +const customDayValue = ref(1); +const customWeekValue = ref(1); +const customMonthValue = ref(1); + +const hourValueConst = ['4', '8', '12', '24']; +const dayAndWeekAndMonthValueConst = ['1', '2', '3', '4']; + +const initValue = () => { + formValue.value = prop.data; + if (prop.data) { + const lastStr = prop.data.substring(prop.data.length - 1); + if (lastStr === 'H') { + const hourValueValue = prop.data.substring(2, prop.data.length - 1); + if (hourValueConst.includes(hourValueValue)) { + hourValue.value = hourValueValue; + } else { + hourValue.value = '鑷畾涔�'; + customHourValue.value = Number(hourValueValue); + } + } + const dayAndWeekAndMonthValue = prop.data.substring(1, prop.data.length - 1); + if (lastStr === 'D') { + if (dayAndWeekAndMonthValueConst.includes(dayAndWeekAndMonthValue)) { + dayValue.value = dayAndWeekAndMonthValue; + } else { + dayValue.value = '鑷畾涔�'; + customDayValue.value = Number(dayAndWeekAndMonthValue); + } + } + if (lastStr === 'W') { + if (dayAndWeekAndMonthValueConst.includes(dayAndWeekAndMonthValue)) { + weekValue.value = dayAndWeekAndMonthValue; + } else { + weekValue.value = '鑷畾涔�'; + customWeekValue.value = Number(dayAndWeekAndMonthValue); + } + } + if (lastStr === 'M') { + if (dayAndWeekAndMonthValueConst.includes(dayAndWeekAndMonthValue)) { + monthValue.value = dayAndWeekAndMonthValue; + } else { + monthValue.value = '鑷畾涔�'; + customMonthValue.value = Number(dayAndWeekAndMonthValue); + } + } + } +}; + +const confirm = () => { + emit('update:modelValue', formValue.value); + emit('confirmCallBack', formValue.value); + closeDialog(); +}; + +const customHourValueChange = (customHourValue) => { + formValue.value = `PT${customHourValue}H`; + + dayValue.value = ''; + weekValue.value = ''; + monthValue.value = ''; + customDayValue.value = 1; + customWeekValue.value = 1; + customMonthValue.value = 1; +}; +const customDayValueChange = (customDayValue) => { + formValue.value = `P${customDayValue}D`; + hourValue.value = ''; + weekValue.value = ''; + monthValue.value = ''; + + customHourValue.value = 1; + customWeekValue.value = 1; + customMonthValue.value = 1; +}; + +const customWeekValueChange = (customWeekValue) => { + formValue.value = `P${customWeekValue}W`; + hourValue.value = ''; + dayValue.value = ''; + monthValue.value = ''; + + customHourValue.value = 1; + customDayValue.value = 1; + customMonthValue.value = 1; +}; + +const customMonthValueChange = (customMonthValue) => { + formValue.value = `P${customMonthValue}M`; + hourValue.value = ''; + dayValue.value = ''; + weekValue.value = ''; + + customHourValue.value = 1; + customDayValue.value = 1; + customWeekValue.value = 1; +}; + +const hourChange = (hourValue) => { + if (hourValue === '鑷畾涔�') { + formValue.value = `PT${customHourValue.value}H`; + } else { + formValue.value = `PT${hourValue}H`; + } + + dayValue.value = ''; + weekValue.value = ''; + monthValue.value = ''; + customDayValue.value = 1; + customWeekValue.value = 1; + customMonthValue.value = 1; +}; +const dayChange = (dayValue) => { + if (dayValue === '鑷畾涔�') { + formValue.value = `P${customDayValue.value}D`; + } else { + formValue.value = `P${dayValue}D`; + } + + hourValue.value = ''; + weekValue.value = ''; + monthValue.value = ''; + + customHourValue.value = 1; + customWeekValue.value = 1; + customMonthValue.value = 1; +}; +const weekChange = (weekValue) => { + if (weekValue === '鑷畾涔�') { + formValue.value = `P${customWeekValue.value}W`; + } else { + formValue.value = `P${weekValue}W`; + } + + hourValue.value = ''; + dayValue.value = ''; + monthValue.value = ''; + + customHourValue.value = 1; + customDayValue.value = 1; + customMonthValue.value = 1; +}; +const monthChange = (monthValue) => { + if (monthValue === '鑷畾涔�') { + formValue.value = `P${customMonthValue.value}M`; + } else { + formValue.value = `P${monthValue}M`; + } + + hourValue.value = ''; + dayValue.value = ''; + weekValue.value = ''; + + customHourValue.value = 1; + customDayValue.value = 1; + customWeekValue.value = 1; +}; + +watch( + () => visible.value, + () => { + if (visible.value) { + initValue(); + } + } +); + +defineExpose({ + openDialog, + closeDialog +}); +</script> -- Gitblit v1.9.3