Commit fb4938de authored by 刘帅's avatar 刘帅

1.优化

parent 0105a573
...@@ -50,6 +50,14 @@ public class ErpMaterialPicking extends BaseEntity { ...@@ -50,6 +50,14 @@ public class ErpMaterialPicking extends BaseEntity {
* 退料时间 * 退料时间
*/ */
private Date returnTime; private Date returnTime;
/**
* 供应商ID
*/
private Long vendorId;
/**
* 供应商名称
*/
private String vendorName;
/** /**
* 车辆ID * 车辆ID
*/ */
......
...@@ -124,5 +124,10 @@ public class ErpMaterialInventoryRecordBo extends BaseEntity { ...@@ -124,5 +124,10 @@ public class ErpMaterialInventoryRecordBo extends BaseEntity {
*/ */
private Long createDeptId; private Long createDeptId;
/**
* 库存数量
*/
private BigDecimal inventory;
} }
...@@ -59,6 +59,17 @@ public class ErpMaterialPickingBo extends BaseEntity { ...@@ -59,6 +59,17 @@ public class ErpMaterialPickingBo extends BaseEntity {
*/ */
private Date returnTime; private Date returnTime;
/**
* 供应商ID
*/
@NotNull(message = "供应商不能为空", groups = { AddGroup.class, EditGroup.class })
private Long vendorId;
/**
* 供应商名称
*/
private String vendorName;
/** /**
* 车辆ID * 车辆ID
*/ */
......
...@@ -4,8 +4,11 @@ import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; ...@@ -4,8 +4,11 @@ import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;
import com.maintain.common.annotation.ExcelDictFormat; import com.maintain.common.annotation.ExcelDictFormat;
import com.maintain.common.convert.ExcelDictConvert; import com.maintain.common.convert.ExcelDictConvert;
import com.maintain.common.core.validate.AddGroup;
import com.maintain.common.core.validate.EditGroup;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotNull;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
...@@ -57,6 +60,16 @@ public class ErpMaterialPickingVo implements Serializable { ...@@ -57,6 +60,16 @@ public class ErpMaterialPickingVo implements Serializable {
@ExcelProperty(value = "退料时间") @ExcelProperty(value = "退料时间")
private Date returnTime; private Date returnTime;
/**
* 供应商ID
*/
private Long vendorId;
/**
* 供应商名称
*/
private String vendorName;
/** /**
* 车辆ID * 车辆ID
*/ */
......
...@@ -90,6 +90,7 @@ public class ErpMaterialInventoryRecordServiceImpl implements IErpMaterialInvent ...@@ -90,6 +90,7 @@ public class ErpMaterialInventoryRecordServiceImpl implements IErpMaterialInvent
.like(null != bo.getVendorId(),"t.vendor_id", bo.getVendorId()) .like(null != bo.getVendorId(),"t.vendor_id", bo.getVendorId())
.like(null != bo.getWarehouseId(), "t.warehouse_id", bo.getWarehouseId()) .like(null != bo.getWarehouseId(), "t.warehouse_id", bo.getWarehouseId())
.in(!bo.getWarehouseIdList().isEmpty(), "t.warehouse_id", bo.getWarehouseIdList()) .in(!bo.getWarehouseIdList().isEmpty(), "t.warehouse_id", bo.getWarehouseIdList())
.ge(null != bo.getInventory(), "t.inventory", bo.getInventory())
.orderByDesc("t.create_time"); .orderByDesc("t.create_time");
Page<ErpMaterialInventoryRecordVo> queryPageList = baseMapper.customQueryPageInventoryList(pageQuery.build(), query); Page<ErpMaterialInventoryRecordVo> queryPageList = baseMapper.customQueryPageInventoryList(pageQuery.build(), query);
return TableDataInfo.build(queryPageList); return TableDataInfo.build(queryPageList);
......
...@@ -54,6 +54,7 @@ public class ErpMaterialPickingServiceImpl implements IErpMaterialPickingService ...@@ -54,6 +54,7 @@ public class ErpMaterialPickingServiceImpl implements IErpMaterialPickingService
private final ErpMaterialInventoryRecordMapper materialInventoryRecordMapper; private final ErpMaterialInventoryRecordMapper materialInventoryRecordMapper;
private final ErpWarehouseMapper warehouseMapper; private final ErpWarehouseMapper warehouseMapper;
private final SysDeptMapper deptMapper; private final SysDeptMapper deptMapper;
private final ErpMaterialVendorMapper vendorMapper;
/** /**
* 查询报修单-领料出库单 * 查询报修单-领料出库单
...@@ -66,8 +67,10 @@ public class ErpMaterialPickingServiceImpl implements IErpMaterialPickingService ...@@ -66,8 +67,10 @@ public class ErpMaterialPickingServiceImpl implements IErpMaterialPickingService
List<ErpMaterialPickingInfoVo> infoVoList = pickingInfoMapper.selectVoList(lqw); List<ErpMaterialPickingInfoVo> infoVoList = pickingInfoMapper.selectVoList(lqw);
if (!infoVoList.isEmpty()) { if (!infoVoList.isEmpty()) {
for (ErpMaterialPickingInfoVo infoVo : infoVoList) { for (ErpMaterialPickingInfoVo infoVo : infoVoList) {
ErpMaterialInventoryRecordVo recordVo = materialInventoryRecordMapper.customQueryInventoryById(infoVo.getRecordId()); if (infoVo.getRecordId() != null) {
infoVo.setInventory(recordVo.getInventory()); ErpMaterialInventoryRecordVo recordVo = materialInventoryRecordMapper.customQueryInventoryById(infoVo.getRecordId());
infoVo.setInventory(recordVo.getInventory());
}
} }
materialVo.setPickingInfoList(infoVoList); materialVo.setPickingInfoList(infoVoList);
} }
...@@ -95,10 +98,8 @@ public class ErpMaterialPickingServiceImpl implements IErpMaterialPickingService ...@@ -95,10 +98,8 @@ public class ErpMaterialPickingServiceImpl implements IErpMaterialPickingService
LambdaQueryWrapper<ErpMaterialPicking> lqw = buildQueryWrapper(bo); LambdaQueryWrapper<ErpMaterialPicking> lqw = buildQueryWrapper(bo);
Page<ErpMaterialPickingVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); Page<ErpMaterialPickingVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
// 查询出库明细列表 // 查询出库明细列表
LambdaQueryWrapper<ErpMaterialPickingInfo> queryWrapper = Wrappers.lambdaQuery();
for (ErpMaterialPickingVo pickingVo : result.getRecords()) { for (ErpMaterialPickingVo pickingVo : result.getRecords()) {
queryWrapper.eq(ErpMaterialPickingInfo::getPickingId, pickingVo.getId()); List<ErpMaterialPickingInfoVo> infoVoList = pickingInfoMapper.selectVoList(new LambdaQueryWrapper<>(ErpMaterialPickingInfo.class).eq(ErpMaterialPickingInfo::getPickingId, pickingVo.getId()));
List<ErpMaterialPickingInfoVo> infoVoList = pickingInfoMapper.selectVoList(queryWrapper);
for (ErpMaterialPickingInfoVo infoVo : infoVoList) { for (ErpMaterialPickingInfoVo infoVo : infoVoList) {
LambdaQueryWrapper<ErpMaterialPutawayInfo> putawayInfoLambdaQueryWrapper = Wrappers.lambdaQuery(); LambdaQueryWrapper<ErpMaterialPutawayInfo> putawayInfoLambdaQueryWrapper = Wrappers.lambdaQuery();
putawayInfoLambdaQueryWrapper.eq(ErpMaterialPutawayInfo::getMaterialId, infoVo.getMaterialId()); putawayInfoLambdaQueryWrapper.eq(ErpMaterialPutawayInfo::getMaterialId, infoVo.getMaterialId());
...@@ -159,6 +160,9 @@ public class ErpMaterialPickingServiceImpl implements IErpMaterialPickingService ...@@ -159,6 +160,9 @@ public class ErpMaterialPickingServiceImpl implements IErpMaterialPickingService
add.setReceiveUserId(LoginHelper.getUserId()); add.setReceiveUserId(LoginHelper.getUserId());
add.setReceiveUserName(LoginHelper.getUsername()); add.setReceiveUserName(LoginHelper.getUsername());
add.setReceiveTime(new Date()); add.setReceiveTime(new Date());
ErpMaterialVendor materialVendor = vendorMapper.selectById(bo.getVendorId());
add.setVendorId(materialVendor.getId());
add.setVendorName(materialVendor.getVendorName());
BigDecimal moneyTotal = bo.getMaterialList().stream().map(ErpMaterialPickingInfoAddBo::getMoney).reduce(BigDecimal.ZERO, BigDecimal::add); BigDecimal moneyTotal = bo.getMaterialList().stream().map(ErpMaterialPickingInfoAddBo::getMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
add.setOutMoney(moneyTotal); add.setOutMoney(moneyTotal);
add.setCreateDeptId(LoginHelper.getUserId()); add.setCreateDeptId(LoginHelper.getUserId());
...@@ -231,6 +235,9 @@ public class ErpMaterialPickingServiceImpl implements IErpMaterialPickingService ...@@ -231,6 +235,9 @@ public class ErpMaterialPickingServiceImpl implements IErpMaterialPickingService
update.setRepairNumber(repairForm.getRepairNumber()); update.setRepairNumber(repairForm.getRepairNumber());
update.setPlateNumber(erpCar.getPlateNumber()); update.setPlateNumber(erpCar.getPlateNumber());
update.setOutMoney(moneyTotal); update.setOutMoney(moneyTotal);
ErpMaterialVendor materialVendor = vendorMapper.selectById(bo.getVendorId());
update.setVendorId(materialVendor.getId());
update.setVendorName(materialVendor.getVendorName());
validEntityBeforeSave(update); validEntityBeforeSave(update);
boolean flag = baseMapper.updateById(update) > 0; boolean flag = baseMapper.updateById(update) > 0;
if (flag) { if (flag) {
......
...@@ -191,8 +191,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -191,8 +191,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
resultType="com.maintain.business.domain.vo.ErpMaterialInventoryRecordVo"> resultType="com.maintain.business.domain.vo.ErpMaterialInventoryRecordVo">
<include refid="list"/> <include refid="list"/>
<where> <where>
and t.type = 1
<if test="id != null"> <if test="id != null">
t.recordId = #{id} and t.recordId = #{id}
</if> </if>
</where> </where>
</select> </select>
......
...@@ -102,19 +102,20 @@ ...@@ -102,19 +102,20 @@
{{scope.row.plateNumber || '/'}} {{scope.row.plateNumber || '/'}}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="出库金额" align="center" prop="outMoney"> <el-table-column label="供应商" align="center" prop="vendorName" width="200" show-overflow-tooltip/>
<el-table-column label="出库金额" align="center" prop="outMoney" width="80">
<template slot-scope="scope"> <template slot-scope="scope">
{{scope.row.outMoney || '/'}} {{scope.row.outMoney || '/'}}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="领料人" align="center" prop="receiveUserName"> <el-table-column label="领料人" align="center" prop="receiveUserName" width="100">
<template slot-scope="scope"> <template slot-scope="scope">
{{scope.row.receiveUserName || '/'}} {{scope.row.receiveUserName || '/'}}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="领料时间" align="center" prop="receiveTime" width="180"> <el-table-column label="领料时间" align="center" prop="receiveTime" width="180">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{scope.row.receiveTime ? parseTime(scope.row.receiveTime, '{y}-{m}-{d}') : '/'}}</span> <span>{{scope.row.receiveTime ? parseTime(scope.row.receiveTime, '{y}-{m}-{d} {h}:{i}:{s}') : '/'}}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="状态" align="center" prop="state"> <el-table-column label="状态" align="center" prop="state">
...@@ -129,7 +130,7 @@ ...@@ -129,7 +130,7 @@
</el-table-column> </el-table-column>
<el-table-column label="出库时间" align="center" prop="outTime" width="180"> <el-table-column label="出库时间" align="center" prop="outTime" width="180">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ parseTime(scope.row.outTime, '{y}-{m}-{d}') }}</span> <span>{{ parseTime(scope.row.outTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" align="center" width="200px" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" width="200px" class-name="small-padding fixed-width">
...@@ -180,11 +181,6 @@ ...@@ -180,11 +181,6 @@
<el-dialog :title="title" :visible.sync="open" width="80%" append-to-body> <el-dialog :title="title" :visible.sync="open" width="80%" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="110px"> <el-form ref="form" :model="form" :rules="rules" label-width="110px">
<el-row> <el-row>
<el-col :span="6">
<el-form-item label="出库单号" prop="outNumber">
<el-input v-model="form.outNumber" disabled placeholder="自动生成" />
</el-form-item>
</el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="出库时间" prop="outTime"> <el-form-item label="出库时间" prop="outTime">
<el-date-picker clearable <el-date-picker clearable
...@@ -196,6 +192,11 @@ ...@@ -196,6 +192,11 @@
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6">
<el-form-item label="出库单号" prop="outNumber">
<el-input v-model="form.outNumber" disabled placeholder="自动生成" />
</el-form-item>
</el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="出库金额" prop="outMoney"> <el-form-item label="出库金额" prop="outMoney">
<el-input v-model="form.outMoney" disabled /> <el-input v-model="form.outMoney" disabled />
...@@ -232,6 +233,13 @@ ...@@ -232,6 +233,13 @@
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="6">
<el-form-item label="供应商" prop="vendorId">
<el-select v-model="form.vendorId" placeHolder="请选择供应商" filterable @change="vendorIdChange" style="width: 100%">
<el-option v-for="item in materialVendorOpt" :key="item.id" :value="item.id" :label="item.vendorName" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="操作人" prop="createBy"> <el-form-item label="操作人" prop="createBy">
<el-input v-model="form.createBy" placeholder="请输入操作人" disabled /> <el-input v-model="form.createBy" placeholder="请输入操作人" disabled />
...@@ -293,7 +301,7 @@ ...@@ -293,7 +301,7 @@
</el-dialog> </el-dialog>
<!-- 物料列表对话框 --> <!-- 物料列表对话框 -->
<el-dialog title="物料列表" :visible.sync="open1" width="65%" append-to-body> <el-dialog title="物料列表" :visible.sync="open1" width="75%" append-to-body>
<el-form :model="queryMaterialParams" ref="queryMaterialForm" size="small" :inline="true" v-show="showSearch" label-width="80px"> <el-form :model="queryMaterialParams" ref="queryMaterialForm" size="small" :inline="true" v-show="showSearch" label-width="80px">
<!-- <el-form-item label="仓库" prop="warehouseId">--> <!-- <el-form-item label="仓库" prop="warehouseId">-->
<!-- <el-select v-model="queryMaterialParams.warehouseId" placeHolder="请选择仓库">--> <!-- <el-select v-model="queryMaterialParams.warehouseId" placeHolder="请选择仓库">-->
...@@ -301,7 +309,7 @@ ...@@ -301,7 +309,7 @@
<!-- </el-select>--> <!-- </el-select>-->
<!-- </el-form-item>--> <!-- </el-form-item>-->
<el-form-item label="供应商" prop="vendorId"> <el-form-item label="供应商" prop="vendorId">
<el-select v-model="queryMaterialParams.vendorId" filterable placeholder="请选择供应商" style="width: 100%"> <el-select v-model="queryMaterialParams.vendorId" filterable disabled placeholder="请选择供应商" style="width: 100%">
<el-option v-for="item in materialVendorOpt" :key="item.id" :value="item.id" :label="item.vendorName" /> <el-option v-for="item in materialVendorOpt" :key="item.id" :value="item.id" :label="item.vendorName" />
</el-select> </el-select>
</el-form-item> </el-form-item>
...@@ -335,15 +343,15 @@ ...@@ -335,15 +343,15 @@
<el-table-column label="物资编码" align="center" prop="materialCode" /> <el-table-column label="物资编码" align="center" prop="materialCode" />
<el-table-column label="物资名称" align="center" prop="materialName" /> <el-table-column label="物资名称" align="center" prop="materialName" />
<el-table-column label="物资规格" align="center" prop="materialSpecifications" /> <el-table-column label="物资规格" align="center" prop="materialSpecifications" />
<el-table-column label="物资单位" align="center" prop="materialUnit"> <el-table-column label="物资单位" align="center" prop="materialUnit" width="80">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag :options="dict.type.material_unit" :value="scope.row.materialUnit" /> <dict-tag :options="dict.type.material_unit" :value="scope.row.materialUnit" />
</template> </template>
</el-table-column> </el-table-column>
<!-- <el-table-column label="质保期" align="center" prop="materialWarrantyPeriod" />--> <!-- <el-table-column label="质保期" align="center" prop="materialWarrantyPeriod" />-->
<el-table-column label="参考价" align="center" prop="referencePrice" /> <el-table-column label="参考价" align="center" prop="referencePrice" width="100" />
<el-table-column label="销售价" align="center" prop="sellingPrice" /> <el-table-column label="销售价" align="center" prop="sellingPrice" width="100" />
<el-table-column label="库存" align="center" prop="inventory" /> <el-table-column label="库存" align="center" prop="inventory" width="100" />
</el-table> </el-table>
<pagination v-show="materialTotal>0" :total="materialTotal" :page.sync="queryMaterialParams.pageNum" :limit.sync="queryMaterialParams.pageSize" @pagination="getMaterialList"/> <pagination v-show="materialTotal>0" :total="materialTotal" :page.sync="queryMaterialParams.pageNum" :limit.sync="queryMaterialParams.pageSize" @pagination="getMaterialList"/>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
...@@ -357,14 +365,15 @@ ...@@ -357,14 +365,15 @@
<span style="font-weight: bold; font-size: 18px">出库信息</span> <span style="font-weight: bold; font-size: 18px">出库信息</span>
<el-divider /> <el-divider />
<el-descriptions border :column="3"> <el-descriptions border :column="3">
<el-descriptions-item label="出库单号">{{form.outNumber}}</el-descriptions-item>
<el-descriptions-item label="出库时间">{{form.outTime}}</el-descriptions-item> <el-descriptions-item label="出库时间">{{form.outTime}}</el-descriptions-item>
<el-descriptions-item label="出库单号">{{form.outNumber}}</el-descriptions-item>
<el-descriptions-item label="出库金额">{{form.outMoney}}</el-descriptions-item> <el-descriptions-item label="出库金额">{{form.outMoney}}</el-descriptions-item>
<el-descriptions-item label="客户名称">{{form.clientName}}</el-descriptions-item> <el-descriptions-item label="客户名称">{{form.clientName}}</el-descriptions-item>
<el-descriptions-item label="报修单">{{form.repairNumber}}</el-descriptions-item> <el-descriptions-item label="报修单">{{form.repairNumber}}</el-descriptions-item>
<el-descriptions-item label="车牌号">{{form.plateNumber}}</el-descriptions-item> <el-descriptions-item label="车牌号">{{form.plateNumber}}</el-descriptions-item>
<el-descriptions-item label="部门">{{form.repairerDeptName}}</el-descriptions-item> <el-descriptions-item label="部门">{{form.repairerDeptName}}</el-descriptions-item>
<el-descriptions-item label="班组">{{form.repairerGroupName}}</el-descriptions-item> <el-descriptions-item label="班组">{{form.repairerGroupName}}</el-descriptions-item>
<el-descriptions-item label="供应商">{{form.vendorName}}</el-descriptions-item>
<el-descriptions-item label="状态"> <el-descriptions-item label="状态">
<dict-tag :options="dict.type.picking_state" :value="form.state" /> <dict-tag :options="dict.type.picking_state" :value="form.state" />
</el-descriptions-item> </el-descriptions-item>
...@@ -494,6 +503,9 @@ export default { ...@@ -494,6 +503,9 @@ export default {
outTime: [ outTime: [
{ required: true, message: "出库时间不能为空", trigger: "blur" } { required: true, message: "出库时间不能为空", trigger: "blur" }
], ],
vendorId: [
{ required: true, message: "供应商不能为空", trigger: "blur" }
],
} }
}; };
}, },
...@@ -546,14 +558,22 @@ export default { ...@@ -546,14 +558,22 @@ export default {
}, },
/** 打开物料列表 */ /** 打开物料列表 */
openMaterialModel() { openMaterialModel() {
this.getVendorList();
if (!this.form.repairerDeptId) { if (!this.form.repairerDeptId) {
this.$modal.msgError("请先选择报修单"); this.$modal.msgError("请先选择报修单");
return return
} }
if (!this.form.vendorId) {
this.$modal.msgError("请先选择供应商");
return
}
this.open1 = true this.open1 = true
this.getMaterialList() this.getMaterialList()
}, },
/** 供应商改变 */
vendorIdChange(vendorId) {
this.queryMaterialParams.vendorId = vendorId;
this.form.pickingInfoList = []
},
/** 搜索按钮操作 */ /** 搜索按钮操作 */
handleMaterialQuery() { handleMaterialQuery() {
this.queryMaterialParams.pageNum = 1; this.queryMaterialParams.pageNum = 1;
...@@ -634,6 +654,8 @@ export default { ...@@ -634,6 +654,8 @@ export default {
returnNumber: undefined, returnNumber: undefined,
carId: undefined, carId: undefined,
plateNumber: undefined, plateNumber: undefined,
vendorId: undefined,
vendorName: undefined,
outMoney: undefined, outMoney: undefined,
receiveUserId: undefined, receiveUserId: undefined,
receiveUserName: undefined, receiveUserName: undefined,
...@@ -679,6 +701,7 @@ export default { ...@@ -679,6 +701,7 @@ export default {
this.open = true; this.open = true;
this.title = "添加物料出库"; this.title = "添加物料出库";
this.getRepairList() this.getRepairList()
this.getVendorList()
}, },
// 详情按钮 // 详情按钮
handleDetail(row) { handleDetail(row) {
......
...@@ -69,9 +69,10 @@ ...@@ -69,9 +69,10 @@
</template> </template>
</el-table-column> </el-table-column>
<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="outNumber" /> <el-table-column label="出库单号" align="center" prop="outNumber" width="150"/>
<el-table-column label="报修单号" align="center" prop="repairNumber" /> <el-table-column label="报修单号" align="center" prop="repairNumber" />
<el-table-column label="车牌号" align="center" prop="plateNumber" /> <el-table-column label="车牌号" align="center" prop="plateNumber" />
<el-table-column label="供应商" align="center" prop="vendorName" show-overflow-tooltip/>
<el-table-column label="出库金额" align="center" prop="outMoney" /> <el-table-column label="出库金额" align="center" prop="outMoney" />
<el-table-column label="领料人" align="center" prop="receiveUserName" /> <el-table-column label="领料人" align="center" prop="receiveUserName" />
<el-table-column label="领料时间" align="center" prop="receiveTime" width="120"> <el-table-column label="领料时间" align="center" prop="receiveTime" width="120">
...@@ -97,13 +98,8 @@ ...@@ -97,13 +98,8 @@
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button size="mini" type="text" icon="el-icon-document" @click="handleDetail(scope.row)">详情</el-button> <el-button size="mini" type="text" icon="el-icon-document" @click="handleDetail(scope.row)">详情</el-button>
<el-button <el-button size="mini" type="text" icon="el-icon-edit"
size="mini" @click="handleSettlement(scope.row)" v-hasPermi="['business:settlementMaterial:add']">结算</el-button>
type="text"
icon="el-icon-edit"
@click="handleSettlement(scope.row)"
v-hasPermi="['business:settlementMaterial:add']"
>结算</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
...@@ -124,13 +120,10 @@ ...@@ -124,13 +120,10 @@
<el-form ref="form" :model="form" :rules="rules" label-width="110px"> <el-form ref="form" :model="form" :rules="rules" label-width="110px">
<el-row> <el-row>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="结算单号" prop="settlementNumber"> <el-form-item label="结算方式" prop="settlementType">
<el-input v-model="form.settlementNumber" disabled placeholder="自动生成" /> <el-select v-model="form.settlementType" style="width: 100%" placeholder="请选择结算方式">
</el-form-item> <el-option v-for="item in dict.type.settlement_material_type" :key="item.value" :value="item.value" :label="item.label" />
</el-col> </el-select>
<el-col :span="6">
<el-form-item label="结算名称" prop="settlementName">
<el-input v-model="form.settlementName" placeholder="请输入结算名称" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
...@@ -144,9 +137,14 @@ ...@@ -144,9 +137,14 @@
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6">
<el-form-item label="结算单号" prop="settlementNumber">
<el-input v-model="form.settlementNumber" disabled placeholder="自动生成" />
</el-form-item>
</el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="供应商" prop="vendorId"> <el-form-item label="供应商" prop="vendorId">
<el-select v-model="form.vendorId" placeholder="请选择供应商" style="width: 100%"> <el-select v-model="form.vendorId" placeholder="请选择供应商" disabled style="width: 100%">
<el-option v-for="item in materialVendorOpt" :key="item.id" :value="item.id" :label="item.vendorName" /> <el-option v-for="item in materialVendorOpt" :key="item.id" :value="item.id" :label="item.vendorName" />
</el-select> </el-select>
</el-form-item> </el-form-item>
...@@ -154,10 +152,8 @@ ...@@ -154,10 +152,8 @@
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="结算方式" prop="settlementType"> <el-form-item label="结算名称" prop="settlementName">
<el-select v-model="form.settlementType" style="width: 100%" placeholder="请选择结算方式"> <el-input v-model="form.settlementName" placeholder="请输入结算名称" />
<el-option v-for="item in dict.type.settlement_material_type" :key="item.value" :value="item.value" :label="item.label" />
</el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
...@@ -184,7 +180,7 @@ ...@@ -184,7 +180,7 @@
</el-form> </el-form>
<span style="font-weight: bold; font-size: 18px">结算明细</span> <span style="font-weight: bold; font-size: 18px">结算明细</span>
<el-divider /> <el-divider />
<el-table :data="pickingSelection" default-expand-all> <el-table :data="pickingSelection" :default-expand-all="true">
<el-table-column type="expand"> <el-table-column type="expand">
<template slot-scope="props"> <template slot-scope="props">
<el-table :data="props.row.pickingInfoList"> <el-table :data="props.row.pickingInfoList">
...@@ -258,6 +254,7 @@ ...@@ -258,6 +254,7 @@
<el-descriptions-item label="车牌号">{{form.plateNumber}}</el-descriptions-item> <el-descriptions-item label="车牌号">{{form.plateNumber}}</el-descriptions-item>
<el-descriptions-item label="部门">{{form.repairerDeptName}}</el-descriptions-item> <el-descriptions-item label="部门">{{form.repairerDeptName}}</el-descriptions-item>
<el-descriptions-item label="班组">{{form.repairerGroupName}}</el-descriptions-item> <el-descriptions-item label="班组">{{form.repairerGroupName}}</el-descriptions-item>
<el-descriptions-item label="供应商">{{form.vendorName}}</el-descriptions-item>
<el-descriptions-item label="创建人">{{form.createBy}}</el-descriptions-item> <el-descriptions-item label="创建人">{{form.createBy}}</el-descriptions-item>
<el-descriptions-item label="创建时间">{{form.createTime}}</el-descriptions-item> <el-descriptions-item label="创建时间">{{form.createTime}}</el-descriptions-item>
</el-descriptions> </el-descriptions>
...@@ -270,17 +267,17 @@ ...@@ -270,17 +267,17 @@
<el-table-column label="物资编码" align="center" prop="materialCode" /> <el-table-column label="物资编码" align="center" prop="materialCode" />
<el-table-column label="物资名称" align="center" prop="materialName" /> <el-table-column label="物资名称" align="center" prop="materialName" />
<el-table-column label="物资规格" align="center" prop="materialSpecifications" /> <el-table-column label="物资规格" align="center" prop="materialSpecifications" />
<el-table-column label="物资单位" align="center" prop="materialUnit"> <el-table-column label="物资单位" align="center" prop="materialUnit" width="80px">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag :options="dict.type.material_unit" :value="scope.row.materialUnit" /> <dict-tag :options="dict.type.material_unit" :value="scope.row.materialUnit" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="质保期" align="center" prop="materialWarrantyPeriod" /> <el-table-column label="质保期" align="center" prop="materialWarrantyPeriod" width="100px"/>
<el-table-column label="参考价" align="center" prop="referencePrice" /> <el-table-column label="参考价" align="center" prop="referencePrice" width="100px"/>
<el-table-column label="销售价" align="center" prop="sellingPrice" /> <el-table-column label="销售价" align="center" prop="sellingPrice" width="100px"/>
<el-table-column label="领料数量" align="center" prop="collectNumber" width="120px" /> <el-table-column label="领料数量" align="center" prop="collectNumber" width="100px" />
<el-table-column label="入库单价" align="center" prop="price" width="120px" /> <el-table-column label="入库单价" align="center" prop="price" width="100px" />
<el-table-column label="领料金额" align="center" prop="money" width="120px" /> <el-table-column label="领料金额" align="center" prop="money" width="100px" />
</el-table> </el-table>
</el-dialog> </el-dialog>
</div> </div>
...@@ -289,7 +286,7 @@ ...@@ -289,7 +286,7 @@
<script> <script>
import { getMaterialPicking, listPickingAndInfoList } from '@/api/business/materialPicking' import { getMaterialPicking, listPickingAndInfoList } from '@/api/business/materialPicking'
import { getRepairForm } from '@/api/business/repairForm' import { getRepairForm } from '@/api/business/repairForm'
import { listMaterialVendor } from '@/api/business/materialVendor' import {listMaterialVendor, listMaterialVendorAll} from '@/api/business/materialVendor'
import { addSettlementMaterial } from '@/api/business/settlementMaterial' import { addSettlementMaterial } from '@/api/business/settlementMaterial'
import { formatDate } from '@/utils' import { formatDate } from '@/utils'
...@@ -318,6 +315,8 @@ export default { ...@@ -318,6 +315,8 @@ export default {
materialVendorOpt: [], materialVendorOpt: [],
// 已勾选出库单 // 已勾选出库单
pickingSelection: [], pickingSelection: [],
// 供应商ID
vendorId: undefined,
// 弹出层标题 // 弹出层标题
title: "", title: "",
// 是否显示弹出层 // 是否显示弹出层
...@@ -380,6 +379,7 @@ export default { ...@@ -380,6 +379,7 @@ export default {
}, },
created() { created() {
this.getList(); this.getList();
this.getVendorList()
}, },
methods: { methods: {
/** 查询物料出库列表 */ /** 查询物料出库列表 */
...@@ -393,8 +393,8 @@ export default { ...@@ -393,8 +393,8 @@ export default {
}, },
/** 查询物资供应商列表 */ /** 查询物资供应商列表 */
getVendorList() { getVendorList() {
listMaterialVendor({pageNum: 1, pageSize: 1000}).then(response => { listMaterialVendorAll().then(response => {
this.materialVendorOpt = response.rows; this.materialVendorOpt = response.data;
}); });
}, },
// 单价变动 // 单价变动
...@@ -424,7 +424,7 @@ export default { ...@@ -424,7 +424,7 @@ export default {
id: undefined, id: undefined,
settlementNumber: undefined, settlementNumber: undefined,
settlementName: undefined, settlementName: undefined,
settlementTime: undefined, settlementTime: formatDate(new Date().getTime()),
vendorId: undefined, vendorId: undefined,
settlementType: undefined, settlementType: undefined,
settlementMoney: 0, settlementMoney: 0,
...@@ -447,20 +447,22 @@ export default { ...@@ -447,20 +447,22 @@ export default {
}, },
// 多选框选中数据 // 多选框选中数据
handleSelectionChange(selection) { handleSelectionChange(selection) {
let isTrue = false // 如果没有选中任何项,直接禁用按钮
this.ids = selection.map(item => { if (selection.length === 0) {
if (item.state !== 1) { this.multiple = true; // 禁用按钮
isTrue = true this.vendorId = ''; // 清空 form.vendorId
} return;
return item.id }
}) // 如果选中了数据,检查所有项的 vendorId 是否一致
if (selection.length > 0) { const firstVendorId = selection[0].vendorId;
this.isTrue = isTrue const allSameVendor = selection.every(item => item.vendorId === firstVendorId);
}else { if (allSameVendor) {
this.isTrue = true this.vendorId = firstVendorId; // 赋值给 form.vendorId
this.multiple = false; // 允许操作(不禁用按钮)
} else {
this.multiple = true; // 如果 vendorId 不一致,禁用按钮
this.vendorId = ''; // 可以清空,或者保持上一次的值(按需调整)
} }
this.single = selection.length!==1
this.multiple = !selection.length
this.pickingSelection = selection.map(item =>{ this.pickingSelection = selection.map(item =>{
item.pickingInfoList.forEach(info =>{ item.pickingInfoList.forEach(info =>{
info.settlementNumber = info.collectNumber info.settlementNumber = info.collectNumber
...@@ -472,6 +474,7 @@ export default { ...@@ -472,6 +474,7 @@ export default {
/** 结算按钮操作 */ /** 结算按钮操作 */
handleSettle() { handleSettle() {
this.reset(); this.reset();
this.form.vendorId = this.vendorId;
this.open = true; this.open = true;
this.title = "出库单结算"; this.title = "出库单结算";
this.getVendorList() this.getVendorList()
...@@ -503,6 +506,7 @@ export default { ...@@ -503,6 +506,7 @@ export default {
}) })
this.pickingSelection.push(row) this.pickingSelection.push(row)
this.reset(); this.reset();
this.form.vendorId = row.vendorId;
this.open = true; this.open = true;
this.title = "出库单结算"; this.title = "出库单结算";
this.getVendorList() this.getVendorList()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment