其余文件

This commit is contained in:
2026-04-14 17:46:22 +08:00
parent 294b68fe37
commit 3691f4db22
1343 changed files with 189847 additions and 0 deletions

View File

@ -0,0 +1,140 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{$view_env_name}{$config.name}</title>
<link rel="shortcut icon" href="{$storageUrl}{$config.web_favicon}"/>
<link rel="stylesheet" href="__PUBLIC__/static/lib/layui/css/layui.css">
<link rel="stylesheet" href="__PUBLIC__/static/admin/css/app.css">
<script src="__PUBLIC__/static/lib/layui/layui.js"></script>
<script src="__PUBLIC__/static/admin/js/app.js"></script>
</head>
<body>
<!-- 头部区域 -->
<div class="layui-header">
<ul class="layui-nav layui-layout-left">
<li class="layui-nav-item">
<a class="refresh" href="javascript:" title="刷新">
<i class="layui-icon layui-icon-refresh-3"></i>
</a>
</li>
</ul>
<ul class="layui-nav layui-layout-right">
<li class="layui-nav-item layui-hide-xs">
<a class="fullscreen" href="javascript:">
<i class="layui-icon layui-icon-screen-full"></i>
</a>
</li>
<li class="layui-nav-item">
<a href="javascript:">
<cite>{$admin_name}{$role_name}</cite>
<span class="layui-nav-more"></span></a>
<dl class="layui-nav-child layui-anim layui-anim-upbit userinfo">
<!-- <dd><a lay-id="u-1" href="javascript:" data-url="pages/member/user.html">个人中心<span class="layui-badge-dot"></span></a></dd>-->
<!-- <dd><hr></dd>-->
<dd><a href="{:url('login/logout')}" id="logout">退出登录</a></dd>
</dl>
</li>
</ul>
</div>
<!-- 菜单区域 -->
<div class="layui-sidebar ">
<div class="layui-logo">
<img style="height:20px;width: 77px" src="{$storageUrl}{$config.backstage_logo}">
</div>
<ul class="layui-side-menu">
{volist name="menu" id="vo"}
<li>
{empty name="vo.sub"}
<a lay-id="{$vo.id}" lay-href="{:url($vo.uri)}" class="active">
<i class="layui-icon {$vo.icon}"></i>
<cite>{$vo.name}</cite>
</a>
{else/}
<a href="javascript:">
<i class="layui-icon {$vo.icon}"></i>
<cite>{$vo.name}</cite>
</a>
<dl class="child-menu">
<dt><strong>{$vo.name}</strong></dt>
{volist name="vo.sub" id="second"}
<dd>
{empty name="second.sub"}
<a lay-id="{$second.id}" lay-href="{:url($second.uri)}">{$second.name}</a>
{else /}
<a class="child-menu-title">
<i class="layui-icon layui-icon-triangle-d"></i>
<cite>{$second.name}</cite>
</a>
<dl>
{volist name="second.sub" id="third"}
<dd><a lay-id="{$third.id}" lay-href="{:url($third.uri)}">{$third.name}</a></dd>
{/volist}
</dl>
{/empty}
</dd>
{/volist}
</dl>
{/empty}
</li>
{/volist}
</ul>
</div>
<!-- 标签区域 -->
<div class="lay-pagetabs" id="LAY_app_tabs">
<div class="layui-icon lay-tabs-control layui-icon-prev" lay-event="leftPage"></div>
<div class="layui-icon lay-tabs-control layui-icon-next" lay-event="rightPage"></div>
<div class="layui-icon lay-tabs-control layui-icon-down">
<ul class="layui-nav lay-tabs-select" lay-filter="lay-pagetabs-nav">
<li class="layui-nav-item" lay-unselect>
<a href="javascript:"><span class="layui-nav-more"></span></a>
<dl class="layui-nav-child layui-anim-fadein11 ">
<dd lay-event="closeThisTabs"><a href="javascript:">关闭当前标签页</a></dd>
<dd lay-event="closeOtherTabs"><a href="javascript:">关闭其它标签页</a></dd>
<dd lay-event="closeAllTabs"><a href="javascript:">关闭全部标签页</a></dd>
</dl>
</li>
</ul>
</div>
<div class="layui-tab" lay-unauto lay-allowclose="true" lay-filter="lay-layout-tabs" id="lay-layout-tabs ul">
<ul class="layui-tab-title" id="LAY_app_tabsheader">
<li lay-id="0" lay-attr="{:url('index/stat')}" class="layui-this">工作台<i class="layui-icon layui-tab-close"></i></li>
</ul>
</div>
</div>
<!-- 主体区域 -->
<div class="layui-body" id="LAY_app_body">
<div lay-id="0" class="lay-tabsbody-item layui-show">
<iframe src="{:url('index/stat')}" class="lay-iframe" name="view_frame"></iframe>
</div>
</div>
<script>
function refreshHighlight(url,id) {
console.log(url);
$ = layui.jquery;
$(".layui-nav[lay-filter='lay-pagetabs-nav'] a").each(function (ind, val) {
if($(this).attr('href') === url){
$('.layui-nav dd').removeClass('layui-this');
$(this).parent('dd').addClass('layui-this');
console.log(id);
}else{
var html = '<li lay-id="'+id+'" lay-attr="'+url+'" class="layui-this">工作台2<i class="layui-icon layui-tab-close">ဆ</i></li>';
$('.lay-layout-tabs ul').append(html);
console.log(html);
}
})
}
</script>
</body>
</html>

