From 7f9b036ab4c97a7eb9bf93162431ad17450689ff Mon Sep 17 00:00:00 2001 From: shj <1790240199@qq.com> Date: 星期二, 29 三月 2022 18:39:23 +0800 Subject: [PATCH] 自查清单 --- src/views/safetyproduction/checklistself.vue | 174 ++++++++------ src/views/safetyproduction/reviewXG.vue | 3 index.html | 2 src/api/safetySelfInspection.js | 109 +++++++++ src/router/index.js | 7 src/views/safetyproduction/new.vue | 409 +++++++++++++++++++-------------- src/views/safetyproduction/checklist.vue | 2 7 files changed, 449 insertions(+), 257 deletions(-) diff --git a/index.html b/index.html index e0ff05f..38f2bef 100644 --- a/index.html +++ b/index.html @@ -22,7 +22,7 @@ #app { margin: 0; padding: 0; - overflow: hidden; + /* overflow: hidden; */ height: 100%; } diff --git a/src/api/safetySelfInspection.js b/src/api/safetySelfInspection.js new file mode 100644 index 0000000..1d19e81 --- /dev/null +++ b/src/api/safetySelfInspection.js @@ -0,0 +1,109 @@ +import {getToken} from "../utils/auth"; +import request from '@/utils/request' + +export function safetySelfInspectionList(data) { + return request({ + headers:{ + 'Authorization': getToken() + }, + url: process.env.BASE_API+'/safetySelfInspection/page', + method: 'post', + data + }) +} + +export function safetySelfInspectionInfo(data) { + return request({ + headers:{ + 'Authorization': getToken() + }, + url: process.env.BASE_API+'/safetySelfInspection/info', + method: 'post', + data + }) +} + +export function safetySelfInspectionItemInfo(data) { + return request({ + headers:{ + 'Authorization': getToken() + }, + url: process.env.BASE_API+'/safetySelfInspection/itemInfo', + method: 'post', + data + }) +} + +export function safetySelfInspectionModItemInfo(data) { + return request({ + headers:{ + 'Authorization': getToken() + }, + url: process.env.BASE_API+'/safetySelfInspection/modItemInfo', + method: 'post', + data + }) +} + +export function safetySelfInspectionAdd(data) { + return request({ + headers:{ + 'Authorization': getToken() + }, + url: process.env.BASE_API+'/safetySelfInspection/add', + method: 'post', + data + }) +} + +export function safetySelfInspectionMod(data) { + return request({ + headers:{ + 'Authorization': getToken() + }, + url: process.env.BASE_API+'/safetySelfInspection/mod', + method: 'post', + data + }) +} + +export function safetySelfInspectionDel(data) { + return request({ + headers:{ + 'Authorization': getToken() + }, + url: process.env.BASE_API+'/safetySelfInspection/del', + method: 'post', + data + }) +} +export function safetyInspectionItemTreeA(data) { + return request({ + headers:{ + 'Authorization': getToken() + }, + url: process.env.BASE_API+'/elementManagement/getElementTree', + method: 'post', + data + }) +} +export function safetyInspectionItemName(data) { + return request({ + headers:{ + 'Authorization': getToken() + }, + url: process.env.BASE_API+'/getUserList', + method: 'post', + data + }) +} +export function safetyInspectionItemTreeB(data) { + return request({ + headers:{ + 'Authorization': getToken() + }, + url: process.env.BASE_API+'/safetyInspectionItem/infoElementA', + method: 'post', + data + }) +} \ No newline at end of file diff --git a/src/router/index.js b/src/router/index.js index 06ba469..3b98514 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -168,12 +168,11 @@ meta: { title: '自查清单_去评审', icon: '' } }, { - id: 2, - parentId: 0, path: '/new', - name: '自查清单_新增|修改', + // name: '自查清单_新增|修改', component: () => import('@/views/safetyproduction/new'), - meta: { title: '自查清单_新增|修改', icon: '' } + // meta: { title: '自查清单_新增|修改', icon: '' } + hidden: true }, { id: 2, diff --git a/src/views/safetyproduction/checklist.vue b/src/views/safetyproduction/checklist.vue index 31bad5e..d2b83ca 100644 --- a/src/views/safetyproduction/checklist.vue +++ b/src/views/safetyproduction/checklist.vue @@ -16,7 +16,7 @@ </el-col> <el-col :span="11" :offset="1" style="white-space: nowrap"> <el-form-item size="mini"> - <el-button type="primary" class="btns" @click="find" size="mini" + <el-button type="primary" class="btns" size="mini" >搜索</el-button > <el-button diff --git a/src/views/safetyproduction/checklistself.vue b/src/views/safetyproduction/checklistself.vue index b2b9231..9c95d1e 100644 --- a/src/views/safetyproduction/checklistself.vue +++ b/src/views/safetyproduction/checklistself.vue @@ -1,125 +1,151 @@ <template> <div class="app-container"> - <el-form ref="form" :model="form" label-width="80px"> + <el-form ref="form" :model="listQuery" label-width="80px"> <el-row> <el-col :span="5"> <el-form-item label="自查任务"> - <el-input v-model="form.name"></el-input> + <el-input v-model="listQuery.filter.inspectionName"></el-input> </el-form-item> </el-col> <el-col :span="5"> <el-form-item label="检查时间"> - <el-date-picker v-model="form.value1" type="date" placeholder="选择日期"> + <el-date-picker + v-model="listQuery.filter.inspectionStartTime" + type="date" + format="yyyy 年 MM 月 dd 日" + placeholder="选择日期" + > </el-date-picker> </el-form-item> </el-col> <el-col :span="5"> <el-form-item label="检查人员"> - <el-input v-model="form.name"></el-input> + <el-input v-model="listQuery.filter.inspectorName"></el-input> </el-form-item> </el-col> <el-col :span="4" style="text-align: center"> - <el-button type="primary" icon="el-icon-search" class="btns" + <el-button + type="primary" + icon="el-icon-search" + class="btns" + @click="find()" >搜索</el-button > <el-button type="primary" icon="el-icon-plus" class="btns" - @click="dialogVisible = true" + @click="jump()" >新增</el-button > </el-col> </el-row> </el-form> - <el-table :data="tableData" border style="width: 100%"> - <el-table-column prop="date" label="自查任务"> + <el-table :data="list" border style="width: 100%"> + <el-table-column align="center" prop="inspectionName" label="自查任务"> </el-table-column> - <el-table-column prop="name" label="检查时间"> </el-table-column> - <el-table-column prop="name" label="检查人员"> </el-table-column> - <el-table-column prop="province" label="状态"> </el-table-column> - <el-table-column prop="address" label="更新时间"> </el-table-column> + <el-table-column align="center" prop="createTime" label="检查时间"> + </el-table-column> + <el-table-column align="center" prop="inspectorName" label="检查人员"> + </el-table-column> + <el-table-column align="center" label="状态"> + <template slot-scope="scope"> + <span v-if="scope.row.status == -1">暂存</span> + <span v-if="scope.row.status == 0">评审中</span> + <span v-if="scope.row.status == 1">已评审</span> + </template> + </el-table-column> + <el-table-column align="center" prop="updateTime" label="更新时间"> + </el-table-column> <el-table-column align="center" label="操作"> <template slot-scope="scope"> - <el-button @click="handleClick(scope.row)" type="text" size="small" + <el-button v-if="scope.row.status==-1" @click="handleClick(scope.row)" type="text" size="small" >编辑</el-button > - <el-button type="text" size="small" style="color: red" + <el-button v-if="scope.row.status==0" @click="handleClick(scope.row)" type="text" size="small" + >去评审</el-button + > + <el-button v-if="scope.row.status==1" @click="handleClick(scope.row)" type="text" size="small" + >查看</el-button + > + <el-button v-if="scope.row.status==1?false:true" type="text" size="small" style="color: red" >删除</el-button > </template> </el-table-column> </el-table> + <div style="text-align: right"> + <el-pagination + v-show="recordTotal > 0" + @size-change="handleSizeChange" + @current-change="handleCurrentChange" + :current-page="currentPage" + :page-sizes="[10, 20, 30, 50]" + :page-size="pageSize" + layout="total, sizes, prev, pager, next, jumper" + :total="recordTotal" + > + </el-pagination> + </div> </div> </template> <script> +import { safetySelfInspectionList } from "@/api/safetySelfInspection.js"; export default { data() { return { dialogVisible: false, - form: { - name: "", - value1:"", + form: {}, + listQuery: { + filter: { + inspectionName: "", + inspectorName: "", + inspectionStartTime: "", + inspectionEndTime: "", + status: "", + }, + pageIndex: 1, + pageSize: 5, }, - 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, - }, - ], - options: [ - { - value: "选项1", - label: "黄金糕", - }, - { - value: "选项2", - label: "双皮奶", - }, - { - value: "选项3", - label: "蚵仔煎", - }, - { - value: "选项4", - label: "龙须面", - }, - { - value: "选项5", - label: "北京烤鸭", - }, - ], - value: "", + list: [], + pageSize: 10, + recordTotal: 0, + currentPage: 1, }; }, + created() { + this.safetySelfInspectionL(); + }, + methods: { + async safetySelfInspectionL() { + var res = await safetySelfInspectionList(this.listQuery).then((res) => { + if (res.data.code == 200) { + console.log(res.data); + this.list = res.data.result.records; + this.recordTotal = res.data.result.total; + this.pageSize = res.data.result.size; + this.currentPage = res.data.result.current; + } + }); + }, + handleClick(index) {}, + find() { + this.safetySelfInspectionL(); + }, + handleSizeChange(val) { + this.listQuery.pageSize = val; + this.safetySelfInspectionL(); + }, + handleCurrentChange(val) { + this.listQuery.pageIndex = val; + this.safetySelfInspectionL(); + }, + jump(){ + this.$router.push({ + path:"/new" + }) + } + }, }; </script> <style scoped> diff --git a/src/views/safetyproduction/new.vue b/src/views/safetyproduction/new.vue index 66d9aa7..ca2005c 100644 --- a/src/views/safetyproduction/new.vue +++ b/src/views/safetyproduction/new.vue @@ -4,104 +4,142 @@ <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" + :data="tree" + node-key="id" + @check="treeClick" + 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"> + <div class="box-right" v-if="list == '' ? false : true"> + <el-button type="primary" @click="open()" class="btns">添加</el-button> + <div v-for="(item, i) in lists" :key="i"> + <div class="title"> + A级要素:<span>{{ item.nameA }}</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>法律、法规和标准的识别和获取</p></el-col> - <el-col :span="6" :offset="4"><p><span>得分:</span>50</p></el-col> + <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 - border - :data="tableData" + <el-col :span="22" :offset="1"> + <el-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="评审标准"> + <el-table-column + prop="veto" + align="center" + label="否决项" + ></el-table-column> + <el-table-column + align="center" + width="80px" + type="expand" + 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 :data="item.child.deductionList"> <el-table-column - prop="name" - align="center" - label="评审标准" + 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> + <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-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 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> + <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" 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-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" class="dialog-footer"> + <el-button @click="dialogVisible = false">取 消</el-button> + <el-button type="primary" @click="addC">确 定</el-button> + </span> +</el-dialog> </div> </template> <script> import Titlename from "../../components/Titlename/index.vue"; +import { + safetyInspectionItemTreeA, + safetyInspectionItemTreeB, + safetySelfInspectionAdd, + safetyInspectionItemName, +} from "@/api/safetySelfInspection.js"; export default { components: { Titlename }, data() { @@ -109,110 +147,121 @@ 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", - }, - ], - }, - ], - }, - ], - defaultProps: { - children: "children", - label: "label", - }, + list: [], + lists:[], + nameList:[], + tree: [], + id: "", + nameA: "", + arr:[] }; }, + created() { + this.TreeA(); + }, methods: { + TreeA() { + safetyInspectionItemTreeA().then((res) => { + if (res.data.code == 200) { + // console.log(res.data) + this.tree = res.data.result; + } + }); + }, + TreeB(id) { + safetyInspectionItemTreeB({ id: id }).then((res) => { + this.list=[] + if (res.data.code == 200) { + this.list = res.data.result; + console.log(this.list) + var capA={nameA:'',id:[],child:[]} + var atte=[] + capA.nameA = 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.nameA===capA.nameA)==-1){ + this.lists.push(capA) + + }else{ + var i=this.lists.findIndex(item=>item.nameA===capA.nameA) + this.lists.splice(i,1) + } + } + console.log(this.lists) + }); + }, + 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) { + this.$router.push({ + path: "/reviewXG", + query: { + id: data, + }, + }); + }, + open(){ + 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 + this.dialogVisible = true + safetyInspectionItemName().then(res=>{ + // console.log(res) + if(res.data.code==200){ + this.nameList=res.data.result + } + }) + }, + addC(){ + safetySelfInspectionAdd(this.form).then(res=>{ + if(res.data.code==200){ + this.dialogVisible=false + this.$notify({ + type: "success", + duration: 2000, + message: "新增成功", + title: "成功", + }); + } + + }) + }, btnsQX() { this.show = true; }, @@ -239,16 +288,22 @@ padding: 10px; } .box-right { + position: relative; width: 79%; background-color: white; border-radius: 5px; } -.title{ +.title { font-size: 16px; padding: 10px 20px; font-weight: bold; } -.titles{ +.titles { font-size: 14px; } +.btns{ + position: absolute; + top: 10px; + right: 50px; +} </style> \ No newline at end of file diff --git a/src/views/safetyproduction/reviewXG.vue b/src/views/safetyproduction/reviewXG.vue index 9ba6b88..b0a1349 100644 --- a/src/views/safetyproduction/reviewXG.vue +++ b/src/views/safetyproduction/reviewXG.vue @@ -221,6 +221,9 @@ }, }; }, + created(){ + console.log(this.$route.query.id) + }, methods: { handleClick() { this.dialogVisible = true; -- Gitblit v1.9.2