| | |
| | | <el-button @click="openList(item)" type="success">选用</el-button> |
| | | </div> |
| | | |
| | | <el-dialog v-model="equipDetailDialog" title="物资标准详情" width="40%" center @open="openDetail" > |
| | | <table class="table"> |
| | | <tr> |
| | | <th class="w-20">物资名称</th> |
| | | <th class="w-20">出库部门(仓库)</th> |
| | | <th class="w-15">对应库存</th> |
| | | <th class="w-15">标准值</th> |
| | | <th class="w-15">级别</th> |
| | | <th class="w-15">实际使用</th> |
| | | </tr> |
| | | <tr v-for="(item,index) in materialDetail"> |
| | | <td class="w-20">{{item.materialName}}</td> |
| | | <td class="w-20"> |
| | | <el-select v-model="addList[index].depId" @change="changeDep($event,index)"> |
| | | <el-option |
| | | v-for="i in item.msList" |
| | | :key="i.depId" |
| | | :label="i.depName" |
| | | :value="i.depId" |
| | | /> |
| | | </el-select> |
| | | </td> |
| | | <td class="w-15"> |
| | | {{stockCount[index]}} |
| | | </td> |
| | | <td class="w-15">{{item.standVal}}</td> |
| | | <td class="w-15">{{item.configurationLevelName}}</td> |
| | | <td class="w-15"> |
| | | <el-input type="number" v-model.number="addList[index].useCount"/> |
| | | </td> |
| | | </tr> |
| | | </table> |
| | | <el-dialog v-model="equipDetailDialog" title="物资标准详情" width="75%" center @open="openDetail"> |
| | | <div class="choose-receiver"> |
| | | <span>选择其他作业关联人员</span> |
| | | <el-select v-model="receiveUids" multiple @change="changeReceiver"> |
| | | <el-option |
| | | v-for="item in workerList" |
| | | :key="item.uid" |
| | | :label="item.username" |
| | | :value="item.uid" |
| | | /> |
| | | </el-select> |
| | | </div> |
| | | <table class="table"> |
| | | <tr> |
| | | <th class="w-25">物资名称</th> |
| | | <th class="w-15">标准值</th> |
| | | <th class="w-15">级别</th> |
| | | <th class="w-30">关联人员与个数</th> |
| | | <th class="w-15">实际使用</th> |
| | | </tr> |
| | | <tr v-for="(item,index) in materialDetail"> |
| | | <td class="w-25">{{item.materialName}}</td> |
| | | <!-- <td class="w-1">--> |
| | | <!-- <el-select v-model="addList[index].depId" @change="changeDep($event,index)">--> |
| | | <!-- <el-option--> |
| | | <!-- v-for="i in item.msList"--> |
| | | <!-- :key="i.depId"--> |
| | | <!-- :label="i.depName"--> |
| | | <!-- :value="i.depId"--> |
| | | <!-- />--> |
| | | <!-- </el-select>--> |
| | | <!-- </td>--> |
| | | <!-- <td class="w-15">--> |
| | | <!-- {{stockCount[index]}}--> |
| | | <!-- </td>--> |
| | | <td class="w-15">{{item.standVal}}</td> |
| | | <td class="w-15">{{item.configurationLevelName}}</td> |
| | | <td class="w-30"> |
| | | {{item.receiveUnames}} |
| | | </td> |
| | | <!-- <td class="w-15">--> |
| | | <!-- <el-input type="number" v-model.number="addList[index].useCount"/>--> |
| | | <!-- </td>--> |
| | | <td class="w-15"> |
| | | {{item.receiveCount}} |
| | | </td> |
| | | </tr> |
| | | </table> |
| | | <template #footer> |
| | | <span class="dialog-footer"> |
| | | <el-button @click="closeChoose()" size="default">取消</el-button> |
| | |
| | | equipDetailDialog: boolean |
| | | materialDetail: Array<any> |
| | | stockCount: Array<number> |
| | | addList: Array<any> |
| | | chosenId: number | null |
| | | chosenId: number | null, |
| | | receiveUids: Array<number> |
| | | } |
| | | |
| | | |
| | |
| | | import {ElMessage, ElMessageBox} from 'element-plus'; |
| | | import {useUserInfo} from "/@/stores/userInfo"; |
| | | import {storeToRefs} from "pinia"; |
| | | |
| | | export default { |
| | | name: 'materialDialog', |
| | | setup(props,context) { |
| | | setup(props: any, context: any) { |
| | | const userInfo = useUserInfo() |
| | | const { userInfos } = storeToRefs(userInfo); |
| | | const approveBasicFormRef = ref(); |
| | |
| | | equipDetailDialog: false, |
| | | materialDetail: [], |
| | | stockCount: [], |
| | | addList: [] |
| | | receiveUids: [] |
| | | }); |
| | | |
| | | // 确认物资标准 |
| | |
| | | if (res.data.code === '200') { |
| | | if(res.data.data && res.data.data.length>0){ |
| | | state.materialList = JSON.parse(JSON.stringify(res.data.data)) |
| | | state.equipmentDialog = true |
| | | }else{ |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: '暂时查询不到物资标准信息' |
| | | }); |
| | | state.equipmentDialog = false |
| | | } |
| | | } else { |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: res.data.msg |
| | | }); |
| | | state.equipmentDialog = false |
| | | } |
| | | } |
| | | const openList =(item:object)=>{ |
| | | const openList = async(item:object)=>{ |
| | | state.chosenId = item.id |
| | | state.addList = [] |
| | | state.stockCount = [] |
| | | if(item.mcList && item.mcList.length>0){ |
| | | for(let j in item.mcList){ |
| | | if(item.mcList[j].msList == null || item.mcList[j].msList.length==0){ |
| | | item.mcList.splice(j,1) |
| | | } |
| | | const data = {maBaseId: state.chosenId,receiveUids:state.receiveUids} |
| | | const res = await workApplyApi().getMaterialDetail(data) |
| | | if (res.data.code === '200') { |
| | | if(res.data.data && res.data.data.length>0){ |
| | | state.materialDetail = res.data.data |
| | | state.equipDetailDialog = true |
| | | }else{ |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: '暂时查询不到物资标准信息' |
| | | }); |
| | | } |
| | | state.materialDetail = item.mcList |
| | | for(let i in state.materialDetail){ |
| | | state.addList.push( |
| | | { |
| | | materialId: state.materialDetail[i].materialId, |
| | | depId: null, |
| | | depName: '', |
| | | useCount: null |
| | | } |
| | | ) |
| | | for(let x in state.materialDetail[i].msList){ |
| | | if(state.materialDetail[i].msList[x].depId == userInfos.value.depId){ |
| | | state.addList[i].depId = userInfos.value.depId |
| | | state.addList[i].depName = state.materialDetail[i].msList[x].depName |
| | | state.stockCount[i] = state.materialDetail[i].msList.find((e) => e.depId == state.addList[i].depId).stockCount |
| | | } |
| | | } |
| | | } |
| | | } |
| | | state.equipDetailDialog = true |
| | | } |
| | | |
| | | const openDetail = ()=>{ |
| | | console.log(state.addList,'打开弹窗') |
| | | } |
| | | |
| | | const changeDep = (val:number,index:number)=>{ |
| | | state.addList[index].depName = state.materialDetail[index].msList.find((i) => i.depId == val).depName |
| | | state.stockCount[index] = state.materialDetail[index].msList.find((i) => i.depId == val).stockCount |
| | | } |
| | | const submitMaterials = ()=>{ |
| | | if(state.addList.length > 0 && (state.addList.some((e) => e.depId == null && e.useCount != null ) || state.addList.some((e) => e.useCount == null && e.depId != null))){ |
| | | } else { |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: '出库部门或实际使用值不可为空' |
| | | message: res.data.msg |
| | | }); |
| | | return |
| | | } |
| | | for(let i in state.materialDetail){ |
| | | if(state.materialDetail[i].configurationLevelName == '必选' && state.addList[i].depId != null && state.addList[i].useCount <= 0){ |
| | | // state.stockCount = [] |
| | | // if(item.mcList && item.mcList.length>0){ |
| | | // for(let j in item.mcList){ |
| | | // if(item.mcList[j].msList == null || item.mcList[j].msList.length==0){ |
| | | // item.mcList.splice(j,1) |
| | | // } |
| | | // } |
| | | // state.materialDetail = item.mcList |
| | | // for(let i in state.materialDetail){ |
| | | // state.addList.push( |
| | | // { |
| | | // materialId: state.materialDetail[i].materialId, |
| | | // depId: null, |
| | | // depName: '', |
| | | // useCount: null |
| | | // } |
| | | // ) |
| | | // for(let x in state.materialDetail[i].msList){ |
| | | // if(state.materialDetail[i].msList[x].depId == userInfos.value.depId){ |
| | | // state.addList[i].depId = userInfos.value.depId |
| | | // state.addList[i].depName = state.materialDetail[i].msList[x].depName |
| | | // state.stockCount[i] = state.materialDetail[i].msList.find((e) => e.depId == state.addList[i].depId).stockCount |
| | | // } |
| | | // } |
| | | // } |
| | | // } |
| | | } |
| | | const changeReceiver = async ()=>{ |
| | | const data = {maBaseId: state.chosenId,receiveUids:state.receiveUids} |
| | | const res = await workApplyApi().getMaterialDetail(data) |
| | | if (res.data.code === '200') { |
| | | if(res.data.data && res.data.data.length>0){ |
| | | state.materialDetail = res.data.data |
| | | }else{ |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: '必选物资数量不能小于等于0' |
| | | message: '暂时查询不到物资标准信息' |
| | | }); |
| | | return |
| | | } |
| | | if((state.stockCount[i] !=null && state.addList[i].useCount !=null) && (state.stockCount[i] < state.addList[i].useCount)){ |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: '物资配置数量超出库存量,请重新配置' |
| | | }); |
| | | return |
| | | } |
| | | } else { |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: res.data.msg |
| | | }); |
| | | } |
| | | } |
| | | const openDetail = ()=>{ |
| | | } |
| | | const submitMaterials = ()=>{ |
| | | // if(state.addList.length > 0 && (state.addList.some((e) => e.depId == null && e.useCount != null ) || state.addList.some((e) => e.useCount == null && e.depId != null))){ |
| | | // ElMessage({ |
| | | // type: 'warning', |
| | | // message: '出库部门或实际使用值不可为空' |
| | | // }); |
| | | // return |
| | | // } |
| | | // for(let i in state.materialDetail){ |
| | | // if(state.materialDetail[i].configurationLevelName == '必选' && state.addList[i].depId != null && state.addList[i].useCount <= 0){ |
| | | // ElMessage({ |
| | | // type: 'warning', |
| | | // message: '必选物资数量不能小于等于0' |
| | | // }); |
| | | // return |
| | | // } |
| | | // if((state.stockCount[i] !=null && state.addList[i].useCount !=null) && (state.stockCount[i] < state.addList[i].useCount)){ |
| | | // ElMessage({ |
| | | // type: 'warning', |
| | | // message: '物资配置数量超出库存量,请重新配置' |
| | | // }); |
| | | // return |
| | | // } |
| | | // } |
| | | // if(state.addList.length > 0){ |
| | | // for(let n in state.addList){ |
| | | // if(state.addList[n].depId == null && state.addList[n].useCount == null){ |
| | |
| | | // } |
| | | // } |
| | | // } |
| | | console.log(state.addList,state.chosenId,'666666666') |
| | | context.emit('conFirmMaterials',state.addList,state.chosenId) |
| | | console.log(state.receiveUids,state.chosenId,'666666666') |
| | | context.emit('conFirmMaterials',state.receiveUids,state.chosenId) |
| | | state.equipDetailDialog = false |
| | | state.equipmentDialog = false |
| | | } |
| | |
| | | } |
| | | const closeChoose = () =>{ |
| | | state.equipDetailDialog = false |
| | | state.equipmentDialog = false |
| | | } |
| | | return { |
| | | ...toRefs(state), |
| | | changeDep, |
| | | getMaList, |
| | | openList, |
| | | changeReceiver, |
| | | openDetail, |
| | | closeChoose, |
| | | closeMaterial, |
| | |
| | | .table{ |
| | | width: 100%; |
| | | border-collapse: collapse; |
| | | margin-top: 20px; |
| | | tr{ |
| | | width: 100%; |
| | | border: 1px solid #ccc; |
| | | th,td{ |
| | | padding: 6px 0; |
| | | border-left: 1px solid #ccc; |
| | | &:first-of-type{ |
| | | border-left: none; |
| | | } |
| | | } |
| | | th{ |
| | | padding: 10px 0; |
| | | td{ |
| | | font-weight: bolder; |
| | | } |
| | | |
| | |
| | | width: 20%; |
| | | text-align: center; |
| | | } |
| | | .w-25{ |
| | | width: 25%; |
| | | text-align: center; |
| | | } |
| | | .w-30{ |
| | | width: 30%; |
| | | text-align: center; |
| | | } |
| | | } |
| | | } |
| | | </style> |