Prechádzať zdrojové kódy

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

zhulu 2 rokov pred
rodič
commit
08dc3bed81
46 zmenil súbory, kde vykonal 2410 pridanie a 396 odobranie
  1. 2 2
      .env.development
  2. 20 0
      src/api/core/letter.js
  3. 19 0
      src/api/evaluateTable/evaluateTable.js
  4. 44 0
      src/api/registerbook/registerBook.js
  5. 7 0
      src/api/safetycheck/task.js
  6. 18 0
      src/api/scorestatistics/scorestatistics.js
  7. 2 0
      src/components/orgTree/index.vue
  8. 12 2
      src/components/orgTree/orgDropDown.vue
  9. 5 4
      src/components/userSelector/index.vue
  10. 8 3
      src/views/check/dialog.edit.vue
  11. 16 7
      src/views/check/task/dialog.scanrecord.vue
  12. 39 11
      src/views/check/task/index.vue
  13. 1 1
      src/views/core/edu/plan/index.vue
  14. 204 0
      src/views/core/letter/letterAudit/dialog.letterview.vue
  15. 61 35
      src/views/core/letter/letterAudit/index.vue
  16. 110 0
      src/views/core/letter/letterIndex/dialog.auditview.vue
  17. 79 50
      src/views/core/letter/letterIndex/dialog.editletter.vue
  18. 194 0
      src/views/core/letter/letterIndex/dialog.letterview.vue
  19. 301 0
      src/views/core/letter/letterIndex/index.vue
  20. 3 3
      src/views/core/reportForms/safetyInspectReport.vue
  21. 13 10
      src/views/core/send/index.vue
  22. 29 17
      src/views/evaluateTable/index.vue
  23. 22 7
      src/views/evaluationRule/addEvaluate.vue
  24. 2 2
      src/views/evaluationRule/index.vue
  25. 1 1
      src/views/monitor/job/index.vue
  26. 7 1
      src/views/question/list/index.vue
  27. 1 0
      src/views/question/reform/index.vue
  28. 154 0
      src/views/registerBook/dialog.list.vue
  29. 384 0
      src/views/registerBook/index.vue
  30. 16 6
      src/views/resumption/ruleManager/dialog.select.point.vue
  31. 4 1
      src/views/resumption/taskManager/dialog.detail.vue
  32. 8 3
      src/views/resumption/taskManager/dialog.scanrecord.vue
  33. 71 58
      src/views/resumption/taskManager/index.vue
  34. 7 5
      src/views/resumptionEvaluate/evaluate/addEvaluate.vue
  35. 2 1
      src/views/resumptionEvaluate/evaluate/index.vue
  36. 13 5
      src/views/resumptionEvaluate/evaluatePlan/index.vue
  37. 1 1
      src/views/safetycheck/rule/index.vue
  38. 21 12
      src/views/safetycheck/ruleManager/dialog.select.point.vue
  39. 49 28
      src/views/safetycheck/taskManager/components/checkRegister.vue
  40. 6 6
      src/views/safetycheck/taskManager/components/register.vue
  41. 117 80
      src/views/scorestatistics/index.vue
  42. 109 0
      src/views/scorestatistics/pointsDialog.vue
  43. 225 18
      src/views/scorestatistics/scorestatisticsDialog.vue
  44. 0 14
      src/views/system/device/index.vue
  45. 1 0
      src/views/system/menu/index.vue
  46. 2 2
      src/views/system/user/index.vue

+ 2 - 2
.env.development

@@ -14,8 +14,8 @@ ENV = 'development'
 #高雄
 #VUE_APP_BASE_API = 'http://10.87.11.94:8080'
 #景远超
-VUE_APP_BASE_API = 'http://10.87.11.173:8080'
-# VUE_APP_BASE_API = 'http://localhost:8080'
+# VUE_APP_BASE_API = 'http://10.87.11.173:8080'
+VUE_APP_BASE_API = 'http://localhost:8080'
 # 55环境
 # VUE_APP_BASE_API = 'http://10.87.10.55:8080'
 

+ 20 - 0
src/api/core/letter.js

@@ -9,6 +9,13 @@ export function listLetter(query) {
   })
 }
 
+export function auditListLetter(query) {
+  return request({
+    url: '/core/letter/auditList',
+    method: 'get',
+    params: query
+  })
+}
 // 查询详细介绍信
 export function getLetter(id) {
   return request({
@@ -16,6 +23,12 @@ export function getLetter(id) {
     method: 'get'
   })
 }
+export function auditAllList(id) {
+  return request({
+    url: '/core/letter/auditAllList/' + id,
+    method: 'get'
+  })
+}
 
 // 新增介绍信
 export function addLetter(data) {
@@ -34,6 +47,13 @@ export function updateLetter(data) {
     data: data
   })
 }
+export function auditLetter(data) {
+  return request({
+    url: '/core/letter/auditLetter',
+    method: 'post',
+    data: data
+  })
+}
 
 
 // 修改介绍信

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

@@ -0,0 +1,19 @@
+import request from "@/utils/request";
+//统计报表评价
+// 查询列表分页
+export function list(query) {
+  return request({
+    url: "/core/task/statistics",
+    method: "get",
+    params: query,
+  });
+}
+export function getPlanList(query) {
+  return request({
+    url: "/core/evaluatePlan/allList",
+    method: "get",
+    params: query,
+  });
+}
+
+

