Răsfoiți Sursa

Merge branch 'V0.0.4' of http://10.87.21.221:8000/jzyd_yyds/soc_web into V0.0.4

coys 1 an în urmă
părinte
comite
cedd3a647b

+ 28 - 0
src/api/evaluateTable/evaluateTable.js

@@ -15,5 +15,33 @@ export function getPlanList(query) {
     params: query,
   });
 }
+export function getEduPlanList(id) {
+  return request({
+    url: "core/plan/planList/"+ id,
+    method: 'get'
+  });
+}
+
+export function getEduReportData(query) {
+  return request({
+    url: '/core/eduTask/report',
+    method: 'post',
+    data: query
+  });
+}
 
+export function getDrillList(id) {
+  return request({
+    url: "core/drillPlan/planList/"+ id,
+    method: 'get'
+  });
+}
+
+export function getDrillReportData(query) {
+  return request({
+    url: '/core/drill/task/report',
+    method: 'post',
+    data: query
+  });
+}
 

+ 311 - 0
src/views/core/reportForms/drill.vue

@@ -0,0 +1,311 @@
+<template>
+  <div class="app-container">
+    <el-row slot="rightBar">
+      <!--用户数据-->
+      <el-col>
+        <div class="main-right-box">
+          <!--    搜索条件    -->
+          <div class="main-search-box">
+            <!--    搜索条件    -->
+            <el-form
+              :model="queryParams"
+              ref="queryForm"
+              size="small"
+              :inline="true"
+              v-show="showSearch"
+
+            >
+              <el-form-item label="组织机构:" class="formTreeItem">
+                <tree-select
+                  v-model="queryParams.orgId"
+                  :options="deptOptions"
+                  :show-count="true"
+                  :normalizer="tenantIdnormalizer"
+                  :props="{ checkStrictly: true, label: 'name' }"
+                  placeholder="请选择归属机构"
+                  clearValueText="清除"
+                  :noChildrenText="''"
+                  @select="changeSelect"
+                  noOptionsText="没有数据"
+                  noResultsText="没有搜索结果"
+                />
+              </el-form-item>
+              <el-form-item label="培训任务名称:" label-width="50">
+                <el-select v-model="queryParams.planId" @change="changeHandler">
+                  <el-option
+                    v-for="item in options"
+                    :key="item.id"
+                    :label="item.name"
+                    :value="item.id"
+                  >
+                  </el-option>
+                </el-select>
+              </el-form-item>
+
+              <el-form-item class="searchTitle" label="任务时间">
+                <el-date-picker
+                  v-model="queryParams.range"
+                  key="monthrange"
+                  type="monthrange"
+                  :clearable="false"
+                />
+              </el-form-item>
+
+            </el-form>
+            <!-- 按纽    -->
+            <el-row :gutter="10" class="mb8">
+              <el-col :span="1.5">
+                <el-button
+                  type="primary"
+                  icon="el-icon-search"
+                  size="mini"
+                  @click="handleQuery"
+                >搜索
+                </el-button
+                >
+                <el-button type="primary" icon="el-icon-refresh" size="mini" @click="resetQuery"
+                >重置
+                </el-button
+                >
+                <el-button
+                  type="primary"
+                  icon="el-icon-download"
+                  size="mini"
+                  @click="handleExport"
+                >导出数据
+                </el-button>
+              </el-col>
+            </el-row>
+          </div>
+        </div>
+
+
+        <div
+          class="securityEquipmentMonitoringtable ml-4 flex-1"
+        >
+          <div class="title">演练统计报表</div>
+          <table ref="tb11" class="table-scroll">
+            <tr>
+              <th colspan="1" rowspan="1">序号</th>
+              <th colspan="1" rowspan="1">单位名称</th>
+              <th colspan="1" rowspan="1">应完成数</th>
+              <th colspan="1" rowspan="1">已完成数</th>
+              <th colspan="1" rowspan="1">评分</th>
+            </tr>
+
+            <tr v-for="(item, index) in targetList" :key="index">
+              <td>{{ index + 1 }}</td>
+              <td>{{ item.orgName }}</td>
+              <td>{{ item.shouldFinish }}</td>
+              <td>{{ item.finish }}</td>
+              <td>{{ item.score }}</td>
+            </tr>
+          </table>
+        </div>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+<script>
+import {mapGetters} from "vuex";
+import {getDrillList, getDrillReportData} from "@/api/evaluateTable/evaluateTable.js";
+import {deptTreeSelect} from "@/api/system/public";
+import OrgTree from "@/components/orgTree/orgQuerySelector.vue";
+import DataRangePicker from "@/components/dateTime/daterange.picker.vue";
+import dayjs from "dayjs";
+
+export default {
+  name: "DrillReport",
+
+  components: {OrgTree, DataRangePicker},
+  data() {
+    const {params, query} = this.$route;
+    return {
+      targetList: [],
+      loading: false,
+      options: [],
+      queryParams: {
+        orgId: null,
+        planId: "",
+        range: [new Date(), new Date()],
+        isWebSelect: 1,
+      },
+      // 显示搜索条件
+      showSearch: true,
+      deptOptions: [], //机构数组
+      selectedOrgName: null,
+    };
+  },
+  created() {
+    this.getDeptTree();
+    this.initPlanList();
+  },
+  watch: {
+    queryParams() {
+      this.getList();
+    },
+  },
+  mounted() {
+    if (this.deptOptions) {
+      this.queryParams.orgId = this.orgId;
+    }
+  },
+  computed: {
+    ...mapGetters(["orgId"]),
+  },
+  methods: {
+    changeHandler() {
+      // this.getList();
+    },
+    changeSelect(org) {
+      this.selectedOrgName = org.shortName
+
+      //this.getList();
+    },
+    /** 查询机构树数据 */
+    getDeptTree() {
+      deptTreeSelect().then((response) => {
+        this.deptOptions = response.data;
+        if (response.data.length > 0) {
+          this.selectedOrgName = response.data[0].shortName
+        }
+      });
+    },
+    /** 获取所有计划列表 */
+    initPlanList() {
+      getDrillList(this.$store.getters.orgId).then((res) => {
+        this.options = res.data;
+        this.queryParams.planId = res.data[0].id;
+        if (this.queryParams.orgId && this.queryParams.planId) {
+          this.getList();
+        }
+      });
+    },
+    /** treeSelect组件自定义数据*/
+    tenantIdnormalizer(node, instanceId) {
+      if (node.children && !node.children.length) {
+        delete node.children;
+      }
+      return {
+        id: node.id,
+        label: node.shortName,
+        children: node.children,
+      };
+    },
+    //获取列表
+    getList() {
+      this.loading = true;
+      getDrillReportData(this.queryParams).then((res) => {
+        let {code, data, msg} = res;
+        if (code == 200) {
+          if (data.length > 0) {
+            this.targetList = data || [];
+          } else {
+            this.$message.error("暂无数据")
+          }
+        }
+        this.loading = false;
+      });
+    },
+
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.$refs.Evaluate.show();
+    },
+    editHandler(row) {
+      this.$refs.Evaluate.show(row);
+    },
+
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.queryParams = {
+        orgId: this.orgId,
+        planId: this.options[0].id,
+      };
+
+      this.getList();
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download(
+        "core/drill/task/exportReport",
+        {
+          ...this.queryParams,
+        },
+        `${
+          this.selectedOrgName
+        }-${this.$tab.getCurrentTabName()}-${dayjs().format("YYYYMMDD")}.xlsx`
+      );
+    },
+  },
+};
+</script>
+<style lang="scss" scoped>
+::v-deep.formTreeItem {
+  .el-form-item__content {
+    width: 264px;
+  }
+}
+
+.securityEquipmentMonitoringtable {
+  background-color: #fff;
+
+  .table-scroll {
+    // table-layout:auto;
+
+    color: #000000;
+    min-width: 100%;
+    border-spacing: 0;
+    text-align: center;
+    border-collapse: collapse;
+    max-height: 500px;
+    overflow-y: auto;
+    font-family: "仿宋_GB2312";
+
+    .orgName {
+      min-width: 180px !important;
+      width: 180px !important;
+    }
+
+    tr th,
+    tr td {
+      height: 25px;
+      border: 1px solid rgb(0, 0, 0);
+      // min-width: 75px;
+    }
+
+    .jump {
+      color: #02a7f0;
+      text-decoration: underline;
+    }
+
+    .nojump {
+      color: #000000;
+      font-size: 10;
+      //font-weight: bold;
+    }
+
+    .greentd {
+      color: green;
+    }
+
+    .redtd {
+      color: red;
+    }
+  }
+}
+
+.title {
+  clear: both;
+  margin: auto;
+  text-align: center;
+  color: black;
+  font-size: x-large;
+  letter-spacing: 3px;
+  font-weight: bold;
+}
+</style>

