jialh
2024-12-18 b131e9bb15cd8ffe062231f43c3c2f0ae90cf844
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
<template>
    <div class="radar-container">
        <!-- <div class="echarts-box"> -->
        <div class="search-box">
            <p class="tit">公司尽调画像</p>
            <textarea v-model="message" placeholder="请输入公司名称(必填)"></textarea>
            <button onclick="document.getElementById('file').click()">请上传尽调报告</button>
            <input type="file" id="file" accept=".doc,.docx" @change="getFiles($event)" style="display: none" />
            <p class="file-tit">已选择文件: <span v-if="selectedFile"> {{ selectedFile.name }}</span> <span v-else>暂无</span> </p>
            <button @click="generateChart" :disabled="disableButton"
                :class="{ 'disabled-button': disableButton }">一键生成</button>
            <!-- <button style="margin-top: 20px;" @click="GetSaveExcel">下载excel</button> -->
        </div>
        <div class="echarts-box">
            <div class="radar-box" v-show="!loadingSub">
                <div class="ent-structure" ref="ent-structure">
                    <div class="ent-radar" ref="ent-radar"></div>
                </div>
            </div>
 
            <div size="large" class="loading-box" v-if="loadingSub">
                <div style="font-size: 32px;font-weight: 600;line-height: 32px;">生成中</div>
                <Spin size="small" style="margin-top: 10px;margin-left: 20px" />
                <Spin style="margin-top: 6px;margin-left: 20px" />
                <Spin style="margin-left: 20px" size="large" />
            </div>
            <div class="xlsx-box" v-if="hasScores">
                <table border="1" style="border-collapse: collapse; width: 100%;">
                    <thead>
                        <tr>
                            <th v-for="(header, index) in headers" :key="index" :style="{ width: headerWidths[index] ,textAlign: 'center'}">{{ header }}</th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr v-for="(row, rowIndex) in tableData" :key="rowIndex">
                            <td v-for="(cell, cellIndex) in row" :key="cellIndex" :rowspan="cell.rowspan"
                                :colspan="cell.colspan">
                                <!-- 动态绑定得分 -->
                                <template v-if="cell.key === '得分'">
                                    {{ getScore(cell.value) }}
                                </template>
                                <!-- 动态绑定大类评分 -->
                                <template v-else-if="cell.key === '大类评分'">
                                    {{ getCategoryScore(cell.value) }}
                                </template>
                                <!-- 动态绑定总分 -->
                                <template v-else-if="cell.key === '总分'">
                                    {{ totalScore }}
                                </template>
                                <!-- 动态绑定其他可变字段 -->
                                <template v-else-if="cell.dynamic">
                                    {{ getDynamicValue(cell.dynamicKey) }}
                                </template>
                                <template v-else>
                                    {{ cell.value }}
                                </template>
                            </td>
                        </tr>
                    </tbody>
                </table>
            </div>
        </div>
 
 
        <!-- <div class="no-data" v-if="!hasRadarData && !loadingSub">
            <img src="../../assets/images/less.png" alt="">
            <p>暂无数据</p>
        </div> -->
 
    </div>
 
    <!-- </div> -->
 
</template>
 
<script>
import * as echarts from 'echarts'
import axios from '@/libs/api.request'
 
