You've already forked guangan
全流程
This commit is contained in:
@ -10,7 +10,12 @@ class TicketRepair extends Auth
|
|||||||
|
|
||||||
public function list()
|
public function list()
|
||||||
{
|
{
|
||||||
$query = Model::query()->scope(['notFinish'])->with(['ticket'])->where(['staff_id'=>$this->staff->id]);
|
$query = Model::query()->with(['ticket'])->where(['staff_id'=>$this->staff->id]);
|
||||||
|
$query->order('create_at', 'desc');
|
||||||
|
$status = $this->request->get('status/i', null);
|
||||||
|
if (is_numeric($status)) {
|
||||||
|
$query->where('status', '=', $status);
|
||||||
|
}
|
||||||
$keyword = $this->request->get('keyword', null);
|
$keyword = $this->request->get('keyword', null);
|
||||||
if ($keyword) {
|
if ($keyword) {
|
||||||
$query->where('title', 'like', "%{$keyword}%");
|
$query->where('title', 'like', "%{$keyword}%");
|
||||||
@ -19,4 +24,41 @@ class TicketRepair extends Auth
|
|||||||
$this->success('获取工单列表', $pageData);
|
$this->success('获取工单列表', $pageData);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function detail()
|
||||||
|
{
|
||||||
|
$id = $this->request->get('id', null);
|
||||||
|
$data = Model::query()->with(['ticket'])->where('staff_id', '=', $this->staff->id)->where(['id'=>$id])->find();
|
||||||
|
if (!$data) {
|
||||||
|
$this->error('工单不存在');
|
||||||
|
}
|
||||||
|
$this->success('获取工单详情', $data);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function submit()
|
||||||
|
{
|
||||||
|
$data = $this->_vali([
|
||||||
|
'ticket_id.require' => '工单ID不能为空',
|
||||||
|
'content.require' => '工单内容不能为空',
|
||||||
|
'imgs.default' => '',
|
||||||
|
]);
|
||||||
|
$ticket = Model::query()->with(['ticket'])->where('staff_id', '=', $this->staff->id)->where(['id'=>$data['ticket_id']])->find();
|
||||||
|
if (!$ticket) {
|
||||||
|
$this->error('工单不存在');
|
||||||
|
}
|
||||||
|
unset($data['ticket_id']);
|
||||||
|
if ($ticket->status === 1) {
|
||||||
|
$this->error('工单已提交');
|
||||||
|
}
|
||||||
|
if ($ticket->status === 2) {
|
||||||
|
$this->error('工单已关闭');
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
$data['status'] = 1;
|
||||||
|
$ticket->finish_at = date('Y-m-d H:i:s');
|
||||||
|
$ticket->save($data);
|
||||||
|
} catch (\Exception $exception) {
|
||||||
|
$this->error('工单提交失败');
|
||||||
|
}
|
||||||
|
$this->success('工单提交成功');
|
||||||
|
}
|
||||||
}
|
}
|
@ -10,7 +10,12 @@ class TicketVerify extends Auth
|
|||||||
|
|
||||||
public function list()
|
public function list()
|
||||||
{
|
{
|
||||||
$query = Model::query()->scope(['notFinish'])->with(['ticket'])->where(['staff_id'=>$this->staff->id]);
|
$query = Model::query()->with(['ticket'])->where(['staff_id'=>$this->staff->id]);
|
||||||
|
$query->order('create_at', 'desc');
|
||||||
|
$status = $this->request->get('status/i', null);
|
||||||
|
if (is_numeric($status)) {
|
||||||
|
$query->where('status', '=', $status);
|
||||||
|
}
|
||||||
$keyword = $this->request->get('keyword', null);
|
$keyword = $this->request->get('keyword', null);
|
||||||
if ($keyword) {
|
if ($keyword) {
|
||||||
$query->where('title', 'like', "%{$keyword}%");
|
$query->where('title', 'like', "%{$keyword}%");
|
||||||
@ -19,4 +24,43 @@ class TicketVerify extends Auth
|
|||||||
$this->success('获取工单列表', $pageData);
|
$this->success('获取工单列表', $pageData);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function detail()
|
||||||
|
{
|
||||||
|
$id = $this->request->get('id', null);
|
||||||
|
$data = Model::query()->with(['ticket'])->where('staff_id', '=', $this->staff->id)->where(['id'=>$id])->find();
|
||||||
|
if (!$data) {
|
||||||
|
$this->error('工单不存在');
|
||||||
|
}
|
||||||
|
$this->success('获取工单详情', $data);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function submit()
|
||||||
|
{
|
||||||
|
$data = $this->_vali([
|
||||||
|
'ticket_id.require' => '工单ID不能为空',
|
||||||
|
'content.require' => '工单内容不能为空',
|
||||||
|
'is_error.in:0,1' => '请选择是否有异常',
|
||||||
|
'imgs.default' => '',
|
||||||
|
'work_days.default' => '',
|
||||||
|
]);
|
||||||
|
$ticket = Model::query()->with(['ticket'])->where('staff_id', '=', $this->staff->id)->where(['id'=>$data['ticket_id']])->find();
|
||||||
|
if (!$ticket) {
|
||||||
|
$this->error('工单不存在');
|
||||||
|
}
|
||||||
|
unset($data['ticket_id']);
|
||||||
|
if ($ticket->status === 1) {
|
||||||
|
$this->error('工单已提交');
|
||||||
|
}
|
||||||
|
if ($ticket->status === 2) {
|
||||||
|
$this->error('工单已关闭');
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
$data['status'] = 1;
|
||||||
|
$ticket->finish_at = date('Y-m-d H:i:s');
|
||||||
|
$ticket->save($data);
|
||||||
|
} catch (\Exception $exception) {
|
||||||
|
$this->error('工单提交失败');
|
||||||
|
}
|
||||||
|
$this->success('工单提交成功');
|
||||||
|
}
|
||||||
}
|
}
|
@ -12,8 +12,8 @@ class TicketView extends Auth
|
|||||||
{
|
{
|
||||||
$query = Model::query()->with(['ticket'])->where(['staff_id'=>$this->staff->id]);
|
$query = Model::query()->with(['ticket'])->where(['staff_id'=>$this->staff->id]);
|
||||||
$query->order('create_at', 'desc');
|
$query->order('create_at', 'desc');
|
||||||
$status = $this->request->get('status', null);
|
$status = $this->request->get('status/i', null);
|
||||||
if ($status) {
|
if (is_numeric($status)) {
|
||||||
$query->where('status', '=', $status);
|
$query->where('status', '=', $status);
|
||||||
}
|
}
|
||||||
$keyword = $this->request->get('keyword', null);
|
$keyword = $this->request->get('keyword', null);
|
||||||
@ -56,6 +56,7 @@ class TicketView extends Auth
|
|||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
$data['status'] = 1;
|
$data['status'] = 1;
|
||||||
|
$ticket->finish_at = date('Y-m-d H:i:s');
|
||||||
$ticket->save($data);
|
$ticket->save($data);
|
||||||
} catch (\Exception $exception) {
|
} catch (\Exception $exception) {
|
||||||
$this->error('工单提交失败');
|
$this->error('工单提交失败');
|
||||||
|
@ -32,6 +32,22 @@ class Repair extends Controller
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查看工单详情
|
||||||
|
* @auth true
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function detail()
|
||||||
|
{
|
||||||
|
$id = $this->request->param('id');
|
||||||
|
$this->vo = TicketRepair::mk()->with(['ticket'])->where(['id' => $id])->findOrEmpty();
|
||||||
|
if ($this->vo->isEmpty()) {
|
||||||
|
$this->error('查看工单不存在!');
|
||||||
|
}
|
||||||
|
$this->ticket = $this->vo->ticket;
|
||||||
|
$this->fetch();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 添加维修工单
|
* 添加维修工单
|
||||||
* @auth true
|
* @auth true
|
||||||
|
@ -81,7 +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', 'reply'])->append(['imgs_arr', 'type_name', 'last_reply'])->find($id);
|
$this->vo = TicketTicket::mk()->with(['user', 'type'])->append(['imgs_arr', 'type_name'])->find($id);
|
||||||
|
$this->ticket = $this->vo;
|
||||||
$process = ApprovalProcess::where('type', '=', 'GDSH')->order('id', 'asc')->findOrEmpty();
|
$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();
|
$instance = ApprovalInstance::query()->with(['steps.approver', 'logs'])->where('process_id', '=', $process->id)->where('oid', '=', $id)->findOrEmpty();
|
||||||
$this->instance = $instance;
|
$this->instance = $instance;
|
||||||
@ -433,7 +434,7 @@ class Ticket extends Controller
|
|||||||
'status' => 0,
|
'status' => 0,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
$ticket->view_pid = $instance->id;
|
$ticket->repair_pid = $instance->id;
|
||||||
$ticket->save();
|
$ticket->save();
|
||||||
ApprovalInstance::mk()->commit();
|
ApprovalInstance::mk()->commit();
|
||||||
} catch (HttpResponseException $e) {
|
} catch (HttpResponseException $e) {
|
||||||
@ -454,6 +455,34 @@ class Ticket extends Controller
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function repair_ticket_create()
|
||||||
|
{
|
||||||
|
$data = $this->_vali([
|
||||||
|
'ticket_id.require'=>'请指定工单ID!',
|
||||||
|
]);
|
||||||
|
$ticket = TicketTicket::query()->with(['repair_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->repairs()->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 verify_process_create()
|
public function verify_process_create()
|
||||||
{
|
{
|
||||||
$data = $this->_vali([
|
$data = $this->_vali([
|
||||||
@ -504,7 +533,7 @@ class Ticket extends Controller
|
|||||||
'status' => 0,
|
'status' => 0,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
$ticket->view_pid = $instance->id;
|
$ticket->verify_pid = $instance->id;
|
||||||
$ticket->save();
|
$ticket->save();
|
||||||
ApprovalInstance::mk()->commit();
|
ApprovalInstance::mk()->commit();
|
||||||
} catch (HttpResponseException $e) {
|
} catch (HttpResponseException $e) {
|
||||||
@ -525,6 +554,34 @@ class Ticket extends Controller
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function verify_ticket_create()
|
||||||
|
{
|
||||||
|
$data = $this->_vali([
|
||||||
|
'ticket_id.require'=>'请指定工单ID!',
|
||||||
|
]);
|
||||||
|
$ticket = TicketTicket::query()->with(['repair_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->verifys()->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 my() {
|
public function my() {
|
||||||
|
@ -32,6 +32,22 @@ class Verify extends Controller
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查看工单详情
|
||||||
|
* @auth true
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function detail()
|
||||||
|
{
|
||||||
|
$id = $this->request->param('id');
|
||||||
|
$this->vo = TicketVerify::mk()->with(['ticket'])->where(['id' => $id])->findOrEmpty();
|
||||||
|
if ($this->vo->isEmpty()) {
|
||||||
|
$this->error('查看工单不存在!');
|
||||||
|
}
|
||||||
|
$this->ticket = $this->vo->ticket;
|
||||||
|
$this->fetch();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 添加验收工单
|
* 添加验收工单
|
||||||
* @auth true
|
* @auth true
|
||||||
|
@ -32,6 +32,11 @@ class View extends Controller
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查看工单详情
|
||||||
|
* @auth true
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
public function detail()
|
public function detail()
|
||||||
{
|
{
|
||||||
$id = $this->request->param('id');
|
$id = $this->request->param('id');
|
||||||
@ -39,6 +44,7 @@ class View extends Controller
|
|||||||
if ($this->vo->isEmpty()) {
|
if ($this->vo->isEmpty()) {
|
||||||
$this->error('查看工单不存在!');
|
$this->error('查看工单不存在!');
|
||||||
}
|
}
|
||||||
|
$this->ticket = $this->vo->ticket;
|
||||||
$this->fetch();
|
$this->fetch();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
289
plugs/think-plugs-ticket/src/view/common/ticket_flow.html
Normal file
289
plugs/think-plugs-ticket/src/view/common/ticket_flow.html
Normal file
@ -0,0 +1,289 @@
|
|||||||
|
<div class="layui-tab layui-tab-brief">
|
||||||
|
<ul class="layui-tab-title">
|
||||||
|
{if $ticket.view_process}
|
||||||
|
<li>核验审核信息</li>
|
||||||
|
{/if}
|
||||||
|
{if $ticket.views}
|
||||||
|
<li>核验信息</li>
|
||||||
|
{/if}
|
||||||
|
{if $ticket.repair_process}
|
||||||
|
<li>维修审核信息</li>
|
||||||
|
{/if}
|
||||||
|
{if $ticket.repairs}
|
||||||
|
<li>维修信息</li>
|
||||||
|
{/if}
|
||||||
|
{if $ticket.verify_process}
|
||||||
|
<li>验收审核信息</li>
|
||||||
|
{/if}
|
||||||
|
{if $ticket.verifys}
|
||||||
|
<li>验收信息</li>
|
||||||
|
{/if}
|
||||||
|
</ul>
|
||||||
|
<div class="layui-tab-content">
|
||||||
|
{if $ticket.view_process}
|
||||||
|
<div class="layui-tab-item">
|
||||||
|
<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 class="layui-timeline-content">
|
||||||
|
{$ticket.view_process.create_name}于{$ticket.view_process.create_time|date='Y-m-d H:i:s'}提交
|
||||||
|
<div>
|
||||||
|
审核说明:{$ticket.view_process.content}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{foreach $ticket.view_process.steps as $index=>$step}
|
||||||
|
{include file="common/step" /}
|
||||||
|
{/foreach}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
|
{if $ticket.views}
|
||||||
|
<div class="layui-tab-item">
|
||||||
|
<div class="layui-card">
|
||||||
|
<div class="layui-card-header">核验信息</div>
|
||||||
|
<div class="layui-card-body">
|
||||||
|
{foreach $ticket.views as $view}
|
||||||
|
<div class="layui-table">
|
||||||
|
<table class="layui-table">
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td style="width: 120px">核验人</td>
|
||||||
|
<td>{$view.staff.name|default=""} ({$view.staff.phone|default=""})</td>
|
||||||
|
</tr>
|
||||||
|
{if $view.status == 1}
|
||||||
|
<tr>
|
||||||
|
<td>核验时间</td>
|
||||||
|
<td>{$view.finish_at|default=""}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>是否存在异常</td>
|
||||||
|
<td>{if $view.is_error == 1}是{else}否{/if}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>核验结果描述</td>
|
||||||
|
<td>{$view.content|default=""}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>核验图片</td>
|
||||||
|
<td>
|
||||||
|
<div>
|
||||||
|
{if count($view.imgs_arr) > 0}
|
||||||
|
{foreach $view.imgs_arr as $img}
|
||||||
|
<img data-tips-image src="{$img}" alt="image" style="height: 100px;">
|
||||||
|
<span> </span>
|
||||||
|
{/foreach}
|
||||||
|
{else}
|
||||||
|
无图片
|
||||||
|
{/if}
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>预期工作量(天)</td>
|
||||||
|
<td>{$view.workdays|default="-"}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>完成时间</td>
|
||||||
|
<td>{$view.finish_at|default=""}</td>
|
||||||
|
</tr>
|
||||||
|
{else}
|
||||||
|
<tr>
|
||||||
|
<td>核验状态</td>
|
||||||
|
<td>待核验</td>
|
||||||
|
</tr>
|
||||||
|
{/if}
|
||||||
|
<tr>
|
||||||
|
<td>创建时间</td>
|
||||||
|
<td>{$view.create_at|default=""}</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
{/foreach}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
|
{if $ticket.repair_process}
|
||||||
|
<div class="layui-tab-item">
|
||||||
|
<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 class="layui-timeline-content">
|
||||||
|
{$ticket.repair_process.create_name}于{$ticket.repair_process.create_time|date='Y-m-d H:i:s'}提交
|
||||||
|
<div>
|
||||||
|
审核说明:{$ticket.repair_process.content}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{foreach $ticket.repair_process.steps as $index=>$step}
|
||||||
|
{include file="common/step" /}
|
||||||
|
{/foreach}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
|
{if $ticket.repairs}
|
||||||
|
<div class="layui-tab-item">
|
||||||
|
<div class="layui-card">
|
||||||
|
<div class="layui-card-header">核验信息</div>
|
||||||
|
<div class="layui-card-body">
|
||||||
|
{foreach $ticket.repairs as $repair}
|
||||||
|
<div class="layui-table">
|
||||||
|
<table class="layui-table">
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td style="width: 120px">维修人</td>
|
||||||
|
<td>{$repair.staff.name|default=""} ({$repair.staff.phone|default=""})</td>
|
||||||
|
</tr>
|
||||||
|
{if $repair.status == 1}
|
||||||
|
<tr>
|
||||||
|
<td>核验提交时间</td>
|
||||||
|
<td>{$repair.finish_at|default=""}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>核验结果描述</td>
|
||||||
|
<td>{$repair.content|default=""}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>核验图片</td>
|
||||||
|
<td>
|
||||||
|
<div>
|
||||||
|
{if count($repair.imgs_arr) > 0}
|
||||||
|
{foreach $repair.imgs_arr as $img}
|
||||||
|
<img data-tips-image src="{$img}" alt="image" style="height: 100px;">
|
||||||
|
<span> </span>
|
||||||
|
{/foreach}
|
||||||
|
{else}
|
||||||
|
无图片
|
||||||
|
{/if}
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{else}
|
||||||
|
<tr>
|
||||||
|
<td>核验状态</td>
|
||||||
|
<td>待核验</td>
|
||||||
|
</tr>
|
||||||
|
{/if}
|
||||||
|
<tr>
|
||||||
|
<td>创建时间</td>
|
||||||
|
<td>{$repair.create_at|default=""}</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
{/foreach}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
|
{if $ticket.verify_process}
|
||||||
|
<div class="layui-tab-item">
|
||||||
|
<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 class="layui-timeline-content">
|
||||||
|
{$ticket.verify_process.create_name}于{$ticket.verify_process.create_time|date='Y-m-d H:i:s'}提交
|
||||||
|
<div>
|
||||||
|
审核说明:{$ticket.verify_process.content}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{foreach $ticket.verify_process.steps as $index=>$step}
|
||||||
|
{include file="common/step" /}
|
||||||
|
{/foreach}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
|
{if $ticket.verifys}
|
||||||
|
<div class="layui-tab-item">
|
||||||
|
<div class="layui-card">
|
||||||
|
<div class="layui-card-header">验收信息</div>
|
||||||
|
<div class="layui-card-body">
|
||||||
|
{foreach $ticket.verifys as $verify}
|
||||||
|
<div class="layui-table">
|
||||||
|
<table class="layui-table">
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td style="width: 120px">验收人</td>
|
||||||
|
<td>{$verify.staff.name|default=""} ({$verify.staff.phone|default=""})</td>
|
||||||
|
</tr>
|
||||||
|
{if $verify.status == 1}
|
||||||
|
<tr>
|
||||||
|
<td>验收时间</td>
|
||||||
|
<td>{$verify.finish_at|default=""}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>验收结果描述</td>
|
||||||
|
<td>{$verify.content|default=""}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>验收图片</td>
|
||||||
|
<td>
|
||||||
|
<div>
|
||||||
|
{if count($verify.imgs_arr) > 0}
|
||||||
|
{foreach $verify.imgs_arr as $img}
|
||||||
|
<img data-tips-image src="{$img}" alt="image" style="height: 100px;">
|
||||||
|
<span> </span>
|
||||||
|
{/foreach}
|
||||||
|
{else}
|
||||||
|
无图片
|
||||||
|
{/if}
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>完成时间</td>
|
||||||
|
<td>{$verify.finish_at|default=""}</td>
|
||||||
|
</tr>
|
||||||
|
{else}
|
||||||
|
<tr>
|
||||||
|
<td>验收状态</td>
|
||||||
|
<td>待验收</td>
|
||||||
|
</tr>
|
||||||
|
{/if}
|
||||||
|
<tr>
|
||||||
|
<td>创建时间</td>
|
||||||
|
<td>{$verify.create_at|default=""}</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
{/foreach}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
|
</div>
|
||||||
|
</div>
|
167
plugs/think-plugs-ticket/src/view/repair/detail.html
Normal file
167
plugs/think-plugs-ticket/src/view/repair/detail.html
Normal file
@ -0,0 +1,167 @@
|
|||||||
|
<div class="layui-tab layui-tab-brief">
|
||||||
|
<ul class="layui-tab-title">
|
||||||
|
<li class="layui-this">原始工单信息</li>
|
||||||
|
<li>核验信息</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.ticket.id|default=""}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>工单标题</td>
|
||||||
|
<td>{$vo.ticket.title|default=""}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>工单类型</td>
|
||||||
|
<td>{$vo.ticket.type_name|default=""}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>工单地址</td>
|
||||||
|
<td>{$vo.ticket.ticket_region|default=""} {$vo.ticket.ticket_address|default=""}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>工单内容</td>
|
||||||
|
<td>{$vo.ticket.content|default=""}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>反馈人信息</td>
|
||||||
|
<td>{$vo.ticket.contact_name|default="未填写名称"} {$vo.ticket.contact_phone|default="未填写联系方式"}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>工单图片</td>
|
||||||
|
<td>
|
||||||
|
<div>
|
||||||
|
{if count($vo.ticket.imgs_arr) > 0}
|
||||||
|
{foreach $vo.ticket.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.ticket.lat && $vo.ticket.lng}
|
||||||
|
<tr>
|
||||||
|
<td>位置</td>
|
||||||
|
<td>
|
||||||
|
<div id="map" style="height: 320px;"></div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{/if}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
{if $vo.ticket.lat && $vo.ticket.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.ticket.lat}", "{$vo.ticket.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">
|
||||||
|
<div class="layui-card">
|
||||||
|
<div class="layui-card-header">核验信息</div>
|
||||||
|
<div class="layui-card-body">
|
||||||
|
<div class="layui-table">
|
||||||
|
<table class="layui-table">
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td style="width: 120px">核验人</td>
|
||||||
|
<td>{$vo.staff.name|default=""} ({$vo.staff.phone|default=""})</td>
|
||||||
|
</tr>
|
||||||
|
{if $vo.status == 1}
|
||||||
|
<tr>
|
||||||
|
<td>核验时间</td>
|
||||||
|
<td>{$vo.finish_at|default=""}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>是否存在异常</td>
|
||||||
|
<td>{if $vo.is_error == 1}是{else}否{/if}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>核验结果描述</td>
|
||||||
|
<td>{$vo.content|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>
|
||||||
|
{else}
|
||||||
|
<tr>
|
||||||
|
<td>核验状态</td>
|
||||||
|
<td>待核验</td>
|
||||||
|
</tr>
|
||||||
|
{/if}
|
||||||
|
<tr>
|
||||||
|
<td>创建时间</td>
|
||||||
|
<td>{$vo.create_at|default=""}</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="layui-tab-item">
|
||||||
|
{include file="common/ticket_flow" /}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
@ -1,7 +1,7 @@
|
|||||||
<div class="layui-tab layui-tab-brief">
|
<div class="layui-tab layui-tab-brief">
|
||||||
<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>
|
<li>关联随手拍</li>
|
||||||
</ul>
|
</ul>
|
||||||
<div class="layui-tab-content">
|
<div class="layui-tab-content">
|
||||||
@ -106,52 +106,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-tab-item">
|
<div class="layui-tab-item">
|
||||||
<div class="layui-card">
|
{include file="common/ticket_flow" /}
|
||||||
<div class="layui-card-header">现场核实情况</div>
|
|
||||||
{if $vo.verify}
|
|
||||||
<div class="layui-card-body">
|
|
||||||
{foreach $vo.verify as $verify}
|
|
||||||
<table class="layui-table">
|
|
||||||
<tbody class="layui-table-body">
|
|
||||||
<tr>
|
|
||||||
<td style="width: 120px">提交时间</td>
|
|
||||||
<td>{$verify.create_at|default=""}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>核实人</td>
|
|
||||||
<td>{$verify.staff.name|default=""}【联系方式:{$verify.staff.phone|default=""}】</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>核实结果</td>
|
|
||||||
<td>{$verify.content|default=""}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>图片</td>
|
|
||||||
<td>
|
|
||||||
<div>
|
|
||||||
{foreach $verify.imgs_arr as $img}
|
|
||||||
<img data-tips-image src="{$img}" alt="image" style="height: 100px;">
|
|
||||||
<span> </span>
|
|
||||||
{/foreach}
|
|
||||||
</div>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>预估工作量</td>
|
|
||||||
<td>{$verify.work_days|default=""}</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
{/foreach}
|
|
||||||
</div>
|
|
||||||
{else /}
|
|
||||||
<div class="layui-card-body">
|
|
||||||
<div class="layui-row">
|
|
||||||
暂无核实记录
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{/if}
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-tab-item">
|
<div class="layui-tab-item">
|
||||||
<div class="layui-card">
|
<div class="layui-card">
|
||||||
|
@ -69,7 +69,16 @@
|
|||||||
{field: 'view', title:'核验情况', width: 100, minWidth:100, templet:function(item){
|
{field: 'view', title:'核验情况', width: 100, minWidth:100, templet:function(item){
|
||||||
if (item.views && item.views.length > 0) {
|
if (item.views && item.views.length > 0) {
|
||||||
// 已有核验工单
|
// 已有核验工单
|
||||||
return `<a data-modal="{:url('view/detail')}?id=${item.views[item.views.length - 1].id}" data-height="80%" data-width="80%" class="layui-btn layui-btn-xs layui-btn-normal" title="查看核验工单">查看工单</a>`;
|
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 if (item.view_pid) {
|
} else if (item.view_pid) {
|
||||||
// 已有核验流程
|
// 已有核验流程
|
||||||
if (item.view_process.status === 0) {
|
if (item.view_process.status === 0) {
|
||||||
@ -77,7 +86,7 @@
|
|||||||
} else if (item.view_process.status === 1) {
|
} else if (item.view_process.status === 1) {
|
||||||
return `<a data-modal="{:url('view_ticket_create')}?ticket_id=${item.id}" data-height="80%" data-width="40%" class="layui-btn layui-btn-xs layui-btn-active" title="创建核验工单">创建核验工单</a>`;
|
return `<a data-modal="{:url('view_ticket_create')}?ticket_id=${item.id}" data-height="80%" data-width="40%" class="layui-btn layui-btn-xs layui-btn-active" title="创建核验工单">创建核验工单</a>`;
|
||||||
} else if (item.view_process.status === 2) {
|
} else if (item.view_process.status === 2) {
|
||||||
return `<a data-modal="{:url('view_process_create')}?ticket_id=${item.id}" data-height="80%" data-width="80%" class="layui-btn layui-btn-xs layui-btn-danger" title="提请核验">已驳回</a>`;
|
return `<a data-modal="{:url('view_process_create')}?ticket_id=${item.id}" data-height="80%" data-width="80%" class="layui-btn layui-btn-xs layui-btn-danger" data-title="提请核验" title="提请核验">已驳回</a>`;
|
||||||
} else if (item.view_process.status === -1) {
|
} else if (item.view_process.status === -1) {
|
||||||
return `已取消`
|
return `已取消`
|
||||||
}
|
}
|
||||||
@ -98,7 +107,12 @@
|
|||||||
}
|
}
|
||||||
if (item.repairs && item.repairs.length > 0) {
|
if (item.repairs && item.repairs.length > 0) {
|
||||||
// 已有维修工单
|
// 已有维修工单
|
||||||
return `<a data-modal="{:url('repair/detail')}?id=${item.repairs[item.repairs.length - 1].id}" data-height="80%" data-width="80%" class="layui-btn layui-btn-xs layui-btn-normal" title="查看维修工单">查看工单</a>`;
|
const repair = item.repairs[item.repairs.length - 1];
|
||||||
|
if (repair.status == 1) {
|
||||||
|
return `<a data-modal="{:url('repair/detail')}?id=${repair.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('repair/detail')}?id=${repair.id}" data-height="80%" data-width="80%" class="layui-btn layui-btn-xs layui-btn-normal" data-title="查看维修工单" title="查看维修工单">查看工单</a>`;
|
||||||
|
}
|
||||||
} else if (item.repair_pid) {
|
} else if (item.repair_pid) {
|
||||||
// 已有维修流程
|
// 已有维修流程
|
||||||
if (item.repair_process.status === 0) {
|
if (item.repair_process.status === 0) {
|
||||||
@ -106,7 +120,7 @@
|
|||||||
} else if (item.repair_process.status === 1) {
|
} else if (item.repair_process.status === 1) {
|
||||||
return `<a data-modal="{:url('repair_ticket_create')}?ticket_id=${item.id}" data-height="80%" data-width="40%" class="layui-btn layui-btn-xs layui-btn-active" title="创建维修工单">创建维修工单</a>`;
|
return `<a data-modal="{:url('repair_ticket_create')}?ticket_id=${item.id}" data-height="80%" data-width="40%" class="layui-btn layui-btn-xs layui-btn-active" title="创建维修工单">创建维修工单</a>`;
|
||||||
} else if (item.repair_process.status === 2) {
|
} else if (item.repair_process.status === 2) {
|
||||||
return `<a data-modal="{:url('repair_process_create')}?ticket_id=${item.id}" data-height="80%" data-width="80%" class="layui-btn layui-btn-xs layui-btn-danger" title="提请维修">已驳回</a>`;
|
return `<a data-modal="{:url('repair_process_create')}?ticket_id=${item.id}" data-height="80%" data-width="80%" class="layui-btn layui-btn-xs layui-btn-danger" data-title="提请维修" title="提请维修">已驳回</a>`;
|
||||||
} else if (item.repair_process.status === -1) {
|
} else if (item.repair_process.status === -1) {
|
||||||
return `已取消`
|
return `已取消`
|
||||||
}
|
}
|
||||||
@ -129,14 +143,25 @@
|
|||||||
// 还没有维修流程
|
// 还没有维修流程
|
||||||
return `请先维修`
|
return `请先维修`
|
||||||
}
|
}
|
||||||
if (item.verify_pid) {
|
if (item.repairs[item.repairs.length - 1].status !== 1) {
|
||||||
|
return `请先完成维修`
|
||||||
|
}
|
||||||
|
if (item.verifys && item.verifys.length > 0) {
|
||||||
|
// 已有验收工单
|
||||||
|
const verify = item.verifys[item.verifys.length - 1];
|
||||||
|
if (verify.status == 1) {
|
||||||
|
return `<a data-modal="{:url('verify/detail')}?id=${verify.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('verify/detail')}?id=${verify.id}" data-height="80%" data-width="80%" class="layui-btn layui-btn-xs layui-btn-active" data-title="查看验收工单" title="查看验收工单">查看工单</a>`;
|
||||||
|
}
|
||||||
|
} else if (item.verify_pid) {
|
||||||
// 已有验收流程
|
// 已有验收流程
|
||||||
if (item.verify_process.status === 0) {
|
if (item.verify_process.status === 0) {
|
||||||
return `正在审核`
|
return `正在审核`
|
||||||
} else if (item.verify_process.status === 1) {
|
} else if (item.verify_process.status === 1) {
|
||||||
return `<a data-modal="{:url('verify_ticket_create')}?ticket_id=${item.id}" data-height="80%" data-width="40%" class="layui-btn layui-btn-xs layui-btn-active" title="创建验收工单">创建验收工单</a>`;
|
return `<a data-modal="{:url('verify_ticket_create')}?ticket_id=${item.id}" data-height="80%" data-width="40%" class="layui-btn layui-btn-xs layui-btn-active" title="创建验收工单">创建验收工单</a>`;
|
||||||
} else if (item.verify_process.status === 2) {
|
} else if (item.verify_process.status === 2) {
|
||||||
return `<a data-modal="{:url('verify_process_create')}?ticket_id=${item.id}" data-height="80%" data-width="80%" class="layui-btn layui-btn-xs layui-btn-danger" title="提请验收">已驳回</a>`;
|
return `<a data-modal="{:url('verify_process_create')}?ticket_id=${item.id}" data-height="80%" data-width="80%" class="layui-btn layui-btn-xs layui-btn-danger" data-title="提请验收" title="提请验收">已驳回</a>`;
|
||||||
} else if (item.verify_process.status === -1) {
|
} else if (item.verify_process.status === -1) {
|
||||||
return `已取消`
|
return `已取消`
|
||||||
}
|
}
|
||||||
|
@ -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,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>
|
163
plugs/think-plugs-ticket/src/view/verify/detail.html
Normal file
163
plugs/think-plugs-ticket/src/view/verify/detail.html
Normal file
@ -0,0 +1,163 @@
|
|||||||
|
<div class="layui-tab layui-tab-brief">
|
||||||
|
<ul class="layui-tab-title">
|
||||||
|
<li class="layui-this">原始工单信息</li>
|
||||||
|
<li>验收信息</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.ticket.id|default=""}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>工单标题</td>
|
||||||
|
<td>{$vo.ticket.title|default=""}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>工单类型</td>
|
||||||
|
<td>{$vo.ticket.type_name|default=""}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>工单地址</td>
|
||||||
|
<td>{$vo.ticket.ticket_region|default=""} {$vo.ticket.ticket_address|default=""}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>工单内容</td>
|
||||||
|
<td>{$vo.ticket.content|default=""}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>反馈人信息</td>
|
||||||
|
<td>{$vo.ticket.contact_name|default="未填写名称"} {$vo.ticket.contact_phone|default="未填写联系方式"}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>工单图片</td>
|
||||||
|
<td>
|
||||||
|
<div>
|
||||||
|
{if count($vo.ticket.imgs_arr) > 0}
|
||||||
|
{foreach $vo.ticket.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.ticket.lat && $vo.ticket.lng}
|
||||||
|
<tr>
|
||||||
|
<td>位置</td>
|
||||||
|
<td>
|
||||||
|
<div id="map" style="height: 320px;"></div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{/if}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
{if $vo.ticket.lat && $vo.ticket.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.ticket.lat}", "{$vo.ticket.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">
|
||||||
|
<div class="layui-card">
|
||||||
|
<div class="layui-card-header">验收信息</div>
|
||||||
|
<div class="layui-card-body">
|
||||||
|
<div class="layui-table">
|
||||||
|
<table class="layui-table">
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td style="width: 120px">验收人</td>
|
||||||
|
<td>{$vo.staff.name|default=""} ({$vo.staff.phone|default=""})</td>
|
||||||
|
</tr>
|
||||||
|
{if $vo.status == 1}
|
||||||
|
<tr>
|
||||||
|
<td>验收时间</td>
|
||||||
|
<td>{$vo.finish_at|default=""}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>验收结果描述</td>
|
||||||
|
<td>{$vo.content|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>
|
||||||
|
{else}
|
||||||
|
<tr>
|
||||||
|
<td>核验状态</td>
|
||||||
|
<td>待核验</td>
|
||||||
|
</tr>
|
||||||
|
{/if}
|
||||||
|
<tr>
|
||||||
|
<td>创建时间</td>
|
||||||
|
<td>{$vo.create_at|default=""}</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="layui-tab-item">
|
||||||
|
{include file="common/ticket_flow" /}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
@ -2,9 +2,7 @@
|
|||||||
<ul class="layui-tab-title">
|
<ul class="layui-tab-title">
|
||||||
<li class="layui-this">原始工单信息</li>
|
<li class="layui-this">原始工单信息</li>
|
||||||
<li>核验信息</li>
|
<li>核验信息</li>
|
||||||
{if $vo.ticket.view_process}
|
<li>工单全流程信息</li>
|
||||||
<li>核验审核信息</li>
|
|
||||||
{/if}
|
|
||||||
</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">
|
||||||
@ -121,18 +119,22 @@
|
|||||||
{if $vo.status == 1}
|
{if $vo.status == 1}
|
||||||
<tr>
|
<tr>
|
||||||
<td>核验时间</td>
|
<td>核验时间</td>
|
||||||
<td>{$vo.ticket.finish_at|default=""}</td>
|
<td>{$vo.finish_at|default=""}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>核验结果</td>
|
<td>是否存在异常</td>
|
||||||
<td>{$vo.ticket.content|default=""}</td>
|
<td>{if $vo.is_error == 1}是{else}否{/if}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>核验结果描述</td>
|
||||||
|
<td>{$vo.content|default=""}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>核验图片</td>
|
<td>核验图片</td>
|
||||||
<td>
|
<td>
|
||||||
<div>
|
<div>
|
||||||
{if count($vo.ticket.imgs_arr) > 0}
|
{if count($vo.imgs_arr) > 0}
|
||||||
{foreach $vo.ticket.imgs_arr as $img}
|
{foreach $vo.imgs_arr as $img}
|
||||||
<img data-tips-image src="{$img}" alt="image" style="height: 100px;">
|
<img data-tips-image src="{$img}" alt="image" style="height: 100px;">
|
||||||
<span> </span>
|
<span> </span>
|
||||||
{/foreach}
|
{/foreach}
|
||||||
@ -144,7 +146,7 @@
|
|||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>预期工作量(天)</td>
|
<td>预期工作量(天)</td>
|
||||||
<td>{$vo.workdays|default=""}</td>
|
<td>{$vo.workdays|default="-"}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{else}
|
{else}
|
||||||
<tr>
|
<tr>
|
||||||
@ -162,27 +164,8 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{if $vo.ticket.view_process}
|
|
||||||
<div class="layui-tab-item">
|
<div class="layui-tab-item">
|
||||||
<div class="layui-collapse">
|
{include file="common/ticket_flow" /}
|
||||||
<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 $vo.ticket.view_process.steps as $index=>$step}
|
|
||||||
{include file="common/step" /}
|
|
||||||
{/foreach}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
Reference in New Issue
Block a user