From a90cf43e7a1f41dcde401ed1fd118b0f90d7c3f5 Mon Sep 17 00:00:00 2001
From: cqf
Date: 星期四, 26 五月 2022 11:41:49 +0800
Subject: [PATCH] 举一反三隐患-存在

---
 src/views/safetyproduction/new.vue |  579 ++++++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 405 insertions(+), 174 deletions(-)

diff --git a/src/views/safetyproduction/new.vue b/src/views/safetyproduction/new.vue
index 66d9aa7..cb0e53c 100644
--- a/src/views/safetyproduction/new.vue
+++ b/src/views/safetyproduction/new.vue
@@ -4,104 +4,167 @@
       <div class="box-left">
         <Titlename title="检查项树"></Titlename>
         <div class="box-left-content">
-          <!-- <el-form ref="form" :model="form" style="font-size: 12px" size="mini">
-            <el-row>
-              <el-col :span="12">
-                <el-form-item size="mini">
-                  <el-input
-                    v-model="form.name"
-                    placeholder="请输入检查项名称"
-                  ></el-input>
-                </el-form-item>
-              </el-col>
-              <el-col :span="11" :offset="1" style="white-space: nowrap">
-                <el-form-item size="mini">
-                  <el-button type="primary" class="btns" size="mini">搜索</el-button>
-                  <el-button
-                    type="primary"
-                    style="margin: 0px"
-                    class="btns"
-                    icon="el-icon-plus"
-                    size="mini"
-                  ></el-button>
-                </el-form-item>
-              </el-col>
-            </el-row>
-          </el-form> -->
           <el-tree
-            :data="data"
-            :props="defaultProps"
+            ref="tree"
+            :data="tree"
+            node-key="value"
+            @check="treeClick"
+            :expand-on-click-node="false"
+            :default-checked-keys="treeList"
+            show-checkbox
           ></el-tree>
         </div>
       </div>
-      <div class="box-right" v-if="show">
-          <div class="title">A级要素:<span>A级要素2</span></div>
-        <div v-for="(item,index) in 2" :key="index">
-          <el-row class="titles">
-            <el-col :span="6" :offset="1"><p><span>B级要素:</span>法律、法规和标准的识别和获取</p></el-col>
-             <el-col :span="6"  :offset="4"><p><span>得分:</span>50</p></el-col>
-          </el-row>
-          <el-row>
-             <el-col :span="22" :offset="1">
-                  <el-table
-                    border
-                    :data="tableData"
+      <div class="box-right" v-if="lists == '' ? false : true">
+        <div class="btns">
+          <el-button type="primary" class="btn" @click="open(1)"
+            >添加</el-button
+          >
+          <el-button type="primary" class="btn" @click="open(0)"
+            >暂存</el-button
+          >
+        </div>
+        <div v-for="(item, i) in lists" :key="i" 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" :offset="1"
+                ><p><span>B级要素:</span>{{ item.elementBName }}</p></el-col
+              >
+              <!-- <el-col :span="6" :offset="4"
+                ><p><span>得分:</span>50</p></el-col
+              > -->
+            </el-row>
+            <el-row>
+              <el-col :span="22" :offset="1">
+                <el-table ref="table" border :stripe="true" :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="name" align="center" label="评审标准">
                     <el-table-column
-                      prop="date"
-                      align="center"
-                      label="标准化要求"
-                    >
-                    </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>
-                      <el-table-column
-                      prop="name"
-                      align="center"
-                      label="评审标准"
-                    >
-                     <el-table-column
-                      prop="name"
+                      prop="veto"
                       align="center"
                       label="否决项"
                     ></el-table-column>
-                     <el-table-column
-                      prop="name"
+                    <el-table-column
                       align="center"
+                      width="80px"
                       label="扣分项"
-                    ></el-table-column>
-                    </el-table-column>
-                    <el-table-column align="center" label="操作" width="200px">
+                      type="expand"
+                    >
                       <template slot-scope="scope">
