This commit is contained in:
hayu 2025-09-17 18:23:35 +08:00
parent 2978e8ab90
commit ae65a5d711
2 changed files with 332 additions and 37 deletions

View File

@ -773,3 +773,49 @@ export function getListDetailsApi(data) {
params: data params: data
}) })
} }
//分公司下拉
export function getImpUnitListApi(query) {
return request({
url: '/material/material_maMachine/getImpUnitNameList',
method: 'get',
params: query
})
}
//项目部下拉
export function getDepartListByImpUnitApi(query) {
return request({
url: '/material/material_maMachine/getDepartNameList',
method: 'get',
params: query
})
}
//工程下拉
export function getProListByDepartApi(query) {
return request({
url: '/material/material_maMachine/getProjectList',
method: 'get',
params: query
})
}
//班组下拉
export function getTeamList(query) {
return request({
url: '/material/material_maMachine/getTeamList',
method: 'get',
params: query
})
}
//分包单位下拉
export function getSubUnitList(query) {
return request({
url: '/material/material_maMachine/getSubUnitList',
method: 'get',
params: query
})
}

View File

@ -2,67 +2,127 @@
<div class="app-container" id=""> <div class="app-container" id="">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="90px"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="90px">
<el-form-item label="分公司" prop="impUnitName"> <el-form-item label="分公司" prop="impUnitName">
<el-input <el-select
v-model="queryParams.impUnitName" v-model="queryParams.impUnitName"
placeholder="请输入分公司" placeholder="请选择分公司"
clearable clearable
:maxlength="50" filterable
style="width: 240px" style="width: 240px"
@change="handleImpUnitChange"
>
<el-option
v-for="item in impUnitOptions"
:key="item.value"
:label="item.label"
:value="item.value"
/> />
</el-select>
</el-form-item> </el-form-item>
<el-form-item label="项目部" prop="departName"> <el-form-item label="项目部" prop="departName">
<el-input <el-select
v-model="queryParams.departName" v-model="queryParams.departName"
placeholder="请输入项目部" placeholder="请选择项目部"
clearable clearable
:maxlength="50" filterable
style="width: 240px" style="width: 240px"
@change="handleDepartChange"
>
<el-option
v-for="item in departOptions"
:key="item.value"
:label="item.label"
:value="item.value"
/> />
</el-select>
</el-form-item> </el-form-item>
<el-form-item label="工程" prop="proName"> <el-form-item label="工程" prop="proName">
<el-input <el-select
v-model="queryParams.proName" v-model="queryParams.proName"
placeholder="请输入工程" placeholder="请选择工程"
clearable clearable
:maxlength="50" filterable
style="width: 240px" style="width: 240px"
@change="getTeamList"
>
<el-option
v-for="item in proOptions"
:key="item.value"
:label="item.label"
:value="item.value"
/> />
</el-select>
</el-form-item> </el-form-item>
<el-form-item label="分包单位" prop="subUnitName"> <el-form-item label="分包单位" prop="subUnitName">
<el-input <el-select
v-model="queryParams.subUnitName" v-model="queryParams.subUnitName"
placeholder="请输入分包单位" placeholder="请选择分包单位"
clearable clearable
:maxlength="50" filterable
style="width: 240px" style="width: 240px"
>
<el-option
v-for="item in subUnitOptions"
:key="item.value"
:label="item.label"
:value="item.value"
/> />
</el-select>
</el-form-item> </el-form-item>
<el-form-item label="班组名称" prop="teamName"> <el-form-item label="班组名称" prop="teamName">
<el-input <el-select
v-model="queryParams.teamName" v-model="queryParams.teamName"
placeholder="请输入班组名称" placeholder="请选择班组"
clearable clearable
:maxlength="50" filterable
style="width: 240px" style="width: 240px"
>
<el-option
v-for="item in teamOptions"
:key="item.value"
:label="item.label"
:value="item.value"
/> />
</el-select>
</el-form-item> </el-form-item>
<el-form-item label="物资名称" prop="typeName"> <el-form-item label="物资名称" prop="typeName">
<el-input <el-select
v-model="queryParams.typeName" v-model="queryParams.typeName"
placeholder="请输入物资名称" placeholder="请选择物资名称"
clearable clearable
:maxlength="50" filterable
style="width: 240px" style="width: 240px"
@change="handleMaModel"
>
<el-option
v-for="item in materialNameList"
:key="item.value"
:label="item.label"
:value="item.label"
/> />
</el-select>
</el-form-item> </el-form-item>
<el-form-item label="规格型号" prop="typeModelName"> <el-form-item label="规格型号" prop="typeModelName">
<el-input <el-select
v-model="queryParams.typeModelName" v-model="queryParams.typeModelName"
placeholder="请输入规格型号" placeholder="请选择规格型号"
clearable clearable
:maxlength="50" filterable
style="width: 240px" style="width: 240px"
>
<el-option
v-for="item in materialModelList"
:key="item.value"
:label="item.label"
:value="item.label"
/> />
</el-select>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">查询</el-button> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">查询</el-button>
@ -87,18 +147,30 @@
</div> </div>
<div class="tip-box"> <div class="tip-box">
<div class="tip-num">{{ tipForm.allNum || 0 }}</div> <div class="tip-num">{{ tipForm.countNum || 0 }}</div>
<div class="tip-text">总保有量</div> <div class="tip-text">计件类总保有量</div>
</div>
<div class="tip-box">
<div class="tip-num">{{ tipForm.ropeNum || 0 }}</div>
<div class="tip-text">绳索类总保有量</div>
</div> </div>
<div class="tip-box"> <div class="tip-box">
<div class="tip-num">{{ tipForm.inNum || 0 }}</div> <div class="tip-num">{{ tipForm.inCountNum || 0 }}</div>
<div class="tip-text">站内数量</div> <div class="tip-text">计件类站内数量</div>
</div>
<div class="tip-box">
<div class="tip-num">{{ tipForm.inRopeNum || 0 }}</div>
<div class="tip-text">绳索类站内数量</div>
</div> </div>
<div class="tip-box"> <div class="tip-box">
<div class="tip-num">{{ tipForm.useNum || 0 }}</div> <div class="tip-num">{{ tipForm.useCountNum || 0 }}</div>
<div class="tip-text">在用数量</div> <div class="tip-text">计件类在用数量</div>
</div>
<div class="tip-box">
<div class="tip-num">{{ tipForm.useRopeNum || 0 }}</div>
<div class="tip-text">绳索类在用数量</div>
</div> </div>
</div> </div>
</el-row> </el-row>
@ -133,6 +205,7 @@
</el-table-column> </el-table-column>
<el-table-column label="物资名称" align="center" prop="typeName" :show-overflow-tooltip="true" /> <el-table-column label="物资名称" align="center" prop="typeName" :show-overflow-tooltip="true" />
<el-table-column label="规格型号" align="center" prop="typeModelName" :show-overflow-tooltip="true" /> <el-table-column label="规格型号" align="center" prop="typeModelName" :show-overflow-tooltip="true" />
<el-table-column label="机具类型" align="center" prop="jiJuType" :show-overflow-tooltip="true" />
<el-table-column label="计量单位" align="center" prop="unit" :show-overflow-tooltip="true" /> <el-table-column label="计量单位" align="center" prop="unit" :show-overflow-tooltip="true" />
<el-table-column label="数量" align="center" prop="allNum" :show-overflow-tooltip="true"> <el-table-column label="数量" align="center" prop="allNum" :show-overflow-tooltip="true">
<template slot-scope="scope"> <template slot-scope="scope">
@ -201,7 +274,13 @@
</template> </template>
<script> <script>
import { getProTotalListApi, getStorageInfoListApi, getRetainedEquipmentListApi } from '@/api/materialsStation' import {
getProTotalListApi,
getStorageInfoListApi,
getRetainedEquipmentListApi,
getImpUnitListApi, getDepartListByImpUnitApi, getProListByDepartApi, getTeamList, getSubUnitList
} from '@/api/materialsStation'
import {getDeviceType} from "@/api/ma/device";
export default { export default {
name: '', name: '',
dicts: [], dicts: [],
@ -241,7 +320,13 @@ export default {
teamNum: 0, // teamNum: 0, //
allNum: 0, // allNum: 0, //
inNum: 0, // inNum: 0, //
useNum: 0 // useNum: 0, //
countNum:0,
ropeNum:0,
inCountNum:0,
inRopeNum:0,
useCountNum:0,
useRopeNum:0,
}, },
// //
@ -252,13 +337,176 @@ export default {
pageSize: 10, pageSize: 10,
keyWord: undefined keyWord: undefined
}, },
dialogTotal: 0 dialogTotal: 0,
impUnitOptions: [], //
departOptions: [], //
proOptions: [], //
subUnitOptions: [], //
teamOptions: [], //
materialNameList: [],
materialModelList: [],
} }
}, },
created() { created() {
this.getList() this.getList()
this.getImpUnitOptions()
this.handleImpUnitChange()
this.handleDepartChange()
this.getTeamList()
this.getSubUnitList()
this.getDeviceType()
}, },
methods: { methods: {
// async getSelect() {
// await this.getImpUnitOptions()
// await this.handleImpUnitChange()
// await this.handleDepartChange()
// await this.getTeamList()
// await this.getSubUnitList()
// },
/** 获取分公司下拉 */
async getImpUnitOptions() {
try {
const res = await getImpUnitListApi() //
this.impUnitOptions = res.data.map(item => ({
label: item.impUnitName, //
value: item.impUnitName
}))
} catch (e) {
console.error('获取分公司下拉失败:', e)
}
},
/** 分公司选择变化,加载项目部 */
async handleImpUnitChange() {
this.queryParams.departName = null //
this.departOptions = [] //
try {
const params = {
impUnitName: this.queryParams.impUnitName, //
departName: this.queryParams.departName, //
proName: this.queryParams.proName,
teamName:this.queryParams.teamName,
subUnitName:this.queryParams.subUnitName,
}
const res = await getDepartListByImpUnitApi({ params })
this.departOptions = res.data.map(item => ({
label: item.departName, //
value: item.departName
}))
} catch (e) {
console.error('获取项目部下拉失败:', e)
}
},
/** 项目部选择变化,加载工程 */
async handleDepartChange() {
this.queryParams.proName = null //
this.proOptions = [] //
try {
//
const params = {
impUnitName: this.queryParams.impUnitName, //
departName: this.queryParams.departName, //
proName: this.queryParams.proName,
teamName:this.queryParams.teamName,
subUnitName:this.queryParams.subUnitName,
}
const res = await getProListByDepartApi(params)
this.proOptions = res.data.map(item => ({
label: item.proName, //
value: item.proName
}))
} catch (e) {
console.error('获取工程下拉失败:', e)
}
},
/** 项目部选择变化,加载工程 */
async getTeamList() {
this.queryParams.teamName = null //
this.teamOptions = [] //
try {
//
const params = {
impUnitName: this.queryParams.impUnitName, //
departName: this.queryParams.departName, //
proName: this.queryParams.proName,
teamName:this.queryParams.teamName,
subUnitName:this.queryParams.subUnitName,
}
const res = await getTeamList(params)
this.teamOptions = res.data.map(item => ({
label: item.teamName, //
value: item.teamName
}))
} catch (e) {
console.error('获取工程下拉失败:', e)
}
},
async getSubUnitList() {
this.queryParams.subUnitName = null //
this.subUnitOptions = [] //
try {
//
const params = {
impUnitName: this.queryParams.impUnitName, //
departName: this.queryParams.departName, //
proName: this.queryParams.proName,
teamName:this.queryParams.teamName,
subUnitName:this.queryParams.subUnitName,
}
const res = await getSubUnitList(params)
this.subUnitOptions = res.data.map(item => ({
label: item.subUnitName,
value: item.subUnitName
}))
} catch (e) {
console.error('获取工程下拉失败:', e)
}
},
getDeviceType() {
getDeviceType({ level: 3, skipPermission: 1 }).then(response => {
let matNameRes = response.data
this.materialNameList = matNameRes.map((item) => {
return {
label: item.typeName,
value: item.typeId
}
})
})
getDeviceType({ level: 4, skipPermission: 1 }).then(response => {
let matModelRes = response.data
this.materialModelList = matModelRes.map((item) => {
return {
label: item.typeName,
value: item.typeId
}
})
})
},
// change
handleMaModel(e) {
this.queryParams.typeModelName=null
this.materialModelList = []
let typeId = null
if (!e) {
typeId = null
} else {
typeId = this.materialNameList.find(item => item.label == e).value
}
console.log('🚀 ~ handleMaModel ~ typeId:', typeId)
getDeviceType({ level: 4, skipPermission: 1, typeId }).then(response => {
let matModelRes = response.data
this.materialModelList = matModelRes.map((item) => {
return {
label: item.typeName,
value: item.typeId
}
})
})
},
// //
async getList() { async getList() {
this.loading = true this.loading = true
@ -287,6 +535,7 @@ export default {
resetQuery() { resetQuery() {
this.resetForm('queryForm') this.resetForm('queryForm')
this.handleQuery() this.handleQuery()
this.handleMaModel()
}, },
/** 导出按钮操作 */ /** 导出按钮操作 */
handleExport() { handleExport() {