From 73c154cba6f95745bdfde79508b7e624f083f838 Mon Sep 17 00:00:00 2001
From: liriming <1343021927@qq.com>
Date: 星期一, 14 十月 2024 14:15:08 +0800
Subject: [PATCH] 定时任务修改

---
 src/views/energy/job/ScheduleJobForm.vue |  110 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 110 insertions(+), 0 deletions(-)

diff --git a/src/views/energy/job/ScheduleJobForm.vue b/src/views/energy/job/ScheduleJobForm.vue
new file mode 100644
index 0000000..87c89ed
--- /dev/null
+++ b/src/views/energy/job/ScheduleJobForm.vue
@@ -0,0 +1,110 @@
+<template>
+  <Dialog v-model="dialogVisible" :title="dialogTitle" width="50%">
+    <el-form
+      ref="formRef"
+      v-loading="formLoading"
+      :model="formData"
+      :rules="formRules"
+      label-width="120px"
+    >
+      <el-form-item label="bean名称" prop="beanName">
+        <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-form-item>
+      <el-form-item label="cron表达式" prop="cronExpression">
+        <el-input v-model="formData.cronExpression" placeholder="请输入cron表达式" />
+      </el-form-item>
+      <el-form-item label="备注" prop="remark">
+        <el-input v-model="formData.remark" placeholder="请输入备注" type="textarea" />
+      </el-form-item>
+    </el-form>
+    <template #footer>
+      <el-button :disabled="formLoading" type="primary" @click="submitForm">确 定</el-button>
+      <el-button @click="dialogVisible = false">取 消</el-button>
+    </template>
+  </Dialog>
+</template>
+<script lang="ts" setup>
+import * as ScheduleJobApi from '@/api/job'
+
+defineOptions({ name: 'DataScheduleJobForm' })
+
+  const { t } = useI18n() // 国际化
+  const message = useMessage() // 消息弹窗
+  const dialogVisible = ref(false) // 弹窗的是否展示
+  const dialogTitle = ref('') // 弹窗的标题
+  const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
+  const formType = ref('') // 表单的类型:create - 新增;update - 修改
+  const formData = ref({
+    id: undefined,
+    beanName: undefined,
+    params: undefined,
+    cronExpression: undefined,
+    remark: undefined,
+    status: 0
+  })
+  const formRules = reactive({
+    beanName: [{ required: true, message: 'bean名称不能为空', trigger: 'blur' }],
+    cronExpression: [{ required: true, message: 'cron表达式不能为空', trigger: 'blur' }]
+  })
+  const formRef = ref() // 表单 Ref
+
+  /** 打开弹窗 */
+  const open = async (type: string, id?: number) => {
+    dialogVisible.value = true
+    dialogTitle.value = t('action.' + type)
+    formType.value = type
+    resetForm()
+    // 修改时,设置数据
+    if (id) {
+      formLoading.value = true
+      try {
+        formData.value = await ScheduleJobApi.getScheduleJob(id)
+      } finally {
+        formLoading.value = false
+      }
+    }
+  }
+  defineExpose({ open }) // 提供 open 方法,用于打开弹窗
+
+  /** 提交表单 */
+  const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
+  const submitForm = async () => {
+    // 校验表单
+    if (!formRef) return
+    const valid = await formRef.value.validate()
+    if (!valid) return
+    // 提交请求
+    formLoading.value = true
+    try {
+      const data = formData.value as unknown as ScheduleJobApi.ScheduleJobVO
+      if (formType.value === 'create') {
+        await ScheduleJobApi.createScheduleJob(data)
+        message.success(t('common.createSuccess'))
+      } else {
+        await ScheduleJobApi.updateScheduleJob(data)
+        message.success(t('common.updateSuccess'))
+      }
+      dialogVisible.value = false
+      // 发送操作成功的事件
+      emit('success')
+    } finally {
+      formLoading.value = false
+    }
+  }
+
+  /** 重置表单 */
+  const resetForm = () => {
+    formData.value = {
+      id: undefined,
+      beanName: undefined,
+      params: undefined,
+      cronExpression: undefined,
+      remark: undefined,
+      status: 0
+    }
+    formRef.value?.resetFields()
+  }
+</script>

--
Gitblit v1.9.3