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/Product.vue | 336 ++++++++++++++++++++++++++++++++++++------------------- 1 files changed, 219 insertions(+), 117 deletions(-) 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