-                        <el-button
-                          @click="handleClick(scope.row)"
-                          type="text"
-                          size="small"
-                          >修改</el-button
+                        <el-table border :data="scope.row.deductionList"
+                        :header-cell-style="{background:'#eef1f6',color:'#606266'}" :cell-style="{background:'#fff',color:'#606266'}"
                         >
-                        <!-- <el-button type="text" size="small" style="color: red"
-                          >删除</el-button
-                        > -->
+                          <el-table-column
+                            prop="name"
+                            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>
-                </el-col>
-              </el-row>
-        </div>
+                  </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
+                        > -->
+                    </template>
+                  </el-table-column>
+                </el-table>
+              </el-col>
+            </el-row>
+          </div>
         </div>
       </div>
+    </div>
+    <el-dialog :title="id" :visible.sync="dialogVisible" :close-on-click-modal="false" width="30%">
+      <el-form ref="form"  :rules="rules" :model="form" label-width="110px">
+        <el-form-item label="自查清单名称" prop="inspectionName">
+          <el-input v-model="form.inspectionName"></el-input>
+        </el-form-item>
+        <el-form-item label="检查人名称" prop="inspector">
+          <el-select
+            v-model="form.inspector"
+            style="width: 100%"
+            placeholder="请选择"
+          >
+            <el-option
+              v-for="item in nameList"
+              :key="item.id"
+              :label="item.realname"
+              :value="item.id"
+            >
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="时间" prop="inspectionTime">
+          <el-col :span="11">
+            <el-date-picker
+              type="date"
+              value-format="yyyy-MM-dd"
+              placeholder="开始时间"
+              v-model="form.inspectionTime"
+              style="width: 100%"
+            ></el-date-picker>
+          </el-col>
+          <!-- <el-col style="text-align:center" :span="2">-</el-col>
+    <el-col :span="11">
+      <el-date-picker type="date"  format="yyyy 年 MM 月 dd 日" placeholder="结束时间" v-model="form.inspectionEndTime" style="width: 100%;"></el-date-picker>
+    </el-col> -->
+        </el-form-item>
+      </el-form>
+      <span
+        slot="footer"
+        style="text-align: center; display: block"
+        class="dialog-footer"
+      >
+        <el-button type="primary" class="btn" @click="addC">确 定</el-button>
+        <el-button @click="closeDialog">取 消</el-button>
+      </span>
+    </el-dialog>
   </div>
 </template>
 <script>
 import Titlename from "../../components/Titlename/index.vue";
+import {
+  safetyInspectionItemTreeA,
+  safetyInspectionItemTreeB,
+  safetySelfInspectionAdd,
+  safetyInspectionItemName,
+  safetySelfInspectionInfo,
+  safetySelfInspectionMod,
+} from "@/api/safetySelfInspection.js";
 export default {
   components: { Titlename },
   data() {
@@ -109,110 +172,260 @@
       dialogVisible: false,
       show: true,
       form: {
-        name: "",
+        inspectionName: "",
+        inspector: "",
+        inspectionTime: "",
+        status: "",
+        itemList: [],
       },
       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,
-        },
-      ],
-      data: [
-        {
-          label: "一级 1",
-          children: [
-            {
-              label: "二级 1-1",
-              children: [
-                {
-                  label: "三级 1-1-1",
-                },
-              ],
-            },
-          ],
-        },
-        {
-          label: "一级 2",
-          children: [
-            {
-              label: "二级 2-1",
-              children: [
-                {
-                  label: "三级 2-1-1",
-                },
-              ],
-            },
-            {
-              label: "二级 2-2",
-              children: [
-                {
-                  label: "三级 2-2-1",
-                },
-              ],
-            },
-          ],
-        },
-        {
-          label: "一级 3",
-          children: [
-            {
-              label: "二级 3-1",
-              children: [
-                {
-                  label: "三级 3-1-1",
-                },
-              ],
-            },
-            {
-              label: "二级 3-2",
-              children: [
-                {
-                  label: "三级 3-2-1",
-                },
-              ],
-            },
-          ],
-        },
-      ],
+      list: [],
+      lists: [],
+      nameList: [],
+      tree: [],
+      id: "",
+      elementAName: "",
+      arr: [],
+      treeList: [],
       defaultProps: {
         children: "children",
         label: "label",
       },
