Procházet zdrojové kódy

添加自动报表运行频率

FinalYu před 1 rokem
rodič
revize
89513ebc90

+ 3 - 0
chuanyi_client2/src/api/datasource.js

@@ -579,6 +579,9 @@ export function getAllOkReportTable(params) {
     if (params.reportTableName) {
         uriParams += '&reportTableName=' + encodeURIComponent(params.reportTableName)
     }
+    if (params.isDelete == 0) {
+        uriParams += '&isDelete=0'
+    }
     return request({
         url: '/reportTable/getAllOkReportTable' + uriParams,
         headers: {

+ 30 - 8
chuanyi_client2/src/views/my_report/index.vue

@@ -140,6 +140,18 @@
           <el-button type="warning" size="mini" icon="el-icon-printer" @click="printExcel">打印</el-button>
           <el-button v-if="chooseMyReport && chooseMyReport.reportTableType != 0" type="info" size="mini" icon="el-icon-document" @click="historyReport">运行记录</el-button>
           <el-button type="danger" size="mini" icon="el-icon-circle-close" @click="cancelSaveReport">关闭</el-button>
+          <div style="float: right;" v-if="this.showReportTableType == 1 || this.showReportTableType == 0">
+            <label>频率:</label>
+            <el-select style="width: 90px;" size="mini" placeholder="请选择频率"
+                       v-model="reportInterval" @change="reportIntervalChange">
+              <el-option
+                  v-for="item in reportIntervalOptions"
+                  :key="item"
+                  :label="item + '秒'"
+                  :value="item">
+              </el-option>
+            </el-select>
+          </div>
         </el-row>
         <el-row v-if="btnType == 'showChild'" style="margin: 10px 20px;">
           <el-button type="primary" size="mini" icon="el-icon-download" @click="downloadReport">下载</el-button>
@@ -613,8 +625,10 @@ export default {
       reportPage: 1,
       reportLimit: 10,
       reportDataList: [],
-      reportInterval: 30 * 1000, // 手动报表更新数据频率
+      reportIntervalOptions: [5, 10, 15, 20, 25, 30],
+      reportInterval: 30, // 手动报表更新数据频率
       reportIntervalTag: null,
+      showReportTableType: null,
       reportRules: {
         reportTableName: [
           {required: true, message: '请输入报表名称', trigger: 'blur'}
@@ -710,6 +724,10 @@ export default {
     luckysheet.destroy()
   },
   methods: {
+    reportIntervalChange(val) {
+      this.reportInterval = val
+      this.pollingReportData()
+    },
     /** 实现类似刷新效果 */
     forceRefreshLuckysheet() {
       if (luckysheet) {
@@ -1524,18 +1542,22 @@ export default {
         }
         this.setLuckysheetStatus(_data, true, type, loading)
         // 手动报表,循环查询数据
-        if (_data.reportTableType == 0) {
-          this.reportIntervalTag = setInterval(() => {
-            this.reloadReportNode()
-          }, this.reportInterval)
-        } else {
-          if (this.reportIntervalTag) clearInterval(this.reportIntervalTag)
-        }
+        this.showReportTableType = _data.reportTableType
+        this.pollingReportData()
       }).catch((e) => {
         loading.close()
         showAlertWin(this, null, e)
       })
     },
+    /** 轮询更新报表数据 */
+    pollingReportData() {
+      if (this.reportIntervalTag) clearInterval(this.reportIntervalTag)
+      if (this.showReportTableType == 0 || this.showReportTableType == 1) {
+        this.reportIntervalTag = setInterval(() => {
+          this.reloadReportNode()
+        }, this.reportInterval * 1000)
+      }
+    },
     /** 报表reload事件 */
     reloadReportNode() {
       if (!this.chooseMyReport || !this.chooseMyReport.id) {

+ 24 - 17
chuanyi_client2/src/views/report_template/index.vue

@@ -508,22 +508,24 @@
             </el-date-picker>
           </el-form-item>
         </template>
-        <el-divider content-position="left">取值周期设置</el-divider>
-        <div class="cy-line">
-          <el-form-item label="时间单位:" prop="bucketType" v-if="templateReportType == 1">
-            <el-radio v-for="item in bucketTypeList"
-                      v-model="itemConditionForm.bucketType"
-                      :label="item.value">{{ item.label }}
-            </el-radio>
-          </el-form-item>
-          <el-form-item label="数据切换周期:" prop="bucketValue" v-if="templateReportType == 1">
-            <el-input-number label="请输入周期值"
-                             v-model="itemConditionForm.bucketValue"
-                             :precision="0"
-                             :min="1"
-                             :max="100"></el-input-number>
-          </el-form-item>
-        </div>
+        <template v-if="templateReportType == 1">
+          <el-divider content-position="left">取值周期设置</el-divider>
+          <div class="cy-line">
+            <el-form-item label="时间单位:" prop="bucketType">
+              <el-radio v-for="item in bucketTypeList"
+                        v-model="itemConditionForm.bucketType"
+                        :label="item.value">{{ item.label }}
+              </el-radio>
+            </el-form-item>
+            <el-form-item label="数据切换周期:" prop="bucketValue">
+              <el-input-number label="请输入周期值"
+                               v-model="itemConditionForm.bucketValue"
+                               :precision="0"
+                               :min="1"
+                               :max="100"></el-input-number>
+            </el-form-item>
+          </div>
+        </template>
       </el-form>
       <span slot='footer'>
         <el-button type="primary" @click="chooseDataItemConfigEvent" style="margin-top: 20px;">确定</el-button>
@@ -551,7 +553,12 @@
           </el-radio>
         </el-form-item>
         <el-form-item label="驱动值:">
-          <el-input v-model="modeValue" placeholder="请输入条件值"></el-input>
+          <el-input-number label="请输入条件值"
+                           v-model="modeValue"
+                           :precision="0"
+                           :controls="false"
+                           :min="1"
+                           :max="99999"></el-input-number>
         </el-form-item>
         <el-form-item label="选择驱动项:">
           <el-radio v-for="item in chooseGroupItemList"

+ 31 - 8
chuanyi_client2/src/views/run_config/index.vue

@@ -154,6 +154,18 @@
                      icon="el-icon-document" @click="historyReport">运行记录
           </el-button>
           <el-button type="danger" size="mini" icon="el-icon-circle-close" @click="cancelSaveReport">关闭</el-button>
+          <div style="float: right;" v-if="this.showReportTableType == 1 || this.showReportTableType == 0">
+            <label>频率:</label>
+            <el-select style="width: 90px;" size="mini" placeholder="请选择频率"
+                       v-model="reportInterval" @change="reportIntervalChange">
+              <el-option
+                  v-for="item in reportIntervalOptions"
+                  :key="item"
+                  :label="item + '秒'"
+                  :value="item">
+              </el-option>
+            </el-select>
+          </div>
         </el-row>
         <el-row v-if="btnType == 'showChild'" style="margin: 10px 20px;">
           <el-button type="primary" size="mini" icon="el-icon-download" @click="downloadReport">下载</el-button>
@@ -740,8 +752,10 @@ export default {
       reportPage: 1,
       reportLimit: 10,
       reportDataList: [],
-      reportInterval: 30 * 1000, // 手动报表更新数据频率
+      reportIntervalOptions: [5, 10, 15, 20, 25, 30],
+      reportInterval: 30, // 手动报表更新数据频率
       reportIntervalTag: null,
+      showReportTableType: null,
       reportRules: {
         reportTableName: [
           {required: true, message: '请输入报表名称', trigger: 'blur'}
@@ -837,6 +851,10 @@ export default {
     luckysheet.destroy()
   },
   methods: {
+    reportIntervalChange(val) {
+      this.reportInterval = val
+      this.pollingReportData()
+    },
     /** 实现类似刷新效果 */
     forceRefreshLuckysheet() {
       if (luckysheet) {
@@ -1512,6 +1530,7 @@ export default {
       if (this.searchTxt && this.searchTxt.trim()) {
         params.reportTableName = this.searchTxt
       }
+      params.isDelete = 0
       getAllOkReportTable(params).then(res => {
         loading.close()
         if (!res || !res.data) {
@@ -1725,18 +1744,22 @@ export default {
         }
         this.setLuckysheetStatus(_data, true, type, loading)
         // 手动报表,循环查询数据
-        if (_data.reportTableType == 0) {
-          this.reportIntervalTag = setInterval(() => {
-            this.reloadReportNode()
-          }, this.reportInterval)
-        } else {
-          if (this.reportIntervalTag) clearInterval(this.reportIntervalTag)
-        }
+        this.showReportTableType = _data.reportTableType
+        this.pollingReportData()
       }).catch((e) => {
         loading.close()
         showAlertWin(this, null, e)
       })
     },
+    /** 轮询更新报表数据 */
+    pollingReportData() {
+      if (this.reportIntervalTag) clearInterval(this.reportIntervalTag)
+      if (this.showReportTableType == 0 || this.showReportTableType == 1) {
+        this.reportIntervalTag = setInterval(() => {
+          this.reloadReportNode()
+        }, this.reportInterval * 1000)
+      }
+    },
     /** 报表reload事件 */
     reloadReportNode() {
       if (!this.chooseMyReport || !this.chooseMyReport.id) {