lyfO_o
2022-03-31 4a6b6d253451a14063df0659877f3d8c4ca921a5
src/views/safetyproduction/new.vue
@@ -5,18 +5,28 @@
        <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 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, i) in lists" :key="i">
        <div class="title">
          A级要素:<span>{{ item.nameA }}</span>
            A级要素:<span>{{ item.elementAName }}</span>
        </div>
        <div v-for="(item, index) in item.child" :key="index">
          <el-row class="titles">
@@ -29,7 +39,7 @@
          </el-row>
          <el-row>
            <el-col :span="22" :offset="1">
              <el-table border :data="item.child">
                <el-table ref="table" border :data="item.child">
                <el-table-column
                  prop="standardizationRequirements"
                  align="center"
@@ -55,17 +65,22 @@
                  <el-table-column
                    align="center"
                    width="80px"
                    type="expand"
                    label="扣分项"
                      type="expand"
                  >
                    <el-table :data="item.child.deductionList">
                      <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
                            prop="date"
                            align="center"
                            label="扣分"
                          >
                      </el-table-column>
                      <el-table-column
                        prop="date"
@@ -74,6 +89,7 @@
                      >
                      </el-table-column>
                    </el-table>
                      </template>
                  </el-table-column>
                </el-table-column>
                <el-table-column align="center" label="操作" width="200px">
@@ -96,28 +112,35 @@
        </div>
      </div>
    </div>
    <el-dialog
  title="添加"
  :visible.sync="dialogVisible"
  width="30%"
>
    <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" placeholder="请选择">
          <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">
              :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-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">
@@ -125,9 +148,13 @@
    </el-col> -->
  </el-form-item>
    </el-form>
  <span slot="footer" class="dialog-footer">
      <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>
    <el-button type="primary" @click="addC">确 定</el-button>
  </span>
</el-dialog>
  </div>
@@ -139,6 +166,8 @@
  safetyInspectionItemTreeB,
  safetySelfInspectionAdd,
  safetyInspectionItemName,
  safetySelfInspectionInfo,
  safetySelfInspectionMod,
} from "@/api/safetySelfInspection.js";
export default {
  components: { Titlename },
@@ -151,7 +180,7 @@
      inspector:"",
      inspectionTime:"",
      status:"",
      itemList:[]
        itemList: [],
      },
      formInline: {
        user: "",
@@ -162,48 +191,140 @@
      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=[]
        this.list = [];
        if (this.id == "添加") {
        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;
            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)
              var capB = {
                safetySelfInspectionId: "",
                safetyInspectionItemId: "",
              };
              capB.safetyInspectionItemId = this.list[i].id;
              atte.push(capB);
           }
           capA.id=atte
            capA.id = atte;
           capA.child= this.checkSameData(this.list);
           if(this.lists.findIndex(item=>item.nameA===capA.nameA)==-1){
             this.lists.push(capA)
            if (
              this.lists.findIndex(
                (item) => item.elementAName === capA.elementAName
              ) == -1
            ) {
              this.lists.push(capA);
           }else{
            var i=this.lists.findIndex(item=>item.nameA===capA.nameA)
            this.lists.splice(i,1)
              var i = this.lists.findIndex(
                (item) => item.elementAName === capA.elementAName
              );
              this.lists.splice(i, 1);
           }
        }
        console.log(this.lists)
        } 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);
          }
        }
      });
    },
    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) {
      if (data.safetyInspectionItemId != undefined) {
      this.$router.push({
        path: "/reviewXG",
        query: {
          id: data,
            id: data.safetyInspectionItemId,
        },
      });
      } else {
        this.$router.push({
          path: "/reviewXG",
          query: {
            id: data.id,
    },
    open(){
      var arr=[]
        });
      }
    },
    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
        this.lists[i].id;
        for(var j=0;j<this.lists[i].id.length;j++){
          arr.push(this.lists[i].id[j])
          arr.push(this.lists[i].id[j]);
        }
      }
      this.form.itemList=arr
    this.dialogVisible = true
    safetyInspectionItemName().then(res=>{
      // console.log(res)
      this.form.itemList = arr;
      safetyInspectionItemName().then((res) => {
  if(res.data.code==200){
          this.nameList=res.data.result
          this.nameList = res.data.result;
        }
    })
      });
    },
    addC(){
      safetySelfInspectionAdd(this.form).then(res=>{
      if (this.id == "添加") {
        safetySelfInspectionAdd(this.form).then((res) => {
       if(res.data.code==200){
         this.dialogVisible=false
            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;
@@ -306,4 +454,11 @@
  top: 10px;
  right: 50px;
}
.box-left-content /deep/ .el-tree-node__expand-icon {
  display: none;
}
.btn {
  background-color: #034ea2;
  border: 1px solid #034ea2;
}
</style>