Compare commits

...

2 Commits

@ -1,4 +1,4 @@
export interface ProjectReportVO extends extraInfo { export interface ProjectReportVO extends BaseEntity, extraInfo {
/** /**
* ID * ID
*/ */

@ -20,7 +20,9 @@ export enum CodeRuleEnum {
/** /**
* *
*/ */
AFTER_SALES = '1012' AFTER_SALES = '1012',
PROJECT_REPORT = '1011'
} }
/** /**

@ -13,7 +13,7 @@
:mode="false" :mode="false"
/> />
<el-form <el-form
ref="ProjectFormRef" ref="projectFormRef"
:model="form" :model="form"
:loading="buttonLoading" :loading="buttonLoading"
:disabled="routeParams.type === 'view' || routeParams.type === 'approval'" :disabled="routeParams.type === 'view' || routeParams.type === 'approval'"
@ -169,7 +169,7 @@
:model="projectReportForm" :model="projectReportForm"
:loading="buttonLoading" :loading="buttonLoading"
:disabled="routeParams.type === 'view' || routeParams.type === 'approval'" :disabled="routeParams.type === 'view' || routeParams.type === 'approval'"
:rules="rules" :rules="reportRules"
label-width="120px" label-width="120px"
v-if="routeParams.type == 'add' || routeParams.type === 'approval'" v-if="routeParams.type == 'add' || routeParams.type === 'approval'"
> >
@ -179,7 +179,7 @@
<el-input v-model="projectReportForm.reportId" placeholder="请输入项目周报ID" clearable @keyup.enter="console.log(1)" /> <el-input v-model="projectReportForm.reportId" placeholder="请输入项目周报ID" clearable @keyup.enter="console.log(1)" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12" v-show="false">
<el-form-item label="项目ID" prop="projectId"> <el-form-item label="项目ID" prop="projectId">
<el-input v-model="projectReportForm.projectId" placeholder="请输入项目ID" clearable @keyup.enter="console.log(1)" /> <el-input v-model="projectReportForm.projectId" placeholder="请输入项目ID" clearable @keyup.enter="console.log(1)" />
</el-form-item> </el-form-item>
@ -369,6 +369,7 @@ import { getBasePrintTemplateList } from '@/api/oa/base/printTemplate';
import { CodeRuleEnum, FlowCodeEnum } from '@/enums/OAEnum'; import { CodeRuleEnum, FlowCodeEnum } from '@/enums/OAEnum';
import { getInfo } from '@/api/login'; import { getInfo } from '@/api/login';
import { ProjectReportVO, ProjectReportQuery, ProjectReportForm } from '@/api/oa/erp/projectReport/types'; import { ProjectReportVO, ProjectReportQuery, ProjectReportForm } from '@/api/oa/erp/projectReport/types';
import { listProjectReport, getProjectReport, delProjectReport, addProjectReport, updateProjectReport } from '@/api/oa/erp/projectReport';
import { import {
listProjectReportDetail, listProjectReportDetail,
getProjectReportDetail, getProjectReportDetail,
@ -396,7 +397,7 @@ const { contract_category, business_direction, contract_flag, contract_type, con
); );
const buttonLoading = ref(false); const buttonLoading = ref(false);
const ProjectFormRef = ref<ElFormInstance>(); const projectFormRef = ref<ElFormInstance>();
// //
const submitVerifyRef = ref<InstanceType<typeof SubmitVerify>>(); const submitVerifyRef = ref<InstanceType<typeof SubmitVerify>>();
@ -463,7 +464,14 @@ const data = reactive<PageData<ProjectReportForm, ProjectReportQuery>>({
deputyName: undefined, deputyName: undefined,
params: {} params: {}
}, },
rules: {} rules: {
projectName: [{ required: true, message: '项目名称不能为空', trigger: 'blur' }],
projectCode: [{ required: true, message: '项目编号不能为空', trigger: 'blur' }],
deptName: [{ required: true, message: '部门名称不能为空', trigger: 'blur' }],
managerName: [{ required: true, message: '项目经理不能为空', trigger: 'blur' }],
chargeName: [{ required: true, message: '部门负责人不能为空', trigger: 'blur' }],
deputyName: [{ required: true, message: '分管副总不能为空', trigger: 'blur' }]
}
}); });
const { form, queryParams, rules } = toRefs(data); const { form, queryParams, rules } = toRefs(data);
@ -550,10 +558,10 @@ const columns = ref<FieldOption[]>([
{ key: 26, label: `更新时间`, visible: true } { key: 26, label: `更新时间`, visible: true }
]); ]);
// //
const projectReportFormRef = ref<ElFormInstance>(); const projectReportFormRef = ref<ElFormInstance>();
// //
const initprojectReportFormData: ProjectReportDetailFormEx = { const initprojectReportFormData: ProjectReportDetailFormEx = {
reportDetailId: undefined, reportDetailId: undefined,
reportId: undefined, reportId: undefined,
@ -583,11 +591,11 @@ const initprojectReportFormData: ProjectReportDetailFormEx = {
const projectReportForm = ref<ProjectReportDetailFormEx>({ ...initprojectReportFormData }); const projectReportForm = ref<ProjectReportDetailFormEx>({ ...initprojectReportFormData });
// //
const reportRules = { const reportRules = {
productName: [{ required: true, message: '产品名称不能为空', trigger: 'blur' }], tasksCompleted: [{ required: true, message: '本周完成工作不能为空', trigger: 'blur' }],
amount: [{ required: true, message: '数量不能为空', trigger: 'blur' }], nextPlan: [{ required: true, message: '下周计划不能为空', trigger: 'blur' }],
taxRate: [{ required: true, message: '税率不能为空', trigger: 'blur' }] riskResolution: [{ required: true, message: '风险及解决措施不能为空', trigger: 'blur' }]
}; };
// //
@ -675,165 +683,49 @@ onMounted(async () => {
nextTick(async () => { nextTick(async () => {
// //
routeParams.value = route.query; routeParams.value = route.query;
// //
if ((routeParams.value.type === 'update' || routeParams.value.type === 'view') && routeParams.value.reportData) {
// 使
try {
const reportDataStr = routeParams.value.reportData as string; const reportDataStr = routeParams.value.reportData as string;
const reportData = JSON.parse(decodeURIComponent(reportDataStr)); if (reportDataStr && (routeParams.value.type === 'update' || routeParams.value.type === 'view' || routeParams.value.type === 'add')) {
// ProjectReportVO
if (reportData.reportId) {
form.value.reportId = reportData.reportId;
queryParams.value.reportId = reportData.reportId;
buttonLoading.value = true;
const res = await listProjectReportDetail(queryParams.value);
projectReportDetailList.value = res.rows;
total.value = res.total;
buttonLoading.value = false;
}
if (reportData.projectId) form.value.projectId = reportData.projectId;
if (reportData.projectName) form.value.projectName = reportData.projectName;
if (reportData.projectCode) form.value.projectCode = reportData.projectCode;
if (reportData.milestonePlan) form.value.milestonePlan = reportData.milestonePlan;
if (reportData.managerId) form.value.managerId = reportData.managerId;
if (reportData.deptId) form.value.deptId = reportData.deptId;
if (reportData.chargeId) form.value.chargeId = reportData.chargeId;
if (reportData.deputyId) form.value.deputyId = reportData.deputyId;
if (reportData.informationNote) form.value.informationNote = reportData.informationNote;
if (reportData.remark) form.value.remark = reportData.remark;
if (reportData.managerName) form.value.managerName = reportData.managerName;
if (reportData.deptName) form.value.deptName = reportData.deptName;
if (reportData.chargeName) form.value.chargeName = reportData.chargeName;
if (reportData.deputyName) form.value.deputyName = reportData.deputyName;
if (reportData.sortOrder !== undefined) form.value.sortOrder = reportData.sortOrder;
if (reportData.ossId) form.value.ossId = reportData.ossId;
if (reportData.activeFlag) form.value.activeFlag = reportData.activeFlag;
} catch (error) {
console.error('解析项目周报数据失败:', error);
proxy?.$modal.msgError('加载项目周报数据失败');
}
} else if (routeParams.value.type === 'add') {
//
if (routeParams.value.reportData) {
const reportDataStr = routeParams.value.reportData as string;
const reportData = JSON.parse(decodeURIComponent(reportDataStr));
// ProjectReportVO
if (reportData.projectId) {
form.value.projectId = reportData.projectId;
projectReportForm.value.projectId = reportData.projectId;
}
if (reportData.reportId) {
form.value.reportId = reportData.reportId;
projectReportForm.value.reportId = reportData.reportId;
}
if (reportData.ossId) form.value.ossId = reportData.ossId;
if (reportData.projectName) form.value.projectName = reportData.projectName;
if (reportData.projectCode) form.value.projectCode = reportData.projectCode;
if (reportData.milestonePlan) form.value.milestonePlan = reportData.milestonePlan;
if (reportData.managerId) form.value.managerId = reportData.managerId;
if (reportData.deptId) form.value.deptId = reportData.deptId;
if (reportData.chargeId) form.value.chargeId = reportData.chargeId;
if (reportData.deputyId) form.value.deputyId = reportData.deputyId;
if (reportData.informationNote) form.value.informationNote = reportData.informationNote;
if (reportData.remark) form.value.remark = reportData.remark;
if (reportData.managerName) form.value.managerName = reportData.managerName;
if (reportData.deptName) form.value.deptName = reportData.deptName;
if (reportData.chargeName) form.value.chargeName = reportData.chargeName;
if (reportData.deputyName) form.value.deputyName = reportData.deputyName;
if (reportData.sortOrder !== undefined) form.value.sortOrder = reportData.sortOrder;
if (reportData.activeFlag) form.value.activeFlag = reportData.activeFlag;
} else {
}
} else if (routeParams.value.type === 'approval') {
//
const id = routeParams.value.id;
if (id) {
proxy?.$modal.loading('正在加载数据,请稍后...'); proxy?.$modal.loading('正在加载数据,请稍后...');
const res = await getContractInfo(id); const reportData = JSON.parse(decodeURIComponent(reportDataStr));
Object.assign(form.value, res.data); Object.assign(form.value, reportData);
Object.assign(projectReportForm.value, reportData);
// console.log(form.value);
// console.log(projectReportForm.value);
proxy?.$modal.closeLoading();
} else if (routeParams.value.type === 'add') {
} else if (routeParams.value.type === 'approval' || routeParams.value.type === 'view') {
//
const projectDetailReportId = routeParams.value.id;
if (projectDetailReportId) {
proxy?.$modal.loading('正在加载数据,请稍后...');
const reportDetailRes = await getProjectReportDetail(projectDetailReportId);
const reportId = reportDetailRes.data.reportId;
if (reportId && routeParams.value.type === 'view') {
const reportRes = await getProjectReport(reportId);
Object.assign(form.value, reportRes.data);
Object.assign(projectReportForm.value, reportDetailRes.data);
projectReportDetailList.value = [reportDetailRes.data];
}
if (reportId && routeParams.value.type === 'approval') {
const reportRes = await getProjectReport(reportId);
Object.assign(form.value, reportRes.data);
Object.assign(projectReportForm.value, reportDetailRes.data);
}
proxy?.$modal.closeLoading(); proxy?.$modal.closeLoading();
} }
} }
}); });
}); });
// onMounted(async () => {
// nextTick(async () => {
// // //
// // routeParams.value = route.query;
// // loadSelectOptions();
// // const id = routeParams.value.id as string | number;
// // if (id && (routeParams.value.type === 'update' || routeParams.value.type === 'view' || routeParams.value.type === 'approval')) {
// // proxy?.$modal.loading('...');
// // const res = await getContractInfo(id);
// // Object.assign(form.value, res.data);
// // proxy?.$modal.closeLoading();
// // //
// // if (form.value.contractCode) {
// // isCodeGenerated.value = true;
// // } else if (form.value.contractFlag === '1') {
// // //
// // isCodeGenerated.value = false;
// // }
// // } else {
// // // ID
// // try {
// // const userInfoRes = await getInfo();
// // if (userInfoRes.data?.user?.deptId && !form.value.contractDeptId) {
// // form.value.contractDeptId = userInfoRes.data.user.deptId;
// // }
// // } catch (error) {
// // console.error(':', error);
// // }
// // //
// // if (form.value.contractCode) {
// // isCodeGenerated.value = true;
// // } else if (form.value.contractFlag === '1') {
// // //
// // isCodeGenerated.value = false;
// // }
// // }
// //
// routeParams.value = route.query;
// loadSelectOptions();
// //
// if (routeParams.value.type === 'add') {
// //
// if (routeParams.value.projectId) {
// form.value.projectId = routeParams.value.projectId;
// form.value.projectName = routeParams.value.projectName;
// form.value.projectCode = routeParams.value.projectCode;
// form.value.managerId = routeParams.value.managerId;
// form.value.managerName = routeParams.value.managerName;
// form.value.deptId = routeParams.value.deptId;
// form.value.deptName = routeParams.value.deptName;
// form.value.chargeId = routeParams.value.chargeId;
// form.value.chargeName = routeParams.value.chargeName;
// form.value.deputyId = routeParams.value.deputyId;
// form.value.deputyName = routeParams.value.deputyName;
// }
// }
// //
// if (routeParams.value.type === 'update' || routeParams.value.type === 'approval') {
// const id = routeParams.value.id;
// if (id) {
// proxy?.$modal.loading('...');
// const res = await getContractInfo(id);
// Object.assign(form.value, res.data);
// proxy?.$modal.closeLoading();
// }
// }
// });
// });
// //
const handleApprovalRecord = () => { const handleApprovalRecord = () => {
approvalRecordRef.value.init(form.value.contractId); approvalRecordRef.value.init(projectReportForm.value.reportDetailId);
}; };
// //
const submitCallback = async () => { const submitCallback = async () => {
await proxy.$tab.closePage(proxy.$route); await proxy.$tab.closePage(route);
router.go(-1); router.go(-1);
}; };
@ -849,16 +741,30 @@ watch(
(val) => { (val) => {
if (!dialog.visible) { if (!dialog.visible) {
ossFileModel.value = val as any; ossFileModel.value = val as any;
projectReportForm.value.ossId = val as any;
} }
} }
); );
const isCodeGenerated = ref(false);
// //
const generateUniqueId = () => { const generateUniqueId = () => {
const timestamp = Date.now().toString(36); const timestamp = Date.now().toString(36);
const randomStr = Math.random().toString(36).substr(2, 9); const randomStr = Math.random().toString(36).substr(2, 9);
return `XMZB-${timestamp}-${randomStr}`; return `XMZB-${timestamp}-${randomStr}`;
}; };
//
const generateCode = async () => {
if (isCodeGenerated.value) return; //
try {
const params = { codeRuleCode: CodeRuleEnum.PROJECT_REPORT } as any;
const res = await getRuleGenerateCode(params);
isCodeGenerated.value = true; //
return res.msg;
} catch (error) {
console.error('生成业务编号失败:', error);
proxy?.$modal.msgError('生成业务编号失败');
}
};
/** 提交按钮 */ /** 提交按钮 */
const submitForm = async (status: string, mode: boolean) => { const submitForm = async (status: string, mode: boolean) => {
try { try {

@ -147,7 +147,7 @@
<el-table-column label="项目编码" align="center" prop="projectCode" v-if="columns[20].visible" /> <el-table-column label="项目编码" align="center" prop="projectCode" v-if="columns[20].visible" />
<el-table-column label="当前里程碑" align="center" prop="milestonePlan" v-if="columns[4].visible" /> <el-table-column label="当前里程碑" align="center" prop="milestonePlan" v-if="columns[4].visible" />
<el-table-column label="项目经理" align="center" prop="managerName" v-if="columns[5].visible" /> <el-table-column label="项目经理" align="center" prop="managerName" v-if="columns[5].visible" />
<el-table-column label="部门ID" align="center" prop="deptName" v-if="columns[6].visible" /> <el-table-column label="部门名称" align="center" prop="deptName" v-if="columns[6].visible" />
<el-table-column label="部门负责人" align="center" prop="chargeName" v-if="columns[7].visible" /> <el-table-column label="部门负责人" align="center" prop="chargeName" v-if="columns[7].visible" />
<el-table-column label="分管副总" align="center" prop="deputyName" v-if="columns[8].visible" /> <el-table-column label="分管副总" align="center" prop="deputyName" v-if="columns[8].visible" />
<el-table-column label="周报情况说明" align="center" prop="informationNote" v-if="columns[9].visible" /> <el-table-column label="周报情况说明" align="center" prop="informationNote" v-if="columns[9].visible" />
@ -155,7 +155,8 @@
<el-table-column label="附件ID" align="center" prop="ossId" v-if="columns[11].visible" /> <el-table-column label="附件ID" align="center" prop="ossId" v-if="columns[11].visible" />
<el-table-column label="备注" align="center" prop="remark" v-if="columns[12].visible" /> <el-table-column label="备注" align="center" prop="remark" v-if="columns[12].visible" />
<el-table-column label="激活标识" align="center" prop="activeFlag" v-if="columns[13].visible" /> <el-table-column label="激活标识" align="center" prop="activeFlag" v-if="columns[13].visible" />
<!-- <el-table-column label="创建时间" align="center" prop="createTime" v-if="columns[20].visible" /> --> <el-table-column label="创建时间" align="center" prop="createTime" v-if="columns[17].visible" />
<el-table-column label="更新时间" align="center" prop="updateTime" v-if="columns[19].visible" />
<el-table-column label="操作" align="center" width="150" fixed="right" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" width="150" fixed="right" class-name="small-padding fixed-width">
<template #default="scope"> <template #default="scope">
<el-tooltip content="新增" placement="top"> <el-tooltip content="新增" placement="top">
@ -222,15 +223,15 @@ const columns = ref<FieldOption[]>([
{ key: 3, label: `项目名称`, visible: true }, { key: 3, label: `项目名称`, visible: true },
{ key: 4, label: `当前里程碑`, visible: true }, { key: 4, label: `当前里程碑`, visible: true },
{ key: 5, label: `项目经理`, visible: true }, { key: 5, label: `项目经理`, visible: true },
{ key: 6, label: `部门ID`, visible: true }, { key: 6, label: `部门名称`, visible: true },
{ key: 7, label: `部门负责人`, visible: true }, { key: 7, label: `部门负责人`, visible: true },
{ key: 8, label: `分管副总`, visible: true }, { key: 8, label: `分管副总`, visible: true },
{ key: 9, label: `周报情况说明`, visible: true }, { key: 9, label: `周报情况说明`, visible: true },
{ key: 10, label: `排序号`, visible: true }, { key: 10, label: `排序号`, visible: false },
{ key: 11, label: `附件ID`, visible: true }, { key: 11, label: `附件ID`, visible: true },
{ key: 12, label: `备注`, visible: true }, { key: 12, label: `备注`, visible: true },
{ key: 13, label: `激活标识`, visible: true }, { key: 13, label: `激活标识`, visible: false },
{ key: 14, label: `删除标志`, visible: true }, { key: 14, label: `删除标志`, visible: false },
{ key: 15, label: `创建部门`, visible: true }, { key: 15, label: `创建部门`, visible: true },
{ key: 16, label: `创建人`, visible: true }, { key: 16, label: `创建人`, visible: true },
{ key: 17, label: `创建时间`, visible: true }, { key: 17, label: `创建时间`, visible: true },
@ -383,7 +384,7 @@ const handleView = (row?: ProjectReportVO) => {
path: '/project/projectReport/edit', path: '/project/projectReport/edit',
query: { query: {
type: 'view', type: 'view',
// 便使 //
reportData: encodeURIComponent(JSON.stringify(row)) reportData: encodeURIComponent(JSON.stringify(row))
} }
}); });

Loading…
Cancel
Save