保安服务企业管理项目备份
钟日健
2022-03-18 8e3504b57fef7b1eda8b75ca8aca67bee3b200dc
定时任务新增立即执行,恢复,暂停
3 files modified
305 ■■■■ changed files
deploy/deploy.yml 2 ●●● patch | view | raw | blame | history
src/api/system/quartz.js 21 ●●●●● patch | view | raw | blame | history
src/views/system/quartz.vue 282 ●●●● patch | view | raw | blame | history
deploy/deploy.yml
@@ -25,7 +25,7 @@
        - name: aliyun  #提前在项目下配置访问阿里云的账号密码
      containers:
        # - image: $REGISTRY/$ALIYUNHUB_NAMESPACE/zhba-vue:SNAPSHOT-$BUILD_NUMBER
        - image: registry.cn-hangzhou.aliyuncs.com/arsn/zhba-vue:SNAPSHOT-6
        - image: registry.cn-hangzhou.aliyuncs.com/arsn/zhba-vue:SNAPSHOT-7
          imagePullPolicy: Always
          name: app
          ports:
src/api/system/quartz.js
@@ -27,6 +27,27 @@
        data: row
    })
}
export const activateQuartz = (row) => {
    return request({
        url: '/api/scheduled/activateQuartz',
        method: 'post',
        data: row
    })
}
export const runQuartz = (row) => {
    return request({
        url: '/api/scheduled/runQuartz',
        method: 'post',
        data: row
    })
}
export const stopQuartz = (row) => {
    return request({
        url: '/api/scheduled/stopQuartz',
        method: 'post',
        data: row
    })
}
export const remove = (ids) => {
    return request({
src/views/system/quartz.vue
@@ -44,6 +44,33 @@
          >导出
        </el-button>
      </template>
      <template slot-scope="{ type, size, row }" slot="menu">
        <el-button
          :size="size"
          :type="type"
          icon="el-icon-video-play"
          v-if="permission.quartz_run"
          @click="runQuartz(row)"
          >立即执行
        </el-button>
        <el-button
          :type="type"
          :size="size"
          v-if="permission.quartz_stop"
          icon="el-icon-video-pause"
          @click="stopQuartz(row)"
          >暂停任务
        </el-button>
        <el-button
          :type="type"
          :size="size"
          v-if="permission.quartz_activate"
          icon="el-icon-refresh-left"
          @click="activateQuartz(row)"
          >恢复任务
        </el-button>
      </template>
    </avue-crud>
  </basic-container>
</template>
@@ -53,8 +80,11 @@
  getList,
  add,
  update,
  remove
} from "@/api/clock/clock";
  remove,
  stopQuartz,
  runQuartz,
  activateQuartz
} from "@/api/system/quartz";
import { mapGetters } from "vuex";
import { getToken } from "@/util/auth";
import Qs from "qs";
@@ -80,109 +110,108 @@
        searchSize: "mini",
        searchMenuSpan: 6,
        height: 583,
        menuWidth: 280,
        menuWidth: 420,
        border: true,
        align: "center",
        selection: true,
        column: [
          {
            label: "日期",
            prop: "releaseTimeRange",
            type: "datetime",
            format: "yyyy-MM-dd",
            valueFormat: "yyyy-MM-dd",
            searchRange: true,
            hide: true,
            addDisplay: false,
            editDisplay: false,
            viewDisplay: false,
            search: true,
            searchSpan: 5,
            rules: [
              {
                required: true,
                message: "请输入申请时间",
                trigger: "blur"
              }
            ]
          },
          {
            label: "姓名",
            prop: "realName",
            label: "任务名称",
            prop: "name",
            search: true,
            searchSpan: 4,
            labelWidth: 145,
            minWidth: 160,
            width: 220,
            span:12,
            rules: [
              {
                required: true,
                message: "请输入姓名",
                message: "请输入任务名称",
                trigger: "click"
              }
            ],
            overHidden: true
          },
          {
            label: "打卡时间",
            prop: "clockTime",
            format: "yyyy-MM-dd HH:mm:ss",
            valueFormat: "yyyy-MM-dd HH:mm:ss",
            span: 12,
            label: "方法名",
            prop: "methodName",
            search: true,
            searchSpan: 4,
            labelWidth: 145,
            disabled: false,
            width: 110,
            span:12,
            rules: [
              {
                required: true,
                message: "请输入打卡时间",
                trigger: "blur"
              }
            ]
          },
          {
            label: "打卡类型",
            prop: "clockType",
            span: 12,
            labelWidth: 145,
            disabled: false,
            type: "select",
            dataType: "number",
            search:true,
            searchSpan:4,
            dicData:[
              {
                label:"上班",
                value:1
              },
              {
                label:"下班",
                value:2
                message: "请输入方法名",
                trigger: "click"
              }
            ],
            overHidden: true
          },
          {
            label: "bean名称",
            prop: "beanName",
            search: true,
            searchSpan: 4,
            labelWidth: 145,
            width: 110,
            span:12,
            rules: [
              {
                required: true,
                message: "请输入打卡类型",
                trigger: "blur"
                message: "请输入bean名称",
                trigger: "click"
              }
            ]
            ],
            overHidden: true
          },
          {
            label: "表达式",
            prop: "cronExpression",
            search: true,
            searchSpan: 4,
            labelWidth: 145,
            width: 110,
            span:12,
            rules: [
              {
                required: true,
                message: "请输入表达式",
                trigger: "click"
              }
            ],
            overHidden: true
          },
          {
            label: "参数",
            prop: "params",
            labelWidth: 145,
            width: 110,
            span:12,
            overHidden: true
          },
          {
            label: "状态",
            prop: "attendanceType",
            prop: "status",
            span: 12,
            labelWidth: 145,
            disabled: false,
            search:true,
            searchSpan:4,
            type: "select",
            dicUrl:
              "/api/blade-system/dict-biz/dictionary?code=attendanceType",
            props: {
              label: "dictValue",
              value: "dictKey"
            },
            width:80,
            display:false,
            dicData:[
              {
                label:"正常",
                value: 1
              },
              {
                label:"暂停",
                value: 2
              }
            ],
            dataType: "number",
            rules: [
              {
@@ -191,7 +220,51 @@
                trigger: "blur"
              }
            ]
          },
          {
            label: "创建时间",
            prop: "createTime",
            format: "yyyy-MM-dd HH:mm:ss",
            valueFormat: "yyyy-MM-dd HH:mm:ss",
            span: 12,
            labelWidth: 145,
            disabled: false,
            width:140,
            display:false,
            rules: [
              {
                required: true,
                message: "请输入创建时间",
                trigger: "blur"
              }
            ]
          },
          {
            label: "近一次执行时间",
            prop: "activeTime",
            format: "yyyy-MM-dd HH:mm:ss",
            valueFormat: "yyyy-MM-dd HH:mm:ss",
            span: 12,
            labelWidth: 145,
            disabled: false,
            width:140,
            display:false,
            rules: [
              {
                required: true,
                message: "请输入近一次执行时间",
                trigger: "blur"
              }
            ]
          },
          {
            label: "任务说明",
            span: 24,
            type: "textarea",
            labelWidth: 145,
            prop: "remark"
          }
        ],
        ...this.$store.state.control.clearOtherBut
      }
