| 1 |
- {"remainingRequest":"D:\\front\\item\\zyAdmin\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\front\\item\\zyAdmin\\src\\pages\\system\\crontab\\createModal.vue?vue&type=style&index=0&id=a9f96f26&lang=scss&scoped=true","dependencies":[{"path":"D:\\front\\item\\zyAdmin\\src\\pages\\system\\crontab\\createModal.vue","mtime":1761614939071},{"path":"D:\\front\\item\\zyAdmin\\node_modules\\css-loader\\index.js","mtime":1761614929364},{"path":"D:\\front\\item\\zyAdmin\\node_modules\\vue-loader\\lib\\loaders\\stylePostLoader.js","mtime":1761614937403},{"path":"D:\\front\\item\\zyAdmin\\node_modules\\postcss-loader\\src\\index.js","mtime":1761614935133},{"path":"D:\\front\\item\\zyAdmin\\node_modules\\sass-loader\\dist\\cjs.js","mtime":1761614936391},{"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:DQouZm9ybS1jYXJkIHsNCiAgbWFyZ2luLWJvdHRvbTogNzRweDsNCg0KICA6OnYtZGVlcCAuaXZ1LWNhcmQtYm9keSB7DQogICAgcGFkZGluZzogMzBweCAwOw0KICB9DQp9DQoucGItMjAgew0KICBwYWRkaW5nLWJvdHRvbTogMjBweDsNCn0NCi5idG4tY2FyZCB7DQogIHBvc2l0aW9uOiBmaXhlZDsNCiAgcmlnaHQ6IDA7DQogIGJvdHRvbTogMDsNCiAgbGVmdDogMjAwcHg7DQogIHotaW5kZXg6IDI7DQogIHRleHQtYWxpZ246IGNlbnRlcjsNCn0NCg0KLmlucHV0LW51bWJlci13cmFwcGVyIHsNCiAgcG9zaXRpb246IHJlbGF0aXZlOw0KICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7DQogIHdpZHRoOiAxMDAlOw0KICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOw0KICBsaW5lLWhlaWdodDogbm9ybWFsOw0KDQogIC5pdnUtaW5wdXQtbnVtYmVyIHsNCiAgICB3aWR0aDogMTAwJTsNCiAgICBwYWRkaW5nLXJpZ2h0OiAzNXB4Ow0KICB9DQoNCiAgOjp2LWRlZXAgLml2dS1pbnB1dC1udW1iZXItaGFuZGxlci13cmFwIHsNCiAgICByaWdodDogMzVweDsNCiAgfQ0KDQogIC5zdWZmaXggew0KICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsNCiAgICB0b3A6IDA7DQogICAgcmlnaHQ6IDA7DQogICAgei1pbmRleDogMTsNCiAgICB3aWR0aDogMzVweDsNCiAgICBoZWlnaHQ6IDEwMCU7DQogICAgdGV4dC1hbGlnbjogY2VudGVyOw0KICAgIGZvbnQtc2l6ZTogMTJweDsNCiAgICBsaW5lLWhlaWdodDogMzNweDsNCiAgICBjb2xvcjogIzMzMzMzMzsNCiAgfQ0KfQ0KDQoudHJpcCB7DQogIHBhZGRpbmctbGVmdDogMTVweDsNCiAgY29sb3I6ICNhYWE7DQp9DQo6OnYtZGVlcCAuZWwtaW5wdXQtbnVtYmVyX19pbmNyZWFzZSwNCjo6di1kZWVwIC5lbC1pbnB1dC1udW1iZXJfX2RlY3JlYXNlIHsNCiAgZGlzcGxheTogbm9uZTsNCn0NCi5tbDMwIHsNCiAgbWFyZ2luLWxlZnQ6IDMwcHg7DQp9DQouZGlhbG9nLWZvb3RlciB7DQogIC8vIOWbuuWumuWcqOW6lemDqA0KICBwb3NpdGlvbjogYWJzb2x1dGU7DQogIGJvdHRvbTogMDsNCiAgbGVmdDogMDsNCiAgcmlnaHQ6IDA7DQogIHotaW5kZXg6IDE7DQogIHBhZGRpbmc6IDEwcHggMjBweDsNCiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsNCiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlOGU4ZTg7DQogIGRpc3BsYXk6IGZsZXg7DQogIGp1c3RpZnktY29udGVudDogY2VudGVyOw0KfQ0KLm1vbmFjby1lZGl0b3Igew0KICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1wcmV2LWJvcmRlci1jb2xvci1iYXNlKTsNCiAgYm9yZGVyLXJhZGl1czogNHB4Ow0KICBoZWlnaHQ6IDQwMHB4Ow0KICBvdmVyZmxvdzogaGlkZGVuOw0KfQ0K"},{"version":3,"sources":["createModal.vue"],"names":[],"mappings":";AA2WA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;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":"createModal.vue","sourceRoot":"src/pages/system/crontab","sourcesContent":["<template>\r\n <div>\r\n <el-drawer\r\n :visible.sync=\"modal\"\r\n :title=\"formValidate.id ? '编辑定时任务' : '添加定时任务'\"\r\n size=\"1000px\"\r\n @closed=\"initData\"\r\n >\r\n <el-form v-if=\"modal\" class=\"pb-20\" ref=\"formValidate\" :model=\"formValidate\" label-width=\"97px\" label-colon>\r\n <el-form-item label=\"任务名称:\" v-if=\"currentTab === '1'\">\r\n <el-row :gutter=\"10\">\r\n <el-col :span=\"24\">\r\n <el-input v-model=\"formValidate.name\" type=\"text\" placeholder=\"请输入任务名称\"></el-input>\r\n </el-col>\r\n </el-row>\r\n </el-form-item>\r\n <el-form-item label=\"执行周期:\" required>\r\n <el-row :gutter=\"14\">\r\n <el-col :span=\"4\">\r\n <el-select v-model=\"formValidate.type\">\r\n <el-option\r\n v-for=\"item in typeList\"\r\n :key=\"item.value\"\r\n :value=\"item.value\"\r\n :label=\"item.name\"\r\n ></el-option>\r\n </el-select>\r\n </el-col>\r\n <el-col v-if=\"formValidate.type == 6\" :span=\"4\">\r\n <el-select v-model=\"formValidate.week\">\r\n <el-option v-for=\"item in weekList\" :key=\"item.value\" v-bind=\"item\"></el-option>\r\n </el-select>\r\n </el-col>\r\n <el-col v-if=\"[8].includes(formValidate.type)\" :span=\"4\">\r\n <div class=\"input-number-wrapper\">\r\n <el-input-number :controls=\"false\" v-model=\"formValidate.month\" :max=\"12\" :min=\"1\"></el-input-number>\r\n <span class=\"suffix\">月</span>\r\n </div>\r\n </el-col>\r\n <el-col v-if=\"[4, 7, 8].includes(formValidate.type)\" :span=\"4\">\r\n <div class=\"input-number-wrapper\">\r\n <el-input-number\r\n :controls=\"false\"\r\n v-model=\"formValidate.day\"\r\n :max=\"formValidate.type === 4 ? 10000 : 31\"\r\n :min=\"1\"\r\n ></el-input-number>\r\n <span class=\"suffix\">日</span>\r\n </div>\r\n </el-col>\r\n <el-col v-if=\"[3, 4, 5, 6, 7, 8].includes(formValidate.type)\" :span=\"4\">\r\n <div class=\"input-number-wrapper\">\r\n <el-input-number\r\n controls-position=\"right\"\r\n v-model=\"formValidate.hour\"\r\n :max=\"23\"\r\n :min=\"0\"\r\n ></el-input-number>\r\n <span class=\"suffix\">时</span>\r\n </div>\r\n </el-col>\r\n <el-col v-if=\"[2, 3, 4, 5, 6, 7, 8].includes(formValidate.type)\" :span=\"4\">\r\n <div class=\"input-number-wrapper\">\r\n <el-input-number\r\n controls-position=\"right\"\r\n v-model=\"formValidate.minute\"\r\n :max=\"formValidate.type === 2 ? 36000 : 59\"\r\n :min=\"0\"\r\n ></el-input-number>\r\n <span class=\"suffix\">分</span>\r\n </div>\r\n </el-col>\r\n <el-col v-if=\"[1, 5, 6, 7].includes(formValidate.type)\" :span=\"4\">\r\n <div class=\"input-number-wrapper\">\r\n <el-input-number\r\n controls-position=\"right\"\r\n v-model=\"formValidate.second\"\r\n :max=\"formValidate.type === 1 ? 36000 : 59\"\r\n :min=\"0\"\r\n ></el-input-number>\r\n <span class=\"suffix\">秒</span>\r\n </div>\r\n </el-col>\r\n </el-row>\r\n <el-row :gutter=\"12\">\r\n <div class=\"trip\">{{ trip }}</div>\r\n </el-row>\r\n </el-form-item>\r\n <el-form-item label=\"任务说明:\">\r\n <el-row :gutter=\"10\">\r\n <el-col :span=\"24\">\r\n <el-input\r\n v-model=\"formValidate.content\"\r\n type=\"textarea\"\r\n :autosize=\"{ minRows: 3, maxRows: 5 }\"\r\n placeholder=\"请输入任务说明\"\r\n ></el-input>\r\n </el-col>\r\n </el-row>\r\n </el-form-item>\r\n <el-form-item label=\"执行代码:\" v-if=\"currentTab === '1'\">\r\n <el-row :gutter=\"10\">\r\n <el-col :span=\"24\">\r\n <div ref=\"container\" id=\"container\" class=\"monaco-editor\"></div>\r\n </el-col>\r\n </el-row>\r\n </el-form-item>\r\n <el-form-item label=\"开发密码:\" v-if=\"currentTab === '1'\">\r\n <el-row :gutter=\"10\">\r\n <el-col :span=\"24\">\r\n <el-input\r\n v-model=\"formValidate.password\"\r\n type=\"password\"\r\n placeholder=\"请输入系统开发密码,开发密码在crmeb/config/filesystem.php中修改password\"\r\n ></el-input>\r\n </el-col>\r\n </el-row>\r\n </el-form-item>\r\n <el-form-item label=\"是否开启:\">\r\n <el-row :gutter=\"10\">\r\n <el-col :span=\"12\">\r\n <el-switch :active-value=\"1\" :inactive-value=\"0\" v-model=\"formValidate.is_open\" size=\"large\">\r\n <span slot=\"open\">开启</span>\r\n <span slot=\"close\">关闭</span>\r\n </el-switch>\r\n </el-col>\r\n </el-row>\r\n </el-form-item>\r\n </el-form>\r\n <span class=\"dialog-footer\">\r\n <el-button v-db-click @click=\"modal = false\">取 消</el-button>\r\n <el-button type=\"primary\" v-db-click @click=\"handleSubmit\">提 交</el-button>\r\n </span>\r\n </el-drawer>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport * as monaco from 'monaco-editor';\r\nimport { mapMutations } from 'vuex';\r\nimport { timerTask, timerInfo, saveTimer, updateTimer } from '@/api/system';\r\nexport default {\r\n props: {\r\n currentTab: {\r\n type: String,\r\n default: '0',\r\n },\r\n },\r\n data() {\r\n return {\r\n modal: false,\r\n typeList: [\r\n {\r\n name: '每隔N秒',\r\n value: 1,\r\n },\r\n {\r\n name: '每隔N分钟',\r\n value: 2,\r\n },\r\n {\r\n name: '每隔N小时',\r\n value: 3,\r\n },\r\n {\r\n name: '每隔N天',\r\n value: 4,\r\n },\r\n {\r\n name: '每天',\r\n value: 5,\r\n },\r\n {\r\n name: '每星期',\r\n value: 6,\r\n },\r\n {\r\n name: '每月',\r\n value: 7,\r\n },\r\n {\r\n name: '每年',\r\n value: 8,\r\n },\r\n ],\r\n task: {},\r\n loading: false,\r\n formValidate: {\r\n name: '',\r\n mark: 'customTimer', //键\r\n content: '',\r\n is_open: 0,\r\n type: 1,\r\n month: 1,\r\n week: 1,\r\n day: 1,\r\n hour: 1,\r\n minute: 1,\r\n second: 1,\r\n customCode: '',\r\n },\r\n trip: '',\r\n weekList: [\r\n { label: '周一', value: 1 },\r\n { label: '周二', value: 2 },\r\n { label: '周三', value: 3 },\r\n { label: '周四', value: 4 },\r\n { label: '周五', value: 5 },\r\n { label: '周六', value: 6 },\r\n { label: '周日', value: 7 },\r\n ],\r\n editor: '', //当前编辑器对象\r\n };\r\n },\r\n watch: {\r\n formValidate: {\r\n handler(nVal, oVal) {\r\n switch (nVal.type) {\r\n case 1:\r\n this.trip = `每隔${nVal.second}秒执行一次`;\r\n break;\r\n case 2:\r\n this.trip = `每隔${nVal.minute}分钟执行一次`;\r\n break;\r\n case 3:\r\n this.trip = `每隔${nVal.hour}小时的${nVal.minute}分执行一次`;\r\n break;\r\n case 4:\r\n this.trip = `每隔${nVal.day}天的${nVal.hour}时${nVal.minute}分执行一次`;\r\n break;\r\n case 5:\r\n this.trip = `每天${nVal.hour}时${nVal.minute}分${nVal.second}秒执行一次`;\r\n break;\r\n case 6:\r\n this.trip = `每个星期${nVal.week}的${nVal.hour}时${nVal.minute}分${nVal.second}秒执行一次`;\r\n break;\r\n case 7:\r\n this.trip = `每月${nVal.day}日的${nVal.hour}时${nVal.minute}分${nVal.second}秒执行一次`;\r\n break;\r\n case 8:\r\n this.trip = `每年${nVal.month}月${nVal.day}日的${nVal.hour}时${nVal.minute}分${nVal.second}秒执行一次`;\r\n break;\r\n }\r\n },\r\n immediate: true,\r\n deep: true,\r\n },\r\n },\r\n created() {\r\n this.timerTask();\r\n },\r\n methods: {\r\n ...mapMutations('admin/layout', ['setCopyrightShow']),\r\n modalOpen() {\r\n if (this.currentTab === '1') {\r\n this.initEditor();\r\n }\r\n },\r\n /**\r\n * 初始化编辑器\r\n */\r\n initEditor(conetnt = '') {\r\n try {\r\n let that = this;\r\n that.$nextTick(() => {\r\n // 初始化编辑器,确保dom已经渲染\r\n that.editor = monaco.editor.create(document.getElementById('container'), {\r\n value: conetnt, //编辑器初始显示文字\r\n language: 'php', //语言支持自行查阅demo\r\n automaticLayout: true, //自动布局\r\n theme: 'vs-dark', //官方自带三种主题vs, hc-black, or vs-dark\r\n foldingStrategy: 'indentation', // 代码可分小段折叠\r\n overviewRulerBorder: false, // 不要滚动条的边框\r\n minimap: { enabled: false },\r\n scrollbar: {\r\n vertical: 'hidden',\r\n horizontal: 'hidden',\r\n },\r\n wordWrap: 'on',\r\n autoIndent: true, // 自动布局\r\n tabSize: 4, // tab缩进长度\r\n autoClosingOvertype: 'always',\r\n readOnly: false,\r\n });\r\n });\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n },\r\n timerTask() {\r\n timerTask().then((res) => {\r\n this.task = res.data;\r\n });\r\n },\r\n initData(status) {\r\n this.formValidate = {\r\n name: '',\r\n mark: '',\r\n content: '',\r\n is_open: 0,\r\n type: 1,\r\n month: 1,\r\n week: 1,\r\n day: 1,\r\n hour: 1,\r\n minute: 1,\r\n second: 1,\r\n customCode: '',\r\n };\r\n this.modal = false;\r\n },\r\n timerInfo(id) {\r\n if (id) {\r\n timerInfo(id).then((res) => {\r\n this.modal = true;\r\n this.formValidate = res.data;\r\n this.initEditor(res.data.customCode || '');\r\n });\r\n } else {\r\n this.modal = true;\r\n this.initEditor(\r\n \"<?php\\n\\n//示例代码\\n\\n//直接写入数据库\\n\\\\think\\\\facade\\\\Db::name('cache')->insert(['key' => 'custom_timer_' . rand(), 'result' => rand(), 'expire_time' => 0]);\\n\\n//调用系统方法\\napp()->make(\\\\app\\\\services\\\\other\\\\CacheServices::class)->setDbCache('custom_timer_' . rand(), rand());\",\r\n );\r\n }\r\n },\r\n // 提交\r\n handleSubmit() {\r\n console.log(this.currentTab);\r\n if (this.currentTab === '1') {\r\n this.formValidate.customCode = this.editor.getValue();\r\n this.formValidate.mark = 'customTimer';\r\n }\r\n if (!this.formValidate.mark) {\r\n return this.$message.error({\r\n message: '请选择任务名称',\r\n onClose: () => {\r\n // this.loading = false;\r\n },\r\n });\r\n }\r\n this.saveTimer(this.formValidate);\r\n },\r\n taskChange(task) {\r\n // this.formValidate.mark = task.value;\r\n },\r\n saveTimer(data) {\r\n saveTimer(data)\r\n .then((res) => {\r\n this.$message.success({\r\n message: res.msg,\r\n });\r\n this.$emit('submitAsk');\r\n this.modal = false;\r\n })\r\n .catch((err) => {\r\n this.$message.error(err.msg);\r\n });\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.form-card {\r\n margin-bottom: 74px;\r\n\r\n ::v-deep .ivu-card-body {\r\n padding: 30px 0;\r\n }\r\n}\r\n.pb-20 {\r\n padding-bottom: 20px;\r\n}\r\n.btn-card {\r\n position: fixed;\r\n right: 0;\r\n bottom: 0;\r\n left: 200px;\r\n z-index: 2;\r\n text-align: center;\r\n}\r\n\r\n.input-number-wrapper {\r\n position: relative;\r\n display: inline-block;\r\n width: 100%;\r\n vertical-align: middle;\r\n line-height: normal;\r\n\r\n .ivu-input-number {\r\n width: 100%;\r\n padding-right: 35px;\r\n }\r\n\r\n ::v-deep .ivu-input-number-handler-wrap {\r\n right: 35px;\r\n }\r\n\r\n .suffix {\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n z-index: 1;\r\n width: 35px;\r\n height: 100%;\r\n text-align: center;\r\n font-size: 12px;\r\n line-height: 33px;\r\n color: #333333;\r\n }\r\n}\r\n\r\n.trip {\r\n padding-left: 15px;\r\n color: #aaa;\r\n}\r\n::v-deep .el-input-number__increase,\r\n::v-deep .el-input-number__decrease {\r\n display: none;\r\n}\r\n.ml30 {\r\n margin-left: 30px;\r\n}\r\n.dialog-footer {\r\n // 固定在底部\r\n position: absolute;\r\n bottom: 0;\r\n left: 0;\r\n right: 0;\r\n z-index: 1;\r\n padding: 10px 20px;\r\n background-color: #fff;\r\n border-top: 1px solid #e8e8e8;\r\n display: flex;\r\n justify-content: center;\r\n}\r\n.monaco-editor {\r\n border: 1px solid var(--prev-border-color-base);\r\n border-radius: 4px;\r\n height: 400px;\r\n overflow: hidden;\r\n}\r\n</style>\r\n"]}]}
|