| | |
| | | |
| | | import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table'; |
| | | import { |
| | | ACTIVITY_TYPE, |
| | | cancelActivity, |
| | | deleteActivity, |
| | | finishActivity, |
| | | getActivityPage, |
| | | publishActivity, |
| | | } from '#/api/wxcp/activity'; |
| | | import { toAccessibleFileUrl } from '#/utils'; |
| | | |
| | | import { |
| | | ACTIVITY_STATUS, |
| | |
| | | formModalApi.setData({ formType: 'create' }).open(); |
| | | } |
| | | |
| | | /** 列表缩略图取封面附件的第一张,没传封面返回空串 */ |
| | | function coverUrlOf(row: WxCpActivityApi.Activity): string { |
| | | const cover = row.attachmentList?.[0]; |
| | | // 后端返回的是它自己配置域名的绝对地址,需改写成同源路径才能被 <img> 加载 |
| | | return toAccessibleFileUrl(cover?.url || cover?.previewURL); |
| | | } |
| | | |
| | | function handleDetail(row: WxCpActivityApi.Activity) { |
| | | formModalApi.setData({ formType: 'detail', id: row.id }).open(); |
| | | } |
| | |
| | | |
| | | async function handlePublish(row: WxCpActivityApi.Activity) { |
| | | await publishActivity(row.id!); |
| | | message.success('发布成功,现在可以推送和生成二维码了'); |
| | | message.success('发布成功,现在可以推送了'); |
| | | handleRefresh(); |
| | | } |
| | | |
| | |
| | | </template> |
| | | |
| | | <template #title="{ row }"> |
| | | <Button type="link" class="p-0" @click="handleDetail(row)"> |
| | | {{ row.title }} |
| | | </Button> |
| | | <div class="flex items-center gap-2"> |
| | | <!-- 封面来自附件中间表,未上传时不占位 --> |
| | | <img |
| | | v-if="coverUrlOf(row)" |
| | | :src="coverUrlOf(row)" |
| | | alt="封面" |
| | | class="h-9 w-14 shrink-0 rounded object-cover" |
| | | /> |
| | | <Button type="link" class="p-0" @click="handleDetail(row)"> |
| | | {{ row.title }} |
| | | </Button> |
| | | </div> |
| | | </template> |
| | | |
| | | <template #signupCount="{ row }"> |
| | |
| | | auth: ['wxcp:activity:update'], |
| | | ifShow: row.status === ACTIVITY_STATUS.DRAFT, |
| | | popConfirm: { |
| | | title: '发布后成员即可通过二维码报名,确认发布?', |
| | | title: '发布后即可推送,确认发布?', |
| | | confirm: handlePublish.bind(null, row), |
| | | }, |
| | | }, |
| | |
| | | { |
| | | label: '二维码', |
| | | type: 'link', |
| | | ifShow: row.status === ACTIVITY_STATUS.PUBLISHED, |
| | | // 只有数据采集模板才有报名/填写页,其它模板推送即完成 |
| | | ifShow: |
| | | row.status === ACTIVITY_STATUS.PUBLISHED && |
| | | row.activityType === ACTIVITY_TYPE.FORM, |
| | | onClick: () => qrCodeModalApi.setData({ activity: row }).open(), |
| | | }, |
| | | { |
| | | label: '统计', |
| | | type: 'link', |
| | | auth: ['wxcp:activity:query'], |
| | | ifShow: row.activityType === ACTIVITY_TYPE.FORM, |
| | | onClick: () => statsModalApi.setData({ activity: row }).open(), |
| | | }, |
| | | { |
| | | label: '报名记录', |
| | | type: 'link', |
| | | auth: ['wxcp:signup:query'], |
| | | ifShow: row.activityType === ACTIVITY_TYPE.FORM, |
| | | onClick: () => signupModalApi.setData({ activity: row }).open(), |
| | | }, |
| | | ]" |