cf2d4597bb7ec0857aad73aafcf2569374fdb42d..13c22bd501286d02658f0812c3f19285cfa23024
2025-04-18 tanghaolin
修改详细页面
13c22b 对比 | 目录
2025-04-18 tanghaolin
添加联系我们界面
e3ab5c 对比 | 目录
已删除14个文件
已重命名2个文件
已修改5个文件
已添加3个文件
1412 ■■■■ 文件已修改
public/static/EecProductData/Pump.json 783 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/carousel/final/2.jpg 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/carousel/home/1.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/carousel/home/2.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/carousel/home/3.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/carousel/home/4.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/carousel/test/1.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/carousel/test/10.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/carousel/test/11.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/carousel/test/12.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/carousel/test/13.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/carousel/test/14.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/carousel/test/15.jpg 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/carousel/test/2.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/carousel/test/3.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/carousel/test/5.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/carousel/test/7.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/carousel/test/8.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/carousel/test/9.png 补丁 | 查看 | 原始文档 | blame | 历史
src/components/AppHeader.vue 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/router/index.ts 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/ContactUs.vue 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Home.vue 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/IndustrialSoftware.vue 385 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/static/EecProductData/Pump.json
ÎļþÌ«´ó
src/assets/carousel/final/2.jpg
Binary files differ
src/assets/carousel/home/1.png
src/assets/carousel/home/2.png

src/assets/carousel/home/3.png

src/assets/carousel/home/4.png
src/assets/carousel/test/1.png
Binary files differ
src/assets/carousel/test/10.png
Binary files differ
src/assets/carousel/test/11.png
Binary files differ
src/assets/carousel/test/12.png
Binary files differ
src/assets/carousel/test/13.png
Binary files differ
src/assets/carousel/test/14.png
Binary files differ
src/assets/carousel/test/15.jpg
Binary files differ
src/assets/carousel/test/2.png
Binary files differ
src/assets/carousel/test/3.png
Binary files differ
src/assets/carousel/test/5.png
Binary files differ
src/assets/carousel/test/7.png
Binary files differ
src/assets/carousel/test/8.png
Binary files differ
src/assets/carousel/test/9.png
Binary files differ
src/components/AppHeader.vue
@@ -25,23 +25,20 @@
                        <span class="w-[20px] h-full gap-style">|</span>
                        <el-menu-item index="/gb19762-2025" class="!px-4">计算工具</el-menu-item>
                        <span class="w-[20px] h-full gap-style">|</span>
                        <el-menu-item index="" class="!px-4">联系我们</el-menu-item>
                        <el-menu-item index="/contact-us" class="!px-4">联系我们</el-menu-item>
                    </el-menu>
                </nav>
            </div>
            <!-- é¡¶éƒ¨äº§å“æœç´¢æ¡† -->
            <div class="header-tool-div">
                <div class="search-input-div">
                    <input placeholder="全部商品|请输入公司名称/型号/产品名称" />
                    <button>搜索</button>
                    <input v-model="searchQuery" placeholder="全部商品|请输入公司名称/型号/产品名称" />
                    <button @click="handleSearch">搜索</button>
                </div>
                <span class="text-[20px] text-[#000] gap-div"></span>
                <!-- çœä»½é€‰æ‹© -->
                <div>
                    <el-cascader v-model="AreaValue" :options="options" @change="handleChange">
                        <template #prefix>
                            123123
                        </template>
                    </el-cascader>
                </div>
                <span class="text-[20px] text-[#000] gap-div"></span>
@@ -54,15 +51,15 @@
                        </div>
                        æˆ‘的购物车
                    </button>
                    <button>批量下载</button>
                    <button>批量下单</button>
                    <button>我的订单</button>
                    <div class="flex items-center">
                        <template v-if="!userInfo.Token">
                            <button @click="toLogin">登录</button>
                        </template>
                        <template v-else>
                            <span class="text-blue-500 mr-2 text-[20px] text-[#000]">{{ userInfo.RealName }}</span>
                            <a href="#" class="hover:text-blue-500 text-[20px]" @click.prevent="handleLogout">退出</a>
                            <span class="text-blue-500 mr-2 text-[20px] text-[#000]" style="line-height: 1;">{{ userInfo.RealName }}</span>
                            <a href="#" class="hover:text-blue-500 text-[20px]" style="line-height: 1;" @click.prevent="handleLogout">退出</a>
                        </template>
                    </div>
                </div>
