生产进度问题修改

This commit is contained in:
z 2025-07-21 15:45:41 +08:00
parent 7966960b85
commit b03045f497
8 changed files with 301 additions and 142 deletions

View File

@ -151,7 +151,7 @@ public class bdgzsomthingController {
BeanUtils.toBean(list, bdgzsomthingRespVO.class)); BeanUtils.toBean(list, bdgzsomthingRespVO.class));
} }
@Scheduled(fixedRate = 10800000) // @Scheduled(fixedRate = 10800000)
public void scheduledTask() { public void scheduledTask() {
bdgzsomthingService.selectds(); bdgzsomthingService.selectds();
} }
@ -159,8 +159,8 @@ public class bdgzsomthingController {
//@Scheduled(cron = "0 2 0 * * ?") //每天十天执行一次 //@Scheduled(cron = "0 2 0 * * ?") //每天十天执行一次
@PostConstruct @PostConstruct
public void init() { public void init() {
selectHasPrice(); // selectHasPrice();
selectSafeStorageAndDeliverOneYear(); // selectSafeStorageAndDeliverOneYear();
// bdgzsomthingService.selectds(); // bdgzsomthingService.selectds();
} }
@Scheduled(cron = "0 0 2 * * ?") @Scheduled(cron = "0 0 2 * * ?")

View File

@ -92,16 +92,17 @@ public interface BgMasterLineMapper extends BaseMapperX<BgMasterLineDO> {
return selectOne(query); return selectOne(query);
} }
default BgMasterLineDO getByDispatchDetail(Long id){ default Long getByDispatchDetail(Long id){
MPJLambdaWrapper<BgMasterLineDO> query = new MPJLambdaWrapper<>(); MPJLambdaWrapper<BgMasterLineDO> query = new MPJLambdaWrapper<>();
query.selectAll(BgMasterLineDO.class) query
.leftJoin(PgMasterLineDO.class, "a", PgMasterLineDO::getId, BgMasterLineDO::getZjMxId); .leftJoin(PgMasterLineDO.class, "a", PgMasterLineDO::getId, BgMasterLineDO::getZjMxId);
query.eq( PgMasterLineDO::getDispatchDetailId, id) query.eq( PgMasterLineDO::getDispatchDetailId, id)
.orderByDesc(BgMasterLineDO::getId) .eq(PgMasterLineDO::getDeleted,0)
.last("limit 1"); .eq(BgMasterLineDO::getIsQua,1)
.in(BgMasterLineDO::getAuditOpinion,1,3);
; ;
return selectOne(query); return selectCount(query);
} }
} }

View File

@ -242,6 +242,7 @@ public interface ProcessBomDetailMapper extends BaseMapperX<ProcessBomDetailDO>
MPJLambdaWrapper<ProcessBomDetailDO> query = new MPJLambdaWrapper<>(); MPJLambdaWrapper<ProcessBomDetailDO> query = new MPJLambdaWrapper<>();
query.selectAll(ProcessBomDetailDO.class) query.selectAll(ProcessBomDetailDO.class)
.select("f.name as compositionName") .select("f.name as compositionName")
.select("t.amount*d.amount as boomAmount")
.leftJoin(PlanTaskBomDO.class,"ptb",PlanTaskBomDO::getBomDetailId,ProcessBomDetailDO::getId) .leftJoin(PlanTaskBomDO.class,"ptb",PlanTaskBomDO::getBomDetailId,ProcessBomDetailDO::getId)
.leftJoin(PlanTaskDO.class,"pt",PlanTaskDO::getId,PlanTaskBomDO::getTaskId) .leftJoin(PlanTaskDO.class,"pt",PlanTaskDO::getId,PlanTaskBomDO::getTaskId)
.leftJoin(ProcessBomDO.class,"g",ProcessBomDO::getId,ProcessBomDetailDO::getBomId) .leftJoin(ProcessBomDO.class,"g",ProcessBomDO::getId,ProcessBomDetailDO::getBomId)
@ -272,6 +273,7 @@ public interface ProcessBomDetailMapper extends BaseMapperX<ProcessBomDetailDO>
.select("m.status as makeStatus") .select("m.status as makeStatus")
.select("r.receiving_status as receivingStatus") .select("r.receiving_status as receivingStatus")
.select("CASE WHEN r.id IS NOT NULL THEN 1 ELSE 0 END AS orderNoExists") .select("CASE WHEN r.id IS NOT NULL THEN 1 ELSE 0 END AS orderNoExists")
.select("t.amount*d.amount as boomAmount")
.leftJoin(PlanTaskBomDO.class,"ptb",PlanTaskBomDO::getBomDetailId,ProcessBomDetailDO::getId) .leftJoin(PlanTaskBomDO.class,"ptb",PlanTaskBomDO::getBomDetailId,ProcessBomDetailDO::getId)
.leftJoin(PlanTaskDO.class,"pt",PlanTaskDO::getId,PlanTaskBomDO::getTaskId) .leftJoin(PlanTaskDO.class,"pt",PlanTaskDO::getId,PlanTaskBomDO::getTaskId)
.leftJoin(ProcessBomDO.class,"g",ProcessBomDO::getId,ProcessBomDetailDO::getBomId) .leftJoin(ProcessBomDO.class,"g",ProcessBomDO::getId,ProcessBomDetailDO::getBomId)