export default {
    data() {
        return {
            loadingSub: false,
            // disableButton: false,
            message: '',
            hasRadarData: false,
            hasScores: false,
            radarData: [],
            Echarts: null,
            childLength: [],
            selectedFile: null,
            fileUrl: '',
            excelData:'',
            scores: {}, // 存储接口返回的得分数据
            categoryScores: {}, // 存储大类评分
            totalScore: 0, // 总分
            dynamicData: {}, // 存储动态数据
            headerWidths: ['113px', '150px', '150px', 'auto', '50px', '50px', '80px', '50px'], // 自定义宽度
            headers: [
                '企业评分',
                '评价维度',
                '评分细则',
                '评分标准',
                '满分',
                '得分',
                '大类评分',
                '总分',
            ], // 表头
            tableData: [
                // 表格数据,包含 rowspan 和 colspan 属性
                //企业活跃度
                [
                    { value: '企业活跃度(总分100分)', rowspan: 11, colspan: 1 }, // 跨 6 行
                    { value: '经济效益维度', rowspan: 2, colspan: 1 }, // 跨 2 行
                    { value: '销售额', rowspan: 1, colspan: 1 },
                    { value: '越多越好', rowspan: 1, colspan: 1 },
                    { value: '10', rowspan: 1, colspan: 1 },
                    { key: '得分', value: '销售额', rowspan: 1, colspan: 1 }, // 动态得分
                    { key: '得分', value: '大类评分1', rowspan: 11, colspan: 1 }, // 动态大类评分
                    { key: '得分', value: '总分', rowspan: 38, colspan: 1 },
                ],
                [
                    { value: '市场份额', rowspan: 1, colspan: 1 },
                    { value: '越多越好', rowspan: 1, colspan: 1 },
                    { value: '10', rowspan: 1, colspan: 1 },
                    { key: '得分', value: '市场份额', rowspan: 1, colspan: 1 }, // 动态得分
                ],
                [
                    { value: '客户与市场扩展维度', rowspan: 2, colspan: 1 }, // 跨 2 行
                    { value: '客户增长率', rowspan: 1, colspan: 1 },
                    { value: '越多越好', rowspan: 1, colspan: 1 },
                    { value: '10', rowspan: 1, colspan: 1 },
                    { key: '得分', value: '客户增长率', rowspan: 1, colspan: 1 },
                ],
                [
                    { value: '品牌知名度', rowspan: 1, colspan: 1 },
                    { value: '越多越好', rowspan: 1, colspan: 1 },
                    { value: '5', rowspan: 1, colspan: 1 },
                    { key: '得分', value: '品牌知名度', rowspan: 1, colspan: 1 },
 
                ],
                [
                    { value: '社交媒体与互动维度', rowspan: 1, colspan: 1 },
                    { value: '社交媒体参与度', rowspan: 1, colspan: 1 },
                    { value: '越多越好', rowspan: 1, colspan: 1 },
                    { value: '5', rowspan: 1, colspan: 1 },
                    { key: '得分', value: '社交媒体参与度', rowspan: 1, colspan: 1 },
                ],
                [
                    { value: '创新与研发维度', rowspan: 1, colspan: 1 },
                    { value: '企业活跃度创新能力', rowspan: 1, colspan: 1 },
                    {
                        value:
                            '分析企业的研发成果,如专利数量、新产品推出速度等,评估企业的技术创新能力和成长潜力。',
                        rowspan: 1,
                        colspan: 1,
                    },
                    { value: '10', rowspan: 1, colspan: 1 },
                    { key: '得分', value: '企业活跃度创新能力', rowspan: 1, colspan: 1 },
                ],
                // 运营与管理维度
                [
                    { value: '运营与管理维度', rowspan: 2, colspan: 1 }, // 跨 2 行
                    { value: '运营状态', rowspan: 1, colspan: 1 },
                    {
                        value:
                            '包括企业的纳税状态、社保缴存状态、公积金缴存状态等,这些指标能够反映企业的合规性和经营稳定性,从而影响其市场活跃度。',
                        rowspan: 1,
                        colspan: 1,
                    },
                    { value: '10', rowspan: 1, colspan: 1 },
                    { key: '得分', value: '运营状态', rowspan: 1, colspan: 1 },
                ],
                [
                    { value: '企业变更备案次数', rowspan: 1, colspan: 1 },
                    {
                        value:
                            '频繁的变更可能意味着企业在积极调整战略以适应市场变化。',
                        rowspan: 1,
                        colspan: 1,
                    },
                    { value: '10', rowspan: 1, colspan: 1 },
                    { key: '得分', value: '企业变更备案次数', rowspan: 1, colspan: 1 },
                ],
                // 成长与扩张维度
                [
                    { value: '成长与扩张维度', rowspan: 2, colspan: 1 }, // 跨 2 行
                    { value: '分支机构开设数量', rowspan: 1, colspan: 1 },
                    {
                        value:
                            '分支机构的开设是企业扩张和成长的重要标志,也是衡量企业活跃度的一个重要维度。',
                        rowspan: 1,
                        colspan: 1,
                    },
                    { value: '10', rowspan: 1, colspan: 1 },
                    { key: '得分', value: '分支机构开设数量', rowspan: 1, colspan: 1 },
                ],
                [
                    { value: '对外投资企业数', rowspan: 1, colspan: 1 },
                    {
                        value:
                            '对外投资数量的增加表明企业正在积极寻求新的市场机会和增长点,这同样能够提升企业的市场活跃度。',
                        rowspan: 1,
                        colspan: 1,
                    },
                    { value: '10', rowspan: 1, colspan: 1 },
                    { key: '得分', value: '对外投资企业数', rowspan: 1, colspan: 1 },
                ],
                // 外部支持与资源维度
                [
                    { value: '外部支持与资源维度', rowspan: 1, colspan: 1 },
                    { value: '资本活跃度', rowspan: 1, colspan: 1 },
                    {
                        value: '融资次数、金额、以及投资机构含金量',
                        rowspan: 1,
                        colspan: 1,
                    },
                    { value: '10', rowspan: 1, colspan: 1 },
                    { key: '得分', value: '资本活跃度', rowspan: 1, colspan: 1 },
                ],
                // 企业合法合规
                [
                    { value: '企业合法合规', rowspan: 6, colspan: 1 }, // 跨 4 行
                    { value: '合规管理体系的建立', rowspan: 4, colspan: 1 },
                    { value: '法律法规遵守', rowspan: 1, colspan: 1 },
                    {
                        value:
                            '是否遵守国家和地方的法律法规,包括商业法、劳动法、税法、环保法等。。',
                        rowspan: 1,
                        colspan: 1,
                    },
                    { value: '20', rowspan: 1, colspan: 1 },
                    { key: '得分', value: '法律法规遵守', rowspan: 1, colspan: 1 },
                    { key: '得分', value: '大类评分2', rowspan: 6, colspan: 1 },
                ],
                [
                    { value: '公司章程和制度', rowspan: 1, colspan: 1 },
                    {
                        value:
                            '是否制定并遵守自身的公司章程和内部管理制度,确保运营有序。',
                        rowspan: 1,
                        colspan: 1,
                    },
                    { value: '20', rowspan: 1, colspan: 1 },
                    { key: '得分', value: '公司章程和制度', rowspan: 1, colspan: 1 },
                ],
                [
                    { value: '内部监督和审计', rowspan: 1, colspan: 1 },
                    {
                        value:
                            '是否建立内部监督和审计机制,定期检查和评估合规情况,及时发现和纠正问题。',
                        rowspan: 1,
                        colspan: 1,
                    },
                    { value: '20', rowspan: 1, colspan: 1 },
                    { key: '得分', value: '内部监督和审计', rowspan: 1, colspan: 1 },
                ],
                [
                    { value: '知识产权保护', rowspan: 1, colspan: 1 },
                    {
                        value:
                            '是否尊重和保护知识产权,不侵犯他人的专利、商标、版权等权利。',
                        rowspan: 1,
                        colspan: 1,
                    },
                    { value: '20', rowspan: 1, colspan: 1 },
                    { key: '得分', value: '知识产权保护', rowspan: 1, colspan: 1 },
                ],
                [
                    { value: '外部合规认证与监管', rowspan: 2, colspan: 1 }, // 跨 2 行
                    { value: '外部认证', rowspan: 1, colspan: 1 },
                    {
                        value:
                            '是否通过了相关机构的合规认证,如ISO 37301合规管理体系认证等,以证明其合规管理体系的有效性和可靠性。',
                        rowspan: 1,
                        colspan: 1,
                    },
                    { value: '10', rowspan: 1, colspan: 1 },
                    { key: '得分', value: '外部认证', rowspan: 1, colspan: 1 },
                ],
                [
                    { value: '监管配合', rowspan: 1, colspan: 1 },
                    {
                        value:
                            '是否积极配合政府和相关监管机构的合规监管工作,及时响应监管要求,提供必要的合规信息和资料。',
                        rowspan: 1,
                        colspan: 1,
                    },
                    { value: '10', rowspan: 1, colspan: 1 },
                    { key: '得分', value: '监管配合', rowspan: 1, colspan: 1 },
                ],
                // 企业发展力
                [
                    { value: '企业发展力', rowspan: 10, colspan: 1 }, // 跨 6 行
                    { value: '财务维度', rowspan: 6, colspan: 1 }, // 跨 3 行
                    { value: '盈利能力毛利率', rowspan: 1, colspan: 1 },
                    {
                        value:
                            '毛利率:反映了企业产品或服务的初始获利能力。较高的毛利率意味着企业在扣除直接成本后有较大的利润空间,能够为企业的进一步发展提供资金支持。',
                        rowspan: 1,
                        colspan: 1,
                    },
                    { value: '10', rowspan: 1, colspan: 1 },
                    { key: '得分', value: '盈利能力毛利率', rowspan: 1, colspan: 1 },
                    { key: '得分', value: '大类评分3', rowspan: 10, colspan: 1 },
                ],
                [
                    { value: '盈利能力净利率', rowspan: 1, colspan: 1 },
                    {
                        value:
                            '净利率:体现了企业在扣除所有成本和费用后的最终获利水平。持续稳定且较高的净利率表明企业经营效率高,成本控制良好,有较强的盈利能力以支持未来的扩张和创新。',
                        rowspan: 1,
                        colspan: 1,
                    },
                    { value: '10', rowspan: 1, colspan: 1 },
                    { key: '得分', value: '盈利能力净利率', rowspan: 1, colspan: 1 },
                ],
                [
                    { value: '盈利能力回报率', rowspan: 1, colspan: 1 },
                    { value: '资产回报率(ROA)和净资产回报率(ROE)', rowspan: 1, colspan: 1 },
                    { value: '10', rowspan: 1, colspan: 1 },
                    { key: '得分', value: '盈利能力回报率', rowspan: 1, colspan: 1 },
                ],
                [
                    { value: '偿债能力流动比率', rowspan: 1, colspan: 1 },
                    {
                        value:
                            '流动比率:反映企业短期偿债能力,即企业在短期内用流动资产偿还流动负债的能力。合适的流动比率表明企业能够及时偿还短期债务,避免资金链断裂,保障企业的持续运营。',
                        rowspan: 1,
                        colspan: 1,
                    },
                    { value: '10', rowspan: 1, colspan: 1 },
                    { key: '得分', value: '偿债能力流动比率', rowspan: 1, colspan: 1 },
                ],
                [
                    { value: '偿债能力资产负债率', rowspan: 1, colspan: 1 },
                    {
                        value:
                            '资产负债率:体现企业长期偿债能力,即企业总资产中有多少是通过负债筹集的。较低的资产负债率意味着企业财务风险相对较小,在经济环境变化时更具稳定性,有利于企业长期发展。',
                        rowspan: 1,
                        colspan: 1,
                    },
                    { value: '10', rowspan: 1, colspan: 1 },
                    { key: '得分', value: '偿债能力资产负债率', rowspan: 1, colspan: 1 },
                ],
                [
                    { value: '偿债能力筹资活动现金流量', rowspan: 1, colspan: 1 },
                    {
                        value:
                            '筹资活动现金流量:体现企业筹集资金的能力和方式。企业能够通过股权融资、债券发行等方式筹集到资金,为发展提供必要的资金支持。',
                        rowspan: 1,
                        colspan: 1,
                    },
                    { value: '10', rowspan: 1, colspan: 1 },
                    { key: '得分', value: '偿债能力筹资活动现金流量', rowspan: 1, colspan: 1 },
                ],
                // 市场维度
                [
                    { value: '市场维度', rowspan: 2, colspan: 1 }, // 跨 2 行
                    { value: '客户满意度与忠诚度', rowspan: 1, colspan: 1 },
                    {
                        value:
                            '品牌知名度:衡量企业品牌在市场中的知晓度。广泛的品牌知名度可以提高企业的市场影响力,吸引更多的客户和合作伙伴,为企业发展创造有利条件。',
                        rowspan: 1,
                        colspan: 1,
                    },
                    { value: '10', rowspan: 1, colspan: 1 },
                    { key: '得分', value: '客户满意度与忠诚度', rowspan: 1, colspan: 1 },
                ],
                [
                    { value: '客户忠诚度', rowspan: 1, colspan: 1 },
                    {
                        value:
                            '客户重复购买、推荐给他人等行为。高客户忠诚度可以降低企业的营销成本,提高企业的市场份额和盈利能力,是企业长期发展的重要保障。',
                        rowspan: 1,
                        colspan: 1,
                    },
                    { value: '10', rowspan: 1, colspan: 1 },
                    { key: '得分', value: '客户忠诚度', rowspan: 1, colspan: 1 },
                ],
                [
                    { value: '人力资源维度', rowspan: 2, colspan: 1 }, // 跨 2 行
                    { value: '人才结构', rowspan: 1, colspan: 1 },
                    {
                        value:
                            '企业员工的学历、专业、技能等构成情况。合理的人才结构能够满足企业不同岗位的需求,为企业的发展提供有力的人才支持。',
                        rowspan: 1,
                        colspan: 1,
                    },
                    { value: '10', rowspan: 1, colspan: 1 },
                    { key: '得分', value: '人才结构', rowspan: 1, colspan: 1 },
                ],
                [
                    { value: '人才激励机制', rowspan: 1, colspan: 1 },
                    {
                        value:
                            '企业对员工的激励措施,如薪酬福利、股权激励、职业发展规划等。有效的人才激励机制可以吸引和留住优秀人才,激发员工的工作积极性和创造力,为企业发展提供持续的动力。',
                        rowspan: 1,
                        colspan: 1,
                    },
                    { value: '10', rowspan: 1, colspan: 1 },
                    { key: '得分', value: '人才激励机制', rowspan: 1, colspan: 1 },
                ],
                // 企业成长性
                [
                    { value: '企业成长性', rowspan: 6, colspan: 1 }, // 跨 6 行
                    { value: '技术与创新维度', rowspan: 3, colspan: 1 },
                    { value: '研发投入', rowspan: 1, colspan: 1 },
                    {
                        value:
                            '关注企业的研发费用占营业收入的比例,以及研发投入的增长趋势。',
                        rowspan: 1,
                        colspan: 1,
                    },
                    { value: '20', rowspan: 1, colspan: 1 },
                    { key: '得分', value: '研发投入', rowspan: 1, colspan: 1 },
                    { key: '得分', value: '大类评分4', rowspan: 6, colspan: 1 },
                ],
                [
                    { value: '技术进步', rowspan: 1, colspan: 1 },
                    {
                        value:
                            '关注企业的技术升级换代情况,以及与同行业先进技术的差距,评估企业的技术发展水平。',
                        rowspan: 1,
                        colspan: 1,
                    },
                    { value: '20', rowspan: 1, colspan: 1 },
                    { key: '得分', value: '技术进步', rowspan: 1, colspan: 1 },
                ],
                [
                    { value: '企业成长性创新能力', rowspan: 1, colspan: 1 },
                    {
                        value:
                            '关注企业的创新文化和创新机制,鼓励员工提出创新想法和解决方案,为企业成长提供持续动力',
                        rowspan: 1,
                        colspan: 1,
                    },
                    { value: '20', rowspan: 1, colspan: 1 },
                    { key: '得分', value: '企业成长性创新能力', rowspan: 1, colspan: 1 },
                ],
                [
                    { value: '管理维度', rowspan: 3, colspan: 1 }, // 跨 2 行
                    { value: '战略规划与执行', rowspan: 1, colspan: 1 },
                    {
                        value:
                            '评估企业战略规划的合理性、适应性和执行力度,确保企业朝着正确的方向发展。',
                        rowspan: 1,
                        colspan: 1,
                    },
                    { value: '20', rowspan: 1, colspan: 1 },
                    { key: '得分', value: '战略规划与执行', rowspan: 1, colspan: 1 },
                ],
                [
                    { value: '组织架构优化', rowspan: 1, colspan: 1 },
                    {
                        value:
                            '分析企业部门设置、职责分工、沟通协调机制等方面的变化,评估企业的组织适应性和成长潜力。',
                        rowspan: 1,
                        colspan: 1,
                    },
                    { value: '10', rowspan: 1, colspan: 1 },
                    { key: '得分', value: '组织架构优化', rowspan: 1, colspan: 1 },
                ],
                [
                    { value: '风险管理', rowspan: 1, colspan: 1 },
                    {
                        value:
                            '分析企业在市场风险、财务风险、运营风险等方面的应对措施,评估企业的风险管理能力。',
                        rowspan: 1,
                        colspan: 1,
                    },
                    { value: '10', rowspan: 1, colspan: 1 },
                    { key: '得分', value: '风险管理', rowspan: 1, colspan: 1 },
                ],
                // 企业就业带动
                [
                    { value: '企业就业带动', rowspan: 5, colspan: 1 }, // 跨 6 行
                    { value: '直接就业维度', rowspan: 2, colspan: 1 },
                    { value: '员工数量增长', rowspan: 1, colspan: 1 },
                    {
                        value:
                            '可以对比企业近几年的员工数量,分析增长幅度和趋势',
                        rowspan: 1,
                        colspan: 1,
                    },
                    { value: '20', rowspan: 1, colspan: 1 },
                    { key: '得分', value: '员工数量增长', rowspan: 1, colspan: 1 },
                    { key: '得分', value: '大类评分5', rowspan: 5, colspan: 1 },
                ],
                [
                    { value: '招聘规模和频率', rowspan: 1, colspan: 1 },
                    {
                        value:
                            '每年的招聘次数、每次招聘的人数以及招聘岗位的多样性。',
                        rowspan: 1,
                        colspan: 1,
                    },
                    { value: '20', rowspan: 1, colspan: 1 },
                    { key: '得分', value: '招聘规模和频率', rowspan: 1, colspan: 1 },
                ],
                [
                    { value: '产业关联维度', rowspan: 2, colspan: 1 },
                    { value: '上下游企业带动', rowspan: 1, colspan: 1 },
                    {
                        value:
                            '企业的发展会带动其上下游产业链上的企业发展,从而间接创造就业机会。例如,一家制造业企业的发展会促使原材料供应商扩大生产规模,增加员工;同时也会让销售渠道、物流企业等增加人手。',
                        rowspan: 1,
                        colspan: 1,
                    },
                    { value: '20', rowspan: 1, colspan: 1 },
                    { key: '得分', value: '上下游企业带动', rowspan: 1, colspan: 1 },
                ],
                [
                    { value: '产业集群效应', rowspan: 1, colspan: 1 },
                    {
                        value:
                            '具有影响力的企业往往能够促进产业集群的形成,吸引更多企业入驻,共同推动地区经济发展,从而创造大量就业岗位。',
                        rowspan: 1,
                        colspan: 1,
                    },
                    { value: '20', rowspan: 1, colspan: 1 },
                    { key: '得分', value: '产业集群效应', rowspan: 1, colspan: 1 },
                ],
                [
                    { value: '技能提升维度', rowspan: 1, colspan: 1 },
                    { value: '产学研合作', rowspan: 1, colspan: 1 },
                    {
                        value:
                            '企业与高校、科研机构合作,共同培养专业人才,为毕业生提供实习和就业机会。这种合作模式有助于提高人才的适用性,为社会输送更多符合产业需求的人才。',
                        rowspan: 1,
                        colspan: 1,
                    },
                    { value: '20', rowspan: 1, colspan: 1 },
                    { key: '得分', value: '产学研合作', rowspan: 1, colspan: 1 },
                ],
            ],
        }
    },
 
    mounted() {
        // this.formatData(this.radarData)
        this.$nextTick(() => {
            this.initRadar();
        });
        window.onresize = () => {
            this.$nextTick(() => {
                this.Echarts.resize()
            })
        }
    },
    computed: {
        // 根据 message 和 selectedFile 动态计算按钮的 disabled 状态
        disableButton() {
            return !this.message || !this.fileUrl || this.loadingSub;
        }
    },
    methods: {
        // 调用接口获取得分数据
        fetchScores(file) {
            try {
                this.loadingSub = true;
                const apiUrl = 'https://api.coze.cn/v1/workflow/run';
                const headers = {
                    'Authorization': 'Bearer pat_K4EofAr9htfEnfA6xtNphvDqAfblnIDZ8TAG4UAyHOJuhbNbfROuwmeQZ6bLUlkV',
                    'Content-Type': 'application/json'
                };
                const params = {
                    "workflow_id": "7449244379883061286",
                    "parameters": {
                        "BOT_USER_INPUT": "",
                        "E": "http://rczd.rensofter.com/HaoshuRobot/Enterprisedmensionscringcriteria.xlsx",
                        "D": `http://rczd.rensofter.com${file}`
                    }
                }
                axios.request({
                    url: apiUrl,
                    method: 'POST',
                    headers: headers,
                    data: params
                }).then(response => {
                    console.log('Response2222:', response.data.data);
                    const res = response.data.data
                    let json = JSON.parse(res); // 解析为对象
                    // 去除前后的中文引号
                    // console.log('json2222:',json);
                    let outputValue = json.output.replace(/[\n]/g, "").replace(/ /g, ''); // 获取 "output" 的值
                    console.log('outputValue2222:',outputValue);
                    this.excelData=outputValue
                    // 解析字符串
                    const parsedData = outputValue.split(',').map(item => {
                        const [key, value] = item.split(':'); // 使用中文冒号分割
                        return { 评分细则: key, 得分: parseInt(value, 10) }; // 转换为整数
                    });
                    console.log(parsedData);
                    var total = 0;
                    var total1 = 0;
                    var total2 = 0;
                    var total3 = 0;
                    var total4 = 0;
                    var total5 = 0;
                    parsedData.forEach(item => {
                        // 计算总分
                        total += item.得分;
 
                        // 计算大类评分1(销售额到资本活跃度)
                        if (
                            item.评分细则 === '销售额' ||
                            item.评分细则 === '市场份额' ||
                            item.评分细则 === '客户增长率' ||
                            item.评分细则 === '品牌知名度' ||
                            item.评分细则 === '社交媒体参与度' ||
                            item.评分细则 === '企业活跃度创新能力' ||
                            item.评分细则 === '运营状态' ||
                            item.评分细则 === '企业变更备案次数' ||
                            item.评分细则 === '分支机构开设数量' ||
                            item.评分细则 === '对外投资企业数' ||
                            item.评分细则 === '资本活跃度'
                        ) {
                            total1 += item.得分;
                        }
 
                        // 计算大类评分2(法律法规遵守到监管配合)
                        if (
                            item.评分细则 === '法律法规遵守' ||
                            item.评分细则 === '公司章程和制度' ||
                            item.评分细则 === '内部监督和审计' ||
                            item.评分细则 === '知识产权保护' ||
                            item.评分细则 === '外部认证' ||
                            item.评分细则 === '监管配合'
                        ) {
                            total2 += item.得分;
                        }
                        // 计算大类评分3(企业发展力)
                        if (
                            item.评分细则 === '盈利能力毛利率' ||
                            item.评分细则 === '盈利能力净利率' ||
                            item.评分细则 === '盈利能力回报率' ||
                            item.评分细则 === '偿债能力流动比率' ||
                            item.评分细则 === '偿债能力资产负债率' ||
                            item.评分细则 === '偿债能力筹资活动现金流量' ||
                            item.评分细则 === '客户满意度与忠诚度' ||
                            item.评分细则 === '客户忠诚度' ||
                            item.评分细则 === '人才结构' ||
                            item.评分细则 === '人才激励机制'
                        ) {
                            total3 += item.得分;
                        }
                        // 计算大类评分4(企业成长性)
                        if (
                            item.评分细则 === '研发投入' ||
                            item.评分细则 === '技术进步' ||
                            item.评分细则 === '企业成长性创新能力' ||
                            item.评分细则 === '战略规划与执行' ||
                            item.评分细则 === '组织架构优化' ||
                            item.评分细则 === '风险管理'
                        ) {
                            total4 += item.得分;
                        }
                        // 计算大类评分5(企业就业带动)
                        if (
                            item.评分细则 === '员工数量增长' ||
                            item.评分细则 === '招聘规模和频率' ||
                            item.评分细则 === '上下游企业带动' ||
                            item.评分细则 === '产业集群效应' ||
                            item.评分细则 === '产学研合作'
                        ) {
                            total5 += item.得分;
                        }
                    });
                    // 将大类评分和总分添加到评分细则中
                    var result111 = [
                        ...parsedData,
                        { 评分细则: '大类评分1', 得分: total1 },
                        { 评分细则: '大类评分2', 得分: total2 },
                        { 评分细则: '大类评分3', 得分: total3 },
                        { 评分细则: '大类评分4', 得分: total4 },
                        { 评分细则: '大类评分5', 得分: total5 },
                        { 评分细则: '总分', 得分: total },
                    ];
                    // 输出结果
                    console.log(JSON.stringify(result111, null, 2));
                    // 将得分数据存储到 scores 对象中
                    this.scores = result111.reduce((acc, item) => {
                        acc[item.评分细则] = item.得分;
                        return acc;
                    }, {});
                    this.renderRadar(this.radarData); // 重新渲染树图
                    this.loadingSub = false;
                    this.hasRadarData = true;
                    this.hasScores = true;
                    // 计算大类评分和总分
                    this.calculateCategoryScores();
                    this.calculateTotalScore();
                }).catch(error => {
                    console.error('获取得分数据失败:', error);
                });
 
            } catch (error) {
                console.error('获取得分数据失败:', error);
            }
        },
        // 根据评分细则获取得分
        getScore(key) {
            return this.scores[key] || 0; // 如果接口未返回得分,默认显示 0
        },
        // 计算大类评分
        calculateCategoryScores() {
            const categoryMap = {
                经济效益维度: ['销售额', '市场份额'],
                客户与市场扩展维度: ['客户增长率', '品牌知名度'],
                社交媒体与互动维度: ['社交媒体参与度'],
                创新与研发维度: ['创新能力'],
            };
            for (const category in categoryMap) {
                const items = categoryMap[category];
                const score = items.reduce((sum, item) => sum + (this.scores[item] || 0), 0);
                this.categoryScores[category] = score;
            }
        },
        // 获取大类评分
        getCategoryScore(category) {
            return this.categoryScores[category] || 0;
        },
        // 计算总分
        calculateTotalScore() {
            this.totalScore = Object.values(this.categoryScores).reduce((sum, score) => sum + score, 0);
        },
        // 获取动态字段的值
        getDynamicValue(key) {
            return this.dynamicData[key] || 'N/A'; // 如果接口未返回动态数据,默认显示 N/A
        },
        initRadar() {
            this.Echarts = echarts.init(this.$refs['ent-radar']);
            this.renderRadar()
        },
        triggerFileInput() {
            document.getElementById('file').click();
        },
        getFiles(e) {
            const file = e.target.files[0];
            if (file && (file.type === 'application/msword' || file.type === 'application/vnd.openxmlformats-officedocument.wordprocessingml.document')) {
                const aa = new FormData();
                aa.append("file", file); // 文件
                console.log(file, aa);
                axios.request({
                    url: '/AgentData/UploadFileDocx',
                    method: 'post',
                    data: aa
                }).then(res => {
                    console.log(res.data.fileUrl);
                    this.selectedFile = file;
                    this.fileUrl = res.data.fileUrl
                    // this.getRadarData(res.data.fileUrl)
                })
            } else {
                alert('请选择有效的 Word 文件');
            }
        },
        getRadarData(file) {
            this.loadingSub = true;
            const apiUrl = 'https://api.coze.cn/v1/workflow/run';
            const headers = {
                'Authorization': 'Bearer pat_K4EofAr9htfEnfA6xtNphvDqAfblnIDZ8TAG4UAyHOJuhbNbfROuwmeQZ6bLUlkV',
                'Content-Type': 'application/json'
            };
            const params = {
                "workflow_id": "7447476302736654377",
                "parameters": {
                    "BOT_USER_INPUT": "",
                    "E": "http://rczd.rensofter.com/HaoshuRobot/EnterpriseDimensionScoring.xlsx",
                    "D": `http://rczd.rensofter.com${file}`
                }
            }
            axios.request({
                url: apiUrl,
                method: 'POST',
                headers: headers,
                data: params
            }).then(response => {
                console.log('Response1111:', response.data.data);
                const res = response.data.data
                let json = JSON.parse(res); // 解析为对象
                let outputValue = json.data; // 获取 "output" 的值
                let result = JSON.stringify(outputValue); // 转换为字符串
                console.log(result);
                if (/[\u4e00-\u9fa5]/.test(result)) {
                    //判断字符串中是否含有汉字
                    this.radarData = JSON.parse(JSON.stringify(result.match(/\d+/g).map(Number)));
                    console.log('this.radarData:', this.radarData);
                } else {
                    this.radarData = JSON.parse(JSON.stringify(result.slice(1, -1).split(",").map(Number)));
                    console.log('this.radarData:', this.radarData);
 
                }
 
                // const jsonString =  result.replace(/json/g, "").replace(/```/g, '').replace(/[\n\t\r]/g, "").replace(/\\/g, '').replace(/[ ]/g, "").replace(/^\"|\"$/g, '').replace(/,$/, '') 
                // console.log('jsonString2:', jsonString);
 
                // console.log('Response2222:', JSON.parse(jsonString));
 
                // this.radarData = JSON.parse(jsonString).map(item => item.max);
                // console.log('this.radarData:', this.radarData);
 
 
 
                // this.renderRadar(this.radarData); // 重新渲染树图
                // this.loadingSub = false;
                // this.hasRadarData = true;
                // 重新启用按钮
                // this.disableButton = false;
            }).catch(error => {
                console.error('Error:', error);
                this.loadingSub = false;
                alert('提交时发生错误,请重试。');
                // 重新启用按钮
                // this.disableButton = false;
            })
        },
 
        generateChart() {
            if (!this.message) {
                alert('请输入正确的公司名称!');
            } else if (!this.fileUrl) {
                alert('请上传尽调报告');
            } else {
                this.getRadarData(this.fileUrl)
                // 调用接口获取得分数据
                this.fetchScores(this.fileUrl);
            }
        },
        //下载excel
        GetSaveExcel(){
            axios.request({
                    url: 'SubsidyData/GetSaveExcel',
                    method: 'post',
                    data: this.excelData
                }).then(res => {
                    console.log(res);
                })
        },
 
        // 绘制企业结构的echarts
        renderRadar(data) {
            this.childLength = []
            this.Echarts = echarts.init(this.$refs['ent-radar'])
 
            const option = {
                // title: {
                //     text: 'Basic Radar Chart'
                // },
                tooltip: {
                    trigger: 'axis'
                },
                // legend: {
                //     data: ['Allocated Budget']
                // },
                radar: {
                    // shape: 'circle',
                    indicator: [
                        { name: '企业活跃度', max: 100, min: 0 },
                        { name: '企业合法合规', max: 100, min: 0 },
                        { name: '企业发展力', max: 100, min: 0 },
                        { name: '企业成长性', max: 100, min: 0 },
                        { name: '企业就业带动', max: 100, min: 0 }
                    ],
                    axisLabel: {
                        formatter: function (value) {
                            return value.toFixed(1); // 保留 1 位小数
                        }
                    }
                },
                series: [
                    {
                        name: '公司尽调画像',
                        type: 'radar',
                        tooltip: {
                            trigger: 'item'
                        },
                        areaStyle: {},
                        data: [
                            {
                                value: data,
                                name: '公司尽调画像'
                            }
                        ]
                    }
                ]
            };
            this.Echarts.setOption(option, true)
        },
    }
}
</script>
 
