| | |
| | | import { computed, watch } from 'vue'; |
| | | |
| | | import { useVbenModal } from '#/packages/effects/common-ui/src'; |
| | | import { MesPdDocumentTypeEnum } from '#/packages/constants/src'; |
| | | import { MesPdDocumentTypeEnum, MesPdProjectStatusEnum } from '#/packages/constants/src'; |
| | | |
| | | import { message } from 'ant-design-vue'; |
| | | |
| | |
| | | formType: FormType; |
| | | gridHeight?: number | string; |
| | | projectId: number; |
| | | projectStatus?: number; |
| | | tableTitle?: string; |
| | | version?: string; |
| | | }>(), |
| | |
| | | }, |
| | | ); |
| | | |
| | | const isEditable = computed(() => |
| | | ['create', 'update'].includes(props.formType), |
| | | /** 是否允许新增/编辑/删除资料 */ |
| | | const canEdit = computed(() => |
| | | props.projectStatus === undefined || |
| | | props.projectStatus === MesPdProjectStatusEnum.PENDING_PUBLISH || |
| | | props.projectStatus === MesPdProjectStatusEnum.PENDING_UPLOAD, |
| | | ); |
| | | |
| | | const [DocumentFormModal, documentFormModalApi] = useVbenModal({ |
| | |
| | | |
| | | async function handleDelete(row: MesPdDocumentApi.Document) { |
| | | const hideLoading = message.loading({ |
| | | content: $t('ui.actionMessage.deleting', [row.name]), |
| | | content: $t('ui.actionMessage.deleting', [row.documentName]), |
| | | duration: 0, |
| | | }); |
| | | try { |
| | | await deletePdDocument(row.id!); |
| | | message.success($t('ui.actionMessage.deleteSuccess', [row.name])); |
| | | message.success($t('ui.actionMessage.deleteSuccess', [row.documentName])); |
| | | handleRefresh(); |
| | | } finally { |
| | | hideLoading(); |
| | | } |
| | | } |
| | | |
| | | function handlePreview(row: MesPdDocumentApi.Document) { |
| | | if (row.fileUrl) { |
| | | window.open(row.fileUrl, '_blank'); |
| | | } |
| | | } |
| | | |
| | |
| | | pageNo: page.currentPage, |
| | | pageSize: page.pageSize, |
| | | projectId: props.projectId, |
| | | version: props.version, |
| | | documentVersion: props.version, |
| | | ...formValues, |
| | | }); |
| | | }, |
| | |
| | | <template> |
| | | <DocumentFormModal @success="handleRefresh" /> |
| | | <Grid :table-title="tableTitle"> |
| | | <template v-if="isEditable" #toolbar-tools> |
| | | <template v-if="canEdit" #toolbar-tools> |
| | | <TableAction |
| | | :actions="[ |
| | | { |
| | | label: '上传附件', |
| | | label: '上传资料', |
| | | type: 'primary', |
| | | icon: ACTION_ICON.ADD, |
| | | onClick: handleCreate, |
| | |
| | | ]" |
| | | /> |
| | | </template> |
| | | <template #file="{ row }"> |
| | | <a v-if="row.fileUrl" :href="row.fileUrl" target="_blank" class="text-primary"> |
| | | {{ row.fileName || '查看文件' }} |
| | | </a> |
| | | <span v-else class="text-gray-400">-</span> |
| | | </template> |
| | | <template #actions="{ row }"> |
| | | <TableAction |
| | | :actions="[ |
| | | { |
| | | label: '预览', |
| | | type: 'link', |
| | | ifShow: !!row.fileUrl, |
| | | onClick: handlePreview.bind(null, row), |
| | | }, |
| | | { |
| | | label: $t('common.edit'), |
| | | type: 'link', |
| | | icon: ACTION_ICON.EDIT, |
| | | ifShow: isEditable, |
| | | ifShow: canEdit, |
| | | onClick: handleEdit.bind(null, row), |
| | | }, |
| | | { |
| | |
| | | type: 'link', |
| | | danger: true, |
| | | icon: ACTION_ICON.DELETE, |
| | | ifShow: isEditable, |
| | | ifShow: canEdit, |
| | | popConfirm: { |
| | | title: $t('ui.actionMessage.deleteConfirm', [row.name]), |
| | | title: $t('ui.actionMessage.deleteConfirm', [row.documentName]), |
| | | confirm: handleDelete.bind(null, row), |
| | | }, |
| | | }, |