Compare commits

...

2 Commits

@ -1,5 +1,5 @@
import { ProjectReportVO, ProjectReportForm, ProjectReportQuery } from '@/api/oa/erp/projectReport/types';
export interface ProjectReportDetailVO extends extraInfo {
export interface ProjectReportDetailVO extends BaseEntity, extraInfo {
/**
* ID
*/

@ -135,144 +135,115 @@
<ProjectSelect ref="projectSelectRef" :multiple="false" @confirm-call-back="projectInfoSelectCallBack"></ProjectSelect>
<!-- 项目周报具体信息管理区域 -->
<el-card shadow="never" style="margin-top: 20px">
<template #header>
<div style="text-align: left; font-weight: bold; font-size: 18px">项目周报具体信息</div>
</template>
<el-card shadow="never">
<template #header>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="success"
plain
icon="Edit"
:disabled="single"
@click="handleUpdate()"
v-if="routeParams.type === 'view' && routeParams.reportData"
v-hasPermi="['oa/erp:projectReportDetail:edit']"
>修改</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="Delete"
:disabled="multiple"
@click="handleDelete()"
v-if="routeParams.type === 'view' && routeParams.reportData"
v-hasPermi="['oa/erp:projectReportDetail:remove']"
>删除</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="Download"
@click="handleExport"
v-hasPermi="['oa/erp:projectReportDetail:export']"
v-if="routeParams.type === 'view'"
>导出</el-button
>
</el-col>
<right-toolbar v-model:showSearch="showSearch" :columns="columns" :search="false" @queryTable="getProjectDetail"></right-toolbar>
</el-row>
</template>
<el-card shadow="hover" style="margin-top: 20px">
<div style="text-align: left; font-weight: bold; font-size: 18px">项目周报具体信息</div>
</el-card>
<!-- 项目周报具体信息表格 -->
<!-- <div style="margin-bottom: 16px">
<el-button
type="success"
plain
icon="Edit"
:disabled="single"
@click="handleUpdate()"
v-if="routeParams.type === 'view' && routeParams.reportData"
v-hasPermi="['oa/erp:projectReportDetail:edit']"
>修改</el-button
>
<el-button
type="danger"
plain
icon="Delete"
:disabled="multiple"
@click="handleDelete()"
v-if="routeParams.type === 'view' && routeParams.reportData"
v-hasPermi="['oa/erp:projectReportDetail:remove']"
>删除</el-button
>
<el-button
type="warning"
plain
icon="Download"
@click="handleExport"
v-hasPermi="['oa/erp:projectReportDetail:export']"
v-if="routeParams.type === 'view'"
>导出</el-button
>
</div> -->
<el-table
v-loading="loading"
border
:data="projectReportDetailList"
v-if="routeParams.type !== 'add' && routeParams.type !== 'approval'"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="项目周报明细ID" align="center" prop="reportDetailId" v-if="columns[0].visible" />
<el-table-column label="项目周报ID" align="center" prop="reportId" v-if="columns[1].visible" />
<el-table-column label="项目ID" align="center" prop="projectId" v-if="columns[2].visible" />
<el-table-column label="填写日期" align="center" prop="fillTime" width="180" v-if="columns[3].visible">
<template #default="scope">
<span>{{ parseTime(scope.row.fillTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
</el-table-column>
<el-table-column label="所在的工作周" align="center" prop="currentWorkWeek" v-if="columns[4].visible" />
<el-table-column label="所属里程碑" align="center" prop="milestonePlan" v-if="columns[5].visible" />
<el-table-column label="二级进度阶段" align="center" prop="secondaryPhase" v-if="columns[6].visible" />
<el-table-column label="本周完成工作" align="center" prop="tasksCompleted" v-if="columns[7].visible" />
<el-table-column label="下周计划" align="center" prop="nextPlan" v-if="columns[8].visible" />
<el-table-column label="风险及解决措施" align="center" prop="riskResolution" v-if="columns[9].visible" />
<el-table-column label="项目状态" align="center" prop="scheduleStatus" v-if="columns[12].visible">
<template #default="scope">
<dict-tag :options="project_risk_status" :value="scope.row.scheduleStatus" />
</template>
</el-table-column>
<el-table-column label="计划完成率" align="center" prop="plannedCompletionRate" v-if="columns[10].visible" />
<el-table-column label="周报情况说明" align="center" prop="informationNote" v-if="columns[11].visible" />
<el-table-column label="周报状态(1暂存 2审批中 3可用)" align="center" prop="projectReportStatus" v-if="columns[13].visible">
<template #default="scope">
<dict-tag :options="project_report_status" :value="scope.row.projectReportStatus" />
</template>
</el-table-column>
<el-table-column label="流程状态" align="center" prop="flowStatus" v-if="columns[14].visible" />
<el-table-column label="排序号" align="center" prop="sortOrder" v-if="columns[15].visible" />
<el-table-column label="项目阶段(预留)" align="center" prop="projectPhases" v-if="columns[16].visible" />
<el-table-column label="合同ID(预留)" align="center" prop="contractId" v-if="columns[17].visible" />
<el-table-column label="附件ID" align="center" prop="ossId" v-if="columns[18].visible" />
<el-table-column label="备注" align="center" prop="remark" v-if="columns[19].visible" />
<el-table-column label="激活标识" align="center" prop="activeFlag" v-if="columns[20].visible" />
<el-table-column label="操作" align="center" fixed="right" width="150" v-if="routeParams.type !== 'view' && routeParams.type != 'approval'">
<!-- <template #default="scope">
<el-card shadow="never">
<template #header>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="success"
plain
icon="Edit"
:disabled="single"
@click="handleUpdate()"
v-if="routeParams.type === 'view' && routeParams.reportData"
v-hasPermi="['oa/erp:projectReportDetail:edit']"
>修改</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="Delete"
:disabled="multiple"
@click="handleDelete()"
v-if="routeParams.type === 'view' && routeParams.reportData"
v-hasPermi="['oa/erp:projectReportDetail:remove']"
>删除</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="Download"
@click="handleExport"
v-hasPermi="['oa/erp:projectReportDetail:export']"
v-if="routeParams.type === 'view'"
>导出</el-button
>
</el-col>
<right-toolbar
v-model:showSearch="showSearch"
v-if="routeParams.type === 'view' && routeParams.reportData"
:columns="columns"
:search="false"
@queryTable="getProjectDetail"
></right-toolbar>
</el-row>
</template>
<el-table
v-loading="loading"
border
:data="projectReportDetailList"
v-if="routeParams.type !== 'add' && routeParams.type !== 'approval'"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="项目周报明细ID" align="center" prop="reportDetailId" v-if="columns[0].visible" />
<el-table-column label="项目周报ID" align="center" prop="reportId" v-if="columns[1].visible" />
<el-table-column label="项目ID" align="center" prop="projectId" v-if="columns[2].visible" />
<el-table-column label="填写日期" align="center" prop="fillTime" width="180" v-if="columns[3].visible">
<template #default="scope">
<span>{{ parseTime(scope.row.fillTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
</el-table-column>
<el-table-column label="所在的工作周" align="center" prop="currentWorkWeek" v-if="columns[4].visible" />
<el-table-column label="所属里程碑" align="center" prop="milestonePlan" v-if="columns[5].visible" />
<el-table-column label="二级进度阶段" align="center" prop="secondaryPhase" v-if="columns[6].visible" />
<el-table-column label="本周完成工作" align="center" prop="tasksCompleted" v-if="columns[7].visible" />
<el-table-column label="下周计划" align="center" prop="nextPlan" v-if="columns[8].visible" />
<el-table-column label="风险及解决措施" align="center" prop="riskResolution" v-if="columns[9].visible" />
<el-table-column label="项目状态" align="center" prop="scheduleStatus" v-if="columns[12].visible">
<template #default="scope">
<dict-tag :options="project_risk_status" :value="scope.row.scheduleStatus" />
</template>
</el-table-column>
<el-table-column label="计划完成率" align="center" prop="plannedCompletionRate" v-if="columns[10].visible" />
<el-table-column label="周报情况说明" align="center" prop="informationNote" v-if="columns[11].visible" />
<el-table-column label="周报状态(1暂存 2审批中 3可用)" align="center" prop="projectReportStatus" v-if="columns[13].visible">
<template #default="scope">
<dict-tag :options="project_report_status" :value="scope.row.projectReportStatus" />
</template>
</el-table-column>
<el-table-column label="流程状态" align="center" prop="flowStatus" v-if="columns[14].visible" />
<el-table-column label="排序号" align="center" prop="sortOrder" v-if="columns[15].visible" />
<el-table-column label="项目阶段(预留)" align="center" prop="projectPhases" v-if="columns[16].visible" />
<el-table-column label="合同ID(预留)" align="center" prop="contractId" v-if="columns[17].visible" />
<el-table-column label="附件ID" align="center" prop="ossId" v-if="columns[18].visible" />
<el-table-column label="备注" align="center" prop="remark" v-if="columns[19].visible" />
<el-table-column label="激活标识" align="center" prop="activeFlag" v-if="columns[20].visible" />
<el-table-column label="操作" align="center" fixed="right" width="150" v-if="routeParams.type !== 'view' && routeParams.type != 'approval'">
<!-- <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>
<pagination
v-show="total > 0 && routeParams.type === 'view'"
:total="total"
v-model:page="projectReportFormQuery.pageNum"
v-model:limit="projectReportFormQuery.pageSize"
@pagination="getProjectDetail"
/>
</el-card>
</el-table-column>
</el-table>
<pagination
v-show="total > 0 && routeParams.type === 'view'"
:total="total"
v-model:page="projectReportFormQuery.pageNum"
v-model:limit="projectReportFormQuery.pageSize"
@pagination="getProjectDetail"
/>
<el-form
ref="projectReportDetailFormRef"
:model="projectReportForm"
:loading="buttonLoading"
:disabled="routeParams.type === 'view' || routeParams.type === 'approval'"
:rules="reportRules"
label-width="120px"
@ -384,9 +355,9 @@
</el-form>
</el-card>
<!-- 添加或修改项目周报明细对话框 -->
<!-- 修改项目周报明细对话框 -->
<el-dialog :title="ReportDialog.title" v-model="ReportDialog.visible" width="800px" append-to-body>
<el-form ref="projectReportDetailDialogFormRef" :model="detailForm" :rules="rules" label-width="120px">
<el-form ref="projectReportDetailDialogFormRef" :model="detailForm" :rules="detailRules" label-width="120px">
<el-row :gutter="10" class="form-row">
<el-col :span="12">
<el-form-item label="项目周报ID" prop="reportId">
@ -400,15 +371,18 @@
</el-col>
</el-row>
<el-row :gutter="10" class="form-row">
<!-- 修改对话框中的日期选择器 -->
<el-col :span="12">
<el-form-item label="填写日期" prop="fillTime">
<el-date-picker
clearable
v-model="detailForm.fillTime"
type="datetime"
value-format="YYYY-MM-DD HH:mm:ss"
v-model="modifyDatePart"
type="date"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
placeholder="请选择填写日期"
style="width: 100%"
@change="handleModifyDateChange"
/>
</el-form-item>
</el-col>
@ -458,9 +432,16 @@
<el-row :gutter="10" class="form-row">
<el-col :span="12">
<el-form-item label="计划完成率" prop="plannedCompletionRate">
<el-input v-model="detailForm.plannedCompletionRate" placeholder="请输入计划完成率">
<template #append>%</template>
</el-input>
<el-input
v-model="detailForm.plannedCompletionRate"
placeholder="请输入0-1之间的数字"
clearable
type="number"
:min="0"
:max="1"
:step="0.01"
@input="validateModifyPlannedCompletionRate"
/>
</el-form-item>
</el-col>
<el-col :span="12">
@ -738,12 +719,70 @@ const projectReportDetailData = reactive<PageData<ProjectReportDetailForm, Proje
activeFlag: undefined,
params: {}
},
rules: {}
rules: {
tasksCompleted: [{ required: true, message: '本周完成工作不能为空', trigger: 'blur' }],
nextPlan: [{ required: true, message: '下周计划不能为空', trigger: 'blur' }],
secondaryPhase: [{ required: true, message: '二级进度阶段不能为空', trigger: 'blur' }],
// detailRules
plannedCompletionRate: [
{ required: false, message: '请填写计划完成率', trigger: 'blur' },
{
validator: (rule: any, value: any, callback: any) => {
if (value === null || value === undefined || value === '') {
callback();
return;
}
//
const numValue = Number(value);
//
if (isNaN(numValue)) {
callback(new Error('请输入有效的数字'));
return;
}
// 0-1
if (numValue < 0 || numValue > 1) {
callback(new Error('请输入0-1之间的数字'));
return;
}
//
const decimalPlaces = value.toString().split('.')[1];
if (decimalPlaces && decimalPlaces.length > 2) {
callback(new Error('最多支持两位小数'));
return;
}
callback();
},
trigger: 'blur'
}
]
}
});
//
const { form: detailForm, queryParams: detailQueryParams, rules: detailRules } = toRefs(projectReportDetailData);
//
const validateModifyPlannedCompletionRate = (value: string) => {
if (!value) return;
//
const numValue = Number(value);
//
if (isNaN(numValue)) {
detailForm.value.plannedCompletionRate = 0;
return;
}
// 0-1
if (numValue < 0) {
detailForm.value.plannedCompletionRate = 0;
} else if (numValue > 1) {
detailForm.value.plannedCompletionRate = 1;
} else {
//
const decimalPlaces = value.split('.')[1];
if (decimalPlaces && decimalPlaces.length > 2) {
detailForm.value.plannedCompletionRate = parseFloat(numValue.toFixed(2));
}
}
};
// OSS
const dialog = reactive<DialogOption>({
visible: false,
@ -786,7 +825,17 @@ const submitOss = () => {
dialog.visible = false;
proxy?.$modal.msgSuccess('附件已更新');
};
// ossId
//
watch(
() => form.value.ossId,
(val) => {
if (!dialog.visible) {
ossFileModel.value = val as any;
projectReportForm.value.ossId = val as any;
}
}
);
const ReportDialog = reactive<DialogOption>({
visible: false,
title: ''
@ -825,13 +874,13 @@ const columns = ref<FieldOption[]>([
{ key: 17, label: `合同ID(预留)`, visible: false },
{ key: 18, label: `附件ID`, visible: true },
{ key: 19, label: `备注`, visible: true },
{ key: 20, label: `激活标识`, visible: false },
{ 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: 26, label: `更新时间`, visible: true }
{ key: 20, label: `激活标识`, visible: false }
// { 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: 26, label: ``, visible: true }
]);
//
@ -937,7 +986,7 @@ const validatePlannedCompletionRate = (value: string) => {
const numValue = Number(value);
//
if (isNaN(numValue)) {
projectReportForm.value.plannedCompletionRate = '';
projectReportForm.value.plannedCompletionRate = 0;
return;
}
// 0-1
@ -968,6 +1017,7 @@ const formattedPlannedCompletionRate = computed(() => {
/** 表单重置 */
const reset = () => {
detailForm.value = { ...initProjectReportDetailFormData };
modifyDatePart.value = ''; //
projectReportDetailDialogFormRef.value?.resetFields();
};
/** 修改按钮操作 */
@ -976,6 +1026,34 @@ const handleUpdate = async (row?: ProjectReportDetailVO) => {
const _reportDetailId = row?.reportDetailId || ids.value[0];
const res = await getProjectReportDetail(_reportDetailId);
Object.assign(detailForm.value, res.data);
// fillTime
if (detailForm.value.fillTime) {
const [date] = detailForm.value.fillTime.split(' ');
if (date) {
modifyDatePart.value = date;
//
detailForm.value.currentWorkWeek = getWorkWeek(date);
}
} else {
//
const now = new Date();
const year = now.getFullYear();
const month = String(now.getMonth() + 1).padStart(2, '0');
const day = String(now.getDate()).padStart(2, '0');
const dateStr = `${year}-${month}-${day}`;
//
const hours = String(now.getHours()).padStart(2, '0');
const minutes = String(now.getMinutes()).padStart(2, '0');
const seconds = String(now.getSeconds()).padStart(2, '0');
const timeStr = `${hours}:${minutes}:${seconds}`;
modifyDatePart.value = dateStr;
detailForm.value.fillTime = `${dateStr} ${timeStr}`;
detailForm.value.currentWorkWeek = getWorkWeek(dateStr);
}
ReportDialog.visible = true;
ReportDialog.title = '修改项目周报明细';
};
@ -1146,6 +1224,41 @@ watch(
{ immediate: true }
);
//
const modifyDatePart = ref('');
//
const handleModifyDateChange = (selectedDate) => {
if (selectedDate) {
// 使
let timeStr = '';
if (detailForm.value.fillTime && detailForm.value.fillTime.includes(' ')) {
const [, time] = detailForm.value.fillTime.split(' ');
if (time) {
timeStr = time;
} else {
const now = new Date();
const hours = String(now.getHours()).padStart(2, '0');
const minutes = String(now.getMinutes()).padStart(2, '0');
const seconds = String(now.getSeconds()).padStart(2, '0');
timeStr = `${hours}:${minutes}:${seconds}`;
}
} else {
const now = new Date();
const hours = String(now.getHours()).padStart(2, '0');
const minutes = String(now.getMinutes()).padStart(2, '0');
const seconds = String(now.getSeconds()).padStart(2, '0');
timeStr = `${hours}:${minutes}:${seconds}`;
}
//
detailForm.value.fillTime = `${selectedDate} ${timeStr}`;
//
detailForm.value.currentWorkWeek = getWorkWeek(selectedDate);
} else {
//
detailForm.value.fillTime = '';
detailForm.value.currentWorkWeek = '';
}
};
//
const handleApprovalRecord = () => {
approvalRecordRef.value.init(projectReportForm.value.reportDetailId);
@ -1162,17 +1275,6 @@ const approvalVerifyOpen = async () => {
await submitVerifyRef.value.openDialog(routeParams.value.taskId);
};
// ossId
//
watch(
() => form.value.ossId,
(val) => {
if (!dialog.visible) {
ossFileModel.value = val as any;
projectReportForm.value.ossId = val as any;
}
}
);
const isCodeGenerated = ref(false);
//

@ -5,13 +5,7 @@
<el-card shadow="hover">
<el-form ref="queryFormRef" :model="queryParams" :inline="true" label-width="120px">
<el-form-item label="项目名称" prop="projectName">
<el-input v-model="queryParams.projectName" placeholder="请输入项目名称" clearable @keyup.enter="handleQuery">
<!-- <template #suffix>
<el-icon style="cursor: pointer; margin-right: 4px; font-size: 14px" @click="openProjectSelect">
<Search />
</el-icon>
</template> -->
</el-input>
<el-input v-model="queryParams.projectName" placeholder="请输入项目名称" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="项目编号" prop="projectCode">
<el-input v-model="queryParams.projectCode" placeholder="请输入项目编号" clearable @keyup.enter="handleQuery" />
@ -107,13 +101,11 @@
</div>
</transition>
<!-- <ProjectSelect ref="projectSelectRef" :multiple="false" @confirm-call-back="projectInfoSelectCallBack"></ProjectSelect> -->
<el-card shadow="never">
<template #header>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['oa/erp:projectReport:add']"></el-button>
<el-button type="primary" plain icon="Plus" @click="handleAdd(null)" v-hasPermi="['oa/erp:projectReport:add']"></el-button>
</el-col>
<el-col :span="1.5">
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" v-hasPermi="['oa/erp:projectReport:edit']"
@ -135,9 +127,9 @@
<el-table v-loading="loading" border :data="projectReportList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="项目周报ID" align="center" prop="reportId" v-if="columns[0].visible" />
<el-table-column label="项目ID" align="center" prop="projectId" v-if="columns[2].visible" />
<el-table-column label="项目名称" align="center" prop="projectName" v-if="columns[3].visible" />
<el-table-column label="项目编码" align="center" prop="projectCode" v-if="columns[20].visible" />
<el-table-column label="项目ID" align="center" prop="projectId" v-if="columns[1].visible" />
<el-table-column label="项目名称" align="center" prop="projectName" v-if="columns[2].visible" />
<el-table-column label="项目编码" align="center" prop="projectCode" v-if="columns[3].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="deptName" v-if="columns[6].visible" />
@ -148,11 +140,11 @@
<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="activeFlag" v-if="columns[13].visible" />
<el-table-column label="创建时间" align="center" prop="createTime" width="100" v-if="columns[17].visible" />
<el-table-column label="更新时间" align="center" prop="updateTime" width="100" v-if="columns[19].visible" />
<el-table-column label="创建时间" align="center" prop="createTime" width="100" v-if="columns[14].visible" />
<el-table-column label="更新时间" align="center" prop="updateTime" width="100" v-if="columns[15].visible" />
<el-table-column label="操作" align="center" width="150" fixed="right" class-name="small-padding fixed-width">
<template #default="scope">
<el-tooltip content="新增" placement="top">
<el-tooltip content="新增已有周报明细" placement="top">
<el-button link type="primary" icon="Plus" @click="handleAdd(scope.row)" v-hasPermi="['oa/erp:projectReport:add']"></el-button>
</el-tooltip>
<el-tooltip content="查看详情" placement="top">
@ -176,7 +168,7 @@
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
<!-- 添加或修改项目周报信息对话框 -->
<!-- 修改项目周报信息对话框 -->
<el-dialog :title="dialog.title" v-model="dialog.visible" width="800px" append-to-body>
<el-form ref="projectReportFormRef" :model="form" :rules="rules" label-width="120px">
<el-row :gutter="10" class="form-row">
@ -331,12 +323,8 @@
<script setup name="ProjectReport" lang="ts">
import { ProjectReportVO, ProjectReportQuery, ProjectReportForm } from '@/api/oa/erp/projectReport/types';
import { listProjectReport, getProjectReport, delProjectReport, addProjectReport, updateProjectReport } from '@/api/oa/erp/projectReport';
import ProjectSelect from '@/components/ProjectSelect/index.vue';
import { report } from 'process';
import { fa } from 'element-plus/es/locale/index.mjs';
import { allListDept, listDept } from '@/api/system/dept';
import { listUserByDeptAndRole, listUserByDeptId } from '@/api/system/user';
import { delProjectReportDetailByReportId } from '@/api/oa/erp/projectReportDetail/index';
import { allListDept } from '@/api/system/dept';
import { listUserByDeptId } from '@/api/system/user';
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
@ -354,8 +342,6 @@ const total = ref(0);
const queryFormRef = ref<ElFormInstance>();
//
const projectReportFormRef = ref<ElFormInstance>();
//
const projectSelectRef = ref<InstanceType<typeof ProjectSelect>>();
const dialog = reactive<DialogOption>({
visible: false,
@ -365,9 +351,9 @@ const dialog = reactive<DialogOption>({
//
const columns = ref<FieldOption[]>([
{ key: 0, label: `项目周报ID`, visible: false },
{ key: 1, label: `租户编号`, visible: false },
{ key: 2, label: `项目ID`, visible: false },
{ key: 3, label: `项目名称`, visible: true },
{ key: 1, label: `项目ID`, visible: false },
{ key: 2, label: `项目名称`, visible: true },
{ key: 3, label: `项目编码`, visible: true },
{ key: 4, label: `当前里程碑`, visible: true },
{ key: 5, label: `项目经理`, visible: true },
{ key: 6, label: `部门名称`, visible: true },
@ -378,13 +364,8 @@ const columns = ref<FieldOption[]>([
{ key: 11, label: `附件ID`, visible: true },
{ key: 12, label: `备注`, visible: true },
{ key: 13, label: `激活标识`, visible: false },
{ key: 14, label: `删除标志`, visible: false },
{ key: 15, label: `创建部门`, visible: true },
{ key: 16, label: `创建人`, visible: true },
{ key: 17, label: `创建时间`, visible: true },
{ key: 18, label: `更新人`, visible: true },
{ key: 19, label: `更新时间`, visible: true },
{ key: 20, label: `项目编码`, visible: true }
{ key: 14, label: `创建时间`, visible: true },
{ key: 15, label: `更新时间`, visible: true }
]);
const initFormData: ProjectReportForm = {
reportId: undefined,
@ -447,10 +428,10 @@ const dialogOSS = reactive<DialogOption>({
/** 文件按钮操作 */
const handleFile = () => {
type.value = 0;
dialogOSS.visible = true;
dialogOSS.title = '上传周报附件';
//
ossFileModel.value = form.value.ossId as any;
dialogOSS.visible = true;
dialogOSS.title = '上传周报附件';
};
// OSS v-model form
const ossFileModel = ref<string | string[] | undefined>(undefined);
@ -472,7 +453,6 @@ watch(
(val) => {
if (!dialog.visible) {
ossFileModel.value = val as any;
// form.value.ossId = val as any;
}
}
);
@ -502,16 +482,12 @@ const getUsersByDept = async (deptId: number | string) => {
deputyList.value = [];
return;
}
try {
loadingUsers.value = true;
//
const currentDeptUsers = await listUserByDeptId(deptId);
// ID
const currentDept = deptList.value.find((dept) => String(dept.deptId) === String(deptId));
if (currentDept) {
//
managerList.value = currentDeptUsers.data || [];
@ -524,7 +500,6 @@ const getUsersByDept = async (deptId: number | string) => {
//
deputyList.value = currentDeptUsers.data || [];
}
//
form.value.deptName = currentDept.deptName || currentDept.label;
}
@ -546,12 +521,10 @@ const handleDeptChange = async (deptId: number | string) => {
form.value.managerName = undefined;
form.value.chargeName = undefined;
form.value.deputyName = undefined;
//
managerList.value = [];
chargeList.value = [];
deputyList.value = [];
//
await getUsersByDept(deptId);
};
@ -676,7 +649,7 @@ const handleUpdateReport = (row?: ProjectReportVO) => {
const handleUpdate = async (row?: ProjectReportVO) => {
reset();
//
proxy?.$modal.loading('正在导出数据,请稍后...');
proxy?.$modal.loading('正在查询数据,请稍后...');
const _reportId = row?.reportId || ids.value[0];
const res = await getProjectReport(_reportId);

Loading…
Cancel
Save