This commit is contained in:
罗松柏 2021-09-14 17:22:15 +08:00
parent 724fa28815
commit 5ef96c7a93
108 changed files with 437 additions and 476 deletions

View File

@ -616,6 +616,9 @@
<div class="tishi model-gengx" data-id="{{d.report_id}}" title="更新">
<img src="./static/img/gengxin.png" />
</div>
<div class="tishi tishi-tjsx" data-id="{{d.report_id}}" title="条件筛选">
<img src="./static/img/guolv.png" />
</div>
<div class="tishi model-fuzhi" title="复制" data-id="{{d.report_id}}" >
<img src="./static/img/fuzhi2.png" />
</div>
@ -654,6 +657,9 @@
<div class="tishi model-gengx" data-id="{{d.report_id}}" title="更新">
<img src="./static/img/gengxin.png" />
</div>
<div class="tishi tishi-tjsx" data-id="{{d.report_id}}" title="条件筛选">
<img src="./static/img/guolv.png" />
</div>
<div class="tishi model-fuzhi" title="复制" data-id="{{d.report_id}}">
<img src="./static/img/fuzhi2.png" />
</div>
@ -688,6 +694,9 @@
<div class="tishi model-gengx" data-id="{{d.report_id}}" title="更新">
<img src="./static/img/gengxin.png" />
</div>
<div class="tishi tishi-tjsx" data-id="{{d.report_id}}" title="条件筛选">
<img src="./static/img/guolv.png" />
</div>
<div class="tishi model-fuzhi" title="复制" data-id="{{d.report_id}}">
<img src="./static/img/fuzhi2.png" />
</div>

View File

