mirror of
https://github.com/kuaifan/dootask.git
synced 2025-12-14 04:32:49 +00:00
fix: 调整统一命名
This commit is contained in:
parent
e504fb845f
commit
1ad0c3a3ec
@ -20,20 +20,20 @@ use App\Models\WebSocketDialogMsg;
|
|||||||
use App\Module\BillMultipleExport;
|
use App\Module\BillMultipleExport;
|
||||||
use Hhxsv5\LaravelS\Swoole\Task\Task;
|
use Hhxsv5\LaravelS\Swoole\Task\Task;
|
||||||
/**
|
/**
|
||||||
* @apiDefine workflow
|
* @apiDefine approve
|
||||||
*
|
*
|
||||||
* 工作流
|
* 工作流
|
||||||
*/
|
*/
|
||||||
class WorkflowController extends AbstractController
|
class ApproveController extends AbstractController
|
||||||
{
|
{
|
||||||
private $flow_url = '';
|
private $flow_url = '';
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
$this->flow_url = env('FLOW_URL') ?: 'http://dootask-workflow-'.env('APP_ID');
|
$this->flow_url = env('FLOW_URL') ?: 'http://dootask-approve-'.env('APP_ID');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @api {get} api/workflow/verifyToken 01. 验证APi登录
|
* @api {get} api/approve/verifyToken 01. 验证APi登录
|
||||||
*
|
*
|
||||||
* @apiVersion 1.0.0
|
* @apiVersion 1.0.0
|
||||||
* @apiGroup users
|
* @apiGroup users
|
||||||
@ -54,11 +54,11 @@ class WorkflowController extends AbstractController
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @api {post} api/workflow/procdef/all 02. 查询流程定义
|
* @api {post} api/approve/procdef/all 02. 查询流程定义
|
||||||
*
|
*
|
||||||
* @apiDescription 需要token身份
|
* @apiDescription 需要token身份
|
||||||
* @apiVersion 1.0.0
|
* @apiVersion 1.0.0
|
||||||
* @apiGroup workflow
|
* @apiGroup approve
|
||||||
* @apiName procdef__all
|
* @apiName procdef__all
|
||||||
*
|
*
|
||||||
* @apiQuery {String} name 流程名称
|
* @apiQuery {String} name 流程名称
|
||||||
@ -80,11 +80,11 @@ class WorkflowController extends AbstractController
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @api {get} api/workflow/procdef/del 03. 删除流程定义
|
* @api {get} api/approve/procdef/del 03. 删除流程定义
|
||||||
*
|
*
|
||||||
* @apiDescription 需要token身份
|
* @apiDescription 需要token身份
|
||||||
* @apiVersion 1.0.0
|
* @apiVersion 1.0.0
|
||||||
* @apiGroup workflow
|
* @apiGroup approve
|
||||||
* @apiName procdef__del
|
* @apiName procdef__del
|
||||||
*
|
*
|
||||||
* @apiQuery {String} id 流程ID
|
* @apiQuery {String} id 流程ID
|
||||||
@ -106,11 +106,11 @@ class WorkflowController extends AbstractController
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @api {post} api/workflow/process/start 04. 启动流程(审批中)
|
* @api {post} api/approve/process/start 04. 启动流程(审批中)
|
||||||
*
|
*
|
||||||
* @apiDescription 需要token身份
|
* @apiDescription 需要token身份
|
||||||
* @apiVersion 1.0.0
|
* @apiVersion 1.0.0
|
||||||
* @apiGroup workflow
|
* @apiGroup approve
|
||||||
* @apiName process__start
|
* @apiName process__start
|
||||||
*
|
*
|
||||||
* @apiQuery {String} proc_name 流程名称
|
* @apiQuery {String} proc_name 流程名称
|
||||||
@ -153,14 +153,14 @@ class WorkflowController extends AbstractController
|
|||||||
if (empty($dialog)) {
|
if (empty($dialog)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
$this->workflowMsg('workflow_reviewer', $dialog, $botUser, $val, $process, 'start');
|
$this->approveMsg('approve_reviewer', $dialog, $botUser, $val, $process, 'start');
|
||||||
}
|
}
|
||||||
// 抄送人
|
// 抄送人
|
||||||
$notifier = $this->handleProcessNode($process);
|
$notifier = $this->handleProcessNode($process);
|
||||||
if ($notifier) {
|
if ($notifier) {
|
||||||
foreach ($notifier as $val) {
|
foreach ($notifier as $val) {
|
||||||
$dialog = WebSocketDialog::checkUserDialog($botUser, $val['target_id']);
|
$dialog = WebSocketDialog::checkUserDialog($botUser, $val['target_id']);
|
||||||
$this->workflowMsg('workflow_notifier', $dialog, $botUser, $process, $process);
|
$this->approveMsg('approve_notifier', $dialog, $botUser, $process, $process);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -169,11 +169,11 @@ class WorkflowController extends AbstractController
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @api {post} api/workflow/process/addGlobalComment 05. 添加全局评论
|
* @api {post} api/approve/process/addGlobalComment 05. 添加全局评论
|
||||||
*
|
*
|
||||||
* @apiDescription 需要token身份
|
* @apiDescription 需要token身份
|
||||||
* @apiVersion 1.0.0
|
* @apiVersion 1.0.0
|
||||||
* @apiGroup workflow
|
* @apiGroup approve
|
||||||
* @apiName process__addGlobalComment
|
* @apiName process__addGlobalComment
|
||||||
*
|
*
|
||||||
* @apiQuery {Number} proc_inst_id 流程实例ID
|
* @apiQuery {Number} proc_inst_id 流程实例ID
|
||||||
@ -201,11 +201,11 @@ class WorkflowController extends AbstractController
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @api {post} api/workflow/task/complete 06. 审批
|
* @api {post} api/approve/task/complete 06. 审批
|
||||||
*
|
*
|
||||||
* @apiDescription 需要token身份
|
* @apiDescription 需要token身份
|
||||||
* @apiVersion 1.0.0
|
* @apiVersion 1.0.0
|
||||||
* @apiGroup workflow
|
* @apiGroup approve
|
||||||
* @apiName task__complete
|
* @apiName task__complete
|
||||||
*
|
*
|
||||||
* @apiQuery {Number} task_id 流程ID
|
* @apiQuery {Number} task_id 流程ID
|
||||||
@ -243,13 +243,13 @@ class WorkflowController extends AbstractController
|
|||||||
if (empty($dialog)) {
|
if (empty($dialog)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
$this->workflowMsg('workflow_reviewer', $dialog, $botUser, $val, $process, $pass);
|
$this->approveMsg('approve_reviewer', $dialog, $botUser, $val, $process, $pass);
|
||||||
}
|
}
|
||||||
// 发起人
|
// 发起人
|
||||||
if($process['is_finished'] == true) {
|
if($process['is_finished'] == true) {
|
||||||
$dialog = WebSocketDialog::checkUserDialog($botUser, $process['start_user_id']);
|
$dialog = WebSocketDialog::checkUserDialog($botUser, $process['start_user_id']);
|
||||||
if (!empty($dialog)) {
|
if (!empty($dialog)) {
|
||||||
$this->workflowMsg('workflow_submitter', $dialog, $botUser, ['userid' => $data['userid']], $process, $pass);
|
$this->approveMsg('approve_submitter', $dialog, $botUser, ['userid' => $data['userid']], $process, $pass);
|
||||||
}
|
}
|
||||||
}else if ($process['candidate']) {
|
}else if ($process['candidate']) {
|
||||||
// 下个审批人
|
// 下个审批人
|
||||||
@ -263,7 +263,7 @@ class WorkflowController extends AbstractController
|
|||||||
if (empty($dialog)) {
|
if (empty($dialog)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
$this->workflowMsg('workflow_reviewer', $dialog, $botUser, $val, $process,'start');
|
$this->approveMsg('approve_reviewer', $dialog, $botUser, $val, $process,'start');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -273,7 +273,7 @@ class WorkflowController extends AbstractController
|
|||||||
foreach ($notifier as $val) {
|
foreach ($notifier as $val) {
|
||||||
$dialog = WebSocketDialog::checkUserDialog($botUser, $val['target_id']);
|
$dialog = WebSocketDialog::checkUserDialog($botUser, $val['target_id']);
|
||||||
if (!empty($dialog)) {
|
if (!empty($dialog)) {
|
||||||
$this->workflowMsg('workflow_notifier', $dialog, $botUser, $process, $process);
|
$this->approveMsg('approve_notifier', $dialog, $botUser, $process, $process);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -281,11 +281,11 @@ class WorkflowController extends AbstractController
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @api {post} api/workflow/task/withdraw 07. 撤回
|
* @api {post} api/approve/task/withdraw 07. 撤回
|
||||||
*
|
*
|
||||||
* @apiDescription 需要token身份
|
* @apiDescription 需要token身份
|
||||||
* @apiVersion 1.0.0
|
* @apiVersion 1.0.0
|
||||||
* @apiGroup workflow
|
* @apiGroup approve
|
||||||
* @apiName task__withdraw
|
* @apiName task__withdraw
|
||||||
*
|
*
|
||||||
* @apiQuery {Number} task_id 流程ID
|
* @apiQuery {Number} task_id 流程ID
|
||||||
@ -320,17 +320,17 @@ class WorkflowController extends AbstractController
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
//发送撤回提醒
|
//发送撤回提醒
|
||||||
$this->workflowMsg('workflow_reviewer', $dialog, $botUser, $val, $process, 'withdraw');
|
$this->approveMsg('approve_reviewer', $dialog, $botUser, $val, $process, 'withdraw');
|
||||||
}
|
}
|
||||||
return Base::retSuccess('已撤回', Base::arrayKeyToUnderline($task['data']));
|
return Base::retSuccess('已撤回', Base::arrayKeyToUnderline($task['data']));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @api {post} api/workflow/process/findTask 08. 查询需要我审批的流程(审批中)
|
* @api {post} api/approve/process/findTask 08. 查询需要我审批的流程(审批中)
|
||||||
*
|
*
|
||||||
* @apiDescription 需要token身份
|
* @apiDescription 需要token身份
|
||||||
* @apiVersion 1.0.0
|
* @apiVersion 1.0.0
|
||||||
* @apiGroup workflow
|
* @apiGroup approve
|
||||||
* @apiName process__findTask
|
* @apiName process__findTask
|
||||||
*
|
*
|
||||||
* @apiQuery {String} proc_def_name 流程名称
|
* @apiQuery {String} proc_def_name 流程名称
|
||||||
@ -368,11 +368,11 @@ class WorkflowController extends AbstractController
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @api {post} api/workflow/process/startByMyselfAll 09. 查询我启动的流程(全部)
|
* @api {post} api/approve/process/startByMyselfAll 09. 查询我启动的流程(全部)
|
||||||
*
|
*
|
||||||
* @apiDescription 需要token身份
|
* @apiDescription 需要token身份
|
||||||
* @apiVersion 1.0.0
|
* @apiVersion 1.0.0
|
||||||
* @apiGroup workflow
|
* @apiGroup approve
|
||||||
* @apiName process__startByMyselfAll
|
* @apiName process__startByMyselfAll
|
||||||
*
|
*
|
||||||
* @apiQuery {String} proc_def_name 流程分类
|
* @apiQuery {String} proc_def_name 流程分类
|
||||||
@ -410,11 +410,11 @@ class WorkflowController extends AbstractController
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @api {post} api/workflow/process/startByMyself 10. 查询我启动的流程(审批中)
|
* @api {post} api/approve/process/startByMyself 10. 查询我启动的流程(审批中)
|
||||||
*
|
*
|
||||||
* @apiDescription 需要token身份
|
* @apiDescription 需要token身份
|
||||||
* @apiVersion 1.0.0
|
* @apiVersion 1.0.0
|
||||||
* @apiGroup workflow
|
* @apiGroup approve
|
||||||
* @apiName process__startByMyself
|
* @apiName process__startByMyself
|
||||||
*
|
*
|
||||||
* @apiQuery {Number} page 页码
|
* @apiQuery {Number} page 页码
|
||||||
@ -448,11 +448,11 @@ class WorkflowController extends AbstractController
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @api {post} api/workflow/process/findProcNotify 11. 查询抄送我的流程(审批中)
|
* @api {post} api/approve/process/findProcNotify 11. 查询抄送我的流程(审批中)
|
||||||
*
|
*
|
||||||
* @apiDescription 需要token身份
|
* @apiDescription 需要token身份
|
||||||
* @apiVersion 1.0.0
|
* @apiVersion 1.0.0
|
||||||
* @apiGroup workflow
|
* @apiGroup approve
|
||||||
* @apiName process__findProcNotify
|
* @apiName process__findProcNotify
|
||||||
*
|
*
|
||||||
* @apiQuery {Number} userid 用户ID
|
* @apiQuery {Number} userid 用户ID
|
||||||
@ -492,11 +492,11 @@ class WorkflowController extends AbstractController
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @api {get} api/workflow/identitylink/findParticipant 12. 查询流程实例的参与者(审批中)
|
* @api {get} api/approve/identitylink/findParticipant 12. 查询流程实例的参与者(审批中)
|
||||||
*
|
*
|
||||||
* @apiDescription 需要token身份
|
* @apiDescription 需要token身份
|
||||||
* @apiVersion 1.0.0
|
* @apiVersion 1.0.0
|
||||||
* @apiGroup workflow
|
* @apiGroup approve
|
||||||
* @apiName identitylink__findParticipant
|
* @apiName identitylink__findParticipant
|
||||||
*
|
*
|
||||||
* @apiQuery {Number} proc_inst_id 流程实例ID
|
* @apiQuery {Number} proc_inst_id 流程实例ID
|
||||||
@ -527,11 +527,11 @@ class WorkflowController extends AbstractController
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @api {post} api/workflow/procHistory/findTask 13. 查询需要我审批的流程(已结束)
|
* @api {post} api/approve/procHistory/findTask 13. 查询需要我审批的流程(已结束)
|
||||||
*
|
*
|
||||||
* @apiDescription 需要token身份
|
* @apiDescription 需要token身份
|
||||||
* @apiVersion 1.0.0
|
* @apiVersion 1.0.0
|
||||||
* @apiGroup workflow
|
* @apiGroup approve
|
||||||
* @apiName procHistory__findTask
|
* @apiName procHistory__findTask
|
||||||
*
|
*
|
||||||
* @apiQuery {String} proc_def_name 流程分类
|
* @apiQuery {String} proc_def_name 流程分类
|
||||||
@ -569,11 +569,11 @@ class WorkflowController extends AbstractController
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @api {post} api/workflow/procHistory/startByMyself 14. 查询我启动的流程(已结束)
|
* @api {post} api/approve/procHistory/startByMyself 14. 查询我启动的流程(已结束)
|
||||||
*
|
*
|
||||||
* @apiDescription 需要token身份
|
* @apiDescription 需要token身份
|
||||||
* @apiVersion 1.0.0
|
* @apiVersion 1.0.0
|
||||||
* @apiGroup workflow
|
* @apiGroup approve
|
||||||
* @apiName procHistory__startByMyself
|
* @apiName procHistory__startByMyself
|
||||||
*
|
*
|
||||||
* @apiQuery {Number} page 页码
|
* @apiQuery {Number} page 页码
|
||||||
@ -607,11 +607,11 @@ class WorkflowController extends AbstractController
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @api {post} api/workflow/procHistory/findProcNotify 15. 查询抄送我的流程(已结束)
|
* @api {post} api/approve/procHistory/findProcNotify 15. 查询抄送我的流程(已结束)
|
||||||
*
|
*
|
||||||
* @apiDescription 需要token身份
|
* @apiDescription 需要token身份
|
||||||
* @apiVersion 1.0.0
|
* @apiVersion 1.0.0
|
||||||
* @apiGroup workflow
|
* @apiGroup approve
|
||||||
* @apiName procHistory__findProcNotify
|
* @apiName procHistory__findProcNotify
|
||||||
*
|
*
|
||||||
* @apiQuery {String} proc_def_name 流程分类
|
* @apiQuery {String} proc_def_name 流程分类
|
||||||
@ -650,11 +650,11 @@ class WorkflowController extends AbstractController
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @api {get} api/workflow/identitylinkHistory/findParticipant 16. 查询流程实例的参与者(已结束)
|
* @api {get} api/approve/identitylinkHistory/findParticipant 16. 查询流程实例的参与者(已结束)
|
||||||
*
|
*
|
||||||
* @apiDescription 需要token身份
|
* @apiDescription 需要token身份
|
||||||
* @apiVersion 1.0.0
|
* @apiVersion 1.0.0
|
||||||
* @apiGroup workflow
|
* @apiGroup approve
|
||||||
* @apiName identitylinkHistory__findParticipant
|
* @apiName identitylinkHistory__findParticipant
|
||||||
*
|
*
|
||||||
* @apiQuery {Number} proc_inst_id 流程实例ID
|
* @apiQuery {Number} proc_inst_id 流程实例ID
|
||||||
@ -685,11 +685,11 @@ class WorkflowController extends AbstractController
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @api {get} api/workflow/process/detail 17. 根据流程ID查询流程详情
|
* @api {get} api/approve/process/detail 17. 根据流程ID查询流程详情
|
||||||
*
|
*
|
||||||
* @apiDescription 需要token身份
|
* @apiDescription 需要token身份
|
||||||
* @apiVersion 1.0.0
|
* @apiVersion 1.0.0
|
||||||
* @apiGroup workflow
|
* @apiGroup approve
|
||||||
* @apiName process__detail
|
* @apiName process__detail
|
||||||
*
|
*
|
||||||
* @apiQuery {Number} id 流程ID
|
* @apiQuery {Number} id 流程ID
|
||||||
@ -702,16 +702,16 @@ class WorkflowController extends AbstractController
|
|||||||
{
|
{
|
||||||
User::auth();
|
User::auth();
|
||||||
$data['id'] = intval(Request::input('id'));
|
$data['id'] = intval(Request::input('id'));
|
||||||
$workflow = $this->getProcessById($data['id']);
|
$approve = $this->getProcessById($data['id']);
|
||||||
return Base::retSuccess('success', $workflow);
|
return Base::retSuccess('success', $approve);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @api {post} api/workflow/export 18. 导出数据
|
* @api {post} api/approve/export 18. 导出数据
|
||||||
*
|
*
|
||||||
* @apiDescription 需要token身份
|
* @apiDescription 需要token身份
|
||||||
* @apiVersion 1.0.0
|
* @apiVersion 1.0.0
|
||||||
* @apiGroup workflow
|
* @apiGroup approve
|
||||||
* @apiName export
|
* @apiName export
|
||||||
*
|
*
|
||||||
* @apiQuery {String} proc_def_name 流程分类
|
* @apiQuery {String} proc_def_name 流程分类
|
||||||
@ -839,7 +839,7 @@ class WorkflowController extends AbstractController
|
|||||||
];
|
];
|
||||||
//
|
//
|
||||||
$fileName = '审批记录_' . Base::time() . '.xls';
|
$fileName = '审批记录_' . Base::time() . '.xls';
|
||||||
$filePath = "temp/workflow/export/" . date("Ym", Base::time());
|
$filePath = "temp/approve/export/" . date("Ym", Base::time());
|
||||||
$export = new BillMultipleExport($sheets);
|
$export = new BillMultipleExport($sheets);
|
||||||
$res = $export->store($filePath . "/" . $fileName);
|
$res = $export->store($filePath . "/" . $fileName);
|
||||||
if ($res != 1) {
|
if ($res != 1) {
|
||||||
@ -860,10 +860,10 @@ class WorkflowController extends AbstractController
|
|||||||
$base64 = base64_encode(Base::array2string([
|
$base64 = base64_encode(Base::array2string([
|
||||||
'file' => $zipFile,
|
'file' => $zipFile,
|
||||||
]));
|
]));
|
||||||
Session::put('workflow::export:userid', $user->userid);
|
Session::put('approve::export:userid', $user->userid);
|
||||||
return Base::retSuccess('success', [
|
return Base::retSuccess('success', [
|
||||||
'size' => Base::twoFloat(filesize($zipPath) / 1024, true),
|
'size' => Base::twoFloat(filesize($zipPath) / 1024, true),
|
||||||
'url' => Base::fillUrl('api/workflow/down?key=' . urlencode($base64)),
|
'url' => Base::fillUrl('api/approve/down?key=' . urlencode($base64)),
|
||||||
]);
|
]);
|
||||||
} else {
|
} else {
|
||||||
return Base::retError('打包失败,请稍后再试...');
|
return Base::retError('打包失败,请稍后再试...');
|
||||||
@ -882,7 +882,7 @@ class WorkflowController extends AbstractController
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @api {get} api/workflow/down 19. 下载导出的审批数据
|
* @api {get} api/approve/down 19. 下载导出的审批数据
|
||||||
*
|
*
|
||||||
* @apiVersion 1.0.0
|
* @apiVersion 1.0.0
|
||||||
* @apiGroup system
|
* @apiGroup system
|
||||||
@ -894,7 +894,7 @@ class WorkflowController extends AbstractController
|
|||||||
*/
|
*/
|
||||||
public function down()
|
public function down()
|
||||||
{
|
{
|
||||||
$userid = Session::get('workflow::export:userid');
|
$userid = Session::get('approve::export:userid');
|
||||||
if (empty($userid)) {
|
if (empty($userid)) {
|
||||||
return Base::ajaxError("请求已过期,请重新导出!", [], 0, 502);
|
return Base::ajaxError("请求已过期,请重新导出!", [], 0, 502);
|
||||||
}
|
}
|
||||||
@ -947,11 +947,11 @@ class WorkflowController extends AbstractController
|
|||||||
|
|
||||||
|
|
||||||
// 审批机器人消息
|
// 审批机器人消息
|
||||||
public function workflowMsg($type, $dialog, $botUser, $toUser, $process, $action = null)
|
public function approveMsg($type, $dialog, $botUser, $toUser, $process, $action = null)
|
||||||
{
|
{
|
||||||
$data = [
|
$data = [
|
||||||
'id' => $process['id'],
|
'id' => $process['id'],
|
||||||
'nickname' => User::userid2nickname($type == 'workflow_submitter' ? $toUser['userid'] : $process['start_user_id']),
|
'nickname' => User::userid2nickname($type == 'approve_submitter' ? $toUser['userid'] : $process['start_user_id']),
|
||||||
'proc_def_name' => $process['proc_def_name'],
|
'proc_def_name' => $process['proc_def_name'],
|
||||||
'department' => $process['department'],
|
'department' => $process['department'],
|
||||||
'type' => $process['var']['type'],
|
'type' => $process['var']['type'],
|
||||||
@ -964,7 +964,7 @@ class WorkflowController extends AbstractController
|
|||||||
$msg_action = null;
|
$msg_action = null;
|
||||||
if ($action == 'withdraw' || $action == 'pass' || $action == 'refuse') {
|
if ($action == 'withdraw' || $action == 'pass' || $action == 'refuse') {
|
||||||
// 任务完成,给发起人发送消息
|
// 任务完成,给发起人发送消息
|
||||||
if($type == 'workflow_submitter' && $action != 'withdraw'){
|
if($type == 'approve_submitter' && $action != 'withdraw'){
|
||||||
return WebSocketDialogMsg::sendMsg($msg_action, $dialog->id, 'text', ['text' => $text], $botUser->userid, false, false, true);
|
return WebSocketDialogMsg::sendMsg($msg_action, $dialog->id, 'text', ['text' => $text], $botUser->userid, false, false, true);
|
||||||
}
|
}
|
||||||
// 查找最后一条消息msg_id
|
// 查找最后一条消息msg_id
|
||||||
@ -982,12 +982,12 @@ class WorkflowController extends AbstractController
|
|||||||
$proc_msg->save();
|
$proc_msg->save();
|
||||||
}
|
}
|
||||||
// 更新工作报告 未读数量
|
// 更新工作报告 未读数量
|
||||||
if($type == 'workflow_reviewer' && $toUser['userid']){
|
if($type == 'approve_reviewer' && $toUser['userid']){
|
||||||
$params = [
|
$params = [
|
||||||
'userid' => [ $toUser['userid'], User::auth()->userid() ],
|
'userid' => [ $toUser['userid'], User::auth()->userid() ],
|
||||||
'msg' => [
|
'msg' => [
|
||||||
'type' => 'workflow',
|
'type' => 'approve',
|
||||||
'action' => 'backlog',
|
'action' => 'unread',
|
||||||
'userid' => $toUser['userid'],
|
'userid' => $toUser['userid'],
|
||||||
]
|
]
|
||||||
];
|
];
|
||||||
@ -49,7 +49,6 @@ services:
|
|||||||
- drawio-webapp
|
- drawio-webapp
|
||||||
- drawio-export
|
- drawio-export
|
||||||
- minder
|
- minder
|
||||||
- workflow
|
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
redis:
|
redis:
|
||||||
@ -149,8 +148,8 @@ services:
|
|||||||
ipv4_address: "${APP_IPPR}.10"
|
ipv4_address: "${APP_IPPR}.10"
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
workflow:
|
approve:
|
||||||
container_name: "dootask-workflow-${APP_ID}"
|
container_name: "dootask-approve-${APP_ID}"
|
||||||
image: "hitosea2020/go-workflow:latest"
|
image: "hitosea2020/go-workflow:latest"
|
||||||
environment:
|
environment:
|
||||||
TZ: "Asia/Shanghai"
|
TZ: "Asia/Shanghai"
|
||||||
|
|||||||
@ -169,19 +169,19 @@ server {
|
|||||||
proxy_pass http://minder/;
|
proxy_pass http://minder/;
|
||||||
}
|
}
|
||||||
|
|
||||||
# 工作流
|
# 审批
|
||||||
location /workflow/ {
|
location /approve/ {
|
||||||
proxy_pass http://workflow/;
|
proxy_pass http://approve/;
|
||||||
}
|
}
|
||||||
location /workflow/api/ {
|
location /approve/api/ {
|
||||||
auth_request /workflowauth;
|
auth_request /approveAuth;
|
||||||
proxy_pass http://workflow/api/;
|
proxy_pass http://approve/api/;
|
||||||
}
|
}
|
||||||
location /workflowauth {
|
location /approveAuth {
|
||||||
internal;
|
internal;
|
||||||
proxy_set_header Content-Type "application/json";
|
proxy_set_header Content-Type "application/json";
|
||||||
proxy_set_header Content-Length $request_length;
|
proxy_set_header Content-Length $request_length;
|
||||||
proxy_pass http://service/api/workflow/verifyToken;
|
proxy_pass http://service/api/approve/verifyToken;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -79,7 +79,7 @@ export default {
|
|||||||
{icon: '', name: 'joinMeeting', label: '加入会议'},
|
{icon: '', name: 'joinMeeting', label: '加入会议'},
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
{icon: '', name: 'review', label: '审批中心'},
|
{icon: '', name: 'approve', label: '审批中心'},
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
|
||||||
|
|||||||
@ -11,7 +11,7 @@
|
|||||||
<UserAvatar :userid="userId" :size="36" tooltipDisabled/>
|
<UserAvatar :userid="userId" :size="36" tooltipDisabled/>
|
||||||
</div>
|
</div>
|
||||||
<span>{{userInfo.nickname}}</span>
|
<span>{{userInfo.nickname}}</span>
|
||||||
<Badge v-if="(reportUnreadNumber + backlogUnreadNumber) > 0" class="manage-box-top-report" :overflow-count="999" :count="reportUnreadNumber + backlogUnreadNumber"/>
|
<Badge v-if="(reportUnreadNumber + approveUnreadNumber) > 0" class="manage-box-top-report" :overflow-count="999" :count="reportUnreadNumber + approveUnreadNumber"/>
|
||||||
<Badge v-else-if="!!clientNewVersion" class="manage-box-top-report" dot/>
|
<Badge v-else-if="!!clientNewVersion" class="manage-box-top-report" dot/>
|
||||||
<div class="manage-box-arrow">
|
<div class="manage-box-arrow">
|
||||||
<Icon type="ios-arrow-up" />
|
<Icon type="ios-arrow-up" />
|
||||||
@ -72,7 +72,7 @@
|
|||||||
<DropdownItem name="exportTask">{{$L('导出任务统计')}}</DropdownItem>
|
<DropdownItem name="exportTask">{{$L('导出任务统计')}}</DropdownItem>
|
||||||
<DropdownItem name="exportOverdueTask">{{$L('导出超期任务')}}</DropdownItem>
|
<DropdownItem name="exportOverdueTask">{{$L('导出超期任务')}}</DropdownItem>
|
||||||
<DropdownItem name="exportCheckin">{{$L('导出签到数据')}}</DropdownItem>
|
<DropdownItem name="exportCheckin">{{$L('导出签到数据')}}</DropdownItem>
|
||||||
<DropdownItem name="exportWorkflow">{{$L('导出审批数据')}}</DropdownItem>
|
<DropdownItem name="exportApprove">{{$L('导出审批数据')}}</DropdownItem>
|
||||||
</DropdownMenu>
|
</DropdownMenu>
|
||||||
</Dropdown>
|
</Dropdown>
|
||||||
<!-- 其他菜单 -->
|
<!-- 其他菜单 -->
|
||||||
@ -92,9 +92,9 @@
|
|||||||
class="manage-menu-report-badge"
|
class="manage-menu-report-badge"
|
||||||
:count="reportUnreadNumber"/>
|
:count="reportUnreadNumber"/>
|
||||||
<Badge
|
<Badge
|
||||||
v-else-if="item.path === 'review' && backlogUnreadNumber > 0"
|
v-else-if="item.path === 'approve' && approveUnreadNumber > 0"
|
||||||
class="manage-menu-report-badge"
|
class="manage-menu-report-badge"
|
||||||
:count="backlogUnreadNumber"/>
|
:count="approveUnreadNumber"/>
|
||||||
</div>
|
</div>
|
||||||
</DropdownItem>
|
</DropdownItem>
|
||||||
</template>
|
</template>
|
||||||
@ -249,7 +249,7 @@
|
|||||||
<CheckinExport v-model="exportCheckinShow"/>
|
<CheckinExport v-model="exportCheckinShow"/>
|
||||||
|
|
||||||
<!--导出审批数据-->
|
<!--导出审批数据-->
|
||||||
<WorkflowExport v-model="exportWorkflowShow"/>
|
<ApproveExport v-model="exportApproveShow"/>
|
||||||
|
|
||||||
<!--任务详情-->
|
<!--任务详情-->
|
||||||
<TaskModal ref="taskModal"/>
|
<TaskModal ref="taskModal"/>
|
||||||
@ -318,7 +318,7 @@ import DialogModal from "./manage/components/DialogModal";
|
|||||||
import TaskModal from "./manage/components/TaskModal";
|
import TaskModal from "./manage/components/TaskModal";
|
||||||
import CheckinExport from "./manage/components/CheckinExport";
|
import CheckinExport from "./manage/components/CheckinExport";
|
||||||
import TaskExport from "./manage/components/TaskExport";
|
import TaskExport from "./manage/components/TaskExport";
|
||||||
import WorkflowExport from "./manage/components/WorkflowExport";
|
import ApproveExport from "./manage/components/ApproveExport";
|
||||||
import notificationKoro from "notification-koro1";
|
import notificationKoro from "notification-koro1";
|
||||||
import {Store} from "le5le-store";
|
import {Store} from "le5le-store";
|
||||||
|
|
||||||
@ -326,7 +326,7 @@ export default {
|
|||||||
components: {
|
components: {
|
||||||
TaskExport,
|
TaskExport,
|
||||||
CheckinExport,
|
CheckinExport,
|
||||||
WorkflowExport,
|
ApproveExport,
|
||||||
TaskModal,
|
TaskModal,
|
||||||
DialogModal,
|
DialogModal,
|
||||||
MeetingManager,
|
MeetingManager,
|
||||||
@ -364,7 +364,7 @@ export default {
|
|||||||
|
|
||||||
exportTaskShow: false,
|
exportTaskShow: false,
|
||||||
exportCheckinShow: false,
|
exportCheckinShow: false,
|
||||||
exportWorkflowShow: false,
|
exportApproveShow: false,
|
||||||
|
|
||||||
|
|
||||||
dialogMsgSubscribe: null,
|
dialogMsgSubscribe: null,
|
||||||
@ -408,7 +408,7 @@ export default {
|
|||||||
this.$store.dispatch("getUserInfo").catch(_ => {})
|
this.$store.dispatch("getUserInfo").catch(_ => {})
|
||||||
this.$store.dispatch("getTaskPriority").catch(_ => {})
|
this.$store.dispatch("getTaskPriority").catch(_ => {})
|
||||||
this.$store.dispatch("getReportUnread", 0)
|
this.$store.dispatch("getReportUnread", 0)
|
||||||
this.$store.dispatch("getBacklogUnread", 0)
|
this.$store.dispatch("getApproveUnread", 0)
|
||||||
//
|
//
|
||||||
this.$store.dispatch("needHome").then(_ => {
|
this.$store.dispatch("needHome").then(_ => {
|
||||||
this.needStartHome = true
|
this.needStartHome = true
|
||||||
@ -454,7 +454,7 @@ export default {
|
|||||||
'dialogIns',
|
'dialogIns',
|
||||||
|
|
||||||
'reportUnreadNumber',
|
'reportUnreadNumber',
|
||||||
'backlogUnreadNumber',
|
'approveUnreadNumber',
|
||||||
]),
|
]),
|
||||||
|
|
||||||
...mapGetters(['dashboardTask']),
|
...mapGetters(['dashboardTask']),
|
||||||
@ -560,12 +560,12 @@ export default {
|
|||||||
{path: 'archivedProject', name: '已归档的项目'},
|
{path: 'archivedProject', name: '已归档的项目'},
|
||||||
|
|
||||||
{path: 'team', name: '团队管理', divided: true},
|
{path: 'team', name: '团队管理', divided: true},
|
||||||
{path: 'review', name: '审批中心'},
|
{path: 'approve', name: '审批中心'},
|
||||||
])
|
])
|
||||||
} else {
|
} else {
|
||||||
array.push(...[
|
array.push(...[
|
||||||
{path: 'personal', name: '个人设置', divided: true},
|
{path: 'personal', name: '个人设置', divided: true},
|
||||||
{path: 'review', name: '审批中心'},
|
{path: 'approve', name: '审批中心'},
|
||||||
{path: 'version', name: '更新版本', divided: true, visible: !!this.clientNewVersion},
|
{path: 'version', name: '更新版本', divided: true, visible: !!this.clientNewVersion},
|
||||||
|
|
||||||
{path: 'workReport', name: '工作报告', divided: true},
|
{path: 'workReport', name: '工作报告', divided: true},
|
||||||
@ -700,9 +700,9 @@ export default {
|
|||||||
this.$store.dispatch("getReportUnread", 1000)
|
this.$store.dispatch("getReportUnread", 1000)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'workflow':
|
case 'approve':
|
||||||
if (action == 'backlog') {
|
if (action == 'unread') {
|
||||||
this.$store.dispatch("getBacklogUnread", 1000)
|
this.$store.dispatch("getApproveUnread", 1000)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -752,8 +752,8 @@ export default {
|
|||||||
case 'exportCheckin':
|
case 'exportCheckin':
|
||||||
this.exportCheckinShow = true;
|
this.exportCheckinShow = true;
|
||||||
return;
|
return;
|
||||||
case 'exportWorkflow':
|
case 'exportApprove':
|
||||||
this.exportWorkflowShow = true;
|
this.exportApproveShow = true;
|
||||||
return;
|
return;
|
||||||
case 'workReport':
|
case 'workReport':
|
||||||
if (this.reportUnreadNumber > 0) {
|
if (this.reportUnreadNumber > 0) {
|
||||||
@ -774,9 +774,9 @@ export default {
|
|||||||
this.goForward('index');
|
this.goForward('index');
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
case 'review':
|
case 'approve':
|
||||||
if (this.menu.findIndex((m) => m.path == path) > -1) {
|
if (this.menu.findIndex((m) => m.path == path) > -1) {
|
||||||
this.goForward({name: 'manage-review'});
|
this.goForward({name: 'manage-approve'});
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
case 'logout':
|
case 'logout':
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="review-details" :style="{'z-index':modalTransferIndex}">
|
<div class="approve-details" :style="{'z-index':modalTransferIndex}">
|
||||||
<div class="review-details-box">
|
<div class="approve-details-box">
|
||||||
<h2 class="review-details-title">
|
<h2 class="approve-details-title">
|
||||||
<span>{{$L(datas.proc_def_name)}}</span>
|
<span>{{$L(datas.proc_def_name)}}</span>
|
||||||
<Tag v-if="datas.state == 0" color="cyan">{{$L('待审批')}}</Tag>
|
<Tag v-if="datas.state == 0" color="cyan">{{$L('待审批')}}</Tag>
|
||||||
<Tag v-if="datas.state == 1" color="cyan">{{$L('审批中')}}</Tag>
|
<Tag v-if="datas.state == 1" color="cyan">{{$L('审批中')}}</Tag>
|
||||||
@ -9,32 +9,32 @@
|
|||||||
<Tag v-if="datas.state == 3" color="red">{{$L('已拒绝')}}</Tag>
|
<Tag v-if="datas.state == 3" color="red">{{$L('已拒绝')}}</Tag>
|
||||||
<Tag v-if="datas.state == 4" color="red">{{$L('已撤回')}}</Tag>
|
<Tag v-if="datas.state == 4" color="red">{{$L('已撤回')}}</Tag>
|
||||||
</h2>
|
</h2>
|
||||||
<h3 class="review-details-subtitle"><Avatar :src="datas.userimg" size="24"/><span>{{datas.start_user_name}}</span></h3>
|
<h3 class="approve-details-subtitle"><Avatar :src="datas.userimg" size="24"/><span>{{datas.start_user_name}}</span></h3>
|
||||||
<h3 class="review-details-subtitle"><span>{{$L('提交于')}} {{datas.start_time}}</span></h3>
|
<h3 class="approve-details-subtitle"><span>{{$L('提交于')}} {{datas.start_time}}</span></h3>
|
||||||
|
|
||||||
<Divider/>
|
<Divider/>
|
||||||
|
|
||||||
<div class="review-details-text" v-if="(datas.proc_def_name || '').indexOf('班') == -1">
|
<div class="approve-details-text" v-if="(datas.proc_def_name || '').indexOf('班') == -1">
|
||||||
<h4>{{$L('假期类型')}}</h4>
|
<h4>{{$L('假期类型')}}</h4>
|
||||||
<p>{{$L(datas.var?.type)}}</p>
|
<p>{{$L(datas.var?.type)}}</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="review-details-text">
|
<div class="approve-details-text">
|
||||||
<h4>{{$L('开始时间')}}</h4>
|
<h4>{{$L('开始时间')}}</h4>
|
||||||
<p>{{datas.var?.start_time}}</p>
|
<p>{{datas.var?.start_time}}</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="review-details-text">
|
<div class="approve-details-text">
|
||||||
<h4>{{$L('结束时间')}}</h4>
|
<h4>{{$L('结束时间')}}</h4>
|
||||||
<p>{{datas.var?.end_time}}</p>
|
<p>{{datas.var?.end_time}}</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="review-details-text">
|
<div class="approve-details-text">
|
||||||
<h4>{{ $L('时长') }}({{getTimeDifference(datas.var?.start_time,datas.var?.end_time)['unit']}})</h4>
|
<h4>{{ $L('时长') }}({{getTimeDifference(datas.var?.start_time,datas.var?.end_time)['unit']}})</h4>
|
||||||
<p>{{ datas.var?.start_time ? getTimeDifference(datas.var?.start_time,datas.var?.end_time)['time'] : 0 }}</p>
|
<p>{{ datas.var?.start_time ? getTimeDifference(datas.var?.start_time,datas.var?.end_time)['time'] : 0 }}</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="review-details-text">
|
<div class="approve-details-text">
|
||||||
<h4>{{$L('请假事由')}}</h4>
|
<h4>{{$L('请假事由')}}</h4>
|
||||||
<p>{{datas.var?.description}}</p>
|
<p>{{datas.var?.description}}</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="review-details-text" v-if="datas.var?.other">
|
<div class="approve-details-text" v-if="datas.var?.other">
|
||||||
<h4>{{$L('图片')}}</h4>
|
<h4>{{$L('图片')}}</h4>
|
||||||
<div class="img-body">
|
<div class="img-body">
|
||||||
<div v-for="(src,key) in (datas.var.other).split(',') " @click="onViewPicture(src)">
|
<div v-for="(src,key) in (datas.var.other).split(',') " @click="onViewPicture(src)">
|
||||||
@ -45,8 +45,8 @@
|
|||||||
|
|
||||||
<Divider/>
|
<Divider/>
|
||||||
|
|
||||||
<h3 class="review-details-subtitle">{{$L('审批记录')}}</h3>
|
<h3 class="approve-details-subtitle">{{$L('审批记录')}}</h3>
|
||||||
<Timeline class="review-record-timeline">
|
<Timeline class="approve-record-timeline">
|
||||||
<template v-for="(item,key) in datas.node_infos">
|
<template v-for="(item,key) in datas.node_infos">
|
||||||
|
|
||||||
<!-- 提交 -->
|
<!-- 提交 -->
|
||||||
@ -54,11 +54,11 @@
|
|||||||
<p class="timeline-title">{{$L('提交')}}</p>
|
<p class="timeline-title">{{$L('提交')}}</p>
|
||||||
<div class="timeline-body">
|
<div class="timeline-body">
|
||||||
<Avatar :src="data.userimg || datas.userimg" size="38"/>
|
<Avatar :src="data.userimg || datas.userimg" size="38"/>
|
||||||
<div class="review-process-left">
|
<div class="approve-process-left">
|
||||||
<p class="review-process-name">{{data.start_user_name || datas.start_user_name}}</p>
|
<p class="approve-process-name">{{data.start_user_name || datas.start_user_name}}</p>
|
||||||
<p class="review-process-state">{{$L('已提交')}}</p>
|
<p class="approve-process-state">{{$L('已提交')}}</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="review-process-right">
|
<div class="approve-process-right">
|
||||||
<p v-if="parseInt(getTimeAgo(item.claim_time)) < showTimeNum">{{ getTimeAgo(item.claim_time) }}</p>
|
<p v-if="parseInt(getTimeAgo(item.claim_time)) < showTimeNum">{{ getTimeAgo(item.claim_time) }}</p>
|
||||||
<p>{{item.claim_time?.substr(0,16)}}</p>
|
<p>{{item.claim_time?.substr(0,16)}}</p>
|
||||||
</div>
|
</div>
|
||||||
@ -72,17 +72,17 @@
|
|||||||
<p class="timeline-title">{{$L('审批')}}</p>
|
<p class="timeline-title">{{$L('审批')}}</p>
|
||||||
<div class="timeline-body">
|
<div class="timeline-body">
|
||||||
<Avatar :src="(item.node_user_list && item.node_user_list[0]?.userimg) || item.userimg" size="38"/>
|
<Avatar :src="(item.node_user_list && item.node_user_list[0]?.userimg) || item.userimg" size="38"/>
|
||||||
<div class="review-process-left">
|
<div class="approve-process-left">
|
||||||
<p class="review-process-name">{{item.approver}}</p>
|
<p class="approve-process-name">{{item.approver}}</p>
|
||||||
<p class="review-process-state" style="color: #6d6d6d;" v-if="!item.identitylink">待审批</p>
|
<p class="approve-process-state" style="color: #6d6d6d;" v-if="!item.identitylink">待审批</p>
|
||||||
<p class="review-process-state" v-if="item.identitylink">
|
<p class="approve-process-state" v-if="item.identitylink">
|
||||||
<span v-if="item.identitylink.state==0" style="color:#496dff;">{{$L('审批中')}}</span>
|
<span v-if="item.identitylink.state==0" style="color:#496dff;">{{$L('审批中')}}</span>
|
||||||
<span v-if="item.identitylink.state==1" >{{$L('已通过')}}</span>
|
<span v-if="item.identitylink.state==1" >{{$L('已通过')}}</span>
|
||||||
<span v-if="item.identitylink.state==2" style="color:#f03f3f;">{{$L('已拒绝')}}</span>
|
<span v-if="item.identitylink.state==2" style="color:#f03f3f;">{{$L('已拒绝')}}</span>
|
||||||
<span v-if="item.identitylink.state==3" style="color:#f03f3f;">{{$L('已撤回')}}</span>
|
<span v-if="item.identitylink.state==3" style="color:#f03f3f;">{{$L('已撤回')}}</span>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="review-process-right">
|
<div class="approve-process-right">
|
||||||
<p v-if="parseInt(getTimeAgo(item.claim_time)) < showTimeNum">
|
<p v-if="parseInt(getTimeAgo(item.claim_time)) < showTimeNum">
|
||||||
{{ item.identitylink?.state==0 ?
|
{{ item.identitylink?.state==0 ?
|
||||||
($L('已等待') + " " + getTimeAgo( datas.node_infos[key-1].claim_time,2)) :
|
($L('已等待') + " " + getTimeAgo( datas.node_infos[key-1].claim_time,2)) :
|
||||||
@ -100,8 +100,8 @@
|
|||||||
<p class="timeline-title">{{$L('抄送')}}</p>
|
<p class="timeline-title">{{$L('抄送')}}</p>
|
||||||
<div class="timeline-body">
|
<div class="timeline-body">
|
||||||
<Avatar :src="'/images/avatar/default_bot.png'" size="38"/>
|
<Avatar :src="'/images/avatar/default_bot.png'" size="38"/>
|
||||||
<div class="review-process-left">
|
<div class="approve-process-left">
|
||||||
<p class="review-process-name">{{$L('系统')}}</p>
|
<p class="approve-process-name">{{$L('系统')}}</p>
|
||||||
<p style="font-size: 12px;">{{$L('自动抄送')}}
|
<p style="font-size: 12px;">{{$L('自动抄送')}}
|
||||||
<span style="color: #486fed;">
|
<span style="color: #486fed;">
|
||||||
{{ item.node_user_list?.map(h=>h.name).join(',') }}
|
{{ item.node_user_list?.map(h=>h.name).join(',') }}
|
||||||
@ -117,8 +117,8 @@
|
|||||||
<p class="timeline-title">{{$L('结束')}}</p>
|
<p class="timeline-title">{{$L('结束')}}</p>
|
||||||
<div class="timeline-body">
|
<div class="timeline-body">
|
||||||
<Avatar :src="'/images/avatar/default_bot.png'" size="38"/>
|
<Avatar :src="'/images/avatar/default_bot.png'" size="38"/>
|
||||||
<div class="review-process-left">
|
<div class="approve-process-left">
|
||||||
<p class="review-process-name">{{$L('系统')}}</p>
|
<p class="approve-process-name">{{$L('系统')}}</p>
|
||||||
<p style="font-size: 12px;"> {{ datas.is_finished ? $L('已结束') : $L('未结束') }}</p>
|
<p style="font-size: 12px;"> {{ datas.is_finished ? $L('已结束') : $L('未结束') }}</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -129,8 +129,8 @@
|
|||||||
|
|
||||||
<template v-if="datas.global_comment">
|
<template v-if="datas.global_comment">
|
||||||
<Divider/>
|
<Divider/>
|
||||||
<h3 class="review-details-subtitle">{{$L('全文评论')}}</h3>
|
<h3 class="approve-details-subtitle">{{$L('全文评论')}}</h3>
|
||||||
<div class="review-record-comment">
|
<div class="approve-record-comment">
|
||||||
<List :split="false" :border="false">
|
<List :split="false" :border="false">
|
||||||
<ListItem v-for="(item,key) in datas.global_comments" :key="key">
|
<ListItem v-for="(item,key) in datas.global_comments" :key="key">
|
||||||
<div>
|
<div>
|
||||||
@ -157,7 +157,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="review-operation">
|
<div class="approve-operation">
|
||||||
<div style="flex: 1;"></div>
|
<div style="flex: 1;"></div>
|
||||||
<Button type="success" v-if="(datas.candidate || '').split(',').indexOf(userId + '') != -1" @click="approve(1)">{{$L('同意')}}</Button>
|
<Button type="success" v-if="(datas.candidate || '').split(',').indexOf(userId + '') != -1" @click="approve(1)">{{$L('同意')}}</Button>
|
||||||
<Button type="error" v-if="(datas.candidate || '').split(',').indexOf(userId + '') != -1" @click="approve(2)">{{$L('拒绝')}}</Button>
|
<Button type="error" v-if="(datas.candidate || '').split(',').indexOf(userId + '') != -1" @click="approve(2)">{{$L('拒绝')}}</Button>
|
||||||
@ -166,7 +166,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!--评论-->
|
<!--评论-->
|
||||||
<Modal v-model="commentShow" :title="$L('评论')" :mask-closable="false" class="page-review-initiate">
|
<Modal v-model="commentShow" :title="$L('评论')" :mask-closable="false" class="page-approve-initiate">
|
||||||
<Form ref="initiateRef" :model="commentData" :rules="commentRule" label-width="auto" @submit.native.prevent>
|
<Form ref="initiateRef" :model="commentData" :rules="commentRule" label-width="auto" @submit.native.prevent>
|
||||||
<FormItem prop="content" :label="$L('内容')">
|
<FormItem prop="content" :label="$L('内容')">
|
||||||
<Input type="textarea" v-model="commentData.content"></Input>
|
<Input type="textarea" v-model="commentData.content"></Input>
|
||||||
@ -218,7 +218,7 @@ export default {
|
|||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
'$route' (to, from) {
|
'$route' (to, from) {
|
||||||
if(to.name == 'manage-review-details'){
|
if(to.name == 'manage-approve-details'){
|
||||||
this.init()
|
this.init()
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -233,9 +233,9 @@ export default {
|
|||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
isShowWarningBtn(){
|
isShowWarningBtn(){
|
||||||
let is = (this.userId == this.datas.start_user_id);
|
let is = (this.userId == this.datas.start_user_id) && this.datas?.is_finished != true;
|
||||||
(this.datas.node_infos || []).map(h=>{
|
(this.datas.node_infos || []).map(h=>{
|
||||||
if(h.type != 'starter' && h.is_finished == true && h.identitylink?.userid != this.userId) {
|
if( h.type != 'starter' && h.is_finished == true && h.identitylink?.userid != this.userId) {
|
||||||
is = false;
|
is = false;
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -292,7 +292,7 @@ export default {
|
|||||||
this.datas = this.data
|
this.datas = this.data
|
||||||
this.$store.dispatch("call", {
|
this.$store.dispatch("call", {
|
||||||
method: 'get',
|
method: 'get',
|
||||||
url: 'workflow/process/detail',
|
url: 'approve/process/detail',
|
||||||
data: {
|
data: {
|
||||||
id:this.data.id,
|
id:this.data.id,
|
||||||
}
|
}
|
||||||
@ -324,7 +324,7 @@ export default {
|
|||||||
return `请输入审批意见`
|
return `请输入审批意见`
|
||||||
}
|
}
|
||||||
this.$store.dispatch("call", {
|
this.$store.dispatch("call", {
|
||||||
url: 'workflow/task/complete',
|
url: 'approve/task/complete',
|
||||||
data: {
|
data: {
|
||||||
task_id: this.datas.task_id,
|
task_id: this.datas.task_id,
|
||||||
pass: type == 1,
|
pass: type == 1,
|
||||||
@ -332,7 +332,7 @@ export default {
|
|||||||
}
|
}
|
||||||
}).then(({msg}) => {
|
}).then(({msg}) => {
|
||||||
$A.messageSuccess(msg);
|
$A.messageSuccess(msg);
|
||||||
if(this.$route.name=='manage-review-details' || this.$route.name=='manage-messenger'){
|
if(this.$route.name=='manage-approve-details' || this.$route.name=='manage-messenger'){
|
||||||
this.getInfo()
|
this.getInfo()
|
||||||
}else{
|
}else{
|
||||||
this.$emit('approve')
|
this.$emit('approve')
|
||||||
@ -352,7 +352,7 @@ export default {
|
|||||||
onOk: () => {
|
onOk: () => {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
this.$store.dispatch("call", {
|
this.$store.dispatch("call", {
|
||||||
url: 'workflow/task/withdraw',
|
url: 'approve/task/withdraw',
|
||||||
data: {
|
data: {
|
||||||
task_id: this.datas.task_id,
|
task_id: this.datas.task_id,
|
||||||
proc_inst_id: this.datas.id,
|
proc_inst_id: this.datas.id,
|
||||||
@ -360,7 +360,7 @@ export default {
|
|||||||
}).then(({msg}) => {
|
}).then(({msg}) => {
|
||||||
$A.messageSuccess(msg);
|
$A.messageSuccess(msg);
|
||||||
resolve();
|
resolve();
|
||||||
if(this.$route.name=='manage-review-details' || this.$route.name=='manage-messenger'){
|
if(this.$route.name=='manage-approve-details' || this.$route.name=='manage-messenger'){
|
||||||
this.getInfo()
|
this.getInfo()
|
||||||
}else{
|
}else{
|
||||||
this.$emit('revocation')
|
this.$emit('revocation')
|
||||||
@ -383,7 +383,7 @@ export default {
|
|||||||
this.loadIng++;
|
this.loadIng++;
|
||||||
this.$store.dispatch("call", {
|
this.$store.dispatch("call", {
|
||||||
method: 'post',
|
method: 'post',
|
||||||
url: 'workflow/process/addGlobalComment',
|
url: 'approve/process/addGlobalComment',
|
||||||
data: {
|
data: {
|
||||||
proc_inst_id:this.data.id,
|
proc_inst_id:this.data.id,
|
||||||
content:JSON.stringify({
|
content:JSON.stringify({
|
||||||
@ -393,7 +393,7 @@ export default {
|
|||||||
}
|
}
|
||||||
}).then(({msg}) => {
|
}).then(({msg}) => {
|
||||||
$A.messageSuccess("添加成功");
|
$A.messageSuccess("添加成功");
|
||||||
if(this.$route.name=='manage-review-details' || this.$route.name=='manage-messenger'){
|
if(this.$route.name=='manage-approve-details' || this.$route.name=='manage-messenger'){
|
||||||
this.getInfo()
|
this.getInfo()
|
||||||
}else{
|
}else{
|
||||||
this.$emit('approve')
|
this.$emit('approve')
|
||||||
@ -1,10 +1,10 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="page-review">
|
<div class="page-approve">
|
||||||
<PageTitle :title="$L('审批中心')"/>
|
<PageTitle :title="$L('审批中心')"/>
|
||||||
<div class="review-wrapper" ref="fileWrapper">
|
<div class="approve-wrapper" ref="fileWrapper">
|
||||||
|
|
||||||
<div class="review-head">
|
<div class="approve-head">
|
||||||
<div class="review-nav">
|
<div class="approve-nav">
|
||||||
<h1>{{$L('审批中心')}}</h1>
|
<h1>{{$L('审批中心')}}</h1>
|
||||||
</div>
|
</div>
|
||||||
<Button type="primary" @click="addApply">{{$L("添加申请")}}</Button>
|
<Button type="primary" @click="addApply">{{$L("添加申请")}}</Button>
|
||||||
@ -12,30 +12,30 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<Tabs :value="tabsValue" @on-click="tabsClick" style="margin: 0 20px;height: 100%;" size="small">
|
<Tabs :value="tabsValue" @on-click="tabsClick" style="margin: 0 20px;height: 100%;" size="small">
|
||||||
<TabPane :label="$L('待办') + (backlogTotal > 0 ? ('('+backlogTotal+')') : '')" name="backlog" style="height: 100%;">
|
<TabPane :label="$L('待办') + (unreadTotal > 0 ? ('('+unreadTotal+')') : '')" name="unread" style="height: 100%;">
|
||||||
<div class="review-main-search">
|
<div class="approve-main-search">
|
||||||
<div style="display: flex;gap: 10px;">
|
<div style="display: flex;gap: 10px;">
|
||||||
<Select v-model="approvalType" @on-change="tabsClick('',0)" style="width: 150px;">
|
<Select v-model="approvalType" @on-change="tabsClick('',0)" style="width: 150px;">
|
||||||
<Option v-for="item in approvalList" :value="item.value" :key="item.value">{{ item.label }}</Option>
|
<Option v-for="item in approvalList" :value="item.value" :key="item.value">{{ item.label }}</Option>
|
||||||
</Select>
|
</Select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="noData" v-if="backlogList.length==0">{{$L('暂无数据')}}</div>
|
<div class="noData" v-if="unreadList.length==0">{{$L('暂无数据')}}</div>
|
||||||
<div v-else class="review-mains">
|
<div v-else class="approve-mains">
|
||||||
<div class="review-main-left">
|
<div class="approve-main-left">
|
||||||
<div class="review-main-list">
|
<div class="approve-main-list">
|
||||||
<div @click.stop="clickList(item,key)" v-for="(item,key) in backlogList">
|
<div @click.stop="clickList(item,key)" v-for="(item,key) in unreadList">
|
||||||
<list :class="{ 'review-list-active': item._active }" :data="item"></list>
|
<list :class="{ 'approve-list-active': item._active }" :data="item"></list>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="review-main-right">
|
<div class="approve-main-right">
|
||||||
<listDetails v-if="!detailsShow && tabsValue=='backlog'" :data="details" @approve="tabsClick" @revocation="tabsClick"></listDetails>
|
<listDetails v-if="!detailsShow && tabsValue=='unread'" :data="details" @approve="tabsClick" @revocation="tabsClick"></listDetails>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</TabPane>
|
</TabPane>
|
||||||
<TabPane :label="$L('已办')" name="done">
|
<TabPane :label="$L('已办')" name="done">
|
||||||
<div class="review-main-search">
|
<div class="approve-main-search">
|
||||||
<div style="display: flex;gap: 10px;">
|
<div style="display: flex;gap: 10px;">
|
||||||
<Select v-model="approvalType" @on-change="tabsClick('',0)" style="width: 150px;">
|
<Select v-model="approvalType" @on-change="tabsClick('',0)" style="width: 150px;">
|
||||||
<Option v-for="item in approvalList" :value="item.value" :key="item.value">{{ item.label }}</Option>
|
<Option v-for="item in approvalList" :value="item.value" :key="item.value">{{ item.label }}</Option>
|
||||||
@ -43,22 +43,22 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="doneList.length==0" class="noData">{{$L('暂无数据')}}</div>
|
<div v-if="doneList.length==0" class="noData">{{$L('暂无数据')}}</div>
|
||||||
<div v-else class="review-mains">
|
<div v-else class="approve-mains">
|
||||||
<div class="review-main-left">
|
<div class="approve-main-left">
|
||||||
<div class="review-main-list">
|
<div class="approve-main-list">
|
||||||
<div @click.stop="clickList(item,key)" v-for="(item,key) in doneList" >
|
<div @click.stop="clickList(item,key)" v-for="(item,key) in doneList" >
|
||||||
<list :class="{ 'review-list-active': item._active }" :data="item"></list>
|
<list :class="{ 'approve-list-active': item._active }" :data="item"></list>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="review-main-right">
|
<div class="approve-main-right">
|
||||||
<listDetails v-if="!detailsShow && tabsValue=='done'" :data="details" @approve="tabsClick" @revocation="tabsClick"></listDetails>
|
<listDetails v-if="!detailsShow && tabsValue=='done'" :data="details" @approve="tabsClick" @revocation="tabsClick"></listDetails>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</TabPane>
|
</TabPane>
|
||||||
<TabPane :label="$L('抄送我')" name="notify">
|
<TabPane :label="$L('抄送我')" name="notify">
|
||||||
<div class="review-main-search">
|
<div class="approve-main-search">
|
||||||
<div class="review-main-search">
|
<div class="approve-main-search">
|
||||||
<div style="display: flex;gap: 10px;">
|
<div style="display: flex;gap: 10px;">
|
||||||
<Select v-model="approvalType" @on-change="tabsClick('',0)" style="width: 150px;">
|
<Select v-model="approvalType" @on-change="tabsClick('',0)" style="width: 150px;">
|
||||||
<Option v-for="item in approvalList" :value="item.value" :key="item.value">{{ item.label }}</Option>
|
<Option v-for="item in approvalList" :value="item.value" :key="item.value">{{ item.label }}</Option>
|
||||||
@ -67,21 +67,21 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="noData" v-if="notifyList.length==0">{{$L('暂无数据')}}</div>
|
<div class="noData" v-if="notifyList.length==0">{{$L('暂无数据')}}</div>
|
||||||
<div v-else class="review-mains">
|
<div v-else class="approve-mains">
|
||||||
<div class="review-main-left">
|
<div class="approve-main-left">
|
||||||
<div class="review-main-list">
|
<div class="approve-main-list">
|
||||||
<div @click.stop="clickList(item,key)" v-for="(item,key) in notifyList">
|
<div @click.stop="clickList(item,key)" v-for="(item,key) in notifyList">
|
||||||
<list :class="{ 'review-list-active': item._active }" :data="item"></list>
|
<list :class="{ 'approve-list-active': item._active }" :data="item"></list>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="review-main-right">
|
<div class="approve-main-right">
|
||||||
<listDetails v-if="!detailsShow && tabsValue=='notify'" :data="details" @approve="tabsClick" @revocation="tabsClick"></listDetails>
|
<listDetails v-if="!detailsShow && tabsValue=='notify'" :data="details" @approve="tabsClick" @revocation="tabsClick"></listDetails>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</TabPane>
|
</TabPane>
|
||||||
<TabPane :label="$L('已发起')" name="initiated">
|
<TabPane :label="$L('已发起')" name="initiated">
|
||||||
<div class="review-main-search">
|
<div class="approve-main-search">
|
||||||
<div style="display: flex;gap: 10px;">
|
<div style="display: flex;gap: 10px;">
|
||||||
<Select v-model="approvalType" @on-change="tabsClick('',0)" style="width: 150px;">
|
<Select v-model="approvalType" @on-change="tabsClick('',0)" style="width: 150px;">
|
||||||
<Option v-for="item in approvalList" :value="item.value" :key="item.value">{{ item.label }}</Option>
|
<Option v-for="item in approvalList" :value="item.value" :key="item.value">{{ item.label }}</Option>
|
||||||
@ -92,15 +92,15 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="noData" v-if="initiatedList.length==0">{{$L('暂无数据')}}</div>
|
<div class="noData" v-if="initiatedList.length==0">{{$L('暂无数据')}}</div>
|
||||||
<div v-else class="review-mains">
|
<div v-else class="approve-mains">
|
||||||
<div class="review-main-left">
|
<div class="approve-main-left">
|
||||||
<div class="review-main-list">
|
<div class="approve-main-list">
|
||||||
<div @click.stop="clickList(item,key)" v-for="(item,key) in initiatedList">
|
<div @click.stop="clickList(item,key)" v-for="(item,key) in initiatedList">
|
||||||
<list :class="{ 'review-list-active': item._active }" :data="item"></list>
|
<list :class="{ 'approve-list-active': item._active }" :data="item"></list>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="review-main-right">
|
<div class="approve-main-right">
|
||||||
<listDetails v-if="!detailsShow && tabsValue=='initiated'" :data="details" @approve="tabsClick" @revocation="tabsClick"></listDetails>
|
<listDetails v-if="!detailsShow && tabsValue=='initiated'" :data="details" @approve="tabsClick" @revocation="tabsClick"></listDetails>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -115,7 +115,7 @@
|
|||||||
</DrawerOverlay>
|
</DrawerOverlay>
|
||||||
|
|
||||||
<!--发起-->
|
<!--发起-->
|
||||||
<Modal v-model="addShow" :title="$L(addTitle)" :mask-closable="false" class="page-review-initiate">
|
<Modal v-model="addShow" :title="$L(addTitle)" :mask-closable="false" class="page-approve-initiate">
|
||||||
<Form ref="initiateRef" :model="addData" :rules="addRule" label-width="auto" @submit.native.prevent>
|
<Form ref="initiateRef" :model="addData" :rules="addRule" label-width="auto" @submit.native.prevent>
|
||||||
<FormItem v-if="departmentList.length>1" prop="department_id" :label="$L('选择部门')">
|
<FormItem v-if="departmentList.length>1" prop="department_id" :label="$L('选择部门')">
|
||||||
<Select v-model="addData.department_id" :placeholder="$L('请选择部门')">
|
<Select v-model="addData.department_id" :placeholder="$L('请选择部门')">
|
||||||
@ -193,7 +193,7 @@ import { mapState } from 'vuex'
|
|||||||
|
|
||||||
export default {
|
export default {
|
||||||
components:{list,listDetails,DrawerOverlay,ImgUpload},
|
components:{list,listDetails,DrawerOverlay,ImgUpload},
|
||||||
name: "review",
|
name: "approve",
|
||||||
data(){
|
data(){
|
||||||
return{
|
return{
|
||||||
minDate: new Date(2020, 0, 1),
|
minDate: new Date(2020, 0, 1),
|
||||||
@ -224,8 +224,8 @@ export default {
|
|||||||
{value:4,label:this.$L("已撤回")}
|
{value:4,label:this.$L("已撤回")}
|
||||||
],
|
],
|
||||||
//
|
//
|
||||||
backlogTotal:0,
|
unreadTotal:0,
|
||||||
backlogList: [],
|
unreadList: [],
|
||||||
doneList:[],
|
doneList:[],
|
||||||
notifyList:[],
|
notifyList:[],
|
||||||
initiatedList: [],
|
initiatedList: [],
|
||||||
@ -277,7 +277,7 @@ export default {
|
|||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
'$route' (to, from) {
|
'$route' (to, from) {
|
||||||
if(to.name == 'manage-review'){
|
if(to.name == 'manage-approve'){
|
||||||
this.tabsClick()
|
this.tabsClick()
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -285,8 +285,8 @@ export default {
|
|||||||
handler(info) {
|
handler(info) {
|
||||||
const {type, action} = info;
|
const {type, action} = info;
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case 'workflow':
|
case 'approve':
|
||||||
if (action == 'backlog') {
|
if (action == 'unread') {
|
||||||
this.tabsClick()
|
this.tabsClick()
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -301,9 +301,9 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
this.tabsValue = "backlog"
|
this.tabsValue = "unread"
|
||||||
this.tabsClick()
|
this.tabsClick()
|
||||||
this.getBacklogList()
|
this.getUnreadList()
|
||||||
this.addData.department_id = this.userInfo.department[0] || 0;
|
this.addData.department_id = this.userInfo.department[0] || 0;
|
||||||
this.addData.startTime = this.addData.endTime = this.getCurrentDate();
|
this.addData.startTime = this.addData.endTime = this.getCurrentDate();
|
||||||
},
|
},
|
||||||
@ -326,8 +326,8 @@ export default {
|
|||||||
if(val!=""){
|
if(val!=""){
|
||||||
this.approvalType = this.searchState = "all"
|
this.approvalType = this.searchState = "all"
|
||||||
}
|
}
|
||||||
if(this.tabsValue == 'backlog'){
|
if(this.tabsValue == 'unread'){
|
||||||
this.getBacklogList();
|
this.getUnreadList();
|
||||||
}
|
}
|
||||||
if(this.tabsValue == 'done'){
|
if(this.tabsValue == 'done'){
|
||||||
this.getDoneList();
|
this.getDoneList();
|
||||||
@ -342,14 +342,14 @@ export default {
|
|||||||
|
|
||||||
// 列表点击事件
|
// 列表点击事件
|
||||||
clickList(item){
|
clickList(item){
|
||||||
this.backlogList.map(h=>{ h._active = false; })
|
this.unreadList.map(h=>{ h._active = false; })
|
||||||
this.doneList.map(h=>{ h._active = false; })
|
this.doneList.map(h=>{ h._active = false; })
|
||||||
this.notifyList.map(h=>{ h._active = false; })
|
this.notifyList.map(h=>{ h._active = false; })
|
||||||
this.initiatedList.map(h=>{ h._active = false; })
|
this.initiatedList.map(h=>{ h._active = false; })
|
||||||
item._active = true;
|
item._active = true;
|
||||||
//
|
//
|
||||||
if( window.innerWidth < 426 ){
|
if( window.innerWidth < 426 ){
|
||||||
this.goForward({name: 'manage-review-details', query: { id: item.id } });
|
this.goForward({name: 'manage-approve-details', query: { id: item.id } });
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if( window.innerWidth < 1010 ){
|
if( window.innerWidth < 1010 ){
|
||||||
@ -362,26 +362,26 @@ export default {
|
|||||||
},
|
},
|
||||||
|
|
||||||
// 获取待办列表
|
// 获取待办列表
|
||||||
getBacklogList(){
|
getUnreadList(){
|
||||||
this.$store.dispatch("call", {
|
this.$store.dispatch("call", {
|
||||||
method: 'get',
|
method: 'get',
|
||||||
url: 'workflow/process/findTask',
|
url: 'approve/process/findTask',
|
||||||
data: {
|
data: {
|
||||||
page:this.page,
|
page:this.page,
|
||||||
page_size: this.pageSize,
|
page_size: this.pageSize,
|
||||||
proc_def_name: this.approvalType == 'all' ? '' : this.approvalType,
|
proc_def_name: this.approvalType == 'all' ? '' : this.approvalType,
|
||||||
}
|
}
|
||||||
}).then(({data}) => {
|
}).then(({data}) => {
|
||||||
this.backlogList = data.rows.map((h,index)=>{
|
this.unreadList = data.rows.map((h,index)=>{
|
||||||
h._active = index == 0;
|
h._active = index == 0;
|
||||||
return h;
|
return h;
|
||||||
})
|
})
|
||||||
if(this.approvalType == 'all'){
|
if(this.approvalType == 'all'){
|
||||||
this.backlogTotal = this.backlogList.length
|
this.unreadTotal = this.unreadList.length
|
||||||
}
|
}
|
||||||
if(this.tabsValue == 'backlog'){
|
if(this.tabsValue == 'unread'){
|
||||||
this.$nextTick(()=>{
|
this.$nextTick(()=>{
|
||||||
this.details = this.backlogList[0] || {}
|
this.details = this.unreadList[0] || {}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}).catch(({msg}) => {
|
}).catch(({msg}) => {
|
||||||
@ -395,7 +395,7 @@ export default {
|
|||||||
getDoneList(){
|
getDoneList(){
|
||||||
this.$store.dispatch("call", {
|
this.$store.dispatch("call", {
|
||||||
method: 'get',
|
method: 'get',
|
||||||
url: 'workflow/procHistory/findTask',
|
url: 'approve/procHistory/findTask',
|
||||||
data: {
|
data: {
|
||||||
page:this.page,
|
page:this.page,
|
||||||
page_size: this.pageSize,
|
page_size: this.pageSize,
|
||||||
@ -422,7 +422,7 @@ export default {
|
|||||||
getNotifyList(){
|
getNotifyList(){
|
||||||
this.$store.dispatch("call", {
|
this.$store.dispatch("call", {
|
||||||
method: 'get',
|
method: 'get',
|
||||||
url: 'workflow/procHistory/findProcNotify',
|
url: 'approve/procHistory/findProcNotify',
|
||||||
data: {
|
data: {
|
||||||
page:this.page,
|
page:this.page,
|
||||||
page_size: this.pageSize,
|
page_size: this.pageSize,
|
||||||
@ -449,7 +449,7 @@ export default {
|
|||||||
getInitiatedList(){
|
getInitiatedList(){
|
||||||
this.$store.dispatch("call", {
|
this.$store.dispatch("call", {
|
||||||
method: 'post',
|
method: 'post',
|
||||||
url: 'workflow/process/startByMyselfAll',
|
url: 'approve/process/startByMyselfAll',
|
||||||
data: {
|
data: {
|
||||||
page: this.page,
|
page: this.page,
|
||||||
page_size: this.pageSize,
|
page_size: this.pageSize,
|
||||||
@ -488,7 +488,7 @@ export default {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
this.$store.dispatch("call", {
|
this.$store.dispatch("call", {
|
||||||
url: 'workflow/procdef/all',
|
url: 'approve/procdef/all',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
}).then(({data}) => {
|
}).then(({data}) => {
|
||||||
this.procdefList = data.rows || [];
|
this.procdefList = data.rows || [];
|
||||||
@ -523,7 +523,7 @@ export default {
|
|||||||
}
|
}
|
||||||
|
|
||||||
this.$store.dispatch("call", {
|
this.$store.dispatch("call", {
|
||||||
url: 'workflow/process/start',
|
url: 'approve/process/start',
|
||||||
data: {
|
data: {
|
||||||
proc_name: obj.applyType,
|
proc_name: obj.applyType,
|
||||||
department_id: obj.department_id,
|
department_id: obj.department_id,
|
||||||
@ -550,10 +550,10 @@ export default {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
.page-review .review-details{
|
.page-approve .approve-details{
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
}
|
}
|
||||||
.page-review .ivu-tabs-nav {
|
.page-approve .ivu-tabs-nav {
|
||||||
display: flex;
|
display: flex;
|
||||||
width: 350px;
|
width: 350px;
|
||||||
@media (max-width: 1010px) {
|
@media (max-width: 1010px) {
|
||||||
@ -565,7 +565,7 @@ export default {
|
|||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.page-review-initiate .ivu-modal-body{
|
.page-approve-initiate .ivu-modal-body{
|
||||||
padding: 16px 22px 2px !important;
|
padding: 16px 22px 2px !important;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="review-list">
|
<div class="approve-list">
|
||||||
<h2>
|
<h2>
|
||||||
<span class="list-name">{{$L(data.proc_def_name)}}</span>
|
<span class="list-name">{{$L(data.proc_def_name)}}</span>
|
||||||
<Tag v-if="data.state == 0" color="cyan">{{$L('待审批')}}</Tag>
|
<Tag v-if="data.state == 0" color="cyan">{{$L('待审批')}}</Tag>
|
||||||
@ -55,7 +55,7 @@
|
|||||||
<script>
|
<script>
|
||||||
import UserInput from "../../../components/UserInput";
|
import UserInput from "../../../components/UserInput";
|
||||||
export default {
|
export default {
|
||||||
name: "WorkflowExport",
|
name: "ApproveExport",
|
||||||
components: {UserInput},
|
components: {UserInput},
|
||||||
props: {
|
props: {
|
||||||
value: {
|
value: {
|
||||||
@ -97,7 +97,7 @@ export default {
|
|||||||
getProcName(){
|
getProcName(){
|
||||||
this.loadIng++;
|
this.loadIng++;
|
||||||
this.$store.dispatch("call", {
|
this.$store.dispatch("call", {
|
||||||
url: 'workflow/procdef/all',
|
url: 'approve/procdef/all',
|
||||||
method: 'post'
|
method: 'post'
|
||||||
}).then(({data}) => {
|
}).then(({data}) => {
|
||||||
this.procList = data['rows'];
|
this.procList = data['rows'];
|
||||||
@ -115,7 +115,7 @@ export default {
|
|||||||
}
|
}
|
||||||
this.loadIng++;
|
this.loadIng++;
|
||||||
this.$store.dispatch("call", {
|
this.$store.dispatch("call", {
|
||||||
url: 'workflow/export',
|
url: 'approve/export',
|
||||||
data: this.formData,
|
data: this.formData,
|
||||||
}).then(({data}) => {
|
}).then(({data}) => {
|
||||||
this.show = false;
|
this.show = false;
|
||||||
@ -500,7 +500,7 @@
|
|||||||
|
|
||||||
<!--审批详情-->
|
<!--审批详情-->
|
||||||
<DrawerOverlay v-model="approveDetailsShow" placement="right" :size="600">
|
<DrawerOverlay v-model="approveDetailsShow" placement="right" :size="600">
|
||||||
<ReviewDetails v-if="approveDetailsShow" :data="approveDetails" style="height: 100%;border-radius: 10px;"></ReviewDetails>
|
<ApproveDetails v-if="approveDetailsShow" :data="approveDetails" style="height: 100%;border-radius: 10px;"></ApproveDetails>
|
||||||
</DrawerOverlay>
|
</DrawerOverlay>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@ -521,7 +521,7 @@ import DialogSelect from "./DialogSelect";
|
|||||||
import ImgUpload from "../../../components/ImgUpload.vue";
|
import ImgUpload from "../../../components/ImgUpload.vue";
|
||||||
import {choiceEmojiOne} from "./ChatInput/one";
|
import {choiceEmojiOne} from "./ChatInput/one";
|
||||||
|
|
||||||
import ReviewDetails from "../../../pages/manage/review/details.vue";
|
import ApproveDetails from "../../../pages/manage/approve/details.vue";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "DialogWrapper",
|
name: "DialogWrapper",
|
||||||
@ -536,7 +536,7 @@ export default {
|
|||||||
DrawerOverlay,
|
DrawerOverlay,
|
||||||
UserInput,
|
UserInput,
|
||||||
DialogUpload,
|
DialogUpload,
|
||||||
ReviewDetails
|
ApproveDetails
|
||||||
},
|
},
|
||||||
|
|
||||||
props: {
|
props: {
|
||||||
@ -2371,11 +2371,11 @@ export default {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 打开审批详情
|
// 打开审批详情
|
||||||
let domAudits = $(target).parents(".open-review-details")
|
let domAudits = $(target).parents(".open-approve-details")
|
||||||
if( domAudits.length > 0 ){
|
if( domAudits.length > 0 ){
|
||||||
let dataId = domAudits[0].getAttribute("data-id")
|
let dataId = domAudits[0].getAttribute("data-id")
|
||||||
if( window.innerWidth < 426 ){
|
if( window.innerWidth < 426 ){
|
||||||
this.goForward({name: 'manage-review-details', query: { id: domAudits[0].getAttribute("data-id") } });
|
this.goForward({name: 'manage-approve-details', query: { id: domAudits[0].getAttribute("data-id") } });
|
||||||
}else{
|
}else{
|
||||||
this.approveDetailsShow = true;
|
this.approveDetailsShow = true;
|
||||||
this.$nextTick(()=>{
|
this.$nextTick(()=>{
|
||||||
|
|||||||
@ -54,7 +54,7 @@ export default {
|
|||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
approvalSettingShow(val) {
|
approvalSettingShow(val) {
|
||||||
if (val) this.iframeSrc = `/workflow/#/?name=${this.name}&token=${store.userToken}&lang=${languageType}`
|
if (val) this.iframeSrc = `/approve/#/?name=${this.name}&token=${store.userToken}&lang=${languageType}`
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
@ -68,7 +68,7 @@ export default {
|
|||||||
// 获取列表数据
|
// 获取列表数据
|
||||||
getList(){
|
getList(){
|
||||||
this.$store.dispatch("call", {
|
this.$store.dispatch("call", {
|
||||||
url: 'workflow/procdef/all',
|
url: 'approve/procdef/all',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
}).then(({data}) => {
|
}).then(({data}) => {
|
||||||
this.list = data.rows;
|
this.list = data.rows;
|
||||||
@ -146,7 +146,7 @@ export default {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
this.$store.dispatch("call", {
|
this.$store.dispatch("call", {
|
||||||
url: 'workflow/procdef/del',
|
url: 'approve/procdef/del',
|
||||||
data: {id: item.id},
|
data: {id: item.id},
|
||||||
method: 'post',
|
method: 'post',
|
||||||
}).then(({data}) => {
|
}).then(({data}) => {
|
||||||
|
|||||||
12
resources/assets/js/routes.js
vendored
12
resources/assets/js/routes.js
vendored
@ -30,14 +30,14 @@ export default [
|
|||||||
component: () => import('./pages/manage/messenger.vue'),
|
component: () => import('./pages/manage/messenger.vue'),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'manage-review',//审批
|
name: 'manage-approve',//审批
|
||||||
path: 'review',
|
path: 'approve',
|
||||||
component: () => import('./pages/manage/review/index.vue'),
|
component: () => import('./pages/manage/approve/index.vue'),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'manage-review-details',
|
name: 'manage-approve-details',
|
||||||
path: 'review/details',
|
path: 'approve/details',
|
||||||
component: () => import('./pages/manage/review/details.vue'),
|
component: () => import('./pages/manage/approve/details.vue'),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'manage-setting',
|
name: 'manage-setting',
|
||||||
|
|||||||
14
resources/assets/js/store/actions.js
vendored
14
resources/assets/js/store/actions.js
vendored
@ -457,7 +457,7 @@ export default {
|
|||||||
dispatch("getProjects").catch(() => {});
|
dispatch("getProjects").catch(() => {});
|
||||||
dispatch("getDialogs").catch(() => {});
|
dispatch("getDialogs").catch(() => {});
|
||||||
dispatch("getReportUnread", 1000);
|
dispatch("getReportUnread", 1000);
|
||||||
dispatch("getBacklogUnread", 1000);
|
dispatch("getApproveUnread", 1000);
|
||||||
dispatch("getTaskForDashboard");
|
dispatch("getTaskForDashboard");
|
||||||
dispatch("dialogMsgRead");
|
dispatch("dialogMsgRead");
|
||||||
//
|
//
|
||||||
@ -493,20 +493,20 @@ export default {
|
|||||||
* @param dispatch
|
* @param dispatch
|
||||||
* @param timeout
|
* @param timeout
|
||||||
*/
|
*/
|
||||||
getBacklogUnread({state, dispatch}, timeout) {
|
getApproveUnread({state, dispatch}, timeout) {
|
||||||
window.__getBacklogUnread && clearTimeout(window.__getBacklogUnread)
|
window.__getApproveUnread && clearTimeout(window.__getApproveUnread)
|
||||||
window.__getBacklogUnread = setTimeout(() => {
|
window.__getApproveUnread = setTimeout(() => {
|
||||||
if (state.userId === 0) {
|
if (state.userId === 0) {
|
||||||
state.backlogUnreadNumber = 0;
|
state.approveUnreadNumber = 0;
|
||||||
} else {
|
} else {
|
||||||
dispatch("call", {
|
dispatch("call", {
|
||||||
url: 'workflow/process/findTask',
|
url: 'approve/process/findTask',
|
||||||
data: {
|
data: {
|
||||||
page:1,
|
page:1,
|
||||||
page_size: 500,
|
page_size: 500,
|
||||||
}
|
}
|
||||||
}).then(({data}) => {
|
}).then(({data}) => {
|
||||||
state.backlogUnreadNumber = data.total || 0;
|
state.approveUnreadNumber = data.total || 0;
|
||||||
}).catch(_ => {});
|
}).catch(_ => {});
|
||||||
}
|
}
|
||||||
}, typeof timeout === "number" ? timeout : 1000)
|
}, typeof timeout === "number" ? timeout : 1000)
|
||||||
|
|||||||
2
resources/assets/js/store/state.js
vendored
2
resources/assets/js/store/state.js
vendored
@ -181,5 +181,5 @@ export default {
|
|||||||
localKeyLock: false,
|
localKeyLock: false,
|
||||||
|
|
||||||
// 审批待办未读数量
|
// 审批待办未读数量
|
||||||
backlogUnreadNumber: 0,
|
approveUnreadNumber: 0,
|
||||||
};
|
};
|
||||||
|
|||||||
2
resources/assets/sass/dark.scss
vendored
2
resources/assets/sass/dark.scss
vendored
@ -175,7 +175,7 @@ body.dark-mode-reverse {
|
|||||||
.content-meeting {
|
.content-meeting {
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
}
|
}
|
||||||
.open-review-details{
|
.open-approve-details{
|
||||||
.cause{
|
.cause{
|
||||||
border-bottom: 1px solid #7f7f7f;
|
border-bottom: 1px solid #7f7f7f;
|
||||||
border-top: 1px solid #7f7f7f;
|
border-top: 1px solid #7f7f7f;
|
||||||
|
|||||||
2
resources/assets/sass/pages/_.scss
vendored
2
resources/assets/sass/pages/_.scss
vendored
@ -9,4 +9,4 @@
|
|||||||
@import "page-setting";
|
@import "page-setting";
|
||||||
@import "page-index";
|
@import "page-index";
|
||||||
@import "components/_";
|
@import "components/_";
|
||||||
@import "page-review";
|
@import "page-approve";
|
||||||
|
|||||||
@ -700,7 +700,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.open-review-details{
|
.open-approve-details{
|
||||||
width: 245px;
|
width: 245px;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
|
|||||||
@ -1,22 +1,22 @@
|
|||||||
.page-review{
|
.page-approve{
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
.review-wrapper {
|
.approve-wrapper {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
height: 0;
|
height: 0;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
position: relative;
|
position: relative;
|
||||||
.review-head {
|
.approve-head {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
padding-bottom: 16px;
|
padding-bottom: 16px;
|
||||||
margin: 32px 20px 16px;
|
margin: 32px 20px 16px;
|
||||||
margin-bottom: 5px;
|
margin-bottom: 5px;
|
||||||
border-bottom: 1px solid #F4F4F5;
|
border-bottom: 1px solid #F4F4F5;
|
||||||
.review-nav{
|
.approve-nav{
|
||||||
flex: 1;
|
flex: 1;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
@ -27,7 +27,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.review-main-search{
|
.approve-main-search{
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
margin:0 5px;
|
margin:0 5px;
|
||||||
@ -42,12 +42,12 @@
|
|||||||
text-align: center;
|
text-align: center;
|
||||||
line-height: 150px;
|
line-height: 150px;
|
||||||
}
|
}
|
||||||
.review-mains{
|
.approve-mains{
|
||||||
display: flex;
|
display: flex;
|
||||||
flex: 1 1 auto;
|
flex: 1 1 auto;
|
||||||
height: calc(100vh - 190px);
|
height: calc(100vh - 190px);
|
||||||
position: relative;
|
position: relative;
|
||||||
.review-main-left{
|
.approve-main-left{
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
flex: 0 0 auto;
|
flex: 0 0 auto;
|
||||||
@ -60,12 +60,12 @@
|
|||||||
@media (max-width: 1010px) {
|
@media (max-width: 1010px) {
|
||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
}
|
}
|
||||||
.review-main-list{
|
.approve-main-list{
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
flex: 1 1 auto;
|
flex: 1 1 auto;
|
||||||
overflow: scroll;
|
overflow: scroll;
|
||||||
.review-list{
|
.approve-list{
|
||||||
margin-bottom: 8px;
|
margin-bottom: 8px;
|
||||||
padding: 12px;
|
padding: 12px;
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
@ -106,15 +106,15 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.review-list-active{
|
.approve-list-active{
|
||||||
border: 1px solid #8bcf70;
|
border: 1px solid #8bcf70;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.review-main-list::-webkit-scrollbar {
|
.approve-main-list::-webkit-scrollbar {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.review-main-right{
|
.approve-main-right{
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: 360px;
|
left: 360px;
|
||||||
top: 0;
|
top: 0;
|
||||||
@ -132,18 +132,18 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.review-details{
|
.approve-details{
|
||||||
flex: 1 1 auto;
|
flex: 1 1 auto;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
border: 1px solid #eeeeee;
|
border: 1px solid #eeeeee;
|
||||||
background: #fff;
|
background: #fff;
|
||||||
.review-details-box{
|
.approve-details-box{
|
||||||
flex: 1 1 auto;
|
flex: 1 1 auto;
|
||||||
padding: 24px;
|
padding: 24px;
|
||||||
overflow-y: scroll;
|
overflow-y: scroll;
|
||||||
|
|
||||||
.review-details-title{
|
.approve-details-title{
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
.ivu-tag{
|
.ivu-tag{
|
||||||
@ -151,7 +151,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.review-details-subtitle{
|
.approve-details-subtitle{
|
||||||
margin-top: 8px;
|
margin-top: 8px;
|
||||||
display: flex;
|
display: flex;
|
||||||
.ivu-avatar{
|
.ivu-avatar{
|
||||||
@ -167,7 +167,7 @@
|
|||||||
padding-bottom: 10px;
|
padding-bottom: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.review-details-text{
|
.approve-details-text{
|
||||||
margin-bottom: 12px;
|
margin-bottom: 12px;
|
||||||
> h4{
|
> h4{
|
||||||
color: #999;
|
color: #999;
|
||||||
@ -184,29 +184,29 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.review-record-timeline{
|
.approve-record-timeline{
|
||||||
margin-top: 20px;
|
margin-top: 20px;
|
||||||
.timeline-body{
|
.timeline-body{
|
||||||
display: flex;
|
display: flex;
|
||||||
}
|
}
|
||||||
.review-process-state{
|
.approve-process-state{
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
color: #19be6b;
|
color: #19be6b;
|
||||||
}
|
}
|
||||||
|
|
||||||
.review-process-left{
|
.approve-process-left{
|
||||||
margin-left: 10px;
|
margin-left: 10px;
|
||||||
flex: 1;
|
flex: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
.review-process-right{
|
.approve-process-right{
|
||||||
text-align: right;
|
text-align: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.review-record-comment{
|
.approve-record-comment{
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
margin-bottom: 30px;
|
margin-bottom: 30px;
|
||||||
.top{
|
.top{
|
||||||
@ -223,7 +223,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.review-details-text:nth-last-child(1){
|
.approve-details-text:nth-last-child(1){
|
||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -232,10 +232,10 @@
|
|||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.review-copy{
|
.approve-copy{
|
||||||
margin-top: 8px;
|
margin-top: 8px;
|
||||||
display: flex;
|
display: flex;
|
||||||
.review-copy-member{
|
.approve-copy-member{
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
background: #F4F4F5;
|
background: #F4F4F5;
|
||||||
@ -247,14 +247,14 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.review-details-box::-webkit-scrollbar {
|
.approve-details-box::-webkit-scrollbar {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.review-operation{
|
.approve-operation{
|
||||||
flex: 0 0 auto;
|
flex: 0 0 auto;
|
||||||
padding: 0 24px;
|
padding: 0 24px;
|
||||||
border-top: 1px solid #F4F4F5;
|
border-top: 1px solid #F4F4F5;
|
||||||
@ -108,8 +108,8 @@
|
|||||||
<span style="color:#84c56a">version</span>: 系统版本
|
<span style="color:#84c56a">version</span>: 系统版本
|
||||||
@elseif ($type === 'notice')
|
@elseif ($type === 'notice')
|
||||||
{{$notice}}
|
{{$notice}}
|
||||||
@elseif ($type === 'workflow_reviewer')
|
@elseif ($type === 'approve_reviewer')
|
||||||
<span class="open-review-details" data-id="{{$data->id}}"><b>{{$data->nickname}}提交的「{{$data->proc_def_name}}」待你审批</b>
|
<span class="open-approve-details" data-id="{{$data->id}}"><b>{{$data->nickname}}提交的「{{$data->proc_def_name}}」待你审批</b>
|
||||||
<div class="cause"><span>申请人:<span style="color:#84c56a">{{'@'}}{{$data->nickname}}</span> {{$data->department}}</span>
|
<div class="cause"><span>申请人:<span style="color:#84c56a">{{'@'}}{{$data->nickname}}</span> {{$data->department}}</span>
|
||||||
<b>审批事由</b>
|
<b>审批事由</b>
|
||||||
@if ($data->type)
|
@if ($data->type)
|
||||||
@ -129,8 +129,8 @@
|
|||||||
<Button type="button" class="ivu-btn ivu-btn-error" style="flex: 1;">拒绝</Button>
|
<Button type="button" class="ivu-btn ivu-btn-error" style="flex: 1;">拒绝</Button>
|
||||||
@endif
|
@endif
|
||||||
</div></span>
|
</div></span>
|
||||||
@elseif ($type === 'workflow_notifier')
|
@elseif ($type === 'approve_notifier')
|
||||||
<span class="open-review-details" data-id="{{$data->id}}"><b>抄送{{$data->nickname}}提交的「{{$data->proc_def_name}}」记录</b>
|
<span class="open-approve-details" data-id="{{$data->id}}"><b>抄送{{$data->nickname}}提交的「{{$data->proc_def_name}}」记录</b>
|
||||||
<div class="cause"><span>申请人:<span style="color:#84c56a">{{'@'}}{{$data->nickname}}</span> {{$data->department}}</span>
|
<div class="cause"><span>申请人:<span style="color:#84c56a">{{'@'}}{{$data->nickname}}</span> {{$data->department}}</span>
|
||||||
<b>审批事由</b>
|
<b>审批事由</b>
|
||||||
@if ($data->type)
|
@if ($data->type)
|
||||||
@ -145,8 +145,8 @@
|
|||||||
<Button type="button" class="ivu-btn" style="flex: 1;">查看详情</Button>
|
<Button type="button" class="ivu-btn" style="flex: 1;">查看详情</Button>
|
||||||
@endif
|
@endif
|
||||||
</div></span>
|
</div></span>
|
||||||
@elseif ($type === 'workflow_submitter')
|
@elseif ($type === 'approve_submitter')
|
||||||
<span class="open-review-details" data-id="{{$data->id}}"><b> @if ($action === 'pass')您发起的「{{$data->proc_def_name}}」已通过 @else您发起的「{{$data->proc_def_name}}」被{{$data->nickname}}拒绝 @endif</b>
|
<span class="open-approve-details" data-id="{{$data->id}}"><b> @if ($action === 'pass')您发起的「{{$data->proc_def_name}}」已通过 @else您发起的「{{$data->proc_def_name}}」被{{$data->nickname}}拒绝 @endif</b>
|
||||||
<div class="cause"><span>申请人:<span style="color:#84c56a">{{'@'}}{{$data->nickname}}</span> {{$data->department}}</span>
|
<div class="cause"><span>申请人:<span style="color:#84c56a">{{'@'}}{{$data->nickname}}</span> {{$data->department}}</span>
|
||||||
<b>审批事由</b>
|
<b>审批事由</b>
|
||||||
@if ($data->type)
|
@if ($data->type)
|
||||||
|
|||||||
@ -9,7 +9,7 @@ use App\Http\Controllers\Api\PublicController;
|
|||||||
use App\Http\Controllers\Api\ReportController;
|
use App\Http\Controllers\Api\ReportController;
|
||||||
use App\Http\Controllers\Api\SystemController;
|
use App\Http\Controllers\Api\SystemController;
|
||||||
use App\Http\Controllers\Api\ProjectController;
|
use App\Http\Controllers\Api\ProjectController;
|
||||||
use App\Http\Controllers\Api\WorkflowController;
|
use App\Http\Controllers\Api\ApproveController;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
@ -48,9 +48,9 @@ Route::prefix('api')->middleware(['webapi'])->group(function () {
|
|||||||
// 公开接口
|
// 公开接口
|
||||||
Route::any('public/{method}', PublicController::class);
|
Route::any('public/{method}', PublicController::class);
|
||||||
Route::any('public/{method}/{action}', PublicController::class);
|
Route::any('public/{method}/{action}', PublicController::class);
|
||||||
// 工作流
|
// 审批
|
||||||
Route::any('workflow/{method}', WorkflowController::class);
|
Route::any('approve/{method}', ApproveController::class);
|
||||||
Route::any('workflow/{method}/{action}', WorkflowController::class);
|
Route::any('approve/{method}/{action}', ApproveController::class);
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user