产值管理

This commit is contained in:
Teo
2025-08-02 15:31:28 +08:00
parent 4a5856f614
commit fbf9424960
13 changed files with 1646 additions and 34 deletions

View File

@ -56,17 +56,21 @@
<el-col :lg="4" :xs="24" style="">
<el-card shadow="hover">
<template #header>
<el-button type="primary" size="default" @click="addBatch" icon="FolderAdd" plain>新增</el-button>
<el-button type="danger" size="default" @click="" icon="FolderDelete" plain>删除</el-button>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5" :offset="0"
><el-button type="primary" size="default" @click="addBatch" icon="FolderAdd" plain>新增</el-button></el-col
>
<el-col :span="1.5" :offset="0"><el-button type="danger" size="default" @click="" icon="FolderDelete" plain>删除</el-button></el-col>
</el-row>
</template>
<el-input v-model="batchId" placeholder="请输入批次号" prefix-icon="Search" clearable />
<el-input v-model="batchId" placeholder="请输入批次号" @input="getBatchList" prefix-icon="Search" clearable />
<el-tree
ref="batchTreeRef"
class="mt-2"
node-key="id"
:data="batchOptions"
:props="{ label: 'label', children: 'children' }"
:props="{ label: 'batchNumber', children: 'children' }"
:expand-on-click-node="false"
highlight-current
default-expand-all
@ -114,20 +118,18 @@
<el-table v-loading="loading" :data="cailiaoshebeiList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="主键ID" align="center" prop="id" v-if="true" />
<el-table-column label="批次ID" align="center" prop="batchId" />
<el-table-column label="供货商ID" align="center" prop="supplierId" />
<!-- <el-table-column label="供货商ID" align="center" prop="supplierId" /> -->
<el-table-column label="供货商" align="center" prop="supplier" />
<el-table-column label="设备材料名称" align="center" prop="name" />
<el-table-column label="供货来源(字典)" align="center" prop="supply">
<el-table-column label="供货来源" align="center" prop="supply">
<template #default="scope">
<dict-tag :options="supply" :value="scope.row.supply" />
</template>
</el-table-column>
<el-table-column label="规格型号" align="center" prop="specification" />
<el-table-column label="特征描述" align="center" prop="signalment" />
<el-table-column label="物料编码" align="center" prop="materialCode" />
<el-table-column label="计划到场时间" align="center" prop="arrivalTime" width="180">
<el-table-column label="物料编码" align="center" prop="materialCode" width="200" />
<!-- <el-table-column label="计划到场时间" align="center" prop="arrivalTime" width="180">
<template #default="scope">
<span>{{ parseTime(scope.row.arrivalTime, '{y}-{m}-{d}') }}</span>
</template>
@ -136,7 +138,7 @@
<template #default="scope">
<span>{{ parseTime(scope.row.finishTime, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
</el-table-column> -->
<el-table-column label="计量单位" align="center" prop="unit" />
<el-table-column label="计划数量" align="center" prop="plan" />
<el-table-column label="实际数量" align="center" prop="realQuantity" />
@ -180,7 +182,7 @@
<el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
<el-form ref="cailiaoshebeiFormRef" :model="form" :rules="rules" label-width="110px">
<el-form-item label="批次ID" prop="batchId">
<el-input v-model="form.batchId" placeholder="请输入批次ID" />
<el-input v-model="form.batchId" placeholder="请输入批次ID" disabled />
</el-form-item>
<el-form-item label="供货商ID" prop="supplierId">
<el-input v-model="form.supplierId" placeholder="请输入供货商ID" />
@ -191,8 +193,10 @@
<el-form-item label="设备材料名称" prop="name">
<el-input v-model="form.name" placeholder="请输入设备材料名称" />
</el-form-item>
<el-form-item label="供货来源(字典)" prop="supply">
<el-input v-model="form.supply" placeholder="请输入供货来源(字典)" />
<el-form-item label="供货来源" prop="supply">
<el-select v-model="form.supply" value-key="value" placeholder="请选择供货来源" clearable filterable @change="">
<el-option v-for="item in supply" :key="item.value" :label="item.label" :value="item.value"> </el-option>
</el-select>
</el-form-item>
<el-form-item label="规格型号" prop="specification">
<el-input v-model="form.specification" placeholder="请输入规格型号" />
@ -203,23 +207,23 @@
<el-form-item label="物料编码" prop="materialCode">
<el-input v-model="form.materialCode" placeholder="请输入物料编码" />
</el-form-item>
<el-form-item label="计划到场时间" prop="arrivalTime">
<!-- <el-form-item label="计划到场时间" prop="arrivalTime">
<el-date-picker clearable v-model="form.arrivalTime" type="datetime" value-format="YYYY-MM-DD HH:mm:ss" placeholder="请选择计划到场时间">
</el-date-picker>
</el-form-item>
<el-form-item label="计划完成时间" prop="finishTime">
<el-date-picker clearable v-model="form.finishTime" type="datetime" value-format="YYYY-MM-DD HH:mm:ss" placeholder="请选择计划完成时间">
</el-date-picker>
</el-form-item>
</el-form-item> -->
<el-form-item label="计量单位" prop="unit">
<el-input v-model="form.unit" placeholder="请输入计量单位" />
</el-form-item>
<el-form-item label="计划数量" prop="plan">
<el-input v-model="form.plan" placeholder="请输入计划数量" />
</el-form-item>
<el-form-item label="实际数量" prop="realQuantity">
<!-- <el-form-item label="实际数量" prop="realQuantity">
<el-input v-model="form.realQuantity" placeholder="请输入实际数量" />
</el-form-item>
</el-form-item> -->
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
</el-form-item>
@ -321,12 +325,6 @@ const { queryParams, form, rules } = toRefs(data);
/** 查询物资-材料设备列表 */
const getList = async () => {
const batchRes = await listBatch({
pageNum: 1,
pageSize: 1000,
projectId: currentProject.value.id
});
loading.value = true;
const res = await listCailiaoshebei(queryParams.value);
cailiaoshebeiList.value = res.rows;
@ -334,13 +332,34 @@ const getList = async () => {
loading.value = false;
};
//查询批次列表
const getBatchList = async () => {
const res = await listBatch({
pageNum: 1,
pageSize: 1000,
projectId: currentProject.value.id,
batchNumber: batchId.value
});
batchOptions.value = res.rows;
try {
queryParams.value.batchId = res.rows[0].id;
form.value.batchId = res.rows[0].id;
} catch (error) {
queryParams.value.batchId = '';
form.value.batchId = '';
}
getList();
};
/** 节点单击事件 */
const handleNodeClick = (data: any) => {
queryParams.value.batchId = data.id;
form.value.batchId = data.id;
console.log('🚀 ~ handleNodeClick ~ form.value:', form.value);
if (data.id === '0') {
queryParams.value.batchId = '';
}
handleQuery();
getList();
};
/** 取消按钮 */
@ -351,7 +370,8 @@ const cancel = () => {
/** 表单重置 */
const reset = () => {
form.value = { ...initFormData };
const preservedBatchId = form.value.batchId; // 先保存当前的 batchId
form.value = { ...initFormData, batchId: preservedBatchId }; // 重置但保留
cailiaoshebeiFormRef.value?.resetFields();
};
@ -393,6 +413,7 @@ const handleUpdate = async (row?: CailiaoshebeiVO) => {
/** 提交按钮 */
const submitForm = () => {
console.log('🚀 ~ submitForm ~ form.value:', form.value);
cailiaoshebeiFormRef.value?.validate(async (valid: boolean) => {
if (valid) {
buttonLoading.value = true;
@ -440,6 +461,6 @@ const handleExport = () => {
};
onMounted(() => {
getList();
getBatchList();
});
</script>