mirror of
https://github.com/kuaifan/dootask.git
synced 2025-12-14 12:42:51 +00:00
feat: 新增任务发送功能
This commit is contained in:
parent
bd157d305e
commit
b560c0bafd
@ -19,6 +19,7 @@ use App\Module\TimeRange;
|
|||||||
use App\Module\MsgTool;
|
use App\Module\MsgTool;
|
||||||
use App\Module\Table\OnlineData;
|
use App\Module\Table\OnlineData;
|
||||||
use App\Models\FileContent;
|
use App\Models\FileContent;
|
||||||
|
use App\Models\ProjectTask;
|
||||||
use App\Models\AbstractModel;
|
use App\Models\AbstractModel;
|
||||||
use App\Models\WebSocketDialog;
|
use App\Models\WebSocketDialog;
|
||||||
use App\Models\WebSocketDialogMsg;
|
use App\Models\WebSocketDialogMsg;
|
||||||
@ -1543,6 +1544,45 @@ class DialogController extends AbstractController
|
|||||||
return WebSocketDialogMsg::sendMsgBatch($user, $userids, $dialogids, $fileMsg);
|
return WebSocketDialogMsg::sendMsgBatch($user, $userids, $dialogids, $fileMsg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @api {get} api/dialog/msg/sendtaskid 29. 通过任务ID发送任务
|
||||||
|
*
|
||||||
|
* @apiDescription 需要token身份
|
||||||
|
* @apiVersion 1.0.0
|
||||||
|
* @apiGroup dialog
|
||||||
|
* @apiName msg__sendtaskid
|
||||||
|
*
|
||||||
|
* @apiParam {Number} task_id 消息ID
|
||||||
|
* @apiParam {Array} dialogids 转发给的对话ID
|
||||||
|
* @apiParam {Array} userids 转发给的成员ID
|
||||||
|
* @apiParam {String} leave_message 转发留言
|
||||||
|
*
|
||||||
|
* @apiSuccess {Number} ret 返回状态码(1正确、0错误)
|
||||||
|
* @apiSuccess {String} msg 返回信息(错误描述)
|
||||||
|
* @apiSuccess {Object} data 返回数据
|
||||||
|
*/
|
||||||
|
public function msg__sendtaskid()
|
||||||
|
{
|
||||||
|
$user = User::auth();
|
||||||
|
//
|
||||||
|
$task_id = intval(Request::input("task_id"));
|
||||||
|
$dialogids = Request::input('dialogids');
|
||||||
|
$userids = Request::input('userids');
|
||||||
|
$leave_message = Request::input('leave_message');
|
||||||
|
//
|
||||||
|
if (empty($dialogids) && empty($userids)) {
|
||||||
|
return Base::retError("请选择对话或成员");
|
||||||
|
}
|
||||||
|
//
|
||||||
|
$task = ProjectTask::userTask($task_id, null);
|
||||||
|
$taskMsg = "<p><span class=\"mention task\" data-id=\"{$task_id}\">#{$task->name}</span></p>";
|
||||||
|
if ($leave_message) {
|
||||||
|
$taskMsg .= "<p>{$leave_message}</p>";
|
||||||
|
}
|
||||||
|
//
|
||||||
|
return WebSocketDialogMsg::sendMsgBatch($user, $userids, $dialogids, $taskMsg);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @api {post} api/dialog/msg/sendanon 30. 发送匿名消息
|
* @api {post} api/dialog/msg/sendanon 30. 发送匿名消息
|
||||||
*
|
*
|
||||||
|
|||||||
@ -43,7 +43,12 @@
|
|||||||
|
|
||||||
<template v-if="task.parent_id === 0">
|
<template v-if="task.parent_id === 0">
|
||||||
<template v-if="operationShow">
|
<template v-if="operationShow">
|
||||||
<EDropdownItem :divided="turns.length > 0" command="archived">
|
<EDropdownItem command="send" :divided="turns.length > 0">
|
||||||
|
<div class="item">
|
||||||
|
<i class="taskfont movefont"></i>{{$L('发送')}}
|
||||||
|
</div>
|
||||||
|
</EDropdownItem>
|
||||||
|
<EDropdownItem command="archived">
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<Icon type="ios-filing" />{{$L(task.archived_at ? '还原归档' : '归档')}}
|
<Icon type="ios-filing" />{{$L(task.archived_at ? '还原归档' : '归档')}}
|
||||||
</div>
|
</div>
|
||||||
@ -89,16 +94,28 @@
|
|||||||
footer-hide>
|
footer-hide>
|
||||||
<TaskMove ref="addTask" v-model="moveTaskShow" :task="task"/>
|
<TaskMove ref="addTask" v-model="moveTaskShow" :task="task"/>
|
||||||
</Modal>
|
</Modal>
|
||||||
|
|
||||||
|
<!-- 发送任务 -->
|
||||||
|
<Forwarder
|
||||||
|
ref="forwarder"
|
||||||
|
:title="$L('发送任务')"
|
||||||
|
:confirm-title="$L('确认发送')"
|
||||||
|
:confirm-placeholder="$L('附言')"
|
||||||
|
:multiple-max="50"
|
||||||
|
:before-submit="onSendTask"
|
||||||
|
sender-hidden/>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import {mapGetters, mapState} from "vuex";
|
import {mapGetters, mapState} from "vuex";
|
||||||
import TaskMove from "./TaskMove";
|
import TaskMove from "./TaskMove";
|
||||||
|
import Forwarder from "./Forwarder/index.vue";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "TaskOperation",
|
name: "TaskOperation",
|
||||||
components: {
|
components: {
|
||||||
|
Forwarder,
|
||||||
TaskMove,
|
TaskMove,
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
@ -285,6 +302,10 @@ export default {
|
|||||||
})
|
})
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'send':
|
||||||
|
this.$refs.forwarder.onSelection()
|
||||||
|
break;
|
||||||
|
|
||||||
case 'archived':
|
case 'archived':
|
||||||
case 'remove':
|
case 'remove':
|
||||||
this.archivedOrRemoveTask(command);
|
this.archivedOrRemoveTask(command);
|
||||||
@ -435,6 +456,28 @@ export default {
|
|||||||
getStyleComputedProperty(element, property) {
|
getStyleComputedProperty(element, property) {
|
||||||
const css = window.getComputedStyle(element, null);
|
const css = window.getComputedStyle(element, null);
|
||||||
return css[property];
|
return css[property];
|
||||||
|
},
|
||||||
|
|
||||||
|
onSendTask({dialogids, userids, message}) {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
this.$store.dispatch("call", {
|
||||||
|
url: 'dialog/msg/sendtaskid',
|
||||||
|
data: {
|
||||||
|
dialogids,
|
||||||
|
userids,
|
||||||
|
leave_message: message,
|
||||||
|
task_id: this.task.id
|
||||||
|
}
|
||||||
|
}).then(({data, msg}) => {
|
||||||
|
this.$store.dispatch("saveDialogMsg", data.msgs);
|
||||||
|
this.$store.dispatch("updateDialogLastMsg", data.msgs);
|
||||||
|
$A.messageSuccess(msg);
|
||||||
|
resolve();
|
||||||
|
}).catch(({msg}) => {
|
||||||
|
$A.modalError(msg);
|
||||||
|
reject();
|
||||||
|
});
|
||||||
|
})
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user