coys пре 2 година
родитељ
комит
49e4b67323

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

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

+ 16 - 6
src/views/evaluationRule/addEvaluate.vue

@@ -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,
@@ -104,9 +116,7 @@ export default {
     submitForm(formName) {
       this.$refs[formName].validate((valid) => {
         if (valid) {
-      
           if (this.ruleForm.uid) {
-          
             //当前是编辑
           } else {
             //当前是新增

+ 24 - 17
src/views/scorestatistics/index.vue

@@ -77,31 +77,39 @@
           <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>
+                <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" >
+          <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>
+                <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" >
+          </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>
+                <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>
+                <span class="text" @click="clickHandlerRow(row, 4)">{{
+                  row.level_lt70
+                }}</span>
               </div>
             </template>
           </el-table-column>
@@ -275,11 +283,10 @@ export default {
 
       this.getList();
     },
-    clickHandlerRow(row,num){
-      
-      row.levelId=num
-      this.$refs.Evaluate.show(row)
-    }
+    clickHandlerRow(row, num) {
+      row.levelId = num;
+      this.$refs.Evaluate.show(row);
+    },
   },
 };
 </script>
@@ -289,7 +296,7 @@ export default {
     width: 264px;
   }
 }
-.text{
+.text {
   color: #008cd6;
   text-decoration: underline;
   cursor: pointer;

+ 189 - 9
src/views/scorestatistics/scorestatisticsDialog.vue

@@ -24,13 +24,26 @@
           </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
@@ -46,23 +59,119 @@
         <!-- <el-button type="primary" @click="onSubmit">确定</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.dataScore }}
+            </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" @click="clickHandlerRow(row, 1)">{{
+                row.times
+              }}</span>
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column label="扣分" prop="score"> </el-table-column>
+      </el-table>
     </DialogCom>
   </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";
 
 export default {
   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: {
         pageNum: 1,
         pageSize: 10,
@@ -96,17 +205,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;
       });
     },
     // 事件
@@ -120,6 +229,62 @@ export default {
 
       this.tableData = [];
     },
+    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.dataScore = row.dataScore;
+          this.monthNumeData.levelName = row.levelName;
+          this.monthNumeData.date = data.date;
+          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);
+    },
+    cardHandler(item) {
+      this.radio = item.typeCode;
+      this.itemTableList=item.detailList
+    },
     //打开前的回调
     openHandler() {},
 
@@ -144,4 +309,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>