1.0.34 采购申请页面区分标准、非标准物料

dev
yinq 1 month ago
parent 2efbf747e2
commit bb7ff1d940

@ -14,6 +14,11 @@ export interface ProjectPurchaseVO {
*/
projectCode: string;
/**
*
*/
purchaseCode?: string;
/**
*
*/
@ -24,21 +29,41 @@ export interface ProjectPurchaseVO {
*/
managerId: string | number;
/**
*
*/
managerName?: string;
/**
*
*/
chargeId: string | number;
/**
*
*/
chargeName?: string;
/**
*
*/
deputyId: string | number;
/**
*
*/
deputyName?: string;
/**
*
*/
reporterId: string | number;
/**
*
*/
reporterName?: string;
/**
*
*/
@ -107,6 +132,11 @@ export interface ProjectPurchaseForm extends BaseEntity {
*/
projectCode?: string;
/**
*
*/
purchaseCode?: string;
/**
*
*/
@ -211,6 +241,11 @@ export interface ProjectPurchaseQuery extends PageQuery {
*/
projectCode?: string;
/**
*
*/
purchaseCode?: string;
/**
*
*/

@ -13,7 +13,6 @@
/>
<el-card shadow="never" class="mb-4">
<el-form ref="projectPurchaseFormRef" :model="form" :rules="rules" label-width="120px" :disabled="isReadOnly">
<el-row :gutter="20">
<el-col :span="12">
@ -25,6 +24,11 @@
</el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="采购编号" prop="purchaseCode">
<el-input v-model="form.purchaseCode" placeholder="自动生成" disabled />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="项目名称" prop="projectName">
<el-input v-model="form.projectName" placeholder="请选择项目后自动填充" disabled />
@ -58,7 +62,7 @@
</el-col>
<el-col :span="12">
<el-form-item label="收货人" prop="consigneeUser">
<el-select v-model="form.consigneeUser" placeholder="请选择收货人" clearable filterable :disabled="isReadOnly" >
<el-select v-model="form.consigneeUser" placeholder="请选择收货人" clearable filterable :disabled="isReadOnly">
<el-option v-for="user in userList" :key="user.nickName" :label="user.nickName" :value="user.nickName" />
</el-select>
</el-form-item>
@ -83,7 +87,7 @@
<el-col :span="24">
<el-form-item label="项目采购状态" prop="projectPurchaseStatus">
<el-radio-group v-model="form.projectPurchaseStatus" disabled>
<el-radio v-for="dict in project_purchase_status" :key="dict.value" :label="dict.value">{{ dict.label }}</el-radio>
<el-radio v-for="dict in project_purchase_status" :key="dict.value" :label="dict.value">{{ dict.label }} </el-radio>
</el-radio-group>
</el-form-item>
</el-col>
@ -96,39 +100,24 @@
</el-form>
</el-card>
<el-card shadow="never">
<el-card shadow="never" class="mb-4">
<template #header>
<div class="flex items-center justify-between">
<span>采购物料</span>
<div>
<el-button icon="Refresh" @click="loadMaterials" class="mr-2" :disabled="materialLoading">刷新</el-button>
<el-button
type="primary"
icon="Plus"
@click="handleAddMaterial"
:disabled="disableMaterialActions"
v-if="!isReadOnly"
>
新增物料
<div class="flex items-center">
<el-button type="primary" icon="Plus" @click="handleAddMaterial(true)" :disabled="disableMaterialActions" v-if="!isReadOnly" class="mr-2">
添加标准物料
</el-button>
</div>
</div>
</template>
<el-table v-loading="materialLoading" :data="materialList" border>
<el-table-column label="物料名称" prop="materialName" min-width="160" show-overflow-tooltip />
<el-table-column label="物料编码" prop="materialCode" min-width="140" show-overflow-tooltip />
<el-table v-loading="materialLoading" :data="standardMaterialList" border :row-class-name="getRowClassName">
<el-table-column label="采购物料名称" prop="materialName" min-width="160" show-overflow-tooltip />
<el-table-column label="采购物料编码" prop="materialCode" min-width="140" show-overflow-tooltip />
<el-table-column label="规格参数" prop="specificationDescription" min-width="160" show-overflow-tooltip />
<el-table-column label="计划标识" prop="purchasePlanFlag" width="100">
<template #default="scope">
<dict-tag :options="purchase_plan_flag" :value="scope.row.purchasePlanFlag" />
</template>
</el-table-column>
<el-table-column label="标准物料" prop="materialFlag" width="100">
<template #default="scope">
<dict-tag :options="material_flag" :value="scope.row.materialFlag" />
</template>
</el-table-column>
<el-table-column label="需采购数量" prop="needPurchaseAmount" width="120" />
<el-table-column label="本次采购数量" prop="purchaseAmount" width="140" />
<el-table-column label="需求到货时间" prop="arrivalTime" width="180">
@ -136,16 +125,6 @@
<span>{{ proxy?.parseTime?.(scope.row.arrivalTime, '{y}-{m}-{d} {h}:{i}') || scope.row.arrivalTime }}</span>
</template>
</el-table-column>
<el-table-column label="是否备件" prop="spareFlag" width="100">
<template #default="scope">
<dict-tag :options="spare_flag" :value="scope.row.spareFlag" />
</template>
</el-table-column>
<el-table-column label="激活标识" prop="activeFlag" width="100">
<template #default="scope">
<dict-tag :options="active_flag" :value="scope.row.activeFlag" />
</template>
</el-table-column>
<el-table-column label="备注" prop="remark" min-width="160" show-overflow-tooltip />
<el-table-column label="操作" fixed="right" width="160" align="center" v-if="!isReadOnly">
<template #default="scope">
@ -156,58 +135,88 @@
</el-table>
</el-card>
<el-dialog :title="materialDialog.title" v-model="materialDialog.visible" width="600px" append-to-body>
<el-card shadow="never">
<template #header>
<div class="flex items-center">
<el-button type="primary" icon="Plus" @click="handleAddMaterial(false)" :disabled="disableMaterialActions" v-if="!isReadOnly" class="mr-2">
添加非标准物料
</el-button>
</div>
</template>
<el-table v-loading="materialLoading" :data="nonStandardMaterialList" border :row-class-name="getRowClassName">
<el-table-column label="采购物料名称" prop="materialName" min-width="160" show-overflow-tooltip />
<el-table-column label="采购物料编码" prop="materialCode" min-width="140" show-overflow-tooltip />
<el-table-column label="规格参数" prop="specificationDescription" min-width="160" show-overflow-tooltip />
<el-table-column label="计划标识" prop="purchasePlanFlag" width="100">
<template #default="scope">
<dict-tag :options="purchase_plan_flag" :value="scope.row.purchasePlanFlag" />
</template>
</el-table-column>
<el-table-column label="需采购数量" prop="needPurchaseAmount" width="120" />
<el-table-column label="本次采购数量" prop="purchaseAmount" width="140" />
<el-table-column label="需求到货时间" prop="arrivalTime" width="180">
<template #default="scope">
<span>{{ proxy?.parseTime?.(scope.row.arrivalTime, '{y}-{m}-{d} {h}:{i}') || scope.row.arrivalTime }}</span>
</template>
</el-table-column>
<el-table-column label="备注" prop="remark" min-width="160" show-overflow-tooltip />
<el-table-column label="操作" fixed="right" width="160" align="center" v-if="!isReadOnly">
<template #default="scope">
<el-button link type="primary" icon="Edit" @click="handleEditMaterial(scope.row)"></el-button>
<el-button link type="danger" icon="Delete" @click="handleDeleteMaterial(scope.row)"></el-button>
</template>
</el-table-column>
</el-table>
</el-card>
<el-dialog :title="materialDialog.title" v-model="materialDialog.visible" width="800px" append-to-body>
<el-form ref="materialFormRef" :model="materialForm" :rules="materialRules" label-width="120px">
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="计划标识" prop="purchasePlanFlag">
<el-radio-group v-model="materialForm.purchasePlanFlag">
<el-radio v-for="dict in purchase_plan_flag" :key="dict.value" :label="dict.value">{{ dict.label }}</el-radio>
<el-radio v-for="dict in purchase_plan_flag" :key="dict.value" :label="dict.value">{{ dict.label }} </el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<!-- <el-col :span="12">-->
<!-- <el-form-item label="标准物料" prop="materialFlag">-->
<!-- <el-radio-group v-model="materialForm.materialFlag">-->
<!-- <el-radio v-for="dict in material_flag" :key="dict.value" :label="dict.value">{{ dict.label }}</el-radio>-->
<!-- </el-radio-group>-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<el-col :span="12">
<el-form-item label="标准物料" prop="materialFlag">
<el-radio-group v-model="materialForm.materialFlag">
<el-radio v-for="dict in material_flag" :key="dict.value" :label="dict.value">{{ dict.label }}</el-radio>
</el-radio-group>
<el-form-item label="采购物料名称" prop="materialName">
<el-input v-model="materialForm.materialName" placeholder="请输入采购物料名称" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="物料名称" prop="materialName">
<el-input v-model="materialForm.materialName" placeholder="请输入物料名称" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="物料编码" prop="materialCode">
<el-input v-model="materialForm.materialCode" placeholder="请输入物料编码" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="物料ID" prop="materialId">
<el-input v-model="materialForm.materialId" placeholder="请输入物料ID" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="销售物料ID" prop="relationMaterialId">
<el-input v-model="materialForm.relationMaterialId" placeholder="请输入销售物料ID" />
<el-form-item label="采购物料编码" prop="materialCode">
<el-input v-model="materialForm.materialCode" placeholder="请输入采购物料编码" />
</el-form-item>
</el-col>
<!-- <el-col :span="12">-->
<!-- <el-form-item label="物料ID" prop="materialId">-->
<!-- <el-input v-model="materialForm.materialId" placeholder="请输入物料ID" />-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<!-- <el-col :span="12">-->
<!-- <el-form-item label="销售物料ID" prop="relationMaterialId">-->
<!-- <el-input v-model="materialForm.relationMaterialId" placeholder="请输入销售物料ID" />-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<el-col :span="24">
<el-form-item label="详细参数" prop="specificationDescription">
<el-input v-model="materialForm.specificationDescription" placeholder="请输入详细参数" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="单位ID" prop="unitId">
<el-input v-model="materialForm.unitId" placeholder="请输入单位ID" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="是否备件" prop="spareFlag">
<el-radio-group v-model="materialForm.spareFlag">
<el-radio v-for="dict in spare_flag" :key="dict.value" :label="dict.value">{{ dict.label }}</el-radio>
</el-radio-group>
<el-form-item label="单位" prop="unitId">
<el-select v-model="materialForm.unitId" placeholder="请选择单位" clearable filterable>
<el-option v-for="item in unitInfoList" :key="item.unitId" :label="item.unitName" :value="item.unitId" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
@ -222,12 +231,12 @@
</el-col>
<el-col :span="12">
<el-form-item label="需求到货时间" prop="arrivalTime">
<el-date-picker v-model="materialForm.arrivalTime" type="datetime" value-format="YYYY-MM-DD HH:mm:ss" placeholder="请选择需求到货时间" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="序号" prop="serialNumber">
<el-input-number v-model="materialForm.serialNumber" :min="0" :controls="false" class="w-full" placeholder="请输入序号" />
<el-date-picker
v-model="materialForm.arrivalTime"
type="datetime"
value-format="YYYY-MM-DD HH:mm:ss"
placeholder="请选择需求到货时间"
/>
</el-form-item>
</el-col>
<el-col :span="24">
@ -235,13 +244,6 @@
<el-input v-model="materialForm.remark" type="textarea" :rows="3" placeholder="请输入备注" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="激活标识" prop="activeFlag">
<el-radio-group v-model="materialForm.activeFlag">
<el-radio v-for="dict in active_flag" :key="dict.value" :label="dict.value">{{ dict.label }}</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
</el-form>
<template #footer>
@ -259,18 +261,13 @@
</template>
<script setup name="ProjectPurchaseEdit" lang="ts">
import { computed, reactive, ref, watch, getCurrentInstance, toRefs } from 'vue';
import { computed, reactive, ref, watch, getCurrentInstance, toRefs, onMounted, nextTick } from 'vue';
import type { ComponentInternalInstance } from 'vue';
import { useRoute, useRouter } from 'vue-router';
import type { FormInstance } from 'element-plus';
import { addProjectPurchase, getProjectPurchase, updateProjectPurchase, projectPurchaseSubmitAndFlowStart } from '@/api/oa/erp/projectPurchase';
import type { ProjectPurchaseForm } from '@/api/oa/erp/projectPurchase/types';
import {
listProjectPurchaseMaterial,
addProjectPurchaseMaterial,
updateProjectPurchaseMaterial,
delProjectPurchaseMaterial
} from '@/api/oa/erp/projectPurchaseMaterial';
import { getErpProjectPurchaseMaterialList } from '@/api/oa/erp/projectPurchaseMaterial';
import type { ProjectPurchaseMaterialVO, ProjectPurchaseMaterialForm } from '@/api/oa/erp/projectPurchaseMaterial/types';
import SubmitVerify from '@/components/Process/submitVerify.vue';
import ApprovalRecord from '@/components/Process/approvalRecord.vue';
@ -281,6 +278,7 @@ import type { ProjectInfoVO } from '@/api/oa/erp/projectInfo/types';
import { listUser } from '@/api/system/user';
import type { UserVO, UserQuery } from '@/api/system/user/types';
import { useUserStore } from '@/store/modules/user';
import { getBaseUnitInfoList } from '@/api/oa/base/unitInfo';
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const router = useRouter();
@ -307,6 +305,7 @@ const initFormData: ProjectPurchaseForm & { projectName?: string } = {
projectPurchaseId: undefined,
projectId: undefined,
projectCode: undefined,
purchaseCode: undefined,
projectName: undefined,
managerId: undefined,
chargeId: undefined,
@ -334,7 +333,27 @@ const rules = {
const materialList = ref<ProjectPurchaseMaterialVO[]>([]);
const materialLoading = ref(false);
const disableMaterialActions = computed(() => isReadOnly.value || !form.value.projectPurchaseId || materialLoading.value);
const disableMaterialActions = computed(() => isReadOnly.value || materialLoading.value);
// materialFlag '1'
// materialFlag = 1
const standardMaterialList = computed(() => {
return materialList.value.filter((item) => item.materialFlag === '1');
});
// materialFlag '2'
const nonStandardMaterialList = computed(() => {
return materialList.value.filter((item) => item.materialFlag === '2');
});
//
const getRowClassName = ({ row }: { row: ProjectPurchaseMaterialVO }) => {
// '2' ''
if (row.purchasePlanFlag === '2' || row.purchasePlanFlag === '否' || row.purchasePlanFlag === '计划外') {
return 'plan-out-row';
}
return '';
};
//
const userList = ref<UserVO[]>([]);
@ -344,6 +363,13 @@ const getUserList = async () => {
userList.value = res.rows || [];
};
//
const unitInfoList = ref<any[]>([]);
const getUnitInfoListSelect = async () => {
const res = await getBaseUnitInfoList(null);
unitInfoList.value = res.data || [];
};
//
const reporterName = computed(() => {
return userStore.nickname || '';
@ -379,10 +405,13 @@ const initMaterialFormData: ProjectPurchaseMaterialForm = {
const materialForm = ref<ProjectPurchaseMaterialForm>({ ...initMaterialFormData });
const materialRules = {
materialName: [{ required: true, message: '物料名称不能为空', trigger: 'blur' }],
materialName: [{ required: true, message: '采购物料名称不能为空', trigger: 'blur' }],
purchaseAmount: [{ required: true, message: '采购数量不能为空', trigger: 'blur' }]
};
/**
* 重置主表表单
*/
const resetForm = () => {
Object.assign(form.value, initFormData);
form.value.projectPurchaseStatus = '1';
@ -394,13 +423,18 @@ const resetForm = () => {
if (!form.value.activeFlag && active_flag.value?.length) {
form.value.activeFlag = active_flag.value[0].value;
}
};
/**
* 重置物料表单
*/
const resetMaterialForm = () => {
Object.assign(materialForm.value, initMaterialFormData);
};
/**
* 根据项目采购ID加载详情
*/
const loadDetail = async (projectPurchaseId: string | number) => {
if (!projectPurchaseId) {
resetForm();
@ -428,9 +462,9 @@ const loadDetail = async (projectPurchaseId: string | number) => {
}
};
//
getUserList();
/**
* 加载物料列表
*/
const loadMaterials = async () => {
if (!form.value.projectPurchaseId) {
materialList.value = [];
@ -438,13 +472,17 @@ const loadMaterials = async () => {
}
materialLoading.value = true;
try {
const res = await listProjectPurchaseMaterial({ projectPurchaseId: form.value.projectPurchaseId, pageNum: 1, pageSize: 999 });
materialList.value = res?.rows || [];
const res = await getErpProjectPurchaseMaterialList({ projectPurchaseId: form.value.projectPurchaseId });
materialList.value = res?.data || [];
} finally {
materialLoading.value = false;
}
};
/**
* 提交主表单
* @param status 提交状态draft or submit
*/
const submitForm = async (status: string, mode?: boolean) => {
if (!projectPurchaseFormRef.value) return;
try {
@ -455,7 +493,16 @@ const submitForm = async (status: string, mode?: boolean) => {
buttonLoading.value = true;
try {
const payload: ProjectPurchaseForm & { projectName?: string } = { ...form.value };
const payload: ProjectPurchaseForm & {
projectName?: string;
purchaseMaterialList?: ProjectPurchaseMaterialForm[];
} = {
...form.value,
purchaseMaterialList: materialList.value.map((item) => ({
...item,
projectPurchaseId: form.value.projectPurchaseId
}))
};
if (status !== 'draft') {
payload.flowCode = FlowCodeEnum.PROJECT_PURCHASE_CODE;
payload.variables = {
@ -501,24 +548,32 @@ const submitForm = async (status: string, mode?: boolean) => {
}
};
const handleAddMaterial = () => {
/**
* 打开新增物料弹窗
* @param isStandard 是否标准物料
*/
const handleAddMaterial = (isStandard: boolean) => {
if (isReadOnly.value) {
return;
}
if (!form.value.projectPurchaseId) {
proxy?.$modal.msgWarning('请先保存项目采购信息');
return;
}
resetMaterialForm();
materialForm.value.projectPurchaseId = form.value.projectPurchaseId;
materialForm.value.purchasePlanFlag = materialForm.value.purchasePlanFlag || (purchase_plan_flag.value?.[0]?.value ?? undefined);
materialForm.value.materialFlag = materialForm.value.materialFlag || (material_flag.value?.[0]?.value ?? undefined);
// isStandard materialFlag
if (isStandard) {
materialForm.value.materialFlag = '1'; //
materialDialog.title = '添加标准物料';
} else {
materialForm.value.materialFlag = '2'; //
materialDialog.title = '添加非标准物料';
}
materialForm.value.spareFlag = materialForm.value.spareFlag || (spare_flag.value?.[0]?.value ?? undefined);
materialForm.value.activeFlag = materialForm.value.activeFlag || (active_flag.value?.[0]?.value ?? undefined);
materialDialog.title = '新增物料';
materialDialog.visible = true;
};
/**
* 编辑物料
*/
const handleEditMaterial = (row: ProjectPurchaseMaterialVO) => {
if (isReadOnly.value) {
return;
@ -529,39 +584,50 @@ const handleEditMaterial = (row: ProjectPurchaseMaterialVO) => {
materialDialog.visible = true;
};
/**
* 提交物料表单仅操作本地列表
*/
const submitMaterialForm = () => {
if (isReadOnly.value) {
return;
}
materialFormRef.value?.validate(async (valid: boolean) => {
materialFormRef.value?.validate((valid: boolean) => {
if (!valid) return;
materialLoading.value = true;
try {
materialForm.value.projectPurchaseId = form.value.projectPurchaseId;
if (materialForm.value.purchaseMaterialId) {
await updateProjectPurchaseMaterial(materialForm.value);
//
const index = materialList.value.findIndex((item) => item.purchaseMaterialId === materialForm.value.purchaseMaterialId);
if (index !== -1) {
Object.assign(materialList.value[index], materialForm.value);
}
} else {
await addProjectPurchaseMaterial(materialForm.value);
//
materialList.value.push({ ...materialForm.value } as ProjectPurchaseMaterialVO);
}
proxy?.$modal.msgSuccess('操作成功');
materialDialog.visible = false;
await loadMaterials();
} finally {
materialLoading.value = false;
}
});
};
/**
* 删除物料仅操作本地列表
*/
const handleDeleteMaterial = async (row: ProjectPurchaseMaterialVO) => {
if (isReadOnly.value) {
return;
}
await proxy?.$modal.confirm(`是否确认删除物料"${row.materialName}"`);
await delProjectPurchaseMaterial(row.purchaseMaterialId);
const index = materialList.value.findIndex(
(item) => (row.purchaseMaterialId && item.purchaseMaterialId === row.purchaseMaterialId) || (!row.purchaseMaterialId && item === row)
);
if (index !== -1) {
materialList.value.splice(index, 1);
proxy?.$modal.msgSuccess('删除成功');
await loadMaterials();
}
};
/**
* 打开审批弹窗
*/
const approvalVerifyOpen = async () => {
taskVariables.value = {
projectPurchaseId: form.value.projectPurchaseId,
@ -574,18 +640,27 @@ const approvalVerifyOpen = async () => {
}
};
/**
* 查看审批记录
*/
const handleApprovalRecord = () => {
if (form.value.projectPurchaseId) {
approvalRecordRef.value?.init(form.value.projectPurchaseId);
}
};
/**
* 提交审批后的回调
*/
const submitCallback = async () => {
await proxy?.$tab.closePage(route);
router.go(-1);
};
//
/**
* 打开项目选择弹窗
*/
const openProjectSelect = () => {
if (isReadOnly.value) {
return;
@ -594,6 +669,9 @@ const openProjectSelect = () => {
};
//
/**
* 项目选择回调
*/
const projectInfoSelectCallBack = (data: ProjectInfoVO[]) => {
if (data && data.length > 0) {
const project = data[0];
@ -607,23 +685,45 @@ const projectInfoSelectCallBack = (data: ProjectInfoVO[]) => {
}
};
watch(
() => ({
id: route.query.id,
type: route.query.type,
taskId: route.query.taskId
}),
async (val) => {
Object.assign(routeParams, val);
pageType.value = (val.type as string) || 'add';
const projectPurchaseId = val.id as string | number | undefined;
if (projectPurchaseId) {
await loadDetail(projectPurchaseId);
//
/**
* 初始化下拉数据
*/
const loadSelectOptions = () => {
getUserList();
getUnitInfoListSelect();
};
onMounted(async () => {
nextTick(async () => {
//
Object.assign(routeParams, route.query);
loadSelectOptions();
const id = routeParams.id as string | number;
const type = routeParams.type as string;
pageType.value = type || 'add';
if (id && (type === 'update' || type === 'view' || type === 'approval')) {
pageLoading.value = true;
try {
await loadDetail(id);
} finally {
pageLoading.value = false;
}
} else {
resetForm();
materialList.value = [];
}
},
{ immediate: true }
);
});
});
</script>
<style scoped>
:deep(.plan-out-row) {
background-color: #fffbe6 !important;
}
:deep(.plan-out-row:hover) {
background-color: #fff8d1 !important;
}
</style>

@ -7,6 +7,9 @@
<el-form-item label="项目号" prop="projectCode">
<el-input v-model="queryParams.projectCode" placeholder="请输入项目号" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="采购编号" prop="purchaseCode">
<el-input v-model="queryParams.purchaseCode" placeholder="请输入采购编号" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="项目名称" prop="projectName">
<el-input v-model="queryParams.projectName" placeholder="请输入项目名称" clearable @keyup.enter="handleQuery" />
</el-form-item>
@ -50,12 +53,13 @@
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="项目采购ID" align="center" prop="projectPurchaseId" width="120" v-if="columns[0].visible" />
<el-table-column label="项目ID" align="center" prop="projectId" width="120" v-if="columns[2].visible" />
<el-table-column label="采购编号" align="center" prop="purchaseCode" width="150" v-if="columns[26].visible" />
<el-table-column label="项目号" align="center" prop="projectCode" width="150" v-if="columns[3].visible" />
<el-table-column label="项目名称" align="center" prop="projectName" width="200" show-overflow-tooltip v-if="columns[4].visible" />
<el-table-column label="项目经理" align="center" prop="managerId" width="120" v-if="columns[5].visible" />
<el-table-column label="部门负责人" align="center" prop="chargeId" width="120" v-if="columns[6].visible" />
<el-table-column label="分管副总" align="center" prop="deputyId" width="120" v-if="columns[7].visible" />
<el-table-column label="提报人" align="center" prop="reporterId" width="120" v-if="columns[9].visible" />
<el-table-column label="项目经理" align="center" prop="managerName" width="120" v-if="columns[5].visible" />
<el-table-column label="部门负责人" align="center" prop="chargeName" width="120" v-if="columns[6].visible" />
<el-table-column label="分管副总" align="center" prop="deputyName" width="120" v-if="columns[7].visible" />
<el-table-column label="提报人" align="center" prop="reporterName" width="120" v-if="columns[9].visible" />
<el-table-column label="收货人" align="center" prop="consigneeUser" width="120" v-if="columns[10].visible" />
<el-table-column label="收货地址" align="center" prop="consigneeAddress" width="200" show-overflow-tooltip v-if="columns[11].visible" />
<el-table-column label="收货人联系方式" align="center" prop="consigneeContact" width="150" v-if="columns[12].visible" />
@ -122,9 +126,9 @@ const total = ref(0);
const queryFormRef = ref<FormInstance>();
const columns = ref<FieldOption[]>([
{ key: 0, label: `项目采购ID`, visible: true },
{ key: 1, label: `租户编号`, visible: true },
{ key: 2, label: `项目ID`, visible: true },
{ key: 0, label: `项目采购ID`, visible: false },
{ key: 1, label: `租户编号`, visible: false },
{ key: 2, label: `项目ID`, visible: false },
{ key: 3, label: `项目号`, visible: true },
{ key: 4, label: `项目名称`, visible: true },
{ key: 5, label: `项目经理`, visible: true },
@ -137,17 +141,18 @@ const columns = ref<FieldOption[]>([
{ key: 12, label: `收货人联系方式`, visible: true },
{ key: 13, label: `项目采购状态`, visible: true },
{ key: 14, label: `流程状态`, visible: true },
{ key: 15, label: `排序号`, visible: true },
{ key: 16, label: `合同/预算ID`, visible: true },
{ key: 17, label: `备注`, visible: true },
{ key: 18, label: `是否备件类`, visible: true },
{ key: 19, label: `激活标识`, visible: true },
{ key: 20, label: `删除标志`, visible: true },
{ key: 21, label: `创建部门`, visible: true },
{ key: 22, label: `创建人`, visible: true },
{ key: 23, label: `创建时间`, visible: true },
{ key: 24, label: `更新人`, visible: true },
{ key: 25, label: `更新时间`, visible: true }
{ key: 15, label: `排序号`, visible: false },
{ key: 16, label: `合同/预算ID`, visible: false },
{ key: 17, label: `备注`, visible: false },
{ key: 18, label: `是否备件类`, visible: false },
{ key: 19, label: `激活标识`, visible: false },
{ key: 20, label: `删除标志`, visible: false },
{ key: 21, label: `创建部门`, visible: false },
{ key: 22, label: `创建人`, visible: false },
{ key: 23, label: `创建时间`, visible: false },
{ key: 24, label: `更新人`, visible: false },
{ key: 25, label: `更新时间`, visible: false },
{ key: 26, label: `采购编号`, visible: true }
]);
const data = reactive<{ queryParams: ProjectPurchaseQuery }>({
@ -156,6 +161,7 @@ const data = reactive<{ queryParams: ProjectPurchaseQuery }>({
pageSize: 10,
projectId: undefined,
projectCode: undefined,
purchaseCode: undefined,
projectName: undefined,
managerId: undefined,
chargeId: undefined,
@ -215,7 +221,7 @@ const handleUpdate = (row?: ProjectPurchaseVO) => {
}
proxy?.$tab.closePage(route);
router.push({
path: '/oa/erp/projectPurchase/edit',
path: '/purchase/projectPurchase/edit',
query: { id: projectPurchaseId, type: 'update' }
});
};

Loading…
Cancel
Save