Jelajahi Sumber

Merge branch 'V0.0.2' of http://10.87.10.227:4000/jzyd_yyds/soc_web into V0.0.2

jiawuxian 1 tahun lalu
induk
melakukan
58ea86c0eb

+ 8 - 14
src/api/core/reportForms/resumptionReport.js

@@ -1,5 +1,5 @@
 import request from '@/utils/request'
-// import { defineComponent } from 'vue';
+
 
 
 export function listReport(query) {
@@ -17,16 +17,10 @@ export function listIntrusionTestReport(query) {
     params: query
   })
 }
-// export default defineComponent({
-//   data() {
-//     return{
-//       value: null,
-//       quarterOptions:{
-//       disabledDate:(time)=>{
-//         const currentQuarter=Math.floor((time.getMonth()+3)/3)
-//         return currentQuarter !==1&& currentQuarter !==2 && currentQuarter !==3&& currentQuarter !==4
-//       }
-//     }
-//     }
-//   }
-// })
+export function listStandbyPowerReport(query) {
+  return request({
+    url: '/core/resumptionReport/standbyPower',
+    method: 'get',
+    params: query
+  })
+}

+ 1 - 0
src/views/check/dialog.edit.vue

@@ -599,6 +599,7 @@ export default {
       this.checkOrgIds = null;
       this.formData.checkOrgList = [];
       this.formData.checkOrgIds = [];
+      this.tableData=[];
     },
     tenantIdnormalizer(node, instanceId) {
       if (node.children && !node.children.length) {

+ 8 - 6
src/views/core/drill/plan/index.vue

@@ -117,19 +117,19 @@
                height="800px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="110px">
         <el-row>
-          <el-col :span="12">
+          <el-col :span="24">
             <el-form-item label="任务名称" prop="planName">
               <el-input v-model="form.planName" placeholder="请输入任务名称"/>
             </el-form-item>
           </el-col>
-          <el-col :span="12">
+<!--          <el-col :span="12">
             <el-form-item label="演练类型" prop="category">
               <el-select style="width: 100%" v-model="form.category" placeholder="请选择演练类型"  @change="drillTypeSelected()">
                 <el-option v-for="dict in dict.type.core_drill_category" :key="dict.value" :label="dict.label"
                            :value="parseInt(dict.value)"></el-option>
               </el-select>
             </el-form-item>
-          </el-col>
+          </el-col>-->
         </el-row>
         <el-row>
           <el-col :span="12">
@@ -437,10 +437,10 @@ export default {
         return this.form.planCycle != 0
       }else {
         //如果是编辑的情况下,判断是否是标准计划
-        if (this.form.standard==1){
+        /*if (this.form.standard==1){
           return this.form.planCycle != 0&&this.form.issue == 0
-        }
-        return false;
+        }*/
+        return this.form.planStatus==0;
       }
     },
     /** 查询机构树数据 */
@@ -582,6 +582,7 @@ export default {
               this.$modal.msgSuccess("编辑成功");
               this.open = false;
               this.getList();
+              this.$refs["upload"].clearFiles();
             }).catch(() => {
             });
 
@@ -590,6 +591,7 @@ export default {
               this.$modal.msgSuccess("新增成功");
               this.open = false;
               this.getList();
+              this.$refs["upload"].clearFiles();
             });
           }
         }

+ 3 - 3
src/views/core/drill/task/dialog.info.vue

@@ -5,18 +5,18 @@
         <el-form :model="formData" size="small" ref="form" label-position="right" label-width="120px"
                  label-suffix=":">
           <el-row>
-            <el-col :span="24">
+            <el-col :span="12">
               <el-form-item prop="type" label="任务名称">{{
                   formData.title
                 }}
               </el-form-item>
             </el-col>
-            <el-col :span="12">
+<!--            <el-col :span="12">
               <el-form-item prop="type" label="演练类型">{{
                   formData.categoryText
                 }}
               </el-form-item>
-            </el-col>
+            </el-col>-->
             <el-col :span="12">
               <el-form-item prop="type" label="任务进度">{{
                   getLabel(dict.type.drill_task_status, formData.status,"未知")

+ 3 - 3
src/views/core/drill/task/dialog.newtask.vue

@@ -6,7 +6,7 @@
                  label-width="120px" label-prefix=":">
           <el-row>
             <!-- 演练主题 -->
-            <el-col :span="12">
+            <el-col :span="24">
               <el-form-item prop="title" label="任务名称">
                 <el-input
                   v-model="formData.title"
@@ -16,14 +16,14 @@
                 />
               </el-form-item>
             </el-col>
-            <el-col :span="12">
+<!--            <el-col :span="12">
               <el-form-item label="演练类型" prop="category">
                 <el-select style="width: 100%" v-model="formData.category" placeholder="请选择演练类型">
                   <el-option v-for="dict in dict.type.core_drill_category" :key="dict.value" :label="dict.label"
                              :value="parseInt(dict.value)"></el-option>
                 </el-select>
               </el-form-item>
-            </el-col>
+            </el-col>-->
             <el-col :span="12">
               <el-form-item label="演练项目" prop="type">
                 <el-select style="width: 100%" v-model="formData.type" placeholder="请选择演练项目">

+ 3 - 3
src/views/core/drill/task/dialog.perform.vue

@@ -6,17 +6,17 @@
                  label-width="120px" label-prefix=":">
           <el-row>
             <!-- 培训主题 -->
-            <el-col :span="24">
+            <el-col :span="12">
               <el-form-item prop="title" label="任务名称">
                 {{ formData.title }}
               </el-form-item>
             </el-col>
-            <el-col :span="12">
+<!--            <el-col :span="12">
               <el-form-item prop="category" label="演练类型">{{
                   formData.categoryText
                 }}
               </el-form-item>
-            </el-col>
+            </el-col>-->
             <el-col :span="12">
               <el-form-item prop="orgName" label="演练机构">
                 {{ formData.orgName }}

+ 5 - 3
src/views/core/edu/plan/index.vue

@@ -434,10 +434,10 @@ export default {
        return this.form.planCycle != 0
       }else {
         //如果是编辑的情况下,判断是否是标准计划
-        if (this.form.standard==1){
+        /*if (this.form.standard==1){
           return this.form.planCycle != 0&&this.form.issue == 0
-        }
-        return false;
+        }*/
+        return this.form.planStatus==0;
       }
     },
     /** 查询教育培训计划列表 */
@@ -662,6 +662,7 @@ export default {
               this.$modal.msgSuccess("修改成功");
               this.open = false;
               this.getList();
+              this.$refs["upload"].clearFiles();
             }).catch(() => {
             });
 
@@ -670,6 +671,7 @@ export default {
               this.$modal.msgSuccess("新增成功");
               this.open = false;
               this.getList();
+              this.$refs["upload"].clearFiles();
             });
           }
         }

