| | |
| | | </el-dropdown> --> |
| | | <el-button :loading="submitLoading" @click="handleSubmit">提交</el-button> |
| | | <el-button :loading="auditLoading" @click="handleAudit">审核</el-button> |
| | | <el-button :loading="reverseAuditLoading" @click="handleReverseAudit">反审核</el-button> |
| | | <!-- <el-button :loading="reverseAuditLoading" @click="handleReverseAudit">反审核</el-button> --> |
| | | <el-button :loading="deleteLoading" @click="handleDelete">删除</el-button> |
| | | </div> |
| | | |
| | |
| | | <template #projectStage="{ row }"> |
| | | <dict-tag :options="plan_status" :value="row.projectStage" /> |
| | | </template> |
| | | <template #salesContractCount="{ row }"> |
| | | <el-button link type="primary" @click="handleOpenContractDialog(row)">{{ row.salesContractCount || 0 }}</el-button> |
| | | </template> |
| | | <template #action="{ row }"> |
| | | <el-button link type="primary" @click="handleEdit(row)">编辑</el-button> |
| | | <el-button link type="primary" :loading="progressBtnLoadingId===row.id" @click="handleProgressReport(row)">进度汇报</el-button> |
| | | <el-button link type="primary" @click="handleArchive(row)">文档归档</el-button> |
| | | <el-button link type="primary" @click="handleDetail(row)">详情</el-button> |
| | | </template> |
| | | </PIMTable> |
| | | </div> |
| | | |
| | | <FormDia ref="formDiaRef" @completed="getList" /> |
| | | <ArchiveDialog v-model="archiveVisible" :project-id="archiveProjectId" /> |
| | | <ContractListDialog v-model="contractVisible" :project-id="contractProjectId" /> |
| | | <ProgressReportDialog |
| | | v-model="progressReportVisible" |
| | | :project-id="progressProjectId" |
| | |
| | | import SearchPanel from '@/components/SearchPanel/index.vue' |
| | | import PIMTable from '@/components/PIMTable/PIMTable.vue' |
| | | import FormDia from './components/formDia.vue' |
| | | import ArchiveDialog from './components/ArchiveDialog.vue' |
| | | import ContractListDialog from './components/ContractListDialog.vue' |
| | | import ProgressReportDialog from '@/components/ProjectManagement/ProgressReportDialog.vue' |
| | | import { |
| | | listProject, |
| | |
| | | const progressPlanNodes = ref([]) |
| | | const progressDefaultPlanNodeId = ref(undefined) |
| | | const progressBtnLoadingId = ref(null) |
| | | const archiveVisible = ref(false) |
| | | const archiveProjectId = ref(null) |
| | | const contractVisible = ref(false) |
| | | const contractProjectId = ref(null) |
| | | const submitLoading = ref(false) |
| | | const auditLoading = ref(false) |
| | | const reverseAuditLoading = ref(false) |
| | |
| | | { label: '立项日期', prop: 'setupDate', align: 'center', width: '120' }, |
| | | { label: '项目来源', prop: 'projectSource', align: 'center' }, |
| | | { label: '项目分类', prop: 'projectClassification', align: 'center' }, |
| | | { label: '销售合同总数', prop: 'salesContractCount', align: 'center', dataType: 'slot', slot: 'salesContractCount' }, |
| | | { label: '操作', prop: 'action', align: 'center', width: '250', dataType: 'slot', slot: 'action', fixed: 'right' } |
| | | ] |
| | | |
| | |
| | | projectType: r.planName ?? r.projectType, |
| | | projectSource: r.source ?? r.projectSource, |
| | | projectClassification: r.departmentName ?? r.projectClassification, |
| | | salesContractCount: r.salesContractCount, |
| | | raw: r |
| | | })) |
| | | pagination.value.total = response?.total || response?.data?.total || 0 |
| | |
| | | actualStartTime: payload.actualStartTime || null, |
| | | actualEndTime: payload.actualEndTime || null, |
| | | progress: Number(payload.totalProgress ?? payload.completionProgress ?? 0) || 0, |
| | | attachmentIds: Array.isArray(payload.attachmentIds) ? payload.attachmentIds : [] |
| | | storageBlobDTOs: Array.isArray(payload.storageBlobDTOs) ? payload.storageBlobDTOs : [] |
| | | } |
| | | const res = await saveStage(req) |
| | | if (res?.code === 200) { |
| | |
| | | formDiaRef.value?.openDialog({ operationType: 'edit', row }) |
| | | } |
| | | |
| | | function handleArchive(row) { |
| | | if (!row?.id) return |
| | | archiveProjectId.value = row.id |
| | | archiveVisible.value = true |
| | | } |
| | | |
| | | function handleOpenContractDialog(row) { |
| | | if (!row?.id) return |
| | | contractProjectId.value = row.id |
| | | contractVisible.value = true |
| | | } |
| | | |
| | | onMounted(() => { |
| | | getList() |
| | | }) |
| | |
| | | border-radius: 4px; |
| | | } |
| | | .table-actions { |
| | | margin-bottom: 15px; |
| | | display: flex; |
| | | align-items: center; |
| | | gap: 10px; |
| | | text-align: right; |
| | | margin-bottom: 10px; |
| | | } |
| | | </style> |