Compare commits

...

3 Commits

Author SHA1 Message Date
96b49e71f4 feat(KLPService选择组件): 新增默认查询参数支持并优化钢卷录入页面
1. 为ProductSelect和RawMaterialSelect组件新增defaultQueryParams属性,支持传入默认查询参数合并到请求参数中
2. 优化钢卷录入页面:默认选中成品类型,根据解析的钢卷数据自动设置物料选择器的查询参数
3. 移除页面冗余空行和注释代码
2026-05-21 13:38:35 +08:00
75954a3a9c Merge branch '0.8.X' of http://49.232.154.205:10100/DeXun/klp-oa into 0.8.X 2026-05-21 13:38:03 +08:00
1cbc8da78c fix(wms): 调整退火绩效和异常报表默认查询时间为昨日到今日
统一两个报表页面的默认查询时间范围,将初始默认时间改为昨日00:00:00到当日00:00:00,简化了异常报表的时间处理逻辑,移除冗余的日期范围工具函数。
2026-05-21 13:37:58 +08:00
5 changed files with 68 additions and 74 deletions

View File

@@ -163,6 +163,10 @@ export default {
filters: {
type: Object,
default: () => ({})
},
defaultQueryParams: {
type: Object,
default: () => ({})
}
},
data() {
@@ -235,6 +239,9 @@ export default {
this.getList();
this.listRecentlySelected();
}
},
defaultQueryParams(val) {
this.queryParams = { ...this.queryParams, ...val };
}
},
methods: {

View File

@@ -151,6 +151,10 @@ export default {
filters: {
type: Object,
default: () => ({})
},
defaultQueryParams: {
type: Object,
default: () => ({})
}
},
data() {
@@ -234,6 +238,9 @@ export default {
this.listRecentlySelected();
this.getList();
}
},
defaultQueryParams(val) {
this.queryParams = { ...this.queryParams, ...val };
}
},
methods: {

View File

@@ -1,13 +1,10 @@
<template>
<div class="app-container" v-loading="loading">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="90px">
<el-form-item label="开始时间" prop="startTime">
<el-date-picker v-model="queryParams.startTime" type="datetime" value-format="yyyy-MM-dd HH:mm:ss"
placeholder="选择开始时间" />
</el-form-item>
<el-form-item label="结束时间" prop="endTime">
<el-date-picker v-model="queryParams.endTime" type="datetime" value-format="yyyy-MM-dd HH:mm:ss"
placeholder="选择结束时间" />
<el-form-item label="时间">
<time-range-picker v-model="timeRangeParams" start-key="startTime" end-key="endTime"
:default-start-time="queryParams.startTime" :default-end-time="queryParams.endTime"
@quick-select="handleQuery" />
</el-form-item>
<el-form-item label="目标炉" prop="targetFurnaceId">
<el-select v-model="queryParams.targetFurnaceId" placeholder="请选择" clearable filterable>
@@ -74,15 +71,35 @@ import ProductInfo from "@/components/KLPService/Renderer/ProductInfo";
import RawMaterialInfo from "@/components/KLPService/Renderer/RawMaterialInfo";
import CoilNo from "@/components/KLPService/Renderer/CoilNo.vue";
import WarehouseSelect from "@/components/KLPService/WarehouseSelect/index.vue";
import TimeRangePicker from "@/views/wms/report/components/timeRangePicker.vue";
export default {
name: "AnnealPerformance",
components: {
ProductInfo,
RawMaterialInfo,
CoilNo,
WarehouseSelect,
TimeRangePicker,
},
data() {
const startTime = (() => {
const d = new Date(); d.setDate(d.getDate() - 1);
return `${d.getFullYear()}-${String(d.getMonth()+1).padStart(2,'0')}-${String(d.getDate()).padStart(2,'0')} 00:00:00`;
})()
const endTime = (() => {
const d = new Date();
return `${d.getFullYear()}-${String(d.getMonth()+1).padStart(2,'0')}-${String(d.getDate()).padStart(2,'0')} 00:00:00`;
})()
return {
loading: false,
timeRangeParams: {
startTime,
endTime,
},
queryParams: {
startTime: undefined,
endTime: undefined,
startTime,
endTime,
targetFurnaceId: undefined,
planNo: undefined,
enterCoilNo: undefined,
@@ -92,11 +109,15 @@ export default {
furnaceOptions: [],
};
},
components: {
ProductInfo,
RawMaterialInfo,
CoilNo,
WarehouseSelect,
watch: {
timeRangeParams: {
handler(newVal) {
this.queryParams.startTime = newVal.startTime
this.queryParams.endTime = newVal.endTime
},
deep: true,
immediate: true
}
},
created() {
this.loadFurnaces();

View File

@@ -1,16 +1,5 @@
<template>
<div class="typing-coil-container">
<!-- 顶部操作栏 -->
<!-- <div class="header-bar">
<div class="header-title">
<i class="el-icon-edit"></i>
<span>钢卷信息更新</span>
</div>
<div class="header-actions">
</div>
</div> -->
<div>
<CoilInfoRender title="原料信息" :coilInfo="currentInfo" border>
<template slot="extra">
@@ -65,8 +54,6 @@
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="材料类型" prop="materialType">
@@ -80,9 +67,11 @@
<el-col :span="8">
<el-form-item :label="getItemLabel" prop="itemId" :rules="rules.itemId">
<RawMaterialSelect v-if="updateForm.materialType === '原料'" v-model="updateForm.itemId"
placeholder="请选择原料" style="width: 100%" clearable :disabled="!updateForm.materialType" />
placeholder="请选择原料" style="width: 100%" clearable :disabled="!updateForm.materialType"
:default-query-params="itemSelectorQueryParams" />
<ProductSelect v-else-if="updateForm.materialType === '成品'" v-model="updateForm.itemId"
placeholder="请选择成品" style="width: 100%" clearable :disabled="!updateForm.materialType" />
placeholder="请选择成品" style="width: 100%" clearable :disabled="!updateForm.materialType"
:default-query-params="itemSelectorQueryParams" />
<div v-else>请先选择物料类型</div>
</el-form-item>
</el-col>
@@ -371,8 +360,8 @@ export default {
updateForm: {
currentCoilNo: '',
team: '',
materialType: null,
itemType: null,
materialType: '成品',
itemType: 'product',
itemId: null,
grossWeight: undefined,
netWeight: undefined,
@@ -460,6 +449,7 @@ export default {
cacheDialogVisible: false,
currentCache: null,
parsedCacheData: null,
itemSelectorQueryParams: {},
};
},
computed: {
@@ -567,6 +557,14 @@ export default {
}
if (data.exit_thick != null) this.$set(this.updateForm, 'actualThickness', parseFloat(data.exit_thick))
if (data.exit_width != null) this.$set(this.updateForm, 'actualWidth', parseFloat(data.exit_width))
const query = {
specification: data.exit_thick ? `${data.exit_thick}*${data.exit_width}` : '',
material: data.grade,
}
this.itemSelectorQueryParams = query
// 包装要求
if (data.park_type != null && data.park_type !== '') {
this.$set(this.updateForm, 'packagingRequirement', data.park_type)
@@ -633,7 +631,6 @@ export default {
}
},
// 复制当前信息到更新表单
copyFromCurrent() {
// 复制除了指定字段之外的其他字段

View File

@@ -155,52 +155,14 @@ export default {
},
dicts: ['product_coil_status', 'coil_material', 'coil_itemname', 'coil_manufacturer', 'coil_quality_status'],
data() {
// 工具函数:个位数补零
const addZero = (num) => num.toString().padStart(2, '0')
// 获取当前日期(默认选中当天)
const now = new Date()
const currentDate = `${now.getFullYear()}-${addZero(now.getMonth() + 1)}`
const yesterday = new Date(now)
yesterday.setDate(yesterday.getDate() - 1)
/**
* 生成指定日期/月份的时间范围字符串
* @param {string} dateStr - 支持格式yyyy-MM月份 或 yyyy-MM-dd具体日期
* @returns {object} 包含start开始时间和end结束时间的对象
*/
const getDayTimeRange = (dateStr) => {
// 先校验输入格式是否合法
const monthPattern = /^\d{4}-\d{2}$/; // yyyy-MM 正则
const dayPattern = /^\d{4}-\d{2}-\d{2}$/; // yyyy-MM-dd 正则
if (!monthPattern.test(dateStr) && !dayPattern.test(dateStr)) {
throw new Error('输入格式错误,请传入 yyyy-MM 或 yyyy-MM-dd 格式的字符串');
}
let startDate, endDate;
if (monthPattern.test(dateStr)) {
// 处理 yyyy-MM 格式:获取本月第一天和最后一天
const [year, month] = dateStr.split('-').map(Number);
// 月份是0基的0=1月1=2月...所以要减1
// 第一天yyyy-MM-01
startDate = `${dateStr}-01`;
// 最后一天:通过 new Date(year, month, 0) 计算month是原始月份比如2代表2月传2则取3月0日=2月最后一天
const lastDayOfMonth = new Date(year, month, 0).getDate();
endDate = `${dateStr}-${lastDayOfMonth.toString().padStart(2, '0')}`;
} else {
// 处理 yyyy-MM-dd 格式:直接使用传入的日期
startDate = dateStr;
endDate = dateStr;
}
// 拼接时间部分
return {
start: `${startDate} 00:00:00`,
end: `${endDate} 23:59:59`
};
};
const { start, end } = getDayTimeRange(currentDate)
const start = `${yesterday.getFullYear()}-${addZero(yesterday.getMonth() + 1)}-${addZero(yesterday.getDate())} 00:00:00`
const end = `${now.getFullYear()}-${addZero(now.getMonth() + 1)}-${addZero(now.getDate())} 00:00:00`
return {
lossList: [],
outList: [],