perf: 个人对话窗口支持拨打电话

This commit is contained in:
kuaifan 2022-07-08 15:55:55 +08:00
parent c13f8bbcc0
commit 82fad2c17d
4 changed files with 88 additions and 6 deletions

View File

@ -247,6 +247,53 @@ class DialogController extends AbstractController
]);
}
/**
* @api {get} api/dialog/tel 06. 获取对方联系电话
*
* @apiDescription 需要token身份
* @apiVersion 1.0.0
* @apiGroup dialog
* @apiName tel
*
* @apiParam {Number} dialog_id 会话ID
*
* @apiSuccess {Number} ret 返回状态码1正确、0错误
* @apiSuccess {String} msg 返回信息(错误描述)
* @apiSuccess {Object} data 返回数据
*/
public function tel()
{
$user = User::auth();
//
$dialog_id = intval(Request::input('dialog_id'));
//
$dialog = WebSocketDialog::checkDialog($dialog_id);
if ($dialog->type !== 'user') {
return Base::retError("会话类型错误");
}
$dialogUser = $dialog->dialogUser->where('userid', '!=', $user->userid)->first();
if (empty($dialogUser)) {
return Base::retError("会话对象不存在");
}
$callUser = User::find($dialogUser->userid);
if (empty($callUser) || empty($callUser->tel)) {
return Base::retError("对方未设置联系电话");
}
//
$add = null;
$res = WebSocketDialogMsg::sendMsg(null, $dialog->id, 'notice', [
'notice' => $user->nickname . " 查看了 " . $callUser->nickname . " 的联系电话"
]);
if (Base::isSuccess($res)) {
$add = $res['data'];
}
//
return Base::retSuccess("success", [
'tel' => $callUser->tel,
'add' => $add ?: null
]);
}
/**
* @api {get} api/dialog/open/user 07. 打开会话
*

View File

@ -62,6 +62,10 @@
<i class="taskfont">&#xe7c1;</i>
{{$L('新会议')}}
</div>
<div v-if="dialogData.type === 'user' && $isEEUiApp" class="chat-input-popover-item" @click="onToolbar('call')">
<i class="taskfont">&#xe7ba;</i>
{{$L('拨打电话')}}
</div>
<div class="chat-input-popover-item" @click="onToolbar('image')">
<i class="taskfont">&#xe7bc;</i>
{{$L('发送图片')}}
@ -870,6 +874,7 @@ export default {
});
break;
case 'call':
case 'image':
case 'file':
this.$emit('on-more', action)
@ -1113,7 +1118,6 @@ export default {
const {owner_id, type} = this.dialogData
const permission = type === 'group' && [0, this.userId].includes(owner_id)
if (this.taskId > 0 || permission) {
console.log(this.dialogData);
this.__getMoreTimer && clearTimeout(this.__getMoreTimer)
this.__getMoreTimer = setTimeout(_ => {
this.$store.dispatch("call", {

View File

@ -1221,11 +1221,42 @@ export default {
},
onEventMore(e) {
if (['image', 'file'].includes(e)) {
this.$refs.chatUpload.handleClick()
switch (e) {
case 'call':
this.onCallTel()
break;
case 'image':
case 'file':
this.$refs.chatUpload.handleClick()
break;
}
},
onCallTel() {
this.$store.dispatch("call", {
url: 'dialog/tel',
data: {
dialog_id: this.dialogId,
},
spinner: 300,
}).then(({data}) => {
if (data.tel) {
$A.eeuiAppSendMessage({
action: 'callTel',
tel: data.tel
});
}
if (data.add) {
this.$store.dispatch("saveDialogMsg", data.add);
this.$store.dispatch("updateDialogLastMsg", data.add);
this.onActive();
}
}).catch(({msg}) => {
$A.modalError(msg);
});
},
onEventEmojiVisibleChange(val) {
if (val && this.windowSmall) {
this.onToBottom();

View File

@ -28,10 +28,10 @@ export default {
//
const cloneParams = $A.cloneJSON(params);
return new Promise(function (resolve, reject) {
if (params.spinner === true) {
const {before, complete, spinnerDelay} = params;
if (params.spinner === true || (typeof params.spinner === "number" && params.spinner > 0)) {
const {before, complete} = params;
params.before = () => {
dispatch("showSpinner", spinnerDelay)
dispatch("showSpinner", typeof params.spinner === "number" ? params.spinner : 0)
typeof before === "function" && before()
};
//