b4951a1ad9f8b4ddb06bc4354353a17c.json 12 KB

1
  1. {"remainingRequest":"D:\\front\\item\\zyAdmin\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\front\\item\\zyAdmin\\src\\pages\\system\\crontab\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\front\\item\\zyAdmin\\src\\pages\\system\\crontab\\index.vue","mtime":1761614939072},{"path":"D:\\front\\item\\zyAdmin\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1761614927801},{"path":"D:\\front\\item\\zyAdmin\\node_modules\\babel-loader\\lib\\index.js","mtime":1761614927320},{"path":"D:\\front\\item\\zyAdmin\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1761614927801},{"path":"D:\\front\\item\\zyAdmin\\node_modules\\vue-loader\\lib\\index.js","mtime":1761614937402}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:DQppbXBvcnQgeyB0aW1lckluZGV4LCBzaG93VGltZXIgfSBmcm9tICdAL2FwaS9zeXN0ZW0nOw0KaW1wb3J0IGNyZWF0VGFzayBmcm9tICcuL2NyZWF0ZU1vZGFsLnZ1ZSc7DQppbXBvcnQgc2V0dGluZyBmcm9tICdAL3NldHRpbmcnOw0KZXhwb3J0IGRlZmF1bHQgew0KICBuYW1lOiAnc3lzdGVtX2Nyb250YWInLA0KICBjb21wb25lbnRzOiB7IGNyZWF0VGFzayB9LA0KICBkYXRhKCkgew0KICAgIHJldHVybiB7DQogICAgICBsb2FkaW5nOiBmYWxzZSwNCiAgICAgIHRhYmxlRGF0YTogW10sDQogICAgICBwYWdlOiAxLA0KICAgICAgbGltaXQ6IDE1LA0KICAgICAgdG90YWw6IDEsDQogICAgICBhcGlCYXNlVVJMOiAnJywNCiAgICAgIGhlYWRlckxpc3Q6IFsNCiAgICAgICAgeyBsYWJlbDogJ+ezu+e7n+S7u+WKoScsIHZhbHVlOiAnMCcgfSwNCiAgICAgICAgeyBsYWJlbDogJ+iHquWumuS5ieS7u+WKoScsIHZhbHVlOiAnMScgfSwNCiAgICAgIF0sDQogICAgICBjdXJyZW50VGFiOiAnMCcsDQogICAgfTsNCiAgfSwNCiAgY3JlYXRlZCgpIHsNCiAgICB0aGlzLmFwaUJhc2VVUkwgPSBzZXR0aW5nLmFwaUJhc2VVUkwucmVwbGFjZSgvYWRtaW5hcGkvLCAnJyk7DQogICAgdGhpcy5nZXRMaXN0KCk7DQogIH0sDQogIG1ldGhvZHM6IHsNCiAgICB0YXNrVHJpcChyb3cpIHsNCiAgICAgIHN3aXRjaCAocm93LnR5cGUpIHsNCiAgICAgICAgY2FzZSAxOg0KICAgICAgICAgIHJldHVybiBg5q+P6ZqUJHtyb3cuc2Vjb25kfeenkuaJp+ihjOS4gOasoWA7DQogICAgICAgIGNhc2UgMjoNCiAgICAgICAgICByZXR1cm4gYOavj+malCR7cm93Lm1pbnV0ZX3liIbpkp/miafooYzkuIDmrKFgOw0KICAgICAgICBjYXNlIDM6DQogICAgICAgICAgcmV0dXJuIGDmr4/pmpQke3Jvdy5ob3VyfeWwj+aXtuaJp+ihjOS4gOasoWA7DQogICAgICAgIGNhc2UgNDoNCiAgICAgICAgICByZXR1cm4gYOavj+malCR7cm93LmRheX3lpKnmiafooYzkuIDmrKFgOw0KICAgICAgICBjYXNlIDU6DQogICAgICAgICAgcmV0dXJuIGDmr4/lpKkke3Jvdy5ob3VyfeaXtiR7cm93Lm1pbnV0ZX3liIYke3Jvdy5zZWNvbmR956eS5omn6KGM5LiA5qyhYDsNCiAgICAgICAgY2FzZSA2Og0KICAgICAgICAgIHJldHVybiBg5q+P5Liq5pif5pyfJHtyb3cud2Vla33nmoQke3Jvdy5ob3VyfeaXtiR7cm93Lm1pbnV0ZX3liIYke3Jvdy5zZWNvbmR956eS5omn6KGM5LiA5qyhYDsNCiAgICAgICAgY2FzZSA3Og0KICAgICAgICAgIHJldHVybiBg5q+P5pyIJHtyb3cuZGF5feaXpeeahCR7cm93LmhvdXJ95pe2JHtyb3cubWludXRlfeWIhiR7cm93LnNlY29uZH3np5LmiafooYzkuIDmrKFgOw0KICAgICAgICBjYXNlIDg6DQogICAgICAgICAgcmV0dXJuIGDmr4/lubQke3Jvdy5tb250aH3mnIgke3Jvdy5kYXl95pel55qEJHtyb3cuaG91cn3ml7Yke3Jvdy5taW51dGV95YiGJHtyb3cuc2Vjb25kfeenkuaJp+ihjOS4gOasoWA7DQogICAgICB9DQogICAgfSwNCiAgICAvLyDliJfooagNCiAgICBnZXRMaXN0KCkgew0KICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTsNCiAgICAgIHRpbWVySW5kZXgoew0KICAgICAgICBwYWdlOiB0aGlzLnBhZ2UsDQogICAgICAgIGxpbWl0OiB0aGlzLmxpbWl0LA0KICAgICAgICBjdXN0b206IHRoaXMuY3VycmVudFRhYiA9PT0gJzEnID8gMSA6IDAsDQogICAgICB9KQ0KICAgICAgICAudGhlbigocmVzKSA9PiB7DQogICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7DQogICAgICAgICAgbGV0IHsgY291bnQsIGxpc3QgfSA9IHJlcy5kYXRhOw0KICAgICAgICAgIHRoaXMudG90YWwgPSBjb3VudDsNCiAgICAgICAgICB0aGlzLnRhYmxlRGF0YSA9IGxpc3Q7DQogICAgICAgIH0pDQogICAgICAgIC5jYXRjaCgocmVzKSA9PiB7DQogICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7DQogICAgICAgICAgdGhpcy4kbWVzc2FnZS5lcnJvcihyZXMubXNnKTsNCiAgICAgICAgfSk7DQogICAgfSwNCiAgICBhZGRUYXNrKCkgew0KICAgICAgdGhpcy4kcmVmcy5hZGRUYXNrLnRpbWVySW5mbygwKTsNCiAgICB9LA0KICAgIGVkaXQoaWQpIHsNCiAgICAgIHRoaXMuJHJlZnMuYWRkVGFzay50aW1lckluZm8oaWQpOw0KICAgIH0sDQogICAgLy8g5Yig6ZmkDQogICAgaGFuZGxlRGVsZXRlKHJvdywgdGl0LCBudW0pIHsNCiAgICAgIGxldCBkZWxmcm9tRGF0YSA9IHsNCiAgICAgICAgdGl0bGU6IHRpdCwNCiAgICAgICAgbnVtOiBudW0sDQogICAgICAgIHVybDogYHN5c3RlbS9jcm9udGFiL2RlbC8ke3Jvdy5pZH1gLA0KICAgICAgICBtZXRob2Q6ICdkZWxldGUnLA0KICAgICAgICBpZHM6ICcnLA0KICAgICAgfTsNCiAgICAgIHRoaXMuJG1vZGFsU3VyZShkZWxmcm9tRGF0YSkNCiAgICAgICAgLnRoZW4oKHJlcykgPT4gew0KICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uuc3VjY2VzcyhyZXMubXNnKTsNCiAgICAgICAgICB0aGlzLmdldExpc3QoKTsNCiAgICAgICAgfSkNCiAgICAgICAgLmNhdGNoKChyZXMpID0+IHsNCiAgICAgICAgICB0aGlzLiRtZXNzYWdlLmVycm9yKHJlcy5tc2cpOw0KICAgICAgICB9KTsNCiAgICB9LA0KICAgIC8vIOaYr+WQpuW8gOWQrw0KICAgIGhhbmRsZUNoYW5nZSh7IGlkLCBpc19vcGVuIH0pIHsNCiAgICAgIHNob3dUaW1lcihpZCwgaXNfb3BlbikNCiAgICAgICAgLnRoZW4oKHJlcykgPT4gew0KICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uuc3VjY2VzcyhyZXMubXNnKTsNCiAgICAgICAgICB0aGlzLmdldExpc3QoKTsNCiAgICAgICAgfSkNCiAgICAgICAgLmNhdGNoKChyZXMpID0+IHsNCiAgICAgICAgICB0aGlzLiRtZXNzYWdlLmVycm9yKHJlcy5tc2cpOw0KICAgICAgICB9KTsNCiAgICB9LA0KICB9LA0KfTsNCg=="},{"version":3,"sources":["index.vue"],"names":[],"mappings":";AAgFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"index.vue","sourceRoot":"src/pages/system/crontab","sourcesContent":["<template>\r\n <div>\r\n <el-card :bordered=\"false\" shadow=\"never\" class=\"ivu-mt\" :body-style=\"{ padding: '0 20px' }\">\r\n <div>\r\n <el-tabs v-model=\"currentTab\" @tab-click=\"getList\">\r\n <el-tab-pane\r\n :label=\"item.label\"\r\n :name=\"item.value.toString()\"\r\n v-for=\"(item, index) in headerList\"\r\n :key=\"index\"\r\n />\r\n </el-tabs>\r\n </div>\r\n </el-card>\r\n <el-card :bordered=\"false\" shadow=\"never\">\r\n <el-alert type=\"warning\" :closable=\"false\">\r\n <template slot=\"title\">\r\n 启动定时任务两种方式:<br />\r\n 1、使用命令启动:php think timer start\r\n --d;如果更改了执行周期、编辑是否开启、删除定时任务需要重新启动下定时任务确保生效;<br />\r\n 2、使用接口触发定时任务,建议每分钟调用一次,接口地址 {{ apiBaseURL }}api/crontab/run <br />\r\n </template>\r\n </el-alert>\r\n <el-button v-if=\"currentTab === '1'\" type=\"primary\" v-db-click @click=\"addTask\" class=\"mt14\"\r\n >添加定时任务</el-button\r\n >\r\n <el-table :data=\"tableData\" v-loading=\"loading\" class=\"ivu-mt\">\r\n <el-table-column label=\"标题\" min-width=\"150\">\r\n <template slot-scope=\"scope\">\r\n <span>{{ scope.row.name }}</span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"任务说明\" min-width=\"130\">\r\n <template slot-scope=\"scope\">\r\n <span>{{ scope.row.content }}</span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"执行周期\" min-width=\"130\">\r\n <template slot-scope=\"scope\">\r\n <span>{{ taskTrip(scope.row) }}</span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"是否开启\" min-width=\"130\">\r\n <template slot-scope=\"scope\">\r\n <el-switch\r\n class=\"defineSwitch\"\r\n :active-value=\"1\"\r\n :inactive-value=\"0\"\r\n v-model=\"scope.row.is_open\"\r\n size=\"large\"\r\n @change=\"handleChange(scope.row)\"\r\n active-text=\"开启\"\r\n inactive-text=\"关闭\"\r\n >\r\n </el-switch>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"操作\" width=\"100\">\r\n <template slot-scope=\"scope\">\r\n <a v-db-click @click=\"edit(scope.row.id)\">编辑</a>\r\n <el-divider direction=\"vertical\" v-if=\"currentTab === '1'\"></el-divider>\r\n <a\r\n v-if=\"currentTab === '1'\"\r\n v-permission=\"'seckill'\"\r\n v-db-click\r\n @click=\"handleDelete(scope.row, '删除定时任务', scope.$index)\"\r\n >删除</a\r\n >\r\n </template>\r\n </el-table-column>\r\n </el-table>\r\n <div class=\"acea-row row-right page\">\r\n <pagination v-if=\"total\" :total=\"total\" :page.sync=\"page\" :limit.sync=\"limit\" @pagination=\"getList\" />\r\n </div>\r\n <creatTask ref=\"addTask\" :currentTab=\"currentTab\" @submitAsk=\"getList\"></creatTask>\r\n </el-card>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { timerIndex, showTimer } from '@/api/system';\r\nimport creatTask from './createModal.vue';\r\nimport setting from '@/setting';\r\nexport default {\r\n name: 'system_crontab',\r\n components: { creatTask },\r\n data() {\r\n return {\r\n loading: false,\r\n tableData: [],\r\n page: 1,\r\n limit: 15,\r\n total: 1,\r\n apiBaseURL: '',\r\n headerList: [\r\n { label: '系统任务', value: '0' },\r\n { label: '自定义任务', value: '1' },\r\n ],\r\n currentTab: '0',\r\n };\r\n },\r\n created() {\r\n this.apiBaseURL = setting.apiBaseURL.replace(/adminapi/, '');\r\n this.getList();\r\n },\r\n methods: {\r\n taskTrip(row) {\r\n switch (row.type) {\r\n case 1:\r\n return `每隔${row.second}秒执行一次`;\r\n case 2:\r\n return `每隔${row.minute}分钟执行一次`;\r\n case 3:\r\n return `每隔${row.hour}小时执行一次`;\r\n case 4:\r\n return `每隔${row.day}天执行一次`;\r\n case 5:\r\n return `每天${row.hour}时${row.minute}分${row.second}秒执行一次`;\r\n case 6:\r\n return `每个星期${row.week}的${row.hour}时${row.minute}分${row.second}秒执行一次`;\r\n case 7:\r\n return `每月${row.day}日的${row.hour}时${row.minute}分${row.second}秒执行一次`;\r\n case 8:\r\n return `每年${row.month}月${row.day}日的${row.hour}时${row.minute}分${row.second}秒执行一次`;\r\n }\r\n },\r\n // 列表\r\n getList() {\r\n this.loading = true;\r\n timerIndex({\r\n page: this.page,\r\n limit: this.limit,\r\n custom: this.currentTab === '1' ? 1 : 0,\r\n })\r\n .then((res) => {\r\n this.loading = false;\r\n let { count, list } = res.data;\r\n this.total = count;\r\n this.tableData = list;\r\n })\r\n .catch((res) => {\r\n this.loading = false;\r\n this.$message.error(res.msg);\r\n });\r\n },\r\n addTask() {\r\n this.$refs.addTask.timerInfo(0);\r\n },\r\n edit(id) {\r\n this.$refs.addTask.timerInfo(id);\r\n },\r\n // 删除\r\n handleDelete(row, tit, num) {\r\n let delfromData = {\r\n title: tit,\r\n num: num,\r\n url: `system/crontab/del/${row.id}`,\r\n method: 'delete',\r\n ids: '',\r\n };\r\n this.$modalSure(delfromData)\r\n .then((res) => {\r\n this.$message.success(res.msg);\r\n this.getList();\r\n })\r\n .catch((res) => {\r\n this.$message.error(res.msg);\r\n });\r\n },\r\n // 是否开启\r\n handleChange({ id, is_open }) {\r\n showTimer(id, is_open)\r\n .then((res) => {\r\n this.$message.success(res.msg);\r\n this.getList();\r\n })\r\n .catch((res) => {\r\n this.$message.error(res.msg);\r\n });\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.ivu-mt {\r\n padding-top: 10px;\r\n}\r\n</style>\r\n"]}]}