获取楼列表
1.后端NewCenter部分:
1.在apps/users/views.py:
from django.shortcuts import render,HttpResponse
from rest_framework.views import APIView,Response
from random import choice
from .models import UserProfile,PianQu,LouMing
import datetime,json,time,hashlib
from .serializers import PianQuModelSerializer,LouMingModelSerializer,UserProfileModelSerializer
# Create your views here.
#……
class GetLouListView(APIView):
"""获取楼列表"""
def get(self, request):
token = request.GET.get('roottoken')
p_id=request.GET.get('aid')
if token:
user = UserProfile.objects.filter(username='admin',token=token).first()
if user:
p_id=int(p_id)
pq=PianQu.objects.filter(id=p_id).first()
wgz=pq.wgz
re_wgz=UserProfileModelSerializer(wgz)
lou_list=LouMing.objects.filter(pianqu=pq)
re_loulist=LouMingModelSerializer(lou_list,many=True)
all_wgy=UserProfile.objects.filter(power=4)
re_wgy=UserProfileModelSerializer(all_wgy,many=True)
result = {"status": "200", "data": {'re_wgz': re_wgz.data,'re_loulist':re_loulist.data,'re_wgy':re_wgy.data}}
else:
result = {"status": "403", "data": {'msg': '请重新登录。'}}
else:
result = {"status": "403", "data": {'msg': '参数不足'}}
return HttpResponse(json.dumps(result, ensure_ascii=False), content_type="application/json,charset=utf-8")
2.在apps/users/urls.py:
from django.urls import path
from .views import RootLoginView,GetPianquListView,GetLouListView
urlpatterns = [
path('rlogin/',RootLoginView.as_view()),#管理员登录
path('getpqlist/',GetPianquListView.as_view()),#获取片区列表
path('getloulist/',GetLouListView.as_view()),#获取楼列表
]
2.前端newpc部分
1.src/api/api.js中:
//获取楼列表
export function getloulist(params1,params2) {
return get(host+'/users/getloulist/', {aid:params1,roottoken:params2});
}
2.在src/components/LouList.vue:
<template>
<div id="loulist">
<div class="content">
<div class="wgz">
<div class="left">
<img :src="wgz.img" alt="照片">
</div>
<div class="right">
<h3>权限:网格长</h3>
<h3>姓名:{{wgz.name}}</h3>
<h3>电话:{{wgz.mobile}}</h3>
<p>工作范围:{{wgz.work}}</p>
</div>
</div>
<div class="boxx">
<el-card class="box-card" v-for="(item,index) in data" :key="index">
<div class="wgy">
<div class="left">
<img :src="item.img" alt="照片">
</div>
<div class="right">
<h3>权限:网格员</h3>
<h3>姓名:{{item.name}}</h3>
<h3>电话:{{item.mobile}}</h3>
<p>工作范围:{{item.work}}</p>
</div>
</div>
<div v-for="(it,k) in item.loulist" :key="k" class="text item" @click="ToDanyuan(it.id)">
{{it.name}}
</div>
</el-card>
</div>
</div>
</div>
</template>
<script>
// 引入模块
import storage from '@/storage.js';
import { host,getloulist} from "@/api/api.js";
export default {
name: 'loulist',
data () {
return {
msg:'楼列表',
data:[
],
wgz:{}
}
},
methods:{
//跳转到单元列表页
ToDanyuan(e){
// console.log(e)
e=e+""
this.$router.push({path:'/danyuan.html?aid='+e})
},
//获取楼列表信息
getLou(aid){
// console.log('获取楼列表')
//----向后端发送数据开始----
getloulist(aid,storage.get('roottoken')).then(res => {
this.data=[]
if(res.status==403){
storage.remove('roottoken')
this.$router.push({path:'/login.html'})
}else{
// console.log(res)
res.data.re_wgz['img']=host+res.data.re_wgz['img']
this.wgz=res.data.re_wgz
for(var i=0;i<res.data.re_wgy.length;i++){
res.data.re_wgy[i].loulist=[]
res.data.re_wgy[i].img=host+res.data.re_wgy[i].img
for(var j=0;j<res.data.re_loulist.length;j++){
if(res.data.re_loulist[j].wgy==res.data.re_wgy[i].id){
res.data.re_wgy[i].loulist.push(res.data.re_loulist[j])
}
}
if(res.data.re_wgy[i].loulist.length>0){
this.data.push(res.data.re_wgy[i])
}
}
// console.log(this.data)
}
}).catch(error => {console.log(error);});
//-----向后端发送数据结束-----
}
},
mounted(){
// console.log(this.$route.query);
this.getLou(this.$route.query.aid)
}
}
</script>
<style scoped>
.content{
width: 1200px;
margin: 0 auto;
min-height: 500px;
border-top:1px solid rgba(0, 0, 0, 0.6);
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
border-radius: 4px;
margin-top: 150px;
}
.wgz{
width: 400px;
height: 200px;
margin: 0 auto;
background-color:#F5F5F5;
/* border:1px solid rgba(0, 0, 0, 0.6); */
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
border-radius: 4px;
margin-top: -100px;
display: flex;
}
.wgy{
width: 400px;
height: 200px;
background-color:#F5F5F5;
/* border:1px solid rgba(0, 0, 0, 0.6); */
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
border-radius: 4px;
display: flex;
}
.left{
width: 150px;
height: 100%;
}
.left img{
width: 100%;
height: 100%;
}
.right{
width: 250px;
height: 100%;
padding: 20px;
overflow:auto
}
.text {
font-size: 14px;
}
.item {
padding: 15px 0;
margin: 15px 0;
background-color: #FFF5EE;
}
.box-card {
margin-top: 30px;
margin-bottom: 30px;
width: 480px;
}
.boxx{
display: flex;
justify-content:space-around;
flex-wrap:wrap
}
</style>