mistpe commited on
Commit
55c5d7b
·
verified ·
1 Parent(s): 8eda292

Create index.html

Browse files
Files changed (1) hide show
  1. index.html +1215 -0
index.html ADDED
@@ -0,0 +1,1215 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <title>绍兴黄酒企业发展战略分析</title>
6
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/echarts/5.4.3/echarts.min.js"></script>
7
+ <style>
8
+ :root {
9
+ --primary-color: #1976D2;
10
+ --secondary-color: #4CAF50;
11
+ --accent-color: #E65100;
12
+ --background-color: #f8f9fa;
13
+ --card-shadow: 0 4px 6px rgba(0,0,0,0.1);
14
+ --transition-speed: 0.3s;
15
+ --sidebar-width: 400px;
16
+ }
17
+
18
+ /* Base Styles */
19
+ body {
20
+ font-family: 'Microsoft YaHei', sans-serif;
21
+ margin: 0;
22
+ padding: 0;
23
+ background: var(--background-color);
24
+ color: #333;
25
+ overflow-x: hidden;
26
+ }
27
+
28
+ .container {
29
+ max-width: 1400px;
30
+ margin: 0 auto;
31
+ padding: 40px 20px;
32
+ transition: margin-right var(--transition-speed);
33
+ }
34
+
35
+ .container.sidebar-active {
36
+ margin-right: var(--sidebar-width);
37
+ }
38
+
39
+ /* Header Styles */
40
+ .header {
41
+ background: linear-gradient(135deg, var(--primary-color), #2196F3);
42
+ color: white;
43
+ padding: 40px;
44
+ border-radius: 16px;
45
+ margin-bottom: 40px;
46
+ box-shadow: var(--card-shadow);
47
+ }
48
+
49
+ .header h1 {
50
+ margin: 0;
51
+ font-size: 2.5em;
52
+ font-weight: 600;
53
+ }
54
+
55
+ .header p {
56
+ margin: 10px 0 0;
57
+ font-size: 1.2em;
58
+ opacity: 0.9;
59
+ }
60
+
61
+ /* Grid Layout */
62
+ .grid {
63
+ display: grid;
64
+ grid-template-columns: repeat(2, 1fr);
65
+ gap: 30px;
66
+ margin-bottom: 30px;
67
+ }
68
+
69
+ /* Card Styles */
70
+ .card {
71
+ background: white;
72
+ padding: 30px;
73
+ border-radius: 16px;
74
+ box-shadow: var(--card-shadow);
75
+ transition: transform var(--transition-speed);
76
+ }
77
+
78
+ .card:hover {
79
+ transform: translateY(-5px);
80
+ }
81
+
82
+ /* Chart Container */
83
+ .chart {
84
+ height: 400px;
85
+ margin-top: 20px;
86
+ }
87
+
88
+ /* Tab Styles */
89
+ .tab-container {
90
+ margin-top: 40px;
91
+ }
92
+
93
+ .tab-buttons {
94
+ display: flex;
95
+ gap: 20px;
96
+ margin-bottom: 30px;
97
+ border-bottom: 2px solid #e0e0e0;
98
+ padding-bottom: 10px;
99
+ }
100
+
101
+ .tab-button {
102
+ padding: 15px 30px;
103
+ border: none;
104
+ background: none;
105
+ font-size: 1.1em;
106
+ font-weight: 500;
107
+ color: #666;
108
+ cursor: pointer;
109
+ transition: all var(--transition-speed);
110
+ position: relative;
111
+ }
112
+
113
+ .tab-button::after {
114
+ content: '';
115
+ position: absolute;
116
+ bottom: -12px;
117
+ left: 0;
118
+ width: 100%;
119
+ height: 3px;
120
+ background: var(--primary-color);
121
+ transform: scaleX(0);
122
+ transition: transform var(--transition-speed);
123
+ }
124
+
125
+ .tab-button.active {
126
+ color: var(--primary-color);
127
+ }
128
+
129
+ .tab-button.active::after {
130
+ transform: scaleX(1);
131
+ }
132
+
133
+ .tab-content {
134
+ display: none;
135
+ padding: 20px;
136
+ }
137
+
138
+ .tab-content.active {
139
+ display: block;
140
+ }
141
+
142
+ /* Sidebar Styles */
143
+ .sidebar {
144
+ position: fixed;
145
+ right: calc(-1 * var(--sidebar-width));
146
+ top: 0;
147
+ width: var(--sidebar-width);
148
+ height: 100vh;
149
+ background: white;
150
+ box-shadow: -2px 0 5px rgba(0,0,0,0.1);
151
+ transition: right var(--transition-speed);
152
+ z-index: 1000;
153
+ overflow-y: auto;
154
+ }
155
+
156
+ .sidebar.active {
157
+ right: 0;
158
+ }
159
+
160
+ .sidebar-toggle {
161
+ position: fixed;
162
+ right: 20px;
163
+ top: 20px;
164
+ z-index: 1001;
165
+ background: var(--primary-color);
166
+ color: white;
167
+ border: none;
168
+ padding: 12px 20px;
169
+ border-radius: 8px;
170
+ cursor: pointer;
171
+ box-shadow: var(--card-shadow);
172
+ }
173
+
174
+ .sidebar-content {
175
+ padding: 20px;
176
+ }
177
+
178
+ .edit-section {
179
+ margin-bottom: 30px;
180
+ border-bottom: 1px solid #eee;
181
+ padding-bottom: 20px;
182
+ }
183
+
184
+ .edit-section h3 {
185
+ margin: 0 0 15px 0;
186
+ color: var(--primary-color);
187
+ }
188
+
189
+ /* Form Styles */
190
+ .form-group {
191
+ margin-bottom: 15px;
192
+ }
193
+
194
+ .form-group label {
195
+ display: block;
196
+ margin-bottom: 5px;
197
+ font-weight: 500;
198
+ }
199
+
200
+ .form-group input,
201
+ .form-group textarea,
202
+ .form-group select {
203
+ width: 100%;
204
+ padding: 8px;
205
+ border: 1px solid #ddd;
206
+ border-radius: 4px;
207
+ font-size: 14px;
208
+ }
209
+
210
+ .form-group input:focus,
211
+ .form-group textarea:focus,
212
+ .form-group select:focus {
213
+ outline: none;
214
+ border-color: var(--primary-color);
215
+ box-shadow: 0 0 0 2px rgba(25, 118, 210, 0.1);
216
+ }
217
+
218
+ /* Strategy Cards */
219
+ .strategy-grid {
220
+ display: grid;
221
+ grid-template-columns: repeat(3, 1fr);
222
+ gap: 20px;
223
+ margin-top: 20px;
224
+ }
225
+
226
+ .strategy-card {
227
+ background: white;
228
+ border-radius: 12px;
229
+ overflow: hidden;
230
+ box-shadow: var(--card-shadow);
231
+ }
232
+
233
+ .strategy-header {
234
+ padding: 20px;
235
+ color: white;
236
+ font-weight: bold;
237
+ }
238
+
239
+ .strategy-content {
240
+ padding: 20px;
241
+ }
242
+
243
+ .strategy-content ul {
244
+ padding-left: 20px;
245
+ margin: 0;
246
+ list-style-type: none;
247
+ }
248
+
249
+ .strategy-content li {
250
+ margin-bottom: 12px;
251
+ position: relative;
252
+ }
253
+
254
+ .strategy-content li::before {
255
+ content: '•';
256
+ color: var(--primary-color);
257
+ font-weight: bold;
258
+ position: absolute;
259
+ left: -15px;
260
+ }
261
+
262
+ /* Metrics Grid */
263
+ .metrics-grid {
264
+ display: grid;
265
+ grid-template-columns: repeat(4, 1fr);
266
+ gap: 20px;
267
+ }
268
+
269
+ .metric-card {
270
+ background: white;
271
+ padding: 20px;
272
+ border-radius: 12px;
273
+ text-align: center;
274
+ box-shadow: var(--card-shadow);
275
+ }
276
+
277
+ .metric-value {
278
+ font-size: 2em;
279
+ font-weight: 600;
280
+ color: var(--primary-color);
281
+ margin: 10px 0;
282
+ }
283
+
284
+ /* Timeline Styles */
285
+ .implementation-timeline {
286
+ padding: 30px;
287
+ background: white;
288
+ border-radius: 16px;
289
+ margin-top: 30px;
290
+ }
291
+
292
+ .timeline-item {
293
+ position: relative;
294
+ padding-left: 30px;
295
+ margin-bottom: 30px;
296
+ }
297
+
298
+ .timeline-item::before {
299
+ content: '';
300
+ position: absolute;
301
+ left: 0;
302
+ top: 0;
303
+ bottom: 0;
304
+ width: 2px;
305
+ background: var(--primary-color);
306
+ }
307
+
308
+ .timeline-item::after {
309
+ content: '';
310
+ position: absolute;
311
+ left: -4px;
312
+ top: 0;
313
+ width: 10px;
314
+ height: 10px;
315
+ border-radius: 50%;
316
+ background: var(--primary-color);
317
+ }
318
+
319
+ /* Investment Analysis Table */
320
+ .analysis-table {
321
+ width: 100%;
322
+ border-collapse: separate;
323
+ border-spacing: 0;
324
+ margin-top: 20px;
325
+ }
326
+
327
+ .analysis-table th,
328
+ .analysis-table td {
329
+ padding: 15px;
330
+ border: 1px solid #ddd;
331
+ text-align: center;
332
+ }
333
+
334
+ .analysis-table th {
335
+ background: #f5f5f5;
336
+ font-weight: 600;
337
+ }
338
+
339
+ .analysis-table tr:hover {
340
+ background: #f8f9fa;
341
+ }
342
+
343
+ /* Responsive Design */
344
+ @media (max-width: 1200px) {
345
+ .grid,
346
+ .strategy-grid {
347
+ grid-template-columns: repeat(2, 1fr);
348
+ }
349
+
350
+ .metrics-grid {
351
+ grid-template-columns: repeat(2, 1fr);
352
+ }
353
+ }
354
+
355
+ @media (max-width: 768px) {
356
+ .grid,
357
+ .strategy-grid,
358
+ .metrics-grid {
359
+ grid-template-columns: 1fr;
360
+ }
361
+
362
+ .container.sidebar-active {
363
+ margin-right: 0;
364
+ }
365
+
366
+ .sidebar {
367
+ width: 100%;
368
+ }
369
+ }
370
+ </style>
371
+ </head>
372
+ <body>
373
+ <button class="sidebar-toggle" onclick="toggleSidebar()">
374
+ ⚙️ 编辑数据
375
+ </button>
376
+
377
+ <!-- Sidebar -->
378
+ <div class="sidebar" id="sidebar">
379
+ <div class="sidebar-content">
380
+ <!-- Basic Info -->
381
+ <div class="edit-section">
382
+ <h3>基本信息</h3>
383
+ <div class="form-group">
384
+ <label>报告标题</label>
385
+ <input type="text" id="report-title" value="绍兴黄酒企业发展战略分析" onchange="updateContent('title')">
386
+ </div>
387
+ <div class="form-group">
388
+ <label>报告副标题</label>
389
+ <input type="text" id="report-subtitle" value="基于市场数据的综合分析与建议 - 2024年度战略规划" onchange="updateContent('subtitle')">
390
+ </div>
391
+ </div>
392
+
393
+ <!-- Market Share Data -->
394
+ <div class="edit-section">
395
+ <h3>市场份额数据</h3>
396
+ <div class="form-group">
397
+ <label>传统黄酒占比 (%)</label>
398
+ <input type="number" id="traditional-share" value="35" min="0" max="100" onchange="updateMarketShare()">
399
+ </div>
400
+ <div class="form-group">
401
+ <label>创新产品占比 (%)</label>
402
+ <input type="number" id="innovation-share" value="25" min="0" max="100" onchange="updateMarketShare()">
403
+ </div>
404
+ <div class="form-group">
405
+ <label>高端定制占比 (%)</label>
406
+ <input type="number" id="premium-share" value="20" min="0" max="100" onchange="updateMarketShare()">
407
+ </div>
408
+ <div class="form-group">
409
+ <label>其他产品占比 (%)</label>
410
+ <input type="number" id="other-share" value="20" min="0" max="100" onchange="updateMarketShare()">
411
+ </div>
412
+ </div>
413
+
414
+ <!-- Sales Trend Data -->
415
+ <div class="edit-section">
416
+ <h3>销售趋势数据</h3>
417
+ <div id="sales-data-container">
418
+ <div class="form-group">
419
+ <label>2019年销售额(亿元)</label>
420
+ <input type="number" data-year="2019" value="15" min="0" step="0.1" onchange="updateSalesTrend()">
421
+ </div>
422
+ <div class="form-group">
423
+ <label>2020年销售额(亿元)</label>
424
+ <input type="number" data-year="2020" value="18" min="0" step="0.1" onchange="updateSalesTrend()">
425
+ </div>
426
+ <div class="form-group">
427
+ <label>2021年销售额(亿元)</label>
428
+ <input type="number" data-year="2021" value="22" min="0" step="0.1" onchange="updateSalesTrend()">
429
+ </div>
430
+ <div class="form-group">
431
+ <label>2022年销售额(亿元)</label>
432
+ <input type="number" data-year="2022" value="27" min="0" step="0.1" onchange="updateSalesTrend()">
433
+ </div>
434
+ <div class="form-group">
435
+ <label>2023年销售额(亿元)</label>
436
+ <input type="number" data-year="2023" value="32" min="0" step="0.1" onchange="updateSalesTrend()">
437
+ </div>
438
+ </div>
439
+ </div>
440
+
441
+ <!-- Strategy Data -->
442
+ <div class="edit-section">
443
+ <h3>战略目标数据</h3>
444
+ <div class="form-group">
445
+ <label>品牌价值提升目标 (%)</label>
446
+ <input type="number" id="brand-value-target" value="35" min="0" max="100" onchange="updateMetrics()">
447
+ </div>
448
+ <div class="form-group">
449
+ <label>新品销售占比目标 (%)</label>
450
+ <input type="number" id="new-product-target" value="25" min="0" max="100" onchange="updateMetrics()">
451
+ </div>
452
+ <div class="form-group">
453
+ <label>渠道覆盖率目标 (%)</label>
454
+ <input type="number" id="channel-coverage-target" value="85" min="0" max="100" onchange="updateMetrics()">
455
+ </div>
456
+ <div class="form-group">
457
+ <label>客户满意度目标 (%)</label>
458
+ <input type="number" id="customer-satisfaction-target" value="92" min="0" max="100" onchange="updateMetrics()">
459
+ </div>
460
+ </div>
461
+
462
+ <!-- Investment Data -->
463
+ <div class="edit-section">
464
+ <h3>投资项目数据</h3>
465
+ <div class="form-group">
466
+ <label>智能化改造投资(万元)</label>
467
+ <input type="number" id="smart-investment" value="5000" min="0" onchange="updateInvestment()">
468
+ </div>
469
+ <div class="form-group">
470
+ <label>品牌建设投资(万元)</label>
471
+ <input type="number" id="brand-investment" value="3000" min="0" onchange="updateInvestment()">
472
+ </div>
473
+ <div class="form-group">
474
+ <label>渠道扩展投资(万元)</label>
475
+ <input type="number" id="channel-investment" value="2500" min="0" onchange="updateInvestment()">
476
+ </div>
477
+ <div class="form-group">
478
+ <label>研发创新投资(万元)</label>
479
+ <input type="number" id="rd-investment" value="3500" min="0" onchange="updateInvestment()">
480
+ </div>
481
+ </div>
482
+ </div>
483
+ </div>
484
+
485
+ <!-- Main Content -->
486
+ <div class="container" id="main-container">
487
+ <div class="header">
488
+ <h1 id="main-title">绍兴黄酒企业发展战略分析</h1>
489
+ <p id="main-subtitle">基于市场数据的综合分析与建议 - 2024年度战略规划</p>
490
+ </div>
491
+
492
+ <!-- Charts Grid -->
493
+ <div class="grid">
494
+ <div class="card">
495
+ <h2>市场份额分布</h2>
496
+ <div id="marketShare" class="chart"></div>
497
+ </div>
498
+
499
+ <div class="card">
500
+ <h2>销售增长趋势</h2>
501
+ <div id="salesTrend" class="chart"></div>
502
+ </div>
503
+ </div>
504
+
505
+ <!-- Tab Navigation -->
506
+ <div class="tab-container">
507
+ <div class="tab-buttons">
508
+ <button class="tab-button active" onclick="showTab('strategy')">战略规划</button>
509
+ <button class="tab-button" onclick="showTab('implementation')">实施路径</button>
510
+ <button class="tab-button" onclick="showTab('metrics')">关键指标</button>
511
+ <button class="tab-button" onclick="showTab('investment')">投资分析</button>
512
+ </div>
513
+
514
+ <!-- Strategy Tab -->
515
+ <div id="strategy" class="tab-content active">
516
+ <div class="strategy-grid">
517
+ <!-- Strategy Cards -->
518
+ <div class="strategy-card">
519
+ <div class="strategy-header" style="background: var(--primary-color);">品牌战略升级</div>
520
+ <div class="strategy-content">
521
+ <ul>
522
+ <li><strong>品牌定位重塑:</strong>突出"千年古法,现代创新"的品牌核心价值</li>
523
+ <li><strong>产品线优化:</strong>构建"传统、创新、高端定制"三层产品体系</li>
524
+ <li><strong>品牌营销创新:</strong>整合线上线下渠道,打造沉浸式品牌体验</li>
525
+ <li><strong>国际化布局:</strong>规划海外市场拓展路径,建立品牌国际影响力</li>
526
+ </ul>
527
+ <div class="progress-section">
528
+ <span>完成进度:75%</span>
529
+ <div class="progress-bar">
530
+ <div class="progress-fill" style="width: 75%"></div>
531
+ </div>
532
+ </div>
533
+ </div>
534
+ </div>
535
+
536
+ <div class="strategy-card">
537
+ <div class="strategy-header" style="background: var(--accent-color);">技术创新驱动</div>
538
+ <div class="strategy-content">
539
+ <ul>
540
+ <li><strong>智能制造升级:</strong>导入AI控制系统,实现精准化生产</li>
541
+ <li><strong>工艺创新:</strong>开发专利发酵技术,提升产品品质</li>
542
+ <li><strong>产品研发:</strong>针对年轻消费群开发低度数系列产品</li>
543
+ <li><strong>质量管理:</strong>建立全链路质量追溯体系</li>
544
+ </ul>
545
+ <div class="progress-section">
546
+ <span>完成进度:60%</span>
547
+ <div class="progress-bar">
548
+ <div class="progress-fill" style="width: 60%"></div>
549
+ </div>
550
+ </div>
551
+ </div>
552
+ </div>
553
+
554
+ <div class="strategy-card">
555
+ <div class="strategy-header" style="background: var(--secondary-color);">市场拓展战略</div>
556
+ <div class="strategy-content">
557
+ <ul>
558
+ <li><strong>渠道创新:</strong>构建新零售模式,打通线上线下渠道</li>
559
+ <li><strong>区域布局:</strong>重点布局一二线城市,渗透下沉市场</li>
560
+ <li><strong>场景营销:</strong>开发多元化消费场景,提升品牌渗透率</li>
561
+ <li><strong>客户运营:</strong>建立会员体系,提升客户留存率</li>
562
+ </ul>
563
+ <div class="progress-section">
564
+ <span>完成进度:85%</span>
565
+ <div class="progress-bar">
566
+ <div class="progress-fill" style="width: 85%"></div>
567
+ </div>
568
+ </div>
569
+ </div>
570
+ </div>
571
+ </div>
572
+ </div>
573
+
574
+ <!-- Implementation Tab -->
575
+ <div id="implementation" class="tab-content">
576
+ <div class="implementation-timeline">
577
+ <h3>战略实施时间轴</h3>
578
+ <div class="timeline-item">
579
+ <div>
580
+ <h4>第一阶段:基础建设期(2024 Q1-Q2)</h4>
581
+ <p>• 完成品牌战略规划<br>
582
+ • 启动智能制造升级项目<br>
583
+ • 建立新零售渠道体系</p>
584
+ </div>
585
+ </div>
586
+ <div class="timeline-item">
587
+ <div>
588
+ <h4>第二阶段:创新发展期(2024 Q3-Q4)</h4>
589
+ <p>• 推出创新产品系列<br>
590
+ • 完成智能制造系统部署<br>
591
+ • 建立会员运营体系</p>
592
+ </div>
593
+ </div>
594
+ <div class="timeline-item">
595
+ <div>
596
+ <h4>第三阶段:市场拓展期(2025 Q1-Q2)</h4>
597
+ <p>• 拓展国际市场<br>
598
+ • 深化区域市场渗透<br>
599
+ • 完善全渠道布局</p>
600
+ </div>
601
+ </div>
602
+ </div>
603
+
604
+ <div class="card">
605
+ <h3>战略实施进度概览</h3>
606
+ <div id="implementationProgress" class="chart"></div>
607
+ </div>
608
+ </div>
609
+ <!-- Metrics Tab -->
610
+ <div id="metrics" class="tab-content">
611
+ <div class="metrics-grid">
612
+ <div class="metric-card">
613
+ <h4>品牌价值提升</h4>
614
+ <div class="metric-value">35%</div>
615
+ <p>同比增长</p>
616
+ </div>
617
+ <div class="metric-card">
618
+ <h4>新品销售占比</h4>
619
+ <div class="metric-value">25%</div>
620
+ <p>总销售额</p>
621
+ </div>
622
+ <div class="metric-card">
623
+ <h4>渠道覆盖率</h4>
624
+ <div class="metric-value">85%</div>
625
+ <p>目标市场</p>
626
+ </div>
627
+ <div class="metric-card">
628
+ <h4>客户满意度</h4>
629
+ <div class="metric-value">92%</div>
630
+ <p>评分</p>
631
+ </div>
632
+ </div>
633
+
634
+ <div class="card">
635
+ <h3>预期成果分析</h3>
636
+ <div id="expectedResults" class="chart"></div>
637
+ </div>
638
+ </div>
639
+
640
+ <!-- Investment Tab -->
641
+ <div id="investment" class="tab-content">
642
+ <div class="card">
643
+ <h3>投资回报分析</h3>
644
+ <table class="analysis-table">
645
+ <thead>
646
+ <tr>
647
+ <th>投资项目</th>
648
+ <th>预计投资(万元)</th>
649
+ <th>预期回报率</th>
650
+ <th>回收期</th>
651
+ <th>风险等级</th>
652
+ </tr>
653
+ </thead>
654
+ <tbody>
655
+ <tr>
656
+ <td>智能化改造</td>
657
+ <td>5,000</td>
658
+ <td>25%</td>
659
+ <td>3年</td>
660
+ <td>中等</td>
661
+ </tr>
662
+ <tr>
663
+ <td>品牌建设</td>
664
+ <td>3,000</td>
665
+ <td>35%</td>
666
+ <td>2年</td>
667
+ <td>低</td>
668
+ </tr>
669
+ <tr>
670
+ <td>渠道扩展</td>
671
+ <td>2,500</td>
672
+ <td>40%</td>
673
+ <td>1.5年</td>
674
+ <td>低</td>
675
+ </tr>
676
+ <tr>
677
+ <td>研发创新</td>
678
+ <td>3,500</td>
679
+ <td>30%</td>
680
+ <td>2.5年</td>
681
+ <td>中等</td>
682
+ </tr>
683
+ </tbody>
684
+ </table>
685
+ </div>
686
+
687
+ <div class="card">
688
+ <h3>投资收益预测</h3>
689
+ <div id="investmentReturn" class="chart"></div>
690
+ </div>
691
+ </div>
692
+ </div>
693
+ </div>
694
+
695
+ <script>
696
+ // 检查echarts是否正确加载
697
+ function checkEchartsLoad() {
698
+ if (typeof echarts === 'undefined') {
699
+ console.error('ECharts 未能正确加载');
700
+ return false;
701
+ }
702
+ return true;
703
+ }
704
+
705
+ // 全局变量存储图表实例
706
+ let charts = {};
707
+
708
+ // 获取CSS变量
709
+ const style = getComputedStyle(document.documentElement);
710
+ const primaryColor = style.getPropertyValue('--primary-color').trim();
711
+ const secondaryColor = style.getPropertyValue('--secondary-color').trim();
712
+ const accentColor = style.getPropertyValue('--accent-color').trim();
713
+
714
+ // 初始化所有图表
715
+ function initCharts() {
716
+ if (!checkEchartsLoad()) return;
717
+
718
+ try {
719
+ // 市场份额饼图
720
+ initMarketShareChart();
721
+
722
+ // 销售趋势折线图
723
+ initSalesTrendChart();
724
+
725
+ // 预期成果雷达图
726
+ initExpectedResultsChart();
727
+
728
+ // 投资收益预测图
729
+ initInvestmentReturnChart();
730
+
731
+ // 实施进度概览图
732
+ initImplementationProgressChart();
733
+ } catch (error) {
734
+ console.error('图表初始化失败:', error);
735
+ }
736
+ }
737
+
738
+ // 初始化市场份额图表
739
+ function initMarketShareChart() {
740
+ const chartDom = document.getElementById('marketShare');
741
+ if (!chartDom) {
742
+ console.error('找不到市场份额图表容器');
743
+ return;
744
+ }
745
+
746
+ charts.marketShare = echarts.init(chartDom);
747
+ charts.marketShare.setOption({
748
+ title: {
749
+ text: '市场份额分析',
750
+ left: 'center',
751
+ top: '20px' // 调整标题位置
752
+ },
753
+ tooltip: {
754
+ trigger: 'item',
755
+ formatter: '{b}: {c}%'
756
+ },
757
+ legend: {
758
+ orient: 'vertical',
759
+ left: '20px', // 调整图例位置
760
+ top: 'center' // 图例垂直居中
761
+ },
762
+ series: [{
763
+ type: 'pie',
764
+ radius: ['40%', '70%'], // 调整饼图大小,使用环形图
765
+ center: ['60%', '50%'], // 调整饼图位置,向右偏移
766
+ avoidLabelOverlap: true,
767
+ itemStyle: {
768
+ borderRadius: 10, // 添加圆角
769
+ borderColor: '#fff', // 添加白色边框
770
+ borderWidth: 2
771
+ },
772
+ label: {
773
+ show: true,
774
+ formatter: '{b}: {c}%' // 显示名称和百分比
775
+ },
776
+ data: [
777
+ {value: 35, name: '传统黄酒'},
778
+ {value: 25, name: '创新产品'},
779
+ {value: 20, name: '高端定制'},
780
+ {value: 20, name: '其他'}
781
+ ],
782
+ emphasis: {
783
+ itemStyle: {
784
+ shadowBlur: 10,
785
+ shadowOffsetX: 0,
786
+ shadowColor: 'rgba(0, 0, 0, 0.5)'
787
+ }
788
+ }
789
+ }]
790
+ });
791
+ }
792
+
793
+ // 初始化销售趋势图表
794
+ function initSalesTrendChart() {
795
+ const chartDom = document.getElementById('salesTrend');
796
+ if (!chartDom) {
797
+ console.error('找不到销售趋势图表容器');
798
+ return;
799
+ }
800
+
801
+ charts.salesTrend = echarts.init(chartDom);
802
+ charts.salesTrend.setOption({
803
+ title: {
804
+ text: '销售增长趋势',
805
+ left: 'center'
806
+ },
807
+ tooltip: {
808
+ trigger: 'axis'
809
+ },
810
+ xAxis: {
811
+ type: 'category',
812
+ data: ['2019', '2020', '2021', '2022', '2023']
813
+ },
814
+ yAxis: {
815
+ type: 'value',
816
+ name: '销售额(亿元)'
817
+ },
818
+ series: [{
819
+ name: '销售额',
820
+ type: 'line',
821
+ smooth: true,
822
+ data: [15, 18, 22, 27, 32],
823
+ lineStyle: {
824
+ color: accentColor
825
+ },
826
+ itemStyle: {
827
+ color: accentColor
828
+ }
829
+ }]
830
+ });
831
+ }
832
+
833
+ // 初始化预期成果图表
834
+ function initExpectedResultsChart() {
835
+ const chartDom = document.getElementById('expectedResults');
836
+ if (!chartDom) {
837
+ console.error('找不到预期成果图表容器');
838
+ return;
839
+ }
840
+
841
+ charts.expectedResults = echarts.init(chartDom);
842
+ charts.expectedResults.setOption({
843
+ title: {
844
+ text: '战略实施预期成���'
845
+ },
846
+ radar: {
847
+ indicator: [
848
+ { name: '品牌价值', max: 100 },
849
+ { name: '市场份额', max: 100 },
850
+ { name: '创新能力', max: 100 },
851
+ { name: '客户满意度', max: 100 },
852
+ { name: '营收增长', max: 100 },
853
+ { name: '渠道效率', max: 100 }
854
+ ],
855
+ radius: '65%'
856
+ },
857
+ series: [{
858
+ type: 'radar',
859
+ data: [
860
+ {
861
+ value: [90, 85, 75, 92, 88, 82],
862
+ name: '目标值',
863
+ areaStyle: {
864
+ color: 'rgba(76, 175, 80, 0.3)'
865
+ },
866
+ lineStyle: {
867
+ color: secondaryColor
868
+ }
869
+ },
870
+ {
871
+ value: [70, 65, 55, 75, 68, 60],
872
+ name: '当前值',
873
+ areaStyle: {
874
+ color: 'rgba(25, 118, 210, 0.3)'
875
+ },
876
+ lineStyle: {
877
+ color: primaryColor
878
+ }
879
+ }
880
+ ]
881
+ }]
882
+ });
883
+ }
884
+
885
+ // 初始化投资收益预测图表
886
+ function initInvestmentReturnChart() {
887
+ const chartDom = document.getElementById('investmentReturn');
888
+ if (!chartDom) {
889
+ console.error('找不到投资收益预测图表容器');
890
+ return;
891
+ }
892
+
893
+ charts.investmentReturn = echarts.init(chartDom);
894
+ charts.investmentReturn.setOption({
895
+ title: {
896
+ text: '投资收益预测'
897
+ },
898
+ tooltip: {
899
+ trigger: 'axis',
900
+ formatter: function(params) {
901
+ let result = params[0].axisValue + '<br/>';
902
+ params.forEach(param => {
903
+ result += param.seriesName + ': ' + param.value + '万元<br/>';
904
+ });
905
+ return result;
906
+ }
907
+ },
908
+ legend: {
909
+ data: ['投资额', '预期收益']
910
+ },
911
+ xAxis: {
912
+ type: 'category',
913
+ data: ['2024', '2025', '2026', '2027', '2028']
914
+ },
915
+ yAxis: {
916
+ type: 'value',
917
+ name: '金额(万元)'
918
+ },
919
+ series: [
920
+ {
921
+ name: '投资额',
922
+ type: 'bar',
923
+ data: [14000, 8000, 6000, 4000, 3000]
924
+ },
925
+ {
926
+ name: '预期收益',
927
+ type: 'line',
928
+ data: [3500, 7000, 12000, 18000, 25000],
929
+ lineStyle: {
930
+ color: secondaryColor
931
+ },
932
+ itemStyle: {
933
+ color: secondaryColor
934
+ }
935
+ }
936
+ ]
937
+ });
938
+ }
939
+
940
+ // 初始化实施进度概览图表
941
+ function initImplementationProgressChart() {
942
+ const chartDom = document.getElementById('implementationProgress');
943
+ if (!chartDom) {
944
+ console.error('找不到实施进度概览图表容器');
945
+ return;
946
+ }
947
+
948
+ charts.implementationProgress = echarts.init(chartDom);
949
+ charts.implementationProgress.setOption({
950
+ title: {
951
+ text: '战略实施进度概览'
952
+ },
953
+ tooltip: {
954
+ trigger: 'axis'
955
+ },
956
+ radar: {
957
+ indicator: [
958
+ { name: '品牌升级', max: 100 },
959
+ { name: '智能制造', max: 100 },
960
+ { name: '渠道建设', max: 100 },
961
+ { name: '产品创新', max: 100 },
962
+ { name: '市场拓展', max: 100 },
963
+ { name: '人才建设', max: 100 }
964
+ ]
965
+ },
966
+ series: [{
967
+ type: 'radar',
968
+ data: [
969
+ {
970
+ value: [75, 60, 85, 70, 80, 65],
971
+ name: '完成进度',
972
+ areaStyle: {
973
+ color: 'rgba(25, 118, 210, 0.4)'
974
+ }
975
+ }
976
+ ]
977
+ }]
978
+ });
979
+ }
980
+
981
+ // 更新基本信息内容
982
+ function updateContent(field) {
983
+ const value = document.getElementById(`report-${field}`).value;
984
+ switch(field) {
985
+ case 'title':
986
+ document.getElementById('main-title').textContent = value;
987
+ break;
988
+ case 'subtitle':
989
+ document.getElementById('main-subtitle').textContent = value;
990
+ break;
991
+ }
992
+ }
993
+
994
+ // 更新市场份额数据
995
+ function updateMarketShare() {
996
+ const traditional = parseFloat(document.getElementById('traditional-share').value) || 0;
997
+ const innovation = parseFloat(document.getElementById('innovation-share').value) || 0;
998
+ const premium = parseFloat(document.getElementById('premium-share').value) || 0;
999
+ const other = parseFloat(document.getElementById('other-share').value) || 0;
1000
+
1001
+ if (isNaN(traditional) || isNaN(innovation) || isNaN(premium) || isNaN(other)) {
1002
+ alert('请输入有效数字');
1003
+ return;
1004
+ }
1005
+
1006
+ const total = traditional + innovation + premium + other;
1007
+ if (total !== 100) {
1008
+ alert('所有份额之和必须等于100%');
1009
+ return;
1010
+ }
1011
+
1012
+ const newData = [
1013
+ {value: traditional, name: '传统黄酒'},
1014
+ {value: innovation, name: '创新产品'},
1015
+ {value: premium, name: '高端定制'},
1016
+ {value: other, name: '其他'}
1017
+ ];
1018
+
1019
+ charts.marketShare.setOption({
1020
+ series: [{
1021
+ data: newData
1022
+ }]
1023
+ });
1024
+ }
1025
+
1026
+ // 更新销售趋势数据
1027
+ function updateSalesTrend() {
1028
+ const salesData = Array.from(document.querySelectorAll('#sales-data-container input'))
1029
+ .map(input => parseFloat(input.value) || 0);
1030
+
1031
+ if (salesData.some(isNaN)) {
1032
+ alert('请输入有效的销售数据');
1033
+ return;
1034
+ }
1035
+
1036
+ charts.salesTrend.setOption({
1037
+ series: [{
1038
+ data: salesData
1039
+ }]
1040
+ });
1041
+ }
1042
+
1043
+ // 更新关键指标数据
1044
+ function updateMetrics() {
1045
+ const brandValue = parseFloat(document.getElementById('brand-value-target').value) || 0;
1046
+ const newProduct = parseFloat(document.getElementById('new-product-target').value) || 0;
1047
+ const channelCoverage = parseFloat(document.getElementById('channel-coverage-target').value) || 0;
1048
+ const customerSatisfaction = parseFloat(document.getElementById('customer-satisfaction-target').value) || 0;
1049
+
1050
+ if ([brandValue, newProduct, channelCoverage, customerSatisfaction].some(isNaN)) {
1051
+ alert('请输入有效的指标数据');
1052
+ return;
1053
+ }
1054
+
1055
+ // 更新指标卡片
1056
+ document.querySelectorAll('.metric-value')[0].textContent = brandValue + '%';
1057
+ document.querySelectorAll('.metric-value')[1].textContent = newProduct + '%';
1058
+ document.querySelectorAll('.metric-value')[2].textContent = channelCoverage + '%';
1059
+ document.querySelectorAll('.metric-value')[3].textContent = customerSatisfaction + '%';
1060
+
1061
+ // 更新雷达图
1062
+ charts.expectedResults.setOption({
1063
+ series: [{
1064
+ data: [
1065
+ {
1066
+ value: [brandValue, newProduct, channelCoverage, customerSatisfaction, 88, 82],
1067
+ name: '目标值'
1068
+ },
1069
+ {
1070
+ value: [70, 65, 55, 75, 68, 60],
1071
+ name: '当前值'
1072
+ }
1073
+ ]
1074
+ }]
1075
+ });
1076
+ }
1077
+
1078
+ // 更新投资数据
1079
+ function updateInvestment() {
1080
+ const smartInvestment = parseFloat(document.getElementById('smart-investment').value) || 0;
1081
+ const brandInvestment = parseFloat(document.getElementById('brand-investment').value) || 0;
1082
+ const channelInvestment = parseFloat(document.getElementById('channel-investment').value) || 0;
1083
+ const rdInvestment = parseFloat(document.getElementById('rd-investment').value) || 0;
1084
+
1085
+ if ([smartInvestment, brandInvestment, channelInvestment, rdInvestment].some(isNaN)) {
1086
+ alert('请输入有效的投资金额');
1087
+ return;
1088
+ }
1089
+
1090
+ // 更新投资表格
1091
+ const table = document.querySelector('.analysis-table');
1092
+ table.rows[1].cells[1].textContent = smartInvestment.toLocaleString();
1093
+ table.rows[2].cells[1].textContent = brandInvestment.toLocaleString();
1094
+ table.rows[3].cells[1].textContent = channelInvestment.toLocaleString();
1095
+ table.rows[4].cells[1].textContent = rdInvestment.toLocaleString();
1096
+
1097
+ // 更新投资收益预测图
1098
+ const totalInvestment = smartInvestment + brandInvestment + channelInvestment + rdInvestment;
1099
+ charts.investmentReturn.setOption({
1100
+ series: [
1101
+ {
1102
+ name: '投资额',
1103
+ data: [totalInvestment, totalInvestment * 0.6, totalInvestment * 0.4, totalInvestment * 0.3, totalInvestment * 0.2]
1104
+ },
1105
+ {
1106
+ name: '预期收益',
1107
+ data: [totalInvestment * 0.25, totalInvestment * 0.5, totalInvestment * 0.8, totalInvestment * 1.2, totalInvestment * 1.6]
1108
+ }
1109
+ ]
1110
+ });
1111
+ }
1112
+
1113
+ // Tab切换功能
1114
+ function showTab(tabId) {
1115
+ // 隐藏所有标签内容
1116
+ document.querySelectorAll('.tab-content').forEach(content => {
1117
+ content.classList.remove('active');
1118
+ });
1119
+
1120
+ // 取消所有按钮的激活状态
1121
+ document.querySelectorAll('.tab-button').forEach(button => {
1122
+ button.classList.remove('active');
1123
+ });
1124
+
1125
+ // 显示选中的标签内容
1126
+ document.getElementById(tabId).classList.add('active');
1127
+
1128
+ // 激活对应的按钮
1129
+ event.target.classList.add('active');
1130
+
1131
+ // 触发图表重绘
1132
+ if (charts[tabId]) {
1133
+ charts[tabId].resize();
1134
+ } else {
1135
+ // 如果当前标签页包含图表,重绘所有图表
1136
+ Object.values(charts).forEach(chart => {
1137
+ if (document.getElementById(tabId).contains(chart.getDom())) {
1138
+ chart.resize();
1139
+ }
1140
+ });
1141
+ }
1142
+ }
1143
+
1144
+ // 侧边栏切换功能
1145
+ function toggleSidebar() {
1146
+ const sidebar = document.getElementById('sidebar');
1147
+ const container = document.getElementById('main-container');
1148
+ sidebar.classList.toggle('active');
1149
+ container.classList.toggle('sidebar-active');
1150
+
1151
+ // 使用延时确保过渡动画完成后再重绘图表
1152
+ setTimeout(() => {
1153
+ Object.values(charts).forEach(chart => {
1154
+ chart && chart.resize();
1155
+ });
1156
+ }, 300);
1157
+ }
1158
+
1159
+ // 添加图表响应式调整
1160
+ let resizeTimer;
1161
+ window.addEventListener('resize', function() {
1162
+ if (resizeTimer) {
1163
+ clearTimeout(resizeTimer);
1164
+ }
1165
+ resizeTimer = setTimeout(function() {
1166
+ Object.values(charts).forEach(chart => {
1167
+ chart && chart.resize();
1168
+ });
1169
+ }, 100);
1170
+ });
1171
+
1172
+ // 页面卸载时清理图表实例
1173
+ window.addEventListener('beforeunload', function() {
1174
+ Object.values(charts).forEach(chart => {
1175
+ chart && chart.dispose();
1176
+ });
1177
+ });
1178
+
1179
+ // 页面加载完成后初始化
1180
+ document.addEventListener('DOMContentLoaded', function() {
1181
+ // 确保DOM完全渲染后再初始化图表
1182
+ setTimeout(() => {
1183
+ initCharts();
1184
+
1185
+ // 添加表格数据编辑功能
1186
+ document.querySelectorAll('.analysis-table td:not(:first-child)').forEach(cell => {
1187
+ cell.addEventListener('dblclick', function() {
1188
+ const currentValue = this.textContent;
1189
+ const input = document.createElement('input');
1190
+ input.value = currentValue;
1191
+ input.style.width = '100%';
1192
+ input.style.border = 'none';
1193
+ input.style.textAlign = 'center';
1194
+
1195
+ input.onblur = function() {
1196
+ cell.textContent = this.value;
1197
+ updateInvestment();
1198
+ };
1199
+
1200
+ input.onkeypress = function(e) {
1201
+ if (e.key === 'Enter') {
1202
+ this.blur();
1203
+ }
1204
+ };
1205
+
1206
+ cell.textContent = '';
1207
+ cell.appendChild(input);
1208
+ input.focus();
1209
+ });
1210
+ });
1211
+ }, 0);
1212
+ });
1213
+ </script>
1214
+ </body>
1215
+ </html>