+ 316 - 0
src/views/core/reportForms/eduTraining.vue

@@ -0,0 +1,316 @@
+<template>
+  <div class="app-container">
+    <el-row slot="rightBar">
+      <!--用户数据-->
+      <el-col>
+        <div class="main-right-box">
+          <!--    搜索条件    -->
+          <div class="main-search-box">
+            <!--    搜索条件    -->
+            <el-form
+              :model="queryParams"
+              ref="queryForm"
+              size="small"
+              :inline="true"
+              v-show="showSearch"
+
+            >
+              <el-form-item label="组织机构:" class="formTreeItem">
+                <tree-select
+                  v-model="queryParams.orgId"
+                  :options="deptOptions"
+                  :show-count="true"
+                  :normalizer="tenantIdnormalizer"
+                  :props="{ checkStrictly: true, label: 'name' }"
+                  placeholder="请选择归属机构"
+                  clearValueText="清除"
+                  :noChildrenText="''"
+                  @select="changeSelect"
+                  noOptionsText="没有数据"
+                  noResultsText="没有搜索结果"
+                />
+              </el-form-item>
+              <!--              <el-form-item label="受训机构">
+                              <org-tree
+                                v-model="queryParams.orgId"
+                                @defaultOrg="getDefaultOrg"
+                                @checkChange="checkChange"
+                                @click="clickTreeNode"
+                                :defaultCheckSub="false"
+                              ></org-tree>
+                            </el-form-item>-->
+              <el-form-item label="培训任务名称:" label-width="50">
+                <el-select v-model="queryParams.planId" @change="changeHandler">
+                  <el-option
+                    v-for="item in options"
+                    :key="item.id"
+                    :label="item.name"
+                    :value="item.id"
+                  >
+                  </el-option>
+                </el-select>
+              </el-form-item>
+
+              <el-form-item label="时间" prop="date">
+                <el-date-picker value-format='yyyy-MM-dd' v-model="queryParams.date"
+                                align="right" type="month" placeholder="请选择查询时间">
+                </el-date-picker>
+              </el-form-item>
+
+            </el-form>
+            <!-- 按纽    -->
+            <el-row :gutter="10" class="mb8">
+              <el-col :span="1.5">
+                <el-button
+                  type="primary"
+                  icon="el-icon-search"
+                  size="mini"
+                  @click="handleQuery"
+                >搜索
+                </el-button>
+                <el-button type="primary" icon="el-icon-refresh" size="mini" @click="resetQuery"
+                >重置
+                </el-button>
+                <el-button
+                  type="primary"
+                  icon="el-icon-download"
+                  size="mini"
+                  @click="handleExport"
+                >导出数据
+                </el-button>
+              </el-col>
+            </el-row>
+          </div>
+        </div>
+
+
+        <div
+          class="securityEquipmentMonitoringtable ml-4 flex-1"
+        >
+          <div class="title">教育统计报表</div>
+          <table ref="tb11" class="table-scroll">
+            <tr>
+              <th colspan="1" rowspan="1">序号</th>
+              <th colspan="1" rowspan="1">单位名称</th>
+              <th colspan="1" rowspan="1">应完成数</th>
+              <th colspan="1" rowspan="1">已完成数</th>
+              <th colspan="1" rowspan="1">完成率</th>
+            </tr>
+
+            <tr v-for="(item, index) in targetList" :key="index">
+              <td>{{ index + 1 }}</td>
+              <td>{{ item.orgName }}</td>
+              <td>{{ item.shouldFinish }}</td>
+              <td>{{ item.finish }}</td>
+              <td>{{ item.finishRate }}</td>
+            </tr>
+          </table>
+        </div>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+<script>
+import {mapGetters} from "vuex";
+import {getEduPlanList, getEduReportData} from "@/api/evaluateTable/evaluateTable.js";
+import {deptTreeSelect} from "@/api/system/public";
+import OrgTree from "@/components/orgTree/orgQuerySelector.vue";
+import dayjs from "dayjs";
+
+export default {
+  name: "eduTrainingReport",
+
+  components: {OrgTree},
+  data() {
+    const {params, query} = this.$route;
+    return {
+      targetList: [],
+      loading: false,
+      options: [],
+      queryParams: {
+        orgId: null,
+        planId: "",
+        date: new Date(),
+        isWebSelect: 1,
+      },
+      // 显示搜索条件
+      showSearch: true,
+      deptOptions: [], //机构数组
+      selectedOrgName:null,
+    };
+  },
+  created() {
+    this.getDeptTree();
+    this.initPlanList();
+  },
+  watch: {
+    queryParams() {
+      this.getList();
+    },
+  },
+  mounted() {
+    if (this.deptOptions) {
+      this.queryParams.orgId = this.orgId;
+    }
+  },
+  computed: {
+    ...mapGetters(["orgId"]),
+  },
+  methods: {
+    changeHandler() {
+      //  this.getList();
+    },
+    changeSelect(org) {
+      this.selectedOrgName=org.shortName
+      // this.getList();
+    },
+    /** 查询机构树数据 */
+    getDeptTree() {
+      deptTreeSelect().then((response) => {
+        this.deptOptions = response.data;
+        if (response.data.length > 0) {
+          this.selectedOrgName = response.data[0].shortName
+        }
+      });
+    },
+    /** 获取所有计划列表 */
+    initPlanList() {
+      getEduPlanList(this.$store.getters.orgId).then((res) => {
+        this.options = res.data;
+        this.queryParams.planId = res.data[0].id;
+        if (this.queryParams.orgId && this.queryParams.planId) {
+          this.getList();
+        }
+      });
+    },
+    /** treeSelect组件自定义数据*/
+    tenantIdnormalizer(node, instanceId) {
+      if (node.children && !node.children.length) {
+        delete node.children;
+      }
+      return {
+        id: node.id,
+        label: node.shortName,
+        children: node.children,
+      };
+    },
+    //获取列表
+    getList() {
+      this.loading = true;
+      getEduReportData(this.queryParams).then((res) => {
+        let {code, data, msg} = res;
+        if (code == 200) {
+          if (data.length > 0) {
+            this.targetList = data || [];
+          } else {
+            this.$message.error("暂无数据")
+          }
+        }
+        this.loading = false;
+      });
+
+    },
+
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.$refs.Evaluate.show();
+    },
+    editHandler(row) {
+      this.$refs.Evaluate.show(row);
+    },
+
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.queryParams = {
+        orgId: this.orgId,
+        planId: this.options[0].id,
+      };
+      this.getList();
+    },
+
+    /** 导出按钮操作 */
+    handleExport() {
+      let param={
+        ...this.queryParams,
+      }
+      param.date=dayjs(param.date).format("YYYY-MM-DD HH:mm:s")
+      this.download(
+        "core/eduTask/exportReport",
+        param,
+        `${
+          this.selectedOrgName
+        }-${this.$tab.getCurrentTabName()}-${dayjs().format("YYYYMMDD")}.xlsx`
+      );
+    },
+  },
+};
+</script>
+<style lang="scss" scoped>
+::v-deep.formTreeItem {
+  .el-form-item__content {
+    width: 264px;
+  }
+}
+
+.securityEquipmentMonitoringtable {
+  background-color: #fff;
+
+  .table-scroll {
+    // table-layout:auto;
+
+    color: #000000;
+    min-width: 100%;
+    border-spacing: 0;
+    text-align: center;
+    border-collapse: collapse;
+    max-height: 500px;
+    overflow-y: auto;
+    font-family: "仿宋_GB2312";
+
+    .orgName {
+      min-width: 180px !important;
+      width: 180px !important;
+    }
+
+    tr th,
+    tr td {
+      height: 25px;
+      border: 1px solid rgb(0, 0, 0);
+      // min-width: 75px;
+    }
+
+    .jump {
+      color: #02a7f0;
+      text-decoration: underline;
+    }
+
+    .nojump {
+      color: #000000;
+      font-size: 10;
+      //font-weight: bold;
+    }
+
+    .greentd {
+      color: green;
+    }
+
+    .redtd {
+      color: red;
+    }
+  }
+}
+
+.title {
+  clear: both;
+  margin: auto;
+  text-align: center;
+  color: black;
+  font-size: x-large;
+  letter-spacing: 3px;
+  font-weight: bold;
+}
+</style>