+ 190 - 265
src/views/core/edu/task/dialog.info.vue

@@ -1,167 +1,86 @@
 <template>
   <div class="edu-training-edit">
-    <DialogCom title="培训任务详情" :visible.sync="isShow" width="960px">
+    <DialogCom title="培训任务详情" :visible.sync="isShow" width="1200px" >
       <div class="page-body">
-        <el-form :model="formData" size="small" ref="form" label-position="right" label-width="120px"
-                 label-suffix=":">
-          <el-row>
+        <el-descriptions class="margin-top" :column="2" size="medium" border :label-style="labelStyle" :contentStyle="content_style">
+          <el-descriptions-item labelClassName="gx_info_label" label="任务名称" >
+            {{
+            formData.title
+            }}
+          </el-descriptions-item>
+          <el-descriptions-item labelClassName="gx_info_label" label="培训类型" >
+            {{
+            formData.typeText
+            }}
+          </el-descriptions-item>
+          <el-descriptions-item labelClassName="gx_info_label" label="任务进度" >
+            {{
+            formData.statusText
+            }}
+          </el-descriptions-item>
+          <el-descriptions-item labelClassName="gx_info_label" label="任务时间" >
+            {{formData.startDate}}-{{formData.endDate}}
+          </el-descriptions-item>
+          <el-descriptions-item labelClassName="gx_info_label" label="受训机构" >
+            {{formData.orgName}}
+          </el-descriptions-item>
+          <el-descriptions-item labelClassName="gx_info_label" label="主持人" >
+            {{
+            formData.hostName
+            }}
+          </el-descriptions-item>
+          <el-descriptions-item labelClassName="gx_info_label" label="登记人" >
+            {{
+            formData.recorderName
+            }}
+          </el-descriptions-item>
+          <el-descriptions-item labelClassName="gx_info_label" label="培训开始时间" >
+            {{
+            formData.trainingStartDateTime
+            }}
+          </el-descriptions-item>
+          <el-descriptions-item labelClassName="gx_info_label" label="培训结束时间" >
+            {{
+            formData.trainingEndDateTime
+            }}
+          </el-descriptions-item>
+          <el-descriptions-item labelClassName="gx_info_label" label="" >
+          </el-descriptions-item>
+          <el-descriptions-item span="2" labelClassName="gx_info_label" label="培训内容" >
+            {{
+            formData.content
+            }}
+          </el-descriptions-item>
+          <el-descriptions-item span="2" labelClassName="gx_info_label" label="培训总结" >
+            {{
+            formData.note
+            }}
+          </el-descriptions-item>
+          <el-descriptions-item labelClassName="gx_info_label" label="参会人员" >
+            {{
+            formData.taskUserList ? formData.taskUserList.filter((x) => x.type === 1)
+            .map((v) => v.userName).join(",") : ""
+            }}
+          </el-descriptions-item>
+          <el-descriptions-item labelClassName="gx_info_label" label="缺席人员" >
+            {{
+            formData.taskUserList ? formData.taskUserList.filter((x) => x.type === 2)
+            .map((v) => v.userName).join(",") : ""
+            }}
+          </el-descriptions-item>
+          <el-descriptions-item span="2" labelClassName="gx_info_label" label="培训图片" >
+            <ImageListPreview v-model="formData.imageList"></ImageListPreview>
+          </el-descriptions-item>
+          <el-descriptions-item span="2" labelClassName="gx_info_label" label="参会人员签名" >
+            <ImageListPreview v-model="formData.signImageList"></ImageListPreview>
+          </el-descriptions-item>
+          <el-descriptions-item labelClassName="gx_info_label" label="资料文件" >
+            <K-file-upload ref="upload" :isShowUploadBtn="false"
+                           :defaultValue="formFileListDefualtValue"
+                           v-model="formData.fileList"/>
+          </el-descriptions-item>
 
