| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- <template>
- <FlexCol>
- <Image
- v-if="currentTaskBanner"
- :src="currentTaskBanner"
- :radius="20"
- :width="690"
- mode="widthFix"
- />
- <FlexCol :gap="20">
- <TaskList
- v-for="item in currentTaskDefItems"
- :key="item.title"
- :icon="item.icon"
- :title="item.title"
- :desc="item.desc"
- :extra="item.extra"
- :goButtonText="isView ? '查看' : '去采集'"
- :enable="typeof item.enable === 'string' ? canCollect(item.enable) : item.enable"
- @click="handleClick(item)"
- />
- </FlexCol>
- </FlexCol>
- </template>
- <script setup lang="ts">
- import { onMounted, ref, watch } from 'vue';
- import { useCollectStore } from '@/store/collect';
- import { useTaskEntryForm } from '../forms/composeable/TaskEntryForm';
- import { type TaskMenuDefGoForm, type TaskMenuDefItem } from '../forms/tasks';
- import { alert } from '@/components/utils/DialogAction';
- import { getVillageInfoForm } from '../forms/forms';
- import { navTo } from '@/components/utils/PageAction';
- import FlexCol from '@/components/layout/FlexCol.vue';
- import Image from '@/components/basic/Image.vue';
- import TaskList from '../components/TaskList.vue';
- import VillageApi from '@/api/inhert/VillageApi';
- import { useAuthStore } from '@/store/auth';
- import { waitTimeOut } from '@imengyu/imengyu-utils';
- const { goForm, goPreviewForm } = useTaskEntryForm();
- const authStore = useAuthStore();
- const { canCollect, canCollectCatalog, getCollectModuleInternalNameById, collectableCatalogs } = useCollectStore();
- const props = withDefaults(defineProps<{
- villageId: number,
- villageVolunteerId: number,
- taskTitle: string,
- taskPid: number,
- isView?: boolean,
- }>(), {
- isView: false,
- });
- async function loadList() {
- await waitTimeOut(400);
- const res = (await VillageApi.getCatalogList(
- props.villageId,
- authStore.isAdmin ? undefined : props.villageVolunteerId,
- props.taskPid
- ));
- if (res.length === 0)
- return;
- currentTaskDefItems.value = res
- .map(item => {
- try {
- const collectModuleInternalName = getCollectModuleInternalNameById(item.collectModuleId);
- const formDefine = collectModuleInternalName ? getVillageInfoForm(collectModuleInternalName, -1) : undefined;
- return {
- ...item,
- extra: authStore.isAdmin && item.total >= 0 ? `已采编 ${item.total}` : '',
- enable: canCollectCatalog(item.id) || collectModuleInternalName,
- catalogItem: item,
- goForm: !item.haschild && collectModuleInternalName ? [
- collectModuleInternalName,
- item.typeId ?? -1,
- formDefine?.[2].typeName,
- collectModuleInternalName === 'overview' ? 'common' : undefined,
- item.title,
- item.id
- ] as TaskMenuDefGoForm : undefined,
- onClick: () => {
- if (item.haschild) {
- navTo('/pages/dig/forms/task', {
- ...props,
- taskTitle: item.title,
- taskPid: item.id,
- isView: props.isView,
- })
- } else {
- alert({
- title: item.title,
- content: '您暂无权限采集该板块',
- })
- }
- }
- }
- } catch (e) {
- return {
- ...item,
- desc: '' + (e instanceof Error ? e.message : e),
- enable: false,
- }
- }
- });
- }
- watch(() => props.taskPid, loadList);
- onMounted(loadList);
- const currentTaskDefItems = ref<TaskMenuDefItem[]>([]);
- const currentTaskBanner = ref('');
- const handleClick = (item: TaskMenuDefItem) => {
-
- if (!item.enable && !authStore.isAdmin) {
- uni.showToast({
- title: '您没有完成任务的权限,如需要请联系管理员',
- icon: 'none',
- duration: 2000
- });
- return;
- }
- if (item.goForm instanceof Array) {
- if (props.isView)
- goPreviewForm(...item.goForm);
- else
- goForm(...item.goForm);
- return;
- }
- else if (item.goForm) {
- navTo('/pages/dig/forms/task', {
- ...props,
- taskTitle: item.title,
- taskPid: (item as any).id,
- isView: props.isView,
- })
- return;
- }
- if (item.onClick) {
- item.onClick();
- }
- }
- </script>
|