增加物资综合查询

main
liukewei 11 months ago
parent 614102ecd9
commit 1012c74fb9

@ -106,7 +106,7 @@ public class EhsMaterialDetailController extends BaseController
ehsMaterial = new EhsMaterial(); ehsMaterial = new EhsMaterial();
ehsMaterial.setMaterialQuantity(ehsMaterialDetail.getOperateType()==1?result2.toString():null); ehsMaterial.setMaterialQuantity(ehsMaterialDetail.getOperateType()==1?result2.toString():null);
ehsMaterial.setMaterialId(ehsMaterialDetail.getMaterialId()); ehsMaterial.setMaterialId(ehsMaterialDetail.getMaterialId());
ehsMaterialDetail.setInventory(result2); ehsMaterialDetail.setInventory(ehsMaterialDetail.getOperateType()==1?result2:string1);
ehsMaterialDetailService.save(ehsMaterialDetail);// ehsMaterialDetailService.save(ehsMaterialDetail);//
return toAjax(ehsMaterialService.updateById(ehsMaterial)); return toAjax(ehsMaterialService.updateById(ehsMaterial));
} }

@ -47,6 +47,7 @@
<if test="operateType != null "> and operate_type = #{operateType}</if> <if test="operateType != null "> and operate_type = #{operateType}</if>
<if test="getOut != null "> and (outbound_user_id is null or outbound_user_id ='')</if> <if test="getOut != null "> and (outbound_user_id is null or outbound_user_id ='')</if>
</where> </where>
order by material_detail_id desc
</select> </select>
<select id="selectEhsMaterialDetailByMaterialDetailId" parameterType="Long" resultMap="EhsMaterialDetailResult"> <select id="selectEhsMaterialDetailByMaterialDetailId" parameterType="Long" resultMap="EhsMaterialDetailResult">

