物资管理

main
liukewei 12 months ago
parent 274358c359
commit 576a1834de

@ -0,0 +1,127 @@
package com.ruoyi.web.controller.ehs;
import java.util.Date;
import java.util.List;
import java.util.Arrays;
import javax.servlet.http.HttpServletResponse;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.ehsMaterial.domain.EhsMaterial;
import com.ruoyi.ehsMaterial.service.IEhsMaterialService;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.ehsMaterialDetail.domain.EhsMaterialDetail;
import com.ruoyi.ehsMaterialDetail.service.IEhsMaterialDetailService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
/**
* Controller
*
* @author ruoyi
* @date 2023-12-05
*/
@Api(tags="资源管理出库入库明细管理")
@RestController
@RequestMapping("/EhsMaterialDetail/EhsMaterialDetail")
public class EhsMaterialDetailController extends BaseController
{
@Autowired
private IEhsMaterialDetailService ehsMaterialDetailService;
@Autowired
private IEhsMaterialService ehsMaterialService;
/**
*
*/
@PreAuthorize("@ss.hasPermi('EhsMaterialDetail:EhsMaterialDetail:list')")
@GetMapping("/list")
public TableDataInfo list(EhsMaterialDetail ehsMaterialDetail)
{
startPage();
List<EhsMaterialDetail> list = ehsMaterialDetailService.selectEhsMaterialDetailList(ehsMaterialDetail);
return getDataTable(list);
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('EhsMaterialDetail:EhsMaterialDetail:export')")
@Log(title = "资源管理出库入库明细", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, EhsMaterialDetail ehsMaterialDetail)
{
List<EhsMaterialDetail> list = ehsMaterialDetailService.selectEhsMaterialDetailList(ehsMaterialDetail);
ExcelUtil<EhsMaterialDetail> util = new ExcelUtil<EhsMaterialDetail>(EhsMaterialDetail.class);
util.exportExcel(response, list, "资源管理出库入库明细数据");
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('EhsMaterialDetail:EhsMaterialDetail:query')")
@GetMapping(value = "/{materialDetailId}")
public AjaxResult getInfo(@PathVariable("materialDetailId") Long materialDetailId)
{
return success(ehsMaterialDetailService.selectEhsMaterialDetailByMaterialDetailId(materialDetailId));
}
/**
*
*/
@ApiOperation("新增资源管理出库入库明细")
@PreAuthorize("@ss.hasPermi('EhsMaterialDetail:EhsMaterialDetail:add')")
@Log(title = "资源管理出库入库明细", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody EhsMaterialDetail ehsMaterialDetail)
{
ehsMaterialDetail.setSendTime(new Date());
ehsMaterialDetail.setSendUserId(SecurityUtils.getUserId());
return toAjax(ehsMaterialDetailService.save(ehsMaterialDetail));
}
/**
*
*/
@ApiOperation("执行出库指令")
@PreAuthorize("@ss.hasPermi('EhsMaterialDetail:EhsMaterialDetail:edit')")
@Log(title = "执行出库指令", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody EhsMaterialDetail ehsMaterialDetail)
{
ehsMaterialDetail.setOutboundTime(new Date());
ehsMaterialDetail.setOutboundUserId(SecurityUtils.getUserId());
EhsMaterialDetail md = ehsMaterialDetailService.selectEhsMaterialDetailByMaterialDetailId(ehsMaterialDetail.getMaterialDetailId());
ehsMaterialDetail.setOutboundQuantity(md.getOutboundQuantity()) ;
//更新物资表数量
EhsMaterial ehsMaterial = ehsMaterialService.selectEhsMaterialByMaterialId(ehsMaterialDetail.getMaterialDetailId());
ehsMaterial.setMaterialQuantity(String.valueOf(Long.parseLong(ehsMaterial.getMaterialQuantity())- Long.parseLong(md.getSendQuantity()) ));
return toAjax(ehsMaterialDetailService.updateById(ehsMaterialDetail));
}
/**
*
*/
@ApiOperation("按物资表删除未执行出库指令")
@PreAuthorize("@ss.hasPermi('EhsMaterialDetail:EhsMaterialDetail:remove')")
@Log(title = "按物资表删除未执行出库指令", businessType = BusinessType.DELETE)
@DeleteMapping("/{materialDetailIds}")
public AjaxResult remove(@PathVariable Long materialId)
{
//return toAjax(ehsMaterialDetailService.removeByIds(Arrays.asList(materialDetailIds)));
return toAjax(ehsMaterialDetailService.deleteEhsMaterialDetailByMaterialId(materialId));
}
}

@ -18,7 +18,7 @@ ruoyi:
# 开发环境配置 # 开发环境配置
server: server:
# 服务器的HTTP端口默认为8080 # 服务器的HTTP端口默认为8080
port: 8080 port: 8083
servlet: servlet:
# 应用的访问路径 # 应用的访问路径
context-path: / context-path: /

@ -38,6 +38,7 @@ public class BaseEntity implements Serializable
private Long deptId; private Long deptId;
/** 上报部门 */ /** 上报部门 */
@Excel(name = "上报部门") @Excel(name = "上报部门")
@TableField(exist = false)
private String deptName; private String deptName;
/** 创建时间 */ /** 创建时间 */
@TableField(fill = FieldFill.INSERT) @TableField(fill = FieldFill.INSERT)

@ -65,7 +65,10 @@ public class EhsMaterial extends BaseEntity
/** 联系电话 */ /** 联系电话 */
@Excel(name = "联系电话") @Excel(name = "联系电话")
private String tel; private String tel;
/** 上报部门 */
@Excel(name = "待处理出库")
@TableField(exist = false)
private String sendQuantity;
} }

