'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); // 普通按钮组合 $btngroup = '
' . $btnstr . '
'; // 下拉方式的组合按钮组 $btngrouptoggle = '
'; return $this->btn_group_toggle ? $btngrouptoggle : $btngroup; } } //整合 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 noticestr($noticeday) { //首先判断当前这条信息是属于到期前台3天的 还是属于设置的提醒 //那就是判断订单结束时间和今天的相差天数 $day = abs($noticeday); if ($noticeday > 3) { //按照设置的提醒来计算 $str = parent::str_color(1, $day, 800); $htypes = "{$str} 天后到期提醒"; } else { //按照前后3天来设置 if ($noticeday > 0) { $str = parent::str_color(4, $day, 800); //说明还没到期 $htypes = "{$str} 天后到期"; } else { //说明已经到期或者过期 $htypes = $noticeday == 0 ? parent::str_color(0, '今天到期', 800) : parent::str_color(5, "已过期 {$day} 天", 800); } } return $htypes; } // +---------------------------------------------------------------------- // | 各表处理 // +---------------------------------------------------------------------- //广告位统计 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[] = ' '; //对字段处理 //场所分类 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_tel'] = parent::tab_tokenfield($val['v_tel'], 1); $val['v_address'] = $val['v_province'] . $val['v_city'] . $val['v_district'] . $val['v_address']; $val['v_forbidtype'] = parent::tab_tokenfield($val['v_forbidtype'], 2); $val['v_totalstr'] = $val['noban'] > 0 ? parent::str_color(0, $totalstr, 600) : $totalstr; $val['v_lnglat'] = $val['v_maplng'] . $val['v_maplat']; //执行操作按钮 if (empty($checked)) { $this->btn_group_toggle = '操作按钮'; $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']); //投放媒介 if (empty(self::$para['h_medium'])) self::$para['h_medium'] = parent::translate(4); $h_mediumid = stringto_array($val['h_medium'], '#@met@#'); foreach ($h_mediumid as $hmid) { $hmediumid[] = self::$para['h_medium'][ $hmid ]; } //相关人员 $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_medium'] = parent::tab_tokenfield(arrayto_string($hmediumid, ',')); $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)) { $this->btn_group_toggle = '操作按钮'; $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[] = ' '; //对字段处理 $hcidurl = $this->own_name_table . 'contract&h_cid=' . $val['id']; $val['c_allname'] = ' ' . $val['c_allname'] . ''; $val['c_tel'] = parent::tab_tokenfield($val['c_tel'], 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_group_toggle = '操作按钮'; $this->btn[] = '查看排期'; $addtourl = $_M['url']['own_name'] . 'c=backups&a=doindex&tname=schedule&id=' . $val['id']; $this->btn[] = '导出排期'; $addtourl = $this->own_name_info . __FUNCTION__ . '&fzid=' . $val['id'] . '&eaps_order=2'; $this->btn[] = '复制'; $addtourl = $this->own_name_info . __FUNCTION__ . '&slid=' . $val['id'] . '&eaps_order=2'; $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 ]; } //设置的到期提醒 //订单到期前后3天提醒 $val['htypes'] = self::noticestr($val['noticeday']); $val['h_cid'] = self::$customer[ $val['h_cid'] ]; $val['h_wid'] = parent::tab_tokenfield(arrayto_string($workersstr), 1); $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); } }