cyl/develop
jscyl13849007907 12 months ago
parent 5db162ff3d
commit 9578268c1a

@ -120,7 +120,12 @@
"navigationBarTitleText": "Weixin",
"navigationBarTextStyle": "black"
},
"plugins": {},
"plugins": {
"WechatSI": {
"version": "0.3.1",
"provider": "wx069ba97219f66d99"
}
},
"tabBar": {
"custom": true,
"color": "#444",

@ -44,7 +44,7 @@
"tabIndent": "insertSpaces",
"tabSize": 2
},
"appid": "wxb0dea4d11428c6a5",
"appid": "wxe431e0b3abd9ae0b",
"packOptions": {
"ignore": [],
"include": []

@ -1,4 +1,6 @@
// subPage/chat/index.js
var plugin = requirePlugin("WechatSI")
let manager = plugin.getRecordRecognitionManager()
Page({
/**
@ -7,6 +9,8 @@ Page({
data: {
eventType:'input',// 底部事件类型 input 键盘输入voice 语音输入
sendText:'',// 发送的输入框内容
voiceBtnText:'按住 说话',
screenHeight:'0',
list:[
{
id:-1,
@ -14,73 +18,107 @@ Page({
isUp:false,
isDown:false,
},
]
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
wx.setNavigationBarTitle({
title: options.title,
})
},
/**
* 生命周期函数--监听页面初次渲染完成
],
/*
* -1 未录音
* 0 按下
* 1 长按事件
* 2 同意授权
* 3 拒绝授权
* 4 没有进行授权操作
* 5 开始录音
* 6 抬起并结束录音
* 7 超出操作范围提示取消录音
* 8 录音异常
* 9 抬起
*/
onReady() {
voiceSpeed:-1,
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
const res = wx.getSystemInfoSync();
console.log('设备数据',res);
this.setData({
screenHeight: res.screenHeight + 'px',
});
},
handleEvent(e){
handleEvent(e) {
let that = this;
that.animate();
that.setData({
eventType:e.currentTarget.dataset.type == 'input' ? 'voice':'input'
})
eventType: e.currentTarget.dataset.type == 'input' ? 'voice' : 'input',
voiceSpeed:-1
});
if (that.data.eventType == 'voice') {
// 检查是否有录音权限
wx.getSetting({
success(res) {
if (!res.authSetting['scope.record']) {
that.setData({
voiceSpeed:4
});
wx.authorize({
scope: 'scope.record',
success() {
console.log('录音权限已授权');
// 继续执行其他逻辑
that.setData({
voiceSpeed:2
});
},
fail() {
console.log('录音权限未授权');
that.setData({
voiceSpeed:4
});
wx.showModal({
title: '提示',
content: '需要录音权限才能使用语音输入功能,请在设置中授权。',
confirmText: '去设置',
cancelText: '取消',
success(res) {
if (res.confirm) {
wx.openSetting({
success(res) {
console.log('用户打开设置', res.authSetting);
if (res.authSetting['scope.record']) {
console.log('用户已授权录音权限');
// 用户授权后可以继续执行其他逻辑
that.setData({
voiceSpeed:2
});
} else {
console.log('用户未授权录音权限');
// 用户未授权录音权限后的逻辑
that.setData({
voiceSpeed:3
});
}
}
});
} else if (res.cancel) {
console.log('用户取消授权');
// 用户取消授权后的逻辑
that.setData({
voiceSpeed:3
});
}
}
});
}
});
} else {
console.log('录音权限已授权');
// 继续执行其他逻辑
that.setData({
voiceSpeed:2
});
}
}
});
}
},
handleUp(e){
let that = this;
@ -138,7 +176,6 @@ Page({
sendText:e.detail.value
});
},
animate($type='light') {
wx.vibrateShort({
type:$type
@ -146,8 +183,6 @@ Page({
},
// 文本消息发送
handleSend(){
let that = this;
@ -179,5 +214,76 @@ Page({
],
sendText:''
});
},
/**
* 语音消息发送
*/
handleTouchStart: function(event) {
console.log('手指按下事件触发');
let that = this;
that.setData({
voiceSpeed: 0 // 假设 0 表示按下
});
},
handleLongPress: function(event) {
let that = this;
console.log('长按事件触发');
that.setData({
voiceSpeed:1
});
manager.start({duration:30000, lang: "zh_CN"})
// 处理长按事件的逻辑
manager.onStart = function(res) {
that.setData({
voiceSpeed:5
});
console.log("成功开始录音识别", res)
}
},
handleTouchEnd: function(event) {
console.log('手指抬起事件触发',this.data.voiceSpeed);
let that = this;
if(that.data.voiceSpeed >= 1){
that.animate();
that.data.sendText = '模拟语音转文本';
that.setData({
list:[
...that.data.list,
{
id:that.data.list.length,
type:'text',
isUp:false,
isDown:false,
content:that.data.sendText
},
{
id:that.data.list.length + 1,
type:'html',
isUp:false,
isDown:false,
content:`【北京奔驰连接器日结工】<br /><br />🚻 男女 18-48 18-48周岁 男女不限, 要求26个英文字母 纹身烟疤拍照确认, 黑户,明显纹身,临时身份证不予接收,两班倒,站班<br /><br />💰 员工250元/天支付60天60天以后员工220元/天每月10号发薪。培训工资100元/天,员工 16 元/时以上部分含税6个点的打卡不满七天无工资60天以后员工缴纳社保`
},
],
sendText:''
});
}
that.setData({
voiceSpeed:9
});
// 处理手指抬起事件的逻辑
manager.stop();
manager.onStop = function(res) {
that.setData({
voiceSpeed:6
});
console.log("监听录音结束 临时路径record file path", res.tempFilePath)
console.log("监听录音结束 结果result", res.result)
}
// manager.onError = function(res) {
// that.setData({
// voiceSpeed:8
// });
// console.error("监听录音异常 error msg", res.msg)
// }
},
})

@ -1,7 +1,7 @@
<view class="p-home-chat g_h_all g_flex_column_between">
<scroll-view scroll-y="{{true}}"
<scroll-view scroll-y
class="chat-content g_flex_column_end g_flex_1"
style="height:calc(100vh - 92px);overflow:auto;"
style="height:{{screenHeight}}"
>
<view class="chat-card"
wx:for="{{list}}"
@ -60,9 +60,11 @@
</view>
</scroll-view>
<view class="chat-operate g_flex_none">
<view class="m-input g_flex_row_between">
<view class="m-input g_flex_row_between {{voiceSpeed == 0 || voiceSpeed == 1 || voiceSpeed == 5 ? 'voice-click' : ''}}"
data-speed="{{voiceSpeed}}"
>
<!-- 左 -->
<view class="g_flex_none g_flex_column_center"
<view class="g_flex_none g_flex_column_center event-icon"
data-type="{{eventType}}"
bindtap="handleEvent"
>
@ -85,12 +87,17 @@
value="{{sendText}}"
/>
</view>
<view class="voice-box" wx:if="{{eventType == 'voice'}}">
按住 说话
<view class="voice-box" wx:if="{{eventType == 'voice'}}"
bindtouchstart="handleTouchStart"
bindtouchmove="handleTouchMove"
bindtouchend="handleTouchEnd"
bindlongpress="handleLongPress"
>
{{ voiceBtnText }}
</view>
</view>
<!-- 右 -->
<view class="g_flex_none g_flex_column_center right-box g_text_l"
<view class="g_flex_none g_flex_column_center right-box send-icon g_text_l"
bindtap="handleSend"
>
<i class="iconfont icon-fasong1 icon {{sendText ? 'icon-active' : ''}} "></i>

@ -251,3 +251,11 @@ textarea {
.max80{
max-width: 80vw;
}
.voice-click{
background-color: #1677ff !important;
}
.voice-click .event-icon,.voice-click .send-icon{
opacity: 0;
}
Loading…
Cancel
Save