提交
790
web/index - 副本.html
Normal file
@ -0,0 +1,790 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<!-- <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> -->
|
||||||
|
<title>demo</title>
|
||||||
|
<script src="./srczip/jquery.min.js"></script>
|
||||||
|
<script src="./srczip/moment.min.js"></script>
|
||||||
|
<script src="./srczip/daterangepicker.min.js"></script>
|
||||||
|
<link rel="stylesheet" href="./layui__/css/layui.css">
|
||||||
|
<link rel="stylesheet" href="./static/css/style.css">
|
||||||
|
<link rel="stylesheet" href="./static/css/daterangepicker.css">
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<!-- 你的HTML代码 -->
|
||||||
|
<body class="layui-layout-body">
|
||||||
|
<div class="layui-layout layui-layout-admin">
|
||||||
|
<div class="layui-header">
|
||||||
|
<div class="layui-logo">
|
||||||
|
<img src="./static/img/logo.png" style="width:40px">
|
||||||
|
</div>
|
||||||
|
<ul class="layui-nav layui-project">
|
||||||
|
<li class="layui-nav-item">
|
||||||
|
<a href="javascript:;">放置类游戏DEMO</a>
|
||||||
|
<dl class="layui-nav-child">
|
||||||
|
|
||||||
|
<dd><a href="">卡牌游戏DEMO</a></dd>
|
||||||
|
<dd><a href="">MMO游戏DEMO</a></dd>
|
||||||
|
<dd><a href="">放置类游戏DEMO</a></dd>
|
||||||
|
</dl>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<!-- 头部区域(可配合layui已有的水平导航) -->
|
||||||
|
<ul class="layui-nav layui-layout-left qvjiantou">
|
||||||
|
<li class="layui-nav-item">
|
||||||
|
<a href="javascript:;">数据看板</a>
|
||||||
|
</li>
|
||||||
|
<li class="layui-nav-item">
|
||||||
|
<a href="javascript:;">行为分析</a>
|
||||||
|
<dl class="layui-nav-child">
|
||||||
|
<dd><a href="">事件分析</a></dd>
|
||||||
|
<dd><a href="">留存分析</a></dd>
|
||||||
|
<dd><a href="">漏斗分析</a></dd>
|
||||||
|
<dd><a href="">分布分析</a></dd>
|
||||||
|
<dd><a href="">路径分析</a></dd>
|
||||||
|
</dl>
|
||||||
|
</li>
|
||||||
|
<li class="layui-nav-item">
|
||||||
|
<a href="javascript:;">用户分析</a>
|
||||||
|
<dl class="layui-nav-child">
|
||||||
|
<dd><a href="">属性分析</a></dd>
|
||||||
|
<dd><a href="">用户分群</a></dd>
|
||||||
|
<dd><a href="">用户标签</a></dd>
|
||||||
|
</dl>
|
||||||
|
</li>
|
||||||
|
<li class="layui-nav-item">
|
||||||
|
<a href="javascript:;">数据管理</a>
|
||||||
|
<dl class="layui-nav-child">
|
||||||
|
<dd><a href="">事件管理</a></dd>
|
||||||
|
<dd><a href="">事件属性管理</a></dd>
|
||||||
|
<dd><a href="">用户属性管理</a></dd>
|
||||||
|
<dd><a href="">预警管理</a></dd>
|
||||||
|
</dl>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<ul class="layui-nav layui-layout-right">
|
||||||
|
<li class="layui-nav-item souduo" id="search">
|
||||||
|
<img src="./static/img/fangdaj.png" style="width: 25px;"> <span style="color: rgba(255,255,255,.7);">用户搜索</span>
|
||||||
|
</li>
|
||||||
|
<li class="layui-nav-item">
|
||||||
|
<a href="javascript:;">设置</a>
|
||||||
|
<dl class="layui-nav-child">
|
||||||
|
<dd><a href="">个人设置</a></dd>
|
||||||
|
<dd><a href="">项目管理</a></dd>
|
||||||
|
<dd><a href="">系统管理</a></dd>
|
||||||
|
<dd><a href="">退出登录</a></dd>
|
||||||
|
</dl>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-side layui-bg-black">
|
||||||
|
<div class="layui-side-scroll">
|
||||||
|
<!-- 左侧导航区域(可配合layui已有的垂直导航) -->
|
||||||
|
|
||||||
|
<div class="sousuo-box">
|
||||||
|
<div class="sousuo" id='search'>
|
||||||
|
<img src="./static/img/fangdaj.png" />
|
||||||
|
<input type="text" placeholder="搜索看板" />
|
||||||
|
</div>
|
||||||
|
<div style="display: flex; align-items: center;">
|
||||||
|
<img src="./static/img/caidan.png" class="kbgl" title="看板管理" id="kanbanbtn"/>
|
||||||
|
<div class='chuangjian' title="" id='chuangjian'>+</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- 看板管理 -->
|
||||||
|
<div class="ant-drawer-content-wrapper" id='kanban'>
|
||||||
|
<div class="zhanwei"></div>
|
||||||
|
<!-- 授课计划分解卡号是的开发哈数据库的 -->
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 新建文件 -->
|
||||||
|
<div class="zhezhao_bg" id='zhezhao_bg' onclick="guanbitanchuang()"></div>
|
||||||
|
<div class="newskanban_box" id="newskanban_box">
|
||||||
|
<ul class="tant-dropdown">
|
||||||
|
<li onclick="newkanban()">
|
||||||
|
<img src="./static/img/tishi.png">
|
||||||
|
<span>新建看板</span>
|
||||||
|
</li>
|
||||||
|
<li onclick="newwenjian()">
|
||||||
|
<img src="./static/img/tishi.png">
|
||||||
|
<span>新建文件夹</span>
|
||||||
|
</li>
|
||||||
|
<div class="tant-xian"></div>
|
||||||
|
<li onclick="establishkongjian()">
|
||||||
|
<img src="./static/img/tishi.png">
|
||||||
|
<span>创建空间</span>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<img src="./static/img/tishi.png">
|
||||||
|
<span>导出看板</span>
|
||||||
|
</li>
|
||||||
|
<div class="tant-xian"></div>
|
||||||
|
<li>
|
||||||
|
<img src="./static/img/tishi.png">
|
||||||
|
<span>导入看板</span>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<!-- 侧边栏看板 -->
|
||||||
|
<ul class="layui-nav layui-nav-tree" lay-filter="test">
|
||||||
|
<li class="layui-nav-item layui-nav-itemed">
|
||||||
|
<a class="fontcolor" href="javascript:;">我的看板</a>
|
||||||
|
<dl class="layui-nav-child" id='mykanban'>
|
||||||
|
|
||||||
|
</dl>
|
||||||
|
</li>
|
||||||
|
<li class="layui-nav-item">
|
||||||
|
<a href="javascript:;" class="fontcolor">项目空间</a>
|
||||||
|
<dl class="layui-nav-child" id="kongjian">
|
||||||
|
<!-- <li class="layui-nav-item">
|
||||||
|
<a href="javascript:;" class="fontcolor mykanban category"> <i class="layui-icon layui-icon-template-1"></i> 测试 <img src="./static/img/renyuan.png"/></a>
|
||||||
|
<dl class="layui-nav-child">
|
||||||
|
<li class="layui-nav-item">
|
||||||
|
<a href="javascript:;" class="fontcolor mykanban second category"> <i class="layui-icon layui-icon-file-b"></i> 文件 <img src="./static/img/gengduo.png" onclick="TabOperation(this,'wenjian')"/></a>
|
||||||
|
<dl class="layui-nav-child">
|
||||||
|
<dd class="layui-left-dd"><a href="javascript:;" class="fontcolor second3 level">核心数据 <img src="./static/img/gengduo.png" onclick="TabOperation(this,'baobiao')" alt=""></a></dd>
|
||||||
|
</dl>
|
||||||
|
</li>
|
||||||
|
<dd class="layui-left-dd"><a href="javascript:;" class="fontcolor second level">实时数据 <img src="./static/img/gengduo.png" onclick="TabOperation(this,'baobiao')" alt=""></a></dd>
|
||||||
|
</dl>
|
||||||
|
</li>
|
||||||
|
<li class="layui-nav-item">
|
||||||
|
<a href="javascript:;" class="fontcolor mykanban category"> <i class="layui-icon layui-icon-template-1"></i> DEMO空间 <img src="./static/img/renyuan.png"/></a>
|
||||||
|
<dl class="layui-nav-child">
|
||||||
|
<dd class="layui-left-dd"><a href="javascript:;" class="fontcolor second level">核心数据 <img src="./static/img/gengduo.png" onclick="TabOperation(this,'baobiao')" alt=""></a></dd>
|
||||||
|
<dd class="layui-left-dd"><a href="javascript:;" class="fontcolor second level">实时数据 <img src="./static/img/gengduo.png" onclick="TabOperation(this,'baobiao')" alt=""></a></dd>
|
||||||
|
</dl>
|
||||||
|
</li> -->
|
||||||
|
</dl>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-body">
|
||||||
|
<!-- 内容主体区域 -->
|
||||||
|
<div class="tab-box">
|
||||||
|
<div class="tab-tit">活跃用户</div>
|
||||||
|
|
||||||
|
<div class="tab-right-box">
|
||||||
|
<div class="img-box" title="时间筛选">
|
||||||
|
<img src="./static/img/rli.png" />
|
||||||
|
</div>
|
||||||
|
<div class="img-box" title="条件筛选">
|
||||||
|
<img src="./static/img/guolv.png" />
|
||||||
|
</div>
|
||||||
|
<div class="img-box" title="最后更新:2021-03-26 01:00:00">
|
||||||
|
<img src="./static/img/gengxin.png" />
|
||||||
|
</div>
|
||||||
|
<div class="img-box" title="共享">
|
||||||
|
<img src="./static/img/fenxiang.png" />
|
||||||
|
</div>
|
||||||
|
<div class="img-box" title="设置">
|
||||||
|
<img src="./static/img/shezhi.png" />
|
||||||
|
</div>
|
||||||
|
<div class="baobiao" title="报表">
|
||||||
|
<img src="./static/img/baobiao.png">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div style="padding: 15px;">
|
||||||
|
|
||||||
|
<div class="layui-row layui-col-space15">
|
||||||
|
<div class="layui-col-md6" id="data1" onmousemove="moveaction('data1')" onmouseout="outaction('data1')">
|
||||||
|
<div class="layui-card">
|
||||||
|
<div class="row-top">
|
||||||
|
<div class="row-tit">
|
||||||
|
<p><a href="#">日活跃用户数</a></p>
|
||||||
|
<div class="tishi" title="活跃用户可以通过“登录.触发用户数”来进行计算,即有登录行为的用户的去重数.">
|
||||||
|
<img src="./static/img/tishi.png" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="control">
|
||||||
|
<div class="action-box" >
|
||||||
|
<div class="tishi" title="更新">
|
||||||
|
<img src="./static/img/gengxin.png" />
|
||||||
|
</div>
|
||||||
|
<div class="tishi" title="探索">
|
||||||
|
<img src="./static/img/fangda.png" />
|
||||||
|
</div>
|
||||||
|
<div class="tishi" title="更多">
|
||||||
|
<img src="./static/img/gengduo.png" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="condition-box">
|
||||||
|
<div class="time-cond">
|
||||||
|
<span>过去30天</span>
|
||||||
|
<div class="xian"></div>
|
||||||
|
<span>按天</span>
|
||||||
|
</div>
|
||||||
|
<div class="chart control">
|
||||||
|
<img src="./static/img/qvshitu.png" /> <span>趋势图</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<p class="dqtime">2021-03-23(二)</p>
|
||||||
|
<div class="data-box">
|
||||||
|
<div style="display: flex; align-items: center;">
|
||||||
|
<div class="data-num">351<span>人</span></div>
|
||||||
|
<div class="proportion">
|
||||||
|
<div class="proportion-data">较环比 <div class="sanjiao"></div><span>5.4%</span></div>
|
||||||
|
<div class="proportion-data">较同比 <div class="sanjiao"></div><span>5.4%</span></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="thesum">
|
||||||
|
<div class="thesum-box">
|
||||||
|
<div class="thesum-data">总和 <span>12074</span>人</div>
|
||||||
|
<div class="thesum-data">均值 <span>402.47</span>人</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="echarts-box">
|
||||||
|
<div id="charts" class="echarts"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-col-md6" id="data2" onmousemove="moveaction('data2')" onmouseout="outaction('data2')">
|
||||||
|
<div class="layui-card">
|
||||||
|
<div class="row-top">
|
||||||
|
<div class="row-tit">
|
||||||
|
<p><a href="#">日活跃用户数</a></p>
|
||||||
|
<div class="tishi" title="活跃用户数可以通过“登录.触发用户数”来进行计算,即有登录行为的用户的去重数。">
|
||||||
|
<img src="./static/img/tishi.png" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="control">
|
||||||
|
<div class="action-box" >
|
||||||
|
<div class="tishi" title="更新">
|
||||||
|
<img src="./static/img/gengxin.png" />
|
||||||
|
</div>
|
||||||
|
<div class="tishi" title="探索">
|
||||||
|
<img src="./static/img/fangda.png" />
|
||||||
|
</div>
|
||||||
|
<div class="tishi" title="更多">
|
||||||
|
<img src="./static/img/gengduo.png" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="condition-box">
|
||||||
|
<div class="time-cond">
|
||||||
|
<span>过去30天</span>
|
||||||
|
<div class="xian"></div>
|
||||||
|
<span>按天</span>
|
||||||
|
</div>
|
||||||
|
<div class="chart control">
|
||||||
|
<img src="./static/img/qvshitu.png" /> <span>趋势图</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="table-box">
|
||||||
|
<table class="layui-hide" id="test"></table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-footer">
|
||||||
|
<!-- 底部固定区域 -->
|
||||||
|
© layui.com - 底部固定区域
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 搜索弹出层 -->
|
||||||
|
<div class="mask_box" id="mask_box"></div>
|
||||||
|
<div class="search_pop " id="search_pop">
|
||||||
|
<div class="search_top">
|
||||||
|
<div class="search_left">
|
||||||
|
<div class="zhanghu_box" title="账户ID" id='zhanghu_box'>
|
||||||
|
<img src="./static/img/zhanghu.png">
|
||||||
|
<span>账户ID</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<select class="judge_box" name="interest" lay-filter="aihao" id="judge_box">
|
||||||
|
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<div class="time-box">
|
||||||
|
<img src="./static/img/rqi.png">
|
||||||
|
<input class="timechoice" value="2021-03-11 ~ 2021-04-09"></input>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<input type="text" class="search_txt" id="judge_input"/>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="searcg_but">搜 索</div>
|
||||||
|
</div>
|
||||||
|
<div class="search_data">
|
||||||
|
<div class="search_data_con">
|
||||||
|
<div style="margin-left: 20px;">163007711</div>
|
||||||
|
<div style="margin-right: 20px;"> <img src="./static/img/yonghu.png" /> <span>163007711</span> </div>
|
||||||
|
</div>
|
||||||
|
<div class="search_data_con">
|
||||||
|
<div style="margin-left: 20px;">163007711</div>
|
||||||
|
<div style="margin-right: 20px;"> <img src="./static/img/yonghu.png" /> <span>163007711</span> </div>
|
||||||
|
</div>
|
||||||
|
<div class="search_data_con">
|
||||||
|
<div style="margin-left: 20px;">163007711</div>
|
||||||
|
<div style="margin-right: 20px;"> <img src="./static/img/yonghu.png" /> <span>163007711</span> </div>
|
||||||
|
</div>
|
||||||
|
<div class="search_data_con">
|
||||||
|
<div style="margin-left: 20px;">163007711</div>
|
||||||
|
<div style="margin-right: 20px;"> <img src="./static/img/yonghu.png" /> <span>163007711</span> </div>
|
||||||
|
</div>
|
||||||
|
<div class="search_data_con">
|
||||||
|
<div style="margin-left: 20px;">163007711</div>
|
||||||
|
<div style="margin-right: 20px;"> <img src="./static/img/yonghu.png" /> <span>163007711</span> </div>
|
||||||
|
</div>
|
||||||
|
<div class="search_data_con">
|
||||||
|
<div style="margin-left: 20px;">163007711</div>
|
||||||
|
<div style="margin-right: 20px;"> <img src="./static/img/yonghu.png" /> <span>163007711</span> </div>
|
||||||
|
</div>
|
||||||
|
<div class="search_data_con">
|
||||||
|
<div style="margin-left: 20px;">163007711</div>
|
||||||
|
<div style="margin-right: 20px;"> <img src="./static/img/yonghu.png" /> <span>163007711</span> </div>
|
||||||
|
</div>
|
||||||
|
<div class="search_data_con">
|
||||||
|
<div style="margin-left: 20px;">163007711</div>
|
||||||
|
<div style="margin-right: 20px;"> <img src="./static/img/yonghu.png" /> <span>163007711</span> </div>
|
||||||
|
</div>
|
||||||
|
<div class="search_data_con">
|
||||||
|
<div style="margin-left: 20px;">163007711</div>
|
||||||
|
<div style="margin-right: 20px;"> <img src="./static/img/yonghu.png" /> <span>163007711</span> </div>
|
||||||
|
</div>
|
||||||
|
<div class="search_data_con">
|
||||||
|
<div style="margin-left: 20px;">163007711</div>
|
||||||
|
<div style="margin-right: 20px;"> <img src="./static/img/yonghu.png" /> <span>163007711</span> </div>
|
||||||
|
</div>
|
||||||
|
<div class="search_data_con">
|
||||||
|
<div style="margin-left: 20px;">163007711</div>
|
||||||
|
<div style="margin-right: 20px;"> <img src="./static/img/yonghu.png" /> <span>163007711</span> </div>
|
||||||
|
</div>
|
||||||
|
<div class="search_data_con">
|
||||||
|
<div style="margin-left: 20px;">163007711</div>
|
||||||
|
<div style="margin-right: 20px;"> <img src="./static/img/yonghu.png" /> <span>163007711</span> </div>
|
||||||
|
</div>
|
||||||
|
<div class="search_data_con">
|
||||||
|
<div style="margin-left: 20px;">163007711</div>
|
||||||
|
<div style="margin-right: 20px;"> <img src="./static/img/yonghu.png" /> <span>163007711</span> </div>
|
||||||
|
</div>
|
||||||
|
<div class="search_data_con">
|
||||||
|
<div style="margin-left: 20px;">163007711</div>
|
||||||
|
<div style="margin-right: 20px;"> <img src="./static/img/yonghu.png" /> <span>163007711</span> </div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="more_data">
|
||||||
|
查看用户列表(77777)
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="Screen"></div>
|
||||||
|
|
||||||
|
<!-- 导航操作弹窗 -->
|
||||||
|
<div class="TabOperation_box" id="TabOperation_box">
|
||||||
|
<ul id="TabOperation">
|
||||||
|
<li>
|
||||||
|
<img src="./static/img/xiugai.png"/>
|
||||||
|
<span>重新命名</span>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<img src="./static/img/yidong.png"/>
|
||||||
|
<span>移动至</span>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<img src="./static/img/fuzhi.png"/>
|
||||||
|
<span>复制看板</span>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<img src="./static/img/del.png"/>
|
||||||
|
<span>删除看板</span>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 修改看板名称 -->
|
||||||
|
<div class="modifyname-bg">
|
||||||
|
<div class="modifyname-box">
|
||||||
|
<div class="modifyname-top">
|
||||||
|
<p>看板名称</p>
|
||||||
|
<img src="./static/img/cha.png" id="modifyname-cha"/>
|
||||||
|
</div>
|
||||||
|
<input id="modifynameid" style="display: none;">
|
||||||
|
<div class="modifyname-txt-box">
|
||||||
|
<input type="text" class="modifyname-txt" id="modifyname-txt"/>
|
||||||
|
</div>
|
||||||
|
<div class="modifyname-but-box">
|
||||||
|
<div class="modifyname-qx" id="modifyname-qx">取消</div>
|
||||||
|
<div class="modifyname-qd" id="modifyname-qd">确定</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- 移动看板 -->
|
||||||
|
<div class="yidong-bg">
|
||||||
|
<div class="yidong-box">
|
||||||
|
<div class="yidong-top">
|
||||||
|
<p>移动至</p>
|
||||||
|
<img src="./static/img/cha.png" id="yidong-cha"/>
|
||||||
|
</div>
|
||||||
|
<input id="yidongid" style="display: none;">
|
||||||
|
<div class="yidong-tab-box">
|
||||||
|
<div class="yidong-tab">
|
||||||
|
<div class="tabdata" id='yidongkanban' onclick="tabdata('yidongkanban','yidong')">我的看板</div>
|
||||||
|
<div id='yidongkongjian' onclick="tabdata('yidongkongjian','yidong')">项目空间</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="yidong-txt-box">
|
||||||
|
<input type="text" class="justAnotherInputBox1" placeholder=""/>
|
||||||
|
<input type="text" class="justAnotherInputBox2" placeholder=""/>
|
||||||
|
</div>
|
||||||
|
<div class="yidong-but-box">
|
||||||
|
<div class="yidong-qx" id="yidong-qx">取消</div>
|
||||||
|
<div class="yidong-qd" id="yidong-qd">确定</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 复制看板 -->
|
||||||
|
<div class="copy-bg">
|
||||||
|
<div class="copy-box">
|
||||||
|
<div class="copy-top">
|
||||||
|
<p>复制看板</p>
|
||||||
|
<img src="./static/img/cha.png" id="copy-cha"/>
|
||||||
|
</div>
|
||||||
|
<input id="copyid" style="display: none;">
|
||||||
|
<div class="copy-name-box">
|
||||||
|
<div class="copy-title">看板名称</div>
|
||||||
|
<input type="text" class="copyname-txt" id="copyname-txt"/>
|
||||||
|
</div>
|
||||||
|
<div class="copy-tab-box">
|
||||||
|
<div class="copy-title">添加至</div>
|
||||||
|
<div class="copy-tab">
|
||||||
|
<div class="tabdata" id='copykanban' onclick="tabdata('copykanban','copy')">我的看板</div>
|
||||||
|
<div id='copykongjian' onclick="tabdata('copykongjian','copy')">项目空间</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="copy-txt-box">
|
||||||
|
<input type="text" class="justAnotherInputBox1" placeholder=""/>
|
||||||
|
<input type="text" class="justAnotherInputBox2" placeholder=""/>
|
||||||
|
</div>
|
||||||
|
<div class="copy-tishi"> <img src="./static/img/capytishi.png"/> 复制看板将同时复制看板内的报表 </div>
|
||||||
|
<div class="copy-but-box">
|
||||||
|
<div class="copy-qx" id="copy-qx">取消</div>
|
||||||
|
<div class="copy-qd" id="copy-qd">确定</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 删除 -->
|
||||||
|
<div class="del-bg">
|
||||||
|
<div class="del-box">
|
||||||
|
<div class="del-xinxi">
|
||||||
|
<div class="del-tit"><img src="./static/img/redtishi.png">操作提示</div>
|
||||||
|
<p class="del-tishi">确认删除【<span id="del-tit"></span>】?该操作不可恢复</p>
|
||||||
|
</div>
|
||||||
|
<input id="delid" style="display: none;">
|
||||||
|
<div class="del-but-box">
|
||||||
|
<div class="del-qx" id="del-qx">取消</div>
|
||||||
|
<div class="del-qd" id="del-qd">删除</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 控件设置 -->
|
||||||
|
<div class="kongjian-bg">
|
||||||
|
<div class="kongjian-box">
|
||||||
|
<!-- <div class="kongjian-top">
|
||||||
|
<p>控件设置</p>
|
||||||
|
<img src="./static/img/cha.png" id="copy-cha"/>
|
||||||
|
</div> -->
|
||||||
|
<div class="chuangjiankongjian-box">
|
||||||
|
<p class="chuangjiankongjian-tit">创建空间</p>
|
||||||
|
<p class="chuangjiankongjian-tit2">选择成员创建共享空间,添加看板至空间实现统一共享</p>
|
||||||
|
</div>
|
||||||
|
<div class="kongjian-mc-box">
|
||||||
|
<span>空间名称</span>
|
||||||
|
<input type="text" placeholder="测试"/>
|
||||||
|
</div>
|
||||||
|
<div class="kongjian-mc-box" style="margin-top: 16px;">
|
||||||
|
<span>空间成员</span>
|
||||||
|
<div class="kongjian-tianjia">+添加</div>
|
||||||
|
</div>
|
||||||
|
<div class="kongjian-renyuan-box">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="kongjian-but-box">
|
||||||
|
<ul class="layui-nav kongjian-cz">
|
||||||
|
<li class="layui-nav-item">
|
||||||
|
<a href="javascript:;">更多操作</a>
|
||||||
|
<dl class="layui-nav-child">
|
||||||
|
<dd><a href="">移交空间</a></dd>
|
||||||
|
<dd><a href="">删除空间</a></dd>
|
||||||
|
</dl>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<div class="kongjian-but">
|
||||||
|
<div class="kongjian-qx" id="kongjian-qx">取消</div>
|
||||||
|
<div class="kongjian-qd" id="kongjian-qd">完成</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 新建看板 -->
|
||||||
|
<div class="new-bg">
|
||||||
|
<div class="new-box">
|
||||||
|
<div class="new-top">
|
||||||
|
<p>新建看板</p>
|
||||||
|
<img src="./static/img/cha.png" id="new-cha"/>
|
||||||
|
</div>
|
||||||
|
<!-- <input id="copyid" style="display: none;"> -->
|
||||||
|
<div class="new-name-box">
|
||||||
|
<div class="new-title">看板名称</div>
|
||||||
|
<input type="text" class="newname-txt" id="newname-txt"/>
|
||||||
|
</div>
|
||||||
|
<div class="new-tab-box">
|
||||||
|
<div class="new-title">添加至</div>
|
||||||
|
<div class="new-tab">
|
||||||
|
<div class="tabdata" id='newkanban' onclick="tabdata('newkanban','new')">我的看板</div>
|
||||||
|
<div id='newkongjian' onclick="tabdata('newkongjian','new')">项目空间</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="new-txt-box">
|
||||||
|
<input type="text" class="justAnotherInputBox1" placeholder=""/>
|
||||||
|
<input type="text" class="justAnotherInputBox2" placeholder=""/>
|
||||||
|
</div>
|
||||||
|
<!-- <div class="new-tishi"> <img src="./static/img/capytishi.png"/> 复制看板将同时复制看板内的报表 </div> -->
|
||||||
|
<div class="new-but-box">
|
||||||
|
<div class="new-qx" id="new-qx">取消</div>
|
||||||
|
<div class="new-qd" id="new-qd">确定</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 新建文件夹 -->
|
||||||
|
<div class="newwenjian-bg">
|
||||||
|
<div class="newwenjian-box">
|
||||||
|
<div class="newwenjian-top">
|
||||||
|
<p>新建文件夹</p>
|
||||||
|
<img src="./static/img/cha.png" id="newwenjian-cha"/>
|
||||||
|
</div>
|
||||||
|
<!-- <input id="copyid" style="display: none;"> -->
|
||||||
|
<div class="newwenjian-name-box">
|
||||||
|
<div class="newwenjian-title">文件夹名称</div>
|
||||||
|
<input type="text" class="newwenjianname-txt" id="newwenjianname-txt"/>
|
||||||
|
</div>
|
||||||
|
<div class="newwenjian-tab-box">
|
||||||
|
<div class="newwenjian-title">添加至</div>
|
||||||
|
<div class="newwenjian-tab">
|
||||||
|
<div class="tabdata" id='newwenjiankanban' onclick="tabdata('newwenjiankanban','newwenjian')">我的看板</div>
|
||||||
|
<div id='newwenjiankongjian' onclick="tabdata('newwenjiankongjian','newwenjian')">项目空间</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="newwenjian-txt-box">
|
||||||
|
<input type="text" class="justAnotherInputBox1" placeholder="" style="display: none;"/>
|
||||||
|
<input type="text" class="justAnotherInputBox2" placeholder=""/>
|
||||||
|
</div>
|
||||||
|
<!-- <div class="new-tishi"> <img src="./static/img/capytishi.png"/> 复制看板将同时复制看板内的报表 </div> -->
|
||||||
|
<div class="newwenjian-but-box">
|
||||||
|
<div class="newwenjian-qx" id="newwenjian-qx">取消</div>
|
||||||
|
<div class="newwenjian-qd" id="newwenjian-qd">确定</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- <script src="https://www.jq22.com/jquery/jquery-1.10.2.js"></script> -->
|
||||||
|
<script src="./srczip/echarts.min.js"></script>
|
||||||
|
<script src="./layui/layui.js"></script>
|
||||||
|
<script src="./srczip/doT.js"></script>
|
||||||
|
<script src="./srczip/puble.js"></script>
|
||||||
|
<script src="./srczip//icontains.js" type="text/javascript"></script>
|
||||||
|
<script src="./srczip//comboTreePlugin.js" type="text/javascript"></script>
|
||||||
|
|
||||||
|
<script type="text/x-dot-template" id="mykanban-dot">
|
||||||
|
{{ for(var i=0, catlen=it.length; i<catlen; i++) { }}
|
||||||
|
{{? it[i]['type'] == 'ordinary'}}
|
||||||
|
<li class="layui-nav-item">
|
||||||
|
<a href="javascript:;" class="fontcolor mykanban"> <img src="./static/img/wenjian.png"/>{{= it[i].title}}</a>
|
||||||
|
{{ for(var j=0, goodslen=it[i]['Category'].length; j<goodslen; j++) { }}
|
||||||
|
<dl class="layui-nav-child">
|
||||||
|
<dd class="layui-left-dd"><a href="javascript:;" class="fontcolor second category">{{= it[i]['Category'][j].title}} <img src="./static/img/gengduo.png" onclick="TabOperation(this,'kanban','{{= it[i]['Category'][j].id}}','{{= it[i]['Category'][j].title}}')" alt=""> </a></dd>
|
||||||
|
</dl>
|
||||||
|
{{ } }}
|
||||||
|
</li>
|
||||||
|
{{??}}
|
||||||
|
<li class="layui-nav-item">
|
||||||
|
<a href="javascript:;" style="display:flex;" class="fontcolor mykanban kanbanwenjian category"> <img class="wenjian" src="./static/img/wenjian.png"/>{{= it[i].title}} <img class='kanbanwenjianimg' src="./static/img/gengduo.png" onclick="TabOperation(this,'wenjian','{{= it[i].id}}','{{= it[i].title}}')"/></a>
|
||||||
|
{{ for(var j=0, goodslen=it[i]['Category'].length; j<goodslen; j++) { }}
|
||||||
|
<dl class="layui-nav-child">
|
||||||
|
<dd class="layui-left-dd"><a href="javascript:;" class="fontcolor second category">{{= it[i]['Category'][j].title}} <img src="./static/img/gengduo.png" onclick="TabOperation(this,'kanban','{{= it[i]['Category'][j].id}}','{{= it[i]['Category'][j].title}}')" alt=""> </a></dd>
|
||||||
|
</dl>
|
||||||
|
{{ } }}
|
||||||
|
</li>
|
||||||
|
{{?}}
|
||||||
|
{{ } }}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script type="text/x-dot-template" id="kongjian-dot">
|
||||||
|
{{ for(var i=0, catlen=it.length; i<catlen; i++) { }}
|
||||||
|
<li class="layui-nav-item">
|
||||||
|
<a href="javascript:;" class="fontcolor mykanban category xiangmukongjian"> <i class="layui-icon layui-icon-template-1"></i> {{= it[i].title}} <img src="./static/img/renyuan.png"/></a>
|
||||||
|
<dl class="layui-nav-child">
|
||||||
|
{{ for(var j=0, goodslen=it[i]['Category'].length; j<goodslen; j++) { }}
|
||||||
|
{{? it[i]['Category'][j]['type'] == 'file'}}
|
||||||
|
<li class="layui-nav-item">
|
||||||
|
<a href="javascript:;" class="fontcolor mykanban second category xiangmukongjian"> <i class="layui-icon layui-icon-file-b"></i> {{= it[i]['Category'][j].title}} <img src="./static/img/gengduo.png" onclick="TabOperation(this,'wenjian','{{= it[i]['Category'][j].id}}','{{= it[i]['Category'][j].title}}')"/></a>
|
||||||
|
<dl class="layui-nav-child">
|
||||||
|
{{ for(var z=0, menu_list=it[i]['Category'][j]['Category'].length; z<menu_list; z++) { }}
|
||||||
|
<dd class="layui-left-dd"><a href="javascript:;" class="fontcolor second3 category">{{= it[i]['Category'][j]['Category'][z]['title'] }} <img src="./static/img/gengduo.png" onclick="TabOperation(this,'kanban','{{= it[i]['Category'][j]['Category'][z]['id']}}','{{= it[i]['Category'][j]['Category'][z]['title'] }}')" alt=""></a></dd>
|
||||||
|
{{ } }}
|
||||||
|
</dl>
|
||||||
|
</li>
|
||||||
|
{{??}}
|
||||||
|
<dd class="layui-left-dd"><a href="javascript:;" class="fontcolor second category">{{= it[i]['Category'][j].title}} <img src="./static/img/gengduo.png" onclick="TabOperation(this,'baobiao','{{= it[i]['Category'][j].id}}','{{= it[i]['Category'][j].title}}')" alt=""></a></dd>
|
||||||
|
{{?}}
|
||||||
|
{{ } }}
|
||||||
|
</dl>
|
||||||
|
</li>
|
||||||
|
{{ } }}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
//一般直接写在一个js文件中
|
||||||
|
layui.use(['element','table','form', 'layedit', 'laydate'], function(){
|
||||||
|
var element = layui.element,
|
||||||
|
table = layui.table,
|
||||||
|
form = layui.form
|
||||||
|
,layer = layui.layer
|
||||||
|
,layedit = layui.layedit
|
||||||
|
,laydate = layui.laydate;
|
||||||
|
|
||||||
|
|
||||||
|
table.render({
|
||||||
|
elem: '#test'
|
||||||
|
,url:'http://10.0.0.7:6789/'
|
||||||
|
,cellMinWidth: 80 //全局定义常规单元格的最小宽度,layui 2.2.1 新增
|
||||||
|
,cols: [[
|
||||||
|
{field:'id', width:80, title: 'ID', sort: true}
|
||||||
|
,{field:'username', width:80, title: '用户名'}
|
||||||
|
,{field:'sex', width:80, title: '性别', sort: true}
|
||||||
|
,{field:'city', width:80, title: '城市'}
|
||||||
|
,{field:'sign', title: '签名', width: '30%', minWidth: 100} //minWidth:局部定义当前单元格的最小宽度,layui 2.2.1 新增
|
||||||
|
,{field:'experience', title: '积分', sort: true}
|
||||||
|
,{field:'score', title: '评分', sort: true}
|
||||||
|
,{field:'classify', title: '职业'}
|
||||||
|
,{field:'wealth', width:137, title: '财富', sort: true}
|
||||||
|
]]
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
SidebarDataFill();
|
||||||
|
function SidebarDataFill(){
|
||||||
|
tmpltxt=doT.template(document.getElementById("mykanban-dot").innerHTML);//生成模板方法
|
||||||
|
document.getElementById("mykanban").innerHTML=tmpltxt(KanBanData);//数据渲染
|
||||||
|
|
||||||
|
tmpltxt=doT.template(document.getElementById("kongjian-dot").innerHTML);//生成模板方法
|
||||||
|
document.getElementById("kongjian").innerHTML=tmpltxt(ProjectData);//数据渲染
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// $.ajax({
|
||||||
|
// type : "GET",
|
||||||
|
// async : false,
|
||||||
|
// url : "http://10.0.0.7:6789/?page=1&limit=10",
|
||||||
|
// //dataType : "jsonp",//数据类型为jsonp
|
||||||
|
// //jsonp : "jsonpCallback",//服务端用于接收callback调用的function名的参数
|
||||||
|
// success : function(data) {
|
||||||
|
// alert(data["userName"]);
|
||||||
|
// },
|
||||||
|
// error : function() {
|
||||||
|
// // alert('fail');
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
|
||||||
|
|
||||||
|
var myChart = echarts.init(document.getElementById('charts'));
|
||||||
|
var option = {
|
||||||
|
grid: {
|
||||||
|
left: '0',
|
||||||
|
right: '0',
|
||||||
|
bottom: '0',
|
||||||
|
top: '3%',
|
||||||
|
containLabel: true
|
||||||
|
},
|
||||||
|
xAxis: {
|
||||||
|
type: 'category',
|
||||||
|
data: ['02/22', '02/26', '03/02', '03/06', '03/10', '03/14', '03/18','03/22'],
|
||||||
|
splitLine: {
|
||||||
|
show:false
|
||||||
|
},
|
||||||
|
axisLabel: {
|
||||||
|
textStyle:{
|
||||||
|
color: '#42546d'
|
||||||
|
},
|
||||||
|
},
|
||||||
|
axisLine: {
|
||||||
|
lineStyle: {
|
||||||
|
color: '#e8eefd',
|
||||||
|
width: 1, //这里是为了突出显示加上的
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
yAxis: {
|
||||||
|
type: 'value',
|
||||||
|
axisTick:{ //y轴刻度线
|
||||||
|
show:false
|
||||||
|
},
|
||||||
|
splitLine: {
|
||||||
|
show:true,
|
||||||
|
lineStyle:{
|
||||||
|
color: ['#e8eefd'],
|
||||||
|
width: 1,
|
||||||
|
type: 'solid'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
axisLine:{ //y轴
|
||||||
|
show:false
|
||||||
|
},
|
||||||
|
axisLabel: {
|
||||||
|
show: true,
|
||||||
|
textStyle: {
|
||||||
|
color:'#42546d'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
series: [{
|
||||||
|
data: [150, 230, 224, 218, 135, 147, 260,530],
|
||||||
|
type: 'line',
|
||||||
|
itemStyle: {
|
||||||
|
normal: {
|
||||||
|
color: '#219af2', //改变折线点的颜色
|
||||||
|
lineStyle: {
|
||||||
|
color: '#219af2' //改变折线颜色
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
myChart.setOption(option);
|
||||||
|
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
60
web/index.php
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
<?php
|
||||||
|
function getFileList($dir){
|
||||||
|
$list = glob($dir);
|
||||||
|
return $list;
|
||||||
|
}
|
||||||
|
|
||||||
|
function setFile($filename, $writetext, $openmod='w') {
|
||||||
|
if(@$fp = fopen($filename, $openmod)) {
|
||||||
|
flock($fp, 2);
|
||||||
|
fwrite($fp, $writetext);
|
||||||
|
fclose($fp);
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function getFile($filename,$clearBOM=1){
|
||||||
|
$content = '';
|
||||||
|
if(function_exists('file_get_contents')) {
|
||||||
|
@$content = file_get_contents($filename);
|
||||||
|
} else {
|
||||||
|
if(@$fp = fopen($filename, 'r')) {
|
||||||
|
@$content = fread($fp, filesize($filename));
|
||||||
|
@fclose($fp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//清除BOM信息
|
||||||
|
if($clearBOM==1){
|
||||||
|
$charset[1]=substr($content, 0, 1);
|
||||||
|
$charset[2]=substr($content, 1, 1);
|
||||||
|
$charset[3]=substr($content, 2, 1);
|
||||||
|
if (ord($charset[1])==239 && ord($charset[2])==187 && ord($charset[3])==191) {
|
||||||
|
$content=substr($content,3);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $content;
|
||||||
|
}
|
||||||
|
|
||||||
|
function main(){
|
||||||
|
$list = array("srczip/common.js");
|
||||||
|
$base = getFileList('srczip/base/*.js');
|
||||||
|
asort($base);
|
||||||
|
$list = array_merge($list,$base);
|
||||||
|
|
||||||
|
$js = getFileList('srczip/logic/*.js');
|
||||||
|
asort($js);
|
||||||
|
$list = array_merge($list,$js);
|
||||||
|
|
||||||
|
$jsCont = array();
|
||||||
|
foreach($list as $file){
|
||||||
|
$jsCont[] = "// {$file}";
|
||||||
|
$jsCont[] = getFile($file);
|
||||||
|
}
|
||||||
|
setFile('src/x.min.js',implode("\n",$jsCont));
|
||||||
|
echo file_get_contents('main.html');
|
||||||
|
}
|
||||||
|
main();
|
||||||
|
?>
|
1
web/layui/css/layui.css
Normal file
1
web/layui/css/modules/code.css
Normal file
@ -0,0 +1 @@
|
|||||||
|
html #layuicss-skincodecss{display:none;position:absolute;width:1989px}.layui-code-h3,.layui-code-view{position:relative;font-size:12px}.layui-code-view{display:block;margin:10px 0;padding:0;border:1px solid #eee;border-left-width:6px;background-color:#FAFAFA;color:#333;font-family:Courier New}.layui-code-h3{padding:0 10px;height:40px;line-height:40px;border-bottom:1px solid #eee}.layui-code-h3 a{position:absolute;right:10px;top:0;color:#999}.layui-code-view .layui-code-ol{position:relative;overflow:auto}.layui-code-view .layui-code-ol li{position:relative;margin-left:45px;line-height:20px;padding:0 10px;border-left:1px solid #e2e2e2;list-style-type:decimal-leading-zero;*list-style-type:decimal;background-color:#fff}.layui-code-view .layui-code-ol li:first-child{padding-top:10px}.layui-code-view .layui-code-ol li:last-child{padding-bottom:10px}.layui-code-view pre{margin:0}.layui-code-notepad{border:1px solid #0C0C0C;border-left-color:#3F3F3F;background-color:#0C0C0C;color:#C2BE9E}.layui-code-notepad .layui-code-h3{border-bottom:none}.layui-code-notepad .layui-code-ol li{background-color:#3F3F3F;border-left:none}.layui-code-demo .layui-code{visibility:visible!important;margin:-15px;border-top:none;border-right:none;border-bottom:none}.layui-code-demo .layui-tab-content{padding:15px;border-top:none}
|
1
web/layui/css/modules/laydate/default/laydate.css
Normal file
BIN
web/layui/css/modules/layer/default/icon-ext.png
Normal file
After Width: | Height: | Size: 5.8 KiB |
BIN
web/layui/css/modules/layer/default/icon.png
Normal file
After Width: | Height: | Size: 11 KiB |
1
web/layui/css/modules/layer/default/layer.css
Normal file
BIN
web/layui/css/modules/layer/default/loading-0.gif
Normal file
After Width: | Height: | Size: 5.7 KiB |
BIN
web/layui/css/modules/layer/default/loading-1.gif
Normal file
After Width: | Height: | Size: 701 B |
BIN
web/layui/css/modules/layer/default/loading-2.gif
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
web/layui/font/iconfont.eot
Normal file
554
web/layui/font/iconfont.svg
Normal file
After Width: | Height: | Size: 299 KiB |
BIN
web/layui/font/iconfont.ttf
Normal file
BIN
web/layui/font/iconfont.woff
Normal file
BIN
web/layui/font/iconfont.woff2
Normal file
17982
web/layui/layui.js
Normal file
439
web/layui__/comboTreePlugin.js
Normal file
@ -0,0 +1,439 @@
|
|||||||
|
/*!
|
||||||
|
* jQuery ComboTree Plugin
|
||||||
|
* Author: Erhan FIRAT
|
||||||
|
* Mail: erhanfirat@gmail.com
|
||||||
|
* Licensed under the MIT license
|
||||||
|
* Version: 1.1
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
;(function ( $, window, document, undefined ) {
|
||||||
|
|
||||||
|
// Create the defaults once
|
||||||
|
var comboTreePlugin = 'comboTree',
|
||||||
|
defaults = {
|
||||||
|
source: [],
|
||||||
|
isMultiple: false
|
||||||
|
};
|
||||||
|
|
||||||
|
// The actual plugin constructor
|
||||||
|
function ComboTree( element, options ) {
|
||||||
|
this.elemInput = element;
|
||||||
|
this._elemInput = $(element);
|
||||||
|
|
||||||
|
this.options = $.extend( {}, defaults, options) ;
|
||||||
|
|
||||||
|
this._defaults = defaults;
|
||||||
|
this._name = comboTreePlugin;
|
||||||
|
|
||||||
|
this.init();
|
||||||
|
}
|
||||||
|
|
||||||
|
ComboTree.prototype.init = function () {
|
||||||
|
// Setting Doms
|
||||||
|
this.comboTreeId = 'comboTree' + Math.floor(Math.random() * 999999);
|
||||||
|
|
||||||
|
this._elemInput.addClass('comboTreeInputBox');
|
||||||
|
|
||||||
|
if (this._elemInput.attr('id') === undefined)
|
||||||
|
this._elemInput.attr('id', this.comboTreeId + 'Input');
|
||||||
|
this.elemInputId = this._elemInput.attr('id');
|
||||||
|
|
||||||
|
this._elemInput.wrap('<div id="'+ this.comboTreeId + 'Wrapper" class="comboTreeWrapper"></div>');
|
||||||
|
this._elemInput.wrap('<div id="'+ this.comboTreeId + 'InputWrapper" class="comboTreeInputWrapper"></div>');
|
||||||
|
this._elemWrapper = $('#' + this.comboTreeId + 'Wrapper');
|
||||||
|
|
||||||
|
this._elemArrowBtn = $('<button id="' + this.comboTreeId + 'ArrowBtn" class="comboTreeArrowBtn"><span class="comboTreeArrowBtnImg"></span></button>');
|
||||||
|
this._elemInput.after(this._elemArrowBtn);
|
||||||
|
this._elemWrapper.append('<div id="' + this.comboTreeId + 'DropDownContainer" class="comboTreeDropDownContainer"><div class="comboTreeDropDownContent"></div>');
|
||||||
|
|
||||||
|
// DORP DOWN AREA
|
||||||
|
this._elemDropDownContainer = $('#' + this.comboTreeId + 'DropDownContainer');
|
||||||
|
this._elemDropDownContainer.html(this.createSourceHTML());
|
||||||
|
|
||||||
|
this._elemItems = this._elemDropDownContainer.find('li');
|
||||||
|
this._elemItemsTitle = this._elemDropDownContainer.find('span.comboTreeItemTitle');
|
||||||
|
|
||||||
|
// VARIABLES
|
||||||
|
this._selectedItem = {};
|
||||||
|
this._selectedItems = [];
|
||||||
|
|
||||||
|
this.bindings();
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// *********************************
|
||||||
|
// SOURCES CODES
|
||||||
|
// *********************************
|
||||||
|
|
||||||
|
ComboTree.prototype.removeSourceHTML = function () {
|
||||||
|
this._elemDropDownContainer.html('');
|
||||||
|
};
|
||||||
|
|
||||||
|
ComboTree.prototype.createSourceHTML = function () {
|
||||||
|
var sourceHTML = '';
|
||||||
|
if (this.options.isMultiple)
|
||||||
|
sourceHTML = this.createFilterHTMLForMultiSelect();
|
||||||
|
sourceHTML += this.createSourceSubItemsHTML(this.options.source);
|
||||||
|
return sourceHTML;
|
||||||
|
};
|
||||||
|
|
||||||
|
ComboTree.prototype.createFilterHTMLForMultiSelect = function (){
|
||||||
|
return '<input id="' + this.comboTreeId + 'MultiFilter" type="text" class="multiplesFilter" placeholder="Type to filter"/>';
|
||||||
|
}
|
||||||
|
|
||||||
|
ComboTree.prototype.createSourceSubItemsHTML = function (subItems) {
|
||||||
|
var subItemsHtml = '<UL>';
|
||||||
|
for (var i=0; i<subItems.length; i++){
|
||||||
|
subItemsHtml += this.createSourceItemHTML(subItems[i]);
|
||||||
|
}
|
||||||
|
subItemsHtml += '</UL>'
|
||||||
|
return subItemsHtml;
|
||||||
|
}
|
||||||
|
|
||||||
|
ComboTree.prototype.createSourceItemHTML = function (sourceItem) {
|
||||||
|
var itemHtml = "",
|
||||||
|
isThereSubs = sourceItem.hasOwnProperty("children");
|
||||||
|
|
||||||
|
itemHtml = '<LI class="ComboTreeItem' + (isThereSubs?'Parent':'Chlid') + '"> ';
|
||||||
|
|
||||||
|
if (isThereSubs)
|
||||||
|
itemHtml += '<span class="comboTreeParentPlus">−</span>';
|
||||||
|
|
||||||
|
if (this.options.isMultiple)
|
||||||
|
itemHtml += '<span data-id="' + sourceItem.id + '" class="comboTreeItemTitle"><input type="checkbox">' + sourceItem.title + '</span>';
|
||||||
|
else
|
||||||
|
itemHtml += '<span data-id="' + sourceItem.id + '" class="comboTreeItemTitle">' + sourceItem.title + '</span>';
|
||||||
|
|
||||||
|
if (isThereSubs)
|
||||||
|
itemHtml += this.createSourceSubItemsHTML(sourceItem.children);
|
||||||
|
|
||||||
|
itemHtml += '</LI>';
|
||||||
|
return itemHtml;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// BINDINGS
|
||||||
|
// *****************************
|
||||||
|
ComboTree.prototype.bindings = function () {
|
||||||
|
var _this = this;
|
||||||
|
|
||||||
|
this._elemArrowBtn.on('click', function(e){
|
||||||
|
e.stopPropagation();
|
||||||
|
_this.toggleDropDown();
|
||||||
|
});
|
||||||
|
this._elemInput.on('click', function(e){
|
||||||
|
e.stopPropagation();
|
||||||
|
if (!_this._elemDropDownContainer.is(':visible'))
|
||||||
|
_this.toggleDropDown();
|
||||||
|
});
|
||||||
|
this._elemItems.on('click', function(e){
|
||||||
|
e.stopPropagation();
|
||||||
|
if ($(this).hasClass('ComboTreeItemParent')){
|
||||||
|
_this.toggleSelectionTree(this);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this._elemItemsTitle.on('click', function(e){
|
||||||
|
e.stopPropagation();
|
||||||
|
if (_this.options.isMultiple)
|
||||||
|
_this.multiItemClick(this);
|
||||||
|
else
|
||||||
|
_this.singleItemClick(this);
|
||||||
|
});
|
||||||
|
this._elemItemsTitle.on("mousemove", function (e) {
|
||||||
|
e.stopPropagation();
|
||||||
|
_this.dropDownMenuHover(this);
|
||||||
|
});
|
||||||
|
|
||||||
|
// KEY BINDINGS
|
||||||
|
this._elemInput.on('keyup', function(e) {
|
||||||
|
e.stopPropagation();
|
||||||
|
|
||||||
|
switch (e.keyCode) {
|
||||||
|
case 27:
|
||||||
|
_this.closeDropDownMenu(); break;
|
||||||
|
case 13:
|
||||||
|
case 39: case 37: case 40: case 38:
|
||||||
|
e.preventDefault();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
if (!_this.options.isMultiple)
|
||||||
|
_this.filterDropDownMenu();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (_this.options.isMultiple) {
|
||||||
|
$("#" + _this.comboTreeId + "MultiFilter").on('keyup', function(e) {
|
||||||
|
e.stopPropagation();
|
||||||
|
|
||||||
|
switch (e.keyCode) {
|
||||||
|
case 27:
|
||||||
|
$(this).val(''); _this.filterDropDownMenu(); break;
|
||||||
|
default:
|
||||||
|
_this.filterDropDownMenu();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
this._elemInput.on('keydown', function(e) {
|
||||||
|
e.stopPropagation();
|
||||||
|
|
||||||
|
switch (e.keyCode) {
|
||||||
|
case 9:
|
||||||
|
_this.closeDropDownMenu(); break;
|
||||||
|
case 40: case 38:
|
||||||
|
e.preventDefault();
|
||||||
|
_this.dropDownInputKeyControl(e.keyCode - 39); break;
|
||||||
|
case 37: case 39:
|
||||||
|
e.preventDefault();
|
||||||
|
_this.dropDownInputKeyToggleTreeControl(e.keyCode - 38);
|
||||||
|
break;
|
||||||
|
case 13:
|
||||||
|
if (_this.options.isMultiple)
|
||||||
|
_this.multiItemClick(_this._elemHoveredItem);
|
||||||
|
else
|
||||||
|
_this.singleItemClick(_this._elemHoveredItem);
|
||||||
|
e.preventDefault();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
if (_this.options.isMultiple)
|
||||||
|
e.preventDefault();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
// ON FOCUS OUT CLOSE DROPDOWN
|
||||||
|
$(document).on('mouseup.' + _this.comboTreeId, function (e){
|
||||||
|
if (!_this._elemWrapper.is(e.target) && _this._elemWrapper.has(e.target).length === 0 && _this._elemDropDownContainer.is(':visible'))
|
||||||
|
_this.closeDropDownMenu();
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// EVENTS HERE
|
||||||
|
// ****************************
|
||||||
|
|
||||||
|
// DropDown Menu Open/Close
|
||||||
|
ComboTree.prototype.toggleDropDown = function () {
|
||||||
|
this._elemDropDownContainer.slideToggle(50);
|
||||||
|
this._elemInput.focus();
|
||||||
|
};
|
||||||
|
ComboTree.prototype.closeDropDownMenu = function () {
|
||||||
|
this._elemDropDownContainer.slideUp(50);
|
||||||
|
};
|
||||||
|
// Selection Tree Open/Close
|
||||||
|
ComboTree.prototype.toggleSelectionTree = function (item, direction) {
|
||||||
|
var subMenu = $(item).children('ul')[0];
|
||||||
|
if (direction === undefined){
|
||||||
|
if ($(subMenu).is(':visible'))
|
||||||
|
$(item).children('span.comboTreeParentPlus').html("+");
|
||||||
|
else
|
||||||
|
$(item).children('span.comboTreeParentPlus').html("−");
|
||||||
|
|
||||||
|
$(subMenu).slideToggle(50);
|
||||||
|
}
|
||||||
|
else if (direction == 1 && !$(subMenu).is(':visible')){
|
||||||
|
$(item).children('span.comboTreeParentPlus').html("−");
|
||||||
|
$(subMenu).slideDown(50);
|
||||||
|
}
|
||||||
|
else if (direction == -1){
|
||||||
|
if ($(subMenu).is(':visible')){
|
||||||
|
$(item).children('span.comboTreeParentPlus').html("+");
|
||||||
|
$(subMenu).slideUp(50);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.dropDownMenuHoverToParentItem(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// SELECTION FUNCTIONS
|
||||||
|
// *****************************
|
||||||
|
ComboTree.prototype.singleItemClick = function (ctItem) {
|
||||||
|
this._selectedItem = {
|
||||||
|
id: $(ctItem).attr("data-id"),
|
||||||
|
title: $(ctItem).text()
|
||||||
|
};
|
||||||
|
|
||||||
|
this.refreshInputVal();
|
||||||
|
this.closeDropDownMenu();
|
||||||
|
};
|
||||||
|
ComboTree.prototype.multiItemClick = function (ctItem) {
|
||||||
|
this._selectedItem = {
|
||||||
|
id: $(ctItem).attr("data-id"),
|
||||||
|
title: $(ctItem).text()
|
||||||
|
};
|
||||||
|
|
||||||
|
var index = this.isItemInArray(this._selectedItem, this._selectedItems);
|
||||||
|
if (index){
|
||||||
|
this._selectedItems.splice(parseInt(index), 1);
|
||||||
|
$(ctItem).find("input").prop('checked', false);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this._selectedItems.push(this._selectedItem);
|
||||||
|
$(ctItem).find("input").prop('checked', true);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.refreshInputVal();
|
||||||
|
};
|
||||||
|
|
||||||
|
ComboTree.prototype.isItemInArray = function (item, arr) {
|
||||||
|
for (var i=0; i<arr.length; i++)
|
||||||
|
if (item.id == arr[i].id && item.title == arr[i].title)
|
||||||
|
return i + "";
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
ComboTree.prototype.refreshInputVal = function () {
|
||||||
|
var tmpTitle = "";
|
||||||
|
|
||||||
|
if (this.options.isMultiple) {
|
||||||
|
for (var i=0; i<this._selectedItems.length; i++){
|
||||||
|
tmpTitle += this._selectedItems[i].title;
|
||||||
|
if (i<this._selectedItems.length-1)
|
||||||
|
tmpTitle += ", ";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
tmpTitle = this._selectedItem.title;
|
||||||
|
}
|
||||||
|
|
||||||
|
this._elemInput.val(tmpTitle);
|
||||||
|
}
|
||||||
|
|
||||||
|
ComboTree.prototype.dropDownMenuHover = function (itemSpan, withScroll) {
|
||||||
|
this._elemItems.find('span.comboTreeItemHover').removeClass('comboTreeItemHover');
|
||||||
|
$(itemSpan).addClass('comboTreeItemHover');
|
||||||
|
this._elemHoveredItem = $(itemSpan);
|
||||||
|
if (withScroll)
|
||||||
|
this.dropDownScrollToHoveredItem(this._elemHoveredItem);
|
||||||
|
}
|
||||||
|
|
||||||
|
ComboTree.prototype.dropDownScrollToHoveredItem = function (itemSpan) {
|
||||||
|
var curScroll = this._elemDropDownContainer.scrollTop();
|
||||||
|
this._elemDropDownContainer.scrollTop(curScroll + $(itemSpan).parent().position().top - 80);
|
||||||
|
}
|
||||||
|
|
||||||
|
ComboTree.prototype.dropDownMenuHoverToParentItem = function (item) {
|
||||||
|
var parentSpanItem = $($(item).parents('li.ComboTreeItemParent')[0]).children("span.comboTreeItemTitle");
|
||||||
|
if (parentSpanItem.length)
|
||||||
|
this.dropDownMenuHover(parentSpanItem, true);
|
||||||
|
else
|
||||||
|
this.dropDownMenuHover(this._elemItemsTitle[0], true);
|
||||||
|
}
|
||||||
|
|
||||||
|
ComboTree.prototype.dropDownInputKeyToggleTreeControl = function (direction) {
|
||||||
|
var item = this._elemHoveredItem;
|
||||||
|
if ($(item).parent('li').hasClass('ComboTreeItemParent'))
|
||||||
|
this.toggleSelectionTree($(item).parent('li'), direction);
|
||||||
|
else if (direction == -1)
|
||||||
|
this.dropDownMenuHoverToParentItem(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
ComboTree.prototype.dropDownInputKeyControl = function (step) {
|
||||||
|
if (!this._elemDropDownContainer.is(":visible"))
|
||||||
|
this.toggleDropDown();
|
||||||
|
|
||||||
|
var list = this._elemItems.find("span.comboTreeItemTitle:visible");
|
||||||
|
i = this._elemHoveredItem?list.index(this._elemHoveredItem) + step:0;
|
||||||
|
i = (list.length + i) % list.length;
|
||||||
|
|
||||||
|
this.dropDownMenuHover(list[i], true);
|
||||||
|
},
|
||||||
|
|
||||||
|
ComboTree.prototype.filterDropDownMenu = function () {
|
||||||
|
var searchText = '';
|
||||||
|
if (!this.options.isMultiple)
|
||||||
|
searchText = this._elemInput.val();
|
||||||
|
else
|
||||||
|
searchText = $("#" + this.comboTreeId + "MultiFilter").val();
|
||||||
|
|
||||||
|
if (searchText != ""){
|
||||||
|
this._elemItemsTitle.hide();
|
||||||
|
this._elemItemsTitle.siblings("span.comboTreeParentPlus").hide();
|
||||||
|
list = this._elemItems.find("span:icontains('" + searchText + "')").each(function (i, elem) {
|
||||||
|
$(this).show();
|
||||||
|
$(this).siblings("span.comboTreeParentPlus").show();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
this._elemItemsTitle.show();
|
||||||
|
this._elemItemsTitle.siblings("span.comboTreeParentPlus").show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Retuns Array (multiple), Integer (single), or False (No choice)
|
||||||
|
ComboTree.prototype.getSelectedItemsId = function () {
|
||||||
|
if (this.options.isMultiple && this._selectedItems.length>0){
|
||||||
|
var tmpArr = [];
|
||||||
|
for (i=0; i<this._selectedItems.length; i++)
|
||||||
|
tmpArr.push(this._selectedItems[i].id);
|
||||||
|
|
||||||
|
return tmpArr;
|
||||||
|
}
|
||||||
|
else if (!this.options.isMultiple && this._selectedItem.hasOwnProperty('id')){
|
||||||
|
return this._selectedItem.id;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Retuns Array (multiple), Integer (single), or False (No choice)
|
||||||
|
ComboTree.prototype.getSelectedItemsTitle = function () {
|
||||||
|
if (this.options.isMultiple && this._selectedItems.length>0){
|
||||||
|
var tmpArr = [];
|
||||||
|
for (i=0; i<this._selectedItems.length; i++)
|
||||||
|
tmpArr.push(this._selectedItems[i].title);
|
||||||
|
|
||||||
|
return tmpArr;
|
||||||
|
}
|
||||||
|
else if (!this.options.isMultiple && this._selectedItem.hasOwnProperty('id')){
|
||||||
|
return this._selectedItem.title;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ComboTree.prototype.unbind = function () {
|
||||||
|
this._elemArrowBtn.off('click');
|
||||||
|
this._elemInput.off('click');
|
||||||
|
this._elemItems.off('click');
|
||||||
|
this._elemItemsTitle.off('click');
|
||||||
|
this._elemItemsTitle.off("mousemove");
|
||||||
|
this._elemInput.off('keyup');
|
||||||
|
this._elemInput.off('keydown');
|
||||||
|
this._elemInput.off('mouseup.' + this.comboTreeId);
|
||||||
|
$(document).off('mouseup.' + this.comboTreeId);
|
||||||
|
}
|
||||||
|
|
||||||
|
ComboTree.prototype.destroy = function () {
|
||||||
|
this.unbind();
|
||||||
|
this._elemWrapper.before(this._elemInput);
|
||||||
|
this._elemWrapper.remove();
|
||||||
|
this._elemInput.removeData('plugin_' + comboTreePlugin);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$.fn[comboTreePlugin] = function (options) {
|
||||||
|
var ctArr = [];
|
||||||
|
this.each(function () {
|
||||||
|
if (!$.data(this, 'plugin_' + comboTreePlugin)) {
|
||||||
|
$.data(this, 'plugin_' + comboTreePlugin, new ComboTree( this, options));
|
||||||
|
ctArr.push($(this).data()['plugin_' + comboTreePlugin]);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if (this.length == 1)
|
||||||
|
return ctArr[0];
|
||||||
|
else
|
||||||
|
return ctArr;
|
||||||
|
}
|
||||||
|
|
||||||
|
})( jQuery, window, document );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
432
web/layui__/css/daterangepicker.css
Normal file
@ -0,0 +1,432 @@
|
|||||||
|
.daterangepicker {
|
||||||
|
position: absolute;
|
||||||
|
color: inherit;
|
||||||
|
background-color: #fff;
|
||||||
|
border-radius: 4px;
|
||||||
|
border: 1px solid #ddd;
|
||||||
|
width: 278px;
|
||||||
|
max-width: none;
|
||||||
|
padding: 0;
|
||||||
|
margin-top: 7px;
|
||||||
|
top: 100px;
|
||||||
|
left: 20px;
|
||||||
|
z-index: 9999999;
|
||||||
|
display: none;
|
||||||
|
font-family: arial;
|
||||||
|
font-size: 15px;
|
||||||
|
line-height: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-default {
|
||||||
|
background-color: #fff;
|
||||||
|
border: 1px solid #828080;
|
||||||
|
border-radius: 3px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.btn-primary {
|
||||||
|
background-color: #3d90ff;
|
||||||
|
border: 1px solid #3d90ff;
|
||||||
|
border-radius: 3px;
|
||||||
|
color: #fff;
|
||||||
|
cursor: pointer;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
.btn-primary:hover{
|
||||||
|
background-color: #357ebd;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker:before, .daterangepicker:after {
|
||||||
|
position: absolute;
|
||||||
|
display: inline-block;
|
||||||
|
border-bottom-color: rgba(0, 0, 0, 0.2);
|
||||||
|
content: '';
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker:before {
|
||||||
|
top: -7px;
|
||||||
|
border-right: 7px solid transparent;
|
||||||
|
border-left: 7px solid transparent;
|
||||||
|
border-bottom: 7px solid #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker:after {
|
||||||
|
top: -6px;
|
||||||
|
border-right: 6px solid transparent;
|
||||||
|
border-bottom: 6px solid #fff;
|
||||||
|
border-left: 6px solid transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker.opensleft:before {
|
||||||
|
right: 9px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker.opensleft:after {
|
||||||
|
right: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker.openscenter:before {
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
width: 0;
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker.openscenter:after {
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
width: 0;
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker.opensright:before {
|
||||||
|
left: 9px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker.opensright:after {
|
||||||
|
left: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker.drop-up {
|
||||||
|
margin-top: -7px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker.drop-up:before {
|
||||||
|
top: initial;
|
||||||
|
bottom: -7px;
|
||||||
|
border-bottom: initial;
|
||||||
|
border-top: 7px solid #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker.drop-up:after {
|
||||||
|
top: initial;
|
||||||
|
bottom: -6px;
|
||||||
|
border-bottom: initial;
|
||||||
|
border-top: 6px solid #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker.single .daterangepicker .ranges, .daterangepicker.single .drp-calendar {
|
||||||
|
float: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker.single .drp-selected {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker.show-calendar .drp-calendar {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker.show-calendar .drp-buttons {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker.auto-apply .drp-buttons {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker .drp-calendar {
|
||||||
|
display: none;
|
||||||
|
max-width: 270px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker .drp-calendar.left {
|
||||||
|
padding: 8px 0 8px 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker .drp-calendar.right {
|
||||||
|
padding: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker .drp-calendar.single .calendar-table {
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker .calendar-table .next span, .daterangepicker .calendar-table .prev span {
|
||||||
|
color: #fff;
|
||||||
|
border: solid #3d90ff;
|
||||||
|
border-width: 0 2px 2px 0;
|
||||||
|
border-radius: 0;
|
||||||
|
display: inline-block;
|
||||||
|
padding: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker .calendar-table .next span {
|
||||||
|
transform: rotate(-45deg);
|
||||||
|
-webkit-transform: rotate(-45deg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker .calendar-table .prev span {
|
||||||
|
transform: rotate(135deg);
|
||||||
|
-webkit-transform: rotate(135deg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker .calendar-table th, .daterangepicker .calendar-table td {
|
||||||
|
white-space: nowrap;
|
||||||
|
text-align: center;
|
||||||
|
vertical-align: middle;
|
||||||
|
min-width: 32px;
|
||||||
|
width: 32px;
|
||||||
|
height: 24px;
|
||||||
|
line-height: 24px;
|
||||||
|
font-size: 12px;
|
||||||
|
border-radius: 4px;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
white-space: nowrap;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker .calendar-table {
|
||||||
|
border: 1px solid #fff;
|
||||||
|
border-radius: 4px;
|
||||||
|
background-color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker .calendar-table table {
|
||||||
|
width: 100%;
|
||||||
|
margin: 0;
|
||||||
|
border-spacing: 0;
|
||||||
|
border-collapse: collapse;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker td.available:hover, .daterangepicker th.available:hover {
|
||||||
|
background-color: #eee;
|
||||||
|
border-color: transparent;
|
||||||
|
color: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker td.week, .daterangepicker th.week {
|
||||||
|
font-size: 80%;
|
||||||
|
color: #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker td.off, .daterangepicker td.off.in-range, .daterangepicker td.off.start-date, .daterangepicker td.off.end-date {
|
||||||
|
background-color: #fff;
|
||||||
|
border-color: transparent;
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker td.in-range {
|
||||||
|
background-color: rgba(89, 120, 249, 0.1);
|
||||||
|
border-color: transparent;
|
||||||
|
color: #323234;
|
||||||
|
border-radius: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker td.start-date {
|
||||||
|
border-radius: 4px 0 0 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker td.end-date {
|
||||||
|
border-radius: 0 4px 4px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker td.start-date.end-date {
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker td.active, .daterangepicker td.active:hover {
|
||||||
|
background-color: rgba(89, 120, 249, 1);
|
||||||
|
border-color: transparent;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker th.month {
|
||||||
|
width: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker td.disabled, .daterangepicker option.disabled {
|
||||||
|
color: #999;
|
||||||
|
cursor: not-allowed;
|
||||||
|
text-decoration: line-through;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker select.monthselect, .daterangepicker select.yearselect {
|
||||||
|
font-size: 12px;
|
||||||
|
padding: 1px;
|
||||||
|
height: auto;
|
||||||
|
margin: 0;
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker select.monthselect {
|
||||||
|
margin-right: 2%;
|
||||||
|
width: 56%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker select.yearselect {
|
||||||
|
width: 40%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker select.hourselect, .daterangepicker select.minuteselect, .daterangepicker select.secondselect, .daterangepicker select.ampmselect {
|
||||||
|
width: 50px;
|
||||||
|
margin: 0 auto;
|
||||||
|
background: #eee;
|
||||||
|
border: 1px solid #eee;
|
||||||
|
padding: 2px;
|
||||||
|
outline: 0;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker .calendar-time {
|
||||||
|
text-align: center;
|
||||||
|
margin: 4px auto 0 auto;
|
||||||
|
line-height: 30px;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker .calendar-time select.disabled {
|
||||||
|
color: #ccc;
|
||||||
|
cursor: not-allowed;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker .drp-buttons {
|
||||||
|
clear: both;
|
||||||
|
text-align: right;
|
||||||
|
padding: 8px;
|
||||||
|
border-top: 1px solid #ddd;
|
||||||
|
display: none;
|
||||||
|
line-height: 12px;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker .drp-selected {
|
||||||
|
display: inline-block;
|
||||||
|
font-size: 12px;
|
||||||
|
padding-right: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker .drp-buttons .btn {
|
||||||
|
margin-left: 8px;
|
||||||
|
font-size: 14px;
|
||||||
|
/* font-weight: bold; */
|
||||||
|
padding: 0px 16px;
|
||||||
|
height: 32px;
|
||||||
|
line-height: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker.show-ranges.single.rtl .drp-calendar.left {
|
||||||
|
border-right: 1px solid #ddd;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker.show-ranges.single.ltr .drp-calendar.left {
|
||||||
|
border-left: 1px solid #ddd;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker.show-ranges.rtl .drp-calendar.right {
|
||||||
|
border-right: 1px solid #ddd;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker.show-ranges.ltr .drp-calendar.left {
|
||||||
|
border-left: 1px solid #ddd;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker .ranges {
|
||||||
|
float: none;
|
||||||
|
text-align: left;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker.show-calendar .ranges {
|
||||||
|
margin-top: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker .ranges ul {
|
||||||
|
list-style: none;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 220px;
|
||||||
|
overflow-y: scroll;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker .ranges li {
|
||||||
|
font-size: 12px;
|
||||||
|
padding: 8px 12px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker .ranges li:hover {
|
||||||
|
background-color: #eee;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker .ranges li.active {
|
||||||
|
background-color: rgba(89, 120, 249, 0.5);
|
||||||
|
color: #323234;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Larger Screen Styling */
|
||||||
|
@media (min-width: 564px) {
|
||||||
|
.daterangepicker {
|
||||||
|
width: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker .ranges ul {
|
||||||
|
width: 140px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker.single .ranges ul {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker.single .drp-calendar.left {
|
||||||
|
clear: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker.single .ranges, .daterangepicker.single .drp-calendar {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker {
|
||||||
|
direction: ltr;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker .drp-calendar.left {
|
||||||
|
clear: left;
|
||||||
|
margin-right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker .drp-calendar.left .calendar-table {
|
||||||
|
border-right: none;
|
||||||
|
border-top-right-radius: 0;
|
||||||
|
border-bottom-right-radius: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker .drp-calendar.right {
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker .drp-calendar.right .calendar-table {
|
||||||
|
border-left: none;
|
||||||
|
border-top-left-radius: 0;
|
||||||
|
border-bottom-left-radius: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker .drp-calendar.left .calendar-table {
|
||||||
|
padding-right: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker .ranges, .daterangepicker .drp-calendar {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 730px) {
|
||||||
|
.daterangepicker .ranges {
|
||||||
|
width: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker .ranges {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker.rtl .ranges {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.daterangepicker .drp-calendar.left {
|
||||||
|
clear: none !important;
|
||||||
|
}
|
||||||
|
}
|
2
web/layui__/css/layui.css
Normal file
2
web/layui__/css/layui.mobile.css
Normal file
2
web/layui__/css/modules/code.css
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
/** layui-v2.5.7 MIT License */
|
||||||
|
html #layuicss-skincodecss{display:none;position:absolute;width:1989px}.layui-code-h3,.layui-code-view{position:relative;font-size:12px}.layui-code-view{display:block;margin:10px 0;padding:0;border:1px solid #e2e2e2;border-left-width:6px;background-color:#F2F2F2;color:#333;font-family:Courier New}.layui-code-h3{padding:0 10px;height:32px;line-height:32px;border-bottom:1px solid #e2e2e2}.layui-code-h3 a{position:absolute;right:10px;top:0;color:#999}.layui-code-view .layui-code-ol{position:relative;overflow:auto}.layui-code-view .layui-code-ol li{position:relative;margin-left:45px;line-height:20px;padding:0 5px;border-left:1px solid #e2e2e2;list-style-type:decimal-leading-zero;*list-style-type:decimal;background-color:#fff}.layui-code-view pre{margin:0}.layui-code-notepad{border:1px solid #0C0C0C;border-left-color:#3F3F3F;background-color:#0C0C0C;color:#C2BE9E}.layui-code-notepad .layui-code-h3{border-bottom:none}.layui-code-notepad .layui-code-ol li{background-color:#3F3F3F;border-left:none}
|
2
web/layui__/css/modules/laydate/default/laydate.css
Normal file
BIN
web/layui__/css/modules/layer/default/icon-ext.png
Normal file
After Width: | Height: | Size: 5.8 KiB |
BIN
web/layui__/css/modules/layer/default/icon.png
Normal file
After Width: | Height: | Size: 11 KiB |
2
web/layui__/css/modules/layer/default/layer.css
Normal file
BIN
web/layui__/css/modules/layer/default/loading-0.gif
Normal file
After Width: | Height: | Size: 5.7 KiB |
BIN
web/layui__/css/modules/layer/default/loading-1.gif
Normal file
After Width: | Height: | Size: 701 B |
BIN
web/layui__/css/modules/layer/default/loading-2.gif
Normal file
After Width: | Height: | Size: 1.7 KiB |
278
web/layui__/css/style.css
Normal file
@ -0,0 +1,278 @@
|
|||||||
|
.layui-project { position:absolute; top: 0; left: 80px;}
|
||||||
|
.layui-nav-bar { width: 0px !important; height: 0px !important; }
|
||||||
|
.fontcolor { color: #42546d !important;}
|
||||||
|
.layui-left-dd img { width: 20px; margin-right: 8px; }
|
||||||
|
.layui-left-dd:hover { background-color: #f6f8fa; }
|
||||||
|
.layui-left-dd a:hover { color: #3d90ff !important; }
|
||||||
|
.souduo { padding: 0 15px; height: 35px; line-height: 35px !important; cursor:pointer;}
|
||||||
|
.souduo:hover { background-color: #3f4979; color: rgba(255,255,255,1); }
|
||||||
|
.qvjiantou span { display: none; }
|
||||||
|
|
||||||
|
.sousuo-box { width: 254px; margin: 0px 8px; padding: 15px 0px; display: flex; justify-content: space-between; align-items: center; }
|
||||||
|
.sousuo { display: flex; align-items: center;}
|
||||||
|
.sousuo img { width: 16px; height: 16px; margin-right: 8px;}
|
||||||
|
.sousuo input { border: 0px; width: 144px; height: 30px; line-height: 30px; }
|
||||||
|
.kbgl { width: 18px; cursor:pointer;}
|
||||||
|
.chuangjian { width: 24px; cursor: pointer; height: 24px; text-align: center; line-height: 24px; color: #ffffff; background-color: #3d90ff; font-size: 18px; margin-left: 8px; }
|
||||||
|
.chuangjian:hover { background-color: #4fa1ff; }
|
||||||
|
.tab-box { background-color: #ffffff; padding: 15px 0; display: flex; justify-content: space-between; align-items: center; }
|
||||||
|
.tab-tit { font-size: 18px; color: #202d3f; height: 30px; line-height: 30px; margin-left: 16px; }
|
||||||
|
.tab-right-box { display: flex; justify-content: space-around; align-items: center; }
|
||||||
|
.img-box img{ width: 16px; }
|
||||||
|
.img-box { width: 24px; height: 24px; text-align: center; line-height: 24px; margin-right: 16px; cursor:pointer;}
|
||||||
|
.img-box:hover { background-color: #f1f8ff; }
|
||||||
|
.baobiao img{ width: 16px; }
|
||||||
|
.baobiao { width: 24px; height: 24px; background-color: #3d90ff; text-align: center; line-height: 24px; margin-right: 16px; cursor:pointer;}
|
||||||
|
|
||||||
|
.layui-card:hover { box-shadow: 0 12px 24px rgba(0, 0, 0, 0.15); }
|
||||||
|
.row-top { display: flex; align-items: center; justify-content: space-between; padding: 16px 24px 10px;}
|
||||||
|
.row-tit { display: flex; align-items: center; max-width: calc(100% - 100px)}
|
||||||
|
.row-tit p { font-size: 16px; font-weight: 500; color: #202d3f; white-space: nowrap; }
|
||||||
|
.row-tit p a { color: #202d3f; }
|
||||||
|
.row-tit p a:hover { color: #4fa1ff; }
|
||||||
|
.tishi { width: 24px; height: 24px; line-height: 24px; text-align: center; margin-left: 6px; transition: all .3s; cursor: pointer; border-radius: 2px; }
|
||||||
|
.tishi:hover { background-color: #f0f2f5; }
|
||||||
|
.action-box { display: flex; margin-left: 6px; }
|
||||||
|
.condition-box { padding: 0 24px; display: flex; justify-content: space-between; align-items: center;}
|
||||||
|
.time-cond { display: flex; align-items: center; font-size: 12px; line-height: 24px; color: #67729d;}
|
||||||
|
.time-cond span { min-width: 20px; height: 24px; line-height: 24px; margin-right: 8px; cursor: pointer }
|
||||||
|
.time-cond div { width: 1px; height: 8px; background-color: #f0f0f0; margin-right: 8px; }
|
||||||
|
.chart { cursor: pointer; }
|
||||||
|
.chart span { font-size: 12px; color: #67729d; margin-left: 4px; }
|
||||||
|
.dqtime { padding: 0 24px; color: #67729d; font-size: 12px; margin-top: 12px; }
|
||||||
|
.sanjiao { width: 0; height: 0; border-left: 4px solid transparent; border-right: 4px solid transparent; border-bottom: 3px solid #00bf74; margin: 0 8px; }
|
||||||
|
.proportion-data { display: flex; align-items: center; font-size: 12px; color: #42546d; }
|
||||||
|
.proportion-data span {color: #00bf74;}
|
||||||
|
.data-box { display: flex; justify-content: space-between; align-items: center; margin-top: 5px;}
|
||||||
|
.data-num { margin-left: 24px; font-size: 40px;color: #202d3f; }
|
||||||
|
.data-num span { font-size: 12px; color: #42546d; margin-left: 4px; }
|
||||||
|
.proportion { margin-left: 16px; }
|
||||||
|
.thesum-box { font-size: 12px; color: #202d3f; }
|
||||||
|
.thesum-box span { font-size: 20px; color: #202d3f; margin-left: 8px; margin-right: 4px; }
|
||||||
|
.thesum { margin-right: 24px; }
|
||||||
|
.echarts-box { padding: 0 24px; margin-top: 10px; height: 204px; }
|
||||||
|
.layui-card:last-child { padding-bottom: 12px; }
|
||||||
|
.echarts { width: 100%; height: 204px; }
|
||||||
|
.control { display: none; }
|
||||||
|
.table-box { padding: 0 24px; margin-top: 10px; height: 283px; }
|
||||||
|
|
||||||
|
.layui-table-body { height: 242px; overflow: auto; }
|
||||||
|
|
||||||
|
/* 搜索 */
|
||||||
|
.mask_box { display: none; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.3); position: fixed; top: 0; z-index: 99999; }
|
||||||
|
.search_pop { display: none; max-width: 800px; z-index: 9999999; border-radius: 2px; width: 90%; position: absolute; margin: 0 auto; top: 150px; left: 0; right: 0; background-color: #ffffff;}
|
||||||
|
.search_top { padding: 12px 16px; display: flex; align-items: center; justify-content: space-between; }
|
||||||
|
.search_left { display: flex; align-items: center; justify-content: flex-start; }
|
||||||
|
.zhanghu_box { display:inline-block; min-width: 40px; color: #67729d; height: 28px; padding: 0 6px; font-size: 13px; line-height: 30px; white-space: nowrap; vertical-align: top; background-color: #f0f2f5; border: 1px solid #f0f2f5; border-radius: 2px; cursor: pointer; transition: all .3s; }
|
||||||
|
.zhanghu_box:hover { background-color:#ffffff; border-color: #4fa1ff; }
|
||||||
|
.zhanghu_box img { position: relative; top: -2px; }
|
||||||
|
.judge_box { margin-left: 4px; padding: 0 6px; color: #67729d; height: 28px; line-height: 30px; border:1px solid #f0f2f5; background-color: #f0f2f5; border-radius: 2px; cursor: pointer; }
|
||||||
|
.judge_box:hover { background-color:#ffffff; border-color: #4fa1ff; }
|
||||||
|
.search_txt { margin-left: 4px; padding: 0 4px; max-width: 120px; border-radius: 2px; background-color: #f0f2f5; height: 28px; color: #67729d; font-size: 13px; line-height: 30px; border: 1px solid #f0f2f5; }
|
||||||
|
.search_txt:hover { border: 1px solid #4fa1ff; }
|
||||||
|
.searcg_but { background-color:#3d90ff; border-color: #3d90ff; height: 32px; padding: 0 16px; font-weight: 400; font-size: 14px; line-height: 30px; text-shadow: none; text-align:center; cursor: pointer; border-radius: 4px; color: #ffffff;}
|
||||||
|
|
||||||
|
.search_data { color: #42546d; padding: 8px 32px 0 32px; border-top: 1px solid #d9d9d9; max-height: 460px; overflow-y: auto; }
|
||||||
|
.search_data_con { cursor: pointer; border-bottom:1px solid #ebebeb; display:flex; align-items: center; justify-content: space-between; height: 40px;}
|
||||||
|
.search_data_con:hover { background-color: #f7f9fc; }
|
||||||
|
.search_data_con:hover span { color: #3d90ff; }
|
||||||
|
.search_data_con img { position: relative; top: -2px; }
|
||||||
|
.more_data { margin-top: -1px; display: flex; align-items: center; justify-content: center; height: 50px; color: #3d90ff; font-size: 16px; border-top: 1px solid #d9d9d9; cursor: pointer; }
|
||||||
|
|
||||||
|
.judge_box_con { display: none; width: 150px; border-radius: 4px; color: #67729d; position: absolute; top: 45px; left: 92px; background-color: #ffffff;}
|
||||||
|
.judge_box_con div{ padding: 6px 6px; margin: 4px 6px 0 6px; cursor: pointer; }
|
||||||
|
.judge_box_con div:hover { background-color: #f0f2f5; }
|
||||||
|
|
||||||
|
.zhuanghu_xila { z-index: 9999999; width: 480px; height: 420px; position: fixed; border-radius: 2px; background-color: #ffffff; box-shadow: 0px 0px 20px #888888; }
|
||||||
|
.zhuanghu_ss img { width: 14px; height: 14px; }
|
||||||
|
.zhuanghu_ss { padding: 16px 16px 0 24px; display: flex; justify-content: space-between; align-items: center; }
|
||||||
|
.zhuanghu_ss input { width: 392px; color: #000; border: 0px; height: 30px; }
|
||||||
|
|
||||||
|
input::-webkit-input-placeholder{ color:#a7b5c3;}
|
||||||
|
.zhuang_tab_box { display: flex; justify-content: space-between; height: 32px; margin-top: 4px; padding: 0 16px; border-bottom: 1px solid #f0f0f0; }
|
||||||
|
.zhuang_tab { display: flex; align-items: center; }
|
||||||
|
.zhuang_tab span { color: #67729d; position: relative; margin-right: 16px; padding: 0 4px; font-size: 12px; line-height: 30px; cursor: pointer; }
|
||||||
|
.xian { width: 16px; height: 2px; background-color: #3d90ff; margin: 0 auto; }
|
||||||
|
.zhuang_conetnt { height: calc(100% - 100px); margin-top: 12px; padding: 0 8px; overflow-x: hidden; overflow-y: auto; }
|
||||||
|
.zhuang_conetnt_tit { position: sticky; top: 0; padding-left: 16px; line-height: 20px; background-color: #ffffff; }
|
||||||
|
.ta-pso-lines { display: flex; flex-wrap: wrap; width: 100%; padding: 8px 0 4px; }
|
||||||
|
.ta-pso-line { width: 100%; color: #202d3f; padding-left: 16px; margin-bottom: 4px; overflow: hidden; font-size: 13px; line-height: 28px; text-overflow: ellipsis; cursor: pointer; }
|
||||||
|
.ta-pso-line:hover { background-color: #f6f8fa; }
|
||||||
|
|
||||||
|
.zhezhao_bg { display: none; background-color: rgba(0, 0, 0, 0); width: 100%; height: 100%; position: fixed; top: 0; z-index: 99999; }
|
||||||
|
.newskanban_box { display: none; background-color: #ffffff; z-index: 99999; position: fixed; left: 238px; top: 103px; border-radius: 2px; }
|
||||||
|
.tant-dropdown { max-height: 280px; padding: 4px; overflow-y: auto; box-shadow: 0px 0px 20px #888888;margin:0; text-align: left; list-style-type: none; outline: none; }
|
||||||
|
.tant-dropdown li { padding: 4px 8px; color: #42546d; font-size: 13px; line-height: 22px; cursor: pointer; }
|
||||||
|
.tant-dropdown img { position: relative; top: -2px; }
|
||||||
|
.tant-dropdown span { margin-left: 6px; }
|
||||||
|
.tant-xian { width: 100%; height: 1px; background-color: #f0f0f0; margin: 4px 0; }
|
||||||
|
.tant-dropdown li:hover { background-color: #f6f8fa; }
|
||||||
|
|
||||||
|
|
||||||
|
.ant-drawer-content-wrapper {display: none; width: 0px; height: 100%; background-color: #ffffff; position: fixed; z-index: 9999; top: 0; color: #000; }
|
||||||
|
.zhanwei { height: 60px; }
|
||||||
|
|
||||||
|
.time-box { margin-left: 4px; padding: 0 8px; cursor: pointer; display: none; }
|
||||||
|
.time-box img{ width: 14px; height: 14px; position: relative; top: -1px; }
|
||||||
|
.time-box input { border: 0px; color: #42546d; font-size: 13px; cursor: pointer; margin-left: 3px;}
|
||||||
|
.qingkomg { display: none; }
|
||||||
|
.mykanban img{ width: 20px; }
|
||||||
|
.mykanban span { display: none; }
|
||||||
|
.second { text-indent: 1.6em; }
|
||||||
|
.second3 { text-indent: 3.2em; }
|
||||||
|
.category img { display: none; width: 16px; position: absolute; right: 20px; top: 11px; z-index: 999; }
|
||||||
|
.category2 img { width: 16px; position: absolute; right: 20px; top: 11px; z-index: 999; }
|
||||||
|
.classa img{ display: block; }
|
||||||
|
.classa { background-color: #f6f8fa !important; color: #3d90ff !important; }
|
||||||
|
/* .level img { display: none; width: 16px; position: absolute; right: 20px; top: 11px; } */
|
||||||
|
.onlevel img{ display: block; }
|
||||||
|
.wenjian { display: block !important; width: 20px !important; height: 20px !important; position: relative !important; right: 0px !important; top: 10px !important; z-index: 999; }
|
||||||
|
|
||||||
|
/* 导航操作弹窗 */
|
||||||
|
.TabOperation_box { display: none; background-color: #ffffff; font-size: 14px; position: fixed; z-index: 99999; box-shadow: 0px 0px 20px #888888; }
|
||||||
|
.TabOperation_box ul { max-height: 280px; padding: 4px; }
|
||||||
|
.TabOperation_box ul li { color: #42546d; padding: 4px 8px; min-width: 60px; clear: both; margin: 0; font-weight: 400; line-height: 22px; white-space:nowrap; cursor: pointer; }
|
||||||
|
.TabOperation_box ul li img { width: 16px; margin-right: 10px; }
|
||||||
|
.TabOperation_box ul li:hover { background-color: #f6f8fa; }
|
||||||
|
|
||||||
|
.layui-left-dd a:hover > img{ display: block; }
|
||||||
|
.kanbanwenjianimg { width: 16px; position: absolute; right: 20px; top: 11px; z-index: 999; }
|
||||||
|
.kanbanwenjian:hover > .kanbanwenjianimg { display: block; }
|
||||||
|
.xiangmukongjian:hover > img{ display: block; }
|
||||||
|
|
||||||
|
/* 修改看板名称 */
|
||||||
|
.modifyname-bg { display: none; background-color: rgba(0, 0, 0, 0.3); width: 100%; height: 100%; position: fixed; top: 0; z-index: 9999; }
|
||||||
|
.modifyname-box { width: 396px; height: 174px; position: absolute; margin: auto; left: 0; right: 0; top: 0; bottom: 0; background-color: #ffffff; border-radius: 2px; }
|
||||||
|
.modifyname-top { display: flex; justify-content: space-between; align-items: center; padding: 16px 24px; color: #202d3f; font-size: 16px; }
|
||||||
|
.modifyname-top img { cursor: pointer; }
|
||||||
|
.modifyname-txt-box { height: 32px; padding: 10px 28px; }
|
||||||
|
.modifyname-txt { width: calc(100% - 16px); height: 32px; line-height: 32px; padding: 0 8px; color: #42546d; border-radius: 2px; border: 1px solid #f0f0f0; }
|
||||||
|
.modifyname-but-box { display: flex; justify-content: flex-end; align-items: center; margin: 25px 28px 0 28px; }
|
||||||
|
.modifyname-but-box div { width: 62px; height: 32px; text-align: center; line-height: 32px; font-size: 14px; font-weight: 400; border-radius: 2px; }
|
||||||
|
.modifyname-qx { cursor: pointer; border: 1px solid #d9d9d9; color: #42546d; margin-right: 16px; }
|
||||||
|
.modifyname-qd { cursor: pointer; background-color: #1890ff; color: #ffffff; }
|
||||||
|
|
||||||
|
/* 移动看板 */
|
||||||
|
.yidong-bg { display: none; background-color: rgba(0, 0, 0, 0.3); width: 100%; height: 100%; position: fixed; top: 0; z-index: 9999; }
|
||||||
|
.yidong-box { width: 396px; height: 242px; position: absolute; margin: auto; left: 0; right: 0; top: 0; bottom: 0; background-color: #ffffff; border-radius: 2px; }
|
||||||
|
.yidong-top { display: flex; justify-content: space-between; align-items: center; padding: 16px 24px; color: #202d3f; font-size: 16px; }
|
||||||
|
.yidong-top img { cursor: pointer; }
|
||||||
|
.yidong-txt-box { height: 32px; padding: 10px 28px; }
|
||||||
|
.yidong-txt { width: calc(100% - 16px); height: 32px; line-height: 32px; padding: 0 8px; color: #42546d; border-radius: 2px; border: 1px solid #f0f0f0; }
|
||||||
|
.yidong-but-box { display: flex; justify-content: flex-end; align-items: center; margin: 25px 28px 0 28px; }
|
||||||
|
.yidong-but-box div { width: 62px; height: 32px; text-align: center; line-height: 32px; font-size: 14px; font-weight: 400; border-radius: 2px; }
|
||||||
|
.yidong-qx {cursor: pointer; border: 1px solid #d9d9d9; color: #42546d; margin-right: 16px; }
|
||||||
|
.yidong-qd {cursor: pointer; background-color: #1890ff; color: #ffffff; }
|
||||||
|
.yidong-tab-box { padding: 0 24px; display: flex; align-items: center; justify-content: flex-start; height: 48px; }
|
||||||
|
.yidong-tab { display: flex; border: 1px solid #d9d9d9; }
|
||||||
|
.yidong-tab div { cursor: pointer; font-size: 12px; text-align: center; width: 70px; height: 28px; line-height: 28px;}
|
||||||
|
.tabdata { background-color: #40a9ff; color: #ffffff; }
|
||||||
|
|
||||||
|
.comboTreeWrapper{position: relative;text-align: left !important;}
|
||||||
|
.comboTreeInputWrapper{position: relative;}
|
||||||
|
.comboTreeArrowBtn {position: absolute;right: 1px;bottom: 1px;top: 1px;box-sizing: border-box;border: none;border-left: 1px solid #c7c7c7;border-radius: 0 3px 3px 0;}
|
||||||
|
.comboTreeDropDownContainer {display: none;background: #fff;border: 1px solid #aaa;max-height: 250px;overflow-y: auto;position: absolute;width: 100%;box-sizing: border-box;z-index: 999;}
|
||||||
|
.comboTreeDropDownContainer ul{padding: 0px;margin: 0;}
|
||||||
|
.comboTreeDropDownContainer li{list-style-type: none;padding-left: 15px;cursor: pointer;}
|
||||||
|
.comboTreeDropDownContainer li:hover{background-color: #ddd;}
|
||||||
|
.comboTreeDropDownContainer li:hover ul{background-color: #fff;}
|
||||||
|
.comboTreeDropDownContainer li span.comboTreeItemTitle.comboTreeItemHover{background-color: #418EFF;color: #fff;}
|
||||||
|
span.comboTreeItemTitle{display: block;padding: 2px 4px;}
|
||||||
|
.comboTreeDropDownContainer label{cursor: pointer;width: 100%;display: block;}
|
||||||
|
.comboTreeDropDownContainer .comboTreeItemTitle input {position: relative;top: 2px;margin: 0px 4px 0px 0px;}
|
||||||
|
.comboTreeParentPlus{position: relative;left: -12px;top: 4px;width: 4px;float: left;}
|
||||||
|
.comboTreeInputBox {padding: 7px 5px;border-radius: 3px;border: 1px solid #d9d9d9;width: 100%;box-sizing: border-box;padding-right: 24px;}
|
||||||
|
.comboTreeArrowBtnImg{font-size: 10px;}
|
||||||
|
.multiplesFilter{width: 100%;padding: 5px;box-sizing: border-box;border-top: none;border-left: none;border-right: none;border-bottom: 1px solid #999;}
|
||||||
|
.justAnotherInputBox2{ display: none;}
|
||||||
|
|
||||||
|
/* 复制看板 */
|
||||||
|
/* 移动看板 */
|
||||||
|
.copy-bg { display: none; background-color: rgba(0, 0, 0, 0.3); width: 100%; height: 100%; position: fixed; top: 0; z-index: 9999; }
|
||||||
|
.copy-box { width: 396px; height: 314px; position: absolute; margin: auto; left: 0; right: 0; top: 0; bottom: 0; background-color: #ffffff; border-radius: 2px; }
|
||||||
|
.copy-top { display: flex; justify-content: space-between; align-items: center; padding: 16px 24px; color: #202d3f; font-size: 16px; }
|
||||||
|
.copy-top img { cursor: pointer; }
|
||||||
|
.copy-txt-box { height: 32px; padding: 10px 28px 10px 114px; }
|
||||||
|
.copy-txt { width: calc(100% - 16px); height: 32px; line-height: 32px; padding: 0 8px; color: #42546d; border-radius: 2px; border: 1px solid #f0f0f0; }
|
||||||
|
.copy-but-box { display: flex; justify-content: flex-end; align-items: center; margin: 25px 28px 0 28px; }
|
||||||
|
.copy-but-box div { width: 62px; height: 32px; text-align: center; line-height: 32px; font-size: 14px; font-weight: 400; border-radius: 2px; }
|
||||||
|
.copy-qx { cursor: pointer; border: 1px solid #d9d9d9; color: #42546d; margin-right: 16px; }
|
||||||
|
.copy-qd { cursor: pointer; background-color: #1890ff; color: #ffffff; }
|
||||||
|
.copy-tab-box { padding: 0 28px; display: flex; align-items: center; justify-content: flex-start; height: 48px; }
|
||||||
|
.copy-title { font-size: 13px; color: #607595; width: 70px; text-align: right; padding-right: 16px; }
|
||||||
|
.copy-tab { display: flex; border: 1px solid #d9d9d9; }
|
||||||
|
.copy-tab div { cursor: pointer; font-size: 12px; text-align: center; width: 70px; height: 28px; line-height: 28px;}
|
||||||
|
.copy-name-box { height: 32px; padding: 10px 28px; display: flex; align-items: center; justify-content: flex-start; }
|
||||||
|
.copyname-txt { width: calc(100% - 86px); height: 32px; line-height: 32px; padding: 0 8px; color: #42546d; border-radius: 2px; border: 1px solid #f0f0f0; }
|
||||||
|
.copy-tishi { margin-left: 114px; width: 205px; text-align: center; color: #607595; padding: 2px; font-size: 12px; background-color: #f1f8ff; }
|
||||||
|
|
||||||
|
/* 删除看板 */
|
||||||
|
.del-bg { display: none; background-color: rgba(0, 0, 0, 0.3); width: 100%; height: 100%; position: fixed; top: 0; z-index: 9999; }
|
||||||
|
.del-box { border-radius: 2px; width: 396px; height: 180px; background-color: #fff; position: absolute; margin: auto; left: 0; right: 0; top: 0; bottom: 0; }
|
||||||
|
.del-xinxi { padding: 36px 26px 0; }
|
||||||
|
.del-tit { font-size: 16px; margin-bottom: 8px; color: #42546d; font-weight: 500; }
|
||||||
|
.del-tit img { width: 22px; margin-right: 10px;}
|
||||||
|
.del-tishi { margin-bottom: 24px; padding-left: 32px; color: #607595; font-size: 13px; }
|
||||||
|
.del-but-box { display: flex; justify-content: flex-end; align-items: center; margin: 46px 28px 0 28px; }
|
||||||
|
.del-but-box div { width: 62px; height: 32px; text-align: center; line-height: 32px; font-size: 14px; font-weight: 400; border-radius: 2px; }
|
||||||
|
.del-qx { cursor: pointer; border: 1px solid #d9d9d9; color: #42546d; margin-right: 16px; }
|
||||||
|
.del-qd { cursor: pointer; background-color: #ff5d5d; color: #ffffff; }
|
||||||
|
|
||||||
|
/* 控件设置 */
|
||||||
|
.kongjian-bg { display: block; background-color: rgba(0, 0, 0, 0.3); width: 100%; height: 100%; position: fixed; top: 0; z-index: 9999; }
|
||||||
|
.kongjian-box { width: 396px; height: 500px; background-color: #fff; position: absolute; margin: auto; top: 0; left: 0; right: 0; bottom: 0;border-radius: 2px; }
|
||||||
|
.kongjian-top { display: flex; justify-content: space-between; align-items: center; padding: 16px 24px; color: #202d3f; font-size: 16px; }
|
||||||
|
.kongjian-mc-box { margin-top: 10px; display: flex; justify-content: space-between; align-content:center; padding: 0 24px; }
|
||||||
|
.kongjian-mc-box span { width: 100px; line-height: 34px; padding-right: 24px; color: #42546d; }
|
||||||
|
.kongjian-mc-box input { width: 260px; height: 32px; padding: 0 8px; color: #42546d; font-size: 14px; line-height: 30px; border: 1px solid #f0f0f0; border-radius: 2px; }
|
||||||
|
.kongjian-tianjia { color: #3d90ff; line-height: 34px; padding: 0 8px; cursor: pointer; }
|
||||||
|
.kongjian-renyuan-box { margin-top: 6px; height: 260px; padding: 8px 8px 8px 16px; overflow-y: scroll; border-top: 1px solid #f0f0f0; }
|
||||||
|
.kongjian-but-box { border-top: 1px solid #f0f0f0; display: flex; justify-content: space-between; align-items: center; padding: 0 24px; }
|
||||||
|
.kongjian-cz a{ color: #666 !important; }
|
||||||
|
.kongjian-cz span { display: none; }
|
||||||
|
.kongjian-cz { padding: 0 !important; margin-top: 7px;}
|
||||||
|
.kongjian-cz li {line-height: 32px !important;}
|
||||||
|
.kongjian-but { display: flex; margin-top: 7px; }
|
||||||
|
.kongjian-but div { width: 62px; height: 32px; text-align: center; line-height: 32px; font-size: 14px; font-weight: 400; border-radius: 2px; }
|
||||||
|
.kongjian-qx { cursor: pointer; border: 1px solid #d9d9d9; color: #42546d; margin-right: 16px; }
|
||||||
|
.kongjian-qd { cursor: pointer; background-color: #1890ff; color: #ffffff; }
|
||||||
|
.chuangjiankongjian-box { padding: 16px 14px; background: linear-gradient(270deg,rgba(61,144,255,.04),rgba(61,144,255,.1)); }
|
||||||
|
.chuangjiankongjian-tit { font-size: 16px; color: #202d3f; font-weight: 500; }
|
||||||
|
.chuangjiankongjian-tit2 { margin-top: 4px; color: #67729d; font-weight: 400; font-size: 12px; }
|
||||||
|
|
||||||
|
/* 新建看板 */
|
||||||
|
.new-bg { display: none; background-color: rgba(0, 0, 0, 0.3); width: 100%; height: 100%; position: fixed; top: 0; z-index: 9999; }
|
||||||
|
.new-box { width: 396px; height: 275px; position: absolute; margin: auto; left: 0; right: 0; top: 0; bottom: 0; background-color: #ffffff; border-radius: 2px; }
|
||||||
|
.new-top { display: flex; justify-content: space-between; align-items: center; padding: 16px 24px; color: #202d3f; font-size: 16px; }
|
||||||
|
.new-top img { cursor: pointer; }
|
||||||
|
.new-txt-box { height: 32px; padding: 10px 28px 10px 114px; }
|
||||||
|
.new-txt { width: calc(100% - 16px); height: 32px; line-height: 32px; padding: 0 8px; color: #42546d; border-radius: 2px; border: 1px solid #f0f0f0; }
|
||||||
|
.new-but-box { display: flex; justify-content: flex-end; align-items: center; margin: 25px 28px 0 28px; }
|
||||||
|
.new-but-box div { width: 62px; height: 32px; text-align: center; line-height: 32px; font-size: 14px; font-weight: 400; border-radius: 2px; }
|
||||||
|
.new-qx { cursor: pointer; border: 1px solid #d9d9d9; color: #42546d; margin-right: 16px; }
|
||||||
|
.new-qd { cursor: pointer; background-color: #1890ff; color: #ffffff; }
|
||||||
|
.new-tab-box { padding: 0 28px; display: flex; align-items: center; justify-content: flex-start; height: 48px; }
|
||||||
|
.new-title { font-size: 13px; color: #607595; width: 70px; text-align: right; padding-right: 16px; }
|
||||||
|
.new-tab { display: flex; border: 1px solid #d9d9d9; }
|
||||||
|
.new-tab div { cursor: pointer; font-size: 12px; text-align: center; width: 70px; height: 28px; line-height: 28px;}
|
||||||
|
.new-name-box { height: 32px; padding: 10px 28px; display: flex; align-items: center; justify-content: flex-start; }
|
||||||
|
.newname-txt { width: calc(100% - 86px); height: 32px; line-height: 32px; padding: 0 8px; color: #42546d; border-radius: 2px; border: 1px solid #f0f0f0; }
|
||||||
|
|
||||||
|
/* 新建文件夹 */
|
||||||
|
.newwenjian-bg { display: none; background-color: rgba(0, 0, 0, 0.3); width: 100%; height: 100%; position: fixed; top: 0; z-index: 9999; }
|
||||||
|
.newwenjian-box { width: 396px; height: 275px; position: absolute; margin: auto; left: 0; right: 0; top: 0; bottom: 0; background-color: #ffffff; border-radius: 2px; }
|
||||||
|
.newwenjian-top { display: flex; justify-content: space-between; align-items: center; padding: 16px 24px; color: #202d3f; font-size: 16px; }
|
||||||
|
.newwenjian-top img { cursor: pointer; }
|
||||||
|
.newwenjian-txt-box { height: 32px; padding: 10px 28px 10px 114px; }
|
||||||
|
.newwenjian-txt { width: calc(100% - 16px); height: 32px; line-height: 32px; padding: 0 8px; color: #42546d; border-radius: 2px; border: 1px solid #f0f0f0; }
|
||||||
|
.newwenjian-but-box { display: flex; justify-content: flex-end; align-items: center; margin: 25px 28px 0 28px; }
|
||||||
|
.newwenjian-but-box div { width: 62px; height: 32px; text-align: center; line-height: 32px; font-size: 14px; font-weight: 400; border-radius: 2px; }
|
||||||
|
.newwenjian-qx { cursor: pointer; border: 1px solid #d9d9d9; color: #42546d; margin-right: 16px; }
|
||||||
|
.newwenjian-qd { cursor: pointer; background-color: #1890ff; color: #ffffff; }
|
||||||
|
.newwenjian-tab-box { padding: 0 28px; display: flex; align-items: center; justify-content: flex-start; height: 48px; }
|
||||||
|
.newwenjian-title { font-size: 13px; color: #607595; width: 70px; text-align: right; padding-right: 16px; }
|
||||||
|
.newwenjian-tab { display: flex; border: 1px solid #d9d9d9; }
|
||||||
|
.newwenjian-tab div { cursor: pointer; font-size: 12px; text-align: center; width: 70px; height: 28px; line-height: 28px;}
|
||||||
|
.newwenjian-name-box { height: 32px; padding: 10px 28px; display: flex; align-items: center; justify-content: flex-start; }
|
||||||
|
.newwenjianname-txt { width: calc(100% - 86px); height: 32px; line-height: 32px; padding: 0 8px; color: #42546d; border-radius: 2px; border: 1px solid #f0f0f0; }
|
||||||
|
|
1490
web/layui__/daterangepicker.min.js
vendored
Normal file
144
web/layui__/doT.js
Normal file
@ -0,0 +1,144 @@
|
|||||||
|
// doT.js
|
||||||
|
// 2011-2014, Laura Doktorova, https://github.com/olado/doT
|
||||||
|
// Licensed under the MIT license.
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
var doT = {
|
||||||
|
name: "doT",
|
||||||
|
version: "1.1.1",
|
||||||
|
templateSettings: {
|
||||||
|
evaluate: /\{\{([\s\S]+?(\}?)+)\}\}/g,
|
||||||
|
interpolate: /\{\{=([\s\S]+?)\}\}/g,
|
||||||
|
encode: /\{\{!([\s\S]+?)\}\}/g,
|
||||||
|
use: /\{\{#([\s\S]+?)\}\}/g,
|
||||||
|
useParams: /(^|[^\w$])def(?:\.|\[[\'\"])([\w$\.]+)(?:[\'\"]\])?\s*\:\s*([\w$\.]+|\"[^\"]+\"|\'[^\']+\'|\{[^\}]+\})/g,
|
||||||
|
define: /\{\{##\s*([\w\.$]+)\s*(\:|=)([\s\S]+?)#\}\}/g,
|
||||||
|
defineParams:/^\s*([\w$]+):([\s\S]+)/,
|
||||||
|
conditional: /\{\{\?(\?)?\s*([\s\S]*?)\s*\}\}/g,
|
||||||
|
iterate: /\{\{~\s*(?:\}\}|([\s\S]+?)\s*\:\s*([\w$]+)\s*(?:\:\s*([\w$]+))?\s*\}\})/g,
|
||||||
|
varname: "it",
|
||||||
|
strip: true,
|
||||||
|
append: true,
|
||||||
|
selfcontained: false,
|
||||||
|
doNotSkipEncoded: false
|
||||||
|
},
|
||||||
|
template: undefined, //fn, compile template
|
||||||
|
compile: undefined, //fn, for express
|
||||||
|
log: true
|
||||||
|
}, _globals;
|
||||||
|
|
||||||
|
doT.encodeHTMLSource = function(doNotSkipEncoded) {
|
||||||
|
var encodeHTMLRules = { "&": "&", "<": "<", ">": ">", '"': """, "'": "'", "/": "/" },
|
||||||
|
matchHTML = doNotSkipEncoded ? /[&<>"'\/]/g : /&(?!#?\w+;)|<|>|"|'|\//g;
|
||||||
|
return function(code) {
|
||||||
|
return code ? code.toString().replace(matchHTML, function(m) {return encodeHTMLRules[m] || m;}) : "";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
_globals = (function(){ return this || (0,eval)("this"); }());
|
||||||
|
|
||||||
|
/* istanbul ignore else */
|
||||||
|
if (typeof module !== "undefined" && module.exports) {
|
||||||
|
module.exports = doT;
|
||||||
|
} else if (typeof define === "function" && define.amd) {
|
||||||
|
define(function(){return doT;});
|
||||||
|
} else {
|
||||||
|
_globals.doT = doT;
|
||||||
|
}
|
||||||
|
|
||||||
|
var startend = {
|
||||||
|
append: { start: "'+(", end: ")+'", startencode: "'+encodeHTML(" },
|
||||||
|
split: { start: "';out+=(", end: ");out+='", startencode: "';out+=encodeHTML(" }
|
||||||
|
}, skip = /$^/;
|
||||||
|
|
||||||
|
function resolveDefs(c, block, def) {
|
||||||
|
return ((typeof block === "string") ? block : block.toString())
|
||||||
|
.replace(c.define || skip, function(m, code, assign, value) {
|
||||||
|
if (code.indexOf("def.") === 0) {
|
||||||
|
code = code.substring(4);
|
||||||
|
}
|
||||||
|
if (!(code in def)) {
|
||||||
|
if (assign === ":") {
|
||||||
|
if (c.defineParams) value.replace(c.defineParams, function(m, param, v) {
|
||||||
|
def[code] = {arg: param, text: v};
|
||||||
|
});
|
||||||
|
if (!(code in def)) def[code]= value;
|
||||||
|
} else {
|
||||||
|
new Function("def", "def['"+code+"']=" + value)(def);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
})
|
||||||
|
.replace(c.use || skip, function(m, code) {
|
||||||
|
if (c.useParams) code = code.replace(c.useParams, function(m, s, d, param) {
|
||||||
|
if (def[d] && def[d].arg && param) {
|
||||||
|
var rw = (d+":"+param).replace(/'|\\/g, "_");
|
||||||
|
def.__exp = def.__exp || {};
|
||||||
|
def.__exp[rw] = def[d].text.replace(new RegExp("(^|[^\\w$])" + def[d].arg + "([^\\w$])", "g"), "$1" + param + "$2");
|
||||||
|
return s + "def.__exp['"+rw+"']";
|
||||||
|
}
|
||||||
|
});
|
||||||
|
var v = new Function("def", "return " + code)(def);
|
||||||
|
return v ? resolveDefs(c, v, def) : v;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function unescape(code) {
|
||||||
|
return code.replace(/\\('|\\)/g, "$1").replace(/[\r\t\n]/g, " ");
|
||||||
|
}
|
||||||
|
|
||||||
|
doT.template = function(tmpl, c, def) {
|
||||||
|
c = c || doT.templateSettings;
|
||||||
|
var cse = c.append ? startend.append : startend.split, needhtmlencode, sid = 0, indv,
|
||||||
|
str = (c.use || c.define) ? resolveDefs(c, tmpl, def || {}) : tmpl;
|
||||||
|
|
||||||
|
str = ("var out='" + (c.strip ? str.replace(/(^|\r|\n)\t* +| +\t*(\r|\n|$)/g," ")
|
||||||
|
.replace(/\r|\n|\t|\/\*[\s\S]*?\*\//g,""): str)
|
||||||
|
.replace(/'|\\/g, "\\$&")
|
||||||
|
.replace(c.interpolate || skip, function(m, code) {
|
||||||
|
return cse.start + unescape(code) + cse.end;
|
||||||
|
})
|
||||||
|
.replace(c.encode || skip, function(m, code) {
|
||||||
|
needhtmlencode = true;
|
||||||
|
return cse.startencode + unescape(code) + cse.end;
|
||||||
|
})
|
||||||
|
.replace(c.conditional || skip, function(m, elsecase, code) {
|
||||||
|
return elsecase ?
|
||||||
|
(code ? "';}else if(" + unescape(code) + "){out+='" : "';}else{out+='") :
|
||||||
|
(code ? "';if(" + unescape(code) + "){out+='" : "';}out+='");
|
||||||
|
})
|
||||||
|
.replace(c.iterate || skip, function(m, iterate, vname, iname) {
|
||||||
|
if (!iterate) return "';} } out+='";
|
||||||
|
sid+=1; indv=iname || "i"+sid; iterate=unescape(iterate);
|
||||||
|
return "';var arr"+sid+"="+iterate+";if(arr"+sid+"){var "+vname+","+indv+"=-1,l"+sid+"=arr"+sid+".length-1;while("+indv+"<l"+sid+"){"
|
||||||
|
+vname+"=arr"+sid+"["+indv+"+=1];out+='";
|
||||||
|
})
|
||||||
|
.replace(c.evaluate || skip, function(m, code) {
|
||||||
|
return "';" + unescape(code) + "out+='";
|
||||||
|
})
|
||||||
|
+ "';return out;")
|
||||||
|
.replace(/\n/g, "\\n").replace(/\t/g, '\\t').replace(/\r/g, "\\r")
|
||||||
|
.replace(/(\s|;|\}|^|\{)out\+='';/g, '$1').replace(/\+''/g, "");
|
||||||
|
//.replace(/(\s|;|\}|^|\{)out\+=''\+/g,'$1out+=');
|
||||||
|
|
||||||
|
if (needhtmlencode) {
|
||||||
|
if (!c.selfcontained && _globals && !_globals._encodeHTML) _globals._encodeHTML = doT.encodeHTMLSource(c.doNotSkipEncoded);
|
||||||
|
str = "var encodeHTML = typeof _encodeHTML !== 'undefined' ? _encodeHTML : ("
|
||||||
|
+ doT.encodeHTMLSource.toString() + "(" + (c.doNotSkipEncoded || '') + "));"
|
||||||
|
+ str;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
return new Function(c.varname, str);
|
||||||
|
} catch (e) {
|
||||||
|
/* istanbul ignore else */
|
||||||
|
if (typeof console !== "undefined") console.log("Could not create a template function: " + str);
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
doT.compile = function(tmpl, def) {
|
||||||
|
return doT.template(tmpl, null, def);
|
||||||
|
};
|
||||||
|
}());
|
24
web/layui__/echarts.min.js
vendored
Normal file
BIN
web/layui__/font/iconfont.eot
Normal file
554
web/layui__/font/iconfont.svg
Normal file
After Width: | Height: | Size: 299 KiB |
BIN
web/layui__/font/iconfont.ttf
Normal file
BIN
web/layui__/font/iconfont.woff
Normal file
BIN
web/layui__/font/iconfont.woff2
Normal file
1
web/layui__/icontains.js
Normal file
@ -0,0 +1 @@
|
|||||||
|
$.expr[':'].icontains = function (obj, index, meta, stack) { return (obj.textContent || obj.innerText || jQuery(obj).text() || '').toLowerCase().indexOf(meta[3].toLowerCase()) >= 0; };
|
BIN
web/layui__/images/baobiao.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
web/layui__/images/caidan.png
Normal file
After Width: | Height: | Size: 7.0 KiB |
BIN
web/layui__/images/capytishi.png
Normal file
After Width: | Height: | Size: 537 B |
BIN
web/layui__/images/cha.png
Normal file
After Width: | Height: | Size: 164 B |
BIN
web/layui__/images/del.png
Normal file
After Width: | Height: | Size: 346 B |
BIN
web/layui__/images/face/0.gif
Normal file
After Width: | Height: | Size: 2.6 KiB |
BIN
web/layui__/images/face/1.gif
Normal file
After Width: | Height: | Size: 5.4 KiB |
BIN
web/layui__/images/face/10.gif
Normal file
After Width: | Height: | Size: 2.7 KiB |
BIN
web/layui__/images/face/11.gif
Normal file
After Width: | Height: | Size: 4.0 KiB |
BIN
web/layui__/images/face/12.gif
Normal file
After Width: | Height: | Size: 3.3 KiB |
BIN
web/layui__/images/face/13.gif
Normal file
After Width: | Height: | Size: 7.3 KiB |
BIN
web/layui__/images/face/14.gif
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
web/layui__/images/face/15.gif
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
web/layui__/images/face/16.gif
Normal file
After Width: | Height: | Size: 6.6 KiB |
BIN
web/layui__/images/face/17.gif
Normal file
After Width: | Height: | Size: 4.3 KiB |
BIN
web/layui__/images/face/18.gif
Normal file
After Width: | Height: | Size: 2.9 KiB |
BIN
web/layui__/images/face/19.gif
Normal file
After Width: | Height: | Size: 3.0 KiB |
BIN
web/layui__/images/face/2.gif
Normal file
After Width: | Height: | Size: 3.1 KiB |
BIN
web/layui__/images/face/20.gif
Normal file
After Width: | Height: | Size: 5.0 KiB |
BIN
web/layui__/images/face/21.gif
Normal file
After Width: | Height: | Size: 5.1 KiB |
BIN
web/layui__/images/face/22.gif
Normal file
After Width: | Height: | Size: 9.6 KiB |
BIN
web/layui__/images/face/23.gif
Normal file
After Width: | Height: | Size: 3.7 KiB |
BIN
web/layui__/images/face/24.gif
Normal file
After Width: | Height: | Size: 7.9 KiB |
BIN
web/layui__/images/face/25.gif
Normal file
After Width: | Height: | Size: 3.1 KiB |
BIN
web/layui__/images/face/26.gif
Normal file
After Width: | Height: | Size: 3.2 KiB |
BIN
web/layui__/images/face/27.gif
Normal file
After Width: | Height: | Size: 4.3 KiB |
BIN
web/layui__/images/face/28.gif
Normal file
After Width: | Height: | Size: 2.7 KiB |
BIN
web/layui__/images/face/29.gif
Normal file
After Width: | Height: | Size: 4.7 KiB |
BIN
web/layui__/images/face/3.gif
Normal file
After Width: | Height: | Size: 3.9 KiB |
BIN
web/layui__/images/face/30.gif
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
web/layui__/images/face/31.gif
Normal file
After Width: | Height: | Size: 2.0 KiB |
BIN
web/layui__/images/face/32.gif
Normal file
After Width: | Height: | Size: 3.4 KiB |
BIN
web/layui__/images/face/33.gif
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
web/layui__/images/face/34.gif
Normal file
After Width: | Height: | Size: 3.6 KiB |
BIN
web/layui__/images/face/35.gif
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
web/layui__/images/face/36.gif
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
web/layui__/images/face/37.gif
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
web/layui__/images/face/38.gif
Normal file
After Width: | Height: | Size: 3.5 KiB |
BIN
web/layui__/images/face/39.gif
Normal file
After Width: | Height: | Size: 6.3 KiB |
BIN
web/layui__/images/face/4.gif
Normal file
After Width: | Height: | Size: 5.6 KiB |
BIN
web/layui__/images/face/40.gif
Normal file
After Width: | Height: | Size: 3.1 KiB |
BIN
web/layui__/images/face/41.gif
Normal file
After Width: | Height: | Size: 3.6 KiB |
BIN
web/layui__/images/face/42.gif
Normal file
After Width: | Height: | Size: 5.2 KiB |
BIN
web/layui__/images/face/43.gif
Normal file
After Width: | Height: | Size: 2.6 KiB |
BIN
web/layui__/images/face/44.gif
Normal file
After Width: | Height: | Size: 4.0 KiB |
BIN
web/layui__/images/face/45.gif
Normal file
After Width: | Height: | Size: 3.3 KiB |
BIN
web/layui__/images/face/46.gif
Normal file
After Width: | Height: | Size: 2.9 KiB |
BIN
web/layui__/images/face/47.gif
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
web/layui__/images/face/48.gif
Normal file
After Width: | Height: | Size: 2.6 KiB |
BIN
web/layui__/images/face/49.gif
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
web/layui__/images/face/5.gif
Normal file
After Width: | Height: | Size: 4.5 KiB |
BIN
web/layui__/images/face/50.gif
Normal file
After Width: | Height: | Size: 5.7 KiB |
BIN
web/layui__/images/face/51.gif
Normal file
After Width: | Height: | Size: 2.7 KiB |
BIN
web/layui__/images/face/52.gif
Normal file
After Width: | Height: | Size: 777 B |
BIN
web/layui__/images/face/53.gif
Normal file
After Width: | Height: | Size: 2.1 KiB |
BIN
web/layui__/images/face/54.gif
Normal file
After Width: | Height: | Size: 2.1 KiB |
BIN
web/layui__/images/face/55.gif
Normal file
After Width: | Height: | Size: 1.9 KiB |
BIN
web/layui__/images/face/56.gif
Normal file
After Width: | Height: | Size: 2.0 KiB |
BIN
web/layui__/images/face/57.gif
Normal file
After Width: | Height: | Size: 2.6 KiB |
BIN
web/layui__/images/face/58.gif
Normal file
After Width: | Height: | Size: 2.2 KiB |
BIN
web/layui__/images/face/59.gif
Normal file
After Width: | Height: | Size: 10 KiB |