提交 fff884e5 编写于 作者: 怪力左手's avatar 怪力左手

init

上级
from django.contrib import admin
from home import models,apps
# Register your models here.
from django.apps import AppConfig
from django.contrib import admin
class HomeConfig(AppConfig):
name = 'home'
verbose_name = '数据'
default_auto_field = 'django.db.models.BigAutoField'
class CustomAdmin(admin.ModelAdmin):
actions = ['audit_pass','audit_unpass']
def audit_pass(self, request, queryset):
print('pass')
def audit_unpass(self, request, queryset):
print('pass')
audit_pass.short_description ="通过"
audit_unpass.short_description ="不通过"
\ No newline at end of file
from django.db import models
from django.contrib import admin
from home import apps
#已开业
class Project(models.Model):
class Meta:
verbose_name = '项目整盘情况(整盘动态)'
verbose_name_plural = '项目整盘情况(整盘动态)'
A11 = models.CharField(verbose_name='项目名称',max_length=50)
A12 = models.DateTimeField(verbose_name='项目获取时间')
A13 = models.IntegerField(verbose_name='总建面')
A14 = models.IntegerField(verbose_name='计容建面')
A15 = models.IntegerField(verbose_name='总地价(万元)')
A16 = models.IntegerField(verbose_name='计容楼面价(元/平)',null=True)
A17 = models.IntegerField(verbose_name='总货值(万元)',null=True)
A18 = models.IntegerField(verbose_name='除地价外直投(万元)',null=True)
A19 = models.IntegerField(verbose_name='三费(万元)',null=True)
A20 = models.IntegerField(verbose_name='预计税前成本利润率',null=True)
A21 = models.IntegerField(verbose_name='预计税前利润(万元)',null=True)
A22 = models.IntegerField(verbose_name='税后现金利润(万元)',null=True)
A23 = models.IntegerField(verbose_name='固定资产(万元)',null=True)
A24 = models.IntegerField(verbose_name='累计签约(万元)',null=True)
A25 = models.IntegerField(verbose_name='累计回笼(万元)',null=True)
A26 = models.IntegerField(verbose_name='累计直投(万元)',null=True)
A27 = models.IntegerField(verbose_name='当前贷款余额(万元)',null=True)
A28 = models.IntegerField(verbose_name='经营性现金流(万元)',null=True)
A29 = models.IntegerField(verbose_name='股东投资现金流(万元)',null=True)
CC = models.IntegerField(verbose_name='审核')
class ProjectAdmin(apps.CustomAdmin):
list_display = ["A11"]
admin.site.register(Project,ProjectAdmin)
class AssetManager(models.Model):
class Meta:
verbose_name = '自持资产权属及管理责任'
verbose_name_plural = '自持资产权属及管理责任'
B11 = models.IntegerField(verbose_name='平台公司名称')
B12 = models.IntegerField(verbose_name='项目id')
B13 = models.IntegerField(verbose_name='案名')
B14 = models.IntegerField(verbose_name='资产名')
B15 = models.IntegerField(verbose_name='城市')
B16 = models.IntegerField(verbose_name='项目公司名称')
B17 = models.IntegerField(verbose_name='项目公司是否包含其他资产')
B18 = models.IntegerField(verbose_name='项目公司是否包含其他在售货值')
B19 = models.IntegerField(verbose_name='保利发展股权比例')
B20 = models.IntegerField(verbose_name='合作方')
B21 = models.IntegerField(verbose_name='操盘信息')
B22 = models.IntegerField(verbose_name='是否并表')
B23 = models.IntegerField(verbose_name='预计出表时间')
B24 = models.IntegerField(verbose_name='并表公司')
B25 = models.IntegerField(verbose_name='管理模式')
B26 = models.IntegerField(verbose_name='合同签订起止日期')
B27 = models.IntegerField(verbose_name='合同签订时长')
B28 = models.IntegerField(verbose_name='合作条款核心内容')
B29 = models.IntegerField(verbose_name='资产管理方')
B30 = models.IntegerField(verbose_name='资产实际运营方')
CC = models.IntegerField(verbose_name='审核')
admin.site.register(AssetManager,apps.CustomAdmin)
class AssetInfo(models.Model):
class Meta:
verbose_name = '资产情况'
verbose_name_plural = '资产情况'
P11 = models.IntegerField(verbose_name='项目id')
C11 = models.IntegerField(verbose_name='产品类型')
C12 = models.IntegerField(verbose_name='用地性质')
C13 = models.IntegerField(verbose_name='土地使用年限')
C14 = models.IntegerField(verbose_name='土地剩余使用年数')
C15 = models.IntegerField(verbose_name='自持类型')
C16 = models.IntegerField(verbose_name='政策原文')
C17 = models.IntegerField(verbose_name='施工开始时间')
C18 = models.IntegerField(verbose_name='竣备时间')
C19 = models.IntegerField(verbose_name='开业时间')
C20 = models.IntegerField(verbose_name='账面资产原值(万元)')
C21 = models.IntegerField(verbose_name='账面资产原值单方(元/平米)')
C22 = models.IntegerField(verbose_name='剔除车位后资产原值(万元)')
C23 = models.IntegerField(verbose_name='权益投资(不含税)(万元)')
C24 = models.IntegerField(verbose_name='其中:地价(万元)')
C25 = models.IntegerField(verbose_name='单方地价(元/㎡)')
C26 = models.IntegerField(verbose_name='其中:除地价外总投资(不含税)(万元)')
C27 = models.IntegerField(verbose_name='单方除地价外总投资(元/㎡)')
CC = models.IntegerField(verbose_name='审核')
admin.site.register(AssetInfo,apps.CustomAdmin)
class AssetReport(models.Model):
class Meta:
verbose_name = '资产产权所属公司报表情况'
verbose_name_plural = '资产产权所属公司报表情况'
P11 = models.IntegerField(verbose_name='项目id')
D11 = models.IntegerField(verbose_name='折旧开始时间(年-月)')
D12 = models.IntegerField(verbose_name='折旧年限(年)')
D13 = models.IntegerField(verbose_name='年折旧额(万元)')
D14 = models.IntegerField(verbose_name='累计折旧(万元)')
D15 = models.IntegerField(verbose_name='账面资产净值(万元)')
D16 = models.IntegerField(verbose_name='账面单方资产净值(元/平)')
D17 = models.IntegerField(verbose_name='贷款方式')
D18 = models.IntegerField(verbose_name='贷款授信金额(万元)')
D19 = models.IntegerField(verbose_name='贷款利率(%)')
D20 = models.IntegerField(verbose_name='累计已发生利息(万元)')
D21 = models.IntegerField(verbose_name='预计本年底贷款余额(万元)')
D22 = models.IntegerField(verbose_name='预计本年贷款利息(万元)')
D23 = models.IntegerField(verbose_name='预计下年底贷款余额(万元)')
D24 = models.IntegerField(verbose_name='预计下年贷款利息(万元)')
D25 = models.IntegerField(verbose_name='租金收入(不含税)(万元)')
D26 = models.IntegerField(verbose_name='租金收入是否包含物业费收入')
D27 = models.IntegerField(verbose_name='营业成本及费用(扣除贷款利息)(万元)')
D28 = models.IntegerField(verbose_name='物业费(万元)')
D29 = models.IntegerField(verbose_name='其中:委托管理费(万元)')
D30 = models.IntegerField(verbose_name='净租金收入')
D31 = models.IntegerField(verbose_name='税费(包含房产税、印花税等)(万元)')
D32 = models.IntegerField(verbose_name='其中:土地税(万元)')
D33 = models.IntegerField(verbose_name='其中:房产税(万元)')
D34 = models.IntegerField(verbose_name='房产税计算依据')
D35 = models.IntegerField(verbose_name='本年资产持有成本')
D36 = models.IntegerField(verbose_name='预计本年利润总额(不含税)(万元)')
D37 = models.IntegerField(verbose_name='预计本年所得税(不含税)(万元)')
D38 = models.IntegerField(verbose_name='预计本年净利润(不含税)(万元)')
D39 = models.IntegerField(verbose_name='预计下年利润总额(不含税)(万元)')
D40 = models.IntegerField(verbose_name='预计下年所得税(不含税)(万元)')
D41 = models.IntegerField(verbose_name='预计下年净利润(不含税)(万元)')
CC = models.IntegerField(verbose_name='审核')
admin.site.register(AssetReport,apps.CustomAdmin)
class OperationReport(models.Model):
class Meta:
verbose_name = '产业公司运营数据'
verbose_name_plural = verbose_name
P11 = models.IntegerField(verbose_name='项目id',help_text='去年实际')
E11 = models.IntegerField(verbose_name='出租率',help_text='去年实际')
E12 = models.IntegerField(verbose_name='平均净租金(元/㎡/月)',help_text='去年实际')
E13 = models.IntegerField(verbose_name='营业收入(万元)',help_text='去年实际')
E14 = models.IntegerField(verbose_name='营业成本及费用(扣除贷款利息)(万元)',help_text='去年实际')
E15 = models.IntegerField(verbose_name='EBITDA(万元)',help_text='去年实际')
E16 = models.IntegerField(verbose_name='EBITDA回报率',help_text='去年实际')
E17 = models.IntegerField(verbose_name='出租率',help_text='今年预计')
E18 = models.IntegerField(verbose_name='平均净租金(元/㎡/月)',help_text='今年预计')
E19 = models.IntegerField(verbose_name='营业收入(万元)',help_text='今年预计')
E20 = models.IntegerField(verbose_name='营业成本及费用(扣除贷款利息)(万元)',help_text='今年预计')
E21 = models.IntegerField(verbose_name='EBITDA(万元)',help_text='今年预计')
E22 = models.IntegerField(verbose_name='EBITDA回报率',help_text='今年预计')
E23 = models.IntegerField(verbose_name='出租率',help_text='今年实际')
E24 = models.IntegerField(verbose_name='平均净租金(元/㎡)',help_text='今年实际')
E25 = models.IntegerField(verbose_name='营业收入(万元)',help_text='今年实际')
E26 = models.IntegerField(verbose_name='完成率',help_text='今年实际')
E27 = models.IntegerField(verbose_name='EBITDA(万元)',help_text='今年实际')
E28 = models.IntegerField(verbose_name='完成率',help_text='今年实际')
CC = models.IntegerField(verbose_name='审核')
class OperationReportAdmin(apps.CustomAdmin):
#OperationReport.__doc__[len(OperationReport.__name__)+1:-1].split(',')
list_display = ["E11"]
admin.site.register(OperationReport,OperationReportAdmin)
class Index(models.Model):
class Meta:
verbose_name = '技术指标'
verbose_name_plural = '技术指标'
P11 = models.IntegerField(verbose_name='项目id')
F11 = models.IntegerField(verbose_name='建筑面积(㎡)')
F12 = models.IntegerField(verbose_name='地上建面(㎡)')
F13 = models.IntegerField(verbose_name='地下建面(㎡)')
F14 = models.IntegerField(verbose_name='总经营面积(㎡)')
F15 = models.IntegerField(verbose_name='其中:地上经营面积(㎡)')
F16 = models.IntegerField(verbose_name='其中:地下经营面积(㎡)')
F17 = models.IntegerField(verbose_name='产权面积(㎡)')
F18 = models.IntegerField(verbose_name='其中:地上产权面积(㎡)')
F19 = models.IntegerField(verbose_name='其中:地下产权面积(㎡)')
F20 = models.IntegerField(verbose_name='非产权可经营面积(㎡)')
F21 = models.IntegerField(verbose_name='其中:地上非产权可经营面积(㎡)')
F22 = models.IntegerField(verbose_name='其中:地下非产权可经营面积(㎡)')
F23 = models.IntegerField(verbose_name='车位面积(㎡)')
F24 = models.IntegerField(verbose_name='车位个数(个)')
F25 = models.IntegerField(verbose_name='是否为该类资产单独分割使用车位')
F26 = models.IntegerField(verbose_name='其中:地上车位面积(㎡)')
F27 = models.IntegerField(verbose_name='其中:地上车位个数(个)')
F28 = models.IntegerField(verbose_name='其中:地下车位面积(㎡)')
F29 = models.IntegerField(verbose_name='其中:地下车位个数(个)')
CC = models.IntegerField(verbose_name='审核')
admin.site.register(Index,apps.CustomAdmin)
#在建拟建
class AssetBase(models.Model):
class Meta:
verbose_name = '资产基础情况'
verbose_name_plural = '资产基础情况'
P11 = models.IntegerField(verbose_name='项目id')
G11 = models.IntegerField(verbose_name='产品类型')
G12 = models.IntegerField(verbose_name='自持类型')
G13 = models.IntegerField(verbose_name='政策原文')
G14 = models.IntegerField(verbose_name='用地性质')
G15 = models.IntegerField(verbose_name='土地使用年限')
G16 = models.IntegerField(verbose_name='土地剩余使用年数')
G17 = models.IntegerField(verbose_name='建筑面积(㎡)')
G18 = models.IntegerField(verbose_name='地上建面(㎡)')
G19 = models.IntegerField(verbose_name='地下建面(㎡)')
G20 = models.IntegerField(verbose_name='总经营面积(㎡)')
G21 = models.IntegerField(verbose_name='其中:地上经营面积(㎡)')
G22 = models.IntegerField(verbose_name='其中:地下经营面积(㎡)')
G23 = models.IntegerField(verbose_name='产权面积(㎡)')
G24 = models.IntegerField(verbose_name='其中:地上产权面积(㎡)')
G25 = models.IntegerField(verbose_name='其中:地下产权面积(㎡)')
G26 = models.IntegerField(verbose_name='非产权可经营面积(㎡)')
G27 = models.IntegerField(verbose_name='其中:地上非产权可经营面积(㎡)')
G28 = models.IntegerField(verbose_name='其中:地下非产权可经营面积(㎡)')
G29 = models.IntegerField(verbose_name='车位面积(㎡)')
G30 = models.IntegerField(verbose_name='车位个数(个)')
G31 = models.IntegerField(verbose_name='是否为该类资产单独分割使用车位')
G32 = models.IntegerField(verbose_name='其中:地上车位面积(㎡)')
G33 = models.IntegerField(verbose_name='其中:地上车位个数(个)')
G34 = models.IntegerField(verbose_name='其中:地下车位面积(㎡)')
G35 = models.IntegerField(verbose_name='其中:地下车位个数(个)')
CC = models.IntegerField(verbose_name='审核')
admin.site.register(AssetBase,apps.CustomAdmin)
class AssetConstruct(models.Model):
class Meta:
verbose_name = '资产建设情况'
verbose_name_plural = '资产建设情况'
P11 = models.IntegerField(verbose_name='项目id')
H11 = models.IntegerField(verbose_name='建设状态')
H12 = models.IntegerField(verbose_name='施工开始时间')
H13 = models.IntegerField(verbose_name='竣备时间')
H14 = models.IntegerField(verbose_name='原合同约定交场时间')
H15 = models.IntegerField(verbose_name='计划交场时间')
H16 = models.IntegerField(verbose_name='计划开业时间')
H17 = models.IntegerField(verbose_name='楼栋工程进度')
H18 = models.IntegerField(verbose_name='目前存在的主要问题')
H19 = models.IntegerField(verbose_name='解决方案')
CC = models.IntegerField(verbose_name='审核')
admin.site.register(AssetConstruct,apps.CustomAdmin)
class AssetInvest(models.Model):
class Meta:
verbose_name = '资产投资情况'
verbose_name_plural = '资产投资情况'
P11 = models.IntegerField(verbose_name='项目id')
I11 = models.IntegerField(verbose_name='预计总投资(含税)(万元)')
I12 = models.IntegerField(verbose_name='剔除车位后预计资产总投资(万元)')
I13 = models.IntegerField(verbose_name='总投资(含税)-权益(万元)')
I14 = models.IntegerField(verbose_name='预计单方投资(元/㎡)')
I15 = models.IntegerField(verbose_name='预计账面资产原值(万元)')
I16 = models.IntegerField(verbose_name='剔除车位后预计账面资产原值(万元)')
I17 = models.IntegerField(verbose_name='预计账面资产原值单方(元/平米)')
I18 = models.IntegerField(verbose_name='其中:地价(万元)')
I19 = models.IntegerField(verbose_name='地价单方(元/㎡)')
I20 = models.IntegerField(verbose_name='其中:除地价外总投资(万元)')
I21 = models.IntegerField(verbose_name='除地价外总投资单方(元/㎡)')
I22 = models.IntegerField(verbose_name='已发生总投资(含税)(万元)')
I23 = models.IntegerField(verbose_name='其中:已发生地价(含税)(万元)')
I24 = models.IntegerField(verbose_name='其中:已发生除地价外总投资(含税)(万元)')
CC = models.IntegerField(verbose_name='审核')
admin.site.register(AssetInvest,apps.CustomAdmin)
#经营月报
class Operation(models.Model):
class Meta:
verbose_name = '经营月报'
verbose_name_plural = '经营月报'
P11 = models.IntegerField(verbose_name='项目id')
J12 = models.FloatField(verbose_name='资产原值(亿元)')
J13 = models.FloatField(verbose_name='账面单方(元/平)')
J14 = models.IntegerField(verbose_name='可出租房间数')
J15 = models.FloatField(verbose_name='出租率-完成值')
J16 = models.FloatField(verbose_name='出租率-同比')
J17 = models.FloatField(verbose_name='客房收入坪效(元/平/月)-完成值')
J18 = models.FloatField(verbose_name='客房收入坪效(元/平/月)-同比')
J19 = models.FloatField(verbose_name='营业收入-本年计划')
J20 = models.FloatField(verbose_name='营业收入-完成值')
J21 = models.FloatField(verbose_name='营业收入-进度')
J22 = models.FloatField(verbose_name='NOP(万元)-本年计划')
J23 = models.FloatField(verbose_name='NOP(万元)-完成值')
J24 = models.FloatField(verbose_name='NOP(万元)-累计进度')
J25 = models.FloatField(verbose_name='NPI(万元)-2023年NPI值预计')
J26 = models.FloatField(verbose_name='NPI(万元)-2023NPI当月完成值')
J27 = models.FloatField(verbose_name='NPI(万元)-2023累计完成值')
J28 = models.FloatField(verbose_name='NPI(万元)-NPI值累计进度')
J29 = models.FloatField(verbose_name='资产回报率(%)-2022年资产回报率')
J30 = models.FloatField(verbose_name='资产回报率(%)-2022年资产回报率预计')
CC = models.IntegerField(verbose_name='审核')
admin.site.register(Operation,apps.CustomAdmin)
class AssetPrice(models.Model):
class Meta:
verbose_name = '预计资产稳定期经营价值(第五年)'
verbose_name_plural = '预计资产稳定期经营价值(第五年)'
P11 = models.IntegerField(verbose_name='项目id')
K11 = models.FloatField(verbose_name='出租率')
K11 = models.FloatField(verbose_name='平均净租金(元/㎡/月')
K11 = models.FloatField(verbose_name='营业收入(万元)')
K11 = models.FloatField(verbose_name='营业成本及费用(扣除贷款利息)(万元)')
K11 = models.FloatField(verbose_name='EBITDA(万元)')
K11 = models.FloatField(verbose_name='EBITDA回报率')
admin.site.register(AssetPrice,apps.CustomAdmin)
\ No newline at end of file
from django.test import TestCase
# Create your tests here.
from django.shortcuts import render
from django.http import JsonResponse,HttpResponse
from django.core import serializers
from django.views.decorators.http import require_http_methods
from home import models
import json
# Create your views here.
def index(request):
return render(request,'index.html')
def project(request):
data = {}
data["data"] = json.loads(serializers.serialize("json", models.Project.objects.all()))
data["fieldname"]=list(map(lambda x:{"name":x.verbose_name,"value":x.name},models.Project._meta._get_fields()))[1:-1]
return JsonResponse(data,safe=False)
def assetmanager(request):
data = {}
data["data"] = json.loads(serializers.serialize("json", models.AssetManager.objects.all()))
data["fieldname"]=list(map(lambda x:{"name":x.verbose_name,"value":x.name},models.AssetManager._meta._get_fields()))[1:-1]
return JsonResponse(data,safe=False)
def assetinfo(request):
data = {}
data["data"] = json.loads(serializers.serialize("json", models.AssetInfo.objects.all()))
data["fieldname"]=list(map(lambda x:{"name":x.verbose_name,"value":x.name},models.AssetInfo._meta._get_fields()))[1:-1]
return JsonResponse(data,safe=False)
def assetreport(request):
data = {}
data["data"] = json.loads(serializers.serialize("json", models.AssetReport.objects.all()))
data["fieldname"]=list(map(lambda x:{"name":x.verbose_name,"value":x.name},models.AssetReport._meta._get_fields()))[1:-1]
return JsonResponse(data,safe=False)
def operatereport(request):
data = {}
data["data"] = json.loads(serializers.serialize("json", models.OperationReport.objects.all()))
data["fieldname"]=list(map(lambda x:{"name":x.verbose_name,"value":x.name},models.OperationReport._meta._get_fields()))[1:-1]
return JsonResponse(data,safe=False)
def indexdb(request):
data = {}
data["data"] = json.loads(serializers.serialize("json", models.Project.objects.all()))
data["fieldname"]=list(map(lambda x:{"name":x.verbose_name,"value":x.name},models.Project._meta._get_fields()))[1:-1]
return JsonResponse(json.loads(serializers.serialize("json", models.Index.objects.all())),safe=False)
def assetbase(request):
data = {}
data["data"] = json.loads(serializers.serialize("json", models.AssetBase.objects.all()))
data["fieldname"]=list(map(lambda x:{"name":x.verbose_name,"value":x.name},models.AssetBase._meta._get_fields()))[1:-1]
return JsonResponse(data,safe=False)
def assetconstruct(request):
data = {}
data["data"] = json.loads(serializers.serialize("json", models.AssetConstruct.objects.all()))
data["fieldname"]=list(map(lambda x:{"name":x.verbose_name,"value":x.name},models.AssetConstruct._meta._get_fields()))[1:-1]
return JsonResponse(data,safe=False)
def assetinvest(request):
data = {}
data["data"] = json.loads(serializers.serialize("json", models.AssetInvest.objects.all()))
data["fieldname"]=list(map(lambda x:{"name":x.verbose_name,"value":x.name},models.AssetInvest._meta._get_fields()))[1:-1]
return JsonResponse(data,safe=False)
def operation(request):
data = {}
data["data"] = json.loads(serializers.serialize("json", models.Operation.objects.all()))
data["fieldname"]=list(map(lambda x:{"name":x.verbose_name,"value":x.name},models.Operation._meta._get_fields()))[1:-1]
return JsonResponse(data,safe=False)
\ No newline at end of file
#!/usr/bin/env python
"""Django's command-line utility for administrative tasks."""
import os
import sys
def main():
"""Run administrative tasks."""
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'report.settings')
try:
from django.core.management import execute_from_command_line
except ImportError as exc:
raise ImportError(
"Couldn't import Django. Are you sure it's installed and "
"available on your PYTHONPATH environment variable? Did you "
"forget to activate a virtual environment?"
) from exc
execute_from_command_line(sys.argv)
if __name__ == '__main__':
main()
.DS_Store
node_modules
/dist
# local env files
.env.local
.env.*.local
# Log files
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
# report
## Project setup
```
npm install
```
### Compiles and hot-reloads for development
```
npm run serve
```
### Compiles and minifies for production
```
npm run build
```
### Lints and fixes files
```
npm run lint
```
### Customize configuration
See [Configuration Reference](https://cli.vuejs.org/config/).
module.exports = {
presets: [
'@vue/cli-plugin-babel/preset'
]
}
{
"compilerOptions": {
"target": "es5",
"module": "esnext",
"baseUrl": "./",
"moduleResolution": "node",
"paths": {
"@/*": [
"src/*"
]
},
"lib": [
"esnext",
"dom",
"dom.iterable",
"scripthost"
]
}
}
此差异已折叠。
{
"name": "report",
"version": "0.1.0",
"private": true,
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"lint": "vue-cli-service lint"
},
"dependencies": {
"core-js": "^3.8.3",
"echarts": "^5.4.3",
"element-plus": "^2.3.9",
"vue": "^3.2.13"
},
"devDependencies": {
"@babel/core": "^7.12.16",
"@babel/eslint-parser": "^7.12.16",
"@vue/cli-plugin-babel": "~5.0.0",
"@vue/cli-plugin-eslint": "~5.0.0",
"@vue/cli-service": "~5.0.0",
"eslint": "^7.32.0",
"eslint-plugin-vue": "^8.0.3"
},
"eslintConfig": {
"root": true,
"env": {
"node": true
},
"extends": [
"plugin:vue/vue3-essential",
"eslint:recommended"
],
"parserOptions": {
"parser": "@babel/eslint-parser"
},
"rules": {
"no-debugger": "off",
"no-console": "off"
}
},
"browserslist": [
"> 1%",
"last 2 versions",
"not dead",
"not ie 11"
]
}
<!DOCTYPE html>
<html lang="">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<title><%= htmlWebpackPlugin.options.title %></title>
</head>
<body>
<noscript>
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
</noscript>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
</html>
<template>
<el-container class="full">
<el-header>
<div class="head">资产管理数据看板</div>
</el-header>
<el-main class="full" style="margin-top: 30px;">
<el-row :gutter="4" class="full">
<el-col :span="8" >
<TablePage :columns="td_head[0]" :tableData="td_value[0]" title="集中商业" style="height: 40%;" detail="新开项目:大都汇" link="/detail"/>
<TablePage :columns="td_head[1]" :tableData="td_value[1]" title="酒店及服务式公寓" style="height: 30%;"/>
<TablePage :columns="td_head[2]" :tableData="td_value[2]" title="景区资产" style="height: 30%;" />
</el-col>
<el-col :span="8" >
<ChartPage :columns="td_head[3]" :tableData="td_value[3]" title="资产分布情况" :option="pie_data" style="height: 30%;"/>
<TablePage :columns="td_head[4]" :tableData="td_value[4]" title="核心指标" style="height: 40%;"/>
<ChartPage :columns="td_head[5]" :tableData="td_value[5]" title="收入及NPI走势" :option="bar_data" style="height: 30%;"/>
</el-col>
<el-col :span="8">
<TablePage :columns="td_head[6]" :tableData="td_value[6]" title="长租公寓" style="height: 60%;"/>
<TablePage :columns="td_head[7]" :tableData="td_value[7]" title="租赁类资产" style="height: 40%;"/>
</el-col>
</el-row>
</el-main>
</el-container>
</template>
<script>
import ChartPage from './components/ChartPage.vue'
import TablePage from './components/TablePage.vue'
export default {
name: 'App',
components: {
ChartPage,
TablePage
},
data(){
return {
pie_data:{
title: [
{
text: '总体资产面积',
subtext: '35000m²',
textAlign:'center',
left: '30%'
},
{
text: '总体资产金额',
subtext: '54000亿',
textAlign:'center',
left: '70%'
}
],
tooltip: {
trigger: 'item',
formatter: '{a} <br/>{b} : {c} ({d}%)'
},
legend: {
left: 'center',
top: 'bottom',
},
series: [
{
name: 'Area Mode',
type: 'pie',
radius: [10, 70],
center: ['10%', '50%'],
roseType: 'area',
label: {
show: false
},
itemStyle: {
borderRadius: 5
},
data: [
{ value: 30, name: 'rose 1' },
{ value: 28, name: 'rose 2' },
{ value: 26, name: 'rose 3' },
{ value: 24, name: 'rose 4' },
{ value: 22, name: 'rose 5' },
]
},
{
name: 'Area Mode',
type: 'pie',
radius: [10, 70],
center: ['36.66%', '50%'],
roseType: 'area',
label: {
show: false
},
itemStyle: {
borderRadius: 5
},
data: [
{ value: 30, name: 'rose 1' },
{ value: 28, name: 'rose 2' },
{ value: 26, name: 'rose 3' },
{ value: 24, name: 'rose 4' },
{ value: 22, name: 'rose 5' },
]
},
{
name: 'Area Mode',
type: 'pie',
radius: [10, 70],
center: ['63%', '50%'],
roseType: 'area',
label: {
show: false
},
itemStyle: {
borderRadius: 5
},
data: [
{ value: 30, name: 'rose 1' },
{ value: 28, name: 'rose 2' },
{ value: 26, name: 'rose 3' },
{ value: 24, name: 'rose 4' },
{ value: 22, name: 'rose 5' },
]
},{
name: 'Area Mode',
type: 'pie',
radius: [10, 70],
center: ['89%', '50%'],
roseType: 'area',
label: {
show: false
},
itemStyle: {
borderRadius: 5
},
data: [
{ value: 30, name: 'rose 1' },
{ value: 28, name: 'rose 2' },
{ value: 26, name: 'rose 3' },
{ value: 24, name: 'rose 4' },
{ value: 22, name: 'rose 5' },
]
}
]
},
bar_data: {
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'cross',
crossStyle: {
color: '#999'
}
}
},
legend: {
data: ['Evaporation', 'Precipitation', 'Temperature']
},
xAxis: [
{
type: 'category',
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
axisPointer: {
type: 'shadow'
}
}
],
yAxis: [
{
type: 'value',
name: 'Precipitation',
min: 0,
max: 250,
interval: 50,
axisLabel: {
formatter: '{value} ml'
}
},
{
type: 'value',
name: 'Temperature',
min: 0,
max: 25,
interval: 5,
axisLabel: {
formatter: '{value} °C'
}
}
],
series: [
{
name: 'Evaporation',
type: 'bar',
tooltip: {
valueFormatter: function (value) {
return value + ' ml';
}
},
data: [
2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3
]
},
{
name: 'Precipitation',
type: 'bar',
tooltip: {
valueFormatter: function (value) {
return value + ' ml';
}
},
data: [
2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3
]
},
{
name: 'Temperature',
type: 'line',
yAxisIndex: 1,
tooltip: {
valueFormatter: function (value) {
return value + ' °C';
}
},
data: [2.0, 2.2, 3.3, 4.5, 6.3, 10.2, 20.3, 23.4, 23.0, 16.5, 12.0, 6.2]
}
]
},
td_value:[[],[],[],[],[],[],[],[]],
td_head:[{},{},{},{},{},{},{},{}]
}
},
mounted(){
fetch('project/').then(o=>o.json()).then(o=>{
this.td_head[0]=o.fieldname
this.td_value[0]=o.data.map(o=>o.fields)
})
},
}
</script>
<style>
html,body{
height: 100%;
margin:0;
}
#app {
font-family: Avenir, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
width: 100%;
height: 100%;
background-image:url(../src/assets/bg@2x.png);
background-repeat: no-repeat;
background-size:cover;
position: fixed;
}
.head{
background-image:url(../src/assets/biaoti@2x.png);
background-repeat: no-repeat;
background-size:cover;
color: aqua;
font-size:x-large;
height: 70px;
width: 100%;
justify-content:center;
align-items: center;
display:flex;
}
.full{
height: 100%;
}
</style>
<template>
<el-col>
<el-row class="title">
<p>{{ title }}</p>
</el-row>
<el-row>
<div ref="chart" style="width:100vw;margin:0 3px;" ></div>
</el-row>
</el-col>
</template>
<script>
import * as echarts from 'echarts';
export default {
props: ['title','option','height'],
mounted() {
//this.$refs.table.height
const myChart = echarts.init(this.$refs.chart);
myChart.setOption(this.option);
window.addEventListener("resize",()=>myChart.resize())
}
}
</script>
<style scoped>
.title{
background-image:url(../assets/title@2x.png);
background-repeat: no-repeat;
background-size:cover;
height: 40px;
}
.title p{
margin:0 20px;
text-align:left;
color: white;
display: flex;
align-items: center;
}
</style>
\ No newline at end of file
<template>
<el-col>
<el-row class="title" >
<p>{{title}}</p>
</el-row>
<el-row>
<p>{{detail}}</p>
<el-link src="{{link}}" type="warning" style="margin: 0 10px;">详情</el-link>
<el-table ref="table" style="margin:0 3px;background:transparent;" :header-cell-style="{background:'#2e4a89',color:'#676d7c'}"
:cell-style="{background:'#101d3c',color:'#fff'}" :data="this.tableData">
<el-table-column v-for="(it,id) in this.columns" :key="id" :label="it.name" :prop="it.value"></el-table-column>
</el-table>
</el-row>
</el-col>
</template>
<script>
export default {
props: ['title','detail',"link","tableData","columns"],
data(){
return {
}
},
mounted(){
//this.$refs.table.height
//this.$el.height = 300;
}
}
</script>
<style scoped>
.title{
background-image:url(../assets/title@2x.png);
background-repeat: no-repeat;
background-size:cover;
height: 40px;
}
p{
margin:0 20px;
text-align:left;
color: white;
display: flex;
align-items: center;
}
</style>
\ No newline at end of file
import { createApp } from 'vue'
import App from './App.vue'
import ElementPlus from 'element-plus';
import 'element-plus/theme-chalk/index.css';
createApp(App).use(ElementPlus).mount('#app')
const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
transpileDependencies: true,
productionSourceMap: true,
assetsDir: "src/assets",
publicPath: './',
configureWebpack:{
devtool: 'source-map'//'cheap-module-source-map',
},
devServer: {
proxy: 'http://localhost:8081/',
},
})
"""
ASGI config for report project.
It exposes the ASGI callable as a module-level variable named ``application``.
For more information on this file, see
https://docs.djangoproject.com/en/4.2/howto/deployment/asgi/
"""
import os
from django.core.asgi import get_asgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'report.settings')
application = get_asgi_application()
"""
Django settings for report project.
Generated by 'django-admin startproject' using Django 4.2.4.
For more information on this file, see
https://docs.djangoproject.com/en/4.2/topics/settings/
For the full list of settings and their values, see
https://docs.djangoproject.com/en/4.2/ref/settings/
"""
import os
from pathlib import Path
# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent
# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/4.2/howto/deployment/checklist/
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'django-insecure-r*pb744d8u)8d2!+yt$i+wyc1)ap-b(@+^&-u33(e%dvd@csvw'
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
ALLOWED_HOSTS = []
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'home',
]
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
ROOT_URLCONF = 'report.urls'
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'pages/dist')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
WSGI_APPLICATION = 'report.wsgi.application'
# Database
# https://docs.djangoproject.com/en/4.2/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
"NAME": "dj",
"USER": "root",
"PASSWORD": "123456",
"HOST": "127.0.0.1",
"PORT": "3306",
}
}
# Password validation
# https://docs.djangoproject.com/en/4.2/ref/settings/#auth-password-validators
AUTH_PASSWORD_VALIDATORS = [
{
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
},
]
# Internationalization
# https://docs.djangoproject.com/en/4.2/topics/i18n/
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_TZ = True
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/4.2/howto/static-files/
STATIC_URL = 'src/'
STATICFILES_DIRS=[
os.path.join(BASE_DIR, "pages/dist/src"),
]
# Default primary key field type
# https://docs.djangoproject.com/en/4.2/ref/settings/#default-auto-field
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
"""
URL configuration for report project.
The `urlpatterns` list routes URLs to views. For more information please see:
https://docs.djangoproject.com/en/4.2/topics/http/urls/
Examples:
Function views
1. Add an import: from my_app import views
2. Add a URL to urlpatterns: path('', views.home, name='home')
Class-based views
1. Add an import: from other_app.views import Home
2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
Including another URLconf
1. Import the include() function: from django.urls import include, path
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
"""
from django.conf.urls import include
from django.contrib import admin
from django.urls import path
from home import views
urlpatterns = [
path('admin/', admin.site.urls),
path('', views.index),
path('project/',views.project),
path('assetbase/',views.assetbase),
path('assetconstruct/',views.assetconstruct),
path('assetinfo/',views.assetinfo),
path('assetinvest/',views.assetinvest),
path('assetmanager/',views.assetmanager),
path('assetreport/',views.assetreport),
path('operate/',views.operation),
path('operatereport/',views.operatereport),
path('indexdb/',views.indexdb),
]
"""
WSGI config for report project.
It exposes the WSGI callable as a module-level variable named ``application``.
For more information on this file, see
https://docs.djangoproject.com/en/4.2/howto/deployment/wsgi/
"""
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'report.settings')
application = get_wsgi_application()
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册