From 2ce6491e137bc6f990e1e605a952f6b92ef021d9 Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Fri, 29 Mar 2024 11:38:36 +0800
Subject: [PATCH] 调度任务页面集成完善

---
 src/views/resource/distapch.vue |  464 ++++++++++++++++++++++++++-------------------------------
 1 files changed, 212 insertions(+), 252 deletions(-)

diff --git a/src/views/resource/distapch.vue b/src/views/resource/distapch.vue
index a7ab315..90931d7 100644
--- a/src/views/resource/distapch.vue
+++ b/src/views/resource/distapch.vue
@@ -1,22 +1,22 @@
 <template>
-    <basic-container v-if="false">
+    <basic-container>
         <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" :permission="permissionList"
             v-model="form" ref="crud" @row-update="rowUpdate" @row-save="rowSave" @row-del="rowDel"
             :before-open="beforeOpen" @search-change="searchChange" @search-reset="searchReset"
             @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
             @refresh-change="refreshChange" @on-load="onLoad">
             <template slot="menuLeft">
-                <el-button type="danger" size="small" icon="el-icon-delete" plain v-if="permission.oss_delete"
+                <el-button type="danger" size="small" icon="el-icon-delete" plain v-if="permission.job_del"
                     @click="handleDelete">删 除
                 </el-button>
             </template>
 
             <template slot-scope="{ row, size, index }" slot="menu">
-                <el-button :size="size" type="text" icon="el-icon-video-play" v-if="userInfo.role_name.includes('admin')"
-                    @click="handleDebug(row)">执行一次
+                <el-button :size="size" type="text" icon="el-icon-video-pause" v-if="permission.job_enable && row.triggerStatus==1"
+                    @click="handleEnable(row,0)">停止
                 </el-button>
-                <el-button :size="size" type="text" icon="el-icon-circle-check" v-if="permission.oss_enable"
-                    @click.stop="handleEnable(row)">启用
+                <el-button :size="size" type="text" icon="el-icon-video-play" v-if="permission.job_enable && row.triggerStatus==0"
+                    @click.stop="handleEnable(row,1)">启用
                 </el-button>
             </template>
 
@@ -38,14 +38,6 @@
 
 
         </avue-crud>
-
-        <el-dialog title="对象存储上传调试" append-to-body :visible.sync="box" width="550px">
-            <avue-form ref="form" :option="debugOption" v-model="debugForm" @submit="handleSubmit" />
-        </el-dialog>
-
-
-
-
         <el-dialog title="Cron" append-to-body :visible.sync="cronPopover" width="550px">
             <!-- <el-popover v-model="cronPopover"> -->
 
@@ -64,7 +56,7 @@
 </template>
 
 <script>
-import { getList, getDetail, add, update, remove, enable } from "@/api/resource/oss"
+import { getList, add, update, remove, start,stop } from "@/api/xxljob/xxljob"
 import { mapGetters } from "vuex"
 import func from "@/util/func"
 import vueCron from 'vue-cron'
@@ -90,8 +82,7 @@
                 searchLabelWidth: 96,
                 searchShow: true,
                 searchMenuSpan: 3,
-                menuWidth: 350,
-
+                menuWidth: 280,
                 height: 'auto',
                 calcHeight: 30,
                 tip: false,
@@ -102,253 +93,205 @@
                 dialogWidth: 880,
                 dialogClickModal: false,
                 dialogDirection: 'rtl',