<style lang="less" scoped>
.radar-container {
    margin: 0;
    padding: 0;
    width: 100%;
    min-height: 100%;
    background-color: #f4f4f4;
    display: flex;
}
 
.echarts-box {
 flex: 1;
 background: #fff;
}
 
.xlsx-box {
 
    // background-color: #f4f4f4;
    table {
        margin: 20px 0;
        width: 100%;
        border-collapse: collapse;
    }
 
    th,
    td {
        padding: 8px;
        text-align: left;
        border: 1px solid #ddd;
    }
 
    th {
        background-color: #f2f2f2;
    }
}
 
.search-box {
    width: 500px;
    padding: 100px;
 
    .tit {
        font-size: 30px;
        margin-bottom: 20px;
    }
 
    .file-tit {
        font-size: 20px;
        margin: 20px 0;
    }
 
    textarea,
    input[type="text"] {
        width: 100%;
 
        resize: none;
        /* 禁止用户调整大小 */
        padding: 10px;
        border: 1px solid #ccc;
        border-radius: 4px;
        font-family: Arial, sans-serif;
        font-size: 14px;
        box-sizing: border-box;
        margin-bottom: 10px;
    }
 
    textarea {
        height: 6em;
        /* 设置高度为三行 */
    }
 
    textarea:focus,
    input[type="text"]:focus {
        outline: none;
        border-color: #2d8cf0;
        box-shadow: 0 0 5px rgba(108, 99, 255, 0.5);
    }
 
    button {
        width: 100%;
        padding: 10px;
        background-color: #2d8cf0;
        color: #fff;
        border: none;
        border-radius: 4px;
        font-size: 16px;
        cursor: pointer;
        transition: background-color 0.3s ease;
    }
 
    button:hover {
        background-color: #2d8cf0;
    }
 
    button:focus {
        outline: none;
        box-shadow: 0 0 5px rgba(108, 99, 255, 0.5);
    }
 
    .disabled-button {
        background-color: #ccc;
        cursor: not-allowed;
    }
 
 
}
 
.loading-box {
    width: calc(100vw - 500px);
    height: 100%;
    position: absolute;
    left: 500px;
    line-height: 20%;
    display: flex;
    padding-left: calc(50% - 250px);
    padding-top: 50vh;
    background: white;
    color: #2d8cf0;
 
    /deep/ .ivu-spin-dot {
        background-color: #2d8cf0;
    }
}
 
.no-data {
    position: absolute;
    left: 50%;
    top: 20%;
    text-align: center;
    padding-bottom: 100px;
    color: #999;
}
 
.no-data img {
    width: 500px;
}
 
 
.radar-box {
    height: 500px;
    flex: 1;
    min-width: 800px;
}
 
.ent-structure {
    width: 100%;
    height: 100%;
    background: #fff;
}
 
.ent-radar {
    width: 100%;
    min-width: 800px;
    height: 100%;
    overflow: auto;
}
</style>