@ -3,6 +3,7 @@ package com.ruoyi.ehsMaterial.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.common.utils.SecurityUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.StringUtils;
@ -45,6 +46,10 @@ public class EhsMaterialServiceImpl extends ServiceImpl<EhsMaterialMapper, EhsMa
@Override @Override
public List<EhsMaterial> selectEhsMaterialList(EhsMaterial ehsMaterial) public List<EhsMaterial> selectEhsMaterialList(EhsMaterial ehsMaterial)
{ {
if(SecurityUtils.getLoginUser().getUser().getDept().getParentId()!=null &&
SecurityUtils.getLoginUser().getUser().getDept().getParentId().longValue()!=0){
ehsMaterial.setDeptId(SecurityUtils.getLoginUser().getUser().getDept().getParentId().longValue());
}
return ehsMaterialMapper.selectEhsMaterialList(ehsMaterial); return ehsMaterialMapper.selectEhsMaterialList(ehsMaterial);
} }

@ -0,0 +1,70 @@
package com.ruoyi.ehsMaterialDetail.domain;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import lombok.experimental.Accessors;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* ehs_material_detail
*
* @author ruoyi
* @date 2023-12-05
*/
@Data
@ToString
@NoArgsConstructor
@Accessors(chain = true)
@TableName("ehs_material_detail")
public class EhsMaterialDetail extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 主键 */
@TableId(type= IdType.AUTO)
private Long materialDetailId;
/** 物资表 */
@Excel(name = "物资表")
private Long materialId;
/** 出库指令发送人 */
@Excel(name = "出库指令发送人")
@TableField(exist = false)
private String sendUserName;
private Long sendUserId;
/** 出库指令发送数量 */
@Excel(name = "出库指令发送数量")
private String sendQuantity;
/** 出库指令发送时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "出库指令发送时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date sendTime;
/** 出库人 */
@Excel(name = "出库人")
@TableField(exist = false)
private String outboundUserName;
private Long outboundUserId;
/** 出库数量 */
@Excel(name = "出库数量")
private String outboundQuantity;
/** 出库时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "出库时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date outboundTime;
}

@ -0,0 +1,37 @@
package com.ruoyi.ehsMaterialDetail.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.ehsMaterialDetail.domain.EhsMaterialDetail;
import java.util.List;
/**
* Mapper
*
* @author ruoyi
* @date 2023-12-05
*/
public interface EhsMaterialDetailMapper extends BaseMapper<EhsMaterialDetail> {
/**
*
*
* @param materialDetailId
* @return
*/
public EhsMaterialDetail selectEhsMaterialDetailByMaterialDetailId(Long materialDetailId);
/**
*
*
* @param ehsMaterialDetail
* @return
*/
public List<EhsMaterialDetail> selectEhsMaterialDetailList(EhsMaterialDetail ehsMaterialDetail);
/**
* id
*
* @param materialId ID
* @return
*/
public int deleteEhsMaterialDetailByMaterialId(Long materialId);
}

