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