diff --git a/pages/home/components/orderCard2.vue b/pages/home/components/orderCard2.vue
index 2a9eb79..011c3cc 100644
--- a/pages/home/components/orderCard2.vue
+++ b/pages/home/components/orderCard2.vue
@@ -39,6 +39,7 @@
{{`团购价: `}}¥{{ dataItem.order_money }}
+ {{ dataItem.line_money }}
@@ -258,6 +259,15 @@
line-height: 34rpx;
text-align: left;
font-style: normal;
+
+ .service-price-line {
+ font-weight: 400;
+ font-size: 24rpx;
+ color: #999999;
+ line-height: 34rpx;
+ margin-left: 10rpx;
+ text-decoration: line-through;
+ }
}
.service-type {
diff --git a/pages/shop/add-service.vue b/pages/shop/add-service.vue
index f4dd126..d0924ac 100644
--- a/pages/shop/add-service.vue
+++ b/pages/shop/add-service.vue
@@ -1,123 +1,111 @@
-
-
+
+
-
-
-
-
- 服务名称
-
-
+
+
+
+
+ 服务名称
+
+
-
-
- 服务价格
-
-
+
+
+ 服务定价
+
+
+ 服务的基础定价,未参与任何优惠的价格
+
+
-
-
- 服务分类
-
-
+ 服务售价
+
+
+ 服务参与单品优惠后的价格
+
+
+
+
+
+ 服务分类
+
+
- {{ serviceType || "选择分类" }}
-
-
-
-
+ ]">
+ {{ serviceType || "选择分类" }}
+
+
+
+
-
-
- 服务子类
-
-
+ 服务子类
+
+
- {{ category || "选择子类" }}
-
-
-
-
+ ]">
+ {{ category || "选择子类" }}
+
+
+
+
-
-
-
- 是否允许该服务在门店端售卖,以供门店下单购买。
- {{
+
+
+
+ 是否允许该服务在门店端售卖,以供门店下单购买。
+ {{
showShopPrice
? "门店下单购买后,您需到上门至门店进行服务,门店端展示价格为"
: ""
}}
- {{
+ {{
shopPrice
}}
- {{ showShopPrice ? "元。" : "" }}
-
-
-
-
- 允许
-
-
-
- 不允许
-
-
-
+ {{ showShopPrice ? "元。" : "" }}
+
+
+
+
+ 允许
+
+
+
+ 不允许
+
+
+
-
-
- 服务时长
-
- 分钟
-
+
+
+ 服务时长
+
+ 分钟
+
-
-
+
-
-
- 图文详情
-
- {{
+
+
+ 图文详情
+
+ {{
formData.graphic_details ? "已设置" : "去设置"
}}
-
-
-
+
+
+
-
-
-
- 服务简介
-
+
+
+
+ 服务简介
+
-
- 服务功效
-
-
- {{(detailForm.effect || '').length}}/200
-
-
+
+ 服务功效
+
+
+ {{(detailForm.effect || '').length}}/200
+
+
-
- 适用人群
-
-
- {{(detailForm.crowd || '').length}}/200
-
-
+
+ 适用人群
+
+
+ {{(detailForm.crowd || '').length}}/200
+
+
-
- 产品清单
-
-
- {{(detailForm.product || '').length}}/200
-
-
+
+ 产品清单
+
+
+ {{(detailForm.product || '').length}}/200
+
+
-
- 适用范围
-
-
- {{(detailForm.scope || '').length}}/200
-
-
+
+ 适用范围
+
+
+ {{(detailForm.scope || '').length}}/200
+
+
-
- 温馨提示
-
-
- {{(detailForm.tips || '').length}}/200
-
-
-
-
-
- 服务流程
- 添加
-
-
- 第{{ i + 1 }}步
-
-
-
-
+
+ 温馨提示
+
+
+ {{(detailForm.tips || '').length}}/200
+
+
+
+
+
+ 服务流程
+ 添加
+
+
+ 第{{ i + 1 }}步
+
+
+
+
-
-
+
-
-
-
-
- 上传短视频
- (仅可上传1个视频)
-
-
+
+
+ 上传短视频
+ (仅可上传1个视频)
+
+
-
-
-
+
+
+
-
-
-
- 服务图片
- (仅可上传9个图片)
-
-
+
+
+ 服务图片
+ (仅可上传9个图片)
+
+
-
-
-
-
+
+
+
+
-
-
-
-
-
+
+
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
- 美融融plus 对储存空间/照片权限申请说明
- 便于您使用该功能上传您的照片/图片/视频以及用于更换头像、发布商品等场景中读取相册和文件内容。
-
-
- 美融融plus 对相机拍摄权限申请说明
- 便于您使用该功能上传您的照片/图片/视频以及用于更换头像、发布商品等场景中所需内容。
-
+
+
+ 美融融plus 对储存空间/照片权限申请说明
+ 便于您使用该功能上传您的照片/图片/视频以及用于更换头像、发布商品等场景中读取相册和文件内容。
+
+
+ 美融融plus 对相机拍摄权限申请说明
+ 便于您使用该功能上传您的照片/图片/视频以及用于更换头像、发布商品等场景中所需内容。
+
-
-
-
-
+
+
+
+
-
+
+ .popup-btn-know {
+ background-color: #e8101e;
+ color: #ffffff;
+ }
+
+ .popup-btn-notshow {
+ background-color: #ffffff;
+ color: #e8101e;
+ border: 1rpx #e8101e solid;
+ }
+
\ No newline at end of file
diff --git a/pages/shop/components/orderCard.vue b/pages/shop/components/orderCard.vue
index e96c5d2..d5e5695 100644
--- a/pages/shop/components/orderCard.vue
+++ b/pages/shop/components/orderCard.vue
@@ -35,6 +35,7 @@
{{`团购价: `}}¥{{ dataItem.order_money }}
+ {{ dataItem.line_money }}
@@ -285,6 +286,14 @@
line-height: 34rpx;
text-align: left;
font-style: normal;
+ .service-price-line {
+ font-weight: 400;
+ font-size: 24rpx;
+ color: #999999;
+ line-height: 34rpx;
+ margin-left: 10rpx;
+ text-decoration: line-through;
+ }
}
.service-type {
diff --git a/pages/shop/components/orderCard2.vue b/pages/shop/components/orderCard2.vue
index 2a9eb79..57602ea 100644
--- a/pages/shop/components/orderCard2.vue
+++ b/pages/shop/components/orderCard2.vue
@@ -39,6 +39,7 @@
{{`团购价: `}}¥{{ dataItem.order_money }}
+ {{ dataItem.line_money }}
@@ -258,6 +259,14 @@
line-height: 34rpx;
text-align: left;
font-style: normal;
+ .service-price-line {
+ font-weight: 400;
+ font-size: 24rpx;
+ color: #999999;
+ line-height: 34rpx;
+ margin-left: 10rpx;
+ text-decoration: line-through;
+ }
}
.service-type {
diff --git a/pages/shop/photoAlbum/addPhoto.vue b/pages/shop/photoAlbum/addPhoto.vue
index ada8177..a5df658 100644
--- a/pages/shop/photoAlbum/addPhoto.vue
+++ b/pages/shop/photoAlbum/addPhoto.vue
@@ -105,7 +105,9 @@
便于您使用该功能上传您的照片/图片/视频以及用于更换头像、发布商品等场景中所需内容。
-
+
+
@@ -120,6 +122,7 @@
},
data() {
return {
+ videoContext:null,
videoPlay: false,
videoUrl: "",
disabled: false,
@@ -201,10 +204,13 @@
},
methods: {
screenChange(e) {
+
let fullScreen = e.detail.fullScreen; // 值true为进入全屏,false为退出全屏
console.log(e, "全屏");
if (!fullScreen) {
//退出全屏
+ this.videoContext.pause()
+ plus.screen.lockOrientation('portrait-primary');
this.videoPlay = false; // 隐藏播放盒子
}
},
@@ -220,8 +226,8 @@
direction: 90
});
this.videoContext.play();
-
-
+
+
},
async submitPhoto() {
// 1. 防连点核心逻辑:如果正在提交中,直接return阻止后续执行
@@ -366,7 +372,8 @@
if (this.formData.type == 1) {
res = await uploadImage.handleUpload(this.userInfo.id, 3);
} else {
- res = await uploadImage.handleUpload(this.userInfo.id, 3, ['album', 'camera'], 'video');
+ res = await uploadImage.handleUpload(this.userInfo.id, 3, ['album', 'camera'],
+ 'video');
}
console.log('上传单张图片', res)
this.formData.url = res;
@@ -420,7 +427,8 @@
// 1. 检查权限
// const { granted } = await permissionUtils.checkPermission('photo_library', '需要相册权限用于上传照片');
this.nowQer = 'xc';
- const xc = await permissionUtils.checkPermission('photo_library', '需要相册权限用于上传照片');
+ const xc = await permissionUtils.checkPermission('photo_library',
+ '需要相册权限用于上传照片');
this.nowQer = 'xj';
const xj = await permissionUtils.checkPermission('camera', '需要相机权限用于拍摄照片');
this.isShowPer = false;
@@ -439,8 +447,10 @@
if (!confirm) return;
// 3. 请求权限
- const result1 = await permissionUtils.requestPermission('photo_library', '我们需要访问您的相册以上传图片/视频');
- const result2 = await permissionUtils.requestPermission('camera', '我们需要访问您的相机以上传图片/视频');
+ const result1 = await permissionUtils.requestPermission('photo_library',
+ '我们需要访问您的相册以上传图片/视频');
+ const result2 = await permissionUtils.requestPermission('camera',
+ '我们需要访问您的相机以上传图片/视频');
if (result1 && result2) {
this.openCamera();
} else {
diff --git a/pages/shop/photoAlbum/photoManage.vue b/pages/shop/photoAlbum/photoManage.vue
index 0ab3754..a4c4be1 100644
--- a/pages/shop/photoAlbum/photoManage.vue
+++ b/pages/shop/photoAlbum/photoManage.vue
@@ -35,6 +35,10 @@
审核中…
+
+
+ 已驳回
+
@@ -57,11 +61,11 @@
-
+
审核中…
-
+
已驳回
@@ -115,7 +119,7 @@
await this.getList()
},
async onLoad(options) {
- if(options.type){
+ if (options.type) {
this.type = options.type
}
},
@@ -151,7 +155,25 @@
// });
},
goAdd(id, item) {
- console.log(11111, id)
+ if (this.type == 1) {
+ if ( this.imgVideoList[id] && this.imgVideoList[id].length >= 20) {
+ uni.showToast({
+ title: '最多上传20张图片',
+ icon: 'none',
+ duration: 2000
+ });
+ return
+ }
+ } else if (this.type == 2) {
+ if ( this.imgVideoList[id] && this.imgVideoList[id].length >= 10) {
+ uni.showToast({
+ title: '最多上传10张视频',
+ icon: 'none',
+ duration: 2000
+ });
+ return
+ }
+ }
// 1. 原有逻辑:分类id为空,拦截提示
if (!id) {
uni.showToast({
@@ -186,14 +208,19 @@
});
},
async getList() {
- await request.post("/sj/imgVideo/list", {
- type: this.type
- }).then(res => {
- if (res.code == 200) {
- this.imgVideoList = res.data.list[this.type]
- }
-
- })
+ try {
+ const res = await request.post("/sj/imgVideo/list", {
+ type: this.type
+ });
+ // 核心修复:保留imgVideoList对象结构,可选链避免属性不存在,默认值确保始终为对象
+ this.imgVideoList = res.data?.list?.[this.type] || {};
+ // 若接口返回格式为res.data.list[this.type]是对应类型的id数据,需调整为:
+ // this.imgVideoList = res.data?.list?.[this.type] || {};
+ } catch (err) {
+ // 网络错误等异常处理,确保imgVideoList始终为对象
+ console.error("获取图片/视频列表失败:", err);
+ this.imgVideoList = {};
+ }
}
}
}
diff --git a/pages/shop/photoAlbum/videoList.vue b/pages/shop/photoAlbum/videoList.vue
index 0435b28..ed4a153 100644
--- a/pages/shop/photoAlbum/videoList.vue
+++ b/pages/shop/photoAlbum/videoList.vue
@@ -12,7 +12,7 @@
-
+
{{ imgVideoList.length }}/20张
-
+
删除
@@ -121,18 +121,15 @@
async handleDelete() {
// 收集选中项的ID
let deleteIds = this.selectedItems.map(index => this.imgVideoList[index].id);
- let auth_ids = this.selectedItems.map(index => this.imgVideoList[index].auth_id).filter(item => item !== 0);
- console.log(1111,deleteIds,auth_ids,[1,6])
+ let auth_ids = this.selectedItems.map(index => this.imgVideoList[index].auth_id).filter(item =>
+ item !== 0);
+ console.log(1111, deleteIds, auth_ids, [1, 6])
try {
const res = await request.post("/sj/imgVideo/del", {
ids: deleteIds,
- auth_ids:auth_ids
+ auth_ids: auth_ids
});
if (res.code == 200) {
- uni.showToast({
- title: '删除成功',
- icon: 'success'
- });
// 重新获取列表
await this.getList();
// 退出管理模式
@@ -153,8 +150,8 @@
},
goAdd(id, item) {
if (this.isManage) return; // 管理模式下禁止跳转
- if(this.type==1){
- if(this.imgVideoList.length>=20){
+ if (this.type == 1) {
+ if (this.imgVideoList.length >= 20) {
uni.showToast({
title: '最多上传20张图片',
icon: 'none',
@@ -162,8 +159,8 @@
});
return
}
- }else if(this.type==2){
- if(this.imgVideoList.length>=10){
+ } else if (this.type == 2) {
+ if (this.imgVideoList.length >= 10) {
uni.showToast({
title: '最多上传10张视频',
icon: 'none',
@@ -206,14 +203,20 @@
return obj
},
async getList() {
- await request.post("/sj/imgVideo/list", {
- type: this.type,
- class_type: this.class_type
- }).then(res => {
- if (res.code == 200) {
- this.imgVideoList = res.data.list[this.type][this.class_type]
- }
- })
+ try {
+ const res = await request.post("/sj/imgVideo/list", {
+ type: this.type,
+ class_type: this.class_type
+ });
+ // 核心修复:逐层可选链保护 + 兜底空数组,彻底避免属性访问错误
+ this.imgVideoList = res.code === 200 ?
+ res.data?.list?.[this.type]?.[this.class_type] || [] :
+ [];
+ } catch (err) {
+ // 网络错误、接口报错等所有异常的兜底处理
+ console.error("获取媒体列表失败:", err);
+ this.imgVideoList = [];
+ }
}
}
}
@@ -230,16 +233,16 @@
font-style: normal;
white-space: nowrap;
}
-
+
.review {
background: rgba(255, 250, 218, 1);
border-radius: 20rpx 20rpx 0rpx 0rpx;
margin: 20rpx;
padding: 20rpx 20rpx 20rpx 20rpx;
-
+
.review-title {
margin-bottom: 6rpx;
-
+
.review-title-text {
font-weight: 400;
font-size: 24rpx;
@@ -249,7 +252,7 @@
font-style: normal;
}
}
-
+
}
.container-card {
@@ -292,8 +295,8 @@
.card-content {
gap: 14rpx;
flex-wrap: wrap;
-
- .card-content-page{
+
+ .card-content-page {
font-weight: 400;
font-size: 24rpx;
color: #999999;