@ -0,0 +1,37 @@
package com.ruoyi.ehsMaterialDetail.service;
import java.util.List;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.ehsMaterialDetail.domain.EhsMaterialDetail;
/**
* Service
*
* @author ruoyi
* @date 2023-12-05
*/
public interface IEhsMaterialDetailService extends IService<EhsMaterialDetail> {
/**
*
*
* @param materialDetailId
* @return
*/
public EhsMaterialDetail selectEhsMaterialDetailByMaterialDetailId(Long materialDetailId);
/**
*
*
* @param ehsMaterialDetail
* @return
*/
public List<EhsMaterialDetail> selectEhsMaterialDetailList(EhsMaterialDetail ehsMaterialDetail);
/**
* id
*
* @param materialId ID
* @return
*/
public int deleteEhsMaterialDetailByMaterialId(Long materialId);
}

@ -0,0 +1,76 @@
package com.ruoyi.ehsMaterialDetail.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springframework.stereotype.Service;
import org.springframework.beans.factory.annotation.Autowired;
import com.ruoyi.common.utils.StringUtils;
import java.util.List;
import java.util.Map;
import com.ruoyi.ehsMaterialDetail.mapper.EhsMaterialDetailMapper;
import com.ruoyi.ehsMaterialDetail.domain.EhsMaterialDetail;
import com.ruoyi.ehsMaterialDetail.service.IEhsMaterialDetailService;
/**
* Service
*
* @author ruoyi
* @date 2023-12-05
*/
@Service
public class EhsMaterialDetailServiceImpl extends ServiceImpl<EhsMaterialDetailMapper, EhsMaterialDetail> implements IEhsMaterialDetailService {
@Autowired
private EhsMaterialDetailMapper ehsMaterialDetailMapper;
/**
*
*
* @param materialDetailId
* @return
*/
@Override
public EhsMaterialDetail selectEhsMaterialDetailByMaterialDetailId(Long materialDetailId)
{
return ehsMaterialDetailMapper.selectEhsMaterialDetailByMaterialDetailId(materialDetailId);
}
/**
*
*
* @param ehsMaterialDetail
* @return
*/
@Override
public List<EhsMaterialDetail> selectEhsMaterialDetailList(EhsMaterialDetail ehsMaterialDetail)
{
return ehsMaterialDetailMapper.selectEhsMaterialDetailList(ehsMaterialDetail);
}
/**
* id
*
* @param materialId ID
* @return
*/
@Override
public int deleteEhsMaterialDetailByMaterialId(Long materialId){
return ehsMaterialDetailMapper.deleteEhsMaterialDetailByMaterialId(materialId);
}
private LambdaQueryWrapper<EhsMaterialDetail> buildQueryWrapper(EhsMaterialDetail query) {
Map<String, Object> params = query.getParams();
LambdaQueryWrapper<EhsMaterialDetail> lqw = Wrappers.lambdaQuery();
lqw.eq(query.getMaterialId() != null, EhsMaterialDetail::getMaterialId, query.getMaterialId());
lqw.eq(query.getSendUserId() != null, EhsMaterialDetail::getSendUserId, query.getSendUserId());
lqw.eq(StringUtils.isNotBlank(query.getSendQuantity()), EhsMaterialDetail::getSendQuantity, query.getSendQuantity());
lqw.eq(query.getSendTime() != null, EhsMaterialDetail::getSendTime, query.getSendTime());
lqw.eq(query.getOutboundUserId() != null, EhsMaterialDetail::getOutboundUserId, query.getOutboundUserId());
lqw.eq(StringUtils.isNotBlank(query.getOutboundQuantity()), EhsMaterialDetail::getOutboundQuantity, query.getOutboundQuantity());
lqw.eq(query.getOutboundTime() != null, EhsMaterialDetail::getOutboundTime, query.getOutboundTime());
lqw.orderByDesc(EhsMaterialDetail::getCreateTime);
lqw.eq(query.getDeptId() != null, EhsMaterialDetail::getDeptId, query.getDeptId());
return lqw;
}
}