+ 12 - 4
src/views/core/reportForms/monitorAccessReport.vue

@@ -26,9 +26,17 @@
             <el-date-picker  :picker-options="{ firstDayOfWeek: 1 }"  v-model="weeks"  type="week"   format='yyyy 第 WW 周'  placeholder="选择周" @change='setWeekNum'>
              </el-date-picker>
           </el-form-item>
-
+          <el-row :gutter="10" class="mb8">
+            <el-col :span="1.5">
               <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
-              <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+              <el-button type="primary" icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+              <el-button type="primary" icon="el-icon-download" size="mini" @click="handleExport"
+                         v-hasPermi="['core:monitorAccessReport:export']">导出
+              </el-button>
+            </el-col>
+            <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    
+          </el-row>
             </el-form-item>
           </el-form>
           <h1 class="title" style="text-align:center;">{{ this.title}}</h1>
@@ -209,9 +217,9 @@
           );
         },
         handleExport() {
-      this.download('core/safetyInspectReport/export', {
+      this.download('core/monitorAccessReport/export', {
         ...this.queryParams
-      }, `${'【'+this.orgName+'】'+'-检查统计报表-'+this.formatTime(new Date(),'YYYYMMDD')}.xlsx`)
+      }, `${'【'+this.orgName+'】'+'-监控调阅报表-'+this.formatTime(new Date(),'YYYYMMDD')}.xlsx`)
     },
 
         getList() {

+ 6 - 3
src/views/core/reportForms/resumptionReport.vue

@@ -42,7 +42,10 @@
               </el-form-item>
 
               <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
-              <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+              <el-button type="primary" icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+              <el-button type="primary" icon="el-icon-download" size="mini" @click="handleExport"
+                         v-hasPermi="['core:resumptionReport:export']">导出
+              </el-button>
             </el-form-item>
           </el-form>
           <h1 class="title" style="text-align:center;">{{ this.title}}</h1>
@@ -210,9 +213,9 @@
           );
         },
         handleExport() {
-      this.download('core/safetyInspectReport/export', {
+      this.download('core/resumptionReport/export', {
         ...this.queryParams
-      }, `${'【'+this.orgName+'】'+'-检查统计报表-'+this.formatTime(new Date(),'YYYYMMDD')}.xlsx`)
+      }, `${'【'+this.orgName+'】'+'-履职报表-'+this.formatTime(new Date(),'YYYYMMDD')}.xlsx`)
     },
 
 

+ 6 - 3
src/views/core/reportForms/serviceBankReport.vue

@@ -26,7 +26,10 @@
               </el-form-item>
 
               <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
-              <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+              <el-button type="primary" icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+              <el-button type="primary" icon="el-icon-download" size="mini" @click="handleExport"
+                         v-hasPermi="['core:resumptionReport:export']">导出
+              </el-button>
             </el-form-item>
           </el-form>
           <h1 class="title" style="text-align:center;">{{ this.title}}</h1>
@@ -189,9 +192,9 @@
           );
         },
         handleExport() {
-      this.download('core/safetyInspectReport/export', {
+      this.download('core/resumptionReport/serviceBankExport', {
         ...this.queryParams
-      }, `${'【'+this.orgName+'】'+'-检查统计报表-'+this.formatTime(new Date(),'YYYYMMDD')}.xlsx`)
+      }, `${'【'+this.orgName+'】'+'-离行式自助银行巡检报表-'+this.formatTime(new Date(),'YYYYMMDD')}.xlsx`)
     },