@@ -182,6 +179,15 @@
        return;
    }
};
const handleSearch = () => {
    router.push({
        path: '/certified-products',
        query: {
            keywords: searchQuery.value,
        },
    });
};
</script>
<style lang="scss" scoped>
src/router/index.ts
@@ -98,6 +98,11 @@
            name: 'gb19762-2025',
            component: () => import('../views/GB19762-2025.vue'),
        },
        {
            path: '/contact-us',
            name: 'contact-us',
            component: () => import('../views/ContactUs.vue'),
        },
    ],
});
router.beforeEach((to, from, next) => {
src/views/ContactUs.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,65 @@
<template>
    <div class="container mx-auto px-4 py-8 bg-white" style="padding-top: 40px">
        <!-- é¢åŒ…屑导航 -->
        <div class="mb-6 text-gray-500">
            <el-breadcrumb separator="/">
                <el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
                <el-breadcrumb-item>联系我们</el-breadcrumb-item>
            </el-breadcrumb>
        </div>
        <!-- è”系信息卡片 -->
        <div class="max-w-2xl mx-auto bg-white rounded-lg  py-10">
            <h1 class="w-[487px] text-2xl font-bold mb-6 text-center text-[#222222] text-[24px] mb-[26px]">上海义维流体科技有限公司</h1>
            <div class="space-y-4 flex flex-col items-center justify-center gap-[10px]">
                <div class="flex text-[16px] items-start justify-center w-[487px] line-height-16">
                    <div class="w-24 text-align-right">地&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;址:</div>
                    <div class="flex-1 text-ellipsis-style">上海市闵行区浦江镇江月路999号1å¹¢615室</div>
                </div>
                <div class="flex text-[16px] items-start justify-center w-[487px] line-height-16">
                    <div class="w-24  text-align-right">邮&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;编:</div>
                    <div class="flex-1 text-ellipsis-style">201108</div>
                </div>
                <div class="flex text-[16px] items-start justify-center w-[487px] line-height-16">
                    <div class="w-24  text-align-right">工作时间:</div>
                    <div class="flex-1 text-ellipsis-style">周一至周五 8:30 - 17:30</div>
                </div>
                <div class="flex text-[16px] items-start justify-center w-[487px] line-height-16">
                    <div class="w-24  text-align-right">售后电话:</div>
                    <div class="flex-1 text-ellipsis-style">021-34306562</div>
                </div>
                <div class="flex text-[16px] items-start justify-center w-[487px] line-height-16">
                    <div class="w-24  text-align-right">售后邮箱:</div>
                    <div class="flex-1 text-ellipsis-style">
                        <a href="mailto:eventech@163.com" class="text-blue-600 hover:text-blue-800">
                            eventech@163.com
                        </a>
                    </div>
                </div>
            </div>
        </div>
    </div>
</template>
<script setup lang="ts">
</script>
<style scoped>
.container {
    /* min-height: calc(100vh - 200px); */
}
.line-height-16 {
    line-height: 16px;
}
.text-ellipsis-style {
    width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
</style>
src/views/Home.vue
@@ -5,25 +5,24 @@
            <el-carousel height="602px" :interval="3000" indicator-position="none" arrow="never">
                <el-carousel-item>
                    <div class="carousel-item">
                        <img src="@/assets/carousel/test/15.png" class="carousel-image" />
                        <!-- <img src="https://www.app-i.cn/api/file?file_name=2d82602e-8797-46d7-9b5c-59d9f88bc6d9.png;软件一体化测试平台_副本.png" class="carousel-image" /> -->
                        <img src="@/assets/carousel/home/1.png" class="carousel-image" />
                    </div>
                </el-carousel-item>
                <el-carousel-item>
                    <div class="carousel-item">
                        <img src="@/assets/carousel/final/2.png" class="carousel-image" />
                        <!-- <img src="https://www.app-i.cn/static/epidemicBanner.e4d9a821.jpg" alt=""> -->
                        <img src="@/assets/carousel/home/2.png" class="carousel-image" />
                    </div>
                </el-carousel-item>
                <el-carousel-item>
                    <div class="carousel-item">
                        <img src="@/assets/carousel/final/5.png" class="carousel-image" />
                        <!-- <img src="https://www.app-i.cn/api/file?file_name=072c9dda-3ffb-410d-be93-a88ec6c7e765.jpg;40周年1.jpg" alt=""> -->
                        <img src="@/assets/carousel/home/3.png" class="carousel-image" />
                    </div>
                </el-carousel-item>
                <!-- <el-carousel-item>
                    <img src="@/assets/carousel/1.png" class="w-full h-full object-cover" />
                </el-carousel-item> -->
                <el-carousel-item>
                    <div class="carousel-item">
                        <img src="@/assets/carousel/home/4.png" class="carousel-image" />
                    </div>
                </el-carousel-item>
            </el-carousel>
        </div>
        <div class="relative z-20 2 w-full flex justify-center items-center">
@@ -82,12 +81,6 @@
                        <a class="block" style="border-right: 1px solid #e3e3e3" @click="linkClick">
                            <div class="flex items-center gap-1 justify-center">
                                <div class="w-16 h-16">
                                    <!-- <svg viewBox="0 0 24 24" class="w-full h-full">
                                        <path
                                            fill="currentColor"
                                            d="M12,3L2,12H5V20H19V12H22L12,3M12,8.75A2.25,2.25 0 0,1 14.25,11A2.25,2.25 0 0,1 12,13.25A2.25,2.25 0 0,1 9.75,11A2.25,2.25 0 0,1 12,8.75M12,15C13.5,15 16.5,15.75 16.5,17.25V18H7.5V17.25C7.5,15.75 10.5,15 12,15Z"
                                        />
                                    </svg> -->
                                    <img :src="YWLogo" class="h-full" />
                                </div>
                                <div>
@@ -96,48 +89,6 @@
                                </div>
                            </div>
                        </a>
                        <!-- <router-link to="/publish-demand" class="block">
                            <div class="function-card bg-white rounded-lg shadow-md p-6 text-center">
                                <div class="flex flex-col items-center">
                                    <div class="w-16 h-16 mb-4">
                                        <img src="@/assets/icons/publish-demand.svg" alt="发需求" class="w-full h-full" />
                                    </div>
                                    <div>
                                        <div class="text-lg font-medium">发需求</div>
                                        <div class="text-gray-400 text-sm">Publish Demand</div>
                                    </div>
                                </div>
                            </div>
                        </router-link>
                        <router-link to="/find-app" class="block">
                            <div class="function-card bg-white rounded-lg shadow-md p-6 text-center">
                                <div class="flex flex-col items-center">
                                    <div class="w-16 h-16 mb-4">
                                        <img src="@/assets/icons/find-app.svg" alt="找APP" class="w-full h-full" />
                                    </div>
                                    <div>
                                        <div class="text-lg font-medium">找APP</div>
                                        <div class="text-gray-400 text-sm">Find APP</div>
                                    </div>
                                </div>
                            </div>
                        </router-link>
                        <router-link to="/find-demand" class="block">
                            <div class="function-card bg-white rounded-lg shadow-md p-6 text-center">
                                <div class="flex flex-col items-center">
                                    <div class="w-16 h-16 mb-4">
                                        <img src="@/assets/icons/find-demand.svg" alt="找需求" class="w-full h-full" />
                                    </div>
                                    <div>
                                        <div class="text-lg font-medium">找需求</div>
                                        <div class="text-gray-400 text-sm">Find Demand</div>
                                    </div>
                                </div>
                            </div>
                        </router-link> -->
                    </div>
                </div>
            </div>
@@ -164,7 +115,7 @@
                        :slidesPerView="state.catalogSwiperIndex"
                        :centeredSlides="true"
                        :autoplay="{
                            delay: 10000,
                            delay: 1000000,
                            disableOnInteraction: false,
                            pauseOnMouseEnter: true,
                        }"
@@ -174,12 +125,20 @@
                    >
                        <swiper-slide class="w-full h-full" v-for="(item, index) in state.catalogItemList" :key="index">
                            <div class="catalog-continer overflow-hidden">
                                <div class="catalog-continer-item p-4" v-for="child in item" :key="child.Id" @click="handleCatalogClick(child)">
                                <div class="catalog-continer-item p-4 relative" v-for="child in item" :key="child.Id" @click="handleCatalogClick(child)">
                                    <div class="w-full h-[250px]">
                                        <img class="w-full h-full object-contain" :src="child.PhysicalPicturePath" alt="" />
                                    </div>
                                    <div class="mt-4 text-center font-medium" style="font-size: 18px">
                                        {{ child.Model }}
                                        {{ child.ModelType }}
                                    </div>
                                    <div class="text-center font-medium text-[14px] bg-[#fff] text-[#003a8f] absolute top-[10px] right-[-13px]" style="font-weight: bold">
                                        <!-- {{ getCompanyNameByType(child.Type) }} -->
                                        <div class="etiquet-price">
                                            <p>{{ getCompanyNameByType(child.Type) }}</p>
                                            <div></div>
                                        </div>
                                    </div>
                                </div>
                            </div>
@@ -343,7 +302,6 @@
</template>
<script setup lang="ts">
import { Document, Operation } from '@element-plus/icons-vue';
import * as echarts from 'echarts';
import { onMounted, ref, nextTick, reactive } from 'vue';
import { useRouter } from 'vue-router';
@@ -448,6 +406,7 @@
    curSelectCatalog: 1,
    catalogSwiperIndex: 0,
    catalogItemList: [],
    m_CompanyList:[],
    m_PageLoading: false,
});
@@ -632,7 +591,7 @@
        // initMapChart();
        initPipeOneChart();
        initPipeTwoChart();
        initComanyData();
        initCatalogList();
        document.getElementById('app-page')?.addEventListener('scroll', handleScroll);