@ -47,7 +47,7 @@ public class EhsRiskServiceImpl extends ServiceImpl<EhsRiskMapper, EhsRisk> impl
{ {
if(SecurityUtils.getLoginUser().getUser().getDept().getParentId()!=null && if(SecurityUtils.getLoginUser().getUser().getDept().getParentId()!=null &&
SecurityUtils.getLoginUser().getUser().getDept().getParentId().longValue()!=0){ SecurityUtils.getLoginUser().getUser().getDept().getParentId().longValue()!=0){
ehsRisk.setDeptId(SecurityUtils.getLoginUser().getUser().getDept().getParentId().longValue()); ehsRisk.setDeptId(SecurityUtils.getLoginUser().getUser().getDept().getDeptId().longValue());
} }
return ehsRiskMapper.selectEhsRiskList(ehsRisk); return ehsRiskMapper.selectEhsRiskList(ehsRisk);
} }

@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.ehsMaterialDetail.mapper.EhsMaterialDetailMapper">
<resultMap type="EhsMaterialDetail" id="EhsMaterialDetailResult">
<result property="materialDetailId" column="material_detail_id" />
<result property="materialId" column="material_id" />
<result property="sendUserId" column="send_user_id" />
<result property="sendUserName" column="send_user_name" />
<result property="sendQuantity" column="send_quantity" />
<result property="sendTime" column="send_time" />
<result property="outboundUserId" column="outbound_user_id" />
<result property="outboundUserName" column="outbound_user_Name" />
<result property="outboundQuantity" column="outbound_quantity" />
<result property="outboundTime" column="outbound_time" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
<result property="remark" column="remark" />
<result property="deptId" column="dept_id" />
<result property="createUserId" column="create_user_id" />
</resultMap>
<sql id="selectEhsMaterialDetailVo">
select mt.*,u1.nick_name send_user_name,u2.nick_name outbound_user_Name
from ehs_material_detail mt left join sys_user u1 on mt.send_user_id=u1.user_id
left join sys_user u2 on mt.outbound_user_id=u2.user_id
</sql>
<select id="selectEhsMaterialDetailList" parameterType="EhsMaterialDetail" resultMap="EhsMaterialDetailResult">
<include refid="selectEhsMaterialDetailVo"/>
<where>
<if test="materialId != null "> and material_id = #{materialId}</if>
<if test="sendUserId != null "> and send_user_id = #{sendUserId}</if>
<if test="sendQuantity != null and sendQuantity != ''"> and send_quantity = #{sendQuantity}</if>
<if test="sendTime != null "> and send_time = #{sendTime}</if>
<if test="outboundUserId != null "> and outbound_user_id = #{outboundUserId}</if>
<if test="outboundQuantity != null and outboundQuantity != ''"> and outbound_quantity = #{outboundQuantity}</if>
<if test="outboundTime != null "> and outbound_time = #{outboundTime}</if>
<if test="deptId != null "> and dept_id = #{deptId}</if>
</where>
</select>
<select id="selectEhsMaterialDetailByMaterialDetailId" parameterType="Long" resultMap="EhsMaterialDetailResult">
<include refid="selectEhsMaterialDetailVo"/>
where material_detail_id = #{materialDetailId}
</select>
<delete id="deleteEhsMaterialDetailByMaterialId" parameterType="Long">
delete from ehs_material_detail where material_id = #{materialId} and outbound_user_id is null
</delete>
</mapper>

