Merge branch 'master' of https://gitcode.com/hk_openRepo/OpenRepo_Portal into junjie_dev

# Conflicts:
#	src/api/jyh/index.ts
#	src/components/AdvanceSearch/index.vue
#	src/views/Jyh/Home/index.vue
This commit is contained in:
@user8949
2025-03-18 20:26:52 +08:00
23 changed files with 492 additions and 355 deletions

View File

@@ -34,9 +34,9 @@
<d-table ref="table" :data="baseTreeTableData1" >
<d-column width="20px" type="index">
</d-column>
<d-column field="name" header="件版本名称" show-overflow-tooltip></d-column>
<d-column field="name" header="件版本名称" show-overflow-tooltip></d-column>
<d-column field="groupid" header="groupid"></d-column>
<d-column field="code" filterable :filter-list="filterList" @filter-change="handleFilterChange" header="件编号">
<d-column field="code" filterable :filter-list="filterList" @filter-change="handleFilterChange" header="件编号">
<template #default="scope">
<a class="devui-link" @click="showDetail = true">{{ scope.row.code }}</a>
</template>
@@ -44,7 +44,7 @@
<d-column field="packageName" filterable :filter-list="packageFilterList" @filter-change="handleFilterChange" header="packageName"></d-column>
<d-column field="version" filterable :filter-list="versionFilterList" @filter-change="handleFilterChange" header="version"></d-column>
<d-column field="language" filterable :filter-list="languageFilterList" @filter-change="handleFilterChange" header="编程语言"></d-column>
<d-column field="number" header="件漏洞数量">
<d-column field="number" header="件漏洞数量">
<template #default="scope">
<a class="devui-link" @click="showDetail = true">{{ scope.row.number }}</a>
</template>

View File

@@ -1,7 +1,7 @@
<template>
<div class="flex align-center justify-start">
<d-search icon-position="left" style="width: 380px" placeholder="请输入搜索件名称"></d-search>
<d-checkbox class="ml-10" label="只显示有漏洞的件" :isShowTitle="false" v-model="checked" />
<d-search icon-position="left" style="width: 380px" placeholder="请输入搜索件名称"></d-search>
<d-checkbox class="ml-10" label="只显示有漏洞的件" :isShowTitle="false" v-model="checked" />
</div>
<Card simple class="jyh-card mt-3">
<div class="clear-padding">

View File

@@ -20,24 +20,49 @@
</template>
<script setup lang="ts">
import { subscribeSoftware } from '@/api/jyh';
import { computed, ref } from 'vue';
import { Message } from 'vue-devui';
const props = defineProps(['softwareData']);
const emit = defineEmits(['close']);
const formRef = ref(null);
const formData = ref({
subscribeType: '',
subscribeText: '',
});
const rules = {
subscribeType: [{ required: true, message: '请选择', trigger: 'change' }],
};
const sendSubscribe = async () => {
const data = await subscribeSoftware({
softwareId: props.softwareData.id,
status: '1',
alertType: {
mobileSwitch: formData.value.subscribeType === '0',
emailSwitch: formData.value.subscribeType === '1',
webSwitch: formData.value.subscribeType === '2',
}
}).catch(err => {
Message({
message: err.error,
type: 'error'
})
});
if (!data?.data?.data?.data) {
Message({
message: data?.data?.data?.msg,
type: 'error'
})
} else {
emit('close');
}
}
const confirm = () => {
(formRef?.value as any)?.validate((isValid: boolean, invalidFields: any) => {
if (!isValid) {
return;
}
emit('close');
sendSubscribe();
});
};
</script>

View File

