Author | SHA1 | Message | Date |
---|---|---|---|
|
97457b0628 | 数字人 | 1 year ago |
|
7d69cdcde0 | 提交修改 | 1 year ago |
|
8c4735e523 | 发送文字的方法 | 1 year ago |
|
cd79137c02 | 修改数字人 | 1 year ago |
|
4f2fdfa851 | 解决冲突 | 1 year ago |
|
7c8a09e44a | 修改提交合并 | 1 year ago |
@@ -1,653 +1,15 @@ | |||
<script> | |||
import Vue from 'vue'; | |||
const domainObj = require('./utils/domain.js'); | |||
//app.js | |||
var config = require("./config"); | |||
export default { | |||
onLaunch(options) { | |||
this.setTabbarItems() // 设置tabbar | |||
// 获取用户信息 | |||
uni.getSystemInfo({ | |||
success: function(e) { | |||
console.log(e, 'phoneInfo') | |||
// #ifdef MP-WEIXIN | |||
Vue.prototype.StatusBar = e.statusBarHeight; | |||
let custom = wx.getMenuButtonBoundingClientRect(); | |||
Vue.prototype.Custom = custom; | |||
Vue.prototype.CustomBar = custom.bottom + custom.top - e.statusBarHeight; | |||
Vue.prototype.windowHeight = e.safeArea.height | |||
// #endif | |||
Vue.mixin({ | |||
data() { | |||
return { | |||
StatusBar: Vue.prototype.StatusBar, | |||
CustomBar: Vue.prototype.CustomBar, | |||
windowHeight: Vue.prototype.windowHeight, | |||
LOADING: false, | |||
bulidIngObj: uni.getStorageSync('buildingID'), | |||
}; | |||
}, | |||
onLoad() { | |||
this.setTabbarItems() | |||
}, | |||
methods: { | |||
// 设置底部导航栏 | |||
setTabbarItems() { | |||
const tabbarList = [{ | |||
iconPath: "/static/images/tabBar/jiedais.png", | |||
selectedIconPath: "/static/images/tabBar/jiedaiActives.png", | |||
text: "接待" | |||
}, | |||
{ | |||
iconPath: "/static/images/tabBar/kehus.png", | |||
selectedIconPath: "/static/images/tabBar/kehuActives.png", | |||
text: "客户" | |||
}, | |||
{ | |||
iconPath: "/static/images/tabBar/works.png", | |||
selectedIconPath: "/static/images/tabBar/workActives.png", | |||
text: "工作台" | |||
}, | |||
{ | |||
iconPath: "/static/images/tabBar/xuexis.png", | |||
selectedIconPath: "/static/images/tabBar/xuexiActives.png", | |||
text: "学习" | |||
}, | |||
{ | |||
iconPath: "/static/images/tabBar/mes.png", | |||
selectedIconPath: "/static/images/tabBar/meActives.png", | |||
text: "我的" | |||
} | |||
] | |||
if (domainObj.domain == 'zh.aihxz.com') { | |||
tabbarList.forEach((item, index) => { | |||
uni.setTabBarItem({ | |||
index: index, | |||
iconPath: item.iconPath, | |||
selectedIconPath: item.selectedIconPath | |||
}) | |||
}) | |||
} | |||
}, | |||
//实时统计 | |||
getTabBarBadge() { | |||
uni.request({ | |||
url: config.service.realTimeStatistics, | |||
method: "POST", | |||
header: { | |||
'content-type': 'application/json', | |||
'Authorization': 'Bearer ' + uni.getStorageSync( | |||
'weapp_session_login_data').token | |||
}, | |||
data: { | |||
houseId: uni.getStorageSync('buildingID').id | |||
}, | |||
success: (data) => { | |||
if (data.data.data == null) { | |||
uni.removeTabBarBadge({ | |||
index: 0, | |||
}) | |||
return | |||
} else { | |||
uni.removeTabBarBadge({ | |||
index: 0, | |||
}) | |||
if (data.data.data.receivingCustomer > 0) { | |||
uni.setTabBarBadge({ | |||
index: 0, | |||
text: `${data.data.data.receivingCustomer}` | |||
}) | |||
} | |||
} | |||
}, | |||
fail: () => { | |||
uni.removeTabBarBadge({ | |||
index: 0, | |||
}) | |||
} | |||
}) | |||
}, | |||
upDateBulidIngObj() { | |||
this.bulidIngObj = uni.getStorageSync('buildingID') | |||
}, | |||
addLookingCount(id) { | |||
uni.request({ | |||
url: config.service.addLookingCount, | |||
method: "POST", | |||
header: { | |||
'content-type': 'application/json', | |||
'Authorization': 'Bearer ' + uni.getStorageSync( | |||
'weapp_session_login_data').token | |||
}, | |||
data: { | |||
houseId: uni.getStorageSync( | |||
'buildingID').id, | |||
houseName: uni.getStorageSync( | |||
'buildingID').name, | |||
recordId: id | |||
}, | |||
}) | |||
}, | |||
sendLog(data) { | |||
uni.request({ | |||
url: config.service.addLog, | |||
method: "POST", | |||
header: { | |||
'content-type': 'application/json', | |||
'Authorization': 'Bearer ' + uni.getStorageSync( | |||
'weapp_session_login_data').token | |||
}, | |||
data: { | |||
houseId: data.houseId || uni.getStorageSync( | |||
'buildingID').id, | |||
houseName: data.houseName || uni.getStorageSync( | |||
'buildingID').name, | |||
serviceId: "test", | |||
recordId: data.id | |||
}, | |||
success: (data) => { | |||
} | |||
}) | |||
}, | |||
// 时分秒转换为秒 | |||
TIMEEVENT(e) { | |||
var time = e; | |||
var len = time.split(':') | |||
if (len.length == 3) { | |||
var hour = time.split(':')[0]; | |||
var min = time.split(':')[1]; | |||
var sec = time.split(':')[2]; | |||
return Number(hour * 3600) + Number(min * 60) + Number(sec); | |||
} | |||
if (len.length == 2) { | |||
var min = time.split(':')[0]; | |||
var sec = time.split(':')[1]; | |||
return Number(min * 60) + Number(sec); | |||
} | |||
if (len.length == 1) { | |||
var sec = time.split(':')[0]; | |||
return Number(sec); | |||
} | |||
}, | |||
// 目前使用页面为录音页面 | |||
SPEAKERSTYLE(index) { | |||
let obj = { | |||
color: '', | |||
} | |||
switch (index) { | |||
case 1: | |||
obj.color = '#60CBEC'; | |||
break; | |||
case 2: | |||
obj.color = '#EC8B47'; | |||
break; | |||
case 3: | |||
obj.color = '#4F861E'; | |||
break; | |||
case 5: | |||
obj.color = '#4980C8'; | |||
break; | |||
case 6: | |||
obj.color = '#60CBEC'; | |||
break; | |||
case 7: | |||
obj.color = '#EC8B47'; | |||
break; | |||
case 8: | |||
obj.color = '#4F861E'; | |||
break; | |||
default: | |||
obj.color = '#9F61C8'; | |||
break; | |||
} | |||
return obj | |||
}, | |||
// 检测权限 返回 Boolean类型 | |||
CHECKAUTHORITY(name = '') { | |||
let menu = uni.getStorageSync('weapp_session_Menu_data') | |||
return menu[name] === undefined ? false : menu[name] | |||
}, | |||
}, | |||
filters: { | |||
// ASCII码转换 大写字母A是65 演讲人是从1开始所以num+64 | |||
toCapital(num) { | |||
let str = '' | |||
if (num) { | |||
str = String.fromCharCode(num + 64) | |||
} | |||
return str | |||
} | |||
} | |||
}); | |||
} | |||
}); | |||
// 新版本更新 | |||
if (wx.canIUse('getUpdateManager')) { | |||
const updateManager = wx.getUpdateManager() | |||
updateManager.onCheckForUpdate(function(res) { | |||
if (res.hasUpdate) { | |||
updateManager.onUpdateReady(function() { | |||
uni.showModal({ | |||
title: '更新提示', | |||
cancelColor: "#999999", | |||
content: '新版本已经准备好,是否重启应用?', | |||
success: function(res) { | |||
if (res.confirm) { | |||
updateManager.applyUpdate() | |||
} | |||
} | |||
}) | |||
}) | |||
updateManager.onUpdateFailed(function() { | |||
uni.showModal({ | |||
title: '已经有新版本了哟~', | |||
cancelColor: "#999999", | |||
content: '新版本已经上线啦~,请您删除当前小程序,重新搜索打开哟~' | |||
}) | |||
}) | |||
} | |||
}) | |||
} else { | |||
uni.showModal({ | |||
title: '提示', | |||
cancelColor: "#999999", | |||
content: '当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。' | |||
}) | |||
} | |||
// 判断token | |||
const token = uni.getStorageSync("weapp_session_login_data") | |||
if (typeof token.token != "string") { | |||
return | |||
} | |||
uni.request({ | |||
url: config.service.getUser, | |||
method: "GET", | |||
header: { | |||
'content-type': 'application/json', | |||
'Authorization': 'Bearer ' + uni.getStorageSync('weapp_session_login_data').token | |||
}, | |||
success: (res) => { | |||
let rescor = res.data.data; | |||
// return | |||
if (res.statusCode == 401) { | |||
uni.showToast({ | |||
title: '登录过期请重新登录', | |||
icon: "none", | |||
duration: 2000, | |||
}) | |||
uni.navigateTo({ | |||
url: `/pages/login/index` | |||
}) | |||
return | |||
} | |||
if (rescor.user.total == 0) { | |||
uni.showToast({ | |||
title: '暂无绑定项目', | |||
duration: 2000, | |||
icon: "none" | |||
}); | |||
return | |||
} else { | |||
let lopan = { | |||
id: rescor.houseList[0].id, | |||
name: rescor.houseList[0].propertyName | |||
} | |||
let users = rescor.user | |||
users.zkProperties = rescor.houseList | |||
uni.setStorageSync("weapp_session_userInfo_data", users); //写入缓存 | |||
} | |||
} | |||
}) | |||
this.$u.get(config.service.notReadNum, { | |||
id: uni.getStorageSync('weapp_session_userInfo_data').accountId, | |||
projectId: uni.getStorageSync('buildingID').id | |||
}).then(res => { | |||
if (res > 0) { | |||
uni.setTabBarBadge({ //显示数字 | |||
index: 4, //tabbar下标 | |||
text: res || 0 //数字 | |||
}) | |||
} else { | |||
uni.removeTabBarBadge({ | |||
index: 4 | |||
}) | |||
} | |||
}).catch(e => { | |||
uni.removeTabBarBadge({ | |||
index: 4 | |||
}) | |||
}) | |||
wx.setInnerAudioOption({ | |||
obeyMuteSwitch: false | |||
}); | |||
onLaunch() { | |||
}, | |||
onShow(options) { | |||
const token = uni.getStorageSync("weapp_session_login_data") | |||
if (typeof token.token != "string") { | |||
return | |||
} else {} | |||
onShow() { | |||
}, | |||
methods: { | |||
// 设置底部导航栏 | |||
setTabbarItems() { | |||
const tabbarList = [{ | |||
iconPath: "/static/images/tabBar/jiedais.png", | |||
selectedIconPath: "/static/images/tabBar/jiedaiActives.png", | |||
text: "接待" | |||
}, | |||
{ | |||
iconPath: "/static/images/tabBar/kehus.png", | |||
selectedIconPath: "/static/images/tabBar/kehuActives.png", | |||
text: "客户" | |||
}, | |||
{ | |||
iconPath: "/static/images/tabBar/works.png", | |||
selectedIconPath: "/static/images/tabBar/workActives.png", | |||
text: "工作台" | |||
}, | |||
{ | |||
iconPath: "/static/images/tabBar/xuexis.png", | |||
selectedIconPath: "/static/images/tabBar/xuexiActives.png", | |||
text: "学习" | |||
}, | |||
{ | |||
iconPath: "/static/images/tabBar/mes.png", | |||
selectedIconPath: "/static/images/tabBar/meActives.png", | |||
text: "我的" | |||
} | |||
] | |||
if (domainObj.domain == 'zh.aihxz.com') { | |||
tabbarList.forEach((item, index) => { | |||
uni.setTabBarItem({ | |||
index: index, | |||
iconPath: item.iconPath, | |||
selectedIconPath: item.selectedIconPath | |||
}) | |||
}) | |||
} | |||
} | |||
} | |||
}; | |||
</script> | |||
<style> | |||
@import "./app.css"; | |||
</style> | |||
<style lang="scss"> | |||
@import "uview-ui/index.scss"; | |||
/*每个页面公共css */ | |||
//图表样式等 | |||
.single { | |||
width: 100%; | |||
background: #FFFFFF; | |||
.title { | |||
width: 100%; | |||
height: 80rpx; | |||
display: flex; | |||
align-items: center; | |||
.title1 { | |||
flex: 2; | |||
font-size: 30rpx; | |||
font-weight: 500; | |||
color: #333333; | |||
line-height: 80rpx; | |||
padding-left: 30rpx; | |||
font-family: PingFangSC-Medium, PingFang SC; | |||
} | |||
.title3 { | |||
flex: 3; | |||
height: 90rpx; | |||
display: flex; | |||
align-items: center; | |||
justify-content: flex-end; | |||
padding-right: 30rpx; | |||
.title3-box { | |||
display: flex; | |||
align-items: center; | |||
width: 25%; | |||
justify-content: center; | |||
.activecltab { | |||
color: #2671E2; | |||
border-bottom: 4rpx solid #2671E2; | |||
} | |||
} | |||
} | |||
.title2 { | |||
flex: 2; | |||
display: flex; | |||
justify-content: flex-end; | |||
align-items: center; | |||
height: 42rpx; | |||
font-size: 30rpx; | |||
font-family: PingFangSC-Regular, PingFang SC; | |||
font-weight: 400; | |||
color: #333333; | |||
line-height: 42rpx; | |||
margin-right: 30rpx; | |||
.righttochoose { | |||
width: 24rpx; | |||
height: 12rpx; | |||
margin-left: 12rpx; | |||
} | |||
} | |||
} | |||
.swiper-box { | |||
width: 97%; | |||
margin: 0 auto 26rpx; | |||
} | |||
.hejibox { | |||
width: 100%; | |||
height: 80rpx; | |||
display: flex; | |||
.heji { | |||
width: 50%; | |||
height: 100%; | |||
font-size: 28rpx; | |||
font-weight: 400; | |||
color: #666666; | |||
line-height: 80rpx; | |||
text-indent: 30rpx; | |||
} | |||
} | |||
.danwei { | |||
width: 100%; | |||
height: 40rpx; | |||
font-size: 24rpx; | |||
font-weight: 400; | |||
color: #999999; | |||
line-height: 40rpx; | |||
text-indent: 30rpx; | |||
} | |||
.uchaserbox { | |||
width: 95%; | |||
height: 470rpx; | |||
} | |||
.jindu { | |||
width: 100%; | |||
min-height: 400rpx; | |||
.jindu-box { | |||
width: 100%; | |||
padding: 0 30rpx; | |||
.jindu-boxche { | |||
width: 100%; | |||
height: 40rpx; | |||
display: flex; | |||
align-items: center; | |||
margin-bottom: 38rpx; | |||
.jindu-name { | |||
width: 120rpx; | |||
font-size: 28rpx; | |||
font-family: PingFangSC-Regular, PingFang SC; | |||
font-weight: 400; | |||
color: #333333; | |||
line-height: 40rpx; | |||
} | |||
.progress-cus { | |||
flex: 1; | |||
height: 30rpx; | |||
margin-left: 10rpx; | |||
background: #F0F1F2; | |||
.color { | |||
height: 30rpx; | |||
background: linear-gradient(90deg, #3A82EF 0%, #7EB2FF 100%); | |||
} | |||
.color4 { | |||
height: 30rpx; | |||
background: linear-gradient(270deg, #6DC5B8 0%, #07B79D 100%); | |||
} | |||
.color1 { | |||
height: 30rpx; | |||
background: linear-gradient(270deg, #F88881 0%, #E6625B 100%); //1 | |||
} | |||
.color2 { | |||
height: 30rpx; | |||
background: linear-gradient(270deg, #FFC940 0%, #FF981E 100%); //2 | |||
} | |||
.color3 { | |||
height: 30rpx; | |||
background: linear-gradient(270deg, #FFE800 0%, #FFCC00 100%); //3 | |||
} | |||
} | |||
.jindu-zxl { | |||
width: 120rpx; | |||
font-size: 28rpx; | |||
margin-left: 12rpx; | |||
color: #333; | |||
text-align: left; | |||
line-height: 40rpx; | |||
} | |||
} | |||
} | |||
} | |||
} | |||
//时间切换的样式 | |||
.boxtittab { | |||
width: 100; | |||
height: 92rpx; | |||
background: #FFFFFF; | |||
display: flex; | |||
align-items: center; | |||
.tabbox { | |||
flex: 1; | |||
height: 100%; | |||
text-align: center; | |||
line-height: 92rpx; | |||
color: #666666; | |||
font-size: 28rpx; | |||
font-weight: 400; | |||
display: flex; | |||
justify-content: center; | |||
.activecllasscet { | |||
width: 96rpx; | |||
color: #2671E2; | |||
font-weight: 600; | |||
border-bottom: 4rpx solid #2671E2; | |||
} | |||
} | |||
} | |||
//多个格子的样式 | |||
.boxzonglan { | |||
width: 100%; | |||
min-height: 496rpx; | |||
background: #FFFFFF; | |||
padding: 30rpx 30rpx 30rpx 30rpx; | |||
.zonglantit { | |||
font-size: 30rpx; | |||
color: #333333; | |||
font-family: PingFangSC-Semibold, PingFang SC; | |||
font-weight: 500; | |||
} | |||
.zonglanbox { | |||
width: 100%; | |||
display: flex; | |||
flex-wrap: wrap; | |||
margin-top: 24rpx; | |||
box-shadow: 0px 0px 12rpx 0px rgba(38, 113, 226, 0.1); | |||
border-radius: 12rpx; | |||
.grid { | |||
width: 50%; | |||
// height: 128rpx; | |||
padding-bottom: 24rpx; | |||
// border: 1rpx solid #E0E0E0; | |||
.audonum { | |||
color: #666666; | |||
text-indent: 40rpx; | |||
font-size: 28rpx; | |||
margin-top: 20rpx; | |||
line-height: 40rpx; | |||
display: flex; | |||
align-items: center; | |||
.circle { | |||
width: 20rpx; | |||
height: 20rpx; | |||
background: #FFFFFF; | |||
border: 6rpx solid #2671E2; | |||
margin-right: 12rpx; | |||
margin-left: 30rpx; | |||
border-radius: 50%; | |||
} | |||
} | |||
.num { | |||
color: #333333; | |||
text-indent: 40rpx; | |||
font-size: 44rpx; | |||
font-weight: 600; | |||
line-height: 50rpx; | |||
margin-top: 18rpx; | |||
} | |||
} | |||
} | |||
} | |||
</style> |
@@ -1,113 +1,120 @@ | |||
{ | |||
"name": "AI销讲助手", | |||
"appid": "__UNI__7A1611D", | |||
"description": "AI销讲助手", | |||
"versionName": "1.1.0", | |||
"versionCode": "100", | |||
"transformPx": false, | |||
"app-plus": { | |||
"usingComponents": true, | |||
"nvueCompiler": "uni-app", | |||
"compilerVersion": 3, | |||
"splashscreen": { | |||
"alwaysShowBeforeRender": true, | |||
"waiting": true, | |||
"autoclose": true, | |||
"delay": 0 | |||
}, | |||
"modules": { | |||
"Push": {}, | |||
"UIWebview": {}, | |||
"Webview-x5": {} | |||
}, | |||
"distribute": { | |||
"android": { | |||
"permissions": [ | |||
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>", | |||
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>", | |||
"<uses-permission android:name=\"android.permission.READ_CONTACTS\"/>", | |||
"<uses-permission android:name=\"android.permission.VIBRATE\"/>", | |||
"<uses-permission android:name=\"android.permission.READ_LOGS\"/>", | |||
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>", | |||
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>", | |||
"<uses-permission android:name=\"android.permission.WRITE_CONTACTS\"/>", | |||
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>", | |||
"<uses-permission android:name=\"android.permission.CAMERA\"/>", | |||
"<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>", | |||
"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>", | |||
"<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>", | |||
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>", | |||
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>", | |||
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>", | |||
"<uses-permission android:name=\"android.permission.CALL_PHONE\"/>", | |||
"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>", | |||
"<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>", | |||
"<uses-feature android:name=\"android.hardware.camera\"/>", | |||
"<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>", | |||
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>" | |||
], | |||
"abiFilters": ["armeabi-v7a", "arm64-v8a", "x86"] | |||
}, | |||
"ios": { | |||
"idfa": false | |||
}, | |||
"sdkConfigs": { | |||
"ad": {}, | |||
"oauth": {} | |||
}, | |||
"icons": { | |||
"android": { | |||
"hdpi": "", | |||
"xhdpi": "", | |||
"xxhdpi": "", | |||
"xxxhdpi": "" | |||
}, | |||
"ios": { | |||
"appstore": "", | |||
"ipad": {}, | |||
"iphone": {} | |||
} | |||
} | |||
} | |||
}, | |||
"quickapp": {}, | |||
"mp-weixin": { | |||
"appid": "wx8f883dca5ecc5510", | |||
"setting": { | |||
"urlCheck": false, | |||
"es6": true, | |||
"postcss": true, | |||
"minified": false | |||
}, | |||
"usingComponents": true, | |||
"permission": {}, | |||
"requiredBackgroundModes": ["audio"], | |||
"lazyCodeLoading": "requiredComponents", | |||
"plugins": { | |||
"WechatSI": { | |||
"version": "0.3.4", | |||
"provider": "wx069ba97219f66d99" | |||
} | |||
}, | |||
"uniStatistics": { | |||
"enable": true | |||
} | |||
}, | |||
"mp-alipay": { | |||
"usingComponents": true | |||
}, | |||
"mp-baidu": { | |||
"usingComponents": true | |||
}, | |||
"mp-toutiao": { | |||
"usingComponents": true | |||
}, | |||
"h5": { | |||
"router": { | |||
"base": "/pages/login/guide" | |||
} | |||
}, | |||
"uniStatistics": { | |||
"version": "1" | |||
} | |||
"name" : "AI销讲助手", | |||
"appid" : "__UNI__7A1611D", | |||
"description" : "AI销讲助手", | |||
"versionName" : "1.1.0", | |||
"versionCode" : "100", | |||
"transformPx" : false, | |||
"app-plus" : { | |||
"usingComponents" : true, | |||
"nvueCompiler" : "uni-app", | |||
"compilerVersion" : 3, | |||
"splashscreen" : { | |||
"alwaysShowBeforeRender" : true, | |||
"waiting" : true, | |||
"autoclose" : true, | |||
"delay" : 0 | |||
}, | |||
"modules" : { | |||
"Push" : {}, | |||
"UIWebview" : {}, | |||
"Webview-x5" : {} | |||
}, | |||
"distribute" : { | |||
"android" : { | |||
"permissions" : [ | |||
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>", | |||
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>", | |||
"<uses-permission android:name=\"android.permission.READ_CONTACTS\"/>", | |||
"<uses-permission android:name=\"android.permission.VIBRATE\"/>", | |||
"<uses-permission android:name=\"android.permission.READ_LOGS\"/>", | |||
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>", | |||
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>", | |||
"<uses-permission android:name=\"android.permission.WRITE_CONTACTS\"/>", | |||
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>", | |||
"<uses-permission android:name=\"android.permission.CAMERA\"/>", | |||
"<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>", | |||
"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>", | |||
"<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>", | |||
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>", | |||
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>", | |||
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>", | |||
"<uses-permission android:name=\"android.permission.CALL_PHONE\"/>", | |||
"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>", | |||
"<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>", | |||
"<uses-feature android:name=\"android.hardware.camera\"/>", | |||
"<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>", | |||
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>" | |||
], | |||
"abiFilters" : [ "armeabi-v7a", "arm64-v8a", "x86" ] | |||
}, | |||
"ios" : { | |||
"idfa" : false | |||
}, | |||
"sdkConfigs" : { | |||
"ad" : {}, | |||
"oauth" : {} | |||
}, | |||
"icons" : { | |||
"android" : { | |||
"hdpi" : "", | |||
"xhdpi" : "", | |||
"xxhdpi" : "", | |||
"xxxhdpi" : "" | |||
}, | |||
"ios" : { | |||
"appstore" : "", | |||
"ipad" : {}, | |||
"iphone" : {} | |||
} | |||
} | |||
} | |||
}, | |||
"quickapp" : {}, | |||
"mp-weixin" : { | |||
"appid" : "wx8f883dca5ecc5510", | |||
"setting" : { | |||
"urlCheck" : false, | |||
"es6" : true, | |||
"postcss" : true, | |||
"minified" : true | |||
}, | |||
"usingComponents" : true, | |||
"permission" : {}, | |||
"requiredBackgroundModes" : [ "audio" ], | |||
"lazyCodeLoading" : "requiredComponents", | |||
"plugins" : { | |||
"WechatSI" : { | |||
"version" : "0.3.4", | |||
"provider" : "wx069ba97219f66d99" | |||
}, | |||
"digital-human-plugin" : { | |||
"version" : "3.0.0", | |||
"provider" : "wxb827be471e4dce7b" | |||
} | |||
}, | |||
"uniStatistics" : { | |||
"enable" : true | |||
}, | |||
"optimization" : { | |||
"subPackages" : true | |||
} | |||
}, | |||
"mp-alipay" : { | |||
"usingComponents" : true | |||
}, | |||
"mp-baidu" : { | |||
"usingComponents" : true | |||
}, | |||
"mp-toutiao" : { | |||
"usingComponents" : true | |||
}, | |||
"h5" : { | |||
"router" : { | |||
"base" : "/pages/login/guide" | |||
} | |||
}, | |||
"uniStatistics" : { | |||
"version" : "1" | |||
} | |||
} |
@@ -8,12 +8,12 @@ | |||
"style": { | |||
"navigationBarBackgroundColor": "#008EF2", | |||
"navigationBarTextStyle": "white", | |||
"navigationStyle": "custom" | |||
// "mp-weixin": { | |||
// "usingComponents": { | |||
// "digital-human": "plugin://digital-human-plugin/core" | |||
// } | |||
// } | |||
"navigationStyle": "custom", | |||
"mp-weixin": { | |||
"usingComponents": { | |||
"digital-human": "plugin://digital-human-plugin/core" | |||
} | |||
} | |||
} | |||
}, | |||
{ | |||
@@ -679,13 +679,6 @@ | |||
id: 0 | |||
}) | |||
}) | |||
// util.getRequestPromise(config.service.findAllYi, {}, false).then(data => { | |||
// this.biaoqianlist = data | |||
// this.biaoqianlist.unshift({ | |||
// name: "逼单话术", | |||
// id: 0 | |||
// }) | |||
// }); | |||
}, | |||
// 取消加精 | |||
Cancelout2() { | |||
@@ -1,163 +1,560 @@ | |||
<template> | |||
<view class="boox"> | |||
<!-- <digital-human :width="400" rootStyle="position: fixed; left: 50%; top: 100rpx; transform: translateX(-50%);"></digital-human> --> | |||
<view class="booximg"> | |||
<image v-if="domainObj.domain == 'zh.aihxz.com'" class="img" | |||
src="https://autoiot.oss-cn-beijing.aliyuncs.com/static/wabIndexs.png" mode=""></image> | |||
<image v-else class="img" src="https://autoiot.oss-cn-beijing.aliyuncs.com/static/wabIndex.png" mode=""> | |||
</image> | |||
</view> | |||
<view class="pages"> | |||
<digital-human :width="0" rootStyle="position: fixed; left: 50%; top: 100px; transform: translateX(-50%);"> | |||
</digital-human> | |||
<view class="center-dingwei"> | |||
<view class="dingwei-title" style="margin-top: 0"> | |||
<image class="dingwei-img" src="https://qufang.oss-cn-beijing.aliyuncs.com/zkgj/xcx/images2.png" | |||
mode=""></image> | |||
<view class="desc">智能语音转写</view> | |||
</view> | |||
<view class="dingwei-title"> | |||
<image class="dingwei-img" src="https://qufang.oss-cn-beijing.aliyuncs.com/zkgj/xcx/images2.png" | |||
mode=""></image> | |||
<view class="desc">高效的判客机制</view> | |||
</view> | |||
<view class="dingwei-title"> | |||
<image class="dingwei-img" src="https://qufang.oss-cn-beijing.aliyuncs.com/zkgj/xcx/images2.png" | |||
mode=""></image> | |||
<view class="desc">全方位的客户跟进</view> | |||
</view> | |||
<view class="dingwei-title"> | |||
<image class="dingwei-img" src="https://qufang.oss-cn-beijing.aliyuncs.com/zkgj/xcx/images2.png" | |||
mode=""></image> | |||
<view class="desc">专业的经纪管家</view> | |||
<image class="bgs" src="https://qufang.oss-cn-beijing.aliyuncs.com/serverBg.jpg" mode="" /> | |||
<view class="server-box"> | |||
<view class="server-head"> | |||
<image class="servehead" src="@/static/image/servehead.png" mode="" /> | |||
<image class="voiceing" src="@/static/image/voiceing.png" mode="" /> | |||
</view> | |||
<view class="dingwei-title"> | |||
<image class="dingwei-img" src="https://qufang.oss-cn-beijing.aliyuncs.com/zkgj/xcx/images2.png" | |||
mode=""></image> | |||
<view class="desc">在线实时沟通</view> | |||
<!-- 消息列表 --> | |||
<scroll-view class="scroll-box" scroll-y :scroll-into-view="scrollId"> | |||
<!-- 循环体 --> | |||
<block v-for="(item, index) in messageList"> | |||
<!-- 左侧 --> | |||
<view :class="item.direction" :key="index" :id="`scrollId${index}`"> | |||
<view class="msg-text"> | |||
<view class="msg-texts"> | |||
{{ item.text }} | |||
</view> | |||
<image @tap="rePlayText(item.text)" v-if="item.direction == 'lside' && index !== 0 " | |||
class="voiceplay" src="@/static/image/voiceplay.png" mode="" /> | |||
</view> | |||
<view class="timer">{{ item.time }}</view> | |||
</view> | |||
</block> | |||
</scroll-view> | |||
<view class="send-box"> | |||
<view v-if="sendType" class="input-box"> | |||
<input v-model="inputText" class="inputs" placeholder-class="placestyle" type="text" | |||
confirm-type="send" @confirm="sendChat" placeholder="输入你想咨询的问题或点击右边的麦克风和我聊天" /> | |||
</view> | |||
<view v-else class="voice-box" @touchstart="touchStart" @touchend="touchEnd"> | |||
<text>{{ voiceState }}</text> | |||
</view> | |||
<view class="change-type"> | |||
<image @tap="changeSendType(false)" v-if="sendType" src="@/static/image/voiceInput.png" mode="" /> | |||
<image @tap="changeSendType(true)" v-else src="@/static/image/textInput.png" mode="" /> | |||
</view> | |||
</view> | |||
</view> | |||
<view @click="bindWxBLogin" class="button"> | |||
<view class="view"> | |||
立即去登录 | |||
</view> | |||
<view v-if="recording" class="luyin"> | |||
<image src="@/static/image/recordingIcon.png" mode="" /> | |||
<text>正在录音...</text> | |||
</view> | |||
</view> | |||
</template> | |||
<script> | |||
var app = getApp(); | |||
var config = require("../../config"); | |||
const domainObj = require('@/utils/domain.js'); | |||
// import human from './mathManIndex.js' | |||
const pluginConfig = { // 数字人配置 | |||
"asrConfig": { | |||
"class": "TencentASR", | |||
"secretKey": "", | |||
"secretId": "AKIDyvwuvrfikhYK1dDj9Vlv154zmVAjFdt0", | |||
"appId": 1310500600, | |||
"partnerId": "0002", | |||
"signatureUrl": "https://commercial-integration-asr-int-api.xiaoice.com/api/v3/asr/tencentSignature", | |||
"hotWordId": "2ab7be50d11f11ecbfd6525400aec391", | |||
"silenceTime": 240, | |||
"engineModelType": "16k_zh", | |||
"needVad": 1, | |||
"filterDirty": 1, | |||
"filterModal": 0, | |||
"filterPunc": 1, | |||
"vadSilenceTime": 240, | |||
"convertNumMode": 1, | |||
"wordInfo": 2 | |||
}, | |||
"character": "chenzheling-yellow", | |||
"characterConfig": { | |||
"characters": { | |||
"chenzheling-yellow": { | |||
"name": "chenzheling-yellow-half", | |||
"id": "chenzheling-yellow", | |||
"frameWidth": 740, | |||
"frameHeight": 1260, | |||
"faceWidth": 190, | |||
"faceHeight": 300, | |||
"facePositionLeft": 450, | |||
"facePositionTop": 550, | |||
"facePositionLeftOffset": -180, | |||
"facePositionTopOffset": -430, | |||
"frameRate": 25, | |||
"defaultIdle": "A-idle", | |||
"idles": { | |||
"A-idle": { | |||
"id": "A-idle", | |||
"version": 6, | |||
"frameImageLength": 227, | |||
"frameImageType": "webp", | |||
"resetFrameSingleNum": 8, | |||
"resetFrames": [7, 15, 23, 31, 39, 47, 55, 63, 71, 79, 87, 95, 103, 111, 119, 127, 135, 143, 151, 159, 167, 175, 183, 191, 199, 207, 215, 223], | |||
"frameImageBackupType": "png" | |||
} | |||
}, | |||
"gestures": {}, | |||
"crops": {} | |||
} | |||
}, | |||
"sourcePath": "https://commercial-cdn.xiaoice.com/assets/images/characters", | |||
"batch": 16, | |||
"minLoadFrameNum": 100 | |||
}, | |||
"chatConfig": { | |||
"class": "CXHubChat", | |||
"url": "https://commercial-fab.xiaoice.com/api/hub/organizations/org-qufangwang/agents/64af7b6d6e1ba4813c4bd6ae/environments/draft/sessions", | |||
"defaultReply": [{ | |||
"text": "对不起,我没听清~", | |||
"gesture": "" | |||
}], | |||
"csChatUrl": "https://commercial-fab.xiaoice.com/api/hub/organizations/org-qufangwang/characters//sessions" | |||
}, | |||
"logConfig": { | |||
"class": "AliTraceLogger", | |||
"metaData": { | |||
"role": "prod", | |||
"organizationId": "org-qufangwang", | |||
"partnerId": "dh-api", | |||
"agentId": "64af7b6d6e1ba4813c4bd6ae" | |||
} | |||
}, | |||
"talkConfig": { | |||
"class": "CarouselTalk", | |||
"url": "https://commercial-fab.xiaoice.com", | |||
"options": { | |||
"path": "/api/v1/carousel/avatars/chenzheling-yellow/socket.io", | |||
"wsPath": "/api/v1/carousel/avatars/chenzheling-yellow/websocket", | |||
"transports": ["websocket", "polling"], | |||
"query": "?image_format=.webp&voice_id=64af7b6da9d616bd022f6b69" | |||
}, | |||
"maxRetryTime": 5, | |||
"retryTimeInterval": 100 | |||
} | |||
} | |||
const plugin = requirePlugin('digital-human-plugin').api; // 数字人实例 | |||
const plugins = requirePlugin("WechatSI"); | |||
let manager = plugins.getRecordRecognitionManager(); | |||
export default { | |||
// mixins: [human], | |||
data() { | |||
return { | |||
domainObj: domainObj, // 域名 | |||
sendType: true, // true 为文字输入 false 为语音输入 | |||
messageList: [], // 消息列表 | |||
inputText: '', // 文字输入 | |||
voiceState: '按住 说话', // | |||
recording: false, // 展示录音提示框 | |||
scrollId: '', // 默认不滚动 | |||
}; | |||
}, | |||
onShow() { | |||
uni.request({ | |||
url: config.service.verify, | |||
method: "GET", | |||
header: { | |||
'content-type': 'application/json', | |||
'Authorization': 'Bearer ' + uni.getStorageSync('weapp_session_login_data').token | |||
onLoad() { | |||
uni.showLoading({ | |||
title: '加载中...', | |||
}) | |||
plugin.init({ | |||
...pluginConfig, | |||
onReceivedAsrText: (text) => {}, | |||
onSuccess: (res) => { | |||
console.log(res, 'onSuccess') | |||
uni.hideLoading() | |||
let text = 'Hi~我是专业房产顾问嘉欣,有问题可以问我呦,试试说句“你好”和我打个招呼吧' | |||
plugin.human?.talkAsync(text) | |||
this.messageList.push({ | |||
text: text, | |||
direction: 'lside' | |||
}) | |||
}, | |||
success: (data) => { | |||
if (data.data.code == 10000) { | |||
uni.switchTab({ | |||
url: '/pages/index/index' | |||
}); | |||
} | |||
onFailed: res => { | |||
uni.hideLoading() | |||
console.log(res, 'onFailed') | |||
}, | |||
onError: (res) => { | |||
uni.hideLoading() | |||
console.log(res, 'onError') | |||
} | |||
}) | |||
this.initRecord() | |||
}, | |||
onShow() { | |||
// #ifdef MP-WEIXIN | |||
// 内存告警处理 | |||
wx.onMemoryWarning((level) => { | |||
plugin.clearCache() | |||
}) | |||
wx.setInnerAudioOption({ | |||
// IOS静音键的情况下允许播放声音 | |||
obeyMuteSwitch: false, | |||
// 播放声音时中断其他app端声音 | |||
mixWithOther: false, | |||
}) | |||
// #endif | |||
}, | |||
onHide() {}, | |||
methods: { | |||
bindWxBLogin() { | |||
wx.navigateTo({ | |||
url: '/pages/login/index' | |||
/** | |||
* 切换输入方式 | |||
*/ | |||
changeSendType(e) { | |||
this.sendType = e | |||
}, | |||
// // 模拟聊天回复接口 | |||
async getReply(text) { | |||
console.log(this.setUid()) | |||
await uni.request({ | |||
url: `${pluginConfig.chatConfig.url}/${this.setUid()}`, | |||
method: 'POST', | |||
data: { | |||
"text": text, | |||
"currentSceneInfo": { | |||
"sceneId": "" | |||
} | |||
}, | |||
success: async (res) => { | |||
const replay = res.data.sceneInfo[0].audioText[0] | |||
await plugin.human?.interrupt() | |||
let arr = [] | |||
arr.push({ | |||
direction: 'rside', | |||
text: text, | |||
time: this.getTimeNow() | |||
}) | |||
arr.push({ | |||
direction: 'lside', | |||
text: res.data.sceneInfo[0].audioText[0], | |||
time: this.getTimeNow() | |||
}) | |||
this.messageList = [...this.messageList, ...arr] | |||
this.inputText = '' | |||
this.scrollId = `scrollId${this.messageList.length-1}` | |||
await plugin.human?.talkAsync(replay) | |||
} | |||
}) | |||
}, | |||
/** | |||
* 重播当前对话 | |||
*/ | |||
async rePlayText(e) { | |||
console.log(e) | |||
// 暂停当前对话(如果有) | |||
await plugin.human?.interrupt() | |||
await plugin.human?.talkAsync(e) | |||
}, | |||
/** | |||
* 获取当前时间 | |||
*/ | |||
getTimeNow() { | |||
let now = new Date(); | |||
let year = now.getFullYear(); //获取完整的年份(4位,1970-????) | |||
let month = now.getMonth() + 1; //获取当前月份(0-11,0代表1月) | |||
let today = now.getDate(); //获取当前日(1-31) | |||
let hour = now.getHours(); //获取当前小时数(0-23) | |||
let minute = now.getMinutes(); //获取当前分钟数(0-59) | |||
let second = now.getSeconds(); //获取当前秒数(0-59) | |||
let nowTime = '' | |||
nowTime = year + '-' + this.fillZero(month) + '-' + this.fillZero(today) + ' ' + this.fillZero(hour) + | |||
':' + | |||
this.fillZero(minute) + ':' + this.fillZero(second) | |||
return nowTime | |||
}, | |||
// 补零 | |||
fillZero(str) { | |||
var realNum; | |||
if (str < 10) { | |||
realNum = '0' + str; | |||
} else { | |||
realNum = str; | |||
} | |||
return realNum; | |||
}, | |||
/** | |||
* 发送文字 | |||
*/ | |||
async sendChat(e) { | |||
await this.getReply(e.detail.value) | |||
}, | |||
/** | |||
* 长按识别 | |||
*/ | |||
touchStart() { | |||
this.recording = true | |||
manager.start({ | |||
duration: 60000, | |||
lang: "zh_CN" | |||
}); | |||
} | |||
}, | |||
/** | |||
* 长按结束 | |||
* */ | |||
touchEnd() { | |||
this.recording = false | |||
manager.stop(); | |||
}, | |||
/** | |||
* 初始化语音识别回调 | |||
* 绑定语音播放开始事件 | |||
*/ | |||
initRecord() { | |||
manager.onStart = (res) => { | |||
this.voiceState = "正在录音" | |||
}; | |||
//有新的识别内容返回,则会调用此事件 | |||
manager.onRecognize = (res) => {} | |||
// 识别结束事件 | |||
manager.onStop = async (res) => { | |||
if (res.result) { | |||
await this.getReply(res.result) | |||
} | |||
this.voiceState = "按住 说话" | |||
} | |||
// 识别错误事件 | |||
manager.onError = (res) => {} | |||
}, | |||
// 简单生成uid | |||
setUid() { | |||
let uid = new Date().getTime() + Math.random().toString(36).substr(2); | |||
return uid | |||
}, | |||
} | |||
}; | |||
</script> | |||
<style lang="scss"> | |||
.boox { | |||
<style lang="scss" scoped> | |||
/* pages/intelligentvoiceassistant/intelligentvoiceassistant.wxss */ | |||
view { | |||
box-sizing: border-box; | |||
} | |||
.pages { | |||
position: relative; | |||
width: 100vw; | |||
height: 100vh; | |||
display: flex; | |||
flex-direction: column; | |||
justify-content: flex-end; | |||
} | |||
.bgs { | |||
position: absolute; | |||
z-index: 0; | |||
width: 100%; | |||
height: 100%; | |||
} | |||
.server-box { | |||
position: relative; | |||
z-index: 10; | |||
width: calc(100%-1rpx); | |||
height: 658rpx; | |||
background: rgba(0, 0, 0, 0.5); | |||
backdrop-filter: saturate(180%) blur(20px); | |||
border-radius: 32rpx 32rpx 0 0; | |||
border: 1rpx solid #FFFFFF; | |||
} | |||
.title { | |||
width: 100%; | |||
position: absolute; | |||
left: 0rpx; | |||
top: 100rpx; | |||
text-align: center; | |||
color: #FFFFFF; | |||
font-size: 32rpx; | |||
font-weight: 500; | |||
z-index: 1000; | |||
} | |||
.server-head { | |||
margin: -130rpx 0 0 0; | |||
padding: 0 32rpx; | |||
width: 100%; | |||
display: flex; | |||
align-items: flex-end; | |||
} | |||
.booximg { | |||
width: 100vw; | |||
height: 100vh; | |||
.servehead { | |||
width: 192rpx; | |||
height: 192rpx; | |||
} | |||
.img { | |||
width: 100%; | |||
height: 100%; | |||
} | |||
} | |||
.voiceing { | |||
margin-left: 12rpx; | |||
width: 78rpx; | |||
height: 50rpx; | |||
} | |||
.center-dingwei { | |||
width: 100%; | |||
position: absolute; | |||
left: 0rpx; | |||
bottom: 200rpx; | |||
.dingwei-title { | |||
height: 44rpx; | |||
display: flex; | |||
margin-left: 213rpx; | |||
margin-top: 20rpx; | |||
} | |||
.dingwei-img { | |||
width: 44rpx; | |||
height: 44rpx; | |||
} | |||
.desc { | |||
line-height: 44rpx; | |||
margin-left: 10rpx; | |||
font-size: 32rpx; | |||
color: #333333; | |||
} | |||
} | |||
/* | |||
.close { | |||
width: ; | |||
} */ | |||
.button { | |||
width: 100%; | |||
position: absolute; | |||
left: 0rpx; | |||
bottom: 60rpx; | |||
.view { | |||
width: 630rpx; | |||
height: 86rpx; | |||
margin: 0 auto; | |||
background: #2671E2; | |||
box-shadow: 0px 2rpx 20rpx 0rpx rgba(38, 113, 226, 0.5); | |||
border-radius: 49rpx; | |||
color: #FFFFFF; | |||
text-align: center; | |||
line-height: 86rpx; | |||
font-size: 32rpx; | |||
} | |||
} | |||
.scroll-box { | |||
width: 100%; | |||
height: calc(658rpx - 192rpx + 130rpx - 104rpx); | |||
} | |||
.lside { | |||
display: flex; | |||
flex-direction: column; | |||
align-items: flex-start; | |||
} | |||
.rside { | |||
display: flex; | |||
flex-direction: column; | |||
align-items: flex-end; | |||
} | |||
.msg-texts { | |||
margin: 36rpx 32rpx 12rpx; | |||
padding: 16rpx 28rpx; | |||
background: #fff; | |||
border-radius: 20rpx; | |||
} | |||
.lside .voiceplay { | |||
margin: 0 32rpx 16rpx 16rpx; | |||
} | |||
.lside .msg-text { | |||
display: flex; | |||
align-items: flex-end; | |||
} | |||
.lside .msg-text .msg-texts { | |||
margin: 36rpx 16rpx 12rpx 32rpx; | |||
} | |||
.timer { | |||
margin: 0 32rpx; | |||
font-size: 24rpx; | |||
font-family: PingFangSC-Regular, PingFang SC; | |||
font-weight: 400; | |||
color: #FFFFFF; | |||
line-height: 33rpx; | |||
} | |||
.rside .msg-texts { | |||
background: #2671E2; | |||
color: #fff; | |||
} | |||
.send-box { | |||
padding: 0 24rpx; | |||
width: 100%; | |||
height: 104rpx; | |||
background: #5D6168; | |||
display: flex; | |||
align-items: center; | |||
/* justify-content: center; */ | |||
} | |||
.change-type { | |||
margin: 0 0 0 24rpx; | |||
width: 72rpx; | |||
height: 72rpx; | |||
} | |||
.change-type image { | |||
width: 72rpx; | |||
height: 72rpx; | |||
} | |||
.input-box, | |||
.voice-box { | |||
width: 606rpx; | |||
height: 72rpx; | |||
background: #FFFFFF; | |||
border-radius: 12rpx; | |||
} | |||
.voice-box { | |||
display: flex; | |||
justify-content: center; | |||
align-items: center; | |||
} | |||
.voice-box text { | |||
font-size: 28rpx; | |||
font-family: PingFangSC-Medium, PingFang SC; | |||
font-weight: 500; | |||
color: #000000; | |||
line-height: 40rpx; | |||
} | |||
.inputs { | |||
padding: 0 28rpx; | |||
box-sizing: border-box; | |||
width: 100%; | |||
height: 100%; | |||
font-size: 22rpx; | |||
font-family: PingFangSC-Regular, PingFang SC; | |||
font-weight: 400; | |||
line-height: 30rpx; | |||
} | |||
.placestyle { | |||
font-size: 22rpx; | |||
font-family: PingFangSC-Regular, PingFang SC; | |||
font-weight: 400; | |||
color: #CCCCCC; | |||
line-height: 30rpx; | |||
} | |||
.luyin { | |||
position: fixed; | |||
left: 50%; | |||
top: 50%; | |||
transform: translate(-50%, -50%); | |||
z-index: 100; | |||
width: 280rpx; | |||
height: 258rpx; | |||
background: rgba(0, 0, 0, 0.7); | |||
border-radius: 20rpx; | |||
display: flex; | |||
flex-direction: column; | |||
justify-content: center; | |||
align-items: center; | |||
} | |||
.luyin image { | |||
margin: 0 0 20rpx 0; | |||
width: 46rpx; | |||
height: 62rpx; | |||
} | |||
.luyin text { | |||
font-size: 28rpx; | |||
font-family: PingFangSC-Regular, PingFang SC; | |||
font-weight: 400; | |||
color: #FFFFFF; | |||
line-height: 40rpx; | |||
} | |||
.voiceplay { | |||
flex-shrink: 0; | |||
width: 64rpx; | |||
height: 64rpx; | |||
} | |||
</style> |
@@ -145,24 +145,15 @@ | |||
</view> | |||
</template> | |||
</view> | |||
<!-- 底部导航栏 --> | |||
<!-- <u-tabbar :isBtnTop="false" class="tabbar" :mid-button="true" activeColor="#1296db" inactiveColor="#999999" | |||
v-model="current" :list="tabbarList"></u-tabbar> --> | |||
</view> | |||
</template> | |||
<script> | |||
var config = require("../../config"); | |||
var util = require("@/utils/util.js"); | |||
import tabbarList from '@/utils/tabbar.js' | |||
export default { | |||
data() { | |||
return { | |||
// tabbar配置项 | |||
current: 3, | |||
tabbarList: tabbarList, | |||
//--- end --- tabbar配置项 | |||
tablist: [{ | |||
name: "优秀案例" | |||
}, | |||
@@ -21,6 +21,7 @@ module.exports = { | |||
"wordInfo": 2 | |||
}, | |||
"character": "furao-casual-v4", | |||
"autoStart": true, | |||
"characterConfig": { | |||
"characters": { | |||
"furao-casual-v4": { | |||
@@ -88,6 +89,7 @@ module.exports = { | |||
"batch": 16, | |||
"minLoadFrameNum": 50 | |||
}, | |||
"chatConfig": { | |||
"class": "CXHubChat", | |||
"url": "https://commercial-fab.xiaoice.com/api/hub/organizations/org-qufangwang/agents/64af7b926e1ba4813c4bd6d7/environments/draft/sessions", | |||
@@ -97,6 +99,7 @@ module.exports = { | |||
}], | |||
"csChatUrl": "https://commercial-fab.xiaoice.com/api/hub/organizations/org-qufangwang/characters//sessions" | |||
}, | |||
"logConfig": { | |||
"class": "AliTraceLogger", | |||
"metaData": { | |||
@@ -106,6 +109,7 @@ module.exports = { | |||
"agentId": "64af7b926e1ba4813c4bd6d7" | |||
} | |||
}, | |||
"talkConfig": { | |||
"class": "CarouselTalk", | |||
"url": "https://commercial-fab.xiaoice.com", | |||
@@ -126,12 +130,16 @@ module.exports = { | |||
mockReplies: ["嘻嘻", "没听清", "你真厉害"], | |||
plugin: null, | |||
messageList: [], // 消息列表 | |||
} | |||
}, | |||
onLoad() { | |||
let _this = this | |||
this.plugin = requirePlugin("digital-human-plugin").api; | |||
console.log(this.plugin, 'this.plugin') | |||
this.plugin.init({ | |||
...this.config, | |||
onReceivedAsrText: (text) => { | |||
@@ -141,34 +149,28 @@ module.exports = { | |||
return false; | |||
}, | |||
onSuccess: () => { | |||
const texts = [{ | |||
text: `你好啊`, | |||
gesture: "" | |||
}, | |||
{ | |||
text: `我叫陈喆玲`, | |||
gesture: "" | |||
}, | |||
]; | |||
async function talk(texts) { | |||
// 轮播文本内容 | |||
for (let i = 0; i < texts.length; i++) { | |||
await _this.plugin.human.talkAsync( | |||
texts[i].text, | |||
texts[i].gesture, { | |||
onTalkStartOnce: (playInfo) => { | |||
console.log("播放句子:", playInfo); | |||
}, | |||
onTalkEndOnce: () => { | |||
console.log("播放句子完成"); | |||
}, | |||
} | |||
); | |||
console.log("完成时间:", Date.now()); | |||
} | |||
} | |||
talk(texts); | |||
// async function talk(texts) { | |||
// // 轮播文本内容 | |||
// for (let i = 0; i < texts.length; i++) { | |||
// await _this.plugin.human.talkAsync( | |||
// texts[i].text, | |||
// texts[i].gesture, { | |||
// onTalkStartOnce: (playInfo) => { | |||
// console.log("播放句子:", playInfo); | |||
// }, | |||
// onTalkEndOnce: () => { | |||
// console.log("播放句子完成"); | |||
// }, | |||
// } | |||
// ); | |||
// console.log("完成时间:", Date.now()); | |||
// } | |||
// } | |||
// talk(texts); | |||
}, | |||
onError: (res) => { | |||
console.log(res) | |||
} | |||
}) | |||
// #ifdef MP-WEIXIN | |||
// 内存告警处理 | |||
@@ -187,15 +189,36 @@ module.exports = { | |||
methods: { | |||
// // 模拟聊天回复接口 | |||
async getReply(text) { | |||
return await this.mockReplies[Math.floor(Math.random() * this.mockReplies.length)] | |||
await uni.request({ | |||
url: `${this.config.chatConfig.url}/1`, | |||
method: 'POST', | |||
data: { | |||
"text": text, | |||
"currentSceneInfo": { | |||
"sceneId": "" | |||
} | |||
}, | |||
success: (res) => { | |||
const replay = res.data.sceneInfo[0].audioText[0] | |||
console.log(res) | |||
console.log(res.data.sceneInfo[0]) | |||
this.messageList.push({ | |||
direction: 'rside', | |||
text: text | |||
}) | |||
console.log(this.messageList) | |||
this.messageList.push({ | |||
direction: 'lside', | |||
text: res.data.sceneInfo[0].audioText[0] | |||
}) | |||
this.plugin.human?.talkAsync(replay) | |||
this.$forceUpdate() | |||
} | |||
}) | |||
}, | |||
sendChat(e) { | |||
this.getReply(e.detail.value) | |||
}, | |||
async customChat(text) { | |||
// // 调用自定义的api获取回复 | |||
const reply = await this.getReply(text) | |||
// // 主动调用播放接口,并等待播放完成 | |||
await this.plugin.human?.talkAsync(reply) | |||
console.log("回复完成"); | |||
} | |||
} | |||
} |
@@ -81,8 +81,6 @@ | |||
</view> | |||
</view> | |||
<!-- 底部导航栏 --> | |||
<!-- <u-tabbar :isBtnTop="false" :mid-button="true" activeColor="#1296db" inactiveColor="#999999" v-model="current" :list="tabbarList"></u-tabbar> --> | |||
</view> | |||
</template> | |||
@@ -90,14 +88,9 @@ | |||
var app = getApp(); | |||
var util = require("../../utils/util.js"); | |||
var config = require("../../config"); | |||
import tabbarList from '@/utils/tabbar.js' | |||
export default { | |||
data() { | |||
return { | |||
// tabbar配置项 | |||
current: 0, | |||
tabbarList: tabbarList, | |||
//--- end --- tabbar配置项 | |||
name: "", | |||
photo: "", | |||
mobile: "", | |||
@@ -1788,6 +1788,7 @@ | |||
translateHtmlContent: this.messagelisy, | |||
} | |||
this.isshow2 = false; | |||
this.dialogList[this.argtextindex2].onebest = this.textItself.replace(this.thewrongword, this.reswrongword) | |||
this.cancelBeast() | |||
this.$u.post("/corpus/addCorrectWord", parames).then(data => { | |||
@@ -5,8 +5,6 @@ Vue.use(Vuex) | |||
export default new Vuex.Store({ | |||
state: { | |||
bgAudioMannager: null, // 背景音频播放对象 | |||
isBgPlay: false, // 是否后台播放 | |||
messageObj: {}, // | |||
}, | |||
@@ -16,51 +14,5 @@ export default new Vuex.Store({ | |||
setMessageObj(state, obj) { | |||
state.messageObj = obj | |||
}, | |||
createAudio(state) { | |||
state.bgAudioMannager = uni.getBackgroundAudioManager(); | |||
}, | |||
setSeekAudio(state, t) { | |||
state.bgAudioMannager.seek(t) | |||
}, | |||
// 加载音频监听方法 | |||
initAudioMethod(state, obj) { | |||
state.bgAudioMannager.onCanplay(() => { | |||
state.bgAudioMannager.currentTime = obj.currentTime | |||
}); | |||
state.bgAudioMannager.onStop(() => { | |||
console.log('停止播放'); | |||
}); | |||
state.bgAudioMannager.onPause(() => { | |||
console.log('暂停播放'); | |||
}); | |||
state.bgAudioMannager.onEnded(() => { | |||
//初始化 需要的参数 | |||
console.log('自然播放结束事件'); | |||
}); | |||
state.bgAudioMannager.onError((res) => { | |||
console.log(res.errMsg); | |||
console.log(res.errCode); | |||
}); | |||
}, | |||
// 停止全局音频播放 | |||
stopAduio(state) { | |||
if (state.bgAudioMannager != null) { | |||
if (state.bgAudioMannager.src != '') { | |||
state.bgAudioMannager.src = '' | |||
} | |||
} | |||
}, | |||
// 设置播放状态 | |||
setIsBgPlay(state, value) { | |||
state.isBgPlay = value | |||
} | |||
}, | |||
}) |
@@ -1,234 +0,0 @@ | |||
// import Strophe from "../sdk/libs/strophe"; | |||
//import xmldom from "../sdk/libs/xmldom/dom-parser"; | |||
// import websdk from "../sdk/sdk/src/connection"; | |||
import websdk from "../sdk/webimSDK3.1.1.js"; | |||
import config from "./WebIMConfig"; | |||
console.group = console.group || {}; | |||
console.groupEnd = console.groupEnd || {}; | |||
var window = {}; | |||
let WebIM = window.WebIM = websdk; | |||
window.WebIM.config = config; //var DOMParser = window.DOMParser = xmldom.DOMParser; | |||
//let document = window.document = new DOMParser().parseFromString("<?xml version='1.0'?>\n", "text/xml"); | |||
WebIM.isDebug = function (option) { | |||
if (option) { | |||
WebIM.config.isDebug = option.isDebug; | |||
openDebug(WebIM.config.isDebug); | |||
} | |||
function openDebug(value) { | |||
function ts() { | |||
var d = new Date(); | |||
var Hours = d.getHours(); // 获取当前小时数(0-23) | |||
var Minutes = d.getMinutes(); // 获取当前分钟数(0-59) | |||
var Seconds = d.getSeconds(); // 获取当前秒数(0-59) | |||
return (Hours < 10 ? "0" + Hours : Hours) + ":" + (Minutes < 10 ? "0" + Minutes : Minutes) + ":" + (Seconds < 10 ? "0" + Seconds : Seconds) + " "; | |||
} // if (value) { | |||
// Strophe.Strophe.Connection.prototype.rawOutput = function(data){ | |||
// try{ | |||
// console.group("%csend # " + ts(), "color: blue; font-size: large"); | |||
// console.log("%c" + data, "color: blue"); | |||
// console.groupEnd(); | |||
// } | |||
// catch(e){ | |||
// console.log(e); | |||
// } | |||
// }; | |||
// }else{ | |||
// Strophe.Strophe.Connection.prototype.rawOutput = function(){}; | |||
// } | |||
} | |||
}; | |||
/** | |||
* Set autoSignIn as true (autoSignInName and autoSignInPwd are configured below), | |||
* You can auto signed in each time when you refresh the page in dev model. | |||
*/ | |||
WebIM.config.autoSignIn = false; | |||
if (WebIM.config.autoSignIn) { | |||
WebIM.config.autoSignInName = "lwz2"; | |||
WebIM.config.autoSignInPwd = "1"; | |||
} // var stropheConn = new window.Strophe.Connection("ws://im-api.easemob.com/ws/", { | |||
// inactivity: 30, | |||
// maxRetries: 5, | |||
// pollingTime: 4500 | |||
// }); | |||
// | |||
// stropheConn.connect( | |||
// '$t$' + 'YWMtmbQEBKKIEeaGmMtXyg5n1wAAAVlkQvGO2WOJGlMCEJKM4VV9GCMnb_XLCXU', | |||
// function() { | |||
// console.log(arguments, 'ggogogo'); | |||
// }, stropheConn.wait, stropheConn.hold); | |||
WebIM.parseEmoji = function (msg) { | |||
if (typeof WebIM.Emoji === "undefined" || typeof WebIM.Emoji.map === "undefined") { | |||
return msg; | |||
} | |||
var emoji = WebIM.Emoji, | |||
reg = null; | |||
var msgList = []; | |||
var objList = []; | |||
for (var face in emoji.map) { | |||
if (emoji.map.hasOwnProperty(face)) { | |||
while (msg.indexOf(face) > -1) { | |||
msg = msg.replace(face, "^" + emoji.map[face] + "^"); | |||
} | |||
} | |||
} | |||
var ary = msg.split("^"); | |||
var reg = /^e.*g$/; | |||
for (var i = 0; i < ary.length; i++) { | |||
if (ary[i] != "") { | |||
msgList.push(ary[i]); | |||
} | |||
} | |||
for (var i = 0; i < msgList.length; i++) { | |||
if (reg.test(msgList[i])) { | |||
var obj = {}; | |||
obj.data = msgList[i]; | |||
obj.type = "emoji"; | |||
objList.push(obj); | |||
} else { | |||
var obj = {}; | |||
obj.data = msgList[i]; | |||
obj.type = "txt"; | |||
objList.push(obj); | |||
} | |||
} | |||
return objList; | |||
}; | |||
WebIM.time = function () { | |||
var date = new Date(); | |||
var Hours = date.getHours(); | |||
var Minutes = date.getMinutes(); | |||
var Seconds = date.getSeconds(); | |||
var time = date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate() + " " + (Hours < 10 ? "0" + Hours : Hours) + ":" + (Minutes < 10 ? "0" + Minutes : Minutes) + ":" + (Seconds < 10 ? "0" + Seconds : Seconds); | |||
return time; | |||
}; | |||
WebIM.Emoji = { | |||
map: { | |||
"[):]": "ee_1.png", | |||
"[:D]": "ee_2.png", | |||
"[;)]": "ee_3.png", | |||
"[:-o]": "ee_4.png", | |||
"[:p]": "ee_5.png", | |||
"[(H)]": "ee_6.png", | |||
"[:@]": "ee_7.png", | |||
"[:s]": "ee_8.png", | |||
"[:$]": "ee_9.png", | |||
"[:(]": "ee_10.png", | |||
"[:'(]": "ee_11.png", | |||
"[<o)]": "ee_12.png", | |||
"[(a)]": "ee_13.png", | |||
"[8o|]": "ee_14.png", | |||
"[8-|]": "ee_15.png", | |||
"[+o(]": "ee_16.png", | |||
"[|-)]": "ee_17.png", | |||
"[:|]": "ee_18.png", | |||
"[*-)]": "ee_19.png", | |||
"[:-#]": "ee_20.png", | |||
"[^o)]": "ee_21.png", | |||
"[:-*]": "ee_22.png", | |||
"[8-)]": "ee_23.png", | |||
"[del]": "btn_del.png", | |||
"[(|)]": "ee_24.png", | |||
"[(u)]": "ee_25.png", | |||
"[(S)]": "ee_26.png", | |||
"[(*)]": "ee_27.png", | |||
"[(#)]": "ee_28.png", | |||
"[(R)]": "ee_29.png", | |||
"[({)]": "ee_30.png", | |||
"[(})]": "ee_31.png", | |||
"[(k)]": "ee_32.png", | |||
"[(F)]": "ee_33.png", | |||
"[(W)]": "ee_34.png", | |||
"[(D)]": "ee_35.png" | |||
} | |||
}; | |||
WebIM.EmojiObj = { | |||
// 相对 emoji.js 路径 | |||
map1: { | |||
"[):]": "ee_1.png", | |||
"[:D]": "ee_2.png", | |||
"[;)]": "ee_3.png", | |||
"[:-o]": "ee_4.png", | |||
"[:p]": "ee_5.png", | |||
"[(H)]": "ee_6.png", | |||
"[:@]": "ee_7.png" | |||
}, | |||
map2: { | |||
"[:s]": "ee_8.png", | |||
"[:$]": "ee_9.png", | |||
"[:(]": "ee_10.png", | |||
"[:'(]": "ee_11.png", | |||
"[<o)]": "ee_12.png", | |||
"[(a)]": "ee_13.png", | |||
"[8o|]": "ee_14.png" | |||
}, | |||
map3: { | |||
"[8-|]": "ee_15.png", | |||
"[+o(]": "ee_16.png", | |||
"[|-)]": "ee_17.png", | |||
"[:|]": "ee_18.png", | |||
"[*-)]": "ee_19.png", | |||
"[:-#]": "ee_20.png", | |||
"[del]": "del.png" | |||
}, | |||
map4: { | |||
"[^o)]": "ee_21.png", | |||
"[:-*]": "ee_22.png", | |||
"[8-)]": "ee_23.png", | |||
"[(|)]": "ee_24.png", | |||
"[(u)]": "ee_25.png", | |||
"[(S)]": "ee_26.png", | |||
"[(*)]": "ee_27.png" | |||
}, | |||
map5: { | |||
"[(#)]": "ee_28.png", | |||
"[(R)]": "ee_29.png", | |||
"[({)]": "ee_30.png", | |||
"[(})]": "ee_31.png", | |||
"[(k)]": "ee_32.png", | |||
"[(F)]": "ee_33.png", | |||
"[(W)]": "ee_34.png", | |||
"[(D)]": "ee_35.png" | |||
}, | |||
map6: { | |||
"[del]": "del.png" | |||
} | |||
}; // wx.connectSocket({url: WebIM.config.xmppURL, method: "GET"}) | |||
WebIM.conn = new WebIM.connection({ | |||
appKey: WebIM.config.appkey, | |||
isMultiLoginSessions: WebIM.config.isMultiLoginSessions, | |||
https: typeof WebIM.config.https === "boolean" ? WebIM.config.https : location.protocol === "https:", | |||
url: WebIM.config.xmppURL, | |||
apiUrl: WebIM.config.apiURL, | |||
isAutoLogin: false, | |||
heartBeatWait: WebIM.config.heartBeatWait, | |||
autoReconnectNumMax: WebIM.config.autoReconnectNumMax, | |||
autoReconnectInterval: WebIM.config.autoReconnectInterval | |||
}); // async response | |||
// WebIM.conn.listen({ | |||
// onOpened: () => dispatch({type: Types.ON_OPEND}) | |||
// }) | |||
// export default WebIM; | |||
module.exports = { | |||
"default": WebIM | |||
}; |
@@ -1,90 +0,0 @@ | |||
/** | |||
* git do not control webim.config.js | |||
* everyone should copy webim.config.js to webim.config.js | |||
* and have their own configs. | |||
* In this way , others won't be influenced by this config while git pull. | |||
* | |||
*/ | |||
// for react native | |||
let location = { | |||
protocol: "https" | |||
}; | |||
let config = { | |||
/* | |||
* XMPP server | |||
*/ | |||
// xmppURL: "wss://im-api.easemob.com/ws/", //小程序2.0sdk线上环境 | |||
// xmppURL: "wss://im-api-hsb.easemob.com/ws/", //小程序2.0sdk沙箱环境 | |||
// xmppURL: 'wss://im-api-new-hsb.easemob.com/websocket', //小程序沙箱环境 | |||
xmppURL: 'wss://im-api-wechat.easemob.com/websocket', | |||
//小程序线上环境 | |||
/* | |||
* Backend REST API URL | |||
*/ | |||
// apiURL: (location.protocol === 'https:' ? 'https:' : 'http:') + '//a1.easemob.com', | |||
apiURL: "https://a1.easemob.com", | |||
// 线上环境 | |||
// apiURL: "https://a1-hsb.easemob.com", // 沙箱环境 | |||
// apiURL: 'https://172.17.3.155:8080', | |||
/* | |||
* Application AppKey | |||
*/ | |||
appkey: "1106191017019057#qufang", | |||
/* | |||
* Whether to use HTTPS '1177161227178308#xcx' | |||
* @parameter {Boolean} true or false | |||
*/ | |||
https: false, | |||
/* | |||
* isMultiLoginSessions | |||
* true: A visitor can sign in to multiple webpages and receive messages at all the webpages. | |||
* false: A visitor can sign in to only one webpage and receive messages at the webpage. | |||
*/ | |||
isMultiLoginSessions: true, | |||
/** | |||
* Whether to use window.doQuery() | |||
* @parameter {Boolean} true or false | |||
*/ | |||
isWindowSDK: false, | |||
/** | |||
* isSandBox=true: xmppURL: 'im-api.sandbox.easemob.com', apiURL: '//a1.sdb.easemob.com', | |||
* isSandBox=false: xmppURL: 'im-api.easemob.com', apiURL: '//a1.easemob.com', | |||
* @parameter {Boolean} true or false | |||
*/ | |||
isSandBox: false, | |||
/** | |||
* Whether to console.log in strophe.log() | |||
* @parameter {Boolean} true or false | |||
*/ | |||
isDebug: false, | |||
/** | |||
* will auto connect the xmpp server autoReconnectNumMax times in background when client is offline. | |||
* won't auto connect if autoReconnectNumMax=0. | |||
*/ | |||
autoReconnectNumMax: 15, | |||
/** | |||
* the interval secons between each atuo reconnectting. | |||
* works only if autoReconnectMaxNum >= 2. | |||
*/ | |||
autoReconnectInterval: 2, | |||
/** | |||
* webrtc supports WebKit and https only | |||
*/ | |||
isWebRTC: false, | |||
/* | |||
* Set to auto sign-in | |||
*/ | |||
isAutoLogin: true | |||
}; | |||
export default config; |
@@ -1,23 +0,0 @@ | |||
var sub = function (val, lengths) { | |||
var length_val = val.length + ''; | |||
if (length_val == 0 || val == undefined) { | |||
return; | |||
} | |||
if (length_val > lengths) { | |||
return val.substring(0, lengths) + "..."; | |||
} else { | |||
return val; | |||
} | |||
}; | |||
var subMore = function (val, lengths) { | |||
var val = val + ''; | |||
return val.substring(0, lengths); | |||
}; | |||
module.exports = { | |||
sub: sub, | |||
subMore: subMore | |||
}; |
@@ -1,32 +0,0 @@ | |||
export default [{ | |||
"pagePath": "/pages/index/customer", | |||
"iconPath": "/static/images/tabBar/jiedai.png", | |||
"selectedIconPath": "/static/images/tabBar/jiedaiActive.png", | |||
"text": "接待" | |||
}, | |||
{ | |||
"pagePath": "/pages/index/consumer/index", | |||
"iconPath": "/static/images/tabBar/kehu.png", | |||
"selectedIconPath": "/static/images/tabBar/kehuActive.png", | |||
"text": "客户" | |||
}, | |||
{ | |||
"pagePath": "/pages/index/index", | |||
"iconPath": "/static/images/tabBar/work.png", | |||
"selectedIconPath": "/static/images/tabBar/workActive.png", | |||
"midButton": true, | |||
"text": "工作台" | |||
}, | |||
{ | |||
"pagePath": "/pages/index/learning", | |||
"iconPath": "/static/images/tabBar/xuexi.png", | |||
"selectedIconPath": "/static/images/tabBar/xuexiActive.png", | |||
"text": "学习" | |||
}, | |||
{ | |||
"pagePath": "/pages/index/personal", | |||
"iconPath": "/static/images/tabBar/me.png", | |||
"selectedIconPath": "/static/images/tabBar/meActive.png", | |||
"text": "我的" | |||
} | |||
]; |
@@ -1,4 +1,3 @@ | |||
let WebIM = uni.WebIM = require("./WebIM.js")["default"]; | |||
import * as CryptoJS from '../components/crypto-js' | |||
function formatLongTime(mss) { | |||
var days = parseInt(mss / (1000 * 60 * 60 * 24)); | |||
@@ -474,7 +473,7 @@ function getRequest(url, params, callback) { | |||
} | |||
} | |||
}); // WebIM.conn.close(); | |||
}); | |||
return false; | |||
} | |||
@@ -551,8 +550,7 @@ function getRequestPromise(url, params, isNone,option) { | |||
} | |||
} | |||
}); // WebIM.conn.close(); | |||
}); | |||
return false; | |||
} else if (result.data.code == '60001') { | |||
//已录入客户 | |||