edit.vue 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. <template>
  2. <div class="system-edit-dic-container">
  3. <el-dialog :title="(ruleForm.id !== 0 ? '修改' : '添加') + '模型'" v-model="isShowDialog" width="769px">
  4. <el-form :model="ruleForm" ref="formRef" :rules="rules" size="default" label-width="110px">
  5. <el-form-item label="模型标识" prop="key">
  6. <el-input v-model="ruleForm.key" placeholder="请输入模型名称" :disabled="ruleForm.id"/>
  7. </el-form-item>
  8. <el-form-item label="模型名称" prop="name">
  9. <el-input v-model="ruleForm.name" placeholder="请输入模型名称" />
  10. </el-form-item>
  11. <!-- <el-form-item label="更新时间" prop="interval">
  12. <el-input v-model="ruleForm.interval" placeholder="请输入更新时间" class="w-35" />
  13. <el-select v-model="ruleForm.intervalUnit" placeholder="请选择单位">
  14. <el-option v-for="item in unitData" :key="item.value" :label="item.label" :value="item.value" />
  15. </el-select>
  16. </el-form-item> -->
  17. <el-form-item label="定时请求">
  18. <el-input v-model="ruleForm.cronExpression" placeholder="请输入cron表达式" />
  19. <ul style="list-style: none;">
  20. <li><el-icon><ele-WarningFilled /></el-icon> */5 * * * * ? : 每隔5秒执行一次</li>
  21. <li><el-icon><ele-WarningFilled /></el-icon> 20 */1 * * * ? : 每隔1分钟执行一次</li>
  22. <li><el-icon><ele-WarningFilled /></el-icon> 30 0 23 * * ? : 每天23点执行一次</li>
  23. <li><el-icon><ele-WarningFilled /></el-icon> 0 0 1 * * ? : 每天凌晨1点执行一次</li>
  24. <li><el-icon><ele-WarningFilled /></el-icon> 0 0 1 1 * ? : 每月1号凌晨1点执行一次</li>
  25. </ul>
  26. </el-form-item>
  27. <el-form-item label="描述" prop="desc">
  28. <el-input v-model="ruleForm.desc" type="textarea" placeholder="请输入内容"></el-input>
  29. </el-form-item>
  30. </el-form>
  31. <template #footer>
  32. <span class="dialog-footer">
  33. <el-button @click="onCancel" size="default">取 消</el-button>
  34. <el-button type="primary" @click="onSubmit" size="default">{{ ruleForm.id !== 0 ? '修 改' : '添 加' }}</el-button>
  35. </span>
  36. </template>
  37. </el-dialog>
  38. </div>
  39. </template>
  40. <script lang="ts">
  41. import { reactive, toRefs, defineComponent, ref, unref } from 'vue';
  42. import api from '/@/api/datahub';
  43. import { ElMessage } from 'element-plus';
  44. interface RuleFormState {
  45. id?: number;
  46. name: string;
  47. interval: string;
  48. key: string;
  49. desc: string;
  50. }
  51. interface DicState {
  52. isShowDialog: boolean;
  53. ruleForm: RuleFormState;
  54. rules: {};
  55. }
  56. export default defineComponent({
  57. name: 'Edit',
  58. setup(prop, { emit }) {
  59. const formRef = ref<HTMLElement | null>(null);
  60. const state = reactive<DicState>({
  61. isShowDialog: false,
  62. unitData: [
  63. {
  64. label: '秒',
  65. value: 'second',
  66. },
  67. {
  68. label: '分',
  69. value: 'minute',
  70. },
  71. {
  72. label: '时',
  73. value: 'hour',
  74. },
  75. {
  76. label: '天',
  77. value: 'day',
  78. },
  79. ],
  80. ruleForm: {
  81. id: 0,
  82. name: '',
  83. key: '',
  84. desc: '',
  85. },
  86. rules: {
  87. key: [{ required: true, message: '模型标识不能为空', trigger: 'blur' }],
  88. name: [{ required: true, message: '模型名称不能为空', trigger: 'blur' }],
  89. interval: [{ required: true, message: '请输入更新时间', trigger: 'blur' }],
  90. },
  91. });
  92. // 打开弹窗
  93. const openDialog = (row: RuleFormState | null) => {
  94. resetForm();
  95. if (row) {
  96. state.ruleForm = row;
  97. }
  98. state.isShowDialog = true;
  99. };
  100. const resetForm = () => {
  101. state.ruleForm = {
  102. id: 0,
  103. name: '',
  104. key: '',
  105. desc: '',
  106. };
  107. };
  108. // 关闭弹窗
  109. const closeDialog = () => {
  110. state.isShowDialog = false;
  111. };
  112. // 取消
  113. const onCancel = () => {
  114. closeDialog();
  115. };
  116. // 新增
  117. const onSubmit = () => {
  118. const formWrap = unref(formRef) as any;
  119. if (!formWrap) return;
  120. formWrap.validate((valid: boolean) => {
  121. if (valid) {
  122. if (state.ruleForm.id !== 0) {
  123. //修改
  124. api.template.edit(state.ruleForm).then(() => {
  125. ElMessage.success('模型类型修改成功');
  126. closeDialog(); // 关闭弹窗
  127. emit('typeList');
  128. });
  129. } else {
  130. //添加
  131. api.template.add(state.ruleForm).then(() => {
  132. ElMessage.success('模型类型添加成功');
  133. closeDialog(); // 关闭弹窗
  134. emit('typeList');
  135. });
  136. }
  137. }
  138. });
  139. };
  140. return {
  141. openDialog,
  142. closeDialog,
  143. onCancel,
  144. onSubmit,
  145. formRef,
  146. ...toRefs(state),
  147. };
  148. },
  149. });
  150. </script>