├── app ├── static │ ├── 404 │ │ ├── 404.css │ │ └── 404.js │ ├── 3.jpeg │ ├── images │ │ ├── aiwrap.png │ │ └── demo-1-bg.jpg │ ├── fonts │ │ ├── iconfont.eot │ │ ├── iconfont.ttf │ │ └── iconfont.woff │ ├── css │ │ ├── font.css │ │ ├── register.css │ │ └── xadmin.css │ ├── assets │ │ └── js │ │ │ ├── 1d6ccbb6f543f958f751064f5faecf23.js │ │ │ ├── 1d50adfb516745e2a58f23f8eda574e6.js │ │ │ ├── 1d04f6707a64d95a2b16c3a3cec1af22.js │ │ │ ├── 1cd1b7535bdf7e29500610f4eec9feed.js │ │ │ └── 1d9bdb25272dce51d8a2d7492233728e.js │ └── js │ │ ├── macarons.js │ │ └── xadmin.js ├── templates │ ├── admin │ │ ├── LineSale.html │ │ ├── PurchaseQuota.html │ │ ├── employeeWages.html │ │ ├── inventoryStatistics.html │ │ ├── salesStatistics.html │ │ ├── purchasingStatistics.html │ │ ├── errorroot.html │ │ ├── beifen.html │ │ ├── comminrole.html │ │ ├── addSection.html │ │ ├── 404.html │ │ ├── addduty.html │ │ ├── fy.html │ │ ├── addTradeName.html │ │ ├── base_biao.html │ │ ├── add_admin.html │ │ ├── bases.html │ │ ├── addRepositoryName.html │ │ ├── bumen.html │ │ ├── addsalesOrder.html │ │ ├── addSupplier.html │ │ ├── addCustomerz.html │ │ ├── increasePurchaseOrder.html │ │ ├── seeWarehouse.html │ │ ├── supplier.html │ │ ├── customerz.html │ │ ├── enteringWarehouse.html │ │ ├── outWarehousing.html │ │ ├── returnSales.html │ │ ├── warehouseName.html │ │ ├── categoryOfGoods.html │ │ ├── wjmm.html │ │ ├── admin_list.html │ │ ├── goodsWarehousing.html │ │ ├── login.html │ │ ├── dutylist.html │ │ ├── returnOrder.html │ │ ├── section.html │ │ ├── persionDetail.html │ │ ├── salesOrder.html │ │ ├── purchaseOrder.html │ │ ├── register.html │ │ ├── workPlatform.html │ │ ├── role-add.html │ │ ├── cate.html │ │ └── index.html │ └── home │ │ └── index.html ├── home │ ├── __init__.py │ └── views.py ├── admin │ ├── __init__.py │ └── uilt.py ├── apps.py └── models.py ├── view-photo ├── db.png ├── Sale.png ├── Stock.png ├── index.png ├── login.png ├── Purchase.png ├── backup.png ├── category.png ├── message.png ├── Admin_list.png ├── Statistics.png ├── flowsheet.png └── Add_merchandise .png ├── .gitattributes ├── .idea ├── encodings.xml ├── modules.xml ├── misc.xml └── 商贸管理系统.iml ├── manage.py ├── requirement.txt ├── LICENSE ├── .gitignore └── README.md /app/static/3.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DarkIsComing/flask-Purchase_and_sale/HEAD/app/static/3.jpeg -------------------------------------------------------------------------------- /view-photo/db.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DarkIsComing/flask-Purchase_and_sale/HEAD/view-photo/db.png -------------------------------------------------------------------------------- /view-photo/Sale.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DarkIsComing/flask-Purchase_and_sale/HEAD/view-photo/Sale.png -------------------------------------------------------------------------------- /view-photo/Stock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DarkIsComing/flask-Purchase_and_sale/HEAD/view-photo/Stock.png -------------------------------------------------------------------------------- /view-photo/index.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DarkIsComing/flask-Purchase_and_sale/HEAD/view-photo/index.png -------------------------------------------------------------------------------- /view-photo/login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DarkIsComing/flask-Purchase_and_sale/HEAD/view-photo/login.png -------------------------------------------------------------------------------- /view-photo/Purchase.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DarkIsComing/flask-Purchase_and_sale/HEAD/view-photo/Purchase.png -------------------------------------------------------------------------------- /view-photo/backup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DarkIsComing/flask-Purchase_and_sale/HEAD/view-photo/backup.png -------------------------------------------------------------------------------- /view-photo/category.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DarkIsComing/flask-Purchase_and_sale/HEAD/view-photo/category.png -------------------------------------------------------------------------------- /view-photo/message.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DarkIsComing/flask-Purchase_and_sale/HEAD/view-photo/message.png -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | *.js linguist-language=Python 2 | *.css linguist-language=Python 3 | *.html linguist-language=Python 4 | -------------------------------------------------------------------------------- /view-photo/Admin_list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DarkIsComing/flask-Purchase_and_sale/HEAD/view-photo/Admin_list.png -------------------------------------------------------------------------------- /view-photo/Statistics.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DarkIsComing/flask-Purchase_and_sale/HEAD/view-photo/Statistics.png -------------------------------------------------------------------------------- /view-photo/flowsheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DarkIsComing/flask-Purchase_and_sale/HEAD/view-photo/flowsheet.png -------------------------------------------------------------------------------- /app/static/images/aiwrap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DarkIsComing/flask-Purchase_and_sale/HEAD/app/static/images/aiwrap.png -------------------------------------------------------------------------------- /app/static/fonts/iconfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DarkIsComing/flask-Purchase_and_sale/HEAD/app/static/fonts/iconfont.eot -------------------------------------------------------------------------------- /app/static/fonts/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DarkIsComing/flask-Purchase_and_sale/HEAD/app/static/fonts/iconfont.ttf -------------------------------------------------------------------------------- /app/static/fonts/iconfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DarkIsComing/flask-Purchase_and_sale/HEAD/app/static/fonts/iconfont.woff -------------------------------------------------------------------------------- /app/templates/admin/LineSale.html: -------------------------------------------------------------------------------- 1 | {% extends "admin/base_biao.html" %} 2 | 3 | 4 | {% block content %} 5 | 6 | {% endblock %} -------------------------------------------------------------------------------- /app/static/images/demo-1-bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DarkIsComing/flask-Purchase_and_sale/HEAD/app/static/images/demo-1-bg.jpg -------------------------------------------------------------------------------- /app/templates/admin/PurchaseQuota.html: -------------------------------------------------------------------------------- 1 | {% extends "admin/base_biao.html" %} 2 | 3 | 4 | {% block content %} 5 | 6 | {% endblock %} -------------------------------------------------------------------------------- /app/templates/admin/employeeWages.html: -------------------------------------------------------------------------------- 1 | {% extends "admin/base_biao.html" %} 2 | 3 | 4 | {% block content %} 5 | 6 | {% endblock %} -------------------------------------------------------------------------------- /view-photo/Add_merchandise .png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DarkIsComing/flask-Purchase_and_sale/HEAD/view-photo/Add_merchandise .png -------------------------------------------------------------------------------- /app/templates/admin/inventoryStatistics.html: -------------------------------------------------------------------------------- 1 | {% extends "admin/base_biao.html" %} 2 | 3 | 4 | {% block content %} 5 | 6 | {% endblock %} -------------------------------------------------------------------------------- /app/templates/admin/salesStatistics.html: -------------------------------------------------------------------------------- 1 | {% extends "admin/base_biao.html" %} 2 | 3 | 4 | {% block content %} 5 | 6 | {% endblock %} -------------------------------------------------------------------------------- /app/templates/admin/purchasingStatistics.html: -------------------------------------------------------------------------------- 1 | 2 | {% extends "admin/base_biao.html" %} 3 | 4 | 5 | {% block content %} 6 | 7 | {% endblock %} 8 | -------------------------------------------------------------------------------- /.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /manage.py: -------------------------------------------------------------------------------- 1 | #-*- coding:utf-8 -*- 2 | # author:Agam 3 | # datetime:2018-11-05 4 | 5 | from app.apps import app 6 | 7 | if __name__ == '__main__': 8 | app.run(host='127.0.0.1',debug=True,port=5050) -------------------------------------------------------------------------------- /app/home/__init__.py: -------------------------------------------------------------------------------- 1 | #-*- coding:utf-8 -*- 2 | # author:Agam 3 | # datetime:2018-11-05 4 | 5 | from flask import Blueprint 6 | 7 | 8 | home=Blueprint('home',__name__) 9 | 10 | import app.home.views 11 | -------------------------------------------------------------------------------- /app/admin/__init__.py: -------------------------------------------------------------------------------- 1 | #-*- coding:utf-8 -*- 2 | # author:Agam 3 | # datetime:2018-11-05 4 | 5 | 6 | from flask import Blueprint 7 | admin=Blueprint('admin',__name__) 8 | 9 | import app.admin.views 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /app/templates/admin/errorroot.html: -------------------------------------------------------------------------------- 1 | {% extends "admin/bases.html" %} 2 | {% import "admin/fy.html" as pg %} 3 | 4 | {% block content %} 5 | 6 |
7 |

你没有权限

8 |
9 | 10 | 11 | {% endblock %} -------------------------------------------------------------------------------- /app/home/views.py: -------------------------------------------------------------------------------- 1 | #-*- coding:utf-8 -*- 2 | # author:Agam 3 | # datetime:2018-11-05 4 | 5 | from app.home import home 6 | from flask import render_template 7 | 8 | 9 | @home.route("/") 10 | def index(): 11 | return render_template("home/index.html") 12 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | -------------------------------------------------------------------------------- /app/templates/home/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 没有首页的首页 6 | 7 | 13 | 14 |
15 |

暂无首页

16 |

点击返回后台页面

17 |
18 | 19 | 20 | -------------------------------------------------------------------------------- /.idea/商贸管理系统.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 13 | -------------------------------------------------------------------------------- /app/static/css/font.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'iconfont'; 3 | src: url('../fonts/iconfont.eot'); 4 | src: url('../fonts/iconfont.eot?#iefix') format('embedded-opentype'), 5 | url('../fonts/iconfont.woff') format('woff'), 6 | url('../fonts/iconfont.ttf') format('truetype'), 7 | url('../fonts/iconfont.svg#iconfont') format('svg'); 8 | } 9 | .iconfont{ 10 | font-family:"iconfont" !important; 11 | font-size:16px;font-style:normal; 12 | -webkit-font-smoothing: antialiased; 13 | -webkit-text-stroke-width: 0.2px; 14 | -moz-osx-font-smoothing: grayscale; 15 | } 16 | 17 | -------------------------------------------------------------------------------- /requirement.txt: -------------------------------------------------------------------------------- 1 | blinker==1.4 2 | Click==7.0 3 | Flask==1.0.2 4 | Flask-Login==0.4.1 5 | Flask-Mail==0.9.1 6 | flask-sqlacodegen==1.1.6.1 7 | Flask-SQLAlchemy==2.3.2 8 | Flask-WTF==0.14.2 9 | future==0.17.1 10 | inflect==2.1.0 11 | itsdangerous==1.1.0 12 | javascripthon==0.10 13 | Jinja2==2.10 14 | jupyter-echarts-pypkg==0.1.2 15 | lml==0.0.2 16 | macropy3==1.1.0b2 17 | MarkupSafe==1.1.1 18 | Pillow==5.4.1 19 | pyecharts==0.5.11 20 | pyecharts-javascripthon==0.0.6 21 | pyecharts-jupyter-installer==0.0.3 22 | PyMySQL==0.9.3 23 | SQLAlchemy==1.3.0 24 | Werkzeug==0.14.1 25 | WTForms==2.2.1 26 | -------------------------------------------------------------------------------- /app/templates/admin/beifen.html: -------------------------------------------------------------------------------- 1 | {% extends "admin/bases.html" %} 2 | {% block content %} 3 | 4 |
5 |
6 | 7 | 21 | 22 |
23 | 24 |
25 | 26 | 27 | {% endblock %} -------------------------------------------------------------------------------- /app/templates/admin/comminrole.html: -------------------------------------------------------------------------------- 1 | {% extends "admin/bases.html" %} 2 | 3 | 4 | {% block content %} 5 | 6 |
7 |
8 | 9 |
10 | 11 |
12 | {{form.account}} 13 |
14 |
15 | {{form.powerss}} 16 |
17 | {{form.csrf_token}} 18 | {{form.submit}} 19 | 20 | 21 | 22 |
23 |
24 | 25 |
26 | 27 | 28 | {% endblock %} -------------------------------------------------------------------------------- /app/templates/admin/addSection.html: -------------------------------------------------------------------------------- 1 | {% extends "admin/bases.html" %} 2 | 3 | 4 | {% block content %} 5 | 6 |
7 |
8 | 9 |
10 | 11 | 12 |
13 | 14 | {{form.name}} 15 |
16 | 17 | {{form.csrf_token}} 18 | {{form.submit}} 19 | 20 | 21 | 22 |
23 |
24 | 25 |
26 | 27 | 28 | 29 | 32 | {% endblock %} -------------------------------------------------------------------------------- /app/templates/admin/404.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 消失在宇宙星空中的404页面 6 | 7 | 8 | 9 | 10 |
11 | 12 |
13 |

迷失在太空中!

14 |

返回首页

15 |
16 | 17 |
18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /app/templates/admin/addduty.html: -------------------------------------------------------------------------------- 1 | {% extends "admin/bases.html" %} 2 | 3 | 4 | {% block content %} 5 | 6 |
7 |
8 | 9 |
10 | 11 |
12 | {{form.name}} 13 |
14 | 15 | {{form.csrf_token}} 16 | {{form.submit}} 17 | 18 | 19 | 20 |
21 |
22 | 23 |
24 | 30 | 31 | {% endblock %} -------------------------------------------------------------------------------- /app/static/css/register.css: -------------------------------------------------------------------------------- 1 | 2 | .login-main { 3 | position: fixed; 4 | top: 0; 5 | right: 0; 6 | bottom: 0; 7 | left: 0; 8 | width: 350px; 9 | margin: 0 auto; 10 | } 11 | 12 | .login-main header { 13 | margin-top: 150px; 14 | height: 35px; 15 | line-height: 35px; 16 | font-size: 30px; 17 | font-weight: 100; 18 | text-align: center; 19 | } 20 | 21 | .login-main header, .login-main form, .login-main form .layui-input-inline { 22 | margin-bottom: 15px; 23 | } 24 | 25 | .login-main form .layui-input-inline, .login-main form .layui-input-inline input, .login-main form .layui-input-inline button { 26 | width: 100%; 27 | } 28 | 29 | .login-main form .login-btn { 30 | margin-bottom: 5px; 31 | } 32 | .fr{ 33 | float: right; 34 | } -------------------------------------------------------------------------------- /app/templates/admin/fy.html: -------------------------------------------------------------------------------- 1 | 2 | {%macro page(pagination,url)%} 3 |
4 | 5 | 6 | {%if pagination.has_prev%} 7 | 8 | {%else%} 9 | 10 | {%endif%} 11 | 12 | {%for page in pagination.iter_pages(1,1,3,1)%} 13 | {%if page%} 14 | {{page}} 15 | {%else%} 16 | 17 | {%endif%} 18 | 19 | {%endfor%} 20 | 21 | {%if pagination.has_next%} 22 | 23 | {%else%} 24 | 25 | {%endif%} 26 | 尾页 27 | 28 | 29 |
30 | {%endmacro%} 31 | -------------------------------------------------------------------------------- /app/templates/admin/addTradeName.html: -------------------------------------------------------------------------------- 1 | {% extends "admin/bases.html" %} 2 | 3 | 4 | {% block content %} 5 | 6 |
7 |
8 | 9 |
10 | 11 | 12 |
13 | {{form.name}} 14 |
15 | {{form.price}} 16 | {{form.info}} 17 | {{form.csrf_token}} 18 | {{form.submit}} 19 | 20 | {% for message in get_flashed_messages() %} 21 | 28 | {% endfor %} 29 | 30 | 31 | 32 |
33 |
34 | 35 |
36 | 37 | 38 | 39 | 45 | {% endblock %} -------------------------------------------------------------------------------- /app/templates/admin/base_biao.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Proudly presented by ECharts 8 | {% for jsfile_name in script_list %} 9 | 10 | 11 | {% endfor %} 12 | 13 | 14 | 15 |
16 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 agamgn 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /app/templates/admin/add_admin.html: -------------------------------------------------------------------------------- 1 | {% extends "admin/bases.html" %} 2 | 3 | 4 | {% block content %} 5 | 6 |
7 |
8 |
9 |
10 | 11 | {{form.name}} 12 |
13 |
14 | 15 | {{form.pwd}} 16 |
17 |
18 | 19 | {{form.main}} 20 |
21 |
22 | 23 | {{form.phone}} 24 |
25 | 26 | 27 |
28 | 29 | {{form.csrf_token}} 30 | {{form.submit}} 31 | 32 | 33 | 34 |
35 |
36 | 37 |
38 | 39 | 40 | 41 | 44 | {% endblock %} -------------------------------------------------------------------------------- /app/templates/admin/bases.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | We商贸后台管理 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | {% block content %} 24 | {% endblock %} 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/templates/admin/addRepositoryName.html: -------------------------------------------------------------------------------- 1 | {% extends "admin/bases.html" %} 2 | 3 | 4 | {% block content %} 5 | 6 | 7 | 8 |
9 |
10 |
11 | 12 |
13 | 14 | {{form.name}} 15 |
16 | 17 |
18 | 19 | {{form.local}} 20 |
21 | 22 | {{form.csrf_token}} 23 | {{form.submit}} 24 | 25 | 26 |
27 |
28 |
29 | 30 | 45 | {% endblock %} -------------------------------------------------------------------------------- /app/templates/admin/bumen.html: -------------------------------------------------------------------------------- 1 | {% extends "admin/bases.html" %} 2 | 3 | 4 | {% block content %} 5 | 6 |
7 |
8 | 9 |
10 | 11 |
12 | {{form.account}} 13 |
14 |
15 | {{form.dutyser}} 16 |
17 |
18 | {{form.sectionsr}} 19 |
20 | {{form.csrf_token}} 21 | {{form.submit}} 22 | {% for message in get_flashed_messages() %} 23 | 30 | {% endfor %} 31 | 32 | 33 | 34 | 35 |
36 |
37 | 38 |
39 | 45 | 46 | {% endblock %} -------------------------------------------------------------------------------- /app/templates/admin/addsalesOrder.html: -------------------------------------------------------------------------------- 1 | {% extends "admin/bases.html" %} 2 | 3 | 4 | {% block content %} 5 | 6 |
7 |
8 |
9 | 10 | 11 |
12 | {{form.goods_name}} 13 |
14 |
15 | {{form.num}} 16 |
17 |
18 | {{form.gk}} 19 |
20 |
21 | {{form.ywy}} 22 |
23 | 24 | 25 | {{form.csrf_token}} 26 | {{form.submit}} 27 | 28 | 29 | {% for message in get_flashed_messages() %} 30 | 37 | {% endfor %} 38 | 39 | 40 | 41 | 42 |
43 |
44 | 45 | 46 |
47 | 48 | 49 | 50 | 57 | {% endblock %} -------------------------------------------------------------------------------- /app/apps.py: -------------------------------------------------------------------------------- 1 | #-*- coding:utf-8 -*- 2 | # author:Agam 3 | # datetime:2018-11-05 4 | 5 | from flask import Flask, render_template 6 | from flask_sqlalchemy import SQLAlchemy 7 | from flask_login import LoginManager 8 | from flask_mail import Mail 9 | 10 | app=Flask(__name__) 11 | 12 | 13 | # 数据库配置 14 | app.config["SQLALCHEMY_DATABASE_URI"]="mysql+pymysql://uesr:password@127.0.0.1:3306/dbname?charset=utf8" 15 | app.config["SQLALCHEMY_TRACK_MODIFICATIONS"]=True 16 | # 密钥配置,在生产环境中使用系统自动生成 17 | app.config['SECRET_KEY']='d890fbe7e26c4c3eb557b6009e3f4d3d' 18 | 19 | # 调试开关,生产环境是关闭的 20 | app.debug=True 21 | 22 | # 注册数据模型 23 | db=SQLAlchemy(app) 24 | 25 | 26 | 27 | # 邮件配置 28 | app.config['MAIL_SERVER'] = 'smtp.163.com' 29 | app.config['MAIL_PORT'] = 465 30 | app.config['MAIL_USE_SSL'] = True 31 | app.config['MAIL_USE_TLS'] = False 32 | app.config['MAIL_USERNAME'] = '' 33 | app.config['MAIL_PASSWORD'] = '' 34 | 35 | mail = Mail(app) 36 | 37 | # 注册蓝图 38 | from app.admin import admin as admin_blueprint 39 | from app.home import home as home_blueprint 40 | app.register_blueprint(admin_blueprint,url_prefix='/admin/') 41 | app.register_blueprint(home_blueprint,url_prefix='/') 42 | 43 | @app.errorhandler(404) 44 | def page_not_found(error): 45 | return render_template("admin/404.html"),404 46 | 47 | 48 | 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /app/templates/admin/addSupplier.html: -------------------------------------------------------------------------------- 1 | {% extends "admin/bases.html" %} 2 | 3 | 4 | {% block content %} 5 | 6 |
7 |
8 |
9 | 10 | 11 |
12 | {{form.name}} 13 |
14 | 15 |
16 | {{form.addre}} 17 |
18 | 19 |
20 | {{form.credit}} 21 |
22 | 23 | 24 | {{form.csrf_token}} 25 | {{form.submit}} 26 | 27 | {% for message in get_flashed_messages() %} 28 | 35 | {% endfor %} 36 | 37 | 38 | 39 |
40 |
41 | 42 | 43 |
44 | 45 | 46 | 47 | 67 | {% endblock %} -------------------------------------------------------------------------------- /app/templates/admin/addCustomerz.html: -------------------------------------------------------------------------------- 1 | {% extends "admin/bases.html" %} 2 | 3 | 4 | {% block content %} 5 | 6 |
7 |
8 |
9 | 10 | 11 |
12 | {{form.name}} 13 |
14 | 15 |
16 | 17 | {{form.addr}} 18 |
19 | 20 | 21 |
22 | 23 | {{form.phone}} 24 |
25 | 26 | 27 |
28 | 29 | {{form.credit}} 30 |
31 | 32 | 33 | {{form.csrf_token}} 34 | {{form.submit}} 35 | 36 | {% for message in get_flashed_messages() %} 37 | 44 | {% endfor %} 45 | 46 | 47 | 48 | 49 |
50 |
51 | 52 | 53 |
54 | 55 | 56 | 57 | 76 | {% endblock %} -------------------------------------------------------------------------------- /app/templates/admin/increasePurchaseOrder.html: -------------------------------------------------------------------------------- 1 | {% extends "admin/bases.html" %} 2 | 3 | 4 | {% block content %} 5 | 6 |
7 |
8 |
9 | 10 | 11 |
12 | {{form.goods_name}} 13 |
14 |
15 | {{form.num}} 16 |
17 |
18 | {{form.gys}} 19 |
20 |
21 | {{form.ywy}} 22 |
23 | 24 | 25 | {{form.csrf_token}} 26 | {{form.submit}} 27 | {% for message in get_flashed_messages() %} 28 | 35 | {% endfor %} 36 | 37 | 38 | 39 |
40 |
41 | 42 | 43 |
44 | 45 | 46 | 47 | 70 | {% endblock %} -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | *.egg-info/ 24 | .installed.cfg 25 | *.egg 26 | MANIFEST 27 | 28 | # PyInstaller 29 | # Usually these files are written by a python script from a template 30 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 31 | *.manifest 32 | *.spec 33 | 34 | # Installer logs 35 | pip-log.txt 36 | pip-delete-this-directory.txt 37 | 38 | # Unit test / coverage reports 39 | htmlcov/ 40 | .tox/ 41 | .coverage 42 | .coverage.* 43 | .cache 44 | nosetests.xml 45 | coverage.xml 46 | *.cover 47 | .hypothesis/ 48 | .pytest_cache/ 49 | 50 | # Translations 51 | *.mo 52 | *.pot 53 | 54 | # Django stuff: 55 | *.log 56 | local_settings.py 57 | db.sqlite3 58 | 59 | # Flask stuff: 60 | instance/ 61 | .webassets-cache 62 | 63 | # Scrapy stuff: 64 | .scrapy 65 | 66 | # Sphinx documentation 67 | docs/_build/ 68 | 69 | # PyBuilder 70 | target/ 71 | 72 | # Jupyter Notebook 73 | .ipynb_checkpoints 74 | 75 | # pyenv 76 | .python-version 77 | 78 | # celery beat schedule file 79 | celerybeat-schedule 80 | 81 | # SageMath parsed files 82 | *.sage.py 83 | 84 | # Environments 85 | .env 86 | .venv 87 | env/ 88 | venv/ 89 | ENV/ 90 | env.bak/ 91 | venv.bak/ 92 | 93 | # Spyder project settings 94 | .spyderproject 95 | .spyproject 96 | 97 | # Rope project settings 98 | .ropeproject 99 | 100 | # mkdocs documentation 101 | /site 102 | 103 | # mypy 104 | .mypy_cache/ 105 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | flask实现的简单进销存后台管理系统 2 | ======= 3 | ## 进销存管理后台系统 4 | 5 | 6 | 7 | > flask实现的进销存后台管理系统,包含个模块:采购管理,销售管理,仓库管理,数据统计,管理员管理,系统管理。 8 | 9 | #### 效果图 10 | 11 | ![Add_merchandise ](https://github.com/agamgn/flask-Purchase_and_sale/blob/master/view-photo/Add_merchandise%20.png) 12 | 13 | ![Stock](https://github.com/agamgn/flask-Purchase_and_sale/blob/master/view-photo/Stock.png) 14 | 15 | ![category](https://github.com/agamgn/flask-Purchase_and_sale/blob/master/view-photo/category.png) 16 | 17 | ![backup](https://github.com/agamgn/flask-Purchase_and_sale/blob/master/view-photo/backup.png) 18 | 19 | ![Purchase](https://github.com/agamgn/flask-Purchase_and_sale/blob/master/view-photo/Purchase.png) 20 | 21 | ![login](https://github.com/agamgn/flask-Purchase_and_sale/blob/master/view-photo/login.png) 22 | 23 | ![Admin_list](https://github.com/agamgn/flask-Purchase_and_sale/blob/master/view-photo/Admin_list.png) 24 | 25 | ![index](https://github.com/agamgn/flask-Purchase_and_sale/blob/master/view-photo/index.png) 26 | 27 | ![message](https://github.com/agamgn/flask-Purchase_and_sale/blob/master/view-photo/message.png) 28 | 29 | ![Statistics](https://github.com/agamgn/flask-Purchase_and_sale/blob/master/view-photo/Statistics.png) 30 | 31 | ![Sale](https://github.com/agamgn/flask-Purchase_and_sale/blob/master/view-photo/Sale.png) 32 | 33 | ![flowsheet](https://github.com/agamgn/flask-Purchase_and_sale/blob/master/view-photo/flowsheet.png) 34 | 35 | ![db](https://github.com/agamgn/flask-Purchase_and_sale/blob/master/view-photo/db.png) 36 | 37 | #### 技术栈 38 | 39 | - flask 40 | - flask相关拓展 41 | - mysql 42 | - layui模板 43 | 44 | #### 运行项目 45 | 46 | ``` 47 | #clone项目到本地 48 | https://github.com/agamgn/flask-Purchase_and_sale.git 49 | #安装依赖 50 | pip install -r requirement.txt 51 | #运行sql 52 | #启动项目 53 | python manage.py runserver 54 | #默认超级管理员 55 | root:root 56 | ``` 57 | -------------------------------------------------------------------------------- /app/static/assets/js/1d6ccbb6f543f958f751064f5faecf23.js: -------------------------------------------------------------------------------- 1 | (function (root, factory) {if (typeof define === 'function' && define.amd) {define(['exports', 'echarts'], factory);} else if (typeof exports === 'object' && typeof exports.nodeName !== 'string') {factory(exports, require('echarts'));} else {factory({}, root.echarts);}}(this, function (exports, echarts) {var log = function (msg) {if (typeof console !== 'undefined') {console && console.error && console.error(msg);}};if (!echarts) {log('ECharts is not Loaded');return;}if (!echarts.registerMap) {log('ECharts Map is not loaded');return;}echarts.registerMap('墨竹工卡县', {"type":"FeatureCollection","features":[{"type":"Feature","id":"540127","properties":{"name":"墨竹工卡县","cp":[91.730732,29.834111],"childNum":1},"geometry":{"type":"Polygon","coordinates":["@@UDOGS@QB@JBNGRCXARMHOAKFFPFPLPD^MHELDPLNJLFPFZNPXHZJNNALGTGT@XHXJPLXFLDJNTNRDXB\\@XJ\\RVLLFV@VIVITITSVURSESGWAaFcLWNWHGVLRLJNDVBXHTHLL@\\@XFV@B@DAB@FBB@@@@DBB@B@F@@@BBBBB@B@BAFCBADADADCB@D@TAFAF@H@F@FADAFAD@D@D@B@B@B@DABCB@@@B@DBFDAB@B@@BDBBBD@H@J@DAD@HCJABABCDGDGDABAB@B@F@@BDBDBD@FAJADABADEFAHABAB@@ADABAB@B@@AFCFADBBAHBBABA@@B@@B@B@BAB@BBBBB@DADABAB@B@@@BBHJBD@D@B@BB@BBB@@@@B@B@B@F@BFFNFPCNFDPLNPLTNTJZNTDP@TAPDXJRNLLPNVNXDRIVCREZAPGNBHNVRVJZQLETMJWBUCQBWBEDEZGTFFL\\TVDZERCFALCNJLLTJPFPL\\CXITGRCRGRCDLTPP@JITHFLFT@LBRHPFLLTDLDVRLLHDL@NFLLH`@VK\\IXMLQNWRSZG^CXEPI\\EHLBLJHPCXGRFTD\\G`GLGZIXGNELFPGPFNARINCNFXCPHVD\\@PGTCTCLGLMZKJIDMDKMQKCCK@KSIUMKGEKAODIGUKDQCGKCMAO@UEKOES@OCOIWAMNMFQFSIUKSKUKMGAI@KMGOCKMBOJIRAVIEQKMU@YCMGKOUAWIMMAMEKQ@ORYJUCWOMGQMIKOISMSGQOQEWAY@YJOFUNQBKGDQEWMICOLSAOMMBQVMJANA@@ZGVEV@ZGRCVQPONKFMLKFKJQBSJSLGP@LHTLPPDNDNBNRFZ@REZ@ZCH@EIESCKCGEMEMEECAEAGACEAE@ECWBIHIFGRWLGDKDS@CGOAC@OFM@AGIOKEMBMHOLOJKBAAMCKOGSEMCUAOECAGBEJCFGFC@CGEKAEGGIGICACGIECIEEAAK@A@UGIOBQHKFIIGKIQKEQCQD_FQ@MDMHEBGCECMEKKIAEASIAAGMECMGEGCCCAGBIBM@EBIJIFKFIBI@EAEAICQGQDKLGPCLM@UDUCMDMFILKPIFQFKISBWHW@KDSCIMIIQBCPMJQDWF_@_BMGOGQFIGCMKWEKQJOBKEKIKIQEUDOBSBEKAKAMQCQAcCGZKHWHSBKQKOSBOFENGRJTFZBR"],"encodeOffsets":[[93833,30286]]}}],"UTF8Encoding":true});})); -------------------------------------------------------------------------------- /app/templates/admin/seeWarehouse.html: -------------------------------------------------------------------------------- 1 | {% extends "admin/bases.html" %} 2 | {% import "admin/fy.html" as pg %} 3 | 4 | {% block content %} 5 |
6 |
7 |
8 | {{form.name}} 9 | {{form.gys}} 10 | 11 | {{form.csrf_token}} 12 | {{form.submit}} 13 |
14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | {% for i in page_data.items %} 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 45 | 46 | {% endfor %} 47 | 48 |
商品名称商品数量商品单价供应商名称操作
{{i.warehouse_goods_name}}{{i.warehouse_goods_num}}{{i.goods_price}}{{i.warehouse_supplier_name}} 40 | 41 | 42 | 43 | 44 |
49 | 50 | {{pg.page(page_data,'admin.seeWarehouse')}} 51 | 52 |
53 | 75 | 76 | {% endblock %} -------------------------------------------------------------------------------- /app/templates/admin/supplier.html: -------------------------------------------------------------------------------- 1 | {% extends "admin/bases.html" %} 2 | {% import "admin/fy.html" as pg %} 3 | 4 | {% block content %} 5 | 6 | 7 |
8 |
9 |
10 | {{form.name}} 11 | 12 | {{form.csrf_token}} 13 | {{form.submit}} 14 |
15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | {% for i in page_data.items %} 34 | 35 | 36 | 37 | 38 | 39 | 45 | 46 | {% endfor %} 47 | 48 |
供应商名称供应商地址供应商级别操作
{{i.supplier_name}}{{i.supplier_addre}}{{i.supplier_credit}} 40 | 41 | 42 | 43 | 44 |
49 | 50 | {{pg.page(page_data,'admin.suppliers')}} 51 | 52 |
53 | 72 | 73 | {% endblock %} -------------------------------------------------------------------------------- /app/templates/admin/customerz.html: -------------------------------------------------------------------------------- 1 | {% extends "admin/bases.html" %} 2 | {% import "admin/fy.html" as pg %} 3 | 4 | {% block content %} 5 | 6 |
7 |
8 |
9 | {{form.name}} 10 | {{form.phone}} 11 | 12 | {{form.csrf_token}} 13 | {{form.submit}} 14 |
15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | {% for i in page_data.items %} 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 49 | 50 | {% endfor %} 51 | 52 |
客户姓名手机号码联络地址客户级别操作
{{i.client_name}}{{i.client_phone}}{{i.client_addre}}{{i.client_credit}} 45 | 46 | 47 | 48 |
53 | 54 | {{pg.page(page_data,'admin.customerz')}} 55 | 56 |
57 | 76 | 77 | {% endblock %} -------------------------------------------------------------------------------- /app/templates/admin/enteringWarehouse.html: -------------------------------------------------------------------------------- 1 | 2 | {% extends "admin/bases.html" %} 3 | {% import "admin/fy.html" as pg %} 4 | {% block content %} 5 | 6 | 7 |
8 |
9 |
10 | {{form.name}} 11 | {{form.ywy}} 12 | 13 | {{form.csrf_token}} 14 | {{form.submit}} 15 |
16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | {% for i in page_data.items %} 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 46 | 47 | {% endfor %} 48 | 49 |
商品编号商品名称数量总价供应商进货人操作
{{i.inwarehouse_num}}{{i.inwarehouse_goods}}{{i.inwarehouse_count}}{{i.inwarehouse_price}}{{i.inwarehouse_supplier}}{{i.inwarehouse_user_name}} 41 | 42 | 43 | 44 | 45 |
50 | 51 | {{pg.page(page_data,'admin.enteringWarehouse')}} 52 | 53 |
54 | 73 | 74 | 75 | 76 | {% endblock %} -------------------------------------------------------------------------------- /app/templates/admin/outWarehousing.html: -------------------------------------------------------------------------------- 1 | 2 | {% extends "admin/bases.html" %} 3 | {% import "admin/fy.html" as pg %} 4 | {% block content %} 5 | 6 | 7 | 8 |
9 |
10 |
11 | {{form.name}} 12 | {{form.ywy}} 13 | 14 | {{form.csrf_token}} 15 | {{form.submit}} 16 |
17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | {% for i in page_data.items %} 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 50 | 51 | {% endfor %} 52 | 53 |
商品编号商品名称数量总价客户出货人出货时间操作
{{i.stock_num}}{{i.stock_goods}}{{i.stock_count}}{{i.stock_price}}{{i.client_name}}{{i.stock_user_name}}{{i.stock_addtime}} 45 | 46 | 47 | 48 | 49 |
54 | {{pg.page(page_data,'admin.enteringWarehouse')}} 55 | 56 |
57 | 76 | 77 | 78 | 79 | {% endblock %} -------------------------------------------------------------------------------- /app/static/404/404.css: -------------------------------------------------------------------------------- 1 | html, body { 2 | overflow: hidden; 3 | background: #000; 4 | padding: 0px; margin: 0px; 5 | width: 100%; height: 100%; 6 | } 7 | img { 8 | max-width: 100%; 9 | vertical-align: middle; 10 | border: 0; 11 | -ms-interpolation-mode: bicubic; 12 | } 13 | a { color: white; text-decoration: none; border-bottom: none; } 14 | a:hover { color: white; text-decoration: none; } 15 | h1 { 16 | background: -webkit-linear-gradient(#5f5287, #8b7cb9); 17 | font-family: "proxima nova","Roboto","helvetica",Arial,sans-serif; 18 | -webkit-background-clip: text; 19 | -webkit-text-fill-color: transparent; 20 | font-size: 34px; 21 | font-weight: bold; 22 | letter-spacing: -2px; 23 | line-height: 50px; 24 | } 25 | h2 { 26 | color: white; 27 | font-family: "proxima nova","Roboto","helvetica",Arial,sans-serif; 28 | font-size: 24px; 29 | font-weight: normal; 30 | .opacity(50); 31 | } 32 | h1 a,h2 a{color:#505358} 33 | .fullScreen { 34 | height: 100%; 35 | } 36 | a.logo { 37 | position: absolute; 38 | bottom: 50px; 39 | right: 50px; 40 | width: 250px; 41 | text-decoration: none; 42 | border-bottom: none; 43 | } 44 | img.rotating { 45 | position: absolute; 46 | left: 50%; 47 | top: 50%; 48 | margin-left: -256px; 49 | margin-top: -256px; 50 | 51 | -webkit-transition: opacity 2s ease-in; 52 | -moz-transition: opacity 2s ease-in; 53 | -o-transition: opacity 2s ease-in; 54 | -ms-transition: opacity 2s ease-in; 55 | transition: opacity 2s ease-in; 56 | } 57 | 58 | @-webkit-keyframes rotating { 59 | from{ 60 | -webkit-transform: rotate(0deg); 61 | } 62 | to{ 63 | -webkit-transform: rotate(360deg); 64 | } 65 | } 66 | 67 | @-moz-keyframes rotating { 68 | from{ 69 | -moz-transform: rotate(0deg); 70 | } 71 | to{ 72 | -moz-transform: rotate(360deg); 73 | } 74 | } 75 | 76 | @-o-keyframes rotating { 77 | from{ 78 | -o-transform: rotate(0deg); 79 | } 80 | to{ 81 | -o-transform: rotate(360deg); 82 | } 83 | } 84 | 85 | @-ms-keyframes rotating { 86 | from{ 87 | -ms-transform: rotate(0deg); 88 | } 89 | to{ 90 | -ms-transform: rotate(360deg); 91 | } 92 | } 93 | 94 | .rotating { 95 | -webkit-animation: rotating 120s linear infinite; 96 | -moz-animation: rotating 120s linear infinite; 97 | } 98 | 99 | div.pagenotfound-text { 100 | position: absolute; 101 | bottom: 50px; 102 | left: 50px; 103 | } -------------------------------------------------------------------------------- /app/templates/admin/returnSales.html: -------------------------------------------------------------------------------- 1 | 2 | {% extends "admin/bases.html" %} 3 | {% import "admin/fy.html" as pg %} 4 | {% block content %} 5 | 6 | 7 |
8 |
9 |
10 | {{form.goods_name}} 11 | {{form.person_name}} 12 | 13 | {{form.csrf_token}} 14 | {{form.submit}} 15 |
16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | {% for i in page_data.items %} 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 48 | 49 | {% endfor %} 50 | 51 |
商品编号商品名称数量总价客户进货人进货时间操作
{{i.sealreturngoods_num}}{{i.sealreturngoods_goods}}{{i.sealreturngoods_count}}{{i.sealreturngoods_price}}{{i.client_name}}{{i.sealreturngoods_user_name}}{{i.sealreturngoods_addtime}} 44 | 45 | 46 | 47 |
52 | {{pg.page(page_data,'admin.returnSales')}} 53 | 54 |
55 | 74 | 75 | 76 | 77 | {% endblock %} -------------------------------------------------------------------------------- /app/templates/admin/warehouseName.html: -------------------------------------------------------------------------------- 1 | {% extends "admin/bases.html" %} 2 | 3 | 4 | {% block content %} 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 35 | 36 | 37 | 38 | 39 | 40 |
仓库编号仓库名称仓库位置操作
{{i.id}}{{i.name}}{{i.addre}} 31 | 32 | 33 | 34 |
41 |
42 |
43 | 44 | 1 45 | 2 46 | 3 47 | 489 48 | 49 |
50 |
51 | 52 |
53 | 85 | 86 | {% endblock %} -------------------------------------------------------------------------------- /app/templates/admin/categoryOfGoods.html: -------------------------------------------------------------------------------- 1 | {% extends "admin/bases.html" %} 2 | {% import "admin/fy.html" as pg %} 3 | 4 | {% block content %} 5 | 6 | 7 |
8 |
9 |
10 | {{form.goods_name}} 11 | {{form.csrf_token}} 12 | {{form.submit}} 13 |
14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | {% for i in page_data.items %} 33 | 34 | 35 | 36 | 37 | 38 | 43 | 44 | {% endfor %} 45 | 46 |
商品名称价格介绍操作
{{i.goods_name}}{{i.goods_price}}{{i.goods_intro}} 39 | 40 | 41 | 42 |
47 | {{pg.page(page_data,'admin.categoryOfGoods')}} 48 | 49 |
50 | 83 | 84 | {% endblock %} -------------------------------------------------------------------------------- /app/templates/admin/wjmm.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 密码修改页 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 24 | 25 | 26 | 27 |
28 |
修改密码页
29 |
30 |
31 | 32 |
33 | {{form.countname}} 34 |
35 |
36 |
37 |
38 | {{form.account}} 39 |
40 |
41 |
42 |
43 | {{form.pwd}} 44 |
45 | 46 |
47 |
48 | 49 |
50 | {{form.repwd}} 51 |
52 |
53 | 54 | 67 |
68 | 69 |
70 | 71 | -------------------------------------------------------------------------------- /app/templates/admin/admin_list.html: -------------------------------------------------------------------------------- 1 | {% extends "admin/bases.html" %} 2 | {% import "admin/fy.html" as pg %} 3 | 4 | {% block content %} 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | {% for i in page_data.items %} 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | {% endfor %} 53 | 54 |
ID登录名姓名性别邮箱手机所属部门职务权限加入时间
{{i.user_id}}{{i.user_count}}{{i.user_name}}{{i.user_sex}}{{i.user_mail}}{{i.user_phone}}{{i.user_section}}{{i.user_duty}}{{i.user_power}}{{i.user_addtime}}
55 | {{pg.page(page_data,'admin.admin_list')}} 56 | 57 |
58 | 90 | 91 | {% endblock %} 92 | 93 | -------------------------------------------------------------------------------- /app/templates/admin/goodsWarehousing.html: -------------------------------------------------------------------------------- 1 | 2 | {% extends "admin/bases.html" %} 3 | {% block content %} 4 | 5 | 6 |
7 |
8 |
9 | 10 | 11 | 12 |
13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | {% for i in purchases %} 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 42 | 43 | {% endfor %} 44 | 45 |
编号商品名称商品数量商品单价订单时间操作
{{i.id}}{{i.name}}{{i.num}}{{i.price}}{{i.addtime}} 38 | 39 | 40 | 41 |
46 |
47 |
48 | 49 | 1 50 | 2 51 | 3 52 | 489 53 | 54 |
55 |
56 | 57 |
58 | 91 | 92 | 93 | 94 | {% endblock %} -------------------------------------------------------------------------------- /app/templates/admin/login.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 后台登录 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 |
We商贸管理登录
23 |
24 | 25 |
26 | {{form.account}} 27 |
28 | {{form.pwd}} 29 |
30 | {{form.verify_code}} 31 | 32 | 33 | 34 | 35 |
36 | 37 |
38 | {{form.csrf_token}} 39 | {{form.submit}} 40 | 41 |
42 | {% for message in get_flashed_messages() %} 43 | 50 | {% endfor %} 51 |
52 |

立即注册忘记密码?

53 |
54 |
55 |
56 | < 57 | 58 | 59 | 60 | 79 | 80 | -------------------------------------------------------------------------------- /app/templates/admin/dutylist.html: -------------------------------------------------------------------------------- 1 | {% extends "admin/bases.html" %} 2 | {% import "admin/fy.html" as pg %} 3 | 4 | {% block content %} 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | {% for i in page_data.items %} 26 | 27 | 28 | 29 | 30 | 31 | 40 | 41 | {% endfor %} 42 | 43 |
职务名添加时间编辑
{{i.duty_name}}{{i.duty_addtime}} 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 |
44 | 45 | {{pg.page(page_data,'admin.dutylist')}} 46 | 47 |
48 | 96 | 97 | {% endblock %} 98 | 99 | -------------------------------------------------------------------------------- /app/templates/admin/returnOrder.html: -------------------------------------------------------------------------------- 1 | 2 | {% extends "admin/bases.html" %} 3 | {% import "admin/fy.html" as pg %} 4 | {% block content %} 5 | 6 | 7 |
8 |
9 |
10 | {{form.goods_name}} 11 | {{form.person_name}} 12 | 13 | {{form.csrf_token}} 14 | {{form.submit}} 15 |
16 |
17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | {% for i in page_data.items %} 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 49 | 50 | {% endfor %} 51 | 52 |
商品编号商品名称数量总价供应商退货人操作
{{i.returngoods_num}}{{i.returngoods_goods}}{{i.returngoods_count}}{{i.returngoods_price}}{{i.returngoods_supplier}}{{i.returngoods_user_name}} 44 | 45 | 46 | 47 | 48 |
53 | {{pg.page(page_data,'admin.returnOrder')}} 54 | 55 | 56 | 97 | 98 | 99 | 100 | {% endblock %} -------------------------------------------------------------------------------- /app/templates/admin/section.html: -------------------------------------------------------------------------------- 1 | {% extends "admin/bases.html" %} 2 | {% import "admin/fy.html" as pg %} 3 | 4 | {% block content %} 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | {% for i in page_data.items %} 26 | 27 | 28 | 29 | 30 | 31 | 40 | 41 | {% endfor %} 42 | 43 |
部门名添加时间编辑
{{i.section_name}}{{i.section_addtime}} 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 |
44 | 45 | {{pg.page(page_data,'admin.sections')}} 46 | 47 |
48 | 96 | 97 | {% endblock %} 98 | 99 | -------------------------------------------------------------------------------- /app/static/assets/js/1d50adfb516745e2a58f23f8eda574e6.js: -------------------------------------------------------------------------------- 1 | (function (root, factory) {if (typeof define === 'function' && define.amd) {define(['exports', 'echarts'], factory);} else if (typeof exports === 'object' && typeof exports.nodeName !== 'string') {factory(exports, require('echarts'));} else {factory({}, root.echarts);}}(this, function (exports, echarts) {var log = function (msg) {if (typeof console !== 'undefined') {console && console.error && console.error(msg);}};if (!echarts) {log('ECharts is not Loaded');return;}if (!echarts.registerMap) {log('ECharts Map is not loaded');return;}echarts.registerMap('高密市', {"type":"FeatureCollection","features":[{"type":"Feature","id":"370785","properties":{"name":"高密市","cp":[119.755597,36.382594],"childNum":1},"geometry":{"type":"Polygon","coordinates":["@@A@EA@@EBCBCBEH@BAC@A@AKCE@A@CEA@@G@@B@@EECAC@CIAA@BOC@@BA@@M@@ACCAADA@C@ABG@CAGBEDCB@BGHGNAL@D@BAFCFCDE@KBABAB@BA@ALADC@O@A@IBC@C@OAABCFC@A@@CDGAACC@CBA@ADGBE@EAAAAAAA@BIECGCABABABAAICII@IG@A@C@AB@FCBENQTCFCJ@@@@@@ELIJC@IB@@M@G@A@S@GDCD@@@BGDYBG@E@A@IBU@CFCF@BBHDN@BFP@BHNDDDF@@BBHHBJB@DL@@DJFNFNP@AP@DB@D@dAF@@DV@@CL@D@@F@DS@@FE@@NKBFDBH@D@FMFBBBFBJ@@DHDF@@BFDDJ@BNFBABCB_DABEF@BLPFHHFD@BF@@SCQCAD@DA@@@@BFH@BD@@DH@AFCB@@@JD@BF@@@@J@@B@JD@@F@@F@F@BDF@D@@ED@@F@VB@B@D@ADB@BD@@B@@BJ@BHB@H@BDK@GHGBBDBBHPAJJJD@D@JKL@ZRDH@BNBB@B@B@DA@ALEFA@CD@@A@@@AF@@BBDFBHA@ANA@BB@H@DA@@B@DBBHAB@F@D@J@D@@@DJ@BB@H@FADC@@BA@@BDBLFBFA@@D@B@BGHA@@BAF@@@@@L@BAB@DBHJD@B@@@@AD@DADAHELAHCJAFER@@AFADADGN@@BBFB@BAJ@HA@EPABABA@EAAFA@C@E@@BCHEL@BADAHCBE@GA@B@DBFHB@BKH@DAB@BCDCB@DE@GDABBBEF@@CB@@ABA@IDCTAF@@@H@HDBDBBDDFJJ@B@B@B@H@B@BCDBFDBB@F@ZDB@FDB@BBB@@@FDJ@BBBBD@BBBB@@BA@@@C@A@A@@@@@@@@BA@@@@BA@@BA@@@A@@@@AAB@@AB@@@B@BAB@@A@@@A@A@@@A@@@A@@@AB@@@BA@@B@@A@@BA@@AA@@@A@@B@@A@@D@B@@@B@@@B@@A@@BA@@@AA@@A@@@AB@@ABA@@@@@A@A@@@@BA@@@ABA@A@@@A@@BA@AB@@A@AB@BCBA@A@@@AA@@A@@@@@AB@@@B@BCB@@AB@@AB@B@BA@@B@@@BA@@B@B@@@@AB@B@B@@AB@@A@@@A@@@@@A@@B@B@B@B@B@BA@@BAB@BABABABA@@DABA@@@@@A@AB@@@@A@@B@@@@@@@@@@@BB@@@@@B@@@@@@@@B@@@@B@@B@D@@@@@@A@@@@@@@A@@B@@@@@@@@@BA@@B@B@@@@@@@B@@@BA@A@@@@@AB@@@@AB@@@DC@@B@@@B@@@@BB@@@@B@@@@B@@AB@@@BA@@@@@@@@BA@A@AB@@@@@@@@@B@@@@@@@@@BA@@@@@A@@B@@@@@D@@@@@BA@ABA@@@@@@@@B@@@@@B@@@@@B@@@@@B@@A@@B@@@B@@@@@@@B@@@B@B@@@B@@@B@@@@@B@@A@@@@B@@@@@@@@BB@@@@@@@@@B@@@@@@A@@@@BA@@@@@@B@BA@@B@@@@@BA@@@@@@@@@@@AB@@ABA@@B@@@@A@@@@@AA@@@@A@@@@B@@@B@@@@@@@B@B@@@@@@@B@@@@@BA@@@@B@@A@@B@@@BB@@@@B@@AB@B@@A@@@@@@BA@@@A@@@@@A@@@@BA@@@@@@B@B@B@@@DC@@@@@@B@BA@@@AB@@@@@@@@A@@@@B@@@@@@@@@BBB@@@@@@@BA@@@@@@B@@A@@DABAC@AA@EAECIBMB@JBABBBD@HB@@@B@B@BHB@BH@DABA@@@AB@@@@AB@@@B@@@BA@@BA@@@@B@@@@@B@B@@@@@@A@@@@@AB@@@B@@BB@@@B@@@@@@@AA@@@@@@@@@AB@BBB@B@@@B@@@@@B@@@@@@A@@@@AA@@@@@@@@B@BAD@BA@@B@@@@@@@BA@A@@B@@@B@@@B@B@@@B@BAB@@@BAB@BAB@BA@@D@B@@@@@B@DAB@B@DAB@B@@@B@BAB@BAB@B@BADAB@B@@AB@B@BAB@@@DAB@B@BAB@BAD@DA@@B@@@@@DAB@@@B@DAB@D@DA@@B@D@BAD@B@B@DAB@B@B@@@B@DAB@B@B@B@B@BAD@B@B@D@DAB@B@B@D@BAD@B@D@DAB@B@B@B@B@FA@@D@JABAD@DAB@D@@@B@D@FAH@HAHAD@@@DC@ABA@A@CBE@M@ABE@I@@@ABGB@B@RBF@@@AD@@@D@L@@AD@BBB@@@B@@BBB@@BB@B@@BB@BB@@BBB@@BB@@@B@BBHDB@B@B@@F@@JB@CB@B@T@D@@CD@BGDCDAFABADAB@BADAHCHABADABB@HF@@@D@@BB@@@H@@CB@@A@AA@AA@A@CAA@@@@@A@A@@@@@@@@A@@@A@@@@@BAA@@A@AAA@CAEBGBA@@@@@@H@B@@B@B@@B@@@FAAAAAA@CACA@@AA@A@@AAA@ACDM@@@AB@DABABBB@@@B@@A@@AABAB@@@B@@A@@@A@@A@A@AAA@@@@IBEAAA@C@A@A@A@BE@CAAE@IAEB@DABE@M@O@G@EAA@@AA@A@@@AAA@A@@@A@C@@@A@A@@@A@@@@@@@@AAA@@@@AAA@AA@@A@@@A@AB@@@BABA@@A@A@A@@A@AA@A@@AAAC@@CCAAA@@@@A@A@ABCAA@AA@@AA@A@A@@@AA@@@A@A@@@A@@@AA@@AA@@CEAC@@@@@E@@@@@@@A@@G@CAA@ABG@@BC@C@@BAD@@@B@B@@AB@@A@@FED@FCDA@CBG@@B@BABGEAME@@ADEBCDE@A@IAABC@QAA@EAAAAAFIEA@@@ABE@CMEBABC@A@C@A@AA@@A@A@@@AAA@A@A@@AA@@@A@AA@@A@@@A@@@ABA@@BA@@BA@A@@AA@@@AA@@A@A@C@A@@@A@@@A@@@AAA@@AA@@AA@@AA@AAA@A@AAA@A@@@CBC@ACAIA@@@AA@A@A@@AA@A@@@AAA@A@@@A@AA@@A@A@AA@@A@AA@@A@A@AA@@A@AA@@AA@@@A@@@A@A@@@A@@ACA@A@@@A@A@AB@@A@A@@@A@AAA@@@@AAA@@@C@@@AA@@A@@AA@AA@ACAAA@ECEEAA@@AA@@AA@AA@@AA@AA@@@AA@AA@A@@@A@A@A@C@@@A@@@A@@@@@@@@@A@A@@@AA@@AA@@@AA@@@A@@@A@@@A@@@A@@@@@@@A@@@A@@AA@@AAA@@AA@A@A@@@A@C@A@A@@AA@@@@A@@BC@CBE@@@A@@@A@@@A@A@@@AA@A@@ACCE@GGCGBEB@B@BA@@BG@A@@DIBEDCDEH@FBBABA@ACGACA@AEACBEBA@AFEAEJE@@@A@C@C@@CAC@ABGCCI@@@A@@BAGBADA@EBBC@@@CA@ACBCA@C@A@CBGBA@CAAAA@@D@@@BA@A@CBC@@CCAOEI@E@BDG@E@EA@A@@A@@@EACE@@KEC@A@E@IFIAABA@ABA@AB@BAD@F@F@@@BA@ABA@@@A@A@@@A@AA@@AB@@ABA@@@A@A@A@@@A@A@@BA@A@@BA@AAA@@AA@A@E@EBA@A@EFC@AAAAA@"],"encodeOffsets":[[122569,37046]]}}],"UTF8Encoding":true});})); -------------------------------------------------------------------------------- /app/templates/admin/persionDetail.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 个人信息 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 23 | 24 | 25 | 26 |
27 | 31 | 32 |
33 |
34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 |
登录名:{{usermessage.user_count}}
姓  名:{{usermessage.user_name}}
性 别:{{usermessage.user_sex}}
邮 箱:{{usermessage.user_mail}}
手 机:{{usermessage.user_phone}}
55 |
56 | 57 | 58 |
59 |
60 |
61 | 64 |
65 | 66 |
67 |
68 |
69 | 72 |
73 | {{form.account}} 74 |
75 |
76 |
77 | 80 |
81 | {{form.pwd}} 82 |
83 |
84 | 6到16个字符 85 |
86 |
87 |
88 | 91 |
92 | {{form.repwd}} 93 |
94 |
95 |
96 | 98 | {{form.csrf_token}} 99 | {{form.submit}} 100 | {% for message in get_flashed_messages() %} 101 | 108 | {% endfor %} 109 |
110 |
111 |
112 |
113 | 114 |
115 | 116 | 117 | 118 | 119 | 120 | -------------------------------------------------------------------------------- /app/admin/uilt.py: -------------------------------------------------------------------------------- 1 | #-*- coding:utf-8 -*- 2 | # author:Agam 3 | # datetime:2018-11-05 4 | 5 | 6 | import datetime 7 | import random 8 | import string 9 | from PIL import Image, ImageFont, ImageDraw, ImageFilter 10 | from pyecharts import Bar, Line, Pie 11 | from pyecharts_javascripthon.api import TRANSLATOR 12 | from sqlalchemy import extract, func 13 | from app.apps import db 14 | from app.models import Purchase, sales,warehouse,goods 15 | 16 | 17 | def rndColor(): 18 | '''随机颜色''' 19 | return (random.randint(32, 127), random.randint(32, 127), random.randint(32, 127)) 20 | 21 | def gene_text(): 22 | '''生成4位验证码''' 23 | return ''.join(random.sample(string.ascii_letters+string.digits, 4)) 24 | 25 | def draw_lines(draw, num, width, height): 26 | '''划线''' 27 | for num in range(num): 28 | x1 = random.randint(0, width / 2) 29 | y1 = random.randint(0, height / 2) 30 | x2 = random.randint(0, width) 31 | y2 = random.randint(height / 2, height) 32 | draw.line(((x1, y1), (x2, y2)), fill='black', width=1) 33 | 34 | def get_verify_code(): 35 | '''生成验证码图形''' 36 | code = gene_text() 37 | # 图片大小120×50 38 | width, height = 120, 50 39 | # 新图片对象 40 | im = Image.new('RGB',(width, height),'white') 41 | # 字体 42 | font = ImageFont.truetype('app/static/arial.ttf', 40) 43 | # draw对象 44 | draw = ImageDraw.Draw(im) 45 | # 绘制字符串 46 | for item in range(4): 47 | draw.text((5+random.randint(-3,3)+23*item, 5+random.randint(-3,3)), 48 | text=code[item], fill=rndColor(),font=font ) 49 | # 划线 50 | draw_lines(draw, 2, width, height) 51 | # 高斯模糊 52 | im = im.filter(ImageFilter.GaussianBlur(radius=1.5)) 53 | return im, code 54 | 55 | 56 | # 进货表格 57 | # 进货量 58 | def bars(): 59 | bar=bar_chart() 60 | javascript_snippet = TRANSLATOR.translate(bar.options) 61 | return bar,javascript_snippet 62 | 63 | def bar_chart(): 64 | d = db.session.query(func.count(extract('Day', Purchase.purchase_addtime)), 65 | extract('Day', Purchase.purchase_addtime)).group_by( 66 | extract('Day', Purchase.purchase_addtime) 67 | ).all() 68 | 69 | attr = ["{}号".format(j) for _,j in d] 70 | v1 = [i for i,_ in d] 71 | bar = Bar("日采购量") 72 | bar.add( 73 | "", 74 | attr, 75 | v1, 76 | is_datazoom_show=True, 77 | datazoom_type="both", 78 | datazoom_range=[10, 25], 79 | ) 80 | return bar 81 | 82 | 83 | # 销售表格 84 | # 销售量 85 | def lines(): 86 | line = line_chart() 87 | javascript_snippet = TRANSLATOR.translate(line.options) 88 | return line,javascript_snippet 89 | def line_chart(): 90 | sale = db.session.query(func.count(extract('Day', sales.sales_addtime)), 91 | extract('Day', sales.sales_addtime)).group_by( 92 | extract('Day', sales.sales_addtime) 93 | ).all() 94 | attr = [i for _,i in sale] 95 | v1 = [j for j,_ in sale] 96 | print(attr) 97 | print(v1) 98 | line = Line("日销售量") 99 | 100 | line.add("", attr, v1, is_stack=True, is_smooth=True,is_fill=True) 101 | return line 102 | 103 | 104 | def pies(): 105 | pie = pie_chart() 106 | javascript_snippet = TRANSLATOR.translate(pie.options) 107 | return pie,javascript_snippet 108 | def pie_chart(): 109 | warehouses = db.session.query(func.count(warehouse.warehouse_goods_num), 110 | goods.goods_name).filter(warehouse.warehouse_goods_name == goods.goods_name).group_by( 111 | warehouse.warehouse_supplier_name 112 | ).all() 113 | print(warehouses) 114 | attr = [i for _, i in warehouses] 115 | v1 = [j for j, _ in warehouses] 116 | print(attr) 117 | print(v1) 118 | pie = Pie("") 119 | 120 | pie.add("", attr, v1, is_stack=True, is_smooth=True, is_fill=True, rosetype="area", is_label_show=True) 121 | return pie 122 | 123 | 124 | 125 | # 生成编号 126 | def on_created(): 127 | nowTime = datetime.datetime.now().strftime("%Y%m%d%H%M%S"); # 生成当前时间 128 | randomNum = random.randint(0, 100); # 生成的随机整数n,其中0<=n<=100 129 | if randomNum <= 10: 130 | randomNum = str(0) + str(randomNum); 131 | uniqueNum = str(nowTime) + str(randomNum); 132 | return uniqueNum 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | -------------------------------------------------------------------------------- /app/templates/admin/salesOrder.html: -------------------------------------------------------------------------------- 1 | {% extends "admin/bases.html" %} 2 | {% import "admin/fy.html" as pg %} 3 | 4 | {% block content %} 5 | 6 | 7 |
8 |
9 |
10 | {{form.goods_name}} 11 | {{form.person_name}} 12 | {{form.csrf_token}} 13 | {{form.submit}} 14 |
15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | {% for i in page_data.items %} 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 61 | 62 | {% endfor %} 63 | 64 |
商品名称订单编号商品數量定金出货人客戶出货时间操作
{{i.sales_goods_name}}{{i.sales_num}}{{i.sales_count}}{{i.sales_price}}{{i.client_name}}{{i.sales_user_name}}{{i.sales_addtime}} 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 |
65 | {{pg.page(page_data,'admin.purchaseOrder')}} 66 | 67 |
68 | 69 | 70 | 71 | 148 | {% endblock %} -------------------------------------------------------------------------------- /app/templates/admin/purchaseOrder.html: -------------------------------------------------------------------------------- 1 | {% extends "admin/bases.html" %} 2 | {% import "admin/fy.html" as pg %} 3 | 4 | {% block content %} 5 | 6 | 7 |
8 |
9 |
10 | {{form.goods_name}} 11 | {{form.person_name}} 12 | {{ form.csrf_token }} 13 | {{form.submit}} 14 |
15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | {% for i in page_data.items %} 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 65 | 66 | {% endfor %} 67 | 68 |
商品id订单编号商品名称数量单价总金额供应商进货人进货时间操作
{{i.purchase_id}}{{i.purchase_num}}{{i.purchase_goods}}{{i.purchase_count}}{{i.goods_price}}{{i.purchase_price}}{{i.purchase_supplier}}{{i.purchase_user_name}}{{i.purchase_addtime}} 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 |
69 | 70 | 71 | {{pg.page(page_data,'admin.purchaseOrder')}} 72 | 73 |
74 | 75 | 76 | 77 | 153 | {% endblock %} -------------------------------------------------------------------------------- /app/templates/admin/register.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 注册页 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 24 | 25 | 26 | 27 |
28 |
注册页
29 |
30 | 31 |
32 | 33 |
34 | {{form.account}} 35 |
36 | 37 |
38 | 39 |
40 | 41 |
42 | 43 |
44 |
45 | 46 |
47 |
48 | {{form.pwd}} 49 |
50 | 51 |
52 | 53 |
54 | 55 |
56 | 57 |
58 |
59 | 60 |
61 |
62 | {{form.repwd}} 63 |
64 | 65 |
66 | 67 |
68 | 69 |
70 | 71 |
72 |
73 | 74 |
75 | 76 |
77 | {{form.name}} 78 |
79 |
80 |
81 | 82 |
83 | {{form.sex}} 84 |
85 |
86 | 87 |
88 | 89 |
90 | {{form.phone}} 91 |
92 |
93 | 94 | 95 |
96 | 97 |
98 | {{form.mail}} 99 |
100 |
101 | 102 | 106 | {% for message in get_flashed_messages() %} 107 | 114 | {% endfor %} 115 |
116 |
117 |

已有账号?立即登录忘记密码?

118 |
119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | -------------------------------------------------------------------------------- /app/templates/admin/workPlatform.html: -------------------------------------------------------------------------------- 1 | {% extends "admin/bases.html" %} 2 | 3 | 4 | {% block content %} 5 | 6 |
7 |
欢迎你: 8 | {{name}}
9 |
10 | 预警先知 11 |
12 |
13 |
14 |
15 | 39 |
40 |
41 |
42 |
43 |
44 | 45 | 46 |
47 | 数据统计 48 |
49 |
50 | 83 |
84 |
85 |
86 |
87 | 系统通知 88 |
89 | 90 | 91 | 92 | 95 | 96 | 97 | 98 |
93 | 暂无 94 |
99 |
100 |
101 | 102 | 103 |
104 | 105 | 106 | 107 | {% endblock %} -------------------------------------------------------------------------------- /app/static/js/macarons.js: -------------------------------------------------------------------------------- 1 | (function (root, factory) { 2 | if (typeof define === 'function' && define.amd) { 3 | // AMD. Register as an anonymous module. 4 | define(['exports', 'echarts'], factory); 5 | } else if (typeof exports === 'object' && typeof exports.nodeName !== 'string') { 6 | // CommonJS 7 | factory(exports, require('echarts')); 8 | } else { 9 | // Browser globals 10 | factory({}, root.echarts); 11 | } 12 | }(this, function (exports, echarts) { 13 | var log = function (msg) { 14 | if (typeof console !== 'undefined') { 15 | console && console.error && console.error(msg); 16 | } 17 | }; 18 | if (!echarts) { 19 | log('ECharts is not Loaded'); 20 | return; 21 | } 22 | 23 | var colorPalette = [ 24 | '#2ec7c9','#b6a2de','#5ab1ef','#ffb980','#d87a80', 25 | '#8d98b3','#e5cf0d','#97b552','#95706d','#dc69aa', 26 | '#07a2a4','#9a7fd1','#588dd5','#f5994e','#c05050', 27 | '#59678c','#c9ab00','#7eb00a','#6f5553','#c14089' 28 | ]; 29 | 30 | 31 | var theme = { 32 | color: colorPalette, 33 | 34 | title: { 35 | textStyle: { 36 | fontWeight: 'normal', 37 | color: '#008acd' 38 | } 39 | }, 40 | 41 | visualMap: { 42 | itemWidth: 15, 43 | color: ['#5ab1ef','#e0ffff'] 44 | }, 45 | 46 | toolbox: { 47 | iconStyle: { 48 | normal: { 49 | borderColor: colorPalette[0] 50 | } 51 | } 52 | }, 53 | 54 | tooltip: { 55 | backgroundColor: 'rgba(50,50,50,0.5)', 56 | axisPointer : { 57 | type : 'line', 58 | lineStyle : { 59 | color: '#008acd' 60 | }, 61 | crossStyle: { 62 | color: '#008acd' 63 | }, 64 | shadowStyle : { 65 | color: 'rgba(200,200,200,0.2)' 66 | } 67 | } 68 | }, 69 | 70 | dataZoom: { 71 | dataBackgroundColor: '#efefff', 72 | fillerColor: 'rgba(182,162,222,0.2)', 73 | handleColor: '#008acd' 74 | }, 75 | 76 | grid: { 77 | borderColor: '#eee' 78 | }, 79 | 80 | categoryAxis: { 81 | axisLine: { 82 | lineStyle: { 83 | color: '#008acd' 84 | } 85 | }, 86 | splitLine: { 87 | lineStyle: { 88 | color: ['#eee'] 89 | } 90 | } 91 | }, 92 | 93 | valueAxis: { 94 | axisLine: { 95 | lineStyle: { 96 | color: '#008acd' 97 | } 98 | }, 99 | splitArea : { 100 | show : true, 101 | areaStyle : { 102 | color: ['rgba(250,250,250,0.1)','rgba(200,200,200,0.1)'] 103 | } 104 | }, 105 | splitLine: { 106 | lineStyle: { 107 | color: ['#eee'] 108 | } 109 | } 110 | }, 111 | 112 | timeline : { 113 | lineStyle : { 114 | color : '#008acd' 115 | }, 116 | controlStyle : { 117 | normal : { color : '#008acd'}, 118 | emphasis : { color : '#008acd'} 119 | }, 120 | symbol : 'emptyCircle', 121 | symbolSize : 3 122 | }, 123 | 124 | line: { 125 | smooth : true, 126 | symbol: 'emptyCircle', 127 | symbolSize: 3 128 | }, 129 | 130 | candlestick: { 131 | itemStyle: { 132 | normal: { 133 | color: '#d87a80', 134 | color0: '#2ec7c9', 135 | lineStyle: { 136 | color: '#d87a80', 137 | color0: '#2ec7c9' 138 | } 139 | } 140 | } 141 | }, 142 | 143 | scatter: { 144 | symbol: 'circle', 145 | symbolSize: 4 146 | }, 147 | 148 | map: { 149 | label: { 150 | normal: { 151 | textStyle: { 152 | color: '#d87a80' 153 | } 154 | } 155 | }, 156 | itemStyle: { 157 | normal: { 158 | borderColor: '#eee', 159 | areaColor: '#ddd' 160 | }, 161 | emphasis: { 162 | areaColor: '#fe994e' 163 | } 164 | } 165 | }, 166 | 167 | graph: { 168 | color: colorPalette 169 | }, 170 | 171 | gauge : { 172 | axisLine: { 173 | lineStyle: { 174 | color: [[0.2, '#2ec7c9'],[0.8, '#5ab1ef'],[1, '#d87a80']], 175 | width: 10 176 | } 177 | }, 178 | axisTick: { 179 | splitNumber: 10, 180 | length :15, 181 | lineStyle: { 182 | color: 'auto' 183 | } 184 | }, 185 | splitLine: { 186 | length :22, 187 | lineStyle: { 188 | color: 'auto' 189 | } 190 | }, 191 | pointer : { 192 | width : 5 193 | } 194 | } 195 | }; 196 | 197 | echarts.registerTheme('macarons', theme); 198 | })); -------------------------------------------------------------------------------- /app/templates/admin/role-add.html: -------------------------------------------------------------------------------- 1 | {% extends "admin/bases.html" %} 2 | 3 | 4 | {% block content %} 5 |
6 |
7 |
8 | 11 |
12 | 14 |
15 |
16 |
17 | 20 | 21 | 22 | 23 | 26 | 39 | 40 | 41 | 45 | 54 | 55 | 56 |
24 | 25 | 27 |
28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 |
38 |
42 | 43 | 44 | 46 |
47 | 48 | 49 | 50 | 51 | 52 |
53 |
57 |
58 |
59 | 62 |
63 | 64 |
65 |
66 |
67 | 68 |
69 |
70 |
71 | 108 | 114 | {% endblock %} -------------------------------------------------------------------------------- /app/static/js/xadmin.js: -------------------------------------------------------------------------------- 1 | $(function () { 2 | //加载弹出层 3 | layui.use(['form','element'], 4 | function() { 5 | layer = layui.layer; 6 | element = layui.element; 7 | }); 8 | 9 | //触发事件 10 | var tab = { 11 | tabAdd: function(title,url,id){ 12 | //新增一个Tab项 13 | element.tabAdd('xbs_tab', { 14 | title: title 15 | ,content: '' 16 | ,id: id 17 | }) 18 | } 19 | ,tabDelete: function(othis){ 20 | //删除指定Tab项 21 | element.tabDelete('xbs_tab', '44'); //删除:“商品管理” 22 | 23 | 24 | othis.addClass('layui-btn-disabled'); 25 | } 26 | ,tabChange: function(id){ 27 | //切换到指定Tab项 28 | element.tabChange('xbs_tab', id); //切换到:用户管理 29 | } 30 | }; 31 | 32 | 33 | tableCheck = { 34 | init:function () { 35 | $(".layui-form-checkbox").click(function(event) { 36 | if($(this).hasClass('layui-form-checked')){ 37 | $(this).removeClass('layui-form-checked'); 38 | if($(this).hasClass('header')){ 39 | $(".layui-form-checkbox").removeClass('layui-form-checked'); 40 | } 41 | }else{ 42 | $(this).addClass('layui-form-checked'); 43 | if($(this).hasClass('header')){ 44 | $(".layui-form-checkbox").addClass('layui-form-checked'); 45 | } 46 | } 47 | 48 | }); 49 | }, 50 | getData:function () { 51 | var obj = $(".layui-form-checked").not('.header'); 52 | var arr=[]; 53 | obj.each(function(index, el) { 54 | arr.push(obj.eq(index).attr('data-id')); 55 | }); 56 | return arr; 57 | } 58 | } 59 | 60 | //开启表格多选 61 | tableCheck.init(); 62 | 63 | 64 | $('.container .left_open i').click(function(event) { 65 | if($('.left-nav').css('left')=='0px'){ 66 | $('.left-nav').animate({left: '-221px'}, 100); 67 | $('.page-content').animate({left: '0px'}, 100); 68 | $('.page-content-bg').hide(); 69 | }else{ 70 | $('.left-nav').animate({left: '0px'}, 100); 71 | $('.page-content').animate({left: '221px'}, 100); 72 | if($(window).width()<768){ 73 | $('.page-content-bg').show(); 74 | } 75 | } 76 | 77 | }); 78 | 79 | $('.page-content-bg').click(function(event) { 80 | $('.left-nav').animate({left: '-221px'}, 100); 81 | $('.page-content').animate({left: '0px'}, 100); 82 | $(this).hide(); 83 | }); 84 | 85 | $('.layui-tab-close').click(function(event) { 86 | $('.layui-tab-title li').eq(0).find('i').remove(); 87 | }); 88 | 89 | $("tbody.x-cate tr[fid!='0']").hide(); 90 | // 栏目多级显示效果 91 | $('.x-show').click(function () { 92 | if($(this).attr('status')=='true'){ 93 | $(this).html(''); 94 | $(this).attr('status','false'); 95 | cateId = $(this).parents('tr').attr('cate-id'); 96 | $("tbody tr[fid="+cateId+"]").show(); 97 | }else{ 98 | cateIds = []; 99 | $(this).html(''); 100 | $(this).attr('status','true'); 101 | cateId = $(this).parents('tr').attr('cate-id'); 102 | getCateId(cateId); 103 | for (var i in cateIds) { 104 | $("tbody tr[cate-id="+cateIds[i]+"]").hide().find('.x-show').html('').attr('status','true'); 105 | } 106 | } 107 | }) 108 | 109 | //左侧菜单效果 110 | // $('#content').bind("click",function(event){ 111 | $('.left-nav #nav li').click(function (event) { 112 | 113 | if($(this).children('.sub-menu').length){ 114 | if($(this).hasClass('open')){ 115 | $(this).removeClass('open'); 116 | $(this).find('.nav_right').html(''); 117 | $(this).children('.sub-menu').stop().slideUp(); 118 | $(this).siblings().children('.sub-menu').slideUp(); 119 | }else{ 120 | $(this).addClass('open'); 121 | $(this).children('a').find('.nav_right').html(''); 122 | $(this).children('.sub-menu').stop().slideDown(); 123 | $(this).siblings().children('.sub-menu').stop().slideUp(); 124 | $(this).siblings().find('.nav_right').html(''); 125 | $(this).siblings().removeClass('open'); 126 | } 127 | }else{ 128 | 129 | var url = $(this).children('a').attr('_href'); 130 | var title = $(this).find('cite').html(); 131 | var index = $('.left-nav #nav li').index($(this)); 132 | 133 | for (var i = 0; i <$('.x-iframe').length; i++) { 134 | if($('.x-iframe').eq(i).attr('tab-id')==index+1){ 135 | tab.tabChange(index+1); 136 | event.stopPropagation(); 137 | return; 138 | } 139 | }; 140 | 141 | tab.tabAdd(title,url,index+1); 142 | tab.tabChange(index+1); 143 | } 144 | 145 | event.stopPropagation(); 146 | 147 | }) 148 | 149 | }) 150 | var cateIds = []; 151 | function getCateId(cateId) { 152 | 153 | $("tbody tr[fid="+cateId+"]").each(function(index, el) { 154 | id = $(el).attr('cate-id'); 155 | cateIds.push(id); 156 | getCateId(id); 157 | }); 158 | } 159 | 160 | /*弹出层*/ 161 | /* 162 | 参数解释: 163 | title 标题 164 | url 请求的url 165 | id 需要操作的数据id 166 | w 弹出层宽度(缺省调默认值) 167 | h 弹出层高度(缺省调默认值) 168 | */ 169 | function x_admin_show(title,url,w,h){ 170 | if (title == null || title == '') { 171 | title=false; 172 | }; 173 | if (url == null || url == '') { 174 | url="404.html"; 175 | }; 176 | if (w == null || w == '') { 177 | w=($(window).width()*0.9); 178 | }; 179 | if (h == null || h == '') { 180 | h=($(window).height() - 50); 181 | }; 182 | layer.open({ 183 | type: 2, 184 | area: [w+'px', h +'px'], 185 | fix: false, //不固定 186 | maxmin: true, 187 | shadeClose: true, 188 | shade:0.4, 189 | title: title, 190 | content: url 191 | }); 192 | } 193 | 194 | /*关闭弹出框口*/ 195 | function x_admin_close(){ 196 | parent.location.reload(); 197 | var index = parent.layer.getFrameIndex(window.name); 198 | parent.layer.close(index); 199 | } 200 | 201 | 202 | -------------------------------------------------------------------------------- /app/static/assets/js/1d04f6707a64d95a2b16c3a3cec1af22.js: -------------------------------------------------------------------------------- 1 | (function (root, factory) {if (typeof define === 'function' && define.amd) {define(['exports', 'echarts'], factory);} else if (typeof exports === 'object' && typeof exports.nodeName !== 'string') {factory(exports, require('echarts'));} else {factory({}, root.echarts);}}(this, function (exports, echarts) {var log = function (msg) {if (typeof console !== 'undefined') {console && console.error && console.error(msg);}};if (!echarts) {log('ECharts is not Loaded');return;}if (!echarts.registerMap) {log('ECharts Map is not loaded');return;}echarts.registerMap('全州县', {"type":"FeatureCollection","features":[{"type":"Feature","id":"450324","properties":{"name":"全州县","cp":[111.072946,25.928387],"childNum":1},"geometry":{"type":"Polygon","coordinates":["@@HAD@D@BB@DADBJDJFNDJDHBD@FABEF@BABDD@FAD@FCDCBAHCFCFCB@BBBD@VDHDBDFZBD@F@L@FBDBBBBAFALCHCD@DDDDFLDHDLBH@BBFBB@B@D@BADEBAFABA@C@E@CDCFEFEJCXEACIOAG@C@ABCBAJCD@H@HBJ@FADABADCBADAHBFBD@BAAGCG@A@A@@@AB@B@DBB@B@DADABAB@B@B@BBBDBBDBDBB@BA@@@C@CBABAB@FBB@@ABCBAB@B@BBBBBBB@DABAFCFEDCDCDAFAD@D@BADAB@B@D@B@B@@DBBBBB@B@D@BBD@B@D@DADBD@B@@@D@HADA@@DAD@D@B@FBJ@R@DBNDD@B@D@DAB@BAFAD@D@J@FAFBN@FBD@DAB@BABC@CAG@C@ABCAECGCEAEACDCHGHGB@FCB@D@DFBBB@B@BC@EBC@CDAB@DBB@HHDBB@D@HCFCD@BBBF@BBBPD@@F@FDD@D@HA@@H@D@DA@CBEDEDCBCBABCFE@A@CAKBCDABA@E@EAEAC@@@CBCAC@CCAEAOC@@EAE@E@CAACACBC@A@CDE@C@CA@@AEAACAEBA@CFCBCBAB@B@BA@AB@ACA@CCACAEBE@CACCCEEEG@C@A@AA@ACAC@EBEDKBE@ADC@@BAFCBC@E@IDCAEAA@A@C@A@A@A@A@CECIECCAC@@@A@AB@FDDBD@@@B@AA@CCCEAECMIEGGI@@BCBAHEBA@CBALGDAFAB@BABABABAAA@AA@C@G@C@ABG@A@AEAAAAGCE@C@CA@@C@ACCA@CAA@GAEACECEGAA@@AECACAEACA@AAA@ABCBA@@@A@CCCCCAA@ABABA@A@C@AAACGAEAEAA@A@E@A@CCE@ACCCAECAC@@AG@I@CEGCEA@@ADALBJDB@BCBEAIBGBAJCH@D@DADA@AACEEAABEFEBAB@LIFADIAAC@G@CAACA@BCBEFEDCLGBABAJEBADEDE@A@KBGBEBCDCB@PGH@B@HAB@R@B@HEHCDAB@B@FLBFBJBNBFDDJH@BTJDDBBJDFBB@@FBDBDFBJDJDF@B@B@LSBCDEDADAD@BBBB@BBHBDBDDDHDHBB@B@@@BA@ABAAE@E@C@AHEDC@ABAAAACAA@A@@B@@@D@LBXDHBDAHKFED@DDLLHDFBJCH@N@HBFDD@FABCACGGAC@IDCF@HDHDHBXGPCBAAEIME@CACAEAGBG@EAECKKOA_ACC@ACCCKCQ@EDCLEDEBCBMBQ@@BIBIBIBK@KCCECGAI@GDOAKKKSIOCAME@@OCMA@@CCCACAE@CBC@A@SEKC@@IAG@EBCBEDE@IAGCGMGCCAAA@AACBQ@CC@A@C@@AA@A@A@CAAACC@@@BA@AAA@A@A@AAEA@AAAAAA@@AA@AAA@@A@A@@A@ABCA@@EDABAD@BB@BB@@@B@BA@@BA@@AAAA@@@AB@@AB@@ABCBC@@@A@@B@@@@@BAD@@@@@ACB@AABBB@@DB@@@AD@B@H@@@@BB@BA@@@AB@@@@AB@@@B@BBBBD@B@BBD@@BA@@@@DAB@B@BBBBDBBBBCD@@DFAB@BE@AACF@BC@A@@@A@@DBD@BA@A@A@@@C@@BGA@AACE@A@AAA@A@AHAB@@A@@BAAABA@CBA@AA@CADCC@B@@@BA@AAB@@AAACB@DEAAAD@ACABA@@B@BAB@DA@@BA@@D@B@B@@ABBBA@@BB@@BCBEDEBGF@@C@CBC@E@@AAAAC@A@CBABADA@AAA@AA@@@A@@C@@B@@A@@AA@@@AA@A@@@@A@@BA@@@@@AAAA@A@@@A@@@@B@B@@B@@AB@@@@BA@@@@@@@@@@@@B@@B@@B@@@@@@A@@@@@@@@@@@@@AA@@@A@ACA@@A@B@@B@B@D@BABA@@BA@@@A@A@CC@A@@@@AA@@A@@@@@A@@A@@AA@AA@@@CB@BCBADG@CDEBABAA@@@DA@C@EACGAACACA@EBAAACC@@CACA@@@CACAA@CA@AC@CAC@@AC@@@@@A@@@A@@BAAGAE@CB@@@BA@B@@B@BA@AACC@@AACAAB@@A@A@@@C@@AED@@@@@@C@C@CA@AAAAA@@ABA@@AA@@@A@@B@@@BAB@BA@@B@B@BCB@B@@A@ABA@@A@A@@@A@A@@@A@@A@@AA@AB@A@@AAB@@CABBB@@B@@E@A@@@DBA@@BA@@BE@C@C@EAA@A@@A@@A@AA@@@ACA@A@AA@AB@@@BABB@AD@B@BA@@@A@ABA@A@A@A@A@@@AB@@@AA@B@AA@AA@A@@@@@CB@@@@A@A@@@AA@@A@@@@@@@@AA@@AA@@@@@A@@@AB@@@@AB@@A@@@@B@@BB@@@BA@@@AB@@@BA@@@A@@@@@@@BA@A@@AA@@@@A@@@@@A@@@AAA@@@@@BAF@BB@@AC@A@AA@A@@@A@@@A@@@@A@@@A@A@@@A@@BA@A@@BB@@B@B@@@B@@A@@@@@A@@@@@@@@B@@A@@@@B@@@C@@A@@@@@@AA@A@AAA@@BC@A@@A@@ABA@@A@@A@AA@@@A@A@@@@@A@@B@@A@@@AA@@BA@@C@@@G@A@@A@A@@BABC@@B@B@@C@C@@D@B@@C@@DAB@B@BB@@B@@ADAB@@@AA@@@@@A@ABA@AA@@A@@A@A@A@A@C@@@AA@@CAAAA@@A@AA@A@A@A@ABA@A@@BABC@AB@@A@A@A@A@@@AAAC@A@@AAA@AA@@B@AAB@@@@AA@CAB@@A@@@@AAAAA@AA@@A@A@@@A@CAAAA@A@A@A@AAA@A@@B@@@B@BDBB@@@@@B@B@@@B@DBBB@@@@@@A@@BAB@BA@CAA@@A@@C@A@@@A@A@A@C@@@A@@@A@@@@@A@@@@@A@A@C@CAA@@@C@@@CA@@CAA@@@A@@@C@@@@@A@A@@@A@@@AAA@@@A@AA@@@@A@@@A@A@@@A@@@A@@@A@A@C@A@A@ABE@@@A@A@E@@@AA@@C@@AA@A@A@AAC@@A@BA@AA@@@@AAA@@A@@@@AAAA@BA@@@A@A@@@A@@@@@A@@AA@AAA@@AC@A@A@CB@@A@@@A@A@@@A@CAA@@@@@CC@A@@AA@@@AAA@AAAA@@@AAA@@AA@@AA@@@CA@AAAAAAA@CBA@@@A@CB@B@@@B@BA@@@A@@@A@@@C@A@@@A@@@@BAB@@A@A@@BA@@@C@A@@@A@@BA@@@CB@@@BAB@@@BA@@@@@AAA@CA@@ABA@A@@@@@A@@@@BA@@B@@@@@@A@@@ADC@@@A@@@A@@@@AA@@AA@A@@AA@@C@A@@@AACCA@@@@@A@@@@A@@AA@@@AA@@@AA@@AA@AA@@@@@@@@A@@B@@A@@A@@ABA@@B@@ABABA@C@@@AACBA@AAA@AB@BA@@@A@@@C@@@@@A@@@@CAA@A@A@A@@@C@@@A@@AA@@A@@A@AAA@@@@@@A@@AAA@@@@@A@AA@@@AAC@A@@CA@@@@@A@A@@@AA@AAA@@@AAA@@AA@@@@CA@@@A@A@A@C@@@@BA@A@@@@B@@C@@@E@A@C@A@@B@@@@@@ABC@@@ABABCB@@A@ABA@AAA@AA@@AA@@AAA@EA@@C@@@@@AA@@AA@@AAAAA@@@AA@@AA@@A@A@@A@@AB@@@@CB@@ABA@ABAAA@AAC@E@CBAAABA@AB@@BB@BBBA@ABBBAB@@A@A@C@A@@AABABCB@@ABA@CD@B@B@@@BA@BDB@ABA@@@@BEB@B@B@B@BA@@@A@ABC@EDC@A@CB@BA@ABCBE@AACCAB@BC@A@C@C@EBA@AA@@A@@AB@AAA@@A@@A@E@@@AB@BA@A@@@@BBBB@@@@BBB@@@DA@@@@BABBB@@@B@D@@A@ABAB@@@@BB@@@B@B@@@B@B@B@@A@@B@@@B@BA@@@@@@BAB@D@@@B@@@B@@@B@BB@@@B@@BBAB@@BBB@@@@@@B@@@B@@B@@ADAD@B@@@@ABAA@B@@AD@DA@@B@B@B@B@@@BCB@@@B@B@B@@B@@B@@@B@B@D@@BB@@BB@B@@@@@B@@@B@@AB@@@B@@@B@@@BBB@@AB@@@@@BB@@@BB@B@@@@B@@D@@B@@B@@@B@@@BB@@@BB@@@B@@BBAB@@@@@@@BA@ADA@A@@BAB@@@@B@@BBD@@@BDB@@@@DBB@D@@@@D@@@B@@AB@@@B@@@B@@@@@F@@@BBBB@@@@B@@BDBBDFB@@@@B@@@BA@@B@B@B@@@BB@@@@B@@BBDDB@@@@B@B@@B@@BB@@B@@B@@@@D@@BB@BB@@BBB@@@@B@@B@@BB@@@@BB@@@@@BDB@@AD@@@B@@BB@@@B@@@@@@@BB@@@B@BB@@B@BBBB@@BD@@@B@@@BABBBBBBB@@A@@BB@@@AB@@@@A@@D@@@@BBA@@B@@@BBB@@AB@B@@CB@B@B@@@BA@@@@@BB@@AB@D@@@@@@@BBBB@@@ABB@@@@B@B@@B@@@BBB@@@BB@@@@@@BB@@AB@@@B@@@@A@@@A@A@@@ABA@@@@@@@A@@@@BA@@BCBA@@BI@A@A@@AA@@@CB@@@BA@ABA@AA@@A@@@AAC@@BAB@@@@AB@@A@ABA@@@AB@@A@A@@@@AA@C@A@@@@B@@BB@@@B@@@@@BA@AB@@@@A@CA@@AA@AC@@@A@@B@@@D@@A@@@@@@@A@@@@BA@CB@B@@@@@B@@@AABA@@@@B@B@BAB@@BBA@@@@B@@@@@@CBA@GDAB@@CCEBA@A@A@AB@B@@@@@@AB@DBB@BBF@@DD@@BBB@BBB@RCBA@@B@D@DBF@JBD@@@BB@@@B@@@@@AA@@B@B@@ABB@@@@BB@@B@@B@@B@@AB@@@B@@AB@@A@@@AB@BAB@@A@@@@@A@@BB@BB@@AB@B@AA@CB@@BB@@@@BB@@CDA@@@AB@@A@@BA@A@@@A@@@AAAAA@ABA@AB@B@B@@CDABAB@B@@C@A@A@AA@@A@@@A@@BCGA@ABED@B@B@@@B@@@B@@@@A@@@@BA@BB@B@@@@@@B@A@@@@@@@A@@@@@@A@@AA@@@@@@B@@@@@@@@@@A@@A@@@AACAA@A@@@@AA@AB@@@AA@@AAAA@@@@A@@A@A@@@@AB@@A@@@@@A@BAA@BAA@@@@@AA@AAA@@AA@A@@@@@CD@BA@@@@@@@A@@@@@A@C@AA@A@A@@B@@A@@A@@@@A@@@@B@@@B@B@@@@@B@@@@@@@@@@@@AA@B@AA@@B@@AB@D@@@@@@@@CAAAA@CAA@AA@ACAAA@C@@@@ABA@@@A@A@@BA@@@AA@@B@@A@ABA@ABA@@@B@@@A@A@@BA@A@@@@B@@A@@@A@@@CB@B@@A@CA@@A@@B@@A@@@@B@@@A@@A@@@ABAB@@C@A@AA@AA@AAAA@@@@A@AA@@@AA@A@@@A@AA@@@@@A@@A@@A@A@@@A@A@A@AA@@AE@C@A@@BA@AA@@AA@@A@A@@A@@A@A@@@@@E@@@C@@@A@@@A@AB@@A@AB@@A@A@@@A@@BA@@BAB@BABABC@@@A@@@A@@@CAA@@@AAC@@@@@A@AB@@@@@BABABADAB@@AB@B@@AB@@A@@@AB@@A@@B@@AB@@AB@@@BB@BB@B@@BD@B@D@B@@@@@B@D@@A@@@ABA@@@@B@@A@@@A@@@AB@@@@@@@BA@@B@@@@@B@B@B@BBB@BA@@BBB@BA@@BA@@B@@ABAB@@A@A@@@@@AB@BAB@@AB@@@@@@AD@@A@A@@@A@@@@@A@@BA@AA@@A@@B@@@B@@@B@BB@@@@@@B@@B@@B@@DB@BBB@@@BB@B@@@@@@B@@BB@@@@@@@B@@@BBB@@@B@@@@@B@@@B@@B@@@AB@@@B@@@D@@@B@@@B@B@@A@@BA@@B@BB@@B@B@@@@A@@BA@@B@B@B@@A@AB@@@B@@A@@B@@@B@@@@AB@B@BA@@@@@@B@BDB@@DBB@B@@@@BBB@@BD@B@@@@BBBD@@B@@B@BB@@B@B@@AB@BA@@B@B@@@B@@@@B@@@@BB@@BBD@D@@@@DBAB@B@DB@@B@B@BB@@@B@@@BBB@@BBBB@BB@@BB@@@@@BB@@B@B@@BBB@@@@BB@@@B@@@@BB@@@B@@@B@B@@@@B@@@B@@@B@@@B@@B@@B@@BB@@@BBB@@@@@@@BB@@@B@BB@@B@B@@@BB@BB@B@BBBBBBB@BB@@@BBBB@@B@BB@@@@@BB@BA@@BBB@@AB@B@@BB@@@@BB@@@@B@B@BB@@BB@B@@BDB@@B@@BB@B@B@@B@@B@@B@BBBB@@BAB@@B@@BB@@@@B@@B@@B@BB@@@B@@B@@@B@@BD@B@@@D@@@BB@@@BB@@@@BB@@@@@B@@@@B@@B@@@@@@BB@@@@@@BB@@@@@BB@B@@@B@B@@@DA@@@@@@B@B@@@@A@@B@@@BAB@@@@@BB@@@@B@@@B@@@@@B@@@B@B@@@@@B@@@@ABBBAB@B@@@B@@@B@DB@@B@@@@BB@@@BB@@BB@@BB@B@B@@@BB@B@@B@@B@B@@@B@@ABAB@B@@@B@@@@BB@B@@B@@@B@BB@@B@@BB@@@@@@@BABB@@B@@@B@@A@@@@B@B@@@B@@@@@B@@@@AB@@BBA@@BBBAB@@B@@@B@@@B@@B@B@BB@B@@@@BB@BB@BB@@B@BB@B@@B@BB@@@@BB@@BB@@@BB@@BBBBB@B@BABBB@B@@@@AB@@@@@@A@AB@@BBA@@@AB@@@B@B@@A@@@@B@B@B@B@BB@@BA@@@@@AB@B@@AB@@AA@BA@@BA@@@A@A@@BA@@@@@A@@@A@A@A@BB@@@B@@@B@@@B@DA@@B@@ABBB@B@B@B@@A@AB@@@B@@@B@@BB@@@@BB@B@B@B@B@BBB@@BB@@B@B@@@B@B@BBBB@@B@@@B@B@@B@B@B@@BB@@BB@B@BB@B@@BDBB@@@BBB@@@BB@B@B@BB@BB@@@B@@D@@@@B@BB@@@@B@@@BB@@BBD@@B@@@@B@B@@@@@@@BB@@B@BB@B@@@BB@@@B@BBBA@@@@B@@A@@BA@@@@@@B@@@@B@@BB@D@@@@BB@@B@BA@@BBBAB@@B@@B@@@BB@@@B@@@BB@@A@@B@@@@B@BBB@@B@@@@@@BBBB@@@DB@@@@B@BB@ABB@@B@@@B@@@B@@@@@B@B@@BB@BA@@DB@B@BBD@BB@@@@B@BB@@@@@@@@@@@BBB@@A@@B@@@@@B@B@@BB@@BB@@B@@@@BB@@B@@B@@@@@@BB@@B@B@@B@D@@BB@B@@@B@B@@@@@@B@@@@@B@@@BBB@@B@@@BF@@BB@B@D@@B@@@B@@@DB@@B@B@@@@@@BB@B@BBBB@D@@BB@@@BBBBD@@@@@BB@A@@BAB@BB@@BB@@@@@BB@B@B@@A@@B@B@@B@BB@@BBDB@@@BB@@@B@B@@@BADB@AB@BBBBBBFD@B@@@BB@@@@B@B@@@B@@@B@@@@@@AB@@@B@@D@@@DAB@@BBB@@BAB@@BB@AB@@BBB@BBBB@@@@@BAB@B@BBB@@@B@BBB@@BBB@DBB@@D@B@@@DBB@B@@@@@B@B@@@BD@B@@@B@@BBB@@@BB@DB@BBB@DB@@B@BB@@@@@BB@B@@@@BB@FBD@@@@BBA@@B@B@@@BBB@@@@AB@BB@@@@B@@B@@@@@B@@BB@@@@@BB@AB@@@@@B@@@@B@@B@B@BA@@BB@B@@B@@B@BDB@@BB@@@@@@A@@@@@@B@@A@@@@@BB@@@@@B@@@BAAA@@BA@@@@B@B@B@@@B@@AB@@BBBB@@@@B@@@BB@@BB@@@@BD@@B@@@@BB@@D@@@BAD@@BB@@BB@@@B@@@B@@BB@B@@A@@@BBB@B@@BB@B@@@B@BB@@@BB@BB@@@@B@@BB@ADBBBBBB@@@C@@B@@BB@@@B@@@BBB@BBDB@@@@@B@@BBB@@BB@@@B@AB@@@@@B@@BBD@@B@@B@@@B@@@@B@B@B@@@B@@BDB@@B"],"encodeOffsets":[[113584,26886]]}}],"UTF8Encoding":true});})); -------------------------------------------------------------------------------- /app/static/assets/js/1cd1b7535bdf7e29500610f4eec9feed.js: -------------------------------------------------------------------------------- 1 | (function (root, factory) {if (typeof define === 'function' && define.amd) {define(['exports', 'echarts'], factory);} else if (typeof exports === 'object' && typeof exports.nodeName !== 'string') {factory(exports, require('echarts'));} else {factory({}, root.echarts);}}(this, function (exports, echarts) {var log = function (msg) {if (typeof console !== 'undefined') {console && console.error && console.error(msg);}};if (!echarts) {log('ECharts is not Loaded');return;}if (!echarts.registerMap) {log('ECharts Map is not loaded');return;}echarts.registerMap('阿克塞哈萨克族自治县', {"type":"FeatureCollection","features":[{"type":"Feature","id":"620924","properties":{"name":"阿克塞哈萨克族自治县","cp":[94.340204,39.633943],"childNum":1},"geometry":{"type":"Polygon","coordinates":["@@@@AA@AA@@AAA@@@AAA@A@@@AA@@@@A@@@@@A@@@@@A@@A@@@AAA@@@AA@@@A@@A@@@AA@@AA@@@@A@@AA@@A@@@@A@@@@@@A@@@@A@@@@@@AA@@@@@A@@@AAA@@AA@A@@@@@@@@AA@@@@AA@@@@@BA@@@@@@AA@@A@@A@@@@@A@@@@A@@@@@@A@@A@@@@@@@@AA@@@@A@@A@@A@A@@@@AA@@@@@A@@AAA@@A@@A@A@@AA@@@A@@@AAAA@@A@@AA@@@@@@@@CA@@@A@@AA@@@@@@C@A@@A@@@@@@A@@@@@@@A@@A@@@@A@@@A@@@@@@@@@A@@@@@@@@@@@A@@AA@@@@@@B@@@AA@@@AB@@@BA@@@@AA@@@@@A@@@@@@@A@@@A@@B@@@@@@A@@@@@@B@@A@@@@@AB@@@@A@@@@@@@@@AB@@@@@@A@@BA@AB@@ABA@A@@@A@@@AA@@A@A@@@A@@@AB@BA@@@@BA@A@AB@@A@A@A@@BA@@@@BA@A@AB@@@BA@A@A@A@@B@@A@@B@@@B@BA@@B@@AB@@@BA@@@@BA@@BA@@BAB@@@BA@@B@@AB@BAB@@@@AB@@AB@@AA@@@@@A@@AA@A@@@A@@@AA@@AA@@@@@@@AB@@A@@@A@ABA@@@ABA@@B@BA@@B@BABAB@@AB@@A@@BAA@@A@@AA@@@A@@@A@A@A@@@AB@BC@A@@BA@@@ABC@A@@@A@ABA@A@AB@@AD{GBƒNcHŸXRR{NqFs@E@UBkI—}q¡@A@ADG@ABACAGECCA@CAAABEBA@ABABABAD@B@@A@A@AAC@A@ABA@ADEBC@AAACAECC@A@A@K@A@A@A@@AAA@A@@@AA@A@CAA@KBC@AAA@CCCCAC@@A@AAK@@@CBABABEDCDADABAB@B@@BF@B@B@B@B@BAB@BABA@C@C@C@K@EBABA@@BE@G@AAAMAOGKYBsVMJOFS@ILIBGBA@G@C@C@CBA@@BC@E@A@A@G@A@EBC@CB@@AB@B@DC@EFA@ABG@C@EAMEE@A@E@ABC@EDABC@E@@@AC@ACEAGAA@AAAACA@AAA@@BA@EBABGBA@A@EBKFAB@@CDC@ABKHEDCDABAD@BAB@BABA@ABA@A@E@C@AAC@EB@@A@@B@BAB@B@D@DA@@@C@EAA@A@ABC@C@CDE@C@CBA@A@@B@F@@@BA@@B@@A@CBA@GBCAA@AB@B@J@DABA@G@EAE@C@CDABABAFA@@BCBC@ABG@A@CBCBABAB@BAB@DBB@BABAB@@ED@B@B@BDF@@BB@B@BA@A@@BQPOJMPA@ADABABCB@BCBAB@BCBCB@@C@C@IAA@CAEAC@AAC@A@C@CAGAA@EAAAA@C@A@AB@@A@ABABCDADCD@BAD@BBB@B@BBBA@@DAD@@AHAF@DADADCHAD@DAF@B@DAF@BAB@BABAD@@@BBDAB@@ADABABABEFABCFA@ABA@C@C@AAC@AACAE@A@AA@@AAAA@@A@@BCBA@ABG@CBA@EDA@@BC@C@I@G@E@A@CBCDEBEDA@C@@@@DADEBEBI@C@@@A@@BCBGFG@E@A@EBABABKFABAF@BBBAB@BA@CBCBA@ABAB@B@@@DB@AB@@@@CBA@E@A@AB@@CDAD@BA@A@@ACC@@CAC@E@C@ABC@A@ACA@@CCC@@CA@@C@E@A@A@CEA@@C@@@A@CBABA@@@A@@@AAAAA@@CEAACGEE@AA@CAA@A@C@IDA@EB@@CAKA@@AAAA@E@A@@AA@AA@CC@@ACAAAACACCAACAGAEA@@AA@AAAAA@AE@EACBABA@A@C@A@C@IDEBA@E@A@AACAA@CCCCAAAACAA@A@@A@A@@@@AAAAA@@ABA@A@A@@CCA@CAC@CAC@E@AAA@ACAA@@CC@AAAAAA@E@E@EAA@C@AA@@ACEE@A@@@ACACACAGEAAAA@AAAAA@@AAA@CBCBA@A@C@A@A@@@@B@F@H@D@BAD@BABA@CD@@@@EBGB@BA@EAA@A@A@@ACCECACCACA@@@AAA@AAA@ACACAA@AAC@C@EC@AC@AACAAACAA@@@A@ABA@CD@BABEBAB@B@B@D@BBB@B@B@BEFAB@@@@A@ECCCA@C@@@C@C@@BA@ABCDAB@@AAA@A@CC@AE@AAAC@@AE@@AAA@CAC@A@CBCBA@AB@@AB@BAB@@CAA@CAA@AACA@AA@A@A@EDABE@E@@@A@@BA@AB@BCD@@A@A@A@A@ABCBABCBA@A@E@C@C@E@AACAEA@AC@EAC@E@A@ADCD@DADCBEBCBCBA@ABAA@@EA@@CCAAACAC@@AAABA@A@ABE@KCCAEACAE@A@AAA@AAA@@AAC@C@@AA@@CCA@AA@@C@I@C@IFCBABAB@@@F@@@BCHABABCDA@@B@@CBABG@CBA@AB@BA@@BC@CBA@A@@@@@@D@BABABABABABA@A@A@E@GA@@AACAC@C@A@E@@BEBCD@@@D@B@DAB@@ABCBCDCB@B@BAFCHAF@DEFCH@B@@BB@@DB@@@@B@@D@DBBAB@BCBABCDABAD@@A@@@A@ECA@@@AB@@A@A@@@ADA@CBCD@@@B@B@@@BABCBMBGBKA@@ADA@CBA@CBA@A@AA@@ADA@A@@B@@@DA@AD@BCBAB@@@B@B@B@BABCBABGHABADADA@@@A@CCA@CAC@A@EBC@ICC@ICECCAECA@CAA@I@A@EAAAAA@@A@CBA@ABMFAB@BA@@BABA@A@CD@BE@MH@@A@AA@ACCCACACA@@A@CBA@EDABAD@@CBA@@BABAB@B@BABCBCB@@A@AA@@AACAE@E@A@G@ABA@ABA@A@A@ICC@EBA@@@EBCBABCBABA@ABA@C@C@C@A@EAA@E@C@A@A@EAGAC@C@@@A@E@EAA@C@C@AA@@AA@EAA@@I@CBA@C@A@CAC@CAIBI@C@AACACCGAG@IAEC@@AA@@BC@EACCCAA@ACAAACAC@E@C@C@AC@A@AA@@@A@A@A@AAA@CAG@G@GAE@C@C@CBC@A@A@A@@@AAAC@A@@A@@@A@A@@BA@C@G@A@AAECAAA@A@@@GDA@AAC@A@ABC@A@EBC@E@A@EA@@E@@@A@CC@@C@I@A@@BABA@@@C@C@EAA@G@C@AAE@C@GBC@C@C@A@C@A@A@C@AA@@A@@@AB@@@BAD@@A@C@C@C@A@C@@@CCA@A@I@G@G@CACAA@E@A@A@ABIAC@CBE@ABA@G@E@AAGAA@C@CBA@A@A@ICA@E@CAA@AAA@GAE@A@A@@ACCCA@@EAC@A@@AA@A@K@C@A@AAECAAA@@@A@A@A@E@GDA@CBA@@@AACAA@@AAA@@AAA@A@A@E@C@@@AAA@@A@@@G@AA@A@@@C@GAC@AA@@AA@AC@ACAAC@A@AC@@@CA@@@@@A@A@ABA@C@A@A@@A@@AA@A@@@@[JMHCDAFADAJ@FB~@RBF@F@HCHGHKLGHCJi s¸‹ìo¬q°GPENENIAGAIAC@CAGCE@C@E@MCC@IBK@K@CBKBE@MAEBA@E@E@C@ID{Gő]yEIAÅMcCA@yGA@CCIECAQECAA@C@C@C@E@CAG@EBKDM@C@ABABE@CBGBA@OBI@EBEAEAA@EAEDO@CBEBGBCBABKDQD@B]L}Z[^@@IFCBEBC@ABCDCH@D@D@DCFAD@B@DAD@DADCFADAB@BC@ABA@AB@B@DBBDDBFDFBB@BDBHBB@F@nBØH^B@N@†S@{@U@IFMH‹f}`EBGFMJSN@@E@ÕC‘AAkAiAƒ@±EKAYAG@E@GAG@}E‰E_C@@@@A@@@@@@@@@@@@@@@IA_I]IM@G@@@@@Q@QD[VGB[NIDAAK@IAIBS@I@aHUJNpFhFvDdDRBXB^@@@@@@@@@@A@@B@@@@A@@@@B@@@@@@@@@@AB@@@@@@@B@@A@AB@@@@@@@@@B@@@@@@@B@@@@@@@@@B@@@B@@@@@B@@@@@B@@@@A@@BA@@@@@@B@@A@@@@B@@@@A@@@@B@@@@A@@@@B@@@@AB@@@@@@@BA@@@@B@@A@@@@@A@@B@@A@@@A@@BA@@@@@A@@@A@@BA@A@@@A@@@@BA@@@@B@@@@@@@B@@@B@B@@@@@B@@@B@@@@@BA@@@@@@B@@@@AB@@@@AB@@@BA@@@@B@@A@@B@@A@@B@@@@A@@B@@@@@BA@@@@B@@@@AB@@@@@B@@@@@B@@@@@B@@@@@@AB@@@@@BA@@@AB@@A@@BA@A@@B@@A@@BA@@@A@@BA@A@A@@BA@@@@@@@AB@@@@@@@B@@@@@@AB@@@@ABA@@@AB@@@@A@@@A@@@AB@@A@A@@@A@A@@@@@A@@@A@@BA@@@@@AB@@A@@@AB@@A@@@A@@BA@@@AB@@@@A@@B@@@@@BB@@B@@@B@@@B@@@@A@@B@@A@@BA@@@AB@@@@@@@B@@@@AB@@@@@B@@@@@@AB@@@@@@@B@@@B@@@@@B@@@@B@@BB@@@B@@BB@@@BB@@B@@BB@@@@B@@@B@@B@AB@@@@@B@@@B@@@B@@@B@@@@@B@@@@AB@@@B@@@@@B@@@@@B@@@B@@@@@BB@@@@@@@BB@@@@B@@B@@@B@@@@@B@@@@@B@@@B@@@B@@@@@B@B@@BB@@@B@@B@@B@@@B@@@BBB@@@@@B@@@@@B@@B@@B@@B@@@BB@@BB@@@@@BMPIHIHKFG@K@IAEACCCGCCGAKCOGEACA@EEECCECK@IBECICGCIBIDKBOBQ@KBE@A@E@E@C@CAECICEECAEBCBCDGDCHCD@FAFCFCDGBGBG@IDG@CCCAE@E@G@E@GAGAGCGAE@I@I@EACACCECCCCCECGCCCAC@AAEECABC@E@C@EACBABCDCACAC@EBEBCBEBE@CA@CCCCCGCKAE@CBEDABEBGAC@E@CBGBG@C@E@GCEAC@E@E@GE@A@CGAC@E@E@GACAAAEAE@E@CAACCACAE@EDCBCBEBE@KAACCCCAECGAC@CAEAE@C@CBCBEBEAEACCCCECIAEBABCBABCFCBEDCCAAEAE@EAEAGCE@G@EAEAEAG@E@C@EBEDEBEAAAAAEAE@E@E@CBCA@CCCABABCBEDE@C@C@E@C@EBG@CACAACBEBACACAC@CBC@EBE@CAC@AACBEDC@CAEAG@C@EACACBGBCACCCCCCACCACEAE@A@CCACCECACECCCGEACCCAC@EBCBABCACAC@E@CAC@ECAE@EDEBAACAGBEBCACBEBE@EBE@EA@C@CECE@EAA@EDABCBABA@@BA@CB@@A@@D@BABAB@B@BA@ABCB@@@BAB@@ADAB@@ABA@C@E@CAGAA@C@A@G@ABC@CDCBCB@BEDABADA@AB@B@B@D@B@DADAD@BAB@B@@BD@@DBDBDB@BB@BBBBDDBBBBBB@B@B@DAD@BABADAB@BA@AB@BAB@BB@@B@BBBAB@B@BABA@CBA@A@@D@@@D@B@D@D@BAB@DAB@DADADABABC@@@AB@BAB@D@F@F@B@H@D@B@BAD@D@B@B@B@@@BAH@FAF@H@FBF@D@@@DBDBFDF@D@D@FAHAD@FADAF@FADAFAD@F@D@DBBJFFDFBFDDDDDB@HDHDHBFDFBDBFDFFHFJHFDFFFDFFFDFFHDFFFDFDHDDDFFFDFDFDFFHFHDFFFFFFJFFFHDFDFDFFFDFDDFHDFDFDHFFDFDFFDDFBFDDDJDĔŎV\\¢ŦFT@@Z¢@@@@B@F@RBH@LAN@dAV@HAF@HCJA|Q`IŽE”GŽG K`ABAL@H@D@HBrBN@D@J@N@NAFAJ@H@D@D@DBDBHDB@DBD@JDNDHBFBB@DBNDHBLDDBJDJBNFB@LDJDDBD@DBBBB@JDJDDBVFHDJBHDNDdLJDLBBB@@@B@BABA@C@ABCB@@@B@D@D@D@F@BAB@@AB@@@BDB@@@B@@EBABB@A@BB@@B@@B@B@@@B@@@B@BA@AB@B@D@@BBB@BB@@DA@@B@BBDBBB@DBD@@B@FBB@DAFAD@@@B@@@@B@@ABAD@@@@BD@@@BCD@@@B@B@JBB@@BBBB@B@@AD@BAB@B@B@@@B@@BBB@B@@BBB@@@D@B@B@B@BBBFHBDDDB@BBAB@BAB@B@B@@DBDDJDDB@@BBBBBBDBDDF@BB@@A@@@AB@@B@@BD@B@FD@BF@@@BBBB@@BFBBB@@B@B@@AB@@BB@BB@RBJDB@JBD@FBHBL@FBL@F@LBFBD@RBLBD@H@DAB@B@F@BBD@\\@H@J@D@N@F@F@@BB@D@BA@@BBB@D@BBD@B@BB@@B@B@B@D@B@BBBBBBBB@@FBD@B@FDB@B@B@B@FCB@BAB@@BD@FDB@B@B@HAJANGD@D@J@B@BA@@BA@A@AB@@AB@@@DAJBBAB@B@TKJCDAFA@A@ABC@CBABADABA@C@A@C@AAAAA@AAABA@AFIFGLO@@@CFG@AFE@@BA@MBE@EAE@E@ABCBABABAB@B@N@RAN@H@TAD@RCD@PAF@TEFAFAFAPCPCDALCHAFAD@D@VAF@DAHAFADAFCBCBA@ABCAG@E@C@A@ABA@@B@BAH@D@F@JA@@B@@@J@JARBJAP@F@FANADALAF@D@D@VBJBLBHBD@J@P@VAH@FANAJ@PCHAHATEHCREHCFCLEFANIHCDCHCFANEHAJEJCFCHCJCLCLEFCPEBABA@@VGXGDBDAF@FAD@L@PADBb@L@NAF@H@FAX@P@TAPAJ@F@J@H@L@J@DAPAJAJAB@PAJ@RBD@D@DAJAD@B@D@DDFDFDBBDDFBFBFBF@HBFBFBXHB@@@HDHFJDLDLDF@DBF@FBH@J@F@TBJ@L@L@D@B@D@F@B@LAH@LAFAB@HADAB@@@@@B@DAB@@@BAB@DAH@FAFAD@DAJ@D@FAFAH@FA@@PCTAHAZCFANATARCB@PANCVATCfGbELAÂ@FAFBHATBDAH@D@F@R@F@RANBH@LAF@JBF@D@V@V@N@H@P@@ABE@ABCBEBC@A@CAC@CAI@C@A@A@@AA@C@A@C@AAAAC@AAA@CAM@A@@AE@A@G@G@CAGAECIACAEAA@A@K@G@G@A@IAIAG@EAK@AAC@CACAA@A@@IIACCCA@@AA@@AAAAA@AAA@AB@@AD@BAD@L@@@@AAEAA@A@A@@BC@A@A@A@ACC@AAA@A@CBC@@AA@ACA@@AA@@@A@CBE@CBA@ABADCB@@A@@@A@A@ABC@ADGDGBEB@@ABAH@DADABABEDEBCBADCJCDAB@BABA@A@@AE@@JK@CBA@AAA@@BA@@BABA@@@ABABABABCBABA@@@A@A@@A@@A@@BAB@@AB@B@@ABE@@B@BAB@NGHABAF@F@HBFBFBDBFBD@D@L@B@DA@@@A@GBA@@DGBCBCJGFCBADADAB@F@@@BABABCFGBCBADABAFAFADAD@D@HAD@HAFAFAB@F@DAHBB@BADABAFCDAH@H@F@D@FAB@DABA@A@@BA@AD@FCB@D@B@BAD@BAB@BA@@B@FA@@FCDADBB@B@B@DAB@F@H@NAHBH@H@@@B@B@B@@A@@@AACEKA@@A@ACCACIQGMGOAAACA@@A@A@A@ABA@AFABAB@BAB@@A@A@@@AAACCOQAAACAA@C@C@@DGDEDE@@@ABADCFA@@DAD@B@B@DADAB@D@BABABAB@@@B@@BBBB@B@J@F@D@@@BAFCDA@@BA@C@AFCBADABCBA@@H@B@HBD@F@D@B@BBF@B@@@D@@@B@@AHCB@D@B@D@@@B@@BB@DDB@J@BAB@DABA@ABA@@BAB@BA@@B@D@FBD@B@B@B@HCDABABAB@@@J@B@D@B@B@B@@@B@BEFEBA@CBA@C@@BAF@DBFBDBBBLF@BBBB@B@B@D@BAF@B@FBB@B@B@DCBCB@@ABCB@BABADA@@B@BA@ABAB@D@B@D@DAD@DAD@@@B@DCLGBAH@B@B@B@BAFCDCFEBA@@B@@@F@D@FBB@F@B@DBB@B@BBFFDDBBHFB@DBB@B@BBBBFDFD@BB@B@B@DADCDAB@H@DAD@D@D@D@B@FEDAB@F@B@F@B@FABBDBBBBBBBF@DBF@J@H@DAB@BAB@@@B@B@@@BBBDB@@B@@BB@@BBB@@BB@FBDBDBBBB@D@D@JBBBD@B@B@B@@ABA@@B@FE@ABA@ADCBAHE@A@@AAAAAA@A@C@G@C@E@AB@BAB@B@BABABABABABCBAHAFABABABABC@@B@D@B@DADCDAB@BBDLBBABJADE@Ib}ZQV]tSv_Ša~M`eZMDmfgpm‚_pYžMhU€{dsj]º¹`oœGHnGl[pDŒCjMVOKMFkNW^ybOjT”DlQRWpgzYtGŒ`‚@dQ^i`aZQfQzIšY|{@MAuFY^]lc¶]€T†^fbF@WLSN@LBBBA^ONELGJGCMIM@WEQ@@AEQQA@@@A@A@AA@@A@A@AA@@A@A@@@@@A@@A@AA@@@AA@@@A@@AAA@AA@A@@A@@@@A@@AA@@AAA@@@AA@AAA@@"],"encodeOffsets":[[98989,39321]]}}],"UTF8Encoding":true});})); -------------------------------------------------------------------------------- /app/models.py: -------------------------------------------------------------------------------- 1 | #-*- coding:utf-8 -*- 2 | # author:Agam 3 | # datetime:2018-11-05 4 | from .apps import db 5 | 6 | class client(db.Model): 7 | __tablename__ = 'client' 8 | 9 | client_id = db.Column(db.Integer, primary_key=True) 10 | client_name = db.Column(db.String(100)) 11 | client_addre = db.Column(db.String(100)) 12 | client_phone = db.Column(db.String(100)) 13 | client_credit = db.Column(db.Integer) 14 | 15 | 16 | class duty(db.Model): 17 | __tablename__ = 'duty' 18 | 19 | duty_id = db.Column(db.Integer, primary_key=True) 20 | duty_name = db.Column(db.String(100), unique=True) 21 | duty_addtime = db.Column(db.DateTime, index=True) 22 | duty_is_true = db.Column(db.Integer) 23 | 24 | 25 | class goods(db.Model): 26 | __tablename__ = 'goods' 27 | 28 | goods_id = db.Column(db.Integer, primary_key=True) 29 | goods_name = db.Column(db.String(100), unique=True) 30 | goods_price = db.Column(db.String(100)) 31 | goods_intro = db.Column(db.String(255)) 32 | 33 | 34 | class inwarehouse(db.Model): 35 | __tablename__ = 'inwarehouse' 36 | 37 | inwarehouse_id = db.Column(db.Integer, primary_key=True) 38 | inwarehouse_count = db.Column(db.Integer) 39 | inwarehouse_price = db.Column(db.String(100)) 40 | inwarehouse_addtime = db.Column(db.DateTime, index=True) 41 | inwarehouse_goods = db.Column(db.String(100)) 42 | inwarehouse_supplier = db.Column(db.String(100)) 43 | inwarehouse_user_name = db.Column(db.String(100)) 44 | inwarehouse_num = db.Column(db.ForeignKey('purchase.purchase_num'), index=True) 45 | 46 | purchase = db.relationship('Purchase', primaryjoin='inwarehouse.inwarehouse_num == Purchase.purchase_num', backref='inwarehouses') 47 | 48 | 49 | class power(db.Model): 50 | __tablename__ = 'power' 51 | 52 | power_id = db.Column(db.Integer, primary_key=True, index=True) 53 | power_name = db.Column(db.String(100), unique=True) 54 | power_addtime = db.Column(db.DateTime, index=True) 55 | 56 | 57 | class Purchase(db.Model): 58 | __tablename__ = 'purchase' 59 | 60 | purchase_id = db.Column(db.Integer, primary_key=True) 61 | purchase_num = db.Column(db.String(100), unique=True) 62 | purchase_count = db.Column(db.Integer) 63 | purchase_price = db.Column(db.String(100)) 64 | purchase_addtime = db.Column(db.DateTime, index=True) 65 | purchase_goods = db.Column(db.ForeignKey('goods.goods_name'), index=True) 66 | purchase_supplier = db.Column(db.ForeignKey('supplier.supplier_name'), index=True) 67 | purchase_user_name = db.Column(db.ForeignKey('user.user_name'), index=True) 68 | 69 | good = db.relationship('goods', primaryjoin='Purchase.purchase_goods == goods.goods_name', backref='purchases') 70 | supplier = db.relationship('supplier', primaryjoin='Purchase.purchase_supplier == supplier.supplier_name', backref='purchases') 71 | user = db.relationship('User', primaryjoin='Purchase.purchase_user_name == User.user_name', backref='purchases') 72 | 73 | 74 | 75 | 76 | class returngoods(db.Model): 77 | __tablename__ = 'returngoods' 78 | 79 | returngoods_id = db.Column(db.Integer, primary_key=True) 80 | returngoods_count = db.Column(db.Integer) 81 | returngoods_price = db.Column(db.String(100)) 82 | returngoods_addtime = db.Column(db.DateTime, index=True) 83 | returngoods_goods = db.Column(db.String(100)) 84 | returngoods_supplier = db.Column(db.String(100)) 85 | returngoods_user_name = db.Column(db.String(100)) 86 | returngoods_num = db.Column(db.ForeignKey('purchase.purchase_num'), index=True) 87 | 88 | purchase = db.relationship('Purchase', primaryjoin='returngoods.returngoods_num == Purchase.purchase_num', backref='returngoods') 89 | 90 | 91 | class Salary(db.Model): 92 | __tablename__ = 'salary' 93 | 94 | salary_id = db.Column(db.Integer, primary_key=True) 95 | salary_base = db.Column(db.Integer) 96 | salary_grade = db.Column(db.Integer) 97 | salary_subsidy = db.Column(db.Integer) 98 | salary_other = db.Column(db.Integer) 99 | 100 | 101 | class sales(db.Model): 102 | __tablename__ = 'sales' 103 | 104 | sales_id = db.Column(db.Integer, primary_key=True) 105 | sales_num = db.Column(db.String(100), unique=True) 106 | sales_count = db.Column(db.Integer) 107 | sales_price = db.Column(db.String(100)) 108 | sales_addtime = db.Column(db.DateTime, index=True) 109 | sales_user_name = db.Column(db.ForeignKey('user.user_name'), index=True) 110 | sales_client_id = db.Column(db.ForeignKey('client.client_id'), index=True) 111 | sales_goods_name = db.Column(db.ForeignKey('goods.goods_name'), index=True) 112 | 113 | sales_client = db.relationship('client', primaryjoin='sales.sales_client_id == client.client_id', backref='sales') 114 | good = db.relationship('goods', primaryjoin='sales.sales_goods_name == goods.goods_name', backref='sales') 115 | user = db.relationship('User', primaryjoin='sales.sales_user_name == User.user_name', backref='sales') 116 | 117 | 118 | class sealreturngoods(db.Model): 119 | __tablename__ = 'sealreturngoods' 120 | 121 | sealreturngoods_id = db.Column(db.Integer, primary_key=True) 122 | sealreturngoods_count = db.Column(db.Integer) 123 | sealreturngoods_price = db.Column(db.String(100)) 124 | sealreturngoods_addtime = db.Column(db.DateTime, index=True) 125 | sealreturngoods_goods = db.Column(db.String(100)) 126 | sealreturngoods_supplier = db.Column(db.String(100)) 127 | sealreturngoods_user_name = db.Column(db.String(100)) 128 | sealreturngoods_num = db.Column(db.ForeignKey('sales.sales_num'), index=True) 129 | 130 | sale = db.relationship('sales', primaryjoin='sealreturngoods.sealreturngoods_num == sales.sales_num', backref='sealreturngoods') 131 | 132 | 133 | class section(db.Model): 134 | __tablename__ = 'section' 135 | 136 | section_id = db.Column(db.Integer, primary_key=True) 137 | section_name = db.Column(db.String(100), unique=True) 138 | section_addtime = db.Column(db.DateTime, index=True) 139 | section_is_true = db.Column(db.Integer) 140 | 141 | 142 | class stock(db.Model): 143 | __tablename__ = 'stock' 144 | 145 | stock_id = db.Column(db.Integer, primary_key=True) 146 | stock_count = db.Column(db.Integer) 147 | stock_price = db.Column(db.String(100)) 148 | stock_addtime = db.Column(db.DateTime, index=True) 149 | stock_goods = db.Column(db.String(100)) 150 | stock_supplier = db.Column(db.String(100)) 151 | stock_user_name = db.Column(db.String(100)) 152 | stock_num = db.Column(db.ForeignKey('sales.sales_num'), index=True) 153 | 154 | sale = db.relationship('sales', primaryjoin='stock.stock_num == sales.sales_num', backref='stocks') 155 | 156 | 157 | class supplier(db.Model): 158 | __tablename__ = 'supplier' 159 | 160 | supplier_id = db.Column(db.Integer, primary_key=True) 161 | supplier_name = db.Column(db.String(100), unique=True) 162 | supplier_addre = db.Column(db.String(100)) 163 | supplier_credit = db.Column(db.Integer) 164 | 165 | 166 | class User(db.Model): 167 | __tablename__ = 'user' 168 | 169 | user_id = db.Column(db.Integer, primary_key=True) 170 | user_count = db.Column(db.String(100), unique=True) 171 | user_name = db.Column(db.String(100), unique=True) 172 | user_sex = db.Column(db.String(100)) 173 | user_pwd = db.Column(db.String(100)) 174 | user_mail = db.Column(db.String(100)) 175 | user_phone = db.Column(db.String(100)) 176 | user_addtime = db.Column(db.DateTime, index=True) 177 | user_photo = db.Column(db.String(100)) 178 | user_ispass = db.Column(db.Integer) 179 | user_section = db.Column(db.ForeignKey('section.section_name'), index=True) 180 | user_duty = db.Column(db.ForeignKey('duty.duty_name'), index=True) 181 | user_power = db.Column(db.ForeignKey('power.power_name'), index=True) 182 | user_salary = db.Column(db.ForeignKey('salary.salary_id'), index=True) 183 | 184 | duty = db.relationship('duty', primaryjoin='User.user_duty == duty.duty_name', backref='users') 185 | power = db.relationship('power', primaryjoin='User.user_power == power.power_name', backref='users') 186 | salary = db.relationship('Salary', primaryjoin='User.user_salary == Salary.salary_id', backref='users') 187 | section = db.relationship('section', primaryjoin='User.user_section == section.section_name', backref='users') 188 | 189 | def check_pwd(self,pwd): 190 | from werkzeug.security import check_password_hash 191 | return check_password_hash(self.user_pwd,pwd) 192 | 193 | 194 | class warehouse(db.Model): 195 | __tablename__ = 'warehouse' 196 | 197 | warehouse_id = db.Column(db.Integer, primary_key=True) 198 | warehouse_goods_num = db.Column(db.Integer) 199 | warehouse_goods_name = db.Column(db.ForeignKey('goods.goods_name'), index=True) 200 | warehouse_supplier_name = db.Column(db.ForeignKey('supplier.supplier_name'), index=True) 201 | 202 | good = db.relationship('goods', primaryjoin='warehouse.warehouse_goods_name == goods.goods_name', backref='warehouses') 203 | supplier = db.relationship('supplier', primaryjoin='warehouse.warehouse_supplier_name == supplier.supplier_name', backref='warehouses') 204 | -------------------------------------------------------------------------------- /app/static/404/404.js: -------------------------------------------------------------------------------- 1 | /** 2 | * The stars in our starfield! 3 | * Stars coordinate system is relative to the CENTER of the canvas 4 | * @param {number} x 5 | * @param {number} y 6 | */ 7 | var Star = function(x, y, maxSpeed) { 8 | this.x = x; 9 | this.y = y; 10 | this.slope = y / x; // This only works because our origin is always (0,0) 11 | this.opacity = 0; 12 | this.speed = Math.max(Math.random() * maxSpeed, 1); 13 | }; 14 | 15 | /** 16 | * Compute the distance of this star relative to any other point in space. 17 | * 18 | * @param {int} originX 19 | * @param {int} originY 20 | * 21 | * @return {float} The distance of this star to the given origin 22 | */ 23 | Star.prototype.distanceTo = function(originX, originY) { 24 | return Math.sqrt(Math.pow(originX - this.x, 2) + Math.pow(originY - this.y, 2)); 25 | }; 26 | 27 | /** 28 | * Reinitializes this star's attributes, without re-creating it 29 | * 30 | * @param {number} x 31 | * @param {number} y 32 | * 33 | * @return {Star} this star 34 | */ 35 | Star.prototype.resetPosition = function(x, y, maxSpeed) { 36 | Star.apply(this, arguments); 37 | return this; 38 | }; 39 | 40 | /** 41 | * The BigBang factory creates stars (Should be called StarFactory, but that is 42 | * a WAY LESS COOL NAME! 43 | * @type {Object} 44 | */ 45 | var BigBang = { 46 | /** 47 | * Returns a random star within a region of the space. 48 | * 49 | * @param {number} minX minimum X coordinate of the region 50 | * @param {number} minY minimum Y coordinate of the region 51 | * @param {number} maxX maximum X coordinate of the region 52 | * @param {number} maxY maximum Y coordinate of the region 53 | * 54 | * @return {Star} The random star 55 | */ 56 | getRandomStar: function(minX, minY, maxX, maxY, maxSpeed) { 57 | var coords = BigBang.getRandomPosition(minX, minY, maxX, maxY); 58 | return new Star(coords.x, coords.y, maxSpeed); 59 | }, 60 | 61 | /** 62 | * Gets a random (x,y) position within a bounding box 63 | * 64 | * 65 | * @param {number} minX minimum X coordinate of the region 66 | * @param {number} minY minimum Y coordinate of the region 67 | * @param {number} maxX maximum X coordinate of the region 68 | * @param {number} maxY maximum Y coordinate of the region 69 | * 70 | * @return {Object} An object with random {x, y} positions 71 | */ 72 | getRandomPosition: function(minX, minY, maxX, maxY) { 73 | return { 74 | x: Math.floor((Math.random() * maxX) + minX), 75 | y: Math.floor((Math.random() * maxY) + minY) 76 | }; 77 | } 78 | }; 79 | 80 | /** 81 | * Constructor function of our starfield. This just prepares the DOM nodes where 82 | * the scene will be rendered. 83 | * 84 | * @param {string} canvasId The DOM Id of the
containing a tag 85 | */ 86 | var StarField = function(containerId) { 87 | this.container = document.getElementById(containerId); 88 | this.canvasElem = this.container.getElementsByTagName('canvas')[0]; 89 | this.canvas = this.canvasElem.getContext('2d'); 90 | 91 | this.width = this.container.offsetWidth; 92 | this.height = this.container.offsetHeight; 93 | 94 | this.starField = []; 95 | }; 96 | 97 | /** 98 | * Updates the properties for every star for the next frame to be rendered 99 | */ 100 | StarField.prototype._updateStarField = function() { 101 | var i, 102 | star, 103 | randomLoc, 104 | increment; 105 | 106 | for (i = 0; i < this.numStars; i++) { 107 | star = this.starField[i]; 108 | 109 | increment = Math.min(star.speed, Math.abs(star.speed / star.slope)); 110 | star.x += (star.x > 0) ? increment : -increment; 111 | star.y = star.slope * star.x; 112 | 113 | star.opacity += star.speed / 100; 114 | 115 | // Recycle star obj if it goes out of the frame 116 | if ((Math.abs(star.x) > this.width / 2) || 117 | (Math.abs(star.y) > this.height / 2)) { 118 | //randomLoc = BigBang.getRandomPosition( 119 | // -this.width / 2, -this.height / 2, 120 | // this.width, this.height 121 | //); 122 | randomLoc = BigBang.getRandomPosition( 123 | -this.width / 10, -this.height / 10, 124 | this.width / 5, this.height / 5 125 | ); 126 | star.resetPosition(randomLoc.x, randomLoc.y, this.maxStarSpeed); 127 | } 128 | } 129 | }; 130 | 131 | /** 132 | * Renders the whole starfield (background + stars) 133 | * This method could be made more efficient by just blipping each star, 134 | * and not redrawing the whole frame 135 | */ 136 | StarField.prototype._renderStarField = function() { 137 | var i, 138 | star; 139 | // Background 140 | this.canvas.fillStyle = "rgba(0, 0, 0, .5)"; 141 | this.canvas.fillRect(0, 0, this.width, this.height); 142 | // Stars 143 | for (i = 0; i < this.numStars; i++) { 144 | star = this.starField[i]; 145 | this.canvas.fillStyle = "rgba(188, 213, 236, " + star.opacity + ")"; 146 | this.canvas.fillRect( 147 | star.x + this.width / 2, 148 | star.y + this.height / 2, 149 | 2, 2); 150 | } 151 | }; 152 | 153 | /** 154 | * Function that handles the animation of each frame. Update the starfield 155 | * positions and re-render 156 | */ 157 | StarField.prototype._renderFrame = function(elapsedTime) { 158 | var timeSinceLastFrame = elapsedTime - (this.prevFrameTime || 0); 159 | 160 | window.requestAnimationFrame(this._renderFrame.bind(this)); 161 | 162 | // Skip frames unless at least 30ms have passed since the last one 163 | // (Cap to ~30fps) 164 | if (timeSinceLastFrame >= 30 || !this.prevFrameTime) { 165 | this.prevFrameTime = elapsedTime; 166 | this._updateStarField(); 167 | this._renderStarField(); 168 | } 169 | }; 170 | 171 | /** 172 | * Makes sure that the canvas size fits the size of its container 173 | */ 174 | StarField.prototype._adjustCanvasSize = function(width, height) { 175 | // Set the canvas size to match the container ID (and cache values) 176 | this.width = this.canvasElem.width = width || this.container.offsetWidth; 177 | this.height = this.canvasElem.height = height || this.container.offsetHeight; 178 | }; 179 | 180 | /** 181 | * This listener compares the old container size with the new one, and caches 182 | * the new values. 183 | */ 184 | StarField.prototype._watchCanvasSize = function(elapsedTime) { 185 | var timeSinceLastCheck = elapsedTime - (this.prevCheckTime || 0), 186 | width, 187 | height; 188 | 189 | window.requestAnimationFrame(this._watchCanvasSize.bind(this)); 190 | 191 | // Skip frames unless at least 333ms have passed since the last check 192 | // (Cap to ~3fps) 193 | if (timeSinceLastCheck >= 333 || !this.prevCheckTime) { 194 | this.prevCheckTime = elapsedTime; 195 | width = this.container.offsetWidth; 196 | height = this.container.offsetHeight; 197 | if (this.oldWidth !== width || this.oldHeight !== height) { 198 | this.oldWidth = width; 199 | this.oldHeight = height; 200 | this._adjustCanvasSize(width, height); 201 | } 202 | } 203 | }; 204 | 205 | /** 206 | * Initializes the scene by resizing the canvas to the appropiate value, and 207 | * sets up the main loop. 208 | * @param {int} numStars Number of stars in our starfield 209 | */ 210 | StarField.prototype._initScene = function(numStars) { 211 | var i; 212 | for (i = 0; i < this.numStars; i++) { 213 | this.starField.push( 214 | BigBang.getRandomStar(-this.width / 2, -this.height / 2, this.width, this.height, this.maxStarSpeed) 215 | ); 216 | } 217 | 218 | // Intervals not stored because I don't plan to detach them later... 219 | window.requestAnimationFrame(this._renderFrame.bind(this)); 220 | window.requestAnimationFrame(this._watchCanvasSize.bind(this)); 221 | }; 222 | 223 | /** 224 | * Kicks off everything! 225 | * @param {int} numStars The number of stars to render 226 | * @param {int} maxStarSpeed Maximum speed of the stars (pixels / frame) 227 | */ 228 | StarField.prototype.render = function(numStars, maxStarSpeed) { 229 | this.numStars = numStars || 100; 230 | this.maxStarSpeed = maxStarSpeed || 3; 231 | 232 | this._initScene(this.numStars); 233 | }; 234 | 235 | /** 236 | * requestAnimationFrame shim layer with setTimeout fallback 237 | * @see http://paulirish.com/2011/requestanimationframe-for-smart-animating 238 | */ 239 | (function() { 240 | var lastTime = 0; 241 | var vendors = ['ms', 'moz', 'webkit', 'o']; 242 | for(var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) { 243 | window.requestAnimationFrame = window[vendors[x]+'RequestAnimationFrame']; 244 | window.cancelAnimationFrame = 245 | window[vendors[x]+'CancelAnimationFrame'] || window[vendors[x]+'CancelRequestAnimationFrame']; 246 | } 247 | 248 | if (!window.requestAnimationFrame) 249 | window.requestAnimationFrame = function(callback, element) { 250 | var currTime = new Date().getTime(); 251 | var timeToCall = Math.max(0, 16 - (currTime - lastTime)); 252 | var id = window.setTimeout(function() { callback(currTime + timeToCall); }, 253 | timeToCall); 254 | lastTime = currTime + timeToCall; 255 | return id; 256 | }; 257 | 258 | if (!window.cancelAnimationFrame) 259 | window.cancelAnimationFrame = function(id) { 260 | clearTimeout(id); 261 | }; 262 | }()); 263 | 264 | // Kick off! 265 | var starField = new StarField('fullScreen').render(333, 3); -------------------------------------------------------------------------------- /app/templates/admin/cate.html: -------------------------------------------------------------------------------- 1 | {% extends "admin/bases.html" %} 2 | 3 | 4 | {% block content %} 5 |
6 |
7 |
8 | 9 | 10 |
11 |
12 |
每个tr 上有两个属性 cate-id='1' 当前分类id fid='0' 父级id ,顶级分类为 0,有子分类的前面加收缩图标
13 | 14 | 15 | 共有数据:88 条 16 | 17 | 18 | 19 | 20 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 34 | 35 | 39 | 40 | 43 | 48 | 49 | 50 | 53 | 54 | 59 | 60 | 63 | 68 | 69 | 70 | 73 | 74 | 78 | 79 | 82 | 87 | 88 | 89 | 92 | 93 | 97 | 98 | 101 | 106 | 107 | 108 | 111 | 112 | 116 | 117 | 120 | 125 | 126 | 127 | 130 | 131 | 135 | 136 | 139 | 144 | 145 | 146 | 149 | 150 | 154 | 155 | 158 | 163 | 164 | 165 |
21 |
22 |
ID栏目名排序状态操作
32 |
33 |
1 36 | 37 | 产品管理 38 | 41 | 42 | 44 | 45 | 46 | 47 |
51 |
52 |
2 55 |      56 | 57 | 产品列表 58 | 61 | 62 | 64 | 65 | 66 | 67 |
71 |
72 |
3 75 |           76 | ├产品列表 77 | 80 | 81 | 83 | 84 | 85 | 86 |
90 |
91 |
4 94 |           95 | ├产品列表 96 | 99 | 100 | 102 | 103 | 104 | 105 |
109 |
110 |
5 113 | 114 | 新闻 115 | 118 | 119 | 121 | 122 | 123 | 124 |
128 |
129 |
6 132 |      133 | ├国内新闻 134 | 137 | 138 | 140 | 141 | 142 | 143 |
147 |
148 |
7 151 |      152 | ├国外新闻 153 | 156 | 157 | 159 | 160 | 161 | 162 |
166 |
167 | 170 | 200 | 206 | {% endblock %} 207 | 208 | -------------------------------------------------------------------------------- /app/templates/admin/index.html: -------------------------------------------------------------------------------- 1 | {% extends "admin/bases.html" %} 2 | 3 | 4 | {% block content %} 5 | 6 | 7 |
8 | 9 |
10 | 11 |
12 | 13 | 23 | 24 |
25 | 26 | 27 | 28 |
29 |
30 | 271 |
272 |
273 | 274 |
275 |
276 |
    277 |
  • 我的工作平台
  • 278 |
279 |
280 |
281 | 282 |
283 |
284 |
285 |
286 |
287 | 288 | 291 | 292 | 293 | 294 | 295 | 296 | {% endblock %} 297 | -------------------------------------------------------------------------------- /app/static/assets/js/1d9bdb25272dce51d8a2d7492233728e.js: -------------------------------------------------------------------------------- 1 | (function (root, factory) {if (typeof define === 'function' && define.amd) {define(['exports', 'echarts'], factory);} else if (typeof exports === 'object' && typeof exports.nodeName !== 'string') {factory(exports, require('echarts'));} else {factory({}, root.echarts);}}(this, function (exports, echarts) {var log = function (msg) {if (typeof console !== 'undefined') {console && console.error && console.error(msg);}};if (!echarts) {log('ECharts is not Loaded');return;}if (!echarts.registerMap) {log('ECharts Map is not loaded');return;}echarts.registerMap('桂平市', {"type":"FeatureCollection","features":[{"type":"Feature","id":"450881","properties":{"name":"桂平市","cp":[110.079379,23.394325],"childNum":1},"geometry":{"type":"Polygon","coordinates":["@@@@@@@@@BB@@B@@@@@B@@BB@@@B@@BB@@@@@BA@B@@B@@@B@@BB@@@@BB@@B@@@@@B@B@B@BBB@@@BB@@B@@@@@@@B@BBB@@B@@BB@@@@B@@BB@@@@@B@@@B@@@@AB@BA@@@B@@@BD@@@@@BB@@@@BA@B@@B@B@B@B@@@B@@@@AB@@B@A@@B@BBB@@B@@BBBB@@B@B@@@@@B@B@BBBC@ABA@@@A@@@@@A@A@@BA@@@AAA@A@@@@@@@A@@B@AABA@@@A@@@@BA@@@ABADA@ABCB@@A@@@A@@@A@@@@@A@@@@BA@@BA@ABA@@@A@@BAB@@@BA@@B@@A@@B@@AB@@@@@BABAB@@@@@BA@@@@B@@@BA@ABA@AB@@A@@@A@@@ADA@@@A@@@ABC@CA@B@AA@@B@@ABA@@BB@@B@@@@AB@BA@@BBB@B@@@@AB@DA@@B@BAB@B@@@DAB@@@BCB@B@BAB@@@B@@@B@@@B@@@BAB@@A@@@AB@@@BAB@@A@AB@@@B@D@DBB@BBBB@C@@B@@AB@@AB@@@@AAA@@@AB@BA@@F@B@D@@@D@B@D@@A@@B@@BD@@@B@BDBBBB@@BB@@@B@@@@BA@@B@@AB@B@B@@@@AB@@@BA@A@@BA@@@@BAB@@A@@@A@A@@@A@@@A@A@@@@@AA@@@@AA@@A@@@@A@@ABA@@AAB@@AB@@AB@@@@A@AAA@@B@@@BA@@@@@A@@D@@A@@A@@A@@@A@@BC@@@A@@BCB@@A@A@@@@B@B@D@BA@@@A@ABA@@AA@A@A@@@A@@@C@@@A@ACC@A@@AC@@@AA@@@@@AA@@A@@@AA@@A@@A@@@C@AA@AA@AAAB@@AB@BAD@@@BABA@@@AB@@@B@D@BB@@B@@@B@@@@AB@@@B@FAB@@B@@@B@@B@@BB@@@DB@@B@@@B@B@@@@DB@@@BB@@@@B@AD@B@B@B@B@@BF@@@B@BB@B@B@@B@B@@B@@BB@@@B@@AB@B@FA@@D@@@@A@@B@BBBBBAB@@BB@@B@B@@@B@@B@@@@B@@B@@B@B@@AB@@@BA@@@ABA@@@@BAB@B@@@BBB@D@@@B@D@B@@@@@@@B@@@B@BBB@BBB@@BBB@B@@@@@B@@@@@B@@@BBF@B@@@B@B@BBDB@@B@@BB@BBB@B@BAB@@A@@BBB@B@BBDB@@B@@@AA@A@@@@@ABA@@@AA@@@@AB@@A@AB@BA@@@A@A@A@@AA@@B@@@AA@A@A@@@A@@@A@@A@@@A@@@@@@A@@A@@AA@AA@@BABABA@@@A@@AA@@@A@@AA@A@A@A@A@AA@ACA@@@AA@ABAB@@A@ABADAAC@@@A@@@AB@@A@A@@@AAA@A@A@@BA@@@A@@CAAA@@A@@CAA@A@@@A@@@A@@A@@@AA@CAA@@AA@A@CAA@@@A@C@A@AAA@AAA@A@@@AA@@A@@@A@@@ABC@@BAB@@@@@BAB@@@HB@@D@@@@@B@BA@@B@BB@A@@BA@@DA@@B@@ABE@A@ABA@A@AB@@A@@BA@@@A@@@@BA@@A@@@@@@@BA@B@@@@@@B@@@@@@A@@B@@@@@@B@@B@@@@@@A@@B@@@@@@B@@AB@@B@B@@@@@@A@@@@@@B@@@@@@@@AA@@A@@BA@@@@BB@@@@B@@A@@@@@A@A@ABEBG@@DC@@@A@A@A@@@@B@BBBBB@@@BA@@@@ACAAAA@@AA@@BABCBA@A@A@@@AC@A@@@AB@@A@@A@A@@BC@@@@AAC@A@A@AAAA@@@AA@BC@A@@@@BA@AFAFAB@F@JBJ@B@FBFAF@B@LCDABABCBC@C@C@A@C@C@AAAAE@CAA@@AA@A@A@ABA@ABABAD@DAHAF@BAD@@@B@B@FBB@B@BBFAD@FAB@B@BA@A@@@C@@@A@CAA@A@@@@@A@@@A@@@@B@@@@@AA@@@@B@@@@@@@@AA@A@@@@@@A@@B@@@@A@@@@AA@@@@@@@AA@@@BA@@A@A@@@@@@@A@@@@@@A@@@@@@@A@@@@@@@@@ABB@@@@@@@A@@@@A@@@@@@A@@A@BA@@@@@@@@B@@@@AA@@@B@@A@@A@@@@@A@@A@@@@@@B@@A@@DABA@@@@B@@ABABAB@@@BB@BBAD@@@@@B@DBBBB@B@@@B@@A@AAAAC@AAA@A@A@A@A@AB@BAB@BAB@BABA@AAC@CCE@@FC@ADE@C@@BAD@@@@@@A@@@A@@@A@@@@@A@@@@@@@@A@@@@@@A@@@A@A@A@@B@B@@A@@@@BA@@@AA@@@@@@@A@@@AAB@@@@@@@@@@@@A@@BB@@@@@A@@B@@@@A@@BAFC@@B@B@@@D@BBBBBD@@BA@@@@@@@@B@@A@@@@@A@A@@@@@@B@@A@@B@@@@@B@B@@@B@@@@A@CBA@@@A@@@A@A@AB@@@B@@A@@@@@A@AA@A@@@AA@@@@@ABC@A@@BA@AB@@@@@@C@@@AA@@@@A@@@A@C@C@@BABA@G@@AAAAA@AAAAAAAA@AAA@@@C@A@@AACCAA@@A@@@@@A@A@AA@@@A@AAC@@CAA@AA@A@A@@@A@A@A@ABA@@@A@@A@@C@@@@A@@@@@A@A@@@C@@AA@A@@@@@A@@@AB@@@@AABA@AAA@C@A@AAA@@B@@AB@@AB@@A@@AA@A@@@A@@BA@@AABA@A@A@AA@@@AA@@A@AC@A@@BA@A@@BA@@@@@@@ABA@@BA@@BA@A@A@@@@@A@A@@@A@@AA@AAA@AA@A@AA@AA@BAAAB@@AA@ABA@@A@@@@AA@@@A@@@@@A@A@@@@A@@@A@@@A@@@CA@@BA@@@C@@BA@A@A@A@@@@@C@@A@AA@@A@C@@@A@@@AAA@@@A@C@@C@A@@AAAAA@@@AAA@@@@@@A@@@A@@@@@A@@BA@@BA@@B@@@@@@A@A@@@ABA@@@@@A@@@@@@@A@@BA@ABC@@@AB@@@@@BADADA@@B@@A@@@@B@@B@@B@@@B@@@@B@@@D@@B@@B@@@@DB@@@@BC@@AA@@@A@AAA@@@@A@@@@@@A@A@AA@A@@@A@A@@@@@@@@@BABCBABABA@A@@@@@@BA@@@A@@@@A@@@AA@@@@@A@@@@@A@@AA@@A@A@@BAA@A@AB@@@@@@A@@BABABA@@@@B@@@@A@A@A@@A@@@@A@@AA@@@A@A@A@@@@A@@@@@ABA@A@@@A@@A@BA@@B@@AAA@@@A@@@AB@@A@@@@@A@@@AA@@A@A@@@AAA@A@@@A@@@A@@@@@A@@@@A@BA@@@A@@@@A@AA@A@@@A@@AA@@A@AA@@AB@@@BA@@@A@AB@@@@A@CBA@@B@B@BC@@AA@AAAA@@A@A@C@@A@@ABA@@BAB@@@@@@AA@@A@A@A@@AAA@@A@@@@A@@AA@@ABA@@A@@A@A@@A@BA@A@A@@AACA@@A@@@ABA@A@A@@AA@AAA@A@@@@A@@AA@AA@@BA@AA@@@@BABA@@@AB@AA@EBA@ABA@AAABA@@A@@A@@@AA@@AB@@@@A@A@@@AB@@A@A@@B@@@@A@@B@@@@A@@@@B@@@@@BA@A@A@A@@BC@@A@@A@@@@@AAAA@@A@A@A@@A@A@AA@@@AA@@@AB@A@@@@A@AB@@@@A@@@@AAA@@@A@ABA@@@AA@A@@@A@@@@@@A@@@@@A@@@@A@@A@@A@@@BAA@@A@@@@AA@@@A@AA@@@@@AABA@AAA@@@@AA@@AA@@@A@@@AA@@@@A@@@A@A@@@A@A@@BC@@DAAA@A@@AB@@A@@@A@@@CAA@@@@AAA@@@@A@@A@@@A@@@AAA@@@@AB@@@@A@@A@@@A@AA@@@AA@@A@CA@@@@B@B@@A@A@@@@BA@@B@A@@A@@A@@@@@A@AA@BA@AA@@@AB@@A@A@@B@@AB@@@B@@A@AC@@@BAB@@@BC@@BC@@@AA@@@@@A@@@@AB@@@@A@@@@BA@@@AB@@@@@BA@@@@@A@@@A@@@ABABA@@DA@@BA@A@A@AB@@A@@@A@@D@B@B@BA@@D@B@B@@@@AB@@@@@@CA@@@BA@@B@@@B@B@@@@@B@@@@@@@BAB@DAB@@A@@B@@@@@D@BBD@@@BA@@@A@@@@A@@@A@@A@@@AB@@@@@@AA@A@@@A@@A@@@@@A@@B@@@B@B@@@BB@@D@@A@ABAB@D@@@@@@@BB@@B@BA@@@AB@@@BB@@BB@@B@B@@@@AB@@@BA@@B@BBB@@BBAB@@@B@@@@A@@B@@@B@BB@@@@@@D@@@@ABA@@B@@@B@@AB@@@B@@@DBD@@@@@@AB@AAA@@A@A@@AABAAA@@@A@A@@@BB@BA@@@@B@@A@@BB@@@@B@@@B@AABA@@A@@@@AB@@@@A@A@@B@@@@A@@BA@@B@@@D@@@B@@ABA@A@@@A@@@@@A@@A@@A@@AA@@@@@AA@@@@@@ABABA@AB@@A@@@@AAA@@@@AB@@@@@AA@@@@@@AA@@@AAA@@@@@@AA@@A@@@AA@A@A@A@ACA@@C@@@A@@A@AA@@A@@@@@AA@AAAA@A@@A@@@@@@A@AAA@@BA@@AA@@BABA@@@@AA@@@@@A@@@AA@@@B@BABBBA@@@@@A@@BA@A@@@@@@@A@@@A@@BAA@@@ABA@@@@@A@@A@@A@A@A@@@A@A@@AA@A@@@@@AA@A@@@@@@BAB@@@B@@@@@@AA@@@@@@AB@A@@A@AAA@@BACA@AA@A@@A@@A@@@B@@@@@AAA@@@@A@@@A@@B@BA@@@@A@@A@@AAB@@A@A@@@@@AA@A@@@A@A@@@@@AA@@@A@AA@@A@@@@@AB@@@@A@AA@@@@@B@@BB@@BB@@@@@AA@@@@@@AA@@DA@A@ABAB@B@@@@@@@AA@@@@@A@@A@@@A@@BA@@A@@AABAA@@@A@@B@BA@@@A@@@@@@B@@@AAAA@A@AA@AA@@AA@A@@DA@@B@@@@@B@B@@@@AB@@@@B@@B@D@@@@@BA@A@A@A@@@@@@BB@@BBD@@A@@@A@@@@@@BB@@BA@@@C@A@@@A@@A@@A@@A@@@A@@AC@ABA@A@@@@AA@@@B@@A@@@@B@@A@@ABA@@AA@@@@ACA@@@@@@AA@AAA@@@@A@@@@@A@@@A@@AABA@A@@@C@AAA@@@ACA@@@@@A@AA@@@A@@@@@@AB@B@D@B@@@@@BBB@BCB@@@B@@@@@B@B@@@@@B@AA@@@A@ABAA@@AAA@A@A@A@A@@BC@A@@BA@A@AC@@A@@@@@@AA@@@AB@@@@C@AAA@@A@@@@@AA@@@A@@A@@AA@@@AA@@@@AA@A@@A@@@@A@A@@A@@A@@@@AB@@@AA@AAA@@@A@@@@@A@@@A@@@@A@@DE@A@@@A@@@A@A@@@AAAAC@A@@@A@@@AA@ACAAAA@@A@AAC@AB@AA@@@C@@@AA@@@A@@@AAA@@A@AA@@ABA@AA@@@@@@BA@@@A@@@@@@AAC@AAA@@A@@@A@@B@@@@A@A@A@@@@B@@@B@@@@AA@A@C@@@AB@@A@AB@@@A@@@@AA@@BA@@AA@@@A@A@@@@AA@A@ABA@@@A@@@@A@@@@@@A@A@@B@@AD@@@B@BA@@B@@AF@B@DA@A@@@@BA@@@@A@@@BABA@@@A@@A@@@@@@@@A@@@ADCB@@@B@@@@@@@AC@@@@A@@@@A@@B@@A@A@@AA@@AB@@@@@@@B@@@BA@@@@BAA@@AAAC@@BAB@@A@ABA@A@@@@A@@A@@@BA@AB@@@@@@@@A@@@A@A@A@@@@@@A@@A@A@@AAA@AB@@AB@@A@@B@@@@ABA@ABA@ABAA@BABA@@BA@@@A@@@@@@@A@@@@@AB@@@@A@@@A@@B@@@B@BC@@@A@A@@@A@@@@@@A@@A@@@@@@@@@@@@@A@@A@@AA@@A@@@@@@A@@@@@@@@@@@@A@@@@@@@@A@@@@@@@@@@@@AA@@@@@@@@@@@A@@@@@@@@@@@@@A@@@@@A@@@@@@@ABABA@A@@ACB@@A@AB@@A@@@AB@@A@@A@@AB@@A@@B@@A@CBA@AA@@@@AA@@A@A@@@A@A@@@@@A@AA@@@@@@CCA@@@A@@@@@AAA@AA@@AAA@A@AAA@@@@@@@A@@@CB@@@@@BBB@B@@@D@DBB@@B@BB@@@B@BB@@@B@@@@@BBB@@@BBB@@@@@@DCB@B@@@BAB@@@B@@ADAB@@AB@@@B@@@B@@@BA@AB@@@B@@ABCB@@@BAB@B@@@@A@A@CAA@@@@@A@EBC@A@A@CAA@A@@BA@@@A@AB@@@@AB@@CB@@@B@@AB@B@@A@C@AB@@A@@AA@@@@BAB@@AA@@@@AAAB@AAB@@@@A@@AA@A@A@@@@@A@A@@@ABA@@@C@@@A@@BA@A@@BA@@@@@A@@@A@@@A@@A@@A@@@@@@A@@A@@AA@@A@@A@A@A@@@@@@@CA@@@BA@ABAA@@AB@B@@AD@@C@@@@@@AB@@@@@A@@@A@@@BA@@B@@A@@@@AA@@A@C@AA@@ABA@@@AAA@@AA@@@@@AABAA@@@@AAA@@A@@@A@@@A@AB@@@A@@@@AB@@@A@@@@@A@@@@@@@@@@AB@@@@@@@A@@@A@@A@A@@@@@@@@ACAA@A@@@@BAA@@AA@AAA@@AA@@A@A@@A@@A@A@@AAAA@@BA@A@@@@BA@@@@B@@A@@@@@A@@@@@A@A@AB@@@@BB@A@B@@A@@@AB@@@@B@@@BA@@BB@@@@@B@@@BA@@@CA@A@B@BBB@@A@@@@BA@@AA@@A@A@AA@ABAD@@@B@@@B@B@@@B@@@D@@BB@B@B@@BBB@@@@B@@@B@@B@@B@@@B@@BD@@@B@@@@ABCBA@A@@@A@@BA@A@@@CDC@A@A@@@CB@B@@@B@@A@AB@B@@@BBB@@BB@@B@BD@@AD@@AA@@CD@@@BA@@B@BA@@B@@@BA@@B@@@B@@@@CB@B@@@B@@@@@@BA@@B@@B@@A@@@AD@@@B@@@@ABABA@@B@B@@A@A@@BA@@BBB@@@@B@@@@@BAB@@@@B@B@B@BAB@B@@@@B@BA@@B@@B@@BA@@@ABAB@@@B@@@BBBB@@@BA@@@A@A@A@@@AB@@@@AA@@@B@@ABA@A@AB@BA@BB@@B@B@@@@@@B@@ABCBA@@@@D@@@@@@@@A@A@@AA@@@A@@B@@@B@@BAB@@@B@@B@@@@A@@@AA@@AB@@@@@BB@@@@@@B@@@@@@B@@@@@@@@@@@@@@@@@@B@@BA@@@@@@@B@@@@@@@@C@@@A@@A@@@@A@B@@BC@A@@@@A@A@@ABA@@@@AA@@A@@@A@@@A@@DA@@@@@B@B@@B@@B@@@@D@@@@@@AA@@A@A@@@A@@AA@A@@@@A@@AA@@A@@@@@A@@@A@AA@A@@A@@@A@AAA@@@AA@@@@@A@@@CDA@@@A@@@BB@@B@A@@@@@@B@@@@@B@@@@@@@@A@@@@A@AA@@A@@@A@@@A@@BAA@BA@@A@@AA@@@AA@@@@@B@@@@A@@@AA@@@A@A@@@@AB@@@BA@@@@@@B@@C@@@@@A@@@A@@@@@@BB@@@@@@B@@A@@@A@CAA@ACCB@B@@@@A@@@@BA@@B@@A@@B@@@B@B@@@BB@A@A@A@@@@@AB@@@BA@A@A@@BA@@@ABA@@@A@BB@@ADA@@AA@AAA@@@CDA@@@AA@A@@AA@@@AA@@AAB@@AB@@@@A@@B@@@BA@A@A@CBA@@B@@@BA@A@@@AA@@@B@@@B@BBB@BB@@@BB@@@BAB@@@BBBAB@@@DAB@@A@C@A@@@@@A@@B@@AB@@@@B@@B@@@@A@@@A@A@@A@@@B@B@B@@@@BB@@@B@@A@@@@@@@@A@@@@@B@B@@@B@@B@@@@@@B@@@@@@AA@@@@A@@B@@@@ABA@@@BB@@A@BBAB@B@@@@A@@@@@@A@@@A@A@A@@A@@@@B@@@BA@A@@@AB@@A@@@BB@@ABAB@@AB@@@@AB@B@@@@AB@AA@@B@B@@@@@B@@@@@@@B@@@@@@@@@BB@@@@B@@@@@BA@@@@@A@@@A@@@A@@B@A@@@@@@A@@AA@@@@@A@@@@@@@BA@@@@A@A@@@@BA@@A@A@@@@A@@BA@@B@@@@@BA@A@@@B@@@@B@@@@@@A@@B@@@B@@@@AA@@A@@B@BA@@@@BB@@@@BA@@@A@@@A@@@A@@AA@@@@@@B@@@B@@AB@@A@@@B@@@@@@@@@@@@B@@AAA@@@@B@@C@@B@@A@@A@@AB@@@@@@@@@@@AA@@@@@@@A@@@@BA@@@A@@@A@@@@B@@B@B@@AB@@@@@A@@B@@@@@B@@@@@@@@@@A@B@@B@@@@A@@A@@@A@@A@@B@@@@@A@@A@A@@B@@@@@@@@B@@@AB@@B@@@@@@BB@@@@@@@@@A@@@@A@@A@@B@@A@@B@@@@@B@@A@@@BA@@@A@@@@@@@@A@@@@B@AA@A@AA@@AB@@@BB@@@@A@@BB@@@B@@B@@B@@@@@@A@@@@BA@@A@@BA@@@@A@@@A@@@@@@B@@AD@@A@@AAB@B@@@@@@AB@@@@AB@@BCAA@@@@A@@@@@@@@B@@@@@@AA@AA@@@@@@@ABA@@@A@@B@B@B@@@@A@@@@@A@@@@@A@@A@@AB@AAB@@A@AB@@@@@A@@A@@@A@@@@@B@@@@@@@@@AA@@@@BA@@@A@@@AA@@@@B@B@@@@@@@@A@@@B@@B@@@@@BA@B@@@@B@@@@A@@A@@@@A@@@A@@@@A@@@A@@B@@@@@@@@AAB@B@@@@@@@@@BA@@BB@@@@@@B@@@@A@AA@@@A@AA@@@A@@A@@AA@@@@A@@@@B@@A@A@@@@@@@@B@@@B@@@@@@@@@@A@@@@@@@@@@@@@@A@@@@A@@A@A@@A@@B@@@@@@@A@@@@@@@AA@@@@A@@B@@@B@A@@@A@@@@AA@@B@@@@@@@@B@@B@@@@@BB@@@@@A@@@@B@@AAA@@@A@@@A@@@A@@@@@@@A@AB@B@@A@@B@@A@@A@@@@A@@@BB@@@@A@@@@AA@@@@@@BB@@@@@@BA@@@@@@B@A@@AA@@@@@@AB@@A@@A@@@A@@@@@@B@@AA@@@@@A@@@AB@@A@@@@@AB@@@A@@A@@A@@B@@@@@B@@@@@@@@@AAA@@B@D@B@@AA@@@@A@A@A@@@@B@A@@A@@@@@@@AB@@B@@B@B@BA@A@@@@@@A@@@@A@@@@@A@@@@@@B@@@A@@@A@@@@A@A@@@@@@B@@@@AB@@@@A@@@@BABAB@@@B@@AB@@A@@@EF@@@@@@@B@@AB@@@@@@AB@B@@@DA@@B@@A@AD@@AB@B@@BB@B@@BB@BBD@@@BBD@@AD@@@B@@@BBF@BBD@BDBB@@B@@AB@@CBABEDA@@B@@C@A@A@A@ABA@@@@@@B@@@BBB@@B@B@B@DB@@@@@B@@@BA@@@A@A@@AA@A@A@C@A@@@AB@@@B@@@BBB@BB@@BB@F@@B@@@@@B@@C@@BAAA@@@@@EEA@@@@@@@@B@@@B@BBBDF@@@@@@ABA@AA@@@@@CAAACAA@@A@@@AB@@@@@BCB@BBBBBBFBBF@DB@BB@BB@B@BBB@D@BADAB@BABCFCDABCD@D@@K@@B@BA@@@ABA@AB@@@BC@A@CBE@AB@@@B@B@@@B@B@@@B@@@DBDC@@@A@@@@BAB@@AB@@A@A@A@C@A@@@AB@@@@ABBBA@@BA@AB@BABA@@@@BAB@BA@@@A@@@AA@@A@AB@BAB@@A@@BA@A@@B@@ABAB@@@@@B@@A@ADA@@@@@BB@@AB@B@@@B@@BB@@@@B@@B@@@@D@@B@BB@@@B@@@@@@@B@B@B@@BB@@BB@B@@@@@B@@B@B@@B@@@@@@@@B@@B@B@BDBD@B@@@B@B@@AB@@A@ABA@A@A@ABCB@@@@@BA@B@AB@@@B@@A@@BB@@@AB@D@HBD@BAB@B@DAD@@@@G@EAC@A@A@@@@@@D@B@@@@@B@@ABB@ALB`@AF@@@BA@@DABBB@@@B@BAB@BDF@B@@@@B@@@B@@OD@@@@B@A@@B@@A@@@AA@@@@AB@@CHE@@@@BB@@B@@A@@@@@@@@@B@@BA@@@@B@@B@@@@B@@@BB@AB@@B@@B@@AB@@@@RBD@@BJ@BL@H@DGBDH@@AB@@AB@@@@@BA@@@@@BHJX@FBB@AB@@@@@@@@@@B@B@@@@BAB@@B@@A@@B@@@@@@B@B@A@@B@@B@@@BBB@@BA@@B@B@@@@A@A@@@@@@BB@@@AB@@@@A@@@@@@B@@@@A@@@A@@@EHCD@@@B@@@BB@BBB@B@@@BB@@AB@@@B@@BB@@@B@@CB@B@B@B@B@@@@A@A@@@A@@B@@ABA@@@AA@@A@@@@BABAB@@A@@@AAA@A@AA@@AB@@A@@@@A@@@A@@A@@@@@A@@@@B@@@BA@@@CB@@@A@@@@@A@@A@C@CB@DBD@B@BBD@@@D@@@BA@A@@B@BAB@B@BA@CDAB@B@@@@@B@@A@ABABABA@A@ABA@@@@BAB@@A@@@AB@@ABC@@DABAB@B@@@B@@@B@@A@A@@@@FA@@@@@@@@@@B@@AB@B@BAB@B@@@B@@CBAB@@@@AA@@@AA@@@AA@@AAAAA@@A@A@ABAA@@AABA@A@AB@A@A@@AAABABABABCB@BA@@@@B@@@B@BA@@D@@@@A@AB@B@B@B@@B@@@@A@@@@@BBD@B@B@DA@@@ABA@A@C@@@@@AA@@@@@B@@AB@BA@@@AB@@A@AAA@A@@@@BAB@B@BA@ADAB@@CB@@@BAB@B@@@@BD@@@B@DA@BD@B@@DB@B@@A@@@CBAB@@A@A@@@A@@BC@A@@BEBA@C@@@A@@BABABA@A@A@AAAA@@A@@D@BABAB@@A@ACAB@@A@A@A@@BBB@BCBAB@@@@@DAB@@AB@@@BB@@@B@@@@@B@BA@@B@B@@@BA@@B@BB@@A@@@@@@@@@@B@@@@B@D@@@B@@@JAB@B@DBB@B@@@B@@BF@B@BB@@@BBDDD@@BB@F@B@@A@@@AB@@@B@@BB@@@B@D@@@B@@BB@@@BA@@@ABB@@BA@@B@@@@AA@@A@@B@@@B@@BDBB@B@@@BAB@B@@@@@BA@AB@@@B@@@@@B@@BB@AB@@@B@@BBD@@BB@@@DBDAB@@@B@@@@B@@@B@@B@@BB@@@BB@@@B@B@@@@BB@@B@B@@BB@B@BB@@B@@B@@BB@@@BAB@@@AA@@@AB@AA@@@@BA@@@@@C@A@@B@@@BA@@BAHA@ABA@@@@BB@B@BBF@BB@B@@@@G@@H@DBB@HAB@D@D@BB@@DBFDDDDDBDBB@@@B@BBB@D@DBD@H@BBB@@@@@@DBB@DAB@BBDBBBB@B@B@FAB@B@DCB@B@D@DBB@DAFAH@DADAD@H@B@B@DAHABADCJEB@@ABABC@ABE@A@@@@@C@A@CBA@C@GBEBCBADCBCJE@@BB@B@@BB@@AB@@@B@B@B@@@DB@B@B@@B@BAB@@B@@@@AB@@@@B@@@BB@@@B@@@@@BB@BA@@@@@@BAB@@@@@@B@B@@@BA@@@@B@B@BB@@B@@@B@@@A@AB@BB@B@@B@@@@B@@@@AB@@@@@BB@@A@@BBB@@@B@@@BBB@@BB@@BBB@@@B@@@@@@B@@@@@@B@@@@@@@B@@D@B@@B@@B@@B@@@@@B@A@@B@@BB@A@@@@@BB@BB@@B@BB@@@B@@B@@@B@@@BA@@@B@@@@@BABAB@@AD@@@B@B@@@B@BAB@B@BDB@@@B@@BB@@@B@BAB@@AB@B@@@B@@BB@BBB@@@@BDBB@@@BB@@B@@@BB@@B@B@@BB@@A@@B@@@BA@BD@B@@B@BB@@@DABB@@BB@BB@BAB@@@BA@@B@BA@@@ABB@@BB@@B@@@B@@B@@B@@@B@@@@AB@@AD@@D@AB@@BB@B@@@B@@@@ABA@A@@@A@@@CBAB@@A@A@@B@@A@@D@@BB@@B@@@BB@@@B@B@B@@BB@@@BA@@B@@B@BB@B@@@BBB@@A@@B@@AB@@@BA@@B@@@B@@@@B@@@BB@@@BB@@@@@BBB@@B@@@@B@@@AB@FB@@@BB@@B@@B@BB@@BBB@@B@BD@@B@@B@@@BB@BB@@BB@@@@B@BB@@@B@B@@DD@BBB@B@@BBB@@@BB@@BB@@B@BB@@@@@B@@BA@@@@@B@@AB@B@@@B@B@B@BB@@B@B@B@@AB@@@@A@@A@@@@@@@@@BAB@@@D@@@B@@@B@@@B@@BBAB@@@@@B@B@@@B@@@B@@@B@@@B@B@@B@@BB@@BBBBBBB@BB@@BBB@B@@@B@@BD@@@BB@@@BDB@@BB@AB@@BBA@BB@BAB@@@@@B@@@BA@BBAB@@@@@B@@AB@@@BBD@BA@CB@@@BA@@D@B@@AB@B@@@B@@@B@B@B@B@@@B@B@B@BB@BB@B@@@B@@A@BBA@@BABB@@B@@@@@B@@@@A@BBA@BB@@@@BD@@@@@B@@@@@B@@A@@@@@@BB@BB@@BB@BAB@@@@@B@@B@@@@B@@@@@@@B@@@@@@@@B@@B@@BB@@@@B@@@@B@@A@@@@@@BB@@B@B@@B@@@B@BB@@BAB@@@BB@@B@B@@@@@BB@@BA@@BB@@B@@@BB@@@A@@@@@@B@@@@@@@BAB@@A@@BBBA@BB@@@B@@@@@@@BBBAB@@@@B@@@B@@@@@BB@@B@A@@@B@@@B@B@@@B@@@@@BB@@@@B@@@@@@@@@B@@B@@BB@@@@B@@@B@@@BA@@B@@BB@B@B@@@BBB@@A@@@@@BB@@@B@B@BB@@@B@@BAB@@@@@BAB@@@@ABA@@@ABAA@@A@@@@B@@A@A@@@@B@B@@@@@@@@@BB@@B@@@B@@@B@B@@B@D@@@@B@@B@BBB@@@@@BB@@@@@DBBB@@@@@BB@BBBB@@BB@@@B@B@B@D@DABBBB@@@@B@@AB@@B@@BB@@BBB@@@@@BBAB@B@@B@@@BB@@BBABB@@B@@@@BB@@B@@BBB@B@@@@AB@@@@BBB@B@@B@@@@@B@@@B@B@@BBA@B@@B@@@BB@@@@B@@@B@B@@BB@@@BB@B@@@@BB@@B@@B@@@@BB@@D@B@@@BBB@@@@@B@@AB@@@B@@@B@BB@@@A@@BB@@BAD@@B@@B@@@@B@@AB@BB@@@@@AB@@@D@B@BAB@@@D@B@D@B@@B@@@@@@B@@@BBB@BBB@@@BB@AB@BA@AB@@@BA@@B@@BB@@ABB@AB@@@B@@@BB@@DA@B"],"encodeOffsets":[[112668,24349]]}}],"UTF8Encoding":true});})); -------------------------------------------------------------------------------- /app/static/css/xadmin.css: -------------------------------------------------------------------------------- 1 | @charset "utf-8"; 2 | @import url(../lib/layui/css/layui.css); 3 | *{ 4 | margin: 0px; 5 | padding: 0px; 6 | font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; 7 | } 8 | a{ 9 | text-decoration: none; 10 | } 11 | html{ 12 | width: 100%; 13 | height: 100%; 14 | overflow-x:hidden; 15 | overflow-y:auto; 16 | } 17 | body{ 18 | width: 100%; 19 | min-height: 100%; 20 | } 21 | .login-bg{ 22 | /*background: #eeeeee url() 0 0 no-repeat;*/ 23 | background:url(../images/demo-1-bg.jpg) no-repeat center; 24 | background-size: cover; 25 | overflow: hidden; 26 | } 27 | .login{ 28 | margin: 120px auto 0 auto; 29 | min-height: 420px; 30 | max-width: 420px; 31 | padding: 40px; 32 | background-color: #ffffff; 33 | margin-left: auto; 34 | margin-right: auto; 35 | border-radius: 4px; 36 | /* overflow-x: hidden; */ 37 | box-sizing: border-box; 38 | } 39 | .login a.logo{ 40 | display: block; 41 | height: 58px; 42 | width: 167px; 43 | margin: 0 auto 30px auto; 44 | background-size: 167px 42px; 45 | } 46 | .login .message { 47 | margin: 10px 0 0 -58px; 48 | padding: 18px 10px 18px 60px; 49 | background: #189F92; 50 | position: relative; 51 | color: #fff; 52 | font-size: 16px; 53 | } 54 | .login #darkbannerwrap { 55 | background: url(../images/aiwrap.png); 56 | width: 18px; 57 | height: 10px; 58 | margin: 0 0 20px -58px; 59 | position: relative; 60 | } 61 | 62 | .login input[type=text], 63 | .login input[type=file], 64 | .login input[type=password], 65 | .login input[type=email], select { 66 | border: 1px solid #DCDEE0; 67 | vertical-align: middle; 68 | border-radius: 3px; 69 | height: 50px; 70 | padding: 0px 16px; 71 | font-size: 14px; 72 | color: #555555; 73 | outline:none; 74 | width:100%; 75 | box-sizing: border-box; 76 | } 77 | .login input[type=text]:focus, 78 | .login input[type=file]:focus, 79 | .login input[type=password]:focus, 80 | .login input[type=email]:focus, select:focus { 81 | border: 1px solid #27A9E3; 82 | } 83 | .login input[type=submit], 84 | .login input[type=button]{ 85 | display: inline-block; 86 | vertical-align: middle; 87 | padding: 12px 24px; 88 | margin: 0px; 89 | font-size: 18px; 90 | line-height: 24px; 91 | text-align: center; 92 | white-space: nowrap; 93 | vertical-align: middle; 94 | cursor: pointer; 95 | color: #ffffff; 96 | background-color: #189F92; 97 | border-radius: 3px; 98 | border: none; 99 | -webkit-appearance: none; 100 | outline:none; 101 | width:100%; 102 | } 103 | .login hr { 104 | background: #fff url() 0 0 no-repeat; 105 | } 106 | .login hr.hr15 { 107 | height: 15px; 108 | border: none; 109 | margin: 0px; 110 | padding: 0px; 111 | width: 100%; 112 | } 113 | .login hr.hr20 { 114 | height: 20px; 115 | border: none; 116 | margin: 0px; 117 | padding: 0px; 118 | width: 100%; 119 | } 120 | .x-body{ 121 | padding: 20px; 122 | } 123 | .x-nav{ 124 | padding: 0 20px; 125 | position: relative; 126 | z-index: 99; 127 | border-bottom: 1px solid #e5e5e5; 128 | line-height: 39px; 129 | height: 39px; 130 | overflow: hidden; 131 | } 132 | xblock{ 133 | display: block; 134 | margin-bottom: 10px; 135 | padding: 5px; 136 | line-height: 22px; 137 | /* border-left: 5px solid #009688; */ 138 | border-radius: 0 2px 2px 0; 139 | background-color: #f2f2f2; 140 | } 141 | .x-right{ 142 | float: right; 143 | } 144 | .x-so{ 145 | /*text-align: center;*/ 146 | /*background: #f2f2f2 url() 0 0 no-repeat;*/ 147 | margin-bottom: 20px; 148 | } 149 | .x-so input.layui-input{ 150 | width: 150px; 151 | } 152 | .x-so .layui-form-label{ 153 | display: inline-block; 154 | } 155 | .x-so input.layui-input,.x-so input.layui-btn{ 156 | display: inline-block; 157 | } 158 | .x-red{ 159 | color: red; 160 | } 161 | .x-a{ 162 | color: #1AA093; 163 | } 164 | .x-a:hover{ 165 | color: #127F74; 166 | } 167 | .x-sort{ 168 | height: 30px; 169 | } 170 | .x-show{ 171 | cursor: pointer; 172 | } 173 | .layui-form-switch{ 174 | margin-top: 0px; 175 | } 176 | .layui-input:focus, .layui-textarea:focus { 177 | border-color: #189f92!important; 178 | } 179 | 180 | .page{ 181 | margin-top: 20px; 182 | text-align: center; 183 | 184 | } 185 | .page a{ 186 | display: inline-block; 187 | background: #fff url() 0 0 no-repeat; 188 | color: #888; 189 | padding: 10px; 190 | min-width: 15px; 191 | border: 1px solid #E2E2E2; 192 | 193 | } 194 | .page span{ 195 | display: inline-block; 196 | padding: 10px; 197 | min-width: 15px; 198 | border: 1px solid #E2E2E2; 199 | } 200 | .page span.current{ 201 | display: inline-block; 202 | background: #009688 url() 0 0 no-repeat; 203 | color: #fff; 204 | padding: 10px; 205 | min-width: 15px; 206 | border: 1px solid #009688; 207 | } 208 | .page .pagination li{ 209 | display: inline-block; 210 | margin-right: 5px; 211 | text-align: center; 212 | } 213 | .page .pagination li.active span{ 214 | background: #009688 url() 0 0 no-repeat; 215 | color: #fff; 216 | border: 1px solid #009688; 217 | 218 | } 219 | 220 | /*登录样式*/ 221 | /*头部*/ 222 | .container{ 223 | width: 100%; 224 | height: 45px; 225 | background-color: #222; 226 | border-bottom: 1px solid rgba(255, 255, 255, 0.2); 227 | } 228 | .container .logo a{ 229 | float: left; 230 | color: #fff; 231 | font-size: 18px; 232 | padding-left: 20px; 233 | line-height: 45px; 234 | width: 200px; 235 | } 236 | .container .right{ 237 | background-color:rgba(0,0,0,0); 238 | float: right; 239 | 240 | } 241 | .container .left_open{ 242 | height: 45px; 243 | float: left; 244 | } 245 | .container .left_open i{ 246 | display: block; 247 | background: rgba(255,255,255,0.1) url() 0 0 no-repeat; 248 | color: #fff; 249 | width: 32px; 250 | height: 32px; 251 | line-height: 32px; 252 | border-radius: 3px; 253 | text-align: center; 254 | margin-top: 7px; 255 | cursor: pointer; 256 | } 257 | .container .left_open i:hover{ 258 | background: rgba(255,255,255,0.3) url() 0 0 no-repeat; 259 | } 260 | 261 | .container .left{ 262 | background-color:rgba(0,0,0,0); 263 | float: left; 264 | 265 | } 266 | .container .layui-nav-item{ 267 | line-height: 45px; 268 | } 269 | .container .layui-nav-more{ 270 | top: 20px; 271 | } 272 | .container .layui-nav-child{ 273 | top: 50px; 274 | } 275 | .container .layui-nav-child i{ 276 | margin-right: 10px; 277 | } 278 | .layui-nav .layui-nav-item a{ 279 | color: #fff; 280 | cursor: pointer; 281 | } 282 | .layui-nav .layui-nav-child a{ 283 | color: #333; 284 | cursor: pointer; 285 | } 286 | .left-nav{ 287 | position: absolute; 288 | top: 46px; 289 | bottom: 42px; 290 | left: 0; 291 | z-index: 2; 292 | padding-top: 10px; 293 | background-color: #EEEEEE; 294 | width: 220px; 295 | max-width: 220px; 296 | overflow: auto; 297 | overflow-x:hidden; 298 | border-right: 1px solid #e5e5e5; 299 | 300 | /*width: 0px;*/ 301 | } 302 | .left-nav #nav li{ 303 | border-bottom: 1px solid #e5e5e5; 304 | } 305 | .left-nav #nav li:hover > a{ 306 | /*color: blue;*/ 307 | } 308 | .left-nav #nav .current{ 309 | background-color: rgba(0, 0, 0, 0.3); 310 | } 311 | .left-nav #nav li a{ 312 | font-size: 14px; 313 | padding: 10px 15px 10px 20px; 314 | display: block; 315 | cursor: pointer; 316 | } 317 | .left-nav #nav li a cite{ 318 | font-size: 14px; 319 | } 320 | 321 | .left-nav #nav li .sub-menu{ 322 | display: none; 323 | } 324 | .left-nav #nav li .opened{ 325 | display: block; 326 | } 327 | .left-nav #nav li .opened:hover{ 328 | /*background: #fff url() 0 0 no-repeat;*/ 329 | } 330 | .left-nav #nav li .opened .current{ 331 | 332 | } 333 | .left-nav #nav li .sub-menu li:hover{ 334 | /*color: blue;*/ 335 | /*background: #fff url() 0 0 no-repeat;*/ 336 | } 337 | .left-nav #nav li .sub-menu li a{ 338 | padding: 12px 15px 12px 30px; 339 | font-size: 14px; 340 | cursor: pointer; 341 | } 342 | .left-nav #nav li .sub-menu li .sub-menu li a{ 343 | padding-left: 45px; 344 | } 345 | .left-nav #nav li .sub-menu li a:hover{ 346 | color: #148cf1; 347 | } 348 | .left-nav #nav li .sub-menu li a i{ 349 | font-size: 12px; 350 | } 351 | .left-nav #nav li a i{ 352 | padding-right: 10px; 353 | line-height: 14px; 354 | } 355 | .left-nav #nav li .nav_right{ 356 | float: right; 357 | font-size: 16px; 358 | } 359 | .x-slide_left { 360 | width: 17px; 361 | height: 61px; 362 | background: url(../images/icon.png) 0 0 no-repeat; 363 | position: absolute; 364 | top: 200px; 365 | left: 221px; 366 | cursor: pointer; 367 | z-index: 3; 368 | } 369 | .page-content{ 370 | position: absolute; 371 | top: 46px; 372 | right: 0; 373 | bottom: 42px; 374 | left: 221px; 375 | overflow: hidden; 376 | z-index: 1; 377 | } 378 | .page-content-bg{ 379 | position: absolute; 380 | top: 46px; 381 | right: 0; 382 | bottom: 42px; 383 | left: 221px; 384 | background: rgba(0,0,0,0.5); url() 0 0 no-repeat; 385 | overflow: hidden; 386 | z-index: 100; 387 | display: none; 388 | } 389 | 390 | .page-content .tab{ 391 | height: 100%; 392 | width: 100%; 393 | background: #EFEEF0 url() 0 0 no-repeat; 394 | margin: 0px; 395 | } 396 | .page-content .layui-tab-title{ 397 | /*padding-top: 5px;*/ 398 | height: 35px; 399 | background: #EFEEF0 url() 0 0 no-repeat; 400 | position: relative; 401 | z-index: 100; 402 | } 403 | .page-content .layui-tab-title li.home i{ 404 | padding-right: 5px; 405 | } 406 | .page-content .layui-tab-title li.home .layui-tab-close{ 407 | display: none; 408 | } 409 | .page-content .layui-tab-title li{ 410 | line-height: 35px; 411 | } 412 | .page-content .layui-tab-title .layui-this:after{ 413 | height: 36px; 414 | } 415 | .page-content .layui-tab-title li .layui-tab-close{ 416 | border-radius: 50%; 417 | } 418 | .page-content .layui-tab-title .layui-this{ 419 | background: #fff url() 0 0 no-repeat; 420 | } 421 | .page-content .layui-tab-bar{ 422 | height:34px; 423 | line-height: 35px; 424 | } 425 | .page-content .layui-tab-content{ 426 | position: absolute; 427 | top: 36px; 428 | bottom: 0px; 429 | width: 100%; 430 | background: #fff url() 0 0 no-repeat; 431 | padding: 0px; 432 | overflow: hidden; 433 | } 434 | .page-content .layui-tab-content .layui-tab-item{ 435 | width: 100%; 436 | height: 100%; 437 | 438 | } 439 | .page-content .layui-tab-content .layui-tab-item iframe{ 440 | width: 100%; 441 | height: 100%; 442 | 443 | } 444 | .x-admin-carousel,.layui-carousel,.x-admin-carousel>[carousel-item]>* { 445 | background-color:#fff 446 | } 447 | 448 | .x-admin-backlog .x-admin-backlog-body { 449 | display:block; 450 | padding:10px 15px; 451 | background-color:#f8f8f8; 452 | color:#999; 453 | border-radius:2px; 454 | transition:all .3s; 455 | -webkit-transition:all .3s 456 | } 457 | .x-admin-backlog-body h3 { 458 | padding-bottom:10px; 459 | font-size:12px 460 | } 461 | .x-admin-backlog-body p cite { 462 | font-style:normal; 463 | font-size:30px; 464 | font-weight:300; 465 | color:#009688 466 | } 467 | .x-admin-backlog-body:hover { 468 | background-color:#CFCFCF; 469 | color:#888 470 | } 471 | 472 | .welcome-footer{padding: 30px 0; line-height: 30px; text-align: center; background-color: #eee; color: #666; font-weight: 300;} 473 | body .layui-layout-admin .footer-demo{height: auto; padding: 15px 0; line-height: 26px;} 474 | .welcome-footer a{padding: 0 5px;} 475 | 476 | table th, table td { 477 | word-break: break-all; 478 | } 479 | 480 | .footer{ 481 | position: fixed; 482 | bottom: 0px; 483 | width: 100%; 484 | background-color: #222; 485 | border-top: 1px solid rgba(255, 255, 255, 0.2); 486 | line-height: 41px; 487 | color: #fff; 488 | /*padding-left: 10px;*/ 489 | } 490 | .footer .copyright{ 491 | margin-left: 10px; 492 | } 493 | 494 | 495 | @media screen and (max-width: 768px){ 496 | .fast-add{ 497 | display: none; 498 | } 499 | .layui-nav .to-index{ 500 | display: none; 501 | } 502 | .container .logo a{ 503 | width: 140px; 504 | } 505 | .container .left_open { 506 | /*float: right;*/ 507 | } 508 | .left-nav{ 509 | left: -221px; 510 | } 511 | .page-content{ 512 | left: 0px; 513 | } 514 | .page-content .layui-tab-content .layui-tab-item{ 515 | -webkit-overflow-scrolling: touch; 516 | overflow-y: scroll; 517 | } 518 | .x-so input.layui-input{ 519 | width: 100%; 520 | margin: 10px; 521 | } 522 | } 523 | 524 | --------------------------------------------------------------------------------