Compare commits

...

10 Commits

Author SHA1 Message Date
gongfuxiang e0a4922840 订单售后在线客服无效修复 2026-03-23 18:28:24 +08:00
gongfuxiang f18c86d3a5 v6.8.0 短视频app适配修复 2026-03-19 15:59:50 +08:00
gongfuxiang 2de4706c85 主题配色,购物车多余符号去除 2026-03-19 15:53:26 +08:00
于肖磊 37c7beca17 修改上传触发参数 2026-03-19 15:32:40 +08:00
于肖磊 41f412ddd4 删除打印的内容 2026-03-19 15:07:21 +08:00
于肖磊 f2726e5183 修改loading组件显示 2026-03-19 15:06:46 +08:00
于肖磊 f7e25449b2 修改组件引入 2026-03-19 15:05:16 +08:00
于肖磊 1196ac3e68 修改页面显示 2026-03-19 15:02:24 +08:00
于肖磊 f254070882 关闭键盘显示 2026-03-19 14:37:33 +08:00
于肖磊 4a08899e27 修改图片显示处理 2026-03-19 12:03:15 +08:00
11 changed files with 118 additions and 64 deletions

View File

@ -7,10 +7,10 @@
data: {
//
//
request_url:'https://new.shopxo.vip/',
request_url:'https://d1.shopxo.vip/',
// publicpublichttps://d1.shopxo.vip/public/
static_url:'https://new.shopxo.vip/',
static_url:'https://d1.shopxo.vip/',
// default
system_type: 'default',

View File

@ -89,7 +89,7 @@
}
.theme-red .bg-main.disabled .text {
color: #eaeaea !important;
color: #fff5f7 !important;
}
/**

View File

@ -162,18 +162,18 @@
<view class="flex-row jc-s flex-nowrap align-c">
<view>{{ $t('buy.buy.wx78ju') }}</view>
<view class="sales-price single-text fw-b">
<text class="text-size-sm">{{ buy_currency_symbol }}</text>
<text class="text-size-sm">{{ currency_symbol }}</text>
<text class="text-size-lg">{{ total_price }}</text>
</view>
</view>
<block v-if="is_cart_show_discount == 1 && total_num > 0">
<view v-if="data_list.length > 0" class="flex-row jc-s flex-nowrap align-c text-size-xss">
<block v-if="preferential_price > 0">
<view class="cr-base">{{ $t('cart.cart.3kr74b') }}{{ buy_currency_symbol }}{{ preferential_price }}</view>
<view class="cr-base">{{ $t('cart.cart.3kr74b') }}{{ currency_symbol }}{{ preferential_price }}</view>
</block>
<block v-else>
<block v-if="increase_price > 0">
<view class="cr-base">{{ $t('cart.cart.n76213') }}{{ buy_currency_symbol }}{{ increase_price }}</view>
<view class="cr-base">{{ $t('cart.cart.n76213') }}{{ currency_symbol }}{{ increase_price }}</view>
</block>
</block>
<view v-if="preferential_price > 0 || increase_price > 0" class="discount-details" @tap="discount_detail_open_event">{{ $t('cart.cart.4tbj4s') }}</view>
@ -238,19 +238,19 @@
<view v-if="total_num > 0" class="padding bg-white border-radius-main margin-top">
<view class="flex-row jc-sb align-c text-size fw-b margin-bottom">
<view>{{ $t('cart.cart.t41i4x') }}</view>
<view> {{ buy_currency_symbol }}{{ all_total_price }} </view>
<view> {{ currency_symbol }}{{ all_total_price }} </view>
</view>
<block v-if="preferential_price > 0">
<view class="flex-row jc-sb align-c text-size-md margin-bottom">
<view class="fw-b">{{ $t('cart.cart.9s0l57') }}</view>
<view class="cr-red"> {{ buy_currency_symbol }}{{ preferential_price }}</view>
<view class="cr-red"> {{ currency_symbol }}{{ preferential_price }}</view>
</view>
</block>
<block v-else>
<block v-if="increase_price > 0">
<view class="flex-row jc-sb align-c text-size-md margin-bottom">
<view class="fw-b">{{ $t('cart.cart.qh35gz') }}</view>
<view class="cr-red"> {{ buy_currency_symbol }}{{ increase_price }}</view>
<view class="cr-red"> {{ currency_symbol }}{{ increase_price }}</view>
</view>
</block>
</block>
@ -374,7 +374,6 @@
all_total_price: 0,
goods_count: 0,
discount_detail_list: [],
buy_currency_symbol: app.globalData.currency_symbol(),
is_selected_all: false,
already_selected_status: false,
already_valid_selected_status: false,

View File

@ -70,6 +70,11 @@
type: String,
default: 'common',
},
// chooseFocus
propFailChooseFocus: {
type: Boolean,
default: false,
},
//
propCallData: {
type: [Number, String, Array, Object],
@ -178,16 +183,24 @@
var fail = 0;
var length = res.tempFilePaths.length;
var count = 0;
self.upload_one_by_one(res.tempFilePaths, success, fail, count, length);
},
complete(res) {
//#ifndef APP-NVUE
self.$emit('chooseFocus');
//#endif
//#ifdef APP-NVUE
uni.$emit('chooseFocus');
//#endif
self.upload_one_by_one(res.tempFilePaths, success, fail, count, length);
},
fail(res) {
if (self.propFailChooseFocus) {
//#ifndef APP-NVUE
self.$emit('chooseFocus');
//#endif
//#ifdef APP-NVUE
uni.$emit('chooseFocus');
//#endif
}
}
});
},

View File

@ -1,5 +1,5 @@
<template>
<view class="flex-row align-s wh-auto ht-auto">
<view class="flex-row align-s">
<image class="comment-avatar" :src="propComment.user.avatar" mode="aspectFill"></image>
<view class="comment-info flex-col jc-c" style="margin-left: 20rpx;" @tap="comment_reply">
<view class="flex-row jc-sb">
@ -304,5 +304,6 @@
.comment-images {
width: 80rpx;
height: 80rpx;
border-radius: 8rpx;
}
</style>

View File

@ -1,5 +1,5 @@
<template>
<view class="wh-auto ht-auto flex-row align-c jc-c">
<view class="flex-row align-c jc-c">
<view class="more-history-btn cp flex-row align-c">
<view class="more-history-btn-icon margin-right-xs">
<u-icon propName="reset" propSize="28rpx" propColor="#999"></u-icon>

View File

@ -245,6 +245,12 @@
font-size: 28rpx;
}
.product-image {
width: 100rpx;
height: 100rpx;
border-radius: 8rpx;
}
.comment-send-button {
color: #fff;
font-size: 26rpx;
@ -270,6 +276,12 @@
.ml-10 {
margin-left: 20rpx;
}
.mt-10 {
margin-top: 20rpx;
}
.mb-10 {
margin-bottom: 20rpx;
}
.pr-10 {
padding-right: 20rpx;
}
@ -283,6 +295,7 @@
.comment-input-img {
width: 100rpx;
height: 100rpx;
border-radius: 8rpx;
}
.form-img-icon {
position: absolute;

View File

@ -101,6 +101,7 @@
.product-card .product-image {
width: 100rpx;
height: 100rpx;
border-radius: 8rpx;
}
.product-card .product-name {
font-weight: 500;
@ -314,6 +315,7 @@
.comment-input-img {
width: 50rpx;
height: 50rpx;
border-radius: 8rpx;
}
/* 新的举报弹窗样式 */