+ 44 - 0
src/api/registerbook/registerBook.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询列表registerBook
+export function listRegisterBook(query) {
+  return request({
+    url: '/core/registerBook/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询详细registerBook
+export function getRegisterBook(id) {
+  return request({
+    url: '/core/registerBook/' + id,
+    method: 'get'
+  })
+}
+
+// 新增registerBook
+export function addRegisterBook(data) {
+  return request({
+    url: '/core/registerBook',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改registerBook
+export function updateRegisterBook(data) {
+  return request({
+    url: '/core/registerBook',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除registerBook
+export function delRegisterBook(id) {
+  return request({
+    url: '/core/registerBook/' + id,
+    method: 'delete'
+  })
+}

+ 7 - 0
src/api/safetycheck/task.js

@@ -9,6 +9,13 @@ export function page(query) {
   });
 }
 
+export function remove(taskId) {
+  return request({
+    url: "/core/safetyTask/task/"+taskId,
+    method: "delete",
+  });
+}
+
 //获取计划列表
 export function getPlans(args) {
   return request({

+ 18 - 0
src/api/scorestatistics/scorestatistics.js

@@ -39,4 +39,22 @@ export function getEvaluateById(id) {
     method: "get",
   });
 }
+// 获取月度第一弹框详情
+export function getBysingleOrg(data) {
+  return request({
+   
+    url: `/core/safeMonthScore/find/singleOrg`,
+    method: "post",
+    data,
+  });
+}
+// 获取月度第二弹框详情
+export function getBysingleData(data) {
+  return request({
+   
+    url: `/core/safeMonthScore/singleData/detail`,
+    method: "post",
+    data,
+  });
+}
 

+ 2 - 0
src/components/orgTree/index.vue

@@ -192,6 +192,8 @@ export default {
 .el-tree-ex {
   ::v-deep .is-current > .el-tree-node__content {
     background-color: #d1e0f1 !important;
+    display:inline-flex;
+    min-width:100%;
   }
 }
 </style>

+ 12 - 2
src/components/orgTree/orgDropDown.vue

@@ -24,6 +24,10 @@ export default {
       type: String,
       default: "shortName",
     },
+    orgTreeType:{ //取值范围:business,org
+      type: String,
+      default: "business",
+    }
   },
   watch: {
     value(v) {
@@ -38,7 +42,8 @@ export default {
         console.info(this.currentNode)
         this.$emit("select", this.currentNode);
       }
-    },orgTree(val)
+    },
+    orgTree(val)
     {
       this.getDeptTree();
     },
@@ -52,7 +57,12 @@ export default {
   methods: {
     /** 查询机构下拉树结构 */
     getDeptTree() {
-      this.deptOptions = this.$store.getters.businessTree;
+      if(this.orgTreeType==='business'){
+        this.deptOptions = this.$store.getters.businessTree;
+      }else{
+        this.deptOptions = this.orgTree;
+      }
+      
       if (this.deptOptions && this.deptOptions.length > 0) {
         if (this.val) {
           this.currentNode = this.findNodeInOptions(this.val);

+ 5 - 4
src/components/userSelector/index.vue

@@ -37,7 +37,7 @@
           >
             <!-- 搜索 -->
             <template slot="searchs">
-              <el-form-item  prop="ruleId" label="用户账号">
+              <el-form-item  prop="username" label="用户账号">
                 <el-input v-model="search.username" clearable></el-input>
               </el-form-item>
               <el-form-item prop="name" label="用户姓名">
@@ -66,7 +66,7 @@
                 label="序号"
                 type="index"
                 align="center"
-                width="50"
+                width="60"
               ></el-table-column>
               <el-table-column
                 label="用户账号"
@@ -84,7 +84,7 @@
               />
               <el-table-column
                 label="所属机构"
-                align="left"
+                header-align="center"
                 key="orgName"
                 prop="orgName"
                 :show-overflow-tooltip="true"
@@ -156,7 +156,8 @@ export default {
       this.refresh()   
     },
     resetQuery() {
-      this.resetForm("search");
+      this.search=this.emptySearch();
+      // this.resetForm("search");
       // this.queryParams.orgId = undefined;
       // this.$refs.tree.setCurrentKey(null);
       this.refresh();

+ 8 - 3
src/views/check/dialog.edit.vue

@@ -5,7 +5,7 @@
       :visible.sync="isShow"
       width="1500px"
     >
-      <div class="page-body">
+      <div class="page-body" v-loading="loading">
         <el-form
           :model="formData"
           :rules="formDataRules"
@@ -361,6 +361,7 @@ export default {
   ],
   data() {
     return {
+      loading: false,
       parentCount: 1,
       defaultSelect: [],
       selectedValues: [],
@@ -670,9 +671,13 @@ export default {
         this.formData.roleList = null;
         this.formData.roleIds =
           this.selectedValues.length == 0 ? null : this.selectedValues;
-        await api.add(this.formData);
-        this.$emit("success");
+          this.loading = true;
+        await api.add(this.formData).then(data=>{
+          this.loading = false;
+          this.$emit("success");
         this.onHide();
+        });
+        
       });
     },
     handleRolesChange(val) {

+ 16 - 7
src/views/check/task/dialog.scanrecord.vue

@@ -3,8 +3,7 @@
     <DialogCom
       title="扫描记录"
       :visible.sync="isShow"
-      width="800px"
-      :destroy-on-close="true"
+      width="850px"
     >
       <el-table :data="tableData" border>
         <el-table-column
@@ -12,6 +11,7 @@
           align="center"
           :show-overflow-tooltip="true"
           prop="areaName"
+          min-width="100px"
         >
         </el-table-column>
         <el-table-column
@@ -19,9 +19,17 @@
           align="center"
           :show-overflow-tooltip="true"
           prop="collectionAreaName"
+          min-width="120px"
         >
         </el-table-column>
-
+        <el-table-column
+        label="NFC标签名称"
+        align="center"
+        :show-overflow-tooltip="true"
+        prop="nfcName"
+        min-width="120px"
+      >
+      </el-table-column>
         <el-table-column
           label="扫描时间"
           align="center"
@@ -33,13 +41,13 @@
         <el-table-column
           label="扫描方式"
           align="center"
-          width="80px"
+          width="100px"
           :show-overflow-tooltip="true"
           prop="scanMethod"
         >
           <template slot-scope="r">
-            <span v-if="r.row.scanMethod === 0">扫描</span>
-            <span v-else>拍照</span>
+            <span v-if="r.row.scanMethod === 0">感应</span>
+            <span v-else>图片</span>
           </template>
         </el-table-column>
         <el-table-column
@@ -47,9 +55,10 @@
           align="center"
           :show-overflow-tooltip="true"
           prop="img"
+          min-width="150px"
         >
           <template slot-scope="r">
-            <label v-if="r.row.scanMethod == 0">-</label>
+            <label v-if="r.row.scanMethod == 0">{{r.row.nfcCode}}}</label>
             <el-image
               v-else
               style="width: 50px; height: 50px"

+ 39 - 11
src/views/check/task/index.vue

@@ -8,7 +8,6 @@
           @defaultKey="getDefaultKey"
           @checkChange="checkChange"
           @click="clickTreeNode"
-          :businessTree="true"
         ></org-tree>
       </el-col>
       <el-col :span="20" :xs="24">
@@ -124,7 +123,6 @@
                   start-placeholder="开始日期"
                   end-placeholder="结束日期"
                   v-model="queryParams.range"
-                  :picker-options="pickerOptions"
                 >
                 </DataRangePicker>
               </el-form-item>
@@ -174,6 +172,7 @@
             >
             </el-table-column>
             <el-table-column
+              header-align="center"
               prop="title"
               label="任务名称"
               width="250px"
@@ -182,9 +181,9 @@
             >
             </el-table-column>
             <el-table-column
+              header-align="center"
               prop="checkOrgName"
               label="检查主体"
-              align="center"
               width="180px"
               v-if="columns[5].visible"
             >
@@ -208,7 +207,7 @@
               prop="status"
               label="任务进度"
               align="center"
-              width="180px"
+              width="120px"
               v-if="columns[10].visible"
             >
               <template slot-scope="r">
@@ -226,7 +225,7 @@
             <el-table-column
               prop="orgName"
               label="受检机构"
-              align="center"
+              header-align="center"
               width="180px"
               v-if="columns[4].visible"
             >
@@ -235,7 +234,7 @@
             <el-table-column
               prop="planStartTime"
               label="任务时间"
-              align="center"
+              header-align="center"
               width="300px"
               v-if="columns[2].visible"
               ><template slot-scope="r">
@@ -281,7 +280,7 @@
               align="center"
               prop="exceptionCount"
               label="隐患问题数"
-              width="180px"
+              width="120px"
               v-if="columns[9].visible"
             >
             </el-table-column>
@@ -296,8 +295,8 @@
             <el-table-column
               label="操作"
               fixed="right"
-              align="center"
-              width="180px"
+              header-align="center"
+              width="200px"
             >
               <template slot-scope="r">
                 <!-- <el-button v-if="
@@ -312,13 +311,14 @@
                 <el-button
                   type="text"
                   @click="showDetail(r.row)"
-                  v-hasPermi="['resumption:taskManager:query']"
+                  v-hasPermi="['core:task:query']"
                   >详情</el-button
                 >
                 <el-button
                   type="text"
                   @click="showscanRecord(r.row)"
-                  v-hasPermi="['resumption:taskManager:query']"
+                  v-if="r.row.status == 2 || r.row.status == 3"
+                  v-hasPermi="['core:task:query']"
                   >扫描记录</el-button
                 >
                 <el-button
@@ -327,6 +327,19 @@
                   v-if="showRegisterBtn(r.row)"
                   >任务登记</el-button
                 >
+                <el-button
+                  type="text"
+                  size="mini"
+                  slot="reference"
+                  icon="el-icon-delete"
+                  @click="handleDel(r.row.id)"
+                  v-if="
+                    r.row.status == 3 &&
+                    r.row.submitorId == userId &&
+                    r.row.sourceType == 1
+                  "
+                  >删除</el-button
+                >
               </template>
             </el-table-column>
           </el-table>
@@ -508,6 +521,21 @@ export default {
       let path = "/safetycheck/tempregister/add";
       this.$router.push(path);
     },
+    handleDel(taskId) {
+      this.$modal
+        .confirm("确认删除该临时登记?")
+        .then(() => {
+          return api.remove(taskId);
+        })
+        .then((r) => {
+          if (r && r.data) {
+            this.$message.info("删除成功");
+            this.getList();
+          } else {
+            this.$message.warning("删除失败");
+          }
+        });
+    },
     async getList() {
       console.log(this.queryParams, "this.queryParams");
       this.loading = true;

+ 1 - 1
src/views/core/edu/plan/index.vue

@@ -51,7 +51,7 @@
           </el-form-item> -->
         </el-form>
 
-        <el-row :gutter="10" class="mb8">
+        <el-row :gutter="10" >
           <el-col :span="1.5">
             <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
           </el-col>

+ 204 - 0
src/views/core/letter/letterAudit/dialog.letterview.vue

@@ -0,0 +1,204 @@
+<template>
+  <div class="edu-training-edit">
+    <DialogCom :title="title" @close="onHide" :visible.sync="isShow" width="800px">
+      <div class="page-body">
+        <el-form ref="form" :model="formData"  label-width="150px">
+          <el-row>
+            <el-col :span="24">
+              <el-form-item  label="介绍信名称:">
+                {{formData.letterName}}
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item   label="介绍信有效期限:">
+                {{formData.startTimeStr}}~{{formData.endTimeStr}}
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="创建机构:">
+                {{formData.orgName}}
+              </el-form-item>
+            </el-col>
+<!--            <el-col :span="24">
+              <el-form-item label="接待机构:">
+                {{formData.orgNames}}
+              </el-form-item>
+            </el-col>-->
+
+          <el-form-item label="介绍信文件:" >
+            <K-file-upload ref="upload" :defaultValue="formFileListDefualtValue" :disabled="true"  :isShowUploadBtn="false" v-model="formData.letterFile"/>
+          </el-form-item>
+
+          <el-form-item label="备注:" >
+            {{formData.description}}
+          </el-form-item>
+          </el-row>
+          <el-table  :data="formData.userInfos">
+            <el-table-column label="人员姓名" align="center" prop="userName" />
+            <el-table-column label="单位" align="center" prop="companyName" />
+            <el-table-column label="证据号码" align="center" prop="idCard">
+            </el-table-column>
+            <el-table-column label="证件" align="center" prop="imgFile" >
+              <template slot-scope="scope">
+                <img width="50" height="50" :src="splitImgFilePath(scope.row.imgFile,0)">
+                <img width="50" height="50" :src="splitImgFilePath(scope.row.imgFile,1)">
+              </template>
+            </el-table-column>
+          </el-table>
+          <el-row v-if="!showAudit">
+            <el-form-item label="审核:"  prop="checkStatus">
+              {{formData.checkLog.checkStatus==null?"":formData.checkLog.checkStatus===1?"通过":"不通过"}}
+            </el-form-item>
+            <el-form-item label="审核意见:"  prop="checkRemark">
+             {{formData.checkLog.checkRemark}}
+            </el-form-item>
+          </el-row>
+
+
+          <el-row v-if="showAudit">
+            <el-form-item label="审核:"  prop="checkStatus">
+              <template>
+                <el-radio-group v-model="formData.checkLog.checkStatus">
+                  <el-radio  :label="1">通过</el-radio>
+                  <el-radio  :label="2">不通过</el-radio>
+                </el-radio-group>
+              </template>
+            </el-form-item>
+          <el-form-item label="审核意见:"  prop="checkRemark">
+            <el-input v-model="formData.checkLog.checkRemark" type="textarea" placeholder="请输入内容" />
+          </el-form-item>
+          </el-row>
+        </el-form>
+      </div>
+
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="onHide">取 消</el-button>
+        <el-button type="primary" @click="submitForm" v-if="showAudit">确 定</el-button>
+      </div>
+    </DialogCom>
+  </div>
+
+</template>
+<script>
+import {mapState, mapMutations} from "vuex";
+import { getLetter,auditLetter} from "@/api/core/letter";
+import KFileUpload from "@/components/K-FileUpload";
+export default {
+  components: {KFileUpload},
+  data() {
+    const params = this.$route.params;
+    return {
+      id: params ? params.id : null,
+      isShow: false,
+      formData: this.reset(),
+      formFileListDefualtValue: [],
+      open: false,
+      userInfo:this.resetUserInfo(),
+      imageList:[],
+      title:null,
+      index:null,
+      showAudit:false
+    };
+  },
+  dicts: ['letter_status'],
+  props: {},
+  watch: {},
+  created() {
+  },
+  computed: {
+    ...mapState(["loginUser", "org",]),
+
+  },
+  methods: {
+    ...mapMutations([]),
+    reset(other = {}) {
+      return {
+        letterName:null,
+        orgIds:null,
+        startTime: null,
+        endTime: null,
+        fileList: [],
+        userInfos:[],
+        checkLog:this.resetCheckLog(),
+        letterFile:null,
+        startTimeStr:null,
+        endTimeStr:null,
+        orgName:null,
+        orgNames:null,
+        description:null,
+        ...other,
+      };
+    },
+    resetUserInfo(){
+      return {
+        userName: null,
+        companyName:null,
+        idCard:null,
+        imgFile:null,
+      }
+    },
+    resetCheckLog(){
+      return {
+        id: null,
+        checkUser:null,
+        checkTime:null,
+        checkStatus:null,
+        checkRemark:null,
+        letterId:null,
+        orgId:null,
+        status:null,
+      }
+    },
+    splitImgFilePath(imgPaths,index){
+      if(imgPaths==null){
+        return null;
+      }
+      return imgPaths.split(',')[index];
+    },
+    async show(id,type, other = {}) {
+      this.isShow = true;
+      if(type===0){
+        this.title = "介绍信详情";
+        this.showAudit=false;
+      }else{
+        this.title = "介绍信审批";
+        this.showAudit=true;
+      }
+          getLetter(id).then(response => {
+          this.formData = response.data;
+          this.userInfo = response.data.userInfos;
+          this.formFileListDefualtValue = response.data.letterFile;
+        });
+
+
+    },
+    onHide() {
+      this.isShow = false;
+      this.showAudit=false;
+      this.formData = this.reset();
+     /* this.userInfo = this.resetUserInfo();*/
+      this.$emit('closed')
+    },
+    submitForm(){
+       if(this.formData.checkLog.checkStatus==null){
+         this.$message.error("请选择审核状态");
+         return;
+       }
+       if(this.formData.checkLog.checkStatus==2&&!this.formData.checkLog.checkRemark){
+         this.$message.error("请填写审批意见");
+         return;
+       }
+       auditLetter(this.formData).then(response => {
+         this.$modal.msgSuccess("审批成功");
+       });
+       this.onHide();
+    },
+  },
+  mounted() {
+  },
+};
+</script>
+
+
+
+

+ 61 - 35
src/views/core/letter/index.vue → src/views/core/letter/letterAudit/index.vue

@@ -9,8 +9,8 @@
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="状态" prop="checkStatus">
-        <el-select v-model="queryParams.checkStatus" placeholder="请选择状态" clearable>
+      <el-form-item label="状态" prop="status">
+        <el-select v-model="queryParams.status" placeholder="请选择状态" clearable>
           <el-option
             v-for="dict in dict.type.letter_status"
             :key="dict.value"
@@ -26,46 +26,49 @@
     </el-form>
 
     <el-row :gutter="10" class="mb8">
-      <el-col :span="1.5">
-        <el-button
-          type="primary"
-          plain
-          icon="el-icon-plus"
-          size="mini"
-          @click="handleAdd"
-          v-hasPermi="['core:letter:add']"
-        >录入介绍信</el-button>
-      </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
     <el-table v-loading="loading" :data="letterList" @selection-change="handleSelectionChange">
       <el-table-column label="介绍信名称" align="center" prop="letterName" />
-      <el-table-column label="介绍信有效期" align="center" prop="startTime" width="180">
+      <el-table-column label="介绍信有效期" align="center" prop="startTime" width="250">
         <template slot-scope="scope">
           <span>{{ scope.row.startTime}}~{{scope.row.endTime}}</span>
         </template>
       </el-table-column>
-      <el-table-column label="接待机构" align="center" prop="checkStatus" />
-      <el-table-column label="创建机构" align="center" prop="checkStatus" />
-      <el-table-column label="状态" align="center" prop="checkStatus" />
-      <el-table-column label="备注" align="center" prop="checkRemark" />
+<!--      <el-table-column label="接待机构" align="center" prop="orgNames" >
+        <template slot-scope="r">
+          <span class="text-style" :title="r.row.orgNames">{{ r.row.orgNames }}</span>
+        </template>
+      </el-table-column>-->
+      <el-table-column label="创建机构" align="center" prop="orgName" />
+      <el-table-column label="状态" width="80" align="center" prop="status" >
+        <template slot-scope="r">
+          <dict-tag :options="dict.type.letter_status" :value="r.row.status"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="审批意见" align="center" prop="description" >
+        <template slot-scope="r">
+          <span class="text-style" :title="r.row.checkRemark">{{ r.row.checkRemark }}</span>
+        </template>
+      </el-table-column>
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
-        <template slot-scope="scope">
+        <template slot-scope="r">
           <el-button
             size="mini"
             type="text"
-            icon="el-icon-edit"
-            @click="handleUpdate(scope.row)"
-            v-hasPermi="['core:letter:edit']"
-          >修改</el-button>
+            icon="el-icon-view"
+            @click="LookOrAudit(r.row.id,0)"
+            v-hasPermi="['core:letter:query']"
+          >详情</el-button>
           <el-button
             size="mini"
             type="text"
-            icon="el-icon-delete"
-            @click="handleDelete(scope.row)"
-            v-hasPermi="['core:letter:remove']"
-          >删除</el-button>
+            icon="el-icon-edit"
+            @click="LookOrAudit(r.row.id,1)"
+            v-hasPermi="['core:letter:audit']"
+            v-if="r.row.status=== 0"
+          >审批</el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -77,16 +80,16 @@
       :limit.sync="queryParams.pageSize"
       @pagination="getList"
     />
-    <dialog-add-letter ref="dialogAddLetter" @success="handleQuery(true)"></dialog-add-letter>
+    <dialog-letter-view ref="dialogLetterView" @success="handleQuery(true)" @closed="getList"></dialog-letter-view>
   </div>
 </template>
 
 <script>
-import { listLetter, getLetter, delLetter, addLetter, updateLetter } from "@/api/core/letter";
-import dialogAddLetter from "./dialog.addletter";
+import { auditListLetter, getLetter, delLetter, addLetter, updateLetter } from "@/api/core/letter";
+import dialogLetterView from "./dialog.letterview";
 
 export default {
-  components: {dialogAddLetter},
+  components: {dialogLetterView},
   dicts: ['letter_status'],
   name: "Letter",
   data() {
@@ -114,7 +117,8 @@ export default {
         pageNum: 1,
         pageSize: 10,
         letterName: null,
-        checkStatus: null,
+        status: null,
+        orgId:null,
       },
       // 表单参数
       form: {},
@@ -124,13 +128,14 @@ export default {
     };
   },
   created() {
+    this.queryParams.orgId = this.$store.getters.orgId;
     this.getList();
   },
   methods: {
     /** 查询介绍信列表 */
     getList() {
       this.loading = true;
-      listLetter(this.queryParams).then(response => {
+      auditListLetter(this.queryParams).then(response => {
         this.letterList = response.rows;
         this.total = response.total;
         this.loading = false;
@@ -155,7 +160,8 @@ export default {
         checkUser: null,
         checkTime: null,
         checkStatus: null,
-        checkRemark: null,
+        status:null,
+        description: null,
         createBy: null,
         createTime: null
       };
@@ -178,9 +184,13 @@ export default {
       this.multiple = !selection.length
     },
     /** 新增按钮操作 */
-    handleAdd(id) {
+    handleAddOrUpdate(id) {
       this.$refs["dialogAddLetter"].show(id,{});
     },
+    LookOrAudit(id,type) {
+      this.$refs["dialogLetterView"].show(id,type,{});
+    },
+
     /** 修改按钮操作 */
     handleUpdate(row) {
       this.reset();
@@ -214,7 +224,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.$modal.confirm('是否确认删除介绍信编号为"' + ids + '"的数据项?').then(function() {
+      this.$modal.confirm('是否确认删除该介绍信记录?').then(function() {
         return delLetter(ids);
       }).then(() => {
         this.getList();
@@ -230,3 +240,19 @@ export default {
   }
 };
 </script>
+
+<style lang="scss">
+.title {
+clear: both;
+margin: auto;
+text-align: center;
+color: black;
+font-size: xx-large;
+letter-spacing: 3px;
+}
+.text-style{
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+</style>

+ 110 - 0
src/views/core/letter/letterIndex/dialog.auditview.vue

@@ -0,0 +1,110 @@
+<template>
+  <div class="edu-training-edit">
+    <DialogCom title="审核情况" @close="onHide" :visible.sync="isShow" width="960px">
+      <div class="page-body">
+        <el-form ref="form" :model="formData"  label-width="150px">
+          <el-table  :data="formData">
+            <el-table-column label="接待机构" align="center" prop="orgName" />
+            <el-table-column label="审核状态" align="center" prop="status" width="80" >
+              <template slot-scope="r">
+                <dict-tag :options="dict.type.letter_status" :value="r.row.status"/>
+              </template>
+            </el-table-column>
+            <el-table-column label="审核结果" align="center" prop="checkStatus" width="80">
+              <template slot-scope="r">
+                <span>{{r.row.checkStatus==null?"待审批":r.row.checkStatus===1?"通过":"不通过"}}</span>
+              </template>
+            </el-table-column>
+            <el-table-column label="审核人" align="center" prop="checkUser" width="100"/>
+            <el-table-column label="审核时间" align="center" prop="checkTime"/>
+            <el-table-column label="审核意见" align="center" prop="checkRemark">
+            <template slot-scope="r">
+              <span class="text-style" :title="r.row.checkRemark">{{ r.row.checkRemark }}</span>
+            </template>
+            </el-table-column>
+          </el-table>
+        </el-form>
+      </div>
+
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="onHide">取 消</el-button>
+<!--        <el-button type="primary" @click="submitForm" v-if="showAudit">确 定</el-button>-->
+      </div>
+    </DialogCom>
+  </div>
+
+</template>
+<script>
+import {mapState, mapMutations} from "vuex";
+import {auditAllList} from "@/api/core/letter";
+export default {
+  components: {},
+  data() {
+    const params = this.$route.params;
+    return {
+      id: params ? params.id : null,
+      isShow: false,
+      formData: this.reset(),
+    };
+  },
+  dicts: ['letter_status'],
+  props: {},
+  watch: {},
+  created() {
+  },
+  computed: {
+    ...mapState(["loginUser", "org",]),
+
+  },
+  methods: {
+    ...mapMutations([]),
+    reset(other = {}) {
+      return {
+        id: null,
+        checkUser:null,
+        checkTime:null,
+        checkStatus:null,
+        checkRemark:null,
+        letterId:null,
+        orgId:null,
+        status:null,
+        ...other,
+      };
+    },
+
+
+    async show(id, other = {}) {
+      this.isShow = true;
+       auditAllList(id).then(response => {
+          this.formData = response.data;
+        });
+
+
+    },
+    onHide() {
+      this.isShow = false;
+      this.formData = this.reset();
+      this.$emit('closed')
+    },
+  },
+  mounted() {
+  },
+};
+</script>
+<style lang="scss">
+.title {
+  clear: both;
+  margin: auto;
+  text-align: center;
+  color: black;
+  font-size: xx-large;
+  letter-spacing: 3px;
+}
+.text-style{
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+</style>
+
+

+ 79 - 50
src/views/core/letter/dialog.addletter.vue → src/views/core/letter/letterIndex/dialog.editletter.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="edu-training-edit">
-    <DialogCom :title="'录入介绍信'" :close="onHide" :visible.sync="isShow" width="960px">
+    <DialogCom :title="title" @close="onHide" :visible.sync="isShow" width="800px">
       <div class="page-body">
         <el-form ref="form" :model="formData" :rules="formDataRules" label-width="100px">
           <el-row>
@@ -11,10 +11,11 @@
             </el-col>
 
             <el-col :span="12">
-              <el-form-item label="接待机构" prop="orgId">
+              <el-form-item label="接待机构" prop="orgIds">
                 <org-tree-select
-                  v-model="formData.orgId"
+                  v-model="formData.orgIds"
                   ref="orgTreeSelect"
+                  :enabledCheckOrgTypes="orgType"
                 >
                 </org-tree-select>
               </el-form-item>
@@ -28,7 +29,7 @@
               </el-form-item>
             </el-col>
             <el-col :span="12">
-              <el-form-item prop="endTime" label="培训结束时间">
+              <el-form-item prop="endTime" label="有效结束时间">
                 <el-date-picker required v-model="formData.endTime" :picker-options="endDatepickerOptions" @change="endDateChanged"
                                 type="date" placeholder="选择日期">
                 </el-date-picker>
@@ -43,8 +44,8 @@
             <K-file-upload ref="upload" :defaultValue="formFileListDefualtValue" v-model="formData.letterFile"/>
           </el-form-item>
 
-          <el-form-item label="备注" prop="checkRemark">
-            <el-input v-model="formData.checkRemark" type="textarea" placeholder="请输入内容" />
+          <el-form-item label="备注" prop="description">
+            <el-input v-model="formData.description" type="textarea" placeholder="请输入内容" />
           </el-form-item>
           <el-row :gutter="10" class="mb8">
             <el-col :span="1.5">
@@ -58,22 +59,23 @@
             </el-col>
           </el-row>
 
-          <el-table v-loading="loading" :data="formData.userInfos">
+          <el-table  :data="formData.userInfos">
             <el-table-column label="人员姓名" align="center" prop="userName" />
             <el-table-column label="单位" align="center" prop="companyName" />
             <el-table-column label="证据号码" align="center" prop="idCard">
             </el-table-column>
             <el-table-column label="证件" align="center" prop="imgFile" >
               <template slot-scope="scope">
-                <img width="50" height="50" :src="scope.row.imgFile">
+                <img width="50" height="50" :src="splitImgFilePath(scope.row.imgFile,0)">
+                <img width="50" height="50" :src="splitImgFilePath(scope.row.imgFile,1)">
               </template>
-            </el-table-column>>
+            </el-table-column>
             <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
               <template slot-scope="scope">
               <el-button
                 size="mini"
                 type="text"
-                @click="editUser(scope.row)"
+                @click="editUser(scope.row,scope.$index)"
               >编辑</el-button>
                 <el-button
                   size="mini"
@@ -86,31 +88,32 @@
         </el-form>
       </div>
 
-      <DialogCom title="添加出入人员" :visible.sync="open" width="800px" append-to-body @close="onHideUser">
-        <el-form ref="formUser" :model="userInfo" :rules="userInfoRules" label-width="80px">
-          <el-form-item label="人员姓名" prop="userName">
-            <el-input v-model="userInfo.userName" placeholder="请输入姓名" />
-          </el-form-item>
-          <el-form-item label="单位" prop="companyName">
-            <el-input v-model="userInfo.companyName" placeholder="请输入单位" />
-          </el-form-item>
-          <el-form-item label="证件号码" prop="idCard">
-            <el-input v-model="userInfo.idCard" placeholder="请输入证件号码" />
-          </el-form-item>
-          <el-form-item prop="imgFile" label="上传图片">
-            <imgUpload ref="uploadimage" type="alone" :value="userInfo.imgFile"
-                       @input="imageListChanged"></imgUpload>
-          </el-form-item>
-        </el-form>
-        <div slot="footer" class="dialog-footer">
-          <el-button type="primary" @click="submitUser">确 定</el-button>
-          <el-button @click="onHideUser">取 消</el-button>
-        </div>
-      </DialogCom>
-
       <div slot="footer" class="dialog-footer">
-        <el-button type="primary" @click="submitForm">确 定</el-button>
         <el-button @click="onHide">取 消</el-button>
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+      </div>
+    </DialogCom>
+
+
+    <DialogCom title="添加出入人员" :visible.sync="open" width="800px" append-to-body @close="onHideUser">
+      <el-form ref="formUser" :model="userInfo" :rules="userInfoRules" label-width="80px">
+        <el-form-item label="人员姓名" prop="userName">
+          <el-input v-model="userInfo.userName" placeholder="请输入姓名" />
+        </el-form-item>
+        <el-form-item label="单位" prop="companyName">
+          <el-input v-model="userInfo.companyName" placeholder="请输入单位" />
+        </el-form-item>
+        <el-form-item label="证件号码" prop="idCard">
+          <el-input v-model="userInfo.idCard" placeholder="请输入证件号码" />
+        </el-form-item>
+        <el-form-item prop="imgFile" label="上传图片">
+          <imgUpload ref="imgUpload" :limit="2" type="more" :value="userInfo.imgFile"
+                     @input="imageListChanged"></imgUpload>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="onHideUser">取 消</el-button>
+        <el-button type="primary" @click="submitUser">确 定</el-button>
       </div>
     </DialogCom>
   </div>
@@ -120,7 +123,7 @@
 import {mapState, mapMutations} from "vuex";
 import { listLetter, getLetter, delLetter, addLetter, updateLetter } from "@/api/core/letter";
 import OrgTreeSelect from "@/components/orgTreeSelect";
-import KFileUpload from "@/components/K-FileUpload/index.vue";
+import KFileUpload from "@/components/K-FileUpload";
 import dayjs from "dayjs";
 import imgUpload from "@/components/ImageUpload";
 export default {
@@ -133,7 +136,7 @@ export default {
       formData: this.reset(),
       formDataRules: {
         letterName: [{required: true, message: "请输入介绍信名称"}],
-        orgId: [{required: true, message: "请选择接待机构"}],
+        orgIds: [{required: true, message: "请选择接待机构"}],
         startTime: [{required: true,  message: "请选择有效开始时间"}],
         endTime: [{required: true, message: "请选择有效结束时间"}],
         userInfos:[{required: true, message: "请添加出入人员"}],
@@ -151,8 +154,11 @@ export default {
       },
       formFileListDefualtValue: [],
       open: false,
-      userInfo:this.resetUserInfo(),
-      imageList:[]
+      userInfo: this.resetUserInfo(),
+      imageList:[],
+      title:null,
+      index:null,
+      orgType:4
     };
   },
   dicts: ['letter_status'],
@@ -169,12 +175,13 @@ export default {
     reset(other = {}) {
       return {
         letterName:null,
-        orgId:null,
+        orgIds:null,
         startTime: null,
         endTime: null,
-        checkRemark: null,
+        description: null,
         fileList: [],
-        userInfos:[],
+        userInfos:null,
+        letterFile:null,
         ...other,
       };
     },
@@ -186,12 +193,28 @@ export default {
         imgFile:null,
       }
     },
-
+    splitImgFilePath(imgPaths,index){
+      return imgPaths.split(',')[index];
+    },
     async show(id, other = {}) {
       this.isShow = true;
+      this.title = "新增介绍信";
+      console.log("-----------------",id);
+      if(id){
+          getLetter(id).then(response => {
+          this.formData = response.data;
+          this.userInfos = response.data.userInfos;
+          this.orgIds = response.data.orgIds;
+          this.formFileListDefualtValue = response.data.letterFile;
+          this.title = "修改介绍信";
+          console.log("-----------------",this.formFileListDefualtValue);
+        });
+      }
+
     },
     handleAddUser() {
       this.open = true;
+      console.log(this.userInfo,'hhhh')
     },
     imageListChanged(list) {
       this.userInfo.imgFile = list;
@@ -220,6 +243,8 @@ export default {
     onHide() {
       this.isShow = false;
       this.formData = this.reset();
+      this.$refs["upload"].clearFiles();
+      this.$emit('closed')
     },
     onHideUser() {
       this.open = false;
@@ -231,9 +256,14 @@ export default {
           if (valid) {
             this.open = false;
             console.log("================",this.userInfo);
-            this.formData.userInfos.push(this.userInfo);
+            if(this.index==null){
+              this.formData.userInfos.push(this.userInfo);
+            }else{
+              this.formData.userInfos[this.index]=this.userInfo;
+            }
             this.userInfo = this.resetUserInfo();
             this.imageList=[];
+            this.index=null;
           }})
     },
     submitForm(){
@@ -247,24 +277,23 @@ export default {
           if (this.formData.id != null) {
             updateLetter(this.formData).then(response => {
               this.$modal.msgSuccess("修改成功");
-              this.isShow = false;
-              this.formData = this.reset();
-              this.getList();
             });
           } else {
             addLetter(this.formData).then(response => {
               this.$modal.msgSuccess("新增成功");
-              this.isShow = false;
-              this.formData = this.reset();
-              this.getList();
             });
           }
-
+          this.onHide();
+         /* this.isShow = false;
+          this.formData = this.reset();
+          this.getList();
+          this.$refs["upload"].clearFiles();*/
         }})
     },
-    editUser(row){
+    editUser(row,index){
       this.open = true;
       this.userInfo = row;
+      this.index=index;
     },
     remove(row){
       console.log("================",row);

+ 194 - 0
src/views/core/letter/letterIndex/dialog.letterview.vue

@@ -0,0 +1,194 @@
+<template>
+  <div class="edu-training-edit">
+    <DialogCom :title="title" @close="onHide" :visible.sync="isShow" width="800px">
+      <div class="page-body">
+        <el-form ref="form" :model="formData"  label-width="150px">
+          <el-row>
+            <el-col :span="24">
+              <el-form-item  label="介绍信名称:">
+                {{formData.letterName}}
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item   label="介绍信有效期限:">
+                {{formData.startTimeStr}}~{{formData.endTimeStr}}
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="创建机构:">
+                {{formData.orgName}}
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="接待机构:">
+                {{formData.orgNames}}
+              </el-form-item>
+            </el-col>
+
+          <el-form-item label="介绍信文件:" >
+            <K-file-upload ref="upload" :defaultValue="formFileListDefualtValue" :disabled="true"  :isShowUploadBtn="false" v-model="formData.letterFile"/>
+          </el-form-item>
+
+          <el-form-item label="备注:" >
+            {{formData.description}}
+          </el-form-item>
+          </el-row>
+          <el-table  :data="formData.userInfos">
+            <el-table-column label="人员姓名" align="center" prop="userName" />
+            <el-table-column label="单位" align="center" prop="companyName" />
+            <el-table-column label="证据号码" align="center" prop="idCard">
+            </el-table-column>
+            <el-table-column label="证件" align="center" prop="imgFile" >
+              <template slot-scope="scope">
+                <img width="50" height="50" :src="splitImgFilePath(scope.row.imgFile,0)">
+                <img width="50" height="50" :src="splitImgFilePath(scope.row.imgFile,1)">
+              </template>
+            </el-table-column>
+          </el-table>
+<!--          <el-row v-if="!showAudit">
+            <el-form-item label="审核:"  prop="checkStatus">
+              {{formData.checkStatus==null?"":formData.checkStatus===1?"通过":"不通过"}}
+            </el-form-item>
+            <el-form-item label="审核意见:"  prop="checkRemark">
+             {{formData.checkRemark}}
+            </el-form-item>
+          </el-row>-->
+
+
+<!--          <el-row v-if="showAudit">
+            <el-form-item label="审核:"  prop="checkStatus">
+              <template>
+                <el-radio-group v-model="formData.checkStatus">
+                  <el-radio  :label="1">通过</el-radio>
+                  <el-radio  :label="2">不通过</el-radio>
+                </el-radio-group>
+              </template>
+            </el-form-item>
+          <el-form-item label="审核意见:"  prop="checkRemark">
+            <el-input v-model="formData.checkRemark" type="textarea" placeholder="请输入内容" />
+          </el-form-item>
+          </el-row>-->
+        </el-form>
+      </div>
+
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="onHide">取 消</el-button>
+<!--        <el-button type="primary" @click="submitForm" v-if="showAudit">确 定</el-button>-->
+      </div>
+    </DialogCom>
+  </div>
+
+</template>
+<script>
+import {mapState, mapMutations} from "vuex";
+import { getLetter,auditLetter} from "@/api/core/letter";
+import OrgTreeSelect from "@/components/orgTreeSelect";
+import KFileUpload from "@/components/K-FileUpload";
+import dayjs from "dayjs";
+import imgUpload from "@/components/ImageUpload";
+export default {
+  components: {KFileUpload},
+  data() {
+    const params = this.$route.params;
+    return {
+      id: params ? params.id : null,
+      isShow: false,
+      formData: this.reset(),
+      formFileListDefualtValue: [],
+      open: false,
+      userInfo:this.resetUserInfo(),
+      imageList:[],
+      title:null,
+      index:null,
+      showAudit:false
+    };
+  },
+  dicts: ['letter_status'],
+  props: {},
+  watch: {},
+  created() {
+  },
+  computed: {
+    ...mapState(["loginUser", "org",]),
+
+  },
+  methods: {
+    ...mapMutations([]),
+    reset(other = {}) {
+      return {
+        letterName:null,
+        orgIds:null,
+        startTime: null,
+        endTime: null,
+        checkRemark: null,
+        fileList: [],
+        userInfos:[],
+        letterFile:null,
+        startTimeStr:null,
+        endTimeStr:null,
+        orgName:null,
+        orgNames:null,
+        description:null,
+        ...other,
+      };
+    },
+    resetUserInfo(){
+      return {
+        userName: null,
+        companyName:null,
+        idCard:null,
+        imgFile:null,
+      }
+    },
+
+    async show(id,type, other = {}) {
+      this.isShow = true;
+      if(type===0){
+        this.title = "介绍信详情";
+        this.showAudit=false;
+      }else{
+        this.title = "介绍信审批";
+        this.showAudit=true;
+      }
+          getLetter(id).then(response => {
+          this.formData = response.data;
+          this.userInfo = response.data.userInfos;
+          this.orgIds = response.data.orgIds;
+          this.formFileListDefualtValue = response.data.letterFile;
+            console.log("-----------------",this.formFileListDefualtValue);
+        });
+
+
+    },
+    splitImgFilePath(imgPaths,index){
+      return imgPaths.split(',')[index];
+    },
+    onHide() {
+      this.isShow = false;
+      this.showAudit=false;
+      this.formData = this.reset();
+      this.$emit('closed')
+    },
+    submitForm(){
+       if(this.formData.checkRemark==null){
+         this.$message.error("请选择审核状态");
+         return;
+       }
+       if(this.formData.checkStatus==2&&!this.formData.checkRemark){
+         this.$message.error("请填写审批意见");
+         return;
+       }
+       auditLetter(this.formData).then(response => {
+         this.$modal.msgSuccess("审批成功");
+       });
+       this.onHide();
+    },
+  },
+  mounted() {
+  },
+};
+</script>
+
+
+
+

+ 301 - 0
src/views/core/letter/letterIndex/index.vue

@@ -0,0 +1,301 @@
+<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="letterName">
+        <el-input
+          v-model="queryParams.letterName"
+          placeholder="请输入介绍信名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+<!--      <el-form-item label="状态" prop="status">
+        <el-select v-model="queryParams.status" placeholder="请选择状态" clearable>
+          <el-option
+            v-for="dict in dict.type.letter_status"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
+      </el-form-item>-->
+      <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>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAddOrUpdate(null)"
+          v-hasPermi="['core:letter:add']"
+        >录入介绍信</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="letterList" @selection-change="handleSelectionChange">
+      <el-table-column label="介绍信名称" align="center" prop="letterName" />
+      <el-table-column label="介绍信有效期" align="center" prop="startTime" width="250">
+        <template slot-scope="scope">
+          <span>{{ scope.row.startTime}}~{{scope.row.endTime}}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="接待机构" align="center" prop="orgNames" >
+        <template slot-scope="r">
+          <span class="text-style" :title="r.row.orgNames">{{ r.row.orgNames }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="创建机构" align="center" prop="orgName" />
+<!--      <el-table-column label="状态" width="80" align="center" prop="status" >
+        <template slot-scope="r">
+          <dict-tag :options="dict.type.letter_status" :value="r.row.status"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="审批状态" width="80" align="center" prop="checkStart" >
+        <template slot-scope="r">
+          <span>{{r.row.checkStatus==null?"待审批":r.row.checkStatus===1?"通过":"不通过"}}</span>
+        </template>
+      </el-table-column>-->
+      <el-table-column label="备注" align="center" prop="description" >
+        <template slot-scope="r">
+          <span class="text-style" :title="r.row.description">{{ r.row.description }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="r">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-view"
+            @click="LookOrAudit(r.row.id,0)"
+            v-hasPermi="['core:letter:query']"
+          >详情</el-button>
+<!--          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="LookOrAudit(r.row.id,1)"
+            v-hasPermi="['core:letter:audit']"
+          >审批</el-button>-->
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="auditAllList(r.row.id)"
+            v-hasPermi="['core:letter:auditAllList']"
+          >审批情况</el-button>
+
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleAddOrUpdate(r.row.id)"
+            v-hasPermi="['core:letter:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(r.row)"
+            v-hasPermi="['core:letter:remove']"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+    <dialog-edit-letter ref="dialogAddLetter" @success="handleQuery(true)" @closed="getList"></dialog-edit-letter>
+    <dialog-letter-view ref="dialogLetterView" @success="handleQuery(true)" @closed="getList"></dialog-letter-view>
+    <dialog-audit-view ref="dialogAuditView" @success="handleQuery(true)" @closed="getList"></dialog-audit-view>
+  </div>
+</template>
+
+<script>
+import { listLetter, getLetter, delLetter, addLetter, updateLetter } from "@/api/core/letter";
+import dialogEditLetter from "./dialog.editletter";
+import dialogLetterView from "./dialog.letterview";
+import dialogAuditView from "./dialog.auditview";
+
+export default {
+  components: {dialogEditLetter,dialogLetterView,dialogAuditView},
+  dicts: ['letter_status'],
+  name: "Letter",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 介绍信表格数据
+      letterList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        letterName: null,
+        status: null,
+        orgId:null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+      }
+    };
+  },
+  created() {
+    this.queryParams.orgId = this.$store.getters.orgId;
+    this.getList();
+  },
+  methods: {
+    /** 查询介绍信列表 */
+    getList() {
+      this.loading = true;
+      listLetter(this.queryParams).then(response => {
+        this.letterList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        letterName: null,
+        startTime: null,
+        endTime: null,
+        letterFile: null,
+        orgId: null,
+        orgPath: null,
+        orgName: null,
+        checkUser: null,
+        checkTime: null,
+        checkStatus: null,
+        status:null,
+        description: null,
+        createBy: null,
+        createTime: 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.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAddOrUpdate(id) {
+      this.$refs["dialogAddLetter"].show(id,{});
+    },
+    LookOrAudit(id,type) {
+      this.$refs["dialogLetterView"].show(id,type,{});
+    },
+    auditAllList(id) {
+      this.$refs["dialogAuditView"].show(id,{});
+    },
+
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getLetter(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改介绍信";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateLetter(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addLetter(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal.confirm('是否确认删除该介绍信记录?').then(function() {
+        return delLetter(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('system/letter/export', {
+        ...this.queryParams
+      }, `letter_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>
+
+<style lang="scss">
+.title {
+clear: both;
+margin: auto;
+text-align: center;
+color: black;
+font-size: xx-large;
+letter-spacing: 3px;
+}
+.text-style{
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+</style>

+ 3 - 3
src/views/core/reportForms/safetyInspectReport.vue

@@ -51,7 +51,7 @@
           </el-row>
           <el-table
             border
-            height="600"
+            height="800"
             size="small"
             v-loading="loading" :data="checkList" @selection-change="handleSelectionChange">
        
@@ -203,8 +203,8 @@
           this.loading = true;
           listReport(this.queryParams).then(response => {
          this.orgName=response.orgName;
-            this.checkList = response.data.rows;
-            this.total = response.data.total;
+            this.checkList = response.data;
+            // this.total = response.data.total;
             this.loading = false;
           });
         },

+ 13 - 10
src/views/core/send/index.vue

@@ -1,6 +1,9 @@
 <template>
   <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+    <div class="main-right-box">
+          <div class="main-search-box">
+
+            <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
       <el-form-item label="标题" prop="title">
         <el-input maxlength="50" v-model="queryParams.title" placeholder="请输入标题" clearable
           @keyup.enter.native="handleQuery" />
@@ -13,11 +16,6 @@
                          :value="`${dict.value}`"></el-option>
             </el-select>
           </el-form-item>
- 
-      <!-- <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>
 
     <el-row :gutter="10" class="mb8">
@@ -36,8 +34,11 @@
       </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
-
-    <el-table v-loading="loading" :data="sendList">
+          </div>
+          <el-table border
+                    height="650"
+                    size="small"
+                    v-loading="loading" :data="sendList">
       <el-table-column label="标题" align="center" prop="title" />
       <el-table-column label="类型" align="center" key="type" prop="type" width="80">
         <template slot-scope="scope">
@@ -72,6 +73,7 @@
 
     <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
       @pagination="getList" />
+        </div>
 
     <!-- 添加或修改【请填写功能名称】对话框 -->
     <DialogCom :title="title" :visible.sync="open" width="500px" append-to-body>
@@ -157,9 +159,9 @@
           </el-date-picker>
         </el-form-item>
       </el-form>
-      <!-- <div slot="footer" class="dialog-footer">
+    <div slot="footer" class="dialog-footer">
         <el-button @click="cancel">取 消</el-button>
-      </div> -->
+      </div> 
    </DialogCom>
   </div>
 </template>
@@ -275,6 +277,7 @@ export default {
     // 取消按钮
     cancel() {
       this.open = false;
+      this.yes=false;
       this.reset();
     },
     // 表单重置

+ 29 - 17
src/views/evaluateTable/index.vue

@@ -13,7 +13,7 @@
               size="small"
               :inline="true"
               v-show="showSearch"
-              label-width="100px"
+             
             >
               <el-form-item label="组织机构:" class="formTreeItem">
                 <tree-select
@@ -30,7 +30,7 @@
                   noResultsText="没有搜索结果"
                 />
               </el-form-item>
-              <el-form-item label="外包评价名称:">
+              <el-form-item label="外包评价名称:" label-width="50">
                 <el-select v-model="queryParams.planId" @change="changeHandler">
                   <el-option
                     v-for="item in options"
@@ -41,24 +41,22 @@
                   </el-option>
                 </el-select>
               </el-form-item>
-              <el-button
+              
+            </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 icon="el-icon-refresh" size="mini" @click="resetQuery"
+              <el-button type="primary" icon="el-icon-refresh" size="mini" @click="resetQuery"
                 >重置</el-button
               >
-            </el-form>
-          </div>
-        </div>
-
-        <!-- 按纽    -->
-        <!-- <el-row :gutter="10" class="mb8">
-              <el-col :span="1.5">
-                <el-button
+                <!-- <el-button
                   type="primary"
                   plain
                   icon="el-icon-plus"
@@ -66,9 +64,13 @@
                   @click="exportExcel"
                   
                   >导出</el-button
-                >
+                > -->
               </el-col>
-            </el-row> -->
+            </el-row>
+          </div>
+        </div>
+
+        
         <div
           v-if="obj && obj.length > 0"
           class="securityEquipmentMonitoringtable ml-4 flex-1"
@@ -80,11 +82,17 @@
               <th colspan="1" rowspan="1" :key="item" v-for="item in obj">
                 {{ item }}
               </th>
+             
             </tr>
             <tr v-for="(item, index) in targetList" :key="index">
-              <td>{{ index }}</td>
+              <td>{{ index+1 }}</td>
               <td v-for="i in obj" :key="i">{{ item[i] }}</td>
             </tr>
+            <tr>
+
+              <th :colspan="obj.length" rowspan="1">平均得分</th>
+              <th :colspan="1" rowspan="1">{{average}}</th>
+            </tr>
           </table>
         </div>
       </el-col>
@@ -94,7 +102,7 @@
 <script>
 import { mapGetters } from "vuex";
 import { findAllRole } from "@/api/system/role";
-import { list, getPlanList } from "@/api/scorestatistics/scorestatistics.js";
+import { list, getPlanList } from "@/api/evaluateTable/evaluateTable.js";
 import OrgTree from "@/components/orgTree";
 import { newDateMonth } from "@/utils/index.js";
 import { deptTreeSelect } from "@/api/system/public";
@@ -108,8 +116,10 @@ export default {
     const { params, query } = this.$route;
     return {
       targetList: [],
+      average:0,
       obj: {},
       loading: false,
+      average:'',//平均值
       selectedValues: [],
       planRoles: [],
       options: [],
@@ -161,6 +171,7 @@ export default {
       getPlanList().then((res) => {
         this.queryParams.planId = res[0].id;
         this.options = res;
+        console.log(res,'res');
         if (this.queryParams.orgId && this.queryParams.planId) {
           this.getList();
         }
@@ -185,7 +196,8 @@ export default {
       list(this.queryParams).then((res) => {
         let { code, data, msg } = res;
         if (code == 200) {
-          this.targetList = data || [];
+          this.targetList = data.list || [];
+          this.average=data.average||0
           if (this.targetList) {
             this.obj = Object.keys(this.targetList[0]);
           }

+ 22 - 7
src/views/evaluationRule/addEvaluate.vue

@@ -5,7 +5,7 @@
       :width="'500px'"
       :title="`${id ? '编辑' : '新增'}扣分规则`"
       @close="closeHandler"
-      destroy-on-close
+      
     >
       <el-form
         :model="ruleForm"
@@ -27,8 +27,8 @@
           <el-radio-group v-model="ruleForm.calculateType">
             <el-radio :label="1">累计数</el-radio>
             <el-radio :label="2">连续数</el-radio>
-            <el-radio :label="3">分类</el-radio>
-            <el-radio :label="4">固化值</el-radio>
+            <!-- <el-radio :label="3">分类</el-radio>
+            <el-radio :label="4">固化值</el-radio> -->
           </el-radio-group>
         </el-form-item>
         <el-form-item
@@ -46,7 +46,7 @@
         <el-form-item label="系数" prop="itemValue">
           <el-input
             placeholder="请输入系数"
-            v-model.number="ruleForm.itemValue"
+            v-model="ruleForm.itemValue"
             clearable
           >
           </el-input>
@@ -64,10 +64,22 @@
 </template>
 <script>
 import { guid } from "@/utils/index.js";
+
 export default {
   name: "SocWebAddEvaluate",
   dicts: ["evaluate_type"],
   data() {
+    var valiNumberPass1 = (rule, value, callback) => {
+      //包含小数的数字
+      let reg = /^[+-]?(0|([1-9]\d*))(\.\d+)?$/g;
+      if (value === "") {
+        callback(new Error("请输入内容"));
+      } else if (!reg.test(value)) {
+        callback(new Error("请输入数字"));
+      } else {
+        callback();
+      }
+    };
     return {
       ruleForm: {
         calculateType: 1,
@@ -81,7 +93,7 @@ export default {
           { type: "number", message: "连续数只能为数字" },
           { required: true, message: "请输入连续数" },
         ],
-        itemValue: [{ required: true, message: "请输入系数" }],
+        itemValue: [{ validator: valiNumberPass1 }],
       },
       id: "", //编辑时候ID
       isShow: false,
@@ -98,15 +110,18 @@ export default {
       this.isShow = false;
     },
     closeHandler() {
+      if(this.$refs.ruleForm){
+
+       
+        this.$refs.ruleForm.resetFields()
+      }
       this.ruleForm = {};
     },
 
     submitForm(formName) {
       this.$refs[formName].validate((valid) => {
         if (valid) {
-      
           if (this.ruleForm.uid) {
-          
             //当前是编辑
           } else {
             //当前是新增

+ 2 - 2
src/views/evaluationRule/index.vue

@@ -94,12 +94,12 @@
               @click="handleQuery"
               >搜索</el-button
             >
-            <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
+            <el-button icon="el-icon-refresh" type="primary" size="mini" @click="resetQuery"
               >重置</el-button
             >
             <el-button
               type="primary"
-              plain
+              
               icon="el-icon-plus"
               size="mini"
               @click="handleAdd"

+ 1 - 1
src/views/monitor/job/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch">
       <el-form-item label="任务名称" prop="jobName">
         <el-input
           v-model="queryParams.jobName"

+ 7 - 1
src/views/question/list/index.vue

@@ -108,7 +108,12 @@
             </el-row>
           </div>
 
-          <el-table v-loading="loading" :data="questionList" height="640" size="small">
+          <el-table
+            v-loading="loading"
+            :data="questionList"
+            height="640"
+            size="small"
+          >
             <el-table-column
               header-align="center"
               type="index"
@@ -312,6 +317,7 @@ export default {
     /** 重置按钮操作 */
     resetQuery() {
       this.resetForm("queryForm");
+      this.queryParams.submitRange = null;
       this.handleQuery();
     },
     // // 多选框选中数据

+ 1 - 0
src/views/question/reform/index.vue

@@ -278,6 +278,7 @@ export default {
     /** 重置按钮操作 */
     resetQuery() {
       this.resetForm("queryForm");
+      this.queryParams.submitRange = null;
       this.handleQuery();
     },
     // // 多选框选中数据

+ 154 - 0
src/views/registerBook/dialog.list.vue

@@ -0,0 +1,154 @@
+<template>
+  <div class="plan-infos">
+    <DialogCom
+        :title="'下载列表'"
+        :visible.sync="isShow"
+        :close-on-click-modal="false"
+        custom-class="gxDialog"
+        width="75%"
+        top="10vh"
+        append-to-body
+    >
+      <div class="page-body">
+
+        <el-table class="mt-2" border max-height="360" :data="this.formData">
+
+          <el-table-column
+              align="center"
+              prop="zipName"
+              label="文件名称"
+              show-overflow-tooltip
+          >
+          </el-table-column>
+          <el-table-column
+              align="center"
+              prop="downLoadTime"
+              label="下载时间"
+          ></el-table-column>
+          <el-table-column
+              align="center"
+              prop="fileSize"
+              label="文件大小(单位:MB)"
+          ></el-table-column>
+          <el-table-column label="操作" align="center" width="100">
+            <template slot-scope="r">
+              <el-button type="primary" @click="downloadFile(r.row)"
+              >下载
+              </el-button
+              >
+            </template>
+          </el-table-column>
+
+        </el-table>
+      </div>
+
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="onHide">取消</el-button>
+      </div>
+      <el-table-footer>
+        <div class="footer">注:列表为空说明当前可能不存在下载任务或下载任务尚未完成,且列表中文件大小值为近似值;</div>
+      </el-table-footer>
+    </DialogCom>
+
+  </div>
+</template>
+
+<script>
+import {mapState, mapMutations} from "vuex";
+
+export default {
+  data() {
+    const params = this.$route.params;
+    return {
+      id: null,
+      isShow: false,
+      formData: [{
+        zipName: null,
+        downLoadTime: null,
+        fileSize: null,
+      }],
+    };
+  },
+  props: {},
+  watch: {},
+  created() {
+    this.userOrgId = this.$store.getters.orgId;
+  },
+  computed: {
+    ...mapState([]),
+  },
+  methods: {
+    ...mapMutations([]),
+    async show(searchData) {
+      this.formData = [];
+      this.isShow = true;
+      //请求后台接口,获取数据
+    /*  this.$api.batchexport
+          .getDownLoadList(searchData)
+          .then((v) => {
+            this.formData = v;
+          });*/
+    },
+    downloadFile(row) {
+     /* this.$api.batchexport
+          .export(row)*/
+    },
+    onHide() {
+      this.isShow = false;
+      this.formData = [];
+    },
+    orgIdChange(data) {
+      this.formData.roleList = [];
+      this.formData.orgId = data.id;
+    },
+    deleteRow(index, rows) {
+      rows.splice(index, 1);
+    },
+
+    orgChanged(val) {
+      if (val !== this.prevOrgType) {
+        this.formData.roleList = [];
+      }
+      this.prevOrgType = val;
+      // this.formData.exceptOrg = [];
+    },
+    openDialogPage() {
+      if (this.formData.orgType == null && this.formData.orgId == null) {
+        this.$message.error("请选择执行机构,再添加检查要点!");
+        return;
+      }
+      this.$refs.selectPlanDialog.show();
+    },
+  },
+  components: {},
+};
+</script>
+
+<style lang="scss" scoped>
+.plan-infos {
+  .el-form {
+    padding-top: 10px;
+  }
+}
+
+
+.restRange {
+  el-form-item {
+    width: calc(100% - 140px);
+  }
+
+   .el-date-editor {
+    width: calc((100% - 14px) / 2);
+  }
+
+   .timeRange-separator {
+    width: 14px;
+    display: inline-block;
+  }
+
+  // /deep/ .restRangeHelp{
+  //   width: 14px;
+  //   display: inline-block;
+  // }
+}
+</style>

+ 384 - 0
src/views/registerBook/index.vue

@@ -0,0 +1,384 @@
+<template>
+  <div class="app-container">
+    <el-row :gutter="10">
+      <!--机构数据-->
+      <el-col :span="4" :xs="24">
+        <org-tree v-model="queryParams.belongOrgId" @defaultKey="getDefaultKey" @checkChange="checkChange"
+                  @click="clickTreeNode" hangsheTree :defaultCheckSub="false"></org-tree>
+      </el-col>
+      <!--搜索栏-->
+      <el-col :span="20" :xs="24">
+        <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="登记簿类型" prop="registerBookType">
+                <el-select v-model="queryParams.registerBookType" placeholder="请选择登记簿类型" clearable>
+                  <el-option
+                    v-for="dict in dict.type.register_book_type"
+                    :key="dict.value"
+                    :label="dict.label"
+                    :value="dict.value"
+                  />
+                </el-select>
+              </el-form-item>
+              <el-form-item label="日期" prop="date">
+                <el-date-picker
+                  v-model="queryParams.date"
+                  type="month"
+                  value-format="yyyy-MM-dd"
+                  placeholder="请选择保存日期">
+                </el-date-picker>
+              </el-form-item>
+              <el-form-item>
+
+              </el-form-item>
+            </el-form>
+
+            <el-row :gutter="10">
+
+              <el-col :span="1.5">
+                <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+              </el-col>
+              <el-col :span="1.5">
+                <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+              </el-col>
+              <el-col :span="1.5">
+                <el-button type="primary" @click="exportAll()" :disabled="this.registerBookList.length<=0">导出全部</el-button>
+              </el-col>
+              <el-col :span="1.5">
+                <el-button type="primary" @click="exportSelected()" :disabled="this.ids.length<=0">导出勾选
+                </el-button>
+              </el-col>
+              <el-col :span="1.5">
+                <el-button type="primary" @click="getDownList()">下载列表</el-button>
+              </el-col>
+<!--              <el-col :span="1.5">
+                <el-button
+                  type="primary"
+                  plain
+                  icon="el-icon-plus"
+                  size="mini"
+                  @click="handleAdd"
+                  v-hasPermi="['core:registerBook:add']"
+                >新增
+                </el-button>
+              </el-col>
+              <el-col :span="1.5">
+                <el-button
+                  type="success"
+                  plain
+                  icon="el-icon-edit"
+                  size="mini"
+                  :disabled="single"
+                  @click="handleUpdate"
+                  v-hasPermi="['core:registerBook:edit']"
+                >修改
+                </el-button>
+              </el-col>
+              <el-col :span="1.5">
+                <el-button
+                  type="danger"
+                  plain
+                  icon="el-icon-delete"
+                  size="mini"
+                  :disabled="multiple"
+                  @click="handleDelete"
+                  v-hasPermi="['core:registerBook:remove']"
+                >删除
+                </el-button>
+              </el-col>
+              <el-col :span="1.5">
+                <el-button
+                  type="warning"
+                  plain
+                  icon="el-icon-download"
+                  size="mini"
+                  @click="handleExport"
+                  v-hasPermi="['core:registerBook:export']"
+                >导出
+                </el-button>
+              </el-col>-->
+              <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+            </el-row>
+          </div>
+          <el-table
+            border
+            height="646"
+            v-loading="loading" :data="registerBookList" @selection-change="handleSelectionChange">
+            <el-table-column type="selection" width="55" align="center"/>
+            <el-table-column label="登记簿类型" align="center" prop="registerBookType">
+              <template slot-scope="scope">
+                <dict-tag :options="dict.type.register_book_type" :value="scope.row.registerBookType"/>
+              </template>
+            </el-table-column>
+            <el-table-column label="所属机构" align="center" prop="orgName"/>
+            <el-table-column label="统计日期" align="center" prop="date" width="180">
+<!--              <template slot-scope="scope">
+                <span>{{ parseTime(scope.row.date, '{y}-{m}-{d}') }}</span>
+              </template>-->
+            </el-table-column>
+
+            <el-table-column label="文件名称" align="center" prop="fileName">
+              <template slot-scope="r">
+                <a :href="imageUrl(r.row.fileUrl) " style="color:#45b97c"
+                   target="_blank">{{r.row.fileName}}</a>
+              </template>
+            </el-table-column>
+<!--            <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+              <template slot-scope="scope">
+                <el-button
+                  size="mini"
+                  type="text"
+                  icon="el-icon-edit"
+                  @click="handleUpdate(scope.row)"
+                  v-hasPermi="['core:registerBook:edit']"
+                >修改
+                </el-button>
+                <el-button
+                  size="mini"
+                  type="text"
+                  icon="el-icon-delete"
+                  @click="handleDelete(scope.row)"
+                  v-hasPermi="['core:registerBook:remove']"
+                >删除
+                </el-button>
+              </template>
+            </el-table-column>-->
+          </el-table>
+
+          <pagination
+            :total="total"
+            :page.sync="queryParams.pageNum"
+            :limit.sync="queryParams.pageSize"
+            @pagination="getList"
+          />
+        </div>
+      </el-col>
+    </el-row>
+    <!-- 添加或修改registerBook对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="登记簿类型" prop="registerBookType">
+          <el-select v-model="form.registerBookType" placeholder="请选择登记簿类型">
+            <el-option
+              v-for="dict in dict.type.register_book_type"
+              :key="dict.value"
+              :label="dict.label"
+              :value="parseInt(dict.value)"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="保存日期" prop="date">
+          <el-date-picker clearable
+                          v-model="form.date"
+                          type="date"
+                          value-format="yyyy-MM-dd"
+                          placeholder="请选择保存日期">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="机构id" prop="orgId">
+          <el-input v-model="form.orgId" placeholder="请输入机构id"/>
+        </el-form-item>
+        <el-form-item label="机构名称" prop="orgName">
+          <el-input v-model="form.orgName" placeholder="请输入机构名称"/>
+        </el-form-item>
+        <el-form-item label="pdf文件地址" prop="fileUrl">
+          <el-input v-model="form.fileUrl" placeholder="请输入pdf文件地址"/>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+    <down-list-dialog ref="downListDialog" @success="refresh(true)"></down-list-dialog>
+  </div>
+</template>
+
+<script>
+import {
+  listRegisterBook,
+  getRegisterBook,
+  delRegisterBook,
+  addRegisterBook,
+  updateRegisterBook
+} from "@/api/registerbook/registerBook.js";
+import tableList from "@/mixins/tableList";
+import DownListDialog from "./dialog.list";
+import OrgTree from "@/components/orgTree";
+
+export default {
+  name: "RegisterBook",
+  dicts: ['register_book_type'],
+  components: {OrgTree,DownListDialog},
+  mixins: [tableList],
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // registerBook表格数据
+      registerBookList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        registerBookType: null,
+        date: new Date(),
+        orgId: null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        registerBookType: [
+          {required: true, message: "登记簿类型不能为空", trigger: "change"}
+        ],
+        date: [
+          {required: true, message: "保存日期不能为空", trigger: "blur"}
+        ],
+        orgId: [
+          {required: true, message: "机构id不能为空", trigger: "blur"}
+        ],
+        orgName: [
+          {required: true, message: "机构名称不能为空", trigger: "blur"}
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询registerBook列表 */
+    getList() {
+      this.loading = true;
+      listRegisterBook(this.queryParams).then(response => {
+        this.registerBookList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    refresh(isCurrent) {
+      this.$refs.st[isCurrent ? "refresh" : "search"]();
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        registerBookType: null,
+        date: null,
+        orgId: null,
+        orgName: null,
+        orgPath: null,
+        fileUrl: null
+      };
+      this.resetForm("form");
+    },
+    getDefaultKey(key) {
+      this.queryParams.orgId = key;
+      this.getList();
+    },
+    //单选框状态改变
+    checkChange(state) {
+      this.queryParams.checkSub = state;
+      this.handleQuery();
+    },
+    // 节点单击事件
+    clickTreeNode(data) {
+      this.queryParams.orgId = data.id;
+      this.handleQuery();
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length !== 1
+      this.multiple = !selection.length
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateRegisterBook(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addRegisterBook(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal.confirm('是否确认删除registerBook编号为"' + ids + '"的数据项?').then(function () {
+        return delRegisterBook(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {
+      });
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('core/registerBook/export', {
+        ...this.queryParams
+      }, `registerBook_${new Date().getTime()}.xlsx`)
+    },
+
+    async exportAll() {
+      this.search.exportType = 0;
+      //await cutExport(this.search);
+      this.$message.success("导出成功,请稍后查看导出结果!");
+    },
+    async exportSelected() {
+      /*if (!this.search.pdfIdList || this.search.pdfIdList.length == 0) {
+        this.$message.error('请先选择需要导出的文件!');
+        return;
+      }
+      this.search.exportType = 1;
+      let guid = this.getNewGuid();
+      await this.$api.batchexport.exportFile({...this.search, guid});*/
+    },
+    getDownList() {
+      this.$refs.downListDialog.show(this.search);
+    },
+  }
+};
+</script>

+ 16 - 6
src/views/resumption/ruleManager/dialog.select.point.vue

@@ -3,11 +3,10 @@
     title="选择履职内容"
     :visible.sync="isShow"
     class="g-dialog-select-safe-check"
-    :close-on-click-modal="false"
     width="55%"
     top="10vh"
-    destroy-on-close
     append-to-body
+    @close="closed"
   >
     <div class="el-dialog-div">
       <g-search-table
@@ -95,6 +94,7 @@ export default {
   data() {
     return {
       isShow: false,
+      prevOrgType: null,
       selectList: [],
       ruleList: [],
       search: this.emptySearch(),
@@ -121,23 +121,33 @@ export default {
     },
   },
   methods: {
-    show(defaultSelect) {
-      this.search = this.emptySearch();
+    show(defaultSelect) {      
       this.isShow = true;
       if (defaultSelect && defaultSelect.map) {
         this.selectList = defaultSelect.map((s) => ({ id: s }));
       }
-
-      ruleListForOrg({ orgType: this.orgType }).then((r) => {
+      if (this.prevOrgType == this.orgType) {
+        this.search.itemName=null;
+        if (this.search.ruleId) {
+          this.$refs.st.search();
+        }
+      } else {
+        this.search = this.emptySearch();
+        ruleListForOrg({ orgType: this.orgType }).then((r) => {
         this.ruleList = r.data;
+        this.prevOrgType = this.orgType;
         if (r.data && r.data.length > 0) {
           this.search.ruleId = r.data[0].id;
         }
       });
+      }
     },
     onHide() {
       this.isShow = false;
     },
+    closed() {
+      this.$refs.st.dataList=[];
+    },
     onSelect(item) {
       this.selectList = item;
     },

+ 4 - 1
src/views/resumption/taskManager/dialog.detail.vue

@@ -136,7 +136,7 @@
         />
       </el-table>
       <div slot="footer" class="dialog-footer">
-        <el-button @click="onHide">取消</el-button>
+        <el-button @click="onHide">关闭</el-button>
       </div>
     </DialogCom>
   </div>
@@ -217,6 +217,9 @@ export default {
 </script>
 
 <style lang="scss">
+.dialog-footer {
+  margin-top: 20px;
+}
 .block {
   /* padding: 10px 10px; */
   text-align: center;

+ 8 - 3
src/views/resumption/taskManager/dialog.scanrecord.vue

@@ -47,7 +47,8 @@
         <el-table-column
           label="扫描方式"
           align="center"
-          width="80px"
+          width="100px"
+
           :show-overflow-tooltip="true"
           prop="scanMethod"
         >
@@ -74,7 +75,7 @@
         </el-table-column>
       </el-table>
       <div slot="footer" class="dialog-footer">
-        <el-button @click="onHide">取消</el-button>
+        <el-button @click="onHide">关闭</el-button>
       </div>
     </DialogCom>
   </div>
@@ -119,4 +120,8 @@ export default {
 };
 </script>
 
-<style lang="scss"></style>
+<style lang="scss" scoped>
+  .dialog-footer {
+  margin-top: 20px;
+}
+</style>

+ 71 - 58
src/views/resumption/taskManager/index.vue

@@ -8,7 +8,6 @@
           @defaultOrg="getDefaultOrg"
           @checkChange="checkChange"
           @click="clickTreeNode"
-          :businessTree="true"
         ></org-tree>
       </el-col>
       <el-col :span="20" :xs="24">
@@ -23,61 +22,71 @@
               v-show="showSearch"
               label-width="100px"
             >
-              <el-form-item label="任务名称" prop="planId">
-                <el-select
-                  v-model="queryParams.planId"
-                  filterable
-                  placeholder="请选择任务名称"
-                  clearable
-                >
-                  <el-option
-                    v-for="item in planList"
-                    :key="item.id"
-                    :label="item.name"
-                    :value="item.id"
-                  >
-                  </el-option>
-                </el-select>
-              </el-form-item>
-              <el-form-item label="履职人员" prop="executeRole">
-                <el-select
-                  v-model="queryParams.executeRole"
-                  placeholder="请选择履职人员"
-                  clearable
-                >
-                  <el-option
-                    v-for="item in roleList"
-                    :key="item.id"
-                    :label="item.name"
-                    :value="item.id"
-                  ></el-option>
-                </el-select>
-              </el-form-item>
-              <el-form-item label="任务进度" prop="status">
-                <el-select
-                  v-model="queryParams.status"
-                  placeholder="请选择任务进度"
-                  clearable
-                >
-                  <el-option
-                    v-for="item in dict.type.resumption_status"
-                    :key="item.value"
-                    :label="item.label"
-                    :value="item.value"
-                  ></el-option>
-                </el-select>
-              </el-form-item>
-              <el-form-item class="searchTitle" label="任务时间">
-                <DataRangePicker
-                  v-model="queryParams.range"
-                  key="daterange"
-                  type="daterange"
-                  :clearable="timeClearable"
-                  range-separator="至"
-                  start-placeholder="开始日期"
-                  end-placeholder="结束日期"
-                />
-              </el-form-item>
+              <!-- <el-row>
+                <el-col :span="5"> -->
+                  <el-form-item label="任务名称" prop="planId">
+                    <el-select
+                      v-model="queryParams.planId"
+                      filterable
+                      placeholder="请选择任务名称"
+                      clearable
+                    >
+                      <el-option
+                        v-for="item in planList"
+                        :key="item.id"
+                        :label="item.name"
+                        :value="item.id"
+                      >
+                      </el-option>
+                    </el-select>
+                  </el-form-item>
+                <!-- </el-col>
+                <el-col :span="5"> -->
+                  <el-form-item label="履职人员" prop="executeRole">
+                    <el-select
+                      v-model="queryParams.executeRole"
+                      placeholder="请选择履职人员"
+                      clearable
+                    >
+                      <el-option
+                        v-for="item in roleList"
+                        :key="item.id"
+                        :label="item.name"
+                        :value="item.id"
+                      ></el-option>
+                    </el-select>
+                  </el-form-item>
+                <!-- </el-col>
+                <el-col :span="5"> -->
+                  <el-form-item label="任务进度" prop="status">
+                    <el-select
+                      v-model="queryParams.status"
+                      placeholder="请选择任务进度"
+                      clearable
+                    >
+                      <el-option
+                        v-for="item in dict.type.resumption_status"
+                        :key="item.value"
+                        :label="item.label"
+                        :value="item.value"
+                      ></el-option>
+                    </el-select>
+                  </el-form-item>
+                <!-- </el-col>
+                <el-col :span="9"> -->
+                  <el-form-item class="searchTitle" label="任务时间">
+                    <DataRangePicker
+                      v-model="queryParams.range"
+                      key="daterange"
+                      type="daterange"
+                      :clearable="timeClearable"
+                      range-separator="至"
+                      start-placeholder="开始日期"
+                      end-placeholder="结束日期"
+                    />
+                  </el-form-item>
+                <!-- </el-col>
+              </el-row> -->
             </el-form>
             <!--    按纽    -->
             <el-row :gutter="10" class="mb8">
@@ -184,7 +193,7 @@
               align="center"
               prop="abnormalDataNums"
               label="隐患问题数"
-              width="90"
+              width="110"
               v-if="columns[6].visible"
             >
               <template slot-scope="r">
@@ -484,4 +493,8 @@ export default {
 };
 </script>
 
-<style lang="scss"></style>
+<style lang="scss" scoped>
+  .el-form--inline .el-form-item{
+    display: inline-flex;
+  }
+</style>

+ 7 - 5
src/views/resumptionEvaluate/evaluate/addEvaluate.vue

@@ -5,8 +5,6 @@
       :width="'500px'"
       :title="`${id ? '编辑' : '新增'}外包履职评价计划`"
       @close="closeHandler"
-      
-      destroy-on-close
     >
       <el-form
         :model="ruleForm"
@@ -16,7 +14,10 @@
         class="demo-ruleForm"
       >
         <el-form-item label="评价类型" prop="contentType">
-          <el-select v-model="ruleForm.contentType" placeholder="请选择评价类型">
+          <el-select
+            v-model="ruleForm.contentType"
+            placeholder="请选择评价类型"
+          >
             <el-option
               v-for="item in dict.type.evaluate_type"
               :key="item.value"
@@ -34,7 +35,6 @@
         </el-form-item>
 
         <el-form-item>
-          
           <el-button type="primary" @click="submitForm('ruleForm')"
             >确定</el-button
           >
@@ -75,9 +75,11 @@ export default {
       this.isShow = false;
     },
     closeHandler() {
+      if (this.$refs.ruleForm) {
+        this.$refs.ruleForm.resetFields();
+      }
       this.ruleForm = {};
     },
-  
 
     submitForm(formName) {
       this.$refs[formName].validate((valid) => {

+ 2 - 1
src/views/resumptionEvaluate/evaluate/index.vue

@@ -98,6 +98,7 @@
                   >搜索</el-button
                 >
                 <el-button
+                type="primary"
                   icon="el-icon-refresh"
                   size="mini"
                   @click="resetQuery"
@@ -165,7 +166,7 @@
                   size="mini"
                   @click="publishHandler(row)"
                   type="text"
-                  class="el-icon-arrow-down"
+                  :class="row.isDistribute == 0? 'el-icon-arrow-down':'el-icon-top-left'"
                   >{{ row.isDistribute == "0" ? "" : "取消" }}发布</el-button
                 >
                 <el-button

+ 13 - 5
src/views/resumptionEvaluate/evaluatePlan/index.vue

@@ -20,10 +20,8 @@
               ref="queryForm"
               size="small"
               :inline="true"
-              v-show="showSearch"
-              label-width="100px"
-            >
-              <el-form-item label="外包评价名称1" prop="evaluateName">
+              v-show="showSearch" >
+              <el-form-item label="外包评价名称" prop="evaluateName">
                 <el-input
                   :maxlength="20"
                   v-model="queryParams.evaluateName"
@@ -74,6 +72,7 @@
                   >搜索</el-button
                 >
                 <el-button
+                type="primary"
                   icon="el-icon-refresh"
                   size="mini"
                   @click="resetQuery"
@@ -233,6 +232,7 @@ export default {
     //判断是否能评价
     isEvaluateHandler(row) {
       let falg = false;
+      let statsFalg=false
       row.roleName?.split(",").forEach((item) => {
         this.roleList.forEach((i) => {
           if (i.roleName == item) {
@@ -240,7 +240,15 @@ export default {
           }
         });
       });
-      return falg;
+      if(row.status=='0'){
+        statsFalg=true
+      }
+      if(statsFalg&&falg){
+
+        return true;
+      }else{
+        return false
+      }
       // row
     },
     evaluateHandler(row) {

+ 1 - 1
src/views/safetycheck/rule/index.vue

@@ -153,7 +153,7 @@
                 >
                 <el-button
                   type="text"
-                  size="small"
+                  size="mini"
                   slot="reference"
                   icon="el-icon-delete"
                   @click="onDel(r.row.id)"

+ 21 - 12
src/views/safetycheck/ruleManager/dialog.select.point.vue

@@ -3,11 +3,10 @@
     title="选择检查要点"
     :visible.sync="isShow"
     class="g-dialog-select-safe-check"
-    :close-on-click-modal="false"
-    destroy-on-close
     width="55%"
     top="10vh"
     append-to-body
+    @close="closed"
   >
     <div class="el-dialog-div">
       <g-search-table
@@ -92,6 +91,7 @@ export default {
       selectList: [],
       ruleList: [],
       search: this.emptySearch(),
+      prevOrgType: null,
     };
   },
   computed: {},
@@ -110,28 +110,37 @@ export default {
     //   type:Array
     // },
     orgType: {
-      type: String,
+      type: [String, Number],
     },
   },
   methods: {
-    show(defaultSelect) {
-      this.search = this.emptySearch();
+    show(defaultSelect) {      
       this.isShow = true;
       if (defaultSelect && defaultSelect.map) {
         this.selectList = defaultSelect.map((s) => ({ id: s }));
       }
-
-      ruleListForOrg({ orgType: this.orgType }).then((r) => {
-        this.ruleList = r.data;
-
-        if (r.data && r.data.length > 0) {
-          this.search.ruleId = r.data[0].id;
+      if (this.prevOrgType == this.orgType) {
+        this.search.itemName=null;
+        if (this.search.ruleId) {
+          this.$refs.st.search();
         }
-      });
+      } else {
+        this.search = this.emptySearch();
+        ruleListForOrg({ orgType: this.orgType }).then((r) => {
+          this.ruleList = r.data;
+          this.prevOrgType = this.orgType;
+          if (r.data && r.data.length > 0) {
+            this.search.ruleId = r.data[0].id;
+          }
+        });
+      }
     },
     onHide() {
       this.isShow = false;
     },
+    closed() {
+      this.$refs.st.dataList=[];
+    },
     onSelect(item) {
       this.selectList = item;
     },

+ 49 - 28
src/views/safetycheck/taskManager/components/checkRegister.vue

@@ -2,7 +2,7 @@
 <template>
   <div class="app-container">
     <el-form
-      :ref="point_baseInfo"
+      ref="point_baseInfo"
       :model="info"
       :rules="baseInfoRules"
       label-width="120px"
@@ -22,6 +22,7 @@
               v-model="info.checkOrgId"
               placeholder="选择检查主体"
               @select="onCheckOrgSelect"
+              orgTreeType="org"
             /> </el-form-item
         ></el-col>
         <el-col :span="6">
@@ -47,6 +48,7 @@
               v-model="info.beCheckedOrgId"
               placeholder="选择受检机构"
               @select="onBecheckOrgSelect"
+              orgTreeType="org"
             />
           </el-form-item>
         </el-col>
@@ -56,7 +58,7 @@
               style="width: 100%"
               placeHolder="请输入检查组成员"
               v-model="info.checkTeam"
-              maxlength="255"
+              maxlength="100"
             ></el-input> </el-form-item
         ></el-col>
         <el-col :span="6">
@@ -88,21 +90,24 @@
             <span>{{ index + 1 }}、{{ item.itemName }}</span>
             <div class="safetycheck_point" v-for="point in item.pointList">
               <div>
-                <span class="pointName"
-                  ><i class="circle" /> {{ point.pointName }}</span
-                >
-                <el-radio-group v-model="point.status">
+                <div class="pointName">
+                  <i class="circle" />
+                  <pre>{{ point.pointName }}</pre>
+                </div>
+                <el-radio-group v-model="point.status" style="margin-top: 5px">
                   <el-radio :label="0">正常</el-radio>
                   <el-radio :label="1">异常</el-radio>
                 </el-radio-group>
-                <el-button
-                  type="danger"
-                  size="mini"
-                  v-if="point.isAdd"
-                  style="margin-left: 50px"
-                  @click="onDeletePoint(area, item, point)"
-                  >删除</el-button
-                >
+                <div>
+                  <el-button
+                    type="danger"
+                    size="mini"
+                    v-if="point.isAdd"
+                    style="margin-left: 50px"
+                    @click="onDeletePoint(area, item, point)"
+                    >删除</el-button
+                  >
+                </div>
               </div>
               <div v-if="point.status == 1">
                 <el-form
@@ -213,7 +218,10 @@ export default {
   computed: {
     ...mapGetters(["orgId", "roleList", "userId"]),
   },
-  mounted() {},
+  mounted() {
+    this.info.checkOrgId = this.orgId;
+    this.info.checkRoleId = this.roleList[0].roleId;
+  },
   methods: {
     dayjs,
     getLabel,
@@ -222,10 +230,12 @@ export default {
         return;
       }
 
-      this.info.checkRoleId = null;
       getNamesByOrgId(node.id).then((r) => {
         this.roleOptions = r.data;
         this.prevCheckOrgType = node.type;
+        if (!this.roleOptions.find((op) => op.id == this.info.checkRoleId)) {
+          this.info.checkRoleId = null;
+        }
       });
     },
     onBecheckOrgSelect(node) {
@@ -294,9 +304,7 @@ export default {
         this.$message.info("没有可新增的检查内容");
       }
     },
-    onClose() {
-      this.$tab.closePageAndPushPrev();
-    },
+
     onDeletePoint(area, item, point) {
       if (point.isAdd === 0) {
         this.$message.warning("不可删除计划的检查内容");
@@ -323,7 +331,9 @@ export default {
         .split(",")
         .map((img) => ({ id: null, imgPath: img }));
     },
-
+    onClose() {
+      this.$tab.closePageAndPushPrev();
+    },
     onSave() {
       this.info.isSubmit = 0;
       api.tempSubmit(this.info).then((r) => {
@@ -332,11 +342,16 @@ export default {
     },
     async onSubmit() {
       let isOk = true;
-      // let r = this.$refs;
+      let rs = this.$refs;
       for (let p in this.$refs) {
         if (p.startsWith("point")) {
           try {
-            isOk &= await this.$refs[p][0].validate();
+            let form = this.$refs[p];
+            if (form.length) {
+              isOk &= await this.$refs[p][0].validate();
+            } else {
+              isOk &= await this.$refs[p].validate();
+            }
           } catch (e) {
             isOk &= false;
             console.error(e);
@@ -349,6 +364,7 @@ export default {
         data.checkRoles = [{ id: this.info.checkRoleId }];
         api.tempSubmit(data).then((r) => {
           this.$message.info("提交成功");
+          this.$tab.closePageAndPushPrev();
         });
       }
     },
@@ -400,13 +416,17 @@ export default {
 .safetycheck_point {
   padding-top: 10px;
   padding-left: 30px;
+
+  & > div {
+    display: flex;
+    flex-direction: row;
+  }
 }
-// .safetycheck_point > div:nth-child(1) {
-//   margin-bottom: 15px;
-// }
+
 .pointName {
   width: 200px;
-  display: inline-block;
+  display: flex;
+  flex-direction: row;
 }
 .dialog-footer {
   width: 100%;
@@ -423,8 +443,9 @@ export default {
   width: 5px;
   height: 5px;
   border-radius: 5px;
-  background-color: #b8bdc0;
+  background-color: #000;
   border: none;
-  margin-bottom: 3px;
+  margin-top: 10px;
+  margin-right: 10px;
 }
 </style>

+ 6 - 6
src/views/safetycheck/taskManager/components/register.vue

@@ -31,7 +31,7 @@
           style="width: 80%; margin-top: -8px"
           placeHolder="请输入检查组成员"
           v-model="taskInfo.checkTeam"
-          maxlength="255"
+          maxlength="100"
           v-if="isRegister"
         ></el-input>
         <span v-else>{{ taskInfo.checkTeam }}</span>
@@ -365,13 +365,13 @@ export default {
         this.$message.warning("请选择要授权的人员");
         return;
       }
-
+      let {planId,beCheckedOrgId,id,ymdDate}=this.taskInfo
       api
         .grant({
-          planId: this.taskInfo.planId,
-          beCheckedOrgId: this.taskInfo.beCheckedOrgId,
-          taskId: this.taskInfo.id,
-          ymdDate: this.taskInfo.ymdDate,
+          planId,
+          beCheckedOrgId,
+          taskId: id,
+          ymdDate,
           userId: selected[0].id,
         })
         .then((r) => {

+ 117 - 80
src/views/scorestatistics/index.vue

@@ -1,65 +1,67 @@
 <template>
   <div class="app-container">
-    <el-row >
+    <el-row>
       <!--用户数据-->
       <el-col>
         <div class="main-search-box">
-           <!--    搜索条件    -->
-        <el-form
-          :model="queryParams"
-          ref="queryForm"
-          size="small"
-          :inline="true"
-          v-show="showSearch"
-          label-width="100px"
-        >
-          <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="''"
-              noOptionsText="没有数据"
-              noResultsText="没有搜索结果"
-            />
-          </el-form-item>
-          <el-form-item label="年月">
-            <el-date-picker
-              type="month"
-              v-model="queryParams.date"
-              placeholder="选择年月"
-              value-format="yyyy-MM"
-            >
-            </el-date-picker>
-          </el-form-item>
-          <el-row :gutter="10" class="mb8">
+          <!--    搜索条件    -->
+          <el-form
+            :model="queryParams"
+            ref="queryForm"
+            pageSize="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="''"
+                :clearable="false"
+                noOptionsText="没有数据"
+                noResultsText="没有搜索结果"
+              />
+            </el-form-item>
+            <el-form-item label="年月">
+              <el-date-picker
+                type="month"
+                v-model="queryParams.date"
+                placeholder="选择年月"
+                :clearable="false"
+                value-format="yyyy-MM"
+              >
+              </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
-          >
+                  type="primary"
+                  icon="el-icon-search"
+                  pageSize="mini"
+                  @click="handleQuery"
+                  >搜索</el-button
+                >
+                <el-button
+                  type="primary"
+                  icon="el-icon-refresh"
+                  pageSize="mini"
+                  @click="resetQuery"
+                  >重置</el-button
+                >
               </el-col>
             </el-row>
-        </el-form>
-        
+          </el-form>
         </div>
-       
 
-      
         <el-table
           border
           height="650"
-          size="small"
+          pageSize="small"
           v-loading="loading"
           :data="dataList"
           align="center"
@@ -71,17 +73,45 @@
             type="index"
             width="100"
           ></el-table-column>
-          <el-table-column
-            label="年月"
-            
-            :formatter="formatterScore"
-          />
-          <el-table-column label="机构名称" prop="orgName" />
-          <el-table-column label=">90 低" prop="level_gt90" />
-          <el-table-column label="80-90 中" prop="level_80_90" />
-          <el-table-column label="70-80 高" prop="level_70_80" />
-          
-          <el-table-column label="70及以下 极高" prop="level_lt70" >
+          <el-table-column label="年月" :formatter="formatterScore" />
+          <el-table-column label="机构名称" prop="orgName"> </el-table-column>
+          <el-table-column label=">90 低" prop="level_gt90">
+            <template slot-scope="{ row }">
+              <div>
+                <span class="text" @click="clickHandlerRow(row, 1)">{{
+                  row.level_gt90
+                }}</span>
+              </div>
+            </template>
+          </el-table-column>
+
+          <el-table-column label="80-90 中" prop="level_80_90">
+            <template slot-scope="{ row }">
+              <div>
+                <span class="text" @click="clickHandlerRow(row, 2)">{{
+                  row.level_80_90
+                }}</span>
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column label="70-80 高" prop="level_70_80">
+            <template slot-scope="{ row }">
+              <div>
+                <span class="text" @click="clickHandlerRow(row, 3)">{{
+                  row.level_70_80
+                }}</span>
+              </div>
+            </template>
+          </el-table-column>
+
+          <el-table-column label="70及以下 极高" prop="level_lt70">
+            <template slot-scope="{ row }">
+              <div>
+                <span class="text" @click="clickHandlerRow(row, 4)">{{
+                  row.level_lt70
+                }}</span>
+              </div>
+            </template>
           </el-table-column>
 
           <el-table-column
@@ -92,19 +122,18 @@
           >
             <template slot-scope="{ row }">
               <el-button
-                size="mini"
+                pageSize="mini"
                 @click="editHandler(row)"
                 type="text"
                 class="el-icon-view"
                 >查看</el-button
               ><el-button
-                size="mini"
+                pageSize="mini"
                 @click="anewHandler(row)"
                 type="text"
                 class="el-icon-edit-outline"
                 >重新计算</el-button
               >
-              
             </template>
           </el-table-column>
         </el-table>
@@ -112,8 +141,8 @@
         <pagination
           v-show="total > 0"
           :total="total"
-          :page.sync="queryParams.page"
-          :limit.sync="queryParams.size"
+          :page.sync="queryParams.pageNum"
+          :limit.sync="queryParams.pageSize"
           @pagination="getList"
         />
       </el-col>
@@ -129,10 +158,7 @@
 <script>
 import { mapGetters } from "vuex";
 import { findAllRole } from "@/api/system/role";
-import {
-  list,
-  anewDetail,
-} from "@/api/scorestatistics/scorestatistics.js";
+import { list, anewDetail } from "@/api/scorestatistics/scorestatistics.js";
 import OrgTree from "@/components/orgTree";
 import { newDateMonth } from "@/utils/index.js";
 import scorestatisticsDialog from "./scorestatisticsDialog.vue";
@@ -157,10 +183,10 @@ export default {
 
       queryParams: {
         orgId: null,
-        date: newDateMonth('','1'),
+        date: newDateMonth("", "1"),
 
-        page: 1,
-        size: 10,
+        pageNum: 1,
+        pageSize: 10,
       },
       // 显示搜索条件
       showSearch: true,
@@ -170,7 +196,7 @@ export default {
     };
   },
   created() {
-    this.queryParams.orgId = this.orgId
+    this.queryParams.orgId = this.orgId;
     this.getList();
     this.getDeptTree();
   },
@@ -196,8 +222,8 @@ export default {
         children: node.children,
       };
     },
-    formatterScore({ dataYear,dataMonth }) {
-      return dataYear+'-'+dataMonth
+    formatterScore({ dataYear, dataMonth }) {
+      return dataYear + "-" + dataMonth;
     },
 
     //获取列表
@@ -225,7 +251,11 @@ export default {
         .confirm("重新计算将会等待一段时间,你确定要重新计算吗?")
         .then(function () {})
         .then(() => {
-          anewDetail({month:row.dataMonth,year:row.dataYear,orgId:row.orgId}).then((res) => {
+          anewDetail({
+            month: row.dataMonth,
+            year: row.dataYear,
+            orgId: row.orgId,
+          }).then((res) => {
             let { code, msg } = res;
             if (code == 200) {
               this.getList();
@@ -236,12 +266,10 @@ export default {
           });
         });
     },
-    
-   
 
     /** 搜索按钮操作 */
     handleQuery() {
-      this.queryParams.page = 1;
+      this.queryParams.pageNum = 1;
       this.getList();
     },
     /** 重置按钮操作 */
@@ -249,12 +277,16 @@ export default {
       this.queryParams = {
         orgId: null,
         date: "",
-        page: 1,
-        size: 10,
+        pageNum: 1,
+        pageSize: 10,
       };
 
       this.getList();
     },
+    clickHandlerRow(row, num) {
+      row.levelId = num;
+      this.$refs.Evaluate.show(row);
+    },
   },
 };
 </script>
@@ -264,4 +296,9 @@ export default {
     width: 264px;
   }
 }
+.text {
+  color: #008cd6;
+  text-decoration: underline;
+  cursor: pointer;
+}
 </style>

+ 109 - 0
src/views/scorestatistics/pointsDialog.vue

@@ -0,0 +1,109 @@
+<template>
+  <div>
+    <!-- //扣分明细弹框 -->
+    <DialogCom title="扣分明细" width="1200px" :visible.sync="monthNum">
+      <el-form :inline="true" class="demo-form-inline">
+        <el-row>
+          <el-col :span="8">
+            <el-form-item label="上级机构1">
+              {{ monthNumeData.firstOrgName }}
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="上级机构2">
+              {{ monthNumeData.secondOrgName }}
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="营业场所">
+              {{ monthNumeData.orgTypeText }}
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="8">
+            <el-form-item label="年月"> {{ monthNumeData.date }} </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="指标分类">
+              {{ typeName }}
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label=""> </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <el-table
+        border
+        height="650"
+        pageSize="small"
+        v-loading="loading"
+        :data="itemTableList"
+        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="orgName"> </el-table-column>
+        <el-table-column label="执行人员" prop="execManName"> </el-table-column>
+        <el-table-column label="执行岗位" prop="execPostName"> </el-table-column>
+        <el-table-column label="计划开始时间" prop="planTimeStart">
+        </el-table-column>
+        <el-table-column label="计划结束时间" prop="planTimeEnd">
+        </el-table-column>
+        <el-table-column label="执行开始时间" prop="execTimeStart">
+        </el-table-column>
+        <el-table-column label="执行结束时间" prop="execTimeEnd">
+        </el-table-column>
+        <el-table-column label="状态" prop="execStatusText"> </el-table-column>
+      </el-table>
+      <div slot="footer" class="dialog-footer">
+        <!-- <el-button type="primary" @click="onSubmit">确定</el-button> -->
+        <el-button @click="onHide">关闭</el-button>
+      </div>
+    </DialogCom>
+  </div>
+</template>
+<script>
+import { getBysingleData } from "@/api/scorestatistics/scorestatistics.js";
+export default {
+  name: "SocWebPointsDialog",
+  props: {
+    monthNumeData: {},
+  },
+  data() {
+    return {
+      monthNum: false,
+      typeName:'',
+      loading:false,
+      itemTableList: [],
+    };
+  },
+
+  mounted() {},
+
+  methods: {
+    init(row) {
+      this.monthNum = true;
+      this.typeName=row.typeName
+      this.loading=true
+      getBysingleData({
+        orgId: this.monthNumeData.orgId,
+        date: this.monthNumeData.date,
+        typeCode: row.typeCode,
+      }).then((res) => {
+        this.loading=false
+        console.log(res);
+        let {code,data,msg}=res
+        this.itemTableList=data||[]
+      });
+    },
+    onHide(){
+      this.monthNum = false;
+      this.itemTableList=[]
+    }
+  },
+};
+</script>
+<style lang="scss" scoped></style>

+ 225 - 18
src/views/scorestatistics/scorestatisticsDialog.vue

@@ -5,10 +5,10 @@
       title="查看"
       :visible.sync="isShow"
       width="1400px"
-      destroy-on-close
+     
       @open="openHandler"
     >
-      <div class="page-body">
+      <div class="pageNum-body">
         <el-form
           :model="queryParams"
           size="small"
@@ -24,19 +24,32 @@
           </el-form-item>
         </el-form>
 
-        <el-table v-loading="loading" :data="tableData" style="width: 100%" height="400px">
+        <el-table
+          v-loading="loading"
+          :data="tableData"
+          style="width: 100%"
+          height="400px"
+        >
           <el-table-column label="序号" type="index" width="100">
           </el-table-column>
           <el-table-column prop="orgName" label="营业场所"> </el-table-column>
           <el-table-column prop="orgTypeText" label="场所分类">
           </el-table-column>
-          <el-table-column prop="orgScore" label="安全指数"> </el-table-column>
+          <el-table-column prop="orgScore" label="安全指数">
+            <template slot-scope="{ row }">
+              <div>
+                <span class="text" @click="clickHandlerRow(row)">{{
+                  row.orgScore
+                }}</span>
+              </div>
+            </template>
+          </el-table-column>
           <el-table-column prop="levelName" label="安全等级"> </el-table-column>
         </el-table>
         <pagination
           v-show="total > 0"
           :total="total"
-          :page.sync="queryParams.page"
+          :pageNum.sync="queryParams.pageNum"
           :limit.sync="queryParams.size"
           @pagination="getDetailList"
         />
@@ -44,28 +57,137 @@
 
       <div slot="footer" class="dialog-footer">
         <!-- <el-button type="primary" @click="onSubmit">确定</el-button> -->
-        <el-button @click="onHide">取消</el-button>
+        <el-button @click="onHide">关闭</el-button>
+      </div>
+      <!-- 月度指数弹框 -->
+    </DialogCom>
+
+    <DialogCom title="月度指数" width="1200px" :visible.sync="monthNum">
+      <el-form :inline="true" class="demo-form-inline">
+        <el-row>
+          <el-col :span="8">
+            <el-form-item label="上级机构1">
+              {{ monthNumeData.firstOrgName }}
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="上级机构2">
+              {{ monthNumeData.secondOrgName }}
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="营业场所">
+              {{ monthNumeData.orgTypeText }}
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="8">
+            <el-form-item label="年月"> {{ monthNumeData.date }} </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="安全指数">
+              {{ monthNumeData.orgScore }}
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="安全等级">
+              {{ monthNumeData.levelName }}
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-form-item label="指标分类">
+            <div v-if="zbTableList && zbTableList.dataList.length > 0">
+              <el-radio-group v-model="radio" class="bigbox_card">
+                <div
+                  :key="index"
+                  v-for="(item, index) in zbTableList.dataList"
+                  @click="cardHandler(item)"
+                >
+                  <el-card class="box-card">
+                    <el-radio :label="item.typeCode">
+                      <span>{{ item.typeName }}</span>
+                      <div>数量:{{ item.times }},扣分:{{ item.score }}</div>
+                    </el-radio>
+                  </el-card>
+                </div>
+              </el-radio-group>
+            </div>
+          </el-form-item>
+        </el-row>
+      </el-form>
+      <el-table
+        border
+        height="650"
+        pageSize="small"
+        v-loading="loading"
+        :data="itemTableList"
+        align="center"
+        fixed
+      >
+        <el-table-column label="指标分类" prop="typeName"> </el-table-column>
+        <el-table-column label="指标项目" prop="projectName"> </el-table-column>
+        <el-table-column label="指标要点" prop="pointName"> </el-table-column>
+        <el-table-column label="计算项目" prop="itemName"> </el-table-column>
+        <el-table-column label="数量">
+          <template slot-scope="{ row }">
+            <div>
+              <span class="text" v-if="row.typeCode!='1005'" @click="clickHandlerDialog(row)">{{
+                row.times
+              }}</span>
+              <span  v-else>{{
+                row.times
+              }}</span>
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column label="扣分" prop="score"> </el-table-column>
+      </el-table>
+      <div slot="footer" class="dialog-footer">
+        <!-- <el-button type="primary" @click="onSubmit">确定</el-button> -->
+        <el-button @click="closeHandler">关闭</el-button>
       </div>
     </DialogCom>
+    <!-- 扣分明细弹框 -->
+    <points ref="points" :monthNumeData="monthNumeData"></points>
   </div>
 </template>
 
 <script>
 import { mapGetters } from "vuex";
-import { detail } from "@/api/scorestatistics/scorestatistics.js";
-
-
+import { sum, unionBy } from "lodash";
+import {
+  detail,
+  getBysingleOrg,
+} from "@/api/scorestatistics/scorestatistics.js";
+import points from './pointsDialog.vue'
 export default {
+  components:{
+    points
+  },
   data() {
     return {
       tableData: [],
+      zbTableList: { dataList: [] },
+      itemTableList: [],
+      radio: "0",
       id: null,
       isShow: false,
+      monthNum: false,
+      monthNumeData: {
+        firstOrgName: "",
+        secondOrgName: "",
+        orgTypeText: "",
+        date: "",
+        levelName: "",
+        dataScore: "",
+      },
       total: 0,
-      loading:false,
+      loading: false,
       queryParams: {
-        page: 1,
-        size: 10,
+        pageNum: 1,
+        pageSize: 10,
         orgId: "",
         date: null,
         levelId: "",
@@ -96,17 +218,17 @@ export default {
     },
     //获取分页数据
     getDetailList() {
-      this.loading=true
+      this.loading = true;
       detail(this.queryParams).then((res) => {
-        let { code, msg, rows,total } = res;
+        let { code, msg, rows, total } = res;
         if (code == 200) {
           this.tableData = rows || [];
-          this.total=total||0
+          this.total = total || 0;
           this.isShow = true;
         } else {
           this.$message.error(msg);
         }
-        this.loading=false
+        this.loading = false;
       });
     },
     // 事件
@@ -114,12 +236,82 @@ export default {
       this.$refs.form.resetFields();
       this.isShow = false;
       this.queryParams = {
-        page: 1,
-        size: 10,
+        pageNum: 1,
+        pageSize: 10,
       };
 
       this.tableData = [];
     },
+    closeHandler(){
+      this.monthNum=false
+      this.itemTableList=[]
+      this.monthNumeData={
+        firstOrgName: "",
+        secondOrgName: "",
+        orgTypeText: "",
+        date: "",
+        levelName: "",
+        dataScore: "",
+      }
+    },
+    monthNumInit(row) {
+      this.monthNum = true;
+
+      // this.monthNumeData=JSON.parse(JSON.stringify(row))
+      // console.log(row);
+
+      getBysingleOrg({
+        orgId: row.orgId,
+        // orgId: "4358025846358081",
+        // date: "2023-10-01",
+        date: row.date,
+      }).then((res) => {
+        console.log(res);
+        let { code, data, msg } = res;
+        if (code == 200) {
+          this.monthNumeData.orgScore = row.orgScore;
+          this.monthNumeData.levelName = row.levelName;
+          this.monthNumeData.date = row.date;
+          this.monthNumeData.orgId =row.orgId;
+      
+         
+          this.monthNumeData.orgTypeText = data.orgTypeText;
+          this.monthNumeData.secondOrgName = data.secondOrgName;
+          this.monthNumeData.firstOrgName = data.firstOrgName;
+          this.zbTableList = JSON.parse(JSON.stringify(data));
+
+          if (data && data.dataList.length > 0) {
+            let list = [];
+            data.dataList.forEach((item) => {
+              item.detailList.forEach((i) => {
+                list.push(i);
+              });
+            });
+            this.zbTableList.dataList.unshift({
+              score: sum(this.zbTableList.dataList.map((item) => item.score)), //分数
+              times: sum(this.zbTableList.dataList.map((item) => item.times)), //数量
+              typeCode: "0",
+              typeName: "全部",
+              detailList: list,
+            });
+
+            this.itemTableList = this.zbTableList.dataList[0].detailList || [];
+          }
+        }
+        // this.zbTableList=res
+      });
+    },
+    clickHandlerRow(row) {
+      this.monthNumInit(row);
+    },
+    clickHandlerDialog(row) {
+      this.$refs.points.init(row);
+    },
+    cardHandler(item) {
+      this.radio = item.typeCode;
+      this.itemTableList = item.detailList;
+      
+    },
     //打开前的回调
     openHandler() {},
 
@@ -144,4 +336,19 @@ export default {
 .el-select {
   width: 100%;
 }
+.text {
+  color: #008cd6;
+  text-decoration: underline;
+  cursor: pointer;
+}
+.box-card {
+  cursor: pointer;
+  width: 200px;
+  text-align: center;
+  margin-left: 20px;
+}
+.bigbox_card {
+  display: flex;
+  justify-content: space-between;
+}
 </style>

+ 0 - 14
src/views/system/device/index.vue

@@ -37,20 +37,6 @@
                 </el-form-item>
               </el-form>
               <el-row :gutter="10">
-                <!-- <el-col :span="1.5">
-                  <el-button
-                    type="primary"
-                    icon="el-icon-search"
-                    size="mini"
-                    @click="handleQuery"
-                  >搜索</el-button
-                  >
-                </el-col>
-                <el-col :span="1.5">
-                  <el-button    type="primary" icon="el-icon-refresh" size="mini" @click="resetQuery"
-                  >重置</el-button
-                  >
-                </el-col> -->
                 <el-col :span="1.5">
                   <el-button
                     type="primary"

+ 1 - 0
src/views/system/menu/index.vue

@@ -99,6 +99,7 @@
 
 
     <el-table
+      size="small"
       v-if="refreshTable"
       height="700px"
       v-loading="loading"

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

@@ -268,7 +268,7 @@
               key="lastTime"
               prop="lastTime"
               v-if="columns[7].visible"
-              width="140"
+              width="170"
             />
             <el-table-column
               label="安保部门从业人员"
@@ -365,7 +365,7 @@
 
     <!-- 添加或编辑配置对话框 -->
     <DialogCom :title="title" :visible.sync="open" width="800px" append-to-body>
-      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
         <el-row>
           <el-col :span="10">
             <el-form-item label="账号" prop="username">