From fd41f55c6178449e1802ff43f46a477247032d97 Mon Sep 17 00:00:00 2001 From: Admin <978517621@qq.com> Date: 星期一, 26 九月 2022 15:41:31 +0800 Subject: [PATCH] Default Changelist --- src/views/specialWorkSystem/foundationSet/material/index.vue | 613 ++++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 507 insertions(+), 106 deletions(-) diff --git a/src/views/specialWorkSystem/foundationSet/material/index.vue b/src/views/specialWorkSystem/foundationSet/material/index.vue index beb388d..b056cb7 100644 --- a/src/views/specialWorkSystem/foundationSet/material/index.vue +++ b/src/views/specialWorkSystem/foundationSet/material/index.vue @@ -2,13 +2,79 @@ <div class="home-container"> <div style="height: 100%"> <el-row class="homeCard"> - <el-col :span="8"> + <el-col :span="5" style="display:flex;align-items: center"> + <span style="white-space: nowrap">作业类型:</span> <div class="grid-content topInfo"> - <el-input v-model="searchWord" placeholder="物资标准名称"></el-input> - <el-button type="primary" @click="searchRecord">查询</el-button> - <el-button plain @click="clearSearch">重置</el-button> + <el-select v-model="searchType"> + <el-option + v-for="item in workTypeList" + :key="item.value" + :label="item.label" + :value="item.value" + /> + </el-select> </div> </el-col> + <el-col v-if="searchType==1" :span="5" style="display:flex;align-items: center"> + <span style="white-space: nowrap">作业等级:</span> + <div class="grid-content topInfo"> + <el-select v-model="searchLevel"> + <el-option + v-for="item in fireLevel" + :key="item.value" + :label="item.label" + :value="item.value" + /> + </el-select> + </div> + </el-col> + <el-col v-if="searchType==3" :span="5" style="display:flex;align-items: center"> + <span style="white-space: nowrap">作业等级:</span> + <div class="grid-content topInfo"> + <el-select v-model="searchLevel"> + <el-option + v-for="item in hoistLevel" + :key="item.value" + :label="item.label" + :value="item.value" + /> + </el-select> + </div> + </el-col> + <el-col v-if="searchType==6" :span="5" style="display:flex;align-items: center"> + <span style="white-space: nowrap">作业等级:</span> + <div class="grid-content topInfo"> + <el-select v-model="searchLevel"> + <el-option + v-for="item in heightLevel" + :key="item.value" + :label="item.label" + :value="item.value" + /> + </el-select> + </div> + </el-col> + <el-col v-if="searchType==8" :span="5" style="display:flex;align-items: center"> + <span style="white-space: nowrap">作业等级:</span> + <div class="grid-content topInfo"> + <el-select v-model="searchLevel"> + <el-option + v-for="item in plateLevel" + :key="item.value" + :label="item.label" + :value="item.value" + /> + </el-select> + </div> + </el-col> + <el-col :span="5" style="display:flex;align-items: center"> + <span style="white-space: nowrap">物资配置名称:</span> + <div class="grid-content topInfo"> + <el-input v-model="searchName"/> + </div> + </el-col> + <el-button type="primary" @click="searchRecord">查询</el-button> + <el-button plain @click="clearSearch">重置</el-button> </el-row> <div class="homeCard"> <div class="main-card"> @@ -22,9 +88,12 @@ </el-row> <el-table ref="multipleTableRef" :data="tableData" style="width: 100%" height="calc(100% - 100px)" :header-cell-style="{ background: '#fafafa' }" @selection-change="handleSelectionChange"> <!-- <el-table-column type="selection" width="100" />--> - <el-table-column property="standardName" label="作业物资标准名称" :show-overflow-tooltip="true"/> - <el-table-column property="workType" label="关联作业类型" :show-overflow-tooltip="true"/> - <el-table-column property="operator" label="创建人" /> + <el-table-column property="name" label="物资配置名称" align="center" :show-overflow-tooltip="true"/> + <el-table-column property="workType" label="关联作业类型" align="center" :formatter="toType" :show-overflow-tooltip="true"/> + <el-table-column property="workLevel" label="关联作业等级" align="center" :formatter="toLevel" :show-overflow-tooltip="true"/> + <el-table-column property="createUname" label="创建人" align="center"/> + <el-table-column property="gmtCreate" label="创建时间" align="center"/> + <el-table-column property="gmtModified" label="更新时间" align="center"/> <el-table-column fixed="right" label="操作" align="center" width="250"> <template #default="scope"> <el-button link type="primary" size="small" :icon="View" @click="viewRecord(scope.row)">查看</el-button> @@ -39,18 +108,63 @@ </div> </div> </div> - <el-dialog v-model="dialogDetails" title="作业物资标准"> - <el-form :model="details" label-width="120px"> + <el-dialog v-model="dialogDetails" title="作业物资标准" @close="clearList"> + <el-form :model="details" label-width="140px"> <el-form-item label="作业物资标准名称"> - <el-input v-model="details.standardName" readonly /> + <el-input v-model="details.name" readonly /> </el-form-item> <el-form-item label="关联作业类型"> <el-input v-model="details.workType" readonly /> </el-form-item> - <el-form-item label="创建人"> - <el-input v-model="details.operator" readonly /> + <el-form-item label="关联作业等级"> + <el-input v-model="details.workLevel" readonly /> </el-form-item> - + <el-form-item label="作业物资汇总"> + <div class="materials"> + <div class="maList"> + <div>必选</div> + <div> + <div v-if="mustList.length>0" v-for="(i,index) in mustList" :key="index"> + {{i.materialName}}:默认值:{{i.defaultVal}},{{i.consumables?'耗材':'费耗材'}} + </div> + <div v-else> + 无 + </div> + </div> + </div> + <div class="maList"> + <div>可选</div> + <div> + <div v-if="chooseList.length>0" v-for="(i,index) in chooseList" :key="index"> + {{i.materialName}}:默认值:{{i.defaultVal}},{{i.consumables?'耗材':'费耗材'}} + </div> + <div v-else> + 无 + </div> + </div> + </div> + <div class="maList"> + <div>高配</div> + <div> + <div v-if="highList.length>0" v-for="(i,index) in highList" :key="index"> + {{i.materialName}}:默认值:{{i.defaultVal}},{{i.consumables?'耗材':'非耗材'}} + </div> + <div v-else> + 无 + </div> + </div> + </div> + </div> + </el-form-item> + <el-form-item label="创建人"> + <el-input v-model="details.createUname" readonly /> + </el-form-item> + <el-form-item label="创建时间"> + <el-input v-model="details.gmtCreate" readonly /> + </el-form-item> + <el-form-item label="更新时间"> + <el-input v-model="details.gmtModified" readonly /> + </el-form-item> <el-form-item> <el-button type="primary" @click="dialogDetails = false" size="default">确认</el-button> </el-form-item> @@ -58,24 +172,83 @@ </el-dialog> <el-dialog v-model="dialogAddRecord" title="作业物资标准编辑" @close="closeAdd" @open="openAdd"> <el-form :model="addRecord" label-width="150px" ref="addRef" :rules="addRules"> - <el-form-item label="作业物资标准名称" prop="standardName"> - <el-input v-model="addRecord.standardName"> </el-input> + <el-form-item label="作业物资标准名称" prop="name"> + <el-input v-model="addRecord.name"> </el-input> </el-form-item> <el-form-item label="关联作业类型" prop="workType"> <el-select v-model="addRecord.workType" clearable filterable class="input-box" placeholder="关联作业类型"> <el-option v-for="item in workTypeList" :key="item.value" :label="item.label" :value="item.value"></el-option> </el-select> </el-form-item> + <el-form-item v-if="addRecord.workType == 1" label="关联作业等级" prop="workLevel"> + <el-select v-model="addRecord.workLevel"> + <el-option + v-for="item in fireLevel" + :key="item.value" + :label="item.label" + :value="item.value" + /> + </el-select> + </el-form-item> + <el-form-item v-if="addRecord.workType == 3" label="关联作业等级" prop="workLevel"> + <el-select v-model="addRecord.workLevel"> + <el-option + v-for="item in hoistLevel" + :key="item.value" + :label="item.label" + :value="item.value" + /> + </el-select> + </el-form-item> + <el-form-item v-if="addRecord.workType == 6" label="关联作业等级" prop="workLevel"> + <el-select v-model="addRecord.workLevel"> + <el-option + v-for="item in heightLevel" + :key="item.value" + :label="item.label" + :value="item.value" + /> + </el-select> + </el-form-item> + <el-form-item v-if="addRecord.workType == 8" label="关联作业等级" prop="workLevel"> + <el-select v-model="addRecord.workLevel"> + <el-option + v-for="item in plateLevel" + :key="item.value" + :label="item.label" + :value="item.value" + /> + </el-select> + </el-form-item> <el-form-item label="物资标准配置"> <el-tabs tab-position="left" class="demo-tabs" type="border-card"> - <el-tab-pane label="防护用具"> - 防护用具1<br/> - 防护用具2<br/> + <el-tab-pane v-for="(item,index) in allList" :label="item.materialTypeName" :key="index"> + <div v-for="(i,x) in item.list" :key="x"> + <el-checkbox :label="i.name" v-model="checkData[index].list[x].checked"> + <div>{{i.name}}</div> + <div><span>默认值:</span><el-input size="small" v-model="checkData[index].list[x].defaultVal"/></div> + <div> + <span>配置级别:</span> + <el-select size="small" v-model="checkData[index].list[x].configurationLevel"> + <el-option key="0" label="必选" value="0"/> + <el-option key="1" label="可选" value="1"/> + <el-option key="2" label="高配" value="2"/> + </el-select> + </div> + <div> + <span>是否耗材:</span> + <el-radio-group v-model="checkData[index].list[x].consumables" class="ml-4"> + <el-radio label="1">是</el-radio> + <el-radio label="2">否</el-radio> + </el-radio-group> + </div> + </el-checkbox> + </div> </el-tab-pane> - <el-tab-pane label="照明装置">照明装置</el-tab-pane> - <el-tab-pane label="通讯设施">通讯设施</el-tab-pane> - <el-tab-pane label="事故气体吸收装置">事故气体吸收装置</el-tab-pane> </el-tabs> + </el-form-item> + <el-form-item label="描述" prop="describe"> + <el-input v-model="addRecord.describe" type="textarea" autosize :rows="2"/> </el-form-item> <el-form-item> <el-button type="warning" @click="dialogAddRecord = false" size="default" plain>取消</el-button> @@ -114,10 +287,12 @@ import { ElMessage, ElTable } from 'element-plus' import type { FormInstance, FormRules } from 'element-plus' import { teamManageApi } from '/@/api/systemManage/basicDateManage/personShiftManage/teamManage'; +import { materialApi } from '/@/api/specialWorkSystem/material'; // 定义接口来定义对象的类型 interface stateType { tableData: Array<any>; + allList: Array<any>; departmentList: Array<any>; casProps: {}; multipleSelection: Array<any>; @@ -130,20 +305,25 @@ pageSize: number; chosenIndex: null | number; deleteId: null | number; - searchWord: string; + searchType: null | number; + searchLevel: null | number; + searchName: string; totalSize: number; + checkData: Array<any>; + workTypeList: Array<any>; + workLevelList: Array<any>; + fireLevel: Array<any>; + hoistLevel: Array<any>; + heightLevel: Array<any>; + plateLevel: Array<any>; + mustList: Array<string>; + chooseList: Array<string>; + highList: Array<string>; addRecord: { - groupName: string; - department: number | null; - depId: number | null; - groupMembers: Array<any>; - groupInfo: string; + }; details: { - groupName: string; - department: number | null; - groupMembers: Array<any>; - groupInfo: string; + }; } @@ -158,22 +338,17 @@ pageIndex: 1, pageSize: 10, totalSize: 0, + checkData: [], chosenIndex: null, - searchWord: '', - tableData: [ - { - standardName: '一级动火作业-甲醛车间', - workType: '一级动火', - operator: '施正宏' - }, - { - standardName: '受限空间作业通用', - workType: '受限空间', - operator: '张凤' - } - ], + searchType: null, + searchLevel: null, + searchName: '', + tableData: [], + allList: [], departmentList: [], - department: '', + mustList: [], + chooseList: [], + highList: [], workTypeList: [ { label: "动火作业", @@ -208,6 +383,96 @@ value: 8 } ], + workLevelList: [ + { + label: "动火作业", + value: 1 + }, + { + label: "受限空间作业", + value: 2 + }, + { + label: "吊装作业", + value: 3 + }, + { + label: "动土作业", + value: 4 + }, + { + label: "断路作业", + value: 5 + }, + { + label: "高处作业", + value: 6 + }, + { + label: "临时用电作业", + value: 7 + }, + { + label: "盲板抽堵作业", + value: 8 + } + ], + fireLevel: [ + { + label: "一级动火作业", + value: 1 + }, + { + label: "二级动火作业", + value: 2 + }, + { + label: "特级动火作业", + value: 3 + } + ], + hoistLevel: [ + { + label: "一级吊装作业", + value: 8 + }, + { + label: "二级吊装作业", + value: 9 + }, + { + label: "三级吊装作业", + value: 10 + } + ], + heightLevel: [ + { + label: "一级高处作业", + value: 4 + }, + { + label: "二级高处作业", + value: 5 + }, + { + label: "三级高处作业", + value: 6 + }, + { + label: "特级高处作业", + value: 7 + } + ], + plateLevel: [ + { + label: "抽盲板作业", + value: 11 + }, + { + label: "堵盲板作业", + value: 12 + } + ], casProps: { expandTrigger: 'hover', emitPath: false, @@ -220,18 +485,10 @@ deleteDialog: false, deleteSetDialog: false, addRecord: { - groupName: '', - department: null, - groupMembers: [], - depId: null, - groupInfo: '' + }, details: { - groupName: '', - department: null, - groupMembers: [], - depId: null, - groupInfo: '' + }, deleteId: null, deleteArr: [] @@ -268,30 +525,82 @@ const addRef = ref<FormInstance>(); const addRules = reactive<FormRules>({ - groupName: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - department: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - groupMembers: [{ required: true, message: '该内容不能为空', trigger: 'blur' }] + name: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], + workType: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], + workLevel: [{ required: true, message: '该内容不能为空', trigger: 'blur' }] }); // 页面载入时执行方法 onMounted(() => { - // getListByPage(); - // getAllDepartment(); + getListByPage(); + getList(); }); + + const toType = (row, column, cellValue, index) => { + return state.workTypeList.find((item) => item.value === row.workType)?.label; + }; + + const toLevel = (row, column, cellValue, index) => { + if(row.workLevel <= 3){ + return state.fireLevel.find((item) => item.value === row.workLevel)?.label; + }else if(row.workLevel>3 && row.workLevel<=7){ + return state.heightLevel.find((item) => item.value === row.workLevel)?.label; + }else if(row.workLevel>8 && row.workLevel<=10){ + return state.hoistLevel.find((item) => item.value === row.workLevel)?.label; + }else{ + return state.plateLevel.find((item) => item.value === row.workLevel)?.label; + } + }; + + const getList = async ()=>{ + let res = await materialApi().getRecordList(); + if (res.data.code === '200') { + state.allList = JSON.parse(JSON.stringify(res.data.data)) + state.checkData = state.allList.map((item)=>{ + if(item.list && item.list != null){ + console.log('1111111111111') + item.list.map((i)=>{ + i.checked = false + i.defaultVal = null + i.configurationLevel = null + i.consumables = false + return { + checked: i.checked, + materialName: i.name, + consumables: i.consumables, + defaultVal: i.defaultVal, + configurationLevel: i.configurationLevel, + materialType: i.materialType, + materialTypeName: i.materialTypeName, + emergencyMaterialId: i.id + } + }) + } + return item + }) + } else { + ElMessage({ + type: 'warning', + message: res.data.msg + }); + } + console.log(state.checkData,'state.checkData') + } // 分页获取物资标准列表 const getListByPage = async () => { - const data = { pageSize: state.pageSize, pageIndex: state.pageIndex, searchParams: { groupName: state.searchWord, containGroupMemberEnable: true } }; - let res = await teamManageApi().getRecordPage(data); + const data = { pageSize: state.pageSize, pageIndex: state.pageIndex, searchParams: { workType: state.searchType, workLevel: state.searchLevel, name: state.searchName } }; + let res = await materialApi().getRecordPage(data); if (res.data.code === '200') { - state.tableData = res.data.data.map((item) => { - if (!item.groupMembers || item.groupMembers == null) { - item.groupMembers = []; - } else { - item.groupMembers = Array.from(item.groupMembers, ({ username }) => username); - } - return item; - }); + // state.tableData = res.data.data.map((item) => { + // if (!item.groupMembers || item.groupMembers == null) { + // item.groupMembers = []; + // } else { + // item.groupMembers = Array.from(item.groupMembers, ({ username }) => username); + // } + // return item; + // }); + state.tableData = res.data.data state.totalSize = res.data.total; } else { ElMessage({ @@ -314,23 +623,9 @@ } }; - // const handleChange = async (value) => { - // state.addRecord.depId = value; - // console.log(state.addRecord.department, 'de'); - // let res = await teamManageApi().getAllMember(value); - // if (res.data.code === '200') { - // state.workerList = res.data.data; - // } else { - // ElMessage({ - // type: 'warning', - // message: res.data.msg - // }); - // } - // }; - // 关键词查询记录 const searchRecord = async () => { - if (state.searchWord == '') { + if (state.searchType == null && state.searchLevel == null && state.searchName == '') { ElMessage({ type: 'warning', message: '请输入查询关键词' @@ -341,13 +636,15 @@ }; const clearSearch = async () => { - state.searchWord = ''; + state.searchType = null + state.searchLevel = null + state.searchName = '' getListByPage(); }; - // 添加班组管理方法 + // 添加方法 const addRecord = async (data: any) => { - let res = await teamManageApi().addRecord(data); + let res = await materialApi().addRecord(data); if (res.data.code === '200') { ElMessage({ type: 'success', @@ -362,11 +659,9 @@ } }; - // 修改工作时段方法 + // 修改方法 const editRecordBtn = async (index, row) => { state.addRecord = JSON.parse(JSON.stringify(row)); - state.addRecord.department = ''; - state.addRecord.groupMembers = []; state.dialogAddRecord = true; state.chosenIndex = index; }; @@ -393,17 +688,30 @@ await formEl.validate(async (valid, fields) => { if (valid) { const data = { - groupName: state.addRecord.groupName, - groupInfo: state.addRecord.groupInfo, - depId: state.addRecord.depId, - groupMemberIds: state.addRecord.groupMembers + name: state.addRecord.name, + workType: state.addRecord.workType, + workLevel: state.addRecord.workLevel, + describe: state.addRecord.describe, + materialDetailList: [] }; - if (state.chosenIndex == null) { - await addRecord(data); - } else { - data.groupId = JSON.stringify(state.addRecord.groupId); - await editRecord(data); - } + // for(let i=0;i<state.checkData.length;i++){ + // if(state.checkData[i].list !=null && state.checkData[i].list.length>0){ + // for(let j=0;j<state.checkData[i].list.length;j++){ + // if(state.checkData[i].list[j].checked){ + // let {materialName,consumables,defaultVal,configurationLevel,materialType,materialTypeName,id} = state.checkData[i].list[j] + // const newObj = {materialName,consumables,defaultVal,configurationLevel,materialType,materialTypeName,id} + // data.materialDetailList.push({ materialName, consumables, defaultVal, configurationLevel, materialType, materialTypeName, id}) + // } + // } + // } + // } + console.log(data,'data>>>>>>>>>') + // if (state.chosenIndex == null) { + // await addRecord(data); + // } else { + // data.groupId = JSON.stringify(state.addRecord.groupId); + // await editRecord(data); + // } state.dialogAddRecord = false; } else { console.log('error submit!', fields); @@ -411,9 +719,9 @@ }); }; - // 删除工作时间组方法 + // 删除方法 const deleteRecord = async (data: any) => { - let res = await teamManageApi().deleteRecord(data); + let res = await materialApi().deleteRecord(data); if (res.data.code === '200') { ElMessage({ type: 'success', @@ -429,13 +737,12 @@ }; const deleteRecordBtn = (row) => { - console.log(row, 'row'); - state.deleteId = row.groupId; + state.deleteId = row.id; state.deleteDialog = true; }; const conFirmDelete = () => { - deleteRecord({ groupId: state.deleteId }); + deleteRecord({ id: state.deleteId }); state.deleteDialog = false; }; @@ -485,8 +792,37 @@ // 查看记录 const viewRecord = (row) => { state.details = JSON.parse(JSON.stringify(row)); + state.details.workType = toType(state.details) + state.details.workLevel = toLevel(state.details) + if(state.details.materialTypeList && state.details.materialTypeList.length>0){ + const allList = JSON.parse(JSON.stringify(state.details.materialTypeList)) + for(let i = 0;i < allList.length; i++){ + if(allList[i].mdList && allList[i].mdList.length>0){ + allList[i].mdList.map((item)=>{ + if(item.configurationLevel == 0){ + state.mustList.push(item) + return + }else if(item.configurationLevel == 1){ + state.chooseList.push(item) + return + }else{ + state.highList.push(item) + return + } + }) + } + + } + } + console.log(state.mustList,state.chooseList,state.highList,'666666666') state.dialogDetails = true; }; + + const clearList = ()=>{ + state.mustList = [] + state.chooseList = [] + state.highList = [] + } // 刷新 const reLoadData = async () => { @@ -520,9 +856,12 @@ Delete, Refresh, Plus, + toType, + toLevel, searchRecord, clearSearch, viewRecord, + clearList, deleteRecordBtn, conFirmDelete, getListByPage, @@ -597,6 +936,7 @@ } .topInfo { + width: 100%; display: flex; align-items: center; font-size: 16px; @@ -609,6 +949,35 @@ } } } +.materials{ + width: 100%; + border: 1px solid #ccc; + .maList{ + width: 100%; + display: flex; + align-items: center; + border-bottom: 1px solid #ccc; + &:last-of-type{ + border-bottom: none; + } + + &>div:first-of-type{ + width: 20%; + text-align: center; + margin-right: 20px; + padding: 5px 10px; + border-right: 1px solid #ccc; + } + &>div{ + height: 100%; + div{ + height: 100%; + line-height: 24px; + } + } + } +} + .el-input { width: 100% !important; } @@ -621,4 +990,36 @@ .el-tabs{ width: 100%; } +::v-deep(.el-date-editor){ + width: 100%; +} + +:deep(.el-cascader){ + width: 100% !important; +} + +.el-checkbox{ + width: 100%; + margin-bottom: 20px; + display: flex; + align-items: flex-start; + height: auto; + ::v-deep(.el-checkbox__label){ + margin-bottom: 20px; + &>div{ + width: 100%; + margin-bottom: 10px; + &>span{ + display: inline-block; + width: 30%; + } + .el-input { + width: 100% !important; + } + .el-select { + width: 100% !important; + } + } + } +} </style> -- Gitblit v1.9.2