维修人员上报

This commit is contained in:
2025-03-19 10:43:16 +08:00
parent 8351799161
commit 71f1badc11
6 changed files with 516 additions and 22 deletions

View File

@ -0,0 +1,259 @@
<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">
<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.type_name|default=""}</td>
</tr>
<tr>
<td>联系方式</td>
<td>{$vo.contact_phone|default="未填写联系方式"}</td>
</tr>
<tr>
<td>维修人员上报地址</td>
<td>{$vo.ticket_address|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>&nbsp;</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>
</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 class="layui-tab-item">
{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 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">
<textarea name="content" placeholder="请输入处理说明" class="layui-textarea" lay-verify="required"></textarea>
</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.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}
</div>
</div>
</div>

View File

@ -0,0 +1,74 @@
{extend name="table"}
{block name="button"}
{/block}
{block name="content"}
<div class="layui-tab">
<div class="layui-row">
<div class="layui-col">
<div class="article_list think-bg-white">
{include file='inspection_share/index_search'}
<table class="layui-hide" data-url="{$request->url()}" data-target-search="form.form-search" id="userShareTable" lay-filter="userShareTable"></table>
</div>
</div>
</div>
</div>
<script type="text/html" id="toolbar">
<!--{if auth("detail")}-->
<a data-modal="{:url('detail')}?id={{ d.id }}" data-height="90%" data-width="60%" class="layui-btn layui-btn-xs layui-btn-normal" title="详情">详情</a>
<!--{/if}-->
<!--{if auth("move")}-->
<!-- <a data-modal="{:url('move')}?ticket_id={{ d.id }}" data-height="80%" data-width="80%" class="layui-btn layui-btn-xs" title="流转">流转</a>-->
<!--{/if}-->
</script>
{/block}
{block name='style'}
<style>
</style>
{/block}
{block name='script'}
<script>
$(function () {
$('#userShareTable').layTable({
height: 'full-250',
toolbar: true,
sort: {field: 'create_at', type: 'desc'},
title: '维修人员上报列表',
cols: [[
{field: 'create_at', title: '创建时间', width: 160, sort: true},
{field:'title', title:'标题', width:160},
{field:'type_name', title:'工单类型', width:120},
{field:'content', title:'上报内容', minWidth:100},
{field:'ticket_address', title:'上报地址', width:200, templet:function(item){
if (item.ticket_address) {
return `${item.ticket_region} ${item.ticket_address}`;
} else {
return '未填写地址';
}
}},
{field: 'imgs', title: '上报图片', width: 100, templet:function(item){
if (item.imgs) {
return item.imgs.split("|").map((img) => {
return laytpl('<a target="_blank" data-tips-hover data-tips-image="{{d}}"><i class="layui-icon layui-icon-picture"></i></a>').render(img)
}).concat(' ')
} else {
return '';
}
}},
{field:'status', title:'处理状态', width:100, templet:function(item){
if (item.status == 0) {
return '<span class="layui-badge layui-bg-red">未处理</span>';
} else {
return '<span class="layui-badge layui-bg-green">已处理</span>';
}
}},
{fixed: 'right', title:'操作', toolbar: '#toolbar', width:200}
]],
page: true
})
})
</script>
{/block}

View File

@ -0,0 +1,43 @@
<fieldset>
<legend>条件搜索</legend>
<form class="layui-form layui-form-pane form-search" action="{:request()->url()}" onsubmit="return false" method="get" autocomplete="off">
<div class="layui-form-item layui-inline">
<label class="layui-form-label">关键字</label>
<div class="layui-input-inline">
<input name="keyword" value="{:input('get.keyword')}" placeholder="标题、内容、地址、电话" class="layui-input">
</div>
</div>
<div class="layui-form-item layui-inline">
<label class="layui-form-label">工单类型</label>
<div class="layui-input-inline">
<select class="layui-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 layui-inline">
<label class="layui-form-label">创建时间</label>
<div class="layui-input-inline">
<input data-date-range name="create_at" value="{:input('get.create_at')}" placeholder="请选择创建时间" class="layui-input">
</div>
</div>
<div class="layui-form-item layui-inline">
<label class="layui-form-label">回复状态</label>
<div class="layui-input-inline">
<select class="layui-select" name="status">
<option value=''>-- 全部 --</option>
<option value='0'>未回复</option>
<option value='1'>已回复</option>
</select>
</div>
</div>
<div class="layui-form-item layui-inline">
<button class="layui-btn layui-btn-primary" lay-submit lay-filter="searchData"><i class="layui-icon">&#xe615;</i> 搜 索</button>
</div>
</form>
</fieldset>

View File

@ -159,8 +159,8 @@
<select name="_type" lay-verify="required" lay-filter="Type">
<option value="">请选择处置方式</option>
<option value="skip">直接回复</option>
<option value="new">建工单</option>
<option value="exist">已有工单</option>
<option value="new">建工单</option>
<option value="exist">关联工单</option>
</select>
</div>
</div>