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

@@ -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}