From 4a6b6d253451a14063df0659877f3d8c4ca921a5 Mon Sep 17 00:00:00 2001
From: lyfO_o <764716047@qq.com>
Date: 星期四, 31 三月 2022 15:20:57 +0800
Subject: [PATCH] Merge remote-tracking branch 'remotes/origin/shf' into master

---
 src/views/safetyproduction/new.vue |  483 +++++++++++++++++++++++++++++++++++------------------
 1 files changed, 319 insertions(+), 164 deletions(-)

diff --git a/src/views/safetyproduction/new.vue b/src/views/safetyproduction/new.vue
index ca2005c..9ad7b6f 100644
--- a/src/views/safetyproduction/new.vue
+++ b/src/views/safetyproduction/new.vue
@@ -5,131 +5,158 @@
         <Titlename title="检查项树"></Titlename>
         <div class="box-left-content">
           <el-tree
+            ref="tree"
             :data="tree"
-            node-key="id"
+            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="list == '' ? false : true">
-        <el-button type="primary" @click="open()" class="btns">添加</el-button>
-        <div v-for="(item, i) in lists" :key="i">
-        <div class="title">
-          A级要素:<span>{{ item.nameA }}</span>
+        <div class="btns">
+          <el-button type="primary" class="btn" @click="open(0)"
+            >添加</el-button
+          >
+          <el-button type="primary" class="btn" @click="open(-1)"
+            >暂存</el-button
+          >
         </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 border :data="item.child">
-                <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="评审标准">
+        <div v-for="(item, i) in lists" :key="i">
+          <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 :data="item.child">
                   <el-table-column
-                    prop="veto"
+                    prop="standardizationRequirements"
                     align="center"
-                    label="否决项"
+                    label="标准化要求"
+                  >
+                  </el-table-column>
+                  <el-table-column
+                    prop="enterpriseStandard"
+                    align="center"
+                    label="企业达标标准"
                   ></el-table-column>
                   <el-table-column
+                    prop="reviewMethod"
                     align="center"
-                    width="80px"
-                    type="expand"
-                    label="扣分项"
-                  >
-                    <el-table :data="item.child.deductionList">
-                      <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>
-                <el-table-column align="center" label="操作" width="200px">
-                  <template slot-scope="scope">
-                    <el-button
-                      @click="handleClick(scope.row)"
-                      type="text"
-                      size="small"
-                      >修改</el-button
+                    label="评审方法"
+                  ></el-table-column>
+                  <el-table-column prop="name" align="center" label="评审标准">
+                    <el-table-column
+                      prop="veto"
+                      align="center"
+                      label="否决项"
+                    ></el-table-column>
+                    <el-table-column
+                      align="center"
+                      width="80px"
+                      label="扣分项"
+                      type="expand"
                     >
-                    <!-- <el-button type="text" size="small" style="color: red"
+                      <template slot-scope="scope">
+                        <el-table :data="scope.row.deductionList">
+                          <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>
+                      </template>
+                    </el-table-column>
+                  </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>
+                    </template>
+                  </el-table-column>
+                </el-table>
+              </el-col>
+            </el-row>
+          </div>
         </div>
       </div>
     </div>
-    <el-dialog
-  title="添加"
-  :visible.sync="dialogVisible"
-  width="30%"
->
-  <el-form ref="form" :model="form" label-width="100px">
-     <el-form-item label="自查清单名称">
-    <el-input v-model="form.inspectionName"></el-input>
-  </el-form-item>
-   <el-form-item label="检查人名称">
-    <el-select v-model="form.inspector" 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="时间">
-    <el-col :span="11">
-      <el-date-picker type="date"  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-dialog title="添加" :visible.sync="dialogVisible" :close-on-click-modal="false" width="30%">
+      <el-form ref="form" :model="form" label-width="100px">
+        <el-form-item label="自查清单名称">
+          <el-input v-model="form.inspectionName"></el-input>
+        </el-form-item>
+        <el-form-item label="检查人名称">
+          <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="时间">
+          <el-col :span="11">
+            <el-date-picker
+              type="date"
+              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" class="dialog-footer">
-    <el-button @click="dialogVisible = false">取 消</el-button>
-    <el-button type="primary" @click="addC">确 定</el-button>
-  </span>
-</el-dialog>
+        </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="dialogVisible = false">取 消</el-button>
+      </span>
+    </el-dialog>
   </div>
 </template>
 <script>
@@ -139,6 +166,8 @@
   safetyInspectionItemTreeB,
   safetySelfInspectionAdd,
   safetyInspectionItemName,