View File

@ -43,9 +43,11 @@ public interface ProjectOrderMapper extends BaseMapperX<ProjectOrderDO> {
query.selectAll(ProjectOrderDO.class) query.selectAll(ProjectOrderDO.class)
.select("a.id as projectSubId,a.name as projectSubName") .select("a.id as projectSubId,a.name as projectSubName")
.select("b.name as customerName,e.name as deviceModel") .select("b.name as customerName,e.name as deviceModel")
.leftJoin(ProjectOrderSubDO.class,"a",ProjectOrderSubDO::getProjectOrderId,ProjectOrderDO::getId) .leftJoin(ProjectOrderSubDO.class,"a",ProjectOrderSubDO::getProjectOrderId,ProjectOrderDO::getId)
.leftJoin(CustomerDO.class,"b",CustomerDO::getId,ProjectOrderDO::getCustomerId) .leftJoin(CustomerDO.class,"b",CustomerDO::getId,ProjectOrderDO::getCustomerId)
.leftJoin(EquipDO.class,"e",EquipDO::getId,ProjectOrderSubDO::getDeviceModel) .leftJoin(EquipDO.class,"e",EquipDO::getId,ProjectOrderSubDO::getDeviceModel)
.disableSubLogicDel()
.like(!StringUtils.isEmpty(reqVO.getCode()),ProjectOrderDO::getCode,reqVO.getCode()) .like(!StringUtils.isEmpty(reqVO.getCode()),ProjectOrderDO::getCode,reqVO.getCode())
.like(!StringUtils.isEmpty(reqVO.getProjectName()),ProjectOrderDO::getProjectName,reqVO.getProjectName()) .like(!StringUtils.isEmpty(reqVO.getProjectName()),ProjectOrderDO::getProjectName,reqVO.getProjectName())
.like(!StringUtils.isEmpty(reqVO.getCustomerName()),"b.name",reqVO.getCustomerName()) .like(!StringUtils.isEmpty(reqVO.getCustomerName()),"b.name",reqVO.getCustomerName())

View File

@ -330,7 +330,7 @@ public interface TaskDispatchDetailMapper extends BaseMapperX<TaskDispatchDetail
if (reqVO.getSubOrDetailName() != null && !reqVO.getSubOrDetailName().trim().equals("")){ if (reqVO.getSubOrDetailName() != null && !reqVO.getSubOrDetailName().trim().equals("")){
query.and( e ->e.like(ProjectOrderDO::getProjectName, reqVO.getSubOrDetailName()).or().like( query.and( e ->e.like(ProjectOrderDO::getProjectName, reqVO.getSubOrDetailName()).or().like(
ProjectOrderSubDO::getName, reqVO.getSubOrDetailName() ProjectOrderSubDO::getName, reqVO.getSubOrDetailName()
)); ).or().like(ProcessBomDetailDO::getMaterialName, reqVO.getSubOrDetailName()));
// query.eq(" (b.project_name like '%" + reqVO.getSubOrDetailName() + "%' or c.name like '%" + reqVO.getSubOrDetailName() + "%')"); // query.eq(" (b.project_name like '%" + reqVO.getSubOrDetailName() + "%' or c.name like '%" + reqVO.getSubOrDetailName() + "%')");
} }
query.and(wrapper -> { query.and(wrapper -> {

View File

@ -1256,9 +1256,8 @@ public class ProcessBomServiceImpl implements ProcessBomService {
Postponement=1; Postponement=1;
} }
} }
BgMasterLineDO bgMasterLineDO = bgMasterLineMapper.getByDispatchDetail(detailDO.getId()); Long bgMasterLineDO = bgMasterLineMapper.getByDispatchDetail(detailDO.getId());
if (ObjectUtil.isNotEmpty(bgMasterLineDO)){ if (bgMasterLineDO>0){
if (bgMasterLineDO.getIsQua()==1&&("1".equals(bgMasterLineDO.getAuditOpinion())||"3".equals(bgMasterLineDO.getAuditOpinion()))){
flag=3; flag=3;
}else if (Postponement==0){ }else if (Postponement==0){
flag=1; flag=1;
@ -1267,7 +1266,6 @@ public class ProcessBomServiceImpl implements ProcessBomService {
} }
} }
detailDO.setFlag(flag); detailDO.setFlag(flag);
}
}); });
item.setTaskDispatchDetailDOList(detailDOS); item.setTaskDispatchDetailDOList(detailDOS);
}); });

