搜索结果列表页面开发

This commit is contained in:
付民康
2025-03-12 18:41:20 +08:00
commit 7cebe8fc00
739 changed files with 88149 additions and 0 deletions

View File

@@ -0,0 +1,166 @@
<!-- 项目事件 -->
<script setup lang="ts">
import { toRefs } from 'vue';
interface Event {
eventData:any;
};
const visibilityMap = new Map([
[0, '私有'],
[20, '公开']
]);
const LockStatus = (state:any) => {
return state ? '锁定' : '未锁定';
};
const DeleteStatus = (state:any) => {
return state ? '已删除' : '未删除';
};
const switchArr = (arr:any[]) => {
return arr[0] && !arr[1] ? '关闭' : '开启';
};
const props = defineProps<Event>();
const { title } = toRefs(props.eventData);
title.value = typeof title.value === 'string' && /^[\[\{/]/.test(title.value) ? JSON.parse(title.value) : title.value;
</script>
<template>
<div class="detail">
<div v-if="eventData.target_type==='MergeRequest'" class="merge">
<slot name="mergeRequest" :dataRaw="eventData">
<div class="text-xs mb-1"><span>源分支</span><span>{{eventData.merge_request_info.source_branch}}</span></div>
<div class="text-xs mb-1"><span>目标分支</span><span>{{ eventData.merge_request_info.target_branch }}</span></div>
<div class="flex items-center text-xs" v-if="eventData.target_title">
<Icon name="gt-tooltip" size="14px" class="mr-1 my-[2px]"></Icon>
<GLink :href="eventData._links?.action_type">
<span class="break-all">{{ eventData.target_title }}</span>
</GLink>
</div>
</slot>
</div>
<div v-else-if="eventData.target_type==='Issue'" class="issue">
<slot name="Issue" :dataRaw="eventData">
<div class="text-xs">
<GLink :href="eventData._links?eventData._links.action_type:'#'">
<span class="break-all">{{ eventData.target_title }}</span>
</GLink>
</div>
</slot>
</div>
<div v-else-if="eventData.target_type==='Label'" class="label">
<slot name="Label" :dataRaw="eventData">
<div class="flex items-center text-xs">
<Icon name="icon-add-label" size="14px" class="mr-1 my-[2px]"></Icon>
<GLink :href="eventData._links?eventData._links.action_type:'#'">
<span class="break-all">{{ eventData.target_title }}</span>
</GLink>
</div>
</slot>
</div>
<div v-else-if="eventData.target_type==='Note'" class="comment">
<slot name="Note" :dataRaw="eventData">
<template v-if="eventData.note">
<div>
<GLink :href="eventData._links?eventData._links.action_type:'#'">
<span>{{ eventData.note.body }}</span>
</GLink>
</div>
</template>
<div class="flex items-center text-xs">
<Icon name="gt-tooltip" size="14px" class="mr-1 my-[2px]"></Icon>
<span class="break-all">{{ eventData.target_title }}</span>
</div>
</slot>
</div>
<div v-else-if="eventData.target_type==='Milestone'" class="miles-stone">
<slot name="Milestone" :dataRaw="eventData">
<div class="flex items-center text-xs">
<Icon name="gt-milestone" size="14px" class="mr-1 my-[2px]"></Icon>
<GLink :href="eventData._links?.action_type"><span class="font-[600]">{{ eventData.target_title }}</span></GLink>
</div>
</slot>
</div>
<div v-else-if="eventData.target_type==='Project'" class="repo">
<slot name="Project" :dataRaw="eventData">
<template v-if="title">
<div v-if="title.name" class="text-xs break-all"><span>项目名称</span><span class="mx-1">{{title.name[0]}}</span>改为<span class="mx-1">{{title.name[1]}}</span></div>
<div v-if="title.path" class="text-xs"><span>项目路径</span><span class="mx-1">{{title.path[0]}}</span>改为<span class="mx-1">{{title.path[1]}}</span></div>
<div v-if="title.description" class="text-xs"><span>项目描述</span><span class="mx-1">{{title.description[0]}}</span>改为<span class="mx-1">{{title.description[1]}}</span></div>
<div v-if="title.namespace" class="text-xs"><span>项目所属</span><span class="mx-1">{{title.namespace[0]}}</span>改为<span class="mx-1">{{title.namespace[1]}}</span></div>
<div v-if="title.archived" class="text-xs"><span>项目锁定</span><span class="mx-1">{{LockStatus(title.archived[0])}}</span>改为<span class="mx-1">{{LockStatus(title.archived[1])}}</span></div>
<div v-if="title.pending_delete" class="text-xs"><span>删除状态</span><span class="mx-1">{{DeleteStatus(title.pending_delete[0])}}</span>改为<span class="mx-1">{{DeleteStatus(title.pending_delete[1])}}</span></div>
<div v-if="title.visibility_level" class="text-xs">
<span>项目权限</span>
<span class="mx-1">{{visibilityMap.get(title.visibility_level[0])}}</span>改为
<span class="mx-1">{{visibilityMap.get(title.visibility_level[1])}}</span>
</div>
<div v-if="title.lfs_enabled" class="text-xs"><span>{{ switchArr(title.lfs_enabled) }}</span><span>Git LFS</span></div>
</template>
</slot>
</div>
<div v-else-if="eventData.target_type==='Group'" class="org">
<slot name="Group" :dataRaw="eventData">
<div v-if="eventData.group">
<div class="flex items-center text-xs">
<GAvatar :src="eventData.group.avatar_url" :name="eventData.group.name" :width="24" :height="24" :is_round="false" class="cursor-pointer mr-2"></GAvatar>
<div class="break-all">
<GLink :href="eventData._links?.group">
<span class="break-all">{{ eventData.group.name }}</span>
</GLink>
</div>
</div>
<div v-if="eventData.group.description" class="flex items-center text-xs mt-2">
<span class="break-all text-CG500">{{ eventData.group.description }}</span>
</div>
</div>
</slot>
</div>
<div v-else-if="eventData.target_type===null" class="other">
<template v-if="eventData.action_name ==='pushed to'">
<div class="text-xs"><span>目标分支</span><span class="break-all">{{eventData.push_data.ref }}</span></div>
<div class="flex items-center text-xs">
<Icon name="gt-tooltip" size="14px" class="mr-1 my-[2px]"></Icon>
<span class="break-all">{{ eventData.push_data.commit_title }}</span>
</div>
</template>
<template v-if="(eventData.action_name ==='pushed new'||eventData.action_name ==='deleted')&&eventData.push_data">
<div v-if="eventData.push_data.ref_type==='branch'">
<div class="text-xs"><span>分支名称</span><span class="break-all">{{eventData.push_data.ref}}</span></div>
<div class="flex items-center text-xs" v-if="eventData.push_data.commit_title">
<Icon name="gt-tooltip" size="14px" class="mr-1 my-[2px]"></Icon>
<span class="break-all">{{ eventData.push_data.commit_title }}</span>
</div>
</div>
<div v-if="eventData.push_data.ref_type==='tag'">
<div class="text-xs mb-1"><span>Tag名称</span><span class="break-all">{{eventData.push_data.ref}}</span></div>
<div class="flex items-center text-xs" v-if="eventData.push_data.commit_title">
<Icon name="gt-tooltip" size="14px" class="mr-1 my-[2px]"></Icon>
<span class="break-all">{{ eventData.push_data.commit_title }}</span>
</div>
</div>
</template>
<template v-if="eventData.action_name ==='created'">
<div class="text-xs">
<span>创建了项目</span>
<GLink :href="eventData._links?.project"><span class="break-all">{{eventData.project_name}}</span></GLink>
</div>
</template>
<template v-if="eventData.action_name ==='batch delete branches'">批量删除了分支
</template>
<template v-if="eventData.action_name ==='imported'||eventData.action_name ==='left'||eventData.action_name ==='joined'">
<div class="text-xs" v-if="eventData.project_name"><span>项目名称:</span><span class="break-all">{{eventData.project_name}}</span></div>
<div class="text-xs" v-else><span>组织名称</span><span class="break-all">{{eventData.project_name}}</span></div>
</template>
<template v-if="eventData.action_name ==='change member'&&eventData.title">
<div class="text-xs"><span>操作人</span><span>{{eventData.title.username.join(",")}}</span></div>
<div class="flex items-center text-xs" v-if="eventData.title.change">
<Icon name="gt-tooltip" size="14px" class="mr-1 my-[2px]"></Icon>
<span class="break-all">{{ eventData.title.change }}</span>
</div>
</template>
<template v-if="eventData.action_name ==='removed due to membership expiration from'">
<div><span class="break-all">由于有效期到期{{eventData.author_username}}已自动退出{{ eventData.project_name }}</span></div>
</template>
</div>
<!-- 其它的类型 -->
<slot name="expandType" :dataRaw="eventData"></slot>
</div>
</template>