View File

@ -0,0 +1,654 @@
{layout name="layout1" /}
<link rel="stylesheet" href="/static/plug/layui-admin/dist/layuiadmin/layui/css/layui.css?v={$front_version}" media="all">
<link rel="stylesheet" href="/static/plug/layui-admin/dist/layuiadmin/style/admin.css?v={$front_version}" media="all">
<link rel="stylesheet" href="/static/plug/layui-admin/dist/layuiadmin/style/like.css?v={$front_version}" media="all">
<script src="__PUBLIC__/static/lib/layui/layui.js"></script>
<script src="__PUBLIC__/static/admin/js/app.js"></script>
<style>
.header-font{
font-size: 20px
}
.layui-card .data-all {
display: flex;
justify-content: space-between;
margin-top: 20px;
}
.layui-card .text-style {
font-size: 16px;
}
.header-time{
margin-left: 20px
}
.layadmin-shortcut .shortcut-list {
padding: 30px 0;
display: flex;
flex-wrap: wrap;
}
.layadmin-shortcut .shortcut-list li {
min-width: 100px;
margin-bottom: 20px;
width: 12.5%;
}
.layadmin-shortcut .shortcut-list .icon{
width: 62px;
height: 62px;
margin-bottom: 5px;
}
.tips {
float: right;
padding: 0 10px;
margin-top: 10px;
height: 20px;
line-height: 20px;
font-size: 12px;
color: #3A91FB;
border-radius: 30px;
border: 1px #3A91FB solid;
background: #eaf3ff;
}
.header-font{
font-size: 20px
}
.layui-card .data-all {
display: flex;
justify-content: space-between;
margin-top: 20px;
}
.layui-card .text-style {
font-size: 16px;
}
.header-time{
margin-left: 20px
}
.layadmin-shortcut .shortcut-list {
padding: 30px 0;
display: flex;
flex-wrap: wrap;
}
.layadmin-shortcut .shortcut-list li {
min-width: 100px;
margin-bottom: 20px;
width: 12.5%;
}
.layadmin-shortcut .shortcut-list .icon{
width: 62px;
height: 62px;
margin-bottom: 5px;
}
.tips {
float: right;
padding: 0 10px;
margin-top: 10px;
height: 20px;
line-height: 20px;
font-size: 12px;
color: #3A91FB;
border-radius: 30px;
border: 1px #3A91FB solid;
background: #eaf3ff;
}
.red{
color:red;
}
.green{
color:green;
}
.laytable-cell-1-0-1,.laytable-cell-2-0-1 {
width: 280px;
height: auto;
}
</style>
<div class="wrapper" style="margin-bottom: 100px">
<div class="layui-card" >
<div class="layui-card-header">
<span class="header-font">运营数据</span>
<span class="header-time">更新时间:{$res.time}</span>
</div>
</div>
<div class="layui-row layui-col-space15">
<div class="layui-col-sm3">
<div class="layui-card">
<div class="layui-card-header">
成交订单(笔)
<span class="tips">今日</span>
</div>
<div class="layui-card-body layuiadmin-card-list">
<p class="layuiadmin-big-font">{$res.data.order_num.today}</p>
<p>昨日:<span class="text-style">{$res.data.order_num.yesterday}</span>
&nbsp;&nbsp;
{if ($res.data.order_num.change_red > 0) }
<span class="green">降:<span class="text-style">{$res.data.order_num.change_red}</span>
{else/}
<span class="red">涨:<span class="text-style">{$res.data.order_num.change_add}</span>
{/if}
</span> </p>
<div class="data-all">累计成交订单<div class="text-style">{$res.data.order_num.all_num}</div></div>
</div>
</div>
</div>
<div class="layui-col-sm3 ">
<div class="layui-card">
<div class="layui-card-header">
营业额(元)
<span class="tips">今日</span>
</div>
<div class="layui-card-body layuiadmin-card-list">
<p class="layuiadmin-big-font">{$res.data.order_price.today}</p>
<p>昨日:<span class="text-style">{$res.data.order_price.yesterday}</span>
&nbsp;&nbsp;
{if ($res.data.order_price.change_red > 0) }
<span class="green">降:<span class="text-style">{$res.data.order_price.change_red}</span>
{else/}
<span class="red">涨:<span class="text-style">{$res.data.order_price.change_add}</span>
{/if}
</span> </p>
<div class="data-all">累计营业额<div class="text-style">{$res.data.order_price.all_price}</div></div>
</div>
</div>
</div>
<div class="layui-col-sm3 ">
<div class="layui-card">
<div class="layui-card-header">
新增会员(人)
<span class="tips">今日</span>
</div>
<div class="layui-card-body layuiadmin-card-list">
<p class="layuiadmin-big-font">{$res.data.add_user_num.today}</p>
<p >昨日:<span class="text-style">{$res.data.add_user_num.yesterday}</span>
&nbsp;&nbsp;
{if ($res.data.add_user_num.change_red > 0) }
<span class="green">降:<span class="text-style">{$res.data.add_user_num.change_red}</span>
{else/}
<span class="red">涨:<span class="text-style">{$res.data.add_user_num.change_add}</span>
{/if}
</span> </p>
<div class="data-all">会员人数<div class="text-style">{$res.data.add_user_num.all_num}</div></div>
</div>
</div>
</div>
<div class="layui-col-sm3 ">
<div class="layui-card">
<div class="layui-card-header">
会员访问量(人)
<span class="tips">今日</span>
</div>
<div class="layui-card-body layuiadmin-card-list">
<p class="layuiadmin-big-font">{$res.data.visit_user_num.today}</p>
<p>昨日:<span class="text-style">{$res.data.visit_user_num.yesterday}</span>
&nbsp;&nbsp;
{if ($res.data.visit_user_num.change_red > 0) }
<span class="green">降:<span class="text-style">{$res.data.visit_user_num.change_red}</span>
{else/}
<span class="red">涨:<span class="text-style">{$res.data.visit_user_num.change_add}</span>
{/if}
</span> </p>
<div class="data-all">累计会员访问量<div class="text-style">{$res.data.visit_user_num.all_num}</div></div>
</div>
</div>
</div>
<!--快捷功能-->
<div class="layui-col-sm12" style="display:none;">
<div class="layui-card">
<div class="layui-card-header">快捷功能</div>
<div class="layui-card-body">
<div class="layadmin-shortcut">
<ul class="shortcut-list">
<li class="shop-item">
<a target="view_frame" lay-href="{:url('goods.goods/lists')}" data-id="29">
<img class="icon" src="__PUBLIC__/static/common/image/workbench/goods.png" alt="">
<cite>商品</cite>
</a>
</li>
<li class="shop-item">
<a target="view_frame" lay-href="{:url('order.order/lists')}" data-id="37">
<img class="icon" src="__PUBLIC__/static/common/image/workbench/order.png" alt="">
<cite>订单</cite>
</a>
</li>
<li class="shop-item">
<a target="view_frame" lay-href="{:url('user.user/lists')}" data-id="33">
<img class="icon" src="__PUBLIC__/static/common/image/workbench/user.png" alt="">
<cite>会员</cite>
</a>
</li>
<li class="shop-item">
<a target="view_frame" lay-href="{:url('coupon.shop_coupon/lists')}" data-id="39" data-txt="优惠券">
<img class="icon" src="__PUBLIC__/static/common/image/workbench/coupon.png" alt="">
<cite>优惠券</cite>
</a>
</li>
<li class="shop-item">
<a target="view_frame" lay-href="{:url('seckill.seckill_goods/lists')}" data-id="36" data-txt="限时秒杀">
<img class="icon" src="__PUBLIC__/static/common/image/workbench/seckill.png" alt="">
<cite>限时秒杀</cite>
</a>
</li>
<li class="shop-item">
<a target="view_frame" lay-href="{:url('distribution.member/index')}" data-id="81" data-txt="分销">
<img class="icon" src="__PUBLIC__/static/common/image/workbench/distribution.png" alt="">
<cite>分销</cite>
</a>
</li>
<li class="shop-item">
<a target="view_frame" lay-href="{:url('content.help/lists')}" data-id="65" data-txt="'帮助管理">
<img class="icon" src="__PUBLIC__/static/common/image/workbench/content.png" alt="">
<cite>内容</cite>
</a>
</li>
<li class="shop-item">
<a target="view_frame" lay-href="{:url('finance.finance/center')}" data-id="82" data-txt="财务">
<img class="icon" src="__PUBLIC__/static/common/image/workbench/finance.png" alt="">
<cite>财务</cite>
</a>
</li>
</ul>
</div>
</div>
</div>
</div>
<!-- 销冠商家 -->
<div class="layui-col-sm6 ">
<div class="layui-card">
<div class="layui-card-header">
销冠商家前5名
</div>
<div class="layui-card-body layuiadmin-card-list">
<div class="layui-tab-content" style="padding: 0 15px;">
<table id="goods-lists" lay-filter="goods-lists"></table>
<script type="text/html" id="goods-info">
<div style="text-align: left;">
<img src="{{ d.logo }}" style="height:50px;width: 50px" class="image-show layui-col-md4">
<p>商家名称:{{d.name}}</p>
</div>
</script>
</div>
</div>
</div>
</div>
<!-- 人气商家 -->
<div class="layui-col-sm6 ">
<div class="layui-card">
<div class="layui-card-header">
人气商家前5名
</div>
<div class="layui-card-body layuiadmin-card-list">
<div class="layui-tab-content" style="padding: 0 15px;">
<table id="goods-lists2" lay-filter="goods-lists2"></table>
<script type="text/html" id="goods-info">
<div style="text-align: left;">
<img src="{{ d.logo }}" style="height:50px;width: 50px" class="image-show layui-col-md4">
<p>商家名称:{{d.name}}</p>
</div>
</script>
</div>
</div>
</div>
</div>
<!--表格-->
<div class="layui-col-sm12">
<div class="layui-card">
<div class="layui-card-body">
<div class="layui-row">
近15天营业额
<div class="layadmin-dataview">
<div id="sale-charts" style="width: 100%;height: 100%">
<div><i class="layui-icon layui-icon-loading1 layadmin-loading"></i></div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="layui-col-sm12">
<div class="layui-card">
<div class="layui-card-body">
<div class="layui-row">
近15天会员访问量
<div class="layadmin-dataview">
<div id="user-charts" style="width: 100%;height: 100%;">
<div><i class="layui-icon layui-icon-loading1 layadmin-loading"></i></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<footer class="info_footer">
{$company_name}&nbsp;&nbsp;|&nbsp;&nbsp;版本号:{$version}
<br><br>
</footer>
<script>
layui.config({
version:"{$front_version}",
base: '/static/lib/'
}).extend({
echarts: 'echarts/echarts',
echartsTheme: 'echarts/echartsTheme',
}).use(['echarts','form','element', 'echartsTheme'], function () {
var $ = layui.$
,echarts = layui.echarts;
let bgColor = "#fff";
let color = [
"#0090FF",
"#36CE9E",
"#FFC005",
"#FF515A",
"#8B5CFF",
"#00CA69"
];
const hexToRgba = (hex, opacity) => {
let rgbaColor = "";
let reg = /^#[\da-f]{6}$/i;
if (reg.test(hex)) {
rgbaColor = `rgba(${parseInt("0x" + hex.slice(1, 3))},${parseInt(
"0x" + hex.slice(3, 5)
)},${parseInt("0x" + hex.slice(5, 7))},${opacity})`;
}
return rgbaColor;
}
// $(".shop-item").click(function(){
//
// var url = $(this).children('a').attr('lay-href');
// var id = $(this).children('a').attr('data-id');
//
// top.refreshHighlight(url,id);
// console.log(url);
// });
like.ajax({
url: '{:url("index/stat")}',
type: "get",
success: function (res) {
var dates = res.data.dates,
echarts_order_amount = res.data.echarts_order_amount,
echarts_user_visit = res.data.echarts_user_visit;
var sale_option = {
backgroundColor: bgColor,
color: color,
legend: {
right: 10,
top: 10
},
tooltip: {
trigger: "axis",
formatter: function(params) {
let html = '';
params.forEach(v => {
html += `<div style="color: #666;font-size: 14px;line-height: 24px">
<span style="display:inline-block;margin-right:5px;border-radius:10px;width:10px;height:10px;background-color:${color[v.componentIndex]};"></span>
${v.name}
<span style="color:${color[v.componentIndex]};font-weight:700;font-size: 18px">${v.value}</span>
`;
})
return html
},
extraCssText: 'background: #fff; border-radius: 0;box-shadow: 0 0 3px rgba(0, 0, 0, 0.2);color: #333;',
axisPointer: {
type: 'shadow',
shadowStyle: {
color: '#ffffff',
shadowColor: 'rgba(225,225,225,1)',
shadowBlur: 5
}
}
},
grid: {
top: 100,
containLabel: true
},
xAxis: [{
type: "category",
boundaryGap: false,
axisLabel: {
formatter: '{value}',
textStyle: {
color: "#333"
}
},
axisLine: {
lineStyle: {
color: "#D9D9D9"
}
},
data: dates
}],
yAxis: [{
type: "value",
name: '营业额',
axisLabel: {
textStyle: {
color: "#666"
}
},
nameTextStyle: {
color: "#666",
fontSize: 12,
lineHeight: 40
},
splitLine: {
lineStyle: {
type: "dashed",
color: "#E9E9E9"
}
},
axisLine: {
show: false
},
axisTick: {
show: false
}
}],
series: [{
type: "line",
smooth: true,
symbolSize: 8,
zlevel: 3,
lineStyle: {
normal: {
color: color[0],
shadowBlur: 3,
shadowColor: hexToRgba(color[0], 0.5),
shadowOffsetY: 8
}
},
areaStyle: {
normal: {
color: new echarts.graphic.LinearGradient(
0,
0,
0,
1,
[{
offset: 0,
color: hexToRgba(color[0], 0.3)
},
{
offset: 1,
color: hexToRgba(color[0], 0.1)
}
],
false
),
shadowColor: hexToRgba(color[0], 0.1),
shadowBlur: 10
}
},
data: echarts_order_amount
}]
};
var user_option = {
backgroundColor: bgColor,
color: color,
legend: {
right: 10,
top: 10
},
tooltip: {
trigger: "axis",
formatter: function(params) {
let html = '';
params.forEach(v => {
html += `<div style="color: #666;font-size: 14px;line-height: 24px">
<span style="display:inline-block;margin-right:5px;border-radius:10px;width:10px;height:10px;background-color:${color[v.componentIndex]};"></span>
${v.name}
<span style="color:${color[v.componentIndex]};font-weight:700;font-size: 18px">${v.value}</span>
`;
})
return html
},
extraCssText: 'background: #fff; border-radius: 0;box-shadow: 0 0 3px rgba(0, 0, 0, 0.2);color: #333;',
axisPointer: {
type: 'shadow',
shadowStyle: {
color: '#ffffff',
shadowColor: 'rgba(225,225,225,1)',
shadowBlur: 5
}
}
},
grid: {
top: 100,
containLabel: true
},
xAxis: [{
type: "category",
boundaryGap: false,
axisLabel: {
formatter: '{value}',
textStyle: {
color: "#333"
}
},
axisLine: {
lineStyle: {
color: "#D9D9D9"
}
},
data: dates
}],
yAxis: [{
type: "value",
name: '会员访问量',
axisLabel: {
textStyle: {
color: "#666"
}
},
nameTextStyle: {
color: "#666",
fontSize: 12,
lineHeight: 40
},
splitLine: {
lineStyle: {
type: "dashed",
color: "#E9E9E9"
}
},
axisLine: {
show: false
},
axisTick: {
show: false
}
}],
series: [{
type: "line",
smooth: true,
symbolSize: 8,
zlevel: 3,
lineStyle: {
normal: {
color: color[0],
shadowBlur: 3,
shadowColor: hexToRgba(color[0], 0.5),
shadowOffsetY: 8
}
},
areaStyle: {
normal: {
color: new echarts.graphic.LinearGradient(
0,
0,
0,
1,
[{
offset: 0,
color: hexToRgba(color[0], 0.3)
},
{
offset: 1,
color: hexToRgba(color[0], 0.1)
}
],
false
),
shadowColor: hexToRgba(color[0], 0.1),
shadowBlur: 10
}
},
data: echarts_user_visit
}]
};
var sale_charts= echarts.init(document.getElementById('sale-charts'));
sale_charts.setOption(sale_option, true);
var user_charts = echarts.init(document.getElementById('user-charts'));
user_charts.setOption(user_option, true);
}
});
getList(); // 初始加载
function getList() {
var type = 1;
like.tableLists('#goods-lists', '{:url("index/shop")}?type='+type, [
{field: 'number',title: '排名',width:'15%'}
,{title: '商家',width:'55%', align: 'center', templet: '#goods-info'}
,{field: 'order_amount', title: '销售金额',width:'30%'}
]);
var type = 2;
like.tableLists('#goods-lists2', '{:url("index/shop")}?type='+type, [
{field: 'number',title: '排名',width:'15%'}
,{title: '商家',width:'55%', align: 'center', templet: '#goods-info'}
,{field: 'visited_num', title: '进店人数',width:'30%'}
]);
}
});
</script>