View File

@ -40,8 +40,8 @@
<view v-if="!isEmpty(video_item.goods) && base_config_data && base_config_data.is_video_detail_show_goods && base_config_data.is_video_detail_show_goods == 1" class="product-card">
<view class="flex-col">
<view v-if="video_item.show_goods" class="flex-row align-c product-card-item mb-10" :data-id="video_item.id" @tap.stop="handle_product_card_item">
<view style="width: 100rpx;height:100rpx;">
<image :src="video_item.goods.images" mode="aspectFill" style="width: 100rpx;height:100rpx;"></image>
<view class="product-image">
<image :src="video_item.goods.images" mode="aspectFill" class="product-image"></image>
</view>
<view class="flex-1 flex-col align-sb jc-c ml-10">
<text class="product-name text-line-1 mb-10">{{ video_item.goods.title }}</text>
@ -54,7 +54,7 @@
<view class="product-button" :data-id="video_item.id" @tap.stop="handle_product_button">
<view class="product-button-left flex-row align-c">
<u-icon propName="cart-have" propSize="30rpx" propColor="#F5C366"></u-icon>
<text class="size-14 cr-f ml-10">{{$t('common.buy')}} {{$t('common.goods')}}</text>
<text class="size-14 cr-f ml-10">{{$t('common.buy')}}{{$t('common.goods')}}</text>
</view>
<u-icon propName="angle-right" propSize="30rpx" propColor="#fff"></u-icon>
</view>
@ -106,8 +106,8 @@
<commentInfoComponent :style="window_more_style" :propComment="comment_item" :propId="comment_item.id" :propDropDownVisible="active_dropdown_id == comment_item.id" @comment_reply="comment_reply" @comment_like="comment_like" @toggle_dropdown="handle_toggle_dropdown" @dropdown_item_click="handle_dropdown_item_click"></commentInfoComponent>
<!-- 子评论 -->
<view class="sub-comment flex-col jc-c mt-10">
<view v-if="comment_item.sub_comments && Array.isArray(comment_item.sub_comments) && comment_item.sub_comments.length > 0 && comment_item.show_sub_comment" style="margin-buttom: 20rpx;" class="sub-comment-list flex-col jc-c">
<view v-for="(sub_comment_item, sub_comment_index) in comment_item.sub_comments" :key="sub_comment_index" class="sub-comment-item flex-row align-s" style="margin-bottom: 20rpx;">
<view v-if="comment_item.sub_comments && Array.isArray(comment_item.sub_comments) && comment_item.sub_comments.length > 0 && comment_item.show_sub_comment" class="sub-comment-list flex-col jc-c mb-10">
<view v-for="(sub_comment_item, sub_comment_index) in comment_item.sub_comments" :key="sub_comment_index" class="sub-comment-item flex-row align-s mb-10">
<commentInfoComponent :style="window_sub_more_style" :propComment="sub_comment_item" :propId="sub_comment_item.id" :propDropDownVisible="active_dropdown_id == sub_comment_item.id" @comment_reply="comment_reply" @comment_like="comment_like" @toggle_dropdown="handle_toggle_dropdown" @dropdown_item_click="handle_dropdown_item_click"></commentInfoComponent>
</view>
</view>
@ -117,11 +117,11 @@
</template>
<template v-else>
<template v-if="comment_item.show_sub_comment_loading">
<loading-component :style="window_more_style"></loading-component>
<component-loading :style="window_more_style"></component-loading>
</template>
<view v-else class="sub-comment-more flex-row align-c gap-10">
<view v-else class="sub-comment-more flex-row align-c">
<template v-if="comment_item.page != null && comment_item.page < comment_item.page_total">
<commentMoreComponent :style="window_more_style" :propId="comment_item.id" :propIsLevel="2" :propText="$t('common.expand')" @comment_more_event="open_sub_comment"></commentMoreComponent>
<commentMoreComponent :style="window_more_style" class="mr-10" :propId="comment_item.id" :propIsLevel="2" :propText="$t('common.expand')" @comment_more_event="open_sub_comment"></commentMoreComponent>
</template>
<commentMoreComponent :style="window_more_style" :propId="comment_item.id" :propText="$t('common.retract')" propIconName="arrow-top" @comment_more_event="close_sub_comment"></commentMoreComponent>
</view>
@ -252,7 +252,7 @@
</view>
<view class="flex-row align-c jc-sb pt-10">
<component-upload :propMaxNum="propMaxNum" :propPathType="editor_path_type" propSlot propSingleCall propIsAllInfo propChooseFocus @call-back="upload_images_event" @chooseFocus="upload_event">
<component-upload :propMaxNum="propMaxNum" :propPathType="editor_path_type" propSlot propSingleCall propIsAllInfo propChooseFocus propFailChooseFocus @call-back="upload_images_event" @chooseFocus="upload_event">
<u-icon propName="layout-module-single-images" propSize="40rpx" propColor="#999"></u-icon>
</component-upload>
@ -270,9 +270,9 @@
const app = getApp();
import { get_math, isEmpty, video_get_top_left_padding, showToast } from '@/common/js/common/common.js';
import commentInfoComponent from '@/pages/plugins/video/components/comment-info.vue';
import ComponentLoading from '@/pages/plugins/video/components/loading.vue';
import componentLoading from '@/pages/plugins/video/components/loading.vue';
import commentMoreComponent from '@/pages/plugins/video/components/comment-more.vue';
import ComponentSearch from '@/pages/plugins/video/components/search.vue';
import componentSearch from '@/pages/plugins/video/components/search.vue';
import componentNoData from '@/components/no-data/no-data';
import componentBottomLine from '@/components/bottom-line/bottom-line';
import componentUpload from '@/components/upload/upload';
@ -357,10 +357,10 @@
components: {
commentInfoComponent,
commentMoreComponent,
ComponentSearch,
componentSearch,
componentNoData,
componentBottomLine,
ComponentLoading,
componentLoading,
componentUpload
},
watch: {
@ -1126,8 +1126,9 @@
try {
this.active_dropdown_id = null;
let comment_text = this.comment_input_value;
if (!comment_text.trim()) return;
if (!comment_text.trim()) {
app.globalData.showToast('请填写评论内容');
};
// video_id 视频id video_comments_id 父级评论id id 当前评论id
let new_video_comments_id = 0;
let reply_comments_id = 0
@ -1150,6 +1151,11 @@
success: res => {
const data = res.data;
if (data.code == 0) {
// 关闭输入框
this.is_add_comment = false;
//关闭键盘
uni.hideKeyboard();
const new_data = data.data;
// 没有回复时的评论
if (new_video_comments_id == 0) {
@ -1160,13 +1166,6 @@
page: 0,
sub_comments: [],
})
this.video_data_list.forEach(item => {
if (item.id == this.current_video_id) {
item.comments_count++;
}
})
// this.video_data_list = this.video_data_list;
this.$set(this, 'video_data_list', this.video_data_list)
this.comment_scroll_top = 0 + Math.random(); // 添加主评论时滚动到最顶部
} else {
this.active_comments.forEach(item => {
@ -1183,6 +1182,15 @@
}
})
}
// 更新视频数据
const videoItem = this.video_data_list.find(item => item.id == this.current_video_id);
if (videoItem) {
videoItem.comments_list = this.active_comments;
if (new_video_comments_id == 0) {
videoItem.comments_count++;
}
}
this.$set(this, 'video_data_list', this.video_data_list);
// 清空输入框,更新数据内容
this.active_comments = this.active_comments;
this.form_images_list = [];
@ -1649,12 +1657,12 @@
// 保留当前评论
filteredComments.push(comment);
}
// 删除之后更新评论数据
this.video_data_list.forEach(item => {
if (item.id == this.current_video_id) {
item.comments_count = filteredComments.length;
}
})
// 更新视频数据
const videoItem = this.video_data_list.find(item => item.id == this.current_video_id);
if (videoItem) {
videoItem.comments_list = filteredComments;
videoItem.comments_count = filteredComments.length;
}
// 更新数据
this.active_comments = filteredComments;
// this.video_data_list = this.video_data_list;

