| | |
| | | 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="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="border-b p-4 border-bottom-dashed-1 box-border" style="padding: 10px"> |
| | | <div class="flex items-center"> |
| | | <span class="text-gray-500 ">类型:</span> |
| | | <span class="text-gray-500">类型:</span> |
| | | <div class="flex flex-1"> |
| | | <span v-for="item in type" class="ant-tag !px-4" |
| | | :class="typeSelect === item.tag ? 'ant-tag-checked' : ''" :key="item.tag" |
| | |
| | | </div> |
| | | |
| | | <!-- 厂商 --> |
| | | <div class="border-b p-4 border-bottom-dashed-1 box-border" style="padding: 10px;"> |
| | | <div class="flex items-center "> |
| | | <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.tag" class="ant-tag !px-4" |
| | | :class="factorySelect === item.tag ? 'ant-tag-checked' : ''" |
| | | :type="factorySelect === item.tag ? 'primary' : 'default'" |
| | | @click="factorySelect = item.tag" size="small"> |
| | | {{ item.name }} |
| | | <span v-for="item in factory" :key="item.CompanyId" class="ant-tag !px-4" |
| | | :class="factorySelect === item.CompanyId ? 'ant-tag-checked' : ''" |
| | | @click="factorySelect = item.CompanyId" size="small"> |
| | | {{ item.CompanyAbbName }} |
| | | </span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <!-- 能效等级 --> |
| | | <div class="flex eec-filter-sortbar" style="background-color: #ecedee;"> |
| | | <div class="flex eec-filter-sortbar" style="background-color: #ecedee"> |
| | | <ul> |
| | | <li v-for="sort in EecClass" :key="sort.tag" size="small" @click="handleEecLevel(sort.tag)" |
| | | :type="EecSelect === sort.tag ? 'primary' : 'default'" |
| | |
| | | <div class="goods-name" :title="app.Model">{{ app.ModelType }}</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 flex-wrap gap-2" style=""> |
| | | <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"> ¥{{ app.Price }}</span> </div> |
| | | <div class="flex items-center eec-level-div"> |
| | | <img :src="EecLevelEnum[app.EnergyEfficiencyClass].icon"> |
| | | <span class="eec-numb">{{ app.EnergyEfficiencyClass }}</span> |
| | |
| | | }}</span> |
| | | </div> |
| | | </div> |
| | | <div class="goods-price"><span class="goods-price-selling">{{ app.price }}</span> </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="link-btn">立即购入</div> |
| | | <div class="link-btn" @click="handleBuyClick(app.id)">立即购入</div> |
| | | </div> |
| | | <template #content> |
| | | <div class="goods-tip-content" style="white-space: pre-wrap;">{{ app.Tip }}</div> |
| | |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import { ref, onMounted } from 'vue'; |
| | | import EecLevel1 from '@/assets/icons/energy_level_1.svg'; |
| | | import EecLevel2 from '@/assets/icons/energy_level_2.svg'; |
| | | import { onMounted, ref } from 'vue'; |
| | | import { useRouter } from 'vue-router'; |
| | | import axios from 'axios'; |
| | | import EecLevel1 from '@/assets/icons/energy_level_1.svg' |
| | | import EecLevel2 from '@/assets/icons/energy_level_2.svg' |
| | | const router = useRouter(); |
| | | |
| | | // 分类选项 |
| | | const type = [ |
| | | { name: "电机", tag: 1 }, |
| | | { name: "泵", tag: 2 }, |
| | | { name: '容积式空压机', tag: 3 }, |
| | | { name: "通风机", tag: 4 }, |
| | | { name: "冷水机组", tag: 5 }, |
| | | { name: "电力变压器", tag: 6 }, |
| | | { name: "工业锅炉", tag: 7 }, |
| | | { name: "泵", tag: 1 }, |
| | | { name: '容积式空压机', tag: 2 }, |
| | | { name: "通风机", tag: 3 }, |
| | | { name: "冷水机组", tag: 4 }, |
| | | { name: "电力变压器", tag: 5 }, |
| | | { name: "工业锅炉", tag: 6 }, |
| | | { name: "电机", tag: 7 }, |
| | | ]; |
| | | const factory = [ |
| | | { name: "全部", tag: "全部" }, |
| | | { name: '凯泉', tag: '凯泉' }, |
| | | ]; |
| | | const factory = ref([]); |
| | | const EecClass = [ |
| | | { name: "全部", tag: 0 }, |
| | | { name: "一级能效", tag: 1 }, |
| | |
| | | const m_PageLoading = ref(false) |
| | | |
| | | // 选中状态 |
| | | const typeSelect = ref(0); |
| | | const factorySelect = ref('全部'); |
| | | const typeSelect = ref(1); |
| | | const factorySelect = ref('-99'); |
| | | const EecSelect = ref(0); |
| | | |
| | | |
| | | const EecLevelEnum = { |
| | | 1: { name: '一级能效', icon: EecLevel1 }, |
| | | 2: { name: '二级能效', icon: EecLevel2 }, |
| | | } |
| | | }; |
| | | |
| | | const m_RequestDataObj = { |
| | | 1: { requestPath: "static/EecProductData/ElectricMachinery.json" }, |
| | | 2: { requestPath: "static/EecProductData/Pump.json" }, |
| | | 3: { requestPath: "static/EecProductData/AirCompressor.json" }, |
| | | 4: { requestPath: "static/EecProductData/Fan.json" }, |
| | | 5: { requestPath: "static/EecProductData/WaterChiller.json" }, |
| | | 6: { requestPath: "static/EecProductData/PowerTransformer.json" }, |
| | | 7: { requestPath: "static/EecProductData/IndustrialBoiler.json" }, |
| | | 1: { requestPath: "static/EecProductData/Pump.json" }, |
| | | 2: { requestPath: "static/EecProductData/AirCompressor.json" }, |
| | | 3: { requestPath: "static/EecProductData/Fan.json" }, |
| | | 4: { requestPath: "static/EecProductData/WaterChiller.json" }, |
| | | 5: { requestPath: "static/EecProductData/PowerTransformer.json" }, |
| | | 6: { requestPath: "static/EecProductData/IndustrialBoiler.json" }, |
| | | 7: { requestPath: "static/EecProductData/ElectricMachinery.json" }, |
| | | } |
| | | |
| | | |
| | |
| | | |
| | | const m_paginationConfig = ref({ |
| | | currentPage: 1, |
| | | pageSize: 10, |
| | | pageSize: 12, |
| | | }) |
| | | |
| | | onMounted(() => { |
| | | initComanyData(); |
| | | initData(); |
| | | // filterProduct(); |
| | | }) |
| | | |
| | | const initComanyData = () => { |
| | | axios({ |
| | | method: 'get', |
| | | url: 'static/EecProductData/CompanyData.json', |
| | | }).then((res) => { |
| | | let result = res.data; |
| | | factory.value = result.map((item: any) => { |
| | | return { |
| | | CompanyId: item.CompanyId, |
| | | CompanyAllName: item.CompanyAllName, |
| | | CompanyAbbName: item.CompanyAbbName, |
| | | Type: item.Type, |
| | | } |
| | | }) |
| | | factory.value.unshift({ CompanyId: "-99", CompanyAllName: '全部', CompanyAbbName: '全部', Type: null }) |
| | | }).catch((err) => { }) |
| | | } |
| | | const initData = () => { |
| | | m_PageLoading.value = true; |
| | | axios({ |
| | |
| | | let arr = []; |
| | | result.forEach((item: any) => { |
| | | let node = { |
| | | Id: item.ID, |
| | | Id: item.Id, |
| | | Type: item.Type, |
| | | ModelType: item.ModelType, |
| | | Model: item.Model, |
| | |
| | | RecordNumber: item.RecordNumber, |
| | | EnergyEfficiencyClass: item.EnergyEfficiencyClass, |
| | | RecordTime: item.RecordTime, |
| | | // PhysicalPicturePath: "/static/EecProductData/" + item.PhysicalPicturePath, |
| | | PhysicalPicturePath: `https://private.zkh.com/PRODUCT/BIG/BIG_AE2310858_01.jpg?x-oss-process=style/WEBPCOM_style×tamp=1735778771000`, |
| | | Price: item.Price, |
| | | PhysicalPicturePath: "/static/EecProductData/" + item.PhysicalPicturePath, |
| | | CertificatePath: `/static/EecProductData/${item.CertificatePath}`, |
| | | Tip: `备案时间:${item.RecordTime} \n 备案号:${item.RecordNumber}`, |
| | | } |
| | |
| | | filterProductData.value = allEecProduct.value.filter((item) => { |
| | | return item.Type === typeSelect.value |
| | | }) |
| | | |
| | | if (EecSelect.value !== 0) { |
| | | filterProductData.value = filterProductData.value.filter((item) => { |
| | | return item.EnergyEfficiencyClass === EecSelect.value |
| | | }) |
| | | } |
| | | if (factorySelect.value !== '全部') { |
| | | if (factorySelect.value !== '-99') { |
| | | filterProductData.value = filterProductData.value.filter((item) => { |
| | | return item.CompanyName === factorySelect.value |
| | | }) |
| | |
| | | } |
| | | const handleCurrentChange = (val: number) => { |
| | | m_paginationConfig.value.currentPage = val; |
| | | let allTableData = allEecProduct.value; |
| | | let allTableData = filterProductData.value; |
| | | let pagingData = getSelectPageData(allTableData); |
| | | dispEecProduct.value = pagingData; |
| | | } |
| | | const handleSizeChange = (val: number) => { |
| | | m_paginationConfig.value.currentPage = val; |
| | | let allTableData = allEecProduct.value; |
| | | let allTableData = filterProductData.value; |
| | | let pagingData = getSelectPageData(allTableData); |
| | | dispEecProduct.value = pagingData; |
| | | } |
| | |
| | | const changeSelectType = (tag: number) => { |
| | | typeSelect.value = tag; |
| | | initData(); |
| | | }; |
| | | |
| | | const handleBuyClick = (productId: string) => { |
| | | // 找到当前点击的产品 |
| | | const currentProduct = dispEecProduct.value.find((item) => item.id === productId); |
| | | if (currentProduct) { |
| | | console.log("🚀 ~ currentProduct:", currentProduct) |
| | | // 保存产品信息到localStorage |
| | | localStorage.setItem('currentProduct', JSON.stringify(currentProduct)); |
| | | } |
| | | router.push(`/product/${productId}`); |
| | | }; |
| | | const handleEecLevel = (tag: number) => { |
| | | EecSelect.value = tag; |
| | |
| | | box-sizing: border-box; |
| | | /* transition: border-color .1s ease; */ |
| | | border-radius: 5px; |
| | | transition: all .3s; |
| | | transition: all 0.3s; |
| | | margin-top: 10px; |
| | | } |
| | | |
| | | .goods-warp-item:hover { |
| | | border-color: rgba(0, 0, 0, .09); |
| | | box-shadow: 0 2px 8px rgba(0, 0, 0, .2) |
| | | border-color: rgba(0, 0, 0, 0.09); |
| | | box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2); |
| | | } |
| | | |
| | | .bg-grey { |
| | |
| | | } |
| | | |
| | | .industrial-soft-style::after { |
| | | content: ""; |
| | | content: ''; |
| | | position: absolute; |
| | | top: 0; |
| | | left: 0; |
| | |
| | | color: #999; |
| | | line-height: 16px; |
| | | overflow: hidden; |
| | | text-align: left |
| | | text-align: left; |
| | | } |
| | | |
| | | .link-btn { |
| | |
| | | } |
| | | |
| | | .goods-price { |
| | | width: 100%; |
| | | /* width: 100%; */ |
| | | padding: 0 3px; |
| | | text-align: left; |
| | | box-sizing: border-box; |
| | |
| | | } |
| | | |
| | | .goods-price .goods-price-selling { |
| | | font-size: 14px; |
| | | font-size: 16px; |
| | | font-weight: 700; |
| | | color: #f74747; |
| | | } |
| | | |
| | | .ant-tag { |
| | | box-sizing: border-box; |
| | | color: rgba(0, 0, 0, .65); |
| | | color: rgba(0, 0, 0, 0.65); |
| | | font-size: 14px; |
| | | font-variant: tabular-nums; |
| | | line-height: 1.5; |
| | | list-style: none; |
| | | font-feature-settings: "tnum"; |
| | | font-feature-settings: 'tnum'; |
| | | display: inline-block; |
| | | height: auto; |
| | | margin: 0 8px 0 0; |
| | |
| | | white-space: nowrap; |
| | | cursor: default; |
| | | opacity: 1; |
| | | transition: all .3s cubic-bezier(.78, .14, .15, .86); |
| | | transition: all 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); |
| | | margin-right: 24px; |
| | | font-size: 14px; |
| | | } |
| | |
| | | } |
| | | |
| | | .eec-filter-currentOrder { |
| | | |
| | | border-bottom: 4px solid #1c97b7; |
| | | color: #1c97b7; |
| | | |
| | | } |
| | | |
| | | .eec-filter-currentOrder:hover { |
| | |
| | | color: #fff; |
| | | font-size: 12px; |
| | | } |
| | | |
| | | |
| | | |
| | | :deep(.el-button--default) { |
| | | --el-button-bg-color: transparent; |