songhuangfeng123
2022-04-07 e5fb337fe1b0e788f4d99523f889aa28aa03fc86
src/views/safetyproduction/new.vue
@@ -15,129 +15,144 @@
          ></el-tree>
        </div>
      </div>
      <div class="box-right" v-if="list == '' ? false : true">
      <div class="box-right" v-if="lists == '' ? false : true">
        <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.elementAName }}</span>
          <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, 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="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" 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="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"
                    label="扣分项"
                    type="expand"
                  >
                  <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
                    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 border :data="scope.row.deductionList"
                        :header-cell-style="{background:'#eef1f6',color:'#606266'}" :cell-style="{background:'#fff',color:'#606266'}"
                        >
                          <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-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" 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-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="dialogVisible = false">取 消</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="closeDialog">取 消</el-button>
      </span>
    </el-dialog>
  </div>
</template>
<script>
@@ -157,57 +172,77 @@
      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: "",
      elementAName: "",
      arr:[],
      treeList:[],
       defaultProps: {
          children: 'children',
          label: 'label'
      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'}],
        },
        itemId:""
    };
  },
  created() {
    this.TreeA();
    this.id=this.$route.query.name
    this.itemId=this.$route.query.id
    this.itemInfo(this.$route.query.id)
      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
          console.log(res.data.result)
    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)
          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);
        console.log('tag', arr)
        for (var i = 0; i < arr.length; i++) {
          arr[i].child = this.checkSameData(arr[i].child);
          arr[i].id={safetySelfInspectionId:arr[i].child.safetySelfInspectionId,safetyInspectionItemId:arr[i].child.safetyInspectionItemId}
        }
        this.lists = arr;
        console.log(this.lists)
          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;
        }
      });
    },
@@ -220,60 +255,78 @@
    },
    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 = [];
        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)
           }
           console.log("数据",this.lists)
           capA.id=atte
           capA.child= this.checkSameData(this.list);
           if(this.lists.findIndex(item=>item.elementAName===capA.elementAName)==-1){
             this.lists.push(capA)
          if(this.list.length!=0){
          var capA = { elementAName: "", id: [], child: [] };
          var atte = [];
           }else{
            var i=this.lists.findIndex(item=>item.elementAName===capA.elementAName)
            this.lists.splice(i,1)
           }
          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) {
    checkSameDataA(resData) {
      let dataInfo = {};
      resData.forEach((item, index) => {
        let { elementAName } = item;
        if (!dataInfo[elementAName]) {
          dataInfo[elementAName] = {
            elementAName,
            id:{},
            id: {},
            child: [],
          };
        }
@@ -301,56 +354,77 @@
      this.TreeB(currentObj.value);
    },
    handleClick(data) {
      this.$router.push({
        path: "/reviewXG",
        query: {
          id: 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])
    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
    safetyInspectionItemName().then(res=>{
    if(res.data.code==200){
          this.nameList=res.data.result
        }
    })
      this.form.itemList = arr;
    },
    addC(){
        if(this.id=='添加'){
      safetySelfInspectionAdd(this.form).then(res=>{
       if(res.data.code==200){
         this.dialogVisible=false
           this.$notify({
      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: "成功",
            });
       }
      })
        }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"
            });
        })
          }
        });
      } 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:"/checklistself"
            });
      }
         }
      });
    },
    btnsQX() {
      this.show = true;
@@ -370,18 +444,20 @@
}
.box-left {
  width: 20%;
  min-height: 800px;
  min-height: 850px;
  background-color: white;
  border-radius: 5px;
}
.box-left-content {
  padding:10px 20px;
  padding: 10px 20px;
}
.box-right {
  position: relative;
  width: 79%;
  background-color: white;
  border-radius: 5px;
  height: 850px;
  overflow-y:overlay;
}
.title {
  font-size: 16px;
@@ -391,16 +467,19 @@
.titles {
  font-size: 14px;
}
.btns{
.btns {
  position: absolute;
  top: 10px;
  right: 50px;
}
.box-left-content /deep/ .el-tree-node__expand-icon{
.box-left-content /deep/ .el-tree-node__expand-icon {
  display: none;
}
.btn {
  background-color: #034ea2;
  border: 1px solid #034ea2;
}
</style>
.box-right /deep/ .el-table__expanded-cell{
  background-color: #fff !important;
}
</style>