fix: 更新 API 请求参数格式及优化组件样式

- 将 addEvaluation API 的参数从 params 修改为 data,以符合标准请求格式
- 在多个组件中调整样式,提升响应式布局和用户体验
- 优化商品详情页的倒计时显示,增强视觉效果
- 更新购物车操作按钮样式,提升一致性和可用性
This commit is contained in:
田香琪
2026-06-23 14:13:25 +08:00
parent 8a60e23214
commit 1b2e980fb6
26 changed files with 481 additions and 401 deletions

View File

@@ -28,10 +28,10 @@
<div class="eval-con">
<div>
<span class="color999">商品评价</span>
<el-radio-group style="margin-bottom:5px;color:#999" v-model="orderGoods.grade" type="button" button-style="solid">
<el-radio label="GOOD">好评</el-radio>
<el-radio label="MODERATE">中评</el-radio>
<el-radio label="WORSE">差评</el-radio>
<el-radio-group v-model="orderGoods.grade">
<el-radio-button value="GOOD">好评</el-radio-button>
<el-radio-button value="MODERATE">中评</el-radio-button>
<el-radio-button value="WORSE">差评</el-radio-button>
</el-radio-group>
<el-input type="textarea" maxlength="500" show-word-limit :rows="4" v-model="orderGoods.content" />
</div>
@@ -106,6 +106,12 @@ export default {
if (!this.form.descriptionScore) {
this.$Message.warning('描述评价不能为空')
return false;
}
if (!this.orderGoods.content || !String(this.orderGoods.content).trim()) {
this.$Message.warning('评论内容不能为空')
return false;
}
this.loading = true;
@@ -118,17 +124,20 @@ export default {
serviceScore: this.form.serviceScore,
deliveryScore: this.form.deliveryScore,
grade: goods.grade,
content: goods.content || '',
images: goods.uploadList.toString()
content: goods.content.trim(),
images: goods.uploadList.length ? goods.uploadList.join(',') : ''
}
addEvaluation(params).then(res => {
this.loading = false
if (res.success) {
this.$Message.success('评价成功')
this.$router.push('/home/CommentList')
} else {
this.$Message.error(res.message || '评价失败,请稍后重试')
}
}).catch(() => {
}).catch((err) => {
this.loading = false;
this.$Message.error(err?.message || '评价失败,请稍后重试')
})
},
goGoodsDetail (skuId, goodsId) { // 跳转商品详情

View File

@@ -29,8 +29,13 @@
<el-input type="number" v-model="form.num" style="width:260px" />
</el-form-item>
<el-form-item label="提交原因" prop="reason">
<el-select v-model="form.reason" style="width:260px">
<el-option v-for="item in reasonList" :value="item.id" :key="item.id">{{ item.reason }}</el-option>
<el-select v-model="form.reason" style="width:260px" placeholder="请选择提交原因">
<el-option
v-for="item in reasonList"
:key="item.id"
:label="item.reason"
:value="item.id"
/>
</el-select>
</el-form-item>
<el-form-item label="问题描述" prop="problemDesc">

View File

@@ -5,7 +5,7 @@
<div class="address-header">
<span>
{{ item.name }}
<el-tag class="ml_10" v-if="item.isDefault" color="red">默认地址</el-tag>
<el-tag class="ml_10 default-address-tag" v-if="item.isDefault">默认地址</el-tag>
<el-tag class="ml_10" v-if="item.alias" color="warning">{{item.alias}}</el-tag>
</span>
<div class="address-action">
@@ -121,6 +121,12 @@ export default {
cursor: pointer;
}
.default-address-tag {
background-color: #fff3f2 !important;
border: 1px solid $theme_color !important;
color: $theme_color !important;
}
#map-container {
width: 500px;
height: 300px;

View File

@@ -11,7 +11,7 @@
:key="index"
@click="goodsDetail(item.id, item.goodsId)"
>
<img :src="item.thumbnail" :alt="item.thumbnail" width="200" height="200" />
<img :src="item.thumbnail" :alt="item.goodsName" />
<p class="ellipsis">{{ item.goodsName }}</p>
<p>{{ $filters.unitPrice(item.price, "¥") }}</p>
<span class="del-icon" @click.stop="clearById(item.goodsId)">
@@ -132,15 +132,27 @@ export default {
}
.track-list {
display: flex;
flex-wrap: wrap;
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 12px;
padding: 0 15px;
box-sizing: border-box;
li {
width: 200px;
width: 100%;
min-width: 0;
overflow: hidden;
margin-left: 15px;
margin-bottom: 10px;
border: 1px solid #eee;
position: relative;
box-sizing: border-box;
img {
width: 100%;
aspect-ratio: 1;
object-fit: cover;
display: block;
}
&:hover {
cursor: pointer;
box-shadow: 1px 1px 3px #999;