You've already forked guangan
111111
This commit is contained in:
@ -29,6 +29,9 @@ class Ticket extends Auth
|
|||||||
$ticket_address = $this->request->post('ticket_address');
|
$ticket_address = $this->request->post('ticket_address');
|
||||||
$imgs = $this->request->post('imgs');
|
$imgs = $this->request->post('imgs');
|
||||||
$work_days = $this->request->post('work_days');
|
$work_days = $this->request->post('work_days');
|
||||||
|
$gc_content = $this->request->post('gc_content');
|
||||||
|
$zf_content = $this->request->post('zf_content');
|
||||||
|
$ys_content = $this->request->post('ys_content');
|
||||||
$data = [
|
$data = [
|
||||||
'user_id' => $this->staff->id,
|
'user_id' => $this->staff->id,
|
||||||
'type_id' => $type_id,
|
'type_id' => $type_id,
|
||||||
@ -42,6 +45,9 @@ class Ticket extends Auth
|
|||||||
'contact_name' => $this->staff->name,
|
'contact_name' => $this->staff->name,
|
||||||
'contact_phone' => $this->staff->phone,
|
'contact_phone' => $this->staff->phone,
|
||||||
'status' => 0,
|
'status' => 0,
|
||||||
|
'gc_content' => $gc_content,
|
||||||
|
'zf_content' => $zf_content,
|
||||||
|
'ys_content' => $ys_content,
|
||||||
'work_days' => $work_days
|
'work_days' => $work_days
|
||||||
];
|
];
|
||||||
if (!empty($record)) {
|
if (!empty($record)) {
|
||||||
@ -49,6 +55,29 @@ class Ticket extends Auth
|
|||||||
} else {
|
} else {
|
||||||
$ticket = TicketInspectionShare::create($data);
|
$ticket = TicketInspectionShare::create($data);
|
||||||
}
|
}
|
||||||
|
$tTicket = $ticket->linkedTicket()->save([
|
||||||
|
'source_type' => 2,
|
||||||
|
'type_id' => $data['type_id'],
|
||||||
|
'user_type' => 'staff',
|
||||||
|
'user_id' => $ticket->user_id,
|
||||||
|
'title' => $ticket->title,
|
||||||
|
'content' => $ticket->content,
|
||||||
|
'ticket_region' => $ticket->ticket_region,
|
||||||
|
'ticket_address' => $ticket->ticket_address,
|
||||||
|
'contact_name' => $ticket->contact_name,
|
||||||
|
'contact_phone' => $ticket->contact_phone,
|
||||||
|
'lat' => $ticket->ticket_lat,
|
||||||
|
'lng' => $ticket->ticket_lng,
|
||||||
|
'imgs' => $ticket->imgs,
|
||||||
|
'status' => 0, // 先审核
|
||||||
|
'gc_content' => $gc_content,
|
||||||
|
'zf_content' => $zf_content,
|
||||||
|
'ys_content' => $ys_content,
|
||||||
|
'work_days' => $work_days
|
||||||
|
]);
|
||||||
|
$ticket->linked_ticket_id = $tTicket->id;
|
||||||
|
$ticket->status = 1;
|
||||||
|
$ticket->save();
|
||||||
$this->success("工单创建成功", $ticket);
|
$this->success("工单创建成功", $ticket);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -81,16 +81,8 @@ class Ticket extends Controller
|
|||||||
{
|
{
|
||||||
$this->title = '工单详情';
|
$this->title = '工单详情';
|
||||||
['id' => $id] = $this->_vali(['id.require' => '请指定工单ID!']);
|
['id' => $id] = $this->_vali(['id.require' => '请指定工单ID!']);
|
||||||
$this->vo = TicketTicket::mk()->with(['user', 'type'])->append(['imgs_arr', 'type_name'])->find($id);
|
$this->vo = TicketTicket::mk()->with(['user_shares', 'views', 'repairs', 'verifys', 'view_process', 'repair_process', 'verify_process'])->append(['imgs_arr', 'type_name'])->find($id);
|
||||||
$this->ticket = $this->vo;
|
$this->ticket = $this->vo;
|
||||||
$process = ApprovalProcess::where('type', '=', 'GDSH')->order('id', 'asc')->findOrEmpty();
|
|
||||||
$instance = ApprovalInstance::query()->with(['steps.approver', 'logs'])->where('process_id', '=', $process->id)->where('oid', '=', $id)->findOrEmpty();
|
|
||||||
$this->instance = $instance;
|
|
||||||
if ($instance->isEmpty()) {
|
|
||||||
$this->step_index = -1;
|
|
||||||
} else {
|
|
||||||
$this->step_index = $instance->current_step;
|
|
||||||
}
|
|
||||||
$this->fetch();
|
$this->fetch();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -160,6 +152,9 @@ class Ticket extends Controller
|
|||||||
public function move()
|
public function move()
|
||||||
{
|
{
|
||||||
$this->title = "工单分配";
|
$this->title = "工单分配";
|
||||||
|
$id = $this->request->param('id');
|
||||||
|
$ticket = TicketTicket::mk()->where('id', '=', $id)->findOrEmpty();
|
||||||
|
if ($ticket->isEmpty()) $this->error('工单不存在!');
|
||||||
if ($this->request->isPost()) {
|
if ($this->request->isPost()) {
|
||||||
// 提交
|
// 提交
|
||||||
$data = $this->_vali([
|
$data = $this->_vali([
|
||||||
@ -168,8 +163,6 @@ class Ticket extends Controller
|
|||||||
'dept_id.require' => '请指定处理部门!',
|
'dept_id.require' => '请指定处理部门!',
|
||||||
'user_id.default' => '0',
|
'user_id.default' => '0',
|
||||||
]);
|
]);
|
||||||
$ticket = TicketTicket::mk()->where('id', '=', $data['id'])->findOrEmpty();
|
|
||||||
if ($ticket->isEmpty()) $this->error('工单不存在!');
|
|
||||||
$ticket->fz_user_id = $data['user_id'];
|
$ticket->fz_user_id = $data['user_id'];
|
||||||
$ticket->fz_dept_id = $data['dept_id'];
|
$ticket->fz_dept_id = $data['dept_id'];
|
||||||
if ($data['type'] == 1) {
|
if ($data['type'] == 1) {
|
||||||
@ -467,15 +460,6 @@ class Ticket extends Controller
|
|||||||
if ($ticket->isEmpty()) {
|
if ($ticket->isEmpty()) {
|
||||||
$this->error('未找到工单信息');
|
$this->error('未找到工单信息');
|
||||||
}
|
}
|
||||||
if (sizeof($ticket->views) === 0) {
|
|
||||||
if (sizeof($ticket->inspection_shares) === 0) {
|
|
||||||
$this->error('请先提请核验工单!');
|
|
||||||
} else {
|
|
||||||
$view = $ticket->inspection_shares[0];
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$view = $ticket->views[0];
|
|
||||||
}
|
|
||||||
if ($this->request->isPost()) {
|
if ($this->request->isPost()) {
|
||||||
$adminInfo = $this->request->session('user');
|
$adminInfo = $this->request->session('user');
|
||||||
$instance_data = $this->_vali([
|
$instance_data = $this->_vali([
|
||||||
@ -484,9 +468,10 @@ class Ticket extends Controller
|
|||||||
]);
|
]);
|
||||||
$ticket->kj_user_id = $instance_data['kj_user_id'];
|
$ticket->kj_user_id = $instance_data['kj_user_id'];
|
||||||
$repair = $ticket->repairs()->save([
|
$repair = $ticket->repairs()->save([
|
||||||
'gc_content'=>$view->gc_content,
|
'gc_content'=>$ticket->gc_content,
|
||||||
'zf_content'=>$view->zf_content,
|
'zf_content'=>$ticket->zf_content,
|
||||||
'ys_content'=>$view->ys_content,
|
'ys_content'=>$ticket->ys_content,
|
||||||
|
'work_days'=>$ticket->work_days,
|
||||||
'staff_id'=>$instance_data['staff_id'],
|
'staff_id'=>$instance_data['staff_id'],
|
||||||
'status'=>0,
|
'status'=>0,
|
||||||
'create_id'=>$adminInfo['id'],
|
'create_id'=>$adminInfo['id'],
|
||||||
|
@ -63,46 +63,11 @@ class TicketInter extends Controller
|
|||||||
{
|
{
|
||||||
$this->title = '工单详情';
|
$this->title = '工单详情';
|
||||||
['id' => $id] = $this->_vali(['id.require' => '请指定工单ID!']);
|
['id' => $id] = $this->_vali(['id.require' => '请指定工单ID!']);
|
||||||
$this->vo = TicketTicketInter::mk()->with(['user', 'type'])->append(['imgs_arr', 'type_name'])->find($id);
|
$this->vo = TicketTicketInter::mk()->with(['user_shares', 'views', 'repairs', 'verifys', 'view_process', 'repair_process', 'verify_process'])->append(['imgs_arr', 'type_name'])->find($id);
|
||||||
$this->ticket = $this->vo;
|
$this->ticket = $this->vo;
|
||||||
$process = ApprovalProcess::where('type', '=', 'GDSH')->order('id', 'asc')->findOrEmpty();
|
|
||||||
$instance = ApprovalInstance::query()->with(['steps.approver', 'logs'])->where('process_id', '=', $process->id)->where('oid', '=', $id)->findOrEmpty();
|
|
||||||
$this->instance = $instance;
|
|
||||||
if ($instance->isEmpty()) {
|
|
||||||
$this->step_index = -1;
|
|
||||||
} else {
|
|
||||||
$this->step_index = $instance->current_step;
|
|
||||||
}
|
|
||||||
$this->fetch();
|
$this->fetch();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function reply()
|
|
||||||
{
|
|
||||||
$this->title = '回复工单';
|
|
||||||
[
|
|
||||||
'ticket_id'=>$ticket_id,
|
|
||||||
'id'=>$id
|
|
||||||
] = $this->_vali([
|
|
||||||
'ticket_id.require'=>'请指定工单ID!',
|
|
||||||
'id.require'=>'请指定回复ID!'
|
|
||||||
]);
|
|
||||||
$this->vo = TicketTicket::mk()->with(['user', 'type'])->append(['imgs_arr', 'type_name'])->find($ticket_id);
|
|
||||||
TicketReply::mForm('reply');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function _reply_form_filter(&$data)
|
|
||||||
{
|
|
||||||
if ($this->request->isPost()) {
|
|
||||||
$this->_applyFormToken();
|
|
||||||
$data['type'] = 1;
|
|
||||||
$adminInfo = $this->request->session('user');
|
|
||||||
$data['user_id'] = $adminInfo['id'];
|
|
||||||
$data['username'] = $adminInfo['nickname'];
|
|
||||||
$data['contact'] = $adminInfo['contact_phone'];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 审核页面
|
* 审核页面
|
||||||
* @auth true
|
* @auth true
|
||||||
@ -201,105 +166,6 @@ class TicketInter extends Controller
|
|||||||
$this->success('创建成功!');
|
$this->success('创建成功!');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function view_process_create()
|
|
||||||
{
|
|
||||||
$data = $this->_vali([
|
|
||||||
'ticket_id.require'=>'请指定工单ID!',
|
|
||||||
]);
|
|
||||||
$process = ApprovalProcess::where('type', '=', 'HSSH')->order('id', 'asc')->findOrEmpty();
|
|
||||||
if ($process->isEmpty()) {
|
|
||||||
$this->error('未找到可用的审核流程');
|
|
||||||
}
|
|
||||||
$adminInfo = $this->request->session('user');
|
|
||||||
$ticket = TicketTicket::query()->with(['user', 'type'])->append(['imgs_arr', 'type_name'])->where('id', '=', $data['ticket_id'])->findOrEmpty();
|
|
||||||
if ($ticket->isEmpty()) {
|
|
||||||
$this->error('未找到工单信息');
|
|
||||||
}
|
|
||||||
if ($this->request->isPost()) {
|
|
||||||
$instance_data = $this->_vali([
|
|
||||||
'title.default'=>'核验工单审核',
|
|
||||||
'content.default'=>'',
|
|
||||||
]);
|
|
||||||
ApprovalInstance::mk()->startTrans();
|
|
||||||
try {
|
|
||||||
$instance = ApprovalInstance::create([
|
|
||||||
'process_id' => $process->id,
|
|
||||||
'oid' => $ticket->id,
|
|
||||||
'title' => $instance_data['title'],
|
|
||||||
'content' => $instance_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,
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
$ticket->view_pid = $instance->id;
|
|
||||||
$ticket->save();
|
|
||||||
ApprovalInstance::mk()->commit();
|
|
||||||
} catch (HttpResponseException $e) {
|
|
||||||
ApprovalInstance::mk()->rollback();
|
|
||||||
throw $e;
|
|
||||||
} catch (\Exception $e) {
|
|
||||||
ApprovalInstance::mk()->rollback();
|
|
||||||
$this->error("创建失败");
|
|
||||||
}
|
|
||||||
$this->success('创建成功!');
|
|
||||||
} else {
|
|
||||||
$this->vo = $ticket;
|
|
||||||
$this->process = $process;
|
|
||||||
$this->step_index = -1;
|
|
||||||
$this->current_step = $process->steps[0];
|
|
||||||
$this->users = SystemUser::query()->field('id,username,nickname')->select();
|
|
||||||
$this->fetch();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public function view_ticket_create()
|
|
||||||
{
|
|
||||||
$data = $this->_vali([
|
|
||||||
'ticket_id.require'=>'请指定工单ID!',
|
|
||||||
]);
|
|
||||||
$ticket = TicketTicket::query()->with(['view_process'])->append(['imgs_arr', 'type_name'])->where('id', '=', $data['ticket_id'])->findOrEmpty();
|
|
||||||
$staffs = InspectionStaff::query()->field('id,name,phone')->select();
|
|
||||||
if ($ticket->isEmpty()) {
|
|
||||||
$this->error('未找到工单信息');
|
|
||||||
}
|
|
||||||
if ($this->request->isPost()) {
|
|
||||||
$adminInfo = $this->request->session('user');
|
|
||||||
$instance_data = $this->_vali([
|
|
||||||
'staff_id.require'=>'请指定维修人员!',
|
|
||||||
]);
|
|
||||||
$view = $ticket->views()->save([
|
|
||||||
'staff_id'=>$instance_data['staff_id'],
|
|
||||||
'status'=>0,
|
|
||||||
'create_by'=>$adminInfo['id'],
|
|
||||||
]);
|
|
||||||
$this->success('创建成功!', $view);
|
|
||||||
} else {
|
|
||||||
$this->vo = $ticket;
|
|
||||||
$this->staffs = $staffs;
|
|
||||||
$this->fetch();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public function repair_process_create()
|
public function repair_process_create()
|
||||||
{
|
{
|
||||||
$data = $this->_vali([
|
$data = $this->_vali([
|
||||||
@ -389,7 +255,7 @@ class TicketInter extends Controller
|
|||||||
$view = $ticket->repairs()->save([
|
$view = $ticket->repairs()->save([
|
||||||
'staff_id'=>$instance_data['staff_id'],
|
'staff_id'=>$instance_data['staff_id'],
|
||||||
'status'=>0,
|
'status'=>0,
|
||||||
'create_by'=>$adminInfo['id'],
|
'create_id'=>$adminInfo['id'],
|
||||||
]);
|
]);
|
||||||
$this->success('创建成功!', $view);
|
$this->success('创建成功!', $view);
|
||||||
} else {
|
} else {
|
||||||
@ -428,7 +294,7 @@ class TicketInter extends Controller
|
|||||||
'status' => 0,
|
'status' => 0,
|
||||||
'current_step' => 0,
|
'current_step' => 0,
|
||||||
'create_time' => date('Y-m-d H:i:s'),
|
'create_time' => date('Y-m-d H:i:s'),
|
||||||
'create_by' => $adminInfo['id'],
|
'create_id' => $adminInfo['id'],
|
||||||
'create_name' => $adminInfo['username'],
|
'create_name' => $adminInfo['username'],
|
||||||
]);
|
]);
|
||||||
foreach ($process->steps as $index => $step) {
|
foreach ($process->steps as $index => $step) {
|
||||||
@ -488,7 +354,7 @@ class TicketInter extends Controller
|
|||||||
$view = $ticket->verifys()->save([
|
$view = $ticket->verifys()->save([
|
||||||
'staff_id'=>$instance_data['staff_id'],
|
'staff_id'=>$instance_data['staff_id'],
|
||||||
'status'=>0,
|
'status'=>0,
|
||||||
'create_by'=>$adminInfo['id'],
|
'create_id'=>$adminInfo['id'],
|
||||||
]);
|
]);
|
||||||
$this->success('创建成功!', $view);
|
$this->success('创建成功!', $view);
|
||||||
} else {
|
} else {
|
||||||
|
@ -133,4 +133,31 @@ class UserShare extends Controller
|
|||||||
]);
|
]);
|
||||||
$this->success('处理成功!');
|
$this->success('处理成功!');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 随手拍评论
|
||||||
|
* @auth true
|
||||||
|
* @menu true
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function comment()
|
||||||
|
{
|
||||||
|
$this->title = '随手拍详情';
|
||||||
|
$where = $this->_vali([
|
||||||
|
'id.require' => '随手拍ID不能为空',
|
||||||
|
]);
|
||||||
|
$this->vo = TicketUserShare::mk()->where($where)->with(['linked_ticket'])->findOrEmpty();
|
||||||
|
if ($this->vo->isEmpty()) $this->error('用户随手拍不存在!');
|
||||||
|
if (!$this->vo->linked_ticket_id) {
|
||||||
|
$this->ticket_list = TicketTicket::mk()->scope(['avail'])->select();
|
||||||
|
} else {
|
||||||
|
$this->ticket_list = [];
|
||||||
|
}
|
||||||
|
$this->type_list = TicketType::getList();
|
||||||
|
$this->user_list = SystemUser::query()->select();
|
||||||
|
$this->common_reply_list = TicketCommonReply::query()->scope(['avail'])->select();
|
||||||
|
$this->fetch();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -9,13 +9,13 @@
|
|||||||
{if $ticket.views && sizeof($ticket.views) > 0}
|
{if $ticket.views && sizeof($ticket.views) > 0}
|
||||||
<li>核验信息</li>
|
<li>核验信息</li>
|
||||||
{/if}
|
{/if}
|
||||||
{if $ticket.repair_process && sizeof($ticket.repair_process) > 0}
|
{if $ticket.repair_process}
|
||||||
<li>维修审核信息</li>
|
<li>维修审核信息</li>
|
||||||
{/if}
|
{/if}
|
||||||
{if $ticket.repairs && sizeof($ticket.repairs) > 0}
|
{if $ticket.repairs && sizeof($ticket.repairs) > 0}
|
||||||
<li>维修信息</li>
|
<li>维修信息</li>
|
||||||
{/if}
|
{/if}
|
||||||
{if $ticket.verify_process && sizeof($ticket.verify_process) > 0}
|
{if $ticket.verify_process}
|
||||||
<li>验收审核信息</li>
|
<li>验收审核信息</li>
|
||||||
{/if}
|
{/if}
|
||||||
{if $ticket.verifys && sizeof($ticket.verifys) > 0}
|
{if $ticket.verifys && sizeof($ticket.verifys) > 0}
|
||||||
@ -164,7 +164,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
{if $ticket.repair_process && sizeof($ticket.repair_process) > 0}
|
{if $ticket.repair_process}
|
||||||
<div class="layui-tab-item">
|
<div class="layui-tab-item">
|
||||||
<div class="layui-collapse">
|
<div class="layui-collapse">
|
||||||
<div class="layui-colla-item">
|
<div class="layui-colla-item">
|
||||||
@ -247,7 +247,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
{if $ticket.verify_process && sizeof($ticket.verify_process) > 0}
|
{if $ticket.verify_process}
|
||||||
<div class="layui-tab-item">
|
<div class="layui-tab-item">
|
||||||
<div class="layui-collapse">
|
<div class="layui-collapse">
|
||||||
<div class="layui-colla-item">
|
<div class="layui-colla-item">
|
||||||
|
@ -2,7 +2,6 @@
|
|||||||
<ul class="layui-tab-title">
|
<ul class="layui-tab-title">
|
||||||
<li class="layui-this">基本信息</li>
|
<li class="layui-this">基本信息</li>
|
||||||
<li>工单全流程信息</li>
|
<li>工单全流程信息</li>
|
||||||
<li>关联随手拍</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
<div class="layui-tab-content">
|
<div class="layui-tab-content">
|
||||||
<div class="layui-tab-item layui-show">
|
<div class="layui-tab-item layui-show">
|
||||||
@ -108,34 +107,5 @@
|
|||||||
<div class="layui-tab-item">
|
<div class="layui-tab-item">
|
||||||
{include file="common/ticket_flow" /}
|
{include file="common/ticket_flow" /}
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-tab-item">
|
|
||||||
<div class="layui-card">
|
|
||||||
<div class="layui-card-header">关联随手拍</div>
|
|
||||||
<div class="layui-card-body">
|
|
||||||
<table class="layui-table">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th>随手拍编号</th>
|
|
||||||
<th>问题类型</th>
|
|
||||||
<th>反馈人</th>
|
|
||||||
<th>联系方式</th>
|
|
||||||
<th>反馈时间</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody class="layui-table-body">
|
|
||||||
{foreach $vo.userShares as $user_share}
|
|
||||||
<tr>
|
|
||||||
<td><a data-modal="{:url('user_share/detail', ['id' => $user_share.id])}" data-height="90%" data-width="60%" class="layui-btn layui-btn-xs layui-btn-normal" title="随手拍详情">{$user_share.id}</a></td>
|
|
||||||
<td>{$user_share.type_name|default=""}</td>
|
|
||||||
<td>{$user_share.contact_name|default=""}</td>
|
|
||||||
<td>{$user_share.contact_phone|default=""}</td>
|
|
||||||
<td>{$user_share.create_at|default=""}</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
{/foreach}
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -36,6 +36,30 @@
|
|||||||
<input type="hidden" value='{$vo.imgs|default=""}' name="imgs">
|
<input type="hidden" value='{$vo.imgs|default=""}' name="imgs">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">工程内容</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<textarea data-textarea class="layui-textarea" name='content' required>{$vo.gc_content|default=""}</textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">做法及质量要求</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<textarea data-textarea class="layui-textarea" name='content' required>{$vo.zf_content|default=""}</textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">工程预算</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<textarea data-textarea class="layui-textarea" name='content' required>{$vo.ys_content|default=""}</textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">预估工作量</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input type="number" name="work_days" value='{$vo.work_days|default=""}' required placeholder="请输入预估工作量" class="layui-input">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{notempty name='id'}<input class="layui-input layui-hide" type='hidden' value='{$id}' name='id'>{/notempty}
|
{notempty name='id'}<input class="layui-input layui-hide" type='hidden' value='{$id}' name='id'>{/notempty}
|
||||||
<div class="layui-form-item text-center">
|
<div class="layui-form-item text-center">
|
||||||
|
@ -25,17 +25,29 @@
|
|||||||
<!--{if auth("detail")}-->
|
<!--{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>
|
<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}-->
|
||||||
{{# if (d.status == 0 && d.views && d.views.length > 0) { }}
|
{{# if (d.status !== 1) { }}
|
||||||
{{# let view = d.views[d.views.length - 1]; }}
|
{{# if (d.source_type != 1) { }}
|
||||||
|
<!--{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}-->
|
||||||
|
{{# } else if (d.views && d.views.length > 0) { }}
|
||||||
|
<a data-modal="{:url('view/detail')}?id={{ d.views[d.views.length - 1].id }}" data-height="80%" data-width="80%" class="layui-btn layui-btn-xs layui-btn-danger" data-title="查看核验工单" title="查看核验工单">查看核验工单</a>
|
||||||
{{# if (view.status == 1) { }}
|
{{# if (view.status == 1) { }}
|
||||||
<!--{if auth("move")}-->
|
<!--{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>
|
<a data-modal="{:url('move')}?id={{ d.id }}" data-height="80%" data-width="80%" class="layui-btn layui-btn-xs" title="分配">分配</a>
|
||||||
|
<!--{/if}-->
|
||||||
|
{{# } }}
|
||||||
|
{{# } else { }}
|
||||||
|
<!--{if auth("view_ticket_create")}-->
|
||||||
|
<a data-modal="{:url('view_ticket_create')}?ticket_id={{ d.id }}" data-height="80%" data-width="80%" class="layui-btn layui-btn-xs layui-btn-normal" title="提请核验">创建核验工单</a>
|
||||||
<!--{/if}-->
|
<!--{/if}-->
|
||||||
{{# } }}
|
{{# } }}
|
||||||
{{# } }}
|
{{# } }}
|
||||||
|
{{# if (d.status !== 1) { }}
|
||||||
<!--{if auth("edit")}-->
|
<!--{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>
|
<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}-->
|
<!--{/if}-->
|
||||||
|
{{# } }}
|
||||||
</script>
|
</script>
|
||||||
{/block}
|
{/block}
|
||||||
|
|
||||||
@ -73,31 +85,25 @@
|
|||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
}},
|
}},
|
||||||
{field: 'view', title:'核验情况', width: 100, minWidth:100, templet:function(item){
|
|
||||||
if (item.views && item.views.length > 0) {
|
|
||||||
// 已有核验工单
|
|
||||||
const view = item.views[item.views.length - 1];
|
|
||||||
if (view.status == 1) {
|
|
||||||
if (view.is_error == 1) {
|
|
||||||
return `<a data-modal="{:url('view/detail')}?id=${view.id}" data-height="80%" data-width="80%" class="layui-btn layui-btn-xs layui-btn-danger" data-title="查看核验工单" title="查看核验工单">存在异常</a>`;
|
|
||||||
} else {
|
|
||||||
return `<a data-modal="{:url('view/detail')}?id=${view.id}" data-height="80%" data-width="80%" class="layui-btn layui-btn-xs layui-btn-active" data-title="查看核验工单" title="查看核验工单">不存在异常</a>`;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
return `<a data-modal="{:url('view/detail')}?id=${view.id}" data-height="80%" data-width="80%" class="layui-btn layui-btn-xs layui-btn-normal" data-title="查看核验工单" title="查看核验工单">查看工单</a>`;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
return `<a data-modal="{:url('view_ticket_create')}?ticket_id=${item.id}" data-height="80%" data-width="80%" class="layui-btn layui-btn-xs layui-btn-normal" title="提请核验">创建核验工单</a>`;
|
|
||||||
}
|
|
||||||
}},
|
|
||||||
{field:'status', title:'状态', width:80, templet:function(item){
|
{field:'status', title:'状态', width:80, templet:function(item){
|
||||||
|
if (item.source_type !== 1) {
|
||||||
|
if (item.status === 1) {
|
||||||
|
return `<span style="color: green">已分配</span>`
|
||||||
|
} else {
|
||||||
|
return `<span style="color: red">待分配</span>`
|
||||||
|
}
|
||||||
|
}
|
||||||
if (item.status !== 1) {
|
if (item.status !== 1) {
|
||||||
if (!item.views || item.views.length === 0) {
|
if (!item.views || item.views.length === 0) {
|
||||||
return `<span style="color: red">待核验</span>`
|
return `<span style="color: red">待核验</span>`
|
||||||
}
|
}
|
||||||
const view = item.views[item.views.length - 1];
|
const view = item.views[item.views.length - 1];
|
||||||
if (view.status == 1) {
|
if (view.status == 1) {
|
||||||
return `<span style="color: red">待分配</span>`
|
if (view.is_error == 1) {
|
||||||
|
return `<span style="color: red">已核验</span>`
|
||||||
|
} else {
|
||||||
|
return `<span style="color: green">无异常</span>`
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
return `<span style="color: yellowgreen">待核验完成</span>`
|
return `<span style="color: yellowgreen">待核验完成</span>`
|
||||||
}
|
}
|
||||||
|
@ -1 +1,111 @@
|
|||||||
{include file="common/ticket_flow" /}
|
<div class="layui-tab layui-tab-brief">
|
||||||
|
<ul class="layui-tab-title">
|
||||||
|
<li class="layui-this">基本信息</li>
|
||||||
|
<li>工单全流程信息</li>
|
||||||
|
</ul>
|
||||||
|
<div class="layui-tab-content">
|
||||||
|
<div class="layui-tab-item layui-show">
|
||||||
|
<div class="layui-card">
|
||||||
|
<div class="layui-card-header">工单内容</div>
|
||||||
|
<div class="layui-card-body">
|
||||||
|
<div class="layui-table">
|
||||||
|
<table class="layui-table">
|
||||||
|
<tbody class="layui-table-body">
|
||||||
|
<tr>
|
||||||
|
<td style="width: 120px">工单编号</td>
|
||||||
|
<td>{$vo.id|default=""}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>工单标题</td>
|
||||||
|
<td>{$vo.title|default=""}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>工单类型</td>
|
||||||
|
<td>{$vo.type_name|default=""}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>工单地址</td>
|
||||||
|
<td>{$vo.ticket_region|default=""} {$vo.ticket_address|default=""}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>工单内容</td>
|
||||||
|
<td>{$vo.content|default=""}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>反馈人信息</td>
|
||||||
|
<td>{$vo.contact_name|default="未填写名称"} {$vo.contact_phone|default="未填写联系方式"}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>工单图片</td>
|
||||||
|
<td>
|
||||||
|
<div>
|
||||||
|
{if count($vo.imgs_arr) > 0}
|
||||||
|
{foreach $vo.imgs_arr as $img}
|
||||||
|
<img data-tips-image src="{$img}" alt="image" style="height: 100px;">
|
||||||
|
<span> </span>
|
||||||
|
{/foreach}
|
||||||
|
{else}
|
||||||
|
无图片
|
||||||
|
{/if}
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{if $vo.lat && $vo.lng}
|
||||||
|
<tr>
|
||||||
|
<td>位置</td>
|
||||||
|
<td>
|
||||||
|
<div id="map" style="height: 320px;"></div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{/if}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
{if $vo.lat && $vo.lng}
|
||||||
|
<script src="https://map.qq.com/api/gljs?v=1.exp&key=T6XBZ-L33CB-TMFUL-JQ4D6-MKBTK-KNBED"></script>
|
||||||
|
<script>
|
||||||
|
function initMap() {
|
||||||
|
//定义地图中心点坐标
|
||||||
|
var center = new TMap.LatLng("{$vo.lat}", "{$vo.lng}")
|
||||||
|
//定义map变量,调用 TMap.Map() 构造函数创建地图
|
||||||
|
var map = new TMap.Map(document.getElementById('map'), {
|
||||||
|
center: center,//设置地图中心点坐标
|
||||||
|
zoom: 17.2, //设置地图缩放级别
|
||||||
|
pitch: 30, //设置俯仰角
|
||||||
|
});
|
||||||
|
var marker = new TMap.MultiMarker({
|
||||||
|
map: map,
|
||||||
|
styles: {
|
||||||
|
// 点标记样式
|
||||||
|
marker: new TMap.MarkerStyle({
|
||||||
|
width: 20, // 样式宽
|
||||||
|
height: 30, // 样式高
|
||||||
|
anchor: { x: 10, y: 30 }, // 描点位置
|
||||||
|
}),
|
||||||
|
},
|
||||||
|
geometries: [
|
||||||
|
// 点标记数据数组
|
||||||
|
{
|
||||||
|
// 标记位置(纬度,经度,高度)
|
||||||
|
position: center,
|
||||||
|
id: 'marker',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
}
|
||||||
|
var mapInit = setInterval(function () {
|
||||||
|
if (window.TMap) {
|
||||||
|
clearInterval(mapInit)
|
||||||
|
initMap()
|
||||||
|
}
|
||||||
|
}, 500)
|
||||||
|
</script>
|
||||||
|
{/if}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="layui-tab-item">
|
||||||
|
{include file="common/ticket_flow" /}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@ -66,18 +66,14 @@
|
|||||||
}
|
}
|
||||||
}},
|
}},
|
||||||
{field: 'view', title:'核验情况', width: 100, minWidth:100, templet:function(item){
|
{field: 'view', title:'核验情况', width: 100, minWidth:100, templet:function(item){
|
||||||
if (item.state === 2) {
|
if (item.source_type !== 1) {
|
||||||
return `外部工单`
|
return `-`
|
||||||
}
|
}
|
||||||
if (item.views && item.views.length > 0) {
|
if (item.views && item.views.length > 0) {
|
||||||
// 已有核验工单
|
// 已有核验工单
|
||||||
const view = item.views[item.views.length - 1];
|
const view = item.views[item.views.length - 1];
|
||||||
if (view.status == 1) {
|
if (view.status == 1) {
|
||||||
if (view.is_error == 1) {
|
return `<a data-modal="{:url('view/detail')}?id=${view.id}" data-height="80%" data-width="80%" class="layui-btn layui-btn-xs layui-btn-active" data-title="查看核验工单" title="查看核验工单">查看工单</a>`;
|
||||||
return `<a data-modal="{:url('view/detail')}?id=${view.id}" data-height="80%" data-width="80%" class="layui-btn layui-btn-xs layui-btn-danger" data-title="查看核验工单" title="查看核验工单">存在异常</a>`;
|
|
||||||
} else {
|
|
||||||
return `<a data-modal="{:url('view/detail')}?id=${view.id}" data-height="80%" data-width="80%" class="layui-btn layui-btn-xs layui-btn-active" data-title="查看核验工单" title="查看核验工单">不存在异常</a>`;
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
return `<a data-modal="{:url('view/detail')}?id=${view.id}" data-height="80%" data-width="80%" class="layui-btn layui-btn-xs layui-btn-normal" data-title="查看核验工单" title="查看核验工单">查看工单</a>`;
|
return `<a data-modal="{:url('view/detail')}?id=${view.id}" data-height="80%" data-width="80%" class="layui-btn layui-btn-xs layui-btn-normal" data-title="查看核验工单" title="查看核验工单">查看工单</a>`;
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,51 @@
|
|||||||
|
<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}
|
||||||
|
{include file="common/step_p" /}
|
||||||
|
{/foreach}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<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()}" data-auto="true" method="post">
|
||||||
|
<input type="hidden" name="ticket_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>
|
@ -0,0 +1,19 @@
|
|||||||
|
<form class="layui-form layui-card" action="{:sysuri()}" data-auto="true" method="post" autocomplete="off" style="min-height: 300px">
|
||||||
|
<input class="layui-input layui-hide" type='hidden' value="{:input('get.ticket_id')}" name='ticket_id'>
|
||||||
|
<input class="layui-input layui-hide" type='hidden' value='{:systoken("view_ticket_create")}' name='_token_'>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">选择维修人员</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<select name="staff_id">
|
||||||
|
<option value="">请选择维修负责人员</option>
|
||||||
|
{foreach $staffs as $item}
|
||||||
|
<option value="{$item.id}">{$item.name} ({$item.phone})</option>
|
||||||
|
{/foreach}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</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>
|
@ -0,0 +1,51 @@
|
|||||||
|
<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}
|
||||||
|
{include file="common/step_p" /}
|
||||||
|
{/foreach}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<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()}" data-auto="true" method="post">
|
||||||
|
<input type="hidden" name="ticket_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>
|
@ -0,0 +1,19 @@
|
|||||||
|
<form class="layui-form layui-card" action="{:sysuri()}" data-auto="true" method="post" autocomplete="off" style="min-height: 300px">
|
||||||
|
<input class="layui-input layui-hide" type='hidden' value="{:input('get.ticket_id')}" name='ticket_id'>
|
||||||
|
<input class="layui-input layui-hide" type='hidden' value='{:systoken("view_ticket_create")}' name='_token_'>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">选择维修人员</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<select name="staff_id">
|
||||||
|
<option value="">请选择维修负责人员</option>
|
||||||
|
{foreach $staffs as $item}
|
||||||
|
<option value="{$item.id}">{$item.name} ({$item.phone})</option>
|
||||||
|
{/foreach}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</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>
|
183
plugs/think-plugs-ticket/src/view/user_share/comment.html
Normal file
183
plugs/think-plugs-ticket/src/view/user_share/comment.html
Normal file
@ -0,0 +1,183 @@
|
|||||||
|
{if $vo.status eq 1}
|
||||||
|
{if $vo.linked_ticket_id}
|
||||||
|
<div class="layui-card">
|
||||||
|
<div class="layui-card-header">关联工单</div>
|
||||||
|
<div class="layui-card-body">
|
||||||
|
<table class="layui-table">
|
||||||
|
<tbody class="layui-table-body">
|
||||||
|
<tr>
|
||||||
|
<td style="width: 120px">工单编号</td>
|
||||||
|
<td>{$vo.linked_ticket.id|default=""}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>工单类型</td>
|
||||||
|
<td>{$vo.linked_ticket.type_name|default=""}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>工单标题</td>
|
||||||
|
<td>{$vo.linked_ticket.title|default=""}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>工单内容</td>
|
||||||
|
<td>{$vo.linked_ticket.content|default=""}</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{else}
|
||||||
|
<div class="layui-card">
|
||||||
|
<div class="layui-card-header">直接回复</div>
|
||||||
|
<div class="layui-card-body">
|
||||||
|
<table class="layui-table">
|
||||||
|
<tbody class="layui-table-body">
|
||||||
|
<tr>
|
||||||
|
<td style="width: 120px">回复内容</td>
|
||||||
|
<td>{$vo.content|default=""}</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
|
{else}
|
||||||
|
<div class="layui-card">
|
||||||
|
<div class="layui-card-header">处置随手拍</div>
|
||||||
|
<div class="layui-card-body">
|
||||||
|
<form action="{:url('link')}" method="post" class="layui-form">
|
||||||
|
<input type="hidden" name="id" value="{$vo.id}">
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label label-required">处置方式</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<select name="_type" lay-verify="required" lay-filter="Type">
|
||||||
|
<option value="">请选择处置方式</option>
|
||||||
|
<option value="skip">直接回复</option>
|
||||||
|
<option value="new">创建工单</option>
|
||||||
|
<option value="exist">关联工单</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="layui-form-item new_ticket">
|
||||||
|
<label class="layui-form-label">核实人员</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<select name="user_id" lay-search="{caseSensitive:false, fuzzy: false}">
|
||||||
|
<option value="">请选择核实人员</option>
|
||||||
|
{foreach $user_list as $user}
|
||||||
|
<option value="{$user.id}">【{$user.username}】{$user.nickname}</option>
|
||||||
|
{/foreach}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="layui-form-item exist_ticket">
|
||||||
|
<label class="layui-form-label">关联工单</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<select name="ticket_id" lay-search="{caseSensitive:false, fuzzy: false}">
|
||||||
|
<option value="">请选择已有工单</option>
|
||||||
|
{foreach $ticket_list as $ticket}
|
||||||
|
<option value="{$ticket.id}">{$ticket.id} - {$ticket.content}</option>
|
||||||
|
{/foreach}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="layui-form-item new_ticket">
|
||||||
|
<label class="layui-form-label">工单类型</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<select name="type_id">
|
||||||
|
<option value="">请选择工单类型</option>
|
||||||
|
{foreach $type_list as $type}
|
||||||
|
<option value="{$type.id}">{$type.name}</option>
|
||||||
|
{/foreach}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label label-required">用户反馈</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<select name="_common_reply" lay-filter="CommonReply">
|
||||||
|
<option value="">请选择常用回复</option>
|
||||||
|
{foreach $common_reply_list as $reply}
|
||||||
|
<option value="{$reply.content}">{$reply.title}</option>
|
||||||
|
{/foreach}
|
||||||
|
</select>
|
||||||
|
<textarea name="content" placeholder="请输入给用户反馈的内容" class="layui-textarea" lay-verify="required"></textarea>
|
||||||
|
<div class="layui-form-mid layui-word-aux">给用户反馈的内容,会发送给用户,请谨慎填写</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label label-required">积分奖励</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input value="0" name="point_aware" type="number" min="0" step="1" placeholder="请输入积分奖励" class="layui-input layui-input-number" lay-verify="required">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<button class="layui-btn" lay-submit lay-filter="submit">提交</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script>
|
||||||
|
const $new = $(".new_ticket");
|
||||||
|
const $exist = $(".exist_ticket");
|
||||||
|
$new.hide()
|
||||||
|
$exist.hide()
|
||||||
|
layui.use(['form'], function () {
|
||||||
|
var form = layui.form;
|
||||||
|
form.on('select(Type)', function (data) {
|
||||||
|
$new.hide()
|
||||||
|
$exist.hide()
|
||||||
|
switch (data.value) {
|
||||||
|
case 'new':
|
||||||
|
$new.show();
|
||||||
|
break;
|
||||||
|
case 'exist':
|
||||||
|
$exist.show();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
form.on('select(CommonReply)', function (data) {
|
||||||
|
$("textarea[name='content']").val(data.value)
|
||||||
|
});
|
||||||
|
form.on('submit(submit)', function (data) {
|
||||||
|
const field = data.field
|
||||||
|
const _type = field._type
|
||||||
|
switch (_type) {
|
||||||
|
case 'new':
|
||||||
|
if (!field.user_id) {
|
||||||
|
layer.msg('请选择核实人员')
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (!field.type_id) {
|
||||||
|
layer.msg('请选择工单类型')
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'exist':
|
||||||
|
if (!field.ticket_id) {
|
||||||
|
layer.msg('请选择工单')
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
console.log(data)
|
||||||
|
$.post("{:url('link')}", field, function (res) {
|
||||||
|
if (res.code === 1) {
|
||||||
|
layer.msg(res.info, {icon: 1, time: 1500}, function () {
|
||||||
|
layer.closeAll();
|
||||||
|
window.location.reload();
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
layer.msg(res.info, {icon: 2, anim: 6, time: 3000}, function () {
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
{/if}
|
@ -18,9 +18,11 @@
|
|||||||
<!--{if auth("detail")}-->
|
<!--{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>
|
<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}-->
|
||||||
<!--{if auth("move")}-->
|
{{# if (d.status != 1) { }}
|
||||||
<!-- <a data-modal="{:url('move')}?ticket_id={{ d.id }}" data-height="80%" data-width="80%" class="layui-btn layui-btn-xs" title="流转">流转</a>-->
|
<!--{if auth("comment")}-->
|
||||||
|
<a data-modal="{:url('comment')}?id={{ d.id }}" data-height="80%" data-width="80%" class="layui-btn layui-btn-xs layui-btn-normal" title="处理">处理</a>
|
||||||
<!--{/if}-->
|
<!--{/if}-->
|
||||||
|
{{# } }}
|
||||||
</script>
|
</script>
|
||||||
{/block}
|
{/block}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user