868 lines
38 KiB
PHP
868 lines
38 KiB
PHP
<?php
|
||
|
||
/*
|
||
* 表格列表的结果处理
|
||
*/
|
||
|
||
trait tlist
|
||
{
|
||
|
||
//按钮组
|
||
protected static $para = [];
|
||
|
||
//禁用最后的按钮
|
||
protected static $customer = [];
|
||
|
||
// 开启下拉模式组合按钮
|
||
protected static $workers = [];
|
||
|
||
//相关参数缓存
|
||
protected static $village = [];
|
||
|
||
//相关公司缓存
|
||
protected $btn = [];
|
||
|
||
//相关联系人缓存
|
||
protected $banbtn = false;
|
||
|
||
//场所缓存
|
||
protected $btn_group_toggle = false;
|
||
|
||
//公用删除
|
||
//$query 主要用来替换删除按钮的值
|
||
private $serial_number = 0;
|
||
|
||
//整合
|
||
protected function elevator($val, $checked = '')
|
||
{
|
||
global $_M, $_YW;
|
||
//获取字段
|
||
$key = self::tf_elevator();
|
||
|
||
//列表前段
|
||
$base[] = '<span class="checkbox-custom checkbox-primary">
|
||
<input class="selectable-item" type="checkbox" name="id" value="'.$val['id'].'">
|
||
<label></label>
|
||
</span>';
|
||
//对字段处理
|
||
//门口方位
|
||
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'] = '<a href="'.$scheduleurl.'"> '.$val['e_number'].'</a>';
|
||
$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[] = '<a href="'.$addtourl.'" class="btn btn-success btn-sm">编辑</a>';
|
||
}
|
||
//跳过标记突出处理
|
||
$this->skip_field = ['e_number'];
|
||
|
||
return self::assemble($key, $base, $val, $checked);
|
||
}
|
||
|
||
//广告位详细地址转换
|
||
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, '<font color="#FF0000">'.$search.'</font>', $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 btn_group($val, $checked, $query = [])
|
||
{
|
||
global $_M, $_YW;
|
||
if (empty($checked)) {
|
||
if ($query !== false) {
|
||
$para = [
|
||
'c' => '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[] = '<a
|
||
class="btn btn-danger btn-sm"
|
||
table-delet
|
||
data-plugin="alertify"
|
||
data-type="confirm"
|
||
data-label-ok="确定"
|
||
data-label-cancel="取消"
|
||
data-confirm-title="确定要删除选中的信息吗?一旦删除将不能恢复!"
|
||
href="'.$href.'"
|
||
>删除</a>';
|
||
}
|
||
} else {
|
||
$this->btn[] = '<button type="button" class="btn btn-default btn-outline m-l-5" table-cancel>撤销</button>';
|
||
}
|
||
if (count($this->btn) > 0) {
|
||
$btnstr = arrayto_string($this->btn, '');
|
||
unset($this->btn);
|
||
// 普通按钮组合
|
||
$btngroup = '<div class="btn-group" role="group" >'.$btnstr.'</div>';
|
||
// 下拉方式的组合按钮组
|
||
$btngrouptoggle = '<div class="btn-group" role="group">
|
||
<button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown">'.$this->btn_group_toggle.'
|
||
</button>
|
||
<div class="dropdown-menu btn-group-toggle-menu">'.$btnstr.'</div>
|
||
</div>';
|
||
|
||
return $this->btn_group_toggle ? $btngrouptoggle : $btngroup;
|
||
}
|
||
}
|
||
|
||
// +----------------------------------------------------------------------
|
||
// | 各表处理
|
||
// +----------------------------------------------------------------------
|
||
//广告位统计
|
||
|
||
protected function village($val, $checked = '')
|
||
{
|
||
global $_M, $_YW;
|
||
//获取字段
|
||
$key = self::tf_village();
|
||
|
||
//列表前段
|
||
$base[] = '<span class="checkbox-custom checkbox-primary">
|
||
<input class="selectable-item" type="checkbox" name="id" value="'.$val['id'].'">
|
||
<label></label>
|
||
</span>';
|
||
//对字段处理
|
||
//场所分类
|
||
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'] = '<a href="'.$vnameurl.'"> '.$val['v_name'].'</a>';
|
||
$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[] = '<a href="'.$vnameurl.'" class="btn btn-primary btn-sm">查看广告位</a>';
|
||
$addtourl = $this->own_name_info.__FUNCTION__.'&id='.$val['id'];
|
||
$this->btn[] = '<a href="'.$addtourl.'" class="btn btn-success btn-sm">编辑</a>';
|
||
}
|
||
|
||
//跳过标记突出处理
|
||
$this->skip_field = ['v_hcname'];
|
||
|
||
return self::assemble($key, $base, $val, $checked);
|
||
}
|
||
|
||
// 排期导出
|
||
protected function expschedule($val, $checked = '', $base = [])
|
||
{
|
||
//获取字段
|
||
$key = self::tf_expschedule();
|
||
//对字段处理
|
||
$this->serial_number++;
|
||
$val['serial_number'] = $this->serial_number;
|
||
$val['media_type'] = '社区道闸';
|
||
// 因为是按照广告位导出的,虽然表格中没有提现广告位置,但是若是道闸位置一样,会出现重复,若是需要有意义,查询时就要按照ID、道闸位置对dzadsod_elevator合并计算,这样前面显示的个数就出现合并了
|
||
$val['number'] = 1;
|
||
|
||
// 为了获取所有的信息
|
||
$val['v_hcname'] = $val['v_vaddress'] = '';
|
||
self::eaddress($val, 'village', $this->bsign);
|
||
|
||
return self::assemble($key, $base, $val, $checked, false);
|
||
}
|
||
|
||
//场所统计
|
||
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::$para['v_type'])) {
|
||
self::$para['v_type'] = parent::translate(6);
|
||
}
|
||
//场所
|
||
if (array_key_exists('v_hcname', $val) || array_key_exists('v_vaddress', $val)) {
|
||
//小区
|
||
if (empty(self::$village[$val['e_vid']])) {
|
||
self::$village[$val['e_vid']] = parent::villagelist(
|
||
$val['e_vid'],
|
||
[
|
||
'v_name',
|
||
'v_hcname',
|
||
'v_district',
|
||
'v_city',
|
||
'v_province',
|
||
'v_address',
|
||
'v_type',
|
||
]
|
||
);
|
||
}
|
||
} else {
|
||
//小区
|
||
if (empty(self::$village[$val['e_vid']])) {
|
||
self::$village[$val['e_vid']] = parent::villagelist($val['e_vid']);
|
||
}
|
||
}
|
||
|
||
if ($sign) {
|
||
if (array_key_exists('v_hcname', $val) || array_key_exists('v_vaddress', $val)) {
|
||
$evid = $val['e_vid'];
|
||
$val['e_vid'] = self::$village[$evid]['v_name'];
|
||
$val['v_city'] = self::$village[$evid]['v_city'];
|
||
$val['v_district'] = self::$village[$evid]['v_district'];
|
||
$val['v_hcname'] = self::$village[$evid]['v_hcname'];
|
||
$val['v_address'] = self::$village[$evid]['v_address'];
|
||
$val['v_type'] = self::$para['v_type'][self::$village[$evid]['v_type']];
|
||
// $val['v_vaddress'] = self::$village[ $evid ]['v_province'] . self::$village[ $evid ]['v_city'] . self::$village[ $evid ]['v_district'] . self::$village[ $evid ]['v_address'];
|
||
$val['v_vaddress'] = self::$village[$evid]['v_district'].self::$village[$evid]['v_address'];
|
||
} else {
|
||
$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 {
|
||
if (array_key_exists('v_hcname', $val) || array_key_exists('v_vaddress', $val)) {
|
||
$evid = $val['e_vid'];
|
||
$val['v_hcname'] = $v_hcname = self::$village[$evid]['v_hcname'];
|
||
$evidname = self::$village[$evid]['v_name'];
|
||
if ($v_hcname) {
|
||
$evidname .= "(".$v_hcname.")";
|
||
}
|
||
// $val['v_vaddress'] = self::$village[ $evid ]['v_province'] . self::$village[ $evid ]['v_city'] . self::$village[ $evid ]['v_district'] . self::$village[ $evid ]['v_address'];
|
||
$val['v_vaddress'] = self::$village[$evid]['v_district'].self::$village[$evid]['v_address'];
|
||
} else {
|
||
$evidname = self::$village[$val['e_vid']];
|
||
}
|
||
$villages = [
|
||
$evidname,
|
||
self::$para['e_bno'][$val['e_bno']],
|
||
self::$para['e_aps'][$val['e_aps']],
|
||
];
|
||
$val[$_address] = arrayto_string($villages, ' ');
|
||
}
|
||
}
|
||
|
||
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'], ['禁用', '启用']) : '';
|
||
// 显示商圈
|
||
$val['v_hcname'] = $val['v_vaddress'] = '';
|
||
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[] = '<span class="checkbox-custom checkbox-primary">
|
||
<input class="selectable-item" type="checkbox" name="id" value="'.$val['id'].'">
|
||
<label></label>
|
||
</span>';
|
||
//对字段处理
|
||
//公司名称
|
||
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'] = '<a href="'.$launchurl.'"> '.$h_number.'</a>';
|
||
$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[] = '<a href="'.$addtourl.'" class="btn btn-primary btn-sm">新增投放</a>';
|
||
$this->btn[] = '<a href="'.$launchurl.'" class="btn btn-info btn-sm">查看投放</a>';
|
||
// $addtourl = $_M['url']['own_name'].'c=backups&a=doindex&tname=schedule&l_hnumber='.$h_number;
|
||
$addtourl = $_M['url']['own_name'].'c=backups&a=doindex&tname=expschedule&l_hnumber='.$h_number;
|
||
$this->btn[] = '<a href="'.$addtourl.'" class="btn btn-warning btn-sm">导出排期</a>';
|
||
$addtourl = $this->own_name_info.__FUNCTION__.'&id='.$val['id'];
|
||
$this->btn[] = '<a href="'.$addtourl.'" class="btn btn-success btn-sm">编辑</a>';
|
||
}
|
||
//跳过标记突出处理
|
||
$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[] = '<span class="checkbox-custom checkbox-primary">
|
||
<input class="selectable-item" type="checkbox" name="id" value="'.$val['id'].'">
|
||
<label></label>
|
||
</span>';
|
||
//对字段处理
|
||
|
||
$hcidurl = $this->own_name_table.'contract&h_cid='.$val['id'];
|
||
$val['c_allname'] = '<a href="'.$hcidurl.'"> '.$val['c_allname'].'</a>';
|
||
$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[] = '<a href="'.$addtourl.'" class="btn btn-success btn-sm">编辑</a>';
|
||
}
|
||
|
||
return self::assemble($key, $base, $val, $checked);
|
||
}
|
||
|
||
//公司资料
|
||
protected function workers($val, $checked = '')
|
||
{
|
||
global $_M, $_YW;
|
||
//获取字段
|
||
$key = self::tf_workers();
|
||
|
||
//列表前段
|
||
$base[] = '<span class="checkbox-custom checkbox-primary">
|
||
<input class="selectable-item" type="checkbox" name="id" value="'.$val['id'].'">
|
||
<label></label>
|
||
</span>';
|
||
|
||
//拿到对应的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[] = '<a href="'.$addtourl.'" class="btn btn-success btn-sm">编辑</a>';
|
||
}
|
||
|
||
return self::assemble($key, $base, $val, $checked);
|
||
}
|
||
|
||
//企业联系人
|
||
protected function para($val, $checked = '')
|
||
{
|
||
global $_M, $_YW;
|
||
//获取字段
|
||
$key = self::tf_para();
|
||
|
||
//列表前段
|
||
$base[] = '<span class="checkbox-custom checkbox-primary">
|
||
<input class="selectable-item" type="checkbox" name="id" value="'.$val['id'].'" '.$checked.'>
|
||
<label></label>
|
||
</span>';
|
||
|
||
//对字段处理
|
||
//优先计算
|
||
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 = '<input type="hidden" name="p_num-'.$val['id'].'" value="'.$p_num.'">';
|
||
$val['p_num'] = $checked ? $inputp_num : $p_num.' 条'.$inputp_num;
|
||
$val['p_type'] = '<div class="form-group">
|
||
<select class="form-control" name="p_type-'.$val['id'].'" data-checked="'.$val['p_type'].'" required >
|
||
<option value="0">广告位置</option>
|
||
<option value="1">企业职位</option>
|
||
<option value="2">投放进度</option>
|
||
<option value="3">门口方位</option>
|
||
<option value="4">投放媒介</option>
|
||
<option value="6">场所分类</option>
|
||
<option value="7">广告类型</option>
|
||
</select>
|
||
</div>';
|
||
$val['p_order'] = '<div class="form-group">
|
||
<input type="text" name="p_order-'.$val['id'].'" value="'.$val['p_order'].'" placeholder="仅支持数字" data-fv-integer="true" data-fv-integer-message="请输入有效的整数数字" class="form-control">
|
||
</div>';
|
||
$val['p_name'] = '<div class="form-group">
|
||
<input type="text" name="p_name-'.$val['id'].'" value="'.$val['p_name'].'" required class="form-control">
|
||
</div>';
|
||
$val['p_value'] = '<div class="form-group">
|
||
<input type="text" name="p_value-'.$val['id'].'" value="'.$val['p_value']
|
||
.'" placeholder="仅支持数字" data-fv-integer="true" data-fv-integer-message="请输入有效的整数数字" class="form-control" '.$readonly.'>
|
||
</div>';
|
||
$val['p_text'] = '<input type="text" name="p_text-'.$val['id'].'" value="'.$val['p_text'].'" class="form-control">';
|
||
|
||
//执行操作按钮
|
||
return self::assemble($key, $base, $val, $checked, $p_num > 0 ? false : []);
|
||
}
|
||
|
||
//参数统计
|
||
protected function launch($val, $checked = '')
|
||
{
|
||
global $_M, $_YW;
|
||
//获取字段
|
||
$key = self::tf_launch();
|
||
|
||
//列表前段
|
||
$base[] = '<span class="checkbox-custom checkbox-primary ap-one">
|
||
<input class="selectable-item" type="checkbox" name="id" value="'.$val['id'].'" '.$checked.'>
|
||
<label></label>
|
||
</span>';
|
||
//对字段处理
|
||
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'] = '<a href="'.$l_titleurl.'"> '.$val['l_title'].'</a>';
|
||
$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[] = '<a href="'.$l_titleurl.'" class="btn btn-info btn-sm">查看排期</a>';
|
||
// $addtourl = $_M['url']['own_name'].'c=backups&a=doindex&tname=schedule&id='.$val['id'];
|
||
$addtourl = $_M['url']['own_name'].'c=backups&a=doindex&tname=expschedule&id='.$val['id'];
|
||
$this->btn[] = '<a href="'.$addtourl.'" class="btn btn-warning btn-sm">导出排期</a>';
|
||
$addtourl = $this->own_name_info.__FUNCTION__.'&fzid='.$val['id'].'&eaps_order=2';
|
||
$this->btn[] = '<a href="'.$addtourl.'" class="btn btn-primary btn-sm">复制</a>';
|
||
$addtourl = $this->own_name_info.__FUNCTION__.'&slid='.$val['id'].'&eaps_order=2';
|
||
$this->btn[] = '<a href="'.$addtourl.'" class="btn btn-success btn-sm">编辑</a>';
|
||
}
|
||
|
||
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[] = '<span class="checkbox-custom '.$class.' ap-one">
|
||
<input class="selectable-item" type="checkbox" name="id" value="'.$e_number.'" '.$apchecked.$disabled.'>
|
||
<label></label>
|
||
</span>';
|
||
|
||
//对字段处理
|
||
$curtime = strtotime(date('Y-m-d', time()));
|
||
//上个排期
|
||
if (strtotime($val['endetime']) < $curtime) {
|
||
$val['endtitle'] = '<span class="blue-grey-400">'.$val['endtitle'].'</span>';
|
||
$val['endstime'] = '<span class="blue-grey-400">'.$val['endstime'].'</span>';
|
||
$val['endetime'] = '<span class="blue-grey-400">'.$val['endetime'].'</span>';
|
||
}
|
||
|
||
$val['endtime'] = strtotime($val['endtime']) < $curtime ? '<span class="line_through blue-grey-400">'.$val['endtime'].'</span>'
|
||
: $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[] = '<span class="checkbox-custom checkbox-primary ap-one">
|
||
<input class="selectable-item" type="checkbox" name="id" value="'.$val['e_number'].'" '.$checked.'>
|
||
<label></label>
|
||
</span>';
|
||
//对字段处理
|
||
$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'] = '<a href="'.$scheduleurl.'"> '.$val['e_number'].'</a>';
|
||
$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'] ? '<a href="'.$scheduleurlid.$val['endid'].'">'.$val['endtitle'].'</a>' : '';
|
||
$val['nowtitle'] = $val['nowtitle'] ? '<a href="'.$scheduleurlid.$val['nowid'].'">'.$val['nowtitle'].'</a>' : '';
|
||
$val['nexttitle'] = $val['nexttitle'] ? '<a href="'.$scheduleurlid.$val['nextid'].'">'.$val['nexttitle'].'</a>' : '';
|
||
// 显示商圈
|
||
$val['v_hcname'] = '';
|
||
self::eaddress($val, 'e_address');
|
||
|
||
$val['endtime'] = strtotime($val['endtime']) < $curtime ? '<span class="line_through blue-grey-400">'.$val['endtime'].'</span>'
|
||
: $val['endtime'];
|
||
//上个排期
|
||
if (strtotime($val['endetime']) < $curtime) {
|
||
$val['endstime'] = '<span class="blue-grey-400">'.$val['endstime'].'</span>';
|
||
$val['endetime'] = '<span class="blue-grey-400">'.$val['endetime'].'</span>';
|
||
}
|
||
|
||
//执行操作按钮
|
||
if (empty($checked)) {
|
||
// $this->btn[] = '<a href="'.$uplaunchurl.'" class="btn btn-success btn-sm">调整排期</a>';
|
||
$this->btn[] = '<a href="'.$scheduleurl.'" class="btn btn-primary btn-sm">查看排期</a>';
|
||
}
|
||
//跳过标记突出处理
|
||
$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[] = '<span class="checkbox-custom checkbox-primary">
|
||
<input class="selectable-item" type="checkbox" name="id" value="'.$val['id'].'">
|
||
<label></label>
|
||
</span>';
|
||
|
||
//场所分类
|
||
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'] = '<a href="'.$scheduleurl.'" title="查看排期"> '.$val['v_name'].'</a>';
|
||
$val['v_type'] = self::$para['v_type'][$val['v_type']];
|
||
$val['v_free'] = $val['v_free'] ? '<span class="tag tag-sm tag-pill tag-info">'.$val['v_free'].'</span>' : $val['v_free'];
|
||
$val['v_lease'] = $val['v_lease'] ? '<span class="tag tag-sm tag-pill tag-warning">'.$val['v_lease'].'</span>' : $val['v_lease'];
|
||
$val['v_endday'] = $val['v_endday'] ? '<span class="tag tag-sm tag-pill tag-success">'.$val['v_endday'].'</span>' : $val['v_endday'];
|
||
$val['v_prerow'] = $val['v_prerow'] ? '<span class="tag tag-sm tag-pill tag-primary">'.$val['v_prerow'].'</span>' : $val['v_prerow'];
|
||
if ($val['noban'] > 0) {
|
||
$val['v_enum'] = '<span class="tag tag-sm tag-pill tag-dark">'.$val['v_enum'].'</span>';
|
||
if ($this->bsign) {
|
||
$val['v_enum'] .= ' -- ';
|
||
}
|
||
$val['v_enum'] .= '<span class="tag tag-sm tag-pill tag-danger m-l-10">'.$val['noban'].'</span>';
|
||
} else {
|
||
$val['v_enum'] = $val['v_enum'] ?: '<span class="tag tag-sm tag-pill tag-danger">'.$val['v_enum'].'</span>';
|
||
}
|
||
// $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[] = '<a href="'.$addtourl.'" class="btn btn-primary btn-sm">广告位统计</a>';
|
||
}
|
||
|
||
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'] = '<a href="'.$numberurl.'" title="查看排期"> '.$val['h_number'].'</a>';
|
||
|
||
return self::assemble($key, $base, $val, $checked, false);
|
||
}
|
||
|
||
//场所统计展示
|
||
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 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[] = '<span class="checkbox-custom checkbox-primary">
|
||
<input class="selectable-item" type="checkbox" name="id" value="'.$val['id'].'" '.$checked.'>
|
||
<label></label>
|
||
</span>';
|
||
|
||
//对字段处理
|
||
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[] = '<a href="'.$addtourl.'" class="btn btn-success btn-sm">编辑</a>';
|
||
}
|
||
|
||
//执行操作按钮
|
||
return self::assemble($key, $base, $val, $checked);
|
||
}
|
||
|
||
}
|