| | |
| | | <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() { |
| | |
| | | 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 |
| | | 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 == "添加") { |
| | | 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 == "编辑") { |
| | | 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; |
| | | }, |
| | |
| | | } |
| | | .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> |