@@ -203,10 +276,10 @@
    ...mapGetters(["userInfo", "permission"]),
    permissionList() {
      return {
        addBtn: this.vaildData(this.permission.clock_add, false),
        viewBtn: this.vaildData(this.permission.clock_view, false),
        delBtn: this.vaildData(this.permission.clock_delete, false),
        editBtn: this.vaildData(this.permission.clock_edit, false)
        addBtn: this.vaildData(this.permission.quartz_add, false),
        viewBtn: this.vaildData(null, false),
        delBtn: this.vaildData(this.permission.quartz_delete, false),
        editBtn: this.vaildData(this.permission.quartz_edit, false)
      };
    },
    ids() {
@@ -232,6 +305,7 @@
      this.onLoad(this.page, this.query);
    },
    rowSave(form, done, loading) {
      form['status'] = 1;
      add(form).then(res => {
        if (res.data.success) {
          this.$message({
@@ -285,7 +359,6 @@
        }
      )
        .then(() => {
          console.log(row);
          return remove(row.id);
        })
        .then(() => {
@@ -296,6 +369,69 @@
          });
        });
    },
    //任务恢复
    activateQuartz(row) {
      this.$confirm(
        "确定恢复当前任务?",
        {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
        }
      )
        .then(() => {
          return activateQuartz(row);
        })
        .then(() => {
          this.onLoad(this.page);
          this.$message({
            type: "success",
            message: "操作成功!"
          });
        });
    },
    //立即执行任务,不会改变任务状态,只执行一次
    runQuartz(row) {
      this.$confirm(
        "确定立即执行当前任务?",
        {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
        }
      )
        .then(() => {
          return runQuartz(row);
        })
        .then(() => {
          this.onLoad(this.page);
          this.$message({
            type: "success",
            message: "操作成功!"
          });
        });
    },
    //停止任务
    stopQuartz(row) {
      this.$confirm(
        "确定停止当前任务?",
        {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
        }
      )
        .then(() => {
          return stopQuartz(row);
        })
        .then(() => {
          this.onLoad(this.page);
          this.$message({
            type: "success",
            message: "操作成功!"
          });
        });
    },
    selectionChange(list) {
      this.selectionList = list;
    },