安装包
@@ -1,6 +1,6 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from web.controllers.api import route_api
|
from web.controllers.api import route_api
|
||||||
from flask import request,jsonify,g
|
from flask import request,jsonify,g,send_file
|
||||||
from application import app,db
|
from application import app,db
|
||||||
import requests,json
|
import requests,json
|
||||||
from common.models.member.Member import Member
|
from common.models.member.Member import Member
|
||||||
@@ -155,21 +155,17 @@ def ruilaizi():
|
|||||||
resp = {'code': 200, 'msg': 'r操作成功~', 'data': {}}
|
resp = {'code': 200, 'msg': 'r操作成功~', 'data': {}}
|
||||||
req = request.values
|
req = request.values
|
||||||
app.logger.info(req)
|
app.logger.info(req)
|
||||||
# name = req['nickname'] if 'nickname' in req else ''
|
# 文件路径 1.txt为测试文件 在项目的static/file目录下
|
||||||
# app.logger.info(name)
|
# 获取文件的路径和文件名
|
||||||
# mobile = req['mobile'] if 'mobile' in req else 0
|
filepath = os.path.join('static/app-release.apk')
|
||||||
# app.logger.info(mobile)
|
try:
|
||||||
# token = req['token'] if 'token' in req else ''
|
# 尝试打开文件并发送
|
||||||
# app.logger.info(token)
|
return send_file(filepath, as_attachment=True)
|
||||||
|
except PermissionError:
|
||||||
|
return '文件权限错误,无法访问', 403
|
||||||
|
except Exception as e:
|
||||||
|
return f'发生错误:{str(e)}', 500
|
||||||
|
|
||||||
# miya_info = Membermiya.query.filter_by(nickname=name).first()
|
|
||||||
# if not miya_info:
|
|
||||||
# model_membermiya = Membermiya()
|
|
||||||
# model_membermiya.nickname = name
|
|
||||||
# model_membermiya.mobile = mobile
|
|
||||||
# model_membermiya.token = token
|
|
||||||
# db.session.add(model_membermiya)
|
|
||||||
# db.session.commit()
|
|
||||||
return jsonify(resp)
|
return jsonify(resp)
|
||||||
|
|
||||||
@route_api.route("/member/ruilaizitest",methods = [ "GET","POST" ])
|
@route_api.route("/member/ruilaizitest",methods = [ "GET","POST" ])
|
||||||
|
|||||||
8
web/controllers/guanwang/Guanwang.py
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
from flask import Blueprint
|
||||||
|
|
||||||
|
route_guanwang = Blueprint('guanwang_page', __name__)
|
||||||
|
|
||||||
|
@route_guanwang.route("/guanwang")
|
||||||
|
def guanwang():
|
||||||
|
return "doudouindex"
|
||||||
1
web/controllers/guanwang/__init__.py
Normal file
@@ -0,0 +1 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
BIN
web/controllers/guanwang/__pycache__/Guanwang.cpython-39.pyc
Normal file
BIN
web/controllers/guanwang/__pycache__/__init__.cpython-39.pyc
Normal file
37
web/doudou/.project
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<projectDescription>
|
||||||
|
<name>yaocai</name>
|
||||||
|
<comment>Create By HBuilder</comment>
|
||||||
|
<projects>
|
||||||
|
</projects>
|
||||||
|
<buildSpec>
|
||||||
|
<buildCommand>
|
||||||
|
<name>com.aptana.ide.core.unifiedBuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
</buildSpec>
|
||||||
|
<natures>
|
||||||
|
<nature>com.aptana.projects.webnature</nature>
|
||||||
|
</natures>
|
||||||
|
<filteredResources>
|
||||||
|
<filter>
|
||||||
|
<id>1605020327496</id>
|
||||||
|
<name></name>
|
||||||
|
<type>10</type>
|
||||||
|
<matcher>
|
||||||
|
<id>org.eclipse.ui.ide.orFilterMatcher</id>
|
||||||
|
<arguments>
|
||||||
|
<matcher>
|
||||||
|
<id>org.eclipse.ui.ide.multiFilter</id>
|
||||||
|
<arguments>1.0-projectRelativePath-matches-false-false-bin</arguments>
|
||||||
|
</matcher>
|
||||||
|
<matcher>
|
||||||
|
<id>org.eclipse.ui.ide.multiFilter</id>
|
||||||
|
<arguments>1.0-projectRelativePath-matches-false-false-setting</arguments>
|
||||||
|
</matcher>
|
||||||
|
</arguments>
|
||||||
|
</matcher>
|
||||||
|
</filter>
|
||||||
|
</filteredResources>
|
||||||
|
</projectDescription>
|
||||||
307
web/doudou/doudouindex.html
Normal file
@@ -0,0 +1,307 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>智慧豆豆</title>
|
||||||
|
<script src="yaocai/js/jquery-2.1.1.js"></script>
|
||||||
|
<style type="text/css">
|
||||||
|
*{
|
||||||
|
margin:0;
|
||||||
|
padding:0;
|
||||||
|
}
|
||||||
|
body {
|
||||||
|
|
||||||
|
font-family:"Helvetica Neue", sans-serif;
|
||||||
|
margin:4%;
|
||||||
|
}
|
||||||
|
h1{
|
||||||
|
font-size:30px;
|
||||||
|
|
||||||
|
text-align:center;
|
||||||
|
margin:50px auto;
|
||||||
|
}
|
||||||
|
#content{
|
||||||
|
|
||||||
|
}
|
||||||
|
#content article{
|
||||||
|
background:#E6E6FA;
|
||||||
|
width:20%;
|
||||||
|
float:left;
|
||||||
|
box-sizing:border-box;
|
||||||
|
padding:2%;
|
||||||
|
text-align:center;
|
||||||
|
margin-bottom:25px;
|
||||||
|
}
|
||||||
|
#content article h1{
|
||||||
|
font-size:36px;
|
||||||
|
color:rgba(255,255,255,.9);
|
||||||
|
margin:20px auto;
|
||||||
|
}
|
||||||
|
#content article p{
|
||||||
|
color:rgba(255,255,255,.7);
|
||||||
|
}
|
||||||
|
#content article img{
|
||||||
|
width:50%;
|
||||||
|
}
|
||||||
|
@media screen and (min-width: 768px) and (max-width: 979px) {
|
||||||
|
#content article{
|
||||||
|
width:50%;
|
||||||
|
position:relative;
|
||||||
|
text-align:left;
|
||||||
|
}
|
||||||
|
#content article img{
|
||||||
|
width:20%;
|
||||||
|
position:absolute;
|
||||||
|
}
|
||||||
|
#content article h1{
|
||||||
|
margin:0 0 20px 30%;
|
||||||
|
text-align:left;
|
||||||
|
}
|
||||||
|
#content article p{
|
||||||
|
margin-left:30%;
|
||||||
|
}
|
||||||
|
#content article:nth-child(odd){
|
||||||
|
clear:both;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 767px) {
|
||||||
|
#content article{
|
||||||
|
width:50%;
|
||||||
|
}
|
||||||
|
#content article img{
|
||||||
|
width:40%;
|
||||||
|
}
|
||||||
|
#content article:nth-child(odd){
|
||||||
|
clear:both;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 480px) {
|
||||||
|
#content article{
|
||||||
|
width:100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#cotenttwo{
|
||||||
|
|
||||||
|
padding:10px 8%;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@media screen and (max-width: 1200px) {
|
||||||
|
#cotenttwo{
|
||||||
|
padding:10px 8%;
|
||||||
|
}
|
||||||
|
img{
|
||||||
|
width:calc(100% - 350px);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 979px) {
|
||||||
|
#cotenttwo{
|
||||||
|
padding:10px 5%;
|
||||||
|
}
|
||||||
|
img{
|
||||||
|
width:50%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 767px) {
|
||||||
|
#cotenttwo{
|
||||||
|
padding:10px 20px;
|
||||||
|
}
|
||||||
|
img{
|
||||||
|
width:100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#slideshow{
|
||||||
|
background:#E6E6FA;
|
||||||
|
width:980px;
|
||||||
|
height:450px;
|
||||||
|
overflow:hidden;
|
||||||
|
margin:0 auto;
|
||||||
|
position:relative;
|
||||||
|
}
|
||||||
|
#slideshow ul, #slideshow ul li, #slideshow-nav{
|
||||||
|
list-style:none;
|
||||||
|
position:absolute;
|
||||||
|
}
|
||||||
|
#slideshow-nav{
|
||||||
|
width:100%;
|
||||||
|
bottom:20px;
|
||||||
|
text-align:center;
|
||||||
|
}
|
||||||
|
#slideshow-nav span{
|
||||||
|
display:inline-block;
|
||||||
|
border-radius:50%;
|
||||||
|
width:15px;
|
||||||
|
height:15px;
|
||||||
|
font-size:0;
|
||||||
|
background:rgba(255,255,255,.3);
|
||||||
|
transition:all .5s;
|
||||||
|
-webkit-transition:all .5s;
|
||||||
|
margin:0 7px;
|
||||||
|
cursor:pointer;
|
||||||
|
user-select:none; /*使圆点不能被选中*/
|
||||||
|
-webkit-user-select:none;
|
||||||
|
}
|
||||||
|
#slideshow-nav span.active{
|
||||||
|
background:#FFF;
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 979px) {
|
||||||
|
#slideshow, ul, li, img{
|
||||||
|
width:100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<h2>智慧豆豆app</h2>
|
||||||
|
<div id="slideshow">
|
||||||
|
<ul>
|
||||||
|
<li><img src="p1.jpg"></li>
|
||||||
|
<li><img src="p2.jpg"></li>
|
||||||
|
<li><img src="p3.jpg"></li>
|
||||||
|
<li><img src="p4.jpg"></li>
|
||||||
|
</ul>
|
||||||
|
<div id="slideshow-nav"></div>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript" src="jquery-2.1.4.min.js"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
$(document).ready(function() {
|
||||||
|
var duration = 3000; //每张图片的持续显示时间
|
||||||
|
var speed = 1000; //图片切换的动画时间
|
||||||
|
var width = $('#slideshow').width(); //获得单张图片的宽度
|
||||||
|
var curIndex = 0; //设置当前显示图片的索引值
|
||||||
|
var totalIndex = $('#slideshow > ul > li').length; //获得总的图片数量
|
||||||
|
var timer; //设置一个计时变量
|
||||||
|
$('#slideshow > ul > li').each(function(index) {
|
||||||
|
$(this).css("left", index*width+"px"); //设置轮播图片的横向排列
|
||||||
|
$('#slideshow-nav').append("<span>"+(index+1)+"</span>"); //在导航中添加相应的节点
|
||||||
|
});
|
||||||
|
$('#slideshow-nav > span').each(function(index) {
|
||||||
|
$(this).attr("index", index); //存储每个节点的索引值
|
||||||
|
$(this).click(function(){ //当span元素被点击时
|
||||||
|
curIndex = $(this).attr("index")-1; //刷新当前显示图片的索引值
|
||||||
|
clearTimeout(timer); //清除计时
|
||||||
|
move(); //重新执行move函数以显示该图片
|
||||||
|
});
|
||||||
|
});
|
||||||
|
$('#slideshow-nav > span').eq(0).addClass("active"); //设置第一个圆点为active
|
||||||
|
var firstChild = $('#slideshow > ul > li').eq(0).clone(); //将第一张图片复制一份
|
||||||
|
$('#slideshow > ul').append(firstChild); //将该图片添加到列表最末
|
||||||
|
firstChild.css("left", totalIndex*width+"px"); //将复制的第一张图片显示在图片序列最右侧
|
||||||
|
function move(){
|
||||||
|
curIndex++; //使索引值加以1
|
||||||
|
if(curIndex>totalIndex){ //当索引值大于图片总数时
|
||||||
|
curIndex = 1; //表示当前应播放第2张图片
|
||||||
|
$('#slideshow > ul').css("left", "0px"); //将图片序列重置到原点
|
||||||
|
}
|
||||||
|
for(var i=0; i < totalIndex; i++){
|
||||||
|
$('#slideshow-nav > span').eq(i).removeClass("active"); //清除所有导航节点的active类
|
||||||
|
}
|
||||||
|
if(curIndex === totalIndex){
|
||||||
|
$('#slideshow-nav > span').eq(0).addClass("active"); //如果当前索引值等于图片总数,则说明当前正显示第一张图片的副本,因此应激活第一个导航节点
|
||||||
|
}else{
|
||||||
|
$('#slideshow-nav > span').eq(curIndex).addClass("active"); //在其余情况下,则为当前导航节点添加active类
|
||||||
|
}
|
||||||
|
$('#slideshow > ul').animate({left:width*curIndex*-1+"px"},speed); //为图片序列创建动画
|
||||||
|
timer = setTimeout(move,duration+speed); //设置延迟一定时间后执行move函数,延迟时间等于动画时长加上每张图片的持续显示时间
|
||||||
|
}
|
||||||
|
timer = setTimeout(move,duration); //设置延迟一定时间后执行move函数,延迟时间等于每张图片的持续显示时间
|
||||||
|
$('#slideshow').css("height", $('img').height()+"px");
|
||||||
|
$(window).resize(function() {
|
||||||
|
width = $('#slideshow').width();
|
||||||
|
$('#slideshow').css("height", $('img').height()+"px");
|
||||||
|
$('#slideshow > ul > li').each(function(index) {
|
||||||
|
$(this).css("left", index*width+"px"); //设置轮播图片的横向排列
|
||||||
|
});
|
||||||
|
$('#slideshow > ul').stop().animate({left:width*curIndex*-1+"px"},0);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<section id="cotenttwo">
|
||||||
|
<article>
|
||||||
|
<h1>功能模块简介</h1>
|
||||||
|
</article>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<section id="content">
|
||||||
|
<article>
|
||||||
|
<img src="pic_two.jpg" alt="首页">
|
||||||
|
<h1>首页</h1>
|
||||||
|
<p>平台精彩推荐</p>
|
||||||
|
</article>
|
||||||
|
<article>
|
||||||
|
<img src="pic_three.jpg" alt="发现">
|
||||||
|
<h1>发现</h1>
|
||||||
|
<p>线上可以实时互动的</p>
|
||||||
|
</article>
|
||||||
|
<article>
|
||||||
|
<img src="pic_five.jpg" alt="购物车">
|
||||||
|
<h1>购物车</h1>
|
||||||
|
<p>便民购物</p>
|
||||||
|
</article>
|
||||||
|
<article>
|
||||||
|
<img src="pic_four.jpg" alt="物业">
|
||||||
|
<h1>物业</h1>
|
||||||
|
<p>生活缴费</p>
|
||||||
|
</article>
|
||||||
|
<article>
|
||||||
|
<img src="pic_one.jpg" alt="我的">
|
||||||
|
<h1>我的</h1>
|
||||||
|
<p>订单查询</p>
|
||||||
|
</article>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
<section id="cotenttwo">
|
||||||
|
<article>
|
||||||
|
<h1>应用介绍</h1>
|
||||||
|
|
||||||
|
<h1>豆豆智慧社区app是一款量身定制的小区管理软件,可以方便物业进行移动化的管理,实时给大家的生活保驾护航,有任何的需求,都可以直接线上进行反应,提供的服务非常的完善,线上也是可以实时互动的,让大家享受更是便利的社区生活
|
||||||
|
,可以提供物业管理,商城,智能门禁和电梯等系列服务。
|
||||||
|
</h1>
|
||||||
|
</article>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
<section id="cotenttwo">
|
||||||
|
<article>
|
||||||
|
<h1>下载地址(android)</h1>
|
||||||
|
|
||||||
|
|
||||||
|
<div style="text-align: center;">
|
||||||
|
<p>https://www.pgyer.com/zcsd</p>
|
||||||
|
<p></p>
|
||||||
|
<p></p>
|
||||||
|
<img style="text-align: center;" src="zcsd.png">
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
<script src="yaocai/js/index.js"></script>
|
||||||
|
</html>
|
||||||
4
web/doudou/jquery-2.1.4.min.js
vendored
Normal file
50
web/doudou/js/index.js
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
;
|
||||||
|
var food_index_ops = {
|
||||||
|
init:function(){
|
||||||
|
this.eventBind();
|
||||||
|
},
|
||||||
|
eventBind:function(){
|
||||||
|
var that = this;
|
||||||
|
$(".remove").click( function(){
|
||||||
|
that.ops( "remove",$(this).attr("data") )
|
||||||
|
});
|
||||||
|
|
||||||
|
$(".recover").click( function(){
|
||||||
|
that.ops( "recover",$(this).attr("data") )
|
||||||
|
});
|
||||||
|
|
||||||
|
$(".wrap_search .search").click( function(){
|
||||||
|
$(".wrap_search").submit();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
ops:function( act,id ){
|
||||||
|
var callback = {
|
||||||
|
'ok':function(){
|
||||||
|
$.ajax({
|
||||||
|
url:common_ops.buildUrl("/food/ops"),
|
||||||
|
type:'POST',
|
||||||
|
data:{
|
||||||
|
act:act,
|
||||||
|
id:id
|
||||||
|
},
|
||||||
|
dataType:'json',
|
||||||
|
success:function( res ){
|
||||||
|
var callback = null;
|
||||||
|
if( res.code == 200 ){
|
||||||
|
callback = function(){
|
||||||
|
window.location.href = window.location.href;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
common_ops.alert( res.msg,callback );
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
'cancel':null
|
||||||
|
};
|
||||||
|
common_ops.confirm( ( act=="remove" )?"确定删除?":"确定恢复?",callback );
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
$(document).ready( function(){
|
||||||
|
food_index_ops.init();
|
||||||
|
});
|
||||||
BIN
web/doudou/p1.jpg
Normal file
|
After Width: | Height: | Size: 130 KiB |
BIN
web/doudou/p2.jpg
Normal file
|
After Width: | Height: | Size: 69 KiB |
BIN
web/doudou/p3.jpg
Normal file
|
After Width: | Height: | Size: 139 KiB |
BIN
web/doudou/p4.jpg
Normal file
|
After Width: | Height: | Size: 152 KiB |
BIN
web/doudou/pic_five.jpg
Normal file
|
After Width: | Height: | Size: 288 KiB |
BIN
web/doudou/pic_four.jpg
Normal file
|
After Width: | Height: | Size: 112 KiB |
BIN
web/doudou/pic_one.jpg
Normal file
|
After Width: | Height: | Size: 297 KiB |
BIN
web/doudou/pic_three.jpg
Normal file
|
After Width: | Height: | Size: 450 KiB |
BIN
web/doudou/pic_two.jpg
Normal file
|
After Width: | Height: | Size: 368 KiB |
4
web/doudou/plugins/jquery-2.1.1.js
vendored
Normal file
BIN
web/doudou/zcsd.png
Normal file
|
After Width: | Height: | Size: 7.5 KiB |
BIN
web/static/app-release.apk
Normal file
307
web/templates/guanwang/doudouindex.html
Normal file
@@ -0,0 +1,307 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>智慧豆豆</title>
|
||||||
|
<script src="yaocai/js/jquery-2.1.1.js"></script>
|
||||||
|
<style type="text/css">
|
||||||
|
*{
|
||||||
|
margin:0;
|
||||||
|
padding:0;
|
||||||
|
}
|
||||||
|
body {
|
||||||
|
|
||||||
|
font-family:"Helvetica Neue", sans-serif;
|
||||||
|
margin:4%;
|
||||||
|
}
|
||||||
|
h1{
|
||||||
|
font-size:30px;
|
||||||
|
|
||||||
|
text-align:center;
|
||||||
|
margin:50px auto;
|
||||||
|
}
|
||||||
|
#content{
|
||||||
|
|
||||||
|
}
|
||||||
|
#content article{
|
||||||
|
background:#E6E6FA;
|
||||||
|
width:20%;
|
||||||
|
float:left;
|
||||||
|
box-sizing:border-box;
|
||||||
|
padding:2%;
|
||||||
|
text-align:center;
|
||||||
|
margin-bottom:25px;
|
||||||
|
}
|
||||||
|
#content article h1{
|
||||||
|
font-size:36px;
|
||||||
|
color:rgba(255,255,255,.9);
|
||||||
|
margin:20px auto;
|
||||||
|
}
|
||||||
|
#content article p{
|
||||||
|
color:rgba(255,255,255,.7);
|
||||||
|
}
|
||||||
|
#content article img{
|
||||||
|
width:50%;
|
||||||
|
}
|
||||||
|
@media screen and (min-width: 768px) and (max-width: 979px) {
|
||||||
|
#content article{
|
||||||
|
width:50%;
|
||||||
|
position:relative;
|
||||||
|
text-align:left;
|
||||||
|
}
|
||||||
|
#content article img{
|
||||||
|
width:20%;
|
||||||
|
position:absolute;
|
||||||
|
}
|
||||||
|
#content article h1{
|
||||||
|
margin:0 0 20px 30%;
|
||||||
|
text-align:left;
|
||||||
|
}
|
||||||
|
#content article p{
|
||||||
|
margin-left:30%;
|
||||||
|
}
|
||||||
|
#content article:nth-child(odd){
|
||||||
|
clear:both;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 767px) {
|
||||||
|
#content article{
|
||||||
|
width:50%;
|
||||||
|
}
|
||||||
|
#content article img{
|
||||||
|
width:40%;
|
||||||
|
}
|
||||||
|
#content article:nth-child(odd){
|
||||||
|
clear:both;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 480px) {
|
||||||
|
#content article{
|
||||||
|
width:100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#cotenttwo{
|
||||||
|
|
||||||
|
padding:10px 8%;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@media screen and (max-width: 1200px) {
|
||||||
|
#cotenttwo{
|
||||||
|
padding:10px 8%;
|
||||||
|
}
|
||||||
|
img{
|
||||||
|
width:calc(100% - 350px);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 979px) {
|
||||||
|
#cotenttwo{
|
||||||
|
padding:10px 5%;
|
||||||
|
}
|
||||||
|
img{
|
||||||
|
width:50%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 767px) {
|
||||||
|
#cotenttwo{
|
||||||
|
padding:10px 20px;
|
||||||
|
}
|
||||||
|
img{
|
||||||
|
width:100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#slideshow{
|
||||||
|
background:#E6E6FA;
|
||||||
|
width:980px;
|
||||||
|
height:450px;
|
||||||
|
overflow:hidden;
|
||||||
|
margin:0 auto;
|
||||||
|
position:relative;
|
||||||
|
}
|
||||||
|
#slideshow ul, #slideshow ul li, #slideshow-nav{
|
||||||
|
list-style:none;
|
||||||
|
position:absolute;
|
||||||
|
}
|
||||||
|
#slideshow-nav{
|
||||||
|
width:100%;
|
||||||
|
bottom:20px;
|
||||||
|
text-align:center;
|
||||||
|
}
|
||||||
|
#slideshow-nav span{
|
||||||
|
display:inline-block;
|
||||||
|
border-radius:50%;
|
||||||
|
width:15px;
|
||||||
|
height:15px;
|
||||||
|
font-size:0;
|
||||||
|
background:rgba(255,255,255,.3);
|
||||||
|
transition:all .5s;
|
||||||
|
-webkit-transition:all .5s;
|
||||||
|
margin:0 7px;
|
||||||
|
cursor:pointer;
|
||||||
|
user-select:none; /*使圆点不能被选中*/
|
||||||
|
-webkit-user-select:none;
|
||||||
|
}
|
||||||
|
#slideshow-nav span.active{
|
||||||
|
background:#FFF;
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 979px) {
|
||||||
|
#slideshow, ul, li, img{
|
||||||
|
width:100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<h2>智慧豆豆app</h2>
|
||||||
|
<div id="slideshow">
|
||||||
|
<ul>
|
||||||
|
<li><img src="p1.jpg"></li>
|
||||||
|
<li><img src="p2.jpg"></li>
|
||||||
|
<li><img src="p3.jpg"></li>
|
||||||
|
<li><img src="p4.jpg"></li>
|
||||||
|
</ul>
|
||||||
|
<div id="slideshow-nav"></div>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript" src="jquery-2.1.4.min.js"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
$(document).ready(function() {
|
||||||
|
var duration = 3000; //每张图片的持续显示时间
|
||||||
|
var speed = 1000; //图片切换的动画时间
|
||||||
|
var width = $('#slideshow').width(); //获得单张图片的宽度
|
||||||
|
var curIndex = 0; //设置当前显示图片的索引值
|
||||||
|
var totalIndex = $('#slideshow > ul > li').length; //获得总的图片数量
|
||||||
|
var timer; //设置一个计时变量
|
||||||
|
$('#slideshow > ul > li').each(function(index) {
|
||||||
|
$(this).css("left", index*width+"px"); //设置轮播图片的横向排列
|
||||||
|
$('#slideshow-nav').append("<span>"+(index+1)+"</span>"); //在导航中添加相应的节点
|
||||||
|
});
|
||||||
|
$('#slideshow-nav > span').each(function(index) {
|
||||||
|
$(this).attr("index", index); //存储每个节点的索引值
|
||||||
|
$(this).click(function(){ //当span元素被点击时
|
||||||
|
curIndex = $(this).attr("index")-1; //刷新当前显示图片的索引值
|
||||||
|
clearTimeout(timer); //清除计时
|
||||||
|
move(); //重新执行move函数以显示该图片
|
||||||
|
});
|
||||||
|
});
|
||||||
|
$('#slideshow-nav > span').eq(0).addClass("active"); //设置第一个圆点为active
|
||||||
|
var firstChild = $('#slideshow > ul > li').eq(0).clone(); //将第一张图片复制一份
|
||||||
|
$('#slideshow > ul').append(firstChild); //将该图片添加到列表最末
|
||||||
|
firstChild.css("left", totalIndex*width+"px"); //将复制的第一张图片显示在图片序列最右侧
|
||||||
|
function move(){
|
||||||
|
curIndex++; //使索引值加以1
|
||||||
|
if(curIndex>totalIndex){ //当索引值大于图片总数时
|
||||||
|
curIndex = 1; //表示当前应播放第2张图片
|
||||||
|
$('#slideshow > ul').css("left", "0px"); //将图片序列重置到原点
|
||||||
|
}
|
||||||
|
for(var i=0; i < totalIndex; i++){
|
||||||
|
$('#slideshow-nav > span').eq(i).removeClass("active"); //清除所有导航节点的active类
|
||||||
|
}
|
||||||
|
if(curIndex === totalIndex){
|
||||||
|
$('#slideshow-nav > span').eq(0).addClass("active"); //如果当前索引值等于图片总数,则说明当前正显示第一张图片的副本,因此应激活第一个导航节点
|
||||||
|
}else{
|
||||||
|
$('#slideshow-nav > span').eq(curIndex).addClass("active"); //在其余情况下,则为当前导航节点添加active类
|
||||||
|
}
|
||||||
|
$('#slideshow > ul').animate({left:width*curIndex*-1+"px"},speed); //为图片序列创建动画
|
||||||
|
timer = setTimeout(move,duration+speed); //设置延迟一定时间后执行move函数,延迟时间等于动画时长加上每张图片的持续显示时间
|
||||||
|
}
|
||||||
|
timer = setTimeout(move,duration); //设置延迟一定时间后执行move函数,延迟时间等于每张图片的持续显示时间
|
||||||
|
$('#slideshow').css("height", $('img').height()+"px");
|
||||||
|
$(window).resize(function() {
|
||||||
|
width = $('#slideshow').width();
|
||||||
|
$('#slideshow').css("height", $('img').height()+"px");
|
||||||
|
$('#slideshow > ul > li').each(function(index) {
|
||||||
|
$(this).css("left", index*width+"px"); //设置轮播图片的横向排列
|
||||||
|
});
|
||||||
|
$('#slideshow > ul').stop().animate({left:width*curIndex*-1+"px"},0);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<section id="cotenttwo">
|
||||||
|
<article>
|
||||||
|
<h1>功能模块简介</h1>
|
||||||
|
</article>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<section id="content">
|
||||||
|
<article>
|
||||||
|
<img src="pic_two.jpg" alt="首页">
|
||||||
|
<h1>首页</h1>
|
||||||
|
<p>平台精彩推荐</p>
|
||||||
|
</article>
|
||||||
|
<article>
|
||||||
|
<img src="pic_three.jpg" alt="发现">
|
||||||
|
<h1>发现</h1>
|
||||||
|
<p>线上可以实时互动的</p>
|
||||||
|
</article>
|
||||||
|
<article>
|
||||||
|
<img src="pic_five.jpg" alt="购物车">
|
||||||
|
<h1>购物车</h1>
|
||||||
|
<p>便民购物</p>
|
||||||
|
</article>
|
||||||
|
<article>
|
||||||
|
<img src="pic_four.jpg" alt="物业">
|
||||||
|
<h1>物业</h1>
|
||||||
|
<p>生活缴费</p>
|
||||||
|
</article>
|
||||||
|
<article>
|
||||||
|
<img src="pic_one.jpg" alt="我的">
|
||||||
|
<h1>我的</h1>
|
||||||
|
<p>订单查询</p>
|
||||||
|
</article>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
<section id="cotenttwo">
|
||||||
|
<article>
|
||||||
|
<h1>应用介绍</h1>
|
||||||
|
|
||||||
|
<h1>豆豆智慧社区app是一款量身定制的小区管理软件,可以方便物业进行移动化的管理,实时给大家的生活保驾护航,有任何的需求,都可以直接线上进行反应,提供的服务非常的完善,线上也是可以实时互动的,让大家享受更是便利的社区生活
|
||||||
|
,可以提供物业管理,商城,智能门禁和电梯等系列服务。
|
||||||
|
</h1>
|
||||||
|
</article>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
<section id="cotenttwo">
|
||||||
|
<article>
|
||||||
|
<h1>下载地址(android)</h1>
|
||||||
|
|
||||||
|
|
||||||
|
<div style="text-align: center;">
|
||||||
|
<p>https://www.pgyer.com/zcsd</p>
|
||||||
|
<p></p>
|
||||||
|
<p></p>
|
||||||
|
<img style="text-align: center;" src="zcsd.png">
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
<script src="yaocai/js/index.js"></script>
|
||||||
|
</html>
|
||||||
2
www.py
@@ -13,6 +13,7 @@ from web.interceptors.ErrorInterceptor import *
|
|||||||
'''
|
'''
|
||||||
from web.controllers.index import route_index
|
from web.controllers.index import route_index
|
||||||
from web.controllers.user.User import route_user
|
from web.controllers.user.User import route_user
|
||||||
|
from web.controllers.guanwang.Guanwang import route_guanwang
|
||||||
from web.controllers.static import route_static
|
from web.controllers.static import route_static
|
||||||
|
|
||||||
from web.controllers.food.Food import route_food
|
from web.controllers.food.Food import route_food
|
||||||
@@ -26,6 +27,7 @@ from web.controllers.upload.Upload import route_upload
|
|||||||
from web.controllers.chart import route_chart
|
from web.controllers.chart import route_chart
|
||||||
app.register_blueprint( route_index,url_prefix = "/" )
|
app.register_blueprint( route_index,url_prefix = "/" )
|
||||||
app.register_blueprint( route_user,url_prefix = "/user" )
|
app.register_blueprint( route_user,url_prefix = "/user" )
|
||||||
|
app.register_blueprint( route_guanwang,url_prefix = "/guanwang" )
|
||||||
app.register_blueprint( route_static,url_prefix = "/static" )
|
app.register_blueprint( route_static,url_prefix = "/static" )
|
||||||
app.register_blueprint( route_account,url_prefix = "/account" )
|
app.register_blueprint( route_account,url_prefix = "/account" )
|
||||||
app.register_blueprint( route_food,url_prefix = "/food" )
|
app.register_blueprint( route_food,url_prefix = "/food" )
|
||||||
|
|||||||