Selaa lähdekoodia

增加OA定时任务报表

000766 2 vuotta sitten
vanhempi
commit
5954e86e7e
4 muutettua tiedostoa jossa 183 lisäystä ja 36 poistoa
  1. 139 7
      src/views/monitor/job/index.vue
  2. 16 0
      src/views/monitor/job/log.vue
  3. 2 2
      src/views/system/dict/index.vue
  4. 26 27
      vue.config.js

+ 139 - 7
src/views/monitor/job/index.vue

@@ -88,6 +88,17 @@
           v-hasPermi="['monitor:job:query']"
         >日志</el-button>
       </el-col>
+
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-s-operation"
+          size="mini"
+          @click="handleJobReport"
+          v-hasPermi="['monitor:job:query']"
+        >报表</el-button>
+      </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
@@ -137,6 +148,9 @@
                 v-hasPermi="['monitor:job:query']">任务详细</el-dropdown-item>
               <el-dropdown-item command="handleJobLog" icon="el-icon-s-operation"
                 v-hasPermi="['monitor:job:query']">调度日志</el-dropdown-item>
+
+              <el-dropdown-item command="handleJobReport" icon="el-icon-s-operation"
+                                v-hasPermi="['monitor:job:query']">调度报表</el-dropdown-item>
             </el-dropdown-menu>
           </el-dropdown>
         </template>
@@ -161,6 +175,24 @@
             </el-form-item>
           </el-col>
           <el-col :span="12">
+            <el-form-item label="员工工号" prop="empno">
+              <el-input v-model="form.empno" placeholder="请输入员工工号" />
+            </el-form-item>
+          </el-col>
+
+          <el-col :span="12">
+            <el-form-item label="任务内容" prop="cont" >
+              <el-input v-model="form.cont" placeholder="请输入任务内容" />
+            </el-form-item>
+          </el-col>
+
+          <el-col :span="12">
+            <el-form-item label="超时时间" prop="timeout" >
+              <el-input v-model="form.timeout" placeholder="请输入超时时间" />
+            </el-form-item>
+          </el-col>
+
+          <el-col :span="12">
             <el-form-item label="任务分组" prop="jobGroup">
               <el-select v-model="form.jobGroup" placeholder="请选择任务分组">
                 <el-option
@@ -172,8 +204,53 @@
               </el-select>
             </el-form-item>
           </el-col>
-          <el-col :span="24">
-            <el-form-item prop="invokeTarget">
+          <el-col :span="12">
+            <el-form-item label="任务大类" prop="jobType">
+              <el-select v-model="form.jobType" placeholder="请选择任务大类">
+                <el-option
+                  v-for="dict in dict.type.sys_oa"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="dict.value"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="任务小类" prop="jobTypeS">
+              <el-select v-model="form.jobTypeS" placeholder="请选择任务小类">
+                <el-option
+                  v-for="dict in dict.type.sys_oa_s"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="dict.value"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+
+          <el-col :span="12">
+            <el-form-item label="工作日调度" prop="dispc">
+              <el-select v-model="form.dispc" placeholder="请选择">
+                <el-option
+                  v-for="dict in dict.type.sys_yes_no"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="dict.value"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+
+          <el-col :span="12">
+            <el-form-item label="预计时长(小时)" prop="duration">
+              <el-input v-model="form.duration" placeholder="请输入时长" />
+            </el-form-item>
+          </el-col>
+
+
+          <el-col :span="24"   >
+            <el-form-item prop="invokeTarget"  readonly >
               <span slot="label">
                 调用方法
                 <el-tooltip placement="top">
@@ -185,7 +262,7 @@
                   <i class="el-icon-question"></i>
                 </el-tooltip>
               </span>
-              <el-input v-model="form.invokeTarget" placeholder="请输入调用目标字符串" />
+              <el-input v-model="invokeTarget" placeholder="请输入调用目标字符串" />
             </el-form-item>
           </el-col>
           <el-col :span="24">