-                dialogType: 'drawer',
+                dialogType: 'dialog',
                 column: [
-                    {
-                        label: "分类",
-                        type: "radio",
-                        value: 1,
-                        span: 24,
-                        width: 120,
-                        searchLabelWidth: 50,
-                        row: true,
-                        dicUrl: "/api/blade-system/dict/dictionary?code=oss",
-                        props: {
-                            label: "dictValue",
-                            value: "dictKey"
-                        },
-                        dataType: "number",
-                        slot: true,
-                        prop: "category",
+                {
+                        label: "任务描述",
+                        searchLabelWidth: 76,
+                        prop: "jobDesc",
+                        labelWidth:150,
                         search: true,
                         rules: [{
                             required: true,
-                            message: "请选择分类",
+                            message: "请输入任务描述",
                             trigger: "blur"
                         }],
-                        display: false
+                    },
+                    // {
+                    //     label: "调度类型",
+                    //     width: 120,
+                    //     searchLabelWidth: 76,
+                    //     labelWidth:150,
+                    //     prop: "scheduleType",
+                    //     rules: [{
+                    //         required: true,
+                    //         message: "请选择调度类型",
+                    //         trigger: "blur"
+                    //     }],
+                    //     display: false
+                    // },
+                    {
+                        label: "表达式",
+                        prop: "scheduleConf",
+                        // width: 120,
+                        labelWidth:150,
+                        rules: [{
+                            required: true,
+                            message: "请输入表达式",
+                            trigger: "blur"
+                        }],
                     },
                     {
-                        label: "资源编号",
-                        prop: "ossCode",
-                        span: 24,
+                        label: "执行器任务handler",
+                        prop: "executorHandler",
+                        labelWidth:150,
+                        width: 160,
+                        rules: [{
+                            required: true,
+                            message: "请输入执行器任务handler",
+                            trigger: "blur"
+                        }],
+                    },
+                    {
+                        label: "负责人",
+                        prop: "author",
                         width: 120,
-                        search: true,
+                        labelWidth:150,
                         rules: [{
                             required: true,
-                            message: "请输入资源编号",
+                            message: "请输入负责人",
                             trigger: "blur"
                         }],
-                        display: false
                     },
+                    
                     {
-                        label: "资源地址",
-                        prop: "endpoint",
-                        span: 24,
-                        rules: [{
-                            required: true,
-                            message: "请输入资源地址",
-                            trigger: "blur"
-                        }],
-                        display: false
-                    },
-                    {
-                        label: "空间名",
-                        prop: "bucketName",
-                        span: 24,
-                        width: 120,
-                        rules: [{
-                            required: true,
-                            message: "请输入空间名",
-                            trigger: "blur"
-                        }],
-                        display: false
-                    },
-                    {
-                        label: "accessKey",
-                        prop: "accessKey",
-                        span: 24,
-                        search: true,
-                        width: 200,
+                        label: "报警邮件",
+                        prop: "alarmEmail",
+                        width: 150,
+                        labelWidth:150,
                         overHidden: true,
                         rules: [{
                             required: true,
-                            message: "请输入accessKey",
+                            message: "请输入报警邮件",
                             trigger: "blur"
                         }],
-                        display: false
-                    },
-                    {
-                        label: "secretKey",
-                        prop: "secretKey",
-                        span: 24,
-                        width: 200,
-                        overHidden: true,
-                        rules: [{
-                            required: true,
-                            message: "请输入secretKey",
-                            trigger: "blur"
-                        }],
-                        display: false
-                    },
-                    {
-                        label: "appId",
-                        prop: "appId",
-                        span: 24,
-                        hide: true,
-                        display: false,
-                    },
-                    {
-                        label: "region",
-                        prop: "region",
-                        span: 24,
-                        hide: true,
-                        display: false,
-                    },
-                    {
-                        width: 100,
-                        label: "是否启用",
-                        prop: "status",
-                        span: 24,
-                        align: "center",
-                        slot: true,
-                        addDisplay: false,
-                        editDisplay: false,
-                        viewDisplay: false,
-                    },
-                    {
-                        label: "备注",
-                        prop: "remark",
-                        span: 24,
-                        hide: true,
-                        display: false
+                    },{
+                        label: "状态",
+                        prop: "triggerStatus",
+                        search: true,
+                        searchSpan:4,
+                        type:"select",
+                        align:"center",
+                        labelWidth:150,
+                        width: 120,
+                        searchLabelWidth: 66,
+                        viewDisplay:true,
+                        addDisplay:false,
+                        editDisplay:false,
+                        dataType:"number",
+                        dicData:[
+                            {
+                                label:"运行",
+                                value: 1
+                            },
+                            {
+                                label:"停止",
+                                value: 0
+                            }
+                        ],
                     },
                 ],
-                group: [
-                    {
-                        label: '基础配置',
-                        prop: 'jbxx',
-                        column: [
-                            {
-                                label: '执行器',
-                                prop: '',
-                                type: 'select',
-                            },
-                            {
-                                label: '任务描述',
-                                prop: ''
-                            },
-                            {
-                                label: '负责人',
-                                prop: '',
+            //     group: [
+            //         {
+            //             label: '基础配置',
+            //             prop: 'jbxx',
+            //             column: [
+            //                 {
+            //                     label: '执行器',
+            //                     prop: '',
+            //                     type: 'select',
+            //                 },
+            //                 {
+            //                     label: '任务描述',
+            //                     prop: ''
+            //                 },
+            //                 {
+            //                     label: '负责人',
+            //                     prop: '',
 
-                            },
-                            {
-                                label: '报警邮件',
-                                prop: ''
-                            }
-                        ]
-                    },
-                    {
-                        label: '调度配置',
-                        prop: 'jbxx',
-                        column: [
-                            {
-                                label: '调度类型',
-                                prop: '',
-                                type: 'select',
-                            },
-                            {
-                                label: 'Cron',
-                                prop: 'cron',
-                                formslot: true,
-                            }
-                        ]
-                    },
-                    {
-                        label: '任务配置',
-                        prop: 'jbxx',
-                        column: [
-                            {
-                                label: '运行模式',
-                                prop: '',
-                                type: 'select',
-                            },
-                            {
-                                label: 'JobHandler',
-                                prop: ''
-                            },
-                            {
-                                label: '任务参数',
-                                prop: '',
-                                type: 'textarea',
-                                span: 24
-                            }
-                        ]
-                    },
-                    {
-                        label: '高级配置',
-                        prop: 'jbxx',
-                        column: [
-                            {
-                                label: '调度类型',
-                                prop: '',
-                                type: 'select',
-                            },
-                            {
-                                label: '子任务ID',
-                                prop: ''
-                            },
-                            {
-                                label: '调度类型',
-                                prop: '',
-                                type: 'select',
-                            },
-                            {
-                                label: '任务参数',
-                                prop: '',
-                                type: 'select',
-                            },
-                            {
-                                label: '任务超时时间',
-                                prop: '',
-                            },
-                            {
-                                label: '失败重试次数',
-                                prop: '',
-                            }
-                        ]
-                    },
-                ]
+            //                 },
+            //                 {
+            //                     label: '报警邮件',
+            //                     prop: ''
+            //                 }
+            //             ]
+            //         },
+            //         {
+            //             label: '调度配置',
+            //             prop: 'jbxx',
+            //             column: [
+            //                 {
+            //                     label: '调度类型',
+            //                     prop: '',
+            //                     type: 'select',
+            //                 },
+            //                 {
+            //                     label: 'Cron',
+            //                     prop: 'cron',
+            //                     formslot: true,
+            //                 }
+            //             ]
+            //         },
+            //         {
+            //             label: '任务配置',
+            //             prop: 'jbxx',
+            //             column: [
+            //                 {
+            //                     label: '运行模式',
+            //                     prop: '',
+            //                     type: 'select',
+            //                 },
+            //                 {
+            //                     label: 'JobHandler',
+            //                     prop: ''
+            //                 },
+            //                 {
+            //                     label: '任务参数',
+            //                     prop: '',
+            //                     type: 'textarea',
+            //                     span: 24
+            //                 }
+            //             ]
+            //         },
+            //         {
+            //             label: '高级配置',
+            //             prop: 'jbxx',
+            //             column: [
+            //                 {
+            //                     label: '调度类型',
+            //                     prop: '',
+            //                     type: 'select',
+            //                 },
+            //                 {
+            //                     label: '子任务ID',
+            //                     prop: ''
+            //                 },
+            //                 {
+            //                     label: '调度类型',
+            //                     prop: '',
+            //                     type: 'select',
+            //                 },
+            //                 {
+            //                     label: '任务参数',
+            //                     prop: '',
+            //                     type: 'select',
+            //                 },
+            //                 {
+            //                     label: '任务超时时间',
+            //                     prop: '',
+            //                 },
+            //                 {
+            //                     label: '失败重试次数',
+            //                     prop: '',
+            //                 }
+            //             ]
+            //         },
+            //     ]
             },
             data: [],
             debugForm: {
                 code: '',
             },
