From c819024e241b9f7c54cc3786373ad0d2998f2190 Mon Sep 17 00:00:00 2001
From: 马宇豪 <978517621@qq.com>
Date: 星期五, 05 五月 2023 08:55:46 +0800
Subject: [PATCH] 修改

---
 src/views/safetyproduction/gojudging.vue |  436 ++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 304 insertions(+), 132 deletions(-)

diff --git a/src/views/safetyproduction/gojudging.vue b/src/views/safetyproduction/gojudging.vue
index 51cd6f6..55b365f 100644
--- a/src/views/safetyproduction/gojudging.vue
+++ b/src/views/safetyproduction/gojudging.vue
@@ -1,107 +1,141 @@
 <template>
   <div>
-      <div class="box-right">
-          <div class="title">A级要素:<span>A级要素2</span></div>
-        <div v-for="(item,index) in 2" :key="index">
+    <div class="box-right">
+      <el-button
+        type="primary"
+        class="btn"
+        v-if="typeId == 2 ? false : true"
+        @click="finish()"
+        >结单</el-button>
+        <div class="point">
+            所有A级要素总分= {{remark}}
+        </div>
+
+      <div
+        v-for="(item, index) in lists"
+        :key="index"
+        style="padding: 0 0 20px 0"
+      >
+        <div class="title">
+          A级要素:<span>{{ item.elementAName }}</span>
+        </div>
+        <div v-for="(item, index) in item.child" :key="index">
           <el-row class="titles">
-            <el-col :span="6"><p><span>B级要素:</span>法律、法规和标准的识别和获取</p></el-col>
-             <el-col :span="6"><p><span>得分:</span>50</p></el-col>
+            <el-col :span="6"
+              ><p><span>B级要素:</span>{{ item.elementBName }}</p></el-col
+            >
+            <el-col :span="6"
+              ><p><span>总分:</span>{{ item.points }}</p></el-col
+            >
+            <el-col :span="6"
+              ><p><span>得分:</span>{{ item.point }}</p></el-col
+            >
           </el-row>
           <el-row>
-             <el-col :span="24">
-                  <el-table
-                     border
-                    :data="tableData"
-                  >
-                    <el-table-column
-                      prop="date"
-                      align="center"
-                      label="标准化要求"
+            <el-col :span="24">
+              <el-table
+                border
+                :data="item.child"
+                :header-cell-style="{ background: '#eef1f6', color: '#606266' }"
+                :cell-style="{ background: '#fff', color: '#606266' }"
+              >
+                <el-table-column
+                  prop="standardizationRequirements"
+                  align="center"
+                  label="标准化要求"
+                >
+                </el-table-column>
+                <el-table-column
+                  prop="enterpriseStandard"
+                  align="center"
+                  label="企业达标标准"
+                ></el-table-column>
+                <el-table-column
+                  prop="reviewMethod"
+                  align="center"
+                  label="评审方法"
+                ></el-table-column>
+                <el-table-column
+                  prop="veto"
+                  align="center"
+                  label="否决项"
+                ></el-table-column>
+                <el-table-column align="center" label="评审结果">
+                  <template slot-scope="scope">
+                    <span v-if="scope.row.safetyInspectionItemResult == 0"
+                      >否决</span
                     >
-                    </el-table-column>
-                    <el-table-column
-                      prop="name"
-                      align="center"
-                      label="企业达标标准"
-                    ></el-table-column>
-                    <el-table-column
-                      prop="name"
-                      align="center"
-                      label="评审方法"
-                    ></el-table-column>
+                    <span v-if="scope.row.safetyInspectionItemResult == 1"
+                      >扣分</span
+                    >
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  align="center"
+                  label="扣分项"
+                  type="expand"
+                  width="100px"
+                >
+                  <template slot-scope="scope">
+                    <el-table
+                      :data="scope.row.selfDeductionList"
+                      border
+                      :header-cell-style="{
+                        background: '#eef1f6',
+                        color: '#606266',
+                      }"
+                      :cell-style="{ background: '#fff', color: '#606266' }"
+                    >
                       <el-table-column
-                      prop="name"
-                      align="center"
-                      label="评审标准"
+                        prop="name"
+                        align="center"
+                        label="扣分项"
+                      >
+                      </el-table-column>
+                      <el-table-column prop="point" align="center" label="扣分">
+                      </el-table-column>
+                      <el-table-column
+                        prop="remark"
+                        align="center"
+                        label="扣分备注"
+                      >
+                      </el-table-column>
+                    </el-table>
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  prop="remark"
+                  align="center"
+                  label="备注"
+                ></el-table-column>
+                <el-table-column align="center" label="操作" width="200px">
+                  <template slot-scope="scope">
+                    <el-button
+                      @click="handleClick(scope.row)"
+                      type="text"
+                      size="small"
+                      :disabled="typeId == 2 ? true : false"
+                      >评审</el-button
                     >
