Commit 2b15a80c59fd175307025af86db87290c6e3661d

Authored by boyang
1 parent 762d3341

fix: 修改商品规格列表样式

Showing 1 changed file with 124 additions and 13 deletions
components/MobileProductDetail.vue
@@ -78,6 +78,7 @@ @@ -78,6 +78,7 @@
78 </v-col> 78 </v-col>
79 </v-row> 79 </v-row>
80 <div 80 <div
  81 + ref="ticketDiv"
81 v-if="info.ticketTypes?.length" 82 v-if="info.ticketTypes?.length"
82 class="py-0 mx-4 rounded-lg tw-flex tw-flex-wrap tw-justify-around" 83 class="py-0 mx-4 rounded-lg tw-flex tw-flex-wrap tw-justify-around"
83 > 84 >
@@ -102,16 +103,15 @@ @@ -102,16 +103,15 @@
102 </v-sheet> --> 103 </v-sheet> -->
103 <v-table 104 <v-table
104 density="comfortable" 105 density="comfortable"
  106 + style="width: 100%"
105 class="table1 tw-mt-[0px] tw-overflow-x-auto" 107 class="table1 tw-mt-[0px] tw-overflow-x-auto"
106 v-if="info.ticketTypes?.length" 108 v-if="info.ticketTypes?.length"
107 > 109 >
108 <thead> 110 <thead>
109 <tr class="bg-grey-lighten-3"> 111 <tr class="bg-grey-lighten-3">
  112 + <th class="text-left headerBorder text-grey-darken-1">Name/Code</th>
110 <th class="text-left headerBorder text-grey-darken-1"> 113 <th class="text-left headerBorder text-grey-darken-1">
111 - Product Name / Code  
112 - </th>  
113 - <th class="text-left headerBorder text-grey-darken-1">  
114 - Specification and model 114 + Specification
115 </th> 115 </th>
116 <th 116 <th
117 v-if="info.priceShow !== undefined && info.priceShow" 117 v-if="info.priceShow !== undefined && info.priceShow"
@@ -119,7 +119,7 @@ @@ -119,7 +119,7 @@
119 > 119 >
120 Price 120 Price
121 </th> 121 </th>
122 - <th class="text-left headerBorder text-grey-darken-1">Actions</th> 122 + <!-- <th class="text-left headerBorder text-grey-darken-1">Actions</th> -->
123 </tr> 123 </tr>
124 </thead> 124 </thead>
125 <tbody> 125 <tbody>
@@ -134,19 +134,16 @@ @@ -134,19 +134,16 @@
134 <td class="td text-grey-darken-4 font-weight-medium"> 134 <td class="td text-grey-darken-4 font-weight-medium">
135 {{ item.typeName }} 135 {{ item.typeName }}
136 </td> 136 </td>
137 - <td v-if="item.priceShow" class="td">  
138 - {{ item.price + " " + item.priceUnit }}  
139 - </td>  
140 - <td class="td"> 137 + <td v-if="item.priceShow" class="td">$ {{ item.price }}</td>
  138 + <!-- <td class="td">
141 <v-btn 139 <v-btn
142 size="small" 140 size="small"
143 color="blue-darken-1" 141 color="blue-darken-1"
144 @click="router.push('/contact')" 142 @click="router.push('/contact')"
145 > 143 >
146 - <!-- Quotation Inquiry -->  
147 Quote 144 Quote
148 </v-btn> 145 </v-btn>
149 - </td> 146 + </td> -->
150 </tr> 147 </tr>
151 </tbody> 148 </tbody>
152 </v-table> 149 </v-table>
@@ -155,12 +152,25 @@ @@ -155,12 +152,25 @@
155 152
156 </div> --> 153 </div> -->
157 <!-- <v-btn 154 <!-- <v-btn
158 - size="large" 155 + style="margin-top: 6px"
159 color="blue-darken-1" 156 color="blue-darken-1"
160 @click="router.push('/contact')" 157 @click="router.push('/contact')"
161 > 158 >
162 Quotation Inquiry 159 Quotation Inquiry
163 </v-btn> --> 160 </v-btn> -->
  161 + <!-- <div
  162 + v-if="showBottomButton"
  163 + ref="bottomButton"
  164 + :class="['button-container', { fixed: isFixed }]"
  165 + > -->
  166 + <v-btn
  167 + style="margin-top: 12px"
  168 + color="blue-darken-1"
  169 + @click="router.push('/contact')"
  170 + >
  171 + Quotation Inquiry
  172 + </v-btn>
  173 + <!-- </div> -->