View File

@ -70,15 +70,15 @@
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button> <el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button> <el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
<el-button <!-- <el-button-->
type="success" <!-- type="success"-->
plain <!-- plain-->
@click="handleExport" <!-- @click="handleExport"-->
:loading="exportLoading" <!-- :loading="exportLoading"-->
v-hasPermi="['heli:shenhe:export']" <!-- v-hasPermi="['heli:shenhe:export']"-->
> <!-- >-->
<Icon icon="ep:download" class="mr-5px" /> 导出 <!-- <Icon icon="ep:download" class="mr-5px" /> 导出-->
</el-button> <!-- </el-button>-->
</el-form-item> </el-form-item>
</el-form> </el-form>
</ContentWrap> </ContentWrap>
@ -89,12 +89,12 @@
<el-tab-pane label="加工件" name="first">{{ }}</el-tab-pane> <el-tab-pane label="加工件" name="first">{{ }}</el-tab-pane>
<el-tab-pane label="标准件" name="second">{{ }}</el-tab-pane> <el-tab-pane label="标准件" name="second">{{ }}</el-tab-pane>
</el-tabs> </el-tabs>
<el-table style="height: 500px;" v-loading="loading" :data="list" :show-overflow-tooltip="true" border class="hl-table" :row-class-name="tableRowClassName" :cell-class-name="cellClassName"> <el-table style="height: 500px;" v-loading="loading" :data="list" :show-overflow-tooltip="true" border class="hl-table" :cell-class-name="cellClassName">
<el-table-column type="index" min-width="60" label="序号" align="center" /> <el-table-column type="index" min-width="60" label="序号" align="center" />
<el-table-column label="零件名称" align="center" prop="materialName" min-width="180"/> <el-table-column label="零件名称" align="center" prop="materialName" min-width="180"/>
<el-table-column label="材质" prop="compositionName" min-width="180"/> <el-table-column label="材质" prop="compositionName" min-width="180"/>
<el-table-column label="规格型号" prop="spec" min-width="180"/> <el-table-column label="规格型号" prop="spec" min-width="180"/>
<el-table-column label="数量" prop="amount" min-width="145"/> <el-table-column label="数量" prop="boomAmount" min-width="145"/>
<el-table-column v-if="activeIndex == 'first'" label="下料" min-width="145"> <el-table-column v-if="activeIndex == 'first'" label="下料" min-width="145">
<template #default="{ row }"> <template #default="{ row }">
<template v-for="(item, index) in row.taskDispatchDetailDOList" :key="index"> <template v-for="(item, index) in row.taskDispatchDetailDOList" :key="index">
@ -103,9 +103,9 @@
<div class="first-row"> <div class="first-row">
<span class="left" v-if="!item.reportTime">{{ item.sort }}</span> <span class="left" v-if="!item.reportTime">{{ item.sort }}</span>
<span class="right"> <span class="right">
<img <img
v-if="item.checkYn === 1" v-if="item.checkYn === 0"
src="/src/assets/imgs/checkStatus.png" src="/src/assets/imgs/checkstatusss.png"
class="status-icon" class="status-icon"
/> />
</span> </span>
@ -114,9 +114,9 @@
<div class="second-row"> <div class="second-row">
<span class="left">{{ formatLongToDate(item.reportTime) }}</span> <span class="left">{{ formatLongToDate(item.reportTime) }}</span>
<span class="right"> <span class="right">
<img <img
v-if="item.isOutsourcing === 'Y'" v-if="item.isOutsourcing === 'Y'"
src="/src/assets/imgs/out.png" src="/src/assets/imgs/out.png"
class="status-icon" class="status-icon"
/> />
</span> </span>
@ -136,15 +136,15 @@
</span> </span>
<span> <span>
<!-- isOutsourcing 图片 --> <!-- isOutsourcing 图片 -->
<img <img
v-if="item.isOutsourcing === 'Y'" v-if="item.isOutsourcing === 'Y'"
src="/src/assets/imgs/out.png" src="/src/assets/imgs/out.png"
class="status-icon" class="status-icon"
/> />
<!-- checkYn 图片 --> <!-- checkYn 图片 -->
<img <img
v-if="item.checkYn === 1" v-if="item.checkYn === 0"
src="/src/assets/imgs/checkstatusss.png" src="/src/assets/imgs/checkstatusss.png"
class="status-icon" class="status-icon"
/> />
</span> </span>
@ -168,15 +168,15 @@
</span> </span>
<span> <span>
<!-- isOutsourcing 图片 --> <!-- isOutsourcing 图片 -->
<img <img
v-if="item.isOutsourcing === 'Y'" v-if="item.isOutsourcing === 'Y'"
src="/src/assets/imgs/out.png" src="/src/assets/imgs/out.png"
class="status-icon" class="status-icon"
/> />
<!-- checkYn 图片 --> <!-- checkYn 图片 -->
<img <img
v-if="item.checkYn === 1" v-if="item.checkYn === 0"
src="/src/assets/imgs/checkstatusss.png" src="/src/assets/imgs/checkstatusss.png"
class="status-icon" class="status-icon"
/> />
</span> </span>
@ -200,15 +200,15 @@
</span> </span>
<span> <span>
<!-- isOutsourcing 图片 --> <!-- isOutsourcing 图片 -->
<img <img
v-if="item.isOutsourcing === 'Y'" v-if="item.isOutsourcing === 'Y'"
src="/src/assets/imgs/out.png" src="/src/assets/imgs/out.png"
class="status-icon" class="status-icon"
/> />
<!-- checkYn 图片 --> <!-- checkYn 图片 -->
<img <img
v-if="item.checkYn === 1" v-if="item.checkYn === 0"
src="/src/assets/imgs/checkstatusss.png" src="/src/assets/imgs/checkstatusss.png"
class="status-icon" class="status-icon"
/> />
</span> </span>
@ -232,15 +232,15 @@
</span> </span>
<span> <span>
<!-- isOutsourcing 图片 --> <!-- isOutsourcing 图片 -->
<img <img
v-if="item.isOutsourcing === 'Y'" v-if="item.isOutsourcing === 'Y'"
src="/src/assets/imgs/out.png" src="/src/assets/imgs/out.png"
class="status-icon" class="status-icon"
/> />
<!-- checkYn 图片 --> <!-- checkYn 图片 -->
<img <img
v-if="item.checkYn === 1" v-if="item.checkYn === 0"
src="/src/assets/imgs/checkstatusss.png" src="/src/assets/imgs/checkstatusss.png"
class="status-icon" class="status-icon"
/> />
</span> </span>
@ -264,15 +264,15 @@
</span> </span>
<span> <span>
<!-- isOutsourcing 图片 --> <!-- isOutsourcing 图片 -->
<img <img
v-if="item.isOutsourcing === 'Y'" v-if="item.isOutsourcing === 'Y'"
src="/src/assets/imgs/out.png" src="/src/assets/imgs/out.png"
class="status-icon" class="status-icon"
/> />
<!-- checkYn 图片 --> <!-- checkYn 图片 -->
<img <img
v-if="item.checkYn === 1" v-if="item.checkYn === 0"
src="/src/assets/imgs/checkstatusss.png" src="/src/assets/imgs/checkstatusss.png"
class="status-icon" class="status-icon"
/> />
</span> </span>
@ -296,15 +296,15 @@
</span> </span>
<span> <span>
<!-- isOutsourcing 图片 --> <!-- isOutsourcing 图片 -->
<img <img
v-if="item.isOutsourcing === 'Y'" v-if="item.isOutsourcing === 'Y'"
src="/src/assets/imgs/out.png" src="/src/assets/imgs/out.png"
class="status-icon" class="status-icon"
/> />
<!-- checkYn 图片 --> <!-- checkYn 图片 -->
<img <img
v-if="item.checkYn === 1" v-if="item.checkYn === 0"
src="/src/assets/imgs/checkstatusss.png" src="/src/assets/imgs/checkstatusss.png"
class="status-icon" class="status-icon"
/> />
</span> </span>
@ -328,15 +328,15 @@
</span> </span>
<span> <span>
<!-- isOutsourcing 图片 --> <!-- isOutsourcing 图片 -->
<img <img
v-if="item.isOutsourcing === 'Y'" v-if="item.isOutsourcing === 'Y'"
src="/src/assets/imgs/out.png" src="/src/assets/imgs/out.png"
class="status-icon" class="status-icon"
/> />
<!-- checkYn 图片 --> <!-- checkYn 图片 -->
<img <img
v-if="item.checkYn === 1" v-if="item.checkYn === 0"
src="/src/assets/imgs/checkstatusss.png" src="/src/assets/imgs/checkstatusss.png"
class="status-icon" class="status-icon"
/> />
</span> </span>
@ -360,15 +360,15 @@
</span> </span>
<span> <span>
<!-- isOutsourcing 图片 --> <!-- isOutsourcing 图片 -->
<img <img
v-if="item.isOutsourcing === 'Y'" v-if="item.isOutsourcing === 'Y'"
src="/src/assets/imgs/out.png" src="/src/assets/imgs/out.png"
class="status-icon" class="status-icon"
/> />
<!-- checkYn 图片 --> <!-- checkYn 图片 -->
<img <img
v-if="item.checkYn === 1" v-if="item.checkYn === 0"
src="/src/assets/imgs/checkstatusss.png" src="/src/assets/imgs/checkstatusss.png"
class="status-icon" class="status-icon"
/> />
</span> </span>
@ -392,15 +392,15 @@
</span> </span>
<span> <span>
<!-- isOutsourcing 图片 --> <!-- isOutsourcing 图片 -->
<img <img
v-if="item.isOutsourcing === 'Y'" v-if="item.isOutsourcing === 'Y'"
src="/src/assets/imgs/out.png" src="/src/assets/imgs/out.png"
class="status-icon" class="status-icon"
/> />
<!-- checkYn 图片 --> <!-- checkYn 图片 -->
<img <img
v-if="item.checkYn === 1" v-if="item.checkYn === 0"
src="/src/assets/imgs/checkstatusss.png" src="/src/assets/imgs/checkstatusss.png"
class="status-icon" class="status-icon"
/> />
</span> </span>
@ -424,15 +424,15 @@
</span> </span>
<span> <span>
<!-- isOutsourcing 图片 --> <!-- isOutsourcing 图片 -->
<img <img
v-if="item.isOutsourcing === 'Y'" v-if="item.isOutsourcing === 'Y'"
src="/src/assets/imgs/out.png" src="/src/assets/imgs/out.png"
class="status-icon" class="status-icon"
/> />
<!-- checkYn 图片 --> <!-- checkYn 图片 -->
<img <img
v-if="item.checkYn === 1" v-if="item.checkYn === 0"
src="/src/assets/imgs/checkstatusss.png" src="/src/assets/imgs/checkstatusss.png"
class="status-icon" class="status-icon"
/> />
</span> </span>
@ -456,15 +456,15 @@
</span> </span>
<span> <span>
<!-- isOutsourcing 图片 --> <!-- isOutsourcing 图片 -->
<img <img
v-if="item.isOutsourcing === 'Y'" v-if="item.isOutsourcing === 'Y'"
src="/src/assets/imgs/out.png" src="/src/assets/imgs/out.png"
class="status-icon" class="status-icon"
/> />
<!-- checkYn 图片 --> <!-- checkYn 图片 -->
<img <img
v-if="item.checkYn === 1" v-if="item.checkYn === 0"
src="/src/assets/imgs/checkstatusss.png" src="/src/assets/imgs/checkstatusss.png"
class="status-icon" class="status-icon"
/> />
</span> </span>
@ -488,15 +488,15 @@
</span> </span>
<span> <span>
<!-- isOutsourcing 图片 --> <!-- isOutsourcing 图片 -->
<img <img
v-if="item.isOutsourcing === 'Y'" v-if="item.isOutsourcing === 'Y'"
src="/src/assets/imgs/out.png" src="/src/assets/imgs/out.png"
class="status-icon" class="status-icon"
/> />
<!-- checkYn 图片 --> <!-- checkYn 图片 -->
<img <img
v-if="item.checkYn === 1" v-if="item.checkYn === 0"
src="/src/assets/imgs/checkstatusss.png" src="/src/assets/imgs/checkstatusss.png"
class="status-icon" class="status-icon"
/> />
</span> </span>
@ -520,15 +520,15 @@
</span> </span>
<span> <span>
<!-- isOutsourcing 图片 --> <!-- isOutsourcing 图片 -->
<img <img
v-if="item.isOutsourcing === 'Y'" v-if="item.isOutsourcing === 'Y'"
src="/src/assets/imgs/out.png" src="/src/assets/imgs/out.png"
class="status-icon" class="status-icon"
/> />
<!-- checkYn 图片 --> <!-- checkYn 图片 -->
<img <img
v-if="item.checkYn === 1" v-if="item.checkYn === 0"
src="/src/assets/imgs/checkstatusss.png" src="/src/assets/imgs/checkstatusss.png"
class="status-icon" class="status-icon"
/> />
</span> </span>
@ -552,15 +552,15 @@
</span> </span>
<span> <span>
<!-- isOutsourcing 图片 --> <!-- isOutsourcing 图片 -->
<img <img
v-if="item.isOutsourcing === 'Y'" v-if="item.isOutsourcing === 'Y'"
src="/src/assets/imgs/out.png" src="/src/assets/imgs/out.png"
class="status-icon" class="status-icon"
/> />
<!-- checkYn 图片 --> <!-- checkYn 图片 -->
<img <img
v-if="item.checkYn === 1" v-if="item.checkYn === 0"
src="/src/assets/imgs/checkstatusss.png" src="/src/assets/imgs/checkstatusss.png"
class="status-icon" class="status-icon"
/> />
</span> </span>
@ -584,15 +584,15 @@
</span> </span>
<span> <span>
<!-- isOutsourcing 图片 --> <!-- isOutsourcing 图片 -->
<img <img
v-if="item.isOutsourcing === 'Y'" v-if="item.isOutsourcing === 'Y'"
src="/src/assets/imgs/out.png" src="/src/assets/imgs/out.png"
class="status-icon" class="status-icon"
/> />
<!-- checkYn 图片 --> <!-- checkYn 图片 -->
<img <img
v-if="item.checkYn === 1" v-if="item.checkYn === 0"
src="/src/assets/imgs/checkstatusss.png" src="/src/assets/imgs/checkstatusss.png"
class="status-icon" class="status-icon"
/> />
</span> </span>
@ -605,10 +605,10 @@
</template> </template>
</template> </template>
</el-table-column> </el-table-column>
<!--标准件--> <!--标准件-->
<!--加工件--> <!--加工件-->
<el-table-column v-if="activeIndex == 'second'" label="物料需求计划" align="center" prop="planBoomExists" min-width="180"> <el-table-column v-if="activeIndex == 'second'" label="物料需求计划" align="center" prop="planBoomExists" min-width="180">
<template #default="{ row }"> <template #default="{ row }">
{{ row.planBoomExists ?(row.planBoomExists== 1?'✔':''):''}} {{ row.planBoomExists ?(row.planBoomExists== 1?'✔':''):''}}
@ -726,32 +726,19 @@ const formatLongToDate = (longTimestamp) => {
return ''; return '';
} }
const date = new Date(longTimestamp); const date = new Date(longTimestamp);
const year = date.getFullYear(); // const year = date.getFullYear();
const year = String(date.getFullYear()).slice(-2);
const month = String(date.getMonth() + 1).padStart(2, '0'); // 0 const month = String(date.getMonth() + 1).padStart(2, '0'); // 0
const day = String(date.getDate()).padStart(2, '0'); const day = String(date.getDate()).padStart(2, '0');
return `${year}-${month}-${day}`; return `${year}-${month}-${day}`;
} }
const tableRowClassName = ({ row }) => {
var endTime = new Date(row.endTime);
// Date
var currentTime = new Date();
// endTime currentTime
endTime.setHours(0, 0, 0, 0);
currentTime.setHours(0, 0, 0, 0);
if (row.wgType!=2&&endTime < currentTime){
return 'warning-row';
}else {
return ''
}
}
const cellClassName = ({ row,column }) => { const cellClassName = ({ row,column }) => {
if(row.taskDispatchDetailDOList){ if(row.taskDispatchDetailDOList){
for(var i = 0 ;i < row.taskDispatchDetailDOList.length ; i++){ for(var i = 0 ;i < row.taskDispatchDetailDOList.length ; i++){
var item = row.taskDispatchDetailDOList[i]; var item = row.taskDispatchDetailDOList[i];
if (item.procedureName == column.label && item.flag === 1) { if (item.procedureName == column.label && item.flag === 1) {
return 'green-cell' return 'green-cell'
}; };
@ -801,7 +788,7 @@ const handleExport = async () => {
onMounted(async () => { onMounted(async () => {
loading.value = true loading.value = true
await getList() await getList()
userList.value = await UserApi.getSimpleUserList() userList.value = await UserApi.getSimpleUserList()
}) })
</script> </script>
@ -814,7 +801,7 @@ onMounted(async () => {
background-color: #e6f7e6 !important; background-color: #e6f7e6 !important;
} }
.yellow-cell { .yellow-cell {
background-color: #fffbe6 !important; background-color: #fffbe6 !important;
} }
.red-cell { .red-cell {
background-color: #fff1f0 !important; background-color: #fff1f0 !important;
@ -824,14 +811,14 @@ onMounted(async () => {
flex-direction: column; flex-direction: column;
width: 100%; width: 100%;
} }
.first-row, .second-row { .first-row, .second-row {
display: flex; display: flex;
justify-content: flex-start; justify-content: flex-start;
width: 100%; width: 100%;
margin-bottom: 4px; /* 增加行间距 */ margin-bottom: 4px; /* 增加行间距 */
} }
.status-icon { .status-icon {
width: 35px; /* 增大图片宽度 */ width: 35px; /* 增大图片宽度 */
height: 35px; /* 增大图片高度 */ height: 35px; /* 增大图片高度 */

View File

@ -0,0 +1,169 @@
<template>
<el-card class="hl-card">
<template #header>
<span>库存变动日志</span>
</template>
<ContentWrap class="borderxx">
<!-- 搜索工作栏 -->
<el-form class="-mb-15px" :model="queryParams" ref="queryFormRef" :inline="true" label-width="120px">
<el-form-item label="物料编码" prop="matCode">
<el-input v-model="queryParams.matCode" placeholder="物料编码" clearable @keyup.enter="handleQuery" class="!w-240px" />
</el-form-item>
<el-form-item label="物料名称" prop="matName">
<el-input v-model="queryParams.matName" placeholder="物料名称" clearable @keyup.enter="handleQuery" class="!w-240px" />
</el-form-item>
<el-form-item label="物料类型" prop="matType">
<el-select v-model="queryParams.matType" placeholder="下拉选择" clearable class="!w-240px">
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.HELI_MATERIAL_TYPE)" :key="dict.label" :label="dict.label" :value="dict.label" />
</el-select>
</el-form-item>
<el-form-item label="仓库" prop="whId">
<el-select v-model="queryParams.whId" placeholder="下拉选择" clearable class="!w-240px">
<el-option v-for="dict in whList" :key="dict.id" :label="dict.wh_name" :value="dict.id" />
</el-select>
</el-form-item>
<el-form-item label="批次号" prop="lotNo" v-if="false">
<el-input v-model="queryParams.lotNo" placeholder="批次号" clearable @keyup.enter="handleQuery" class="!w-240px" />
</el-form-item>
<el-form-item label="业务单据编号" prop="stockNo">
<el-input v-model="queryParams.stockNo" placeholder="业务单据编号" clearable @keyup.enter="handleQuery" class="!w-240px" />
</el-form-item>
<el-form-item label="变动方向" prop="stockType">
<el-select v-model="queryParams.stockType" placeholder="下拉选择" clearable class="!w-240px">
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.HELI_STORAGE_TYPE)" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="上游单据编号" prop="headerNo">
<el-input v-model="queryParams.headerNo" placeholder="上游单据编号" clearable @keyup.enter="handleQuery" class="!w-240px" />
</el-form-item>
<el-form-item>
<el-button @click="handleQuery" type="primary">
<Icon icon="ep:search" class="mr-5px" /> 搜索
</el-button>
<el-button @click="resetQuery">
<Icon icon="ep:refresh" class="mr-5px" /> 重置
</el-button>
</el-form-item>
</el-form>
</ContentWrap>
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list" :show-overflow-tooltip="true" class="hl-table">
<el-table-column type="index" width="100" fixed label="序号" align="center" />
<el-table-column label="物料编码" align="center" prop="matCode" min-width="120" fixed />
<el-table-column label="物料名称" align="center" prop="matName" min-width="120" fixed />
<el-table-column label="物料类型" align="center" prop="matType" min-width="120" />
<el-table-column label="物料简称" align="center" prop="shortName" min-width="120" />
<el-table-column label="规格/型号" align="center" prop="matSpec" min-width="120" />
<el-table-column label="品牌" align="center" prop="matBrand" min-width="120" />
<el-table-column label="业务单据编号" align="center" prop="stockNo" min-width="180" />
<el-table-column label="业务单据类型" align="center" prop="stockTypeName" min-width="120" />
<el-table-column label="上游单据编号" align="center" prop="headerNo" min-width="120" />
<el-table-column label="仓库" align="center" prop="whName" min-width="120" />
<el-table-column label="库区" align="center" prop="rgName" min-width="120" />
<el-table-column label="库位" align="center" prop="pnName" min-width="140" />
<el-table-column label="批次号" align="center" prop="lotNo" min-width="120" v-if="false" />
<el-table-column label="变动数量" align="center" prop="storageOkQty" fixed="right" min-width="120">
<template #default="scope">
<span v-if="scope.row.storageOkQty<0" style="color:#EC808D;">
{{scope.row.storageOkQty}}
</span>
<span v-else-if="scope.row.storageOkQty>0" style="color:#63A103;">
+{{scope.row.storageOkQty}}
</span>
<span v-else>
{{scope.row.storageOkQty}}
</span>
</template>
</el-table-column>
<el-table-column label="库存单位" align="center" prop="matUnit" fixed="right" min-width="120" />
</el-table>
<!-- 分页 -->
<Pagination :total="total" v-model:page="queryParams.pageNo" v-model:limit="queryParams.pageSize" @pagination="getList" />
</ContentWrap>
</el-card>
</template>
<script setup lang="ts">
import download from '@/utils/download'
import * as StorageLogApi from '@/api/heli/storagelog'
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
import * as WarehouseApi from '@/api/heli/warehouse'
// import * as RgApi from '@/api/heli/rg'
// import * as PnApi from '@/api/heli/pn'
defineOptions({ name: 'StorageLog' })
const whList = ref([])
// const rgList = ref([])
// const pnList = ref([])
const message = useMessage() //
const { t } = useI18n() //
const loading = ref(true) //
const list = ref([]) //
const total = ref(0) //
const queryParams = reactive({
pageNo: 1,
pageSize: 10,
matCode: undefined,
matName: undefined,
matType: undefined,
whId:undefined,
lotNo: undefined,
pnId: undefined,
stockNo: undefined,
stockType: undefined,
headerNo: undefined
})
const queryFormRef = ref() //
/** 查询列表 */
const getList = async () => {
loading.value = true
try {
const data = await StorageLogApi.getStorageLogPage(queryParams)
list.value = data.list
total.value = data.total
} finally {
loading.value = false
}
}
/** 搜索按钮操作 */
const handleQuery = () => {
queryParams.pageNo = 1
getList()
}
/** 重置按钮操作 */
const resetQuery = () => {
queryFormRef.value.resetFields()
handleQuery()
}
//
const init_page_wh = (async ()=>{
whList.value = await WarehouseApi.getSimpList()
})
// //
// const init_page_rg = (async ()=>{
// rgList.value = await RgApi.getSimpList()
// })
// //
// const init_page_pn = (async ()=>{
// pnList.value = await PnApi.getSimpList()
// })
/** 初始化 **/
onMounted(async () => {
await init_page_wh()
// await init_page_rg()
// await init_page_pn()
await getList()
})
</script>