feat: 更新 API 请求参数与组件样式优化

- 在 account.js 和 member.js 中添加 loading 和 skipMessage 参数,提升 API 调用的用户体验。
- 在 ShowGoods.vue 中优化商品详情展示样式,增强可读性和交互性。
- 在 Cart.vue 中重构购物车商品列表结构,提升布局一致性。
- 在多个页面中修复了提示信息的内容,确保用户操作的清晰反馈。
This commit is contained in:
田香琪
2026-07-06 16:33:21 +08:00
parent e13ca6281d
commit 297bdd95dd
28 changed files with 689 additions and 259 deletions

View File

@@ -165,9 +165,13 @@
<div v-for="(item, index) in data" :key="index" class="img-item">
<div
class="card"
:class="{ 'custom-checkbox-card-checked': selectedOss.includes(item.id + ',' + item.url) }"
:class="{
'custom-checkbox-card-checked': selectedOss.includes(item.id + ',' + item.url),
'oss-card-selectable': isComponent && selectImage
}"
@mouseenter="onMouseOver(item, index)"
@mouseleave="onMouseOut(item, index)"
@click="toggleSelectedOss(item)"
>
<el-checkbox
:value="item.id + ',' + item.url"
@@ -176,17 +180,17 @@
/>
<img :src="item.url" alt="" />
<div v-if="item.isShowPreview" class="preview">
<div @click.prevent="download(item)">
<div @click.stop.prevent="download(item)">
<el-tooltip content="下载" placement="top">
<el-icon :size="18"><Download /></el-icon>
</el-tooltip>
</div>
<div @click.prevent="remove(item)">
<div @click.stop.prevent="remove(item)">
<el-tooltip content="删除" placement="top">
<el-icon :size="18"><Delete /></el-icon>
</el-tooltip>
</div>
<div @click.prevent="showPic(item)">
<div @click.stop.prevent="showPic(item)">
<el-tooltip content="预览" placement="top">
<el-icon :size="22"><View /></el-icon>
</el-tooltip>
@@ -488,6 +492,10 @@ export default {
type: Boolean,
default: false,
},
maxSelect: {
type: Number,
default: 0,
},
},
data() {
return {
@@ -1059,6 +1067,10 @@ export default {
// 复选框值改变时触发
selectOssChange(e) {
if (e) {
if (this.maxSelect > 0 && e.length > this.maxSelect) {
e = e.slice(-this.maxSelect);
this.selectedOss = e;
}
this.selectList = e.map(item => {
return {id: item.split(',')[0]}
});
@@ -1069,6 +1081,22 @@ export default {
this.$emit("selected", e);
}
},
toggleSelectedOss(item) {
if (!item) return;
const value = `${item.id},${item.url}`;
const index = this.selectedOss.indexOf(value);
if (index > -1) {
this.selectedOss.splice(index, 1);
} else if (this.maxSelect === 1) {
this.selectedOss = [value];
} else {
if (this.maxSelect > 0 && this.selectedOss.length >= this.maxSelect) {
this.selectedOss = this.selectedOss.slice(1);
}
this.selectedOss.push(value);
}
this.selectOssChange(this.selectedOss);
},
// 页码改变时回调
pageChange(value) {
this.selectedOss = [];