1.31 财务分析,财务数据模块完善,产业链桑基图展示

This commit is contained in:
尚政杰
2026-01-31 17:19:16 +08:00
parent 1c13386dfc
commit 0a2dab4936
527 changed files with 3390 additions and 604 deletions

View File

@@ -268,6 +268,7 @@
this.option1.xAxis.data = category
this.option1.series[0].data = data1
this.profitabilityInit()
this.option2.xAxis.data = category
this.option2.series[0].data = data2
this.perShareInit()
}

View File

@@ -1,7 +1,7 @@
<template>
<view>
<!-- 资产负债表 -->
<view @click="itemClick(0)" style="color: #2B2B2B; font-weight: 500; font-size: 24rpx;">
<view style="color: #2B2B2B; font-weight: 500; font-size: 24rpx;">
<view style="display: flex;align-items: center; padding: 20rpx; box-sizing: border-box;">
<image src="/pagesStock/static/icon/cwfx-1.png" mode="widthFix"
style="width: 40rpx; height: 40rpx;"></image>
@@ -16,14 +16,12 @@
{{item}}
</view>
</view>
<view class="flex" style="padding: 20rpx;">
<view class="flex1" style="font-size: 28rpx;">查看详细数据</view>
<view
style="color: #F2C369; font-size: 22rpx; padding: 2rpx 10rpx; border-radius: 5rpx; border: 1rpx solid #F2C369; text-align: center; margin: 0 10rpx;">
单季度</view>
<view
style="display: flex; align-items: center; padding: 3rpx 10rpx; box-sizing: border-box; border: 1rpx solid #D2D2D2;">
<view class="flex" style="padding: 3rpx 10rpx; border: 1rpx solid #D2D2D2;">
<image style="width: 23rpx; height: 23rpx;" src="/pagesStock/static/icon/all-icon.png"
mode="widthFix"></image>
<view style="margin: 0 10rpx; color: #999999; font-size: 22rpx;">全部</view>
@@ -34,29 +32,28 @@
<view style="height: 400rpx;">
<l-echart ref="chartRef1"></l-echart>
</view>
<view v-if="financialBalanceList.length>0" style="background-color: #FAFAFC; border-radius: 10rpx; margin: 0 20rpx; padding: 20rpx 0;">
<view style="display: flex; align-items: center; justify-content: space-between; font-size: 24rpx; font-weight: 500; margin: 20rpx;">
<view class="flex between" style="font-size: 24rpx; font-weight: 500; margin: 20rpx;">
<view style="flex: 1; color: #999999; margin-right: 20rpx;">资产总计</view>
<view style="text-align: right; color: #2A2A2A;">{{getNumStr(financialBalanceList[0].assets.total)}}</view>
</view>
<view style="display: flex; align-items: center; justify-content: space-between; font-size: 24rpx; font-weight: 500; margin: 20rpx;">
<view class="flex between" style="font-size: 24rpx; font-weight: 500; margin: 20rpx;">
<view style="flex: 1; color: #999999; margin-right: 20rpx;">负债合计</view>
<view style="text-align: right; color: #2A2A2A;">{{getNumStr(financialBalanceList[0].liabilities.total)}}</view>
</view>
<view style="display: flex; align-items: center; justify-content: space-between; font-size: 24rpx; font-weight: 500; margin: 20rpx;">
<view class="flex between" style="font-size: 24rpx; font-weight: 500; margin: 20rpx;">
<view style="flex: 1; color: #999999; margin-right: 20rpx;">所有者权益</view>
<view style="text-align: right; color: #2A2A2A;">{{getNumStr(financialBalanceList[0].equity.total)}}</view>
</view>
<view style="display: flex; align-items: center; justify-content: space-between; font-size: 24rpx; font-weight: 500; margin: 20rpx;">
<view class="flex between" style="font-size: 24rpx; font-weight: 500; margin: 20rpx;">
<view style="flex: 1; color: #999999; margin-right: 20rpx;">货币资金</view>
<view style="text-align: right; color: #2A2A2A;">{{getNumStr(financialBalanceList[0].assets.current_assets.cash)}}</view>
</view>
<view style="display: flex; align-items: center; justify-content: space-between; font-size: 24rpx; font-weight: 500; margin: 20rpx;">
<view class="flex between" style="font-size: 24rpx; font-weight: 500; margin: 20rpx;">
<view style="flex: 1; color: #999999; margin-right: 20rpx;">资本公积金</view>
<view style="text-align: right; color: #2A2A2A;">{{getNumStr(financialBalanceList[0].equity.capital_reserve)}}</view>
</view>
<view class="flex between" style=" font-size: 24rpx; font-weight: 500; margin: 20rpx;">
<view class="flex between" style="font-size: 24rpx; font-weight: 500; margin: 20rpx;">
<view style="flex: 1; color: #999999; margin-right: 20rpx;">盈余公积金</view>
<view style="text-align: right; color: #2A2A2A;">{{getNumStr(financialBalanceList[0].equity.surplus_reserve)}}</view>
</view>
@@ -75,20 +72,17 @@
<image src="/static/icon/home/conceptCenter/next.png" mode="widthFix"
style="width: 13rpx; height: 22rpx;"></image>
</view>
<view class="indicatorC" style="display: grid; gap: 20rpx; grid-template-columns: repeat(3, 1fr); margin: 0 20rpx;">
<view :class="'item flexCenter '+(cashFlowIndicatorIndex==index?'select':'')" v-for="(item,index) in ['经营现金流', '筹资现金流', '投资现金流']" :key="index" @click="clickCashFlowIndicatorItem(index)">
{{item}}
</view>
</view>
<view class="flex" style="padding: 20rpx;">
<view class="flex1" style="font-size: 28rpx;">查看详细数据</view>
<view
style="color: #F2C369; font-size: 22rpx; padding: 2rpx 10rpx; border-radius: 5rpx; border: 1rpx solid #F2C369; text-align: center; margin: 0 10rpx;">
单季度</view>
<view
style="display: flex; align-items: center; padding: 3rpx 10rpx; box-sizing: border-box; border: 1rpx solid #D2D2D2;">
<view class="flex" style="padding: 3rpx 10rpx; border: 1rpx solid #D2D2D2;">
<image style="width: 23rpx; height: 23rpx;" src="/pagesStock/static/icon/all-icon.png"
mode="widthFix"></image>
<view style="margin: 0 10rpx; color: #999999; font-size: 22rpx;">全部</view>
@@ -96,33 +90,33 @@
mode="widthFix"></image>
</view>
</view>
<view style="height: 400rpx;">
<view style="height: 500rpx;">
<l-echart ref="chartRef2"></l-echart>
</view>
<view style="background-color: #FAFAFC; border-radius: 10rpx; margin: 0 20rpx; padding: 20rpx 0;">
<view style="display: flex; align-items: center; justify-content: space-between; font-size: 24rpx; font-weight: 500; margin: 20rpx;">
<view style="flex: 1; color: #999999; margin-right: 20rpx;">经营性现金流</view>
<view style="text-align: right; color: #2A2A2A;">3.50亿</view>
<view v-if="cashFlowList.length>0" style="background-color: #FAFAFC; border-radius: 10rpx; margin: 0 20rpx; padding: 20rpx 0;">
<view class="flex" style="font-size: 24rpx; font-weight: 500; margin: 20rpx;">
<view class="flex1" style="color: #999999; margin-right: 20rpx;">经营性现金流</view>
<view style="text-align: right; color: #2A2A2A;">{{getNumStr(cashFlowList[0].operating_activities.net_flow)}}</view>
</view>
<view style="display: flex; align-items: center; justify-content: space-between; font-size: 24rpx; font-weight: 500; margin: 20rpx;">
<view style="flex: 1; color: #999999; margin-right: 20rpx;">经营性现金流增长率</view>
<view style="text-align: right; color: #2A2A2A;">16.94%</view>
<view class="flex" style="font-size: 24rpx; font-weight: 500; margin: 20rpx;">
<view class="flex1" style="color: #999999; margin-right: 20rpx;">经营性现金流增长率</view>
<view style="text-align: right; color: #2A2A2A;">{{caculateOperatingFlowRatio()}}%</view>
</view>
<view style="display: flex; align-items: center; justify-content: space-between; font-size: 24rpx; font-weight: 500; margin: 20rpx;">
<view style="flex: 1; color: #999999; margin-right: 20rpx;">投资性现金流</view>
<view style="text-align: right; color: #2A2A2A;">-5544.90</view>
<view class="flex" style="font-size: 24rpx; font-weight: 500; margin: 20rpx;">
<view class="flex1" style="color: #999999; margin-right: 20rpx;">投资性现金流</view>
<view style="text-align: right; color: #2A2A2A;">{{getNumStr(cashFlowList[0].investment_activities.net_flow)}}</view>
</view>
<view style="display: flex; align-items: center; justify-content: space-between; font-size: 24rpx; font-weight: 500; margin: 20rpx;">
<view style="flex: 1; color: #999999; margin-right: 20rpx;">筹资性现金流</view>
<view style="text-align: right; color: #2A2A2A;">-1.16亿</view>
<view class="flex" style="font-size: 24rpx; font-weight: 500; margin: 20rpx;">
<view class="flex1" style="color: #999999; margin-right: 20rpx;">筹资性现金流</view>
<view style="text-align: right; color: #2A2A2A;">{{getNumStr(cashFlowList[0].financing_activities.net_flow)}}</view>
</view>
<view style="display: flex; align-items: center; justify-content: space-between; font-size: 24rpx; font-weight: 500; margin: 20rpx;">
<view style="flex: 1; color: #999999; margin-right: 20rpx;">合计现金流</view>
<view style="text-align: right; color: #2A2A2A;">1.79亿</view>
<view class="flex" style="font-size: 24rpx; font-weight: 500; margin: 20rpx;">
<view class="flex1" style="color: #999999; margin-right: 20rpx;">合计现金流</view>
<view style="text-align: right; color: #2A2A2A;">{{getNumStr(cashFlowList[0].cash_changes.net_increase)}}</view>
</view>
<view style="display: flex; align-items: center; justify-content: space-between; font-size: 24rpx; font-weight: 500; margin: 20rpx;">
<view style="flex: 1; color: #999999; margin-right: 20rpx;">合计现金流增长率</view>
<view style="text-align: right; color: #2A2A2A;">935.58%</view>
<view class="flex" style="font-size: 24rpx; font-weight: 500; margin: 20rpx;">
<view class="flex1" style="color: #999999; margin-right: 20rpx;">合计现金流增长率</view>
<view style="text-align: right; color: #2A2A2A;">{{caculateNetIncreaseRatio()}}%</view>
</view>
</view>
</view>
@@ -135,7 +129,6 @@
<image src="/static/icon/home/conceptCenter/next.png" mode="widthFix"
style="width: 13rpx; height: 22rpx;"></image>
</view>
<view class="indicatorC" style="display: grid; gap: 20rpx; grid-template-columns: repeat(3, 1fr); margin: 0 20rpx;">
<view :class="'item flexCenter '+(profitIndicatorIndex==index?'select':'')"
v-for="(item,index) in ['净利润', '营业收入', '期间费用']" :key="index" @click="clickProfitIndicatorItem(index)">
@@ -143,21 +136,19 @@
</view>
</view>
<view style="display: flex;align-items: center; padding: 20rpx;">
<view class="flex" style="padding: 20rpx;">
<view class="flex1" style="font-size: 28rpx;">查看详细数据</view>
<view
style="color: #F2C369; font-size: 22rpx; padding: 2rpx 10rpx; border-radius: 5rpx; border: 1rpx solid #F2C369; text-align: center; margin: 0 10rpx;">
单季度</view>
<view
style="display: flex; align-items: center; padding: 3rpx 10rpx; border: 1rpx solid #D2D2D2; margin-right: 10rpx;">
<view class="flex" style="padding: 3rpx 10rpx; border: 1rpx solid #D2D2D2; margin-right: 10rpx;">
<image style="width: 23rpx; height: 23rpx;" src="/pagesStock/static/icon/all-icon.png"
mode="widthFix"></image>
<view style="margin: 0 10rpx; color: #999999; font-size: 22rpx;">全部</view>
<image style="width: 11rpx; height: 6rpx;" src="/pagesStock/static/icon/all-down.png"
mode="widthFix"></image>
</view>
<view
style="display: flex; align-items: center; padding: 3rpx 10rpx;border: 1rpx solid #D2D2D2;">
<view class="flex" style="padding: 3rpx 10rpx;border: 1rpx solid #D2D2D2;">
<image style="width: 23rpx; height: 23rpx;" src="/pagesStock/static/icon/all-icon.png"
mode="widthFix"></image>
<view style="margin: 0 10rpx; color: #999999; font-size: 22rpx;">汇总</view>
@@ -166,21 +157,21 @@
</view>
</view>
<view style="height: 400rpx;">
<view style="height: 500rpx;">
<l-echart ref="chartRef3"></l-echart>
</view>
<view style="background-color: #FAFAFC; border-radius: 10rpx; margin: 0 20rpx; padding: 20rpx 0;">
<view v-if="incomeStatementList.length>0" style="background-color: #FAFAFC; border-radius: 10rpx; margin: 0 20rpx; padding: 20rpx 0;">
<view style="display: flex; align-items: center; justify-content: space-between; font-size: 24rpx; font-weight: 500; margin: 20rpx;">
<view style="flex: 1; color: #999999; margin-right: 20rpx;">净利润</view>
<view style="text-align: right; color: #2A2A2A;">-6525.56</view>
<view class="flex" style="flex: 1; color: #999999; margin-right: 20rpx;">净利润</view>
<view style="text-align: right; color: #2A2A2A;">{{getNumStr(incomeStatementList[0].comprehensive_income.total_comprehensive_income)}}</view>
</view>
<view style="display: flex; align-items: center; justify-content: space-between; font-size: 24rpx; font-weight: 500; margin: 20rpx;">
<view style="flex: 1; color: #999999; margin-right: 20rpx;">净利润增长率</view>
<view class="flex" style="font-size: 24rpx; font-weight: 500; margin: 20rpx;">
<view class="flex1" style="color: #999999; margin-right: 20rpx;">净利润增长率</view>
<view style="text-align: right; color: #2A2A2A;">-1600.69%</view>
</view>
<view style="display: flex; align-items: center; justify-content: space-between; font-size: 24rpx; font-weight: 500; margin: 20rpx;">
<view style="flex: 1; color: #999999; margin-right: 20rpx;">营业总收入</view>
<view style="text-align: right; color: #2A2A2A;">3.64亿</view>
<view class="flex" style="font-size: 24rpx; font-weight: 500; margin: 20rpx;">
<view class="flex1" style="color: #999999; margin-right: 20rpx;">营业总收入</view>
<view style="text-align: right; color: #2A2A2A;">{{getNumStr(incomeStatementList[0].revenue.total_operating_revenue)}}</view>
</view>
<view style="display: flex; align-items: center; justify-content: space-between; font-size: 24rpx; font-weight: 500; margin: 20rpx;">
<view style="flex: 1; color: #999999; margin-right: 20rpx;">营业总收入增长率</view>
@@ -188,7 +179,7 @@
</view>
<view style="display: flex; align-items: center; justify-content: space-between; font-size: 24rpx; font-weight: 500; margin: 20rpx;">
<view style="flex: 1; color: #999999; margin-right: 20rpx;">营业利润</view>
<view style="text-align: right; color: #2A2A2A;">-7539.55</view>
<view style="text-align: right; color: #2A2A2A;">{{getNumStr(incomeStatementList[0].profit.operating_profit)}}</view>
</view>
<view style="display: flex; align-items: center; justify-content: space-between; font-size: 24rpx; font-weight: 500; margin: 20rpx;">
<view style="flex: 1; color: #999999; margin-right: 20rpx;">营业利润增长率</view>
@@ -200,7 +191,8 @@
</template>
<script>
import { getNumStr } from '../../utils/util';
import { accDiv, accMul, accSub, getNumStr } from '@/utils/util';
const echarts = require('../../uni_modules/lime-echart/static/echarts.min.js');
export default {
name:"cwsj-view",
@@ -212,7 +204,7 @@ import { getNumStr } from '../../utils/util';
option1:{
legend:{
show:true,
data:['期间费用','同比(右)']
data:['货币资金','同比(右)']
},
grid:{
left:'2%',
@@ -285,7 +277,7 @@ import { getNumStr } from '../../utils/util';
},
yAxis: [{
type: 'value',
name:'(%)',
name:'(亿)',
position:'left',
alignTicks:true,
axisLine:{
@@ -307,7 +299,7 @@ import { getNumStr } from '../../utils/util';
series: [
{
type: 'bar',
name:'ROE',
name:'经营现金流',
data: [],
yAxisIndex:0
},
@@ -322,7 +314,7 @@ import { getNumStr } from '../../utils/util';
option3:{
legend:{
show:true,
data:['期间费用','同比(右)']
data:['净利润','同比(右)']
},
grid:{
left:'2%',
@@ -340,7 +332,7 @@ import { getNumStr } from '../../utils/util';
},
yAxis: [{
type: 'value',
name:'(%)',
name:'(亿)',
position:'left',
alignTicks:true,
axisLine:{
@@ -362,7 +354,7 @@ import { getNumStr } from '../../utils/util';
series: [
{
type: 'bar',
name:'ROE',
name:'净利润',
data: [],
yAxisIndex:0
},
@@ -374,7 +366,10 @@ import { getNumStr } from '../../utils/util';
}
]
},
getNumStr:getNumStr
getNumStr:getNumStr,
accDiv:accDiv,
accSub:accSub,
accMul:accMul
};
},
props:{
@@ -383,9 +378,102 @@ import { getNumStr } from '../../utils/util';
incomeStatementList:Array, //利润表
},
watch:{
financialBalanceList(newValue) {
let category = []
let data = []
for (let item of newValue) {
category.push(item.report_type)
if(item.assets.current_assets.cash)
{
data.push(accDiv(item.assets.current_assets.cash,100000000).toFixed(2))
}else
data.push(0)
}
this.option1.xAxis.data = category
this.option1.series[0].data = data
this.profitabilityInit()
},
cashFlowList(newValue) {
let category = []
let data = []
for (let item of newValue) {
category.push(item.report_type)
if(item.operating_activities.net_flow)
{
data.push(accDiv(item.operating_activities.net_flow,100000000).toFixed(2))
}else
data.push(0)
}
this.option2.xAxis.data = category
this.option2.series[0].data = data
this.cashFlowInit()
},
incomeStatementList(newValue) {
let category = []
let data = []
for (let item of newValue) {
category.push(item.report_type)
if(item.profit.net_profit)
{
data.push(accDiv(item.profit.net_profit,1000000000).toFixed(2))
}else
data1.push(0)
}
this.option3.xAxis.data = category
this.option3.series[0].data = data
this.incomeStatementInit()
}
},
methods:{
async profitabilityInit() {
// chart 图表实例不能存在data里
const chart = await this.$refs.chartRef1.init(echarts);
// chart.on('click',function (params) {
// console.log(params)
// })
chart.setOption(this.option1)
},
async cashFlowInit() {
// chart 图表实例不能存在data里
const chart = await this.$refs.chartRef2.init(echarts);
// chart.on('click',function (params) {
// console.log(params)
// })
chart.setOption(this.option2)
},
async incomeStatementInit() {
// chart 图表实例不能存在data里
const chart = await this.$refs.chartRef3.init(echarts);
// chart.on('click',function (params) {
// console.log(params)
// })
chart.setOption(this.option3)
},
/**
* 计算经营性现金流增长率
*/
caculateOperatingFlowRatio() {
let flow1 = this.cashFlowList[0].operating_activities.net_flow
let flow2 = this.cashFlowList[4].operating_activities.net_flow
return accMul(accDiv(accSub(flow1,flow2),flow2),100).toFixed(2)
},
/**
* 计算合计现金流增长率
*/
caculateNetIncreaseRatio() {
let flow1 = this.cashFlowList[0].cash_changes.net_increase
let flow2 = this.cashFlowList[4].cash_changes.net_increase
return accMul(accDiv(accSub(flow1,flow2),flow2),100).toFixed(2)
},
/**
* 获取去年
*/
getLastYearPeriod(list)
{
let year = list[0].period.split('-')[0]
let lastYear = parseInt(year) - 1
},
/**
* 点击切换现金流量表指标
* @param {Object} index
@@ -393,6 +481,37 @@ import { getNumStr } from '../../utils/util';
clickCashFlowIndicatorItem(index) {
if(this.cashFlowIndicatorIndex!=index) {
this.cashFlowIndicatorIndex = index
let data = []
if(index==0) {
//经营现金流
for (let item of this.cashFlowList) {
if(item.operating_activities.net_flow)
{
data.push(accDiv(item.operating_activities.net_flow,100000000).toFixed(2))
}else
data.push(0)
}
}else if(index==1) {
//筹资现金流
for (let item of this.cashFlowList) {
if(item.financing_activities.net_flow)
{
data.push(accDiv(item.financing_activities.net_flow,100000000).toFixed(2))
}else
data.push(0)
}
}else if(index==2) {
//投资现金流
for (let item of this.cashFlowList) {
if(item.investment_activities.net_flow)
{
data.push(accDiv(item.investment_activities.net_flow,100000000).toFixed(2))
}else
data.push(0)
}
}
this.option2.series[0].data = data
this.cashFlowInit()
}
},
/**

View File

@@ -13,7 +13,7 @@
流向关系
</view>
</view>
<view class="bottom">
<view v-if="center_index==0" class="bottom">
<view class="type flex">
<view v-for="(item,index) in types" :key="index" class="item flex flex1">
<view :class="'contentC flexColumnCenter flex1 '+(typeIndex==index?item.type:'')" @click="typeIndex = index">
@@ -84,11 +84,16 @@
</view>
</block>
</view>
</view>
<view v-if="center_index==1" style="height: 500rpx;">
<l-echart ref="chartRef"></l-echart>
</view>
</view>
</template>
<script>
<script>
const echarts = require('../../uni_modules/lime-echart/static/echarts.min.js');
export default {
name: "cyl-view",
data() {
@@ -115,15 +120,34 @@
}
],
typeIndex: 0,
option:{
legend:{
show:false,
},
grid:{
left:'2%',
right:'2%',
top:'5%',
bottom:'30%'
},
series: [
{
type: 'sankey',
name:'经营现金流',
data: [],
links:[],
}
]
},
};
},
props:{
valueChainAnalysisInfo:Object,
upstreamList:Array, //上游供应链
upstreamList:Array, //上游供应链
coreEnterpriseList:Array, //核心企业
downstreamList:Array, //下游客户
totalNodes:Number, //总节点数
valueChainFlowsList:Array //产业链流向数据
},
watch:{
valueChainAnalysisInfo(newValue)
@@ -131,11 +155,46 @@
this.types[0].count = newValue.upstream_nodes
this.types[1].count = newValue.company_nodes
this.types[2].count = newValue.downstream_nodes
},
valueChainFlowsList(newValue)
{
let data = []
let links = []
let name = []
for (let item of newValue) {
if(name.indexOf(item.source.node_name)==-1)
{
name.push(item.source.node_name)
data.push({name:item.source.node_name})
}
links.push({source: item.source.node_name, target: item.target.node_name, value: item.flow_metrics.flow_ratio})
}
this.option.series[0].data = data
this.option.series[0].links = links
}
},
methods: {
changeCenterIndex(index) {
this.center_index = index
methods: {
async init() {
// chart 图表实例不能存在data里
const chart = await this.$refs.chartRef.init(echarts);
// chart.on('click',function (params) {
// console.log(params)
// })
console.log(chart)
console.log(this.option)
chart.setOption(this.option)
},
changeCenterIndex(index) {
if(this.center_index!=index) {
this.center_index = index
if(index==1) {
let that = this
setTimeout(function() {
that.init()
}, 500);
}
}
},
clickAction(item) {
this.$emit('detail',item)

View File

@@ -1,6 +1,6 @@
{
"name" : "JiaZhiQianYan",
"appid" : "__UNI__C546BDE",
"appid" : "__UNI__1836EC9",
"description" : "",
"versionName" : "1.0.0",
"versionCode" : "100",

View File

@@ -218,6 +218,12 @@
"style": {
"navigationBarTitleText": "板块异动明细"
}
},
{
"path": "stockCenterDetails/webView/webView",
"style": {
"navigationBarTitleText": ""
}
}
]
}

View File

@@ -48,57 +48,62 @@
</view>
</view>
</view>
<view class="section">关键指标</view>
<view v-if="quoteDetailsInfo" class="infoC flex">
<view class="flex flex1">
<view class="title">市盈率 (PE)</view>
<view class="content flex1 important marginR">{{quoteDetailsInfo.pe?quoteDetailsInfo.pe:'-'}}</view>
</view>
<view class="rightInfoC flex flex1">
<view class="title">流通股本</view>
<view v-if="quoteDetailsInfo.float_shares" class="content flex1">{{quoteDetailsInfo.float_shares}}亿股</view>
<view v-else class="content flex1">-</view>
</view>
</view>
<view v-if="quoteDetailsInfo" class="infoC flex">
<view class="flex flex1">
<view class="title">流通市值</view>
<view class="content flex1 important marginR">{{quoteDetailsInfo.market_cap}}</view>
</view>
<view class="rightInfoC flex flex1">
<view class="title">换手率</view>
<view class="content flex1">{{quoteDetailsInfo.turnover_rate}}%</view>
</view>
</view>
<view v-if="quoteDetailsInfo" class="infoC flex">
<view class="flex flex1">
<view class="title">发行总股本</view>
<view v-if="quoteDetailsInfo.total_shares" class="content flex1 marginR">{{quoteDetailsInfo.total_shares}}亿股</view>
<view v-else class="content flex1 marginR">-</view>
</view>
<view class="rightInfoC flex flex1">
<view class="title">52周波动</view>
<view class="content flex1">{{quoteDetailsInfo.week52_low}}-{{quoteDetailsInfo.week52_high}}</view>
</view>
</view>
<view class="section">主力动态</view>
<view v-if="quoteDetailsInfo" class="infoC flex">
<view class="flex flex1">
<view class="title">主力净流入</view>
<view :class="'content flex1 marginR '+(getRateUpOrDown(quoteDetailsInfo.net_inflow)?'down':'up')">{{getRateUpOrDown(quoteDetailsInfo.net_inflow)?'':'+'}}{{getNumStr(quoteDetailsInfo.net_inflow)}}</view>
</view>
<view class="rightInfoC flex flex1">
<!-- <view class="title">机构持仓</view>
<view class="content flex1 important">23.83%</view> -->
</view>
</view>
<view class="progressC relative">
<view class="buy absolute"></view>
</view>
<view class="buySaleC flex">
<view class="buy">买入 42%</view>
<view class="sale flex1">卖出 58%</view>
</view>
<view class="section">关键指标</view>
<block v-if="quoteDetailsInfo">
<view class="infoC flex">
<view class="flex flex1">
<view class="title">市盈率 (PE)</view>
<view class="content flex1 important marginR">{{quoteDetailsInfo.pe?quoteDetailsInfo.pe:'-'}}</view>
</view>
<view class="rightInfoC flex flex1">
<view class="title">流通股本</view>
<view v-if="quoteDetailsInfo.float_shares" class="content flex1">{{quoteDetailsInfo.float_shares}}亿股</view>
<view v-else class="content flex1">-</view>
</view>
</view>
<view class="infoC flex">
<view class="flex flex1">
<view class="title">流通市值</view>
<view class="content flex1 important marginR">{{quoteDetailsInfo.market_cap}}</view>
</view>
<view class="rightInfoC flex flex1">
<view class="title">换手率</view>
<view class="content flex1">{{quoteDetailsInfo.turnover_rate}}%</view>
</view>
</view>
<view class="infoC flex">
<view class="flex flex1">
<view class="title">发行总股本</view>
<view v-if="quoteDetailsInfo.total_shares" class="content flex1 marginR">{{quoteDetailsInfo.total_shares}}亿股</view>
<view v-else class="content flex1 marginR">-</view>
</view>
<view class="rightInfoC flex flex1">
<view class="title">52周波动</view>
<view class="content flex1">{{quoteDetailsInfo.week52_low}}-{{quoteDetailsInfo.week52_high}}</view>
</view>
</view>
</block>
<view class="section">主力动态</view>
<block v-if="quoteDetailsInfo">
<view class="infoC flex">
<view class="flex flex1">
<view class="title">主力净流入</view>
<view :class="'content flex1 marginR '+(getRateUpOrDown(quoteDetailsInfo.net_inflow)?'down':'up')">{{getRateUpOrDown(quoteDetailsInfo.net_inflow)?'':'+'}}{{getNumStr(quoteDetailsInfo.net_inflow)}}</view>
</view>
<view class="rightInfoC flex flex1">
<view class="title">机构持仓</view>
<view class="content flex1 important">暂无</view>
</view>
</view>
<view class="progressC relative">
<view class="buy absolute" :style="'width:'+(getBuyPercent())+'%'"></view>
</view>
<view class="buySaleC flex">
<view class="buy">买入 {{getBuyPercent()}}%</view>
<view class="sale flex1">卖出 {{getSellPercent()}}%</view>
</view>
</block>
<view class="infoC flex">
<view class="flex flex1">
<image class="icon" src="/pagesStock/static/icon/establishedTime.png" mode="widthFix"></image>
@@ -117,10 +122,10 @@
<view class="title">所在地</view>
<view class="content flex1 marginR">{{stockBasicInfo.province}} {{stockBasicInfo.city}}</view>
</view>
<view class="rightInfoC flex flex1">
<image class="icon" src="/pagesStock/static/icon/visitWebsite.png" mode="widthFix"></image>
<view class="title important">访问</view>
<view class="flex1"></view>
<view class="rightInfoC flex flex1" @click="clickOfficialWebsite()">
<!-- <image class="icon" src="/pagesStock/static/icon/visitWebsite.png" mode="widthFix"></image>
<view class="title important">访问</view>
<view class="flex1"></view> -->
</view>
</view>
<view class="companyInfo">
@@ -172,7 +177,7 @@
<ywjg-view :businessStructureList="businessStructureList" :businessSegmentList="businessSegmentList"></ywjg-view>
</template>
<template v-if="selectInDepthAnalysis==2">
<cyl-view :valueChainAnalysisInfo="valueChainAnalysisInfo" :totalNodes="totalNodes" :upstreamList="upstreamList" :coreEnterpriseList="coreEnterpriseList" :downstreamList="downstreamList" @detail="clickValueChainDetail"></cyl-view>
<cyl-view :valueChainAnalysisInfo="valueChainAnalysisInfo" :totalNodes="totalNodes" :upstreamList="upstreamList" :coreEnterpriseList="coreEnterpriseList" :downstreamList="downstreamList" :valueChainFlowsList="valueChainFlowsList" @detail="clickValueChainDetail"></cyl-view>
</template>
<template v-if="selectInDepthAnalysis==3">
<fzlc-view :keyFactorsInfo="keyFactorsInfo" :keyFactorsList="keyFactorsList" :timelineInfo="timelineInfo" :timelineList="timelineList" @detail="clickDevelopmentTimelineDetail"></fzlc-view>
@@ -436,7 +441,7 @@
<script>
import { inject } from 'vue'
import { actualControl, branchesList, cashflowSheet, companyAnnouncementsList, comprehensiveAnalysis, eventList, financialBalanceSheet, financialComparison, financialMainBusiness, financialMetrics, financialStockInfo, incomeStatementSheet, industryRankList, keyFactorsTimeline, managementTeam, ownershipConcentration, quoteDetailsInfo, searchStockInfo, stockBasicInfo, topCirculatingShareholdersList, topShareholdersList, valueChainAnalysis, valueChainRelatedCompany } from '@/request/api'
import { getLastNameStr, getLocalDate, getNumStr, getRateUpOrDown, getAgeByBirthYear } from '@/utils/util'
import { getLastNameStr, getLocalDate, getNumStr, getRateUpOrDown, getAgeByBirthYear, accAdd, accSub,accDiv } from '@/utils/util'
export default {
data() {
@@ -570,6 +575,7 @@
downstreamList:[], //下游客户
selectValueChainInfo:null, //点击查看的产业链信息
relatedCompanyList:[], //产业链相关公司
valueChainFlowsList:[], //流向图数据
keyFactorsInfo:null, //关键因素统计信息
keyFactorsList:[], //关键因素
timelineInfo:null, //发展时间线统计信息
@@ -651,12 +657,40 @@
this.getStockBasicInfoData()
this.getQuoteDetailsData()
},
/**
* 获取买入百分比
*/
getBuyPercent() {
let ratio = this.quoteDetailsInfo.net_active_buy_ratio
return Math.round(accAdd(50,accDiv(ratio,2)))
},
/**
* 获取卖出百分比
*/
getSellPercent() {
let ratio = this.quoteDetailsInfo.net_active_buy_ratio
return Math.round(accSub(50,accDiv(ratio,2)))
},
/**
* 点击查看官网
*/
clickOfficialWebsite()
{
// let code = this.stockCode
// if (this.selectSearchStockInfo) {
// code = this.selectSearchStockInfo.stock_code
// }
// uni.navigateTo({
// url:'/pagesStock/stockCenterDetails/webView/webView?url=https://api.valuefrontier.cn/api/stock/'+code+'/basic-info'
// })
},
/**
* 点击展开收起公司简介
*/
clickExpandOrRetractCompanyIntro() {
this.isExpandIntro = !this.isExpandIntro
},
},
/**
* @param {Object} index
*/
@@ -722,6 +756,8 @@
this.selectCaiwu = index
if(index==0) {
//主营数据
this.getFinancialStockInfoData()
this.getFinancialComparisonData()
this.getFinancialMetricsData()
}else if(index==1) {
//财务分析
@@ -1030,6 +1066,7 @@
this.upstreamList = nodesByLevel['level_-2'].concat(nodesByLevel['level_-1'])
this.coreEnterpriseList = nodesByLevel.level_0
this.downstreamList = nodesByLevel.level_1.concat(nodesByLevel.level_2)
this.valueChainFlowsList = res.data.value_chain_flows
}).catch(error=>{
})
@@ -1412,7 +1449,6 @@
.buy {
background-color: #EC3440;
width: 42%;
height: 100%;
border-radius: 5rpx;
}

View File

@@ -0,0 +1,28 @@
<template>
<view>
<web-view :src="url"></web-view>
</view>
</template>
<script>
export default {
data() {
return {
url:''
}
},
onLoad(e) {
if(e.url)
{
this.url = e.url
}
},
methods: {
}
}
</script>
<style>
</style>

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
"use strict";const t=require("./common/vendor.js"),e={name:"WordCloud",props:{wordData:{type:Array,required:!0,default:()=>[]},width:{type:Number,default:300},height:{type:Number,default:300},colorList:{type:Array,default:()=>["#60A5FA","#FEC200","#EF4444"]},fontSizeConfig:{type:Object,default:()=>({minSize:12,maxSize:40,scaleFactor:.1})}},data(){return{canvasWidth:this.width,canvasHeight:this.height,ctx:null,placedWords:[]}},watch:{wordData:{handler(){this.drawWordCloud()},deep:!0}},mounted(){this.initCanvas()},methods:{async initCanvas(){await new Promise((t=>setTimeout(t,50)));t.index.createSelectorQuery().in(this).select(".word-cloud-canvas").fields({node:!0,size:!0}).exec((async e=>{if(!e||!e[0]||!e[0].node)return void console.error("获取canvas节点失败请检查canvas是否正确渲染");const a=e[0].node;let i=null;try{i=a.getContext("2d")}catch(o){console.warn("获取2d上下文失败尝试兼容处理",o),i=t.index.createCanvasContext("wordCloudCanvas",this)}if(!i)return void console.error("无法获取canvas 2d上下文");const s=t.index.getSystemInfoSync().pixelRatio||1;a.width=this.canvasWidth*s,a.height=this.canvasHeight*s,i.scale(s,s),this.ctx=i,this.drawWordCloud()}))},drawWordCloud(){if(!this.ctx||!this.wordData.length)return;this.ctx.clearRect(0,0,this.canvasWidth,this.canvasHeight),this.placedWords=[];const t=[...this.wordData].sort(((t,e)=>e.value-t.value)),e=t.map((t=>t.value));this.valueMax=Math.max(...e),this.valueMin=Math.min(...e),t.forEach(((t,e)=>{this.placeWord(t,e)}))},placeWord(t,e){const a=this.ctx,{minSize:i,maxSize:s,scaleFactor:o}=this.fontSizeConfig;let n=1;this.valueMax!==this.valueMin&&(n=(t.value-this.valueMin)/(this.valueMax-this.valueMin));const h=Math.min(i+(s-i)*n*o,s),r=120*(Math.random()-.5)*Math.PI/180;a.font=`${h}px sans-serif`;const c=a.measureText(t.text||t.name).width,d=1.05*h;for(let l=0;l<150;l++){const e=.05*this.canvasWidth+Math.random()*this.canvasWidth*.9,i=.05*this.canvasHeight+Math.random()*this.canvasHeight*.9;if(!this.checkOverlap(e,i,c,d,r,2)){const s=this.canvasWidth/2,o=this.canvasHeight/2,n=Math.sqrt(Math.pow(e-s,2)+Math.pow(i-o,2)),l=Math.sqrt(Math.pow(s,2)+Math.pow(o,2));let u;u=n>.66*l?this.colorList[0]:n>.33*l?this.colorList[1]:this.colorList[2],a.fillStyle=u,this.drawTextAtPosition(t.text||t.name,e,i,r,h),this.placedWords.push({x:e,y:i,width:c,height:d,angle:r});break}}},checkOverlap(t,e,a,i,s,o=2){const n=this.getBoundingRect(t,e,a,i,s,o);for(const h of this.placedWords){const t=this.getBoundingRect(h.x,h.y,h.width,h.height,h.angle,o);if(n.left<t.right&&n.right>t.left&&n.top<t.bottom&&n.bottom>t.top)return!0}return!1},getBoundingRect(t,e,a,i,s,o=2){const n=Math.cos(s),h=Math.sin(s),r=(a-o)/2,c=(i-o)/2,d=[{x:-r,y:-c},{x:-r,y:c},{x:r,y:c},{x:r,y:-c}].map((a=>({x:t+a.x*n-a.y*h,y:e+a.x*h+a.y*n})));return{left:Math.min(...d.map((t=>t.x))),right:Math.max(...d.map((t=>t.x))),top:Math.min(...d.map((t=>t.y))),bottom:Math.max(...d.map((t=>t.y)))}},drawTextAtPosition(t,e,a,i,s){const o=this.ctx;o.save(),o.translate(e,a),o.rotate(i),o.textAlign="center",o.textBaseline="middle",o.fillText(t,0,0),o.restore()}}};const a=t._export_sfc(e,[["render",function(t,e,a,i,s,o){return{a:s.canvasWidth+"px",b:s.canvasHeight+"px"}}],["__scopeId","data-v-e748f4a2"]]);exports.MiniProgramPage=a;

1
unpackage/dist/build/mp-weixin/app.js vendored Normal file
View File

@@ -0,0 +1 @@
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./common/vendor.js"),t=require("./utils/share.js");Math;const o={onLaunch:function(){console.log("App Launch");let t=e.index.getWindowInfo();e.provide("statusHeight",t.statusBarHeight),e.provide("windowWidth",t.windowWidth),e.provide("safeAreaTop",t.safeArea.top);var o=t.safeAreaInsets.bottom;let n=e.index.getMenuButtonBoundingClientRect();e.provide("navHeight",n.bottom+n.top-t.statusBarHeight),e.provide("menuTop",n.top),e.provide("menuHeight",n.height),e.provide("isiPhoneX",34==o)},onShow:function(){console.log("App Show"),this.updateManager()},onHide:function(){console.log("App Hide")},globalData:{mobileReg:/^1[3456789][0-9]{9}$/},methods:{updateManager(){const t=e.index.getUpdateManager();t.onCheckForUpdate((o=>{o.hasUpdate&&e.index.showModal({title:"更新提示",content:"检测到新版本,是否下载新版本并重启小程序?",success(o){o.confirm&&t.onUpdateReady((()=>{e.index.showModal({title:"更新提示",content:"新版本已经准备好,即将重启应用",showCancel:!1,success(e){e.confirm&&t.applyUpdate()}})}))},fail(e){}}),t.onUpdateFailed((()=>{e.index.showModal({title:"更新提示",content:"新版本下载失败",showCancel:!1})}))}))}}};function n(){const n=e.createSSRApp(o);return n.mixin(t.share),{app:n}}n().app.mount("#app"),exports.createApp=n;

88
unpackage/dist/build/mp-weixin/app.json vendored Normal file
View File

@@ -0,0 +1,88 @@
{
"pages": [
"pages/index/index",
"pages/invest/invest",
"pages/concept/concept",
"pages/mine/mine",
"pages/mine/basicInfo/basicInfo",
"pages/mine/feedback/feedback",
"pages/mine/commentReply/commentReply",
"pages/mine/investPreference/investPreference",
"pages/index/eventDetails/eventDetails",
"pages/invest/investDetails/investDetails",
"pages/index/stockDetails/stockDetails",
"pages/index/conceptDetails/conceptDetails",
"pages/mine/followCollect/followCollect",
"pages/mine/myLike/myLike",
"pages/login/login",
"pages/login/codeLogin/codeLogin",
"pages/mine/web/web",
"pages/concept/historicalTimeline/historicalTimeline",
"pages/concept/hotStock/hotStock",
"pages/concept/newsDetails/newsDetails",
"pages/concept/reportDetails/reportDetails",
"pages/geGuCenter/geGuCenter",
"pages/ztfx/ztfx",
"pages/geGuCenter/detail",
"components/WordCloud/WordCloud"
],
"subPackages": [
{
"root": "pagesMine",
"pages": [
"vip/vip",
"vipMeal/vipMeal"
]
},
{
"root": "pagesStock",
"pages": [
"stockCenterDetails/stockCenterDetails",
"stockCenterDetails/cwDetails",
"stockCenterDetails/ztfx",
"stockCenterDetails/bkydmx",
"stockCenterDetails/webView/webView"
]
}
],
"window": {
"navigationStyle": "custom",
"backgroundColor": "#F8F8F8"
},
"tabBar": {
"custom": true,
"list": [
{
"iconPath": "/static/icon/tabbar/home.png",
"selectedIconPath": "/static/icon/tabbar/home_s.png",
"text": "首页",
"pagePath": "pages/index/index"
},
{
"iconPath": "/static/icon/tabbar/invest.png",
"selectedIconPath": "/static/icon/tabbar/invest_s.png",
"text": "投资",
"pagePath": "pages/concept/concept"
},
{
"iconPath": "/static/icon/tabbar/invest.png",
"selectedIconPath": "/static/icon/tabbar/invest_s.png",
"text": "个股中心",
"pagePath": "pages/geGuCenter/geGuCenter"
},
{
"iconPath": "/static/icon/tabbar/invest.png",
"selectedIconPath": "/static/icon/tabbar/invest_s.png",
"text": "投资",
"pagePath": "pages/ztfx/ztfx"
},
{
"iconPath": "/static/icon/tabbar/mine.png",
"selectedIconPath": "/static/icon/tabbar/mine_s.png",
"text": "我的",
"pagePath": "pages/mine/mine"
}
]
},
"usingComponents": {}
}

View File

@@ -0,0 +1,2 @@
.flex{display:flex;align-items:center}.flexCenter{display:flex;align-items:center;justify-content:center}.flexColumn{display:flex;flex-direction:column}.flexColumnCenter{display:flex;flex-direction:column;align-items:center}.flex1{flex:1}.flexWrap{display:flex;flex-wrap:wrap}.flexStretch{display:flex;align-items:stretch}.between{justify-content:space-between}.flexEnd{display:flex;align-items:center;justify-content:flex-end}.relative{position:relative}.absolute{position:absolute}.fixed{position:fixed}view,input,textarea,scroll-view,swiper{box-sizing:border-box}button{background-color:transparent}button:after{border:none}::-webkit-scrollbar{color:transparent;width:0}
page{--status-bar-height:25px;--top-window-height:0px;--window-top:0px;--window-bottom:0px;--window-left:0px;--window-right:0px;--window-magin:0px}[data-c-h="true"]{display: none !important;}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 457 B

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,4 @@
{
"component": true,
"usingComponents": {}
}

View File

@@ -0,0 +1 @@
<view class="dateC"><view class="yearMonthC flex"><view class="btn" bindtap="{{b}}"><image class="icon" src="{{a}}" mode="widthFix"></image></view><view class="yearMonth flex1"><picker mode="date" fields="month"><view style="display:flex;align-items:center;justify-content:center"><image style="width:26rpx;height:26rpx;margin-right:10rpx" src="{{c}}" mode="widthFix"></image><view style="color:#2B2B2B;font-size:32rpx;font-weight:bold">{{d}}</view></view></picker></view><view class="btn" bindtap="{{f}}"><image class="icon" src="{{e}}" mode="widthFix"></image></view></view><view style="display:grid;grid-template-columns:repeat(7, 1fr);gap:17rpx;margin:20rpx 0"><view wx:for="{{g}}" wx:for-item="item" wx:key="b" style="display:flex;align-items:center;justify-content:center;font-size:24rpx;color:#292621;font-weight:500">{{item.a}}</view></view><view class="monthDateList" style="display:grid;grid-template-columns:repeat(7, 1fr);gap:17rpx"><view wx:for="{{h}}" wx:for-item="item" wx:key="t" class="item" bindtap="{{item.v}}"><block wx:if="{{item.a}}"><view class="{{['date', 'select', item.i]}}">{{item.b}} <view wx:if="{{item.c}}" style="color:#999999;font-size:18rpx">休市 </view><view wx:else style="text-align:center"><view wx:if="{{item.d}}"><view style="{{'font-size:18rpx' + ';' + ('color:' + item.f)}}">{{item.e}}家 </view><view style="{{'font-size:16rpx' + ';' + ('color:' + item.h)}}">{{item.g}}</view></view></view></view></block><block wx:else><block wx:if="{{item.j}}"></block><block wx:else><view class="{{['date', item.s]}}"><view style="{{'color:' + item.l}}">{{item.k}}</view><view wx:if="{{item.m}}" style="color:#999999;font-size:18rpx">休市 </view><view wx:else style="text-align:center"><view wx:if="{{item.n}}"><view style="{{'font-size:18rpx' + ';' + ('color:' + item.p)}}">{{item.o}}家 </view><view style="{{'font-size:16rpx' + ';' + ('color:' + item.r)}}">{{item.q}}</view></view></view></view></block></block></view></view></view>

View File

@@ -0,0 +1 @@
.dateC{background-color:#fff;box-shadow:0 5rpx 10rpx rgba(127,127,127,.1);box-sizing:border-box}.dateC .yearMonthC{height:70rpx;border-radius:35rpx}.dateC .yearMonthC .btn{padding:0 32rpx}.dateC .yearMonthC .btn .icon{width:13rpx;height:auto}.dateC .yearMonthC .yearMonth{font-size:32rpx;font-weight:500;color:#070707;text-align:center}.dateC .weekList .item{line-height:72rpx;font-size:26rpx;font-weight:500;color:#a7a7a7;text-align:center}.dateC .monthDateList .item .date{background-color:#f8f8f8;padding:10rpx 0;border-radius:10rpx;font-size:26rpx;font-weight:700;color:#2a2a2a;display:flex;align-items:center;justify-content:center;flex-direction:column;height:100%}.dateC .monthDateList .item .date .chg{font-size:18rpx}.dateC .monthDateList .item .date .chg.up{color:#ec3440}.dateC .monthDateList .item .date .chg.down{color:#38a169}.dateC .monthDateList .item .date.zt-bg-80{background-color:#faeeff}.dateC .monthDateList .item .date.zt-bg-60{background-color:#ffe9e9}.dateC .monthDateList .item .date.zt-bg-40{background-color:#fff8f0}.dateC .monthDateList .item .date.zt-bg-40-less{background-color:#eef4ff}.dateC .monthDateList .item .date.up{background-color:#ffd6d9}.dateC .monthDateList .item .date.down{background-color:#cef1de}.dateC .monthDateList .item .date.select.up{background-color:#ec3440;color:#fff}.dateC .monthDateList .item .date.select.up .chg{color:#fff}.dateC .monthDateList .item .date.select.down{background-color:#38a169;color:#fff}.dateC .monthDateList .item .date.select.down .chg{color:#fff}.dateC .monthDateList .item .date.notCurrentMonth{background-color:#fcfcfc;color:#999}

View File

@@ -0,0 +1 @@
"use strict";const t=require("../../common/vendor.js"),e=require("../../common/assets.js"),a={name:"LCCalendar",data:()=>({weekList:["日","一","二","三","四","五","六"],monthDateList:[],selectMonthIndex:0,selectMonth:"",selectDateStr:"",startDateStr:"",endDateStr:""}),created(){let t=new Date,e=t.getFullYear(),a=t.getMonth()+1,s=t.getDate();this.selectMonthIndex=240+a-1,this.selectMonth=e+"年"+a+"月",this.startDateStr=e+"-"+(a>9?a:"0"+a)+"-01",this.endDateStr=this.selectDateStr=e+"-"+(a>9?a:"0"+a)+"-"+(s>9?s:"0"+s),this.generateMonthDateListData(),this.$emit("date-change",this.selectDateStr)},methods:{getYesterdayDateData(){let t=new Date(new Date);t.setDate(t.getDate()-1);let e=t.getFullYear(),a=t.getMonth()+1,s=t.getDate();this.selectDateStr=e+"-"+(a>9?a:"0"+a)+"-"+(s>9?s:"0"+s),this.$emit("date-change",this.selectDateStr)},generateMonthDateListData(){let t=new Date,e=t.getFullYear(),a=t.getMonth()+1,s=t.getDate(),n=[];for(var h=e-20;h<e+20;h++)for(var o=0;o<12;o++){let t=new Date(h,o+1,0),r=new Date(h,o+1,0);r.setDate(1);let l=t.getDate(),D=r.getDay()+1,c=[];for(var i=1;i<=l;i++){let t=new Date(h,o+1,0);t.setDate(i);let n=t.getMonth()+1,r=t.getDate(),D=t.getTime(),d=h+"-"+(n>9?n:"0"+n)+"-"+(r>9?r:"0"+r);c.push({date:d,year:h,month:n,day:r,isToday:h==e&&n==a&&r==s,isCurrentMonth:!0,isLastDay:r==l,timestamp:D})}for(i=0;i<D-1;i++){let t=h,e=o;o<1&&(t=h-1,e=12);let a=new Date(t,e,0).getDate(),s=new Date(t,e-1,a-i),n=s.getMonth()+1,r=s.getDate(),l=s.getTime(),D=t+"-"+(n>9?n:"0"+n)+"-"+(r>9?r:"0"+r);c.unshift({date:D,year:t,month:n,day:r,isToday:!1,isCurrentMonth:!1,isLastDay:!1,timestamp:l})}let d=new Date(h,o+1,1),g=new Date(d-864e5).getDay()+1;for(i=1;i<8-g;i++){let t=h,e=o;e>11&&(e=0,t++);let a=new Date(t,e+1,i),s=a.getMonth()+1,n=a.getDate(),r=a.getTime(),l=t+"-"+(s>9?s:"0"+s)+"-"+(n>9?n:"0"+n);c.push({date:l,year:t,month:s,day:n,isToday:!1,isCurrentMonth:!1,isLastDay:!1,timestamp:r})}n.push(c)}this.monthDateList=n},clickPreMonth(){if(this.selectMonthIndex>0){this.selectMonthIndex--;let t=this.monthDateList[this.selectMonthIndex],e="",a="";for(let n of t)if(n.isCurrentMonth){e=n.year,a=n.month;break}let s="";for(let n of t)if(n.isLastDay){s=n.day;break}this.selectMonth=e+"年"+a+"月",this.startDateStr=e+"-"+(a>9?a:"0"+a)+"-01",this.endDateStr=e+"-"+(a>9?a:"0"+a)+"-"+s,console.log("点击上个月")}},clickNextMonth(){if(this.selectMonthIndex<this.monthDateList.length-1){this.selectMonthIndex++;let t=this.monthDateList[this.selectMonthIndex],e="",a="";for(let n of t)if(n.isCurrentMonth){e=n.year,a=n.month;break}let s="";for(let n of t)if(n.isLastDay){s=n.day;break}this.selectMonth=e+"年"+a+"月",this.startDateStr=e+"-"+(a>9?a:"0"+a)+"-01",this.endDateStr=e+"-"+(a>9?a:"0"+a)+"-"+s,console.log("点击下个月")}},monthChange(t){let e=(new Date).getFullYear(),a=t.detail.value,s=parseInt(a.split("-")[0]),n=parseInt(a.split("-")[1]);this.selectMonthIndex=12*(s-(e-20))+n-1,this.selectMonth=s+"年"+n+"月",this.startDateStr=s+"-"+(n>9?n:"0"+n)+"-01";let h=new Date(s,n,0);this.endDateStr=s+"-"+(n>9?n:"0"+n)+"-"+h.getDate(),console.log("月份变更")},clickSelectDate(t){t.isCurrentMonth&&this.selectDateStr!=t.date&&(this.selectDateStr=t.date,this.chgStockData=t,console.log("点击某天"),this.$emit("date-change",this.selectDateStr))}}};const s=t._export_sfc(a,[["render",function(a,s,n,h,o,i){return{a:e._imports_0$1,b:t.o((t=>i.clickPreMonth())),c:t.t(o.selectMonth),d:t.o(((...t)=>i.monthChange&&i.monthChange(...t))),e:e._imports_1$2,f:t.o((t=>i.clickNextMonth())),g:t.f(o.weekList,((e,a,s)=>({a:t.t(e),b:a}))),h:t.f(o.monthDateList[o.selectMonthIndex],((e,a,s)=>t.e({a:e.date==o.selectDateStr},e.date==o.selectDateStr?{b:t.t(e.day),c:t.n("date select up")}:t.e({d:!e.isCurrentMonth},e.isCurrentMonth?{f:t.t(e.day),g:t.n("date up")}:{e:t.t(e.day)}),{h:a,i:t.o((t=>i.clickSelectDate(e)),a)})))}}]]);wx.createComponent(s);

View File

@@ -0,0 +1,4 @@
{
"component": true,
"usingComponents": {}
}

View File

@@ -0,0 +1 @@
<view class="dateC"><view class="yearMonthC flex"><view class="btn" bindtap="{{b}}"><image class="icon" src="{{a}}" mode="widthFix"></image></view><view class="yearMonth flex1"><picker mode="date" fields="month" bindchange="{{d}}"><view style="display:flex;align-items:center;justify-content:center"><view style="color:#2B2B2B;font-size:32rpx;font-weight:bold">{{c}}</view></view></picker></view><view class="btn" bindtap="{{f}}"><image class="icon" src="{{e}}" mode="widthFix"></image></view></view><view style="display:grid;grid-template-columns:repeat(7, 1fr);gap:17rpx;margin:20rpx 0"><view wx:for="{{g}}" wx:for-item="item" wx:key="b" style="display:flex;align-items:center;justify-content:center;font-size:24rpx;color:#292621;font-weight:500">{{item.a}}</view></view><view class="monthDateList" style="display:grid;grid-template-columns:repeat(7, 1fr);gap:17rpx"><view wx:for="{{h}}" wx:for-item="item" wx:key="h" class="item" bindtap="{{item.i}}"><block wx:if="{{item.a}}"><view class="{{item.c}}">{{item.b}}</view></block><block wx:else><block wx:if="{{item.d}}"><view class="date notCurrentMonth">{{item.e}}</view></block><block wx:else><view class="{{item.g}}"><view>{{item.f}}</view></view></block></block></view></view></view>

View File

@@ -0,0 +1 @@
.dateC{background-color:#fff;box-sizing:border-box}.dateC .yearMonthC{background-color:#f7f7f7;height:70rpx;border-radius:35rpx}.dateC .yearMonthC .btn{padding:0 32rpx}.dateC .yearMonthC .btn .icon{width:13rpx;height:auto}.dateC .yearMonthC .yearMonth{font-size:32rpx;font-weight:500;color:#070707;text-align:center}.dateC .weekList .item{line-height:72rpx;font-size:26rpx;font-weight:500;color:#a7a7a7;text-align:center}.dateC .monthDateList .item{height:72rpx}.dateC .monthDateList .item .date{background-color:#f8f8f8;padding:10rpx 0;border-radius:10rpx;font-size:26rpx;font-weight:700;color:#2a2a2a;display:flex;align-items:center;justify-content:center;flex-direction:column;height:100%}.dateC .monthDateList .item .date .chg{font-size:18rpx}.dateC .monthDateList .item .date .chg.up{color:#ec3440}.dateC .monthDateList .item .date .chg.down{color:#38a169}.dateC .monthDateList .item .date.up{background-color:#f8f8f8}.dateC .monthDateList .item .date.down{background-color:#cef1de}.dateC .monthDateList .item .date.select.up{background-color:#f2c367;color:#fff}.dateC .monthDateList .item .date.select.up .chg{color:#fff}.dateC .monthDateList .item .date.select.down{background-color:#38a169;color:#fff}.dateC .monthDateList .item .date.select.down .chg{color:#fff}.dateC .monthDateList .item .date.notCurrentMonth{background-color:#fcfcfc;color:#999}

View File

@@ -0,0 +1 @@
"use strict";const e=require("../../WordCloud.js");wx.createPage(e.MiniProgramPage);

View File

@@ -0,0 +1,4 @@
{
"navigationBarTitleText": "",
"usingComponents": {}
}

View File

@@ -0,0 +1 @@
<view class="word-cloud-container data-v-e748f4a2"><canvas type="2d" ref="wordCloudCanvas" id="wordCloudCanvas" class="word-cloud-canvas data-v-e748f4a2" style="{{'width:' + a + ';' + ('height:' + b)}}"></canvas></view>

View File

@@ -0,0 +1 @@
.word-cloud-container.data-v-e748f4a2,.word-cloud-canvas.data-v-e748f4a2{width:100%;height:100%}

View File

@@ -0,0 +1 @@
"use strict";const e=require("../../WordCloud.js");wx.createPage(e.MiniProgramPage);

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,6 @@
{
"component": true,
"usingComponents": {
"l-echart": "../../uni_modules/lime-echart/components/l-echart/l-echart"
}
}

View File

@@ -0,0 +1 @@
<view><view style="color:#2B2B2B;font-weight:500;font-size:24rpx"><view class="flex" style="padding:20rpx"><image src="{{a}}" mode="widthFix" style="width:40rpx;height:40rpx"></image><view class="flex1" style="margin:0 10rpx;font-size:28rpx">盈利能力</view><image src="{{b}}" mode="widthFix" style="width:13rpx;height:22rpx"></image></view><view class="indicatorC" style="display:grid;gap:20rpx;grid-template-columns:repeat(4, 1fr);margin:0 20rpx"><view wx:for="{{c}}" wx:for-item="item" wx:key="c" class="{{item.b}}" style="justify-content:center;text-align:center;padding:3rpx 5rpx" bindtap="{{item.d}}">{{item.a}}</view></view><view class="flex" style="padding:20rpx"><view class="flex1" style="font-size:28rpx">查看详细数据</view><view style="color:#F2C369;font-size:22rpx;padding:2rpx 10rpx;border-radius:5rpx;border:1rpx solid #F2C369;text-align:center;margin:0 10rpx"> 单季度</view><view class="flex" style="padding:3rpx 10rpx;border:1rpx solid #D2D2D2"><image style="width:23rpx;height:23rpx" src="{{d}}" mode="widthFix"></image><view style="margin:0 10rpx;color:#999999;font-size:22rpx">全部</view><image style="width:11rpx;height:6rpx" src="{{e}}" mode="widthFix"></image></view></view><view style="height:500rpx"><l-echart class="r" u-r="chartRef1" u-i="3746da36-0" bind:__l="__l"></l-echart></view></view><view style="color:#2B2B2B;font-weight:500;font-size:24rpx"><view style="display:flex;align-items:center;padding:20rpx;box-sizing:border-box"><image src="{{g}}" mode="widthFix" style="width:40rpx;height:40rpx"></image><view class="flex1" style="margin:0 10rpx;font-size:28rpx">每股指标</view><image src="{{h}}" mode="widthFix" style="width:13rpx;height:22rpx"></image></view><view class="indicatorC" style="display:grid;gap:20rpx;grid-template-columns:repeat(4, 1fr);margin:0 20rpx"><view wx:for="{{i}}" wx:for-item="item" wx:key="c" class="{{item.b}}" bindtap="{{item.d}}">{{item.a}}</view></view><view style="display:flex;align-items:center;padding:20rpx;box-sizing:border-box"><view class="flex1" style="font-size:28rpx">查看详细数据</view><view style="color:#F2C369;font-size:22rpx;padding:2rpx 10rpx;border-radius:5rpx;border:1rpx solid #F2C369;text-align:center;margin:0 10rpx"> 单季度</view><view style="display:flex;align-items:center;padding:3rpx 10rpx;box-sizing:border-box;border:1rpx solid #D2D2D2"><image style="width:23rpx;height:23rpx" src="{{j}}" mode="widthFix"></image><view style="margin:0 10rpx;color:#999999;font-size:22rpx">全部</view><image style="width:11rpx;height:6rpx" src="{{k}}" mode="widthFix"></image></view></view><view style="height:500rpx"><l-echart class="r" u-r="chartRef2" u-i="3746da36-1" bind:__l="__l"></l-echart></view></view></view>

View File

@@ -0,0 +1 @@
.indicatorC .item{background-color:#fff;padding:3rpx 5rpx;border:1rpx solid #D2D2D2;font-size:20rpx;color:#999;text-align:center}.indicatorC .item.select{background-color:#fffaf1;border:1rpx solid #F2C369;color:#bb8520}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,6 @@
{
"component": true,
"usingComponents": {
"l-echart": "../../uni_modules/lime-echart/components/l-echart/l-echart"
}
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
.indicatorC .item{padding:10rpx;border:1rpx solid #D2D2D2;font-size:20rpx;color:#999;text-align:center}.indicatorC .item.select{background-color:#fffaf1;color:#bb8520;border:1rpx solid #F2C369}

View File

@@ -0,0 +1 @@
"use strict";const e=require("../../common/vendor.js"),t=require("../../common/assets.js"),n=require("../../uni_modules/lime-echart/static/echarts.min.js"),o={name:"cyl-view",data:()=>({isShow:!1,center_index:0,types:[{title:"上游供应链",count:0,desc:"原材料与供应商",type:"upstream"},{title:"核心企业",count:0,desc:"公司主体与产品",type:"core"},{title:"下游客户",count:0,desc:"客户与终端市场",type:"downstream"}],typeIndex:0,option:{legend:{show:!1},grid:{left:"2%",right:"2%",top:"5%",bottom:"30%"},series:[{type:"sankey",name:"经营现金流",data:[],links:[]}]}}),props:{valueChainAnalysisInfo:Object,upstreamList:Array,coreEnterpriseList:Array,downstreamList:Array,totalNodes:Number,valueChainFlowsList:Array},watch:{valueChainAnalysisInfo(e){this.types[0].count=e.upstream_nodes,this.types[1].count=e.company_nodes,this.types[2].count=e.downstream_nodes},valueChainFlowsList(e){let t=[],n=[],o=[];for(let s of e)-1==o.indexOf(s.source.node_name)&&(o.push(s.source.node_name),t.push({name:s.source.node_name})),n.push({source:s.source.node_name,target:s.target.node_name,value:s.flow_metrics.flow_ratio});this.option.series[0].data=t,this.option.series[0].links=n}},methods:{async init(){const e=await this.$refs.chartRef.init(n);console.log(e),console.log(this.option),e.setOption(this.option)},changeCenterIndex(e){if(this.center_index!=e&&(this.center_index=e,1==e)){let e=this;setTimeout((function(){e.init()}),500)}},clickAction(e){this.$emit("detail",e)}}};if(!Array){e.resolveComponent("l-echart")()}Math;const s=e._export_sfc(o,[["render",function(n,o,s,i,r,c){return e.e({a:e.t(s.totalNodes),b:0==r.center_index?1:"",c:e.o((e=>c.changeCenterIndex(0))),d:1==r.center_index?1:"",e:e.o((e=>c.changeCenterIndex(1))),f:0==r.center_index},0==r.center_index?e.e({g:e.f(r.types,((n,o,s)=>e.e({a:e.t(n.title),b:e.t(n.count),c:e.n("num "+(r.typeIndex==o?n.type:"")),d:e.t(n.desc),e:e.n("contentC flexColumnCenter flex1 "+(r.typeIndex==o?n.type:"")),f:e.o((e=>r.typeIndex=o),o),g:o!=r.types.length-1},o!=r.types.length-1?{h:t._imports_0$6}:{},{i:o}))),h:0==r.typeIndex},0==r.typeIndex?{i:e.f(s.upstreamList,((t,n,o)=>({a:e.t(t.node_name),b:e.t(t.node_description),c:e.t(t.node_type),d:e.t(t.market_share),e:`${t.importance_score}%`,f:e.t(t.importance_score),g:n,h:e.o((e=>c.clickAction(t)),n)})))}:{},{j:1==r.typeIndex},1==r.typeIndex?{k:e.f(s.coreEnterpriseList,((t,n,o)=>({a:e.t(t.node_name),b:e.t(t.node_description),c:e.t(t.node_type),d:e.t(t.market_share),e:`${t.importance_score}%`,f:e.t(t.importance_score),g:n,h:e.o((e=>c.clickAction(t)),n)})))}:{},{l:2==r.typeIndex},2==r.typeIndex?{m:e.f(s.downstreamList,((t,n,o)=>({a:e.t(t.node_name),b:e.t(t.node_description),c:e.t(t.node_type),d:e.t(t.market_share),e:`${t.importance_score}%`,f:e.t(t.importance_score),g:n,h:e.o((e=>c.clickAction(t)),n)})))}:{}):{},{n:1==r.center_index},1==r.center_index?{o:e.sr("chartRef","2cc4c3dc-0")}:{})}]]);wx.createComponent(s);

View File

@@ -0,0 +1,6 @@
{
"component": true,
"usingComponents": {
"l-echart": "../../uni_modules/lime-echart/components/l-echart/l-echart"
}
}

View File

@@ -0,0 +1 @@
<view class="cyl_view"><view class="top flex"><view class="child_1">产业链分析</view><view class="child_2">目标公司供应链图谱</view><view class="child_3">节点 {{a}}</view></view><view class="center"><view class="{{['child', b && 'action']}}" bindtap="{{c}}"> 层级视图 </view><view class="{{['child', d && 'action']}}" bindtap="{{e}}"> 流向关系 </view></view><view wx:if="{{f}}" class="bottom"><view class="type flex"><view wx:for="{{g}}" wx:for-item="item" wx:key="i" class="item flex flex1"><view class="{{item.e}}" bindtap="{{item.f}}"><view class="titleNumC">{{item.a}} <text class="{{item.c}}">{{item.b}}</text></view><view class="des">{{item.d}}</view></view><image wx:if="{{item.g}}" class="arrow" src="{{item.h}}" mode="widthFix"></image></view></view><view class="list"><block wx:if="{{h}}"><view wx:for="{{i}}" wx:for-item="item" wx:key="g" class="item" bindtap="{{item.h}}"><view class="title">{{item.a}}</view><view class="des">{{item.b}}</view><view class="labelC flex"><view class="label upstream type">{{item.c}}</view><view class="label upstream market">份额:{{item.d}}%</view></view><view class="importanceC flex"><view class="title">影响度</view><view class="progressBgC flex1"><view class="progress upstream" style="{{'width:' + item.e}}"></view></view><view class="value">{{item.f}}</view></view></view></block><block wx:if="{{j}}"><view wx:for="{{k}}" wx:for-item="item" wx:key="g" class="item" bindtap="{{item.h}}"><view class="title">{{item.a}}</view><view class="des">{{item.b}}</view><view class="labelC flex"><view class="label core type">{{item.c}}</view><view class="label core market">份额:{{item.d}}%</view></view><view class="importanceC flex"><view class="title">影响度</view><view class="progressBgC flex1"><view class="progress core" style="{{'width:' + item.e}}"></view></view><view class="value">{{item.f}}</view></view></view></block><block wx:if="{{l}}"><view wx:for="{{m}}" wx:for-item="item" wx:key="g" class="item" bindtap="{{item.h}}"><view class="title">{{item.a}}</view><view class="des">{{item.b}}</view><view class="labelC flex"><view class="label downstream type">{{item.c}}</view><view class="label downstream market">份额:{{item.d}}%</view></view><view class="importanceC flex"><view class="title">影响度</view><view class="progressBgC flex1"><view class="progress downstream" style="{{'width:' + item.e}}"></view></view><view class="value">{{item.f}}</view></view></view></block></view></view><view wx:if="{{n}}" style="height:500rpx"><l-echart class="r" u-r="chartRef" u-i="2cc4c3dc-0" bind:__l="__l"></l-echart></view></view>

View File

@@ -0,0 +1 @@
.cyl_view{padding:20rpx}.cyl_view .top{font-weight:500}.cyl_view .top .child_1{color:#2b2b2b;font-size:28rpx;font-weight:700}.cyl_view .top .child_2{color:#71675d;font-size:24rpx;margin:0 10rpx}.cyl_view .top .child_3{border:1rpx solid #F3C368;border-radius:5rpx;padding:0 5rpx;color:#f2c369;font-size:24rpx}.cyl_view .center{margin:20rpx 0;display:flex;align-items:center;justify-content:space-evenly;font-weight:500}.cyl_view .center .child{background-color:#f5f5f5;border-radius:10rpx 10rpx 0 0;display:flex;align-items:center;justify-content:center;font-size:26rpx;color:#939393;padding:10rpx 40rpx}.cyl_view .center .child.action{background-color:#f2c369;color:#070707}.cyl_view .bottom .type .item{border-radius:10rpx;width:100%;padding:26rpx 0}.cyl_view .bottom .type .item .contentC{background-color:#fafafc;justify-content:center;height:120rpx;border-radius:10rpx}.cyl_view .bottom .type .item .contentC .titleNumC{font-size:24rpx;font-weight:700;color:#2b2b2b}.cyl_view .bottom .type .item .contentC .titleNumC .num{background-color:#f2c369;margin-left:6rpx;padding:0 5rpx;min-width:24rpx;border-radius:5rpx;font-weight:500;text-align:center}.cyl_view .bottom .type .item .contentC .titleNumC .num.upstream{background-color:#ff5501;color:#fff}.cyl_view .bottom .type .item .contentC .titleNumC .num.core{background-color:#175ce6;color:#fff}.cyl_view .bottom .type .item .contentC .titleNumC .num.downstream{background-color:#1db26f;color:#fff}.cyl_view .bottom .type .item .contentC .des{margin-top:10rpx;font-size:22rpx;font-weight:500;color:#999}.cyl_view .bottom .type .item .contentC.upstream{background-color:#fff4ef;border:solid 1rpx #FF5501}.cyl_view .bottom .type .item .contentC.core{background-color:#f2f6fd;border:solid 1rpx #175CE6}.cyl_view .bottom .type .item .contentC.downstream{background-color:#e7f5f0;border:solid 1rpx #1DB26F}.cyl_view .bottom .type .item .arrow{margin:0 6rpx;width:19rpx;height:auto}.cyl_view .list{margin-top:20rpx}.cyl_view .list .item{background-color:#fafafc;margin-bottom:20rpx;border-radius:10rpx;padding:25rpx 20rpx}.cyl_view .list .item .title{font-size:28rpx;font-weight:700;color:#2b2b2b}.cyl_view .list .item .des{margin-top:10rpx;font-size:24rpx;font-weight:500;color:#999}.cyl_view .list .item .labelC{margin-top:10rpx}.cyl_view .list .item .labelC .label{margin-right:10rpx;padding:0 10rpx;line-height:30rpx;border-radius:5rpx;font-size:20rpx;font-weight:500}.cyl_view .list .item .labelC .label.upstream{color:#ff5501}.cyl_view .list .item .labelC .label.upstream.type{background-color:#fff4ef}.cyl_view .list .item .labelC .label.upstream.market{border:solid 1rpx #FF5501}.cyl_view .list .item .labelC .label.core{color:#175ce6}.cyl_view .list .item .labelC .label.core.type{background-color:#edf2fd}.cyl_view .list .item .labelC .label.core.market{border:solid 1rpx #175CE6}.cyl_view .list .item .labelC .label.downstream{color:#1db26f}.cyl_view .list .item .labelC .label.downstream.type{background-color:#e7f5f0}.cyl_view .list .item .labelC .label.downstream.market{border:solid 1rpx #1DB26F}.cyl_view .list .item .importanceC{margin-top:20rpx}.cyl_view .list .item .importanceC .title{font-size:22rpx;font-weight:500;color:#71675d}.cyl_view .list .item .importanceC .progressBgC{background-color:#efefef;height:10rpx;border-radius:5rpx;margin:0 15rpx}.cyl_view .list .item .importanceC .progressBgC .progress{height:100%;border-radius:5rpx}.cyl_view .list .item .importanceC .progressBgC .progress.upstream{background:linear-gradient(90deg,#ff8c53,#ff5501)}.cyl_view .list .item .importanceC .progressBgC .progress.core{background:linear-gradient(90deg,#518bff,#175ce6)}.cyl_view .list .item .importanceC .progressBgC .progress.downstream{background:linear-gradient(90deg,#48d394,#1db26f)}.cyl_view .list .item .importanceC .value{font-size:24rpx;font-weight:500;color:#71675d}

View File

@@ -0,0 +1 @@
"use strict";const s=require("../../common/vendor.js"),t=require("../../common/assets.js"),e={name:"fzjg-view",data:()=>({}),props:{branchList:Array}};const r=s._export_sfc(e,[["render",function(e,r,n,a,i,o){return{a:s.f(n.branchList,((e,r,n)=>s.e({a:s.t(e.branch_name),b:"注销"==e.business_status},"注销"==e.business_status?{c:t._imports_0$4}:{d:t._imports_1$13},{e:s.t(e.business_status),f:s.n("statusC flex "+("注销"==e.business_status?"logOff":"exist")),g:s.t(e.register_capital),h:s.t(e.legal_person),i:s.t(e.register_date),j:s.t(e.related_company_count),k:r})))}}]]);wx.createComponent(r);

View File

@@ -0,0 +1,4 @@
{
"component": true,
"usingComponents": {}
}

View File

@@ -0,0 +1 @@
<view class="branchList"><view wx:for="{{a}}" wx:for-item="item" wx:key="k" class="item"><view class="titleStatusC flex"><view class="title flex1">{{item.a}}</view><view class="{{item.f}}"><image wx:if="{{item.b}}" class="icon" src="{{item.c}}" mode="widthFix"></image><image wx:else class="icon" src="{{item.d}}" mode="widthFix"></image><view>{{item.e}}</view></view></view><view class="infoC topInfo flex"><view class="infoItem leftInfo flex flex1"><view class="title">注册资本</view><view class="content flex1">{{item.g}}</view></view><view class="infoItem rightInfo flex flex1"><view class="title">法人代表</view><view class="content flex1">{{item.h}}</view></view></view><view class="infoC flex"><view class="infoItem leftInfo flex flex1"><view class="title">成立日期</view><view class="content flex1">{{item.i}}</view></view><view class="infoItem rightInfo flex flex1"><view class="title">关联企业</view><view class="content flex1">{{item.j}}家</view></view></view></view></view>

View File

@@ -0,0 +1 @@
.branchList{margin-top:38rpx;padding:0 20rpx}.branchList .item{background-color:#fafafc;margin-bottom:20rpx;padding:20rpx;border-radius:10rpx}.branchList .item .titleStatusC{font-size:28rpx;font-weight:700;color:#2b2b2b}.branchList .item .titleStatusC .statusC{padding:0 10rpx;line-height:28rpx;border-radius:15rpx;font-size:20rpx;font-weight:500}.branchList .item .titleStatusC .statusC .icon{margin-right:3rpx;width:16rpx;height:auto}.branchList .item .titleStatusC .statusC.exist{background-color:#fff7e9;border:solid 1rpx #F2C369;color:#f2c369}.branchList .item .titleStatusC .statusC.logOff{background-color:#fff1f1;border:solid 1rpx #EF3535;color:#ef3535}.branchList .item .infoC{height:50rpx}.branchList .item .infoC .infoItem .title{margin-right:16rpx;font-size:22rpx;font-weight:500;color:#999}.branchList .item .infoC .infoItem .content{font-size:24rpx;font-weight:700;color:#2a2a2a;text-align:right}.branchList .item .infoC .infoItem.leftInfo{margin-right:20rpx}.branchList .item .infoC .infoItem.rightInfo{margin-left:20rpx}.branchList .item .infoC.topInfo{margin-top:10rpx}

View File

@@ -0,0 +1 @@
"use strict";const t=require("../../utils/util.js"),e=require("../../common/vendor.js"),i=require("../../common/assets.js"),o={name:"fzlc-view",data:()=>({getRateUpOrDown:t.getRateUpOrDown}),props:{keyFactorsInfo:null,keyFactorsList:Array,timelineInfo:null,timelineList:Array},methods:{clickAction(t){this.$emit("detail",t)}}};const n=e._export_sfc(o,[["render",function(t,o,n,r,c,a){return e.e({a:n.keyFactorsInfo},n.keyFactorsInfo?{b:e.t(n.keyFactorsInfo.total_factors)}:{},{c:e.f(n.keyFactorsList,((t,o,n)=>e.e({a:e.t(t.category_name),b:e.t(t.factors.length),c:t.show},t.show?{d:i._imports_0$7}:{e:i._imports_1$18},{f:t.show},t.show?{g:e.f(t.factors,((t,o,n)=>e.e({a:e.t(t.factor_name),b:"negative"==t.impact_direction},(t.impact_direction,{}),{c:"neutral"==t.impact_direction},(t.impact_direction,{}),{d:"positive"==t.impact_direction},(t.impact_direction,{}),{e:e.t(t.factor_value),f:e.t(t.factor_unit),g:e.n("value "+t.impact_direction),h:c.getRateUpOrDown(t.year_on_year)},c.getRateUpOrDown(t.year_on_year)?{i:i._imports_2$12}:{j:i._imports_3$12},{k:e.t(t.year_on_year?t.year_on_year:0),l:e.n("chgC flex "+(c.getRateUpOrDown(t.year_on_year)?"down":"up")),m:e.t(t.factor_desc),n:e.t(t.impact_weight),o:o})))}:{},{h:o,i:e.o((e=>t.show=!t.show),o)}))),d:n.timelineInfo},n.timelineInfo?{e:e.t(n.timelineInfo.positive_events),f:e.t(n.timelineInfo.negative_events)}:{},{g:e.f(n.timelineList,((t,o,n)=>e.e({a:1==t.impact_metrics.is_positive},1==t.impact_metrics.is_positive?{b:i._imports_4$11}:{c:i._imports_5$6},{d:e.n("line flex1 "+(1==t.impact_metrics.is_positive?"up":"down")),e:e.t(t.event_title),f:e.t(t.event_type),g:e.n("eventType "+(1==t.impact_metrics.is_positive?"up":"down")),h:e.t(t.event_date),i:e.t(t.event_desc),j:e.n("progress "+(1==t.impact_metrics.is_positive?"up":"down")),k:`${t.impact_metrics.impact_score}%`,l:e.t(t.impact_metrics.impact_score),m:o,n:e.o((e=>a.clickAction(t)),o)})))})}]]);wx.createComponent(n);

View File

@@ -0,0 +1,4 @@
{
"component": true,
"usingComponents": {}
}

View File

@@ -0,0 +1 @@
<view style="padding:25rpx 20rpx;box-sizing:border-box"><view wx:if="{{a}}" class="flex" style="font-size:28rpx"><text>关键因素</text><text style="font-size:24rpx;color:#070707;padding:0rpx 10rpx;border-radius:3rpx;background-color:#F2C369;margin-left:10rpx">{{b}}</text></view><view class="keyFactorsList"><view wx:for="{{c}}" wx:for-item="item" wx:key="h" class="item" bindtap="{{item.i}}" style="margin:20rpx 0;background-color:#FAFAFC;border-radius:10rpx;padding:25rpx 20rpx;color:#2B2B2B"><view style="display:flex;align-items:center;justify-content:space-between"><view style="flex:1;font-size:26rpx"><text>{{item.a}}</text><text style="font-size:24rpx;color:#070707;padding:0rpx 10rpx;border-radius:3rpx;background-color:#F2C369;margin-left:10rpx">{{item.b}}</text></view><image wx:if="{{item.c}}" style="width:20rpx;height:12rpx" src="{{item.d}}" mode="widthFix"></image><image wx:else style="width:20rpx;height:12rpx" src="{{item.e}}" mode="widthFix"></image></view><block wx:if="{{item.f}}"><view wx:for="{{item.g}}" wx:for-item="fitem" wx:key="o" class="fitem" style="margin:20rpx 0;padding:20rpx;background-color:white;border-radius:10rpx;border:1rpx solid #E7E7E7;color:#2B2B2B;font-weight:500;font-size:26rpx"><view class="titleImpactC flex between"><view>{{fitem.a}}</view><view wx:if="{{fitem.b}}" class="impact negative">负面</view><view wx:if="{{fitem.c}}" class="impact neutral">中性</view><view wx:if="{{fitem.d}}" class="impact positive">正面</view></view><view class="valueChgC flex" style="margin-top:10rpx"><view class="{{fitem.g}}">{{fitem.e}}{{fitem.f}}</view><view class="{{fitem.l}}"><image wx:if="{{fitem.h}}" class="icon" src="{{fitem.i}}" mode="widthFix"></image><image wx:else class="icon" src="{{fitem.j}}" mode="widthFix"></image><view>{{fitem.k}}%</view></view></view><view style="margin-top:10rpx;color:#999999;font-size:22rpx">{{fitem.m}}</view><view style="margin-top:10rpx;color:#999999;font-size:22rpx">影响权重: {{fitem.n}}</view></view></block></view></view><view wx:if="{{d}}" class="flex" style="font-size:28rpx"><text>发展时间线</text><text style="font-size:24rpx;color:white;padding:0rpx 10rpx;border-radius:3rpx;background-color:#EC3440;margin-left:10rpx">正面 {{e}}</text><text style="font-size:24rpx;color:white;padding:0rpx 10rpx;border-radius:3rpx;background-color:#345423;margin-left:10rpx">负面 {{f}}</text></view><view class="timelineList"><view wx:for="{{g}}" wx:for-item="item" wx:key="m" class="item" bindtap="{{item.n}}"><view class="impactC flexColumnCenter"><image wx:if="{{item.a}}" class="icon" style="margin-top:20rpx" src="{{item.b}}" mode="widthFix"></image><image wx:else class="icon" src="{{item.c}}" mode="widthFix"></image><view class="{{item.d}}"></view></view><view style="flex:1;margin-left:10rpx;background-color:#FAFAFC;padding:24rpx 15rpx;border-radius:10rpx;font-weight:500"><view class="titleTypeC"><text class="title">{{item.e}}</text><text class="{{item.g}}">{{item.f}}</text></view><view style="color:#999999;font-size:20rpx;margin:15rpx 0">{{item.h}}</view><view style="color:#71675D;font-size:22rpx">{{item.i}}</view><view style="display:flex;align-items:center;margin-top:30rpx"><view style="color:#71675D;font-size:22rpx;font-weight:500">影响度</view><view class="progressBgC"><view class="{{item.j}}" style="{{'width:' + item.k}}"></view></view><view style="color:#71675D;font-size:24rpx;font-weight:500">{{item.l}}</view></view></view></view></view></view>

View File

@@ -0,0 +1 @@
.keyFactorsList .item .fitem .impact{border-radius:5rpx;padding:0 10rpx;font-size:20rpx;font-weight:500;color:#fff}.keyFactorsList .item .fitem .impact.negative,.keyFactorsList .item .fitem .impact.neutral{background-color:#345423}.keyFactorsList .item .fitem .impact.positive{background-color:#ec3440}.keyFactorsList .item .fitem .valueChgC .value{font-size:30rpx;font-weight:700;margin-right:10rpx}.keyFactorsList .item .fitem .valueChgC .value.negative,.keyFactorsList .item .fitem .valueChgC .value.neutral{color:#345423}.keyFactorsList .item .fitem .valueChgC .value.positive{color:#ec3440}.keyFactorsList .item .fitem .valueChgC .chgC{padding:0 10rpx;border-radius:5rpx;font-size:20rpx}.keyFactorsList .item .fitem .valueChgC .chgC .icon{margin-right:5rpx;width:11rpx;height:auto}.keyFactorsList .item .fitem .valueChgC .chgC.down{border:1rpx solid #345423;color:#345423}.keyFactorsList .item .fitem .valueChgC .chgC.up{border:1rpx solid #EC3440;color:#ec3440}.timelineList .item{display:flex;margin:20rpx 0;border-radius:10rpx}.timelineList .item .impactC .icon{width:30rpx;height:auto}.timelineList .item .impactC .line{margin:10rpx 0 -30rpx;width:1rpx}.timelineList .item .impactC .line.up{border-left:1rpx dashed #EC3440}.timelineList .item .impactC .line.down{border-left:1rpx dashed #345423}.timelineList .item .titleTypeC .title{margin-right:10rpx;font-size:24rpx;font-weight:700;color:#2a2a2a}.timelineList .item .titleTypeC .eventType{padding:5rpx 10rpx;border-radius:5rpx;font-size:20rpx;font-weight:500}.timelineList .item .titleTypeC .eventType.up{background-color:#ffe7e9;color:#ec3440}.timelineList .item .titleTypeC .eventType.down{background-color:#deeed6;color:#345423}.timelineList .item .progressBgC{background-color:#efefef;margin:0 15rpx;width:200rpx;height:10rpx;border-radius:5rpx;overflow:hidden}.timelineList .item .progressBgC .progress{height:100%;border-radius:5rpx}.timelineList .item .progressBgC .progress.up{background:linear-gradient(to right,#ff525d,#ec3440)}.timelineList .item .progressBgC .progress.down{background:linear-gradient(to right,#537d3d,#345423)}

View File

@@ -0,0 +1 @@
"use strict";const e=require("../../utils/util.js"),t=require("../../common/vendor.js"),a=require("../../common/assets.js"),n={name:"gltd-view",data:()=>({getLastNameStr:e.getLastNameStr,getAgeByBirthYear:e.getAgeByBirthYear}),props:{managementList:Array},methods:{clickExpandOrRetractManagement(e){this.managementList[e].isExpand=!this.managementList[e].isExpand}}};const r=t._export_sfc(n,[["render",function(e,n,r,s,i,m){return{a:t.f(r.managementList,((e,n,r)=>t.e({a:e.list.length>0},e.list.length>0?{b:t.t(e.key),c:t.t(e.list.length)}:{},{d:e.list.length>4&&!e.isExpand},e.list.length>4&&!e.isExpand?{e:t.f(e.list.slice(0,4),((e,n,r)=>t.e({a:t.t(i.getLastNameStr(e.name)),b:"女"==e.gender},"女"==e.gender?{c:a._imports_0$3}:{d:a._imports_1$17},{e:t.n("sexC flexCenter absolute "+("女"==e.gender?"female":"male")),f:t.t(e.name),g:t.t(e.position_name),h:t.t(e.start_date),i:t.t(e.education),j:t.t(i.getAgeByBirthYear(e.birth_year))}))),f:n}:{g:t.f(e.list,((e,n,r)=>t.e({a:t.t(i.getLastNameStr(e.name)),b:"女"==e.gender},"女"==e.gender?{c:a._imports_0$3}:{d:a._imports_1$17},{e:t.n("sexC flexCenter absolute "+("女"==e.gender?"female":"male")),f:t.t(e.name),g:t.t(e.position_name),h:t.t(e.start_date),i:t.t(e.education),j:t.t(i.getAgeByBirthYear(e.birth_year))}))),h:n},{i:e.list.length>4},e.list.length>4?{j:t.t(e.isExpand?"收起":"展开查看"),k:a._imports_2$13,l:t.o((e=>m.clickExpandOrRetractManagement(n)),n)}:{},{m:n})))}}]]);wx.createComponent(r);

View File

@@ -0,0 +1,4 @@
{
"component": true,
"usingComponents": {}
}

View File

@@ -0,0 +1 @@
<view class="managementTeamList"><block wx:for="{{a}}" wx:for-item="item" wx:key="m"><view wx:if="{{item.a}}" class="positionNumC flex"><view class="position">{{item.b}}</view><view class="num director">{{item.c}}人</view></view><block wx:if="{{item.d}}"><view wx:for="{{item.e}}" wx:for-item="pitem" wx:key="f" class="item flex"><view class="avatarC flexCenter relative director">{{pitem.a}} <view class="{{pitem.e}}"><image wx:if="{{pitem.b}}" class="icon" src="{{pitem.c}}" mode="widthFix"></image><image wx:else class="icon" src="{{pitem.d}}" mode="widthFix"></image></view></view><view class="flex1"><view class="flex"><view class="name">{{pitem.f}}</view><view class="position">{{pitem.g}}</view><view class="date flex1">任职日期:{{pitem.h}}</view></view><view class="educationAgeC flex"><view class="education label">{{pitem.i}}</view><view class="age label">{{pitem.j}}岁</view></view></view></view></block><block wx:else><view wx:for="{{item.g}}" wx:for-item="pitem" wx:key="h" class="item flex"><view class="avatarC flexCenter relative director">{{pitem.a}} <view class="{{pitem.e}}"><image wx:if="{{pitem.b}}" class="icon" src="{{pitem.c}}" mode="widthFix"></image><image wx:else class="icon" src="{{pitem.d}}" mode="widthFix"></image></view></view><view class="flex1"><view class="flex"><view class="name">{{pitem.f}}</view><view class="position">{{pitem.g}}</view><view class="date flex1">任职日期:{{pitem.h}}</view></view><view class="educationAgeC flex"><view class="education label">{{pitem.i}}</view><view class="age label">{{pitem.j}}岁</view></view></view></view></block><view wx:if="{{item.i}}" class="expandMoreC flexCenter" bindtap="{{item.l}}"><view>{{item.j}}</view><image class="arrow" src="{{item.k}}" mode="widthFix"></image></view></block></view>

View File

@@ -0,0 +1 @@
.managementTeamList{padding:0 20rpx}.managementTeamList .positionNumC{height:70rpx}.managementTeamList .positionNumC .position{margin-right:11rpx;font-size:28rpx;font-weight:700}.managementTeamList .positionNumC .num{padding:0 14rpx;line-height:30rpx;border-radius:5rpx;font-size:20rpx;font-weight:700;color:#fff}.managementTeamList .positionNumC .num.director{background-color:#99afec}.managementTeamList .positionNumC .num.supervisor{background-color:#b499ec}.managementTeamList .positionNumC .num.other{background-color:#b5b5c9}.managementTeamList .item{background-color:#fafafc;margin-bottom:20rpx;padding:20rpx 25rpx 20rpx 20rpx;border-radius:10rpx}.managementTeamList .item .avatarC{margin-right:18rpx;width:80rpx;height:80rpx;border-radius:50%;font-size:30rpx;font-weight:700;color:#fff}.managementTeamList .item .avatarC .sexC{right:0;bottom:0;width:30rpx;height:30rpx;border-radius:50%;border:solid 2rpx white}.managementTeamList .item .avatarC .sexC .icon{width:16rpx;height:auto}.managementTeamList .item .avatarC .sexC.female{background-color:#fa5a93}.managementTeamList .item .avatarC .sexC.male{background-color:#3e6cfc}.managementTeamList .item .avatarC.director{background-color:#99afec}.managementTeamList .item .avatarC.supervisor{background-color:#b499ec}.managementTeamList .item .avatarC.other{background-color:#b5b5c9}.managementTeamList .item .name{margin-right:13rpx;font-size:24rpx;font-weight:700;color:#666}.managementTeamList .item .position{font-size:22rpx;font-weight:500;color:#999}.managementTeamList .item .date{font-size:20rpx;font-weight:500;color:#999;text-align:right}.managementTeamList .item .educationAgeC{margin-top:8rpx}.managementTeamList .item .educationAgeC .label{margin-right:10rpx;background-color:#f1f1f1;line-height:30rpx;padding:0 16rpx;font-size:20rpx;font-weight:500;color:#999}.managementTeamList .expandMoreC{height:80rpx;border-bottom:solid 1rpx #E7E7E7;font-size:24rpx;font-weight:500;color:#c9c9c9}.managementTeamList .expandMoreC .arrow{margin-left:18rpx;width:11rpx;height:auto}

View File

@@ -0,0 +1 @@
"use strict";const t=require("../../utils/util.js"),e=require("../../common/vendor.js"),o=require("../../common/assets.js"),r={name:"gqjg-view",data:()=>({getNumStr:t.getNumStr,getRateUpOrDown:t.getRateUpOrDown,getRateStr:t.getRateStr}),props:{actualControlInfo:Object,concentrationList:Array,shareholdersList:Array,circulatingShareholdersList:Array,competitivePositionInfo:Object}};const a=e._export_sfc(r,[["render",function(t,r,a,n,i,l){return e.e({a:a.actualControlInfo},a.actualControlInfo?e.e({b:e.t(a.actualControlInfo.actual_controller_name),c:e.t(a.actualControlInfo.control_type),d:e.t(a.actualControlInfo.end_date),e:a.actualControlInfo.holding_ratio},a.actualControlInfo.holding_ratio?{f:e.t(a.actualControlInfo.holding_ratio.toFixed(2))}:{},{g:e.t(i.getNumStr(a.actualControlInfo.holding_shares))}):{},{h:a.concentrationList.length>0},a.concentrationList.length>0?{i:e.t(a.concentrationList[0].end_date)}:{},{j:e.f(a.concentrationList,((t,r,a)=>e.e({a:e.t(t.stat_item),b:e.t(t.holding_ratio.toFixed(2)),c:0!=t.ratio_change},0!=t.ratio_change?e.e({d:i.getRateUpOrDown(t.ratio_change)},i.getRateUpOrDown(t.ratio_change)?{e:o._imports_2$12}:{f:o._imports_3$12},{g:e.t(i.getRateStr(t.ratio_change)),h:e.n("shengjiang flex "+(i.getRateUpOrDown(t.ratio_change)?"down":"up"))}):{},{i:r}))),k:e.f(a.shareholdersList,((t,o,r)=>({a:e.t(t.shareholder_name),b:e.t(t.shareholder_type?t.shareholder_type:"-"),c:e.t(i.getNumStr(t.holding_shares)),d:e.t(t.total_share_ratio),e:e.t(t.share_nature),f:o,g:o%2==1?1:""}))),l:e.f(a.circulatingShareholdersList,((t,o,r)=>({a:e.t(t.shareholder_name),b:e.t(t.shareholder_type?t.shareholder_type:"-"),c:e.t(i.getNumStr(t.holding_shares)),d:e.t(t.total_share_ratio),e:e.t(t.share_nature),f:o,g:o%2==1?1:""})))})}]]);wx.createComponent(a);

View File

@@ -0,0 +1,4 @@
{
"component": true,
"usingComponents": {}
}

View File

@@ -0,0 +1 @@
<view class="com_list"><view class="item"><view class="flex"><view class="title">实际控制人</view></view><view wx:if="{{a}}" class="com_info"><view class="left"><view class="l_top">{{b}}</view><view class="l_bottom"><view class="l_b_left">{{c}}</view><view class="l_b_right">截至 {{d}}</view></view></view><view class="right"><view class="r_top">控制比例</view><view wx:if="{{e}}" class="r_center">{{f}}%</view><view class="r_bottom">{{g}}股</view></view></view><view class="flex"><view class="title">股权集中度</view></view><view class="guquan"><view wx:if="{{h}}" class="top">{{i}}</view><view class="bottom"><view class="b_item flexWrap"><view wx:for="{{j}}" wx:for-item="item" wx:key="i" class="item_info flex"><view class="left flex1">{{item.a}}</view><view class="right flex"><view class="bili">{{item.b}}%</view><view wx:if="{{item.c}}" class="{{item.h}}"><image wx:if="{{item.d}}" class="icon" src="{{item.e}}" mode="widthFix"></image><image wx:else class="icon" src="{{item.f}}" mode="widthFix"></image><view>{{item.g}}%</view></view></view></view></view></view></view><view class="flex"><view class="title">十大股东</view></view><view class="gudong"><view class="back"><view class="top action"><view class="head">股东名称</view><view class="head">股东类型</view><view class="head" style="text-align:center">持股数量</view><view class="head" style="text-align:center">持股比例</view><view class="head" style="text-align:center">股份性质</view></view><view wx:for="{{k}}" wx:for-item="item" wx:key="f" class="{{['top', item.g && 'action']}}"><view class="child">{{item.a}}</view><view class="child">{{item.b}}</view><view class="child" style="text-align:center">{{item.c}}股</view><view class="child" style="color:#3E87CF;font-weight:bold;text-align:center">{{item.d}}%</view><view class="nature">{{item.e}}</view></view></view></view><view class="flex"><view class="title">十大流通股东 </view></view><view class="gudong"><view class="back"><view class="top action"><view class="head">股东名称</view><view class="head">股东类型</view><view class="head" style="text-align:center">持股数量</view><view class="head" style="text-align:center">流通股比例</view><view class="head" style="text-align:center">股份性质</view></view><view wx:for="{{l}}" wx:for-item="item" wx:key="f" class="{{['top', item.g && 'action']}}"><view class="child">{{item.a}}</view><view class="child">{{item.b}}</view><view class="child" style="text-align:center">{{item.c}}股</view><view class="child" style="color:#893ECF;font-weight:bold;text-align:center">{{item.d}}%</view><view class="nature">{{item.e}}</view></view></view></view></view></view>

View File

@@ -0,0 +1 @@
.com_list{margin-top:38rpx;padding:0 20rpx;box-sizing:border-box}.com_list .title{color:#2b2b2b;font-size:28rpx;font-weight:700}.com_list .item .com_info{margin:20rpx 0;background-color:#fafafc;border-radius:10rpx;padding:25rpx 20rpx;box-sizing:border-box;display:flex;align-items:center;justify-content:space-between;font-weight:500}.com_list .item .com_info .left .l_top{color:#666;font-size:24rpx}.com_list .item .com_info .left .l_bottom{display:flex;align-items:center;margin-top:10rpx}.com_list .item .com_info .left .l_bottom .l_b_left{background-color:#99afec;border-radius:10rpx;display:flex;align-items:center;justify-content:center;color:#fff;font-size:20rpx;padding:5rpx}.com_list .item .com_info .left .l_bottom .l_b_right{margin-left:10rpx;color:#999;font-size:22rpx}.com_list .item .com_info .right{color:#71675d;font-size:20rpx;text-align:right}.com_list .item .com_info .right .r_center{color:#bb8520;font-size:28rpx;font-weight:700;margin:5rpx 0}.com_list .item .guquan{margin:25rpx 0;font-weight:500;background-color:#fafafc;border-radius:10rpx;padding:25rpx 13rpx;box-sizing:border-box}.com_list .item .guquan .top{color:#999;font-size:22rpx}.com_list .item .guquan .bottom{display:flex}.com_list .item .guquan .bottom .b_item .item_info{margin:15rpx 15rpx 15rpx 0;width:calc((100% - 15rpx)/2)}.com_list .item .guquan .bottom .b_item .item_info .left{color:#666;font-size:20rpx}.com_list .item .guquan .bottom .b_item .item_info .right{height:35rpx;font-size:20rpx}.com_list .item .guquan .bottom .b_item .item_info .right .bili{color:#bb8520;font-weight:700}.com_list .item .guquan .bottom .b_item .item_info .right .shengjiang{margin-left:10rpx;padding:0 5rpx;height:30rpx;border-radius:5rpx;font-size:18rpx}.com_list .item .guquan .bottom .b_item .item_info .right .shengjiang .icon{width:11rpx;height:25rpx;margin-right:4rpx}.com_list .item .guquan .bottom .b_item .item_info .right .shengjiang.up{background-color:#ffdfe1;color:#ec3440}.com_list .item .guquan .bottom .b_item .item_info .right .shengjiang.down{background-color:#c6f6d5;color:#345423}.com_list .item .guquan .bottom .b_item .item_info:nth-child(2n){margin-right:0}.com_list .item .gudong{margin-top:25rpx}.com_list .item .gudong .back{margin:25rpx 0;font-weight:500;border-radius:10rpx;color:#666}.com_list .item .gudong .back .top{width:100%;display:grid;align-items:center;grid-template-columns:166rpx repeat(4,1fr);background-color:#fff;height:60rpx}.com_list .item .gudong .back .top.action{background-color:#fafafc}.com_list .item .gudong .back .top .head{padding:0 10rpx;font-size:22rpx}.com_list .item .gudong .back .top .child{padding:0 10rpx;font-size:18rpx;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.com_list .item .gudong .back .top .nature{background-color:#fff7e9;margin:10rpx;line-height:36rpx;border-radius:5rpx;font-size:18rpx;color:#e0ac4a;text-align:center;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}

View File

@@ -0,0 +1 @@
"use strict";const s=require("../../common/vendor.js"),c={name:"gsxx-view",data:()=>({}),props:{stockBasicInfo:Object}};const o=s._export_sfc(c,[["render",function(c,o,t,n,e,i){return s.e({a:t.stockBasicInfo},t.stockBasicInfo?{b:s.t(t.stockBasicInfo.credit_code),c:s.t(t.stockBasicInfo.company_size),d:s.t(t.stockBasicInfo.reg_address),e:s.t(t.stockBasicInfo.office_address),f:s.t(t.stockBasicInfo.accounting_firm),g:s.t(t.stockBasicInfo.law_firm),h:s.t(t.stockBasicInfo.main_business),i:s.t(t.stockBasicInfo.business_scope)}:{})}]]);wx.createComponent(o);

View File

@@ -0,0 +1,4 @@
{
"component": true,
"usingComponents": {}
}

View File

@@ -0,0 +1 @@
<view wx:if="{{a}}" class="businessInfoList"><view class="section">工商信息</view><view class="infoC"><view class="infoItem flex"><view class="title">统一信用代码</view><view class="content code flex1 rightAlign">{{b}}</view></view><view class="infoItem flex"><view class="title">公司规模</view><view class="content flex1 rightAlign">{{c}}</view></view><view class="infoItem flex"><view class="title">注册地址</view><view class="content flex1 rightAlign">{{d}}</view></view><view class="infoItem flex"><view class="title">办公地址</view><view class="content flex1 rightAlign">{{e}}</view></view></view><view class="section">服务机构</view><view class="infoC"><view class="title infoItem">会计师事务所</view><view class="content infoItem">{{f}}</view><view class="title infoItem">律师事务所</view><view class="content infoItem">{{g}}</view></view><view class="section">主营业务</view><view class="infoC mainBussiness"><text class="title">{{h}}</text></view><view class="section">经营范围</view><view class="infoC"><text class="title">{{i}}</text></view></view>

View File

@@ -0,0 +1 @@
.businessInfoList{padding:0 20rpx}.businessInfoList .section{line-height:72rpx;font-size:28rpx;font-weight:700;color:#2b2b2b}.businessInfoList .infoC{background-color:#fafafc;border-radius:10rpx;padding:12rpx 20rpx}.businessInfoList .infoC .infoItem{line-height:46rpx}.businessInfoList .infoC .title{font-size:22rpx;font-weight:500;color:#999}.businessInfoList .infoC .content{font-size:24rpx;font-weight:500;color:#2a2a2a}.businessInfoList .infoC .content.code{color:#bb8520}.businessInfoList .infoC .content.rightAlign{text-align:right}.businessInfoList .infoC.mainBussiness{padding:20rpx}

View File

@@ -0,0 +1 @@
"use strict";const e=require("../../common/vendor.js"),t=require("../../common/assets.js");getApp();const a={name:"navBar",data(){return{navH:e.inject("navHeight"),menuH:e.inject("menuHeight"),navBarStyle:"",backTitleStyle:"",navTitleStyle:"",titleColor:this.navTitleColor,bgColor:this.navBgColor,num:this.peopleNum}},props:{leftText:{type:String,default:""},backBlack:{type:Boolean,default:!1},navTitle:{type:String,default:""},navBgColor:{type:String,default:""},navTitleColor:{type:String,default:"white"},hideBack:{type:Boolean,default:!1},hideNavBg:{type:Boolean,default:!1},backLevel:{type:Number,default:1},peopleNum:{type:Number,default:0}},mounted(){let t=this.navH,a=e.inject("menuHeight"),l=e.inject("menuTop"),i=`background-color:${this.bgColor};height:${t}px;`,n=`height:${a}px;margin-top:${l}px;color:${this.titleColor}`,o=`height:${a}px;line-height:${a}px;top:${l}px;color:${this.titleColor}`;this.navBarStyle=i,this.backTitleStyle=n,this.navTitleStyle=o},watch:{navTitleColor:{handler(e,t){this.titleColor=e}},navBgColor:{handler(e,t){this.bgColor=e}},peopleNum:{handler(e,t){this.num=e}}},methods:{clickBack(){e.index.navigateBack({fail(){e.index.switchTab({url:"/pages/index/index"})}})}}};const l=e._export_sfc(a,[["render",function(a,l,i,n,o,r){return e.e({a:!i.hideNavBg},i.hideNavBg?{}:{b:t._imports_0},{c:!i.hideBack&&!i.backBlack},i.hideBack||i.backBlack?{}:{d:t._imports_1$15},{e:!i.hideBack&&i.backBlack},!i.hideBack&&i.backBlack?{f:t._imports_2}:{},{g:e.t(i.leftText),h:e.s(o.backTitleStyle),i:e.o(((...e)=>r.clickBack&&r.clickBack(...e))),j:e.t(i.navTitle),k:o.num>0},o.num>0?{l:e.t(o.num)}:{},{m:e.s(o.navTitleStyle),n:e.s(o.navBarStyle)})}]]);wx.createComponent(l);

View File

@@ -0,0 +1,4 @@
{
"component": true,
"usingComponents": {}
}

View File

@@ -0,0 +1 @@
<view class="nav flex fixed" style="{{n}}"><image wx:if="{{a}}" class="bg absolute" src="{{b}}" mode="widthFix"></image><view class="backC relative flex" style="{{h}}" bindtap="{{i}}"><image wx:if="{{c}}" class="icon" src="{{d}}" mode="widthFix"></image><image wx:if="{{e}}" class="icon" src="{{f}}" mode="widthFix"></image><text class="title">{{g}}</text></view><view class="titleC relative" style="{{m}}">{{j}} <view wx:if="{{k}}" class="peopleNum absolute"><view class="num">{{l}}人</view></view></view></view>

View File

@@ -0,0 +1 @@
.nav{top:0;left:0;right:0;z-index:99;overflow:hidden}.nav .bg{top:0;left:0;width:100%;height:auto}.nav .backC{padding:0 25rpx}.nav .backC .icon{margin-right:12rpx;width:32rpx;height:auto}.nav .title{font-size:36rpx;font-weight:700}.nav .titleC{position:absolute;left:calc((100% - 400rpx)/2);width:400rpx;white-space:nowrap;text-overflow:ellipsis;text-align:center;font-size:36rpx;font-weight:500}.nav .titleC .peopleNum{background-color:#3b9174;top:-15rpx;left:270rpx;height:30rpx;border-radius:15px 15px 15px 0;line-height:30rpx;font-size:24rpx;color:#fff}.nav .titleC .peopleNum .num{margin:0 16rpx}

View File

@@ -0,0 +1 @@
"use strict";const e=require("../../utils/util.js"),t=require("../../common/vendor.js"),r=require("../../common/assets.js"),a={name:"news-view",data:()=>({showType:0,getChgRateStr:e.getChgRateStr,getRateUpOrDown:e.getRateUpOrDown}),props:{type:Number,newsList:Array,announcementList:Array},watch:{type:{handler(e,t){this.showType=e}}},methods:{}};const n=t._export_sfc(a,[["render",function(e,a,n,o,s,g){return t.e({a:0==s.showType},0==s.showType?{b:r._imports_0$9,c:t.f(n.newsList,((e,r,a)=>t.e({a:t.t(e.title),b:t.t(e.view_count),c:t.t(e.hot_score),d:t.t(e.event_type),e:t.t(e.invest_score),f:t.f(["C级","金融监管","资管行业","自律管理"],((e,r,a)=>({a:t.t(e)}))),g:t.t(e.description),h:e.related_avg_chg},(e.related_avg_chg,{}),{i:e.related_avg_chg},e.related_avg_chg?{j:t.t(s.getChgRateStr(e.related_avg_chg)),k:t.n("chg "+(s.getRateUpOrDown(e.related_avg_chg)?"down":"up")),l:t.t(s.getChgRateStr(e.related_max_chg)),m:t.n("chg "+(s.getRateUpOrDown(e.related_max_chg)?"down":"up")),n:t.t(s.getChgRateStr(e.related_week_chg)),o:t.n("chg "+(s.getRateUpOrDown(e.related_week_chg)?"down":"up"))}:{},{p:r}))),d:r._imports_1$19,e:r._imports_2$15,f:r._imports_3$14}:{},{g:1==s.showType},1==s.showType?{h:t.f(n.announcementList,((e,r,a)=>({a:t.t(e.title),b:t.t(e.announce_date),c:t.t(e.format),d:t.t(e.file_size),e:r})))}:{})}]]);wx.createComponent(n);

View File

@@ -0,0 +1,4 @@
{
"component": true,
"usingComponents": {}
}

View File

@@ -0,0 +1 @@
<view><block wx:if="{{a}}"><view style="padding:20rpx"><view style="background-color:#F3F3F3;display:flex;align-items:center;height:70rpx;border-radius:30rpx;overflow:hidden"><view style="display:flex;align-items:center;justify-content:center;width:62rpx"><image style="width:25rpx;height:24rpx" src="{{b}}" mode="widthFix"></image></view><input style="flex:1;height:100%;font-size:22rpx;color:#999;margin-right:20rpx" type="text" placeholder="搜索相关新闻..."/></view><view class="newsList"><view wx:for="{{c}}" wx:for-item="item" wx:key="p" class="item" style="border:1rpx solid #E7E7E7;border-radius:10rpx;padding:0 27rpx;margin:20rpx 0"><view style="color:#2B2B2B;font-size:26rpx;font-weight:bold;margin-top:20rpx">{{item.a}}</view><view style="display:flex;align-items:center;color:#999999;font-size:22rpx;font-weight:400"><image style="width:20rpx;height:20rpx;margin-right:5rpx" src="{{d}}" mode="widthFix"></image><text>2025/12/16</text><text style="margin:10rpx">|</text><image style="width:18rpx;height:13rpx;margin-right:5rpx" src="{{e}}" mode="widthFix"></image><text>{{item.b}}</text><text style="margin:10rpx">|</text><image style="width:16rpx;height:19rpx;margin-right:5rpx" src="{{f}}" mode="widthFix"></image><text>{{item.c}}</text></view><view class="labelList flexWrap"><view class="label eventType">{{item.d}}</view><view class="label investScore">投资分:{{item.e}}</view><view wx:for="{{item.f}}" wx:for-item="item" style="background-color:#FFFAF0;border-radius:3rpx;padding:2rpx 10rpx;overflow:hidden;font-size:18rpx;color:#E9AE3E;font-weight:400;margin-right:10rpx">{{item.a}}</view></view><view style="margin:20rpx 0;font-size:22rpx;color:#71675D;font-weight:500">{{item.g}}</view><view wx:if="{{item.h}}" style="height:1rpx;background-color:#E7E7E7"></view><view wx:if="{{item.i}}" class="relatedChgC flex"><text style="font-weight:bold;color:#2B2B2B">相关涨跌:</text><text>平均 </text><text class="{{item.k}}">{{item.j}}%</text><text style="margin:0 20rpx">|</text><text>最大 </text><text class="{{item.m}}">{{item.l}}%</text><text style="margin:0 20rpx">|</text><text>周 </text><text class="{{item.o}}">{{item.n}}%</text></view></view></view></view></block><block wx:if="{{g}}"><view wx:for="{{h}}" wx:for-item="item" wx:key="e" style="padding:20rpx"><view style="border:1rpx solid #E7E7E7;border-radius:10rpx;padding:0 27rpx;margin:20rpx 0;display:flex;align-items:center"><view style="flex:1"><view style="color:#2B2B2B;font-size:26rpx;font-weight:bold;margin-top:20rpx">{{item.a}}</view><view style="display:flex;align-items:center;color:#71675D;font-size:22rpx;font-weight:500;margin:20rpx 0"><text style="color:#E9AE3E;font-size:18rpx;background-color:#FFFAF0;border-radius:3rpx;padding:2rpx 10rpx;margin-right:14rpx">公告</text><text>{{item.b}}</text><text style="margin:0 20rpx">|</text><text>{{item.c}}</text><text style="margin:0 20rpx">|</text><text>{{item.d}}KB</text></view></view><view style="padding:4rpx 10rpx;background-color:#F2C369;border-radius:10rpx;color:#2B2B2B;font-size:22rpx;margin-left:10rpx">查看</view></view></view></block></view>

View File

@@ -0,0 +1 @@
.newsList .item .labelList .label{margin-right:10rpx;padding:0 7rpx;line-height:28rpx;border-radius:3rpx;font-size:18rpx;font-weight:500}.newsList .item .labelList .eventType{background-color:#eff6ff;color:#60a5fa}.newsList .item .labelList .investScore{background-color:#f2eeff;color:#a78bfa}.newsList .item .relatedChgC{margin:20rpx 0;color:#71675d;font-size:22rpx;font-weight:500}.newsList .item .relatedChgC .chg.up{color:#ec3440}.newsList .item .relatedChgC .chg.down{color:#1db26f}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
"use strict";function e(e){for(var t={},a=e.split(","),r=0;r<a.length;r++)t[a[r]]=!0;return t}e("area,base,basefont,br,col,frame,hr,img,input,link,meta,param,embed,command,keygen,source,track,wbr"),e("a,address,article,applet,aside,audio,blockquote,button,canvas,center,dd,del,dir,div,dl,dt,fieldset,figcaption,figure,footer,form,frameset,h1,h2,h3,h4,h5,h6,header,hgroup,hr,iframe,isindex,li,map,menu,noframes,noscript,object,ol,output,p,pre,section,script,table,tbody,td,tfoot,th,thead,tr,ul,video"),e("abbr,acronym,applet,b,basefont,bdo,big,br,button,cite,code,del,dfn,em,font,i,iframe,img,input,ins,kbd,label,map,object,q,s,samp,script,select,small,span,strike,strong,sub,sup,textarea,tt,u,var"),e("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr"),e("checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected"),e("script,style");

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
"use strict";const e=require("../../common/vendor.js"),t=require("./lib/markdown-it.min.js"),l=require("./lib/highlight/uni-highlight.min.js");require("./lib/html-parser.js");const s={__name:"ua-markdown",props:{source:String,showLine:{type:[Boolean,String],default:!0}},setup(s){const r=s;let a=[];const n=t.mt({html:!0,highlight:function(e,t){let s="";try{s=l.$e.highlightAuto(e).value}catch(c){s=n.utils.escapeHtml(e)}let i=s.split(/\n/).slice(0,-1).map(((e,t)=>""==e?"":'<li><span class="line-num" data-line="'+(t+1)+'"></span>'+e+"</li>")).join("");i=r.showLine?'<ol style="padding: 0px 30px;">'+i+"</ol>":'<ol style="padding: 0px 7px;list-style:none;">'+i+"</ol>",a.push(e);let o='<div class="markdown-wrap">';return o+=`<pre class="hljs" style="padding:10px 8px 0;margin-bottom:5px;overflow: auto;display: block;border-radius: 5px;"><code>${i}</code></pre>`,o+="</div>",o}}),i=e=>{if(!e)return;let t="";if((e=(e=e.replace(/<br>|<br\/>|<br \/>/g,"\n")).replace(/&nbsp;/g," ")).split("```").length%2){let l=e;"\n"!=l[l.length-1]&&(l+="\n"),t=n.render(l)}else t=n.render(e);return t=t.replace(/<table/g,'<table class="table"'),t=t.replace(/<tr/g,'<tr class="tr"'),t=t.replace(/<th>/g,'<th class="th">'),t=t.replace(/<td/g,'<td class="td"'),t=t.replace(/<hr>|<hr\/>|<hr \/>/g,'<hr class="hr">'),t},o=t=>{let{attrs:l}=t.detail.node,{"code-data-index":s,class:r}=l;"copy-btn"==r&&e.index.setClipboardData({data:a[s],showToast:!1,success(){e.index.showToast({title:"复制成功",icon:"none"})}})};return(t,l)=>({a:i(s.source),b:e.o(o)})}},r=e._export_sfc(s,[["__scopeId","data-v-68886d85"]]);wx.createComponent(r);

View File

@@ -0,0 +1,4 @@
{
"component": true,
"usingComponents": {}
}

View File

@@ -0,0 +1 @@
<view class="ua__markdown data-v-68886d85"><rich-text class="data-v-68886d85" space="nbsp" nodes="{{a}}" binditemclick="{{b}}"></rich-text></view>

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
"use strict";const e=require("../../utils/util.js"),t=require("../../common/vendor.js"),r={name:"ywjg-view",data:()=>({getRateUpOrDown:e.getRateUpOrDown}),props:{businessStructureList:Array,businessSegmentList:Array}};const n=t._export_sfc(r,[["render",function(e,r,n,i,s,o){return{a:t.f(n.businessStructureList,((e,r,n)=>t.e({a:t.t(e.business_name),b:e.is_hexin},(e.is_hexin,{}),{c:t.t(e.financial_metrics.revenue_ratio),d:e.financial_metrics.gross_margin},e.financial_metrics.gross_margin?{e:t.t(e.financial_metrics.gross_margin)}:{},{f:t.t(e.revenue),g:t.t(e.revenue_unit),h:e.growth_metrics.revenue_growth},e.growth_metrics.revenue_growth?{i:t.t(e.growth_metrics.revenue_growth),j:t.n("growthRate "+(s.getRateUpOrDown(e.growth_metrics.revenue_growth)?"down":"up"))}:{},{k:r}))),b:t.f(n.businessSegmentList,((e,r,n)=>({a:t.t(e.segment_name),b:t.t(e.segment_description),c:t.t(e.competitive_position),d:t.t(e.future_potential),e:r})))}}]]);wx.createComponent(n);

View File

@@ -0,0 +1,4 @@
{
"component": true,
"usingComponents": {}
}

View File

@@ -0,0 +1 @@
<view class="ywjg_list"><view><view style="margin:25rpx 20rpx;color:#2B2B2B;font-size:28rpx;font-weight:bold">业务结构分析</view><view wx:for="{{a}}" wx:for-item="item" wx:key="k" class="ywjg_item_1"><view style="display:flex;align-items:center"><view style="font-size:28rpx;font-weight:bold;margin-right:10rpx">{{item.a}}</view><view wx:if="{{item.b}}" style="background-color:#F2C369;border-radius:5rpx;font-size:20rpx;padding:0 5rpx"> 核心业务</view></view><view class="flex between" style="font-weight:500"><view class="flex" style="color:#F2C369;font-size:20rpx"><view style="border:1rpx solid #F2C369;border-radius:5rpx;padding:0 10rpx"> 营收占比:{{item.c}}%</view><view wx:if="{{item.d}}" style="border:1rpx solid #F2C369;border-radius:5rpx;padding:0 10rpx;margin-left:10rpx"> 毛利率:{{item.e}}%</view><view wx:else style="border:1rpx solid #F2C369;border-radius:5rpx;padding:0 10rpx;margin-left:10rpx"> 毛利率:-</view></view><view><view style="color:#999999;font-size:24rpx">营业收入</view><view style="font-weight:bold;font-size:30rpx;color:#BB8520;margin-top:10rpx">{{item.f}}{{item.g}}</view></view></view><view style="display:flex"><view wx:if="{{item.h}}" class="{{item.j}}"> 增长:{{item.i}}% </view><view wx:else class="growthRate down">增长:-</view></view></view><view style="margin:25rpx 20rpx;color:#2B2B2B;font-size:28rpx;font-weight:bold">业务板块详情</view><view style="font-weight:500"><view wx:for="{{b}}" wx:for-item="item" wx:key="e" style="background-color:#FAFAFC;color:#2B2B2B;font-size:22rpx;margin:20rpx;border-radius:10rpx;padding:25rpx 20rpx"><view style="font-size:24rpx">{{item.a}}</view><view style="color:#BB8520;font-weight:bold;margin:10rpx 0">业务描述</view><view style="color:#71675D">{{item.b}}</view><view style="color:#BB8520;font-weight:bold;margin:10rpx 0">竞争地位</view><view style="color:#71675D">{{item.c}}</view><view style="color:#BB8520;font-weight:bold;margin:10rpx 0">未来潜力</view><view style="color:#71675D">{{item.d}}</view></view></view></view></view>

View File

@@ -0,0 +1 @@
.ywjg_list{color:#2b2b2b}.ywjg_list .title{font-size:28rpx;font-weight:700}.ywjg_list .ywjg_item_1{font-weight:500;margin:20rpx;background-color:#fafafc;border-radius:10rpx;padding:25rpx 20rpx}.ywjg_list .ywjg_item_1 .growthRate{padding:0 10rpx;line-height:30rpx;border-radius:5rpx;font-size:20rpx;color:#fff}.ywjg_list .ywjg_item_1 .growthRate.up{background-color:#ec3440}.ywjg_list .ywjg_item_1 .growthRate.down{background-color:#345423}

View File

@@ -0,0 +1 @@
"use strict";const i=require("../../common/vendor.js"),t=require("../../common/assets.js"),e=require("../../uni_modules/lime-echart/static/echarts.min.js"),o={name:"zlfx-view",data:()=>({option:{title:{show:!1},legend:{show:!1},tooltip:{show:!0,triggerOn:"mousemove"},radar:{indicator:[{name:"市场地位",max:100},{name:"技术实力",max:100},{name:"品牌价值",max:100},{name:"运营效率",max:100},{name:"财务健康",max:100},{name:"创新能力",max:100},{name:"风险控制",max:100},{name:"成长潜力",max:100}],shape:"polygon",splitNumber:5,axisName:{color:"#54555A"},splitLine:{lineStyle:{color:["#CFD2D7"]}},splitArea:{areaStyle:{color:["#F4F6FA","white"]}},axisLine:{lineStyle:{color:"#CFD2D7"}}},series:[{name:"Beijing",type:"radar",lineStyle:{width:1},data:[],symbol:"circle",symbolSize:4,label:{show:!0},itemStyle:{color:"#5070DD"},areaStyle:{opacity:.1}}]}}),props:{qualitativeAnalysisInfo:Object,competitivePositionInfo:Object,mainCompetitorsList:Array,industryRankInfo:Object,scoreList:Array,data:Array},watch:{data(i){this.option.series[0].data=i,this.init()}},methods:{async init(){const i=await this.$refs.chartRef.init(e);console.log(i),i.setOption(this.option)},clickIndustryRank(){this.$emit("rank")}}};if(!Array){i.resolveComponent("l-echart")()}Math;const n=i._export_sfc(o,[["render",function(e,o,n,a,s,r){return i.e({a:n.qualitativeAnalysisInfo},n.qualitativeAnalysisInfo?{b:i.t(n.qualitativeAnalysisInfo.core_positioning.one_line_intro)}:{},{c:n.qualitativeAnalysisInfo},n.qualitativeAnalysisInfo?{d:i.t(n.qualitativeAnalysisInfo.core_positioning.investment_highlights)}:{},{e:n.qualitativeAnalysisInfo},n.qualitativeAnalysisInfo?{f:i.t(n.qualitativeAnalysisInfo.core_positioning.business_model_desc)}:{},{g:t._imports_0$5,h:n.industryRankInfo},n.industryRankInfo?{i:i.t(n.industryRankInfo.industry_rank),j:i.t(n.industryRankInfo.total_companies)}:{},{k:i.o((i=>r.clickIndustryRank())),l:i.f(n.mainCompetitorsList,((t,e,o)=>({a:i.t(t),b:e}))),m:t._imports_1$13,n:i.f(n.scoreList,((t,e,o)=>({a:t.icon,b:i.t(t.title),c:i.n("progress absolute "+t.color),d:i.s("width: "+t.score+"%;"),e:i.t(t.score),f:i.n("item flex "+t.color),g:e}))),o:i.sr("chartRef","332014ba-0"),p:n.competitivePositionInfo},n.competitivePositionInfo?{q:i.t(n.competitivePositionInfo.analysis.competitive_advantages)}:{},{r:n.competitivePositionInfo},n.competitivePositionInfo?{s:i.t(n.competitivePositionInfo.analysis.competitive_disadvantages)}:{})}]]);wx.createComponent(n);

View File

@@ -0,0 +1,6 @@
{
"component": true,
"usingComponents": {
"l-echart": "../../uni_modules/lime-echart/components/l-echart/l-echart"
}
}

View File

@@ -0,0 +1 @@
<view class="strategicAnalysisList"><view class="section">核心定位</view><view wx:if="{{a}}" class="corePositionC">{{b}}</view><view class="section">投资亮点</view><view wx:if="{{c}}" class="corePositionC">{{d}}</view><view class="section">商业模式</view><view wx:if="{{e}}" class="corePositionC">{{f}}</view><view class="section flex"><view>竞争地位分析</view><view class="industryRankC flex" bindtap="{{k}}"><image class="icon" src="{{g}}" mode="widthFix"></image><view wx:if="{{h}}">行业排名 {{i}}/{{j}}</view></view></view><view class="subSection">主要竞争对手</view><view class="mainCompetitorList flexWrap"><view wx:for="{{l}}" wx:for-item="item" wx:key="b" class="item flex"><image class="icon" src="{{m}}" mode="widthFix"></image><view>{{item.a}}</view></view></view><view class="scoreList"><view wx:for="{{n}}" wx:for-item="item" wx:key="g" class="{{item.f}}"><image class="icon" src="{{item.a}}" mode="widthFix"></image><view class="title">{{item.b}}</view><view class="progressBgC relative flex1"><view class="{{item.c}}" style="{{item.d}}"></view></view><view class="score">{{item.e}}</view></view></view><view style="width:660rpx;height:500rpx"><l-echart class="r" u-r="chartRef" u-i="332014ba-0" bind:__l="__l"></l-echart></view><view wx:if="{{p}}" class="infoC"><view class="title">竞争优势</view><view class="content">{{q}}</view></view><view wx:if="{{r}}" class="infoC"><view class="title">竞争劣势</view><view class="content">{{s}}</view></view></view>

View File

@@ -0,0 +1 @@
.strategicAnalysisList{padding:0 20rpx}.strategicAnalysisList .section{line-height:72rpx;font-size:28rpx;font-weight:700;color:#2b2b2b}.strategicAnalysisList .section .industryRankC{margin-left:10rpx;padding:0 12rpx;line-height:38rpx;border:solid 1rpx #F2C369;border-radius:19rpx;font-size:20rpx;font-weight:500;color:#f3c368}.strategicAnalysisList .section .industryRankC .icon{margin-right:5rpx;width:17rpx;height:auto}.strategicAnalysisList .corePositionC{background-color:#fafafc;padding:20rpx;font-size:24rpx;font-weight:500;color:#2a2a2a;border-radius:10rpx}.strategicAnalysisList .highlightsList .item{background-color:#fafafc;margin-bottom:20rpx;padding:20rpx;border-radius:10rpx}.strategicAnalysisList .highlightsList .item .icon{width:81rpx;height:auto}.strategicAnalysisList .highlightsList .item .title{font-size:22rpx;font-weight:500;color:#999}.strategicAnalysisList .highlightsList .item .content{font-size:20rpx;font-weight:500;color:#2a2a2a}.strategicAnalysisList .infoC{background-color:#fafafc;border-radius:10rpx;padding:12rpx 20rpx;margin-bottom:20rpx}.strategicAnalysisList .infoC .infoItem{line-height:40rpx}.strategicAnalysisList .infoC .title{font-size:22rpx;font-weight:500;color:#2a2a2a}.strategicAnalysisList .infoC .content{margin-top:10rpx;font-size:20rpx;font-weight:500;color:#999}.strategicAnalysisList .infoC .content.code{color:#bb8520}.strategicAnalysisList .infoC .content.rightAlign{text-align:right}.strategicAnalysisList .infoC .labelList{margin-top:10rpx}.strategicAnalysisList .infoC .labelList .labelC{background-color:#fff7e9;margin:0 12rpx 12rpx 0;padding:0 10rpx;line-height:38rpx;border:solid 1rpx #F2C369;border-radius:20rpx;font-size:22rpx;font-weight:500;color:#f3c368}.strategicAnalysisList .infoC .labelList .labelC .icon{margin-right:3rpx;width:16rpx;height:auto}.strategicAnalysisList .subSection{line-height:60rpx;font-size:24rpx;font-weight:700;color:#2a2a2a}.strategicAnalysisList .mainCompetitorList .item{background-color:#fff7e9;margin:0 20rpx 20rpx 0;padding:0 16rpx;line-height:38rpx;border-radius:20rpx;border:solid 1rpx #F2C369;font-size:22rpx;font-weight:500;color:#f3c368}.strategicAnalysisList .mainCompetitorList .item .icon{margin-right:3rpx;width:16rpx;height:auto}.strategicAnalysisList .scoreList .item{margin-bottom:40rpx;font-size:24rpx}.strategicAnalysisList .scoreList .item .icon{margin-right:10rpx;width:24rpx;height:auto}.strategicAnalysisList .scoreList .item .title{margin-right:15rpx;font-weight:500;color:#232323}.strategicAnalysisList .scoreList .item .progressBgC{background-color:#efefef;margin-right:15rpx;height:10rpx;border-radius:5rpx}.strategicAnalysisList .scoreList .item .progressBgC .progress{top:0;left:0;height:10rpx;border-radius:5rpx}.strategicAnalysisList .scoreList .item .progressBgC .progress.blue{background:linear-gradient(90deg,#4aafff,#1f83fd)}.strategicAnalysisList .scoreList .item .progressBgC .progress.purple{background:linear-gradient(90deg,#dd96fc,#c061fd)}.strategicAnalysisList .scoreList .item .score{font-weight:800;color:#070707}

View File

@@ -0,0 +1 @@
"use strict";const t=require("../../common/vendor.js"),e=require("../../utils/util.js"),i=require("../../uni_modules/lime-echart/static/echarts.min.js"),o={name:"zysj-view",data:()=>({option1:{legend:{show:!0,data:["营业收入","净利润"]},grid:{left:"2%",right:"2%",top:"5%",bottom:"30%"},xAxis:{type:"category",data:[],axisLabel:{}},yAxis:[{type:"value",name:"营收(亿)",position:"left",alignTicks:!0,axisLine:{onZero:!1}},{type:"value",name:"利润(亿)",position:"right",alignTicks:!0,axisLine:{onZero:!1}}],dataZoom:[{type:"slider"}],series:[{type:"bar",name:"营业收入",data:[],yAxisIndex:0},{type:"line",name:"净利润",data:[],yAxisIndex:1}]},option2:{title:{text:"",textStyle:{fontSize:12}},legend:{show:!0},grid:{left:0,right:0,top:"5%",bottom:"5%"},series:[{data:[],type:"pie",center:["50%","50%"],label:{formatter:"{d}%"}}]},getChgRateStr:e.getChgRateStr,getNumStr:e.getNumStr}),props:{stockInfo:Object,financialMetricsInfo:Object,barCategoryList:Array,barList:Array,lineList:Array,productClassificationList:Array},watch:{barCategoryList(t){this.option1.xAxis.data=t},barList(t){this.option1.series[0].data=t,this.barLineInit()},lineList(t){this.option1.series[1].data=t,this.barLineInit()},productClassificationList(t){let e=t[0].products;this.option2.title.text="主营业务构成("+t[0].report_type+"";let i=[];for(let o of e)i.push({name:o.content,value:o.revenue_ratio.toFixed(2)});this.option2.series[0].data=i,this.pieInit()}},methods:{async barLineInit(){const t=await this.$refs.chartRef1.init(i);let e=this;setTimeout((function(){t.setOption(e.option1)}),2e3)},async pieInit(){const t=await this.$refs.chartRef2.init(i);let e=this;setTimeout((function(){t.setOption(e.option2)}),2e3)},getDebtStatusText:t=>t<40?{text:"安全",color:"green"}:t<60?{text:"适中",color:"gold"}:t<70?{text:"偏高",color:"orange"}:{text:"风险",color:"red"},itemClick(e){t.index.navigateTo({url:`/pagesStock/stockCenterDetails/cwDetails?index=${e}`})}}};if(!Array){t.resolveComponent("l-echart")()}Math;const r=t._export_sfc(o,[["render",function(e,i,o,r,n,a){return t.e({a:o.stockInfo},o.stockInfo?t.e({b:t.t(n.getChgRateStr(o.stockInfo.growth_rates.profit_growth)),c:t.t(n.getChgRateStr(o.stockInfo.growth_rates.revenue_growth)),d:t.t(n.getChgRateStr(o.stockInfo.key_metrics.roe)),e:t.t(n.getChgRateStr(o.stockInfo.key_metrics.net_margin)),f:t.t(n.getChgRateStr(o.stockInfo.key_metrics.gross_margin)),g:o.financialMetricsInfo},o.financialMetricsInfo?{h:t.t(o.financialMetricsInfo.solvency.asset_liability_ratio),i:t.t(a.getDebtStatusText(o.financialMetricsInfo.solvency.asset_liability_ratio).text),j:t.s("color: "+a.getDebtStatusText(o.financialMetricsInfo.solvency.asset_liability_ratio).color),k:t.t(o.financialMetricsInfo.solvency.current_ratio),l:t.t(o.financialMetricsInfo.expense_ratios.rd_expense_ratio)}:{}):{},{m:t.sr("chartRef1","cf18d1d4-0"),n:t.sr("chartRef2","cf18d1d4-1"),o:t.f(["业务","毛利率","利润","营收","营收"],((e,i,o)=>t.e({a:t.t(e),b:["","(2025年中报)","(2025年中报)","(2025年中报)","(2024年年报)"][i].length>0},["","(2025年中报)","(2025年中报)","(2025年中报)","(2024年年报)"][i].length>0?{c:t.t(["","(2025年中报)","(2025年中报)","(2025年中报)","(2024年年报)"][i]),d:0==i?"left":"center"}:{},{e:0==i?"left":"center",f:0==i?"flex-start":"center"}))),p:o.productClassificationList.length>0},o.productClassificationList.length>0?{q:t.f(o.productClassificationList[0].products,((e,i,o)=>({a:t.t(e.content),b:t.t(e.profit_margin.toFixed(2)),c:t.t(n.getNumStr(e.profit)),d:t.t(n.getNumStr(e.revenue)),e:t.t(e.content),f:i,g:i%2==0?"#FFFFFF":"#FAFAFC"})))}:{})}]]);wx.createComponent(r);

View File

@@ -0,0 +1,6 @@
{
"component": true,
"usingComponents": {
"l-echart": "../../uni_modules/lime-echart/components/l-echart/l-echart"
}
}

View File

@@ -0,0 +1 @@
<view><block wx:if="{{a}}"><view class="flex" style="font-size:22rpx;color:#999999;font-weight:500;margin:20rpx;padding:20rpx;box-sizing:border-box;border:1rpx solid #F5F5F5;border-radius:10rpx"><view style="width:195rpx"><view style="font-weight:bold;color:#1DB26F;font-size:30rpx">{{b}}%</view><view style="margin-top:10rpx">利润增长</view></view><view><view class="flex"><text style="font-weight:bold;color:#070707;font-size:26rpx;margin-right:10rpx">成长能力</text><text style="color:#A97F53;font-size:20rpx;padding:2rpx 5rpx;background-color:#F8F4ED;border:1rpx solid #F1E7D8;border-radius:3rpx">增长动力</text></view><view style="margin-top:10rpx"><text>营收增长</text><text style="color:#1DB26F;margin:0 10rpx">{{c}}%</text><text style="color:#F59B38">(稳健增长)</text></view></view></view><view class="flex" style="font-size:22rpx;color:#999999;font-weight:500;margin:20rpx;padding:20rpx;box-sizing:border-box;border:1rpx solid #F5F5F5;border-radius:10rpx"><view style="width:195rpx"><view style="font-weight:bold;color:#F59B38;font-size:30rpx">{{d}}%</view><view style="margin-top:10rpx">ROE</view></view><view><view class="flex"><text style="font-weight:bold;color:#070707;font-size:26rpx;margin-right:10rpx">盈利与回报</text><text style="color:#A97F53;font-size:20rpx;padding:2rpx 5rpx;background-color:#F8F4ED;border:1rpx solid #F1E7D8;border-radius:3rpx">赚钱能力</text></view><view style="margin-top:10rpx"><text style="color:#F59B38">良好</text><text style="margin-left:10rpx">净利率 {{e}}%|毛利率 {{f}}%</text></view></view></view><view wx:if="{{g}}" class="flex" style="font-size:22rpx;color:#999999;font-weight:500;margin:20rpx;padding:20rpx;border:1rpx solid #F5F5F5;border-radius:10rpx"><view style="width:195rpx"><view style="font-weight:bold;color:#EC3440;font-size:30rpx">{{h}}%</view><view style="margin-top:10rpx">资产负债率</view></view><view><view class="flex"><text style="font-weight:bold;color:#070707;font-size:26rpx;margin-right:10rpx">风险与运营</text><text style="color:#A97F53;font-size:20rpx;padding:2rpx 5rpx;background-color:#F8F4ED;border:1rpx solid #F1E7D8;border-radius:3rpx">安全边际</text></view><view style="margin-top:10rpx"><text style="{{j}}">{{i}}</text><text style="margin-left:10rpx">流动比率 {{k}}|研发费用率 {{l}}%</text></view></view></view></block><view style="text-align:center;font-size:26rpx;color:#2B2B2B;font-weight:bold;margin:20rpx"> 营收与利润趋势</view><view style="height:400rpx"><l-echart class="r" u-r="chartRef1" u-i="cf18d1d4-0" bind:__l="__l"></l-echart></view><view style="text-align:left;font-size:26rpx;color:#2B2B2B;font-weight:bold;margin:20rpx">主营业务 </view><view style="height:400rpx"><l-echart class="r" u-r="chartRef2" u-i="cf18d1d4-1" bind:__l="__l"></l-echart></view><view style="text-align:left;font-size:26rpx;color:#2B2B2B;font-weight:bold;margin:20rpx"> 主营业务明细与历史对比</view><view style="display:grid;grid-template-columns:130rpx repeat(4, 1fr);color:#666666;font-size:20rpx;font-weight:500;background-color:#FAFAFC;margin:20rpx;margin-bottom:0;padding:10rpx;box-sizing:border-box"><view wx:for="{{o}}" wx:for-item="item" style="{{'display:flex;align-items:center;justify-content:center;flex-direction:column' + ';' + ('text-align:' + item.e + ';' + ('align-items:' + item.f))}}"><view>{{item.a}}</view><view wx:if="{{item.b}}" style="{{'font-size:18rpx' + ';' + ('text-align:' + item.d)}}">{{item.c}}</view></view></view><block wx:if="{{p}}"><view wx:for="{{q}}" wx:for-item="item" wx:key="f" class="table" style="{{'display:grid;grid-template-columns:130rpx repeat(4, 1fr);margin:0 20rpx;padding:10rpx' + ';' + ('background-color:' + item.g)}}"><view class="item">{{item.a}}</view><view class="item flexCenter">{{item.b}}%</view><view class="item flexCenter">{{item.c}}</view><view class="item flexCenter">{{item.d}}</view><view class="item flexCenter">{{item.e}}</view></view></block><view style="height:80rpx"></view></view>

View File

@@ -0,0 +1 @@
.table .item{font-size:20rpx;font-weight:500;color:#666}.table .item.center{text-align:center}

View File

@@ -0,0 +1,87 @@
// components/custom-tab-bar/index.js
const app = getApp();
Component({
/**
* 组件的属性列表
*/
properties: {
},
/**
* 组件的初始数据
*/
data: {
color: "#858C9A",
selected:0,
selectedColor: "#F3C368",
list: [
{
"pagePath": "/pages/index/index",
"text": "新闻动量",
"iconPath": "/static/icon/tabbar/home.png",
"selectedIconPath": "/static/icon/tabbar/home_s.png"
},
{
"pagePath": "/pages/concept/concept",
"text": "概念中心",
"iconPath": "/static/icon/tabbar/concept.png",
"selectedIconPath": "/static/icon/tabbar/concept_s.png"
},
{
"pagePath": "/pages/geGuCenter/geGuCenter",
"text": "个股中心",
"iconPath": "/static/icon/tabbar/gegu.png",
"selectedIconPath": "/static/icon/tabbar/gegu_s.png"
},
{
"pagePath": "/pages/ztfx/ztfx",
"text": "涨停分析",
"iconPath": "/static/icon/tabbar/zt.png",
"selectedIconPath": "/static/icon/tabbar/zt_s.png"
},
{
"pagePath": "/pages/mine/mine",
"text": "个人中心",
"iconPath": "/static/icon/tabbar/mine.png",
"selectedIconPath": "/static/icon/tabbar/mine_s.png"
}
]
},
attached() {
this.setData({
selected:app.globalData.tabIndex
})
},
/**
* 组件的方法列表
*/
methods: {
switchTab(e) {
const data = e.currentTarget.dataset;
const url = data.path;
const index = data.index
if(index==3)
{
//如果是购物车和我的,需要登录
let token = wx.getStorageSync('token')
if (!token) {
wx.navigateTo({
url:'/pages/login/login'
})
return
}
}
app.globalData.tabIndex = index
wx.switchTab({url})
},
navigateTo(e) {
const data = e.currentTarget.dataset;
const url = data.path;
wx.navigateTo({
url: url
})
}
}
})

View File

@@ -0,0 +1,3 @@
{
"component": true
}

View File

@@ -0,0 +1,8 @@
<!--components/custom-tab-bar/index.wxml-->
<view class="tab-bar">
<view wx:for="{{list}}" wx:key="index" class="tab-bar-item {{item.bulge?'bulge':''}}" data-path="{{item.pagePath}}" data-index="{{index}}" bindtap="{{item.jump=='nav'?'navigateTo':'switchTab'}}">
<image class="image" src="{{selected == index ? item.selectedIconPath : item.iconPath}}" mode="heightFix"></image>
<view wx:if="{{item.text}}" class="tab-bar-view"
style="color: {{selected==index?selectedColor:color}};">{{item.text}}</view>
</view>
</view>

View File

@@ -0,0 +1,55 @@
/* components/custom-tab-bar/index.wxss */
.tab-bar {
background-color: black;
position: fixed;
bottom: 0;
left: 0;
right: 0;
height: 55px;
display: flex;
padding-bottom: env(safe-area-inset-bottom);
box-sizing: content-box;
/* box-shadow: 0 -1px 5rpx 0 #eee; */
z-index: 99;
}
.tab-bar-item
{
flex: 1;
text-align: center;
display: flex;
align-items: center;
flex-direction: column;
}
.tab-bar-item .image {
margin: 16rpx 0 8rpx 0;
width: auto;
height: 41rpx;
}
.bulge
{
position: relative;
}
.bulge .image
{
position: absolute;
top: -47rpx;
width: 94rpx;
height: 94rpx;
}
.bulge .tab-bar-view
{
margin-top: 60rpx;
}
.tab-bar-item .tab-bar-view {
font-size: 22rpx;
font-weight: 500;
}
.tab-bar .bg
{
position: absolute;
top: 0;
left: 0;
width: 100%;
height: auto;
z-index: -1;
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,7 @@
{
"navigationBarTitleText": "",
"usingComponents": {
"nav-bar": "../../components/navBar/navBar",
"uni-popup": "../../uni_modules/uni-popup/components/uni-popup/uni-popup"
}
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,6 @@
{
"navigationBarTitleText": "",
"usingComponents": {
"nav-bar": "../../../components/navBar/navBar"
}
}

View File

@@ -0,0 +1 @@
<view><nav-bar wx:if="{{a}}" u-i="adc20db2-0" bind:__l="__l" u-p="{{a}}"></nav-bar><image class="topBg absolute" src="{{b}}" mode="widthFix"></image><view class="timelineTitle fixed" style="{{d}}">{{c}}- 历史时间轴</view><view class="dateStatisticsC fixed" style="{{F}}"><view class="dateC"><view class="yearMonthC flex"><view class="btn" bindtap="{{f}}"><image class="icon" src="{{e}}" mode="widthFix"></image></view><view class="yearMonth flex1"><picker mode="date" fields="month" bindchange="{{h}}">{{g}}</picker></view><view class="btn" bindtap="{{j}}"><image class="icon" src="{{i}}" mode="widthFix"></image></view></view><view class="weekList flex"><view wx:for="{{k}}" wx:for-item="item" wx:key="b" class="item flex1">{{item.a}}</view></view><view class="monthDateList flexWrap"><view wx:for="{{l}}" wx:for-item="item" wx:key="m" class="item flexColumnCenter" bindtap="{{item.n}}"><block wx:if="{{item.a}}"><view class="{{item.e}}">{{item.b}} <view wx:if="{{item.c}}" class="chg">{{item.d}}%</view></view></block><block wx:else><block wx:if="{{item.f}}"><view class="date notCurrentMonth">{{item.g}}</view></block><block wx:else><view class="{{item.l}}">{{item.h}} <view wx:if="{{item.i}}" class="{{item.k}}">{{item.j}}%</view></view></block></block></view></view></view><view class="statisticsC"><view class="date">{{m}}统计</view><view wx:if="{{n}}" class="chgStockNumC flex"><view class="chgC flex flex1"><view class="title">涨跌幅</view><image wx:if="{{o}}" class="icon" src="{{p}}" mode="widthFix"></image><image wx:else class="icon" src="{{q}}" mode="widthFix"></image><view class="{{s}}">{{r}}%</view></view><view class="stockNumC flex flex1"><view class="title">统计股票</view><view class="stockNum">{{t}} 只股票</view></view></view><view class="newsReportC flex"><image class="icon" src="{{v}}" mode="widthFix"></image><text class="{{x}}" bindtap="{{y}}">{{w}} 条新闻 · </text><text class="{{A}}" decode bindtap="{{B}}"> {{z}} 份研报</text></view><view class="list"><block wx:if="{{C}}"><view wx:for="{{D}}" wx:for-item="item" wx:key="c" class="item" bindtap="{{item.d}}"><view class="flex"><view class="type news">新闻</view><view class="title flex1">{{item.a}}</view></view><view class="content">{{item.b}}</view></view></block><block wx:else><view wx:for="{{E}}" wx:for-item="item" wx:key="c" class="item" bindtap="{{item.d}}"><view class="flex"><view class="type report">研报</view><view class="title flex1">{{item.a}}</view></view><view class="content">{{item.b}}</view></view></block></view></view></view></view>

View File

@@ -0,0 +1 @@
page{background-color:#070707}.topBg{top:0;left:0;width:100%;height:auto}.timelineTitle{background-color:#fff9f5;left:0;right:0;margin:0 25rpx;padding:30rpx 27rpx 0;border-radius:10rpx 10rpx 0 0;font-size:28rpx;font-weight:700;color:#2b2b2b}.dateStatisticsC{background-color:#fff9f5;left:0;right:0;bottom:86rpx;margin:0 25rpx;padding:24rpx 25rpx 0;border-radius:0 0 10rpx 10rpx;overflow-y:scroll}.dateStatisticsC .dateC{background-color:#fff;box-shadow:0 5rpx 10rpx rgba(127,127,127,.1);border-radius:10rpx;padding:30rpx 25rpx 0}.dateStatisticsC .dateC .yearMonthC{background-color:#f7f7f7;height:70rpx;border-radius:35rpx}.dateStatisticsC .dateC .yearMonthC .btn{padding:0 52rpx}.dateStatisticsC .dateC .yearMonthC .btn .icon{width:13rpx;height:auto}.dateStatisticsC .dateC .yearMonthC .yearMonth{font-size:32rpx;font-weight:500;color:#070707;text-align:center}.dateStatisticsC .dateC .weekList .item{margin-right:13rpx;line-height:72rpx;font-size:26rpx;font-weight:500;color:#a7a7a7;text-align:center}.dateStatisticsC .dateC .monthDateList .item{margin-bottom:12rpx;width:calc(100%/7)}.dateStatisticsC .dateC .monthDateList .item .date{background-color:#f8f8f8;padding:4rpx 0;width:calc(100% - 10rpx);height:72rpx;border-radius:10rpx;font-size:26rpx;font-weight:700;color:#2a2a2a;text-align:center}.dateStatisticsC .dateC .monthDateList .item .date .chg{font-size:18rpx}.dateStatisticsC .dateC .monthDateList .item .date .chg.up{color:#ec3440}.dateStatisticsC .dateC .monthDateList .item .date .chg.down{color:#38a169}.dateStatisticsC .dateC .monthDateList .item .date.up{background-color:#ffd6d9}.dateStatisticsC .dateC .monthDateList .item .date.down{background-color:#cef1de}.dateStatisticsC .dateC .monthDateList .item .date.select.up{background-color:#ec3440;color:#fff}.dateStatisticsC .dateC .monthDateList .item .date.select.up .chg{color:#fff}.dateStatisticsC .dateC .monthDateList .item .date.select.down{background-color:#38a169;color:#fff}.dateStatisticsC .dateC .monthDateList .item .date.select.down .chg{color:#fff}.dateStatisticsC .dateC .monthDateList .item .date.notCurrentMonth{background-color:#fcfcfc;color:#999}.dateStatisticsC .statisticsC{background-color:#fff;margin-top:20rpx;padding:28rpx 20rpx 0;border-radius:10rpx}.dateStatisticsC .statisticsC .date{font-size:30rpx;font-weight:500;text-align:center}.dateStatisticsC .statisticsC .chgStockNumC{margin-top:36rpx;padding:0 13rpx 28rpx;border-bottom:solid 1rpx #EDEDED;font-size:26rpx}.dateStatisticsC .statisticsC .chgStockNumC .title{margin-right:18rpx;font-weight:500;color:#94979c}.dateStatisticsC .statisticsC .chgStockNumC .chgC .icon{margin-right:9rpx;width:17rpx;height:auto}.dateStatisticsC .statisticsC .chgStockNumC .chgC .chg{font-weight:700}.dateStatisticsC .statisticsC .chgStockNumC .chgC .chg.up{color:#ec3440}.dateStatisticsC .statisticsC .chgStockNumC .chgC .chg.down{color:#38a169}.dateStatisticsC .statisticsC .chgStockNumC .stockNum{font-weight:700;color:#070707}.dateStatisticsC .statisticsC .newsReportC{padding-top:20rpx;font-size:28rpx;font-weight:700}.dateStatisticsC .statisticsC .newsReportC .icon{margin-right:20rpx;width:24rpx;height:auto}.dateStatisticsC .statisticsC .newsReportC .num{color:#333}.dateStatisticsC .statisticsC .newsReportC .num.select{color:#ff7723}.dateStatisticsC .statisticsC .list .item{padding:30rpx 0;border-bottom:solid 1rpx #EDEDED}.dateStatisticsC .statisticsC .list .item .type{margin-right:18rpx;padding:0 9rpx;line-height:40rpx;border-radius:5rpx;font-size:22rpx;font-weight:500}.dateStatisticsC .statisticsC .list .item .type.news{background-color:#f2c367;color:#070707}.dateStatisticsC .statisticsC .list .item .type.report{background-color:#3d3f3c;color:#f2c367}.dateStatisticsC .statisticsC .list .item .title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:26rpx;font-weight:700;color:#070707}.dateStatisticsC .statisticsC .list .item .content{margin-top:20rpx;font-size:24rpx;font-weight:500;color:#333;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;text-overflow:ellipsis}

Some files were not shown because too many files have changed in this diff Show More