This commit is contained in:
2024-11-21 16:40:44 +08:00
commit a5029a2be7
69 changed files with 3160 additions and 0 deletions

View File

@ -0,0 +1,65 @@
<div class="layui-card">
<div class="layui-card-header">工单内容</div>
<div class="layui-card-body">
<div class="layui-row">
工单编号:{$vo.id|default=""}
</div>
<div class="layui-row">
工单标题:{$vo.title|default=""}
</div>
<div class="layui-row">
反馈人信息:{$vo.contact_name|default="未填写名称"}
联系方式:{$vo.contact_phone|default="未填写联系方式"}
联系地址:{$vo.contact_address|default="未填写地址"}
</div>
<div class="layui-row">
工单类型:{$vo.type_name|default=""}
</div>
<div class="layui-row">
工单地址:{$vo.ticket_address|default=""}
</div>
<div class="layui-row">
工单内容:{$vo.content|default=""}
</div>
<div class="layui-row">
工单图片:
<div>
{foreach $vo.imgs_arr as $img}
<img data-tips-image src="{$img}" alt="image" style="height: 100px;">
<span>&nbsp;</span>
{/foreach}
</div>
</div>
</div>
</div>
<div class="layui-card">
<div class="layui-card-header">工单流转详情</div>
<div class="layui-card-body">
<table id="replyTable" class="layui-table">
<thead>
<tr>
<th lay-data='{field: "username", width: "120px"}'>工单处理人</th>
<th lay-data='{field: "type_name", width: "120px"}'>处理类型</th>
<th lay-data='{field: "create_at", width: "180px"}'>工单处理时间</th>
<th lay-data='{field: "content", minWidth: "200px"}'>处理内容</th>
</tr>
</thead>
<tbody>
{notempty name='vo.reply'}
{foreach $vo.reply as $reply}
<tr>
<td>{$reply.username|default=""}</td>
<td>{$reply.type_name|default=""}</td>
<td>{$reply.create_at|default=""}</td>
<td>{$reply.content|default=""}</td>
</tr>
{/foreach}
{else}
<tr>
<td colspan="999" class="text-center">暂无工单流转记录</td>
</tr>
{/notempty}
</tbody>
</table>
</div>
</div>

View File

@ -0,0 +1,44 @@
<form class="layui-form layui-card" action="{:sysuri()}" data-auto="true" method="post" autocomplete="off" data-table-id="ticketTable">
<h1 style="color: red; text-align: center; padding: 20px; border: 1px solid red; margin-bottom: 20px">
原则上不允许私自创建或修改工单!!!
</h1>
<div class="layui-row">
<div class="layui-form-item">
<label class="layui-form-label">工单标题</label>
<div class="layui-input-block">
<input type="text" name="title" value='{$vo.title|default=""}' required placeholder="请输入工单标题" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">工单分类</label>
<div class="layui-input-block">
<select class="layui-select" name="type_id" required>
{foreach $types as $type}
<option value='{$type.id}'>{$type.name}</option>
{/foreach}
</select>
</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.content|default=""}</textarea>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">工单图片</label>
<div class="layui-input-block">
<input type="hidden" value='{$vo.imgs|default=""}' name="imgs">
</div>
</div>
</div>
{notempty name='id'}<input class="layui-input layui-hide" type='hidden' value='{$id}' name='id'>{/notempty}
<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>
$('[name="imgs"]').uploadMultipleImage()
</script>

View File

@ -0,0 +1,85 @@
{extend name="table"}
{block name="button"}
<!--{if auth("add")}-->
<button type="button" class="layui-btn layui-btn-sm layui-btn-disabled" data-modal='{:url("add")}' data-title="添加工单">添加工单</button>
<!--{/if}-->
{/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='ticket/index_search'}
<table class="layui-hide" data-url="{$request->url()}" data-target-search="form.form-search" id="ticketTable" lay-filter="ticketTable"></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}-->
<!--{if auth("reply")}-->
{{# if (d.last_reply && d.last_reply.user_id == {$user_id} && d.last_reply.status == 0) { }}
<a data-modal="{:url('reply')}?id={{ d.last_reply.id }}&ticket_id={{ d.id }}" data-height="80%" data-width="80%" class="layui-btn layui-btn-xs" title="回复">回复</a>
{{# }; }}
<!--{/if}-->
<!--{if auth("edit")}-->
<a data-modal="{:url('edit')}?id={{ d.id }}" data-height="80%" data-width="80%" class="layui-btn layui-btn-xs layui-btn-danger" title="修改工单">修改</a>
<!--{/if}-->
<!--{if auth("remove")}-->
<a data-confirm="原则上不允许主动删除用户工单,是否继续删除?" data-action="{:url('remove')}" data-value="id#{{ d.id }}" class="layui-btn layui-btn-xs layui-btn-danger" title="删除">删除</a>
<!--{/if}-->
</script>
{/block}
{block name='style'}
<style>
</style>
{/block}
{block name='script'}
<script>
$(function () {
$('#ticketTable').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:100},
{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:80, templet:function(item){
if(item.status == 0){
return '<span style="color:red;">正在处理</span>';
}else if(item.status == 1){
return '<span style="color:green;">已处理</span>';
}else{
return '<span style="color:gray;">已关闭</span>';
}
}},
{fixed: 'right', title:'操作', toolbar: '#toolbar', width:200}
]],
page: true
})
})
</script>
{/block}

View File

@ -0,0 +1,50 @@
<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">
<select class="layui-select" name="status">
<option value=''>-- 全部 --</option>
<option value='0'>正在处理</option>
<option value='1'>已处理</option>
<option value='-1'>已取消</option>
</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">
<input data-date-range name="last_activity_at" value="{:input('get.last_activity_at')}" placeholder="请选择最后操作时间" class="layui-input">
</div>
</div>
<div class="layui-form-item layui-inline">
<button class="layui-btn layui-btn-primary" lay-submit lay-filter="searchData"><i class="layui-icon">&#xe615;</i> 搜 索</button>
</div>
</form>
</fieldset>

View File

@ -0,0 +1,43 @@
<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="{:input('get.ticket_id')}" name='ticket_id'>
<input class="layui-input layui-hide" type='hidden' value='{:systoken("reply")}' 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">
<label class="layui-form-label">回复图片</label>
<div class="layui-input-block">
<input class="layui-hide" name='imgs'>
<div class="layui-word-aux">此图片对外可见,请认真回复。</div>
</div>
</div>
<hr>
<div class="layui-form-item">
<label class="layui-form-label">内部回复内容</label>
<div class="layui-input-block">
<textarea data-textarea class="layui-textarea" name='inner_content'></textarea>
<div class="layui-word-aux">此回复仅系统内部可见。</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">内部回复图片</label>
<div class="layui-input-block">
<input class="layui-hide" name='inner_imgs'>
<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>
$('[name="imgs"]').uploadMultipleImage()
$('[name="inner_imgs"]').uploadMultipleImage()
</script>
{include file="ticket/detail"}