-            debugOption: {
-                submitText: "保存",
-                column: [
-                    {
-                        label: "资源编号",
-                        prop: "code",
-                        disabled: true,
-                        span: 24,
-                    },
-                    {
-                        label: "上传背景",
-                        prop: "backgroundUrl",
-                        type: 'upload',
-                        listType: 'picture-img',
-                        dataType: 'string',
-                        action: '/api/blade-resource/oss/endpoint/put-file',
-                        propsHttp: {
-                            res: 'data',
-                            url: 'link',
-                        },
-                        span: 24,
-                    },
-                ]
-            }
         }
     },
     watch: {
@@ -372,10 +315,10 @@
         ...mapGetters(["userInfo", "permission"]),
         permissionList () {
             return {
-                addBtn: this.vaildData(this.permission.oss_add),
+                addBtn: this.vaildData(this.permission.job_add),
                 viewBtn: this.vaildData(this.permission.oss_view),
-                delBtn: this.vaildData(this.permission.oss_delete),
-                editBtn: this.vaildData(this.permission.oss_edit)
+                delBtn: this.vaildData(this.permission.job_del),
+                editBtn: this.vaildData(this.permission.job_update)
             }
         },
         ids () {
@@ -393,6 +336,16 @@
         },
 
         rowSave (row, done, loading) {
+            row['jobGroup'] = 1;
+            row['glueType'] = 'bean';
+            row['scheduleType'] = 'CRON';
+            row['executorParam'] = '';
+            row['executorRouteStrategy'] = 'FIRST';
+            row['misfireStrategy'] = 'DO_NOTHING';
+            row['executorBlockStrategy'] = 'SERIAL_EXECUTION';
+            row['executorTimeout'] = 0;
+            row['executorFailRetryCount'] = 0;
+            row['glueRemark'] = 'GLUE代码初始化';
             add(row).then(() => {
                 this.onLoad(this.page)
                 this.$message({
@@ -452,14 +405,26 @@
             this.selectionList = []
             this.$refs.crud.toggleSelection()
         },
-        handleEnable (row) {
-            this.$confirm("是否确定启用这条配置?", {
+        handleEnable (row,status) {
+            var temstr = ""
+            if(status == 1){
+                temstr = "启动"
+            }else{
+                temstr = "停止"
+            }
+            this.$confirm("是否确定" + temstr + "当前任务?", {
                 confirmButtonText: "确定",
                 cancelButtonText: "取消",
                 type: "warning"
             })
                 .then(() => {
-                    return enable(row.id)
+                    if(status==1){
+                        row.triggerStatus = 1
+                        return start(row)
+                    }else{
+                        row.triggerStatus = 0
+                        return stop(row)
+                    }
                 })
                 .then(() => {
                     this.onLoad(this.page)
@@ -469,11 +434,6 @@
                     })
                     this.$refs.crud.toggleSelection()
                 })
-        },
-        handleDebug (row) {
-            this.box = true
-            this.debugForm.code = row.ossCode
-            this.debugForm.backgroundUrl = ''
         },
         handleSubmit (form, done) {
             this.$message({
@@ -505,11 +465,11 @@
                 })
         },
         beforeOpen (done, type) {
-            if (["edit", "view"].includes(type)) {
-                getDetail(this.form.id).then(res => {
-                    this.form = res.data.data
-                })
-            }
+            // if (["edit", "view"].includes(type)) {
+            //     getDetail(this.form.id).then(res => {
+            //         this.form = res.data.data
+            //     })
+            // }
             done()
         },
         currentChange (currentPage) {

--
Gitblit v1.9.3