-            <!-- 培训主题 -->
-            <el-col :span="24">
-              <el-form-item prop="type" label="任务名称">{{
-                  formData.title
-                }}
-              </el-form-item>
-            </el-col>
-            <el-col :span="12">
-              <el-form-item prop="typeText" label="培训类型">{{
-                  formData.typeText
-                }}
-              </el-form-item>
-            </el-col>
-            <el-col :span="12">
-              <el-form-item prop="statusText" label="任务进度">{{
-                  formData.statusText
-                }}
-              </el-form-item>
-            </el-col>
-            <el-col :span="12">
-              <el-form-item prop="startDate" label="任务时间">{{
-                  formData.startDate
-                }}-{{ formData.endDate }}
-              </el-form-item>
-            </el-col>
-
-            <!-- 机构 -->
-            <el-col :span="12">
-              <el-form-item label="受训机构">{{
-                  formData.orgName
-                }}
-              </el-form-item>
-            </el-col>
-            <!-- 执行角色 -->
-            <!-- <el-col :span="12">
-                <el-form-item prop="eduJobId" label="执行角色">{{
-                    formData.eduJobNames
-                }}</el-form-item>
-            </el-col> -->
-            <!-- 类型 -->
-            <!--                        <el-col :span="12">
-                                        <el-form-item label="类型">
-                                            <template>
-                                                <dict-tag :options="dict.type.edu_type" :value="formData.type" />
-                                            </template>
-                                        </el-form-item>
-                                    </el-col>-->
-            <!-- 主持人 -->
-            <el-col :span="12">
-              <el-form-item prop="hostId" label="主持人">{{
-                  formData.hostName
-                }}
-              </el-form-item>
-            </el-col>
-            <!-- 记录人 -->
-            <el-col :span="12">
-              <el-form-item prop="recorderId" label="登记人">{{
-                  formData.recorderName
-                }}
-              </el-form-item>
-            </el-col>
-
-            <!-- 培训开始时间 -->
-            <el-col :span="12">
-              <el-form-item prop="trainingStartDateTime" label="培训开始时间">{{
-                  formData.trainingStartDateTime
-                }}
-              </el-form-item>
-            </el-col>
-            <!-- 培训截止时间 -->
-            <el-col :span="12">
-              <el-form-item prop="trainingEndDateTime" label="培训结束时间">{{
-                  formData.trainingEndDateTime
-                }}
-              </el-form-item>
-            </el-col>
-            <!-- 开始日期 -->
-            <!-- <el-col :span="12">
-                <el-form-item prop="dateTime" label="开始日期">{{
-                    formData.startDate
-                }}</el-form-item>
-            </el-col> -->
-            <!-- 截止日期 -->
-            <!-- <el-col :span="12">
-                <el-form-item prop="dateTime" label="截止日期">{{
-                    formData.endDate
-                }}</el-form-item>
-            </el-col> -->
-            <!-- 内容 -->
-            <el-col :span="24">
-              <el-form-item prop="content" label="培训内容">{{
-                  formData.content
-                }}
-              </el-form-item>
-            </el-col>
-            <!-- 总结 -->
-            <el-col :span="24">
-              <el-form-item prop="note" label="培训总结">{{
-                  formData.note
-                }}
-              </el-form-item>
-            </el-col>
-
-
-            <!-- 参与人数 -->
-            <el-col :span="12">
-              <el-form-item prop="dueCount" label="参会人员">{{
-                  formData.taskUserList ? formData.taskUserList.filter((x) => x.type === 1)
-                    .map((v) => v.userName).join(",") : ""
-                }}
-              </el-form-item>
-            </el-col>
-            <el-col :span="12">
-              <el-form-item prop="dueCount" label="缺席人员">{{
-                  formData.taskUserList ? formData.taskUserList.filter((x) => x.type === 2)
-                    .map((v) => v.userName).join(",") : ""
-                }}
-              </el-form-item>
-            </el-col>
-            <!-- 图片 -->
-            <el-col :span="24">
-              <el-form-item prop="imageList" label="培训图片">
-                <ImageListPreview v-model="formData.imageList"></ImageListPreview>
-                <!-- <k-multi-upload :disabled="!!id" v-model="formData.imageList" limit="4" byModule
-                    moduleName="edu-training" v-if="isShow" /> -->
-              </el-form-item>
-            </el-col>
-            <!-- 图片 -->
-            <el-col :span="24">
-              <el-form-item prop="imageList" label="参会人员签名">
-                <ImageListPreview v-model="formData.signImageList"></ImageListPreview>
-                <!-- <k-multi-upload :disabled="!!id" v-model="formData.imageList" limit="4" byModule
-                    moduleName="edu-training" v-if="isShow" /> -->
-              </el-form-item>
-            </el-col>
-
-            <!-- 文件 -->
-            <el-col :span="24">
-              <el-form-item label="资料文件" prop="fileList">
-                <K-file-upload ref="upload" :isShowUploadBtn="false"
-                               :defaultValue="formFileListDefualtValue"
-                               v-model="formData.fileList"/>
-              </el-form-item>
-            </el-col>
-            <!--                        <el-col :span="24">
-                                        <el-form-item prop="fileList" label="文件" :disabled="true">
-                                            <div v-for="(v, i) in formData.fileList" :key="i">
-                                                <a class="downloadLink" @click="onDownload(JSON.parse(v).url, JSON.parse(v).name)">
-                                                    {{ JSON.parse(v).name }}
-                                                </a>
-                                            </div>
-
-                                        </el-form-item>
-                                    </el-col>-->
-          </el-row>
-        </el-form>
+        </el-descriptions>
       </div>
 
       <div slot="footer" class="dialog-footer">
@@ -172,119 +91,125 @@
 </template>
 
 <script>