@ -337,6 +337,21 @@
</el-table-column> </el-table-column>
</el-table> </el-table>
<pagination
v-show="total>0"
:total="totalDetail"
:page.sync="pageNum"
:limit.sync="pageSize"
@pagination="getListDetail"
/>
<!--<el-pagination
small
:page.sync="pageNum"
:limit.sync="pageSize"
@pagination="getListDetail"
:hide-on-single-page="true"
:total="totalDetail">
</el-pagination>-->
</el-dialog> </el-dialog>
</div> </div>
</template> </template>
@ -360,6 +375,8 @@
data() { data() {
return { return {
options:material1, options:material1,
curDict:[], curDict:[],
// //
@ -387,6 +404,11 @@
ehsMaterialDetailList:[], ehsMaterialDetailList:[],
totalDetail: 0, totalDetail: 0,
materialClass:0, materialClass:0,
materialDetailId:null,
//
total1:2,
pageNum: 1,
pageSize: 10,
// //
deptShow: false, deptShow: false,
// //
@ -645,9 +667,9 @@
}); });
}); });
}, },
getListDetail(id) { getListDetail() {
this.loading = true; this.loading = true;
listEhsMaterialDetail({"materialId":id}).then(response => { listEhsMaterialDetail({"pageNum" : this.pageNum, "pageSize": this.pageSize,"materialId":this.materialDetailId}).then(response => {
this.ehsMaterialDetailList = response.rows; this.ehsMaterialDetailList = response.rows;
this.totalDetail = response.total; this.totalDetail = response.total;
this.loading = false; this.loading = false;
@ -655,7 +677,8 @@
}, },
handleDetail(row) { handleDetail(row) {
this.openDetail=true; this.openDetail=true;
this.getListDetail(row.materialId); this.materialDetailId = row.materialId;
this.getListDetail();
},/** */ },/** */
handleOutbound(row) { handleOutbound(row) {
this.$modal.confirm('是否执行出库指令?' ).then(function() { this.$modal.confirm('是否执行出库指令?' ).then(function() {

@ -0,0 +1,567 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="部门" prop="deptId" v-show="deptShow">
<el-select v-model="queryParams.deptId" filterable placeholder="请选择部门" clearable>
<el-option
v-for="dict in allDeptList"
:key="dict.deptId"
:label="dict.deptName"
:value="dict.deptId"
/>
</el-select>
</el-form-item>
<el-form-item label="物资分类" prop="classFirst" >
<el-select v-model="queryParams.classFirst" @change="classFirstChange" placeholder="请选择标签" clearable>
<el-option
v-for="dict in dict.type.material_class_fast"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="性质" prop="materialType">
<el-select v-model="queryParams.materialType" placeholder="请选择性质" clearable>
<el-option
v-for="dict in materialTypeOptions"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item
>
<el-form-item label="物资名称" prop="classSecond">
<el-cascader style="width:500px"
v-model="queryParams.materialNameId"
:options="options"
:props="{ multiple: false, checkStrictly: true }"
@change="handleQueryChange"></el-cascader>
</el-form-item>
<!-- <el-form-item label="类别" prop="classSecond">
<el-cascader style="width:500px"
v-model="queryParams.materialNameId"
:options="options"
:props="{ multiple: false, checkStrictly: true }"
@change="handleQueryChange"></el-cascader>
</el-form-item>-->
<!-- <el-form-item label="物资名称" prop="materialName">
<el-input
v-model="queryParams.materialName"
placeholder="请输入物资名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>-->
<!--<el-form-item label="规格/参数" prop="materialSpecs">
<el-input
v-model="queryParams.materialSpecs"
placeholder="请输入规格/参数"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="数量" prop="materialQuantity">
<el-input
v-model="queryParams.materialQuantity"
placeholder="请输入数量"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="储备地点" prop="reserveLocation">
<el-input
v-model="queryParams.reserveLocation"
placeholder="请输入储备地点"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="管理责任人" prop="managerPerson">
<el-input
v-model="queryParams.managerPerson"
placeholder="请输入管理责任人"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="联系电话" prop="tel">
<el-input
v-model="queryParams.tel"
placeholder="请输入联系电话"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>-->
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['ehsMaterial:ehsMaterial:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="ehsMaterialList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="上报部门" align="center" prop="deptName" />
<!-- <el-table-column label="主键" align="center" prop="materialId" />-->
<el-table-column label="性质" align="center" prop="materialType">
<template slot-scope="scope">
<span> {{ materialTypeOptions[scope.row.materialType-1].label}}</span>
</template>
</el-table-column>
<el-table-column label="分类" align="center" prop="classFirst">
<template slot-scope="scope">
<dict-tag :options="dict.type.material_class_fast" :value="scope.row.classFirst"/>
</template>
</el-table-column>
<el-table-column label="类别" align="center" prop="classSecond">
<template slot-scope="scope">
<span>{{classToStr(scope.row.classSecond,1)}}</span>
</template>
</el-table-column>
<el-table-column label="物资名称" align="center" prop="materialName" >
<template slot-scope="scope">
<span>{{classToStr(scope.row.materialName,2)}}</span>
</template>
</el-table-column>
<el-table-column label="规格/参数" align="center" prop="materialSpecs" />
<el-table-column label="数量" align="center" prop="materialQuantity" />
<el-table-column label="待处理出库" align="center" prop="sendQuantity" />
<el-table-column label="储备地点" align="center" prop="reserveLocation" />
<el-table-column label="管理责任人" align="center" prop="managerPerson" />
<el-table-column label="联系电话" align="center" prop="tel" />
<el-table-column label="更新时间" align="center" prop="updateTime" >
<template slot-scope="scope">
<span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDetail(scope.row)"
v-hasPermi="['EhsMaterialDetail:EhsMaterialDetail:list']"
>出入库明细</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<el-dialog :title="titleDetail" :visible.sync="openDetail" width="800px" append-to-body>
<el-table v-loading="loading" :data="ehsMaterialDetailList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<!-- <el-table-column label="主键" align="center" prop="materialDetailId" />
<el-table-column label="物资表" align="center" prop="materialId" />-->
<el-table-column label="出库指令发送人" align="center" prop="sendUserName" />
<el-table-column label="出库指令数量" align="center" prop="sendQuantity" />
<el-table-column label="出库指令发送时间" align="center" prop="sendTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.sendTime, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="出/入库类型" align="center" prop="sendTime" width="180">
<template slot-scope="scope">
<span>{{ scope.row.operateType==0?"出库":"入库" }}</span>
</template>
</el-table-column>
<el-table-column label="出/入库人" align="center" prop="outboundUserName" />
<el-table-column label="出/入库数量" align="center" prop="outboundQuantity" />
<el-table-column label="当前库存" align="center" prop="inventory" />
<el-table-column label="操作时间" align="center" prop="outboundTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.outboundTime, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="totalDetail"
:page.sync="pageNum"
:limit.sync="pageSize"
@pagination="getListDetail"
/>
</el-dialog>
</div>
</template>
<script>
import { listEhsMaterial, getEhsMaterial, delEhsMaterial, addEhsMaterial, updateEhsMaterial } from "@/api/ehs/ehsMaterial";
import {listAllDept } from "@/api/system/dept";
import {addEhsMaterialDetail,listEhsMaterialDetail, updateEhsMaterialDetail , delEhsMaterialDetail} from "@/api/ehs/EhsMaterialDetail";
import material1 from '../../../assets/materialClass.json';
import material2 from '../../../assets/materialClass2.json';
import material3 from '../../../assets/materialClass3.json';
import material4 from '../../../assets/materialClass4.json';
import material5 from '../../../assets/materialClass5.json';
import material6 from '../../../assets/materialClass6.json';
import material7 from '../../../assets/materialClass7.json';
import material8 from '../../../assets/materialClass8.json';
export default {
name: "EhsMaterial",
dicts: ['material_class_fast' ],
data() {
return {
options:material1,
curDict:[],
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
ehsMaterialList: [],
//
title: "",
//
open: false,
//
titleDetail: "出入库明细",
//
openDetail: false,
ehsMaterialDetailList:[],
totalDetail: 0,
materialClass:0,
materialDetailId:null,
//
total1:2,
pageNum: 1,
pageSize: 10,
//
deptShow: false,
//
allDeptList: [],
sendQuantity:"",//
materialTypeOptions: [{
value: 1,
label: '自储',
raw:{listClass: 'default'}
}, {
value: 2,
label: '社会代储',
raw:{listClass: 'default'}
}],
//
queryParams: {
pageNum: 1,
pageSize: 10,
materialType: null,
classSecond: null,
materialName: null,
materialSpecs: null,
materialQuantity: null,
reserveLocation: null,
managerPerson: null,
tel: null,
classFirst:null
},
};
},
created() {
this.getList();
this.materialClass = this.$route.query.classFirst;
this.getListAllDept();
this.deptShow = this.$store.state.user.parentId==0 ?true :false;
},
methods: {
/** 查询物资信息包含 通用应急救援装备”“防汛抗旱应急救援装备”“森林防灭火应急救援装备”“救灾物资”列表 */
getList() {
this.loading = true;
listEhsMaterial(this.queryParams).then(response => {
this.ehsMaterialList = response.rows;
this.total = response.total;
this.loading = false;
});
},
/** 单位信息列表 */
getListAllDept() {
console.log(this.$store.state.user.deptId);
this.loading = true;
listAllDept().then(response => {
this.allDeptList = response.data;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
materialId: null,
materialType: null,
classFirst: null,
classSecond: null,
materialName: null,
materialSpecs: null,
materialQuantity: null,
reserveLocation: null,
managerPerson: null,
tel: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null,
remark: null,
deptId: null,
createUserId: null,
updateUserId: null,
classFirst:this.$route.query.classFirst
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.queryParams.materialNameId = null;
this.queryParams.materialName = null;
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.materialId)
this.single = selection.length!==1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加物资信息包含";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const materialId = row.materialId || this.ids
getEhsMaterial(materialId).then(response => {
this.form = response.data;
this.form.materialNameId = [];
this.form.materialNameId.push(this.form.classSecond);
this.form.materialNameId.push(this.form.materialName);
console.log(this.form.materialNameId);
this.open = true;
this.title = "修改物资信息";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
this.form.classSecond = this.form.materialNameId[0];
this.form.materialName = this.form.materialNameId[1];
if (this.form.materialId != null) {
updateEhsMaterial(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addEhsMaterial(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const materialIds = row.materialId || this.ids;
this.$modal.confirm('是否确认删除物资信息' + materialIds + '"的数据项?').then(function() {
return delEhsMaterial(materialIds);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download('ehsMaterial/ehsMaterial/export', {
...this.queryParams
}, `ehsMaterial_${new Date().getTime()}.xlsx`)
},
handleSendCommand(row) {
if(row.sendQuantity!=null){
this.$message.error('此物资已有待处理出库,无法重复发送出库指令!');
return;
}
this.$prompt('请输入出库数量', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
inputPattern: /^\d+$|^\d+[.]?\d+$/,
inputErrorMessage: '出库数量只能是数字'
}).then(({ value }) => {
this.loading = true;
//this.sendQuantity = value;
addEhsMaterialDetail({"sendQuantity":value,"materialId":row.materialId,"operateType":0}).then(response => {
this.$modal.msgSuccess("出库指令发送成功");
this.loading = false;
this.getList();
});
}).catch(() => {
this.$message({
type: 'info',
message: '取消输入'
});
});
},
getListDetail() {
this.loading = true;
listEhsMaterialDetail({"pageNum" : this.pageNum, "pageSize": this.pageSize,"materialId":this.materialDetailId}).then(response => {
this.ehsMaterialDetailList = response.rows;
this.totalDetail = response.total;
this.loading = false;
});
},
handleDetail(row) {
this.openDetail=true;
this.materialDetailId = row.materialId;
this.getListDetail();
},/** */
handleOutbound(row) {
this.$modal.confirm('是否执行出库指令?' ).then(function() {
return updateEhsMaterialDetail({"materialId":row.materialId});
}).then(() => {
this.getList();
this.$modal.msgSuccess("执行成功");
}).catch(() => {});
},
/** 入库 */
handleInbound(row) {
this.$prompt('请输入入库数量', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
inputPattern: /^\d+$|^\d+[.]?\d+$/,
inputErrorMessage: '入库数量只能是数字'
}).then(({ value }) => {
this.loading = true;
//this.sendQuantity = value;
addEhsMaterialDetail({"outboundQuantity":value,"materialId":row.materialId,"operateType":1}).then(response => {
this.$modal.msgSuccess("入库成功");
this.loading = false;
this.getList();
});
}).catch(() => {
this.$message({
type: 'info',
message: '取消输入'
});
});
},
handleDelDetail(row) {
this.$modal.confirm('是否终止出库指令?' ).then(function() {
return delEhsMaterialDetail(row.materialId);
}).then(() => {
this.getList();
this.$modal.msgSuccess("终止成功");
}).catch(() => {});
},
handleChange(value) {
console.log(value);
},
handleQueryChange(value) {
if(value.length==2){
this.queryParams.classSecond = value[0] ;
this.queryParams.materialName = value[1] ;
}else if(value.length==1){
this.queryParams.classSecond = value[0] ;
}
},
classToStr(value,type) {
let str ="";
if(type==1){
this.options.forEach(item =>{
if(item.value==value){
str = item.label;
}
})
}else{
this.options.forEach(item =>{
let v = value.split("-");
if(item.value==v[0]){
item.children.forEach(it =>{
if(it.value==value){
str = it.label;
}
})
}
})
}
console.log(str);
return str;
},
classFirstChange(value){
if (value == 1){
this.options = material1;
}else if (value == 2){
this.options = material2;
}else if (value == 3){
this.options = material3;
}else if (value == 4){
this.options = material4;
}else if (value == 5){
this.options = material5;
}else if (value == 6){
this.options = material6;
}else if (value == 7){
this.options = material7;
}else if (value == 8){
this.options = material8;
}
}
}
};
</script>
Loading…
Cancel
Save