From 0b058116985f0b3415f01c69c1735e1f6a7b51ea Mon Sep 17 00:00:00 2001
From: tj <1378534974@qq.com>
Date: 星期一, 17 三月 2025 16:23:26 +0800
Subject: [PATCH] 假数据造
---
src/pages/Home.vue | 1195 +++++++++++++++--------------
src/pages/MainLayout.vue | 2
src/components/HeaderMenu.vue | 11
src/models/portalModels.ts | 65 +
src/components/Footer.vue | 26
src/pages/Home copy.vue | 621 +++++++++++++++
src/pages/Product.vue | 336 +++++---
src/models/portalModels copy.ts | 83 ++
8 files changed, 1,646 insertions(+), 693 deletions(-)
diff --git a/src/components/Footer.vue b/src/components/Footer.vue
new file mode 100644
index 0000000..69375e9
--- /dev/null
+++ b/src/components/Footer.vue
@@ -0,0 +1,26 @@
+<template>
+ <div class="footer">
+ <div class="footer-content">
+ 版权所有© Copyright 1999-2024 云游四方软件股份有限公司 浙ICP备11024936号-1
+ </div>
+ </div>
+</template>
+
+<script setup>
+import { ref } from 'vue';
+
+</script>
+<style scoped>
+.footer {
+ width: 100%;
+ text-align: center;
+ padding: 15px 0;
+ background-color: #f8f8f8;
+
+}
+
+.footer-content {
+ font-size: 12px;
+ color: #333;
+}
+</style>
\ No newline at end of file
diff --git a/src/components/HeaderMenu.vue b/src/components/HeaderMenu.vue
index 46d8439..4e5acb9 100644
--- a/src/components/HeaderMenu.vue
+++ b/src/components/HeaderMenu.vue
@@ -2,7 +2,7 @@
<div class="header">
<div style="width: 600px;">
<el-menu :default-active="menuIndex" class="main-menu" mode="horizontal" @select="handleSelect">
- <el-menu-item index="/">
+ <el-menu-item index="/logo">
<img src="@/assets/logo/logo.png" alt="云游四方" class="logo" />
<span class="logo-text">云游四方</span>
</el-menu-item>
@@ -16,7 +16,7 @@
<el-icon>
<Phone />
</el-icon>
- <span>400-102-8686</span>
+ <span>18913206309</span>
</div>
</div>
</template>
@@ -35,7 +35,12 @@
// 处理菜单点击事件
const handleSelect = (index) => {
// console.log('选中菜单:', index);
- router.push(index);
+ if(index === '/logo'){
+ router.push('/');
+ }else{
+ router.push(index);
+ }
+
};
</script>
<style scoped>
diff --git a/src/models/portalModels copy.ts b/src/models/portalModels copy.ts
new file mode 100644
index 0000000..155a813
--- /dev/null
+++ b/src/models/portalModels copy.ts
@@ -0,0 +1,83 @@
+import { timeSelectProps } from "element-plus";
+
+// 首页轮播图
+export class CarouselItem {
+ url: string;
+ title: string;
+ content: string;
+
+ constructor(url: string, title: string, content: string) {
+ this.url = url;
+ this.title = title;
+ this.content = content;
+ }
+ }
+
+// 合作过的客户
+export class CooperativeClient {
+ url: string;
+ name: string;
+ desc: string;
+
+ constructor(url: string, name: string, desc: string) {
+ this.url = url;
+ this.name = name;
+ this.desc = desc;
+ }
+ }
+
+ // 产品中心
+export class ProductCenter {
+ url: string;
+ name: string;
+ desc: string;
+
+ constructor(url: string, name: string, desc: string) {
+ this.url = url;
+ this.name = name;
+ this.desc = desc;
+ }
+ }
+
+ export class CompanyInfo {
+ logo: string; // logo
+ name: string; // 公司名称
+ desc: string; // 公司描述
+ address: string; // 公司地址
+ wechat: string;
+ phoneHotList: Array<string>; // 热线
+ phoneSaleAfterList: Array<string>; // 售后电话
+ qrCodeList: Array<CompanyQrCodeInfo>; // 二维码
+
+ constructor(logo: string, name: string, desc: string,address: string,wechat:string,phoneHotList: Array<string>,phoneSaleAfterList: Array<string>,qrCodeList: Array<CompanyQrCodeInfo>) {
+ this.logo = logo;
+ this.name = name;
+ this.desc = desc;
+ this.address = address;
+ this.phoneHotList = phoneHotList;
+ this.phoneSaleAfterList = phoneSaleAfterList;
+ this.qrCodeList = qrCodeList;
+ }
+ }
+
+
+ export class CompanyQrCodeInfo {
+ url: string; // logo
+ name: string; // 公司名称
+
+ constructor(url: string, name: string) {
+ this.url=url
+ this.name=name
+ }
+ }
+
+
+ // 产品中心-菜单
+ export interface MenuItem {
+ index: string;
+ title: string;
+ icon?: any;
+ subMenu?: MenuItem[];
+ }
+
+
\ No newline at end of file
diff --git a/src/models/portalModels.ts b/src/models/portalModels.ts
new file mode 100644
index 0000000..b4b7871
--- /dev/null
+++ b/src/models/portalModels.ts
@@ -0,0 +1,65 @@
+// 首页轮播图
+export interface CarouselItem {
+ url: string;
+ title: string;
+ content: string;
+}
+
+
+// 我们的产品
+export interface Products {
+ imgUrl: string;
+ title: string;
+ desc: string;
+}
+
+// 新增接口来表示产品组
+export interface ProductGroup {
+ products: Products[];
+}
+
+// 合作过的客户
+export interface CooperativeClient {
+ url: string;
+ name: string;
+ desc: string;
+}
+
+// 产品中心
+export interface ProductCenter {
+ url: string;
+ name: string;
+ desc: string;
+}
+
+// 公司基本信息
+export interface CompanyInfo {
+ logo: string; // logo
+ name: string; // 公司名称
+ desc: string; // 公司描述
+ address: string; // 公司地址
+ wechat: string;
+ phoneHotList: Array<string>; // 热线
+ phoneSaleAfterList: Array<string>; // 售后电话
+ qrCodeList: Array<CompanyQrCodeInfo>; // 二维码
+}
+
+
+// 公司二维码信息
+export interface CompanyQrCodeInfo {
+ url: string; // logo
+ name: string; // 公司名称
+}
+
+
+// 产品中心-菜单
+export interface MenuItem {
+ index: string;
+ title: string;
+ imgUrl: string;
+ pdfUrl: string;
+ icon?: any;
+ subMenu?: MenuItem[];
+}
+
+
diff --git a/src/pages/Home copy.vue b/src/pages/Home copy.vue
new file mode 100644
index 0000000..c10e4ed
--- /dev/null
+++ b/src/pages/Home copy.vue
@@ -0,0 +1,621 @@
+<template>
+ <div class="home-container">
+ <div class="carousel-container" style="margin-top:60px;">
+ <!-- 上方主要轮播 -->
+ <el-carousel ref="mainCarousel" indicator-position="none" trigger="click" height="100vh" :pause-on-hover="false"
+ @change="handleMainChange">
+ <el-carousel-item v-for="(item, index) in items" :key="index" style="display: flex; justify-content: center;">
+ <div class="carousel-content-main" :style="{
+ backgroundImage: `url(${item.url})`,
+ backgroundSize: 'cover',
+ backgroundPosition: 'center',
+ width: '100%',
+ height: '100%'
+ }">
+ <!-- {{ item.content }} -->
+ </div>
+ </el-carousel-item>
+ </el-carousel>
+
+ <!-- 下方卡片模式轮播 -->
+ <el-carousel ref="cardCarousel" :interval="5000" arrow="always" indicator-position="none" trigger="click"
+ type="card" height="100px" class="overlay-carousel" @change="handleCardChange">
+ <el-carousel-item v-for="(item, index) in items" :key="index">
+ <div class="carousel-content">
+ <div class="title">{{ item.title }}</div>
+ <div class="content">{{ item.content }}</div>
+ </div>
+ </el-carousel-item>
+ </el-carousel>
+ </div>
+
+ <div class="our-products">
+ <div class="our-products-title">
+ <h1>我们的产品</h1>
+ </div>
+ <div class="our-products-carousel">
+ <el-carousel :interval="3000" arrow="always">
+ <el-carousel-item v-for="item in 4" :key="item">
+ <!-- 这里是存放产品信息 -->
+ <el-row>
+ <el-col :span="6" v-for="o in 4" :key="o">
+ <div class="our-products-carousel-product">
+ <el-card>
+ <div class="card-content-div"><span class="card-content-div-title">智慧校园门户网站</span></div>
+ <div class="card-content-div"><span
+ class="card-content-div-content">提供全流程、一体化的数据治理与数据服务提供全流程、一体化的数据治理与数据服务</span></div>
+ <img src="http://192.168.1.201:9000/portal/bg.png"
+ style="width: 100%; height: 100px;object-fit: cover;" />
+ </el-card>
+ </div>
+ </el-col>
+ </el-row>
+ </el-carousel-item>
+ </el-carousel>
+ </div>
+ </div>
+
+ <div class="third-other">
+ <el-row>
+ <el-col :span="8">
+ <div class="third-other-title">产品中心</div>
+ <ul class="footer-list footer-list-menus">
+ <li v-for="(item, index) in ProductCenters"><el-link :underline="false" :href="item.url" target="_blank"><span class="f12">{{item.name}}</span></el-link></li>
+ </ul>
+ </el-col>
+ <el-col :span="8">
+ <div class="third-other-title">合作过的客户</div>
+ <div>
+ <img v-for="(item, index) in cooperativeClients" :src="item.url" class="cooperation-img" />
+ </div>
+ </el-col>
+ <el-col :span="8">
+ <div class="third-other-title">公司信息</div>
+ <div class="contact-us">
+ <div class="j-a-c">
+ <div class="j-a-c">
+ <img :src="companyInfo.logo" alt="云游四方" class="logo-l" />
+ <span class="logo-l-text">{{ companyInfo.name }}</span>
+ </div>
+ <div class="f12 m-10"> {{ companyInfo.desc }}</div>
+ </div>
+ <!-- <div class="j-a-c">
+ <p><span class="f12 m-10">全国热线电话:</span>
+ <el-link v-for="(item, index) in companyInfo.phoneHotList" :underline="false" href="tel:400-102-8686"><span class="f12 m-10">{{ item }}</span></el-link>
+ </p>
+ </div>
+ <div class="j-a-c">
+ <p><span class="f12 m-10">全国售后电话:</span>
+ <el-link v-for="(item, index) in companyInfo.phoneSaleAfterList" :underline="false" href="tel:400-102-8686"><span class="f12 m-10">{{ item }}</span></el-link>
+ </p>
+ </div> -->
+ <div class="j-a-c">
+ <p><span class="f12 m-10">地址:{{ companyInfo.address }}</span></p>
+ </div>
+ <div class="footer-QR-code">
+ <div class="j-a-c-column" v-for="(item, index) in companyInfo.qrCodeList"><img :src="item.url" alt="云游四方" class="qr-code-img" /><span>{{ item.name }}</span></div>
+ </div>
+ </div>
+ </el-col>
+ </el-row>
+ </div>
+ <el-backtop :right="20" :bottom="50" style="width: 30px; height: 30px;" />
+
+ <!-- 右侧悬浮按钮 -->
+
+ <div class="float-buttons">
+ <el-popover placement="left" trigger="hover">
+
+ <div class="j-a-c">
+ <img :src="companyInfo.wechat" alt="微信二维码" class="popover-img" style="width: 100px; height: 100px;" />
+ </div>
+ <template #reference>
+ <div class="j-a-c">
+ <img src="http://192.168.1.201:9000/portal/wechat.png" alt="微信" class="xuanfu" />
+ </div>
+
+ </template>
+ </el-popover>
+
+ <el-popover placement="left" trigger="hover">
+ <p>18913206309</p>
+ <template #reference>
+ <img src="http://192.168.1.201:9000/portal/phone.png" alt="电话" class="xuanfu" />
+ </template>
+ </el-popover>
+ </div>
+
+ </div>
+</template>
+
+<script lang="ts" setup>
+import { ref } from 'vue'
+import type { ElCarousel } from "element-plus";
+// import { CarouselItem } from '@/models/carouselItem';
+// import { CooperativeClient } from '@/models/cooperativeClient';
+import { CarouselItem,CooperativeClient,ProductCenter,CompanyInfo, CompanyQrCodeInfo } from '@/models/portalModels';
+
+
+// const items = ref([0, 1, 2, 3]); // 轮播项
+const mainCarousel = ref<InstanceType<typeof ElCarousel> | null>(null);
+const cardCarousel = ref<InstanceType<typeof ElCarousel> | null>(null);
+
+ // 创建数据列表
+const items = ref<CarouselItem[]>([
+ new CarouselItem('http://192.168.1.201:9000/portal/bg.png', '智慧校园', '智慧校园信息门户'),
+ new CarouselItem('http://192.168.1.201:9000/portal/bg.png', '统一认证', '统一身份认证平台'),
+ new CarouselItem('http://192.168.1.201:9000/portal/bg.png', '数据管理', '数据管理中心平台')
+]);
+
+const handleMainChange = (index: number) => {
+ if (cardCarousel.value) {
+ cardCarousel.value.setActiveItem(index); // 同步下方轮播
+ }
+};
+const handleCardChange = (index: number) => {
+ if (mainCarousel.value) {
+ mainCarousel.value.setActiveItem(index); // 同步上方轮播
+ }
+};
+
+const cooperativeClients = ref<CooperativeClient[]>([
+ new CooperativeClient('http://192.168.1.201:9000/portal/customers/c29.png', '图片2', '图片2'),
+ new CooperativeClient('http://192.168.1.201:9000/portal/customers/c34.png', '图片2', '图片2'),
+
+ new CooperativeClient('http://192.168.1.201:9000/portal/customers/c1.png', '图片1', '图片1'),
+ new CooperativeClient('http://192.168.1.201:9000/portal/customers/c22.png', '图片2', '图片2'),
+ new CooperativeClient('http://192.168.1.201:9000/portal/customers/c23.png', '图片2', '图片2'),
+ new CooperativeClient('http://192.168.1.201:9000/portal/customers/c24.png', '图片2', '图片2'),
+ new CooperativeClient('http://192.168.1.201:9000/portal/customers/c25.png', '图片2', '图片2'),
+ new CooperativeClient('http://192.168.1.201:9000/portal/customers/c26.png', '图片2', '图片2'),
+ new CooperativeClient('http://192.168.1.201:9000/portal/customers/c27.png', '图片2', '图片2'),
+ new CooperativeClient('http://192.168.1.201:9000/portal/customers/c28.png', '图片2', '图片2'),
+ // new CooperativeClient('http://192.168.1.201:9000/portal/customers/c29.png', '图片2', '图片2'),
+ new CooperativeClient('http://192.168.1.201:9000/portal/customers/c30.png', '图片2', '图片2'),
+ new CooperativeClient('http://192.168.1.201:9000/portal/customers/c31.png', '图片2', '图片2'),
+ new CooperativeClient('http://192.168.1.201:9000/portal/customers/c32.png', '图片2', '图片2'),
+ new CooperativeClient('http://192.168.1.201:9000/portal/customers/c33.png', '图片2', '图片2'),
+ // new CooperativeClient('http://192.168.1.201:9000/portal/customers/c34.png', '图片2', '图片2'),
+ new CooperativeClient('http://192.168.1.201:9000/portal/customers/c35.png', '图片2', '图片2'),
+ new CooperativeClient('http://192.168.1.201:9000/portal/customers/c36.png', '图片2', '图片2'),
+ new CooperativeClient('http://192.168.1.201:9000/portal/customers/c37.png', '图片2', '图片2'),
+ new CooperativeClient('http://192.168.1.201:9000/portal/customers/c38.png', '图片2', '图片2'),
+ new CooperativeClient('http://192.168.1.201:9000/portal/customers/c39.png', '图片2', '图片2'),
+ new CooperativeClient('http://192.168.1.201:9000/portal/customers/c40.png', '图片2', '图片2'),
+])
+
+
+const ProductCenters = ref<ProductCenter[]>([
+ new ProductCenter('http://192.168.1.201:9000/portal/product-center/LIMS系统介绍方案.pdf', 'LIMS实验室管理系统', 'LIMS实验室管理系统'),
+ new ProductCenter('http://192.168.1.201:9000/portal/product-center/外部供应商管理系统介绍.pdf', '供应商管理系统', '供应商管理系统'),
+ new ProductCenter('', 'TQS企业培训系统', 'TQS企业培训系统'),
+ new ProductCenter('http://192.168.1.201:9000/portal/product-center/花满芫小程序产品介绍.pdf', 'S2B2B小程序平台', 'S2B2B小程序平台'),
+ new ProductCenter('http://192.168.1.201:9000/portal/product-center/FJIT系统介绍.pdf', 'JIT系统', 'JIT系统'),
+ new ProductCenter('http://192.168.1.201:9000/portal/product-center/CPTM软件产品介绍.pdf', 'CPTM企业能力管理系统', 'CPTM企业能力管理系统'),
+])
+
+
+const companyInfo = ref<CompanyInfo>({
+ logo: "http://192.168.1.201:9000/portal/logo.png",
+ name: "云游四方",
+ desc: "专注于智能化解决方案",
+ address: "江苏省苏州市虎丘区华云路1号桑田岛科创园",
+ wechat:"http://192.168.1.201:9000/portal/company-info/联系微信.png",
+ phoneHotList: ["400-123-4567", "010-88889999"],
+ phoneSaleAfterList: ["400-987-6543", "010-66667777"],
+ qrCodeList: [
+ new CompanyQrCodeInfo("http://192.168.1.201:9000/portal/company-info/服务号.jpg", "服务号"),
+ new CompanyQrCodeInfo("http://192.168.1.201:9000/portal/company-info/联系微信.png", "联系微信"),
+ ]
+});
+
+
+</script>
+
+<style scoped>
+.home-container {
+ position: relative;
+ width: 100%;
+ min-height: 100vh;
+ margin: 0;
+ padding: 0;
+}
+
+
+
+.el-menu--horizontal {
+ --el-menu-horizontal-height: 40px;
+}
+
+.logo-container {
+ display: flex;
+ align-items: center;
+}
+
+.logo {
+ height: 40px;
+ margin-right: 10px;
+}
+
+.logo-text {
+ font-size: 18px;
+ font-weight: bold;
+ color: #333;
+}
+
+
+
+.main-content {
+ width: 100%;
+ margin-top: 60px;
+ /* 为固定的header留出空间 */
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ padding: 0px;
+ /* height: 600px; */
+ width: 100%;
+}
+
+.banner {
+ position: relative;
+ width: 100%;
+ min-height: calc(100vh - 60px);
+ /* 减去header高度 */
+ background: linear-gradient(to bottom, #1a237e, #3949ab);
+ color: white;
+ /* padding: 40px 0; */
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ box-sizing: border-box;
+}
+
+.logos-container {
+ display: flex;
+ justify-content: center;
+ gap: 40px;
+ margin: 30px 0;
+}
+
+.cert-logo,
+.company-logo {
+ height: 80px;
+}
+
+.main-title {
+ font-size: 36px;
+ text-align: center;
+ margin: 40px 0;
+}
+
+.organizers {
+ display: flex;
+ justify-content: center;
+ gap: 20px;
+ margin: 20px 0;
+}
+
+.org-item {
+ display: flex;
+ align-items: center;
+}
+
+.org-label {
+ color: #ccc;
+ margin-right: 5px;
+}
+
+.org-name {
+ color: white;
+}
+
+.location {
+ margin: 40px 0;
+}
+
+.location h2 {
+ font-size: 32px;
+ text-align: center;
+}
+
+.info-cards {
+ display: flex;
+ justify-content: center;
+ gap: 20px;
+ width: 80%;
+ margin-top: 40px;
+ margin-bottom: 40px;
+ /* 添加底部间距 */
+ flex-wrap: wrap;
+ /* 在小屏幕上允许换行 */
+}
+
+.info-card {
+ background-color: rgba(255, 255, 255, 0.1);
+ padding: 20px;
+ border-radius: 5px;
+ flex: 1;
+ min-width: 250px;
+ /* 确保在小屏幕上有最小宽度 */
+}
+
+.card-title {
+ font-size: 18px;
+ margin-bottom: 10px;
+ color: white;
+}
+
+.card-desc {
+ color: #ddd;
+ font-size: 14px;
+}
+
+.float-buttons {
+ position: fixed;
+ right: 20px;
+ bottom: 100px;
+ display: flex;
+ flex-direction: column;
+ gap: 10px;
+}
+
+.float-btn {
+ width: 60px;
+ height: 60px;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+}
+
+.btn-content {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ font-size: 12px;
+}
+
+.product-btn {
+ background-color: #fff;
+ color: #333;
+}
+
+.service-btn {
+ background-color: #fff;
+ color: #333;
+}
+
+.top-btn {
+ background-color: #fff;
+ color: #333;
+}
+
+/* 添加响应式设计 */
+@media (max-width: 768px) {
+ .organizers {
+ flex-direction: column;
+ align-items: center;
+ }
+
+ .info-cards {
+ width: 90%;
+ }
+
+ .main-title {
+ font-size: 28px;
+ padding: 0 15px;
+ }
+}
+</style>
+
+
+<style scoped>
+.demonstration {
+ color: var(--el-text-color-secondary);
+}
+
+.el-carousel__item h3 {
+ color: #475669;
+ opacity: 0.75;
+ line-height: 150px;
+ margin: 0;
+ text-align: center;
+}
+
+.el-carousel__item:nth-child(2n) {
+ /* background-color: #FFFFFF; */
+}
+
+.el-carousel__item:nth-child(2n + 1) {
+ /* background-color: #FFFFFF; */
+}
+</style>
+
+<style scoped>
+.carousel-container {
+ position: relative;
+ margin-top: 30px;
+ min-height: calc(100vh - 60px);
+}
+.carousel-content-main{
+ height: 100%;
+}
+
+.overlay-carousel {
+ position: absolute;
+ top: 500px;
+ /* 调整此值控制重叠程度 */
+ left: 50%;
+ transform: translateX(-50%);
+ width: 80%;
+ /* 适当调整宽度 */
+}
+
+.our-products {
+ margin-top: 50px;
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ /* 设置子元素垂直排列 */
+ align-items: center;
+ /* 可选:将子元素水平居中 */
+ padding: 0 50px;
+
+}
+
+.our-products-title {
+ width: 100%;
+ height: 50px;
+ text-align: center;
+}
+
+.our-products-carousel {
+ margin-top: 30px;
+ width: 80%;
+ /* height: 300px; */
+}
+
+.our-products-carousel-product {
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ /* 设置子元素垂直排列 */
+ align-items: center;
+ /* 可选:将子元素水平居中 */
+ padding: 0 5px;
+}
+
+.card-content-div {
+ text-align: center;
+ margin: 10px;
+}
+
+.card-content-div-title {
+ font-weight: 500;
+}
+
+.card-content-div-content {
+ color: gray;
+ font-size: 14px;
+}
+
+.third-other {
+ width: 100%;
+ text-align: center;
+ margin-top: 30px;
+ background-color: #F2F5FA;
+ padding: 20px;
+}
+
+
+.third-other-title {
+ margin: 0 20px;
+}
+
+
+.footer-list {
+ display: flex;
+ flex-wrap: wrap;
+ /* Allow wrapping to new lines */
+}
+
+.footer-list li {
+ width: 48%;
+ /* Adjust this value to control the width of each item */
+ margin-bottom: 5px;
+ /* Optional: Adds space between rows */
+ text-align: left;
+}
+
+.f12 {
+ font-size: 12px;
+ color: #2B2B2B;
+}
+
+ul,
+ol,
+li {
+ list-style: none;
+}
+
+ul {
+ margin: 0;
+}
+
+ol,
+ul {
+ margin-top: 0;
+ margin-bottom: 10px;
+}
+
+.cooperation-img {
+ width: 50px;
+ height: 50px;
+ object-fit: cover;
+ margin: 5px;
+}
+
+.contact-us {
+ margin: 10px;
+}
+
+.j-a-c {
+ display: flex;
+ /* justify-content: center; */
+ align-items: center;
+}
+
+.j-a-c-column{
+ display: flex;
+ align-items: center;
+ flex-direction: column;
+}
+
+.logo-l {
+ height: 20px;
+}
+
+.logo-l-text {
+ font-size: 12px;
+ font-weight: bold;
+ color: #333;
+}
+
+.m-10 {
+ margin-left: 10px;
+}
+
+.footer-QR-code {
+ display: flex;
+ justify-content: flex-start;
+ margin-top: 10px;
+}
+
+.qr-code-img {
+ width: 60px;
+ height: 60px;
+}
+
+.xuanfu {
+ width: 30px;
+ height: 30px;
+}
+
+/*
+::v-deep .el-carousel__mask {
+
+ height: 100%;
+ left: 0;
+ opacity: .24;
+ position: absolute;
+ top: 0;
+ transition: var(--el-transition-duration-fast);
+ width: 100%;
+} */
+
+.carousel-content {
+ /* width: 50%;
+ background-color: #FFFFFF; */
+ text-align: center;
+}
+</style>
\ No newline at end of file
diff --git a/src/pages/Home.vue b/src/pages/Home.vue
index b015dab..d9b0473 100644
--- a/src/pages/Home.vue
+++ b/src/pages/Home.vue
@@ -1,583 +1,632 @@
<template>
- <div class="home-container">
- <div class="carousel-container" style="margin-top:60px;">
- <!-- 上方主要轮播 -->
- <el-carousel ref="mainCarousel"
- indicator-position="none" trigger="click" height="550px" :pause-on-hover="false"
- @change="handleMainChange">
- <el-carousel-item v-for="(item, index) in items" :key="index"
- style="display: flex; justify-content: center;">
- <div class="carousel-content-main" :style="{
- backgroundImage: `url(http://192.168.1.201:9000/portal/bg.png)`,
- backgroundSize: 'cover',
- backgroundPosition: 'center',
- width: '100%',
- height: '100%'
- }">
- aaaaaaaaaaa{{ item }}
- </div>
- </el-carousel-item>
- </el-carousel>
-
- <!-- 下方卡片模式轮播 -->
- <el-carousel ref="cardCarousel" :interval="3000" arrow="always" indicator-position="none" trigger="click" type="card" height="100px"
- class="overlay-carousel" @change="handleCardChange">
- <el-carousel-item v-for="(item, index) in items" :key="index">
- <div class="carousel-content">
- <div class="title">aaaaaaaaaaa{{ item }}</div>
- <div class="content">我是内容我是内容我是内容我是内容我是内容</div>
- </div>
- </el-carousel-item>
- </el-carousel>
- </div>
-
- <div class="our-products">
- <div class="our-products-title">
- <h1>我们的产品</h1>
- </div>
- <div class="our-products-carousel">
- <el-carousel :interval="3000" arrow="always">
- <el-carousel-item v-for="item in 4" :key="item">
- <!-- 这里是存放产品信息 -->
- <el-row>
- <el-col :span="6" v-for="o in 4" :key="o">
- <div class="our-products-carousel-product">
- <el-card>
- <div class="card-content-div"><span class="card-content-div-title">智慧校园门户网站</span></div>
- <div class="card-content-div"><span
- class="card-content-div-content">提供全流程、一体化的数据治理与数据服务提供全流程、一体化的数据治理与数据服务</span></div>
- <img src="http://192.168.1.201:9000/portal/bg.png"
- style="width: 100%; height: 100px;object-fit: cover;" />
- </el-card>
- </div>
- </el-col>
- </el-row>
- </el-carousel-item>
- </el-carousel>
- </div>
- </div>
-
- <div class="third-other">
- <el-row>
- <el-col :span="8">
- <div>产品中心</div>
- <ul class="footer-list footer-list-menus">
- <li><el-link :underline="false" href="./product/tymhxt.html"><span class="f12">智慧校园信息服务门户</span></el-link>
- </li>
- <li><el-link :underline="false" href="./product/tyrzxt.html"><span class="f12">统一身份认证服务平台</span></el-link>
- </li>
- <li><el-link :underline="false" href="./product/ydglxt.html"><span class="f12">移动智慧校园平台</span></el-link>
- </li>
- <li><el-link :underline="false" href="./product/sjglxt.html"><span class="f12">数据管理中心平台</span></el-link>
- </li>
- <li><el-link :underline="false" href="./product/jcpt.html"><span class="f12">集成平台</span></el-link> </li>
- <li><el-link :underline="false" href="./product/jxglxt.html"><span class="f12">教学管理服务平台</span></el-link>
- </li>
- <li><el-link :underline="false" href="./product/zsglxt.html"><span class="f12">招生管理服务平台</span></el-link>
- </li>
- <li><el-link :underline="false" href="./product/yxglxt.html"><span class="f12">迎新管理服务平台</span></el-link>
- </li>
- <li><el-link :underline="false" href="./product/xgmhxt.html"><span class="f12">学生工作管理服务平台</span></el-link>
- </li>
- <li><el-link :underline="false" href="./product/lxglxt.html"><span class="f12">离校管理服务平台</span></el-link>
- </li>
- <li><el-link :underline="false" href="./product/jyglxt.html"><span class="f12">就业管理服务平台</span></el-link>
- </li>
- <li><el-link :underline="false" href="./product/kyglxt.html"><span class="f12">科研管理服务平台</span></el-link>
- </li>
- <li><el-link :underline="false" href="./product/zyglxt.html"><span class="f12">人力资源管理服务平台</span></el-link>
- </li>
- <li><el-link :underline="false" href="./product/zhbgpt.html"><span class="f12">智慧办公服务平台</span></el-link>
- </li>
- <li><el-link :underline="false" href="./product/wsbs.html"><span class="f12">网上办事大厅</span></el-link> </li>
- <li><el-link :underline="false" href="./product/yjsxxfwxt.html"><span
- class="f12">研究生信息管理与服务平台</span></el-link> </li>
- <li><el-link :underline="false" href="./product/zzcxdyytj.html"><span class="f12">自助查询打印一体机</span></el-link>
- </li>
- </ul>
- </el-col>
- <el-col :span="8">
- <div>合作过的客户</div>
- <div>
- <img v-for="(item, index) in 28" src="http://192.168.1.201:9000/portal/bg.png" class="cooperation-img" />
- </div>
- </el-col>
- <el-col :span="8">
- <div>公司信息</div>
- <div class="contact-us">
- <div class="j-a-c">
- <div class="j-a-c">
- <img src="@/assets/logo/logo.png" alt="云游四方" class="logo-l" />
- <span class="logo-l-text">云游四方</span>
- </div>
- <div class="f12 m-10"> 科技创新 服务教育</div>
- </div>
- <div class="j-a-c">
- <p><span class="f12 m-10">全国热线电话:</span>
- <el-link :underline="false" href="tel:400-102-8686"><span class="f12 m-10">400-102-8686</span></el-link>
- <el-link :underline="false" href="tel:400-102-8686"><span class="f12 m-10">400-102-8686</span></el-link>
- </p>
- </div>
- <div class="j-a-c">
- <p><span class="f12 m-10">全国售后电话:</span>
- <el-link :underline="false" href="tel:400-102-8686"><span class="f12 m-10">400-102-8686</span></el-link>
- <el-link :underline="false" href="tel:400-102-8686"><span class="f12 m-10">400-102-8686</span></el-link>
- </p>
- </div>
- <div class="j-a-c">
- <p><span class="f12 m-10">地址:浙江省杭州市西湖区紫霞街176号杭州互联网创新创业园2-301</span></p>
- </div>
- <div class="footer-QR-code">
- <div class="j-a-c"><img src="@/assets/logo/logo.png" alt="云游四方" class="qr-code-img" /></div>
- <div class="j-a-c"><img src="@/assets/logo/logo.png" alt="云游四方" class="qr-code-img" /></div>
- </div>
-
- </div>
- </el-col>
- </el-row>
- </div>
-
-
-
- <el-backtop :right="20" :bottom="50" style="width: 30px; height: 30px;" />
-
- <!-- 右侧悬浮按钮 -->
-
- <div class="float-buttons">
- <el-popover placement="left" trigger="hover">
- <img src="http://192.168.1.201:9000/portal/wechat.png" alt="微信二维码" class="popover-img" />
- <template #reference>
- <img src="http://192.168.1.201:9000/portal/wechat.png" alt="微信" class="xuanfu" />
- </template>
- </el-popover>
-
- <el-popover placement="left" trigger="hover">
- <p>123-456-789</p>
- <template #reference>
- <img src="http://192.168.1.201:9000/portal/phone.png" alt="电话" class="xuanfu" />
- </template>
- </el-popover>
- </div>
-
+ <div class="home-container">
+ <div class="carousel-container" style="margin-top:60px;">
+ <!-- 上方主要轮播 -->
+ <el-carousel ref="mainCarousel" indicator-position="none" trigger="click" height="100vh" :pause-on-hover="false"
+ @change="handleMainChange">
+ <el-carousel-item v-for="(item, index) in items" :key="index" style="display: flex; justify-content: center;">
+ <div class="carousel-content-main" :style="{
+ backgroundImage: `url(${item.url})`,
+ backgroundSize: 'cover',
+ backgroundPosition: 'center',
+ width: '100%',
+ height: '100%'
+ }">
+ <!-- {{ item.content }} -->
+ </div>
+ </el-carousel-item>
+ </el-carousel>
+
+ <!-- 下方卡片模式轮播 -->
+ <el-carousel ref="cardCarousel" :interval="5000" arrow="always" indicator-position="none" trigger="click"
+ type="card" height="100px" class="overlay-carousel" @change="handleCardChange">
+ <el-carousel-item v-for="(item, index) in items" :key="index">
+ <div class="carousel-content">
+ <div class="title">{{ item.title }}</div>
+ <div class="content">{{ item.content }}</div>
+ </div>
+ </el-carousel-item>
+ </el-carousel>
</div>
- </template>
-
- <script lang="ts" setup>
- import { ref } from 'vue'
- import { Phone, Monitor, Service, Top } from '@element-plus/icons-vue'
- import type { ElCarousel } from "element-plus";
- import HeaderMenu from '@/components/HeaderMenu.vue';
-
- const handleSelect = (key: string, keyPath: string[]) => {
- console.log(key, keyPath)
+
+ <div class="our-products">
+ <div class="our-products-title">
+ <h1>我们的产品</h1>
+ </div>
+ <div class="our-products-carousel">
+ <el-carousel :interval="3000" arrow="always" height="400px" >
+ <el-carousel-item v-for="(group, groupIndex) in productGroups" :key="groupIndex">
+ <el-row>
+ <el-col :span="6" v-for="(product, productIndex) in group.products" :key="productIndex">
+ <div class="our-products-carousel-product">
+ <el-card>
+ <div class="card-content-div"><span class="card-content-div-title">{{ product.title }}</span></div>
+ <div class="card-content-div">
+ <span class="card-content-div-content">{{ product.desc }}</span>
+ </div>
+ <img :src="product.imgUrl" style="width: 100%; height: 100px; object-fit: cover;" />
+ </el-card>
+ </div>
+ </el-col>
+ </el-row>
+ </el-carousel-item>
+ </el-carousel>
+ </div>
+ </div>
+
+ <div class="third-other">
+ <el-row>
+ <el-col :span="8">
+ <div class="third-other-title">产品中心</div>
+ <ul class="footer-list footer-list-menus">
+ <li v-for="(item, index) in ProductCenters"><el-link :underline="false" :href="item.url" target="_blank"><span class="f12">{{item.name}}</span></el-link></li>
+ </ul>
+ </el-col>
+ <el-col :span="8">
+ <div class="third-other-title">合作过的客户</div>
+ <div>
+ <img v-for="(item, index) in cooperativeClients" :src="item.url" class="cooperation-img" />
+ </div>
+ </el-col>
+ <el-col :span="8">
+ <div class="third-other-title">公司信息</div>
+ <div class="contact-us">
+ <div class="j-a-c">
+ <div class="j-a-c">
+ <img :src="companyInfo.logo" alt="云游四方" class="logo-l" />
+ <span class="logo-l-text">{{ companyInfo.name }}</span>
+ </div>
+ <div class="f12 m-10"> {{ companyInfo.desc }}</div>
+ </div>
+ <!-- <div class="j-a-c">
+ <p><span class="f12 m-10">全国热线电话:</span>
+ <el-link v-for="(item, index) in companyInfo.phoneHotList" :underline="false" href="tel:400-102-8686"><span class="f12 m-10">{{ item }}</span></el-link>
+ </p>
+ </div>
+ <div class="j-a-c">
+ <p><span class="f12 m-10">全国售后电话:</span>
+ <el-link v-for="(item, index) in companyInfo.phoneSaleAfterList" :underline="false" href="tel:400-102-8686"><span class="f12 m-10">{{ item }}</span></el-link>
+ </p>
+ </div> -->
+ <div class="j-a-c">
+ <p><span class="f12 m-10">地址:{{ companyInfo.address }}</span></p>
+ </div>
+ <div class="footer-QR-code">
+ <div class="j-a-c-column" v-for="(item, index) in companyInfo.qrCodeList"><img :src="item.url" alt="云游四方" class="qr-code-img" /><span>{{ item.name }}</span></div>
+ </div>
+ </div>
+ </el-col>
+ </el-row>
+ </div>
+ <el-backtop :right="20" :bottom="50" style="width: 30px; height: 30px;" />
+
+ <!-- 右侧悬浮按钮 -->
+
+ <div class="float-buttons">
+ <el-popover placement="left" trigger="hover">
+
+ <div class="j-a-c">
+ <img :src="companyInfo.wechat" alt="微信二维码" class="popover-img" style="width: 100px; height: 100px;" />
+ </div>
+ <template #reference>
+ <div class="j-a-c">
+ <img src="http://192.168.1.201:9000/portal/wechat.png" alt="微信" class="xuanfu" />
+ </div>
+
+ </template>
+ </el-popover>
+
+ <el-popover placement="left" trigger="hover">
+ <p>18913206309</p>
+ <template #reference>
+ <img src="http://192.168.1.201:9000/portal/phone.png" alt="电话" class="xuanfu" />
+ </template>
+ </el-popover>
+ </div>
+
+ </div>
+</template>
+
+<script lang="ts" setup>
+import { ref } from 'vue'
+import type { ElCarousel } from "element-plus";
+import { CarouselItem, CooperativeClient, ProductCenter, CompanyInfo, Products, ProductGroup } from '@/models/portalModels';
+
+const mainCarousel = ref<InstanceType<typeof ElCarousel> | null>(null);
+const cardCarousel = ref<InstanceType<typeof ElCarousel> | null>(null);
+
+ // 创建数据列表
+const items = ref<CarouselItem[]>([
+ {url:'http://192.168.1.201:9000/portal/bg.png', title:'', content:''},
+ // {url:'http://192.168.1.201:9000/portal/bg.png', title:'统一认证', content:'统一身份认证平台'},
+ // {url:'http://192.168.1.201:9000/portal/bg.png', title:'数据管理', content:'数据管理中心平台'}
+]);
+
+const handleMainChange = (index: number) => {
+ if (cardCarousel.value) {
+ cardCarousel.value.setActiveItem(index); // 同步下方轮播
}
-
- const menuIndex = ref<String>("index"); // 共享当前索引
-
-
- const items = ref([0, 1, 2, 3]); // 轮播项
- const mainCarousel = ref<InstanceType<typeof ElCarousel> | null>(null);
- const cardCarousel = ref<InstanceType<typeof ElCarousel> | null>(null);
-
- const handleMainChange = (index: number) => {
- if (cardCarousel.value) {
- cardCarousel.value.setActiveItem(index); // 同步下方轮播
- }
- };
-
- const handleCardChange = (index: number) => {
- if (mainCarousel.value) {
- mainCarousel.value.setActiveItem(index); // 同步上方轮播
- }
- };
- </script>
-
- <style scoped>
- .home-container {
- position: relative;
- width: 100%;
- min-height: 100vh;
- margin: 0;
- padding: 0;
+};
+const handleCardChange = (index: number) => {
+ if (mainCarousel.value) {
+ mainCarousel.value.setActiveItem(index); // 同步上方轮播
}
-
-
-
- .el-menu--horizontal {
- --el-menu-horizontal-height: 40px;
- }
-
- .logo-container {
- display: flex;
- align-items: center;
- }
-
- .logo {
- height: 40px;
- margin-right: 10px;
- }
-
- .logo-text {
- font-size: 18px;
- font-weight: bold;
- color: #333;
- }
-
-
-
- .main-content {
- width: 100%;
- margin-top: 60px;
- /* 为固定的header留出空间 */
- display: flex;
- align-items: center;
- justify-content: space-between;
- padding: 0px;
- /* height: 600px; */
- width: 100%;
- }
-
- .banner {
- position: relative;
- width: 100%;
- min-height: calc(100vh - 60px);
- /* 减去header高度 */
- background: linear-gradient(to bottom, #1a237e, #3949ab);
- color: white;
- /* padding: 40px 0; */
- display: flex;
- flex-direction: column;
- align-items: center;
- box-sizing: border-box;
- }
-
- .logos-container {
- display: flex;
- justify-content: center;
- gap: 40px;
- margin: 30px 0;
- }
-
- .cert-logo,
- .company-logo {
- height: 80px;
- }
-
- .main-title {
- font-size: 36px;
- text-align: center;
- margin: 40px 0;
- }
-
+};
+
+const cooperativeClients = ref<CooperativeClient[]>([
+ {url:'http://192.168.1.201:9000/portal/customers/c29.png', name:'图片2', desc:'图片2'},
+ {url:'http://192.168.1.201:9000/portal/customers/c34.png', name:'图片2', desc:'图片2'},
+
+ {url:'http://192.168.1.201:9000/portal/customers/c1.png', name:'图片1', desc:'图片1'},
+ {url:'http://192.168.1.201:9000/portal/customers/c22.png', name:'图片2', desc:'图片2'},
+ {url:'http://192.168.1.201:9000/portal/customers/c23.png', name:'图片2', desc:'图片2'},
+ {url:'http://192.168.1.201:9000/portal/customers/c24.png', name:'图片2', desc:'图片2'},
+ {url:'http://192.168.1.201:9000/portal/customers/c25.png', name:'图片2', desc:'图片2'},
+ {url:'http://192.168.1.201:9000/portal/customers/c26.png', name:'图片2', desc:'图片2'},
+ {url:'http://192.168.1.201:9000/portal/customers/c27.png', name:'图片2', desc:'图片2'},
+ {url:'http://192.168.1.201:9000/portal/customers/c28.png', name:'图片2', desc:'图片2'},
+ // {url:'http://192.168.1.201:9000/portal/customers/c29.png', name:'图片2', desc:'图片2'},
+ {url:'http://192.168.1.201:9000/portal/customers/c30.png', name:'图片2', desc:'图片2'},
+ {url:'http://192.168.1.201:9000/portal/customers/c31.png', name:'图片2', desc:'图片2'},
+ {url:'http://192.168.1.201:9000/portal/customers/c32.png', name:'图片2', desc:'图片2'},
+ {url:'http://192.168.1.201:9000/portal/customers/c33.png', name:'图片2', desc:'图片2'},
+ // {url:'http://192.168.1.201:9000/portal/customers/c34.png', name:'图片2', desc:'图片2'},
+ {url:'http://192.168.1.201:9000/portal/customers/c35.png', name:'图片2', desc:'图片2'},
+ {url:'http://192.168.1.201:9000/portal/customers/c36.png', name:'图片2', desc:'图片2'},
+ {url:'http://192.168.1.201:9000/portal/customers/c37.png', name:'图片2', desc:'图片2'},
+ {url:'http://192.168.1.201:9000/portal/customers/c38.png', name:'图片2', desc:'图片2'},
+ {url:'http://192.168.1.201:9000/portal/customers/c39.png', name:'图片2', desc:'图片2'},
+ {url:'http://192.168.1.201:9000/portal/customers/c40.png', name:'图片2', desc:'图片2'},
+])
+
+// 新增产品组数据
+const productGroups = ref<ProductGroup[]>([
+ {
+ products: [
+ { imgUrl: 'http://192.168.1.201:9000/portal/product-our/S2B2B.png', title: 'S2B2B', desc: '通过数字化整合上下游资源,重构传统供应链“多级分销、信息割裂”的痛点,实现供应商增收......' },
+ { imgUrl: 'http://192.168.1.201:9000/portal/product-our/实验室管理系统.png', title: '实验室管理系统', desc: '主要应用于汽车零部件质检行业。它能解决委托单流转、设备管理、数据管理、权限管理等方面的痛点,具备委托单管理.....' },
+ { imgUrl: 'http://192.168.1.201:9000/portal/product-our/TQS系统.png', title: 'TQS系统', desc: '解决制造业、汽车业培训痛点。它涵盖多个模块,具备人员信息管理、培训管理、岗位技能培训管理等功能,能实现培训数字...' },
+ { imgUrl: 'http://192.168.1.201:9000/portal/product-our/外部供应商管理系统.png', title: '外部供应商管理系统', desc: '破信息壁垒,实现数据共享,自动化处理订单,增强沟通与生产跟踪。系统具备多模块功能,涵盖用户、订单、工单等管理,支持移动端扫码记录工时...' }
+ ]
+ },
+ { products: [
+ { imgUrl: 'http://192.168.1.201:9000/portal/product-our/JIT.png', title: 'JIT', desc: '面向工业领域的生产管理系统,旨在减少库存和浪费、提升生产效率。它针对数据出错、库存积压等行业痛点,提供数字化管理、自动化检测等解决方案。系统具备物料管理、工艺路线管理等多种功能,实现生产全过程管控与高效运营' },
+ { imgUrl: 'http://192.168.1.201:9000/portal/product-our/CPTM.png', title: 'CPTM', desc: '优化人力开发流程,助力企业发展。它解决了企业培训管理缺乏系统化、报考流程效率低等问题,具备集成平台管理、自动化流程、技能评估等功能,涵盖培训管理、人员信息管理等模块,推动员工和团队能力提升。' },
+
+ ] }
+]);
+
+const ProductCenters = ref<ProductCenter[]>([
+ { url:'http://192.168.1.201:9000/portal/product-center/LIMS系统介绍方案.pdf', name:'LIMS实验室管理系统', desc:'LIMS实验室管理系统'},
+ { url:'http://192.168.1.201:9000/portal/product-center/外部供应商管理系统介绍.pdf', name:'供应商管理系统', desc:'供应商管理系统'},
+ { url:'http://192.168.1.201:9000/portal/product-center/TQS系统介绍与解决方案.pdf', name:'TQS企业培训系统', desc:'TQS企业培训系统'},
+ { url:'http://192.168.1.201:9000/portal/product-center/花满芫小程序产品介绍.pdf', name:'S2B2B小程序平台', desc:'S2B2B小程序平台'},
+ { url:'http://192.168.1.201:9000/portal/product-center/JIT系统介绍.pdf', name:'JIT系统', desc:'JIT系统'},
+ { url:'http://192.168.1.201:9000/portal/product-center/CPTM软件产品介绍.pdf', name:'CPTM企业能力管理系统', desc:'CPTM企业能力管理系统'},
+])
+
+
+const companyInfo = ref<CompanyInfo>({
+ logo: "http://192.168.1.201:9000/portal/logo.png",
+ name: "云游四方",
+ desc: "专注于智能化解决方案",
+ address: "江苏省苏州市虎丘区华云路1号桑田岛科创园",
+ wechat:"http://192.168.1.201:9000/portal/company-info/联系微信.png",
+ phoneHotList: ["400-123-4567", "010-88889999"],
+ phoneSaleAfterList: ["400-987-6543", "010-66667777"],
+ qrCodeList: [
+ { url:"http://192.168.1.201:9000/portal/company-info/服务号.jpg", name:"服务号"},
+ { url:"http://192.168.1.201:9000/portal/company-info/联系微信.png",name: "联系微信"},
+ ]
+});
+
+
+</script>
+
+<style scoped>
+.home-container {
+ position: relative;
+ width: 100%;
+ min-height: 100vh;
+ margin: 0;
+ padding: 0;
+}
+
+
+
+.el-menu--horizontal {
+ --el-menu-horizontal-height: 40px;
+}
+
+.logo-container {
+ display: flex;
+ align-items: center;
+}
+
+.logo {
+ height: 40px;
+ margin-right: 10px;
+}
+
+.logo-text {
+ font-size: 18px;
+ font-weight: bold;
+ color: #333;
+}
+
+
+
+.main-content {
+ width: 100%;
+ margin-top: 60px;
+ /* 为固定的header留出空间 */
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ padding: 0px;
+ /* height: 600px; */
+ width: 100%;
+}
+
+.banner {
+ position: relative;
+ width: 100%;
+ min-height: calc(100vh - 60px);
+ /* 减去header高度 */
+ background: linear-gradient(to bottom, #1a237e, #3949ab);
+ color: white;
+ /* padding: 40px 0; */
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ box-sizing: border-box;
+}
+
+.logos-container {
+ display: flex;
+ justify-content: center;
+ gap: 40px;
+ margin: 30px 0;
+}
+
+.cert-logo,
+.company-logo {
+ height: 80px;
+}
+
+.main-title {
+ font-size: 36px;
+ text-align: center;
+ margin: 40px 0;
+}
+
+.organizers {
+ display: flex;
+ justify-content: center;
+ gap: 20px;
+ margin: 20px 0;
+}
+
+.org-item {
+ display: flex;
+ align-items: center;
+}
+
+.org-label {
+ color: #ccc;
+ margin-right: 5px;
+}
+
+.org-name {
+ color: white;
+}
+
+.location {
+ margin: 40px 0;
+}
+
+.location h2 {
+ font-size: 32px;
+ text-align: center;
+}
+
+.info-cards {
+ display: flex;
+ justify-content: center;
+ gap: 20px;
+ width: 80%;
+ margin-top: 40px;
+ margin-bottom: 40px;
+ /* 添加底部间距 */
+ flex-wrap: wrap;
+ /* 在小屏幕上允许换行 */
+}
+
+.info-card {
+ background-color: rgba(255, 255, 255, 0.1);
+ padding: 20px;
+ border-radius: 5px;
+ flex: 1;
+ min-width: 250px;
+ /* 确保在小屏幕上有最小宽度 */
+}
+
+.card-title {
+ font-size: 18px;
+ margin-bottom: 10px;
+ color: white;
+}
+
+.card-desc {
+ color: #ddd;
+ font-size: 14px;
+}
+
+.float-buttons {
+ position: fixed;
+ right: 20px;
+ bottom: 100px;
+ display: flex;
+ flex-direction: column;
+ gap: 10px;
+}
+
+.float-btn {
+ width: 60px;
+ height: 60px;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+}
+
+.btn-content {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ font-size: 12px;
+}
+
+.product-btn {
+ background-color: #fff;
+ color: #333;
+}
+
+.service-btn {
+ background-color: #fff;
+ color: #333;
+}
+
+.top-btn {
+ background-color: #fff;
+ color: #333;
+}
+
+/* 添加响应式设计 */
+@media (max-width: 768px) {
.organizers {
- display: flex;
- justify-content: center;
- gap: 20px;
- margin: 20px 0;
- }
-
- .org-item {
- display: flex;
- align-items: center;
- }
-
- .org-label {
- color: #ccc;
- margin-right: 5px;
- }
-
- .org-name {
- color: white;
- }
-
- .location {
- margin: 40px 0;
- }
-
- .location h2 {
- font-size: 32px;
- text-align: center;
- }
-
- .info-cards {
- display: flex;
- justify-content: center;
- gap: 20px;
- width: 80%;
- margin-top: 40px;
- margin-bottom: 40px;
- /* 添加底部间距 */
- flex-wrap: wrap;
- /* 在小屏幕上允许换行 */
- }
-
- .info-card {
- background-color: rgba(255, 255, 255, 0.1);
- padding: 20px;
- border-radius: 5px;
- flex: 1;
- min-width: 250px;
- /* 确保在小屏幕上有最小宽度 */
- }
-
- .card-title {
- font-size: 18px;
- margin-bottom: 10px;
- color: white;
- }
-
- .card-desc {
- color: #ddd;
- font-size: 14px;
- }
-
- .float-buttons {
- position: fixed;
- right: 20px;
- bottom: 100px;
- display: flex;
- flex-direction: column;
- gap: 10px;
- }
-
- .float-btn {
- width: 60px;
- height: 60px;
- display: flex;
- justify-content: center;
- align-items: center;
- }
-
- .btn-content {
- display: flex;
flex-direction: column;
align-items: center;
- font-size: 12px;
- }
-
- .product-btn {
- background-color: #fff;
- color: #333;
- }
-
- .service-btn {
- background-color: #fff;
- color: #333;
- }
-
- .top-btn {
- background-color: #fff;
- color: #333;
- }
-
- /* 添加响应式设计 */
- @media (max-width: 768px) {
- .organizers {
- flex-direction: column;
- align-items: center;
- }
-
- .info-cards {
- width: 90%;
- }
-
- .main-title {
- font-size: 28px;
- padding: 0 15px;
- }
- }
- </style>
-
-
- <style scoped>
- .demonstration {
- color: var(--el-text-color-secondary);
- }
-
- .el-carousel__item h3 {
- color: #475669;
- opacity: 0.75;
- line-height: 150px;
- margin: 0;
- text-align: center;
- }
-
- .el-carousel__item:nth-child(2n) {
- /* background-color: #FFFFFF; */
- }
-
- .el-carousel__item:nth-child(2n + 1) {
- /* background-color: #FFFFFF; */
- }
- </style>
-
- <style scoped>
- .carousel-container {
- position: relative;
- margin-top: 30px;
- }
-
- .overlay-carousel {
- position: absolute;
- top: 400px;
- /* 调整此值控制重叠程度 */
- left: 50%;
- transform: translateX(-50%);
- width: 80%;
- /* 适当调整宽度 */
- }
-
- .our-products {
- margin-top: 10px;
- width: 100%;
- display: flex;
- flex-direction: column;
- /* 设置子元素垂直排列 */
- align-items: center;
- /* 可选:将子元素水平居中 */
- padding: 0 20px;
- }
-
- .our-products-title {
- width: 100%;
- height: 50px;
- text-align: center;
- }
-
- .our-products-carousel {
- margin-top: 30px;
- width: 80%;
- /* height: 300px; */
- }
-
- .our-products-carousel-product {
- width: 100%;
- display: flex;
- flex-direction: column;
- /* 设置子元素垂直排列 */
- align-items: center;
- /* 可选:将子元素水平居中 */
- padding: 0 5px;
- }
-
- .card-content-div {
- text-align: center;
- margin: 10px;
- }
-
- .card-content-div-title {
- font-weight: 500;
- }
-
- .card-content-div-content {
- color: gray;
- font-size: 14px;
- }
-
- .third-other {
- width: 100%;
- text-align: center;
- margin-top: 20px;
- background-color: #F2F5FA;
- }
-
-
- .footer-list {
- display: flex;
- flex-wrap: wrap;
- /* Allow wrapping to new lines */
- }
-
- .footer-list li {
- width: 48%;
- /* Adjust this value to control the width of each item */
- margin-bottom: 5px;
- /* Optional: Adds space between rows */
- text-align: left;
- }
-
- .f12 {
- font-size: 12px;
- color: #2B2B2B;
- }
-
- ul,
- ol,
- li {
- list-style: none;
- }
-
- ul {
- margin: 0;
- }
-
- ol,
- ul {
- margin-top: 0;
- margin-bottom: 10px;
- }
-
- .cooperation-img {
- width: 50px;
- height: 50px;
- object-fit: cover;
- margin: 5px;
- }
-
- .contact-us {
- margin: 10px;
- }
-
- .j-a-c {
- display: flex;
- /* justify-content: center; */
- align-items: center;
- }
-
- .logo-l {
- height: 20px;
- }
-
- .logo-l-text {
- font-size: 12px;
- font-weight: bold;
- color: #333;
- }
-
- .m-10 {
- margin-left: 10px;
- }
-
- .footer-QR-code {
- display: flex;
- justify-content: flex-start;
- margin-top: 10px;
- }
-
- .qr-code-img {
- width: 60px;
- height: 60px;
- }
-
- .xuanfu {
- width: 30px;
- height: 30px;
}
-
-::v-deep .el-carousel__mask {
- /* background-color: var(--el-color-white); */
- height: 100%;
- left: 0;
- opacity: .24;
- position: absolute;
- top: 0;
- transition: var(--el-transition-duration-fast);
- width: 100%;
-}
- .carousel-content{
- /* width: 50%;
- background-color: #FFFFFF; */
- text-align: center;
+ .info-cards {
+ width: 90%;
}
- </style>
\ No newline at end of file
+
+ .main-title {
+ font-size: 28px;
+ padding: 0 15px;
+ }
+}
+</style>
+
+
+<style scoped>
+.demonstration {
+ color: var(--el-text-color-secondary);
+}
+
+.el-carousel__item h3 {
+ color: #475669;
+ opacity: 0.75;
+ line-height: 150px;
+ margin: 0;
+ text-align: center;
+}
+
+.el-carousel__item:nth-child(2n) {
+ /* background-color: #FFFFFF; */
+}
+
+.el-carousel__item:nth-child(2n + 1) {
+ /* background-color: #FFFFFF; */
+}
+</style>
+
+<style scoped>
+.carousel-container {
+ position: relative;
+ margin-top: 30px;
+ min-height: calc(100vh - 60px);
+}
+.carousel-content-main{
+ height: 100%;
+}
+
+.overlay-carousel {
+ position: absolute;
+ top: calc(100vh - 200px);
+ /* 调整此值控制重叠程度 */
+ left: 50%;
+ transform: translateX(-50%);
+ width: 80%;
+ /* 适当调整宽度 */
+}
+
+.our-products {
+ margin-top: 50px;
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ /* 设置子元素垂直排列 */
+ align-items: center;
+ /* 可选:将子元素水平居中 */
+ padding: 0 50px;
+
+}
+
+.our-products-title {
+ width: 100%;
+ height: 50px;
+ text-align: center;
+}
+
+.our-products-carousel {
+ margin-top: 30px;
+ width: 80%;
+ /* height: 300px; */
+}
+
+.our-products-carousel-product {
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ /* 设置子元素垂直排列 */
+ align-items: center;
+ /* 可选:将子元素水平居中 */
+ padding: 0 5px;
+}
+
+.card-content-div {
+ text-align: center;
+ margin: 10px;
+}
+
+.card-content-div-title {
+ font-weight: 500;
+}
+
+.card-content-div-content {
+ color: gray;
+ font-size: 14px;
+}
+
+.third-other {
+ width: 100%;
+ text-align: center;
+ margin-top: 30px;
+ background-color: #F2F5FA;
+ padding: 20px;
+}
+
+
+.third-other-title {
+ margin: 0 20px;
+}
+
+
+.footer-list {
+ display: flex;
+ flex-wrap: wrap;
+ /* Allow wrapping to new lines */
+}
+
+.footer-list li {
+ width: 48%;
+ /* Adjust this value to control the width of each item */
+ margin-bottom: 5px;
+ /* Optional: Adds space between rows */
+ text-align: left;
+}
+
+.f12 {
+ font-size: 12px;
+ color: #2B2B2B;
+}
+
+ul,
+ol,
+li {
+ list-style: none;
+}
+
+ul {
+ margin: 0;
+}
+
+ol,
+ul {
+ margin-top: 0;
+ margin-bottom: 10px;
+}
+
+.cooperation-img {
+ width: 50px;
+ height: 50px;
+ object-fit: cover;
+ margin: 5px;
+}
+
+.contact-us {
+ margin: 10px;
+}
+
+.j-a-c {
+ display: flex;
+ /* justify-content: center; */
+ align-items: center;
+}
+
+.j-a-c-column{
+ display: flex;
+ align-items: center;
+ flex-direction: column;
+}
+
+.logo-l {
+ height: 20px;
+}
+
+.logo-l-text {
+ font-size: 12px;
+ font-weight: bold;
+ color: #333;
+}
+
+.m-10 {
+ margin-left: 10px;
+}
+
+.footer-QR-code {
+ display: flex;
+ justify-content: flex-start;
+ margin-top: 10px;
+}
+
+.qr-code-img {
+ width: 60px;
+ height: 60px;
+}
+
+.xuanfu {
+ width: 30px;
+ height: 30px;
+}
+
+/*
+::v-deep .el-carousel__mask {
+
+ height: 100%;
+ left: 0;
+ opacity: .24;
+ position: absolute;
+ top: 0;
+ transition: var(--el-transition-duration-fast);
+ width: 100%;
+} */
+
+.carousel-content {
+ /* width: 50%;
+ background-color: #FFFFFF; */
+ text-align: center;
+}
+</style>
\ No newline at end of file
diff --git a/src/pages/MainLayout.vue b/src/pages/MainLayout.vue
index 95fa7de..b36e720 100644
--- a/src/pages/MainLayout.vue
+++ b/src/pages/MainLayout.vue
@@ -1,10 +1,12 @@
<template>
<HeaderMenu />
<router-view />
+ <Footer />
</template>
<script lang="ts" setup>
import HeaderMenu from '@/components/HeaderMenu.vue';
+import Footer from '@/components/Footer.vue';
import { ref } from 'vue';
diff --git a/src/pages/Product.vue b/src/pages/Product.vue
index c8ee493..a60af67 100644
--- a/src/pages/Product.vue
+++ b/src/pages/Product.vue
@@ -1,129 +1,231 @@
<template>
- <div class="container">
+ <div class="container">
+ <el-container>
<el-container>
- <el-container>
- <el-aside class="aside">
- <h5 class="aside-title">所有产品</h5>
- <el-menu default-active="2" class="el-menu-vertical-demo" @open="handleOpen" @close="handleClose">
- <el-sub-menu index="1">
+ <el-aside class="aside">
+ <h5 class="aside-title">所有产品</h5>
+ <el-menu default-active="2" class="el-menu-vertical-demo" @open="handleOpen" @close="handleClose">
+ <template v-for="item in menuItems" :key="item.index" @click="handleSelect(item)">
+ <el-sub-menu v-if="item.subMenu" :index="item.index">
<template #title>
<el-icon>
- <location />
+ <component :is="item.icon" />
</el-icon>
- <span>工业信息化</span>
+ <span>
+ <!-- {{ item.title }} -->
+ <el-link :underline="false" :href="item.pdfUrl" target="_blank"><span
+ class="f12">{{ item.title }}</span></el-link></span>
</template>
- <el-menu-item index="1-1">lims系统</el-menu-item>
- <el-menu-item index="1-2">JIT系统</el-menu-item>
+ <el-menu-item v-for="subItem in item.subMenu" :key="subItem.index" :index="subItem.index"
+ @click="handleSelect(subItem)">
+ <!-- {{ subItem.title }} -->
+ <el-link :underline="false" :href="subItem.pdfUrl" target="_blank"><span
+ class="f12">{{ subItem.title }}</span></el-link>
+ </el-menu-item>
</el-sub-menu>
- <el-menu-item index="2">
- <el-icon><icon-menu /></el-icon>
- <span>SaaS</span>
- </el-menu-item>
- <el-menu-item index="3">
+ <el-menu-item v-else :index="item.index">
<el-icon>
- <setting />
+ <component :is="item.icon" />
</el-icon>
- <span>C端</span>
+ <span>{{ item.title }}</span>
</el-menu-item>
- </el-menu>
- </el-aside>
- <el-main>
- <div class="main-up">
- <img src="http://192.168.1.201:9000/portal/product_2.png" class="main-image" alt="">
+ </template>
+ </el-menu>
+ </el-aside>
+ <el-main style="width: 80vh;overflow: hidden;">
+ <div class="main-up">
+ <!-- <img :src="curImg" class="main-image" alt=""> -->
+ <div style="width: 100%; text-align: center;"><h1 style="font-weight: 600;color: #15A2E9 ;font-size: 20px;">云游四方操作系统</h1></div>
+ <div style="width: 100%;height: 90%;">
+ <img src="http://192.168.1.201:9000/portal/product-center/产品背景.png" alt="" style="width: 15%; height: 90%;margin: 10px;">
+ <img src="http://192.168.1.201:9000/portal/product-center/产品背景2.png" alt="" style="width: 60%; height: 90%;margin: 10px;">
+ <img src="http://192.168.1.201:9000/portal/product-center/产品背景图3.jpg" alt="" style="width: 15%; height: 90%;margin: 10px;">
+ </div>
+ </div>
+ <div class="main-down">
+ <h5 class="section-title">推荐产品</h5>
+ <div class="card-container">
+ <el-card v-for="(item, index) in products" :key="index" class="card">
+ <img :src="item.imgUrl" class="card-image" />
+ <div class="card-content">
+ <span class="card-title">{{ item.title }}</span>
+ </div>
+ <div class="card-content">
+ <span class="card-description">{{ item.desc }}</span>
+ </div>
+ </el-card>
</div>
- <div class="main-down">
- <h5 class="section-title">推荐产品</h5>
- <div class="card-container">
- <el-card v-for="(item, index) in 3" :key="index" class="card">
- <img src="http://192.168.1.201:9000/portal/bg.png" class="card-image" />
- <div class="card-content">
- <span class="card-title">智慧校园门户网站</span>
- </div>
- <div class="card-content">
- <span class="card-description">提供全流程、一体化的数据</span>
- </div>
- </el-card>
- </div>
- </div>
- </el-main>
- </el-container>
+ </div>
+ </el-main>
</el-container>
- </div>
- </template>
-
- <script lang="ts" setup>
- import { Document, Menu as IconMenu, Location, Setting } from '@element-plus/icons-vue';
-
- const handleOpen = (key: string, keyPath: string[]) => {
- console.log(key, keyPath);
- };
-
- const handleClose = (key: string, keyPath: string[]) => {
- console.log(key, keyPath);
- };
- </script>
-
- <style scoped>
- .container {
- margin: 70px;
- height: 100%;
- }
-
- .aside {
- width: 200px;
- }
-
- .aside-title {
- margin-bottom: 10px;
- }
-
- .main-up {
- display: flex;
- justify-content: center;
- align-items: center;
- /* padding: 20px; */
- }
-
- .main-image {
- width: 800px;
- height: 250px;
- }
-
- .main-down {
- margin-top: 10px;
- }
-
- .section-title {
- margin-bottom: 10px;
- }
-
- .card-container {
- width: 100%;
- display: flex;
- flex-wrap: wrap;
- }
-
- .card {
- width: 200px;
- height: 200px;
- margin: 10px;
- }
-
- .card-image {
- width: 100%;
- height: 80px;
- object-fit: cover;
- }
-
- .card-content {
- text-align: center;
- }
-
- .card-title {
- font-weight: bold;
- }
-
- .card-description {
- color: gray;
- }
- </style>
\ No newline at end of file
+ </el-container>
+ </div>
+</template>
+
+<script lang="ts" setup>
+import { ref } from 'vue'
+import { Document, Menu as IconMenu, Location, Setting } from '@element-plus/icons-vue';
+import { MenuItem, Products } from '@/models/portalModels';
+
+
+
+const menuItems: MenuItem[] = [
+ {
+ index: '1',
+ title: '工业信息化',
+ imgUrl: '',
+ pdfUrl: '',
+ icon: Location,
+ subMenu: [
+ {
+ index: '1-1',
+ title: '实验室管理系统',
+ imgUrl: 'http://192.168.1.201:9000/portal/product-our/实验室管理系统.png',
+ pdfUrl: 'http://192.168.1.201:9000/portal/product-center/LIMS系统介绍方案.pdf',
+ },
+ {
+ index: '1-2',
+ title: 'TQS系统',
+ imgUrl: 'http://192.168.1.201:9000/portal/product-our/TQS系统.png',
+ pdfUrl: 'http://192.168.1.201:9000/portal/product-center/TQS系统介绍与解决方案.pdf',
+ },
+ {
+ index: '1-3',
+ title: 'CPTM系统',
+ imgUrl: 'http://192.168.1.201:9000/portal/product-our/CPTM.png',
+ pdfUrl: 'http://192.168.1.201:9000/portal/product-center/CPTM软件产品介绍.pdf',
+ },
+ {
+ index: '1-4',
+ title: 'JIT系统',
+ imgUrl: 'http://192.168.1.201:9000/portal/product-our/JIT.png',
+ pdfUrl: 'http://192.168.1.201:9000/portal/product-center/JIT系统介绍.pdf',
+ },
+ ],
+ },
+ {
+ index: '2',
+ title: 'SaaS平台',
+ imgUrl: '',
+ pdfUrl: '',
+ icon: IconMenu,
+ subMenu: [
+ {
+ index: '2-1',
+ title: '供应商管理系统',
+ imgUrl: 'http://192.168.1.201:9000/portal/product-our/外部供应商管理系统.png',
+ pdfUrl: 'http://192.168.1.201:9000/portal/product-center/外部供应商管理系统介绍.pdf',
+ },
+ {
+ index: '2-2',
+ title: 'S2B2B平台',
+ imgUrl: 'http://192.168.1.201:9000/portal/product-our/S2B2B.png',
+ pdfUrl: 'http://192.168.1.201:9000/portal/product-center/花满芫小程序产品介绍.pdf',
+ },
+ ],
+ },
+ {
+ index: '3',
+ title: 'C端',
+ imgUrl: '',
+ pdfUrl: '',
+ icon: Setting,
+ subMenu: [
+ ],
+ },
+];
+
+const products = ref<Products[]>([
+ { imgUrl: 'http://192.168.1.201:9000/portal/product-our/外部供应商管理系统.png', title: '外部供应商管理系统', desc: '破信息壁垒,实现数据共享,自动化处理订单,增强沟通与生产跟踪。系统具备多模块功能,涵盖用户、订单、工单等管理,支持移动端扫码记录工时...' },
+ { imgUrl: 'http://192.168.1.201:9000/portal/product-our/S2B2B.png', title: 'S2B2B', desc: '通过数字化整合上下游资源,重构传统供应链“多级分销、信息割裂”的痛点,实现供应商增收......' },
+ { imgUrl: 'http://192.168.1.201:9000/portal/product-our/实验室管理系统.png', title: '实验室管理系统', desc: '主要应用于汽车零部件质检行业。它能解决委托单流转、设备管理、数据管理、权限管理等方面的痛点,具备委托单管理.....' },
+ // { imgUrl: 'http://192.168.1.201:9000/portal/product-our/TQS系统.png', title: 'TQS系统', desc: '解决制造业、汽车业培训痛点。它涵盖多个模块,具备人员信息管理、培训管理、岗位技能培训管理等功能,能实现培训数字...' },
+ // { imgUrl: 'http://192.168.1.201:9000/portal/product-our/外部供应商管理系统.png', title: '外部供应商管理系统', desc: '破信息壁垒,实现数据共享,自动化处理订单,增强沟通与生产跟踪。系统具备多模块功能,涵盖用户、订单、工单等管理,支持移动端扫码记录工时...' },
+ // { imgUrl: 'http://192.168.1.201:9000/portal/product-our/JIT.png', title: 'JIT', desc: '面向工业领域的生产管理系统,旨在减少库存和浪费、提升生产效率。它针对数据出错、库存积压等行业痛点,提供数字化管理、自动化检测等解决方案。系统具备物料管理、工艺路线管理等多种功能,实现生产全过程管控与高效运营' },
+ // { imgUrl: 'http://192.168.1.201:9000/portal/product-our/CPTM.png', title: 'CPTM', desc: '优化人力开发流程,助力企业发展。它解决了企业培训管理缺乏系统化、报考流程效率低等问题,具备集成平台管理、自动化流程、技能评估等功能,涵盖培训管理、人员信息管理等模块,推动员工和团队能力提升。' },
+
+])
+
+const handleOpen = (key: string, keyPath: string[]) => {
+ console.log(key, keyPath);
+};
+
+const handleClose = (key: string, keyPath: string[]) => {
+ console.log(key, keyPath);
+};
+
+const handleSelect = (item: MenuItem) => {
+ console.log(item);
+ curImg.value = item.imgUrl
+};
+
+const curImg = ref('http://192.168.1.201:9000/portal/bg.png');
+
+</script>
+
+<style scoped>
+.container {
+ margin: 70px;
+ height: 100%;
+}
+
+.aside {
+ width: 200px;
+}
+
+.aside-title {
+ margin-bottom: 10px;
+}
+
+.main-up {
+ display: flex;
+ /* justify-content: center; */
+ /* align-items: center; */
+ height: 38vh;
+ flex-direction: column;
+ /* padding: 20px; */
+}
+
+.main-image {
+ width: 90%;
+ height: 100%;
+}
+
+.main-down {
+ margin-top: 10px;
+}
+
+.section-title {
+ margin-bottom: 10px;
+}
+
+.card-container {
+ width: 100%;
+ display: flex;
+ flex-wrap: wrap;
+}
+
+.card {
+ width: 200px;
+ min-height: 250px;
+ margin: 10px;
+}
+
+.card-image {
+ width: 100%;
+ height: 120px;
+ object-fit: cover;
+}
+
+.card-content {
+ text-align: center;
+}
+
+.card-title {
+ font-weight: bold;
+}
+
+.card-description {
+ color: gray;
+}
+</style>
--
Gitblit v1.9.3