You've already forked guangan
用户随手拍后台差详情
This commit is contained in:
@ -21,8 +21,9 @@ class Service extends Plugin
|
|||||||
[
|
[
|
||||||
'name' => '工单管理',
|
'name' => '工单管理',
|
||||||
'subs' => [
|
'subs' => [
|
||||||
['name' => '工单列表', 'icon' => 'layui-icon layui-icon-template-1', 'node' => "{$code}/ticket/index"],
|
|
||||||
['name' => '工单分类', 'icon' => 'layui-icon layui-icon-template-1', 'node' => "{$code}/type/index"],
|
['name' => '工单分类', 'icon' => 'layui-icon layui-icon-template-1', 'node' => "{$code}/type/index"],
|
||||||
|
['name' => '随手拍列表', 'icon' => 'layui-icon layui-icon-template-1', 'node' => "{$code}/user_share/index"],
|
||||||
|
['name' => '工单列表', 'icon' => 'layui-icon layui-icon-template-1', 'node' => "{$code}/ticket/index"],
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
];
|
];
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
namespace plugin\ticket\controller;
|
namespace plugin\ticket\controller;
|
||||||
|
|
||||||
|
use plugin\ticket\model\TicketType;
|
||||||
use plugin\ticket\model\TicketUserShare;
|
use plugin\ticket\model\TicketUserShare;
|
||||||
use think\admin\Controller;
|
use think\admin\Controller;
|
||||||
use think\admin\helper\QueryHelper;
|
use think\admin\helper\QueryHelper;
|
||||||
@ -14,11 +15,12 @@ class UserShare extends Controller
|
|||||||
public function index()
|
public function index()
|
||||||
{
|
{
|
||||||
$this->title = '用户随手拍';
|
$this->title = '用户随手拍';
|
||||||
|
$this->type_list = TicketType::getTypeList();
|
||||||
TicketUserShare::mQuery()->layTable(function () {
|
TicketUserShare::mQuery()->layTable(function () {
|
||||||
|
|
||||||
}, function (QueryHelper $query) {
|
}, function (QueryHelper $query) {
|
||||||
$query->like(['title|content|contact_name|ticket_address|contact_phone#keyword'])
|
$query->like(['title|content|ticket_address|contact_phone#keyword'])
|
||||||
->dateBetween(['create_at', 'last_activity_at'])
|
->dateBetween(['create_at'])
|
||||||
->equal(['status', 'type_id']);
|
->equal(['status', 'type_id']);
|
||||||
$query->with(['user'])->append(['imgs_arr', 'status_text', 'type_name', 'last_reply']);
|
$query->with(['user'])->append(['imgs_arr', 'status_text', 'type_name', 'last_reply']);
|
||||||
});
|
});
|
||||||
|
@ -40,6 +40,7 @@ class UserShare extends Auth
|
|||||||
'ticket_address.require' => '地址不能为空',
|
'ticket_address.require' => '地址不能为空',
|
||||||
'contact_name.default' => $this->account->user() ? $this->account->user()['nickname'] : '用户',
|
'contact_name.default' => $this->account->user() ? $this->account->user()['nickname'] : '用户',
|
||||||
]);
|
]);
|
||||||
|
$data['imgs'] = arr2str($data['imgs'], '|');
|
||||||
$data['user_id'] = $this->usid;
|
$data['user_id'] = $this->usid;
|
||||||
$id = TicketUserShare::query()->insert($data, true);
|
$id = TicketUserShare::query()->insert($data, true);
|
||||||
$this->success('添加随手拍成功', $id);
|
$this->success('添加随手拍成功', $id);
|
||||||
|
@ -6,5 +6,8 @@ use think\admin\Model;
|
|||||||
|
|
||||||
class TicketUserShare extends Model
|
class TicketUserShare extends Model
|
||||||
{
|
{
|
||||||
|
public function getImgsArrAttr($value, $data)
|
||||||
|
{
|
||||||
|
return str2arr($data['imgs'] ?: '', '|');
|
||||||
|
}
|
||||||
}
|
}
|
61
plugs/think-plugs-ticket/src/view/user_share/index.html
Normal file
61
plugs/think-plugs-ticket/src/view/user_share/index.html
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
{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='ticket/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: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 '';
|
||||||
|
}
|
||||||
|
}},
|
||||||
|
{fixed: 'right', title:'操作', toolbar: '#toolbar', width:200}
|
||||||
|
]],
|
||||||
|
page: true
|
||||||
|
})
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
{/block}
|
@ -0,0 +1,33 @@
|
|||||||
|
<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">
|
||||||
|
<button class="layui-btn layui-btn-primary" lay-submit lay-filter="searchData"><i class="layui-icon"></i> 搜 索</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
</fieldset>
|
Reference in New Issue
Block a user