Commit e166ca75 authored by zazaname's avatar zazaname

游戏留存+付费留存,1.1版本

parent 692dab2b
Pipeline #11174 passed with stage
in 0 seconds
<?php
namespace app\admin\controller\data;
use app\common\controller\AdminController;
use EasyAdmin\annotation\ControllerAnnotation;
use EasyAdmin\annotation\NodeAnotation;
use think\App;
/**
* @ControllerAnnotation(title="data_recharge_retain")
*/
class RechargeRetain extends AdminController
{
use \app\admin\traits\Curd;
public function __construct(App $app)
{
parent::__construct($app);
$this->model = new \app\admin\model\DataRechargeRetain();
}
}
\ No newline at end of file
......@@ -6,6 +6,7 @@ use app\common\controller\AdminController;
use EasyAdmin\annotation\ControllerAnnotation;
use EasyAdmin\annotation\NodeAnotation;
use think\App;
use think\facade\Db;
/**
* @ControllerAnnotation(title="data_register_retain")
......@@ -23,5 +24,27 @@ class RegisterRetain extends AdminController
}
/**
* @NodeAnotation(title="列表")
*/
public function index(){
if ($this->request->isAjax()) {
if (input('selectFields')) {
return $this->selectList();
}
list($page, $limit, $where) = $this->buildTableParames();
$model = Db::table('data_register_retain')
->where($where);
$data = [
'code' => 0,
'msg' => '',
'count' => $model->count(),
'data' => $model->page($page, $limit)->order($this->sort)->select(),
];
return json($data);
}
return $this->fetch();
}
}
\ No newline at end of file
}
<?php
namespace app\admin\model;
use app\common\model\TimeModel;
class DataRechargeRetain extends TimeModel
{
protected $name = "data_recharge_retain";
protected $deleteTime = false;
}
\ No newline at end of file
<div class="layuimini-container">
<form id="app-form" class="layui-form layuimini-form">
<div class="layui-form-item">
<label class="layui-form-label">日期</label>
<div class="layui-input-block">
<input type="text" name="day_time" class="layui-input" lay-verify="required" placeholder="请输入日期" value="">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">渠道号</label>
<div class="layui-input-block">
<input type="text" name="ver_code" class="layui-input" lay-verify="required" placeholder="请输入渠道号" value="">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">注册游戏</label>
<div class="layui-input-block">
<input type="text" name="appid" class="layui-input" lay-verify="required" placeholder="请输入注册游戏" value="">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">注册人数</label>
<div class="layui-input-block">
<input type="text" name="reg_num" class="layui-input" lay-verify="required" placeholder="请输入注册人数" value="">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">充值人数</label>
<div class="layui-input-block">
<input type="text" name="pay_num" class="layui-input" lay-verify="required" placeholder="请输入充值人数" value="">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">次日留存</label>
<div class="layui-input-block">
<input type="text" name="day1" class="layui-input" lay-verify="required" placeholder="请输入次日留存" value="0">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">3日留存</label>
<div class="layui-input-block">
<input type="text" name="day2" class="layui-input" lay-verify="required" placeholder="请输入3日留存" value="0">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">4日留存</label>
<div class="layui-input-block">
<input type="text" name="day3" class="layui-input" lay-verify="required" placeholder="请输入4日留存" value="0">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">5日留存</label>
<div class="layui-input-block">
<input type="text" name="day4" class="layui-input" lay-verify="required" placeholder="请输入5日留存" value="0">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">6日留存</label>
<div class="layui-input-block">
<input type="text" name="day5" class="layui-input" lay-verify="required" placeholder="请输入6日留存" value="0">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">7日留存</label>
<div class="layui-input-block">
<input type="text" name="day6" class="layui-input" lay-verify="required" placeholder="请输入7日留存" value="0">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">15日留存</label>
<div class="layui-input-block">
<input type="text" name="day14" class="layui-input" lay-verify="required" placeholder="请输入15日留存" value="0">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">30日留存</label>
<div class="layui-input-block">
<input type="text" name="day29" class="layui-input" lay-verify="required" placeholder="请输入30日留存" value="0">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">45日留存</label>
<div class="layui-input-block">
<input type="text" name="day44" class="layui-input" lay-verify="required" placeholder="请输入45日留存" value="0">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">60日留存</label>
<div class="layui-input-block">
<input type="text" name="day59" class="layui-input" lay-verify="required" placeholder="请输入60日留存" value="0">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">75日留存</label>
<div class="layui-input-block">
<input type="text" name="day74" class="layui-input" lay-verify="required" placeholder="请输入75日留存" value="0">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">90日留存</label>
<div class="layui-input-block">
<input type="text" name="day89" class="layui-input" lay-verify="required" placeholder="请输入90日留存" value="0">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">120日留存</label>
<div class="layui-input-block">
<input type="text" name="day119" class="layui-input" lay-verify="required" placeholder="请输入120日留存" value="0">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">150日留存</label>
<div class="layui-input-block">
<input type="text" name="day149" class="layui-input" lay-verify="required" placeholder="请输入150日留存" value="0">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">180日留存</label>
<div class="layui-input-block">
<input type="text" name="day179" class="layui-input" lay-verify="required" placeholder="请输入180日留存" value="0">
</div>
</div>
<div class="hr-line"></div>
<div class="layui-form-item text-center">
<button type="submit" class="layui-btn layui-btn-normal layui-btn-sm" lay-submit>确认</button>
<button type="reset" class="layui-btn layui-btn-primary layui-btn-sm">重置</button>
</div>
</form>
</div>
\ No newline at end of file
<div class="layuimini-container">
<form id="app-form" class="layui-form layuimini-form">
<div class="layui-form-item">
<label class="layui-form-label">日期</label>
<div class="layui-input-block">
<input type="text" name="day_time" class="layui-input" lay-verify="required" placeholder="请输入日期" value="{$row.day_time|default=''}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">渠道号</label>
<div class="layui-input-block">
<input type="text" name="ver_code" class="layui-input" lay-verify="required" placeholder="请输入渠道号" value="{$row.ver_code|default=''}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">注册游戏</label>
<div class="layui-input-block">
<input type="text" name="appid" class="layui-input" lay-verify="required" placeholder="请输入注册游戏" value="{$row.appid|default=''}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">注册人数</label>
<div class="layui-input-block">
<input type="text" name="reg_num" class="layui-input" lay-verify="required" placeholder="请输入注册人数" value="{$row.reg_num|default=''}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">充值人数</label>
<div class="layui-input-block">
<input type="text" name="pay_num" class="layui-input" lay-verify="required" placeholder="请输入充值人数" value="{$row.pay_num|default=''}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">次日留存</label>
<div class="layui-input-block">
<input type="text" name="day1" class="layui-input" lay-verify="required" placeholder="请输入次日留存" value="{$row.day1|default=''}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">3日留存</label>
<div class="layui-input-block">
<input type="text" name="day2" class="layui-input" lay-verify="required" placeholder="请输入3日留存" value="{$row.day2|default=''}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">4日留存</label>
<div class="layui-input-block">
<input type="text" name="day3" class="layui-input" lay-verify="required" placeholder="请输入4日留存" value="{$row.day3|default=''}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">5日留存</label>
<div class="layui-input-block">
<input type="text" name="day4" class="layui-input" lay-verify="required" placeholder="请输入5日留存" value="{$row.day4|default=''}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">6日留存</label>
<div class="layui-input-block">
<input type="text" name="day5" class="layui-input" lay-verify="required" placeholder="请输入6日留存" value="{$row.day5|default=''}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">7日留存</label>
<div class="layui-input-block">
<input type="text" name="day6" class="layui-input" lay-verify="required" placeholder="请输入7日留存" value="{$row.day6|default=''}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">15日留存</label>
<div class="layui-input-block">
<input type="text" name="day14" class="layui-input" lay-verify="required" placeholder="请输入15日留存" value="{$row.day14|default=''}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">30日留存</label>
<div class="layui-input-block">
<input type="text" name="day29" class="layui-input" lay-verify="required" placeholder="请输入30日留存" value="{$row.day29|default=''}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">45日留存</label>
<div class="layui-input-block">
<input type="text" name="day44" class="layui-input" lay-verify="required" placeholder="请输入45日留存" value="{$row.day44|default=''}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">60日留存</label>
<div class="layui-input-block">
<input type="text" name="day59" class="layui-input" lay-verify="required" placeholder="请输入60日留存" value="{$row.day59|default=''}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">75日留存</label>
<div class="layui-input-block">
<input type="text" name="day74" class="layui-input" lay-verify="required" placeholder="请输入75日留存" value="{$row.day74|default=''}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">90日留存</label>
<div class="layui-input-block">
<input type="text" name="day89" class="layui-input" lay-verify="required" placeholder="请输入90日留存" value="{$row.day89|default=''}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">120日留存</label>
<div class="layui-input-block">
<input type="text" name="day119" class="layui-input" lay-verify="required" placeholder="请输入120日留存" value="{$row.day119|default=''}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">150日留存</label>
<div class="layui-input-block">
<input type="text" name="day149" class="layui-input" lay-verify="required" placeholder="请输入150日留存" value="{$row.day149|default=''}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">180日留存</label>
<div class="layui-input-block">
<input type="text" name="day179" class="layui-input" lay-verify="required" placeholder="请输入180日留存" value="{$row.day179|default=''}">
</div>
</div>
<div class="hr-line"></div>
<div class="layui-form-item text-center">
<button type="submit" class="layui-btn layui-btn-normal layui-btn-sm" lay-submit>确认</button>
<button type="reset" class="layui-btn layui-btn-primary layui-btn-sm">重置</button>
</div>
</form>
</div>
\ No newline at end of file
<div class="layuimini-container">
<div class="layuimini-main">
<table id="currentTable" class="layui-table layui-hide"
data-auth-add="{:auth('data.recharge_retain/add')}"
data-auth-edit="{:auth('data.recharge_retain/edit')}"
data-auth-delete="{:auth('data.recharge_retain/delete')}"
lay-filter="currentTable">
</table>
</div>
</div>
\ No newline at end of file
<?php
declare (strict_types = 1);
namespace app\command\controller;
use app\command\CmdLog;
use think\Exception;
use think\facade\Config;
use think\facade\Db;
use think\facade\Log;
class Retain
{
// 10分钟统计一次
public function runs(){
CmdLog::debug("正在执行留存统计...");
$today = date('Y-m-d');
// 0点10分,补存前一天的数据
if( in_array(date('H-i'),['00-10']) ){
$today = date("Y-m-d",time()-86400);
}
// 游戏留存
$this->get_retain_data($today);
// 付费留存
$this->get_recharge_data($today);
}
/**
* 游戏留存
* @param $day
*/
private function get_retain_data($day){
// 登录日志表有注册时间+登录时间
CmdLog::debug("正在删除当天统计的数据...");
Db::table('data_register_retain')->where(['day_time'=>$day])->delete(true);
// 重新统计入库
CmdLog::debug("重新统计入库,date: {$day}...");
$model_data = Db::table('app_memberloginlog')->field("login_ver,appid,DATE_FORMAT(reg_time, '%Y-%m-%d') AS reg_date,DATE_FORMAT(login_time, '%Y-%m-%d') AS login_date,count(DISTINCT uid) AS count_login_uid_num,DATEDIFF('{$day}',DATE_FORMAT(reg_time, '%Y-%m-%d')) as diff_day ")
->where("DATE_FORMAT(login_time, '%Y-%m-%d') = '{$day}'")
->group('login_ver,appid,reg_date')->having("diff_day >0 and diff_day <= 180")->select()->toArray();
if($model_data){
foreach ($model_data as $key => $value){
$reg_count = Db::table("app_member")->where("ver = '{$value['login_ver']}' and app_id = {$value['appid']} and DATE_FORMAT(reg_time, '%Y-%m-%d') = '{$value['reg_date']}'")->count();
Db::table("data_register_retain")->strict(false)->insert([
'day_time' => $day,
'ver_code' => $value['login_ver'],
'appid' => $value['appid'],
'reg_num' => $reg_count,
'login_num' => $value['count_login_uid_num'],
'create_date' => date('Y-m-d H:i:s',time()),
'day'.(intval($value['diff_day'])-1) => $value['count_login_uid_num']
]);
}
}
CmdLog::debug("end!");
}
/**
* 付费留存,即:用户在注册当天产生充值行为,并在N天后登录,
* @param $day
*/
private function get_recharge_data($day){
CmdLog::debug("正在删除当天付费留存的数据...");
Db::table('data_recharge_retain')->where(['day_time'=>$day])->delete(true);
// 重新统计入库
CmdLog::debug("重新统计入库,date: {$day}...");
$model_data = Db::table('app_member')->alias("mem")
->field("log.login_ver,mem.app_id,FROM_UNIXTIME(mem.reg_time, '%Y-%m-%d') AS reg_day,count(DISTINCT log.uid) AS log_uid_num,count(DISTINCT mem.uid) AS mem_uid_num,DATEDIFF('{$day}',FROM_UNIXTIME(mem.reg_time, '%Y-%m-%d')) AS diff_day")
->leftJoin("app_memberloginlog log","log.uid=mem.uid and log.login_ver = mem.ver")
->leftJoin("app_order o","o.uid=mem.uid and o.ver = mem.ver and FROM_UNIXTIME(o.dateline, '%Y-%m-%d') = FROM_UNIXTIME(mem.reg_time, '%Y-%m-%d')")
->where("0.status=1 and FROM_UNIXTIME(log.login_time, '%Y-%m-%d') = '{$day}'")
->group("log.login_ver,mem.app_id,reg_day")
->having("diff_day >0 and diff_day <=180")->select()->toArray();
if($model_data){
foreach ($model_data as $key => $value){
Db::table("data_recharge_retain")->strict(false)->insert([
'day_time' => $day,
'ver_code' => $value['login_ver'],
'appid' => $value['app_id'],
'reg_num' => $value['mem_uid_num'],
'login_num' => $value['log_uid_num'],
'create_date' => date('Y-m-d H:i:s',time()),
'day'.(intval($value['diff_day'])-1) => $value['log_uid_num']
]);
}
}
CmdLog::debug("end!");
}
}
......@@ -196,6 +196,11 @@ class AdminController extends BaseController
$where[] = [$key, '<=', strtotime($endTime)];
}
break;
case 'rangeday':
[$beginTime, $endTime] = explode(' - ', $val);
$where[] = [$key, '>=', $beginTime];
$where[] = [$key, '<=', $endTime];
break;
default:
$where[] = [$key, $op, "%{$val}"];
}
......
define(["jquery", "easy-admin"], function ($, ea) {
var init = {
table_elem: '#currentTable',
table_render_id: 'currentTableRenderId',
index_url: 'data.recharge_retain/index',
add_url: 'data.recharge_retain/add',
edit_url: 'data.recharge_retain/edit',
delete_url: 'data.recharge_retain/delete',
export_url: 'data.recharge_retain/export',
modify_url: 'data.recharge_retain/modify',
};
var Controller = {
index: function () {
ea.table.render({
init: init,
toolbar: ['refresh'],
cols: [[
{type: 'checkbox'},
{field: 'day_time', width: 100, title: '日期',search: 'rangeDay'},
{field: 'ver_code', width: 100, title: '渠道号'},
{field: 'appid', width: 100, title: '注册游戏'},
{field: 'reg_num', width: 100, title: '注册人数',search:false},
{field: 'pay_num', width: 100, title: '充值人数',search:false},
{field: 'day1', width: 100, title: '次日留存',search:false},
{field: 'day2', width: 100, title: '3日留存',search:false},
{field: 'day3', width: 100, title: '4日留存',search:false},
{field: 'day4', width: 100, title: '5日留存',search:false},
{field: 'day5', width: 100, title: '6日留存',search:false},
{field: 'day6', width: 100, title: '7日留存',search:false},
{field: 'day14', width: 100, title: '15日留存',search:false},
{field: 'day29', width: 100, title: '30日留存',search:false},
{field: 'day44', width: 100, title: '45日留存',search:false},
{field: 'day59', width: 100, title: '60日留存',search:false},
{field: 'day74', width: 100, title: '75日留存',search:false},
{field: 'day89', width: 100, title: '90日留存',search:false},
{field: 'day119', width: 100, title: '120日留存',search:false},
{field: 'day149', width: 100, title: '150日留存',search:false},
{field: 'day179', width: 100, title: '180日留存',search:false},
]],
});
ea.listen();
},
add: function () {
ea.listen();
},
edit: function () {
ea.listen();
},
};
return Controller;
});
define(["jquery", "easy-admin"], function ($, ea) { var init = { table_elem: '#currentTable', table_render_id: 'currentTableRenderId', index_url: 'data.register_retain/index', add_url: 'data.register_retain/add', edit_url: 'data.register_retain/edit', delete_url: 'data.register_retain/delete', export_url: 'data.register_retain/export', modify_url: 'data.register_retain/modify', }; var Controller = { index: function () { var util = layui.util; ea.table.render({ init: init, toolbar: ['refresh'], cols: [[ {type: 'checkbox'}, {field: 'id', width:100, title: '序号',search:false}, {field: 'day_time', width:150, title: '日期',search: 'range', timeType: 'date',searchValue: util.toDateString(new Date(new Date().getTime() - 7 * 24 * 3600 * 1000), 'yyyy-MM-dd') + ' - ' + util.toDateString(new Date(), 'yyyy-MM-dd')}, {field: 'ver_code', width:100, title: '渠道号'}, {field: 'appid', width:100, title: '注册游戏'}, {field: 'reg_num', width:100, title: '新增注册',search:false}, {field: 'login_num', width:100, title: '登录数',search:false}, {field: 'day1', width:100, title: '次日留存',search:false}, {field: 'day2', width:100, title: '3日留存',search:false}, {field: 'day3', width:100, title: '4日留存',search:false}, {field: 'day4', width:100, title: '5日留存',search:false}, {field: 'day5', width:100, title: '6日留存',search:false}, {field: 'day6', width:100, title: '7日留存',search:false}, {field: 'day7', width:100, title: '8日留存',search:false}, {field: 'day8', width:100, title: '9日留存',search:false}, {field: 'day9', width:100, title: '10日留存',search:false}, {field: 'day10', width:100, title: '11日留存',search:false}, {field: 'day11', width:100, title: '12日留存',search:false}, {field: 'day12', width:100, title: '13日留存',search:false}, {field: 'day13', width:100, title: '14日留存',search:false}, {field: 'day14', width:100, title: '15日留存',search:false}, {field: 'day15', width:100, title: '16日留存',search:false}, {field: 'day16', width:100, title: '17日留存',search:false}, {field: 'day17', width:100, title: '18日留存',search:false}, {field: 'day18', width:100, title: '19日留存',search:false}, {field: 'day19', width:100, title: '20日留存',search:false}, {field: 'day20', width:100, title: '21日留存',search:false}, {field: 'day21', width:100, title: '22日留存',search:false}, {field: 'day22', width:100, title: '23日留存',search:false}, {field: 'day23', width:100, title: '24日留存',search:false}, {field: 'day24', width:100, title: '25日留存',search:false}, {field: 'day25', width:100, title: '26日留存',search:false}, {field: 'day26', width:100, title: '27日留存',search:false}, {field: 'day27', width:100, title: '28日留存',search:false}, {field: 'day28', width:100, title: '29日留存',search:false}, {field: 'day29', width:100, title: '30日留存',search:false}, {field: 'day44', width:100, title: '45日留存',search:false}, {field: 'day59', width:100, title: '60日留存',search:false}, {field: 'day89', width:100, title: '90日留存',search:false}, {field: 'day119', width:100, title: '120日留存',search:false}, {field: 'day149', width:100, title: '150日留存',search:false}, {field: 'day179', width:100, title: '180日留存',search:false}, {field: 'create_date', width:200, title: '更新时间',search:false}, ]], }); ea.listen(); }, add: function () { ea.listen(); }, edit: function () { ea.listen(); }, }; return Controller;});
\ No newline at end of file
define(["jquery", "easy-admin"], function ($, ea) { var init = { table_elem: '#currentTable', table_render_id: 'currentTableRenderId', index_url: 'data.register_retain/index', add_url: 'data.register_retain/add', edit_url: 'data.register_retain/edit', delete_url: 'data.register_retain/delete', export_url: 'data.register_retain/export', modify_url: 'data.register_retain/modify', }; var Controller = { index: function () { var util = layui.util; ea.table.render({ init: init, toolbar: ['refresh'], cols: [[ {type: 'checkbox'}, {field: 'day_time', width:150, title: '日期',search: 'rangeDay'}, {field: 'ver_code', width:100, title: '渠道号'}, {field: 'appid', width:100, title: '注册游戏'}, {field: 'reg_num', width:100, title: '新增注册',search:false}, {field: 'login_num', width:100, title: '登录数',search:false}, {field: 'day1', width:100, title: '次日留存',search:false}, {field: 'day2', width:100, title: '3日留存',search:false}, {field: 'day3', width:100, title: '4日留存',search:false}, {field: 'day4', width:100, title: '5日留存',search:false}, {field: 'day5', width:100, title: '6日留存',search:false}, {field: 'day6', width:100, title: '7日留存',search:false}, {field: 'day7', width:100, title: '8日留存',search:false}, {field: 'day8', width:100, title: '9日留存',search:false}, {field: 'day9', width:100, title: '10日留存',search:false}, {field: 'day10', width:100, title: '11日留存',search:false}, {field: 'day11', width:100, title: '12日留存',search:false}, {field: 'day12', width:100, title: '13日留存',search:false}, {field: 'day13', width:100, title: '14日留存',search:false}, {field: 'day14', width:100, title: '15日留存',search:false}, {field: 'day15', width:100, title: '16日留存',search:false}, {field: 'day16', width:100, title: '17日留存',search:false}, {field: 'day17', width:100, title: '18日留存',search:false}, {field: 'day18', width:100, title: '19日留存',search:false}, {field: 'day19', width:100, title: '20日留存',search:false}, {field: 'day20', width:100, title: '21日留存',search:false}, {field: 'day21', width:100, title: '22日留存',search:false}, {field: 'day22', width:100, title: '23日留存',search:false}, {field: 'day23', width:100, title: '24日留存',search:false}, {field: 'day24', width:100, title: '25日留存',search:false}, {field: 'day25', width:100, title: '26日留存',search:false}, {field: 'day26', width:100, title: '27日留存',search:false}, {field: 'day27', width:100, title: '28日留存',search:false}, {field: 'day28', width:100, title: '29日留存',search:false}, {field: 'day29', width:100, title: '30日留存',search:false}, {field: 'day44', width:100, title: '45日留存',search:false}, {field: 'day59', width:100, title: '60日留存',search:false}, {field: 'day89', width:100, title: '90日留存',search:false}, {field: 'day119', width:100, title: '120日留存',search:false}, {field: 'day149', width:100, title: '150日留存',search:false}, {field: 'day179', width:100, title: '180日留存',search:false}, {field: 'create_date', width:200, title: '更新时间',search:false}, ]], }); ea.listen(); }, add: function () { ea.listen(); }, edit: function () { ea.listen(); }, }; return Controller;});
\ No newline at end of file
......
......@@ -372,7 +372,7 @@ define(["jquery", "tableSelect", "ckeditor"], function ($, tableSelect, undefine
'</div>';
break;
case 'rangeDay':
d.searchOp = 'range';
d.searchOp = 'rangeDay';
formHtml += '\t<div class="layui-form-item layui-inline">\n' +
'<label class="layui-form-label">' + d.title + '</label>\n' +
'<div class="layui-input-inline">\n' +
......
<?php
// This file is automatically generated at:2023-05-05 16:08:46
// This file is automatically generated at:2023-05-22 16:13:40
declare (strict_types = 1);
return array (
0 => 'think\\captcha\\CaptchaService',
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment