1141 lines
49 KiB
PHP
1141 lines
49 KiB
PHP
<?php
|
||
|
||
defined('IN_MET') or exit('No permission');
|
||
|
||
load::own_class('../traits/tfield');
|
||
|
||
class table_theme
|
||
{
|
||
|
||
//表字库
|
||
private $tname;
|
||
//表字段数组
|
||
private $table_fiend = [];
|
||
//表格头部信息HTML
|
||
private $th_head = [];
|
||
//按钮组HTML
|
||
private $btn = [];
|
||
//info_on 快速URL
|
||
private $own_name_info;
|
||
//头部搜索HTML
|
||
private $search;
|
||
|
||
|
||
//是否开启搜索
|
||
private $search_bool = true;
|
||
//开启底部按钮
|
||
private $btn_bool = true;
|
||
//返回值
|
||
private $goret;
|
||
|
||
//全选按钮框
|
||
private $checkall = true;
|
||
//尾部的操作
|
||
private $lastbtn = true;
|
||
|
||
// select2筛选
|
||
private $select2 = [];
|
||
//多行头部
|
||
private $rowsth = [];
|
||
|
||
// 初始化
|
||
public function __construct()
|
||
{
|
||
global $_M, $_YW;
|
||
//这个地址是后台的,也要换成前台的
|
||
//因前台暂时没有涉及到,暂时不考虑
|
||
$this->own_name_info = $_M['url']['own_name'] . 'c=info_on&a=do';
|
||
|
||
//这个前台已经涉及到,需要现在更换
|
||
$this->select2 = [
|
||
'url' => class_exists('admin') || class_exists('app')
|
||
? $_M['url']['own_name'] . 'c=select&a=doselect'
|
||
: $_M['url']['site'] . 'app/index.php?n=dzadsod&c=select&a=doselect',
|
||
'_fiend' => [],
|
||
'placeholder' => '',
|
||
'fiend' => '',
|
||
'tname' => '',
|
||
'source' => 'search',
|
||
'allnone' => 1,
|
||
'condition' => ''
|
||
];
|
||
}
|
||
|
||
use tfield;
|
||
|
||
//配置参数
|
||
public function start($tname, $search = true, $btn = true)
|
||
{
|
||
global $_M, $_YW;
|
||
$this->tname = $tname;
|
||
$this->search_bool = $search;
|
||
$this->btn_bool = $btn;
|
||
//赋值结束后执行对应方法
|
||
self::{$this->tname}();
|
||
self::colspan();
|
||
return $this;
|
||
}
|
||
|
||
//头部搜索
|
||
public function search()
|
||
{
|
||
global $_M, $_YW;
|
||
//特殊情况下的左边
|
||
if (count($this->search['left']) > 0) {
|
||
$left = arrayto_string($this->search['left'], '');
|
||
$left = '<div class="form-inline pull-xs-left">' . $left . '</div>';
|
||
unset($this->search['left']);
|
||
}
|
||
//默认都是在右边
|
||
$right = arrayto_string(array_reverse($this->search), '');
|
||
$right = '<div class="form-inline pull-xs-right">' . $right . '</div>';
|
||
$this->goret['search'] = $left . $right;
|
||
return $this;
|
||
}
|
||
|
||
//只做两行 TH 处理
|
||
private function row_datas($rowdatas, $keys)
|
||
{
|
||
global $_M, $_YW;
|
||
foreach ($rowdatas as $key => $val) {
|
||
if (is_array($val)) {
|
||
$datas[ $key ] = self::row_datas($val, $keys);
|
||
} else {
|
||
$datas[ $val ] = $this->th_head[ $val ];
|
||
if (!in_array($val, $keys, true)) unset($this->th_head[ $val ]);
|
||
}
|
||
}
|
||
return $datas;
|
||
}
|
||
|
||
|
||
//表格头部
|
||
public function thead()
|
||
{
|
||
global $_M, $_YW;
|
||
$keys = [];
|
||
if (count($this->rowsth) > 0) {
|
||
extract($this->rowsth);
|
||
//获取默认数组维度也就是默认行数
|
||
$rowspan = " rowspan='{$rowlevel}' ";
|
||
$keys = array_keys($rowdatas);
|
||
//进行值的替换,转换
|
||
foreach ($rowdatas as $key => $val) {
|
||
list($thtitle, $keydata) = $val;
|
||
$datas[ $key ] = self::row_datas($keydata, $keys);
|
||
$this->th_head[ $key ] = $thtitle;
|
||
}
|
||
}
|
||
|
||
if ($this->checkall) $this->goret['thead'] = '<th width="50" data-table-columnclass="text-xs-center" ' . $rowspan . '>
|
||
<span class="checkbox-custom checkbox-primary ap-all">
|
||
<input class="selectable-all" type="checkbox">
|
||
<label></label>
|
||
</span>
|
||
</th>';
|
||
|
||
foreach ($this->th_head as $key => $val) {
|
||
$rowspanb = $rowspan;
|
||
$colspanb = '';
|
||
if (in_array($key, $keys)) {
|
||
$rowspanb = " rowspan='1' ";
|
||
//要做循环,二层tr内th
|
||
$keydata = $datas[ $key ];
|
||
foreach ($keydata as $value) {
|
||
$thead .= '<th data-table-columnclass="text-xs-center" ' . $rowspanb . '>' . $value . '</th>';
|
||
}
|
||
//计算一层的宽度
|
||
$colslevel = count($keydata);
|
||
$colspanb = " colspan='{$colslevel}' ";
|
||
}
|
||
$class = $colspanb ? ' class="sorting_disabled text-xs-center" ' : ' data-table-columnclass="text-xs-center" ';
|
||
//正常的th
|
||
$this->goret['thead'] .= '<th ' . $class . $rowspanb . $colspanb . '>' . $val . '</th>';
|
||
}
|
||
if ($this->lastbtn) $this->goret['thead'] .= '<th data-table-columnclass="text-xs-center" ' . $class . $rowspan . '>操作</th>';
|
||
$this->goret['thead'] = '<tr>' . $this->goret['thead'] . '</tr>';
|
||
if ($thead) $this->goret['thead'] .= '<tr>' . $thead . '</tr>';
|
||
return $this;
|
||
}
|
||
|
||
//表格底部按钮
|
||
// @$dvalue int 两个按钮组 的差值
|
||
public function tfoot($dvalue = 2)
|
||
{
|
||
global $_M, $_YW;
|
||
if ($this->btn_bool == false) return $this;
|
||
if ($this->checkall) $this->goret['tfoot'] = '<th>
|
||
<span class="checkbox-custom checkbox-primary ap-all">
|
||
<input class="selectable-all" type="checkbox">
|
||
<label></label>
|
||
</span>
|
||
</th>';
|
||
//计算数组的维数
|
||
if (array_level($this->btn) == 1) {
|
||
$btn = arrayto_string($this->btn, '');
|
||
$this->goret['tfoot'] .= '<th colspan="' . $this->goret['thcol'] . '" data-no_column_defs><div class="btn-group" role="group" >' . $btn . '</div></th>';
|
||
} else {
|
||
list($front, $after) = $this->btn;
|
||
$thcol = floor($this->goret['thcol'] / 2) - $dvalue;
|
||
$btn = arrayto_string($front, '');
|
||
$this->goret['tfoot'] .= '<th colspan="' . $thcol . '" data-no_column_defs><div class="btn-group" role="group" >' . $btn . '</div></th>';
|
||
$thcol = $this->goret['thcol'] - $thcol;
|
||
$btn = arrayto_string($after, '');
|
||
$this->goret['tfoot'] .= '<th colspan="' . $thcol . '" data-no_column_defs><div class="btn-group" role="group" >' . $btn . '</div></th>';
|
||
}
|
||
$this->goret['tfoot'] = '<tr>' . $this->goret['tfoot'] . '</tr>';
|
||
return $this;
|
||
}
|
||
|
||
//输出全部,需要先通过start()配置参数
|
||
public function send_all($dvalue = 2)
|
||
{
|
||
global $_M, $_YW;
|
||
return $this->thead()
|
||
->tfoot($dvalue)
|
||
->search()
|
||
->send();
|
||
}
|
||
|
||
//输出
|
||
public function send()
|
||
{
|
||
global $_M, $_YW;
|
||
return $this->goret;
|
||
}
|
||
|
||
//表格头部的数组信息
|
||
public function thead_arr()
|
||
{
|
||
global $_M, $_YW;
|
||
return $this->table_fiend;
|
||
}
|
||
|
||
// +----------------------------------------------------------------------
|
||
// | 内部方法
|
||
// +----------------------------------------------------------------------
|
||
//计算表格col
|
||
protected function colspan()
|
||
{
|
||
$tdcol = $this->checkall && $this->lastbtn ? 2 : ($this->checkall || $this->lastbtn ? 1 : 0);
|
||
$thcol = $this->lastbtn ? 1 : 0;
|
||
$this->goret['tdcol'] = count($this->table_fiend) + $tdcol;
|
||
$this->goret['thcol'] = count($this->table_fiend) + $thcol;
|
||
}
|
||
|
||
//删除
|
||
protected function btn_del($title = '确定要删除选中的信息吗?一旦删除将不能恢复!')
|
||
{
|
||
global $_M, $_YW;
|
||
return '<button type="submit"
|
||
class="btn btn-danger btn-sm"
|
||
table-delet
|
||
data-plugin="alertify"
|
||
data-type="confirm"
|
||
data-label-ok="确定"
|
||
data-label-cancel="取消"
|
||
data-confirm-title="' . $title . '">删除</button>';
|
||
}
|
||
|
||
//删除
|
||
protected function btn_zdy($str, $color = 0, $type = 'test', $confirm = false, $title = '确定要删除选中的信息吗?一旦删除将不能恢复!')
|
||
{
|
||
global $_M, $_YW;
|
||
$btncolor = ['btn-default', 'btn-primary', 'btn-success', 'btn-info', 'btn-warning', 'btn-danger'];
|
||
$alertify = $confirm ? ' data-plugin="alertify" data-type="confirm" data-label-ok="确定" data-label-cancel="取消" data-confirm-title="' . $title . '" ' : '';
|
||
return '<button type="submit" class="btn ' . $btncolor[ $color ] . ' btn-sm " data-submit_type="' . $type . '" table-zdybtn ' . $alertify . '>' . $str . '</button>';
|
||
// type="submit" 时jq的submit()才正常提交
|
||
}
|
||
|
||
//保存
|
||
protected function btn_save()
|
||
{
|
||
return '<button type="submit" class="btn btn-primary btn-sm">保存</button>';
|
||
}
|
||
|
||
//添加
|
||
protected function btn_add($title = '添加', $nocancel = false)
|
||
{
|
||
global $_M, $_YW;
|
||
$datanocancel = $nocancel ? '' : 'data-nocancel';
|
||
return '<button type="button" class="btn btn-success btn-sm" table-addlist data-url="' . $_YW['url']['addlist'] . '" ' . $datanocancel . '>' . $title . '</button>';
|
||
}
|
||
|
||
//单页按钮
|
||
protected function btn_link($url, $name, $class)
|
||
{
|
||
global $_M, $_YW;
|
||
return '<a class="btn btn-success btn-sm ' . $class . '" href="' . $url . '" >' . $name . '</a>';
|
||
}
|
||
|
||
//输入框搜索
|
||
protected function input_search($_fiend, $tips)
|
||
{
|
||
global $_M, $_YW;
|
||
list($name, $title, $value) = self::fiend_data($_fiend);
|
||
return '<div class="form-group m-t-5">
|
||
<div class="input-group">
|
||
<div class="input-group-addon">' . $title . '</div>
|
||
<input class="form-control" type="text" name="' . $name . '" value="' . $value . '" placeholder="' . $tips . '" data-table-search>
|
||
</div>
|
||
</div>';
|
||
}
|
||
|
||
// 输入框搜索
|
||
protected function input_select_search()
|
||
{
|
||
global $_M, $_YW;
|
||
$url = $this->select2['url'] ?: $_YW['url']['select'];
|
||
list($name, $title, $value) = self::fiend_data($this->select2['_fiend']);
|
||
return '<div class="form-group m-t-5">
|
||
<div class="input-group">
|
||
<div class="input-group-addon">' . $title . '</div>
|
||
<select name="' . $name . '" style="max-width:260px;" data-table-search class="form-control" data-plugin="select2"
|
||
data-select2-url="' . $url . '"
|
||
data-tname="' . $this->select2['tname'] . '"
|
||
data-fiend="' . $this->select2['fiend'] . '"
|
||
data-allnone="' . $this->select2['allnone'] . '"
|
||
data-source="' . $this->select2['source'] . '"
|
||
data-default="' . $value . '"
|
||
data-placeholder="' . $this->select2['placeholder'] . '">
|
||
<option value=""></option>
|
||
</select>
|
||
</div>
|
||
</div>';
|
||
}
|
||
|
||
// 输入框搜索
|
||
protected function input_select_search_multiple()
|
||
{
|
||
global $_M, $_YW;
|
||
$url = $this->select2['url'] ?: $_YW['url']['select'];
|
||
list($name, $title, $value) = self::fiend_data($this->select2['_fiend']);
|
||
$condition = $this->select2['condition'] ?: 'p_type|||0';
|
||
return '<div class="form-group m-t-5">
|
||
<div class="input-group">
|
||
<div class="input-group-addon">' . $title . '</div>
|
||
<select name="' . $name . '" multiple style="max-width:260px;" data-table-search class="form-control" data-plugin="select2"
|
||
data-select2-url="' . $url . '"
|
||
data-tname="' . $this->select2['tname'] . '"
|
||
data-fiend="' . $this->select2['fiend'] . '"
|
||
data-allnone="' . $this->select2['allnone'] . '"
|
||
data-source="' . $this->select2['source'] . '"
|
||
data-default="' . $value . '"
|
||
data-division=","
|
||
data-condition="' . $condition . '"
|
||
data-placeholder="' . $this->select2['placeholder'] . '">
|
||
<option value=""></option>
|
||
</select>
|
||
</div>
|
||
</div>';
|
||
}
|
||
|
||
//参数下拉列表
|
||
public function para_select($para, $_fiend, $exists = false, $option = true)
|
||
{
|
||
global $_M, $_YW;
|
||
list($name, $title, $value) = self::fiend_data($_fiend);
|
||
if ($option) $option = '<option value="">全部</option>';
|
||
foreach ($para as $key => $val) {
|
||
if ($exists) {
|
||
list($p_name, $p_value) = $val;
|
||
} else {
|
||
extract($val);
|
||
}
|
||
$option .= '<option value="' . $p_value . '">' . $p_name . '</option>';
|
||
}
|
||
return '<div class="form-group m-t-5">
|
||
<div class="input-group">
|
||
<div class="input-group-addon">' . $title . '</div>
|
||
<select name="' . $name . '" class="form-control" data-table-search data-checked="' . $value . '">
|
||
' . $option . '
|
||
</select>
|
||
</div>
|
||
</div>';
|
||
}
|
||
|
||
//输入框搜索
|
||
protected function date_timepicker_search($start, $end = '')
|
||
{
|
||
global $_M, $_YW;
|
||
list($sname, $stitle, $svalue) = self::fiend_data($start);
|
||
list($ename, $etitle, $evalue) = self::fiend_data($end);
|
||
if ($end) {
|
||
$endinput = '
|
||
<span class="input-group-addon">' . $etitle . '</span>
|
||
<input type="text" name="' . $ename . '" value="' . $evalue . '"
|
||
class="form-control" id="date_timepicker_end" data-day-type="1" data-table-search data-plugin="datetosearch">
|
||
';
|
||
}
|
||
return '<div class="form-group m-t-5">
|
||
<div class="input-group">
|
||
<span class="input-group-addon">' . $stitle . '</span>
|
||
<input type="text" name="' . $sname . '" value="' . $svalue . '"
|
||
class="form-control" id="date_timepicker_start" data-day-type="1" data-table-search data-plugin="datetosearch">
|
||
' . $endinput . '
|
||
</div>
|
||
</div>';
|
||
}
|
||
|
||
//输入框搜索
|
||
protected function date_time_search($start)
|
||
{
|
||
global $_M, $_YW;
|
||
list($sname, $stitle, $svalue) = self::fiend_data($start);
|
||
return '<div class="form-group m-t-5">
|
||
<div class="input-group">
|
||
<span class="input-group-addon">' . $stitle . '</span>
|
||
<input type="text" name="' . $sname . '" value="' . $svalue . '"
|
||
class="form-control" data-day-type="1" data-table-search data-plugin="alonetime">
|
||
' . $endinput . '
|
||
</div>
|
||
</div>';
|
||
}
|
||
|
||
/*
|
||
* 获取字段信息
|
||
* @$fiend array 字段数组,包含字段名和字段标题
|
||
* @$title string 替换字段数组得到字段标题
|
||
*/
|
||
|
||
protected function fiend_data($_fiend)
|
||
{
|
||
global $_M, $_YW;
|
||
list($name, $title, $value) = is_array($_fiend) ? $_fiend : [$_fiend];
|
||
$title = strlen($title) > 0 ? $title : $this->table_fiend[ $name ];
|
||
return [$name, $title, $value];
|
||
}
|
||
|
||
//标题替换为排序功能
|
||
// $key 为name值 table_fiend 对应的字段名
|
||
// $name 自定义的input字段名
|
||
protected function th_replace_order($key, $name = '', $str = '')
|
||
{
|
||
global $_M, $_YW;
|
||
$str = $str === '' ? $this->table_fiend[ $key ] : $str;
|
||
$name = $name === '' ? 'order_' . $key : $name;
|
||
return '<a href="javascript:;" class="orderby-link">' . $str . '</a><input name="' . $name . '" data-table-search="1" type="hidden">';
|
||
}
|
||
|
||
//给标题增加提示
|
||
// $tooltip 的参数全部通过这个数组配置
|
||
// $position 决定内容在字符的前后显示
|
||
protected function th_tooltip($tooltip = [], $str = '', $position = true)
|
||
{
|
||
global $_M, $_YW;
|
||
if (!is_array($tooltip)) $tooltip = [$tooltip];
|
||
list($title, $placement, $trigger, $key) = $tooltip;
|
||
$placement = $placement ?: 'bottom';
|
||
$trigger = $trigger ?: 'hover';
|
||
$str = $str === '' ? $this->table_fiend[ $key ] : $str;
|
||
$toolstr = '<i class="icon fa-question-circle m-x-5" aria-hidden="true"
|
||
data-toggle="tooltip"
|
||
data-placement="' . $placement . '"
|
||
data-trigger="' . $trigger . '"
|
||
data-original-title="' . $title . '" ></i>';
|
||
return $position ? $str . $toolstr : $toolstr . $str;
|
||
}
|
||
|
||
// 地图选择
|
||
protected function th_toolmap($title)
|
||
{
|
||
global $_M, $_YW;
|
||
return '<div class="form-group m-t-5">
|
||
<div class="input-group">
|
||
<button type="button" class="btn btn-info btn-sm" data-target="#selectMapId" data-toggle="modal">' . $title . '<span class="tag tag-danger listNum m-l-5"></span></button>
|
||
<input type="hidden" name="v_id" value="" data-table-search>
|
||
</div>
|
||
</div>
|
||
<!-- Modal 百度地图JS V3-->
|
||
<script type="text/javascript" src="https://api.map.baidu.com/api?type=webgl&v=1.0&ak=' . $_YW['c']['mapkey'] . '"></script>
|
||
<!--加载鼠标绘制工具-->
|
||
<link href="https://mapopen.cdn.bcebos.com/github/BMapGLLib/DrawingManager/src/DrawingManager.min.css" rel="stylesheet">
|
||
<script type="text/javascript" src="https://mapopen.cdn.bcebos.com/github/BMapGLLib/DrawingManager/src/DrawingManager.min.js"></script>
|
||
|
||
<div class="modal fade modal-fill-in" id="selectMapId" aria-hidden="false" data-keyboard="false" data-backdrop="false" role="dialog" tabindex="-1">
|
||
<div class="modal-dialog modal-center bg-white">
|
||
<div class="modal-content w-full h-full">
|
||
<div class="modal-header">
|
||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||
<span aria-hidden="true">×</span>
|
||
</button>
|
||
<h4 class="modal-title">选择小区</h4>
|
||
</div>
|
||
<div class="modal-body p-t-0 p-l-15">
|
||
<div class="row">
|
||
<div class="col-md-10">
|
||
<div id="selectMap" class="selectMapHeight"></div>
|
||
<div id="selectbox_Drawing" class="selectbox_Drawing"></div>
|
||
</div>
|
||
<div class="col-md-2 bg-grey-100 selectMapHeight panel panel-info p-y-0 p-x-5">
|
||
<div class="panel-heading">
|
||
<h3 class="panel-title p-y-15">选中小区列表</h3>
|
||
<div class="panel-actions panel-actions-keep">
|
||
<span class="tag tag-danger listNum">0</span>
|
||
</div>
|
||
</div>
|
||
<div class="panel-body villageList p-y-5 p-x-0">
|
||
<!-- 搜索框
|
||
<div class="input-search input-search-dark">
|
||
<i class="input-search-icon wb-search" aria-hidden="true"></i>
|
||
<input type="text" class="form-control w-full" id="inputSearch" name="search" placeholder="输入名称">
|
||
</div>
|
||
-->
|
||
<ul class="list-group list-group-bordered">
|
||
<li class="list-group-item">没有选中小区</li>
|
||
</ul>
|
||
</div>
|
||
<div class="panel-footer text-md-right p-x-5 p-y-10 ">
|
||
<button type="button" class="btn btn-sm btn-danger mapreset">清空</button>
|
||
<button type="button" class="btn btn-sm btn-default" data-dismiss="modal">取消</button>
|
||
<button type="button" class="btn btn-sm btn-primary button-save">确定</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="modal fade" id="filterListmodal" aria-hidden="false" data-keyboard="false" data-backdrop="false" role="dialog" tabindex="-1">
|
||
<div class="modal-dialog modal-primary modal-center bg-white">
|
||
<div class="modal-content w-full h-full">
|
||
<div class="modal-header">
|
||
<h4 class="modal-title">
|
||
筛选小区
|
||
<small>本次选中<span class="tag tag-danger listNum">0</span>个小区</small>
|
||
</h4>
|
||
|
||
</div>
|
||
<div class="modal-body panel filterList p-0">
|
||
<ul class="list-group list-group-bordered">
|
||
<li class="list-group-item">没有选中小区</li>
|
||
</ul>
|
||
</div>
|
||
<div class="modal-footer">
|
||
<button type="button" class="btn btn-danger btn-outline mapreset">重选 / 放弃</button>
|
||
<button type="button" class="btn btn-primary btn-outline button-save">确定</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<!-- End Modal -->';
|
||
}
|
||
|
||
// +----------------------------------------------------------------------
|
||
// | 各表处理
|
||
// +----------------------------------------------------------------------
|
||
//广告位列表
|
||
protected function elevator()
|
||
{
|
||
global $_M, $_YW;
|
||
$this->table_fiend = self::tf_elevator();
|
||
//头部 TH内容替换
|
||
$this->th_head = is_array($rselect) ? array_merge($this->table_fiend, $rselect) : $this->table_fiend;
|
||
|
||
//搜索
|
||
if ($this->search_bool) {
|
||
$tsql = load::own_class('tsql', 'new');
|
||
$this->search[] = self::input_search('e_text', '输入搜索内容');
|
||
$this->search[] = self::input_search('e_label', '输入检索标签');
|
||
$this->search[] = self::input_search('e_number', '输入广告位编号');
|
||
//位置
|
||
$para = $tsql->table('para')->where(['p_type' => 0])->all();
|
||
$this->search[] = self::para_select($para, ['e_aps', '位置']);
|
||
//门口方位
|
||
$para = $tsql->table('para')->where(['p_type' => 3])->all();
|
||
$this->search[] = self::para_select($para, ['e_bno', '门口方位']);
|
||
$this->select2 = [
|
||
'_fiend' => ['e_vid', '选择场所', $_M['form']['e_vid']],
|
||
'placeholder' => '输入场所名称',
|
||
'fiend' => 'id',
|
||
'tname' => 'village',
|
||
'source' => 'search',
|
||
'allnone' => 2
|
||
];
|
||
$this->search[] = self::input_select_search();
|
||
//状态
|
||
$this->search[] = self::para_select([['禁用', 0], ['启用', 1]], ['e_enable', '状态'], true);
|
||
}
|
||
|
||
//底部按钮
|
||
if ($this->btn_bool) {
|
||
$this->btn[] = [
|
||
self::btn_del(),
|
||
self::btn_zdy('启用', 2, 'enable_on'),
|
||
self::btn_zdy('禁用', 4, 'enable_off', true, '确定要选中的广告位吗?一旦将无法进行排期投放!'),
|
||
];
|
||
$addtourl = $this->own_name_info . __FUNCTION__;
|
||
$this->btn[] = [
|
||
'<a class="btn btn-success btn-sm" href="' . $addtourl . '" >新增广告位</a>'
|
||
];
|
||
}
|
||
}
|
||
|
||
// 场所统计表
|
||
protected function village()
|
||
{
|
||
global $_M, $_YW;
|
||
$this->table_fiend = self::tf_village();
|
||
$rselect = [
|
||
'v_totalstr' => self::th_tooltip(['广告位总数 / 禁用 / 正常', 'top', '', 'v_totalstr'])
|
||
];
|
||
$this->th_head = is_array($rselect) ? array_merge($this->table_fiend, $rselect) : $this->table_fiend;
|
||
|
||
//搜索
|
||
if ($this->search_bool) {
|
||
$this->search[] = self::input_search('v_text', '输入搜索内容');
|
||
$this->search[] = self::input_search('v_address', '输入地址');
|
||
$this->search[] = self::input_search('v_name', '输入场所名称');
|
||
}
|
||
|
||
//底部按钮
|
||
if ($this->btn_bool) {
|
||
$this->btn[] = [
|
||
self::btn_del(),
|
||
self::btn_zdy('启用', 2, 'enableon'),
|
||
self::btn_zdy('禁用', 4, 'enableoff', true, '确定要禁用场所的广告位吗?一旦将无法进行排期投放!'),
|
||
];
|
||
$addtourl = $this->own_name_info . __FUNCTION__;
|
||
$this->btn[] = [
|
||
'<a class="btn btn-success btn-sm" href="' . $addtourl . '" >新增场所</a>'
|
||
];
|
||
}
|
||
}
|
||
|
||
// 广告合同关联表
|
||
protected function schedule()
|
||
{
|
||
global $_M, $_YW;
|
||
//不需要最后一栏
|
||
$this->checkall = false;
|
||
$this->lastbtn = false;
|
||
$this->table_fiend = self::tf_schedule();
|
||
//替换表格头部
|
||
$rselect = [
|
||
'l_starttime' => self::th_replace_order('l_starttime'),
|
||
'l_endtime' => self::th_replace_order('l_endtime'),
|
||
];
|
||
$this->th_head = is_array($rselect) ? array_merge($this->table_fiend, $rselect) : $this->table_fiend;
|
||
|
||
//搜索
|
||
if ($this->search_bool) {
|
||
$this->search[] = self::input_search('l_hnumber', '输入合同编号');
|
||
$this->search[] = self::input_search(['e_number', '', $_M['form']['e_number']], '输入广告位编号');
|
||
$this->search[] = self::date_timepicker_search(['l_starttime', '时间区段'], ['l_endtime', 'To']);
|
||
$this->select2 = [
|
||
'_fiend' => ['id', '选择投放计划', $_M['form']['l_id']],
|
||
'placeholder' => '输入投放计划名称',
|
||
'fiend' => 'id',
|
||
'tname' => 'launch',
|
||
'source' => 'search',
|
||
'allnone' => 2
|
||
];
|
||
$this->search[] = self::input_select_search();
|
||
$this->select2 = [
|
||
'_fiend' => ['e_vid', '选择场所', $_M['form']['e_vid']],
|
||
'placeholder' => '输入场所名称',
|
||
'fiend' => 'id',
|
||
'tname' => 'village',
|
||
'source' => 'search',
|
||
'allnone' => 2
|
||
];
|
||
$this->search[] = self::input_select_search();
|
||
}
|
||
|
||
//底部按钮
|
||
if ($this->btn_bool) {
|
||
$this->btn[] = '<button type="button" class="btn btn-warning btn-sm backups" data-url="' . $_YW['url']['backup'] . '">导出Excel</button>';
|
||
}
|
||
}
|
||
|
||
// 合同归档
|
||
protected function contract()
|
||
{
|
||
global $_M, $_YW;
|
||
$this->table_fiend = self::tf_contract();
|
||
//替换表格头部
|
||
$rselect = [
|
||
'h_starttime' => self::th_replace_order('h_starttime'),
|
||
'h_endtime' => self::th_replace_order('h_endtime'),
|
||
];
|
||
$this->th_head = is_array($rselect) ? array_merge($this->table_fiend, $rselect) : $this->table_fiend;
|
||
|
||
//搜索
|
||
if ($this->search_bool) {
|
||
$this->search[] = self::input_search('h_text', '输入搜索内容');
|
||
$this->select2 = [
|
||
'_fiend' => ['h_wid', '签定人员', $_M['form']['h_wid']],
|
||
'placeholder' => '输入姓名/电话',
|
||
'fiend' => 'id',
|
||
'tname' => 'workers',
|
||
'source' => 'search',
|
||
'allnone' => 2
|
||
];
|
||
$this->search[] = self::input_select_search();
|
||
$this->select2 = [
|
||
'_fiend' => ['h_cid', '选择企业', $_M['form']['h_cid']],
|
||
'placeholder' => '输入企业名称',
|
||
'fiend' => 'id',
|
||
'tname' => 'customer',
|
||
'source' => 'search',
|
||
'allnone' => 2
|
||
];
|
||
$this->search[] = self::input_select_search();
|
||
$this->search[] = self::input_search(['h_number', '', $_M['form']['h_number']], '输入合同编号');
|
||
$this->search[] = self::date_timepicker_search(['h_starttime', '时间区段'], ['h_endtime', 'To']);
|
||
}
|
||
|
||
//底部按钮
|
||
if ($this->btn_bool) {
|
||
$this->btn[] = [
|
||
self::btn_del()
|
||
];
|
||
$addtourl = $this->own_name_info . __FUNCTION__;
|
||
$this->btn[] = [
|
||
'<a class="btn btn-success btn-sm" href="' . $addtourl . '" >录入订单合同</a>'
|
||
];
|
||
}
|
||
}
|
||
|
||
// 公司资料
|
||
protected function customer()
|
||
{
|
||
global $_M, $_YW;
|
||
$this->table_fiend = self::tf_customer();
|
||
|
||
$this->th_head = is_array($rselect) ? array_merge($this->table_fiend, $rselect) : $this->table_fiend;
|
||
|
||
//搜索
|
||
if ($this->search_bool) {
|
||
$this->search[] = self::input_search('c_text', '输入搜索内容');
|
||
$this->search[] = self::input_search('c_address', '输入地址');
|
||
$this->search[] = self::input_search('c_allname', '输入企业名称');
|
||
}
|
||
|
||
//底部按钮
|
||
if ($this->btn_bool) {
|
||
$this->btn[] = [
|
||
self::btn_del()
|
||
];
|
||
$addtourl = $this->own_name_info . __FUNCTION__;
|
||
$this->btn[] = [
|
||
'<a class="btn btn-success btn-sm" href="' . $addtourl . '" >新增企业</a>'
|
||
];
|
||
}
|
||
}
|
||
|
||
// 企业联系人
|
||
protected function workers()
|
||
{
|
||
global $_M, $_YW;
|
||
$this->table_fiend = self::tf_workers();
|
||
|
||
$this->th_head = is_array($rselect) ? array_merge($this->table_fiend, $rselect) : $this->table_fiend;
|
||
|
||
//搜索
|
||
if ($this->search_bool) {
|
||
$this->search[] = self::input_search('w_text', '输入搜索内容');
|
||
$this->search[] = self::input_search('w_tel', '输入电话');
|
||
$this->search[] = self::input_search('w_name', '输入姓名');
|
||
}
|
||
|
||
//底部按钮
|
||
if ($this->btn_bool) {
|
||
$this->btn[] = [
|
||
self::btn_del()
|
||
];
|
||
$addtourl = $this->own_name_info . __FUNCTION__;
|
||
$this->btn[] = [
|
||
'<a class="btn btn-success btn-sm" href="' . $addtourl . '" >新增联系人</a>'
|
||
];
|
||
}
|
||
}
|
||
|
||
// 参数统计
|
||
protected function para()
|
||
{
|
||
global $_M, $_YW;
|
||
$this->table_fiend = self::tf_para();
|
||
//头部 TH内容替换
|
||
$rselect = [
|
||
'p_type' => self::th_replace_order('p_type'),
|
||
'p_order' => self::th_replace_order('p_order'),
|
||
];
|
||
$this->th_head = is_array($rselect) ? array_merge($this->table_fiend, $rselect) : $this->table_fiend;
|
||
|
||
//搜索
|
||
if ($this->search_bool) {
|
||
$para = [
|
||
['广告位置', 0],
|
||
['企业职位', 1],
|
||
['投放进度', 2],
|
||
['门口方位', 3],
|
||
['投放媒介', 4],
|
||
['场所分类', 6],
|
||
['广告类型', 7]
|
||
];
|
||
$this->search['left'][] = self::para_select($para, ['p_type', '参数分类', $_M['form']['p_type']], true);
|
||
}
|
||
|
||
//底部按钮
|
||
if ($this->btn_bool) {
|
||
$this->btn[] = [
|
||
self::btn_save(),
|
||
self::btn_del()
|
||
];
|
||
$_YW['url']['addlist'] .= '&p_type=' . $_M['form']['p_type'];
|
||
$this->btn[] = [
|
||
self::btn_add('新增参数')
|
||
];
|
||
}
|
||
}
|
||
|
||
// 投放计划
|
||
protected function launch()
|
||
{
|
||
global $_M, $_YW;
|
||
$this->table_fiend = self::tf_launch();
|
||
|
||
$rselect = [
|
||
'l_starttime' => self::th_replace_order('l_starttime'),
|
||
'l_endtime' => self::th_replace_order('l_endtime'),
|
||
'l_totalnum' => self::th_tooltip(['排期成功个数 / 选择的个数', 'top', '', 'l_totalnum'])
|
||
];
|
||
$this->th_head = is_array($rselect) ? array_merge($this->table_fiend, $rselect) : $this->table_fiend;
|
||
|
||
//搜索
|
||
if ($this->search_bool) {
|
||
$this->search[] = self::input_search(['l_text'], '输入搜索内容');
|
||
$this->search[] = self::input_search(['l_enumber', '广告位编号'], '输入广告位编号');
|
||
$this->search[] = self::input_search(['l_hnumber', '', $_M['form']['l_hnumber']], '输入完整合同编号');
|
||
$this->search[] = self::input_search(['l_title'], '输入广告标题');
|
||
$this->search[] = self::date_timepicker_search(['l_starttime', '时间区段'], ['l_endtime', 'To']);
|
||
}
|
||
|
||
//底部按钮
|
||
if ($this->btn_bool) {
|
||
$this->btn[] = self::btn_del();
|
||
}
|
||
}
|
||
|
||
// 广告位排期选择列表
|
||
protected function applan()
|
||
{
|
||
global $_M, $_YW;
|
||
//不需要最后一栏
|
||
$this->lastbtn = false;
|
||
$this->table_fiend = self::tf_applan();
|
||
$rselect = [
|
||
'e_types' => self::th_replace_order('e_types'),
|
||
];
|
||
$this->th_head = is_array($rselect) ? array_merge($this->table_fiend, $rselect) : $this->table_fiend;
|
||
|
||
//搜索
|
||
if ($this->search_bool) {
|
||
$this->search['left'][] = self::th_toolmap('地图筛选');
|
||
$para = [['正常-按照广告位置排序', 0], ['推荐-将适合投放的提前排序', 1], ['选中-将选择中广告位提前排序', 2]];
|
||
$this->search['left'][] = self::para_select($para, ['eaps_order', '广告位排序', $_M['form']['eaps_order']], true, false);
|
||
$tsql = load::own_class('tsql', 'new');
|
||
$this->select2 = [
|
||
'_fiend' => ['e_vid', '选择场所', $_M['form']['e_vid']],
|
||
'placeholder' => '输入场所名称',
|
||
'fiend' => 'id',
|
||
'tname' => 'village',
|
||
'source' => 'search',
|
||
'allnone' => 2
|
||
];
|
||
$this->search['left'][] = self::input_select_search();
|
||
$this->select2 = [
|
||
'_fiend' => ['vtype', '社区类型'],
|
||
'placeholder' => '可选择多个社区类型',
|
||
'fiend' => 'p_value',
|
||
'tname' => 'para',
|
||
'source' => 'search_para_vtype',
|
||
'allnone' => 0,
|
||
'condition' => 'p_type|||6'
|
||
];
|
||
$this->search['left'][] = self::input_select_search_multiple();
|
||
//门口方位
|
||
$para = $tsql->table('para')->where(['p_type' => 3])->all();
|
||
$this->search['left'][] = self::para_select($para, ['e_bno', '门口方位']);
|
||
//位置
|
||
$this->select2 = [
|
||
'_fiend' => ['e_aps', '位置'],
|
||
'placeholder' => '可选择多个位置',
|
||
'fiend' => 'p_value',
|
||
'tname' => 'para',
|
||
'source' => 'search_para_eaps',
|
||
'allnone' => 0,
|
||
'condition' => 'p_type|||0'
|
||
];
|
||
$this->search['left'][] = self::input_select_search_multiple();
|
||
$this->search['left'][] = self::input_search('e_number', '输入广告位编号');
|
||
//状态
|
||
// $this->search[] = self::para_select([['禁用',0],['启用',1]],['e_enable','状态'],true);
|
||
}
|
||
|
||
//底部按钮
|
||
if ($this->btn_bool) {
|
||
$this->btn[] = [
|
||
self::btn_save()
|
||
];
|
||
$this->btn[] = [
|
||
'<span class="tag tag-lg tag-outline tag-primary">已选中广告位个数:<font class="red-600 addnum">0</font></span>'
|
||
];
|
||
}
|
||
}
|
||
|
||
// 广告位排期统计查询
|
||
protected function elevators()
|
||
{
|
||
global $_M, $_YW;
|
||
$this->table_fiend = self::tf_elevators();
|
||
//替换表格头部
|
||
$rselect = [
|
||
'e_address' => self::th_replace_order('e_address'),
|
||
'e_number' => self::th_replace_order('e_number'),
|
||
'endtime' => self::th_replace_order('endtime'),
|
||
'e_totalnum' => self::th_replace_order('e_totalnum'),
|
||
'endstime' => self::th_replace_order('endstime'),
|
||
'endetime' => self::th_replace_order('endetime'),
|
||
'nowstime' => self::th_replace_order('nowstime'),
|
||
'nowetime' => self::th_replace_order('nowetime'),
|
||
'nextstime' => self::th_replace_order('nextstime'),
|
||
'nextetime' => self::th_replace_order('nextetime'),
|
||
'etypes' => self::th_replace_order('etypes', 'order_etypes'),
|
||
];
|
||
$this->th_head = is_array($rselect) ? array_merge($this->table_fiend, $rselect) : $this->table_fiend;
|
||
|
||
//搜索
|
||
if ($this->search_bool) {
|
||
$tsql = load::own_class('tsql', 'new');
|
||
$this->search[] = self::input_search(['e_number', '广告位编号', $_M['form']['e_number']], '输入广告位编号');
|
||
//位置
|
||
$para = $tsql->table('para')->where(['p_type' => 0])->all();
|
||
$this->search[] = self::para_select($para, ['e_aps', '位置']);
|
||
//门口方位
|
||
$para = $tsql->table('para')->where(['p_type' => 3])->all();
|
||
$this->search[] = self::para_select($para, ['e_bno', '门口方位']);
|
||
$this->select2 = [
|
||
'_fiend' => ['e_vid', '选择场所', $_M['form']['e_vid']],
|
||
'placeholder' => '输入场所名称',
|
||
'fiend' => 'id',
|
||
'tname' => 'village',
|
||
'source' => 'search',
|
||
'allnone' => 2
|
||
];
|
||
$this->search[] = self::input_select_search();
|
||
$this->select2 = [
|
||
'_fiend' => ['nextid', '下个排期计划'],
|
||
'placeholder' => '输入投放计划名称',
|
||
'fiend' => 'id',
|
||
'tname' => 'launch',
|
||
'source' => 'search',
|
||
'allnone' => 2
|
||
];
|
||
$this->search[] = self::input_select_search();
|
||
$this->select2 = [
|
||
'_fiend' => ['nowid', '当前排期计划'],
|
||
'placeholder' => '输入投放计划名称',
|
||
'fiend' => 'id',
|
||
'tname' => 'launch',
|
||
'source' => 'search',
|
||
'allnone' => 2
|
||
];
|
||
$this->search[] = self::input_select_search();
|
||
$this->select2 = [
|
||
'_fiend' => ['endid', '上个排期计划'],
|
||
'placeholder' => '输入投放计划名称',
|
||
'fiend' => 'id',
|
||
'tname' => 'launch',
|
||
'source' => 'search',
|
||
'allnone' => 2
|
||
];
|
||
$this->search[] = self::input_select_search();
|
||
$this->search[] = self::date_time_search(['endtime', '最大结束时间']);
|
||
//状态
|
||
$this->search[] = self::para_select([['禁用', 0], ['启用', 1]], ['e_enable', '状态'], true);
|
||
}
|
||
|
||
//底部按钮
|
||
if ($this->btn_bool) {
|
||
$this->btn[] = '<button type="button" class="btn btn-warning btn-sm backups" data-url="' . $_YW['url']['backup'] . '">导出Excel</button>';
|
||
}
|
||
}
|
||
|
||
// 场所统计展示
|
||
protected function villages()
|
||
{
|
||
global $_M, $_YW;
|
||
$this->table_fiend = self::tf_villages();
|
||
$this->rowsth = [
|
||
'rowlevel' => 2,
|
||
'rowdatas' => [
|
||
//key 需要在指定的位置进行整合
|
||
//整合后的新名称
|
||
//被整合的字段
|
||
'v_enum' => ['资源总计', ['v_enum', 'v_ebnonum']],
|
||
'v_free' => [self::th_tooltip(['今天空闲或者时间区段内空闲的广告位,已去除禁用个数', 'top'], '闲置总计', false), ['v_free', 'v_bno']]
|
||
]
|
||
];
|
||
//原来的列 除掉要转为第二行的 全部要设置为2,转为一行的设置为1
|
||
//
|
||
//将选中的数组转为二级,并给二级添加一级
|
||
//
|
||
//查找到某些元素存放到指定数组,并在原数组上删除
|
||
//在原数组删除的地方添加一个值
|
||
//将新数组作为一个tr
|
||
//头部 TH内容替换
|
||
$rselect = [
|
||
'v_enum' => self::th_tooltip(['广告位总个数 / 禁用的个数', 'top'], self::th_replace_order('v_enum'), false),
|
||
'v_free' => self::th_replace_order('v_free'),
|
||
'v_lease' => self::th_replace_order('v_lease'),
|
||
'v_endday' => self::th_tooltip(['默认7天内即将到期的广告位', 'top'], self::th_replace_order('v_endday'), false),
|
||
'v_prerow' => self::th_replace_order('v_prerow'),
|
||
'v_ebnonum' => self::th_replace_order('v_ebnonum'),
|
||
'v_bno' => self::th_tooltip(['存在一个广告空位则所属门口方位就算有空', 'top'], self::th_replace_order('v_bno')),
|
||
];
|
||
$this->th_head = is_array($rselect) ? array_merge($this->table_fiend, $rselect) : $this->table_fiend;
|
||
|
||
//搜索
|
||
if ($this->search_bool) {
|
||
$this->search[] = self::input_search('v_text', '输入搜索内容');
|
||
$this->search[] = self::input_search('v_address', '输入地址');
|
||
$this->search[] = self::input_search('v_name', '输入场所名称');
|
||
$this->search[] = self::date_timepicker_search(['vs_starttime', '时间区段'], ['vs_endtime', 'To']);
|
||
|
||
$this->select2 = [
|
||
'_fiend' => ['veaps', '广告位置'],
|
||
'placeholder' => '可选择多个广告位置',
|
||
'fiend' => 'p_value',
|
||
'tname' => 'para',
|
||
'source' => 'search_para_eaps',
|
||
'allnone' => 0,
|
||
'condition' => 'p_type|||0'
|
||
];
|
||
$this->search[] = self::input_select_search_multiple();
|
||
|
||
$this->select2 = [
|
||
'_fiend' => ['vtype', '社区类型'],
|
||
'placeholder' => '可选择多个社区类型',
|
||
'fiend' => 'p_value',
|
||
'tname' => 'para',
|
||
'source' => 'search_para_vtype',
|
||
'allnone' => 0,
|
||
'condition' => 'p_type|||6'
|
||
];
|
||
$this->search[] = self::input_select_search_multiple();
|
||
|
||
$this->search[] = self::th_toolmap('地图筛选');
|
||
}
|
||
|
||
//底部按钮
|
||
if ($this->btn_bool) {
|
||
$this->btn[] = '<button type="button" class="btn btn-warning btn-sm backups" data-url="' . $_YW['url']['backup'] . '">导出Excel</button>';
|
||
}
|
||
}
|
||
|
||
// 首页统计
|
||
protected function noticeday()
|
||
{
|
||
global $_M, $_YW;
|
||
$this->checkall = false;
|
||
$this->lastbtn = false;
|
||
$this->table_fiend = self::tf_noticeday();
|
||
|
||
$this->th_head = is_array($rselect) ? array_merge($this->table_fiend, $rselect) : $this->table_fiend;
|
||
|
||
//搜索
|
||
if ($this->search_bool) {
|
||
|
||
}
|
||
|
||
//搜索
|
||
if ($this->search_bool) {
|
||
$this->search[] = self::input_search('v_text', '输入搜索内容');
|
||
$this->search[] = self::input_search('v_address', '输入地址');
|
||
$this->search[] = self::input_search('v_name', '输入场所名称');
|
||
$this->search[] = self::date_timepicker_search(['vs_starttime', '时间区段'], ['vs_endtime', 'To']);
|
||
}
|
||
|
||
//底部按钮
|
||
if ($this->btn_bool) {
|
||
$this->btn[] = '<button type="button" class="btn btn-warning btn-sm backups" data-url="' . $_YW['url']['backup'] . '">导出Excel</button>';
|
||
}
|
||
}
|
||
|
||
//前台巡查页面
|
||
protected function patrol()
|
||
{
|
||
global $_M, $_YW;
|
||
$this->checkall = false;
|
||
$this->lastbtn = false;
|
||
$this->table_fiend = self::tf_patrol();
|
||
|
||
$this->th_head = is_array($rselect) ? array_merge($this->table_fiend, $rselect) : $this->table_fiend;
|
||
|
||
//搜索
|
||
if ($this->search_bool) {
|
||
$tsql = load::own_class('tsql', 'new');
|
||
$this->search[] = self::input_search(['e_number', '编号', $_M['form']['e_number']], '输入广告位编号');
|
||
//位置
|
||
$para = $tsql->table('para')->where(['p_type' => 0])->all();
|
||
$this->search[] = self::para_select($para, ['e_aps', '位置']);
|
||
//门口方位
|
||
$para = $tsql->table('para')->where(['p_type' => 3])->all();
|
||
$this->search[] = self::para_select($para, ['e_bno', '门口方位']);
|
||
$this->select2 = [
|
||
'url' => $_M['url']['site'] . 'app/index.php?n=dzadsod&c=select&a=doselect',
|
||
'_fiend' => ['e_vid', '场所', $_M['form']['e_vid']],
|
||
'placeholder' => '输入场所名称',
|
||
'fiend' => 'id',
|
||
'tname' => 'village',
|
||
'source' => 'search',
|
||
'allnone' => 2
|
||
];
|
||
$this->search[] = self::input_select_search();
|
||
$this->select2 = [
|
||
'url' => $_M['url']['site'] . 'app/index.php?n=dzadsod&c=select&a=doselect',
|
||
'_fiend' => ['nowid', '排期'],
|
||
'placeholder' => '输入投放计划名称',
|
||
'fiend' => 'id',
|
||
'tname' => 'launch',
|
||
'source' => 'weblaunchsearch',
|
||
'allnone' => 2
|
||
];
|
||
$this->search[] = self::input_select_search();
|
||
$this->select2 = [
|
||
'url' => $_M['url']['site'] . 'app/index.php?n=dzadsod&c=select&a=doselect',
|
||
'_fiend' => ['l_hnumber', '订单'],
|
||
'placeholder' => '输入合同名称',
|
||
'fiend' => 'h_number',
|
||
'tname' => 'contract',
|
||
'source' => 'webcontractsearch',
|
||
'allnone' => 2
|
||
];
|
||
$this->search[] = self::input_select_search();
|
||
}
|
||
}
|
||
|
||
// 参数统计
|
||
protected function keylist()
|
||
{
|
||
global $_M, $_YW;
|
||
$this->table_fiend = self::tf_keylist();
|
||
|
||
$this->th_head = is_array($rselect) ? array_merge($this->table_fiend, $rselect) : $this->table_fiend;
|
||
|
||
//底部按钮
|
||
if ($this->btn_bool) {
|
||
$this->btn[] = [
|
||
self::btn_del()
|
||
];
|
||
$addtourl = $this->own_name_info . __FUNCTION__;
|
||
$this->btn[] = [
|
||
'<a class="btn btn-success btn-sm" href="' . $addtourl . '" >新增巡查人员</a>'
|
||
];
|
||
}
|
||
}
|
||
|
||
}
|