@@ -679,6 +638,25 @@
    //     router.push(`/news-detail/${item.id}`);
    // }
    router.push(`/news-detail/${item.id}`);
};
// åˆå§‹åŒ–厂商列表数据
const initComanyData = () => {
    axios({
        method: 'get',
        url: 'static/EecProductData/CompanyData.json',
    })
        .then((res) => {
            let result = res.data;
            state.m_CompanyList = result.map((item: any) => {
                return {
                    CompanyId: item.CompanyId,
                    CompanyAllName: item.CompanyAllName,
                    CompanyAbbName: item.CompanyAbbName,
                    Type: item.Type,
                };
            });
        })
        .catch((err) => {});
};
// åˆå§‹åŒ–类型列表数据
const initCatalogList = (cb: any = null) => {
@@ -1151,11 +1129,18 @@
};
// äº§å“ç±»åž‹ç‚¹å‡»
const handleCatalogClick = (item: any) => {
    console.log(item, '我被点击了');
    const type = item.Type;
    const companyID = getCompanyItemByType(type)[0].CompanyId;
    router.push({
        path: '/certified-products',
        query: {
            company: companyID,
            type: type,
        },
    });
};
const onSwiper = (swiper: any) => {
    console.log(swiper);
    catalogSwiperRef.value = swiper;
};
const onSlideChange = () => {};
@@ -1174,7 +1159,12 @@
        });
    });
};
const getCompanyNameByType = (type: number) => {
    return state.m_CompanyList.find((item: any) => item.Type.includes(type))?.CompanyAbbName;
};
const getCompanyItemByType = (type: number) => {
    return state.m_CompanyList.filter((item: any) => item.Type.includes(type));
};
onUnmounted(() => {
    document.getElementById('app-page')?.removeEventListener('scroll', handleScroll);
});
@@ -1303,7 +1293,7 @@
    cursor: pointer;
    &:hover {
        img {
            transform: scale(1.25);
            transform: scale(1.05);
            transition: all 1s ease;
        }
        box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.1);
