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