-                     <el-table-column
-                      prop="name"
-                      align="center"
-                      label="否决项"
-                    ></el-table-column>
-                     <el-table-column
-                      prop="name"
-                      align="center"
-                      label="扣分项"
-                    ></el-table-column>
-                    </el-table-column>
-                     <el-table-column
-                      prop="name"
-                      align="center"
-                      label="扣分"
-                      type="expand"
-                      width="50px"
-                    >
-                        <el-table
-                        :data="tableData"
-                  >
-                    <el-table-column
-                      prop="name"
-                      align="center"
-                      label="扣分项"
-                    >
-                    </el-table-column>
-                    <el-table-column
-                      prop="date"
-                      align="center"
-                      label="扣分"
-                    >
-                    </el-table-column>
-                    <el-table-column
-                      prop="date"
-                      align="center"
-                      label="扣分备注"
-                    >
-                    </el-table-column>
-                  </el-table>
-                    </el-table-column>
-                     <el-table-column
-                      prop="name"
-                      align="center"
-                      label="备注"
-                    ></el-table-column>
-                    <el-table-column align="center" label="操作" width="200px">
-                      <template slot-scope="scope">
-                        <el-button
-                          @click="handleClick(scope.row)"
-                          type="text"
-                          size="small"
-                          >评价</el-button
-                        >
-                        <!-- <el-button type="text" size="small" style="color: red"
+                    <!-- <el-button type="text" size="small" style="color: red"
                           >删除</el-button
                         > -->
-                      </template>
-                    </el-table-column>
-                  </el-table>
-                </el-col>
-              </el-row>
+                  </template>
+                </el-table-column>
+              </el-table>
+            </el-col>
+          </el-row>
         </div>
-        </div>
+      </div>
+    </div>
   </div>
 </template>
 <script>
 import Titlename from "../../components/Titlename/index.vue";
+import {
+  safetySelfInspectionInfo,
+  safetySelfInspectionFinish,
+} from "@/api/safetySelfInspection.js";
 export default {
   components: { Titlename },
   data() {
@@ -110,53 +144,175 @@
       form: {
         name: "",
       },
+      id: "",
       formInline: {
         user: "",
         region: "",
       },
-      tableData: [
-        {
-          date: "2016-05-02",
-          name: "王小虎",
-          province: "上海",
-          city: "普陀区",
-          address: "上海市普陀区金沙江路 1518 弄",
-          zip: 200333,
-        },
-        {
-          date: "2016-05-04",
-          name: "王小虎",
-          province: "上海",
-          city: "普陀区",
-          address: "上海市普陀区金沙江路 1517 弄",
-          zip: 200333,
-        },
-        {
-          date: "2016-05-01",
-          name: "王小虎",
-          province: "上海",
-          city: "普陀区",
-          address: "上海市普陀区金沙江路 1519 弄",
-          zip: 200333,
-        },
-        {
-          date: "2016-05-03",
-          name: "王小虎",
-          province: "上海",
-          city: "普陀区",
-          address: "上海市普陀区金沙江路 1516 弄",
-          zip: 200333,
-        },
-      ],
-      defaultProps: {
-        children: "children",
-        label: "label",
-      },
+      list: [],
+      lists: [],
+      listType: [],
+      typeId: "",
+      remark:"",
     };
   },