View File

@ -64,7 +64,7 @@
<view class="product-button" :data-id="video_item.id" @tap.stop="handle_product_button">
<view class="product-button-left flex-row align-c gap-10">
<iconfont name="icon-cart-have" color="#F5C366" size="30rpx"></iconfont>
<text class="size-14 cr-f">{{$t('common.buy')}} {{$t('common.goods')}}</text>
<text class="size-14 cr-f">{{$t('common.buy')}}{{$t('common.goods')}}</text>
</view>
<iconfont name="icon-angle-right" color="#fff" size="30rpx"></iconfont>
</view>
@ -112,7 +112,7 @@
</template>
<template v-else>
<template v-if="comment_item.show_sub_comment_loading">
<loading-component></loading-component>
<component-loading></component-loading>
</template>
<view v-else class="sub-comment-more flex-row align-c gap-10">
<template v-if="comment_item.page != null && comment_item.page < comment_item.page_total">
@ -246,7 +246,7 @@
</view>
</view>
<view class="flex-row align-c jc-sb wh-auto">
<component-upload :propMaxNum="propMaxNum" :propPathType="editor_path_type" propSlot propSingleCall propIsAllInfo propChooseFocus @call-back="upload_images_event" @chooseFocus="upload_event">
<component-upload :propMaxNum="propMaxNum" :propPathType="editor_path_type" propSlot propSingleCall propIsAllInfo propChooseFocus propFailChooseFocus @call-back="upload_images_event" @chooseFocus="upload_event">
<iconfont name="icon-layout-module-single-images" size="40rpx" color="#999"></iconfont>
</component-upload>
@ -399,7 +399,6 @@
onShow() {
//
app.globalData.page_event_onshow_handle();
console.log(this.is_manual_pause);
//
if (!this.is_manual_pause && this.create_video_contexts[this.current_index]) {
this.video_play_event(this.create_video_contexts[this.current_index]);
@ -864,12 +863,20 @@
if (move_distance > 0) {
//
if (this.current_video_index <= 0) {
app.globalData.showToast('已经是第一个视频了');
setTimeout(() => {
if (!this.show_comment_modal) {
app.globalData.showToast('已经是第一个视频了');
}
}, 0);
}
} else {
//
if (this.current_video_index >= this.video_data_list.length - 1) {
app.globalData.showToast('已经是最后一个视频了');
setTimeout(() => {
if (!this.show_comment_modal) {
app.globalData.showToast('已经是最后一个视频了');
}
}, 0);
}
}
@ -1185,7 +1192,9 @@
//
send_comment() {
let comment_text = this.comment_input_value;
if (!comment_text.trim()) return;
if (!comment_text.trim()) {
app.globalData.showToast('请填写评论内容');
};
// video_id id video_comments_id id id id
let new_video_comments_id = 0;
@ -1209,6 +1218,11 @@
success: res => {
const data = res.data;
if (data.code == 0) {
//
this.is_add_comment = false;
//
uni.hideKeyboard();
const new_data = data.data;
//
if (new_video_comments_id == 0) {
@ -1219,14 +1233,9 @@
page: 0,
sub_comments: [],
})
this.video_data_list.forEach(item => {
if (item.id == this.current_video_id) {
item.comments_count++;
}
})
this.setData({
video_data_list: this.video_data_list,
comment_scroll_top: 0 + Math.random() //
comment_scroll_top: Date.now(), //
})
} else {
this.active_comments.forEach(item => {
@ -1243,9 +1252,18 @@
}
})
}
//
const videoItem = this.video_data_list.find(item => item.id == this.current_video_id);
if (videoItem) {
videoItem.comments_list = this.active_comments;
if (new_video_comments_id == 0) {
videoItem.comments_count++;
}
}
// ,
this.setData({
active_comments: this.active_comments,
video_data_list: this.video_data_list,
form_images_list: [],
comment_input_value: '',
comments_reply_data: {},
@ -1630,12 +1648,12 @@
//
filteredComments.push(comment);
}
//
this.video_data_list.forEach(item => {
if (item.id == this.current_video_id) {
item.comments_count = filteredComments.length;
}
})
//
const videoItem = this.video_data_list.find(item => item.id == this.current_video_id);
if (videoItem) {
videoItem.comments_list = filteredComments;
videoItem.comments_count = filteredComments.length;
}
//
this.setData({
active_comments: filteredComments,

View File

@ -1289,7 +1289,7 @@
//
chat_event() {
app.globalData.chat_entry_handle(this.plugins_intellectstools_data.chat.chat_url);
app.globalData.chat_entry_handle(this.plugins_intellectstools_data_chat.data.chat.chat_url);
},
//