This commit is contained in:
2025-03-14 09:27:29 +08:00
parent a51f77bbf5
commit fbcfef4ff0
12 changed files with 768 additions and 5 deletions

View File

@ -0,0 +1,93 @@
<?php
namespace plugin\ticket\controller;
use plugin\ticket\model\ApprovalProcess;
use think\admin\Controller;
use think\admin\helper\QueryHelper;
use think\admin\model\SystemUser;
class Approval extends Controller
{
/**
* 流程管理列表
* @auth true
* @menu true
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function index()
{
$this->title = '审批流程管理';
ApprovalProcess::mQuery()->layTable(function () {
$this->types = [
0 => '待提交',
1 => '进行中',
2 => '已通过',
3 => '已驳回',
4 => '已取消'
];
}, function (QueryHelper $query) {
$query->like('name')->equal('status');
$query->dateBetween('create_time');
});
}
/**
* 添加审批流程
* @auth true
* @menu true
*/
public function add()
{
$this->title = '添加审批流程';
$this->users = SystemUser::query()->field('id,username,nickname')->select();
ApprovalProcess::mForm('form');
}
/**
* 编辑审批流程
* @auth true
* @menu true
*/
public function edit()
{
$this->title = '编辑审批流程';
$this->id = $this->request->param('id');
$this->users = SystemUser::query()->field('id,username,nickname')->select();
ApprovalProcess::mForm('form', 'id');
}
/**
* 删除审批流程
* @auth true
* @menu true
*/
public function remove()
{
ApprovalProcess::mDelete('id');
}
/**
* 表单数据处理
* @param array $data
*/
protected function _form_filter(array &$data)
{
if ($this->request->isPost()) {
// 解析步骤数据
$steps = json_decode($data['steps'], true);
foreach ($steps as &$step) {
$step['approver_type'] = intval($step['approver_type']);
}
$data['steps'] = json_encode($steps);
// 检查是否存在相同类型的审批流程,排除当前编辑的记录
$type = $this->request->post('type');
$id = $this->request->post('id');
if (ApprovalProcess::where('type', $type)->where('id', '<>', $id)->find()) {
$this->error('该类型的审批流程已经存在');
}
}
}
}

View File

