edit.php 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. <div id="app" v-cloak>
  2. <el-card shadow="never" style="border:0" class="box-card" body-style="background-color: #f3f3f3;padding: 20px 0 0;" class="box-card" v-loading="cardLoading">
  3. <div slot="header">
  4. <div flex="cross:center box:first">
  5. <div><span @click="$navigate({r:'admin/task/index'})" class="text">定时任务列表</span>/添加定时任务</div>
  6. </div>
  7. </div>
  8. <div class="form-body">
  9. <el-form :model="ruleForm" :rules="rules" ref="ruleForm" size="mini" label-width="150px" class="demo-ruleForm">
  10. <el-form-item label="脚本类型" prop="type">
  11. <el-radio v-model="ruleForm.type" :label="1">shell脚本</el-radio>
  12. <el-radio v-model="ruleForm.type" :label="2">站内脚本</el-radio>
  13. <el-radio v-model="ruleForm.type" :label="3">访问URL</el-radio>
  14. <p class="tips-text">任务类型包含以下部分:Shell脚本、站内脚本、访问URL</p>
  15. </el-form-item>
  16. <el-form-item label="任务名称" prop="name">
  17. <el-input style="width: 500px;" maxlength="40" show-word-limit v-model="ruleForm.name"></el-input>
  18. </el-form-item>
  19. <el-form-item label="任务执行规则" prop="rule">
  20. <el-input style="width: 500px;" v-model="ruleForm.rule"></el-input>
  21. <p class="tips-text">crontab格式,支持秒、分、时、日、月、周时间定义</p>
  22. <pre class="tips-text">
  23. * 0 1 2 3 4 5
  24. * * * * * * *
  25. * | | | | | +----- day of week (0 - 6) (Sunday=0)
  26. * | | | | +----- month (1 - 12)
  27. * | | | +------- day of month (1 - 31)
  28. * | | +--------- hour (0 - 23)
  29. * | +----------- min (0 - 59)
  30. * +------------- sec (0-59)
  31. </pre>
  32. </el-form-item>
  33. <el-form-item label="状态" prop="status">
  34. <el-switch v-model="ruleForm.status" :active-value="1" :inactive-value="0"></el-switch>
  35. </el-form-item>
  36. <el-form-item label="是否报警" prop="is_warning">
  37. <el-switch v-model="ruleForm.is_warning" :active-value="1" :inactive-value="0"></el-switch>
  38. </el-form-item>
  39. <el-form-item label="执行命令" prop="command" v-if="ruleForm.type == 1 || ruleForm.type == 2">
  40. <el-input type="textarea" style="width: 500px;" rows="4" v-model="ruleForm.command" maxlength="500" show-word-limit></el-input>
  41. </el-form-item>
  42. <el-form-item label="url地址" prop="command" v-if="ruleForm.type == 3">
  43. <el-input style="width: 500px;" type="url" v-model="ruleForm.command"></el-input>
  44. <p class="tips-text">地址以http或https开头</p>
  45. </el-form-item>
  46. </el-form>
  47. <div class="bottom-btns">
  48. <el-button size="mini" type="primary" @click="submit()">保存</el-button>
  49. </div>
  50. </div>
  51. </el-card>
  52. </div>
  53. <script>
  54. const app = new Vue({
  55. el: '#app',
  56. data() {
  57. return {
  58. btnLoading:false,
  59. cardLoading: false,
  60. ruleForm: {
  61. id: 0,
  62. name:'',
  63. type:1,
  64. status:1,
  65. is_warning:0,
  66. command:'',
  67. rule:''
  68. },
  69. rules: {
  70. name: [{
  71. required: true,
  72. message: '请输入任务名称',
  73. trigger: 'blur'
  74. }, ],
  75. rule: [{
  76. required: true,
  77. message: '任务执行规则不能为空',
  78. trigger: 'blur'
  79. }, ],
  80. command: [{
  81. required: true,
  82. message: '执行命令不能为空',
  83. trigger: 'blur'
  84. }, ],
  85. }
  86. };
  87. },
  88. created() {
  89. },
  90. mounted: function() {
  91. let id = getQuery('id');
  92. if (id) {
  93. this.getCrontabInfo(id);
  94. }
  95. },
  96. methods: {
  97. submit() {
  98. this.$refs['ruleForm'].validate((valid) => {
  99. let self = this;
  100. if (valid) {
  101. self.btnLoading = true;
  102. request({
  103. params: {
  104. r: 'admin/task/edit'
  105. },
  106. method: 'post',
  107. data: self.ruleForm,
  108. }).then(e => {
  109. self.btnLoading = false;
  110. if (e.data.code == 0) {
  111. self.$message.success(e.data.msg);
  112. navigateTo({
  113. r: 'admin/task/index'
  114. })
  115. } else {
  116. self.$message.error(e.data.msg);
  117. }
  118. }).catch(e => {
  119. self.$message.error(e.data.msg);
  120. self.btnLoading = false;
  121. });
  122. } else {
  123. console.log('error submit!!');
  124. return false;
  125. }
  126. });
  127. },
  128. getCrontabInfo(id) {
  129. let self = this;
  130. self.cardLoading = true;
  131. request({
  132. params: {
  133. r: 'admin/task/edit',
  134. id:id,
  135. },
  136. method: 'get'
  137. }).then(e => {
  138. self.cardLoading = false;
  139. if (e.data.code == 0) {
  140. self.ruleForm = e.data.data;
  141. } else {
  142. self.$message.error(e.data.msg);
  143. }
  144. }).catch(e => {
  145. self.cardLoading = false;
  146. self.$message.error(e);
  147. });
  148. }
  149. }
  150. });
  151. </script>