@@ -1445,4 +1435,32 @@
.fade-leave-active {
    animation: fadeOut 0.3s ease-out;
}
.etiquet-price {
    background: #003a8f;
    margin-left: -0.65rem;
    padding: .2rem 1.2rem;
    border-radius: 5px 0 0 5px;
}
.etiquet-price p {
  height: 20px;
  margin: 0;
  display: flex;
  font-size: 14px;
  font-weight: 600;
  line-height: 20px;
  color: #fff;
}
.etiquet-price div {
  position: absolute;
  bottom: -23px;
  right: 0px;
  width: 0;
  height: 0;
  border-top: 13px solid #003a8f;
  border-bottom: 10px solid transparent;
  border-right: 13px solid transparent;
  z-index: -6;
}
</style>
src/views/IndustrialSoftware.vue
@@ -1,36 +1,30 @@
<template>
    <div
        class="container mx-auto px-4 py-8 bg-white industrial-soft-style"
        v-loading="m_PageLoading"
        style="margin-top: 20px; padding-top: 15px"
    >
    <div class="container mx-auto px-4 py-8 bg-white" v-loading="m_PageLoading" style="margin-top: 20px; padding-top: 15px">
        <div class="w-100 h-100" style="background-color: #fff">
            <!-- é¡¶éƒ¨åˆ†ç±»èœå• -->
            <div class="rounded-lg shadow" style="background-color: #f6f7f9; margin-bottom: 10px">
                <!-- æœç´¢æ¡† -->
                <div class="border-b p-4 border-bottom-dashed-1 box-border" style="padding: 10px">
                    <div class="flex items-center gap-4">
                        <span class="text-gray-500" >查询:</span>
                        <el-input
                            v-model="searchQuery"
                            placeholder="请输入公司名称/型号/产品名称"
                            class="!w-[300px]"
                            clearable
                            @input="handleSearch"
                        >
                            <template #prefix>
                                <el-icon><Search /></el-icon>
                            </template>
                        </el-input>
            <div class="rounded-lg shadow" style="background-color: #f6f7f9; margin-bottom: 30px">
                <!-- åނ商 -->
                <div class="border-b border-bottom-dashed-1 box-border px-[10px]">
                    <div class="flex items-center">
                        <span class="text-gray-500 text-[20px]">厂商:</span>
                        <div class="flex flex-1 h-full">
                            <span
                                v-for="item in factory"
                                :key="item.CompanyId"
                                class="ant-tag !px-4"
                                :class="factorySelect === item.CompanyId ? 'ant-tag-checked' : ''"
                                @click="clickFactory(item)"
                            >
                                {{ item.CompanyAbbName }}
                            </span>
                        </div>
                    </div>
                </div>
                <!-- ç±»åž‹ -->
                <div class="border-b p-4 border-bottom-dashed-1 box-border" style="padding: 10px">
                    <div class="flex items-center">
                        <span class="text-gray-500">类型:</span>
                        <div class="flex flex-1">
                <div class="border-b p-4 border-bottom-dashed-1 box-border catalog-filter-bar">
                    <div class="h-full flex items-center">
                        <span class="text-gray-500 text-[20px]">类型:</span>
                        <div class="flex flex-1 h-full">
                            <span
                                v-for="item in type"
                                class="ant-tag !px-4"
@@ -46,26 +40,9 @@
                    </div>
                </div>
                <!-- åނ商 -->
                <div class="border-b p-4 border-bottom-dashed-1 box-border" style="padding: 10px">
                    <div class="flex items-center">
                        <span class="text-gray-500">厂商:</span>
                        <div class="flex flex-1">
                            <span
                                v-for="item in factory"
                                :key="item.CompanyId"
                                class="ant-tag !px-4"
                                :class="factorySelect === item.CompanyId ? 'ant-tag-checked' : ''"
                                @click="clickFactory(item)"
                            >
                                {{ item.CompanyAbbName }}
                            </span>
                        </div>
                    </div>
                </div>
                <!-- èƒ½æ•ˆç­‰çº§ -->
                <div class="flex eec-filter-sortbar" style="background-color: #ecedee">
                <div class="flex eec-filter-sortbar px-[10px]">
                    <span class="text-gray-500 text-[20px]"></span>
                    <ul>
                        <li
                            v-for="sort in EecClass"
