| | |
| | | <template> |
| | | <Dialog v-model="dialogVisible" :title="dialogTitle" width="50%"> |
| | | <Dialog v-model="dialogVisible" :close-on-click-modal="false" :title="dialogTitle" width="50%"> |
| | | <el-form |
| | | ref="formRef" |
| | | v-loading="formLoading" |
| | |
| | | label-width="120px" |
| | | > |
| | | <el-form-item label="bean名称" prop="beanName"> |
| | | <el-input v-model="formData.beanName" placeholder="请输入bean名称" /> |
| | | <el-input v-model="formData.beanName" placeholder="请输入bean名称"/> |
| | | </el-form-item> |
| | | <el-form-item label="参数" prop="params"> |
| | | <el-input v-model="formData.params" placeholder="请输入参数" /> |
| | | <el-input v-model="formData.params" placeholder="请输入参数"/> |
| | | </el-form-item> |
| | | <el-form-item label="cron表达式" prop="cronExpression"> |
| | | <el-input v-model="formData.cronExpression" placeholder="请输入cron表达式" /> |
| | | <el-popover ref="popoverRef" placement="bottom-start" trigger="click" width="600px"> |
| | | <vue3CronPlus @change="changeCron" @close="closeCron" max-height="600px" i18n="cn"/> |
| | | <template #reference> |
| | | <el-input v-model="formData.cronExpression" placeholder="请输入cron表达式"/> |
| | | </template> |
| | | </el-popover> |
| | | </el-form-item> |
| | | <el-form-item label="备注" prop="remark"> |
| | | <el-input v-model="formData.remark" placeholder="请输入备注" type="textarea" /> |
| | | <el-input v-model="formData.remark" placeholder="请输入备注" type="textarea"/> |
| | | </el-form-item> |
| | | </el-form> |
| | | <template #footer> |
| | |
| | | </Dialog> |
| | | </template> |
| | | <script lang="ts" setup> |
| | | import * as ScheduleJobApi from '@/api/job' |
| | | import * as ScheduleJobApi from '@/api/job' |
| | | import {vue3CronPlus} from 'vue3-cron-plus' |
| | | import 'vue3-cron-plus/dist/index.css' |
| | | |
| | | defineOptions({ name: 'DataScheduleJobForm' }) |
| | | defineOptions({name: 'DataScheduleJobForm'}) |
| | | |
| | | const { t } = useI18n() // 国际化 |
| | | const {t} = useI18n() // 国际化 |
| | | const message = useMessage() // 消息弹窗 |
| | | const dialogVisible = ref(false) // 弹窗的是否展示 |
| | | const dialogTitle = ref('') // 弹窗的标题 |
| | |
| | | status: 0 |
| | | }) |
| | | const formRules = reactive({ |
| | | beanName: [{ required: true, message: 'bean名称不能为空', trigger: 'blur' }], |
| | | cronExpression: [{ required: true, message: 'cron表达式不能为空', trigger: 'blur' }] |
| | | beanName: [{required: true, message: 'bean名称不能为空', trigger: 'blur'}], |
| | | cronExpression: [{required: true, message: 'cron表达式不能为空', trigger: 'blur'}] |
| | | }) |
| | | const formRef = ref() // 表单 Ref |
| | | |
| | |
| | | } |
| | | } |
| | | } |
| | | defineExpose({ open }) // 提供 open 方法,用于打开弹窗 |
| | | defineExpose({open}) // 提供 open 方法,用于打开弹窗 |
| | | |
| | | /** 提交表单 */ |
| | | const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调 |
| | |
| | | } |
| | | formRef.value?.resetFields() |
| | | } |
| | | |
| | | const changeCron = (cronValue) => { |
| | | if (typeof (cronValue) == "string") { |
| | | formData.value.cronExpression = cronValue; |
| | | } |
| | | } |
| | | const popoverRef = ref() |
| | | const closeCron = () => { |
| | | popoverRef.value.hide() |
| | | } |
| | | </script> |