You've already forked guangan
OA审核
This commit is contained in:
53
plugs/think-plugs-ticket/src/model/ApprovalInstance.php
Normal file
53
plugs/think-plugs-ticket/src/model/ApprovalInstance.php
Normal file
@ -0,0 +1,53 @@
|
||||
<?php
|
||||
|
||||
namespace plugin\ticket\model;
|
||||
|
||||
use think\admin\Model;
|
||||
|
||||
class ApprovalInstance extends Model
|
||||
{
|
||||
// 表名定义
|
||||
protected $name = 'approval_instance';
|
||||
|
||||
// 自动写入时间戳
|
||||
protected $autoWriteTimestamp = 'datetime';
|
||||
protected $createTime = 'create_time';
|
||||
protected $updateTime = 'update_time';
|
||||
protected $append = ['status_text', 'current'];
|
||||
|
||||
// 关联流程定义
|
||||
public function process()
|
||||
{
|
||||
return $this->belongsTo(ApprovalProcess::class, 'process_id', 'id');
|
||||
}
|
||||
|
||||
// 关联审批步骤
|
||||
public function steps()
|
||||
{
|
||||
return $this->hasMany(ApprovalStep::class, 'instance_id', 'id');
|
||||
}
|
||||
|
||||
public function getCurrentAttr($value, $data)
|
||||
{
|
||||
return $this->steps[$data['current_step']] ?? [];
|
||||
}
|
||||
|
||||
// 关联审批日志
|
||||
public function logs()
|
||||
{
|
||||
return $this->hasMany(ApprovalLog::class, 'instance_id', 'id');
|
||||
}
|
||||
|
||||
// 格式化流程状态
|
||||
public function getStatusTextAttr($value, $data)
|
||||
{
|
||||
$statusMap = [
|
||||
0 => '待提交',
|
||||
1 => '进行中',
|
||||
2 => '已通过',
|
||||
3 => '已驳回',
|
||||
4 => '已取消'
|
||||
];
|
||||
return $statusMap[$data['status']] ?? '未知';
|
||||
}
|
||||
}
|
46
plugs/think-plugs-ticket/src/model/ApprovalLog.php
Normal file
46
plugs/think-plugs-ticket/src/model/ApprovalLog.php
Normal file
@ -0,0 +1,46 @@
|
||||
<?php
|
||||
|
||||
namespace plugin\ticket\model;
|
||||
|
||||
use think\admin\Model;
|
||||
use think\admin\model\SystemUser;
|
||||
|
||||
class ApprovalLog extends Model
|
||||
{
|
||||
// 表名定义
|
||||
protected $name = 'approval_log';
|
||||
|
||||
// 自动写入时间戳
|
||||
protected $autoWriteTimestamp = 'datetime';
|
||||
protected $createTime = 'create_time';
|
||||
protected $updateTime = 'update_time';
|
||||
|
||||
// 关联审批实例
|
||||
public function instance()
|
||||
{
|
||||
return $this->belongsTo(ApprovalInstance::class, 'instance_id', 'id');
|
||||
}
|
||||
|
||||
// 关联审批步骤
|
||||
public function step()
|
||||
{
|
||||
return $this->belongsTo(ApprovalStep::class, 'step_id', 'id');
|
||||
}
|
||||
|
||||
// 关联操作用户(示例:关联现有用户表)
|
||||
public function operator()
|
||||
{
|
||||
return $this->belongsTo(SystemUser::class, 'user_id', 'id');
|
||||
}
|
||||
|
||||
// 格式化操作类型
|
||||
public function getActionTextAttr($value, $data)
|
||||
{
|
||||
$actionMap = [
|
||||
'approve' => '审批通过',
|
||||
'reject' => '驳回',
|
||||
'transfer' => '转交审批'
|
||||
];
|
||||
return $actionMap[$data['action']] ?? '未知操作';
|
||||
}
|
||||
}
|
34
plugs/think-plugs-ticket/src/model/ApprovalProcess.php
Normal file
34
plugs/think-plugs-ticket/src/model/ApprovalProcess.php
Normal file
@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
namespace plugin\ticket\model;
|
||||
|
||||
use think\admin\Model;
|
||||
|
||||
class ApprovalProcess extends Model
|
||||
{
|
||||
// 表名定义
|
||||
protected $name = 'approval_process';
|
||||
|
||||
// 自动写入时间戳
|
||||
protected $autoWriteTimestamp = 'datetime';
|
||||
protected $createTime = 'create_time';
|
||||
protected $updateTime = 'update_time';
|
||||
|
||||
// 关联审批实例
|
||||
public function instances()
|
||||
{
|
||||
return $this->hasMany(ApprovalInstance::class, 'process_id', 'id');
|
||||
}
|
||||
|
||||
// 过滤有效流程
|
||||
public function scopeAvail($query)
|
||||
{
|
||||
return $query->where('status', 1);
|
||||
}
|
||||
|
||||
// 流程步骤解析
|
||||
public function getStepsAttr($value)
|
||||
{
|
||||
return json_decode($value, true);
|
||||
}
|
||||
}
|
46
plugs/think-plugs-ticket/src/model/ApprovalStep.php
Normal file
46
plugs/think-plugs-ticket/src/model/ApprovalStep.php
Normal file
@ -0,0 +1,46 @@
|
||||
<?php
|
||||
|
||||
namespace plugin\ticket\model;
|
||||
|
||||
use think\admin\Model;
|
||||
use think\admin\model\SystemUser;
|
||||
|
||||
class ApprovalStep extends Model
|
||||
{
|
||||
// 表名定义
|
||||
protected $name = 'approval_step';
|
||||
|
||||
// 自动写入时间戳
|
||||
protected $autoWriteTimestamp = 'datetime';
|
||||
protected $createTime = 'create_time';
|
||||
protected $updateTime = 'update_time';
|
||||
|
||||
// 关联审批实例
|
||||
public function instance()
|
||||
{
|
||||
return $this->belongsTo(ApprovalInstance::class, 'instance_id', 'id');
|
||||
}
|
||||
|
||||
// 关联审批人(示例:关联现有用户表)
|
||||
public function approver()
|
||||
{
|
||||
return $this->belongsTo(SystemUser::class, 'approver_id', 'id');
|
||||
}
|
||||
|
||||
// 格式化审批类型
|
||||
public function getApproverTypeTextAttr($value, $data)
|
||||
{
|
||||
$typeMap = [
|
||||
0 => '指定用户',
|
||||
// 1 => '指定部门',
|
||||
// 2 => '角色审批'
|
||||
];
|
||||
return $typeMap[$data['approver_type']] ?? '未知';
|
||||
}
|
||||
|
||||
// 校验步骤有效性
|
||||
public function scopeAvail($query)
|
||||
{
|
||||
return $query->where('status', 0);
|
||||
}
|
||||
}
|
@ -15,6 +15,11 @@ class TicketTicket extends Model
|
||||
return $this->belongsTo(TicketType::class, 'type_id');
|
||||
}
|
||||
|
||||
public function approval()
|
||||
{
|
||||
return $this->belongsTo(ApprovalInstance::class, 'id', 'oid');
|
||||
}
|
||||
|
||||
public function user()
|
||||
{
|
||||
return $this->morphTo('user');
|
||||
|
Reference in New Issue
Block a user