@@ -81,128 +58,93 @@
                    </ul>
                </div>
            </div>
            <!-- è½¯ä»¶åˆ—表 -->
            <div class="grid grid-cols-4 gap-4" style="padding: 0 10px; min-height: 417px">
                <div v-for="(app, index) in dispEecProduct" :key="index" class="goods-warp-item software-card">
                    <el-tooltip class="box-item" effect="dark" :offset="20" placement="top">
                        <div class="flex flex-col h-full" style="cursor: pointer">
                            <div style="position: relative; display: flex">
                                <img :src="app.PhysicalPicturePath" :alt="app.Model" class="object-contain mx-auto goods-img" />
                                <!-- <div class="goods-company">{{ app.CompanyName }}</div> -->
                            </div>
                            <div class="goods-name" style="font-size: 14px; font-weight: bold" :title="app.Model">产品名称:{{ app.ModelType }}</div>
                            <!-- äº§å“ -->
                            <div class="goods-name" :title="app.Model">厂家名称:{{ app.CompanyName }}</div>
                            <!-- åž‹å· -->
                            <div class="metertitle mb-2">
                                <span>型号:{{ app.Model }}</span>
                            </div>
                            <!-- <p class="text-gray-500 text-sm mb-4 flex-1">{{ app.description }}</p> -->
                            <div class="flex gap-2" style="justify-content: space-between; align-items: center">
                                <!-- <el-tag size="small" type="success">{{ app.CompanyName }}</el-tag> -->
                                <div class="goods-price">
                                    <span class="goods-price-selling">面议</span>
                                </div>
                                <div class="flex items-center eec-level-div">
                                    <img :src="EecLevelEnum[app.EnergyEfficiencyClass].icon" />
                                    <span class="eec-numb">{{ app.EnergyEfficiencyClass }}</span>
                                    <span class="eec-level-name" @click="handleCertificateClick(app)">{{
                                        EecLevelEnum[app.EnergyEfficiencyClass].name
                                    }}</span>
                                </div>
                            </div>
                            <!-- <div class="flex justify-between items-center">
                            <el-rate v-model="app.rating" disabled />
                            <span class="text-gray-400 text-sm">{{ app.date }}</span>
                        </div> -->
                            <div class="flex justify-between gap-4">
                                <div class="link-btn text-nowrap" @click="handleBuyClick(app.Id)">
                                    <svg
                                        t="1739504206748"
                                        class="svg-size-style"
                                        viewBox="0 0 1024 1024"
                                        version="1.1"
                                        xmlns="http://www.w3.org/2000/svg"
                                        p-id="35851"
                                        width="128"
                                        height="128"
                                    >
                                        <path
                                            d="M96.6656 1013.76a88.064 88.064 0 0 1-88.064-88.064V607.1296a38.4 38.4 0 0 1 47.7184-37.2736L502.6816 744.448a40.96 40.96 0 0 0 18.6368 0L967.68 569.856a38.2976 38.2976 0 0 1 46.08 27.8528 36.5568 36.5568 0 0 1 1.2288 9.4208v320.512A86.1184 86.1184 0 0 1 929.28 1013.76z"
                                            fill="#C2E3FF"
                                            opacity=".64"
                                            p-id="35852"
                                            class="icon-path"
                                        ></path>
                                        <path
                                            d="M815.104 14.2336H197.632A88.3712 88.3712 0 0 0 109.3632 102.4v347.3408a72.9088 72.9088 0 0 0 46.6944 68.096L480.1536 643.072a73.728 73.728 0 0 0 52.5312 0l324.096-125.2352a72.9088 72.9088 0 0 0 46.6944-68.096V102.4a88.3712 88.3712 0 0 0-88.3712-88.1664z m-469.4016 387.072a24.3712 24.3712 0 0 1-24.3712 24.3712h-38.8096a25.088 25.088 0 0 1-25.088-25.088v-38.7072A24.4736 24.4736 0 0 1 281.9072 337.92h39.424a24.4736 24.4736 0 0 1 24.3712 24.4736z m0-175.104a24.4736 24.4736 0 0 1-24.3712 24.4736h-39.424a24.4736 24.4736 0 0 1-24.4736-24.4736v-39.424a24.4736 24.4736 0 0 1 24.4736-24.3712h39.424a24.4736 24.4736 0 0 1 24.3712 24.3712z m421.4784 175.104a24.2688 24.2688 0 0 1-24.3712 24.3712H434.8928a20.48 20.48 0 0 1-20.48-20.48v-43.3152A24.4736 24.4736 0 0 1 438.6816 337.92h304.128a24.3712 24.3712 0 0 1 24.3712 24.4736z m0-175.104a24.3712 24.3712 0 0 1-24.3712 24.4736h-304.128a24.4736 24.4736 0 0 1-24.3712-24.4736v-39.424a24.4736 24.4736 0 0 1 24.3712-24.3712h304.128a24.3712 24.3712 0 0 1 24.3712 24.3712z"
                                            fill="#43ADFF"
                                            p-id="35853"
                                            class="icon-path"
                                        ></path>
                                    </svg>
                                    ç«‹å³è´­ä¹°
                                </div>
                                <div class="link-btn text-nowrap" v-if="false">
                                    <svg
                                        t="1739503834540"
                                        class="svg-size-style"
                                        viewBox="0 0 1024 1024"
                                        version="1.1"
                                        xmlns="http://www.w3.org/2000/svg"
                                        p-id="34740"
                                        width="128"
                                        height="128"
                                    >
                                        <path
                                            d="M0 115.2m76.8 0l870.4 0q76.8 0 76.8 76.8l0 640q0 76.8-76.8 76.8l-870.4 0q-76.8 0-76.8-76.8l0-640q0-76.8 76.8-76.8Z"
                                            fill="#1989FA"
                                            opacity=".3"
                                            p-id="34741"
                                            class="icon-path"
                                        ></path>
                                        <path
                                            d="M563.2 396.8m25.6 0l281.6 0q25.6 0 25.6 25.6l0 0q0 25.6-25.6 25.6l-281.6 0q-25.6 0-25.6-25.6l0 0q0-25.6 25.6-25.6Z"
                                            fill="#1989FA"
                                            p-id="34742"
                                            class="icon-path"
                                        ></path>
                                        <path
                                            d="M563.2 512m25.6 0l281.6 0q25.6 0 25.6 25.6l0 0q0 25.6-25.6 25.6l-281.6 0q-25.6 0-25.6-25.6l0 0q0-25.6 25.6-25.6Z"
                                            fill="#1989FA"
                                            p-id="34743"
                                            class="icon-path"
                                        ></path>
                                        <path
                                            d="M563.2 640m25.6 0l140.8 0q25.6 0 25.6 25.6l0 0q0 25.6-25.6 25.6l-140.8 0q-25.6 0-25.6-25.6l0 0q0-25.6 25.6-25.6Z"
                                            fill="#1989FA"
                                            p-id="34744"
                                            class="icon-path"
                                        ></path>
                                        <path
                                            d="M294.4 422.4m-140.8 0a140.8 140.8 0 1 0 281.6 0 140.8 140.8 0 1 0-281.6 0Z"
                                            fill="#1989FA"
                                            p-id="34745"
                                            class="icon-path"
                                        ></path>
                                        <path
                                            d="M261.1584 611.5328l-73.0624 126.5536-88.6912-51.2 69.0432-119.5776a191.3088 191.3088 0 0 0 92.7104 44.224z m162.816-47.4496l66.9696 116.0064-88.6784 51.2-69.6832-120.6912a191.4496 191.4496 0 0 0 91.392-46.5152z"
                                            fill="#1989FA"
                                            p-id="34746"
                                            class="icon-path"
                                        ></path></svg
                                    >报告
                                </div>
            <!-- å†…容div -->
            <div class="flex gap-[30px]">
                <!-- å·¦ä¾§ç³»åˆ—列表,当前选中的类型为1的时候显示 -->
                <div class="left-div w-[266px] h-[487px]" v-show="typeSelect === 1" style="border:2px solid rgba(158,158,158,0.4)">
                    <div class="flex flex-col w-full items-center justify-center">
                        <div class="flex w-full items-center justify-center py-[18px] box-border" style="border-bottom: 4px solid #003a8f">
                            <span class="text-600 font-bold text-[#003a8f] text-[24px]">系列列表</span>
                        </div>
                        <div class="flex flex-col gap-[10px] py-[10px] box-border">
                            <div :class="catalogSelect === item.Id ? 'bg-[#9e9e9e28]' : ''" class="flex catalog-name-style cursor-pointer w-full min-h-[50px] items-center justify-center text-[22px] px-[15px] box-border" v-for="item in m_catalogList" :key="item.Id" @click="handleCatalogClick(item.Id)" >
                                <span class="text-ellipsis-style" :title="item.Name">{{ item.Name }}</span>
                            </div>
                        </div>
                        <template #content>
                            <div class="goods-tip-content" style="white-space: pre-wrap">{{ app.Tip }}</div>
                        </template>
                    </el-tooltip>
                    </div>
                </div>
                <!-- å³ä¾§è½¯ä»¶åˆ—表,当左侧div不显示的时候占满整个父容器 -->
                <div class="right-div flex-1">
                    <!-- è½¯ä»¶åˆ—表 -->
                    <div class="grid grid-cols-4 gap-4" style="padding: 0 10px; min-height: 417px">
                        <div v-for="(app, index) in dispEecProduct" :key="index" class="goods-warp-item software-card">
                            <el-tooltip class="box-item" effect="dark" :offset="20" placement="top">
                                <div class="flex flex-col h-full" style="cursor: pointer">
                                    <div style="position: relative; display: flex">
                                        <img :src="app.PhysicalPicturePath" :alt="app.Model" class="object-contain mx-auto goods-img" />
                                        <!-- <div class="goods-company">{{ app.CompanyName }}</div> -->
                                    </div>
                                    <div class="goods-name" style="font-size: 14px; font-weight: bold" :title="app.Model">
                                        äº§å“åç§°:{{ app.ModelType }}
                                    </div>
                                    <!-- äº§å“ -->
                                    <div class="goods-name" :title="app.Model">厂家名称:{{ app.CompanyName }}</div>
                                    <!-- åž‹å· -->
                                    <!-- <div class="metertitle mb-2">
                                        <span>型号:{{ app.Model }}</span>
                                    </div> -->
                                    <!-- <p class="text-gray-500 text-sm mb-4 flex-1">{{ app.description }}</p> -->
                                    <div class="flex gap-2" style="justify-content: space-between; align-items: center">
                                        <!-- <el-tag size="small" type="success">{{ app.CompanyName }}</el-tag> -->
                                        <!-- <div class="goods-price">
                                            <span class="goods-price-selling">面议</span>
                                        </div> -->
                                        <div class="flex items-center eec-level-div">
                                            <img :src="EecLevelEnum[app.EnergyEfficiencyClass].icon" />
                                            <span class="eec-numb">{{ app.EnergyEfficiencyClass }}</span>
                                            <span class="eec-level-name" @click="handleCertificateClick(app)">{{
                                                EecLevelEnum[app.EnergyEfficiencyClass].name
                                            }}</span>
                                        </div>
                                    </div>
                                    <div class="flex justify-between gap-4">
                                        <div class="link-btn text-nowrap" @click="handleBuyClick(app.Id)">
                                            <svg
                                                t="1739504206748"
                                                class="svg-size-style"
                                                viewBox="0 0 1024 1024"
                                                version="1.1"
                                                xmlns="http://www.w3.org/2000/svg"
                                                p-id="35851"
                                                width="128"
                                                height="128"
                                            >
                                                <path
                                                    d="M96.6656 1013.76a88.064 88.064 0 0 1-88.064-88.064V607.1296a38.4 38.4 0 0 1 47.7184-37.2736L502.6816 744.448a40.96 40.96 0 0 0 18.6368 0L967.68 569.856a38.2976 38.2976 0 0 1 46.08 27.8528 36.5568 36.5568 0 0 1 1.2288 9.4208v320.512A86.1184 86.1184 0 0 1 929.28 1013.76z"
                                                    fill="#C2E3FF"
                                                    opacity=".64"
                                                    p-id="35852"
                                                    class="icon-path"
                                                ></path>
                                                <path
                                                    d="M815.104 14.2336H197.632A88.3712 88.3712 0 0 0 109.3632 102.4v347.3408a72.9088 72.9088 0 0 0 46.6944 68.096L480.1536 643.072a73.728 73.728 0 0 0 52.5312 0l324.096-125.2352a72.9088 72.9088 0 0 0 46.6944-68.096V102.4a88.3712 88.3712 0 0 0-88.3712-88.1664z m-469.4016 387.072a24.3712 24.3712 0 0 1-24.3712 24.3712h-38.8096a25.088 25.088 0 0 1-25.088-25.088v-38.7072A24.4736 24.4736 0 0 1 281.9072 337.92h39.424a24.4736 24.4736 0 0 1 24.3712 24.4736z m0-175.104a24.4736 24.4736 0 0 1-24.3712 24.4736h-39.424a24.4736 24.4736 0 0 1-24.4736-24.4736v-39.424a24.4736 24.4736 0 0 1 24.4736-24.3712h39.424a24.4736 24.4736 0 0 1 24.3712 24.3712z m421.4784 175.104a24.2688 24.2688 0 0 1-24.3712 24.3712H434.8928a20.48 20.48 0 0 1-20.48-20.48v-43.3152A24.4736 24.4736 0 0 1 438.6816 337.92h304.128a24.3712 24.3712 0 0 1 24.3712 24.4736z m0-175.104a24.3712 24.3712 0 0 1-24.3712 24.4736h-304.128a24.4736 24.4736 0 0 1-24.3712-24.4736v-39.424a24.4736 24.4736 0 0 1 24.3712-24.3712h304.128a24.3712 24.3712 0 0 1 24.3712 24.3712z"
                                                    fill="#43ADFF"
                                                    p-id="35853"
                                                    class="icon-path"
                                                ></path>
                                            </svg>
                                            è¯¦ç»†
                                        </div>
                                    </div>
                                </div>
                                <template #content>
                                    <div class="goods-tip-content" style="white-space: pre-wrap">{{ app.Tip }}</div>
                                </template>
                            </el-tooltip>
                        </div>
                    </div>
                </div>
            </div>
            <!-- åˆ†é¡µ -->
            <div class="flex justify-center mt-8">
                <el-pagination