+      itemId: "",
+       parent: [],
+        rules: {
+            inspectionName: [{required: true, message: '自查清单名称不能为空', trigger: 'blur'}],
+            inspector: [{required: true, message: '检查人名称为空', trigger: 'blur'}],
+            inspectionTime: [{required: true, message: '检查时间不能为空', trigger: 'blur'}],
+        },
     };
   },
+  created() {
+    this.TreeA();
+      safetyInspectionItemName().then((res) => {
+        if (res.data.code == 200) {
+          this.nameList = res.data.result;
+        }
+      });
+    this.id = this.$route.query.name;
+    this.itemId = this.$route.query.id;
+    this.itemInfo(this.$route.query.id);
+  },
   methods: {
+    itemInfo(id) {
+      safetySelfInspectionInfo({ id: id }).then((res) => {
+        if (res.data.code == 200) {
+          this.form = res.data.result;
+          this.list = res.data.result;
+          var trees = [];
+          for (var i = 0; i < this.list.itemList.length; i++) {
+            trees.push(this.list.itemList[i].elementA);
+          }
+          this.treeList = Array.from(new Set(trees));
+          var arr = this.checkSameDataA(this.list.itemList);
+          for (var i = 0; i < arr.length; i++) {
+            var cser=[]
+              for(var j=0;j<arr[i].child.length;j++){
+             var capB = {
+                safetySelfInspectionId: "",
+                safetyInspectionItemId: "",
+              }
+              arr[i].child[j].deductionList= arr[i].child[j].selfDeductionList
+              console.log(arr[i].child[j])
+              capB.safetySelfInspectionId=arr[i].child[j].safetySelfInspectionId
+              capB.safetyInspectionItemId=arr[i].child[j].safetyInspectionItemId
+              cser.push(capB)
+              }
+              arr[i].id=cser
+            arr[i].child = this.checkSameData(arr[i].child);
+          }
+          this.lists = arr;
+        }
+      });
+    },
+    TreeA() {
+      safetyInspectionItemTreeA().then((res) => {
+        if (res.data.code == 200) {
+          this.tree = res.data.result;
+        }
+      });
+    },
+    TreeB(id) {
+      safetyInspectionItemTreeB({ id: id }).then((res) => {
+        // this.list = [];
+        if (this.id == "添加") {
+          if (res.data.code == 200) {
+            this.list = res.data.result;
+            var capA = { elementAName: "", id: [], child: [] };
+            var atte = [];
+            capA.elementAName = this.list[0].elementAName;
+            for (var i = 0; i < this.list.length; i++) {
+              var capB = {
+                safetySelfInspectionId: "",
+                safetyInspectionItemId: "",
+              };
+              capB.safetyInspectionItemId = this.list[i].id;
+              atte.push(capB);
+            }
+            capA.id = atte;
+            capA.child = this.checkSameData(this.list);
+            if (
+              this.lists.findIndex(
+                (item) => item.elementAName === capA.elementAName
+              ) == -1
+            ) {
+              this.lists.push(capA);
+            } else {
+              var i = this.lists.findIndex(
+                (item) => item.elementAName === capA.elementAName
+              );
+              this.lists.splice(i, 1);
+            }
+          }
+        } else if (this.id == "编辑") {
+          this.list = res.data.result;
+          if(this.list.length!=0){
+          var capA = { elementAName: "", id: [], child: [] };
+          var atte = [];
+
+          capA.elementAName = this.list[0].elementAName;
+          for (var i = 0; i < this.list.length; i++) {
+               var capB = {
+              safetySelfInspectionId: "",
+              safetyInspectionItemId: "",
+            };
+            capB.safetyInspectionItemId = this.list[i].id;
+            capB.safetySelfInspectionId = this.itemId;
+            atte.push(capB);
+          }
+          capA.id = atte;
+          capA.child = this.checkSameData(this.list);
+          if (
+            this.lists.findIndex(
+              (item) => item.elementAName === capA.elementAName
+            ) == -1
+          ) {
+            this.lists.push(capA);
+          } else {
+            var i = this.lists.findIndex(
+              (item) => item.elementAName === capA.elementAName
+            );
+            this.lists.splice(i, 1);
+          }
+        }
+        }
+      });
+    },
+    checkSameDataA(resData) {
+      let dataInfo = {};
+      resData.forEach((item, index) => {
+        let { elementAName } = item;
+        if (!dataInfo[elementAName]) {
+          dataInfo[elementAName] = {
+            elementAName,
+            id: {},
+            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,
+            child: [],
+          };
+        }
+        dataInfo[elementBName].child.push(item);
+      });
+      let list = Object.values(dataInfo); // list 转换成功的数据
+      return list;
+    },
+    treeClick(currentObj) {
+      this.TreeB(currentObj.value);
+    },
+    handleClick(data) {
+      if (data.safetyInspectionItemId != undefined) {
+        this.$router.push({
+          path: "/reviewXG",
+          query: {
+            idX: data.safetyInspectionItemId,
+            name:this.id,
+            id:this.itemId
+          },
+        });
+      } else {
+        this.$router.push({
+          path: "/reviewXG",
+          query: {
+            idX: data.id,
+            name:this.id,
+            id:this.itemId
+          },
+        });
+      }
+    },
+    open(type) {
+      this.dialogVisible = true;
+      this.form.status = type;
+      var arr = [];
+      for (var i = 0; i < this.lists.length; i++) {
+        // this.lists[i].id;
+        for (var j = 0; j < this.lists[i].id.length; j++) {
+          arr.push(this.lists[i].id[j]);
+        }
+      }
+      this.form.itemList = arr;
+    },
+      closeDialog(){
+        this.dialogVisible = false
+      },
+    addC() {
+       this.$refs["form"].validate((valid) => {
+        if (valid) {
+      if (this.id == "添加") {
+        console.log("添加",this.form)
+        safetySelfInspectionAdd(this.form).then((res) => {
+          if (res.data.code == 200) {
+            this.dialogVisible = false;
+            this.$notify({
+              type: "success",
+              duration: 2000,
+              message: "新增成功",
+              title: "成功",
+            });
+            this.$router.push({
+              path:"/safetyproduction/safetyproduction/checklistself"
+            });
+          }
+        });
+      } else if (this.id == "编辑") {
+        console.log('编辑',this.form)
+        safetySelfInspectionMod(this.form).then((res) => {
+          this.dialogVisible = false;
+          this.$notify({
+            type: "success",
+            duration: 2000,
+            message: "编辑成功",
+            title: "成功",
+          });
+        });
+         this.$router.push({
+              path:"/safetyproduction/safetyproduction/checklistself"
+            });
+      }
+         }
+      });
+    },
     btnsQX() {
       this.show = true;
     },
@@ -231,24 +444,42 @@
 }
 .box-left {
   width: 20%;
-  min-height: 800px;
+  min-height: 850px;
   background-color: white;
   border-radius: 5px;
 }
 .box-left-content {
-  padding: 10px;
+  padding: 10px 20px;
 }
 .box-right {
+  position: relative;
   width: 79%;
   background-color: white;
   border-radius: 5px;
+  height: 850px;
+  overflow-y:overlay;
 }
-.title{
+.title {
   font-size: 16px;
   padding: 10px 20px;
   font-weight: bold;
 }
-.titles{
+.titles {
   font-size: 14px;
 }
-</style>
\ No newline at end of file
+.btns {
+  position: absolute;
+  top: 10px;
+  right: 50px;
+}
+.box-left-content /deep/ .el-tree-node__expand-icon {
+  display: none;
+}
+.btn {
+  background-color: #034ea2;
+  border: 1px solid #034ea2;
+}
+.box-right /deep/ .el-table__expanded-cell{
+  background-color: #fff !important;
+}
+</style>

--
Gitblit v1.9.2