@ -15,6 +15,7 @@
<result property="reserveLocation" column="reserve_location" /> <result property="reserveLocation" column="reserve_location" />
<result property="managerPerson" column="Manager_person" /> <result property="managerPerson" column="Manager_person" />
<result property="tel" column="tel" /> <result property="tel" column="tel" />
<result property="sendQuantity" column="send_quantity" />
<result property="createBy" column="create_by" /> <result property="createBy" column="create_by" />
<result property="createTime" column="create_time" /> <result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" /> <result property="updateBy" column="update_by" />
@ -26,12 +27,18 @@
</resultMap> </resultMap>
<sql id="selectEhsMaterialVo"> <sql id="selectEhsMaterialVo">
select material_id, material_type, class_first, class_second, material_name, material_specs, material_quantity, reserve_location, Manager_person, tel, create_by, create_time, update_by, update_time, remark, dept_id, create_user_id, update_user_id from ehs_material select m.* , d.dept_name,a.send_quantity from ehs_material m
left join sys_dept d on m.dept_id = d.dept_id
left join (select GROUP_CONCAT(send_quantity ) send_quantity,m.material_id
from ehs_material m left join ehs_material_detail dt
on dt.material_id= m.material_id and dt.outbound_user_id is null group by dt.material_id ) a
on a.material_id= m.material_id
</sql> </sql>
<select id="selectEhsMaterialList" parameterType="EhsMaterial" resultMap="EhsMaterialResult"> <select id="selectEhsMaterialList" parameterType="EhsMaterial" resultMap="EhsMaterialResult">
<include refid="selectEhsMaterialVo"/> <include refid="selectEhsMaterialVo"/>
<where> <where>
<if test="deptId != null "> and r.dept_Id = #{deptId}</if>
<if test="materialType != null "> and material_type = #{materialType}</if> <if test="materialType != null "> and material_type = #{materialType}</if>
<if test="classFirst != null "> and class_first = #{classFirst}</if> <if test="classFirst != null "> and class_first = #{classFirst}</if>
<if test="classSecond != null and classSecond != ''"> and class_second = #{classSecond}</if> <if test="classSecond != null and classSecond != ''"> and class_second = #{classSecond}</if>

@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询资源管理出库入库明细列表
export function listEhsMaterialDetail(query) {
return request({
url: '/EhsMaterialDetail/EhsMaterialDetail/list',
method: 'get',
params: query
})
}
// 查询资源管理出库入库明细详细
export function getEhsMaterialDetail(materialDetailId) {
return request({
url: '/EhsMaterialDetail/EhsMaterialDetail/' + materialDetailId,
method: 'get'
})
}
// 新增资源管理出库入库明细
export function addEhsMaterialDetail(data) {
return request({
url: '/EhsMaterialDetail/EhsMaterialDetail',
method: 'post',
data: data
})
}
// 修改资源管理出库入库明细
export function updateEhsMaterialDetail(data) {
return request({
url: '/EhsMaterialDetail/EhsMaterialDetail',
method: 'put',
data: data
})
}
// 删除资源管理出库入库明细
export function delEhsMaterialDetail(materialDetailId) {
return request({
url: '/EhsMaterialDetail/EhsMaterialDetail/' + materialDetailId,
method: 'delete'
})
}

