feat: 新增多语言文案、优化导航及工具函数,修复部分业务逻辑
1. 新增多语言资源文件,覆盖文章、预约日期、会员信息、优惠券、表单、购物车、积分商城、分销、AI聊天等多个模块 2. 优化底部导航组件,使用多语言配置替代硬编码文案 3. 重构工具函数,新增从后端数据提取多语言文案的工具方法 4. 修复邀请好友页面的保存提示文案,替换为多语言版本 5. 修复商品SKU组件的提示文案,使用多语言配置 6. 重构AI聊天页面的帮助文档和回复模板,使用多语言配置 7. 优化空状态组件,支持多语言默认文案 8. 修复跳转逻辑,补全参数传递 9. 新增本地开发环境配置
This commit is contained in:
@@ -138,12 +138,12 @@ export class CustomerService {
|
||||
// #ifdef H5
|
||||
window.location.href = aiChatUrl;
|
||||
// #endif
|
||||
uni.showToast({ title: '打开客服失败', icon: 'none' });
|
||||
uni.showToast({ title: this.vm.$lang('customerService.openFailed'), icon: 'none' });
|
||||
}
|
||||
});
|
||||
} catch (e) {
|
||||
console.error('跳转 AI智能客服异常:', e);
|
||||
uni.showToast({ title: '打开客服失败', icon: 'none' });
|
||||
uni.showToast({ title: this.vm.$lang('customerService.openFailed'), icon: 'none' });
|
||||
}
|
||||
}
|
||||
|
||||
@@ -223,7 +223,7 @@ export class CustomerService {
|
||||
// 检查是否有企业微信配置
|
||||
if (!config.wxwork_url && !config.corpid) {
|
||||
console.error('企业微信配置不完整,缺少 wxwork_url 或 corpid');
|
||||
uni.showToast({ title: '企业微信配置不完整', icon: 'none' });
|
||||
uni.showToast({ title: this.vm.$lang('customerService.wxworkConfigIncomplete'), icon: 'none' });
|
||||
this.fallbackToPhoneCall();
|
||||
return;
|
||||
}
|
||||
@@ -267,12 +267,12 @@ export class CustomerService {
|
||||
},
|
||||
fail: (err) => {
|
||||
console.error('【跳转第三方小程序失败】', err);
|
||||
uni.showToast({ title: '跳转失败,请稍后重试', icon: 'none' });
|
||||
uni.showToast({ title: this.vm.$lang('customerService.jumpFailed'), icon: 'none' });
|
||||
}
|
||||
});
|
||||
// #endif
|
||||
// #ifdef H5
|
||||
uni.showToast({ title: '第三方小程序客服仅在微信小程序中可用', icon: 'none' });
|
||||
uni.showToast({ title: this.vm.$lang('customerService.miniProgramOnly'), icon: 'none' });
|
||||
// #endif
|
||||
return;
|
||||
}
|
||||
@@ -286,7 +286,7 @@ export class CustomerService {
|
||||
uni.setClipboardData({
|
||||
data: config.third_url,
|
||||
success: () => {
|
||||
uni.showToast({ title: '链接已复制,请在浏览器打开', icon: 'none' });
|
||||
uni.showToast({ title: this.vm.$lang('customerService.linkCopied'), icon: 'none' });
|
||||
}
|
||||
});
|
||||
// #endif
|
||||
@@ -352,7 +352,7 @@ export class CustomerService {
|
||||
// #endif
|
||||
// #ifdef MP
|
||||
uni.setClipboardData({ data: serviceUrl });
|
||||
uni.showToast({ title: '客服链接已复制', icon: 'none' });
|
||||
uni.showToast({ title: this.vm.$lang('customerService.customerLinkCopied'), icon: 'none' });
|
||||
// #endif
|
||||
return;
|
||||
}
|
||||
@@ -380,11 +380,11 @@ export class CustomerService {
|
||||
if (res.code === 0 && res.data?.mobile) {
|
||||
uni.makePhoneCall({ phoneNumber: res.data.mobile });
|
||||
} else {
|
||||
uni.showToast({ title: '暂无客服电话', icon: 'none' });
|
||||
uni.showToast({ title: this.vm.$lang('customerService.noServicePhone'), icon: 'none' });
|
||||
}
|
||||
},
|
||||
fail: () => {
|
||||
uni.showToast({ title: '获取客服电话失败', icon: 'none' });
|
||||
uni.showToast({ title: this.vm.$lang('customerService.getPhoneFailed'), icon: 'none' });
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -392,23 +392,23 @@ export class CustomerService {
|
||||
showNoServicePopup() {
|
||||
const siteInfo = this.vm.$store.state.siteInfo || {};
|
||||
const message = siteInfo?.site_tel
|
||||
? `请联系客服,客服电话是 ${siteInfo.site_tel}`
|
||||
: '抱歉,商家暂无客服,请线下联系';
|
||||
uni.showModal({ title: '联系客服', content: message, showCancel: false });
|
||||
? this.vm.$lang('customerService.callServiceTip', { phone: siteInfo.site_tel })
|
||||
: this.vm.$lang('customerService.noServiceOffline');
|
||||
uni.showModal({ title: this.vm.$lang('customerService.contactCustomerService'), content: message, showCancel: false });
|
||||
}
|
||||
|
||||
showConfigErrorPopup(errors) {
|
||||
uni.showModal({
|
||||
title: '客服配置错误',
|
||||
content: `配置有误:\n${errors.join('\n')}`,
|
||||
title: this.vm.$lang('customerService.configError'),
|
||||
content: this.vm.$lang('customerService.configErrorDetail', { errors: errors.join('\n') }),
|
||||
showCancel: false
|
||||
});
|
||||
}
|
||||
|
||||
fallbackToOriginalService() {
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '无法直接添加企业微信,是否使用其他方式联系客服?',
|
||||
title: this.vm.$lang('customerService.tip'),
|
||||
content: this.vm.$lang('customerService.cannotAddWxwork'),
|
||||
success: (res) => {
|
||||
if (res.confirm) {
|
||||
this.openWxworkService(true);
|
||||
@@ -419,8 +419,8 @@ export class CustomerService {
|
||||
|
||||
fallbackToPhoneCall() {
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '在线客服不可用,是否拨打电话联系客服?',
|
||||
title: this.vm.$lang('customerService.tip'),
|
||||
content: this.vm.$lang('customerService.onlineUnavailable'),
|
||||
success: (res) => {
|
||||
if (res.confirm) this.makePhoneCall();
|
||||
}
|
||||
@@ -567,12 +567,12 @@ export class CustomerService {
|
||||
// #ifdef H5
|
||||
window.location.href = aiChatUrl;
|
||||
// #endif
|
||||
uni.showToast({ title: '打开客服失败', icon: 'none' });
|
||||
uni.showToast({ title: this.vm.$lang('customerService.openFailed'), icon: 'none' });
|
||||
}
|
||||
});
|
||||
} catch (e) {
|
||||
console.error('跳转 AI智能客服异常:', e);
|
||||
uni.showToast({ title: '打开客服失败', icon: 'none' });
|
||||
uni.showToast({ title: this.vm.$lang('customerService.openFailed'), icon: 'none' });
|
||||
}
|
||||
}
|
||||
|
||||
@@ -580,7 +580,7 @@ export class CustomerService {
|
||||
* 打开客服选择对话框(预留方法)
|
||||
*/
|
||||
openCustomerSelectPopupDialog() {
|
||||
uni.showToast({ title: '客服选择功能开发中', icon: 'none' });
|
||||
uni.showToast({ title: this.vm.$lang('customerService.developing'), icon: 'none' });
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -610,7 +610,7 @@ export class CustomerService {
|
||||
if (qyweixinUrl) {
|
||||
window.location.href = qyweixinUrl;
|
||||
} else {
|
||||
uni.showToast({ title: '企业微信客服未配置', icon: 'none' });
|
||||
uni.showToast({ title: this.vm.$lang('customerService.wxworkNotConfigured'), icon: 'none' });
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@@ -629,7 +629,7 @@ export class CustomerService {
|
||||
|
||||
if (!validation.isValid) {
|
||||
console.error('客服配置无效:', validation.errors);
|
||||
uni.showToast({ title: '客服暂不可用', icon: 'none' });
|
||||
uni.showToast({ title: this.vm.$lang('customerService.serviceUnavailable'), icon: 'none' });
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -646,14 +646,14 @@ export class CustomerService {
|
||||
// #ifdef MP-WEIXIN
|
||||
if (!wxworkConfig?.enable || !wxworkConfig?.contact_url) {
|
||||
console.warn('企业微信配置不完整,使用原生客服');
|
||||
uni.showToast({ title: '企业微信配置不完整', icon: 'none' });
|
||||
uni.showToast({ title: this.vm.$lang('customerService.wxworkConfigIncomplete'), icon: 'none' });
|
||||
}
|
||||
// #endif
|
||||
|
||||
// #ifdef H5
|
||||
if (!wxworkConfig?.contact_url && !platformConfig.wxwork_url) {
|
||||
console.error('企业微信链接未配置');
|
||||
uni.showToast({ title: '企业微信链接未配置', icon: 'none' });
|
||||
uni.showToast({ title: this.vm.$lang('customerService.wxworkLinkNotConfigured'), icon: 'none' });
|
||||
return;
|
||||
}
|
||||
// #endif
|
||||
@@ -662,12 +662,12 @@ export class CustomerService {
|
||||
// 直接调用统一处理方法,由 CustomerService 内部根据配置路由
|
||||
try {
|
||||
this.handleCustomerClick({
|
||||
sendMessageTitle: options.sendMessageTitle || '来自悬浮按钮的咨询',
|
||||
sendMessageTitle: options.sendMessageTitle || this.vm.$lang('customerService.fromFloatButton'),
|
||||
sendMessagePath: options.sendMessagePath || '/pages/index/index'
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('客服处理失败:', error);
|
||||
uni.showToast({ title: '打开客服失败', icon: 'none' });
|
||||
uni.showToast({ title: this.vm.$lang('customerService.openFailed'), icon: 'none' });
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user