@ -3,6 +3,9 @@
namespace plugin\ticket\controller;
use plugin\inspection\model\InspectionStaff;
use plugin\ticket\model\ApprovalInstance;
use plugin\ticket\model\ApprovalProcess;
use plugin\ticket\model\ApprovalStep;
use plugin\ticket\model\TicketDept;
use plugin\ticket\model\TicketReply;
use plugin\ticket\model\TicketTicket;
@ -10,6 +13,7 @@ use plugin\ticket\model\TicketType;
use think\admin\Controller;
use think\admin\helper\QueryHelper;
use think\admin\model\SystemUser;
use think\exception\HttpResponseException;
/**
* 工单管理
@ -36,7 +40,7 @@ class Ticket extends Controller
$query->like(['title|content|contact_name|ticket_address|contact_phone#keyword'])
->dateBetween(['create_at'])
->equal(['status', 'type_id']);
$query->append(['imgs_arr', 'source_type_name', 'status_text', 'type_name', 'last_reply']);
$query->append(['imgs_arr', 'source_type_name', 'status_text', 'type_name', 'last_reply'])->with('approval');
});
}
@ -61,7 +65,8 @@ class Ticket extends Controller
if ($this->request->isPost()) {
$data['user_id'] = 0;
}
$data['status'] = 0;
ApprovalInstance::query()->where('oid', '=', $data['id'])->delete();
$data['status'] = -1;
}
/**
@ -90,6 +95,7 @@ class Ticket extends Controller
public function edit()
{
$this->title = '编辑工单';
$this->id = $this->request->get('id');
$this->types = TicketType::mk()->scope('active')->select();
TicketTicket::mForm('form');
}
@ -162,4 +168,160 @@ class Ticket extends Controller
$this->fetch();
}
}
/**
* 审核页面
* @auth true
* @menu true
*/
public function approve()
{
$this->title = '审核流程';
[
'id'=>$id
] = $this->_vali([
'id.require'=>'请指定回复ID!'
]);
$this->vo = TicketTicket::query()->with(['user', 'type'])->append(['imgs_arr', 'status_text', 'type_name'])->find($id);
$process = ApprovalProcess::where('type', '=', 'GDSH')->order('id', 'asc')->findOrEmpty();
if ($process->isEmpty()) {
$this->error('未找到可用的审核流程');
}
$this->process = $process;
$instance = ApprovalInstance::query()->with(['steps', 'logs'])->where('process_id', '=', $process->id)->where('oid', '=', $id)->findOrEmpty();
$this->instance = $instance;
if ($instance->isEmpty()) {
$this->step_index = -1;
$this->current_step = $process->steps[0];
} else {
$this->step_index = $instance->current_step;
if (sizeof($instance->steps) <= ($instance->current_step + 1)) {
$this->current_step = ['approver_type' => 0];
} else {
$this->current_step = $instance->steps[$instance->current_step + 1];
}
}
$this->users = SystemUser::query()->field('id,username,nickname')->select();
$this->fetch();
}
public function create_approval()
{
$data = $this->_vali([
'id.require'=>'请指定工单ID!',
'title.default'=>'工单审核',
'content.default'=>'',
]);
$process = ApprovalProcess::where('type', '=', 'GDSH')->order('id', 'asc')->findOrEmpty();
if ($process->isEmpty()) {
$this->error('未找到可用的审核流程');
}
$adminInfo = $this->request->session('user');
ApprovalInstance::mk()->startTrans();
try {
$instance = ApprovalInstance::create([
'process_id' => $process->id,
'oid' => $data['id'],
'title' => $data['title'],
'content' => $data['content'],
'status' => 0,
'current_step' => 0,
'create_time' => date('Y-m-d H:i:s'),
'create_by' => $adminInfo['id'],
'create_name' => $adminInfo['username'],
]);
foreach ($process->steps as $index => $step) {
$approver_id = $step['approver_id'] ?? 0;
if ($index == 0) {
if ($step['approver_type'] == 3) {
$approve_data = $this->_vali([
'approver_id.require' => '请指定审核人!',
]);
$approver_id = $approve_data['approver_id'];
}
}
ApprovalStep::create([
'instance_id' => $instance->id,
'step_number' => $index,
'approver_type' => $step['approver_type'],
'approver_id' => $approver_id,
'status' => 0,
]);
}
ApprovalInstance::mk()->commit();
} catch (HttpResponseException $e) {
ApprovalInstance::mk()->rollback();
throw $e;
} catch (\Exception $e) {
ApprovalInstance::mk()->rollback();
// $this->error("创建失败");
throw $e;
}
$this->success('创建成功!');
}
public function do_approve()
{
$data = $this->_vali([
'id.require'=>'请指定工单ID!',
'instance_id.require'=>'请指定当前审核ID!',
'step_index.require'=>'请指定当前步骤!',
'status.require'=>'请指定审核结果!',
'content.default'=>'',
]);
$ticket = TicketTicket::query()->findOrEmpty($data['id']);
if ($ticket->isEmpty()) {
$this->error('工单不存在!');
}
$adminInfo = $this->request->session('user');
$instance = ApprovalInstance::query()->with('steps')->findOrEmpty($data['instance_id']);
if ($instance->isEmpty()) {
$this->error('审核流程不存在!');
}
if ($instance->status == 1) {
$this->error('工单已通过,请勿重复操作!');
} else if ($instance->status == 2) {
$this->error('工单已驳回,请勿重复操作!');
}
if ($instance->current_step != $data['step_index']) {
$this->error('当前步骤不正确!');
}
if ($instance->current->approver_id != $adminInfo['id']) {
$this->error('您不是当前审核人,请勿操作!');
}
ApprovalInstance::mk()->startTrans();
try {
$instance->current->status = $data['status'];
$instance->current->content = $data['content'];
$instance->current->save();
if ($data['status'] == 2) {
$instance->status = 2;
} else {
$instance->current_step++;
if ($instance->current_step >= count($instance->steps)) {
$instance->status = 1;
$ticket->status = 0;
} else {
$step = $instance->steps[$instance->current_step];
if ($step['approver_type'] == 3) {
$approve_data = $this->_vali([
'approver_id.require' => '请指定审核人!',
]);
$step->approver_id = $approve_data['approver_id'];
$step->save();
}
}
}
$instance->save();
ApprovalInstance::mk()->commit();
} catch (HttpResponseException $e) {
ApprovalInstance::mk()->rollback();
throw $e;
} catch (\Exception $e) {
ApprovalInstance::mk()->rollback();
// $this->error("审核失败");
throw $e;
}
$this->success('审核成功!');
}
}

