143 lines
5.3 KiB
PHP
143 lines
5.3 KiB
PHP
<?php
|
|
namespace app\crm\controller;
|
|
|
|
use app\common\controller\BaseController;
|
|
use app\common\traits\crud\CrudControllerTrait;
|
|
use app\common\service\ApprovalRecordsService;
|
|
use app\common\model\SysDictItem;
|
|
use support\Request;
|
|
|
|
class ApprovalRecordsController extends BaseController
|
|
{
|
|
use CrudControllerTrait;
|
|
|
|
protected $service;
|
|
|
|
public function __construct()
|
|
{
|
|
$this->service = new ApprovalRecordsService();
|
|
}
|
|
|
|
/**
|
|
* 列表页数据格式化
|
|
*
|
|
* @param array $data
|
|
* @return array
|
|
*/
|
|
protected function indexFormat($data)
|
|
{
|
|
if (isset($data['records']) && count($data['records']) > 0) {
|
|
foreach ($data['records'] as $key => &$record) {
|
|
$result = [
|
|
'id' => $record['id'],
|
|
'flows_name' => $record['approvalInstance']['flows']['name'],
|
|
|
|
'instance_id' => $record['instance_id'],
|
|
|
|
'biz_id' => $record['approvalInstance']['biz_id'],
|
|
'biz_desc' => '备货单【'.$record['approvalInstance']['bizInfo']['order_no'].'】',
|
|
'biz_type' => $record['approvalInstance']['flow_type'],
|
|
|
|
'initiator_name' => $record['approvalInstance']['initiator']['name'],
|
|
'initiator_avatar' => $record['approvalInstance']['initiator']['avatar'],
|
|
|
|
'approver_name' => $record['approver']['name'],
|
|
'approver_avatar' => $record['approver']['avatar'],
|
|
|
|
'step_index' => $record['step_index'],
|
|
'action' => $record['action'],
|
|
'action_desc' => SysDictItem::where('item_value', $record['action'])->where('status', 1)->value('item_label'),
|
|
'status' => $record['status'],
|
|
'status_desc' => SysDictItem::where('item_value', $record['status'])->where('status', 1)->value('item_label'),
|
|
'comment' => $record['comment'],
|
|
'approved_at' => $record['approved_at'],
|
|
|
|
'finished_at' => $record['approvalInstance']['finished_at'],
|
|
'deadline_at' => $record['approvalInstance']['deadline_at'],
|
|
|
|
'created_at' => $record['created_at']
|
|
];
|
|
$record = $result;
|
|
}
|
|
}
|
|
return $data;
|
|
}
|
|
|
|
|
|
public function approve(Request $request)
|
|
{
|
|
try {
|
|
$res = $this->service->serviceApprove($request);
|
|
return $this->success([], $res['msg']);
|
|
} catch (\Throwable $e) {
|
|
return $this->error($e->getMessage());
|
|
}
|
|
}
|
|
|
|
|
|
public function logs(Request $request)
|
|
{
|
|
try {
|
|
$instanceId = $request->get('instance_id');
|
|
$appro = new \app\common\utils\approval\service\ApprovalFlowService();
|
|
$res = $appro->getSimpleTimeline($instanceId, 'name', 'prepend');
|
|
return $this->success($res);
|
|
} catch (\Throwable $e) {
|
|
return $this->error($e->getMessage());
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public function todo(Request $request)
|
|
{
|
|
try {
|
|
$raw = $this->service->serviceList($request, 'todo');
|
|
$data = $this->transformData($raw, method_exists($this, 'todoFormat')
|
|
? [$this, 'todoFormat']
|
|
: null);
|
|
return $this->success($data);
|
|
} catch (\Throwable $e) {
|
|
return $this->error($e->getMessage());
|
|
}
|
|
}
|
|
|
|
protected function todoFormat($data)
|
|
{
|
|
if (isset($data['records']) && count($data['records']) > 0) {
|
|
foreach ($data['records'] as $key => &$record) {
|
|
$result = [
|
|
'id' => $record['id'],
|
|
'flows_name' => $record['approvalInstance']['flows']['name'],
|
|
|
|
'instance_id' => $record['instance_id'],
|
|
|
|
'biz_id' => $record['approvalInstance']['biz_id'],
|
|
'biz_desc' => '备货单号【'.$record['approvalInstance']['bizInfo']['order_no'].'】',
|
|
'biz_type' => $record['approvalInstance']['flow_type'],
|
|
|
|
'initiator_name' => $record['approvalInstance']['initiator']['name'],
|
|
'initiator_avatar' => $record['approvalInstance']['initiator']['avatar'],
|
|
|
|
'approver_name' => $record['approver']['name'],
|
|
'approver_avatar' => $record['approver']['avatar'],
|
|
|
|
'step_index' => $record['step_index'],
|
|
'action' => $record['action'],
|
|
'action_desc' => SysDictItem::where('item_value', $record['action'])->where('status', 1)->value('item_label'),
|
|
'status' => $record['status'],
|
|
'status_desc' => SysDictItem::where('item_value', $record['status'])->where('status', 1)->value('item_label'),
|
|
'comment' => $record['comment'],
|
|
'approved_at' => $record['approved_at'],
|
|
|
|
'finished_at' => $record['approvalInstance']['finished_at'],
|
|
'deadline_at' => $record['approvalInstance']['deadline_at'],
|
|
|
|
'created_at' => $record['created_at']
|
|
];
|
|
$record = $result;
|
|
}
|
|
}
|
|
return $data;
|
|
}
|
|
} |