diff --git a/deploy/nginx/nginx.conf b/deploy/nginx/nginx.conf index 5e47397e66e27f02f96543dbb952491c509b5531..843a6ec913215af3ca9eca6f5a8e2747763befce 100644 --- a/deploy/nginx/nginx.conf +++ b/deploy/nginx/nginx.conf @@ -141,20 +141,6 @@ http { proxy_pass https://dsapi.osinfra.cn/; } - location ^~ /monitoring/ { - proxy_set_header X-Forwarded-For $http_x_real_ip; - add_header X-XSS-Protection "1; mode=block"; - add_header X-Frame-Options DENY; - add_header X-Content-Type-Options nosniff; - add_header Content-Security-Policy "script-src 'self'; object-src 'none'; frame-src 'none'"; - add_header Cache-Control "no-cache,no-store,must-revalidate"; - add_header Pragma no-cache; - add_header Expires 0; - proxy_redirect off; - - proxy_pass https://easysoftware-monitoring.test.osinfra.cn/; - } - location ^~ /api-search/ { proxy_set_header X-Forwarded-For $http_x_real_ip; add_header X-XSS-Protection "1; mode=block"; @@ -168,20 +154,6 @@ http { proxy_pass https://doc-search.test.osinfra.cn/; } - - location ^~ /api-omapi/ { - proxy_set_header X-Forwarded-For $http_x_real_ip; - add_header X-XSS-Protection "1; mode=block"; - add_header X-Frame-Options DENY; - add_header X-Content-Type-Options nosniff; - add_header Content-Security-Policy "script-src 'self'; object-src 'none'; frame-src 'none'"; - add_header Cache-Control "no-cache,no-store,must-revalidate"; - add_header Pragma no-cache; - add_header Expires 0; - - proxy_pass https://omapi.osinfra.cn/; - } - error_page 401 402 403 405 406 407 413 414 /error.html; error_page 404 /404.html; diff --git a/public/error.html b/public/error.html new file mode 100644 index 0000000000000000000000000000000000000000..ec92e45aae61a2c24d929dbd8896f096ddaee2d2 --- /dev/null +++ b/public/error.html @@ -0,0 +1,44 @@ + + + + + + + openEuler Easy Software + + + + +
+ +

Error

+
+ + diff --git a/src/@types/domain.ts b/src/@types/domain.ts index 29d679e2dfd060120d4f899368b2dce8adb79c09..b1d770cba72d6c27e47617d9fbebef7546998359 100644 --- a/src/@types/domain.ts +++ b/src/@types/domain.ts @@ -1,14 +1,23 @@ export interface SearchAppT { - name: string; - os: string; - arch: string; - category: string; - timeOrder: string; + pageNum: number; + pageSize: number; + os?: string | string[]; + arch?: string | string[] + category?: string | string[]; + timeOrder?: string; + nameOrder?: string; } -export interface PkgPageSizeT { - pageNum?: number; - pageSize?: number; - timeOrder?: string; +export interface SearchSQLT extends SearchAppT { name: string; } + +export interface SearchESParamsT extends SearchAppT { + keyword: string; + keywordType: string; + dataType: string; +} + +export interface SearchUpstreamT extends SearchAppT { + eulerOsVersion: string; +} \ No newline at end of file diff --git a/src/api/api-domain.ts b/src/api/api-domain.ts index 2a6a90b9d74a04dde067acc8c55d49a623bdd389..91ac5c84163eec0fac74c053c7e3b2bf5f2317e8 100644 --- a/src/api/api-domain.ts +++ b/src/api/api-domain.ts @@ -1,7 +1,6 @@ import { request } from '@/shared/axios'; import type { AxiosResponse } from '@/shared/axios'; - - +import type { SearchSQLT } from '@/@types/domain'; interface ColumnT { @@ -35,7 +34,7 @@ export function getSearchAllColumn(params: ColumnT) { return request.get(url, { params }).then((res: AxiosResponse) => res?.data); } -export function getSearchAllFiled(params: any) { +export function getSearchAllFiled(params: SearchSQLT) { const url = `/api-query/field`; return request.get(url, { params }).then((res: AxiosResponse) => res?.data); } @@ -49,14 +48,14 @@ export function getTags(id: string) { //详情页 -export function getDetails(tabValue:string,id: string) { +export function getDetails(tabValue: string, id: string) { const url = `/api-query/${tabValue}?pkgId=${id}`; return request.get(url).then((res: AxiosResponse) => res?.data); } //支持情况 -export function getVer(tabValue:string,id: string) { +export function getVer(tabValue: string, id: string) { const url = `/api-query/${tabValue}/eulerver?name=${id}`; return request.get(url).then((res: AxiosResponse) => res?.data); } \ No newline at end of file diff --git a/src/api/api-search.ts b/src/api/api-search.ts index 5e0c2925cbc617671b6f42f07510e909f875703c..62e8771edf4ea349c2ab91e0d9d0d879b22d1d7b 100644 --- a/src/api/api-search.ts +++ b/src/api/api-search.ts @@ -1,12 +1,7 @@ import { request } from '@/shared/axios'; import type { AxiosResponse } from '@/shared/axios'; +import type { SearchESParamsT } from '@/@types/domain'; -interface SearchT { - keyword: string; - pageNum: number; - pageSize: number; - dataType: string; -} /** * 搜索 @@ -19,7 +14,7 @@ interface SearchT { * @return {Promise>} 返回一个 Promise,解析为提交的反馈信息是否成功的反馈信息 */ -export function getSearchData(params: SearchT) { +export function getSearchData(params: SearchESParamsT) { const url = '/api-search/software/docs'; return request.post(url, params).then((res: AxiosResponse) => res?.data); } @@ -46,7 +41,7 @@ export function getSearchCount(params: { -export function getSearchDataAll(params: SearchT) { +export function getSearchDataAll(params: SearchESParamsT) { const url = '/api-search/software/docsAll'; return request.post(url, params).then((res: AxiosResponse) => res?.data); } diff --git a/src/api/api-upstream.ts b/src/api/api-upstream.ts index 0ec712e8a130c47dc6ba549e0ecadfee45712036..cb42094c8c5adfca3e073fc5c0c2ac6e674200e3 100644 --- a/src/api/api-upstream.ts +++ b/src/api/api-upstream.ts @@ -1,26 +1,13 @@ import { request } from '@/shared/axios'; import type { AxiosResponse } from '@/shared/axios'; - - - -// export function getUpstream(name: string) { -// const url = `/monitoring/api/v2/projects/?name=${name}`; -// return request.get(url).then((res: AxiosResponse) => res?.data); -// } - -export interface PkgPageSizeT { - pageNum?: number; - pageSize?: number; - eulerOsVersion: string; -} - +import type { SearchUpstreamT } from '@/@types/domain'; /** * 上游兼容应用全景 - * @name getUpstream + * @name getUpstream */ -export function getUpstream(params: PkgPageSizeT) { +export function getUpstream(params: SearchUpstreamT) { const url = `/api-query/appVersion`; return request.get(url, { params }).then((res: AxiosResponse) => res?.data); } diff --git a/src/assets/icon/icon-home.svg b/src/assets/icon/icon-home.svg index bda3274de0c0db95ff58e91a18540dadc33a621d..bb697c8d9ad1683a1c7fe7f5ae8035d64e1b8adb 100644 --- a/src/assets/icon/icon-home.svg +++ b/src/assets/icon/icon-home.svg @@ -1,7 +1,6 @@ - icon/01公共图标/鲲鹏/24px/转发当前链接 - + diff --git a/src/assets/style/detail/index.scss b/src/assets/style/detail/index.scss index a75f796949c05b4613839e9673db22ae81eb455d..348198a02e3e1afb2a02bf59dece8bf55e3518cb 100644 --- a/src/assets/style/detail/index.scss +++ b/src/assets/style/detail/index.scss @@ -82,22 +82,28 @@ .basic-info { margin-top: 26px; - background: linear-gradient(to right, rgba(0, 47, 167, 0.05) 10%, white 15%); - - li { - padding: 12px 24px; + + p { @include tip1; color: var(--o-color-info2); display: flex; align-items: top; - border: 1px solid rgba(0, 0, 0, 0.1); + border-bottom: 1px solid rgba(0, 0, 0, 0.1); + border-right: 1px solid rgba(0, 0, 0, 0.1); border-left: 4px solid #002fa7; + &:first-child{ + border-top: 1px solid rgba(0, 0, 0, 0.1); + } .label { - min-width: 100px; + background: rgba(0,47,167,0.05); + padding: 12px 24px; + min-width: 150px; + border-right: 1px solid rgba(0, 0, 0, 0.1); } } .mymarkdown-body { max-width: 600px; + padding: 12px 24px; } } .icon-img { diff --git a/src/assets/style/markdown.scss b/src/assets/style/markdown.scss index 4e634708e0cf0dedd907cf169f32ee31ce9ce554..c04f9d90acd5afeb689f212fe44f3d5bb2e7ac0c 100644 --- a/src/assets/style/markdown.scss +++ b/src/assets/style/markdown.scss @@ -53,11 +53,12 @@ display: block; overflow-x: auto; padding: 16px; + @include scrollbar; } } table { - --table-padding: 12px 24px; + --table-padding: 2px 12px; --table-radius: var(--layout-pkg-radius); border-spacing: 0; @@ -81,8 +82,12 @@ } th, td { + box-sizing: border-box; border-color: var(--o-color-control4); padding: var(--table-padding); + height: 40px; + @include tip1; + color: var(--o-color-info2); } td { diff --git a/src/components/AppPagination.vue b/src/components/AppPagination.vue deleted file mode 100644 index b64442aa925b0c4f5601500f91e0edaf16e36fab..0000000000000000000000000000000000000000 --- a/src/components/AppPagination.vue +++ /dev/null @@ -1,65 +0,0 @@ - - -
- - - -
- - - diff --git a/src/components/filter/FilterHeader.vue b/src/components/filter/FilterHeader.vue index 5d0c5462709cf90d48c195d7bcbef275d6e20064..63c594d9793d3ad4fab26a50c71ae07eb60fc02c 100644 --- a/src/components/filter/FilterHeader.vue +++ b/src/components/filter/FilterHeader.vue @@ -108,12 +108,12 @@ watch(
- + {{ t('software.nameOrder') }} diff --git a/src/utils/common.ts b/src/utils/common.ts index de737093719c85d651617eec79a6458a0daf0806..7764d55716e5ec275fe7b6995173f6d6acd9a7dd 100644 --- a/src/utils/common.ts +++ b/src/utils/common.ts @@ -81,9 +81,9 @@ export const getCode = (code: string) => { const match = JSON.stringify(code).match(codeRegex); if (match) { // 如果匹配成功,则输出匹配到的内容 - const codeContent =match[1].replace(/\\n/g,'') + const codeContent = match[1].replace(/\\n/g, '') return codeContent; - } + } }; // 检查是否是同域名 @@ -113,3 +113,20 @@ export function getUrlParams(url: string) { return list; } } + + +/** + * 过滤空参数 + * @param {data} any 地址 + * @returns {object} 成功返回参数对象 + */ +export const getParamsRules = (data: any) => { + const newData = {} as any; + Object.keys(data).forEach((key) => { + const value = data[key as keyof any]; + if (value) { + newData[key] = value; + } + }); + return newData +} \ No newline at end of file diff --git a/src/views/applicationsPackage/APkgContent.vue b/src/views/applicationsPackage/APkgContent.vue index fe4a172a24a055d5c31345220135be427623abc2..351a82d80f6a0af52d7aa502ce0bb2709b74f4da 100644 --- a/src/views/applicationsPackage/APkgContent.vue +++ b/src/views/applicationsPackage/APkgContent.vue @@ -7,6 +7,8 @@ import { useRoute, useRouter } from 'vue-router'; import { useLocale } from '@/composables/useLocale'; import { useViewStore } from '@/stores/common'; import { useI18n } from 'vue-i18n'; +import { getParamsRules } from '@/utils/common'; + import { ElPagination, ElConfigProvider } from 'element-plus'; import zhCn from 'element-plus/es/locale/lang/zh-cn'; import English from 'element-plus/es/locale/lang/en'; @@ -27,7 +29,6 @@ const keywordType = ref((route.query.key as string) || ''); const isLoading = ref(false); const searchKey = ref((route.query.name as string) || ''); -const timeOrder = ref('desc'); const nameOrder = ref(''); const searchOs = ref(''); @@ -43,7 +44,6 @@ const searchParams = computed(() => { os: searchOs.value, arch: searchArch.value, category: searchCategory.value.join(), - timeOrder: timeOrder.value, nameOrder: nameOrder.value, }; }); @@ -59,14 +59,15 @@ const queryAllpkg = () => { os: searchOs.value, arch: searchArch.value, category: searchCategory.value.join(), - timeOrder: timeOrder.value, nameOrder: nameOrder.value, }; isLoading.value = true; - getSearchAllFiled(params) + // 过滤空参数 + const newData = getParamsRules(params); + + getSearchAllFiled(newData) .then((res) => { pkgData.value = res.data.list; - total.value = res.data.total; isLoading.value = false; if (pkgData.value.length === 0) { @@ -81,7 +82,9 @@ const queryAllpkg = () => { // es搜索 const querySearch = () => { isLoading.value = true; - getSearchData(searchParams.value) + // 过滤空参数 + const newData = getParamsRules(searchParams.value); + getSearchData(newData) .then((res) => { pkgData.value = res.data.all; total.value = res.data.total; @@ -143,6 +146,7 @@ const onResetTag = () => { searchArch.value = ''; searchCategory.value = []; isSearchDocs.value = false; + nameOrder.value = ''; if (route.query.type) { router.push({ path: `/${locale.value}/applicationsPackage`, @@ -152,12 +156,8 @@ const onResetTag = () => { // 更新时间、字母排序 const changeTimeOrder = (v: string[]) => { - if (v[0] === 'timeOrder') { - timeOrder.value = v[1]; - nameOrder.value = ''; - } else if (v[0] === 'nameOrder') { + if (v[0] === 'nameOrder') { nameOrder.value = v[1]; - timeOrder.value = ''; } currentPage.value = 1; }; @@ -211,7 +211,7 @@ watch( // 参数变化分页器还原 watch( - () => [searchCategory.value, searchOs.value, searchArch.value, nameOrder.value, timeOrder.value], + () => [searchCategory.value, searchOs.value, searchArch.value, nameOrder.value], () => { currentPage.value = 1; }, @@ -319,4 +319,3 @@ watch( -@/stores/common diff --git a/src/views/applicationsPackage/TheNewDetail.vue b/src/views/applicationsPackage/TheNewDetail.vue index 50545e5966ede09528cef7d2a174b3067055b6de..eadd06a2908321bec787ba59970dc10753dc3ab8 100644 --- a/src/views/applicationsPackage/TheNewDetail.vue +++ b/src/views/applicationsPackage/TheNewDetail.vue @@ -1,6 +1,6 @@