Commit 4a223e1a by 孙美琪

首页相关对接

parent 67b151ff
......@@ -19,7 +19,7 @@ export function banner() {
// 获取组件服务列表数据
export function assemblyList (query) {
return request({
url: '/biz/assembly/assemblyList',
url: '/biz/industry-application/list',
method: 'get',
params: query
})
......@@ -33,38 +33,46 @@ export function assemblyType (query) {
})
}
// 获取活动资讯列表数据
export function informationList (query) {
// 获取合作伙伴列表
export function partnerList (query) {
return request({
url: '/biz/information/informationList',
url: '/api/v1/partnerList',
method: 'get',
params: query
})
}
// 获取计算资源相关
export function informationResourceList(query){
return request({
url:'/biz/computility-information/computilityList',
method: 'get'
})
}
// 获取活动资讯详情
export function informationDetail (query) {
// 获取解决方案
export function getHomepageList (query) {
return request({
url: '/api/v1/informationDetail',
url: '/biz/industry-application/homepageList',
method: 'get',
params: query
})
}
// 获取合作伙伴列表
export function partnerList (query) {
// 获取活动资讯列表数据
export function informationList (query) {
return request({
url: '/api/v1/partnerList',
url: '/biz/information/informationList',
method: 'get',
params: query
})
}
// 获取计算资源相关
export function informationResourceList(query){
// 获取活动资讯列表数据
export function informationDetail (query) {
return request({
url:'/biz/computility-information/computilityList',
method: 'get'
url: '/biz/information/detail',
method: 'get',
params: query
})
}
......@@ -12,7 +12,25 @@ export function industryMenu (query) {
// 获取行业应用详情
export function solutionDetail (query) {
return request({
url: '/api/v1/solutionDetail',
url: '/biz/solution/detail',
method: 'get',
params: query
})
}
// 获取解决方案
export function getSolution (query) {
return request({
url: '/biz/solution/all',
method: 'get',
params: query
})
}
// 获取合作伙伴
export function getPartner (query) {
return request({
url: '/biz/partner/all',
method: 'get',
params: query
})
......
......@@ -17401,6 +17401,11 @@ aside a:hover {
justify-content: flex-end
}
.flex-justify-start {
display: flex;
justify-content: flex-start;
}
.joinus-box {
width: 100%;
background-color: #2c53ad;
......@@ -18117,7 +18122,7 @@ aside a:hover {
.nav-bar .logo .logo-text {
font-family: YouSheBiaoTiHei, system-ui;
font-weight: 400;
font-size: 20px;
font-size: 24px;
line-height: 22px;
color: #2e77e3;
cursor: pointer
......
......@@ -24,22 +24,7 @@
{{ item.name }}
</el-menu-item>
</el-sub-menu>
<el-sub-menu index="industryApplications">
<template #title>解决方案</template>
<el-sub-menu v-for="item in industryMenuData" :index="'one'+item.value">
<template #title>{{ item.name }}</template>
<el-sub-menu v-for="twoLevel in item.child" :index="item.name+'twoLevel'+twoLevel.value">
<template #title>{{ twoLevel.name }}</template>
<el-menu-item
v-for="threeLevel in twoLevel.child"
:index="'/industryApplications/detail?id=' + threeLevel.id">
<div style="width: 160px;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;">
{{ threeLevel.titleIndustry }}
</div>
</el-menu-item>
</el-sub-menu>
</el-sub-menu>
</el-sub-menu>
<el-menu-item index="/industryApplications/index">解决方案</el-menu-item>
<el-menu-item index="/componentServices/componentServicesList">行业应用</el-menu-item>
<el-menu-item index="/partnership/partnershipList">合作伙伴</el-menu-item>
</el-menu>
......@@ -99,7 +84,8 @@ function menuSelect(val, indexPath, item) {
}
const computilityMenuData = ref([])
const industryMenuData = ref([])
// const industryMenuData = ref([])
function getComputilityMenu() {
categoryMenuNew().then(res => {
......@@ -108,14 +94,15 @@ function getComputilityMenu() {
})
}
function getIndustryMenu() {
industryMenu().then(res => {
industryMenuData.value = res.data
})
}
// function getIndustryMenu() {
// industryMenu().then(res => {
// industryMenuData.value = res.data
// })
// }
getComputilityMenu()
getIndustryMenu()
// getIndustryMenu()
function handleCommand(command) {
switch (command) {
......@@ -189,7 +176,7 @@ function logout() {
.logo-text {
font-family: YouSheBiaoTiHei, system-ui;
font-weight: 400;
font-size: 20px;
font-size: 24px;
line-height: 22px;
color: #2e77e3;
cursor: pointer;
......
import { createWebHistory, createRouter } from 'vue-router'
import {createWebHistory, createRouter} from 'vue-router'
/* Layout */
import Layout from '@/layout'
import UserLayout from '@/layout/user-layout.vue'
......@@ -18,296 +18,302 @@ import ManageLayout from '@/layout/manage-layout.vue'
* roles: ['admin', 'common'] // 访问路由的角色权限
* permissions: ['a:a:a', 'b:b:b'] // 访问路由的菜单权限
* meta : {
noCache: true // 如果设置为true,则不会被 <keep-alive> 缓存(默认 false)
title: 'title' // 设置该路由在侧边栏和面包屑中展示的名字
icon: 'svg-name' // 设置该路由的图标,对应路径src/assets/icons/svg
breadcrumb: false // 如果设置为false,则不会在breadcrumb面包屑中显示
activeMenu: '/system/user' // 当路由设置了该属性,则会高亮相对应的侧边栏。
}
noCache: true // 如果设置为true,则不会被 <keep-alive> 缓存(默认 false)
title: 'title' // 设置该路由在侧边栏和面包屑中展示的名字
icon: 'svg-name' // 设置该路由的图标,对应路径src/assets/icons/svg
breadcrumb: false // 如果设置为false,则不会在breadcrumb面包屑中显示
activeMenu: '/system/user' // 当路由设置了该属性,则会高亮相对应的侧边栏。
}
*/
// 公共路由
export const constantRoutes = [
{
path: '/redirect',
component: Layout,
hidden: true,
children: [
{
path: '/redirect/:path(.*)',
component: () => import('@/views/redirect/index.vue')
}
]
},
{
path: '/login',
component: () => import('@/views/login'),
hidden: true
},
{
path: '/register',
component: () => import('@/views/register'),
hidden: true
},
{
path: '/:pathMatch(.*)*',
component: () => import('@/views/error/404'),
hidden: true
},
{
path: '/401',
component: () => import('@/views/error/401'),
hidden: true
},
{
path: '',
component: UserLayout,
// component: Layout,
redirect: '/index',
children: [
{
path: '/index',
component: () => import('@/views/index.vue'),
name: 'Index',
meta: {title: '首页', icon: 'dashboard', affix: true}
}
]
},
{
path: '/computingResource',
component: UserLayout,
meta: {title: '计算资源'},
children: [
{
path: 'resourceList',
component: () => import('@/views/computingResource/resourceList.vue'),
name: 'ResourceList',
meta: {title: '计算资源'}
},
{
path: 'confirmOrder',
component: () => import('@/views/computingResource/confirmOrder.vue'),
name: 'ConfirmOrder',
meta: {title: '确认订单'}
},
{
path: 'shoppingCart',
component: () => import('@/views/computingResource/shoppingCart.vue'),
name: 'ShoppingCart',
meta: {title: '购物车'}
},
{
path: 'orderResult',
component: () => import('@/views/computingResource/orderResult.vue'),
name: 'OrderResult',
meta: {title: '订单状态'}
}
]
},
{
path: '/industryApplications',
component: UserLayout,
children: [
{
path: 'detail',
component: () => import('@/views/industryApplications/detail.vue'),
name: 'Detail',
meta: {title: '解决方案'}
}
]
},
{
path: '/componentServices',
component: UserLayout,
children: [
{
path: 'componentServicesList',
component: () => import('@/views/componentServices/list.vue'),
name: 'ComponentServicesList',
meta: {title: '行业应用'}
}
]
},
{
path: '/partnership',
component: UserLayout,
children: [
{
path: 'partnershipList',
component: () => import('@/views/partnership/listAlter.vue'),
name: 'PartnershipList',
meta: {title: '合作伙伴'}
}
]
},
{
path: '/information',
component: UserLayout,
meta: {title: '活动资讯'},
children: [
{
path: 'informationList',
component: () => import('@/views/information/list.vue'),
name: 'InformationList',
meta: {title: '活动资讯列表'}
},
{
path: 'informationDetail',
component: () => import('@/views/information/detail.vue'),
name: 'InformationDetail',
meta: {title: '活动资讯详情'}
}
]
},
{
path: '/user',
component: ManageLayout,
hidden: true,
redirect: 'noredirect',
children: [
{
path: 'profile',
component: () => import('@/views/system/user/profile/index'),
name: 'Profile',
meta: {title: '个人中心', icon: 'user'}
}
]
},
{
path: '/console',
component: ManageLayout,
children: [
{
path: 'overview',
component: () => import('@/views/console/overview.vue'),
name: 'Overview',
meta: {title: '首页', icon: 'workbench'}
}
]
},
{
path: '/console',
component: ManageLayout,
children: [
{
path: 'naturalResources',
component: () => import('@/views/console/naturalResources.vue'),
name: 'NaturalResources',
meta: {title: '我的资源', icon: 'instock'}
}
]
},
{
path: '/console',
component: ManageLayout,
children: [
{
path: 'myOrder',
component: () => import('@/views/console/myOrder.vue'),
name: 'MyOrder',
meta: {title: '我的订单', icon: 'order'}
}
]
},
{
path: '/console',
component: ManageLayout,
hidden: true,
children: [
{
path: 'authentication',
component: () => import('@/views/console/authentication.vue'),
name: 'Authentication',
meta: {title: '审核认证', icon: 'order'}
}
]
}
{
path: '/redirect',
component: Layout,
hidden: true,
children: [
{
path: '/redirect/:path(.*)',
component: () => import('@/views/redirect/index.vue')
}
]
},
{
path: '/login',
component: () => import('@/views/login'),
hidden: true
},
{
path: '/register',
component: () => import('@/views/register'),
hidden: true
},
{
path: '/:pathMatch(.*)*',
component: () => import('@/views/error/404'),
hidden: true
},
{
path: '/401',
component: () => import('@/views/error/401'),
hidden: true
},
{
path: '',
component: UserLayout,
// component: Layout,
redirect: '/index',
children: [
{
path: '/index',
component: () => import('@/views/index.vue'),
name: 'Index',
meta: {title: '首页', icon: 'dashboard', affix: true}
}
]
},
{
path: '/computingResource',
component: UserLayout,
meta: {title: '计算资源'},
children: [
{
path: 'resourceList',
component: () => import('@/views/computingResource/resourceList.vue'),
name: 'ResourceList',
meta: {title: '计算资源'}
},
{
path: 'confirmOrder',
component: () => import('@/views/computingResource/confirmOrder.vue'),
name: 'ConfirmOrder',
meta: {title: '确认订单'}
},
{
path: 'shoppingCart',
component: () => import('@/views/computingResource/shoppingCart.vue'),
name: 'ShoppingCart',
meta: {title: '购物车'}
},
{
path: 'orderResult',
component: () => import('@/views/computingResource/orderResult.vue'),
name: 'OrderResult',
meta: {title: '订单状态'}
}
]
},
{
path: '/industryApplications',
component: UserLayout,
children: [
{
path: 'index',
component: () => import('@/views/industryApplications/index.vue'),
name: 'industryApplicationsIndex',
meta: {title: '解决方案'}
},
{
path: 'detail',
component: () => import('@/views/industryApplications/detail.vue'),
name: 'Detail',
meta: {title: '解决方案详情'}
}
]
},
{
path: '/componentServices',
component: UserLayout,
children: [
{
path: 'componentServicesList',
component: () => import('@/views/componentServices/list.vue'),
name: 'ComponentServicesList',
meta: {title: '行业应用'}
}
]
},
{
path: '/partnership',
component: UserLayout,
children: [
{
path: 'partnershipList',
component: () => import('@/views/partnership/listAlter.vue'),
name: 'PartnershipList',
meta: {title: '合作伙伴'}
}
]
},
{
path: '/information',
component: UserLayout,
meta: {title: '活动资讯'},
children: [
{
path: 'informationList',
component: () => import('@/views/information/list.vue'),
name: 'InformationList',
meta: {title: '活动资讯列表'}
},
{
path: 'informationDetail',
component: () => import('@/views/information/detail.vue'),
name: 'InformationDetail',
meta: {title: '活动资讯详情'}
}
]
},
{
path: '/user',
component: ManageLayout,
hidden: true,
redirect: 'noredirect',
children: [
{
path: 'profile',
component: () => import('@/views/system/user/profile/index'),
name: 'Profile',
meta: {title: '个人中心', icon: 'user'}
}
]
},
{
path: '/console',
component: ManageLayout,
children: [
{
path: 'overview',
component: () => import('@/views/console/overview.vue'),
name: 'Overview',
meta: {title: '首页', icon: 'workbench'}
}
]
},
{
path: '/console',
component: ManageLayout,
children: [
{
path: 'naturalResources',
component: () => import('@/views/console/naturalResources.vue'),
name: 'NaturalResources',
meta: {title: '我的资源', icon: 'instock'}
}
]
},
{
path: '/console',
component: ManageLayout,
children: [
{
path: 'myOrder',
component: () => import('@/views/console/myOrder.vue'),
name: 'MyOrder',
meta: {title: '我的订单', icon: 'order'}
}
]
},
{
path: '/console',
component: ManageLayout,
hidden: true,
children: [
{
path: 'authentication',
component: () => import('@/views/console/authentication.vue'),
name: 'Authentication',
meta: {title: '审核认证', icon: 'order'}
}
]
}
]
// 动态路由,基于用户权限动态去加载
export const dynamicRoutes = [
{
path: '/system/user-auth',
component: Layout,
hidden: true,
permissions: ['system:user:edit'],
children: [
{
path: 'role/:userId(\\d+)',
component: () => import('@/views/system/user/authRole'),
name: 'AuthRole',
meta: {title: '分配角色', activeMenu: '/system/user'}
}
]
},
{
path: '/system/role-auth',
component: Layout,
hidden: true,
permissions: ['system:role:edit'],
children: [
{
path: 'user/:roleId(\\d+)',
component: () => import('@/views/system/role/authUser'),
name: 'AuthUser',
meta: {title: '分配用户', activeMenu: '/system/role'}
}
]
},
{
path: '/system/dict-data',
component: Layout,
hidden: true,
permissions: ['system:dict:list'],
children: [
{
path: 'index/:dictId(\\d+)',
component: () => import('@/views/system/dict/data'),
name: 'Data',
meta: {title: '字典数据', activeMenu: '/system/dict'}
}
]
},
{
path: '/monitor/job-log',
component: Layout,
hidden: true,
permissions: ['monitor:job:list'],
children: [
{
path: 'index/:jobId(\\d+)',
component: () => import('@/views/monitor/job/log'),
name: 'JobLog',
meta: {title: '调度日志', activeMenu: '/monitor/job'}
}
]
},
{
path: '/tool/gen-edit',
component: Layout,
hidden: true,
permissions: ['tool:gen:edit'],
children: [
{
path: 'index/:tableId(\\d+)',
component: () => import('@/views/tool/gen/editTable'),
name: 'GenEdit',
meta: {title: '修改生成配置', activeMenu: '/tool/gen'}
}
]
}
{
path: '/system/user-auth',
component: Layout,
hidden: true,
permissions: ['system:user:edit'],
children: [
{
path: 'role/:userId(\\d+)',
component: () => import('@/views/system/user/authRole'),
name: 'AuthRole',
meta: {title: '分配角色', activeMenu: '/system/user'}
}
]
},
{
path: '/system/role-auth',
component: Layout,
hidden: true,
permissions: ['system:role:edit'],
children: [
{
path: 'user/:roleId(\\d+)',
component: () => import('@/views/system/role/authUser'),
name: 'AuthUser',
meta: {title: '分配用户', activeMenu: '/system/role'}
}
]
},
{
path: '/system/dict-data',
component: Layout,
hidden: true,
permissions: ['system:dict:list'],
children: [
{
path: 'index/:dictId(\\d+)',
component: () => import('@/views/system/dict/data'),
name: 'Data',
meta: {title: '字典数据', activeMenu: '/system/dict'}
}
]
},
{
path: '/monitor/job-log',
component: Layout,
hidden: true,
permissions: ['monitor:job:list'],
children: [
{
path: 'index/:jobId(\\d+)',
component: () => import('@/views/monitor/job/log'),
name: 'JobLog',
meta: {title: '调度日志', activeMenu: '/monitor/job'}
}
]
},
{
path: '/tool/gen-edit',
component: Layout,
hidden: true,
permissions: ['tool:gen:edit'],
children: [
{
path: 'index/:tableId(\\d+)',
component: () => import('@/views/tool/gen/editTable'),
name: 'GenEdit',
meta: {title: '修改生成配置', activeMenu: '/tool/gen'}
}
]
}
]
const router = createRouter({
history: createWebHistory(),
routes: constantRoutes,
scrollBehavior (to, from, savedPosition) {
if (savedPosition) {
return savedPosition
} else {
return {top: 0}
history: createWebHistory(),
routes: constantRoutes,
scrollBehavior(to, from, savedPosition) {
if (savedPosition) {
return savedPosition
} else {
return {top: 0}
}
}
}
})
export default router
......@@ -17,7 +17,7 @@
<img :src="item.image" alt=""/>
<div>
<div class="title">{{ item.title }}</div>
<p>{{ item.description }}</p>
<p v-html="item.description"></p>
<el-button round @click="openPage(item,index)">点击试用</el-button>
</div>
......@@ -53,22 +53,10 @@ const indexNum = ref(0)
const assemblyTypes = ref([])
const tabActive = ref("0")
onMounted(() => {
// getAssemblyType()
getAassemblyList()
})
function getAassemblyList() {
assemblyList({type: Number(tabActive.value)}).then(res => {
// assemblyData.value = res.data
const validData = res.data.filter(item => item.showStatus === true);
assemblyList().then(res => {
const validData = res.data;
validData.forEach(item => {
// 处理description字段,去除<p>标签
if (item.description) {
item.description = item.description.replace(/<p>/g, '').replace(/<\/p>/g, '')
}
// 处理images数组,只取第一张图片
if (Array.isArray(item.images) && item.images.length > 0) {
item.image = item.images[0];
......@@ -76,24 +64,10 @@ function getAassemblyList() {
item.image = ''; // 如果没有图片,设置为空字符串
}
});
assemblyData.value = validData.sort(function (a, b) {
return a.orderNum - b.orderNum
});
assemblyData.value = validData;
})
}
// function getAssemblyType() {
// assemblyType().then(res => {
// assemblyTypes.value = res.data
// getAassemblyList()
// })
// }
function tabChange() {
getAassemblyList()
}
function openPage(data, index) {
indexNum.value = index
dialogTitle.value = data.title
......@@ -112,6 +86,8 @@ function cancel() {
function handleDialogClose() {
iframeSrc.value = null
}
getAassemblyList()
</script>
<style scoped lang="scss">
.app-container {
......
......@@ -20,56 +20,23 @@
<h5>我们为您提供高性能的算力服务 </h5>
<p>专业造就品质, 携手共赢,助力企业发展</p></div>
<div class="resource-list">
<div class="el-row" style="margin-left: -15px; margin-right: -15px;">
<div class="el-col el-col-8 is-guttered" style="padding-right: 15px; padding-left: 15px;">
<el-row :gutter="15">
<el-col :span="8" v-for="(i,index) in list" :key="index">
<div class="resource-item">
<div class="img"><img
src="http://ph.xjkcjd.com:18081/prod-api/profile/upload/2024/10/25/服务-超级计算@1x_20241025140658A015.png"
alt=""></div>
<div class="title">超级计算</div>
<p class="info">超级计算
拥有天河一号、天河新一代超级计算机,综合算力200PF,存储超20PB,可提供大规模数值模拟计算和数据分析处理等服务</p>
<div class="btn-box">
<button aria-disabled="false" type="button"
class="el-button el-button--default is-plain">
<span class="">了解详情 </span>
</button>
</div>
</div>
</div>
<div class="el-col el-col-8 is-guttered" style="padding-right: 15px; padding-left: 15px;">
<div class="resource-item">
<div class="img"><img
src="http://ph.xjkcjd.com:18081/prod-api/profile/upload/2024/10/25/服务-人工智能@1x_20241025140651A014.png"
alt=""></div>
<div class="title">人工智能计算</div>
<p class="info">
提供各类通用、国产CPU、GPU裸金属服务器,资源独占、性能无损、弹性扩容、安全可靠</p>
<div class="btn-box">
<button aria-disabled="false" type="button"
class="el-button el-button--default is-plain">
<span class="">了解详情 </span>
</button>
<div class="img">
<img :src="i.image" alt=""/>
</div>
</div>
</div>
<div class="el-col el-col-8 is-guttered" style="padding-right: 15px; padding-left: 15px;">
<div class="resource-item">
<div class="img"><img
src="http://ph.xjkcjd.com:18081/prod-api/profile/upload/2024/10/25/服务-云计算@1x_20241025140605A013.png"
alt=""></div>
<div class="title">云计算</div>
<p class="info">提供安全稳定及灵活扩展的云计算服务,实现按需扩展CPU、内存、存储和网络资源,有效降低
IT 成本,提升运维效率,助力核心业务创新。</p>
<div class="title">{{ i.title }}</div>
<p class="info">{{ i.information }}</p>
<div class="btn-box">
<button aria-disabled="false" type="button"
class="el-button el-button--default is-plain">
<span class="">了解详情 </span>
<span class="">了解详情</span>
</button>
</div>
</div>
</div>
</div>
</el-col>
</el-row>
</div>
</div>
......@@ -80,55 +47,25 @@
<p>适用于政务、金融、旅游、大数据、人工智能、教育、工业等多行业解决方案</p></div>
<div class="tabs-container">
<div class="tabs-header">
<div v-for="(i,index) in tabList" :key="index" @click="handleTab(index)">
<button :class="activeTabs === index? 'tab-active':''">{{ i }}</button>
<div v-if="activeTabs === index" class="indicator" style="width: 100%;"></div>
<div class="tabs-box" v-for="(i,index) in tabList" :key="index" @click="handleTab(index)">
<button :class="activeTabs === index? 'tab-active':''"
:style="{borderBottom: activeTabs === index ?'1px solid #1f4aaf':''}">{{ i }}
</button>
</div>
</div>
</div>
<el-carousel ref="myCarousel" type="card" height="400px" :autoplay="false" @change="handleCarouselCard">
<el-carousel-item>
<div class="swiper-box">
<div class="swiper-list">
<div class="swiper-item"
style="background-image: url('http://ph.xjkcjd.com:18081/prod-api/profile/upload/2024/10/29/txg-02_20241029161244A040.jpg');">
<div class="item"><h3 class="title">数字天心阁</h3>
<p class="desc">
其展馆面积3000余平方,收藏有大量近代湖湘历史名人相关文物,结合普惠算力服务平台的最新数智科技,打造了沉浸式湖湘文化主题内容体验,是长沙新崛起的一个独具特色的“文化+科技”融合文旅创新项目。</p>
<p class="info flex-justify-end"><span class="btn">带你体验领略不一样的天心阁 </span>
</p></div>
</div>
</div>
</div>
</el-carousel-item>
<el-carousel-item>
<div class="swiper-box">
<div class="swiper-list">
<div class="swiper-item"
style="background-image: url('http://ph.xjkcjd.com:18081/prod-api/profile/upload/2024/07/01/resource1-Z05URL38_20240701145643A048.png');">
<div class="item">
<h3 class="title">智能审核</h3>
<p class="desc">
新一代人工智能大模型与AIGC应用高科技企业。自成立以来,始终坚持核心技术自主研发,积累数十项知识产权。通过不断深耕大数据、深度学习和自然语言处理(NLP)等人工智能核心领域技术,构建了通用型AI智能内容处理平台底座,并面向安全测评、内容安全、内容生成等领域研发出四大类产品线,包括大模型与AIGC安全评测、博特翊盾一站式智能内容审核与巡查平台、博特妙笔AI公文写作平台、博特点石智能金融服务平台等多维度、广场景、强能力的人工智能产品与服务。</p>
<p class="info flex-justify-end">
<span class="btn">智能审核</span>
</p>
</div>
</div>
</div>
</div>
</el-carousel-item>
<el-carousel-item>
<el-carousel-item v-for="(i,index) in swiperBox" :key="index">
<div class="swiper-box">
<div class="swiper-list">
<div class="swiper-item"
style="background-image: url('http://ph.xjkcjd.com:18081/prod-api/profile/upload/2024/07/01/resource2-jp9iLWfp_20240701145658A050.png');">
<div class="item"><h3 class="title">智能写作</h3>
<p class="desc">
集成案例参考、材料查找、A1写作、修改润色、审核校对、文件学习等功能,全方位地辅助公职人员提高创作效率,节省人工编写的时间和精力。</p>
<p class="info flex-justify-end"><span class="btn">智能写作一片未来</span>
</p></div>
:style="{ background: 'url(' + i.homeImages[0] + ')',backgroundSize: 'cover' }">
<div class="item"><h3 class="title">{{ i.title }}</h3>
<p class="desc" v-html="i.description"></p>
<p class="info flex-justify-end" @click="openAssembly(i)"><span class="btn">{{
i.information
}} </span></p></div>
</div>
</div>
</div>
......@@ -136,7 +73,8 @@
</el-carousel>
<div class="view-more-text">
<button aria-disabled="false" type="button" class="el-button el-button--default is-plain is-round">
<button aria-disabled="false" type="button" class="el-button el-button--default is-plain is-round"
@click="handleMore">
<span class="">查看更多</span></button>
</div>
</div>
......@@ -147,77 +85,35 @@
<div class="custom-main-w">
<div class="custom-title"><h5>活动资讯</h5></div>
<div class="information-top">
<div class="el-row" style="margin-left: -15px; margin-right: -15px;">
<div class="el-col el-col-8 is-guttered"
style="padding-right: 15px; padding-left: 15px;">
<div class="info-top-item"><img
src="http://ph.xjkcjd.com:18081/prod-api/profile/upload/2025/03/10/640_20250310195348A114.jpg"
alt="">
<div class="content">
<div class="title">天水文旅智算创新中心启动 | 普惠算力平台助力中小企业数字化转型
</div>
<div class="date">2025-03-10</div>
</div>
</div>
</div>
<div class="el-col el-col-8 is-guttered"
style="padding-right: 15px; padding-left: 15px;">
<div class="info-top-item"><img
src="http://ph.xjkcjd.com:18081/prod-api/profile/upload/2024/06/25/封面_20240625194417A007.png"
alt="">
<el-row :gutter="15">
<el-col :span="8" v-for="(i,index) in infoList" :key="index" @click="handleInfoDetails(i.id)">
<div class="info-top-item">
<img
:src="i.images[0]"
alt="">
<div class="content">
<div class="title">媒体聚焦 |
新区崭新产业“苗圃”即将“定妆”!湘江创智园预计年底建成投运
<div class="title">{{ i.title }}
</div>
<div class="date">2024-06-25</div>
<div class="date">{{ parseTime(i.createTime, '{y}-{m}-{d}') }}</div>
</div>
</div>
</div>
<div class="el-col el-col-8 is-guttered"
style="padding-right: 15px; padding-left: 15px;">
<div class="info-top-item"><img
src="http://ph.xjkcjd.com:18081/prod-api/profile/upload/2024/10/29/gszx-2_20241029100921A030.jpg"
alt="">
<div class="content">
<div class="title">激活算力促转化!湖南大学大科城先进计算联合创新中心正式成立</div>
<div class="date">2024-06-25</div>
</div>
</div>
</div>
</div>
</el-col>
</el-row>
</div>
<div class="information-bottom">
<div class="info-bottom-item flex">
<div class="content">
<div class="title">AI在金融领域的崭新应用:智能化金融服务的革新</div>
<div class="remark">
引言:随着人工智能(AI)技术的不断发展,金融领域正迎来一场智能化的革命。从智能投资到风险管理,AI正在改变传统金融服务的面貌,为用户提供更为个性化、高效的金融体验。
</div>
</div>
<div class="date">2024-04-28</div>
</div>
<div class="info-bottom-item flex">
<div class="content">
<div class="title">人工智能赋能金融领域 这场银企交流会提出这些“金点子”</div>
<div class="remark">推动大数据技术研发应用,让人工智能赋能金融领域发展,重庆在行动</div>
</div>
<div class="date">2024-04-28</div>
</div>
<div class="info-bottom-item flex">
<div class="info-bottom-item flex" v-for="(i,index) in infoBottomList" :key="index"
@click="handleInfoDetails(i.id)">
<div class="content">
<div class="title">
与价值“共声”,银河证券联名财联社将赴AI引领者科大讯飞,洞察新质生产力下一程
</div>
<div class="remark">
AI若以拼音来读,即可读作爱,亦是一种对美好事物的寄托。无疑,AI是新一轮科技革命和产业变革的重要驱动力量,而上市公司则是资本市场高质量发展的重要驱动力量。
</div>
<div class="title">{{ i.title }}</div>
<div class="remark" v-html="i.description"></div>
</div>
<div class="date">2024-04-28</div>
<div class="date">{{ parseTime(i.createTime, '{y}-{m}-{d}') }}</div>
</div>
</div>
<div class="view-more-text">
<button aria-disabled="false" type="button"
class="el-button el-button--default is-plain is-round">
class="el-button el-button--default is-plain is-round"
@click="router.push('/information/informationList')">
<span class="">更多资讯 </span>
</button>
</div>
......@@ -230,17 +126,17 @@
<div class="custom-title"><h5>优秀的合作伙伴</h5>
<p>我们将为用户提供安全、可靠、优质的应用解决方案</p></div>
<div class="partner-list">
<div class="el-row" style="margin-left: -15px; margin-right: -15px;">
<div class="el-col el-col-8 is-guttered"
style="padding-right: 15px; padding-left: 15px;">
<el-row :gutter="20">
<el-col span="8" v-for="(i,index) in partnerList" :key="index" @click="handleOpen(i.url)">
<div class="partner-item">
<div class="img"><img
src="http://ph.xjkcjd.com:18081/prod-api/profile/upload/2024/12/25/智谱_20241225151742A098.png"
alt=""></div>
<div class="title">北京智谱华章科技有限公司</div>
<div class="img">
<img :src="i.image.length !==0 ? i.image[0]:''"
alt=""/>
</div>
<div class="title">{{ i.title }}</div>
</div>
</div>
</div>
</el-col>
</el-row>
</div>
</div>
</div>
......@@ -291,61 +187,38 @@
</template>
<script setup name="Index">
import {banner, assemblyList, informationResourceList, informationList} from '@/api/home.js'
import {
banner,
assemblyList,
informationResourceList,
informationList,
getHomepageList
} from '@/api/home.js'
import {ref} from 'vue'
import {getPartner} from "@/api/industry.js";
import {useRouter} from "vue-router";
import {parseTime} from "../utils/ruoyi.js";
const baseUrl = import.meta.env.VITE_APP_BASE_API
// const baseImgUrl = window.location.origin
const activeTabs = ref(1)
const tabList = ref(['数字天心阁', '智能审核', '智能写作'])
const tabList = ref([{}])
const swiperBox = ref([])
const assemblyData = ref([])
const bannerImgList = ref([])
const list = ref([
{
id: 1,
title: '计算资源',
titleEH: '/RESOURCE',
present: '强劲 · 稳定 · 安全的云计算能力 · 助力企业上云',
assemblyData: [
// {
// title: '天河系列超级计算机',
// description: '拥有天河一号、天河新一代超算,综合算力200PF(64位精度),人工智能算力800PF,存储超20PB。可提供科学研究、工程仿真、并行算法及大规模并行应用软件研发。',
// router: '/computingResource/resourceList?type=0'
// },
// {
// title: '天河 天马智算集群',
// description: '提供各类通用、国产CPU、GPU裸金属服务器,资源独占、性能无损、弹性扩容、安全可靠',
// router: '/computingResource/resourceList?type=1'
// },
// {
// title: '云计算服务',
// description: '提供安全稳定及灵活扩展的云计算服务,实现按需扩展CPU、内存、存储和网络资源,有效降低 IT 成本,提升运维效率,助力核心业务创新。',
// router: '/computingResource/resourceList?type=2'
// }
]
},
{
id: 2,
title: '行业应用',
titleEH: '/APPLICATION',
present: '集成机器学习、深度学习、自然语言处理、图像识别等先进技术,为金融、医疗、教育、零售、制造业等多个领域提供智能化解决方案。',
assemblyData: []
},
{
id: 3,
title: '生态合作伙伴',
titleEH: '/PARTNER',
present: '助力各类“AI+”创新应用,推进企业算力生态建设,促进科创产业集聚发展',
assemblyData: []
}
])
const list = ref([])
const dialogTableVisible = ref(false)
const dialogTitle = ref('')
const iframeSrc = ref('')
const iframeShow = ref(false)
const myCarousel = ref(null)
const carouselHeight = ref(500); // 默认高度
const partnerList = ref([])
const infoList = ref([])
const infoBottomList = ref([])
const router = useRouter()
function updateHeight() {
// 根据窗口宽度计算高度
const width = window.innerWidth;
......@@ -368,7 +241,7 @@ onBeforeUnmount(() => {
function getBanner() {
banner().then(res => {
// 筛选条件:showStatus为1的数据
const validData = res.data.filter(item => item.showStatus === 1);
const validData = res.data.filter(item => item.showStatus === true);
// 处理图片字段,只取第一张图片
validData.forEach(item => {
......@@ -398,51 +271,16 @@ function handleCarouselCard(index) {
getBanner()
function getAssemblyList() {
assemblyList({type: 0}).then(res => {
// 筛选条件:showStatus为true的数据
const filteredData = res.data.filter(item => item.showStatus === true);
const data = filteredData.sort(function (a, b) {
return a.orderNum - b.orderNum
}).map(item => {
// 处理description字段,去除<p>标签
if (item.description) {
item.description = item.description.replace(/<p>/g, '').replace(/<\/p>/g, '')
}
// 处理images数组,只取第一张图片
if (Array.isArray(item.images) && item.images.length > 0) {
item.image = item.images[0];
} else {
item.image = ''; // 如果没有图片,设置为空字符串
}
// 处理homeImages数组,只取第一张图片
if (Array.isArray(item.homeImages) && item.homeImages.length > 0) {
item.homeImage = item.homeImages[0];
} else {
item.homeImage = ''; // 如果没有图片,设置为空字符串
}
return item
})
assemblyData.value = data.length > 3 ? data.slice(0, 3) : data
list.value[1].assemblyData = data.length > 3 ? data.slice(0, 3) : data
})
}
function getResource() {
informationResourceList().then(res => {
// 筛选条件:showStatus为true的数据
const filteredData = res.data.filter(item => item.showStatus === true);
const filteredData = res.data;
// 处理information字段,去除<p>标签,并处理图片数组
const processedData = filteredData.map(item => {
if (item.information) {
item.information = item.information.replace(/<p>/g, '').replace(/<\/p>/g, '');
}
// 处理images数组,只取第一张图片
if (Array.isArray(item.images) && item.images.length > 0) {
item.image = item.images[0];
......@@ -450,16 +288,13 @@ function getResource() {
item.image = ''; // 如果没有图片,设置为空字符串
}
return item;
});
list.value[0].assemblyData = processedData.length > 3 ? processedData.slice(0, 3) : processedData;
console.log(list.value[0].assemblyData, 'list.value[0].assemblyData');
list.value = processedData.length > 3 ? processedData.slice(0, 3) : processedData;
});
}
getAssemblyList()
getResource()
const informationData = ref([])
......@@ -523,6 +358,49 @@ function handleCarousel(url) {
window.open(url)
}
}
function handleOpen(url) {
if (url) {
window.open(url)
}
}
// 获取合作伙伴
function getPartnerList() {
getPartner().then((res) => {
partnerList.value = res.data
})
}
getPartnerList()
function homepageList() {
getHomepageList({count: 3}).then(res => {
tabList.value = res.data.length ? res.data.map(i => i.title) : []
swiperBox.value = res.data ? res.data : []
})
}
homepageList()
// 行业应用跳转
function handleMore() {
router.push('/componentServices/componentServicesList')
}
function getInfoList() {
informationList().then(res => {
const data = res.data
infoList.value = data.length !== 0 ? data.slice(0, 3) : []
infoBottomList.value = data.length !== 0 ? data.slice(4, 6) : []
})
}
getInfoList()
function handleInfoDetails(id) {
router.push(`/information/informationDetail?id=${id}`)
}
</script>
<style scoped lang="scss">
......@@ -1242,27 +1120,21 @@ function handleCarousel(url) {
width: 900px;
margin: 0 auto;
justify-content: space-around;
//display: flex;
//position: relative;
//overflow-x: auto;
//white-space: nowrap
}
//.tabs-header div {
// display: flex;
// justify-content: space-around;
//}
.tabs-header .tabs-box {
flex: 1;
}
.tabs-header button {
display: block;
padding: 5px 0;
background: none;
border: none;
cursor: pointer;
outline: none;
margin: 0 auto;
font-size: 22px;
transition: all .3s ease
transition: all .3s ease;
}
.tabs-header button :hover {
......@@ -1275,8 +1147,6 @@ function handleCarousel(url) {
}
.indicator {
//position: absolute;
//bottom: 0;
height: 2px;
background-color: #1f4aaf;
transition: transform .3s ease
......@@ -1302,9 +1172,7 @@ function handleCarousel(url) {
}
.swiper-box .swiper-list .swiper-item {
//width: 900px;
height: 100%;
margin-right: 40px;
border-radius: 20px;
background-position: center;
background-repeat: no-repeat;
......
<template>
<div class="app-container">
<div class="breadcrumb">
<div class="flex-justify-end">
<el-breadcrumb separator="/">
<el-breadcrumb-item>首页</el-breadcrumb-item>
<el-breadcrumb-item>行业应用</el-breadcrumb-item>
</el-breadcrumb>
</div>
</div>
<div class="block-title">行业概述</div>
<div class="sub-title">{{ titleIndustry }}</div>
<div class="content">
<div class="html-content" v-html="industryInfo"></div>
</div>
<div class="block-title">解决方案</div>
......@@ -42,42 +33,27 @@
<img class="icon" src="@/assets/images/Information-process-2.png" alt="">
<div class="title">初步沟通</div>
<div class="desc">需求答疑,对齐核心诉求,确定合作意向</div>
<!-- <el-button>立即资讯-->
<!-- <el-icon>-->
<!-- <ArrowRight/>-->
<!-- </el-icon>-->
<!-- </el-button>-->
</div>
<div class="item">
<div class="index">3</div>
<img class="icon" src="@/assets/images/Information-process-3.png" alt="">
<div class="title">方案交流</div>
<div class="desc">针对相关方案进行线上或线下的交流探讨</div>
<!-- <el-button>立即资讯-->
<!-- <el-icon>-->
<!-- <ArrowRight/>-->
<!-- </el-icon>-->
<!-- </el-button>-->
</div>
<div class="item">
<div class="index">4</div>
<img class="icon" src="@/assets/images/Information-process-4.png" alt="">
<div class="title">商业流程</div>
<div class="desc">方案确定后,开始执行商务流程</div>
<!-- <el-button>立即资讯-->
<!-- <el-icon>-->
<!-- <ArrowRight/>-->
<!-- </el-icon>-->
<!-- </el-button>-->
</div>
</div>
</div>
</template>
<script setup name="Detail">
import { solutionDetail } from '@/api/industry.js'
import { useRoute } from 'vue-router'
import { ref, watch } from 'vue'
import {solutionDetail} from '@/api/industry.js'
import {useRoute} from 'vue-router'
import {ref, watch} from 'vue'
const route = useRoute()
const industryInfo = ref('')
......@@ -92,8 +68,9 @@ watch(() => route.query.id, val => {
}
})
function getDetail () {
function getDetail() {
solutionDetail({id: route.query.id}).then(res => {
console.log(res, 'res')
industryInfo.value = res.data.industryInfo
titleIndustry.value = res.data.titleIndustry
solutionInfo.value = res.data.solutionInfo
......
<template>
<div class="app-container home">
<div class="custom-main-w">
<div class="resource-list">
<el-row :gutter="40">
<el-col :span="8" v-for="(i,index) in solutionList" :key="index" style="margin-bottom: 40px;cursor: pointer;"
@click="handleSolution(i.id)">
<div class="resource-item">
<div class="img">
<div class="img-title">行业解决方案</div>
</div>
<div class="text-content">
<div class="title">{{ i.title }}</div>
<div class="subtitle">{{ parseTime(i.createTime, "{y}-{m}-{d}") }}</div>
<el-divider style="width: 50px;border-top: 1px #1c84c6 solid;"/>
<p class="info">{{ i.introduction }}</p>
</div>
</div>
</el-col>
</el-row>
</div>
</div>
<div class="content-footer">
<div class="content-detail">
<img src="@/assets/images/indexImg/content1.png" alt=""/>
<div class="name">服务支持</div>
<div class="more">了解更多 ></div>
</div>
<div class="content-detail">
<img src="@/assets/images/indexImg/content2.png" alt=""/>
<div class="name">联系我们</div>
<div class="more">了解更多 ></div>
</div>
<div class="content-detail">
<img src="@/assets/images/indexImg/content3.png" alt=""/>
<div class="name">如何购买</div>
<div class="more">了解更多 ></div>
</div>
</div>
<div class="footer">先进计算科技有限公司 ICP18000749-2</div>
</div>
</template>
<script setup name="industryApplicationsIndex">
import {ref} from 'vue'
import {getSolution} from "@/api/industry.js";
import {parseTime} from "@/utils/ruoyi.js";
import {useRouter} from "vue-router";
const solutionList = ref([])
const router = useRouter();
function getData() {
getSolution().then(res => {
solutionList.value = res.code === 0 ? res.data : []
})
}
getData()
function handleSolution(id) {
router.push(`/industryApplications/detail?id=${id}`)
}
</script>
<style scoped lang="scss">
.carousel-image {
width: 100%;
height: 100%;
object-fit: cover;
}
.view-more-text {
position: sticky;
text-align: center;
font-size: 20px;
color: #000000;
cursor: pointer;
padding-bottom: 60px;
z-index: 2 !important;
}
.new-block {
margin: 0 auto;
display: flex;
justify-content: center;
flex-direction: column;
align-items: center;
padding-top: 74px;
padding-bottom: 41px;
.new-block-details {
z-index: 2 !important;
padding-top: 32px;
}
.resourceLogo {
width: 123px;
height: 123px;
margin-bottom: 32px;
z-index: 2 !important;
}
.details-introduce {
display: flex;
justify-content: center;
text-align: center;
span:first-child {
font-family: Microsoft YaHei;
font-weight: bolder;
font-size: 35px;
color: #000000;
}
span:last-child {
font-family: YouSheBiaoTiHei;
font-weight: 400;
font-size: 42px;
color: #5E6988;
}
}
.present {
font-family: Microsoft YaHei;
font-weight: bolder;
font-size: 17px;
color: #010101;
line-height: 27px;
text-align: center;
}
}
.model-box {
position: relative;
.light {
position: absolute;
z-index: 1;
width: 100%;
left: 0;
top: 12%;
}
}
.block-light {
position: absolute;
z-index: 1 !important;
width: 1700px;
height: 900px;
left: 10px;
top: 40px;
}
.particulars {
width: calc(100% - 240px);
margin: 0 auto;
cursor: pointer;
}
.resource-box {
padding: 44px 66px 0 58px;
height: 248px;
.title {
font-family: Microsoft YaHei;
font-weight: 400;
font-size: 27px;
color: #F0A227;
padding-bottom: 22px;
z-index: 2 !important;
}
.introduce {
font-family: Microsoft YaHei;
font-weight: 400;
font-size: 14px;
color: #FAFBFD;
line-height: 27px;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;
}
}
.resource-col {
z-index: 2 !important;
}
.app-container {
padding: 0;
flex-grow: 1;
flex-shrink: 1;
position: relative;
}
.home {
}
.banner {
position: relative;
cursor: pointer;
//margin-bottom: 64px;
img {
display: block;
width: 100%;
height: 100%;
object-fit: cover;
}
}
.block {
margin: 0 auto;
z-index: 4 !important;
padding-bottom: 60px;
}
.block-title {
font-weight: bold;
font-size: 40px;
color: #303233;
line-height: 60px;
text-align: center;
position: relative;
z-index: 3 !important;
.bg-text {
position: absolute;
left: 50%;
transform: translateX(-50%);
font-family: DIN, system-ui;
font-weight: bold;
font-size: 90px;
color: rgba(0, 0, 0, 0.02);
}
}
.block-sub-title {
font-weight: 400;
font-size: 14px;
color: #949899;
line-height: 22px;
text-align: center;
margin-bottom: 48px;
}
.view-more-btn {
border: 1px solid #C8CBCC;
border-radius: 2px;
height: 40px;
color: #303233;
z-index: 2 !important;
}
.application-item {
height: 436px;
padding: 50px 60px;
background-position: center center;
background-repeat: no-repeat;
background-size: cover;
.title {
margin-bottom: 10px;
}
.desc {
color: #444444;
margin-bottom: 10px;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 4;
max-height: 100px;
-webkit-box-orient: vertical;
}
.link {
color: #444444;
justify-content: center;
}
.title {
text-align: center;
}
.desc {
text-align: center;
width: 300px;
}
}
.partners {
height: 434px;
margin-bottom: 65px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
background: url("@/assets/images/indexImg/bg-1.png") no-repeat;
.title {
font-weight: bold;
font-size: 34px;
color: #303233;
margin-bottom: 20px;
}
.desc {
font-weight: 400;
font-size: 14px;
color: #7e8080;
margin-bottom: 40px;
line-height: 1.8;
}
}
.information-item {
width: 570px;
.content {
font-size: 16px !important;
}
&:not(:last-child) {
padding-bottom: 26px;
margin-bottom: 26px;
border-bottom: 2px solid #D6D7D8;
}
img {
margin-top: 25px;
width: 569px;
}
.date {
font-family: DIN, system-ui;
color: #949899;
margin-right: 15px;
}
.month-day {
margin-bottom: 14px;
font-size: 24px;
}
.year {
font-size: 20px;
}
.right {
min-width: 0;
}
.title {
font-weight: bold;
font-size: 24px;
color: #303233;
margin-bottom: 10px;
padding-right: 45px;
}
.content {
font-weight: 400;
font-size: 14px;
color: #626566;
padding-right: 45px;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;
:deep(*) {
color: #626566 !important;
}
:deep(img) {
display: block;
}
}
}
.footer {
text-align: center;
padding: 12px 0;
color: #7C7D7E;
font-weight: 400;
font-size: 14px;
background-color: #303233;
}
.banner-text {
width: 913px;
position: absolute;
top: 50%;
left: 50%;
display: flex;
transform: translate(-50%, -50%);
}
.banner-text .banner-left div:first-child {
font-family: Microsoft YaHei;
font-weight: 300;
font-size: 75px;
color: #F8F9FD;
//line-height: 56px;
text-indent: 20px;
//padding-bottom: 16px;
span {
//font-family: DIN;
font-weight: bolder;
}
}
.banner-text .banner-left div:last-child {
font-family: Microsoft YaHei;
font-weight: bold;
font-size: 20px;
color: #ECAA1C;
line-height: 27px;
text-align: right;
}
.banner-right {
display: flex;
flex-direction: column;
justify-content: flex-end;
font-family: Microsoft YaHei;
color: #ECAA1C;
padding-left: 34px;
}
.text-right {
display: flex;
flex-direction: row;
align-items: center;
font-family: Microsoft YaHei;
font-weight: bold;
font-size: 15px;
color: #ECAA1C;
//line-height: 20px;
//padding-bottom: 8px;
.text-right-del {
display: flex;
flex-direction: column;
justify-content: flex-end;
align-items: flex-start;
}
.exclamation-point {
font-family: Microsoft YaHei;
font-weight: bold;
font-size: 42px;
font-style: italic;
padding-left: 9px;
}
}
.text-bottom {
font-family: Copperplate Gothic Light;
font-weight: 400;
font-size: 24px;
color: #ECAA1C;
span {
font-weight: bolder;
}
}
.content-footer {
width: 100%;
height: 218px;
background: #fafafa;
display: flex;
justify-content: center;
align-items: center;
padding: 0 190px;
.content-detail {
display: flex;
flex-direction: column;
align-content: center;
align-items: center;
width: 100%;
max-width: 1520px;
cursor: pointer;
.name {
line-height: 32px;
font-size: 24px;
color: #333333;
text-align: center;
}
.more {
line-height: 22px;
font-size: 16px;
color: #333333;
margin-top: 16px;
text-align: center;
}
}
img {
width: 48px;
height: 48px;
margin-bottom: 20px;
}
}
.iframe-container {
position: absolute;
top: 10%;
left: 6%;
}
.iframe-container iframe {
position: absolute;
top: 0;
left: 0;
}
:deep(.el-dialog__body) {
padding-top: unset !important;
}
.el-tabs {
--el-border-color-light: #2E77E3;
--el-tabs-header-height: 48px;
:deep(.el-tabs__content) {
overflow: visible
}
:deep(.el-tabs__active-bar) {
display: none;
}
:deep(.el-tabs__item) {
--el-font-size-base: 16px;
padding-left: 24px !important;
padding-right: 24px !important;
&.is-active {
color: #ffffff;
background-color: #2E77E3;
}
}
}
.custom-title {
padding: 80px 0 50px;
text-align: center
}
.custom-title h5 {
font-size: 30px;
font-weight: 700;
line-height: 2
}
.custom-title p {
color: #9a9a9a;
font-size: 20px;
line-height: 2
}
.view-more-text {
position: sticky;
text-align: center;
font-size: 20px;
color: #000;
cursor: pointer;
padding-bottom: 100px;
z-index: 2 !important
}
.view-more-text .el-button {
padding: 20px 30px
}
.resource-list {
margin: 40px 45px;
}
.resource-item {
background-color: #fff;
border: 1px solid #CECECE;
position: relative;
}
.resource-item .img {
width: 100%;
height: 150px;
background: url("@/assets/images/scheme.jpg") no-repeat;
background-size: cover;
display: flex;
justify-content: center;
align-items: center;
}
.img-title {
font-family: YouSheBiaoTiHei, system-ui;
font-size: 36px;
color: #fff;
line-height: 30px;
padding: 0 20px;
}
.resource-item .img img {
width: auto;
max-height: 100%;
max-width: 100%;
display: inline-block
}
.resource-item .title {
font-weight: 700;
font-size: 22px;
text-align: left;
//height: 80px;
//line-height: 80px
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
width: 100%;
color: #333
}
.resource-item .text-content {
padding: 20px 20px 20px 20px;
.subtitle {
font-size: 14px;
color: #bbb8bf;
padding-top: 5px;
}
}
.resource-item .info {
font-weight: 400;
font-size: 16px;
color: #666;
line-height: 28px;
margin-top: 9px;
margin-bottom: 20px;
height: 112px;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 4;
-webkit-box-orient: vertical
}
.service-card {
background-color: #fff;
margin-bottom: 30px
}
.tabs-container {
display: flex;
flex-direction: column
}
.tabs-header {
display: flex;
width: 900px;
margin: 0 auto;
justify-content: space-around;
//display: flex;
//position: relative;
//overflow-x: auto;
//white-space: nowrap
}
//.tabs-header div {
// display: flex;
// justify-content: space-around;
//}
.tabs-header button {
display: block;
padding: 5px 0;
background: none;
border: none;
cursor: pointer;
outline: none;
margin: 0 auto;
font-size: 22px;
transition: all .3s ease
}
.tabs-header button :hover {
color: #1f4aaf
}
.tabs-header .tab-active {
color: #1f4aaf;
position: relative
}
.indicator {
//position: absolute;
//bottom: 0;
height: 2px;
background-color: #1f4aaf;
transition: transform .3s ease
}
.swiper-box {
//width: 900px;
height: 400px;
//position: relative;
//overflow: hidden;
margin: 40px 0
}
.swiper-box .swiper-list {
//display: flex;
//width: 99999px;
//height: 100%;
//overflow-x: auto;
//position: absolute;
//top: 0;
//left: -300px;
//transition: all .3s
}
.swiper-box .swiper-list .swiper-item {
height: 100%;
border-radius: 20px;
background-position: center;
background-repeat: no-repeat;
background-size: cover
}
.swiper-box .swiper-list .swiper-item :last-child {
margin-right: 0
}
.swiper-box .swiper-list .swiper-item .item {
width: 100%;
height: 100%;
border-radius: 20px;
padding: 30px 20px 60px 20px;
color: #fff;
background-color: #00000026
}
.swiper-box .swiper-list .swiper-item .title {
font-size: 22px;
font-weight: 600;
height: 40px;
line-height: 40px;
padding-bottom: 20px;
text-align: center;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis
}
.swiper-box .swiper-list .swiper-item .desc {
font-size: 16px;
line-height: 28px;
height: 112px;
display: -webkit-box;
-webkit-line-clamp: 4;
-webkit-box-orient: vertical
}
.swiper-box .swiper-list .swiper-item .info {
margin: 20px 0 0
}
.swiper-box .swiper-list .swiper-item .btn {
border: 1px solid #fff;
padding: 5px 20px;
border-radius: 20px;
cursor: pointer;
margin-top: 20px;
}
.iframe-container {
position: absolute;
top: 10%;
left: 6%
}
.iframe-container iframe {
position: absolute;
top: 0;
left: 0
}
.el-dialog__body {
padding-top: unset !important
}
.partner-card {
background: #fff
}
.partner-list {
margin: 0 45px;
padding-bottom: 80px
}
.partner-item {
margin: 30px 40px;
cursor: pointer
}
.partner-item .img {
width: 160px;
height: 70px;
margin: 0 auto;
text-align: center;
display: flex;
justify-content: center;
align-items: center
}
.partner-item .img img {
width: auto;
max-height: 100%;
max-width: 100%;
display: inline-block
}
.partner-item .title {
font-weight: 700;
font-size: 18px;
text-align: center;
margin: 10px auto 0;
height: 36px;
line-height: 36px;
overflow: hidden;
color: #333
}
.information-bottom {
padding: 80px 0 40px
}
.info-top-item {
position: relative;
height: 400px;
overflow: hidden
}
.info-top-item :hover {
cursor: pointer
}
.info-top-item .content {
position: absolute;
left: 0;
right: 0;
bottom: 0;
border-radius: 0 0 10px 10px;
background-color: #10101080;
color: #fff;
padding: 14px 20px;
text-overflow: ellipsis
}
.info-top-item .title {
height: 40px;
line-height: 20px;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical
}
.info-top-item img {
border-radius: 10px;
width: 100%;
height: 100%;
max-width: 100%;
max-height: 100%;
object-fit: cover
}
.info-bottom-item {
margin-bottom: 40px
}
.info-bottom-item :hover {
cursor: pointer
}
.info-bottom-item:hover .title, .info-bottom-item:hover .remark, .info-bottom-item:hover .date {
color: #2c53ad
}
.info-bottom-item .content {
flex: 1;
width: 75%;
padding-right: 200px
}
.info-bottom-item .title {
font-size: 20px;
color: #333;
margin-bottom: 5px;
line-height: 30px;
height: 30px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis
}
.info-bottom-item .remark {
font-size: 16px;
color: #9a9a9a;
overflow: hidden;
line-height: 24px;
max-height: 48px;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical
}
.info-bottom-item .date {
font-family: DIN, system-ui;
margin: 0 15px 0 30px;
line-height: 40px;
height: 40px;
font-size: 16px
}
</style>
<template>
<div class="app-container">
<div class="breadcrumb">
<div class="flex-justify-end">
<el-breadcrumb separator="/">
<el-breadcrumb-item>首页</el-breadcrumb-item>
<el-breadcrumb-item>活动资讯</el-breadcrumb-item>
<el-breadcrumb-item>活动资讯详情</el-breadcrumb-item>
</el-breadcrumb>
</div>
</div>
<div class="main">
<div class="title">{{ detailInfo.title }}</div>
<div class="time">{{ detailInfo.day }}/{{ detailInfo.month }}/{{ detailInfo.year }}</div>
......
<template>
<div class="app-container">
<div class="breadcrumb">
<div class="flex-justify-end">
<el-breadcrumb separator="/">
<el-breadcrumb-item>首页</el-breadcrumb-item>
<el-breadcrumb-item>活动资讯</el-breadcrumb-item>
</el-breadcrumb>
</div>
</div>
<div class="form">
<el-form inline>
<el-form-item label="资讯类型">
<el-select v-model="queryParams.category" clearable @change="getInformation">
<el-option
v-for="dict in information_status"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="行业类别">
<el-select v-model="queryParams.industryCategory" clearable @change="getInformation">
<el-option
v-for="dict in industry_category"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-form>
</div>
<!-- <div class="breadcrumb">-->
<!-- <div class="flex-justify-end">-->
<!-- <el-breadcrumb separator="/">-->
<!-- <el-breadcrumb-item>首页</el-breadcrumb-item>-->
<!-- <el-breadcrumb-item>活动资讯</el-breadcrumb-item>-->
<!-- </el-breadcrumb>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="form">-->
<!-- <el-form inline>-->
<!-- <el-form-item label="资讯类型">-->
<!-- <el-select v-model="queryParams.category" clearable @change="getInformation">-->
<!-- <el-option-->
<!-- v-for="dict in information_status"-->
<!-- :key="dict.value"-->
<!-- :label="dict.label"-->
<!-- :value="dict.value"-->
<!-- />-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="行业类别">-->
<!-- <el-select v-model="queryParams.industryCategory" clearable @change="getInformation">-->
<!-- <el-option-->
<!-- v-for="dict in industry_category"-->
<!-- :key="dict.value"-->
<!-- :label="dict.label"-->
<!-- :value="dict.value"-->
<!-- />-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- </el-form>-->
<!-- </div>-->
<div class="list-box">
<el-row v-if="informationData.length" :gutter="24">
<el-col :span="8" v-for="item in informationData" :key="item.id">
<div class="item" @click="$router.push('/information/informationDetail?id='+item.id)">
<img :src="baseUrl + item.image" alt="">
<img :src="item.image" alt="">
<div class="title">{{ item.title }}</div>
<div class="flex-align-center flex-space-between">
<div class="time">
<div class="time" style="display: flex; align-items: center;flex: 1;">
<span class="date">{{ item.day }}/{{ item.month }}</span>
<span class="year">{{ item.year }}</span>
</div>
......@@ -62,21 +61,14 @@
</template>
<script setup name="InformationList">
import { informationList } from '@/api/home.js'
import { ref } from 'vue'
const {proxy} = getCurrentInstance()
const {
information_status,
industry_category
} = proxy.useDict('information_status', 'industry_category')
import {informationList} from '@/api/home.js'
import {ref} from 'vue'
const queryParams = ref({})
const baseUrl = import.meta.env.VITE_APP_BASE_API
const informationData = ref([])
function getInformation () {
informationList(queryParams.value).then(res => {
function getInformation() {
informationList().then(res => {
res.data.forEach(item => {
item.year = new Date(item.createTime).getFullYear()
item.month = new Date(item.createTime).getMonth() + 1
......@@ -84,6 +76,7 @@ function getInformation () {
item.day = new Date(item.createTime).getDate()
item.day = item.day < 10 ? '0' + item.day : item.day
item.description = item.description.replace('<p><br></p>', '')
item.images = item.images.length !== 0 ? item.images[0] : ''
})
informationData.value = res.data
})
......@@ -132,6 +125,7 @@ getInformation()
.list-box {
width: 1280px;
margin: 0 auto;
padding-top: 70px;
.item {
margin-bottom: 24px;
......@@ -140,6 +134,7 @@ getInformation()
cursor: pointer;
.title {
font-size: 16px !important;
color: #2E77E3;
}
}
......@@ -155,11 +150,11 @@ getInformation()
}
.title {
font-weight: bold;
font-size: 24px;
font-weight: 700;
font-size: 16px;
color: #303233;
margin-bottom: 16px;
height: 66px;
height: 26px;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
......@@ -170,8 +165,8 @@ getInformation()
.date {
font-family: DIN, system-ui;
font-weight: bold;
font-size: 32px;
font-weight: 700;
font-size: 16px;
color: #2E77E3;
margin-right: 16px;
}
......@@ -179,7 +174,7 @@ getInformation()
.year {
font-family: DIN, system-ui;
font-weight: 400;
font-size: 20px;
font-size: 16px;
color: #2E77E3;
}
}
......
......@@ -17,18 +17,17 @@
<p>OUR PARTNER</p></div>
<div class="partner-list">
<el-row :gutter="15">
<el-col :span="8" class="is-guttered">
<el-col :span="8" class="is-guttered" v-for="(i,index) in partnerList" :key="index">
<div class="partner-item">
<div class="img"><img
src="http://ph.xjkcjd.com:18081/prod-api/profile/upload/2024/12/25/智谱_20241225151742A098.png"
alt=""></div>
<div class="title">北京智谱华章科技有限公司</div>
<p class="desc">
北京智谱华章科技有限公司(简称“智谱”)致力于打造新一代认知智能大模型,专注于做大模型的中国创新。公司合作研发了中英双语千亿级超大规模预训练模型GLM-130B,并基于此推出对话模型ChatGLM,开源单卡版模型ChatGLM-6B。同时,团队还打造了AIGC模型及产品矩阵,包括AI提效助手智谱清言(chatglm.cn)、高效率代码模型CodeGeeX、多模态理解模型CogVLM和文生图模型CogView等。公司践行Model
as a
Service(MaaS)的市场理念,推出大模型MaaS开放平台(https://open.bigmodel.cn/),打造高效率、通用化的“模型即服务”AI开发新范式。通过认知大模型链接物理世界的亿级用户,智谱基于完整的模型生态和全流程技术支持,为千行百业带来持续创新与变革,加速迈向通用人工智能的时代。</p>
<div class="img">
<img
:src="i.image.length !==0 ?i.image[0]:''"
alt=""/>
</div>
<div class="title">{{ i.title }}</div>
<p class="desc" v-html="i.description"></p>
<div class="btn-box">
<button aria-disabled="false" type="button"
<button @click="handleOpen(i.url)" aria-disabled="false" type="button"
class="el-button el-button--default is-plain">
<span class="">查看官网 </span>
</button>
......@@ -57,6 +56,23 @@
<script setup>
import {getPartner} from "@/api/industry.js";
const partnerList = ref([])
function getPartnerList() {
getPartner().then((res) => {
partnerList.value = res.data
})
}
function handleOpen(url) {
if (url) {
window.open(url);
}
}
getPartnerList()
</script>
<style scoped lang="scss">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment