Commit 2b15a80c59fd175307025af86db87290c6e3661d
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("/products"); | @@ -245,6 +255,88 @@ const href1 = ref("/products"); | ||
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(() => { | @@ -405,4 +497,23 @@ watchEffect(() => { | ||
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> |