材料管理 变更清单
This commit is contained in:
@ -30,40 +30,42 @@
|
||||
<el-card shadow="never">
|
||||
<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="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">
|
||||
<template #default="scope">
|
||||
<dict-tag :options="supply" :value="scope.row.supply" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="设备材料名称" align="center" prop="name" width="110" />
|
||||
<el-table-column label="规格型号" align="center" prop="specification" />
|
||||
<el-table-column label="特征描述" align="center" prop="signalment" />
|
||||
<el-table-column label="需求数量" align="center" prop="demandQuantity" />
|
||||
<el-table-column label="物料编码" align="center" prop="materialCode" width="200" />
|
||||
<el-table-column label="计量单位" align="center" prop="unit" />
|
||||
<el-table-column label="计划数量" align="center" prop="plan" />
|
||||
<el-table-column label="备注" align="center" prop="remark" />
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
<el-table-column label="计划到场时间" align="center" prop="arrivalTime" width="110" />
|
||||
<el-table-column label="订货数量" align="center" prop="orderQuantity" />
|
||||
<el-table-column label="预计到货时间" align="center" prop="expectedArrival" width="110" />
|
||||
<el-table-column label="预计生产完成时间" align="center" prop="productionTime" width="130" />
|
||||
<el-table-column label="验收数量" align="center" prop="acceptanceQuantity" />
|
||||
<el-table-column label="实际到货时间" align="center" prop="actualArrival" width="110" />
|
||||
<el-table-column label="需求提交时间" align="center" prop="requiredTime" width="110" />
|
||||
<el-table-column label="订货时间" align="center" prop="orderTime" width="110" />
|
||||
<el-table-column label="验收时间" align="center" prop="receptionTime" width="110" />
|
||||
<el-table-column label="物资执行状态" align="center" prop="materialStatus" width="110">
|
||||
<template #default="scope">
|
||||
<el-tooltip content="修改" placement="top">
|
||||
<el-button
|
||||
link
|
||||
type="primary"
|
||||
icon="Edit"
|
||||
@click="handleUpdate(scope.row)"
|
||||
v-hasPermi="['cailiaoshebei:cailiaoshebei:edit']"
|
||||
></el-button>
|
||||
</el-tooltip>
|
||||
<el-tooltip content="删除" placement="top">
|
||||
<el-button
|
||||
link
|
||||
type="primary"
|
||||
icon="Delete"
|
||||
@click="handleDelete(scope.row)"
|
||||
v-hasPermi="['cailiaoshebei:cailiaoshebei:remove']"
|
||||
></el-button>
|
||||
</el-tooltip>
|
||||
<dict-tag :options="material_status" :value="scope.row.materialStatus" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="物资逾期类型" align="center" prop="overdueType" width="110">
|
||||
<template #default="scope">
|
||||
<dict-tag :options="overdue_type" :value="scope.row.overdueType" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="逾期原因" align="center" prop="cause" />
|
||||
<el-table-column label="签收单据" align="center" prop="signature" />
|
||||
<el-table-column label="退货单据" align="center" prop="returnedSalesReport" />
|
||||
<el-table-column label="备注" align="center" prop="remark" />
|
||||
<el-table-column label="操作" align="center" width="150" fixed="right">
|
||||
<template #default="scope">
|
||||
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['cailiaoshebei:cailiaoshebei:edit']"
|
||||
>修改</el-button
|
||||
>
|
||||
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['cailiaoshebei:cailiaoshebei:remove']"
|
||||
>删除</el-button
|
||||
>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@ -73,56 +75,72 @@
|
||||
|
||||
<!-- 添加或修改物资-材料设备对话框 -->
|
||||
<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="批次号" prop="batchNumber">
|
||||
<el-input v-model="form.batchNumber" placeholder="请输入批次ID" disabled />
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="供货商ID" prop="supplierId">
|
||||
<el-input v-model="form.supplierId" placeholder="请输入供货商ID" />
|
||||
</el-form-item> -->
|
||||
<el-form-item label="供货商" prop="supplier">
|
||||
<el-select v-model="selectValue" value-key="id" multiple placeholder="请选择供货商" clearable filterable>
|
||||
<el-option v-for="item in supplierOptions" :key="item.id" :label="item.name" :value="item.id"> </el-option>
|
||||
<el-form ref="cailiaoshebeiFormRef" :model="form" :rules="rules" label-width="130px">
|
||||
<el-form-item label="物资执行状态" prop="materialStatus">
|
||||
<el-select v-model="form.bo.materialStatus" placeholder="请选择物资执行状态" clearable filterable @change="handleChange">
|
||||
<el-option v-for="item in material_status" :key="item.value" :label="item.label" :value="item.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="设备材料名称" prop="name">
|
||||
<el-input v-model="form.name" placeholder="请输入设备材料名称" />
|
||||
</el-form-item>
|
||||
<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-form-item label="物资逾期类型" prop="overdueType" v-if="form.bo.materialStatus == 3">
|
||||
<el-select v-model="form.bo.overdueType" placeholder="请选择物资逾期类型" clearable filterable>
|
||||
<el-option v-for="item in overdue_type" :key="item.value" :label="item.label" :value="item.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="规格型号" prop="specification">
|
||||
<el-input v-model="form.specification" placeholder="请输入规格型号" />
|
||||
<el-form-item label="逾期原因" prop="cause" v-if="form.bo.materialStatus == 3">
|
||||
<el-input v-model="form.bo.cause" placeholder="请输入逾期原因" />
|
||||
</el-form-item>
|
||||
<el-form-item label="特征描述" prop="signalment">
|
||||
<el-input v-model="form.signalment" placeholder="请输入特征描述" />
|
||||
<el-form-item label="实际到货时间" prop="actualArrival" v-if="form.bo.materialStatus < 4">
|
||||
<el-date-picker clearable v-model="form.bo.actualArrival" type="date" value-format="YYYY-MM-DD" placeholder="请选择实际到货时间" />
|
||||
</el-form-item>
|
||||
<el-form-item label="物料编码" prop="materialCode">
|
||||
<el-input v-model="form.materialCode" placeholder="请输入物料编码" />
|
||||
<el-form-item label="验收时间" prop="receptionTime" v-if="form.bo.materialStatus < 4">
|
||||
<el-date-picker clearable v-model="form.bo.receptionTime" type="date" value-format="YYYY-MM-DD" placeholder="请选择验收时间" />
|
||||
</el-form-item>
|
||||
<!-- <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 label="验收数量" prop="acceptanceQuantity" v-if="form.bo.materialStatus < 4">
|
||||
<el-input v-model="form.bo.acceptanceQuantity" type="number" placeholder="请输入验收数量" />
|
||||
</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 label="计量单位" prop="unit">
|
||||
<el-input v-model="form.unit" placeholder="请输入计量单位" />
|
||||
<el-form-item label="需求提交时间" prop="requiredTime">
|
||||
<el-date-picker clearable v-model="form.bo.requiredTime" type="date" value-format="YYYY-MM-DD" placeholder="请选择需求提交时间" />
|
||||
</el-form-item>
|
||||
<el-form-item label="计划数量" prop="plan">
|
||||
<el-input v-model="form.plan" placeholder="请输入计划数量" type="number" />
|
||||
|
||||
<el-form-item label="订货时间" prop="orderTime">
|
||||
<el-date-picker clearable v-model="form.bo.orderTime" type="date" value-format="YYYY-MM-DD" placeholder="请选择订货时间" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="操作状态" prop="operationStatus" v-if="form.bo.materialStatus <= 4 || form.bo.materialStatus == 10">
|
||||
<el-select v-model="form.bo.operationStatus" placeholder="请选择物资执行状态" clearable filterable @change="handleChange">
|
||||
<el-option v-for="item in operation_s" :key="item.value" :label="item.label" :value="item.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="单据类型" prop="billType" v-if="form.bo.materialStatus < 4 || form.bo.materialStatus == 10">
|
||||
<el-select v-model="form.bo.billType" placeholder="请选择单据类型" clearable filterable>
|
||||
<el-option label="签收单" value="1" />
|
||||
<el-option label="退货单" value="2" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="上传文件" prop="file" v-if="form.bo.materialStatus < 4 || form.bo.materialStatus == 10">
|
||||
<file-upload
|
||||
v-model="form.file"
|
||||
:fileType="['doc', 'docx']"
|
||||
:autoUpload="false"
|
||||
ref="fileUploadRef"
|
||||
:data="{ ...form.bo }"
|
||||
uploadUrl="/cailiaoshebei/materialsorder/changeTheStatusOfTheMaterials"
|
||||
:onUploadError="
|
||||
(err, file, fileList) => {
|
||||
buttonLoading = false;
|
||||
}
|
||||
"
|
||||
:limit="1"
|
||||
:onUploadSuccess="handleUploadSuccess"
|
||||
showFileList
|
||||
/>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="实际数量" prop="realQuantity">
|
||||
<el-input v-model="form.realQuantity" placeholder="请输入实际数量" />
|
||||
</el-form-item> -->
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
|
||||
<el-input v-model="form.remark" type="textarea" placeholder="请输入备注" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
|
||||
@ -149,7 +167,9 @@ import { listContractor } from '@/api/project/contractor';
|
||||
import { useUserStoreHook } from '@/store/modules/user';
|
||||
|
||||
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||
const { supply } = toRefs<any>(proxy?.useDict('supply'));
|
||||
const { supply, overdue_type, material_status, operation_status } = toRefs<any>(
|
||||
proxy?.useDict('supply', 'material_status', 'overdue_type', 'operation_status')
|
||||
);
|
||||
// 获取用户 store
|
||||
const userStore = useUserStoreHook();
|
||||
// 从 store 中获取项目列表和当前选中的项目
|
||||
@ -164,6 +184,7 @@ const single = ref(true);
|
||||
const multiple = ref(true);
|
||||
const total = ref(0);
|
||||
const batchOptions = ref<any[]>([]);
|
||||
const fileUploadRef = ref();
|
||||
|
||||
const queryFormRef = ref<ElFormInstance>();
|
||||
const cailiaoshebeiFormRef = ref<ElFormInstance>();
|
||||
@ -188,7 +209,18 @@ const initFormData: CailiaoshebeiForm = {
|
||||
unit: undefined,
|
||||
plan: undefined,
|
||||
realQuantity: undefined,
|
||||
file: undefined,
|
||||
projectId: currentProject.value.id,
|
||||
bo: {
|
||||
requiredTime: undefined,
|
||||
orderTime: undefined,
|
||||
receptionTime: undefined,
|
||||
materialStatus: undefined,
|
||||
overdueType: undefined,
|
||||
cause: undefined,
|
||||
billType: undefined,
|
||||
remark: undefined
|
||||
},
|
||||
remark: undefined
|
||||
};
|
||||
const data = reactive<PageData<CailiaoshebeiForm, CailiaoshebeiQuery>>({
|
||||
@ -295,12 +327,13 @@ const handleAdd = () => {
|
||||
};
|
||||
|
||||
/** 修改按钮操作 */
|
||||
const operation_s = ref([]);
|
||||
const handleUpdate = async (row?: CailiaoshebeiVO) => {
|
||||
reset();
|
||||
const _id = row?.id || ids.value[0];
|
||||
const res = await getCailiaoshebei(_id);
|
||||
Object.assign(form.value, res.data);
|
||||
selectValue.value = (form.value.supplierId as string).split(',');
|
||||
operation_s.value = operation_status.value.slice(0, 2);
|
||||
Object.assign(form.value.bo, row);
|
||||
console.log('🚀 ~ handleUpdate ~ form.value:', form.value);
|
||||
// selectValue.value = (form.value.supplierId as string).split(',');
|
||||
dialog.visible = true;
|
||||
dialog.title = '修改物资-材料设备';
|
||||
};
|
||||
@ -311,14 +344,7 @@ const submitForm = () => {
|
||||
cailiaoshebeiFormRef.value?.validate(async (valid: boolean) => {
|
||||
if (valid) {
|
||||
buttonLoading.value = true;
|
||||
if (form.value.id) {
|
||||
await updateCailiaoshebei(form.value).finally(() => (buttonLoading.value = false));
|
||||
} else {
|
||||
await addCailiaoshebei(form.value).finally(() => (buttonLoading.value = false));
|
||||
}
|
||||
proxy?.$modal.msgSuccess('操作成功');
|
||||
dialog.visible = false;
|
||||
await getList();
|
||||
fileUploadRef.value!.submitUpload();
|
||||
}
|
||||
});
|
||||
};
|
||||
@ -353,15 +379,21 @@ const handleDelete = async (row?: CailiaoshebeiVO) => {
|
||||
await getList();
|
||||
};
|
||||
|
||||
/** 导出按钮操作 */
|
||||
const handleExport = () => {
|
||||
proxy?.download(
|
||||
'cailiaoshebei/cailiaoshebei/export',
|
||||
{
|
||||
...queryParams.value
|
||||
},
|
||||
`cailiaoshebei_${new Date().getTime()}.xlsx`
|
||||
);
|
||||
const handleUploadSuccess = () => {
|
||||
proxy?.$modal.msgSuccess('操作成功');
|
||||
dialog.visible = false;
|
||||
buttonLoading.value = false;
|
||||
getList();
|
||||
};
|
||||
|
||||
const handleChange = (value: number) => {
|
||||
if (!(value < 4 || value == 10)) {
|
||||
form.value.bo.billType = '';
|
||||
form.value.file = '';
|
||||
} else if (value == 3) {
|
||||
form.value.bo.overdueType = '';
|
||||
form.value.bo.cause = '';
|
||||
}
|
||||
};
|
||||
|
||||
/** 查询供货商列表 */
|
||||
|
Reference in New Issue
Block a user