From c819024e241b9f7c54cc3786373ad0d2998f2190 Mon Sep 17 00:00:00 2001 From: 马宇豪 <978517621@qq.com> Date: 星期五, 05 五月 2023 08:55:46 +0800 Subject: [PATCH] 修改 --- src/views/safetyproduction/gojudging.vue | 436 ++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 304 insertions(+), 132 deletions(-) diff --git a/src/views/safetyproduction/gojudging.vue b/src/views/safetyproduction/gojudging.vue index 51cd6f6..55b365f 100644 --- a/src/views/safetyproduction/gojudging.vue +++ b/src/views/safetyproduction/gojudging.vue @@ -1,107 +1,141 @@ <template> <div> - <div class="box-right"> - <div class="title">A级要素:<span>A级要素2</span></div> - <div v-for="(item,index) in 2" :key="index"> + <div class="box-right"> + <el-button + type="primary" + class="btn" + v-if="typeId == 2 ? false : true" + @click="finish()" + >结单</el-button> + <div class="point"> + 所有A级要素总分= {{remark}} + </div> + + <div + v-for="(item, index) in lists" + :key="index" + 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"><p><span>B级要素:</span>法律、法规和标准的识别和获取</p></el-col> - <el-col :span="6"><p><span>得分:</span>50</p></el-col> + <el-col :span="6" + ><p><span>B级要素:</span>{{ item.elementBName }}</p></el-col + > + <el-col :span="6" + ><p><span>总分:</span>{{ item.points }}</p></el-col + > + <el-col :span="6" + ><p><span>得分:</span>{{ item.point }}</p></el-col + > </el-row> <el-row> - <el-col :span="24"> - <el-table - border - :data="tableData" - > - <el-table-column - prop="date" - align="center" - label="标准化要求" + <el-col :span="24"> + <el-table + border + :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="veto" + align="center" + label="否决项" + ></el-table-column> + <el-table-column align="center" label="评审结果"> + <template slot-scope="scope"> + <span v-if="scope.row.safetyInspectionItemResult == 0" + >否决</span > - </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> + <span v-if="scope.row.safetyInspectionItemResult == 1" + >扣分</span + > + </template> + </el-table-column> + <el-table-column + align="center" + label="扣分项" + type="expand" + width="100px" + > + <template slot-scope="scope"> + <el-table + :data="scope.row.selfDeductionList" + border + :header-cell-style="{ + background: '#eef1f6', + color: '#606266', + }" + :cell-style="{ background: '#fff', color: '#606266' }" + > <el-table-column - prop="name" - align="center" - label="评审标准" + prop="name" + align="center" + label="扣分项" + > + </el-table-column> + <el-table-column prop="point" 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 + prop="remark" + align="center" + label="备注" + ></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" + :disabled="typeId == 2 ? true : false" + >评审</el-button > - <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> - <el-table-column - prop="name" - align="center" - label="扣分" - type="expand" - width="50px" - > - <el-table - :data="tableData" - > - <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 - prop="name" - align="center" - label="备注" - ></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 type="text" size="small" style="color: red" >删除</el-button > --> - </template> - </el-table-column> - </el-table> - </el-col> - </el-row> + </template> + </el-table-column> + </el-table> + </el-col> + </el-row> </div> - </div> + </div> + </div> </div> </template> <script> import Titlename from "../../components/Titlename/index.vue"; +import { + safetySelfInspectionInfo, + safetySelfInspectionFinish, +} from "@/api/safetySelfInspection.js"; export default { components: { Titlename }, data() { @@ -110,53 +144,175 @@ form: { name: "", }, + id: "", 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, - }, - ], - defaultProps: { - children: "children", - label: "label", - }, + list: [], + lists: [], + listType: [], + typeId: "", + remark:"", }; }, + created() { + this.id = this.$route.query.id; + this.typeId = this.$route.query.type; + this.safeInitem(this.id); + }, methods: { - btnsQX() { - this.show = true; + finish() { + var faly = ""; + var bar = []; + for (var i = 0; i < this.listType.length; i++) { + if (this.listType[i].safetyInspectionItemResult == null) { + faly = false; + } else { + faly = true; + } + bar.push(faly); + } + if (bar.indexOf(false) == -1) { + let id = this.id; + this.$confirm("确定要结单吗?", "提示", { + confirmButtonText: "确定", + cancelButtonText: "取消", + type: "warning", + }) + .then(() => { + safetySelfInspectionFinish({ id: this.id }).then((res) => { + if (res.data.code === "200") { + this.$notify({ + title: "成功", + message: "结单成功", + type: "success", + duration: 2000, + }); + this.$router.push({ + path:"/safetyproduction/safetyproduction/checklistself" + }); + } else { + this.$message({ + message: res.data.message, + type: "warning", + }); + } + }); + }) + .catch((error) => {}); + } else { + alert("所有的检查项评审后才可以结单!"); + } + }, + + safeInitem(id) { + safetySelfInspectionInfo({ id: id }).then((res) => { + if (res.data.code == 200) this.list = res.data.result; + this.listType = res.data.result.itemList; + var arr = this.checkSameDataA(this.list.itemList); + for (var i = 0; i < arr.length; i++) { + arr[i].child = this.checkSameData(arr[i].child); + arr[i].elementAWeight = arr[i].child[0].elementAWeight; + arr[i].child.points = arr[i].child.point; + } + this.lists = arr; + let showDetail = '' + for (let i = 0 ; i < arr.length ; i++){ + if (i < arr.length - 1 ){ + showDetail+='('+arr[i].elementAName + ' * '+arr[i].elementAWeight+ ') + ' + } else{ + showDetail+='('+arr[i].elementAName + ' * '+arr[i].elementAWeight+ ')' + } + } + this.remark+=showDetail + if (this.typeId==2){ + let pointA = '' + let pointDetail = ' = ' + let finalPoint=0 + for (let i = 0 ; i < arr.length ; i++){ + let childData = arr[i].child + pointA = 0 + for (let j = 0 ; j < childData.length ; j++){ + //改A级要素的总分 + pointA += childData[j].point + } + finalPoint += pointA * arr[i].elementAWeight + if (i < arr.length - 1 ){ + pointDetail +='('+pointA + ' * '+arr[i].elementAWeight+ ') + ' + } else{ + pointDetail +='('+pointA + ' * '+arr[i].elementAWeight+ ') = ' + } + } + pointDetail +=finalPoint + this.remark+=pointDetail + } + }); + }, + checkSameDataA(resData) { + let dataInfo = {}; + resData.forEach((item, index) => { + let { elementAName } = item; + if (!dataInfo[elementAName]) { + dataInfo[elementAName] = { + elementAName, + elementAWeight:'', + 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, + point: "", + elementAWeight:item.elementAWeight, + points: item.point, + child: [], + }; + } + dataInfo[elementBName].child.push(item); + }); + let list = Object.values(dataInfo); // list 转换成功的数据 + for (var i = 0; i < list.length; i++) { + var pot = list[i].points; + for (var j = 0; j < list[i].child.length; j++) { + if (list[i].child[j].safetyInspectionItemResult != 0) { + for ( + var s = 0; + s < list[i].child[j].selfDeductionList.length; + s++ + ) { + pot = pot - list[i].child[j].selfDeductionList[s].point; + } + } else { + var cont = 0; + pot = 0; + } + } + if (pot > 0) { + list[i].point = pot; + } else { + list[i].point = 0; + } + } + return list; + }, + handleClick(data) { + this.$router.push({ + path: "/review", + query: { + idC: data.id, + id: this.id, + }, + }); }, }, }; @@ -173,13 +329,29 @@ background-color: white; border-radius: 5px; padding: 20px; + height: 850px; + overflow-y: overlay; } -.title{ +.point { + background-color: rgba(3,78,162,0.1); + font-size: 20px; + padding: 10px 5px; + font-weight: bold; +} +.title { font-size: 16px; padding: 10px 0px; font-weight: bold; } -.titles{ +.titles { font-size: 14px; } -</style> \ No newline at end of file +.box-right /deep/ .el-table__expanded-cell { + background-color: #fff !important; +} +.btn { + background-color: #034ea2; + border: 1px solid #034ea2; + float: right; +} +</style> -- Gitblit v1.9.2