学员单位地图分布
This commit is contained in:
parent
808d488373
commit
48196fd713
|
@ -26,7 +26,8 @@ export default {
|
||||||
data(){
|
data(){
|
||||||
return {
|
return {
|
||||||
admindata1:{},
|
admindata1:{},
|
||||||
companydis:{}
|
companydis:{},
|
||||||
|
consumerdis:{}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
created(){
|
created(){
|
||||||
|
|
|
@ -108,8 +108,8 @@ export default {
|
||||||
data:['']
|
data:['']
|
||||||
},
|
},
|
||||||
visualMap: {
|
visualMap: {
|
||||||
min: 0,
|
min: this.chartData.min,
|
||||||
max: 10000,
|
max: this.chartData.max,
|
||||||
left: '5%',
|
left: '5%',
|
||||||
top: 'bottom',
|
top: 'bottom',
|
||||||
text: ['多','少'],
|
text: ['多','少'],
|
||||||
|
|
|
@ -44,6 +44,11 @@
|
||||||
<span>{{ scope.row.create_time }}</span>
|
<span>{{ scope.row.create_time }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</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="所属">
|
<el-table-column label="所属">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<span>{{ scope.row.create_admin_name }}</span>
|
<span>{{ scope.row.create_admin_name }}</span>
|
||||||
|
|
|
@ -3,7 +3,7 @@ from requests.api import request
|
||||||
from rest_framework.views import APIView
|
from rest_framework.views import APIView
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
|
|
||||||
from crm.models import Consumer
|
from crm.models import Consumer, Company
|
||||||
from examtest.models import ExamTest
|
from examtest.models import ExamTest
|
||||||
from question.models import Question
|
from question.models import Question
|
||||||
|
|
||||||
|
@ -38,16 +38,53 @@ class Admindata1(APIView):
|
||||||
ret['s'][0]['data'].append(i['total'])
|
ret['s'][0]['data'].append(i['total'])
|
||||||
return Response(ret)
|
return Response(ret)
|
||||||
|
|
||||||
|
nameMap = {
|
||||||
|
"南海诸岛" : "南海诸岛",
|
||||||
|
'北京市' :'北京',
|
||||||
|
'天津市' :'天津',
|
||||||
|
'上海市' :'上海',
|
||||||
|
'重庆市' :'重庆',
|
||||||
|
'河北省' :'河北',
|
||||||
|
'河南省' :'河南',
|
||||||
|
'云南省' :'云南',
|
||||||
|
'辽宁省' :'辽宁',
|
||||||
|
'黑龙江省' : '黑龙江',
|
||||||
|
'湖南省' :'湖南',
|
||||||
|
'安徽省' :'安徽',
|
||||||
|
'山东省' :'山东',
|
||||||
|
'新疆维吾尔自治区' :'新疆',
|
||||||
|
'江苏省' :'江苏',
|
||||||
|
'浙江省' :'浙江',
|
||||||
|
'江西省' :'江西',
|
||||||
|
'湖北省' :'湖北',
|
||||||
|
'广西壮族自治区' : '广西',
|
||||||
|
'甘肃省' :'甘肃',
|
||||||
|
'山西省' :'山西',
|
||||||
|
'内蒙古自治区' : "内蒙古",
|
||||||
|
'陕西省' :'陕西',
|
||||||
|
'吉林省' :'吉林',
|
||||||
|
'福建省' :'福建',
|
||||||
|
'贵州省' :'贵州',
|
||||||
|
'广东省' :'广东',
|
||||||
|
'青海省' :'青海',
|
||||||
|
'西藏自治区' :'西藏',
|
||||||
|
'四川省' :'四川',
|
||||||
|
'宁夏回族自治区' :'宁夏',
|
||||||
|
'海南省' :'海南',
|
||||||
|
'台湾' :'台湾',
|
||||||
|
'香港' :'香港',
|
||||||
|
'澳门' :'澳门'
|
||||||
|
}
|
||||||
|
|
||||||
class Companydis(APIView):
|
class Companydis(APIView):
|
||||||
"""
|
"""
|
||||||
单位分布
|
单位分布
|
||||||
"""
|
"""
|
||||||
def get(self, request, format=None):
|
def get(self, request, format=None):
|
||||||
ret = {'s':[{'name':'浙江', 'value':5000}], 't':'单位分布'}
|
ret = {'s':[], 't':'单位分布', 'max':300, 'min':0}
|
||||||
# tmp = UserProfile.objects.filter(is_delete=False).annotate(total=Count('consumer_create_admin')).order_by('-total').values('username', 'total')
|
tmp = Company.objects.exclude(geo__isnull=True).values('geo__province').annotate(total=Count('geo__province'))
|
||||||
# for i in tmp:
|
for i in tmp:
|
||||||
# ret['x']['data'].append(i['username'])
|
ret['s'].append({'name':nameMap[i['geo__province']], 'value':i['total']})
|
||||||
# ret['s'][0]['data'].append(i['total'])
|
|
||||||
return Response(ret)
|
return Response(ret)
|
||||||
|
|
||||||
class Consumerdis(APIView):
|
class Consumerdis(APIView):
|
||||||
|
@ -55,11 +92,10 @@ class Consumerdis(APIView):
|
||||||
学员分布
|
学员分布
|
||||||
"""
|
"""
|
||||||
def get(self, request, format=None):
|
def get(self, request, format=None):
|
||||||
ret = {'s':[{'name':'河北', 'value':5000}], 't':'学员分布'}
|
ret = {'s':[], 't':'学员分布', 'max':600, 'min':0}
|
||||||
# tmp = UserProfile.objects.filter(is_delete=False).annotate(total=Count('consumer_create_admin')).order_by('-total').values('username', 'total')
|
tmp = Consumer.objects.exclude(company__geo__isnull=True).values('company__geo__province').annotate(total=Count('company__geo__province'))
|
||||||
# for i in tmp:
|
for i in tmp:
|
||||||
# ret['x']['data'].append(i['username'])
|
ret['s'].append({'name':nameMap[i['company__geo__province']], 'value':i['total']})
|
||||||
# ret['s'][0]['data'].append(i['total'])
|
|
||||||
return Response(ret)
|
return Response(ret)
|
||||||
class Quota(APIView):
|
class Quota(APIView):
|
||||||
'''
|
'''
|
||||||
|
|
|
@ -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),
|
||||||
|
),
|
||||||
|
]
|
|
@ -98,7 +98,7 @@ def getPosition(address):
|
||||||
res = requests.get(url, par)
|
res = requests.get(url, par)
|
||||||
json_data = json.loads(res.text)
|
json_data = json.loads(res.text)
|
||||||
if json_data['status'] == '1' and int(json_data['count']) > 0:
|
if json_data['status'] == '1' and int(json_data['count']) > 0:
|
||||||
return json_data
|
return json_data['geocodes'][0]
|
||||||
return None
|
return None
|
||||||
|
|
||||||
class CompanyViewSet(ModelViewSet):
|
class CompanyViewSet(ModelViewSet):
|
||||||
|
@ -170,18 +170,17 @@ class CompanyViewSet(ModelViewSet):
|
||||||
else:
|
else:
|
||||||
return Response({"error":"账号错误"})
|
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):
|
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:
|
for i in companys:
|
||||||
geo = getPosition(i.name)
|
geo = getPosition(i.name)
|
||||||
if geo:
|
if geo:
|
||||||
i.geo = geo
|
i.geo = geo
|
||||||
i.save()
|
i.save()
|
||||||
time.sleep(1)
|
|
||||||
return Response(status=status.HTTP_200_OK)
|
return Response(status=status.HTTP_200_OK)
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue