mirror of
https://github.com/kuaifan/dootask.git
synced 2025-12-14 21:02:49 +00:00
perf: 优化转发消息
This commit is contained in:
parent
62b40ddb84
commit
0ffbaaaeaa
@ -1521,6 +1521,7 @@ class DialogController extends AbstractController
|
||||
* @apiParam {Number} file_id 消息ID
|
||||
* @apiParam {Array} dialogids 转发给的对话ID
|
||||
* @apiParam {Array} userids 转发给的成员ID
|
||||
* @apiParam {String} leave_message 转发留言
|
||||
*
|
||||
* @apiSuccess {Number} ret 返回状态码(1正确、0错误)
|
||||
* @apiSuccess {String} msg 返回信息(错误描述)
|
||||
@ -1533,14 +1534,18 @@ class DialogController extends AbstractController
|
||||
$file_id = intval(Request::input("file_id"));
|
||||
$dialogids = Request::input('dialogids');
|
||||
$userids = Request::input('userids');
|
||||
$leave_message = Request::input('leave_message');
|
||||
//
|
||||
if (empty($dialogids) && empty($userids)) {
|
||||
return Base::retError("请选择转发对话或成员");
|
||||
return Base::retError("请选择对话或成员");
|
||||
}
|
||||
//
|
||||
$file = File::permissionFind($file_id, $user);
|
||||
$fileLink = $file->getShareLink($user->userid);
|
||||
$fileMsg = "<a class=\"mention file\" href=\"{{RemoteURL}}single/file/{$fileLink['code']}\" target=\"_blank\">~{$file->getNameAndExt()}</a>";
|
||||
$fileMsg = "<p><a class=\"mention file\" href=\"{{RemoteURL}}single/file/{$fileLink['code']}\" target=\"_blank\">~{$file->getNameAndExt()}</a></p>";
|
||||
if ($leave_message) {
|
||||
$fileMsg .= "<p>{$leave_message}</p>";
|
||||
}
|
||||
//
|
||||
return AbstractModel::transaction(function() use ($user, $fileMsg, $userids, $dialogids) {
|
||||
$msgs = [];
|
||||
@ -2115,7 +2120,7 @@ class DialogController extends AbstractController
|
||||
* @apiParam {Array} dialogids 转发给的对话ID
|
||||
* @apiParam {Array} userids 转发给的成员ID
|
||||
* @apiParam {Number} show_source 是否显示原发送者信息
|
||||
* @apiParam {Array} leave_message 转发留言
|
||||
* @apiParam {String} leave_message 转发留言
|
||||
*
|
||||
* @apiSuccess {Number} ret 返回状态码(1正确、0错误)
|
||||
* @apiSuccess {String} msg 返回信息(错误描述)
|
||||
@ -2132,7 +2137,7 @@ class DialogController extends AbstractController
|
||||
$leave_message = Request::input('leave_message');
|
||||
//
|
||||
if (empty($dialogids) && empty($userids)) {
|
||||
return Base::retError("请选择转发对话或成员");
|
||||
return Base::retError("请选择对话或成员");
|
||||
}
|
||||
//
|
||||
$msg = WebSocketDialogMsg::whereId($msg_id)->first();
|
||||
|
||||
@ -470,7 +470,7 @@
|
||||
<Forwarder
|
||||
ref="forwarder"
|
||||
:title="$L('转发')"
|
||||
:confirm-title="$L('转发确认')"
|
||||
:confirm-title="$L('确认转发')"
|
||||
:multiple-max="50"
|
||||
:msg-detail="operateItem"
|
||||
:before-submit="onForward"/>
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<!-- 转发确认 -->
|
||||
<!-- 确认转发 -->
|
||||
<Modal
|
||||
v-model="show"
|
||||
:title="title"
|
||||
@ -28,7 +28,7 @@
|
||||
</div>
|
||||
<div class="twice-affirm-body-extend">
|
||||
<div class="forwarder-wrapper-body">
|
||||
<div class="dialog-wrapper inde-list">
|
||||
<div v-if="msgDetail" class="dialog-wrapper inde-list">
|
||||
<Scrollbar class-name="dialog-scroller">
|
||||
<DialogItem
|
||||
:source="msgDetail"
|
||||
@ -64,7 +64,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<template #footer>
|
||||
<div class="forwarder-wrapper-footer" :class="{selected: !sender}" @click="onSender">
|
||||
<div v-if="!senderHidden" class="forwarder-wrapper-footer" :class="{selected: !sender}" @click="onSender">
|
||||
<Icon class="user-modal-icon" :type="sender ? 'ios-radio-button-off' : 'ios-checkmark-circle'" />
|
||||
<span class="forward-text-tip">{{$L('不显示原发送者信息')}}</span>
|
||||
</div>
|
||||
@ -113,7 +113,7 @@ export default {
|
||||
// 消息详情
|
||||
msgDetail: {
|
||||
type: Object,
|
||||
default: () => ({})
|
||||
default: null
|
||||
},
|
||||
},
|
||||
|
||||
@ -177,10 +177,13 @@ export default {
|
||||
this.hide()
|
||||
return
|
||||
}
|
||||
const before = this.beforeSubmit({
|
||||
const data = {
|
||||
message: this.message,
|
||||
sender: this.sender,
|
||||
});
|
||||
}
|
||||
if (!this.senderHidden) {
|
||||
data.sender = this.sender
|
||||
}
|
||||
const before = this.beforeSubmit(data);
|
||||
if (before && before.then) {
|
||||
this.loading = true
|
||||
before.then(() => {
|
||||
|
||||
@ -10,7 +10,7 @@
|
||||
show-dialog
|
||||
module/>
|
||||
|
||||
<!-- 转发确认 -->
|
||||
<!-- 确认转发 -->
|
||||
<ForwardConfirm
|
||||
ref="forwardConfirm"
|
||||
v-model="confirmShow"
|
||||
@ -58,7 +58,7 @@ export default {
|
||||
// 消息详情
|
||||
msgDetail: {
|
||||
type: Object,
|
||||
default: () => ({})
|
||||
default: null
|
||||
},
|
||||
},
|
||||
|
||||
@ -105,7 +105,9 @@ export default {
|
||||
//
|
||||
data.dialogids = selects.filter(value => $A.leftExists(value, 'd:')).map(value => value.replace('d:', ''));
|
||||
data.userids = selects.filter(value => !$A.leftExists(value, 'd:'));
|
||||
data.msg_id = this.msgDetail.id;
|
||||
if (this.msgDetail) {
|
||||
data.msg_id = this.msgDetail.id;
|
||||
}
|
||||
//
|
||||
const success = () => {
|
||||
this.$refs.forwardSelect.hide();
|
||||
@ -115,6 +117,15 @@ export default {
|
||||
success()
|
||||
return
|
||||
}
|
||||
/**
|
||||
* data = {
|
||||
* dialogids: [], // 对话ID
|
||||
* userids: [], // 用户ID
|
||||
* message: '', // 留言内容
|
||||
* msg_id: 0 // 消息ID(msgDetail != null 时有此参数)
|
||||
* sender: true // 是否隐藏原发送者信息(senderHidden != true 时有此参数)
|
||||
* }
|
||||
*/
|
||||
const before = this.beforeSubmit(data);
|
||||
if (before && before.then) {
|
||||
before.then(success).catch(reject)
|
||||
|
||||
@ -373,15 +373,13 @@
|
||||
</Modal>
|
||||
|
||||
<!-- 文件发送 -->
|
||||
<UserSelect
|
||||
ref="sendFile"
|
||||
v-model="sendData"
|
||||
:multiple-max="50"
|
||||
<Forwarder
|
||||
ref="forwarder"
|
||||
:title="$L('发送文件')"
|
||||
:confirm-title="$L('确认发送')"
|
||||
:multiple-max="50"
|
||||
:before-submit="onSendFile"
|
||||
:show-select-all="false"
|
||||
show-dialog
|
||||
module/>
|
||||
sender-hidden/>
|
||||
|
||||
<!--文件链接-->
|
||||
<Modal
|
||||
@ -448,13 +446,14 @@ import DrawerOverlay from "../../components/DrawerOverlay";
|
||||
import longpress from "../../directives/longpress";
|
||||
import UserSelect from "../../components/UserSelect.vue";
|
||||
import UserAvatarTip from "../../components/UserAvatar/tip.vue";
|
||||
import Forwarder from "./components/Forwarder/index.vue";
|
||||
|
||||
const FilePreview = () => import('./components/FilePreview');
|
||||
const FileContent = () => import('./components/FileContent');
|
||||
const FileObject = {sort: null, mode: null, shared: null};
|
||||
|
||||
export default {
|
||||
components: {UserAvatarTip, UserSelect, FilePreview, DrawerOverlay, FileContent},
|
||||
components: {Forwarder, UserAvatarTip, UserSelect, FilePreview, DrawerOverlay, FileContent},
|
||||
directives: {longpress},
|
||||
data() {
|
||||
return {
|
||||
@ -527,7 +526,6 @@ export default {
|
||||
shareLoad: 0,
|
||||
|
||||
sendFileId: 0,
|
||||
sendData: [],
|
||||
|
||||
linkShow: false,
|
||||
linkData: {},
|
||||
@ -1253,8 +1251,7 @@ export default {
|
||||
|
||||
case 'send':
|
||||
this.sendFileId = item.id;
|
||||
this.sendData = [];
|
||||
this.$refs.sendFile.onSelection()
|
||||
this.$refs.forwarder.onSelection()
|
||||
break;
|
||||
|
||||
case 'share':
|
||||
@ -1325,20 +1322,14 @@ export default {
|
||||
}
|
||||
},
|
||||
|
||||
onSendFile() {
|
||||
onSendFile({dialogids, userids, message}) {
|
||||
return new Promise((resolve, reject) => {
|
||||
if (this.sendData.length === 0) {
|
||||
$A.messageError("请选择转发对话或成员");
|
||||
reject();
|
||||
return
|
||||
}
|
||||
const dialogids = this.sendData.filter(value => $A.leftExists(value, 'd:')).map(value => value.replace('d:', ''));
|
||||
const userids = this.sendData.filter(value => !$A.leftExists(value, 'd:'));
|
||||
this.$store.dispatch("call", {
|
||||
url: 'dialog/msg/sendfileid',
|
||||
data: {
|
||||
dialogids,
|
||||
userids,
|
||||
leave_message: message,
|
||||
file_id: this.sendFileId
|
||||
}
|
||||
}).then(({data, msg}) => {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user