@@ -268,6 +210,8 @@
    { name: '二级能效', tag: 2 },
];
const m_catalogList = ref([]);
const m_PageLoading = ref(false);
const dialogVisibleCertifcate = ref(false);
@@ -276,6 +220,7 @@
const factorySelect = ref('-99');
const factoryIncludeType = ref(null);
const EecSelect = ref(0);
const catalogSelect = ref(0);
const m_curCertificatePath = ref('');
@@ -309,10 +254,27 @@
// æœç´¢ç›¸å…³
const searchQuery = ref('');
//监听当前路由的参数变化
watch(
    () => route.query.keywords,
    () => {
        const keywords = route.query.keywords ?? '';
        searchQuery.value = String(keywords);
        filterProduct();
    }
);
onMounted(() => {
    const keywords = route.query.keywords ?? '';
    const type = route.query.type ?? 1;
    const company = route.query.company ?? '-99';
    typeSelect.value = Number(type);
    factorySelect.value = String(company);
    factoryIncludeType.value = [typeSelect.value];
    searchQuery.value = String(keywords);
    initComanyData();
    initData();
    // filterProduct();
});
const initComanyData = () => {
    axios({
@@ -344,7 +306,17 @@
            let result = res.data;
            let arr = [];
            let catalogList = [{
                Id: 0,
                Name: '全部'
            }]
            result.forEach((item: any, index: number) => {
                if(typeSelect.value === 1){
                    catalogList.push({
                        Id: item.CatalogID,
                        Name:item.ModelType
                    })
                }
                if (typeSelect.value === 2) {
                    item.Price = item.Price * 10;
                }
@@ -353,7 +325,8 @@
                }
                let incrementFactor = 0.1 * (index + 1); // æ ¹æ®ç´¢å¼•计算递增系数
                let newPrice = parseFloat(item.Price) + parseFloat((item.Price * incrementFactor).toFixed(1)); // è®¡ç®—æ–°çš„Price值
                let node = {
                    Id: item.Id,
                    Type: item.Type,
@@ -368,9 +341,14 @@
                    CertificatePath: `static/EecProductData/${item.CertificatePath}`,
                    Tip: `备案时间:${item.RecordTime} \n å¤‡æ¡ˆå·ï¼š${item.RecordNumber}`,
                };
                if(typeSelect.value === 1){
                    node.CatalogID = item.CatalogID??0;
                }
                arr.push(node);
            });
            // catalogList进行去重
            m_catalogList.value = catalogList.filter((item, index, self) => self.findIndex((t) => t.Id === item.Id) === index);
            console.log(m_catalogList.value);
            allEecProduct.value = arr;
            filterProduct();
        })
