'table_off',
'a' => 'doindex',
'submit_type' => 'delet',
'all_id' => $val['id'],
'tname' => $this->tname,
];
$query = array_merge($para,$query);
$href = parent::http_build_query($_M['url']['own_name'],$query);
$this->btn[] = '删除';
}
}else{
$this->btn[] = '';
}
if(count($this->btn) > 0){
$btnstr = arrayto_string($this->btn,'');
unset($this->btn);
return '
'.$btnstr.'
';
}
}
//整合
private function assemble($key,$base,$val,$checked,$query = []) {
global $_M,$_YW;
//搜索处理
foreach ($this->search_input as $vs){
if(in_array($vs, $this->skip_field,true)) continue;
$search = trim(strtoupper($this->form[$vs]));
if($search != null) $val[$vs] = str_ireplace($search, ''.$search.'', $val[$vs]);
}
//按钮组处理
$operation = [];
if($this->banbtn == false) $operation['__operation'] = self::btn_group($val,$checked,$query);
//结果整合处理
return array_merge($base,$key,array_intersect_key($val,$key),$operation);
}
//广告位详细地址转换
protected function eaddress(&$val,$_address = 'e_address',$sign = false){
global $_M,$_YW;
//道闸方位
if(empty(self::$para['e_bno'])) self::$para['e_bno'] = parent::translate(3);
//广告位置
if(empty(self::$para['e_aps'])) self::$para['e_aps'] = parent::translate();
//场所
if(empty(self::$village[$val['e_vid']])) self::$village[$val['e_vid']] = parent::villagelist($val['e_vid']);
if($sign){
$val['e_vid'] = self::$village[$val['e_vid']];
$val['e_bno'] = self::$para['e_bno'][$val['e_bno']];
$val['e_aps'] = self::$para['e_aps'][$val['e_aps']];
}else{
$villages = [
self::$village[$val['e_vid']],
self::$para['e_bno'][$val['e_bno']],
self::$para['e_aps'][$val['e_aps']]
];
$val[$_address] = arrayto_string($villages,' ');
}
}
// +----------------------------------------------------------------------
// | 各表处理
// +----------------------------------------------------------------------
//广告位统计
protected function elevator($val,$checked = '') {
global $_M,$_YW;
//获取字段
$key = self::tf_elevator();
//列表前段
$base[] = '
';
//对字段处理
//道闸方位
if(empty(self::$para['e_bno'])) self::$para['e_bno'] = parent::translate(3);
//广告位置
if(empty(self::$para['e_aps'])) self::$para['e_aps'] = parent::translate();
//场所
if(empty(self::$village[$val['e_vid']])) self::$village[$val['e_vid']] = parent::villagelist($val['e_vid']);
$scheduleurl = $this->own_name_table.'elevators&e_number='.$val['e_number'];
$val['e_number'] = ' '.$val['e_number'].'';
$val['e_enable'] = parent::type_onoff('e_enable',$val['e_enable'],$val['id'],['禁用','启用']);
$val['e_vid'] = self::$village[$val['e_vid']];
$val['e_bno'] = self::$para['e_bno'][$val['e_bno']];
$val['e_aps'] = self::$para['e_aps'][$val['e_aps']];
$val['e_state'] = parent::e_state();
$val['e_label'] = parent::tab_tokenfield($val['e_label'],2);
//执行操作按钮
if(empty($checked)){
$addtourl = $this->own_name_info.__FUNCTION__.'&id='.$val['id'];
$this->btn[] = '编辑';
}
//跳过标记突出处理
$this->skip_field = ['e_number'];
return self::assemble($key,$base,$val,$checked);
}
//场所统计
protected function village($val,$checked = '') {
global $_M,$_YW;
//获取字段
$key = self::tf_village();
//列表前段
$base[] = '
';
//对字段处理
$workerswid = stringto_array($val['v_wid'],',');
foreach ($workerswid as $vwid) {
if(empty(self::$workers[$vwid])) self::$workers[$vwid] = parent::workerslist($vwid);
$workersstr[] = self::$workers[$vwid];
}
//场所分类
if(empty(self::$para['v_type'])) self::$para['v_type'] = parent::translate(6);
$vnameurl = $this->own_name_table.'elevator&e_vid='.$val['id'];
$totalstr = arrayto_string([$val['total'],$val['noban'],$val['normal']],' / ');
$val['v_name'] = ' '.$val['v_name'].'';
$val['v_type'] = self::$para['v_type'][$val['v_type']];
$val['v_wid'] = parent::tab_tokenfield(arrayto_string($workersstr),1);
$val['v_address'] = $val['v_province'].$val['v_city'].$val['v_district'].$val['v_address'];
$val['v_totalstr'] = $val['noban'] > 0?parent::str_color(0,$totalstr,600):$totalstr;
//执行操作按钮
if(empty($checked)){
$this->btn[] = '查看广告位';
$addtourl = $this->own_name_info.__FUNCTION__.'&id='.$val['id'];
$this->btn[] = '编辑';
}
return self::assemble($key,$base,$val,$checked);
}
//广告合同关联表
protected function schedule($val,$checked = '',$base = []) {
global $_M,$_YW;
//获取字段
$key = self::tf_schedule();
//对字段处理
//公司名称
if(empty(self::$customer[$val['h_cid']])) self::$customer[$val['h_cid']] = parent::customerlist($val['h_cid']);
$s_type = strtotime($val['l_endtime']) >= strtotime(date('Y-m-d',time()))?1:0;
if(empty(self::$para['ltype']) && $s_type) self::$para['ltype'] = parent::translate(2);
$val['ltype'] = parent::state_color($s_type,['已经结束',self::$para['ltype'][$val['l_schedule']]]);
$val['h_cid'] = self::$customer[$val['h_cid']];
$val['e_enable'] = $val['e_enable'] == 0 || $this->bsign == false?parent::state_color($val['e_enable'],['禁用','启用']):'';
self::eaddress($val,'l_address',$this->bsign);
return self::assemble($key,$base,$val,$checked,false);
}
//合同归档
protected function contract($val,$checked = '') {
global $_M,$_YW;
//获取字段
$key = self::tf_contract();
//列表前段
$base[] = '
';
//对字段处理
//公司名称
if(empty(self::$customer[$val['h_cid']])) self::$customer[$val['h_cid']] = parent::customerlist($val['h_cid']);
//相关人员
$workerswid = stringto_array($val['h_wid'],',');
foreach ($workerswid as $hwid) {
if(empty(self::$workers[$hwid])) self::$workers[$hwid] = parent::workerslist($hwid);
$workersstr[] = self::$workers[$hwid];
}
//内连接
$h_number = $val['h_number']; //避免后面采用
$launchurl = $this->own_name_table.'launch&l_hnumber='.$h_number;
$curdate = date('Y-m-d',time());
$val['h_number'] = ' '.$h_number.'';
$val['h_cid'] = self::$customer[$val['h_cid']];
$val['h_wid'] = parent::tab_tokenfield(arrayto_string($workersstr),1);
$val['h_noticeday'] = parent::tab_tokenfield($val['h_noticeday'],2);
$val['h_starttime'] = strtotime($val['h_starttime']) > strtotime($curdate)?parent::str_color(2,$val['h_starttime'],600):$val['h_starttime'];
$val['h_endtime'] = strtotime($val['h_endtime']) < strtotime($curdate)?parent::str_color(0,$val['h_endtime'],600):$val['h_endtime'];
//执行操作按钮
if(empty($checked)){
$addtourl = $this->own_name_info.'launch&cid='.$val['id'];
$this->btn[] = '新增投放';
$this->btn[] = '查看投放';
$addtourl = $_M['url']['own_name'].'c=backups&a=doindex&tname=schedule&l_hnumber='.$h_number;
$this->btn[] = '导出排期';
$addtourl = $this->own_name_info.__FUNCTION__.'&id='.$val['id'];
$this->btn[] = '编辑';
}
//跳过标记突出处理
$this->skip_field = ['h_number'];
return self::assemble($key,$base,$val,$checked);
}
//公司资料
protected function customer($val,$checked = '') {
global $_M,$_YW;
//获取字段
$key = self::tf_customer();
//列表前段
$base[] = '
';
//对字段处理
//相关人员
$workerswid = stringto_array($val['c_wid'],',');
foreach ($workerswid as $cwid) {
if(empty(self::$workers[$cwid])) self::$workers[$cwid] = parent::workerslist($cwid);
$workersstr[] = self::$workers[$cwid];
}
$hcidurl = $this->own_name_table.'contract&h_cid='.$val['id'];
$val['c_allname'] = ' '.$val['c_allname'].'';
$val['c_wid'] = parent::tab_tokenfield(arrayto_string($workersstr),1);
$val['c_address'] = $val['c_province'].$val['c_city'].$val['c_district'].$val['c_address'];
//执行操作按钮
if(empty($checked)){
$addtourl = $this->own_name_info.__FUNCTION__.'&id='.$val['id'];
$this->btn[] = '编辑';
}
return self::assemble($key,$base,$val,$checked);
}
//企业联系人
protected function workers($val,$checked = '') {
global $_M,$_YW;
//获取字段
$key = self::tf_workers();
//列表前段
$base[] = '
';
//拿到对应的ID
//职务
if(empty(self::$para)) self::$para = parent::translate(1);
//对字段处理
$val['w_jid'] = self::$para[$val['w_jid']];
$val['w_tel'] = parent::tab_tokenfield($val['w_tel'],1);
//执行操作按钮
if(empty($checked)){
$addtourl = $this->own_name_info.__FUNCTION__.'&id='.$val['id'];
$this->btn[] = '编辑';
}
return self::assemble($key,$base,$val,$checked);
}
//参数统计
protected function para($val,$checked = '') {
global $_M,$_YW;
//获取字段
$key = self::tf_para();
//列表前段
$base[] = '
';
//对字段处理
//优先计算
switch ($val['p_type']) {
case 0:
$p_num = $this->tsql->table('elevator')->where(['e_aps' => $val['p_value']])->count();
break;
case 1:
$p_num = $this->tsql->table('workers')->where(['w_jid' => $val['p_value']])->count();
break;
case 2:
$p_num = $this->tsql->table('launch')->where(['l_schedule' => $val['p_value']])->count();
break;
case 3:
$p_num = $this->tsql->table('elevator')->where(['e_bno' => $val['p_value']])->count();
break;
case 6:
$p_num = $this->tsql->table('village')->where(['v_type' => $val['p_value']])->count();
break;
case 7:
$p_num = $this->tsql->table('launch')->where(['l_type' => $val['p_value']])->count();
break;
default:
break;
}
//有数据后不允许再修改参数值,可修改参数名,且不是在新增情况下
if($p_num > 0 && empty($checked)){
$readonly = ' readonly="readonly" ';
}
$inputp_num = '';
$val['p_num'] = $checked?$inputp_num:$p_num.' 条'.$inputp_num;
$val['p_type'] = '
';
$val['p_order'] = '
';
$val['p_name'] = '
';
$val['p_value'] = '
';
$val['p_text'] = '';
//执行操作按钮
return self::assemble($key,$base,$val,$checked,$p_num > 0?false:[]);
}
//投放计划
protected function launch($val,$checked = '') {
global $_M,$_YW;
//获取字段
$key = self::tf_launch();
//列表前段
$base[] = '
';
//对字段处理
if(empty(self::$para['l_schedule'])) self::$para['l_schedule'] = parent::translate(2);
if(empty(self::$para['l_type'])) self::$para['l_type'] = parent::translate(7);
$enum = count(array_filter(stringto_array($val['l_enumber'],',')));
$snum = count(array_filter(stringto_array($val['l_selectenum'],',')));
$esstr = " {$enum} / {$snum} ";
$curdate = date('Y-m-d',time());
$l_titleurl = $this->own_name_table.'schedule&l_id='.$val['id'];
$val['l_totalnum'] = $enum == $snum?$esstr:parent::state_color(0,[$esstr]); //放在最前面,防止后面对l_enumber 字段的处理
$val['l_title'] = ' '.$val['l_title'].'';
$val['l_enumber'] = parent::tab_tokenfield($val['l_enumber'],1,',',6);
$val['l_schedule'] = parent::tab_tokenfield(self::$para['l_schedule'][$val['l_schedule']],1);
$val['l_type'] = self::$para['l_type'][$val['l_type']];
$val['l_starttime'] = strtotime($val['l_starttime']) > strtotime($curdate)?parent::str_color(2,$val['l_starttime'],600):$val['l_starttime'];
$val['l_endtime'] = strtotime($val['l_endtime']) < strtotime($curdate)?parent::str_color(0,$val['l_endtime'],600):$val['l_endtime'];
//执行操作按钮
if(empty($checked)){
$this->btn[] = '查看排期';
$addtourl = $_M['url']['own_name'].'c=backups&a=doindex&tname=schedule&id='.$val['id'];
$this->btn[] = '导出排期';
$addtourl = $this->own_name_info.__FUNCTION__.'&slid='.$val['id'];
$this->btn[] = '编辑';
}
return self::assemble($key,$base,$val,$checked);
}
//广告位统计
protected function applan($val,$checked = '') {
global $_M,$_YW;
//获取字段
$key = self::tf_applan();
//列表前段
$e_number = $val['e_number'];
//判断之前是否已经选中
$ebool = in_array($e_number, array_filter(stringto_array($this->form['l_selectenum'],',')),true);
//给予选中标识
$class = ' checkbox-primary '; //刚选择默认颜色
//$val['lanum'] 大于0 说明重复,不可投放
if($ebool) {
$apchecked = ' checked ';
$slid = $this->form['slid'];
//判断排期表内是否存在
if(!empty($this->form['slid'])){
if(empty(self::$para[$slid])) self::$para[$slid] = $this->tsql->table('launch')->where(['id' => $slid])->one();
$l_hnumber = stringto_array(self::$para[$slid]['l_enumber'],',');
$class = in_array($e_number,$l_hnumber,true)?' checkbox-success ':' checkbox-danger '; //刚选择默认颜色
}
}
// 判断广告位是否可排期
if(empty($val['e_enable'])){
$e_types = parent::str_color(0,'禁止投放');
if($apchecked) {
$class .= ' ap-one-disabled ';
}else{
$disabled = ' disabled ';
}
}else{
$s_starttime = $_M['form']['l_starttime'];
$s_endtime = $_M['form']['l_endtime'];
if($s_starttime && $s_endtime && strtotime($s_starttime) <= strtotime($s_endtime)){
//判断是否可排期成功
if($val['lanum'] > 0){
$e_types = parent::str_color(0,'禁止投放');
if($apchecked) {
$class .= ' ap-one-disabled ';
}else{
$disabled = ' disabled ';
}
}else{
$e_types = parent::str_color(1,'可投放');
}
}else{
$e_types = parent::str_color(3,'无法判断');
}
}
// checkbox-danger 没有在排期库的显示为红色 checkbox-primary 正常的显示蓝色 checkbox-success 绿色
$base[] = '
';
//对字段处理
$curtime = strtotime(date('Y-m-d',time()));
//上个排期
if(strtotime($val['endetime']) < $curtime){
$val['endtitle'] = ''.$val['endtitle'].'';
$val['endstime'] = ''.$val['endstime'].'';
$val['endetime'] = ''.$val['endetime'].'';
}
$val['endtime'] = strtotime($val['endtime']) < $curtime
?''.$val['endtime'].''
:$val['endtime'];
$val['e_types'] = $e_types;
$val['e_enable'] = parent::state_color($val['e_enable'],['禁用','启用']);
self::eaddress($val,'e_address');
//比较每个广告位的结束时间 和 现在设置的投放订单的开始时间 大小
//禁用最后的按钮
$this->banbtn = true;
return self::assemble($key,$base,$val,$checked,false);
}
//广告位统计
protected function elevators($val,$checked = '') {
global $_M,$_YW;
//获取字段
$key = self::tf_elevators();
//列表前段
$base[] = '
';
//对字段处理
$curtime = strtotime(date('Y-m-d',time()));
$scheduleurl = $this->own_name_table.'schedule&e_number='.$val['e_number'];
$uplaunchurl = $this->own_name_info.'uplaunch&e_number='.$val['e_number'];
$val['e_number'] = ' '.$val['e_number'].'';
$val['etypes'] = parent::state_color($val['etypes'],[$val['e_enable']?'空位':'已禁用','排期中']);
$val['e_enable'] = parent::state_color($val['e_enable'],['禁用','启用']);
$scheduleurlid = $this->own_name_table.'schedule&l_id=';
$val['endtitle'] = $val['endtitle']?''.$val['endtitle'].'':'';
$val['nowtitle'] = $val['nowtitle']?''.$val['nowtitle'].'':'';
$val['nexttitle'] = $val['nexttitle']?''.$val['nexttitle'].'':'';
self::eaddress($val,'e_address');
$val['endtime'] = strtotime($val['endtime']) < $curtime
?''.$val['endtime'].''
:$val['endtime'];
//上个排期
if(strtotime($val['endetime']) < $curtime){
$val['endstime'] = ''.$val['endstime'].'';
$val['endetime'] = ''.$val['endetime'].'';
}
//执行操作按钮
if(empty($checked)){
// $this->btn[] = '调整排期';
$this->btn[] = '查看排期';
}
//跳过标记突出处理
$this->skip_field = ['e_number'];
return self::assemble($key,$base,$val,$checked,false);
}
//场所统计展示
protected function villages($val,$checked = '') {
global $_M,$_YW;
//获取字段
$key = self::tf_villages();
//列表前段
$base[] = '
';
//场所分类
if(empty(self::$para['v_type'])) self::$para['v_type'] = parent::translate(6);
//对字段处理
$scheduleurl = $this->own_name_table.'schedule&e_vid='.$val['id'];
$val['v_name'] = ' '.$val['v_name'].'';
$val['v_type'] = self::$para['v_type'][$val['v_type']];
$val['v_free'] = $val['v_free']?''.$val['v_free'].'':$val['v_free'];
$val['v_lease'] = $val['v_lease']?''.$val['v_lease'].'':$val['v_lease'];
$val['v_endday'] = $val['v_endday']?''.$val['v_endday'].'':$val['v_endday'];
$val['v_prerow'] = $val['v_prerow']?''.$val['v_prerow'].'':$val['v_prerow'];
if($val['noban'] > 0){
$val['v_enum'] = ''.$val['v_enum'].'';
if($this->bsign) $val['v_enum'] .= ' -- ';
$val['v_enum'] .= ''.$val['noban'].'';
}else{
$val['v_enum'] = $val['v_enum']?:''.$val['v_enum'].'';
}
// $val['v_province'].$val['v_city'] 去掉省市
if(!$this->bsign) $val['v_address'] = $val['v_district'].' '.$val['v_address'];
//执行操作按钮
if(empty($checked)){
$addtourl = $this->own_name_table.'elevators&e_vid='.$val['id'];
$this->btn[] = '广告位统计';
}
return self::assemble($key,$base,$val,$checked,false);
}
//场所统计展示
protected function noticeday($val,$checked = '',$base = []) {
global $_M,$_YW;
//获取字段
$key = self::tf_noticeday();
//列表前段
//对字段处理
//公司
if(empty(self::$customer[$val['h_cid']])) self::$customer[$val['h_cid']] = parent::customerlist($val['h_cid']);
//相关人员
$workerswid = stringto_array($val['h_wid'],',');
foreach ($workerswid as $hwid) {
if(empty(self::$workers[$hwid])) self::$workers[$hwid] = parent::workerslist($hwid);
$workersstr[] = self::$workers[$hwid];
}
$h_endtime = strtotime($val['h_endtime']);
$curdate = strtotime(date('Y-m-d',time()));
//首先判断当前这条信息是属于到期前台3天的 还是属于设置的提醒
//那就是判断订单结束时间和今天的相差天数
$day = abs(($h_endtime - $curdate) / 86400);
if($day > 3){
//按照设置的提醒来计算
$str = parent::str_color(0,$val['noticeday'],800);
$htypes = "{$str} 天后到期提醒";
}else{
//按照前后3天来设置
if($h_endtime > $curdate){
$str = parent::str_color(0,$day,800);
//说明还没到期
$htypes = "{$str} 天后到期";
}else{
//说明已经到期或者过期
$htypes = $day == 0?parent::str_color(0,'今天到期',800):parent::str_color(0,"已过期 {$day} 天",800);
}
}
//设置的到期提醒
//订单到期前后3天提醒
$val['h_cid'] = self::$customer[$val['h_cid']];
$val['h_wid'] = parent::tab_tokenfield(arrayto_string($workersstr),1);
$val['htypes'] = $htypes;
$numberurl = $this->own_name_table.'contract&h_number='.$val['h_number'];
$val['h_number'] = ' '.$val['h_number'].'';
return self::assemble($key,$base,$val,$checked,false);
}
//前台巡查
protected function patrol($val,$checked = '') {
global $_M,$_YW;
//获取字段
$key = self::tf_patrol();
//列表前段
//对字段处理
//计算剩余时间
$nowetime = strtotime($val['nowetime']);
$curdate = strtotime(date('Y-m-d',time()));
$day = $val['nowetime']?abs(($nowetime - $curdate) / 86400):0;
$val['e_number'] = parent::state_color($val['e_enable'],[$val['e_number'],$val['e_number']]);
self::eaddress($val,'e_address');
$val['nowtitle'] = parent::state_color($curdate > $nowetime ?0:($day > 2?1:2),[$val['nowtitle'],$val['nowtitle'],$val['nowtitle']]);
return self::assemble($key,[],$val,$checked,false);
}
//参数统计
protected function keylist($val,$checked = '') {
global $_M,$_YW;
//获取字段
$key = self::tf_keylist();
//列表前段
$base[] = '
';
//对字段处理
if(empty(self::$workers[$val['k_wid']])) {
$k_wid = parent::workerslist($val['k_wid'],false);
self::$workers[$val['k_wid']] = $k_wid['w_name'].','.$k_wid['w_tel'];
}
$val['k_basekey'] = base64_decode($val['k_basekey']);
$val['k_state'] = parent::state_color($val['k_state'],['禁用','启用']);
$val['k_wid'] = parent::tab_tokenfield(self::$workers[$val['k_wid']],1);
//执行操作按钮
if(empty($checked)){
$addtourl = $this->own_name_info.__FUNCTION__.'&id='.$val['id'];
$this->btn[] = '编辑';
}
//执行操作按钮
return self::assemble($key,$base,$val,$checked);
}
}