@ -0,0 +1,366 @@
<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="materialId">
<el-input
v-model="queryParams.materialId"
placeholder="请输入物资表"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="出库指令发送人" prop="sendUserId">
<el-input
v-model="queryParams.sendUserId"
placeholder="请输入出库指令发送人"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="出库指令发送数量" prop="sendQuantity">
<el-input
v-model="queryParams.sendQuantity"
placeholder="请输入出库指令发送数量"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="出库指令发送时间" prop="sendTime">
<el-date-picker clearable
v-model="queryParams.sendTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择出库指令发送时间">
</el-date-picker>
</el-form-item>
<el-form-item label="出库人" prop="outboundUserId">
<el-input
v-model="queryParams.outboundUserId"
placeholder="请输入出库人"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="出库数量" prop="outboundQuantity">
<el-input
v-model="queryParams.outboundQuantity"
placeholder="请输入出库数量"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="出库时间" prop="outboundTime">
<el-date-picker clearable
v-model="queryParams.outboundTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择出库时间">
</el-date-picker>
</el-form-item>
<el-form-item label="创建者部门" prop="deptId">
<el-input
v-model="queryParams.deptId"
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="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['EhsMaterialDetail:EhsMaterialDetail:add']"
>新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['EhsMaterialDetail:EhsMaterialDetail:edit']"
>修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['EhsMaterialDetail:EhsMaterialDetail:remove']"
>删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['EhsMaterialDetail:EhsMaterialDetail:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<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="sendUserId" />
<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="outboundUserId" />
<el-table-column label="出库数量" align="center" prop="outboundQuantity" />
<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-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['EhsMaterialDetail:EhsMaterialDetail:edit']"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['EhsMaterialDetail:EhsMaterialDetail:remove']"
>删除</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="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="物资表" prop="materialId">
<el-input v-model="form.materialId" placeholder="请输入物资表" />
</el-form-item>
<el-form-item label="出库指令发送人" prop="sendUserId">
<el-input v-model="form.sendUserId" placeholder="请输入出库指令发送人" />
</el-form-item>
<el-form-item label="出库指令发送数量" prop="sendQuantity">
<el-input v-model="form.sendQuantity" placeholder="请输入出库指令发送数量" />
</el-form-item>
<el-form-item label="出库指令发送时间" prop="sendTime">
<el-date-picker clearable
v-model="form.sendTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择出库指令发送时间">
</el-date-picker>
</el-form-item>
<el-form-item label="出库人" prop="outboundUserId">
<el-input v-model="form.outboundUserId" placeholder="请输入出库人" />
</el-form-item>
<el-form-item label="出库数量" prop="outboundQuantity">
<el-input v-model="form.outboundQuantity" placeholder="请输入出库数量" />
</el-form-item>
<el-form-item label="出库时间" prop="outboundTime">
<el-date-picker clearable
v-model="form.outboundTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择出库时间">
</el-date-picker>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listEhsMaterialDetail, getEhsMaterialDetail, delEhsMaterialDetail, addEhsMaterialDetail, updateEhsMaterialDetail } from "@/api/ehs/EhsMaterialDetail";
export default {
name: "EhsMaterialDetail",
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
EhsMaterialDetailList: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
materialId: null,
sendUserId: null,
sendQuantity: null,
sendTime: null,
outboundUserId: null,
outboundQuantity: null,
outboundTime: null,
deptId: null,
},
//
form: {},
//
rules: {
}
};
},
created() {
this.getList();
},
methods: {
/** 查询资源管理出库入库明细列表 */
getList() {
this.loading = true;
listEhsMaterialDetail(this.queryParams).then(response => {
this.EhsMaterialDetailList = response.rows;
this.total = response.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
materialDetailId: null,
materialId: null,
sendUserId: null,
sendQuantity: null,
sendTime: null,
outboundUserId: null,
outboundQuantity: null,
outboundTime: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null,
remark: null,
deptId: null,
createUserId: null
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.materialDetailId)
this.single = selection.length!==1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加资源管理出库入库明细";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const materialDetailId = row.materialDetailId || this.ids
getEhsMaterialDetail(materialDetailId).then(response => {
this.form = response.data;
this.open = true;
this.title = "修改资源管理出库入库明细";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.materialDetailId != null) {
updateEhsMaterialDetail(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addEhsMaterialDetail(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const materialDetailIds = row.materialDetailId || this.ids;
this.$modal.confirm('是否确认删除资源管理出库入库明细编号为"' + materialDetailIds + '"的数据项?').then(function() {
return delEhsMaterialDetail(materialDetailIds);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download('EhsMaterialDetail/EhsMaterialDetail/export', {
...this.queryParams
}, `EhsMaterialDetail_${new Date().getTime()}.xlsx`)
}
}
};
</script>

@ -1,14 +1,26 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<!-- <el-form-item label="类别" prop="classFirst"> <el-form-item label="部门" prop="deptId" v-show="deptShow">
<el-input <el-select v-model="queryParams.deptId" placeholder="请选择部门" clearable>
v-model="queryParams.classFirst" <el-option
placeholder="请输入类别" v-for="dict in allDeptList"
clearable :key="dict.deptId"
@keyup.enter.native="handleQuery" :label="dict.deptName"
:value="dict.deptId"
/> />
</el-form-item>--> </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-form-item label="类别" prop="classSecond">
<el-select v-model="queryParams.classSecond" placeholder="请选择类别" clearable> <el-select v-model="queryParams.classSecond" placeholder="请选择类别" clearable>
<el-option <el-option
@ -122,17 +134,31 @@
<el-table v-loading="loading" :data="ehsMaterialList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="ehsMaterialList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<el-table-column label="主键" align="center" prop="materialId" /> <el-table-column label="上报部门" align="center" prop="deptName" />
<el-table-column label="性质" align="center" prop="materialType" /> <!-- <el-table-column label="主键" align="center" prop="materialId" />-->
<el-table-column label="类别" align="center" prop="classFirst" /> <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" />-->
<el-table-column label="类别" align="center" prop="classSecond"> <el-table-column label="类别" align="center" prop="classSecond">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag :options="curDict" :value="scope.row.classSecond"/> <template v-for="(item, index) in curDict">
<el-tag v-show = "item.value == scope.row.classSecond"
:disable-transitions="true"
:key="item.value"
:index="index"
>
{{ item.label + ' ' }}
</el-tag>
</template>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="物资名称" align="center" prop="materialName" /> <el-table-column label="物资名称" align="center" prop="materialName" />
<el-table-column label="规格/参数" align="center" prop="materialSpecs" /> <el-table-column label="规格/参数" align="center" prop="materialSpecs" />
<el-table-column label="数量" align="center" prop="materialQuantity" /> <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="reserveLocation" />
<el-table-column label="管理责任人" align="center" prop="managerPerson" /> <el-table-column label="管理责任人" align="center" prop="managerPerson" />
<el-table-column label="联系电话" align="center" prop="tel" /> <el-table-column label="联系电话" align="center" prop="tel" />
@ -152,6 +178,34 @@
@click="handleDelete(scope.row)" @click="handleDelete(scope.row)"
v-hasPermi="['ehsMaterial:ehsMaterial:remove']" v-hasPermi="['ehsMaterial:ehsMaterial:remove']"
>删除</el-button> >删除</el-button>
<el-button v-show="scope.row.sendQuantity==null"
size="mini"
type="text"
icon="el-icon-delete"
@click="handleSendCommand(scope.row)"
v-hasPermi="['EhsMaterialDetail:EhsMaterialDetail:add']"
>下发出库指令</el-button>
<el-button v-show="scope.row.sendQuantity!=null"
size="mini"
type="text"
icon="el-icon-delete"
@click="handleOutbound(scope.row)"
v-hasPermi="['EhsMaterialDetail:EhsMaterialDetail:edit']"
>执行出库指令</el-button>
<el-button v-show="scope.row.sendQuantity!=null"
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelDetail(scope.row)"
v-hasPermi="['EhsMaterialDetail:EhsMaterialDetail:remove']"
>终止出库指令</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDetail(scope.row)"
v-hasPermi="['EhsMaterialDetail:EhsMaterialDetail:list']"
>出入库明细</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -167,9 +221,16 @@
<!-- 添加或修改物资信息包含 通用应急救援装备防汛抗旱应急救援装备森林防灭火应急救援装备救灾物资对话框 --> <!-- 添加或修改物资信息包含 通用应急救援装备防汛抗旱应急救援装备森林防灭火应急救援装备救灾物资对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-form ref="form" :model="form" :rules="rules" label-width="80px">
<!--<el-form-item label="类别" prop="classFirst"> <el-form-item label="性质" prop="materialType">
<el-input v-model="form.classFirst" placeholder="请输入类别" /> <el-select v-model="form.materialType" placeholder="请选择性质" clearable>
</el-form-item>--> <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-form-item label="类别" prop="classSecond">
<el-select v-model="form.classSecond" placeholder="请选择类别"> <el-select v-model="form.classSecond" placeholder="请选择类别">
<el-option <el-option
@ -207,11 +268,35 @@
<el-button @click="cancel"> </el-button> <el-button @click="cancel"> </el-button>
</div> </div>
</el-dialog> </el-dialog>
<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="sendUserId" />
<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="outboundUserId" />
<el-table-column label="出库数量" align="center" prop="outboundQuantity" />
<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>
</el-dialog>
</div> </div>
</template> </template>
<script> <script>
import { listEhsMaterial, getEhsMaterial, delEhsMaterial, addEhsMaterial, updateEhsMaterial } from "@/api/ehs/ehsMaterial"; 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 { getDicts } from "@/api/system/dict/data"; import { getDicts } from "@/api/system/dict/data";
export default { export default {
name: "EhsMaterial", name: "EhsMaterial",
@ -238,7 +323,27 @@
title: "", title: "",
// //
open: false, open: false,
//
titleDetail: "出入库明细",
//
openDetail: false,
ehsMaterialDetailList:[],
totalDetail: 0,
materialClass:0, materialClass:0,
//
deptShow: false,
//
allDeptList: [],
sendQuantity:"",//
materialTypeOptions: [{
value: '1',
label: '自储',
raw:{listClass: 'default'}
}, {
value: '2',
label: '社会代储',
raw:{listClass: 'default'}
}],
// //
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
@ -260,6 +365,11 @@
}, },
// //
rules: { rules: {
materialQuantity: [
{ required: true, message: "企业名称不能为空", trigger: "blur" },
{type: 'string', required: true, pattern:/^\d+$|^\d+[.]?\d+$/, message:'请输入正确的数量', trigger: 'blur'}
],
} }
}; };
}, },
@ -267,6 +377,9 @@
this.getList(); this.getList();
this.materialClass = this.$route.query.classFirst; this.materialClass = this.$route.query.classFirst;
this.getDictList(); this.getDictList();
this.getListAllDept();
this.deptShow = this.$store.state.user.parentId==0 ?true :false;
console.log(this.curDict);
}, },
methods: { methods: {
@ -279,6 +392,15 @@
this.loading = false; this.loading = false;
}); });
}, },
/** 单位信息列表 */
getListAllDept() {
console.log(this.$store.state.user.deptId);
this.loading = true;
listAllDept().then(response => {
this.allDeptList = response.data;
this.loading = false;
});
},
getDictList() { getDictList() {
this.loading = true; this.loading = true;
let str = ""; let str = "";
@ -399,7 +521,64 @@
this.download('ehsMaterial/ehsMaterial/export', { this.download('ehsMaterial/ehsMaterial/export', {
...this.queryParams ...this.queryParams
}, `ehsMaterial_${new Date().getTime()}.xlsx`) }, `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}).then(response => {
this.$modal.msgSuccess("出库指令发送成功");
this.loading = false;
this.getList();
});
/*this.$message({
type: 'success',
message: '你的邮箱是: ' + value
});*/
}).catch(() => {
this.$message({
type: 'info',
message: '取消输入'
});
});
},
getListDetail(id) {
this.loading = true;
listEhsMaterialDetail({"materialId":id}).then(response => {
this.ehsMaterialDetailList = response.rows;
this.totalDetail = response.total;
this.loading = false;
});
},
handleDetail(row) {
this.openDetail=true;
this.getListDetail(row.materialId);
},/** */
handleOutbound(row) {
this.$modal.confirm('是否执行出库指令?' ).then(function() {
return updateEhsMaterialDetail(row.materialId);
}).then(() => {
this.getList();
this.$modal.msgSuccess("执行成功");
}).catch(() => {});
},
handleDelDetail(row) {
this.$modal.confirm('是否终止出库指令?' ).then(function() {
return delEhsMaterialDetail(row.materialId);
}).then(() => {
this.getList();
this.$modal.msgSuccess("终止成功");
}).catch(() => {});
},
} }
}; };
</script> </script>

@ -31,7 +31,7 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="风险点位置" prop="riskLocation"> <!--<el-form-item label="风险点位置" prop="riskLocation">
<el-input <el-input
v-model="queryParams.riskLocation" v-model="queryParams.riskLocation"
placeholder="请输入风险点位置" placeholder="请输入风险点位置"
@ -102,7 +102,7 @@
clearable clearable
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</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>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button> <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
@ -168,7 +168,7 @@
<dict-tag :options="dict.type.risk_report_address_type" :value="scope.row.reportAddressType"/> <dict-tag :options="dict.type.risk_report_address_type" :value="scope.row.reportAddressType"/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="上报单位" align="center" prop="deptName" /> <el-table-column label="上报单位" v-show="false" align="center" prop="deptName" />
<el-table-column label="风险点位置" align="center" prop="riskLocation" /> <el-table-column label="风险点位置" align="center" prop="riskLocation" />
<el-table-column label="联系电话" align="center" prop="tel" /> <el-table-column label="联系电话" align="center" prop="tel" />
<el-table-column label="涉及群众数量" align="center" prop="peopleQuantity" /> <el-table-column label="涉及群众数量" align="center" prop="peopleQuantity" />

@ -35,7 +35,7 @@ module.exports = {
proxy: { proxy: {
// detail: https://cli.vuejs.org/config/#devserver-proxy // detail: https://cli.vuejs.org/config/#devserver-proxy
[process.env.VUE_APP_BASE_API]: { [process.env.VUE_APP_BASE_API]: {
target: `http://localhost:8080`, target: `http://localhost:8083`,
changeOrigin: true, changeOrigin: true,
pathRewrite: { pathRewrite: {
['^' + process.env.VUE_APP_BASE_API]: '' ['^' + process.env.VUE_APP_BASE_API]: ''

Loading…
Cancel
Save