+  safetySelfInspectionInfo,
+  safetySelfInspectionMod,
 } from "@/api/safetySelfInspection.js";
 export default {
   components: { Titlename },
@@ -147,63 +176,155 @@
       dialogVisible: false,
       show: true,
       form: {
-      inspectionName:"",
-      inspector:"",
-      inspectionTime:"",
-      status:"",
-      itemList:[]
+        inspectionName: "",
+        inspector: "",
+        inspectionTime: "",
+        status: "",
+        itemList: [],
       },
       formInline: {
         user: "",
         region: "",
       },
       list: [],
-      lists:[],
-      nameList:[],
+      lists: [],
+      nameList: [],
       tree: [],
       id: "",
-      nameA: "",
-      arr:[]
+      elementAName: "",
+      arr: [],
+      treeList: [],
+      defaultProps: {
+        children: "children",
+        label: "label",
+      },
+      itemId: "",
     };
   },
   created() {
     this.TreeA();
+    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;
+          console.log(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 capB = {
+                safetySelfInspectionId: "",
+                safetyInspectionItemId: "",
+              }
+              var cser=[]
+              for(var j=0;j<arr[i].child.length;j++){
+              capB.safetySelfInspectionId=arr[i].child[j].safetySelfInspectionId
+              capB.safetyInspectionItemId=arr[i].child[j].safetyInspectionItemId
+              cser.push(capB)
+              }
+              arr[i].id=cser
+            console.log('tag', capB)
+            arr[i].child = this.checkSameData(arr[i].child);
+          }
+          this.lists = arr;
+          console.log(this.lists);
+        }
+      });
+    },
     TreeA() {
       safetyInspectionItemTreeA().then((res) => {
         if (res.data.code == 200) {
-          // console.log(res.data)
           this.tree = res.data.result;
         }
       });
     },
     TreeB(id) {
       safetyInspectionItemTreeB({ id: id }).then((res) => {
-        this.list=[]
-        if (res.data.code == 200) {
-           this.list = res.data.result;
-           console.log(this.list)
-          var capA={nameA:'',id:[],child:[]}
-          var atte=[]
-           capA.nameA = 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.nameA===capA.nameA)==-1){
-             this.lists.push(capA)
-
-           }else{
-            var i=this.lists.findIndex(item=>item.nameA===capA.nameA)
-            this.lists.splice(i,1)
-           }
+        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;
+          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);
+          }
         }
-        console.log(this.lists)
       });
+    },
+    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 = {};
@@ -224,43 +345,70 @@
       this.TreeB(currentObj.value);
     },
     handleClick(data) {
-      this.$router.push({
-        path: "/reviewXG",
-        query: {
-          id: data,
-        },
-      });
+      if (data.safetyInspectionItemId != undefined) {
+        this.$router.push({
+          path: "/reviewXG",
+          query: {
+            id: data.safetyInspectionItemId,
+          },
+        });
+      } else {
+        this.$router.push({
+          path: "/reviewXG",
+          query: {
+            id: data.id,
+          },
+        });
+      }
     },
-    open(){
-      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])
+    open(type) {
+      this.dialogVisible = true;
+      this.form.status = type;
+      var arr = [];
+      console.log("数据", this.lists);
+      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
-    this.dialogVisible = true
-    safetyInspectionItemName().then(res=>{
-      // console.log(res)
-  if(res.data.code==200){
-          this.nameList=res.data.result
+      this.form.itemList = arr;
+      safetyInspectionItemName().then((res) => {
+        if (res.data.code == 200) {
+          this.nameList = res.data.result;
         }
-    })
+      });
     },
-    addC(){
-      safetySelfInspectionAdd(this.form).then(res=>{
-       if(res.data.code==200){
-         this.dialogVisible=false
-           this.$notify({
+    addC() {
+      if (this.id == "添加") {
+        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:"/checklistself"
+            });
+          }
+        });
+      } else if (this.id == "编辑") {
+        safetySelfInspectionMod(this.form).then((res) => {
+          this.dialogVisible = false;
+          this.$notify({
+            type: "success",
+            duration: 2000,
+            message: "编辑成功",
+            title: "成功",
+          });
+        });
+         this.$router.push({
+              path:"/checklistself"
+            });
+      }
     },
     btnsQX() {
       this.show = true;
@@ -285,7 +433,7 @@
   border-radius: 5px;
 }
 .box-left-content {
-  padding: 10px;
+  padding: 10px 20px;
 }
 .box-right {
   position: relative;
@@ -301,9 +449,16 @@
 .titles {
   font-size: 14px;
 }
-.btns{
+.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;
+}
 </style>
\ No newline at end of file

--
Gitblit v1.9.2