添加客服功能
This commit is contained in:
@@ -10,6 +10,13 @@ export interface EnvConfig {
|
|||||||
timeout: number
|
timeout: number
|
||||||
enableLog: boolean
|
enableLog: boolean
|
||||||
enableMock: boolean
|
enableMock: boolean
|
||||||
|
// 客服配置
|
||||||
|
customerService: {
|
||||||
|
corpId: string
|
||||||
|
serviceUrl: string
|
||||||
|
phoneNumber?: string
|
||||||
|
email?: string
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 各环境配置
|
// 各环境配置
|
||||||
@@ -21,7 +28,14 @@ const envConfigs: Record<EnvType, EnvConfig> = {
|
|||||||
// apiBaseURL: 'http://localhost:9098',
|
// apiBaseURL: 'http://localhost:9098',
|
||||||
timeout: 15000,
|
timeout: 15000,
|
||||||
enableLog: true,
|
enableLog: true,
|
||||||
enableMock: true
|
enableMock: true,
|
||||||
|
// 客服配置
|
||||||
|
customerService: {
|
||||||
|
corpId: 'ww51fc969e8b76af82', // 企业ID
|
||||||
|
serviceUrl: 'https://work.weixin.qq.com/kfid/kfc64085b93243c5c91',
|
||||||
|
phoneNumber: '400-888-8888',
|
||||||
|
email: 'service@light120.com'
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
@@ -31,7 +45,14 @@ const envConfigs: Record<EnvType, EnvConfig> = {
|
|||||||
apiBaseURL: 'https://sit.light120.com',
|
apiBaseURL: 'https://sit.light120.com',
|
||||||
timeout: 10000,
|
timeout: 10000,
|
||||||
enableLog: false,
|
enableLog: false,
|
||||||
enableMock: false
|
enableMock: false,
|
||||||
|
// 客服配置
|
||||||
|
customerService: {
|
||||||
|
corpId: 'ww51fc969e8b76af82', // 企业ID
|
||||||
|
serviceUrl: 'https://work.weixin.qq.com/kfid/kfc64085b93243c5c91',
|
||||||
|
phoneNumber: '400-888-8888',
|
||||||
|
email: 'service@light120.com'
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -86,7 +107,7 @@ export const getEnvInfo = () => {
|
|||||||
config,
|
config,
|
||||||
taroEnv: Taro.getEnv(),
|
taroEnv: Taro.getEnv(),
|
||||||
platform: Taro.getEnv() === Taro.ENV_TYPE.WEAPP ? '微信小程序' :
|
platform: Taro.getEnv() === Taro.ENV_TYPE.WEAPP ? '微信小程序' :
|
||||||
Taro.getEnv() === Taro.ENV_TYPE.H5 ? 'H5' :
|
Taro.getEnv() === Taro.ENV_TYPE.WEB ? 'Web' :
|
||||||
Taro.getEnv() === Taro.ENV_TYPE.RN ? 'React Native' : '未知'
|
Taro.getEnv() === Taro.ENV_TYPE.RN ? 'React Native' : '未知'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import { API_CONFIG } from '@/config/api';
|
|||||||
import httpService, { ApiResponse } from './httpService';
|
import httpService, { ApiResponse } from './httpService';
|
||||||
import uploadFiles from './uploadFiles';
|
import uploadFiles from './uploadFiles';
|
||||||
import Taro from '@tarojs/taro';
|
import Taro from '@tarojs/taro';
|
||||||
|
import getCurrentConfig from '@/config/env';
|
||||||
|
|
||||||
|
|
||||||
// 用户详情接口
|
// 用户详情接口
|
||||||
@@ -603,3 +604,86 @@ export const get_user_info = (): any | null => {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// 客服中心处理函数
|
||||||
|
export const handleCustomerService = async (): Promise<void> => {
|
||||||
|
try {
|
||||||
|
// 获取当前环境的客服配置
|
||||||
|
const config = getCurrentConfig;
|
||||||
|
const { customerService } = config;
|
||||||
|
|
||||||
|
console.log('打开客服中心,配置信息:', customerService);
|
||||||
|
|
||||||
|
// 使用微信官方客服能力
|
||||||
|
await Taro.openCustomerServiceChat({
|
||||||
|
extInfo: {
|
||||||
|
url: customerService.serviceUrl
|
||||||
|
},
|
||||||
|
corpId: customerService.corpId,
|
||||||
|
success: (res) => {
|
||||||
|
console.log('打开客服成功:', res);
|
||||||
|
},
|
||||||
|
fail: (error) => {
|
||||||
|
console.error('打开客服失败:', error);
|
||||||
|
// 如果官方客服不可用,显示备用联系方式
|
||||||
|
showCustomerServiceFallback(customerService);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch (error) {
|
||||||
|
console.error('客服功能异常:', error);
|
||||||
|
// 备用方案:显示联系信息
|
||||||
|
showCustomerServiceFallback();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 客服备用方案
|
||||||
|
const showCustomerServiceFallback = (customerInfo?: any) => {
|
||||||
|
const options = ['拨打客服电话', '复制邮箱地址'];
|
||||||
|
|
||||||
|
// 如果没有客服信息,只显示通用提示
|
||||||
|
if (!customerInfo?.phoneNumber && !customerInfo?.email) {
|
||||||
|
Taro.showModal({
|
||||||
|
title: '联系客服',
|
||||||
|
content: '如需帮助,请通过其他方式联系我们',
|
||||||
|
showCancel: false
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Taro.showActionSheet({
|
||||||
|
itemList: options,
|
||||||
|
success: async (res) => {
|
||||||
|
if (res.tapIndex === 0 && customerInfo?.phoneNumber) {
|
||||||
|
// 拨打客服电话
|
||||||
|
try {
|
||||||
|
await Taro.makePhoneCall({
|
||||||
|
phoneNumber: customerInfo.phoneNumber
|
||||||
|
});
|
||||||
|
} catch (error) {
|
||||||
|
console.error('拨打电话失败:', error);
|
||||||
|
Taro.showToast({
|
||||||
|
title: '拨打电话失败',
|
||||||
|
icon: 'none'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
} else if (res.tapIndex === 1 && customerInfo?.email) {
|
||||||
|
// 复制邮箱地址
|
||||||
|
try {
|
||||||
|
await Taro.setClipboardData({
|
||||||
|
data: customerInfo.email
|
||||||
|
});
|
||||||
|
Taro.showToast({
|
||||||
|
title: '邮箱地址已复制',
|
||||||
|
icon: 'success'
|
||||||
|
});
|
||||||
|
} catch (error) {
|
||||||
|
console.error('复制邮箱失败:', error);
|
||||||
|
Taro.showToast({
|
||||||
|
title: '复制失败',
|
||||||
|
icon: 'none'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import { CommonPopup } from "@/components";
|
|||||||
import httpService from "@/services/httpService";
|
import httpService from "@/services/httpService";
|
||||||
import { withAuth } from "@/components";
|
import { withAuth } from "@/components";
|
||||||
import { PopupPicker } from "@/components/Picker/index";
|
import { PopupPicker } from "@/components/Picker/index";
|
||||||
|
import { handleCustomerService } from "@/services/userService";
|
||||||
|
|
||||||
// 交易记录类型
|
// 交易记录类型
|
||||||
interface Transaction {
|
interface Transaction {
|
||||||
@@ -484,13 +485,13 @@ const WalletPage: React.FC = () => {
|
|||||||
/>
|
/>
|
||||||
<Text className="function_text">下载账单</Text>
|
<Text className="function_text">下载账单</Text>
|
||||||
</View>
|
</View>
|
||||||
{/* TODO 客服中心 */}
|
{/* 客服中心 */}
|
||||||
<View className="function_item" onClick={() => Taro.navigateTo({ url: "/user_pages/validPhone/index" })}>
|
<View className="function_item" onClick={handleCustomerService}>
|
||||||
<Image
|
<Image
|
||||||
className="function_icon"
|
className="function_icon"
|
||||||
src={require("@/static/wallet/custom-service.svg")}
|
src={require("@/static/wallet/custom-service.svg")}
|
||||||
/>
|
/>
|
||||||
<Text className="function_text">客服中心</Text>
|
<Text className="function_text" >客服中心</Text>
|
||||||
</View>
|
</View>
|
||||||
</View>
|
</View>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user