@@ -383,7 +361,6 @@
    filterProductData.value = allEecProduct.value.filter((item) => {
        return item.Type === typeSelect.value;
    });
    // æœç´¢ç­›é€‰
    if (searchQuery.value) {
        const query = searchQuery.value.toLowerCase();
@@ -402,7 +379,6 @@
            return item.EnergyEfficiencyClass === EecSelect.value;
        });
    }
    // åŽ‚å•†ç­›é€‰
    if (factorySelect.value !== '-99') {
        filterProductData.value = filterProductData.value.filter((item) => {
@@ -430,8 +406,14 @@
                return 0;
            }
        });
        // éœ€è¦æ ¹æ®catalogSelect的值进行筛选
        if (catalogSelect.value !== 0) {
            console.log(catalogSelect.value);
            filterProductData.value = filterProductData.value.filter((item) => {
                return item.CatalogID === catalogSelect.value;
            });
        }
    }
    dispEecProduct.value = getSelectPageData(filterProductData.value);
};
const handleCurrentChange = (val: number) => {
@@ -466,6 +448,10 @@
    initData();
};
const handleCatalogClick = (id: number) => {
    catalogSelect.value = id;
    filterProduct();
}
const handleBuyClick = (productId: string) => {
    // æ‰¾åˆ°å½“前点击的产品
    const currentProduct = dispEecProduct.value.find((item) => item.Id === productId);
@@ -473,7 +459,7 @@
        // ä¿å­˜äº§å“ä¿¡æ¯åˆ°localStorage
        localStorage.setItem('currentProduct', JSON.stringify(currentProduct));
    }
    if (userInfo.value&& userInfo.value.Token) {
    if (userInfo.value && userInfo.value.Token) {
        router.push(`/product/${currentProduct.Id}`);
    } else {
        loginStore.logOut();
@@ -520,7 +506,7 @@
    /* transition: border-color .1s ease; */
    border-radius: 5px;
    transition: all 0.3s;
    margin-top: 10px;
    margin-top: 0px;
}
.goods-warp-item:hover {
@@ -546,6 +532,12 @@
.box-border {
    box-sizing: border-box;
}
.catalog-filter-bar {
    padding: 0 10px;
    height: 54px;
    display: flex;
    align-items: center;
}
.industrial-soft-style::after {
@@ -646,33 +638,31 @@
}
.ant-tag {
    height: 100%;
    box-sizing: border-box;
    color: rgba(0, 0, 0, 0.65);
    font-size: 14px;
    color: #1d1d1f;
    font-size: 22px;
    font-variant: tabular-nums;
    line-height: 1.5;
    line-height: 54px;
    list-style: none;
    font-feature-settings: 'tnum';
    display: inline-block;
    height: auto;
    margin: 0 8px 0 0;
    padding: 2px 7px;
    font-size: 12px;
    line-height: 20px;
    white-space: nowrap;
    cursor: default;
    opacity: 1;
    transition: all 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86);
    margin-right: 24px;
    font-size: 14px;
    font-size: 22px;
}
.ant-tag:hover {
    color: #1c97b7;
    color: var(--theme-color);
}
.ant-tag-checked {
    background-color: #1c97b7;
    background-color: var(--theme-color);
    color: #fff;
}
@@ -681,41 +671,38 @@
}
.eec-filter-sortbar {
    background-color: #ecedee;
    height: 54px;
}
.eec-filter-sortbar ul {
    padding-left: 0;
    list-style: none;
    margin: 0;
    display: flex;
    box-sizing: border-box;
    gap: 5px;
    padding-left: 42px;
    padding-left: 58px;
    height: 100%;
}
.eec-filter-sortbar li {
    padding: 4px 18px;
    cursor: pointer;
    /* transition: all .3s; */
    margin: 0 2px;
    line-height: 32px;
    line-height: 54px;
    box-sizing: border-box;
    font-size: 22px;
}
.eec-filter-sortbar li:hover {
    border-bottom: 4px solid #1c97b7;
    color: #1c97b7;
    border-bottom: 4px solid var(--theme-color);
}
.eec-filter-currentOrder {
    border-bottom: 4px solid #1c97b7;
    color: #1c97b7;
    color: #fff;
    background-color: var(--theme-color);
}
.eec-filter-currentOrder:hover {
    border-bottom: 4px solid #1c97b7;
    color: #1c97b7;
    border-bottom: 4px solid var(--theme-color);
}
.eec-level-div {
@@ -766,6 +753,18 @@
        background-color: #196dd9;
    }
}
.catalog-name-style {
    width: 100%;
    max-width: 266px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.text-ellipsis-style {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
:deep(.el-button--default) {
    --el-button-bg-color: transparent;
    --el-button-border-color: transparent;