完善项目周报功能:

修改项目周报界面
 修改项目周报暂存逻辑
 完善项目周报部分逻辑
dev
lh 2 days ago
parent 4f82ee173e
commit 8deb7a579c

@ -68,6 +68,8 @@ export interface ProjectReportVO extends BaseEntity, extraInfo {
* *
*/ */
projectCode?: string; projectCode?: string;
status?: string;
} }
export interface ProjectReportForm extends BaseEntity, extraInfo { export interface ProjectReportForm extends BaseEntity, extraInfo {
@ -140,6 +142,8 @@ export interface ProjectReportForm extends BaseEntity, extraInfo {
* *
*/ */
projectCode?: string; projectCode?: string;
status?: string;
} }
export interface ProjectReportQuery extends PageQuery, extraInfo { export interface ProjectReportQuery extends PageQuery, extraInfo {
@ -211,6 +215,8 @@ export interface ProjectReportQuery extends PageQuery, extraInfo {
* *
*/ */
params?: any; params?: any;
status?: string;
} }
export interface extraInfo { export interface extraInfo {

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

@ -107,7 +107,7 @@ const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const { project_category } = toRefs<any>(proxy?.useDict('project_category')); const { project_category } = toRefs<any>(proxy?.useDict('project_category'));
const loading = ref(true); const loading = ref(false);
const showSearch = ref(true); const showSearch = ref(true);
const total = ref(0); const total = ref(0);
// //

File diff suppressed because it is too large Load Diff

@ -27,16 +27,6 @@
<el-button icon="Refresh" @click="resetQuery"></el-button> <el-button icon="Refresh" @click="resetQuery"></el-button>
</el-form-item> </el-form-item>
<el-row :gutter="10" class="form-row"> <el-row :gutter="10" class="form-row">
<el-col :span="12"> </el-col>
<el-col :span="12"> </el-col>
</el-row>
<el-row :gutter="10" class="form-row">
<el-col :span="12"> </el-col>
<el-col :span="12"> </el-col>
</el-row>
<el-row :gutter="10" class="form-row">
<el-col :span="12"> </el-col>
<el-col :span="12"> </el-col>
<el-col :span="12" v-show="false"> <el-col :span="12" v-show="false">
<el-form-item label="周报ID" prop="reportId"> <el-form-item label="周报ID" prop="reportId">
<el-input v-model="queryParams.reportId" placeholder="请点击右侧图标选择项目" /> <el-input v-model="queryParams.reportId" placeholder="请点击右侧图标选择项目" />
@ -93,9 +83,6 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row :gutter="10" class="form-row">
<el-col :span="24"> </el-col>
</el-row>
</el-form> </el-form>
</el-card> </el-card>
</div> </div>
@ -107,11 +94,11 @@
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="primary" plain icon="Plus" @click="handleAdd(null)" 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>
<el-col :span="1.5"> <!-- <el-col :span="1.5">
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" v-hasPermi="['oa/erp:projectReport:edit']" <el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" v-hasPermi="['oa/erp:projectReport:edit']"
>修改</el-button >修改</el-button
> >
</el-col> </el-col> -->
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" v-hasPermi="['oa/erp:projectReport:remove']" <el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" v-hasPermi="['oa/erp:projectReport:remove']"
>删除</el-button >删除</el-button
@ -126,41 +113,41 @@
<!-- 项目周报信息表格展示 --> <!-- 项目周报信息表格展示 -->
<el-table v-loading="loading" border :data="projectReportList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" border :data="projectReportList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" /> <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="reportId" width="100" v-if="columns[0].visible" />
<el-table-column label="项目ID" align="center" prop="projectId" v-if="columns[1].visible" /> <el-table-column label="项目ID" align="center" prop="projectId" width="100" 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="projectName" width="150" 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="projectCode" width="150" 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="milestonePlan" width="100" 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" width="100" v-if="columns[5].visible" />
<el-table-column label="部门名称" align="center" prop="deptName" v-if="columns[6].visible" /> <el-table-column label="部门名称" align="center" prop="deptName" width="150" 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" width="100" 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" width="100" 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" width="150" v-if="columns[9].visible" />
<el-table-column label="排序号" align="center" prop="sortOrder" v-if="columns[10].visible" /> <el-table-column label="排序号" align="center" prop="sortOrder" width="100" v-if="columns[10].visible" />
<el-table-column label="附件ID" align="center" prop="ossId" v-if="columns[11].visible" /> <el-table-column label="附件ID" align="center" prop="ossId" width="100" 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" width="150" 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" width="100" v-if="columns[13].visible" />
<el-table-column label="创建时间" align="center" prop="createTime" width="100" v-if="columns[14].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" 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"> <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" v-if="scope.row.status === '0'">
<el-button link type="primary" icon="Plus" @click="handleAdd(scope.row)" v-hasPermi="['oa/erp:projectReport:add']"></el-button> <el-button link type="primary" icon="Plus" @click="handleAdd(scope.row)" v-hasPermi="['oa/erp:projectReport:add']"></el-button>
</el-tooltip> </el-tooltip>
<el-tooltip content="查看详情" placement="top"> <el-tooltip content="修改" placement="top" v-if="scope.row.status === '1'">
<el-button link type="info" icon="DocumentChecked" @click="handleView(scope.row)"></el-button>
</el-tooltip>
<!-- <el-tooltip content="修改" placement="top">
<el-button <el-button
link link
type="primary" type="success"
icon="Edit" icon="Edit"
@click="handleUpdateReport(scope.row)" @click="handleUpdateReport(scope.row)"
v-hasPermi="['oa/erp:projectReport:edit']" v-hasPermi="['oa/erp:projectReport:edit']"
></el-button> ></el-button>
</el-tooltip> --> </el-tooltip>
<el-tooltip content="查看详情" placement="top">
<el-button link type="info" icon="DocumentChecked" @click="handleView(scope.row)"></el-button>
</el-tooltip>
<el-tooltip content="删除" placement="top"> <el-tooltip content="删除" placement="top">
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['oa/erp:projectReport:remove']"></el-button> <el-button link type="danger" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['oa/erp:projectReport:remove']"></el-button>
</el-tooltip> </el-tooltip>
</template> </template>
</el-table-column> </el-table-column>
@ -251,15 +238,8 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="附件" prop="ossId"> <el-form-item label="备注" prop="remark">
<el-button type="primary" plain icon="Upload" @click="handleFile"></el-button> <el-input v-model="form.remark" type="textarea" placeholder="请输入备注" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="10" class="form-row" v-show="false">
<el-col :span="12" v-show="false">
<el-form-item label="排序号" prop="sortOrder">
<el-input v-model="form.sortOrder" placeholder="请输入排序号" />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
@ -270,8 +250,15 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="备注" prop="remark"> <el-form-item label="附件" prop="ossId">
<el-input v-model="form.remark" type="textarea" placeholder="请输入备注" /> <FileUpload
v-model="ossIdString"
:limit="5"
:fileSize="20"
:fileType="['doc', 'docx', 'pdf', 'xls', 'xlsx', 'jpg', 'jpeg', 'png']"
:disabled="false"
:isShowTip="true"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12" v-show="false"> <el-col :span="12" v-show="false">
@ -300,22 +287,6 @@
</div> </div>
</template> </template>
</el-dialog> </el-dialog>
<!-- 添加或修改OSS对象存储对话框 -->
<el-dialog v-model="dialogOSS.visible" :title="dialogOSS.title" width="500px" append-to-body>
<el-form ref="ossFormRef" :model="form" :rules="rules" label-width="80px">
<el-form-item label="文件名">
<fileUpload v-if="type === 0" v-model="ossFileModel" />
<imageUpload v-if="type === 1" v-model="ossFileModel" />
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submitOss"> </el-button>
<el-button @click="cancelOss"> </el-button>
</div>
</template>
</el-dialog>
</el-card> </el-card>
</div> </div>
</template> </template>
@ -325,6 +296,7 @@ import { ProjectReportVO, ProjectReportQuery, ProjectReportForm } from '@/api/oa
import { listProjectReport, getProjectReport, delProjectReport, addProjectReport, updateProjectReport } from '@/api/oa/erp/projectReport'; import { listProjectReport, getProjectReport, delProjectReport, addProjectReport, updateProjectReport } from '@/api/oa/erp/projectReport';
import { allListDept } from '@/api/system/dept'; import { allListDept } from '@/api/system/dept';
import { listUserByDeptId } from '@/api/system/user'; import { listUserByDeptId } from '@/api/system/user';
import FileUpload from '@/components/FileUpload/index.vue';
const { proxy } = getCurrentInstance() as ComponentInternalInstance; const { proxy } = getCurrentInstance() as ComponentInternalInstance;
@ -362,7 +334,7 @@ const columns = ref<FieldOption[]>([
{ key: 9, label: `周报情况说明`, visible: true }, { key: 9, label: `周报情况说明`, visible: true },
{ key: 10, label: `排序号`, visible: false }, { 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: false },
{ key: 13, label: `激活标识`, visible: false }, { key: 13, label: `激活标识`, visible: false },
{ key: 14, label: `创建时间`, visible: true }, { key: 14, label: `创建时间`, visible: true },
{ key: 15, label: `更新时间`, visible: true } { key: 15, label: `更新时间`, visible: true }
@ -385,7 +357,8 @@ const initFormData: ProjectReportForm = {
deptName: undefined, deptName: undefined,
managerName: undefined, managerName: undefined,
chargeName: undefined, chargeName: undefined,
deputyName: undefined deputyName: undefined,
status: undefined
}; };
const data = reactive<PageData<ProjectReportForm, ProjectReportQuery>>({ const data = reactive<PageData<ProjectReportForm, ProjectReportQuery>>({
form: { ...initFormData }, form: { ...initFormData },
@ -409,6 +382,7 @@ const data = reactive<PageData<ProjectReportForm, ProjectReportQuery>>({
managerName: undefined, managerName: undefined,
chargeName: undefined, chargeName: undefined,
deputyName: undefined, deputyName: undefined,
status: undefined,
params: {} params: {}
}, },
rules: { rules: {
@ -419,43 +393,16 @@ const data = reactive<PageData<ProjectReportForm, ProjectReportQuery>>({
const { queryParams, form, rules } = toRefs(data); const { queryParams, form, rules } = toRefs(data);
const type = ref(0); //
// OSS const ossIdString = computed({
const dialogOSS = reactive<DialogOption>({ get() {
visible: false, const v = form.value.ossId as any;
title: '' return v === undefined || v === null ? '' : String(v);
}); },
/** 文件按钮操作 */ set(val: string) {
const handleFile = () => { form.value.ossId = val || (undefined as any);
type.value = 0;
//
ossFileModel.value = form.value.ossId as any;
dialogOSS.visible = true;
dialogOSS.title = '上传周报附件';
};
// OSS v-model form
const ossFileModel = ref<string | string[] | undefined>(undefined);
// v-model ossId
const submitOss = () => {
// ossId
form.value.ossId = ossFileModel.value as any;
dialogOSS.visible = false;
proxy?.$modal.msgSuccess('附件已更新');
};
function cancelOss() {
dialogOSS.visible = false;
}
// ossId
//
watch(
() => form.value.ossId,
(val) => {
if (!dialog.visible) {
ossFileModel.value = val as any;
}
} }
); });
const deptList = ref<any[]>([]); const deptList = ref<any[]>([]);
const managerList = ref<any[]>([]); const managerList = ref<any[]>([]);
@ -633,12 +580,12 @@ const handleView = (row?: ProjectReportVO) => {
/** 修改按钮操作 */ /** 修改按钮操作 */
const handleUpdateReport = (row?: ProjectReportVO) => { const handleUpdateReport = (row?: ProjectReportVO) => {
reset(); reset();
const _projectId = row?.projectId; const _reportId = row?.reportId;
proxy.$tab.closePage(route); proxy.$tab.closePage(route);
router.push({ router.push({
path: '/project/projectReport/edit', path: '/project/projectReport/edit',
query: { query: {
id: _projectId, id: _reportId,
type: 'update', type: 'update',
// 便使 // 便使
reportData: encodeURIComponent(JSON.stringify(row)) reportData: encodeURIComponent(JSON.stringify(row))

Loading…
Cancel
Save