mirror of
https://github.com/kuaifan/dootask.git
synced 2026-04-24 10:48:06 +00:00
no message
This commit is contained in:
parent
b3286c8f74
commit
c1b218c133
@ -99,7 +99,7 @@ class SystemController extends AbstractController
|
|||||||
*
|
*
|
||||||
* @apiParam {String} type
|
* @apiParam {String} type
|
||||||
* - get: 获取(默认)
|
* - get: 获取(默认)
|
||||||
* - save: 保存设置(参数:['smtp_server', 'port', 'account', 'password', 'reg_verify', 'notice', 'task_remind_hours', 'task_remind_hours2', 'notice_msg', 'msg_unread_user_minute', 'msg_unread_group_minute'])
|
* - save: 保存设置(参数:['smtp_server', 'port', 'account', 'password', 'reg_verify', 'notice', 'task_start_minute', 'task_remind_hours', 'task_remind_hours2', 'notice_msg', 'msg_unread_user_minute', 'msg_unread_group_minute'])
|
||||||
* @apiSuccess {Number} ret 返回状态码(1正确、0错误)
|
* @apiSuccess {Number} ret 返回状态码(1正确、0错误)
|
||||||
* @apiSuccess {String} msg 返回信息(错误描述)
|
* @apiSuccess {String} msg 返回信息(错误描述)
|
||||||
* @apiSuccess {Object} data 返回数据
|
* @apiSuccess {Object} data 返回数据
|
||||||
@ -122,6 +122,7 @@ class SystemController extends AbstractController
|
|||||||
'password',
|
'password',
|
||||||
'reg_verify',
|
'reg_verify',
|
||||||
'notice',
|
'notice',
|
||||||
|
'task_start_minute',
|
||||||
'task_remind_hours',
|
'task_remind_hours',
|
||||||
'task_remind_hours2',
|
'task_remind_hours2',
|
||||||
'notice_msg',
|
'notice_msg',
|
||||||
@ -142,11 +143,12 @@ class SystemController extends AbstractController
|
|||||||
$setting['password'] = $setting['password'] ?: '';
|
$setting['password'] = $setting['password'] ?: '';
|
||||||
$setting['reg_verify'] = $setting['reg_verify'] ?: 'close';
|
$setting['reg_verify'] = $setting['reg_verify'] ?: 'close';
|
||||||
$setting['notice'] = $setting['notice'] ?: 'close';
|
$setting['notice'] = $setting['notice'] ?: 'close';
|
||||||
$setting['task_remind_hours'] = floatval($setting['task_remind_hours']) ?: 0;
|
$setting['task_start_minute'] = intval($setting['task_start_minute']);
|
||||||
$setting['task_remind_hours2'] = floatval($setting['task_remind_hours2']) ?: 0;
|
$setting['task_remind_hours'] = floatval($setting['task_remind_hours']);
|
||||||
|
$setting['task_remind_hours2'] = floatval($setting['task_remind_hours2']);
|
||||||
$setting['notice_msg'] = $setting['notice_msg'] ?: 'close';
|
$setting['notice_msg'] = $setting['notice_msg'] ?: 'close';
|
||||||
$setting['msg_unread_user_minute'] = floatval($setting['msg_unread_user_minute']) ?: 0;
|
$setting['msg_unread_user_minute'] = intval($setting['msg_unread_user_minute']);
|
||||||
$setting['msg_unread_group_minute'] = floatval($setting['msg_unread_group_minute']) ?: 0;
|
$setting['msg_unread_group_minute'] = intval($setting['msg_unread_group_minute']);
|
||||||
//
|
//
|
||||||
return Base::retSuccess('success', $setting ?: json_decode('{}'));
|
return Base::retSuccess('success', $setting ?: json_decode('{}'));
|
||||||
}
|
}
|
||||||
|
|||||||
@ -14,7 +14,7 @@ use Illuminate\Database\Eloquent\SoftDeletes;
|
|||||||
* @property int|null $userid 用户id
|
* @property int|null $userid 用户id
|
||||||
* @property int|null $task_id 任务id
|
* @property int|null $task_id 任务id
|
||||||
* @property string|null $email 电子邮箱
|
* @property string|null $email 电子邮箱
|
||||||
* @property int|null $type 提醒类型:1第一次任务提醒,2第二次任务超期提醒
|
* @property int|null $type 提醒类型:0 任务开始提醒,1 距离到期提醒,2到期超时提醒
|
||||||
* @property int|null $is_send 邮件发送是否成功:0否,1是
|
* @property int|null $is_send 邮件发送是否成功:0否,1是
|
||||||
* @property string|null $send_error 邮件发送错误详情
|
* @property string|null $send_error 邮件发送错误详情
|
||||||
* @property \Illuminate\Support\Carbon|null $created_at
|
* @property \Illuminate\Support\Carbon|null $created_at
|
||||||
|
|||||||
@ -26,9 +26,23 @@ class EmailNoticeTask extends AbstractTask
|
|||||||
$setting = Base::setting('emailSetting');
|
$setting = Base::setting('emailSetting');
|
||||||
// 任务通知
|
// 任务通知
|
||||||
if ($setting['notice'] === 'open') {
|
if ($setting['notice'] === 'open') {
|
||||||
|
$start = intval($setting['task_start_minute']);
|
||||||
$hours = floatval($setting['task_remind_hours']);
|
$hours = floatval($setting['task_remind_hours']);
|
||||||
$hours2 = floatval($setting['task_remind_hours2']);
|
$hours2 = floatval($setting['task_remind_hours2']);
|
||||||
if ($hours > 0) {
|
if ($start > -1) {
|
||||||
|
ProjectTask::whereNull("complete_at")
|
||||||
|
->whereNull("archived_at")
|
||||||
|
->whereBetween("start_at", [
|
||||||
|
Carbon::now()->subMinutes($start * 60 + 10),
|
||||||
|
Carbon::now()->subMinutes($start * 60)
|
||||||
|
])->chunkById(100, function ($tasks) {
|
||||||
|
/** @var ProjectTask $task */
|
||||||
|
foreach ($tasks as $task) {
|
||||||
|
$this->taskEmail($task, 0);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if ($hours > -1) {
|
||||||
ProjectTask::whereNull("complete_at")
|
ProjectTask::whereNull("complete_at")
|
||||||
->whereNull("archived_at")
|
->whereNull("archived_at")
|
||||||
->whereBetween("end_at", [
|
->whereBetween("end_at", [
|
||||||
@ -37,11 +51,11 @@ class EmailNoticeTask extends AbstractTask
|
|||||||
])->chunkById(100, function ($tasks) {
|
])->chunkById(100, function ($tasks) {
|
||||||
/** @var ProjectTask $task */
|
/** @var ProjectTask $task */
|
||||||
foreach ($tasks as $task) {
|
foreach ($tasks as $task) {
|
||||||
$this->overdueBeforeAfterEmail($task, true);
|
$this->taskEmail($task, 1);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if ($hours2 > 0) {
|
if ($hours2 > -1) {
|
||||||
ProjectTask::whereNull("complete_at")
|
ProjectTask::whereNull("complete_at")
|
||||||
->whereNull("archived_at")
|
->whereNull("archived_at")
|
||||||
->whereBetween("end_at", [
|
->whereBetween("end_at", [
|
||||||
@ -50,16 +64,16 @@ class EmailNoticeTask extends AbstractTask
|
|||||||
])->chunkById(100, function ($tasks) {
|
])->chunkById(100, function ($tasks) {
|
||||||
/** @var ProjectTask $task */
|
/** @var ProjectTask $task */
|
||||||
foreach ($tasks as $task) {
|
foreach ($tasks as $task) {
|
||||||
$this->overdueBeforeAfterEmail($task, false);
|
$this->taskEmail($task, 2);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 消息通知
|
// 消息通知
|
||||||
if ($setting['notice_msg'] === 'open') {
|
if ($setting['notice_msg'] === 'open') {
|
||||||
$userMinute = floatval($setting['msg_unread_user_minute']);
|
$userMinute = intval($setting['msg_unread_user_minute']);
|
||||||
$groupMinute = floatval($setting['msg_unread_group_minute']);
|
$groupMinute = intval($setting['msg_unread_group_minute']);
|
||||||
if ($userMinute > 0) {
|
if ($userMinute > -1) {
|
||||||
WebSocketDialogMsg::select(['web_socket_dialog_msgs.*', 'r.id as r_id', 'r.userid as r_userid'])
|
WebSocketDialogMsg::select(['web_socket_dialog_msgs.*', 'r.id as r_id', 'r.userid as r_userid'])
|
||||||
->join('web_socket_dialog_msg_reads as r', 'web_socket_dialog_msgs.id', '=', 'r.msg_id')
|
->join('web_socket_dialog_msg_reads as r', 'web_socket_dialog_msgs.id', '=', 'r.msg_id')
|
||||||
->where("web_socket_dialog_msgs.dialog_type", "user")
|
->where("web_socket_dialog_msgs.dialog_type", "user")
|
||||||
@ -72,7 +86,7 @@ class EmailNoticeTask extends AbstractTask
|
|||||||
$this->unreadMsgEmail($rows, "user");
|
$this->unreadMsgEmail($rows, "user");
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if ($groupMinute > 0) {
|
if ($groupMinute > -1) {
|
||||||
WebSocketDialogMsg::select(['web_socket_dialog_msgs.*', 'r.id as r_id', 'r.userid as r_userid'])
|
WebSocketDialogMsg::select(['web_socket_dialog_msgs.*', 'r.id as r_id', 'r.userid as r_userid'])
|
||||||
->join('web_socket_dialog_msg_reads as r', 'web_socket_dialog_msgs.id', '=', 'r.msg_id')
|
->join('web_socket_dialog_msg_reads as r', 'web_socket_dialog_msgs.id', '=', 'r.msg_id')
|
||||||
->where("web_socket_dialog_msgs.dialog_type", "group")
|
->where("web_socket_dialog_msgs.dialog_type", "group")
|
||||||
@ -91,10 +105,10 @@ class EmailNoticeTask extends AbstractTask
|
|||||||
/**
|
/**
|
||||||
* 任务过期前、超期后提醒
|
* 任务过期前、超期后提醒
|
||||||
* @param ProjectTask $task
|
* @param ProjectTask $task
|
||||||
* @param $isBefore
|
* @param int $type
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
private function overdueBeforeAfterEmail(ProjectTask $task, $isBefore)
|
private function taskEmail(ProjectTask $task, int $type)
|
||||||
{
|
{
|
||||||
$userids = $task->taskUser->where('owner', 1)->pluck('userid')->toArray();
|
$userids = $task->taskUser->where('owner', 1)->pluck('userid')->toArray();
|
||||||
if (empty($userids)) {
|
if (empty($userids)) {
|
||||||
@ -110,7 +124,7 @@ class EmailNoticeTask extends AbstractTask
|
|||||||
/** @var User $user */
|
/** @var User $user */
|
||||||
foreach ($users as $user) {
|
foreach ($users as $user) {
|
||||||
$data = [
|
$data = [
|
||||||
'type' => $isBefore ? 1 : 2,
|
'type' => $type,
|
||||||
'userid' => $user->userid,
|
'userid' => $user->userid,
|
||||||
'task_id' => $task->id,
|
'task_id' => $task->id,
|
||||||
];
|
];
|
||||||
@ -122,13 +136,13 @@ class EmailNoticeTask extends AbstractTask
|
|||||||
if (!Base::isEmail($user->email)) {
|
if (!Base::isEmail($user->email)) {
|
||||||
throw new \Exception("User email '{$user->email}' address error");
|
throw new \Exception("User email '{$user->email}' address error");
|
||||||
}
|
}
|
||||||
if ($isBefore) {
|
$subject = match ($type) {
|
||||||
$subject = env('APP_NAME') . " 任务提醒";
|
1 => env('APP_NAME') . " 任务提醒",
|
||||||
} else {
|
2 => env('APP_NAME') . " 任务过期提醒",
|
||||||
$subject = env('APP_NAME') . " 任务过期提醒";
|
default => env('APP_NAME') . " 任务开始提醒",
|
||||||
}
|
};
|
||||||
$content = view('email.task', [
|
$content = view('email.task', [
|
||||||
'type' => $isBefore ? 'before' : 'after',
|
'type' => str_replace([0, 1, 2], ['start', 'before', 'after'], $type),
|
||||||
'user' => $user,
|
'user' => $user,
|
||||||
'task' => $task,
|
'task' => $task,
|
||||||
'setting' => $setting,
|
'setting' => $setting,
|
||||||
|
|||||||
@ -18,7 +18,7 @@ class CreateProjectTaskMailLogsTable extends Migration
|
|||||||
$table->bigInteger('userid')->nullable()->default(0)->comment('用户id');
|
$table->bigInteger('userid')->nullable()->default(0)->comment('用户id');
|
||||||
$table->integer('task_id')->nullable()->default(0)->comment('任务id');
|
$table->integer('task_id')->nullable()->default(0)->comment('任务id');
|
||||||
$table->string('email')->nullable()->default('')->comment('电子邮箱');
|
$table->string('email')->nullable()->default('')->comment('电子邮箱');
|
||||||
$table->tinyInteger('type')->nullable()->default(0)->comment('提醒类型:1第一次任务提醒,2第二次任务超期提醒');
|
$table->tinyInteger('type')->nullable()->default(0)->comment('提醒类型:0 任务开始提醒,1 距离到期提醒,2到期超时提醒');
|
||||||
$table->tinyInteger('is_send')->nullable()->default(0)->comment('邮件发送是否成功:0否,1是');
|
$table->tinyInteger('is_send')->nullable()->default(0)->comment('邮件发送是否成功:0否,1是');
|
||||||
$table->timestamps();
|
$table->timestamps();
|
||||||
});
|
});
|
||||||
|
|||||||
2
public/css/app.css
vendored
2
public/css/app.css
vendored
File diff suppressed because one or more lines are too long
2
public/js/app.js
vendored
2
public/js/app.js
vendored
File diff suppressed because one or more lines are too long
2
public/js/build/123.js
vendored
2
public/js/build/123.js
vendored
File diff suppressed because one or more lines are too long
2
public/js/build/334.js
vendored
2
public/js/build/334.js
vendored
File diff suppressed because one or more lines are too long
@ -8,7 +8,7 @@
|
|||||||
/*!
|
/*!
|
||||||
* The buffer module from node.js, for the browser.
|
* The buffer module from node.js, for the browser.
|
||||||
*
|
*
|
||||||
* @author Feross Aboukhadijeh <https://feross.org>
|
* @author Feross Aboukhadijeh <http://feross.org>
|
||||||
* @license MIT
|
* @license MIT
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|||||||
2
public/js/build/421.js
vendored
2
public/js/build/421.js
vendored
File diff suppressed because one or more lines are too long
@ -8,7 +8,7 @@
|
|||||||
/*!
|
/*!
|
||||||
* The buffer module from node.js, for the browser.
|
* The buffer module from node.js, for the browser.
|
||||||
*
|
*
|
||||||
* @author Feross Aboukhadijeh <https://feross.org>
|
* @author Feross Aboukhadijeh <http://feross.org>
|
||||||
* @license MIT
|
* @license MIT
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|||||||
2
public/js/build/494.js
vendored
2
public/js/build/494.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
2
public/js/build/626.js
vendored
2
public/js/build/626.js
vendored
File diff suppressed because one or more lines are too long
@ -8,7 +8,7 @@
|
|||||||
/*!
|
/*!
|
||||||
* The buffer module from node.js, for the browser.
|
* The buffer module from node.js, for the browser.
|
||||||
*
|
*
|
||||||
* @author Feross Aboukhadijeh <https://feross.org>
|
* @author Feross Aboukhadijeh <http://feross.org>
|
||||||
* @license MIT
|
* @license MIT
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|||||||
2
public/js/build/824.js
vendored
2
public/js/build/824.js
vendored
File diff suppressed because one or more lines are too long
2
public/js/build/889.js
vendored
2
public/js/build/889.js
vendored
File diff suppressed because one or more lines are too long
@ -8,7 +8,7 @@
|
|||||||
/*!
|
/*!
|
||||||
* The buffer module from node.js, for the browser.
|
* The buffer module from node.js, for the browser.
|
||||||
*
|
*
|
||||||
* @author Feross Aboukhadijeh <https://feross.org>
|
* @author Feross Aboukhadijeh <http://feross.org>
|
||||||
* @license MIT
|
* @license MIT
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
6a920b027ebf78a4
|
19f9a906c4027927
|
||||||
|
|||||||
@ -37,15 +37,25 @@
|
|||||||
<Radio label="close">{{ $L('关闭') }}</Radio>
|
<Radio label="close">{{ $L('关闭') }}</Radio>
|
||||||
</RadioGroup>
|
</RadioGroup>
|
||||||
<Form v-if="formData.notice == 'open'" @submit.native.prevent>
|
<Form v-if="formData.notice == 'open'" @submit.native.prevent>
|
||||||
|
<FormItem :label="$L('任务开始')" prop="task_start_minute">
|
||||||
|
<div class="input-number-box">
|
||||||
|
<InputNumber v-model="formData.task_start_minute" :min="0" :step="1"/>
|
||||||
|
<label>{{ $L('分钟') }}</label>
|
||||||
|
</div>
|
||||||
|
</FormItem>
|
||||||
<FormItem :label="$L('距离到期')" prop="task_remind_hours">
|
<FormItem :label="$L('距离到期')" prop="task_remind_hours">
|
||||||
<InputNumber v-model="formData.task_remind_hours" :min="0" :step="0.5" @on-change="hoursChange($event, 'task_remind_hours')"/>
|
<div class="input-number-box">
|
||||||
<label>{{ $L('小时') }}</label>
|
<InputNumber v-model="formData.task_remind_hours" :min="0" :step="0.5" @on-change="hoursChange($event, 'task_remind_hours')"/>
|
||||||
|
<label>{{ $L('小时') }}</label>
|
||||||
|
</div>
|
||||||
</FormItem>
|
</FormItem>
|
||||||
<FormItem :label="$L('超时')" prop="task_remind_hours2">
|
<FormItem :label="$L('到期超时')" prop="task_remind_hours2">
|
||||||
<InputNumber v-model="formData.task_remind_hours2" :min="0" :step="0.5" @on-change="hoursChange($event, 'task_remind_hours2')"/>
|
<div class="input-number-box">
|
||||||
<label>{{ $L('小时') }}</label>
|
<InputNumber v-model="formData.task_remind_hours2" :min="0" :step="0.5" @on-change="hoursChange($event, 'task_remind_hours2')"/>
|
||||||
|
<label>{{ $L('小时') }}</label>
|
||||||
|
</div>
|
||||||
</FormItem>
|
</FormItem>
|
||||||
<div class="form-tip">{{$L('填写0则不通知,误差±10分钟')}}</div>
|
<div class="form-tip">{{$L('填写-1则不通知,误差±10分钟')}}</div>
|
||||||
</Form>
|
</Form>
|
||||||
</FormItem>
|
</FormItem>
|
||||||
<FormItem :label="$L('消息提醒')" prop="notice_msg">
|
<FormItem :label="$L('消息提醒')" prop="notice_msg">
|
||||||
@ -55,14 +65,18 @@
|
|||||||
</RadioGroup>
|
</RadioGroup>
|
||||||
<Form v-if="formData.notice_msg == 'open'" @submit.native.prevent>
|
<Form v-if="formData.notice_msg == 'open'" @submit.native.prevent>
|
||||||
<FormItem :label="$L('未读个人消息')" prop="msg_unread_user_minute">
|
<FormItem :label="$L('未读个人消息')" prop="msg_unread_user_minute">
|
||||||
<InputNumber v-model="formData.msg_unread_user_minute" :min="0" :step="1"/>
|
<div class="input-number-box">
|
||||||
<label>{{ $L('分钟') }}</label>
|
<InputNumber v-model="formData.msg_unread_user_minute" :min="0" :step="1"/>
|
||||||
|
<label>{{ $L('分钟') }}</label>
|
||||||
|
</div>
|
||||||
</FormItem>
|
</FormItem>
|
||||||
<FormItem :label="$L('未读群聊消息')" prop="msg_unread_group_minute">
|
<FormItem :label="$L('未读群聊消息')" prop="msg_unread_group_minute">
|
||||||
<InputNumber v-model="formData.msg_unread_group_minute" :min="0" :step="1"/>
|
<div class="input-number-box">
|
||||||
<label>{{ $L('分钟') }}</label>
|
<InputNumber v-model="formData.msg_unread_group_minute" :min="0" :step="1"/>
|
||||||
|
<label>{{ $L('分钟') }}</label>
|
||||||
|
</div>
|
||||||
</FormItem>
|
</FormItem>
|
||||||
<div class="form-tip">{{$L('填写0则不通知,误差±10分钟')}}</div>
|
<div class="form-tip">{{$L('填写-1则不通知,误差±10分钟')}}</div>
|
||||||
</Form>
|
</Form>
|
||||||
</FormItem>
|
</FormItem>
|
||||||
</div>
|
</div>
|
||||||
@ -87,11 +101,12 @@ export default {
|
|||||||
password: '',
|
password: '',
|
||||||
reg_verify: 'colse',
|
reg_verify: 'colse',
|
||||||
notice: 'open',
|
notice: 'open',
|
||||||
task_remind_hours: 0,
|
task_start_minute: -1,
|
||||||
task_remind_hours2: 0,
|
task_remind_hours: -1,
|
||||||
|
task_remind_hours2: -1,
|
||||||
notice_msg: 'open',
|
notice_msg: 'open',
|
||||||
msg_unread_user_minute: 0,
|
msg_unread_user_minute: -1,
|
||||||
msg_unread_group_minute: 0,
|
msg_unread_group_minute: -1,
|
||||||
},
|
},
|
||||||
ruleData: {},
|
ruleData: {},
|
||||||
}
|
}
|
||||||
|
|||||||
29
resources/assets/sass/pages/common.scss
vendored
29
resources/assets/sass/pages/common.scss
vendored
@ -7,6 +7,35 @@ body {
|
|||||||
padding: 5px 0;
|
padding: 5px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.input-number-box {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
border: 1px solid #dcdee2;
|
||||||
|
border-radius: 4px;
|
||||||
|
.ivu-input-number {
|
||||||
|
width: 72px;
|
||||||
|
margin: 0;
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
> label {
|
||||||
|
color: #515a6e;
|
||||||
|
text-align: center;
|
||||||
|
background-color: #f8f8f9;
|
||||||
|
padding: 0 7px;
|
||||||
|
font-weight: 400;
|
||||||
|
&:first-child {
|
||||||
|
border-left: 1px solid transparent;
|
||||||
|
border-right: 1px solid #dcdee2;
|
||||||
|
border-radius: 4px 0 0 4px;
|
||||||
|
}
|
||||||
|
&:last-child {
|
||||||
|
border-left: 1px solid #dcdee2;
|
||||||
|
border-right: 1px solid transparent;
|
||||||
|
border-radius: 0 4px 4px 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.ivu-input,
|
.ivu-input,
|
||||||
.ivu-select-selection {
|
.ivu-select-selection {
|
||||||
border-color: #e8e8e8;
|
border-color: #e8e8e8;
|
||||||
|
|||||||
@ -241,9 +241,6 @@
|
|||||||
.ivu-form-item-content {
|
.ivu-form-item-content {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
.ivu-input-number {
|
|
||||||
margin: 0 8px;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,8 @@
|
|||||||
|
<p>{{ $user->nickname }} 您好:</p>
|
||||||
@if ($type === 'before')
|
@if ($type === 'before')
|
||||||
<p>{{ $user->nickname }} 您好:</p><p>您有一个任务【{{ $task->name }}】还有{{ $setting['task_remind_hours'] }}小时即将超时,请及时处理。</p>
|
<p>您有一个任务【{{ $task->name }}】还有{{ $setting['task_remind_hours'] }}小时即将超时,请及时处理。</p>
|
||||||
|
@elseif ($type === 'after')
|
||||||
|
<p>您的任务【{{ $task->name }}】已经超时{{ $setting['task_remind_hours2'] }}小时,请及时处理。</p>
|
||||||
@else
|
@else
|
||||||
<p>{{ $user->nickname }} 您好:</p><p>您的任务【{{ $task->name }}】已经超时{{ $setting['task_remind_hours2'] }}小时,请及时处理。</p>
|
<p>您有一个新任务【{{ $task->name }}】已开始,请及时处理。</p>
|
||||||
@endif
|
@endif
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user