View 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']] ?? '未知';
}
}

View 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']] ?? '未知操作';
}
}

View 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);
}
}

View 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);
}
}

View File

@ -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');

View File

@ -0,0 +1,133 @@
<form class="layui-form layui-card" action="{:sysuri()}" data-auto="true" method="post" autocomplete="off" data-table-id="ticketTable">
<div class="layui-col-xs12 layui-col-sm12 layui-col-md12">
<div class="layui-form-item">
<label class="layui-form-label">流程名称</label>
<div class="layui-input-block">
<input type="text" name="name" lay-verify="required" value="{$vo.name|default=''}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">流程类型</label>
<div class="layui-input-block">
<select class="layui-select" name="type" required>
<option value="GDSH" {if isset($vo.type) && $vo.type == 'GDSH'}selected{/if}>工单审核</option>
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">审批步骤</label>
<div class="layui-input-block" id="approval-steps">
<table class="layui-hide" id="processStepTable" lay-filter="processStepTable"></table>
<button type="button" class="layui-btn layui-btn-normal add-step">添加步骤</button>
</div>
</div>
<input type="hidden" name="steps" value='{$vo.steps|default=[]|raw|json_encode}'>
{notempty name='vo.id'}<input type="hidden" name="id" value="{$vo.id}">{/notempty}
</div>
<div class="layui-form-item text-center">
<button class="layui-btn layui-btn-normal" type='submit'>保存数据</button>
<button class="layui-btn layui-btn-danger" type='button' data-confirm="确定要取消编辑吗?" data-close>取消编辑</button>
</div>
</form>
<script type="text/html" id="editToolbar">
<a class="layui-btn layui-btn-danger layui-btn-xs remove-step">删除</a>
</script>
<script type="text/html" id="approverType">
<select class="layui-select" lay-filter="approverType" required>
<option value="0" {{# if (d.approver_type == 0) {}} selected {{# } }}>固定审批人</option>
<option value="3" {{# if (d.approver_type == 3) {}} selected {{# } }}>自由指定审批人</option>
</select>
</script>
<script type="text/html" id="approverId">
{{# if (d.approver_type == 0) { }}
<select class="layui-select" lay-filter="approverId" required lay-search>
<option value="">请选择审批人</option>
{foreach $users as $user}
<option value="{$user.id}" {{# if (d.approver_id == {$user.id}) {}} selected {{# } }}>{$user.username}</option>
{/foreach}
</select>
{{# } else { }}
用户自行选择
{{# } }}
</script>
<style>
.layui-table-cell {
overflow: visible !important;
}
</style>
<script>
$(function () {
layui.use(['table', 'form'], function () {
var table = layui.table,
form = layui.form;
// 回显步骤数据
var stepsData = JSON.parse($('input[name="steps"]').val());
table.render({
height: '400',
title: '步骤列表',
cols: [[
{field:'title', title:'步骤名称', width:160, edit: true},
{field:'approver_type', title:'审批人类型', width:160, templet: '#approverType'},
{field:'approver_id', title:'审批人类型', width:160, templet: '#approverId'},
{align: 'center', toolbar: '#editToolbar', title: '操作', width: 200}
]],
data: stepsData,
page: false,
id: 'processStepTable',
elem: '#processStepTable',
})
form.on('select(approverType)', function (data, item) {
var index = $(this).closest('tr').data('index');
const currData = table.cache['processStepTable'] || [];
currData[index].approver_type = data.value;
$('input[name="steps"]').val(JSON.stringify(currData))
table.reload('processStepTable', {
data: currData
});
});
form.on('select(approverId)', function (data, item) {
var index = $(this).closest('tr').data('index');
const currData = table.cache['processStepTable'] || [];
currData[index].approver_id = data.value;
$('input[name="steps"]').val(JSON.stringify(currData))
table.reload('processStepTable', {
data: currData
});
});
table.on('tool(processStepTable)', function (obj) {
if (obj.event === 'remove') {
obj.del();
}
});
table.on('edit(processStepTable)', function (obj) {
const currData = table.cache['processStepTable'] || [];
$('input[name="steps"]').val(JSON.stringify(currData))
})
// 添加步骤
$('.add-step').on('click', function () {
const currData = table.cache['processStepTable'] || [];
currData.push({
title: '',
approver_type: 0,
})
table.reload('processStepTable', {
data: currData
});
});
// 删除步骤
$('#approval-steps').on('click', '.remove-step', function () {
var index = $(this).closest('tr').data('index');
const currData = table.cache['processStepTable'] || [];
currData.splice(index, 1);
table.reload('processStepTable', {
data: currData
});
});
});
});
</script>

View File

@ -0,0 +1,51 @@
{extend name="table"}
{block name="button"}
<!--{if auth("add")}-->
<a data-modal="{:url('add')}" data-height="80%" data-width="80%" class="layui-btn layui-btn-xs">添加流程</a>
<!--{/if}-->
{/block}
{block name="content"}
<div class="layui-row">
<div class="layui-col">
<div class="article_list think-bg-white">
{include file='approval/index_search'}
<table class="layui-hide" data-url="{$request->url()}" data-target-search="form.form-search" id="processTable" lay-filter="processTable"></table>
</div>
</div>
</div>
<script type="text/html" id="toolbar">
<!--{if auth("edit")}-->
<a data-modal="{:url('edit')}?id={{ d.id }}" data-width="50%" class="layui-btn layui-btn-xs">编辑</a>
<!--{/if}-->
<!--{if auth("remove")}-->
<a data-confirm="确定删除该流程?" data-action="{:url('remove')}" data-value="id#{{d.id}}" class="layui-btn layui-btn-danger layui-btn-xs">删除</a>
<!--{/if}-->
</script>
{/block}
{block name='style'}
<style>
</style>
{/block}
{block name='script'}
<script>
$(function () {
$('#processTable').layTable({
height: 'full-250',
toolbar: true,
sort: {field: 'create_time', type: 'desc'},
title: '流程列表',
cols: [[
{field:'create_time', title: '创建时间', width: 160, sort: true},
{field:'name', title:'流程名称', width:160},
{align: 'center', toolbar: '#toolbar', title: '操作', width: 200}
]]
});
});
</script>
{/block}

View File

@ -0,0 +1,16 @@
<fieldset>
<legend>条件搜索</legend>
<form class="layui-form layui-form-pane form-search" action="{:request()->url()}" onsubmit="return false" method="get" autocomplete="off">
<div class="layui-form-item layui-inline">
<label class="layui-form-label">流程名称</label>
<div class="layui-input-inline">
<input name="name" value="{:input('get.name')}" placeholder="请输入流程名称" class="layui-input">
</div>
</div>
<div class="layui-form-item layui-inline">
<button class="layui-btn layui-btn-primary" lay-submit lay-filter="searchData"><i class="layui-icon">&#xe615;</i> 搜 索</button>
</div>
</form>
</fieldset>

View File

@ -0,0 +1,104 @@
<div class="layui-collapse">
<div class="layui-colla-item">
<div class="layui-colla-title">审核流程</div>
<div class="layui-colla-content">
<div class="layui-timeline">
<div class="layui-timeline-item">
<i class="layui-icon layui-timeline-axis"></i>
<div class="layui-timeline-content layui-text">
<h3 class="layui-timeline-title">提交审核</h3>
</div>
</div>
{foreach $process.steps as $index=>$step}
<div class="layui-timeline-item">
<i class="layui-icon layui-timeline-axis"></i>
<div class="layui-timeline-content layui-text">
<h3 class="layui-timeline-title">{$index+1}{if $step_index == $index}(当前步骤){/if}</h3>
<p>
{$step.title}
</p>
</div>
</div>
{/foreach}
</div>
</div>
</div>
</div>
{if $instance->isEmpty()}
<div class="layui-card">
<div class="layui-card-header">创建审核单</div>
<div class="layui-card-body">
<form class="layui-form" data-table-id="formDemo" action="{:url('create_approval')}" data-auto="true" method="post">
<input type="hidden" name="id" value="{$vo.id}">
<div class="layui-form-item">
<label class="layui-form-label">审核说明</label>
<div class="layui-input-block">
<textarea name="content" placeholder="请输入审核说明" class="layui-textarea"></textarea>
</div>
</div>
{if $current_step.approver_type == 3}
<div class="layui-form-item">
<label class="layui-form-label">请指定下一步审核人</label>
<div class="layui-input-block">
<select name="approver_id" lay-verify="required" lay-search>
<option value="">请选择审核人</option>
{foreach $users as $user}
<option value="{$user.id}">{$user.username}</option>
{/foreach}
</select>
</div>
</div>
{/if}
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn layui-btn-normal" type='submit'>立即提交</button>
<button class="layui-btn layui-btn-primary" type="reset">重置</button>
</div>
</div>
</form>
</div>
</div>
{else}
<div class="layui-card">
<div class="layui-card-header">工单审核</div>
<div class="layui-card-body">
<form class="layui-form" data-table-id="formDemo" action="{:url('do_approve')}" data-auto="true" method="post">
<input type="hidden" name="id" value="{$vo.id}">
<input type="hidden" name="instance_id" value="{$instance->id}">
<input type="hidden" name="step_index" value="{$step_index}">
<div class="layui-form-item">
<label class="layui-form-label">审核结果</label>
<div class="layui-input-block">
<input type="radio" name="status" value="1" title="通过" checked>
<input type="radio" name="status" value="2" title="不通过">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">审核意见</label>
<div class="layui-input-block">
<textarea name="content" placeholder="请输入审核意见" class="layui-textarea"></textarea>
</div>
</div>
{if $current_step.approver_type == 3}
<div class="layui-form-item">
<label class="layui-form-label">请指定下一步审核人</label>
<div class="layui-input-block">
<select name="approver_id" lay-verify="required" lay-search>
<option value="">请选择审核人</option>
{foreach $users as $user}
<option value="{$user.id}">{$user.username}</option>
{/foreach}
</select>
</div>
</div>
{/if}
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn layui-btn-normal" type='submit'>立即提交</button>
<button class="layui-btn layui-btn-primary" type="reset">重置</button>
</div>
</div>
</form>
</div>
</div>
{/if}

View File

@ -22,12 +22,25 @@
<!--{if auth("detail")}-->
<a data-modal="{:url('detail')}?id={{ d.id }}" data-height="90%" data-width="60%" class="layui-btn layui-btn-xs layui-btn-normal" title="详情">详情</a>
<!--{/if}-->
{{# if (d.status == 0) { }}
<!--{if auth("move")}-->
<a data-modal="{:url('move')}?id={{ d.id }}" data-height="80%" data-width="80%" class="layui-btn layui-btn-xs" title="分配">分配</a>
<!--{/if}-->
{{# } }}
{{# if (d.status == -1) { }}
<!--{if auth("approve")}-->
{{# if (d.approval == null) { }}
<a data-modal="{:url('approve')}?id={{ d.id }}" data-height="90%" data-width="50%" class="layui-btn layui-btn-xs" title="审核">审核</a>
{{# } else if (d.approval.status == 0 && d.approval.current.approver_id == {$user_id}) { }}
<a data-modal="{:url('approve')}?id={{ d.id }}" data-height="90%" data-width="50%" class="layui-btn layui-btn-xs" title="去审核">去审核</a>
{{# } }}
{{# } }}
<!--{/if}-->
{{# if (d.approval == null || d.approval.status != 1) { }}
<!--{if auth("edit")}-->
<a data-modal="{:url('edit')}?id={{ d.id }}" data-height="80%" data-width="80%" class="layui-btn layui-btn-xs layui-btn-danger" title="修改工单">修改</a>
<!--{/if}-->
{{# } }}
</script>
{/block}
@ -66,11 +79,18 @@
}
}},
{field:'status', title:'状态', width:80, templet:function(item){
if(item.status == 0){
return '<span style="color:red;">正在处理</span>';
if (item.approval != null) {
if (item.approval.status != 1) {
return item.approval.status == 2 ? '<span style="color:red;">审核不通过</span>' : '<span style="color:gray;">审核中</span>';
}
}
if(item.status < 0){
return '<span style="color:red;">待提交审核</span>';
}else if(item.status == 0){
return '<span style="color:red;">待分配</span>';
}else if(item.status == 1){
return '<span style="color:green;">已处理</span>';
}else{
}else if(item.status == 2){
return '<span style="color:gray;">已关闭</span>';
}
}},