@@ -297,9 +374,34 @@ import Crontab from '@/components/Crontab'
 export default {
   components: { Crontab },
   name: "Job",
-  dicts: ['sys_job_group', 'sys_job_status'],
+  dicts: ['sys_job_group', 'sys_job_status', 'sys_oa','sys_oa_s','sys_yes_no'],
   data() {
     return {
+      pickerOptions: {
+        shortcuts: [{
+          text: '今天',
+          onClick(picker) {
+            picker.$emit('pick', new Date());
+          }
+        }, {
+          text: '昨天',
+          onClick(picker) {
+            const date = new Date();
+            date.setTime(date.getTime() - 3600 * 1000 * 24);
+            picker.$emit('pick', date);
+          }
+        }, {
+          text: '一周前',
+          onClick(picker) {
+            const date = new Date();
+            date.setTime(date.getTime() - 3600 * 1000 * 24 * 7);
+            picker.$emit('pick', date);
+          }
+        }]
+      },
+      value1: '',
+      value2: '',
+      value3: '',
       // 遮罩层
       loading: true,
       // 选中数组
@@ -330,16 +432,23 @@ export default {
         pageSize: 10,
         jobName: undefined,
         jobGroup: undefined,
-        status: undefined
+        jobType: undefined,
+        jobTypeS: undefined,
+        dispc:undefined,
+        empno:undefined,
+        cont:undefined,
+        timeout:undefined,
+        status: undefined,
+        duration:undefined
       },
       // 表单参数
       form: {},
       // 表单校验
       rules: {
         jobName: [
-          { required: true, message: "任务名称不能为空", trigger: "blur" }
+          { required: true, message: "名称不能为空", trigger: "blur" }
         ],
-        invokeTarget: [
+         invokeTarget: [
           { required: true, message: "调用目标字符串不能为空", trigger: "blur" }
         ],
         cronExpression: [
@@ -348,6 +457,20 @@ export default {
       }
     };
   },
+  computed:{
+    invokeTarget:function (){
+      let white = ['jobName','empno','cont','timeout','jobGroup','jobType','jobTypeS','dispc','duration']
+      let param = ''
+      white.forEach((item,index)=>{
+        if(this.form[item])
+        index===white.length-1
+          ?param+=`'${this.form[item]}'`
+          :param+=`'${this.form[item]}',`
+      })
+      this.form.invokeTarget=`ryTask.tq(${param})`
+      return `ryTask.tq(${param})`
+    }
+  },
   created() {
     this.getList();
   },
@@ -412,6 +535,9 @@ export default {
         case "handleJobLog":
           this.handleJobLog(row);
           break;
+        case "handleJobReport":
+          this.handleJobReport(row);
+          break;
         default:
           break;
       }
@@ -456,6 +582,11 @@ export default {
       const jobId = row.jobId || 0;
       this.$router.push('/monitor/job-log/index/' + jobId)
     },
+    /** 任务日志列表查询 */
+    handleJobReport(row) {
+      const jobId = row.jobId || 0;
+      this.$router.push('/monitor/job-log/index/' + jobId)
+    },
     /** 新增按钮操作 */
     handleAdd() {
       this.reset();
@@ -510,4 +641,5 @@ export default {
     }
   }
 };
+
 </script>

+ 16 - 0
src/views/monitor/job/log.vue

@@ -104,6 +104,15 @@
     <el-table v-loading="loading" :data="jobLogList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
       <el-table-column label="日志编号" width="80" align="center" prop="jobLogId" />
+
+
+        <el-table-column label="员工工号" width="80" align="center" prop="enpno" />
+        <el-table-column label="任务大类" width="80" align="center" prop="jobType" />
+        <el-table-column label="任务小类" width="80" align="center" prop="jobTypeS" />
+        <el-table-column label="任务内容" width="80" align="center" prop="cont" />
+        <el-table-column label="超时时间" width="80" align="center" prop="timeout" />
+        <el-table-column label="预计时长" width="80" align="center" prop="duration" />
+
       <el-table-column label="任务名称" align="center" prop="jobName" :show-overflow-tooltip="true" />
       <el-table-column label="任务组名" align="center" prop="jobGroup" :show-overflow-tooltip="true">
         <template slot-scope="scope">
@@ -122,6 +131,12 @@
           <span>{{ parseTime(scope.row.createTime) }}</span>
         </template>
       </el-table-column>
+
+
+
+
+
+
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button
@@ -150,6 +165,7 @@
           <el-col :span="12">
             <el-form-item label="日志序号:">{{ form.jobLogId }}</el-form-item>
             <el-form-item label="任务名称:">{{ form.jobName }}</el-form-item>
+            <el-form-item label="员工工号:">{{ form.empno }}</el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="任务分组:">{{ form.jobGroup }}</el-form-item>

+ 2 - 2
src/views/system/dict/index.vue

@@ -192,7 +192,7 @@ import { listType, getType, delType, addType, updateType, refreshCache } from "@
 
 export default {
   name: "Dict",
-  dicts: ['sys_normal_disable'],
+  dicts: ['sys_normal_disable' ],
   data() {
     return {
       // 遮罩层
@@ -344,4 +344,4 @@ export default {
     }
   }
 };
-</script>
+</script>

+ 26 - 27
vue.config.js

@@ -37,8 +37,7 @@ module.exports = {
       // detail: https://cli.vuejs.org/config/#devserver-proxy
       [process.env.VUE_APP_BASE_API]: {
         // target: `http://172.16.100.107:8080/ruoyi-admin`, //生产
-        // target: `http://172.16.63.202:8000/drp-admin`, //测试
-        target: `http://172.16.13.47:8000/drp-admin`, //本地
+        target: ` http://172.16.13.77:8000/ruoyi-admin`, //本地
         changeOrigin: true,
         pathRewrite: {
           ['^' + process.env.VUE_APP_BASE_API]: ''
@@ -106,33 +105,33 @@ module.exports = {
             .end()
           config
             .optimization.splitChunks({
-              chunks: 'all',
-              cacheGroups: {
-                libs: {
-                  name: 'chunk-libs',
-                  test: /[\\/]node_modules[\\/]/,
-                  priority: 10,
-                  chunks: 'initial' // only package third parties that are initially dependent
-                },
-                elementUI: {
-                  name: 'chunk-elementUI', // split elementUI into a single package
-                  priority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or app
-                  test: /[\\/]node_modules[\\/]_?element-ui(.*)/ // in order to adapt to cnpm
-                },
-                commons: {
-                  name: 'chunk-commons',
-                  test: resolve('src/components'), // can customize your rules
-                  minChunks: 3, //  minimum common number
-                  priority: 5,
-                  reuseExistingChunk: true
-                }
+            chunks: 'all',
+            cacheGroups: {
+              libs: {
+                name: 'chunk-libs',
+                test: /[\\/]node_modules[\\/]/,
+                priority: 10,
+                chunks: 'initial' // only package third parties that are initially dependent
+              },
+              elementUI: {
+                name: 'chunk-elementUI', // split elementUI into a single package
+                priority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or app
+                test: /[\\/]node_modules[\\/]_?element-ui(.*)/ // in order to adapt to cnpm
+              },
+              commons: {
+                name: 'chunk-commons',
+                test: resolve('src/components'), // can customize your rules
+                minChunks: 3, //  minimum common number
+                priority: 5,
+                reuseExistingChunk: true
               }
-            })
+            }
+          })
           config.optimization.runtimeChunk('single'),
-          {
-            from: path.resolve(__dirname, './public/robots.txt'), //防爬虫文件
-            to: './' //到根目录下
-          }
+            {
+              from: path.resolve(__dirname, './public/robots.txt'), //防爬虫文件
+              to: './' //到根目录下
+            }
         }
       )
   }