cqf
2022-07-12 61eaa19c98c988d88e7cbbc348b90eaada2610db
src/views/safetyproduction/new.vue
@@ -4,104 +4,168 @@
      <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"
            filterable
            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 +173,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 +445,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>
.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>