@@ -157,12 +157,12 @@
<Card simple class="jyh-card mb-4">
<div class="card-title">网络安全</div>
<d-row class="mb-3">
<d-col :span="24">
<span class="card-key width-160">软件评分</span>
<span class="card-val">{{ ReleaseInfo.networkSecurity.softwareRating || '--' }}</span>
</d-col>
</d-row>
<!-- <d-row class="mb-3">-->
<!-- <d-col :span="24">-->
<!-- <span class="card-key width-160">软件评分</span>-->
<!-- <span class="card-val">{{ ReleaseInfo.networkSecurity.softwareRating || '&#45;&#45;' }}</span>-->
<!-- </d-col>-->
<!-- </d-row>-->
<d-row class="mb-3">
<d-col :span="24">
<span class="card-key width-160">社区安全问题求助</span>
@@ -289,12 +289,12 @@
<script setup lang="ts">
import { ref, defineEmits, onMounted,reactive } from 'vue';
import { useRouter } from 'vue-router';
import { useRoute, useRouter } from 'vue-router';
import { discussDetailType, userInfoType } from '@/api/discussion/types';
import { Message } from 'vue-devui/message';
import { useClipboard } from '@vueuse/core/index';
import { releaseInfo } from '@/api/jyh';
const route = useRoute();
const emits = defineEmits(['changeTabs']);
// 触发事件的方法
@@ -340,15 +340,18 @@ const handleCopy = event => {
};
const getReleaseInfo = async() => {
const { data, error } = await releaseInfo({ repoId: '123',releaseId: '123' });
const getReleaseInfo = async(versionId) => {
const { data, error } = await releaseInfo({ softwareId: versionId });
if (!error && data) {
ReleaseInfo.value = data.data;
}
};
onMounted(async() => {
getReleaseInfo();
onMounted(() => {
const versionId = route.params.versionId; // 获取路由参数 versionId
if (versionId) {
getReleaseInfo(versionId); // 调用接口获取数据
}
});
</script>

View File

@@ -9,14 +9,16 @@
<div class="header-top">
<GAvatar style="margin-right: 12px" :src="avatarUrl" name="Vue" :width="40" :height="40"></GAvatar>
<div>
<div class="header-title1">{{ softwareData.name }}</div>
<div class="header-title1">{{ ReleaseInfo.basicInfo.softwareName || '--' }}</div>
<div class="header-div">
<span class="span1">版本</span><span class="span2">{{ softwareData.version }}</span>
<span class="span1">版本</span><span class="span2">{{ ReleaseInfo.basicInfo.softwareVersion || '--' }}</span>
<span class="split"></span>
<span class="span1">生命周期状态</span><span class="span2">{{ softwareData.lifecycle }}</span>
<!-- <span class="span1">生命周期状态</span><span class="span2">{{ softwareData.lifecycle }}</span>-->
<!-- <span class="split"></span>-->
<span class="span1">软件评分</span><span class="span2">{{ ReleaseInfo.networkSecurity.softwareRating || '&#45;&#45;' }}</span>
<span class="split"></span>
<span class="span1">集成风险</span>
<d-tag color="#F6933B">{{ softwareData.risk }}</d-tag>
<d-tag color="#F6933B">{{ ReleaseInfo.referenceInfo.integrationRisk || '--' }}</d-tag>
</div>
</div>
<div class="fr">
@@ -55,7 +57,7 @@
</template>
<script setup lang="ts">
import { ref, reactive, watch } from 'vue';
import { ref, reactive, watch, onMounted } from 'vue';
import { useRouter, useRoute } from 'vue-router';
import { getOrgInfo } from '@/views/Org/hooks/orgInfo';
import VulnerabilitiesList from './VulnerabilitiesList.vue';
@@ -69,6 +71,7 @@ const { namespace } = getOrgInfo();
const route = useRoute(); // 获取路由对象
const avatarUrl = '/src/assets/imgs/jyh/工程首字母图标.png';
import SubscriptionModal from '@/views/Jyh/Version/Detail/SubscriptionModal.vue';
import { releaseInfo } from '@/api/jyh';
const selectTab = ref('bbxx');
@@ -76,6 +79,28 @@ const selectTab = ref('bbxx');
const item = ref('');
const deleteModal = ref();
const deletevModels = ref(false);
const ReleaseInfo = ref({
basicInfo: {},
copyRightReportList: [],
entityList: [],
networkSecurity: {},
openSourceLicenseList: [],
referenceInfo: {},
});
const getReleaseInfo = async(versionId) => {
const { data, error } = await releaseInfo({ softwareId: versionId });
if (!error && data) {
ReleaseInfo.value = data.data;
}
};
onMounted(() => {
const versionId = route.params.versionId; // 获取路由参数 versionId
if (versionId) {
getReleaseInfo(versionId); // 调用接口获取数据
}
});
// 监听路由的 query.tab 变化
watch(
@@ -351,4 +376,4 @@ const colseSubscription = () => {
</style>
<style lang="scss">
</style>
</style>