dzadsod/include/class/table_theme.class.php

988 lines
41 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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']);
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="'.$this->select2['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 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){
$para = [['正常-按照广告位置排序',0],['推荐-将适合投放的提前排序',1],['选中-将选择中广告位提前排序',2]];
$this->search['left'][] = self::para_select($para,['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();
//门口方位
$para = $tsql->table('para')->where(['p_type' => 3])->all();
$this->search['left'][] = self::para_select($para,['e_bno','门口方位']);
//位置
$para = $tsql->table('para')->where(['p_type' => 0])->all();
$this->search['left'][] = self::para_select($para,['e_aps','位置']);
$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();
}
//底部按钮
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>'
];
}
}
}