├── 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 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/app/templates/home/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | 没有首页的首页
6 |
7 |
13 |
14 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/.idea/商贸管理系统.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
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 |
25 |
26 |
27 | {% endblock %}
--------------------------------------------------------------------------------
/app/templates/admin/comminrole.html:
--------------------------------------------------------------------------------
1 | {% extends "admin/bases.html" %}
2 |
3 |
4 | {% block content %}
5 |
6 |
26 |
27 |
28 | {% endblock %}
--------------------------------------------------------------------------------
/app/templates/admin/addSection.html:
--------------------------------------------------------------------------------
1 | {% extends "admin/bases.html" %}
2 |
3 |
4 | {% block content %}
5 |
6 |
26 |
27 |
28 |
29 |
32 | {% endblock %}
--------------------------------------------------------------------------------
/app/templates/admin/404.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | 消失在宇宙星空中的404页面
6 |
7 |
8 |
9 |
10 |
11 |
12 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/app/templates/admin/addduty.html:
--------------------------------------------------------------------------------
1 | {% extends "admin/bases.html" %}
2 |
3 |
4 | {% block content %}
5 |
6 |
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 |
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 |
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 |
29 |
30 |
45 | {% endblock %}
--------------------------------------------------------------------------------
/app/templates/admin/bumen.html:
--------------------------------------------------------------------------------
1 | {% extends "admin/bases.html" %}
2 |
3 |
4 | {% block content %}
5 |
6 |
39 |
45 |
46 | {% endblock %}
--------------------------------------------------------------------------------
/app/templates/admin/addsalesOrder.html:
--------------------------------------------------------------------------------
1 | {% extends "admin/bases.html" %}
2 |
3 |
4 | {% block content %}
5 |
6 |
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 |
44 |
45 |
46 |
47 |
67 | {% endblock %}
--------------------------------------------------------------------------------
/app/templates/admin/addCustomerz.html:
--------------------------------------------------------------------------------
1 | {% extends "admin/bases.html" %}
2 |
3 |
4 | {% block content %}
5 |
6 |
54 |
55 |
56 |
57 |
76 | {% endblock %}
--------------------------------------------------------------------------------
/app/templates/admin/increasePurchaseOrder.html:
--------------------------------------------------------------------------------
1 | {% extends "admin/bases.html" %}
2 |
3 |
4 | {% block content %}
5 |
6 |
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 | 
12 |
13 | 
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 | - 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 |
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 | {{i.warehouse_goods_name}}
36 | {{i.warehouse_goods_num}}
37 | {{i.goods_price}}
38 | {{i.warehouse_supplier_name}}
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 | {% endfor %}
47 |
48 |
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 |
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 | {{i.supplier_name}}
37 | {{i.supplier_addre}}
38 | {{i.supplier_credit}}
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 | {% endfor %}
47 |
48 |
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 |
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 | {{i.client_name}}
40 | {{i.client_phone}}
41 | {{i.client_addre}}
42 | {{i.client_credit}}
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 | {% endfor %}
51 |
52 |
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 |
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 | {{i.inwarehouse_num}}
35 | {{i.inwarehouse_goods}}
36 | {{i.inwarehouse_count}}
37 | {{i.inwarehouse_price}}
38 | {{i.inwarehouse_supplier}}
39 | {{i.inwarehouse_user_name}}
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 | {% endfor %}
48 |
49 |
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 |
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 | {{i.stock_num}}
38 | {{i.stock_goods}}
39 | {{i.stock_count}}
40 | {{i.stock_price}}
41 | {{i.client_name}}
42 | {{i.stock_user_name}}
43 | {{i.stock_addtime}}
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 | {% endfor %}
52 |
53 |
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 |
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 | {{i.sealreturngoods_num}}
37 | {{i.sealreturngoods_goods}}
38 | {{i.sealreturngoods_count}}
39 | {{i.sealreturngoods_price}}
40 | {{i.client_name}}
41 | {{i.sealreturngoods_user_name}}
42 | {{i.sealreturngoods_addtime}}
43 |
44 |
45 |
46 |
47 |
48 |
49 | {% endfor %}
50 |
51 |
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 | {{i.id}}
27 | {{i.name}}
28 | {{i.addre}}
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
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 |
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 | {{i.goods_name}}
36 | {{i.goods_price}}
37 | {{i.goods_intro}}
38 |
39 |
40 |
41 |
42 |
43 |
44 | {% endfor %}
45 |
46 |
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 |
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 | ID
22 | 登录名
23 | 姓名
24 | 性别
25 | 邮箱
26 | 手机
27 | 所属部门
28 | 职务
29 | 权限
30 | 加入时间
31 |
32 |
33 |
34 |
35 | {% for i in page_data.items %}
36 |
37 |
38 | {{i.user_id}}
39 | {{i.user_count}}
40 | {{i.user_name}}
41 | {{i.user_sex}}
42 | {{i.user_mail}}
43 | {{i.user_phone}}
44 | {{i.user_section}}
45 | {{i.user_duty}}
46 | {{i.user_power}}
47 | {{i.user_addtime}}
48 |
49 |
50 |
51 |
52 | {% endfor %}
53 |
54 |
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 |
13 |
14 |
15 |
16 |
17 |
18 | 编号
19 | 商品名称
20 | 商品数量
21 | 商品单价
22 | 订单时间
23 |
24 | 操作
25 |
26 |
27 |
28 | {% for i in purchases %}
29 |
30 |
31 | {{i.id}}
32 | {{i.name}}
33 | {{i.num}}
34 | {{i.price}}
35 | {{i.addtime}}
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 | {% endfor %}
44 |
45 |
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 |
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 | {{i.duty_name}}
29 | {{i.duty_addtime}}
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 | {% endfor %}
42 |
43 |
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 |
19 |
20 |
21 |
22 |
23 | 商品编号
24 | 商品名称
25 | 数量
26 | 总价
27 | 供应商
28 | 退货人
29 | 操作
30 |
31 |
32 |
33 | {% for i in page_data.items %}
34 |
35 |
36 | {{i.returngoods_num}}
37 | {{i.returngoods_goods}}
38 | {{i.returngoods_count}}
39 | {{i.returngoods_price}}
40 | {{i.returngoods_supplier}}
41 | {{i.returngoods_user_name}}
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 | {% endfor %}
51 |
52 |
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 | {{i.section_name}}
29 | {{i.section_addtime}}
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 | {% endfor %}
42 |
43 |
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 | {{usermessage.user_count}}
39 |
40 |
41 |
42 | 姓 名: {{usermessage.user_name}}
43 |
44 |
45 | 性 别: {{usermessage.user_sex}}
46 |
47 |
48 | 邮 箱: {{usermessage.user_mail}}
49 |
50 |
51 | 手 机: {{usermessage.user_phone}}
52 |
53 |
54 |
55 |
56 |
57 |
58 |
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 |
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 | {{i.sales_goods_name}}
44 | {{i.sales_num}}
45 | {{i.sales_count}}
46 | {{i.sales_price}}
47 | {{i.client_name}}
48 | {{i.sales_user_name}}
49 | {{i.sales_addtime}}
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 | {% endfor %}
63 |
64 |
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 |
15 |
16 |
17 |
18 | 添加订单
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 | 商品id
30 | 订单编号
31 | 商品名称
32 | 数量
33 | 单价
34 | 总金额
35 | 供应商
36 | 进货人
37 | 进货时间
38 | 操作
39 |
40 |
41 |
42 | {% for i in page_data.items %}
43 |
44 |
45 | {{i.purchase_id}}
46 | {{i.purchase_num}}
47 | {{i.purchase_goods}}
48 | {{i.purchase_count}}
49 | {{i.goods_price}}
50 | {{i.purchase_price}}
51 | {{i.purchase_supplier}}
52 | {{i.purchase_user_name}}
53 | {{i.purchase_addtime}}
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 | {% endfor %}
67 |
68 |
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 |
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 |
43 |
44 |
45 |
46 |
47 | 数据统计
48 |
85 |
86 |
87 | 系统通知
88 |
89 |
90 |
91 |
92 |
93 | 暂无
94 |
95 |
96 |
97 |
98 |
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 |
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{GBNcHXRR{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@IFMHf}`EBGFMJSN@@E@ÕCAAkAiA@±EKAYAG@E@GAG@}EE_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`IEGG 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_pYMhU{dsj]º¹`oGHnGl[pDCjMVOKMFkNW^ybOjTDlQRWpgzYtG`@dQ^i`aZQfQzIY|{@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 |
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 |
273 |
274 |
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 |
--------------------------------------------------------------------------------