diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 5a1a903..fc6934d 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -2,82 +2,43 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -88,19 +49,31 @@
-
+
-
-
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
-
-
+
+
@@ -108,62 +81,19 @@
-
-
-
-
-
+
+
-
+
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -175,7 +105,6 @@
- login_name
render_template
set
user.uid
@@ -205,6 +134,7 @@
data
onSha
buyNo
+ getFor
ops_render
@@ -216,7 +146,6 @@
@@ -280,8 +210,8 @@
-
-
+
+
@@ -302,49 +232,32 @@
-
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
@@ -356,7 +269,7 @@
-
+
@@ -376,7 +289,7 @@
-
+
@@ -387,11 +300,11 @@
+
+
-
-
-
-
+
+
@@ -535,7 +448,14 @@
1564741445223
-
+
+ 1565072263784
+
+
+
+ 1565072263784
+
+
@@ -548,9 +468,9 @@
-
+
-
+
@@ -565,7 +485,7 @@
-
+
@@ -589,120 +509,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -740,11 +546,6 @@
-
-
-
-
-
@@ -765,13 +566,6 @@
-
-
-
-
-
-
-
@@ -847,16 +641,6 @@
-
-
-
-
-
-
-
-
-
-
@@ -878,18 +662,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
@@ -906,5 +678,152 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web/controllers/index.py b/web/controllers/index.py
index 1921f48..b103034 100644
--- a/web/controllers/index.py
+++ b/web/controllers/index.py
@@ -1,8 +1,57 @@
# -*- coding: utf-8 -*-
+from application import app,db
from flask import Blueprint
from common.libs.Helper import ops_render
+from common.libs.Helper import getFormatDate
+from common.models.stat.StatDailySite import StatDailySite
+import datetime
route_index = Blueprint( 'index_page',__name__ )
@route_index.route("/")
def index():
- return ops_render( "index/index.html" )
\ No newline at end of file
+ resp_data = {
+ 'data':{
+ 'finance':{
+ 'today':0,
+ 'month':0
+ },
+ 'member': {
+ 'today_new': 0,
+ 'month_new': 0,
+ 'total': 0
+ },
+ 'order': {
+ 'today': 0,
+ 'month': 0
+ },
+ 'shared': {
+ 'today': 0,
+ 'month': 0
+ },
+ }
+ }
+
+ now = datetime.datetime.now()
+ date_before_30days = now + datetime.timedelta( days = -30 )
+ date_from = getFormatDate( date = date_before_30days,format = "%Y-%m-%d" )
+ date_to = getFormatDate( date = now ,format = "%Y-%m-%d")
+
+ list = StatDailySite.query.filter( StatDailySite.date >= date_from)\
+ .filter( StatDailySite.date <= date_to ).order_by( StatDailySite.id.asc() )\
+ .all()
+ data = resp_data['data']
+ if list:
+
+ for item in list:
+ data['finance']['month'] += item.total_pay_money
+ data['member']['month_new'] += item.total_new_member_count
+ data['member']['total'] = item.total_member_count
+ data['order']['month'] += item.total_order_count
+ data['shared']['month'] += item.total_shared_count
+ if getFormatDate( date = item.date ,format = "%Y-%m-%d") == date_to:
+ data['finance']['today'] = item.total_pay_money
+ data['member']['today_new'] = item.total_new_member_count
+ data['order']['today'] = item.total_order_count
+ data['shared']['today'] = item.total_shared_count
+
+ return ops_render( "index/index.html",resp_data )
\ No newline at end of file
diff --git a/web/controllers/stat/Stat.py b/web/controllers/stat/Stat.py
index e47ba1e..96ec048 100644
--- a/web/controllers/stat/Stat.py
+++ b/web/controllers/stat/Stat.py
@@ -1,20 +1,183 @@
# -*- coding: utf-8 -*-
-from flask import Blueprint
+from flask import Blueprint,request
from common.libs.Helper import ops_render
+from application import app
+from common.libs.Helper import getFormatDate,iPagination,getDictFilterField,selectFilterObj
+from common.models.stat.StatDailySite import StatDailySite
+from common.models.stat.StatDailyFood import StatDailyFood
+from common.models.stat.StatDailyMember import StatDailyMember
+from common.models.member.Member import Member
+from common.models.food.Food import Food
+import datetime
+
route_stat = Blueprint( 'stat_page',__name__ )
@route_stat.route( "/index" )
def index():
- return ops_render( "stat/index.html" )
+ now = datetime.datetime.now()
+ date_before_30days = now + datetime.timedelta(days=-30)
+ default_date_from = getFormatDate(date=date_before_30days, format="%Y-%m-%d")
+ default_date_to = getFormatDate(date=now, format="%Y-%m-%d")
+
+ resp_data = {}
+ req = request.values
+ page = int(req['p']) if ('p' in req and req['p']) else 1
+ date_from = req['date_from'] if 'date_from' in req else default_date_from
+ date_to = req['date_to'] if 'date_to' in req else default_date_to
+ query = StatDailySite.query.filter(StatDailySite.date >= date_from) \
+ .filter(StatDailySite.date <= date_to)
+
+ page_params = {
+ 'total': query.count(),
+ 'page_size': app.config['PAGE_SIZE'],
+ 'page': page,
+ 'display': app.config['PAGE_DISPLAY'],
+ 'url': request.full_path.replace("&p={}".format(page), "")
+ }
+
+ pages = iPagination(page_params)
+ offset = (page - 1) * app.config['PAGE_SIZE']
+
+ list = query.order_by(StatDailySite.id.desc()).offset( offset ).limit( app.config['PAGE_SIZE'] ).all()
+ resp_data['list'] = list
+ resp_data['pages'] = pages
+ resp_data['current'] = 'index'
+ resp_data['search_con'] = {
+ 'date_from':date_from,
+ 'date_to':date_to
+ }
+ return ops_render( "stat/index.html",resp_data )
@route_stat.route( "/food" )
def food():
- return ops_render( "stat/food.html" )
+ now = datetime.datetime.now()
+ date_before_30days = now + datetime.timedelta(days=-30)
+ default_date_from = getFormatDate(date=date_before_30days, format="%Y-%m-%d")
+ default_date_to = getFormatDate(date=now, format="%Y-%m-%d")
+
+ resp_data = {}
+ req = request.values
+ page = int(req['p']) if ('p' in req and req['p']) else 1
+ date_from = req['date_from'] if 'date_from' in req else default_date_from
+ date_to = req['date_to'] if 'date_to' in req else default_date_to
+ query = StatDailyFood.query.filter(StatDailyFood.date >= date_from) \
+ .filter(StatDailyFood.date <= date_to)
+
+ page_params = {
+ 'total': query.count(),
+ 'page_size': app.config['PAGE_SIZE'],
+ 'page': page,
+ 'display': app.config['PAGE_DISPLAY'],
+ 'url': request.full_path.replace("&p={}".format(page), "")
+ }
+
+ pages = iPagination(page_params)
+ offset = (page - 1) * app.config['PAGE_SIZE']
+
+ list = query.order_by(StatDailyFood.id.desc()).offset(offset).limit(app.config['PAGE_SIZE']).all()
+ date_list = []
+ if list:
+ food_map = getDictFilterField(Food, Food.id, "id", selectFilterObj(list, "food_id"))
+ for item in list:
+ tmp_food_info = food_map[item.food_id] if item.food_id in food_map else {}
+ tmp_data = {
+ "date": item.date,
+ "total_count": item.total_count,
+ "total_pay_money": item.total_pay_money,
+ 'food_info': tmp_food_info
+ }
+ date_list.append(tmp_data)
+
+ resp_data['list'] = date_list
+ resp_data['pages'] = pages
+ resp_data['current'] = 'food'
+ resp_data['search_con'] = {
+ 'date_from': date_from,
+ 'date_to': date_to
+ }
+ return ops_render( "stat/food.html",resp_data )
@route_stat.route( "/member" )
def memebr():
- return ops_render( "stat/member.html" )
+ now = datetime.datetime.now()
+ date_before_30days = now + datetime.timedelta(days=-30)
+ default_date_from = getFormatDate(date=date_before_30days, format="%Y-%m-%d")
+ default_date_to = getFormatDate(date=now, format="%Y-%m-%d")
+
+ resp_data = {}
+ req = request.values
+ page = int(req['p']) if ('p' in req and req['p']) else 1
+ date_from = req['date_from'] if 'date_from' in req else default_date_from
+ date_to = req['date_to'] if 'date_to' in req else default_date_to
+ query = StatDailyMember.query.filter(StatDailyMember.date >= date_from) \
+ .filter(StatDailyMember.date <= date_to)
+
+ page_params = {
+ 'total': query.count(),
+ 'page_size': app.config['PAGE_SIZE'],
+ 'page': page,
+ 'display': app.config['PAGE_DISPLAY'],
+ 'url': request.full_path.replace("&p={}".format(page), "")
+ }
+
+ pages = iPagination(page_params)
+ offset = (page - 1) * app.config['PAGE_SIZE']
+
+ list = query.order_by(StatDailyMember.id.desc()).offset(offset).limit(app.config['PAGE_SIZE']).all()
+ date_list = []
+ if list:
+ member_map = getDictFilterField( Member,Member.id,"id",selectFilterObj( list ,"member_id") )
+ for item in list:
+ tmp_member_info = member_map[ item.member_id ] if item.member_id in member_map else {}
+ tmp_data = {
+ "date":item.date,
+ "total_pay_money":item.total_pay_money,
+ "total_shared_count":item.total_shared_count,
+ 'member_info':tmp_member_info
+ }
+ date_list.append( tmp_data )
+
+ resp_data['list'] = date_list
+ resp_data['pages'] = pages
+ resp_data['current'] = 'member'
+ resp_data['search_con'] = {
+ 'date_from': date_from,
+ 'date_to': date_to
+ }
+ return ops_render( "stat/member.html",resp_data )
@route_stat.route( "/share" )
def share():
- return ops_render( "stat/share.html" )
+ now = datetime.datetime.now()
+ date_before_30days = now + datetime.timedelta(days=-30)
+ default_date_from = getFormatDate(date=date_before_30days, format="%Y-%m-%d")
+ default_date_to = getFormatDate(date=now, format="%Y-%m-%d")
+
+ resp_data = {}
+ req = request.values
+ page = int(req['p']) if ('p' in req and req['p']) else 1
+ date_from = req['date_from'] if 'date_from' in req else default_date_from
+ date_to = req['date_to'] if 'date_to' in req else default_date_to
+ query = StatDailySite.query.filter(StatDailySite.date >= date_from) \
+ .filter(StatDailySite.date <= date_to)
+
+ page_params = {
+ 'total': query.count(),
+ 'page_size': app.config['PAGE_SIZE'],
+ 'page': page,
+ 'display': app.config['PAGE_DISPLAY'],
+ 'url': request.full_path.replace("&p={}".format(page), "")
+ }
+
+ pages = iPagination(page_params)
+ offset = (page - 1) * app.config['PAGE_SIZE']
+
+ list = query.order_by(StatDailySite.id.desc()).offset(offset).limit(app.config['PAGE_SIZE']).all()
+ resp_data['list'] = list
+ resp_data['pages'] = pages
+ resp_data['current'] = 'food'
+ resp_data['search_con'] = {
+ 'date_from': date_from,
+ 'date_to': date_to
+ }
+ return ops_render( "stat/share.html",resp_data )
diff --git a/web/static/font-awesome/fonts/fontawesome-webfont.eot b/web/static/font-awesome/fonts/fontawesome-webfont.eot
index 33b2bb8..e69de29 100644
Binary files a/web/static/font-awesome/fonts/fontawesome-webfont.eot and b/web/static/font-awesome/fonts/fontawesome-webfont.eot differ
diff --git a/web/static/font-awesome/fonts/fontawesome-webfont.ttf b/web/static/font-awesome/fonts/fontawesome-webfont.ttf
index ed9372f..e69de29 100644
Binary files a/web/static/font-awesome/fonts/fontawesome-webfont.ttf and b/web/static/font-awesome/fonts/fontawesome-webfont.ttf differ
diff --git a/web/static/font-awesome/fonts/fontawesome-webfont.woff b/web/static/font-awesome/fonts/fontawesome-webfont.woff
index 8b280b9..e69de29 100644
Binary files a/web/static/font-awesome/fonts/fontawesome-webfont.woff and b/web/static/font-awesome/fonts/fontawesome-webfont.woff differ
diff --git a/web/static/font-awesome/fonts/fontawesome-webfont.woff2 b/web/static/font-awesome/fonts/fontawesome-webfont.woff2
index 3311d58..e69de29 100644
Binary files a/web/static/font-awesome/fonts/fontawesome-webfont.woff2 and b/web/static/font-awesome/fonts/fontawesome-webfont.woff2 differ
diff --git a/web/static/js/chart.js b/web/static/js/chart.js
new file mode 100644
index 0000000..473dca3
--- /dev/null
+++ b/web/static/js/chart.js
@@ -0,0 +1,99 @@
+;
+//画图通用组件,虽然估计很难统一,但是总要走出第一步了
+var charts_ops = {
+ setOption:function(){
+ Highcharts.setOptions({
+ chart: {
+ },
+ exporting: {
+ enabled: false
+ },
+ legend: {
+ //enabled:false
+ },
+ credits:{
+ enabled:false
+ },
+ colors:['#058DC7', '#50B432', '#ED561B', '#DDDF00',
+ '#24CBE5', '#64E572', '#FF9655', '#FFF263', '#6AF9C4','#E93EFF'],
+ title: '',
+ xAxis: {
+ tickWidth:0,
+ lineWidth: 0,
+ gridLineColor: '#eee',
+ //gridLineWidth: 1,
+ crosshair: {
+ width: 1,
+ color: '#ebebeb'
+ }
+ },
+ yAxis: {
+ gridLineColor: '#eee',
+ gridLineWidth: 1,
+ title: ''
+ },
+ plotOptions: {
+ column: {
+ pointPadding: 0.2,
+ pointWidth: 20,
+ borderWidth: 0
+ },
+ series: {
+ marker: {
+ enabled: false
+ },
+ },
+ line: {
+ lineWidth: 2,
+ states: {
+ hover: {
+ lineWidth: 2
+ }
+ }
+ }
+ },
+ tooltip: {
+ backgroundColor: '#404750',
+ borderWidth: 0,
+ shadow: false,
+ headerFormat: '',
+ footerFormat: '',
+ shared: true,
+ useHTML: true,
+ style: {
+ color: '#fff',
+ padding: '5px'
+ }
+ },
+ lang: {
+ noData: "暂无数据"
+ },
+ noData: {
+ style: {
+ fontWeight: 'bold',
+ fontSize: '15px',
+ color: '#303030'
+ }
+ }
+ });
+ },
+ drawLine:function( target ,data ){//画直线
+ var chart = target.highcharts({
+ chart: {
+ type: 'spline'
+ },
+ xAxis: {
+ categories: data.categories
+ },
+ series: data.series,
+ legend: {
+ enabled:true,
+ align: 'right',
+ verticalAlign: 'top',
+ x: 0,
+ y: -15
+ }
+ });
+ return chart;
+ }
+};
\ No newline at end of file
diff --git a/web/static/js/common.js b/web/static/js/common.js
index 0e7fd9d..4f9ebb6 100644
--- a/web/static/js/common.js
+++ b/web/static/js/common.js
@@ -139,7 +139,7 @@ var common_ops = {
scrollTop: target.offset().top - 10
}, 100);
},
- buildUrl:function( path ,params ){
+ buildUrl:function( path ,params ){
var url = "" + path;
var _paramUrl = "";
if( params ){
@@ -150,11 +150,11 @@ var common_ops = {
}
return url + _paramUrl;
},
- buildPicUrl:function( img_key ){
+ buildPicUrl:function( img_key ){
var domain = $(".hidden_layout_wrap input[name=domain]").val();
var prefix_url = $(".hidden_layout_wrap input[name=prefix_url]").val();
return domain + prefix_url + img_key;
- }
+ }
};
$(document).ready( function() {
diff --git a/web/static/js/index/index.js b/web/static/js/index/index.js
new file mode 100644
index 0000000..204aa8d
--- /dev/null
+++ b/web/static/js/index/index.js
@@ -0,0 +1,28 @@
+;
+var dashboard_index_ops = {
+ init:function(){
+ this.drawChart();
+ },
+ drawChart:function(){
+ charts_ops.setOption();
+ $.ajax({
+ url:common_ops.buildUrl("/chart/dashboard"),
+ dataType:'json',
+ success:function( res ){
+ charts_ops.drawLine( $('#member_order'),res.data )
+ }
+ });
+
+ $.ajax({
+ url:common_ops.buildUrl("/chart/finance"),
+ dataType:'json',
+ success:function( res ){
+ charts_ops.drawLine( $('#finance'),res.data )
+ }
+ });
+ }
+};
+
+$(document).ready( function(){
+ dashboard_index_ops.init();
+});
\ No newline at end of file
diff --git a/web/static/js/stat/index.js b/web/static/js/stat/index.js
new file mode 100644
index 0000000..e69de29
diff --git a/web/static/js/stat/member.js b/web/static/js/stat/member.js
new file mode 100644
index 0000000..a48c0ef
--- /dev/null
+++ b/web/static/js/stat/member.js
@@ -0,0 +1,34 @@
+;
+var stat_member_ops = {
+ init:function(){
+ this.eventBind();
+ this.datetimepickerComponent();
+ },
+ eventBind:function(){
+ $("#search_form_wrap .search").click( function(){
+ $("#search_form_wrap").submit();
+ });
+ },
+ datetimepickerComponent:function() {
+ var that = this;
+ $.datetimepicker.setLocale('zh');
+ params = {
+ scrollInput: false,
+ scrollMonth: false,
+ scrollTime: false,
+ dayOfWeekStart: 1,
+ lang: 'zh',
+ todayButton: true,//回到今天
+ defaultSelect: true,
+ defaultDate: new Date().Format('yyyy-MM-dd'),
+ format: 'Y-m-d',//格式化显示
+ timepicker: false
+ };
+ $('#search_form_wrap input[name=date_from]').datetimepicker(params);
+ $('#search_form_wrap input[name=date_to]').datetimepicker(params);
+ }
+};
+
+$(document).ready( function(){
+ stat_member_ops.init();
+});
diff --git a/web/static/js/stat/product.js b/web/static/js/stat/product.js
new file mode 100644
index 0000000..fa0efee
--- /dev/null
+++ b/web/static/js/stat/product.js
@@ -0,0 +1,34 @@
+;
+var stat_product_ops = {
+ init:function(){
+ this.eventBind();
+ this.datetimepickerComponent();
+ },
+ eventBind:function(){
+ $("#search_form_wrap .search").click( function(){
+ $("#search_form_wrap").submit();
+ });
+ },
+ datetimepickerComponent:function() {
+ var that = this;
+ $.datetimepicker.setLocale('zh');
+ params = {
+ scrollInput: false,
+ scrollMonth: false,
+ scrollTime: false,
+ dayOfWeekStart: 1,
+ lang: 'zh',
+ todayButton: true,//回到今天
+ defaultSelect: true,
+ defaultDate: new Date().Format('yyyy-MM-dd'),
+ format: 'Y-m-d',//格式化显示
+ timepicker: false
+ };
+ $('#search_form_wrap input[name=date_from]').datetimepicker(params);
+ $('#search_form_wrap input[name=date_to]').datetimepicker(params);
+ }
+};
+
+$(document).ready( function(){
+ stat_product_ops.init();
+});
diff --git a/web/static/js/stat/share.js b/web/static/js/stat/share.js
new file mode 100644
index 0000000..d10f803
--- /dev/null
+++ b/web/static/js/stat/share.js
@@ -0,0 +1,46 @@
+;
+var stat_share_ops = {
+ init:function(){
+ this.eventBind();
+ this.drawChart();
+ this.datetimepickerComponent();
+ },
+ eventBind:function(){
+ $("#search_form_wrap .search").click( function(){
+ $("#search_form_wrap").submit();
+ });
+ },
+ datetimepickerComponent:function(){
+ var that = this;
+ $.datetimepicker.setLocale('zh');
+ params = {
+ scrollInput: false,
+ scrollMonth: false,
+ scrollTime: false,
+ dayOfWeekStart: 1,
+ lang: 'zh',
+ todayButton: true,//回到今天
+ defaultSelect: true,
+ defaultDate: new Date().Format('yyyy-MM-dd'),
+ format: 'Y-m-d',//格式化显示
+ timepicker: false
+ };
+ $('#search_form_wrap input[name=date_from]').datetimepicker(params);
+ $('#search_form_wrap input[name=date_to]').datetimepicker(params);
+
+ },
+ drawChart:function(){
+ charts_ops.setOption();
+ $.ajax({
+ url:common_ops.buildUrl("/chart/share"),
+ dataType:'json',
+ success:function( res ){
+ charts_ops.drawLine( $('#container'),res.data )
+ }
+ });
+ }
+};
+
+$(document).ready( function(){
+ stat_share_ops.init();
+});
diff --git a/web/static/js/user/login.js b/web/static/js/user/login.js
index f07f934..3e62306 100644
--- a/web/static/js/user/login.js
+++ b/web/static/js/user/login.js
@@ -10,6 +10,7 @@ var user_login_ops = {
common_ops.alert("正在处理!!请不要重复提交~~");
return;
}
+
var login_name = $(".login_wrap input[name=login_name]").val();
var login_pwd = $(".login_wrap input[name=login_pwd]").val();
diff --git a/web/static/plugins/ueditor/dialogs/wordimage/fClipboard_ueditor.swf b/web/static/plugins/ueditor/dialogs/wordimage/fClipboard_ueditor.swf
index ac5d27f..e69de29 100644
Binary files a/web/static/plugins/ueditor/dialogs/wordimage/fClipboard_ueditor.swf and b/web/static/plugins/ueditor/dialogs/wordimage/fClipboard_ueditor.swf differ
diff --git a/web/static/plugins/ueditor/dialogs/wordimage/imageUploader.swf b/web/static/plugins/ueditor/dialogs/wordimage/imageUploader.swf
index 2a554ca..e69de29 100644
Binary files a/web/static/plugins/ueditor/dialogs/wordimage/imageUploader.swf and b/web/static/plugins/ueditor/dialogs/wordimage/imageUploader.swf differ
diff --git a/web/static/plugins/ueditor/third-party/video-js/font/vjs.eot b/web/static/plugins/ueditor/third-party/video-js/font/vjs.eot
index a075c19..e69de29 100644
Binary files a/web/static/plugins/ueditor/third-party/video-js/font/vjs.eot and b/web/static/plugins/ueditor/third-party/video-js/font/vjs.eot differ
diff --git a/web/static/plugins/ueditor/third-party/video-js/font/vjs.ttf b/web/static/plugins/ueditor/third-party/video-js/font/vjs.ttf
index eb24637..e69de29 100644
Binary files a/web/static/plugins/ueditor/third-party/video-js/font/vjs.ttf and b/web/static/plugins/ueditor/third-party/video-js/font/vjs.ttf differ
diff --git a/web/static/plugins/ueditor/third-party/video-js/font/vjs.woff b/web/static/plugins/ueditor/third-party/video-js/font/vjs.woff
index c3f0f1d..e69de29 100644
Binary files a/web/static/plugins/ueditor/third-party/video-js/font/vjs.woff and b/web/static/plugins/ueditor/third-party/video-js/font/vjs.woff differ
diff --git a/web/static/plugins/ueditor/third-party/video-js/video-js.swf b/web/static/plugins/ueditor/third-party/video-js/video-js.swf
index eef460a..e69de29 100644
Binary files a/web/static/plugins/ueditor/third-party/video-js/video-js.swf and b/web/static/plugins/ueditor/third-party/video-js/video-js.swf differ
diff --git a/web/static/plugins/ueditor/third-party/webuploader/Uploader.swf b/web/static/plugins/ueditor/third-party/webuploader/Uploader.swf
index 7c37835..e69de29 100644
Binary files a/web/static/plugins/ueditor/third-party/webuploader/Uploader.swf and b/web/static/plugins/ueditor/third-party/webuploader/Uploader.swf differ
diff --git a/web/static/plugins/ueditor/third-party/zeroclipboard/ZeroClipboard.swf b/web/static/plugins/ueditor/third-party/zeroclipboard/ZeroClipboard.swf
index ed1c9d2..e69de29 100644
Binary files a/web/static/plugins/ueditor/third-party/zeroclipboard/ZeroClipboard.swf and b/web/static/plugins/ueditor/third-party/zeroclipboard/ZeroClipboard.swf differ
diff --git a/web/templates/account/index.html b/web/templates/account/index.html
index 308163e..79eebd0 100644
--- a/web/templates/account/index.html
+++ b/web/templates/account/index.html
@@ -9,16 +9,15 @@
-
+
| 序号 |
@@ -81,9 +80,7 @@
{% endif %}
-
-
{% include 'common/pagenation.html' %}
diff --git a/web/templates/account/set.html b/web/templates/account/set.html
index 33cdd1b..a62386f 100644
--- a/web/templates/account/set.html
+++ b/web/templates/account/set.html
@@ -8,28 +8,28 @@
@@ -42,7 +42,7 @@
diff --git a/web/templates/food/index.html b/web/templates/food/index.html
index c6b6399..4306b65 100644
--- a/web/templates/food/index.html
+++ b/web/templates/food/index.html
@@ -59,7 +59,7 @@
{% for item in list %}
| {{ item.name }} |
- {{ cat_mapping[ item.cat_id].name }} |
+ {{ item.name }} |
{{ item.price }} |
{{ item.stock }} |
{{ item.tags }} |
diff --git a/web/templates/index/index.html b/web/templates/index/index.html
index 81dba36..d86c942 100644
--- a/web/templates/index/index.html
+++ b/web/templates/index/index.html
@@ -9,8 +9,8 @@
营收概况
-
1005.00
- 近30日:31177.00
+ {{ data.finance.today }}
+ 近30日:{{ data.finance.month }}
@@ -21,8 +21,8 @@
订单
-
988
- 近30日:29383
+ {{ data.order.today }}
+ 近30日:{{ data.order.today }}
@@ -33,9 +33,9 @@
会员
-
358
- 今日新增:77
- 近30日新增:2454
+ {{ data.member.total }}
+ 今日新增:{{ data.member.today_new }}
+ 近30日新增:{{ data.member.month_new }}
@@ -46,8 +46,8 @@
分享
-
1250
- 近30日:45980
+ {{ data.shared.today }}
+ 近30日:{{ data.shared.month }}
@@ -61,4 +61,9 @@
+{% endblock %}
+{% block js %}
+
+
+
{% endblock %}
\ No newline at end of file
diff --git a/web/templates/member/comment.html b/web/templates/member/comment.html
index e74c153..814bf1b 100644
--- a/web/templates/member/comment.html
+++ b/web/templates/member/comment.html
@@ -1,19 +1,6 @@
{% extends "common/layout_main.html" %}
{% block content %}
-
+{% include "common/tab_member.html" %}
@@ -27,27 +14,29 @@
+ {% if list %}
+ {% for item in list %}
-
+
|
+ {{ item.member_info.nickname }} |
- 编程浪子
+ {% for item_food in item.foods %}
+ {{ item_food.name }}、
+ {% endfor %}
|
- 小鸡炖蘑菇 |
- 非常愉快的订餐服务 |
- 8 |
+ {{ item.content }} |
+ {{ item.score }} |
+ {% endfor %}
+ {% else %}
+ | 暂无数据 |
+ {% endif %}
-
+
+ {% include 'common/pagenation.html' %}
{% endblock %}
diff --git a/web/templates/member/index.html b/web/templates/member/index.html
index 5c34ef2..b7d4688 100644
--- a/web/templates/member/index.html
+++ b/web/templates/member/index.html
@@ -1,19 +1,6 @@
{% extends "common/layout_main.html" %}
{% block content %}
-
+{% include "common/tab_member.html" %}
- {% if list %}
+ {% if list %}
{% for item in list %}
 |
@@ -85,10 +72,11 @@
- {% include 'common/pagenation.html'%}
+ {% include 'common/pagenation.html' %}
{% endblock %}
-{% block js %}
+{% block js %}
{% endblock %}
+
diff --git a/web/templates/member/info.html b/web/templates/member/info.html
index 84c8feb..af563c0 100644
--- a/web/templates/member/info.html
+++ b/web/templates/member/info.html
@@ -1,25 +1,12 @@
{% extends "common/layout_main.html" %}
{% block content %}
-
+{% include "common/tab_member.html" %}
- {% if info.status ==1 %}
+ {% if info.status == 1 %}
编辑
@@ -67,9 +54,18 @@
+ {% if pay_order_list %}
+ {% for item in pay_order_list %}
- | 暂无订单 |
+ {{ item.order_number }} |
+ {{ item.pay_time }} |
+ {{ item.total_price }} |
+ {{ item.status_desc }} |
+ {% endfor %}
+ {% else %}
+ 暂无订单 |
+ {% endif %}
@@ -85,10 +81,17 @@
+ {% if comment_list %}
+ {% for item in comment_list %}
- | 暂无评论 |
+ {{ item.created_time }} |
+ {{ item.score }} |
+ {{ item.content }} |
-
+ {% endfor %}
+ {% else %}
+ 暂无评论 |
+ {% endif %}
diff --git a/web/templates/member/set.html b/web/templates/member/set.html
index 66fd19b..c006dd9 100644
--- a/web/templates/member/set.html
+++ b/web/templates/member/set.html
@@ -1,19 +1,6 @@
{% extends "common/layout_main.html" %}
{% block content %}
-
+{% include "common/tab_member.html" %}
会员设置
diff --git a/web/templates/stat/food.html b/web/templates/stat/food.html
index 4378f5d..d150006 100644
--- a/web/templates/stat/food.html
+++ b/web/templates/stat/food.html
@@ -1,33 +1,13 @@
{% extends "common/layout_main.html" %}
{% block content %}
-
+{% include "common/tab_stat.html" %}