You've already forked guangan
2
This commit is contained in:
@ -9,7 +9,7 @@ class Message extends Auth
|
||||
{
|
||||
public function index()
|
||||
{
|
||||
$pageData = CustomMessage::query()->where('user_id', $this->usid)->paginate();
|
||||
$pageData = CustomMessage::query()->where('user_id', $this->usid)->order('id', 'desc')->paginate();
|
||||
$this->success('获取消息列表', $pageData);
|
||||
}
|
||||
|
||||
|
@ -44,7 +44,7 @@ class TicketView extends Auth
|
||||
'ys_content.default' => '',
|
||||
'is_error.in:0,1' => '请选择是否有异常',
|
||||
'imgs.default' => '',
|
||||
'work_days.default' => '',
|
||||
'work_days.default' => '0',
|
||||
]);
|
||||
$ticket = Model::query()->with(['ticket'])->where('staff_id', '=', $this->staff->id)->where(['id'=>$data['ticket_id']])->find();
|
||||
if (!$ticket) {
|
||||
@ -60,6 +60,11 @@ class TicketView extends Auth
|
||||
try {
|
||||
$data['status'] = 1;
|
||||
$ticket->finish_at = date('Y-m-d H:i:s');
|
||||
$ticket->ticket->gc_content = $data['gc_content'];
|
||||
$ticket->ticket->zf_content = $data['zf_content'];
|
||||
$ticket->ticket->ys_content = $data['ys_content'];
|
||||
$ticket->ticket->work_days = $data['work_days'];
|
||||
$ticket->ticket->save();
|
||||
$ticket->save($data);
|
||||
} catch (\Exception $exception) {
|
||||
$this->error('工单提交失败');
|
||||
|
@ -371,6 +371,10 @@ class Ticket extends Controller
|
||||
if ($staff->isEmpty()) {
|
||||
$this->error('未找到维修人员信息');
|
||||
}
|
||||
$ticket->gc_content = '';
|
||||
$ticket->zf_content = '';
|
||||
$ticket->ys_content = '';
|
||||
$ticket->work_days = null;
|
||||
$view = $ticket->views()->save([
|
||||
'staff_id'=>$instance_data['staff_id'],
|
||||
'status'=>0,
|
||||
@ -383,6 +387,7 @@ class Ticket extends Controller
|
||||
'type' => 'TICKET_VIEW',
|
||||
'oid' => $view->id,
|
||||
]);
|
||||
$ticket->save();
|
||||
$this->success('创建成功!', $view);
|
||||
} else {
|
||||
$this->vo = $ticket;
|
||||
|
@ -200,6 +200,7 @@ class TicketOuter extends Controller
|
||||
TicketTicket::mk()->rollback();
|
||||
$this->error("保存失败");
|
||||
}
|
||||
$this->success("保存成功");
|
||||
} else {
|
||||
$this->vo = $ticket;
|
||||
$this->ticket = $ticket;
|
||||
|
@ -52,7 +52,7 @@ class UserShare extends Controller
|
||||
$where = $this->_vali([
|
||||
'id.require' => '随手拍ID不能为空',
|
||||
]);
|
||||
$this->vo = TicketUserShare::mk()->where($where)->with(['linked_ticket'])->findOrEmpty();
|
||||
$this->vo = TicketUserShare::mk()->where($where)->with(['linked_ticket', 'logs'])->findOrEmpty();
|
||||
if ($this->vo->isEmpty()) $this->error('用户随手拍不存在!');
|
||||
if (!$this->vo->linked_ticket_id) {
|
||||
$this->ticket_list = TicketTicket::mk()->scope(['avail'])->select();
|
||||
|
@ -1,7 +1,7 @@
|
||||
<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">
|
||||
@ -77,104 +77,7 @@
|
||||
</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 class="layui-table-body">
|
||||
<tr>
|
||||
<td style="width: 120px">工单编号</td>
|
||||
<td>{$ticket.id|default=""}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>工单标题</td>
|
||||
<td>{$ticket.title|default=""}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>工单类型</td>
|
||||
<td>{$ticket.type_name|default=""}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>工单地址</td>
|
||||
<td>{$ticket.ticket_region|default=""} {$ticket.ticket_address|default=""}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>工单内容</td>
|
||||
<td>{$ticket.content|default=""}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>反馈人信息</td>
|
||||
<td>{$ticket.contact_name|default="未填写名称"} {$ticket.contact_phone|default="未填写联系方式"}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>工单图片</td>
|
||||
<td>
|
||||
<div>
|
||||
{if count($ticket.imgs_arr) > 0}
|
||||
{foreach $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 $ticket.lat && $ticket.lng}
|
||||
<tr>
|
||||
<td>位置</td>
|
||||
<td>
|
||||
<div id="map" style="height: 320px;"></div>
|
||||
</td>
|
||||
</tr>
|
||||
{/if}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
{if $ticket.lat && $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("{$ticket.lat}", "{$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>
|
||||
{include file="common/ticket_flow" /}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@ -25,6 +25,7 @@
|
||||
审核说明:{$step.content}
|
||||
</div>
|
||||
{else}
|
||||
{$step.title}
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
|
@ -113,15 +113,15 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td>工程内容</td>
|
||||
<td>{$vo.gc_content|default=""}</td>
|
||||
<td>{$view.gc_content|default=""}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>做法及质量要求</td>
|
||||
<td>{$vo.zf_content|default=""}</td>
|
||||
<td>{$view.zf_content|default=""}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>工程预算</td>
|
||||
<td>{$vo.ys_content|default=""}</td>
|
||||
<td>{$view.ys_content|default=""}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>核验图片</td>
|
||||
@ -140,7 +140,7 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td>预期工作量(天)</td>
|
||||
<td>{$view.workdays|default="-"}</td>
|
||||
<td>{$view.work_days|default="-"}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>完成时间</td>
|
||||
|
@ -39,7 +39,7 @@
|
||||
{{# } }}
|
||||
{{# } 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>
|
||||
<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}-->
|
||||
{{# } }}
|
||||
{{# } }}
|
||||
|
18
plugs/think-plugs-ticket/src/view/ticket_outer/comment.html
Normal file
18
plugs/think-plugs-ticket/src/view/ticket_outer/comment.html
Normal file
@ -0,0 +1,18 @@
|
||||
<form class="layui-form layui-card margin-top-10 padding-10" action="{:sysuri()}" data-auto="true" method="post" autocomplete="off" data-table-id="ticketTable">
|
||||
<input class="layui-input layui-hide" type='hidden' value="{:input('get.id')}" name='id'>
|
||||
<input class="layui-input layui-hide" type='hidden' value='{:systoken("comment")}' name='_token_'>
|
||||
<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></textarea>
|
||||
<div class="layui-word-aux">此回复对外可见,请认真回复。</div>
|
||||
</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>
|
||||
<script>
|
||||
</script>
|
||||
{include file="ticket/detail"}
|
@ -1,8 +1,7 @@
|
||||
<div class="layui-tab layui-tab-brief">
|
||||
<ul class="layui-tab-title">
|
||||
<li class="layui-this">基本信息</li>
|
||||
<li>核实情况</li>
|
||||
<li>维修情况</li>
|
||||
<li>工单全流程信息</li>
|
||||
</ul>
|
||||
<div class="layui-tab-content">
|
||||
<div class="layui-tab-item layui-show">
|
||||
@ -51,107 +50,62 @@
|
||||
</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">
|
||||
<div class="layui-card">
|
||||
<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 class="layui-tab-item">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-header">工单维修情况</div>
|
||||
{if $vo.repair}
|
||||
<div class="layui-card-body">
|
||||
{foreach $vo.repair as $repair}
|
||||
<table class="layui-table">
|
||||
<tbody class="layui-table-body">
|
||||
<tr>
|
||||
<td style="width: 120px">提交时间</td>
|
||||
<td>{$repair.create_at|default=""}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>维修人</td>
|
||||
<td>{$repair.staff.name|default=""}【联系方式:{$repair.staff.phone|default=""}】</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>维修结果</td>
|
||||
<td>{$repair.content|default=""}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>图片</td>
|
||||
<td>
|
||||
<div>
|
||||
{foreach $repair.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>
|
||||
{include file="common/ticket_flow" /}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@ -71,6 +71,9 @@
|
||||
}
|
||||
}},
|
||||
{field: 'view', title:'核验情况', width: 100, minWidth:100, templet:function(item){
|
||||
if (item.source_type !== 1) {
|
||||
return `-`
|
||||
}
|
||||
if (item.views && item.views.length > 0) {
|
||||
// 已有核验工单
|
||||
const view = item.views[item.views.length - 1];
|
||||
|
@ -2,6 +2,7 @@
|
||||
<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">
|
||||
@ -274,5 +275,28 @@
|
||||
</script>
|
||||
{/if}
|
||||
</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" id="logTable" lay-filter="logTable">
|
||||
<thead>
|
||||
<tr class="layui-table-header">
|
||||
<th lay-data="{width:300}">回复内容</th>
|
||||
<th lay-data="{width:200}">回复时间</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{foreach $vo.logs as $log}
|
||||
<tr class="layui-table-body">
|
||||
<td>{$log.content}</td>
|
||||
<td>{$log.create_at}</td>
|
||||
</tr>
|
||||
{/foreach}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -7,7 +7,10 @@
|
||||
<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-header" style="display: flex; flex-direction: row; justify-content: space-between">
|
||||
<span>工单内容</span>
|
||||
<a data-modal="{:url('ticket/view_ticket_create')}?ticket_id={$vo.ticket.id}" data-height="80%" data-width="80%" class="layui-btn layui-btn-xs layui-btn-normal" title="创建核验工单">重新创建核验工单</a>
|
||||
</div>
|
||||
<div class="layui-card-body">
|
||||
<div class="layui-table">
|
||||
<table class="layui-table">
|
||||
@ -36,6 +39,22 @@
|
||||
<td>反馈人信息</td>
|
||||
<td>{$vo.ticket.contact_name|default="未填写名称"} {$vo.ticket.contact_phone|default="未填写联系方式"}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>工程内容</td>
|
||||
<td>{$vo.ticket.gc_content|default="-- 待核验 --"}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>做法及质量要求</td>
|
||||
<td>{$vo.ticket.zf_content|default="-- 待核验 --"}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>工程预算</td>
|
||||
<td>{$vo.ticket.ys_content|default="-- 待核验 --"}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>预估工作量</td>
|
||||
<td>{$vo.ticket.work_days|default="-- 待核验 --"}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>工单图片</td>
|
||||
<td>
|
||||
|
Reference in New Issue
Block a user