学员单位地图分布

This commit is contained in:
caoqianming 2020-10-13 11:25:40 +08:00
parent 808d488373
commit 48196fd713
6 changed files with 86 additions and 18 deletions

View File

@ -26,7 +26,8 @@ export default {
data(){
return {
admindata1:{},
companydis:{}
companydis:{},
consumerdis:{}
}
},
created(){

View File

@ -108,8 +108,8 @@ export default {
data:['']
},
visualMap: {
min: 0,
max: 10000,
min: this.chartData.min,
max: this.chartData.max,
left: '5%',
top: 'bottom',
text: ['多','少'],

View File

@ -44,6 +44,11 @@
<span>{{ scope.row.create_time }}</span>
</template>
</el-table-column>
<el-table-column label="所在地区">
<template slot-scope="scope" v-if="scope.row.geo">
<span>{{ scope.row.geo.province }}</span>
</template>
</el-table-column>
<el-table-column label="所属">
<template slot-scope="scope">
<span>{{ scope.row.create_admin_name }}</span>

View File

@ -3,7 +3,7 @@ from requests.api import request
from rest_framework.views import APIView
from rest_framework.response import Response
from crm.models import Consumer
from crm.models import Consumer, Company
from examtest.models import ExamTest
from question.models import Question
@ -38,16 +38,53 @@ class Admindata1(APIView):
ret['s'][0]['data'].append(i['total'])
return Response(ret)
nameMap = {
"南海诸岛" : "南海诸岛",
'北京市' :'北京',
'天津市' :'天津',
'上海市' :'上海',
'重庆市' :'重庆',
'河北省' :'河北',
'河南省' :'河南',
'云南省' :'云南',
'辽宁省' :'辽宁',
'黑龙江省' : '黑龙江',
'湖南省' :'湖南',
'安徽省' :'安徽',
'山东省' :'山东',
'新疆维吾尔自治区' :'新疆',
'江苏省' :'江苏',
'浙江省' :'浙江',
'江西省' :'江西',
'湖北省' :'湖北',
'广西壮族自治区' : '广西',
'甘肃省' :'甘肃',
'山西省' :'山西',
'内蒙古自治区' : "内蒙古",
'陕西省' :'陕西',
'吉林省' :'吉林',
'福建省' :'福建',
'贵州省' :'贵州',
'广东省' :'广东',
'青海省' :'青海',
'西藏自治区' :'西藏',
'四川省' :'四川',
'宁夏回族自治区' :'宁夏',
'海南省' :'海南',
'台湾' :'台湾',
'香港' :'香港',
'澳门' :'澳门'
}
class Companydis(APIView):
"""
单位分布
"""
def get(self, request, format=None):
ret = {'s':[{'name':'浙江', 'value':5000}], 't':'单位分布'}
# tmp = UserProfile.objects.filter(is_delete=False).annotate(total=Count('consumer_create_admin')).order_by('-total').values('username', 'total')
# for i in tmp:
# ret['x']['data'].append(i['username'])
# ret['s'][0]['data'].append(i['total'])
ret = {'s':[], 't':'单位分布', 'max':300, 'min':0}
tmp = Company.objects.exclude(geo__isnull=True).values('geo__province').annotate(total=Count('geo__province'))
for i in tmp:
ret['s'].append({'name':nameMap[i['geo__province']], 'value':i['total']})
return Response(ret)
class Consumerdis(APIView):
@ -55,11 +92,10 @@ class Consumerdis(APIView):
学员分布
"""
def get(self, request, format=None):
ret = {'s':[{'name':'河北', 'value':5000}], 't':'学员分布'}
# tmp = UserProfile.objects.filter(is_delete=False).annotate(total=Count('consumer_create_admin')).order_by('-total').values('username', 'total')
# for i in tmp:
# ret['x']['data'].append(i['username'])
# ret['s'][0]['data'].append(i['total'])
ret = {'s':[], 't':'学员分布', 'max':600, 'min':0}
tmp = Consumer.objects.exclude(company__geo__isnull=True).values('company__geo__province').annotate(total=Count('company__geo__province'))
for i in tmp:
ret['s'].append({'name':nameMap[i['company__geo__province']], 'value':i['total']})
return Response(ret)
class Quota(APIView):
'''

View File

@ -0,0 +1,27 @@
# Generated by Django 3.0.4 on 2020-10-13 02:24
from django.conf import settings
import django.contrib.postgres.fields.jsonb
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('crm', '0024_auto_20200901_1105'),
]
operations = [
migrations.AddField(
model_name='company',
name='geo',
field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, null=True, verbose_name='地理位置'),
),
migrations.AlterField(
model_name='consumer',
name='create_admin',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='consumer_create_admin', to=settings.AUTH_USER_MODEL),
),
]

View File

@ -98,7 +98,7 @@ def getPosition(address):
res = requests.get(url, par)
json_data = json.loads(res.text)
if json_data['status'] == '1' and int(json_data['count']) > 0:
return json_data
return json_data['geocodes'][0]
return None
class CompanyViewSet(ModelViewSet):
@ -170,18 +170,17 @@ class CompanyViewSet(ModelViewSet):
else:
return Response({"error":"账号错误"})
@action(methods=['put'], detail=False, url_name='correct_geo',perms_map=[{'*':'correct_geo'}])
@action(methods=['get'], detail=False, url_name='correct_geo',perms_map=[{'*':'correct_geo'}])
def correctgeo(self, request, *args, **kwargs):
"""
地理位置
"""
companys = Company.objects.exclude(geo__isnull=True).order_by('-create_time')
companys = Company.objects.filter(geo__isnull=True).order_by('-create_time')
for i in companys:
geo = getPosition(i.name)
if geo:
i.geo = geo
i.save()
time.sleep(1)
return Response(status=status.HTTP_200_OK)