164 </div> 174 </div>
165 <!-- <v-dialog v-model="dialog" activator="parent" width="auto"> 175 <!-- <v-dialog v-model="dialog" activator="parent" width="auto">
166 <v-card> Contact us Email: contact@canrd.com QQ: 3003597584 / 2902385824 </v-card> 176 <v-card> Contact us Email: contact@canrd.com QQ: 3003597584 / 2902385824 </v-card>
@@ -213,7 +223,7 @@ @@ -213,7 +223,7 @@
213 v-for="item in info.productAttributeList || []" 223 v-for="item in info.productAttributeList || []"
214 :key="item.name" 224 :key="item.name"
215 > 225 >
216 - <td class="td tw-w-[400px]">{{ item.name }}</td> 226 + <td class="td tw-w-[350px]">{{ item.name }}</td>
217 <td class="td">{{ item.value }}</td> 227 <td class="td">{{ item.value }}</td>
218 </tr> 228 </tr>
219 </tbody> 229 </tbody>
@@ -245,6 +255,88 @@ const href1 = ref(&quot;/products&quot;); @@ -245,6 +255,88 @@ const href1 = ref(&quot;/products&quot;);
245 const href2 = ref("/products"); 255 const href2 = ref("/products");
246 const routeQuery = useRouteQuery(); 256 const routeQuery = useRouteQuery();
247 const productStore = useProductListStore(); 257 const productStore = useProductListStore();
  258 +
  259 +// const ticketDiv = ref<HTMLDivElement | null>(null); // 引用 ticketDiv
  260 +// const bottomButton = ref<HTMLDivElement | null>(null); // 引用按钮元素
  261 +// let isMonitoring = false; // 是否正在监控 ticketDiv
  262 +// let isMonitoringBtn = false; // 是否正在监控 ticketDiv
  263 +// const showBottomButton = ref(false); // 按钮是否显示
  264 +// const isFixed = ref(false); // 按钮是否固定
  265 +
  266 +// const handleScroll = () => {
  267 +// // 检查 ticketDiv 的可见性
  268 +// if (ticketDiv.value) {
  269 +// const rect = ticketDiv.value.getBoundingClientRect();
  270 +// if (rect.top <= window.innerHeight && rect.bottom >= 0) {
  271 +// if (!isMonitoring) {
  272 +// console.log("5656进入监控区域,显示按钮");
  273 +// isMonitoring = true;
  274 +// showBottomButton.value = true; // 显示按钮
  275 +// isFixed.value = true;
  276 +// }
  277 +// } else {
  278 +// if (isMonitoring) {
  279 +// console.log("5656离开监控区域,隐藏按钮");
  280 +// isMonitoring = false;
  281 +// // showBottomButton.value = false; // 隐藏按钮
  282 +// }
  283 +// }
  284 +// }
  285 +
  286 +// // 检查按钮位置,决定是否固定
  287 +// if (bottomButton.value) {
  288 +// const buttonRect = bottomButton.value.getBoundingClientRect();
  289 +// if (buttonRect.bottom <= window.innerHeight) {
  290 +// console.log(window.innerHeight, "5656离开监控区域,显示按钮1");
  291 +// isFixed.value = false; // 按钮不固定
  292 +// } else {
  293 +// console.log(window.innerHeight, "5656进入监控区域,隐藏按钮1");
  294 +// isFixed.value = true; // 按钮固定在底部
  295 +// }
  296 +// }
  297 +// };
  298 +
  299 +// const handleScrollBtn = () => {
  300 +// // 检查 ticketDiv 的可见性
  301 +// if (bottomButton.value) {
  302 +// const rect = bottomButton.value.getBoundingClientRect();
  303 +// if (rect.top <= window.innerHeight && rect.bottom >= 0) {
  304 +// if (!isMonitoringBtn) {
  305 +// console.log("5656进入监控区域,显示按钮1");
  306 +// isMonitoringBtn = true;
  307 +// }
  308 +// } else {
  309 +// if (isMonitoringBtn) {
  310 +// console.log("5656离开监控区域,隐藏按钮1");
  311 +// isMonitoringBtn = false;
  312 +// // showBottomButton.value = false; // 隐藏按钮
  313 +// }
  314 +// }
  315 +// }
  316 +
  317 +// // // 检查按钮位置,决定是否固定
  318 +// // if (bottomButton.value) {
  319 +// // const buttonRect = bottomButton.value.getBoundingClientRect();
  320 +// // if (buttonRect.bottom <= window.innerHeight) {
  321 +// // console.log(window.innerHeight, "5656离开监控区域,显示按钮1");
  322 +// // isFixed.value = false; // 按钮不固定
  323 +// // } else {
  324 +// // console.log(window.innerHeight, "5656进入监控区域,隐藏按钮1");
  325 +// // isFixed.value = true; // 按钮固定在底部
  326 +// // }
  327 +// // }
  328 +// };
  329 +
  330 +// onMounted(() => {
  331 +// window.addEventListener("scroll", handleScroll);
  332 +// window.addEventListener("scroll", handleScrollBtn);
  333 +// });
  334 +
  335 +// onUnmounted(() => {
  336 +// window.removeEventListener("scroll", handleScroll);
  337 +// window.removeEventListener("scroll", handleScrollBtn);
  338 +// });
  339 +
248 interface BreadcrumbItem { 340 interface BreadcrumbItem {
249 title: string; // 标题 341 title: string; // 标题
250 disabled: boolean; // 是否禁用 342 disabled: boolean; // 是否禁用
@@ -405,4 +497,23 @@ watchEffect(() =&gt; { @@ -405,4 +497,23 @@ watchEffect(() =&gt; {
405 .active { 497 .active {
406 background-color: #fff; 498 background-color: #fff;
407 } 499 }
  500 +
  501 +// .button-container {
  502 +// margin-top: 6px;
  503 +// display: flex;
  504 +// justify-content: center;
  505 +// position: absolute;
  506 +// width: 100%;
  507 +// bottom: auto; /* 默认情况下不固定 */
  508 +// }
  509 +
  510 +// .button-container.fixed {
  511 +// position: fixed;
  512 +// bottom: 16px; /* 固定在页面底部 */
  513 +// left: 0;
  514 +// z-index: 1000;
  515 +// background-color: rgba(255, 255, 255, 0.9);
  516 +// box-shadow: 0 -2px 6px rgba(0, 0, 0, 0.1);
  517 +// padding: 8px 0;
  518 +// }
408 </style> 519 </style>