-import {mapState, mapMutations} from "vuex";
-import {getEduTask} from "@/api/core/edu/eduTask";
-import KFileUpload from "@/components/K-FileUpload/index.vue";
-
-export default {
-  components: {KFileUpload},
-  dicts: ['edu_type', 'edu_task_status'],
-  data() {
-    const params = this.$route.params;
-    return {
-      id: params ? params.id : null,
-      isShow: false,
-      formData: this.reset(),
-      formFileListDefualtValue: [],
-    };
-  },
-  props: {},
-  watch: {},
-  computed: {
-    ...mapState(["loginUser"]),
-  },
-  methods: {
-    ...mapMutations([]),
-    reset(other = {}) {
+  import { mapState, mapMutations } from "vuex";
+  import { getEduTask } from "@/api/core/edu/eduTask";
+  import KFileUpload from "@/components/K-FileUpload/index.vue";
+  export default {
+    components: {KFileUpload},
+    dicts: ['edu_type', 'edu_task_status'],
+    data() {
+      const params = this.$route.params;
       return {
-        id: null,
-        type: null,
-        host: {},
-        recorder: {},
-        dateTime: null,
-        dueCount: null,
-        actualCount: null,
-        content: null,
-        imageList: null,
-        signImageList: null,
-        typeText: null,
-        org: {},
-        ...other,
+        id: params ? params.id : null,
+        isShow: false,
+        formData: this.reset(),
+        formFileListDefualtValue: [],
+        labelStyle: {
+          'color': '#000',
+          'text-align': 'center',
+          'height': '40px',
+          'min-width': '200px',
+          'word-break': 'keep-all'
+        },
+        content_style: {
+          'text-align': 'left',
+          'min-width': '300px',
+          'word-break': 'break-all'
+        },
       };
     },
-    async refresh(id, other) {
-      if (!id) {
-        this.reset(other);
-      } else {
-        getEduTask(id).then(response => {
-          this.formData = response.data;
-          this.formFileListDefualtValue = response.data.fileList;
-          this.formData.signImageList = this.getSingImageList();
-          this.loading = false;
-        })
-      }
-    },
-    async show(id, other = {}) {
-      this.id = id;
-      await this.refresh(id, other);
-      this.isShow = true;
+    props: {},
+    watch: {},
+    computed: {
+      ...mapState(["loginUser"]),
     },
-    // 事件
-    onHide() {
-      this.isShow = false;
-    },
-    onDownload(url, filename) {
-      let this_ = this;
-      this.getBlob(url, function (blob) {
-        this_.saveAs(blob, filename);
-      });
-    },
-    getSingImageList() {
-      let res = this.formData.taskUserList ? this.formData.taskUserList.filter((x) => x.type === 1 && x.sign == 1)
-        .map((v) => v.signImage).join(",") : null;
-      return res;
-    },
-    getBlob(url, cb) {
-      var xhr = new XMLHttpRequest();
-      xhr.open("GET", url, true);
-      xhr.responseType = "blob";
-      xhr.onload = function () {
-        if (xhr.status === 200) {
-          cb(xhr.response);
+    methods: {
+      ...mapMutations([]),
+      reset(other = {}) {
+        return {
+          id: null,
+          type: null,
+          host: {},
+          recorder: {},
+          dateTime: null,
+          dueCount: null,
+          actualCount: null,
+          content: null,
+          imageList: null,
+          signImageList: null,
+          typeText: null,
+          org: {},
+          ...other,
+        };
+      },
+      async refresh(id, other) {
+        if (!id) {
+          this.reset(other);
+        } else {
+          getEduTask(id).then(response => {
+            this.formData = response.data;
+            this.formFileListDefualtValue = response.data.fileList;
+            this.formData.signImageList = this.getSingImageList();
+            this.loading = false;
+          })
         }
-      };
-      xhr.send();
-    },
-    saveAs(blob, filename) {
-      console.log("saveAs", blob, filename)
-      if (window.navigator.msSaveOrOpenBlob) {
-        navigator.msSaveBlob(blob, filename);
-      } else {
-        let link = document.createElement("a");
-        let body = document.querySelector("body");
+      },
+      async show(id, other = {}) {
+        this.id = id;
+        await this.refresh(id, other);
+        this.isShow = true;
+      },
+      // 事件
+      onHide() {
+        this.isShow = false;
+      },
+      onDownload(url, filename) {
+        let this_ = this;
+        this.getBlob(url, function (blob) {
+          this_.saveAs(blob, filename);
+        });
+      },
+      getSingImageList() {
+        let res = this.formData.taskUserList ? this.formData.taskUserList.filter((x) => x.type === 1 && x.sign == 1)
+          .map((v) => v.signImage).join(",") : null;
+        return res;
+      },
+      getBlob(url, cb) {
+        var xhr = new XMLHttpRequest();
+        xhr.open("GET", url, true);
+        xhr.responseType = "blob";
+        xhr.onload = function () {
+          if (xhr.status === 200) {
+            cb(xhr.response);
+          }
+        };
+        xhr.send();
+      },
+      saveAs(blob, filename) {
+        console.log("saveAs", blob, filename)
+        if (window.navigator.msSaveOrOpenBlob) {
+          navigator.msSaveBlob(blob, filename);
+        } else {
+          let link = document.createElement("a");
+          let body = document.querySelector("body");
 
-        link.href = URL.createObjectURL(blob);
-        link.download = filename;
+          link.href = URL.createObjectURL(blob);
+          link.download = filename;
 
-        // fix Firefox
-        link.style.display = "none";
-        body.appendChild(link);
+          // fix Firefox
+          link.style.display = "none";
+          body.appendChild(link);
 
-        link.click();
-        body.removeChild(link);
+          link.click();
+          body.removeChild(link);
 
-        window.URL.revokeObjectURL(link.href);
-      }
+          window.URL.revokeObjectURL(link.href);
+        }
+      },
+      // 事件
+      //apimark//
     },
-    // 事件
-    //apimark//
-  },
-  mounted() {
-  },
-};
+    mounted() {
+    },
+  };
 </script>
-
-<!-- <style lang="less">
-.edu-training-edit {
-}
-</style> -->

+ 623 - 0
src/views/core/reportForms/Quarter.vue

@@ -0,0 +1,623 @@
+<!-- <template>
+    <div style="display: inline-block;">
+      <mark
+        style="position: fixed;top: 0;bottom: 0;left: 0;right: 0;background: rgba(0,0,0,0);z-index: 999;"
+        v-show="showSeason"
+        @click.stop="showSeason=false"
+      ></mark>
+      <el-input :placeholder="placeholder" v-model="showValue" v-bind="$attrs" @focus="clickInput" ref="inputText">
+        <i slot="prefix" class="el-input__icon el-icon-date"></i>
+      </el-input>
+      <el-card
+        class="box-card"
+        style="width: 322px;padding: 0 30px 20px;margin-top: 10px;position: fixed;z-index: 9999"
+        :style="{top:divTop + 'px'}"
+        v-show="showSeason"
+        ref="card"
+      >
+        <div class="clearfix" style="text-align: center;padding: 0;" slot="header">
+          <button
+            class="el-picker-panel__icon-btn el-date-picker__prev-btn el-icon-d-arrow-left"
+            type="button"
+            aria-label="前一年"
+            @click="prev"
+          ></button>
+          <span class="el-date-picker__header-label">{{ year }}年</span>
+          <button
+            class="el-picker-panel__icon-btn el-date-picker__next-btn el-icon-d-arrow-right"
+            type="button"
+            aria-label="后一年"
+            @click="next"
+          ></button>
+        </div>
+        <div class="text item" style="text-align: center;">
+          <el-button
+            style="width: 40%;color: #606266;float: left;"
+            type="text"
+            size="medium"
+            @click="selectSeason(0)"
+          >第一季度
+          </el-button>
+          <el-button
+            style="width: 40%;color: #606266;float: right;"
+            type="text"
+            size="medium"
+            @click="selectSeason(1)"
+          >第二季度
+          </el-button>
+        </div>
+        <div class="text item" style="text-align: center;">
+          <el-button
+            style="width: 40%;color: #606266;float: left;"
+            type="text"
+            size="medium"
+            @click="selectSeason(2)"
+          >第三季度
+          </el-button>
+          <el-button
+            style="width: 40%;color: #606266;float: right;"
+            type="text"
+            size="medium"
+            @click="selectSeason(3)"
+          >第四季度
+          </el-button>
+        </div>
+      </el-card>
+    </div>
+  </template>
+  
+  <script>
+  export default {
+    name: "quarter-picker",
+    model: {
+      prop: 'inputValue',
+      event: 'inputValue'
+    },
+    props: {
+      valueArr: {
+        type: Array,
+        default: () => {
+          return ['01-01,03-31', '04-01,06-30', '07-01,09-30', '10-01,12-31'];
+        }
+      },
+      placeholder: {
+        type: String,
+        default: '请选择季度'
+      },
+      inputValue: {
+        type: Array,
+        default: function() {
+          return [];
+        }
+      },
+      changeValue: {
+        type: Function,
+        default: () => {}
+      },
+      otherData: {
+        type: Object,
+        default: () => {
+          return {};
+        }
+      }
+    },
+    mounted() {
+      if (this.inputValue != null && this.inputValue.length > 0) {
+        this.showText(this.inputValue);
+      }
+      window.addEventListener('scroll', this.handleScroll, true);
+    },
+    watch: {
+      inputValue(newValue) {
+        if (newValue.length > 0) {
+          this.showText(newValue);
+        } else {
+          this.showValue = "";
+        }
+      }
+    },
+    data() {
+      return {
+        showSeason: false,
+        showValue: '',
+        year: new Date().getFullYear(),
+        season: '',
+        divTop: 0
+      };
+    },
+    methods: {
+      handleScroll() {
+        let inputText = this.$refs.inputText.$el;
+        if (inputText.getBoundingClientRect().top + 220 > document.body.offsetHeight) {
+          this.divTop = inputText.getBoundingClientRect().top - 215;
+        } else {
+          this.divTop = inputText.getBoundingClientRect().top + 30;
+        }
+      },
+      clickInput() {
+        this.handleScroll();
+        this.showSeason = true;
+      },
+      prev() {
+        this.year = this.year * 1 - 1;
+      },
+      next() {
+        this.year = this.year * 1 + 1;
+      },
+      selectSeason(i) {
+        let that = this;
+        that.season = i + 1; // 得到当前季度
+        let arr = that.valueArr[i].split(',');
+        let value = [];
+        let start = that.year + '-' + arr[0]; // 得到当前季度的开始日期
+        let end = that.year + '-' + arr[1]; // 得到当前季度的结束日期
+        value.push(start); // 将季度开始日期和季度结束日期存入数组中
+        value.push(end);
+        if (this.inputValue != null && this.inputValue[0] != value[0]) {
+          this.changeValue(value, this.otherData);
+        }
+        this.$emit('inputValue', value);
+        that.showSeason = false;
+        this.showText(value);
+      },
+      showText(value) { // value为数组,数组索引为0的值为季度开始时间
+        let arr = value[0].split('-'); // 将季度开始时间用-进行分割
+        this.year = arr[0];
+        let month = arr[1];
+        this.season = Math.ceil(month / 3); // 向上取整
+        this.showValue = `${this.year}年${this.season}季度`; // 设置显示格式
+      }
+    }
+  }
+  </script>
+  
+  <style scoped>
+  ._mark {
+    position: fixed;
+    top: 0;
+    bottom: 0;
+    left: 0;
+    right: 0;
+    background: rgba(0, 0, 0, 0);
+    z-index: 999;
+  }
+  
+  .yearBtn {
+    text-align: center;
+    padding: 0
+  }
+  
+  .box-card {
+    width: 322px;
+    padding: 0 3px 20px;
+    margin-top: 10px;
+    position: fixed;
+    z-index: 9999
+  }
+  
+  .text.item {
+    text-align: center;
+  }
+  
+  .text.item >>> .el-button {
+    width: 40%;
+    color: #606266;
+  }
+  
+  .text.item ._left {
+    float: left;
+  }
+  
+  .text.item ._right {
+    float: right;
+  }
+  </style> -->
+
+
+  <template>
+
+    <el-form>
+  
+      <el-form-item>
+  
+        <mark
+  
+          class="_mark"
+  
+          v-show="showSeason"
+  
+          @click.stop="showSeason = false"
+  
+        ></mark>
+  
+        <el-input
+  
+          placeholder="请选择季度"
+  
+          v-model="showValue"
+  
+          size="small"
+  
+          style="width:12.7rem;"
+  
+          @focus="showSeason = true"
+  
+        >
+  
+          <i slot="prefix" class="el-input__icon el-icon-date"></i>
+  
+        </el-input>
+  
+        <el-card class="box-card" v-show="showSeason">
+  
+          <div slot="header" class="clearfix yearBtn">
+  
+            <button
+  
+              type="button"
+  
+              aria-label="前一年"
+  
+              class="el-picker-panel__icon-btn el-date-picker__prev-btn el-icon-d-arrow-left"
+  
+              @click="prev"
+  
+            ></button>
+  
+            <span role="button" class="el-date-picker__header-label"
+  
+              >{{ year }}年</span
+  
+            >
+  
+            <button
+  
+              type="button"
+  
+              aria-label="后一年"
+  
+              @click="next"
+  
+              class="el-picker-panel__icon-btn el-date-picker__next-btn el-icon-d-arrow-right"
+  
+            ></button>
+  
+          </div>
+  
+          <div class="text item">
+  
+            <el-button
+  
+              type="text"
+  
+              size="medium"
+  
+              class="_left"
+  
+              @click="selectSeason(0)"
+  
+              >第一季度</el-button
+  
+            >
+  
+            <el-button
+  
+              type="text"
+  
+              size="medium"
+  
+              class="_right"
+  
+              @click="selectSeason(1)"
+  
+              >第二季度</el-button
+  
+            >
+  
+          </div>
+  
+          <div class="text item">
+  
+            <el-button
+  
+              type="text"
+  
+              size="medium"
+  
+              class="_left"
+  
+              @click="selectSeason(2)"
+  
+              >第三季度</el-button
+  
+            >
+  
+            <el-button
+  
+              type="text"
+  
+              size="medium"
+  
+              class="_right"
+  
+              @click="selectSeason(3)"
+  
+              >第四季度</el-button
+  
+            >
+  
+          </div>
+  
+        </el-card>
+  
+      </el-form-item>
+  
+    </el-form>
+  
+  </template>
+  
+  <script>
+  
+  export default {
+  
+    props: {
+  
+      valueArr: {
+  
+        default: () => {
+  
+          return ["01-03", "04-06", "07-09", "10-12"];
+  
+        },
+  
+        type: Array,
+  
+      },
+  
+      getValue: {
+  
+        default: () => {},
+  
+        type: Function,
+  
+      },
+  
+      defaultValue: {
+  
+        default: "",
+  
+        type: String,
+  
+      },
+  
+    },
+  
+    data() {
+  
+      return {
+  
+        showSeason: false,
+  
+        season: "",
+  
+        year: new Date().getFullYear(),
+  
+        showValue: "",
+  
+      };
+  
+    },
+  
+    created() {
+  
+      if (this.defaultValue) {
+  
+        let value = this.defaultValue;
+  
+        let arr = value.split("-");
+  
+        this.year = arr[0].slice(0, 4);
+  
+        let str = arr[0].slice(4, 6) + "-" + arr[1].slice(4, 6);
+  
+        let arrAll = this.valueArr;
+  
+        this.showValue = `${this.year}年${arrAll.indexOf(str) + 1}季度`;
+  
+      }
+  
+    },
+  
+    watch: {
+  
+      defaultValue: function(value) {
+  
+        let arr = value.split("-");
+  
+        this.year = arr[0].slice(0, 4);
+  
+        let str = arr[0].slice(4, 6) + "-" + arr[1].slice(4, 6);
+  
+        let arrAll = this.valueArr;
+  
+        // if(arrAll.indexOf(str)==0){
+  
+        //   this.showValue  = `${this.year}年第一季度`;
+  
+        // }
+  
+        this.showValue = `${this.year}年${arrAll.indexOf(str) + 1}季度`;
+  
+        
+  
+      },
+  
+    },
+  
+    methods: {
+  
+      one() {
+  
+        this.showSeason = false;
+  
+      },
+  
+      prev() {
+  
+        this.year = this.year * 1 - 1;
+  
+      },
+  
+      next() {
+  
+        this.year = this.year * 1 + 1;
+  
+      },
+  
+      reast(){
+  
+        this.showValue = ''
+  
+      },
+  
+      selectSeason(i) {
+  
+        let that = this;
+  
+        that.season = i + 1;
+  
+        let arr = that.valueArr[i].split("-");
+  
+        that.getValue(that.year + arr[0] + "-" + that.year + arr[1]);
+  
+        that.showSeason = false;
+  
+        if(this.season == 1){
+  
+          this.showValue = `${this.year}年第一季度`;
+  
+        }else if(this.season == 2){
+  
+           this.showValue = `${this.year}年第二季度`;
+  
+        }
+  
+        else if(this.season == 3){
+  
+           this.showValue = `${this.year}年第三季度`;
+  
+        }
+  
+        else if(this.season == 4){
+  
+           this.showValue = `${this.year}年第四季度`;
+  
+        }
+  
+        // this.showValue = `${this.year}年${this.season}季度`;
+  
+        that.sendMsg()
+  
+      },
+  
+      getLastDay(year, month) {
+  
+        var new_year = year; //取当前的年份
+  
+        var new_month = month++; //取下一个月的第一天,方便计算(最后一天不固定)
+  
+        if (month > 12) {
+  
+          new_month -= 12; //月份减
+  
+          new_year++; //年份增
+  
+        }
+  
+        var new_date = new Date(new_year, new_month, 1); //取当年当月中的第一天
+  
+        return new Date(new_date.getTime() - 1000 * 60 * 60 * 24).getDate(); //获取当月最后一天日期
+  
+      },
+  
+      sendMsg() {
+  
+        this.$emit("func", this.showValue);
+  
+      },
+  
+    },
+  
+  };
+  
+  </script>
+  
+  <style scoped>
+  
+  ._mark {
+  
+    position: fixed;
+  
+    top: 0;
+  
+    bottom: 0;
+  
+    left: 0;
+  
+    right: 0;
+  
+    background: rgba(0, 0, 0, 0);
+  
+    z-index: 999;
+  
+  }
+  
+  .yearBtn {
+  
+    text-align: center;
+  
+    padding: 0;
+  
+  }
+  
+  .box-card {
+  
+    width: 322px;
+  
+    padding: 0 3px 20px;
+  
+    margin-top: 10px;
+  
+    position: fixed;
+  
+    z-index: 9999;
+  
+  }
+  
+  .text.item {
+  
+    text-align: center;
+  
+  }
+  
+  .text.item >>> .el-button {
+  
+    width: 40%;
+  
+    color: #606266;
+  
+  }
+  
+  .text.item ._left {
+  
+    float: left;
+  
+  }
+  
+  .text.item ._right {
+  
+    float: right;
+  
+  }
+  
+  </style>

+ 2 - 9
src/views/core/reportForms/intrusionTestReport.vue

@@ -20,16 +20,9 @@
             />
           </el-form-item>
               <el-form-item label="时间" prop="searchTime">
-                <!-- <el-date-picker   value-format='yyyy-MM' v-model="queryParams.searchTime"
+              <el-date-picker   value-format='yyyy-MM' v-model="queryParams.searchTime"
                                 align="right" type="month" placeholder="请选择查询时间">
-                </el-date-picker>  -->
-                <el-date-picker
-      v-model="queryParams.searchTime"
-      type="quarter"
-      placeholder="选择季度"
-      :piker-options="quarterOptions"
-      >
-    </el-date-picker>
+                </el-date-picker>  
               </el-form-item>
 
               <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>

+ 291 - 0
src/views/core/reportForms/standbyPowerReport.vue

@@ -0,0 +1,291 @@
+<template>
+    <div class="app-container">
+
+          <el-form :model="queryParams" ref="queryForm" size="small"  :inline="true"
+          v-show="showSearch"
+          label-width="100px">
+
+            <el-form-item label="组织机构" prop="orgId" class="formTreeItem">
+            <tree-select
+              v-model="queryParams.orgId"
+              :options="deptOptions"
+              :show-count="true"
+              :normalizer="tenantIdnormalizer"
+              :props="{ checkStrictly: true, label: 'name' }"
+              placeholder="请选择归属机构"
+              clearValueText="清除"
+              :noChildrenText="''"
+              noOptionsText="没有数据"
+              noResultsText="没有搜索结果"
+            />
+          </el-form-item>
+              <el-form-item label="时间" prop="searchTime">
+              <!-- <el-date-picker   value-format='yyyy-MM' v-model="queryParams.searchTime"
+                                align="right" type="month" placeholder="请选择查询时间">
+                </el-date-picker>   -->
+                <Quarter @func="getMsgFormSon"></Quarter>
+              </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-form-item>
+          </el-form>
+          <h3 class="title">{{ this.title}}</h3>
+          <el-row :gutter="10" class="mb8">
+            <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+          </el-row>
+          <el-table
+            border
+            height="700"
+            size="small"
+            v-loading="loading" :data="checkList" @selection-change="handleSelectionChange">
+       
+            <el-table-column label="序号" align="center" min-width="50">
+              <template v-slot:default="scope">
+                <span v-text="getPageIndex(scope.$index)"> </span>
+              </template>
+            </el-table-column>
+            <el-table-column label="地区" align="center" prop="city" />
+            <el-table-column label="单位名称" align="center" prop="orgName" width="100"/>
+            <el-table-column label="网点数量" align="left" prop="networkNumber" width="100"/>
+            <el-table-column label="应履职次数" align="center" prop="planNumber"/>
+            <el-table-column label="已履职次数" align="center" prop="realityNumber"/>
+            <el-table-column label="履职完成率" align="center" prop="realityRate"/>
+            <el-table-column label="隐患数量" align="center" prop="abnormalNumber"/>
+            <el-table-column label="已整改数量" align="center" prop="realityRectificationNumber"/>
+            <el-table-column label="整改完成率" align="center" prop="realityRectificationRate"/>
+          </el-table>
+          <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum"
+                      :limit.sync="queryParams.pageSize"
+                      @pagination="getList"/>
+  
+    </div>
+  </template>
+  
+  <script>
+    import tableList from '@/mixins/tableList'
+    import {listStandbyPowerReport} from "@/api/core/reportForms/resumptionReport";
+    import treeselect from '@riophae/vue-treeselect'
+    import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+    import {deptTreeSelect,businessTreeSelect} from "@/api/system/public";
+    import orgTree from "@/components/orgTree";
+    import Quarter from '@/views/core/reportForms/Quarter.vue';
+
+    export default {
+      name: "Check",
+      /** 引入基础minxins*/
+      mixins: [tableList],
+      components: {treeselect,orgTree,Quarter},
+      dicts: ['sys_normal_disable','sys_org_type','repot_cycle'],
+      data() {
+        return {
+            startDatepickerOptions: {
+        disabledDate(time) {
+          const date = new Date();
+          date.setTime(date.getTime());
+          return time.getTime() < date;
+        },
+      },
+          // 遮罩层
+          loading: true,
+          // 选中数组
+          ids: [],
+          names: [],
+          // 非单个禁用
+          single: true,
+          //搜索tree
+          deptName: null,
+          // 非多个禁用
+          multiple: true,
+          // 显示搜索条件
+          showSearch: true,
+          //区域
+          roleOptions: [],
+           //全部检查机构
+      orgOptions: [],
+          //搜索tree
+          deptName: null,
+          // 部门树选项
+          deptOptions: [],
+          // 总条数
+          total: 0,
+          //区域集合
+          areaList: [],
+          // 区域采集点表格数据
+          checkList: [],
+          // 弹出层标题
+          title: "",
+          // 是否显示弹出层
+          open: false,
+          // 查询参数
+          queryParams: {
+            pageNum: 1,
+            pageSize: 10,
+            checkName: null,
+            areaId: null,
+            orgId: null,
+            searchTime:null
+          },
+          // 表单参数
+          form: {},
+          // 表单校验
+          checkList: [],
+          roleOptions: [],
+          defaultKeys: [],
+          //是否关联下级
+          checked: false,
+          defaultProps: {
+            children: "children",
+            label: "name"
+          },
+  
+          rules: {
+            areaId: [
+              {required: true, message: '请选择区域', trigger: 'blur'},
+            ],
+            orgType: [
+              {required: true, message: '请选择机构类型', trigger: 'blur'},
+            ],
+            checkName: [
+              {required: true, message: '请输入NFC点位名称', trigger: 'change'}
+            ],
+          },
+          defaultKeys: []
+  
+        };
+      },
+      created() {
+        this.getDeptTree();
+      this. getList();
+
+      if (this.defaultValue) {
+        let value = this.defaultValue
+        let arr = value.split('-')
+        this.year = arr[0].slice(0, 4)
+        let str = arr[0].slice(4, 6) + '-' + arr[1].slice(4, 6)
+        let arrAll = this.valueArr
+        this.showValue = `${this.year}年${arrAll.indexOf(str) + 1}季度`
+      };
+      },
+      watch: {
+        // 根据名称筛选部门树
+        deptName(val) {
+          this.$refs.tree.filter(val);
+        }
+      },
+      methods: {
+        prev () {
+        this.year = this.year * 1 - 1
+      },
+      next () {
+        this.year = this.year * 1 + 1
+      },
+      selectSeason (i) {
+        for (let j in $('.season-item')) {
+          $('.season-item').eq(j).css('color', '#fff')
+        }
+        $('.season-item').eq(i).css('color', '#249bff')
+        this.season = i + 1
+        let arr = this.valueArr[i].split('-')
+        this.getValue(this.year + arr[0] + '-' + this.year + arr[1])
+        this.showSeason = false
+        this.showValue = `${this.year}年${this.season}季度`
+        this.$emit('getQuarter', this.year, this.season)
+      },
+
+
+
+  /** 查询机构树数据 */
+  getDeptTree() {
+      deptTreeSelect().then((response) => {
+        this.deptOptions = response.data;
+      });
+    },
+        /** treeSelect组件自定义数据*/
+        tenantIdnormalizer(node, instanceId) {
+      if (node.children && !node.children.length) {
+        delete node.children;
+      }
+      return {
+        id: node.id,
+        label: node.shortName,
+        children: node.children,
+      };
+    },
+        getPageIndex($index) {
+          //表格序号
+          return (
+            (this.queryParams.pageNum - 1) * this.queryParams.pageSize + $index + 1
+          );
+        },
+        handleExport() {
+      this.download('core/safetyInspectReport/export', {
+        ...this.queryParams
+      }, `${'【'+this.orgName+'】'+'-检查统计报表-'+this.formatTime(new Date(),'YYYYMMDD')}.xlsx`)
+    },
+    
+     
+        getList() {
+          this.loading = true;
+          listStandbyPowerReport(this.queryParams).then(response => {
+            this.checkList = response.data;
+            this.title=response.title;
+            this.loading = false;
+          });
+        },
+        getAllOrg() {
+          selectAllOrg().then(response => {
+        this.orgOptions = response.data;
+      })
+    },
+ 
+    
+        // 取消按钮
+        cancel() {
+          this.open = false;
+          this.reset();
+        },
+        // 表单重置
+        reset() {
+          this.form = {
+            id: null,
+            checkName: null,
+            areaId: null,
+            orgId: null,
+            createTime: null,
+            updateTime: null,
+            updateId: null,
+            createBy: null,
+            delFlag: null,
+            updateBy: null
+          };
+          this.resetForm("form");
+        },
+        /** 搜索按钮操作 */
+        handleQuery() {
+          this.queryParams.pageNum = 1;
+          this.getList();
+        },
+        /** 重置按钮操作 */
+        resetQuery() {
+          this.resetForm("queryForm");
+          this.handleQuery();
+        },
+        // 多选框选中数据
+        handleSelectionChange(selection) {
+          this.ids = selection.map(item => item.id)
+          this.names = selection.map(item => item.checkName)
+          this.single = selection.length !== 1
+          this.multiple = !selection.length
+        },
+  
+      }
+    };
+  </script>
+  <style lang="scss" scoped>
+  ::v-deep.formTreeItem {
+    .el-form-item__content {
+      width: 264px;
+    }
+  }
+  </style>

+ 2 - 2
src/views/resumption/plan/index.vue

@@ -77,8 +77,8 @@
                     </el-option>
                   </el-select>
                 </el-form-item>
-              </el-row>
-              <el-row>
+              <!-- </el-row>
+              <el-row> -->
                 <el-form-item prop="planStatus" label="任务状态">
                   <el-select
                     prop="planStatus"

+ 2 - 2
src/views/scorestatistics/pointsDialog.vue

@@ -43,8 +43,8 @@
         align="center"
         fixed
       >
-        <el-table-column label="事件单号" prop="resumptionTaskName"> </el-table-column>
-        <el-table-column label="事件名称" prop="resumptionTaskName"> </el-table-column>
+        <el-table-column label="事件单号" prop="id"> </el-table-column>
+        <el-table-column label="事件名称" prop="taskName"> </el-table-column>
         <el-table-column label="执行机构" prop="orgName"> </el-table-column>
         <el-table-column label="执行人员" prop="execManName"> </el-table-column>
         <el-table-column label="执行岗位" prop="execPostName"> </el-table-column>