+  created() {
+    this.id = this.$route.query.id;
+    this.typeId = this.$route.query.type;
+    this.safeInitem(this.id);
+  },
   methods: {
-    btnsQX() {
-      this.show = true;
+    finish() {
+      var faly = "";
+      var bar = [];
+      for (var i = 0; i < this.listType.length; i++) {
+        if (this.listType[i].safetyInspectionItemResult == null) {
+          faly = false;
+        } else {
+          faly = true;
+        }
+        bar.push(faly);
+      }
+      if (bar.indexOf(false) == -1) {
+        let id = this.id;
+        this.$confirm("确定要结单吗?", "提示", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning",
+        })
+          .then(() => {
+            safetySelfInspectionFinish({ id: this.id }).then((res) => {
+              if (res.data.code === "200") {
+                this.$notify({
+                  title: "成功",
+                  message: "结单成功",
+                  type: "success",
+                  duration: 2000,
+                });
+                this.$router.push({
+                path:"/safetyproduction/safetyproduction/checklistself"
+                });
+              } else {
+                this.$message({
+                  message: res.data.message,
+                  type: "warning",
+                });
+              }
+            });
+          })
+          .catch((error) => {});
+      } else {
+        alert("所有的检查项评审后才可以结单!");
+      }
+    },
+
+    safeInitem(id) {
+      safetySelfInspectionInfo({ id: id }).then((res) => {
+        if (res.data.code == 200) this.list = res.data.result;
+        this.listType = res.data.result.itemList;
+        var arr = this.checkSameDataA(this.list.itemList);
+        for (var i = 0; i < arr.length; i++) {
+          arr[i].child = this.checkSameData(arr[i].child);
+          arr[i].elementAWeight = arr[i].child[0].elementAWeight;
+          arr[i].child.points = arr[i].child.point;
+        }
+        this.lists = arr;
+        let showDetail = ''
+        for (let i = 0 ; i < arr.length ; i++){
+            if (i < arr.length - 1 ){
+                showDetail+='('+arr[i].elementAName + ' * '+arr[i].elementAWeight+ ') + '
+            } else{
+                showDetail+='('+arr[i].elementAName + ' * '+arr[i].elementAWeight+ ')'
+            }
+        }
+        this.remark+=showDetail
+          if (this.typeId==2){
+              let pointA = ''
+              let pointDetail = ' = '
+              let finalPoint=0
+              for (let i = 0 ; i < arr.length ; i++){
+                  let childData = arr[i].child
+                  pointA = 0
+                  for (let j = 0 ; j < childData.length ; j++){
+                      //改A级要素的总分
+                      pointA += childData[j].point
+                  }
+                  finalPoint += pointA * arr[i].elementAWeight
+                  if (i < arr.length - 1 ){
+                      pointDetail +='('+pointA + ' * '+arr[i].elementAWeight+ ') + '
+                  } else{
+                      pointDetail +='('+pointA + ' * '+arr[i].elementAWeight+ ') = '
+                  }
+              }
+              pointDetail +=finalPoint
+              this.remark+=pointDetail
+          }
+      });
+    },
+    checkSameDataA(resData) {
+      let dataInfo = {};
+      resData.forEach((item, index) => {
+        let { elementAName } = item;
+        if (!dataInfo[elementAName]) {
+          dataInfo[elementAName] = {
+            elementAName,
+            elementAWeight:'',
+            child: [],
+          };
+        }
+        dataInfo[elementAName].child.push(item);
+      });
+      let list = Object.values(dataInfo); // list 转换成功的数据
+      return list;
+    },
+    checkSameData(resData) {
+      let dataInfo = {};
+      resData.forEach((item, index) => {
+        let { elementBName } = item;
+        if (!dataInfo[elementBName]) {
+          dataInfo[elementBName] = {
+            elementBName,
+            point: "",
+            elementAWeight:item.elementAWeight,
+            points: item.point,
+            child: [],
+          };
+        }
+        dataInfo[elementBName].child.push(item);
+      });
+      let list = Object.values(dataInfo); // list 转换成功的数据
+      for (var i = 0; i < list.length; i++) {
+        var pot = list[i].points;
+        for (var j = 0; j < list[i].child.length; j++) {
+          if (list[i].child[j].safetyInspectionItemResult != 0) {
+            for (
+              var s = 0;
+              s < list[i].child[j].selfDeductionList.length;
+              s++
+            ) {
+              pot = pot - list[i].child[j].selfDeductionList[s].point;
+            }
+          } else {
+            var cont = 0;
+            pot = 0;
+          }
+        }
+        if (pot > 0) {
+          list[i].point = pot;
+        } else {
+          list[i].point = 0;
+        }
+      }
+      return list;
+    },
+    handleClick(data) {
+      this.$router.push({
+        path: "/review",
+        query: {
+          idC: data.id,
+          id: this.id,
+        },
+      });
     },
   },
 };
@@ -173,13 +329,29 @@
   background-color: white;
   border-radius: 5px;
   padding: 20px;
+  height: 850px;
+  overflow-y: overlay;
 }
-.title{
+.point {
+    background-color: rgba(3,78,162,0.1);
+    font-size: 20px;
+    padding: 10px 5px;
+    font-weight: bold;
+}
+.title {
   font-size: 16px;
   padding: 10px 0px;
   font-weight: bold;
 }
-.titles{
+.titles {
   font-size: 14px;
 }
-</style>
\ No newline at end of file
+.box-right /deep/ .el-table__expanded-cell {
+  background-color: #fff !important;
+}
+.btn {
+  background-color: #034ea2;
+  border: 1px solid #034ea2;
+  float: right;
+}
+</style>

--
Gitblit v1.9.2