@ -2,167 +2,205 @@
<!doctype html>
<html>
<head>
<meta charset='UTF-8'><meta name='viewport' content='width=device-width initial-scale=1'>
<title>使用手册</title></head>
<body><h1>使用手册</h1>
<h2>数据看板</h2>
<h3>数据看板的意义</h3>
<p>看板为报表的集合在日常平台使用过程中将分析指标保存为报表添加至看板中方便日常数据的监控。X 支持将同一张报表放进多张数据看板。</p>
<p>
<img src="http://x2debug.legu.cc/static/img/manual/image-20210902183930969.png" referrerpolicy="no-referrer" alt="image-20210902183930969"></p>
<p>数据看板由三部分组成:看板目录、看板配置区、数据展示区</p>
<ul>
<li>看板目录:创建看板/空间</li>
<li>看板配置区:包括添加看板报表、调整看板设置、看板刷新</li>
<li>数据展示区:展示每张看板报表的信息</li>
<meta charset='UTF-8'><meta name='viewport' content='width=device-width initial-scale=1'>
<title>使用手册</title>
</head>
<style>
*{padding: 0; margin: 0;}
.content { width: 80%; padding: 60px;}
.content img { max-width: 100%; }
h1 { padding: 10px 0; }
h2 { padding: 10px 0; }
h3 { padding: 10px 0; }
p { padding: 10px 0; }
.box { display: flex; justify-content: space-between; }
.anchor-point-box { position: fixed; top: 60px; right: 0; width: 280px; border-left: 2px solid rgba(0,0,0,.07); }
.anchor-point-box div { padding: 8px 16px; }
.anchor-point-box div a { color: #000; font-size: 15px; text-decoration:none; }
</style>
<body>
<div class="box">
</ul>
<h3>创建/编辑空间</h3>
<h4>创建空间</h4>
<ol>
<li>点击右上角[+],选择[创建空间],默认 X 超管可创建空间。</li>
<div class="content">
<h1>使用手册</h1>
<h2> <a name='kanbandata'>数据看板</a> </h2>
<h3>数据看板的意义</h3>
<p>看板为报表的集合在日常平台使用过程中将分析指标保存为报表添加至看板中方便日常数据的监控。X 支持将同一张报表放进多张数据看板。</p>
<p>
<img src="http://x2debug.legu.cc/static/img/manual/image-20210902183930969.png" referrerpolicy="no-referrer" alt="image-20210902183930969"></p>
<p>数据看板由三部分组成:看板目录、看板配置区、数据展示区</p>
<ul>
<li>看板目录:创建看板/空间</li>
<li>看板配置区:包括添加看板报表、调整看板设置、看板刷新</li>
<li>数据展示区:展示每张看板报表的信息</li>
</ol>
<p><img src="http://x2debug.legu.cc/static/img/manual/image-20210902184656701.png" referrerpolicy="no-referrer" alt="image-20210902184656701"></p>
<p><img src="http://x2debug.legu.cc/static/img/manual/image-20210902185005780.png" referrerpolicy="no-referrer" alt="image-20210902185005780"></p>
<ol start='2' >
<li>在创建空间弹框中选择空间成员、设置空间成员权限。空间内看板对空间成员默认可见。</li>
</ul>
<h3> <a name='addkongjian'>创建/编辑空间</a></h3>
<h4 name='addkongjian'>创建空间</h4>
<ol>
<li>点击右上角[+],选择[创建空间],默认 X 超管可创建空间</li>
</ol>
<p><img src="http://x2debug.legu.cc/static/img/manual/image-20210902184930630.png" referrerpolicy="no-referrer" alt="image-20210902184930630"></p>
<ul>
<li>空间权限为[仅查看]的成员,仅可查看空间看板,无任何空间编辑权限</li>
<li>空间权限为[可编辑]的成员,可在空间内新建看板、对空间内容进行拖动排序操作</li>
</ol>
<p><img src="http://x2debug.legu.cc/static/img/manual/C44C4A9A-E447-43ed-81F8-4BA9E9C748E0.png" referrerpolicy="no-referrer" alt="C44C4A9A-E447-43ed-81F8-4BA9E9C748E0"></p>
<p><img src="http://x2debug.legu.cc/static/img/manual/89C5FCED-C155-409c-953F-32C54B5009EA.png" referrerpolicy="no-referrer" alt="89C5FCED-C155-409c-953F-32C54B5009EA"></p>
<ol start='2' >
<li>在创建空间弹框中选择空间成员、设置空间成员权限。空间内看板对空间成员默认可见。</li>
</ul>
<h4> 编辑空间</h4>
<p>鼠标移入空间名称,点击右侧的[成员]按钮,可打开查看/编辑空间设置:</p>
<p><img src="http://x2debug.legu.cc/static/img/manual/image-20210902185404016.png" referrerpolicy="no-referrer" alt="image-20210902185404016"></p>
<p>&nbsp;</p>
<ul>
<li>空间管理员可编辑空间设置,包括修改空间成员列表、移交空间、删除空间</li>
</ol>
<p><img src="http://x2debug.legu.cc/static/img/manual/D6847611-0C3D-4ca2-B4B4-EA1C79454050.png" referrerpolicy="no-referrer" alt="D6847611-0C3D-4ca2-B4B4-EA1C79454050"></p>
<ul>
<li>空间权限为[仅查看]的成员,仅可查看空间看板,无任何空间编辑权限</li>
<li>空间权限为[可编辑]的成员,可在空间内新建看板、对空间内容进行拖动排序操作</li>
</ul>
<p><img src="http://x2debug.legu.cc/static/img/manual/image-20210902185310749.png" referrerpolicy="no-referrer" alt="image-20210902185310749"></p>
<h3>看板管理</h3>
<p>点击看板页右上角[看板管理],打开看板管理弹窗,该功能支持批量移动或删除自建看板</p>
<p><img src="http://x2debug.legu.cc/static/img/manual/image-20210902185659059.png" referrerpolicy="no-referrer" alt="image-20210902185659059"></p>
<h3>看板报表</h3>
<p>看板核心区由多个看板报表组成,报表在看板中的展现形式与模型中不完全一致</p>
<p><img src="http://x2debug.legu.cc/static/img/manual/image-20210902190143612.png" referrerpolicy="no-referrer" alt="image-20210902190143612"></p>
<p>点击报表名可进入该报表设计</p>
<p>&nbsp;</p>
<h2>报表管理</h2>
<p>通过报表可以将经常使用的分析模型进行存储,方便每次进行分析时快速读取。也为看板中添加报表内容并进行用户间的分享提供便利。报表管理指整体管理自己所创建的报表。</p>
<h3>报表创建与报表管理的位置</h3>
<p>在任意分析模型中都有“保存报表”的按钮。保存报表成功后,可在任意分析模型的右上角,通过“已存报表”按钮,找到所有的已存报表。</p>
<p>报表将保存分析模型的完整条件信息、时间段及图表样式。</p>
<p>报表管理可以从看板的“报表”-“新增报表”或模型的“已存报表”选项进入。</p>
<p><img src="http://x2debug.legu.cc/static/img/manual/image-20210902190656874.png" referrerpolicy="no-referrer" alt="image-20210902190656874"></p>
<p>&nbsp;</p>
<p><img src="http://x2debug.legu.cc/static/img/manual/image-20210902190732097.png" referrerpolicy="no-referrer" alt="image-20210902190732097"></p>
<h3>报表的使用场景</h3>
<h4>创建报表</h4>
<p>在任意分析模型中,点击“保存报表”时,会进行条件校验。校验成功时,可进行报表的保存,需要输入报表名称与简介(可选)</p>
<p><img src="http://x2debug.legu.cc/static/img/manual/image-20210902190931374.png" referrerpolicy="no-referrer" alt="image-20210902190931374"></p>
<h4>查找已存报表</h4>
<p>可在任意分析模型的右上角,找到“报表”按钮,点击后可查找所有已经创建的报表。默认将展示当前模型下的报表,可通过切换模型类型或搜索找到需要的报表。</p>
<p><img src="http://x2debug.legu.cc/static/img/manual/image-20210902191011960.png" referrerpolicy="no-referrer" alt="image-20210902191011960"></p>
<h4>删除报表</h4>
<p>可通过“删除 icon”删除不需要的报表。</p>
<p>特别地,当删除报表后,该报表将永久消失。如果有添加过该报表的看板,看板中将一并删除对应看板报表。</p>
<p><img src="http://x2debug.legu.cc/static/img/manual/image-20210902191155738.png" referrerpolicy="no-referrer" alt="image-20210902191155738"></p>
<h4>编辑报表名或更新报表</h4>
<p>选中并打开某个报表后,可以看到存储的完整条件。对报表更新后,可通过点击“保存报表”或“更新报表”更新报表的存储内容,并可在弹窗内修改报表的名称或编辑报表的简介。</p>
<h2>事件分析</h2>
<h3>事件分析的意义</h3>
<p>用户USER在 APP 或游戏中产生的行为数据被称为事件EVENT事件数据记录了用户产生各种行为的时间、行为的类型以及行为的详细信息。对这些事件数据进行筛选或分组最终计算聚合指标的模型称为事件分析模型。</p>
<p>通过事件分析,可以计算一段时间内用户产生特定行为的聚合指标,了解各行为的用户参与情况以及指标的发展趋势,从而对产品获得宏观把控,优化决策。</p>
<p>以消费事件举例来说,可以解决如下问题:</p>
<ol>
<li>最近一月每日收入流水情况趋势?</li>
<li>最近一月来各渠道的每日收入流水与分布情况?</li>
<li>来自上海的用户,最近一月人均付费金额的趋势?</li>
<li>来自上海和北京的用户,最近一月在购买会员卡上的总付费次数对比情况?</li>
</ul>
<h4> <a name='editkongjian'>编辑空间</a> </h4>
<p>鼠标移入空间名称,点击右侧的[成员]按钮,可打开查看/编辑空间设置:</p>
<p><img src="http://x2debug.legu.cc/static/img/manual/83555E30-7BFB-4363-91BE-0936D47C3727.png" referrerpolicy="no-referrer" alt="83555E30-7BFB-4363-91BE-0936D47C3727"></p>
<p>&nbsp;</p>
<ul>
<li>空间管理员可编辑空间设置,包括修改空间成员列表、移交空间、删除空间</li>
</ol>
<p>&nbsp;</p>
<h3>事件分析的位置</h3>
<p>在顶部导航栏中的“行为分析”中选择“事件分析”,即可进入事件分析模型:</p>
<p><img src="http://x2debug.legu.cc/static/img/manual/image-20210903134731096.png" referrerpolicy="no-referrer" alt="image-20210903134731096"></p>
<h3>事件分析的使用方法</h3>
<p>分析指标即 「事件」 + 「属性」 + 「计算方法」 或直接 「事件」 + 「计算方法」:</p>
<figure><table>
<thead>
<tr><th>事件</th><th>属性</th><th>计算方法</th></tr></thead>
<tbody><tr><td>任意事件</td><td>&nbsp;</td><td>总次数、触发用户数、人均次数</td></tr><tr><td>事件</td><td>&nbsp;</td><td>总次数、触发用户数、人均次数</td></tr><tr><td>事件</td><td>事件属性(数值型)</td><td>总和、均值、最大值、最小值、人均值、去重数</td></tr><tr><td>事件</td><td>事件属性(非数值、布尔型)</td><td>去重数</td></tr></tbody>
</table></figure>
<p>如:任意事件的触发用户数、购买商品的人均次数、购买商品的用户平均 VIP 等级、购买商品使用 WIFI 为真数、购买商品的用户省份的去重数。</p>
<h4>添加公式</h4>
<p>如果需要进行分析指标间的一些四则运算,可以通过”添加公式“来实现。如分析 ARPU 值(活跃用户的人均付费金额):</p>
<pre><code class='language-shell' lang='shell'>pay.unitPrice.sum/100/login.touch_user_count
</code></pre>
<p>&nbsp;</p>
<p><img src="http://x2debug.legu.cc/static/img/manual/image-20210903135306328.png" referrerpolicy="no-referrer" alt="image-20210903135306328"></p>
<h4>添加指标</h4>
<p>可以通过“添加指标”对多个分析指标同时进行分析,实现某些对比和展示需求,如下图:</p>
<p><img src="http://x2debug.legu.cc/static/img/manual/image-20210903135423026.png" referrerpolicy="no-referrer" alt="image-20210903135423026"></p>
<h4>分组项的选择</h4>
<p>分组项可根据事件属性签进行</p>
<p><img src="http://x2debug.legu.cc/static/img/manual/image-20210903150659046.png" referrerpolicy="no-referrer" alt="image-20210903150659046"></p>
<h4>设置多重分组</h4>
<p><img src="http://x2debug.legu.cc/static/img/manual/image-20210903150821918.png" referrerpolicy="no-referrer" alt="image-20210903150821918"></p>
<h4>筛选条件的选择</h4>
<p>通过分析指标的“指标筛选”可选出符合某些特征的事件进行分析</p>
<p><img src="http://x2debug.legu.cc/static/img/manual/image-20210903143523869.png" referrerpolicy="no-referrer" alt="image-20210903143523869"></p>
<p>当有多个指标时可以进行全局筛选</p>
<p><img src="http://x2debug.legu.cc/static/img/manual/image-20210903143917236.png" referrerpolicy="no-referrer" alt="image-20210903143917236"></p>
<p>&nbsp;</p>
<h3>报表的设置、展示、下载与保存</h3>
<p>当“分析角度设置区”选择完全后,点击“开始计算”,即可在“图表展示区”展示出图表结果</p>
<h3>展示筛选区的设置</h3>
<h4>分析时段与分析粒度</h4>
<p>即选择需要分析的时间区间与细分时间粒度:</p>
<p>分析时段默认选项为动态时间的“过去 7 日”,默认分析时间粒度为“每天”。</p>
<p>分析时段:可选择今天、昨天、近 7 天、近 14 天、近 30 天、本周、上周、本月、上月。</p>
<p>时间粒度可按分钟、按小时、按天、按周、按月、合计进行选择</p>
<p><img src="http://x2debug.legu.cc/static/img/manual/image-20210903150920311.png" referrerpolicy="no-referrer" alt="image-20210903150920311"></p>
<h2>留存分析</h2>
<h3>留存分析的意义</h3>
<p>留存分析主要分析用户的整体参与程度、活跃程度的情况,考查进行某项初始行为的用户中,会进行回访行为的人数和比例。</p>
<p>通过留存分析模型,可以分析一段时间内,完成某项初始事件用户的回访情况,从而对事件的影响能进行宏观把控,优化决策。</p>
<p>以从用户活跃到消费举例来说,可以解决如下问题:</p>
<ol>
<li>用户使用产品后的 1 个月内,进行消费转化的人数和占比情况?</li>
<li>用户使用产品后的 1 个月内,完成消费,且消费金额达到 200 元的人数和占比情况?</li>
<li>上海用户使用产品后的 1 个月内,进行消费转化的人数和占比情况?</li>
<li>一线城市用户使用产品后的 1 个月内,完成消费,且消费金额达到 200 元的人数和占比情况?</li>
</ul>
<p><img src="http://x2debug.legu.cc/static/img/manual/2C0884A6-9C0A-4933-B131-0140CAAB2DE5.png" referrerpolicy="no-referrer" alt="2C0884A6-9C0A-4933-B131-0140CAAB2DE5"></p>
<a class="" name='kanbanadmin'>看板管理</a>
<p>点击看板页右上角[看板管理],打开看板管理弹窗,该功能支持批量移动或删除自建看板</p>
<p><img src="http://x2debug.legu.cc/static/img/manual/EE4EE700-F1A1-48ac-8BFE-69C89709E1E7.png" referrerpolicy="no-referrer" alt="EE4EE700-F1A1-48ac-8BFE-69C89709E1E7"></p>
<h3> <a name='kanbanfrom'>看板报表</a> </h3>
<p>看板核心区由多个看板报表组成,报表在看板中的展现形式与模型中不完全一致</p>
<p><img src="http://x2debug.legu.cc/static/img/manual/AB63EE0E-EBBE-41d6-821D-EA8ADA79AE54.png" referrerpolicy="no-referrer" alt="AB63EE0E-EBBE-41d6-821D-EA8ADA79AE54"></p>
<p>点击报表名可进入该报表设计</p>
<p>&nbsp;</p>
<h2>报表管理</h2>
<p>通过报表可以将经常使用的分析模型进行存储,方便每次进行分析时快速读取。也为看板中添加报表内容并进行用户间的分享提供便利。报表管理指整体管理自己所创建的报表。</p>
<h3> <a name='addfrom'>报表创建与报表管理的位置</a></h3>
<p>在任意分析模型中都有“保存报表”的按钮。保存报表成功后,可在任意分析模型的右上角,通过“已存报表”按钮,找到所有的已存报表。</p>
<p>报表将保存分析模型的完整条件信息、时间段及图表样式。</p>
<p>报表管理可以从看板的“报表”-“新增报表”或模型的“已存报表”选项进入。</p>
<p><img src="http://x2debug.legu.cc/static/img/manual/9A48CAD0-A539-4c3d-8E5E-CF00DC455972.png" referrerpolicy="no-referrer" alt="9A48CAD0-A539-4c3d-8E5E-CF00DC455972"></p>
<p>&nbsp;</p>
<p><img src="http://x2debug.legu.cc/static/img/manual/4C93670F-3182-41b3-913F-A41B3FE1EE69.png" referrerpolicy="no-referrer" alt="4C93670F-3182-41b3-913F-A41B3FE1EE69"></p>
<h3>报表的使用场景</h3>
<h4> <a name='preservationfrom'>保存报表</a> </h4>
<p>在任意分析模型中,点击“保存报表”时,会进行条件校验。校验成功时,可进行报表的保存,需要输入报表名称与简介(可选)</p>
<p><img src="http://x2debug.legu.cc/static/img/manual/04B6F50F-A306-479b-A538-C81F1EEF10FD.png" referrerpolicy="no-referrer" alt="04B6F50F-A306-479b-A538-C81F1EEF10FD"></p>
<h4> <a name="looupfrom">查找已存报表</a> </h4>
<p>可在任意分析模型的右上角,找到“报表”按钮,点击后可查找所有已经创建的报表。默认将展示当前模型下的报表,可通过切换模型类型或搜索找到需要的报表。</p>
<p><img src="http://x2debug.legu.cc/static/img/manual/7B0ABCFE-4B72-4ccf-8389-FCB2322C5DD4.png" referrerpolicy="no-referrer" alt="7B0ABCFE-4B72-4ccf-8389-FCB2322C5DD4"></p>
<h4> <a name="deletefrom">删除报表</a> </h4>
<p>可通过“删除 icon”删除不需要的报表。</p>
<p>特别地,当删除报表后,该报表将永久消失。如果有添加过该报表的看板,看板中将一并删除对应看板报表。</p>
<p><img src="http://x2debug.legu.cc/static/img/manual/43DCC732-7C23-42d2-BBD1-B4601FC95442.png" referrerpolicy="no-referrer" alt="43DCC732-7C23-42d2-BBD1-B4601FC95442"></p>
<h4> <a name="editfrom">编辑报表名或更新报表</a> </h4>
<p>选中并打开某个报表后,可以看到存储的完整条件。对报表更新后,可通过点击“保存报表”或“更新报表”更新报表的存储内容,并可在弹窗内修改报表的名称或编辑报表的简介。</p>
<h2> <a name="eventanalysis">事件分析</a> </h2>
<h3>事件分析的意义</h3>
<p>用户USER在 APP 或游戏中产生的行为数据被称为事件EVENT事件数据记录了用户产生各种行为的时间、行为的类型以及行为的详细信息。对这些事件数据进行筛选或分组最终计算聚合指标的模型称为事件分析模型。</p>
<p>通过事件分析,可以计算一段时间内用户产生特定行为的聚合指标,了解各行为的用户参与情况以及指标的发展趋势,从而对产品获得宏观把控,优化决策。</p>
<p>以消费事件举例来说,可以解决如下问题:</p>
<ol>
<li>最近一月每日收入流水情况趋势?</li>
<li>最近一月来各渠道的每日收入流水与分布情况?</li>
<li>来自上海的用户,最近一月人均付费金额的趋势?</li>
<li>来自上海和北京的用户,最近一月在购买会员卡上的总付费次数对比情况?</li>
</ol>
<h3>留存分析的页面概览</h3>
<p>留存分析分为指标设置区、展示设置区、展示图表区三部分。可以通过设置分析角度来确定分析的内容。并通过选择展示筛选选项,在图表区绘制出需要的分析表格或图形</p>
<p><img src="http://x2debug.legu.cc/static/img/manual/image-20210903153456381.png" referrerpolicy="no-referrer" alt="image-20210903153456381"></p>
<h3>常用的几种分析场景</h3>
<p>角色留存</p>
<p><img src="http://x2debug.legu.cc/static/img/manual/image-20210903154127886.png" referrerpolicy="no-referrer" alt="image-20210903154127886"></p>
<p>完成新手引导留存</p>
<p><img src="http://x2debug.legu.cc/static/img/manual/image-20210903154153865.png" referrerpolicy="no-referrer" alt="image-20210903154153865"></p>
<p>参与任务留存</p>
<p><img src="http://x2debug.legu.cc/static/img/manual/image-20210903154405728.png" referrerpolicy="no-referrer" alt="image-20210903154405728"></p>
<h3>分析指标的设置</h3>
<h4>初始事件的选择</h4>
<p>有过初始事件行为的用户将作为分析样本的数据源,并在整个分析中起作用。选框中可以选择某“元事件”或“任意事件”。含义即是在特定日期中做过该事件的用户。对于在特定日期中做过任意事件的用户可以理解为“他们在这段时间中活跃过”。</p>
<h4>筛选条件的选择</h4>
<h5>事件筛选</h5>
<p>筛选条件主要为了精确查看特定人群的使用情况而设计,如分析上海男性用户的留存情况。可以同时对初始事件和回访事件进行条件筛选。通过”筛选条件“可选出符合某些特征的事件,再进行分析。</p>
<h4>回访事件的选择</h4>
<p>回访用户是指满足初始事件用户在特定时间后,完成回访事件的用户。选框中可以选择某“元事件”或“任意事件”。即是在特定日期中做过该回访事件的用户。对于在特定日期中做过任意事件的用户可以理解为“他们在这段时间中活跃过”。</p>
<h2>LTV分析</h2>
<h3>LTV分析的意义</h3>
<p>LTV是在一定时间内每一位玩家的平均付费。观测及预估用户的成本回收情况如难以收回成本则考虑回炉大改或放弃。</p>
<h3>LTV分析的页面概览</h3>
<p>用户维度可按 角色或设备</p>
<p>订单筛选可筛选符合条件的订单</p>
<p><img src="http://x2debug.legu.cc/static/img/manual/image-20210903161103557.png" referrerpolicy="no-referrer" alt="image-20210903161103557"></p>
</ol>
<p>&nbsp;</p>
<h3>事件分析的位置</h3>
<p>在顶部导航栏中的“行为分析”中选择“事件分析”,即可进入事件分析模型:</p>
<p><img src="http://x2debug.legu.cc/static/img/manual/A6B5F942-67AF-4477-B940-17E45225B70E.png" referrerpolicy="no-referrer" alt="A6B5F942-67AF-4477-B940-17E45225B70E"></p>
<h3>事件分析的使用方法</h3>
<p>分析指标即 「事件」 + 「属性」 + 「计算方法」 或直接 「事件」 + 「计算方法」:</p>
<figure><table>
<thead>
<tr><th>事件</th><th>属性</th><th>计算方法</th></tr></thead>
<tbody><tr><td>任意事件</td><td>&nbsp;</td><td>总次数、触发用户数、人均次数</td></tr><tr><td>事件</td><td>&nbsp;</td><td>总次数、触发用户数、人均次数</td></tr><tr><td>事件</td><td>事件属性(数值型)</td><td>总和、均值、最大值、最小值、人均值、去重数</td></tr><tr><td>事件</td><td>事件属性(非数值、布尔型)</td><td>去重数</td></tr></tbody>
</table></figure>
<p>如:任意事件的触发用户数、购买商品的人均次数、购买商品的用户平均 VIP 等级、购买商品使用 WIFI 为真数、购买商品的用户省份的去重数。</p>
<h4>添加公式</h4>
<p>如果需要进行分析指标间的一些四则运算,可以通过”添加公式“来实现。如分析 ARPU 值(活跃用户的人均付费金额):</p>
<pre><code class='language-shell' lang='shell'>pay.unitPrice.sum/100/login.touch_user_count
</code></pre>
<p>&nbsp;</p>
<p><img src="http://x2debug.legu.cc/static/img/manual/image-20210903135306328.png" referrerpolicy="no-referrer" alt="image-20210903135306328"></p>
<h4>添加指标</h4>
<p>可以通过“添加指标”对多个分析指标同时进行分析,实现某些对比和展示需求,如下图:</p>
<p><img src="http://x2debug.legu.cc/static/img/manual/image-20210903135423026.png" referrerpolicy="no-referrer" alt="image-20210903135423026"></p>
<h4>分组项的选择</h4>
<p>分组项可根据事件属性签进行</p>
<p><img src="http://x2debug.legu.cc/static/img/manual/image-20210903150659046.png" referrerpolicy="no-referrer" alt="image-20210903150659046"></p>
<h4>设置多重分组</h4>
<p><img src="http://x2debug.legu.cc/static/img/manual/image-20210903150821918.png" referrerpolicy="no-referrer" alt="image-20210903150821918"></p>
<h4>筛选条件的选择</h4>
<p>通过分析指标的“指标筛选”可选出符合某些特征的事件进行分析</p>
<p><img src="http://x2debug.legu.cc/static/img/manual/image-20210903143523869.png" referrerpolicy="no-referrer" alt="image-20210903143523869"></p>
<p>当有多个指标时可以进行全局筛选</p>
<p><img src="http://x2debug.legu.cc/static/img/manual/image-20210903143917236.png" referrerpolicy="no-referrer" alt="image-20210903143917236"></p>
<p>&nbsp;</p>
<h3> <a name='fromsetup'>报表的设置、展示、下载与保存</a></h3>
<p>当“分析角度设置区”选择完全后,点击“开始计算”,即可在“图表展示区”展示出图表结果</p>
<h3>展示筛选区的设置</h3>
<h4>分析时段与分析粒度</h4>
<p>即选择需要分析的时间区间与细分时间粒度:</p>
<p>分析时段默认选项为动态时间的“过去 7 日”,默认分析时间粒度为“每天”。</p>
<p>分析时段:可选择今天、昨天、近 7 天、近 14 天、近 30 天、本周、上周、本月、上月。</p>
<p>时间粒度可按分钟、按小时、按天、按周、按月、合计进行选择</p>
<p><img src="http://x2debug.legu.cc/static/img/manual/F90EFA33-FC17-4497-BDD6-72F68B10F02D.png" referrerpolicy="no-referrer" alt="F90EFA33-FC17-4497-BDD6-72F68B10F02D"></p>
<h2> <a name="retainedanalysis">留存分析</a> </h2>
<h3>留存分析的意义</h3>
<p>留存分析主要分析用户的整体参与程度、活跃程度的情况,考查进行某项初始行为的用户中,会进行回访行为的人数和比例。</p>
<p>通过留存分析模型,可以分析一段时间内,完成某项初始事件用户的回访情况,从而对事件的影响能进行宏观把控,优化决策。</p>
<p>以从用户活跃到消费举例来说,可以解决如下问题:</p>
<ol>
<li>用户使用产品后的 1 个月内,进行消费转化的人数和占比情况?</li>
<li>用户使用产品后的 1 个月内,完成消费,且消费金额达到 200 元的人数和占比情况?</li>
<li>上海用户使用产品后的 1 个月内,进行消费转化的人数和占比情况?</li>
<li>一线城市用户使用产品后的 1 个月内,完成消费,且消费金额达到 200 元的人数和占比情况?</li>
</ol>
<h3>留存分析的页面概览</h3>
<p>留存分析分为指标设置区、展示设置区、展示图表区三部分。可以通过设置分析角度来确定分析的内容。并通过选择展示筛选选项,在图表区绘制出需要的分析表格或图形</p>
<p><img src="http://x2debug.legu.cc/static/img/manual/image-20210903153456381.png" referrerpolicy="no-referrer" alt="image-20210903153456381"></p>
<h3>常用的几种分析场景</h3>
<p>角色留存</p>
<p><img src="http://x2debug.legu.cc/static/img/manual/image-20210903154127886.png" referrerpolicy="no-referrer" alt="image-20210903154127886"></p>
<p>完成新手引导留存</p>
<p><img src="http://x2debug.legu.cc/static/img/manual/image-20210903154153865.png" referrerpolicy="no-referrer" alt="image-20210903154153865"></p>
<p>参与任务留存</p>
<p><img src="http://x2debug.legu.cc/static/img/manual/image-20210903154405728.png" referrerpolicy="no-referrer" alt="image-20210903154405728"></p>
<h3>分析指标的设置</h3>
<h4>初始事件的选择</h4>
<p>有过初始事件行为的用户将作为分析样本的数据源,并在整个分析中起作用。选框中可以选择某“元事件”或“任意事件”。含义即是在特定日期中做过该事件的用户。对于在特定日期中做过任意事件的用户可以理解为“他们在这段时间中活跃过”。</p>
<h4>筛选条件的选择</h4>
<h5>事件筛选</h5>
<p>筛选条件主要为了精确查看特定人群的使用情况而设计,如分析上海男性用户的留存情况。可以同时对初始事件和回访事件进行条件筛选。通过”筛选条件“可选出符合某些特征的事件,再进行分析。</p>
<h4>回访事件的选择</h4>
<p>回访用户是指满足初始事件用户在特定时间后,完成回访事件的用户。选框中可以选择某“元事件”或“任意事件”。即是在特定日期中做过该回访事件的用户。对于在特定日期中做过任意事件的用户可以理解为“他们在这段时间中活跃过”。</p>
<h2> <a name='ltvanalysis'>LTV分析 </a></h2>
<h3>LTV分析的意义</h3>
<p>LTV是在一定时间内每一位玩家的平均付费。观测及预估用户的成本回收情况如难以收回成本则考虑回炉大改或放弃。</p>
<h3>LTV分析的页面概览</h3>
<p>用户维度可按 角色或设备</p>
<p>订单筛选可筛选符合条件的订单</p>
<p><img src="http://x2debug.legu.cc/static/img/manual/image-20210903161103557.png" referrerpolicy="no-referrer" alt="image-20210903161103557"></p>
</div>
<div class="anchor-point-box">
<div style="color: #2265ff;">X平台流程</div>
<div><a href="#kanbandata">1.数据看板</a></div>
<div><a href="#addkongjian">2.创建空间</a></div>
<div><a href="#editkongjian">3.编辑空间</a></div>
<div><a href="#kanbanadmin">4.看板管理</a></div>
<div><a href="#kanbanfrom">5.看板报表</a></div>
<div><a href="#addfrom">6.报表创建与报表管理的位置</a></div>
<div><a href="#preservationfrom">7.保存报表</a></div>
<div><a href="#looupfrom">8.查找已存报表</a></div>
<div><a href="#deletefrom">9.删除报表</a></div>
<div><a href="#editfrom">10.编辑报表名或更新报表</a></div>
<div><a href="#eventanalysis">11.事件分析</a></div>
<div><a href="#fromsetup">12.报表的设置、展示、下载与保存</a></div>
<div><a href="#retainedanalysis">13.留存分析</a></div>
<div><a href="#ltvanalysis">14.LTV分析</a></div>
</div>
</div>
</body>
</html>

View File

@ -30,28 +30,22 @@
{{# layui.each(d, function(index, item){ }}
<div class="screen-con-bg" id="screen-con-bg{{index}}">
<div class="left-type" id="left-type{{index}}" data-id="left-type{{index}}">
<img src="./static/img/zhanghu.png">
<span>{{item.conditionone}}</span>
</div>
<div class="content-type">
<select class="screen-content-sel" data-id="screen-content-sel{{index}}" id="screen-content-sel{{index}}" name="interest" lay-filter="aihao">
<option>等于</option>
<option>不等于</option>
</select>
<div class="screen-content-time-box" id="screen-content-time-box{{index}}">
<img src="./static/img/rqi.png">
<input class="timechoice" id="time-box-timechoice{{index}}" data-id="time-box-timechoice{{index}}" value="2021-03-11 ~ 2021-04-09" readonly="readonly">
</div>
</div>
<div class="right-box" id="right-box{{index}}">
<input type="type" class="screen-right-txt" data-id="{{index}}" placeholder="输入条件">
</div>
<div class="screen-del" data-id="screen-del{{index}}"></div>
<div class="screen-con-bg">
<div class="left-type" data-index="{{index}}">
<img src="./static/img/zhanghu.png">
<span>{{item.columnDesc}}</span>
</div>
<div class="content-type">
<div class="screen-content-sel" data-index="{{index}}" data-type="{{item.data_type}}">{{item.comparator_name}}</div>
</div>
{{# if(item.comparator != "is null" && item.comparator != "is not null" && item.comparator !="not null" && item.comparator != "range"){ }}
<div class="right-box" >
<input type="type" class="screen-right-txt" data-index={{index}} placeholder="多个用,隔开" value="{{item.strftv}}">
</div>
{{# } }}
<div class="screen-del" data-index="{{index}}"></div>
</div>
{{# }); }}

258
web/src/x.min.js vendored
View File

@ -1558,7 +1558,7 @@ var X = window.X || {
X.pageLogic['adduser'] = {
init : function(){
$(".adduser-top-box img").click(function(){
$(document).off('click','.adduser-top-box img').on('click','.adduser-top-box img',function(){
layer.closeAll();
})
@ -1580,7 +1580,7 @@ var X = window.X || {
// })
var adduserData =[]; //以创建账号
$(".adduser-subject-add-box div").click(function(){
$(document).off('click','.adduser-subject-add-box div').on('click','.adduser-subject-add-box div',function(){
var txt = $(".adduser-subject-add-box input").val();
var titarr = txt.split(",");
for(let i in titarr){
@ -1596,24 +1596,23 @@ var X = window.X || {
$(".adduser-subject-add-box input").val("");
})
$('body').on("click",".adduser-table-title-cz img",function(){
$(document).off('click','.adduser-table-title-cz img').on('click','.adduser-table-title-cz img',function(){
var index = $(this).attr("data-index");
adduserData.splice(index,1);
update();
})
var cprojectindex = '';//获取点击的项目角色的index
var cprojectdiv = '';//获取点击的项目角色的div
$("body").on("click",".adduser-role span",function(){
$(document).off('click','.adduser-role span').on('click','.adduser-role span',function(){
cprojectindex = $(this).attr("data-index");
cprojectdiv = $(this);
})
var cdatarightsindex = "";//获取点击的数据权限index
var cdatarightsdiv = "";//获取点击的数据权限div
$("body").on("click",".adduser-attr span",function(){
$(document).off('click','.adduser-attr span').on('click','.adduser-attr span',function(){
cdatarightsindex = $(this).attr("data-index");
cdatarightsdiv = $(this);
})
@ -1637,12 +1636,11 @@ var X = window.X || {
// })
}
$("body").on("click",".adduser-but-box .adduser-btn",function(){
$(document).off('click','.adduser-but-box .adduser-btn').on('click','.adduser-but-box .adduser-btn',function(){
layer.closeAll();
})
});
$("body").on("click",".adduser-but-box .adduser-btn2",function(){
$(document).off('click','.adduser-but-box .adduser-btn2').on('click','.adduser-but-box .adduser-btn2',function(){
console.log(adduserData);
var namearr = [];
for(let i in adduserData){
@ -1657,8 +1655,7 @@ var X = window.X || {
}else {
layer.msg("请先添加账号");
}
})
});
}
};
@ -4068,8 +4065,8 @@ var X = window.X || {
//筛选
$(document).off('click','.tab-right-box .tjsx').on("click",".tab-right-box .tjsx",function(){
// layer.msg('该功能暂未开放');
// return;
layer.msg('该功能暂未开放');
return;
X.open({
type: 1,
title: false,
@ -4082,6 +4079,21 @@ var X = window.X || {
})
})
// 单个表格筛选
$(document).off('click','.tishi-tjsx').on('click','.tishi-tjsx',function(){
var id = $(this).attr('data-id');
X.open({
type: 1,
title: false,
closeBtn: 0,
shade:0,
shadeClose: false,
offset: [120,270],
url: "screen",
extData : id
})
});
// 侧边栏搜索
$('.sousuo-txt').bind('input propertychange', function() {
var tit = $(this).val()
@ -5698,8 +5710,8 @@ var X = window.X || {
$(document).off('click','.dropdownlist-list').on('click','.dropdownlist-list',function(){
var index = $(this).attr("data-index");
var dataArr = listdata[index];
layer.closeAll();
me.callback && me.callback(dataArr);
layer.close( me.parms.layIndex );
})
}
@ -10087,12 +10099,32 @@ var X = window.X || {
// srczip/logic/screen.js
(function(){
X.pageLogic['screen'] = {
init : function(){
init : function(parms){
var width = window.innerWidth - 270;
$(".screen-box").css("width",width+"px");
var me = this;
this.parms = parms;
this.callback = parms.callback; //选择后执行的回调
var reportid = parms.extData;//获取到上层弹窗传的数据
var my_event,load_filter_props,filter_map;
X.api("data_auth/my_event","get",{},function(d){
my_event = d;
X.api("data_auth/load_filter_props","post",{event_name:my_event[0]['category'][0]['event_name']},function(val){
load_filter_props = val;
X.api("data_auth/filter_map","get",{},function(d){
filter_map = d;
// console.log(my_event);
// console.log(load_filter_props);
// console.log(filter_map);
updatascreencon();
})
})
});
// 显示隐藏添加条件按钮
$(".screen-right-box .img").click(function(){
$(document).off('click','.screen-right-box .img').on('click','.screen-right-box .img',function(){
if($(".screen-buttom-box").css('display') == 'block'){
$(".screen-buttom-box").hide();
$(".screen-left-qei").css('bottom','0px');
@ -10105,175 +10137,103 @@ var X = window.X || {
});
//清空按钮
$(".screen-right-box .qingkong").click(function(){
$(document).off('click','.screen-right-box .qingkong').on('click','.screen-right-box .qingkong',function(){
layer.closeAll();
});
$(".screen-left-box .screen-left-qei").click(function(){
$(document).off('click','.screen-left-box .screen-left-qei').on('click','.screen-left-box .screen-left-qei',function(){
if($(this).html() == "且"){
$(this).html("或");
}else {
$(this).html("且");
}
})
});
var dataid = 1;//给添加的数据一个id方便后面好对应数据
//默认开始时有一个数据
var data = [];
// {
// 'dataid': 0,
// 'conditionone': '来源渠道' ,
// 'conditiononeid': '1' ,
// 'conditiontwo':'等于' ,
// 'conditiontwotime': true ,
// 'conditiontwotimestart':'0000000000',
// 'conditionthree':'' }
//初始一个数据
// X.laytpldata ("#screen-con-box-dot" ,data,".screen-con-box");
// X.laydropdown(rightboxid,arr,function(d){
// console.log(d);
// });
updatascreencon();
function updatascreencon(){
var index = dataid;
var Divcon = `<div class="screen-con-bg" id="screen-con-bg`+index+`">
<div class="left-type" id="left-type`+index+`" data-id="left-type`+index+`">
<img src="./static/img/zhanghu.png">
<span>来源渠道</span>
</div>
<div class="content-type">
<select class="screen-content-sel" data-id="screen-content-sel`+index+`" id="screen-content-sel`+index+`" name="interest" lay-filter="aihao">
<option>等于</option>
<option>不等于</option>
</select>
<div class="screen-content-time-box" id="screen-content-time-box`+index+`">
<img src="./static/img/rqi.png">
<input class="timechoice" id="time-box-timechoice`+index+`" data-id="time-box-timechoice`+index+`" value="2021-03-11 ~ 2021-04-09" readonly="readonly">
</div>
</div>
<div class="right-box" id="right-box`+index+`">
<input type="type" class="screen-right-txt" data-id="`+index+`" placeholder="输入条件">
</div>
<div class="screen-del" data-id="screen-del`+index+`"></div>
</div>`
$(".screen-con-box").append(Divcon);
var rightboxid = "#right-box"+index+" .screen-right-txt";
X.laydropdown(rightboxid,X.DATA.search.condition,function(d){
$(rightboxid).val(d.title);
});
// 添加数据
var arr = {
'dataid':dataid++,
'conditionone': '来源渠道' ,
'conditiononeid': '1' ,
'conditiontwo':'等于' ,
'conditiontwotime': true ,
'conditiontwotimestart':'0000000000',
'conditionthree':''
};
data.push(arr);
X.daterender("#time-box-timechoice"+index);
if(data.length > 1){
$(".screen-left-qei").show();
}
}
var drr={
"columnName":load_filter_props[0]['category'][0]['id'],//事件id
"columnDesc":load_filter_props[0]['category'][0]['title'],//事件中文显示
'data_type':load_filter_props[0]['category'][0]['data_type'],//类型
'comparator_name':'等于',//默认等于
"comparator":'==',//符号id
"ftv":[],//条件
"strftv":'',//显示条件
"section":[-1,1],//区间
"tableType":load_filter_props[0]['id']
};
data.push(drr);
X.laytpldata("#screen-con-box-dot",data,".screen-con-box");
};
//条件添加按钮
$(".screen-buttom-box .screen-buttom").click(function(){
$(document).off('click','.screen-buttom-box .screen-buttom').on('click','.screen-buttom-box .screen-buttom',function(){
updatascreencon();
});
X.daterender("#time-box-timechoice1");
$(document).on("click",".screen-con-bg .left-type",function(){
$(document).off('click','.screen-con-bg .left-type').on('click','.screen-con-bg .left-type',function(){
var obj = $(this);
var offset = obj.offset();
var index = obj.attr('data-index');
//点击按钮,数据,向左偏移,向右偏移
X.querycriteriapop(X.DATA.search,'category',offset.left,offset.top+obj.height(),function(val){
var id = obj.attr("data-id");
$("#"+id+" "+"span").html(val.title); //修改筛选项一
var idarr = id.split('type');
var index = idarr[1]; //获取到点击的第几个
data[index]['conditionone'] = val.title; //修改数组里面title的值
data[index]['conditiononeid'] = val.id;
if(val.type == "time"){
$("#screen-content-time-box"+index).show();//显示时间选择
$("#screen-content-sel"+index).hide();//隐藏下拉框
$("#right-box"+index).hide();//隐藏文本框
data[index]['conditiontwotimestart'] = $("#time-box-timechoice"+index).val();
}else {
$("#screen-content-time-box"+index).hide();//隐藏时间选择
$("#screen-content-sel"+index).show();//显示下拉框
var txtval = $("#screen-content-sel"+index).val();
if(txtval == 4 || txtval == 5 ){
$("#right-box"+index).hide();//隐藏文本框
}else {
$("#right-box"+index).show();//隐藏文本框
}
}
// console.log(data);
X.querycriteriapop(load_filter_props,'category',offset.left,offset.top+obj.height(),function(val){
obj.html(val.title);
data[index]['columnDesc'] = val.title;
data[index]['columnName'] = val.id;
data[index]['data_type'] = val.type;
data[index]['tableType'] = val.table_type;
X.laytpldata("#screen-con-box-dot",data,".screen-con-box");
});
});
//下拉选项触发事件
$(".screen-content-sel").change(function(){
var val = $(this).val();
var dataid = $(this).attr("data-id");
var arr = dataid.split('sel');
var index = arr[1];
data[index]['conditiontwo'] = val;
// console.log(data);
$(document).off('click','.screen-content-sel').on('click','.screen-content-sel',function(){
var obj = $(this);
var offset = obj.offset();
var index = obj.attr('data-index');
var type =obj.attr('data-type');
X.parametersopen(filter_map[type],'dropdownlist',[offset.top+obj.height(),offset.left],function(val){
obj.html(val.title);
data[index]['comparator_name'] = val.title;
data[index]['comparator'] = val.id;
if(val.id == "range"){
data[index]['ftv'] = [-1,1];
}
X.laytpldata("#screen-con-box-dot",data,".screen-con-box");
})
});
//时间选择框数字发生改变
$('.screen-content-time-box .timechoice').bind('input propertychange', function() {
var txt = $(this).val()
var dataid = $(this).attr("data-id");
var arr = dataid.split('timechoice');
var index = arr[1];
data[index]['conditiontwotimestart'] = txt;
// console.log(data);
})
//文本框条件输入触发事件
$('.screen-right-txt').bind('input propertychange', function() {
var txt = $(this).val();
var index = $(this).attr("data-id");
data[index]['conditionthree'] = txt;
console.log(data);
})
$(document).off('click','.screen-right-txt').on('change','.screen-right-txt',function(){
var index = $(this).attr('data-index');
var val = $(this).val();
var valarr = val.split(",");
data[index]['ftv']=valarr;
data[index]['strftv']=val;
});
//删除按钮
$(document).on("click",".screen-con-bg .screen-del",function(){
$(document).off('click','.screen-con-bg .screen-del').on('click','.screen-con-bg .screen-del',function(){
var index = $(this).attr('data-index');
if(data.length > 1){
var dataid = $(this).attr('data-id');
var arr = dataid.split('del');
var index = arr[1];
for(let i in data){
if(index == data[i]['dataid']){
data.splice(i, 1);
$("#screen-con-bg"+index).remove();
}
}
if(data.length == 1){
$(".screen-left-box .screen-left-qei").hide();
}
data.splice(index, 1);
X.laytpldata("#screen-con-box-dot",data,".screen-con-box");
}else {
layer.closeAll();
}
})
});
// 计算按钮
$(".screen-right-box .jisuan").click(function(){
$(document).off('click','.screen-right-box .jisuan').on('click','.screen-right-box .jisuan',function(){
console.log(data);
// 刷新看板里的数据暂时没有
})
console.log(reportid);
// 刷新看板里的数据暂时没有
});
}
};

View File

@ -2,7 +2,7 @@
X.pageLogic['adduser'] = {
init : function(){
$(".adduser-top-box img").click(function(){
$(document).off('click','.adduser-top-box img').on('click','.adduser-top-box img',function(){
layer.closeAll();
})
@ -24,7 +24,7 @@
// })
var adduserData =[]; //以创建账号
$(".adduser-subject-add-box div").click(function(){
$(document).off('click','.adduser-subject-add-box div').on('click','.adduser-subject-add-box div',function(){
var txt = $(".adduser-subject-add-box input").val();
var titarr = txt.split(",");
for(let i in titarr){
@ -40,24 +40,23 @@
$(".adduser-subject-add-box input").val("");
})
$('body').on("click",".adduser-table-title-cz img",function(){
$(document).off('click','.adduser-table-title-cz img').on('click','.adduser-table-title-cz img',function(){
var index = $(this).attr("data-index");
adduserData.splice(index,1);
update();
})
var cprojectindex = '';//获取点击的项目角色的index
var cprojectdiv = '';//获取点击的项目角色的div
$("body").on("click",".adduser-role span",function(){
$(document).off('click','.adduser-role span').on('click','.adduser-role span',function(){
cprojectindex = $(this).attr("data-index");
cprojectdiv = $(this);
})
var cdatarightsindex = "";//获取点击的数据权限index
var cdatarightsdiv = "";//获取点击的数据权限div
$("body").on("click",".adduser-attr span",function(){
$(document).off('click','.adduser-attr span').on('click','.adduser-attr span',function(){
cdatarightsindex = $(this).attr("data-index");
cdatarightsdiv = $(this);
})
@ -81,12 +80,11 @@
// })
}
$("body").on("click",".adduser-but-box .adduser-btn",function(){
$(document).off('click','.adduser-but-box .adduser-btn').on('click','.adduser-but-box .adduser-btn',function(){
layer.closeAll();
})
});
$("body").on("click",".adduser-but-box .adduser-btn2",function(){
$(document).off('click','.adduser-but-box .adduser-btn2').on('click','.adduser-but-box .adduser-btn2',function(){
console.log(adduserData);
var namearr = [];
for(let i in adduserData){
@ -101,8 +99,7 @@
}else {
layer.msg("请先添加账号");
}
})
});
}
};

View File

@ -127,8 +127,8 @@
//筛选
$(document).off('click','.tab-right-box .tjsx').on("click",".tab-right-box .tjsx",function(){
// layer.msg('该功能暂未开放');
// return;
layer.msg('该功能暂未开放');
return;
X.open({
type: 1,
title: false,
@ -141,6 +141,21 @@
})
})
// 单个表格筛选
$(document).off('click','.tishi-tjsx').on('click','.tishi-tjsx',function(){
var id = $(this).attr('data-id');
X.open({
type: 1,
title: false,
closeBtn: 0,
shade:0,
shadeClose: false,
offset: [120,270],
url: "screen",
extData : id
})
});
// 侧边栏搜索
$('.sousuo-txt').bind('input propertychange', function() {
var tit = $(this).val()

View File

@ -12,8 +12,8 @@
$(document).off('click','.dropdownlist-list').on('click','.dropdownlist-list',function(){
var index = $(this).attr("data-index");
var dataArr = listdata[index];
layer.closeAll();
me.callback && me.callback(dataArr);
layer.close( me.parms.layIndex );
})
}

View File

@ -1,11 +1,31 @@
(function(){
X.pageLogic['screen'] = {
init : function(){
init : function(parms){
var width = window.innerWidth - 270;
$(".screen-box").css("width",width+"px");
var me = this;
this.parms = parms;
this.callback = parms.callback; //选择后执行的回调
var reportid = parms.extData;//获取到上层弹窗传的数据
var my_event,load_filter_props,filter_map;
X.api("data_auth/my_event","get",{},function(d){
my_event = d;
X.api("data_auth/load_filter_props","post",{event_name:my_event[0]['category'][0]['event_name']},function(val){
load_filter_props = val;
X.api("data_auth/filter_map","get",{},function(d){
filter_map = d;
// console.log(my_event);
// console.log(load_filter_props);
// console.log(filter_map);
updatascreencon();
})
})
});
// 显示隐藏添加条件按钮
$(".screen-right-box .img").click(function(){
$(document).off('click','.screen-right-box .img').on('click','.screen-right-box .img',function(){
if($(".screen-buttom-box").css('display') == 'block'){
$(".screen-buttom-box").hide();
$(".screen-left-qei").css('bottom','0px');
@ -18,175 +38,103 @@
});
//清空按钮
$(".screen-right-box .qingkong").click(function(){
$(document).off('click','.screen-right-box .qingkong').on('click','.screen-right-box .qingkong',function(){
layer.closeAll();
});
$(".screen-left-box .screen-left-qei").click(function(){
$(document).off('click','.screen-left-box .screen-left-qei').on('click','.screen-left-box .screen-left-qei',function(){
if($(this).html() == "且"){
$(this).html("或");
}else {
$(this).html("且");
}
})
});
var dataid = 1;//给添加的数据一个id方便后面好对应数据
//默认开始时有一个数据
var data = [];
// {
// 'dataid': 0,
// 'conditionone': '来源渠道' ,
// 'conditiononeid': '1' ,
// 'conditiontwo':'等于' ,
// 'conditiontwotime': true ,
// 'conditiontwotimestart':'0000000000',
// 'conditionthree':'' }
//初始一个数据
// X.laytpldata ("#screen-con-box-dot" ,data,".screen-con-box");
// X.laydropdown(rightboxid,arr,function(d){
// console.log(d);
// });
updatascreencon();
function updatascreencon(){
var index = dataid;
var Divcon = `<div class="screen-con-bg" id="screen-con-bg`+index+`">
<div class="left-type" id="left-type`+index+`" data-id="left-type`+index+`">
<img src="./static/img/zhanghu.png">
<span>来源渠道</span>
</div>
<div class="content-type">
<select class="screen-content-sel" data-id="screen-content-sel`+index+`" id="screen-content-sel`+index+`" name="interest" lay-filter="aihao">
<option>等于</option>
<option>不等于</option>
</select>
<div class="screen-content-time-box" id="screen-content-time-box`+index+`">
<img src="./static/img/rqi.png">
<input class="timechoice" id="time-box-timechoice`+index+`" data-id="time-box-timechoice`+index+`" value="2021-03-11 ~ 2021-04-09" readonly="readonly">
</div>
</div>
<div class="right-box" id="right-box`+index+`">
<input type="type" class="screen-right-txt" data-id="`+index+`" placeholder="输入条件">
</div>
<div class="screen-del" data-id="screen-del`+index+`"></div>
</div>`
$(".screen-con-box").append(Divcon);
var rightboxid = "#right-box"+index+" .screen-right-txt";
X.laydropdown(rightboxid,X.DATA.search.condition,function(d){
$(rightboxid).val(d.title);
});
// 添加数据
var arr = {
'dataid':dataid++,
'conditionone': '来源渠道' ,
'conditiononeid': '1' ,
'conditiontwo':'等于' ,
'conditiontwotime': true ,
'conditiontwotimestart':'0000000000',
'conditionthree':''
};
data.push(arr);
X.daterender("#time-box-timechoice"+index);
if(data.length > 1){
$(".screen-left-qei").show();
}
}
var drr={
"columnName":load_filter_props[0]['category'][0]['id'],//事件id
"columnDesc":load_filter_props[0]['category'][0]['title'],//事件中文显示
'data_type':load_filter_props[0]['category'][0]['data_type'],//类型
'comparator_name':'等于',//默认等于
"comparator":'==',//符号id
"ftv":[],//条件
"strftv":'',//显示条件
"section":[-1,1],//区间
"tableType":load_filter_props[0]['id']
};
data.push(drr);
X.laytpldata("#screen-con-box-dot",data,".screen-con-box");
};
//条件添加按钮
$(".screen-buttom-box .screen-buttom").click(function(){
$(document).off('click','.screen-buttom-box .screen-buttom').on('click','.screen-buttom-box .screen-buttom',function(){
updatascreencon();
});
X.daterender("#time-box-timechoice1");
$(document).on("click",".screen-con-bg .left-type",function(){
$(document).off('click','.screen-con-bg .left-type').on('click','.screen-con-bg .left-type',function(){
var obj = $(this);
var offset = obj.offset();
var index = obj.attr('data-index');
//点击按钮,数据,向左偏移,向右偏移
X.querycriteriapop(X.DATA.search,'category',offset.left,offset.top+obj.height(),function(val){
var id = obj.attr("data-id");
$("#"+id+" "+"span").html(val.title); //修改筛选项一
var idarr = id.split('type');
var index = idarr[1]; //获取到点击的第几个
data[index]['conditionone'] = val.title; //修改数组里面title的值
data[index]['conditiononeid'] = val.id;
if(val.type == "time"){
$("#screen-content-time-box"+index).show();//显示时间选择
$("#screen-content-sel"+index).hide();//隐藏下拉框
$("#right-box"+index).hide();//隐藏文本框
data[index]['conditiontwotimestart'] = $("#time-box-timechoice"+index).val();
}else {
$("#screen-content-time-box"+index).hide();//隐藏时间选择
$("#screen-content-sel"+index).show();//显示下拉框
var txtval = $("#screen-content-sel"+index).val();
if(txtval == 4 || txtval == 5 ){
$("#right-box"+index).hide();//隐藏文本框
}else {
$("#right-box"+index).show();//隐藏文本框
}
}
// console.log(data);
X.querycriteriapop(load_filter_props,'category',offset.left,offset.top+obj.height(),function(val){
obj.html(val.title);
data[index]['columnDesc'] = val.title;
data[index]['columnName'] = val.id;
data[index]['data_type'] = val.type;
data[index]['tableType'] = val.table_type;
X.laytpldata("#screen-con-box-dot",data,".screen-con-box");
});
});
//下拉选项触发事件
$(".screen-content-sel").change(function(){
var val = $(this).val();
var dataid = $(this).attr("data-id");
var arr = dataid.split('sel');
var index = arr[1];
data[index]['conditiontwo'] = val;
// console.log(data);
$(document).off('click','.screen-content-sel').on('click','.screen-content-sel',function(){
var obj = $(this);
var offset = obj.offset();
var index = obj.attr('data-index');
var type =obj.attr('data-type');
X.parametersopen(filter_map[type],'dropdownlist',[offset.top+obj.height(),offset.left],function(val){
obj.html(val.title);
data[index]['comparator_name'] = val.title;
data[index]['comparator'] = val.id;
if(val.id == "range"){
data[index]['ftv'] = [-1,1];
}
X.laytpldata("#screen-con-box-dot",data,".screen-con-box");
})
});
//时间选择框数字发生改变
$('.screen-content-time-box .timechoice').bind('input propertychange', function() {
var txt = $(this).val()
var dataid = $(this).attr("data-id");
var arr = dataid.split('timechoice');
var index = arr[1];
data[index]['conditiontwotimestart'] = txt;
// console.log(data);
})
//文本框条件输入触发事件
$('.screen-right-txt').bind('input propertychange', function() {
var txt = $(this).val();
var index = $(this).attr("data-id");
data[index]['conditionthree'] = txt;
console.log(data);
})
$(document).off('click','.screen-right-txt').on('change','.screen-right-txt',function(){
var index = $(this).attr('data-index');
var val = $(this).val();
var valarr = val.split(",");
data[index]['ftv']=valarr;
data[index]['strftv']=val;
});
//删除按钮
$(document).on("click",".screen-con-bg .screen-del",function(){
$(document).off('click','.screen-con-bg .screen-del').on('click','.screen-con-bg .screen-del',function(){
var index = $(this).attr('data-index');
if(data.length > 1){
var dataid = $(this).attr('data-id');
var arr = dataid.split('del');
var index = arr[1];
for(let i in data){
if(index == data[i]['dataid']){
data.splice(i, 1);
$("#screen-con-bg"+index).remove();
}
}
if(data.length == 1){
$(".screen-left-box .screen-left-qei").hide();
}
data.splice(index, 1);
X.laytpldata("#screen-con-box-dot",data,".screen-con-box");
}else {
layer.closeAll();
}
})
});
// 计算按钮
$(".screen-right-box .jisuan").click(function(){
$(document).off('click','.screen-right-box .jisuan').on('click','.screen-right-box .jisuan',function(){
console.log(data);
// 刷新看板里的数据暂时没有
})
console.log(reportid);
// 刷新看板里的数据暂时没有
});
}
};

View File

@ -541,9 +541,9 @@ label:not(.form-check-label):not(.custom-file-label) { font-weight: 400; }
.screen-con-box { width: calc(100% - 212px); display: flex; flex-flow: row wrap; align-items: center }
.screen-con-bg { display: flex; align-items: center; min-height: 36px; color: #42546d; margin: 4px 4px 0 0; padding: 2px 24px 2px 4px; }
.screen-con-bg:hover > .screen-del { display: block; }
.screen-con-bg .left-type { background-color: #f0f2f5; border-radius: 2px; cursor: pointer; padding: 0 6px; min-width: 40px; font-size: 13px; line-height: 29px; height: 28px; }
.screen-con-bg .left-type { background-color: #f0f2f5; color: #67729d; border-radius: 2px; cursor: pointer; padding: 0 6px; min-width: 40px; font-size: 13px; line-height: 29px; height: 28px; }
.screen-con-bg .left-type img { position: relative; top: -2px; }
.screen-con-bg .content-type { cursor: pointer; height: 28px; margin-left: 4px; padding: 0 6px; color: #67729d; background-color: #f0f2f5; }
.screen-con-bg .content-type { cursor: pointer; height: 28px; line-height: 28px; margin-left: 4px; padding: 0 6px; color: #67729d; background-color: #f0f2f5; }
.screen-con-bg .content-type .screen-content-sel { height: 28px; border: 0; background-color: #f0f2f5; color: #67729d; }
.screen-con-bg .right-box { margin-left: 4px; background-color: #f0f2f5; padding: 0 6px; color: #67729d; height: 28px; }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 377 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 149 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 173 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 169 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 146 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 617 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 196 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

Some files were not shown because too many files have changed in this diff Show More