mistpe commited on
Commit
c293305
·
verified ·
1 Parent(s): 600ab57

Create index.html

Browse files
Files changed (1) hide show
  1. index.html +1202 -0
index.html ADDED
@@ -0,0 +1,1202 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
+ },
752
+ tooltip: {
753
+ trigger: 'item',
754
+ formatter: '{b}: {c}%'
755
+ },
756
+ legend: {
757
+ orient: 'vertical',
758
+ left: 'left'
759
+ },
760
+ series: [{
761
+ type: 'pie',
762
+ radius: '50%',
763
+ data: [
764
+ {value: 35, name: '传统黄酒'},
765
+ {value: 25, name: '创新产品'},
766
+ {value: 20, name: '高端定制'},
767
+ {value: 20, name: '其他'}
768
+ ],
769
+ emphasis: {
770
+ itemStyle: {
771
+ shadowBlur: 10,
772
+ shadowOffsetX: 0,
773
+ shadowColor: 'rgba(0, 0, 0, 0.5)'
774
+ }
775
+ }
776
+ }]
777
+ });
778
+ }
779
+
780
+ // 初始化销售趋势图表
781
+ function initSalesTrendChart() {
782
+ const chartDom = document.getElementById('salesTrend');
783
+ if (!chartDom) {
784
+ console.error('找不到销售趋势图表容器');
785
+ return;
786
+ }
787
+
788
+ charts.salesTrend = echarts.init(chartDom);
789
+ charts.salesTrend.setOption({
790
+ title: {
791
+ text: '销售增长趋势',
792
+ left: 'center'
793
+ },
794
+ tooltip: {
795
+ trigger: 'axis'
796
+ },
797
+ xAxis: {
798
+ type: 'category',
799
+ data: ['2019', '2020', '2021', '2022', '2023']
800
+ },
801
+ yAxis: {
802
+ type: 'value',
803
+ name: '销售额(亿元)'
804
+ },
805
+ series: [{
806
+ name: '销售额',
807
+ type: 'line',
808
+ smooth: true,
809
+ data: [15, 18, 22, 27, 32],
810
+ lineStyle: {
811
+ color: accentColor
812
+ },
813
+ itemStyle: {
814
+ color: accentColor
815
+ }
816
+ }]
817
+ });
818
+ }
819
+
820
+ // 初始化预期成果图表
821
+ function initExpectedResultsChart() {
822
+ const chartDom = document.getElementById('expectedResults');
823
+ if (!chartDom) {
824
+ console.error('找不到预期成果图表容器');
825
+ return;
826
+ }
827
+
828
+ charts.expectedResults = echarts.init(chartDom);
829
+ charts.expectedResults.setOption({
830
+ title: {
831
+ text: '战略实施预期成果'
832
+ },
833
+ radar: {
834
+ indicator: [
835
+ { name: '品牌价值', max: 100 },
836
+ { name: '市场份额', max: 100 },
837
+ { name: '创新能力', max: 100 },
838
+ { name: '客户满意度', max: 100 },
839
+ { name: '营收增长', max: 100 },
840
+ { name: '渠道效率', max: 100 }
841
+ ],
842
+ radius: '65%'
843
+ },
844
+ series: [{
845
+ type: 'radar',
846
+ data: [
847
+ {
848
+ value: [90, 85, 75, 92, 88, 82],
849
+ name: '目标值',
850
+ areaStyle: {
851
+ color: 'rgba(76, 175, 80, 0.3)'
852
+ },
853
+ lineStyle: {
854
+ color: secondaryColor
855
+ }
856
+ },
857
+ {
858
+ value: [70, 65, 55, 75, 68, 60],
859
+ name: '当前值',
860
+ areaStyle: {
861
+ color: 'rgba(25, 118, 210, 0.3)'
862
+ },
863
+ lineStyle: {
864
+ color: primaryColor
865
+ }
866
+ }
867
+ ]
868
+ }]
869
+ });
870
+ }
871
+
872
+ // 初始化投资收益预测图表
873
+ function initInvestmentReturnChart() {
874
+ const chartDom = document.getElementById('investmentReturn');
875
+ if (!chartDom) {
876
+ console.error('找不到投资收益预测图表容器');
877
+ return;
878
+ }
879
+
880
+ charts.investmentReturn = echarts.init(chartDom);
881
+ charts.investmentReturn.setOption({
882
+ title: {
883
+ text: '投资收益预测'
884
+ },
885
+ tooltip: {
886
+ trigger: 'axis',
887
+ formatter: function(params) {
888
+ let result = params[0].axisValue + '<br/>';
889
+ params.forEach(param => {
890
+ result += param.seriesName + ': ' + param.value + '万元<br/>';
891
+ });
892
+ return result;
893
+ }
894
+ },
895
+ legend: {
896
+ data: ['投资额', '预期收益']
897
+ },
898
+ xAxis: {
899
+ type: 'category',
900
+ data: ['2024', '2025', '2026', '2027', '2028']
901
+ },
902
+ yAxis: {
903
+ type: 'value',
904
+ name: '金额(万元)'
905
+ },
906
+ series: [
907
+ {
908
+ name: '投资额',
909
+ type: 'bar',
910
+ data: [14000, 8000, 6000, 4000, 3000]
911
+ },
912
+ {
913
+ name: '预期收益',
914
+ type: 'line',
915
+ data: [3500, 7000, 12000, 18000, 25000],
916
+ lineStyle: {
917
+ color: secondaryColor
918
+ },
919
+ itemStyle: {
920
+ color: secondaryColor
921
+ }
922
+ }
923
+ ]
924
+ });
925
+ }
926
+
927
+ // 初始化实施进度概览图表
928
+ function initImplementationProgressChart() {
929
+ const chartDom = document.getElementById('implementationProgress');
930
+ if (!chartDom) {
931
+ console.error('找不到实施进度概览图表容器');
932
+ return;
933
+ }
934
+
935
+ charts.implementationProgress = echarts.init(chartDom);
936
+ charts.implementationProgress.setOption({
937
+ title: {
938
+ text: '战略实施进度概览'
939
+ },
940
+ tooltip: {
941
+ trigger: 'axis'
942
+ },
943
+ radar: {
944
+ indicator: [
945
+ { name: '品牌升级', max: 100 },
946
+ { name: '智能制造', max: 100 },
947
+ { name: '渠道建设', max: 100 },
948
+ { name: '产品创新', max: 100 },
949
+ { name: '市场拓展', max: 100 },
950
+ { name: '人才建设', max: 100 }
951
+ ]
952
+ },
953
+ series: [{
954
+ type: 'radar',
955
+ data: [
956
+ {
957
+ value: [75, 60, 85, 70, 80, 65],
958
+ name: '完成进度',
959
+ areaStyle: {
960
+ color: 'rgba(25, 118, 210, 0.4)'
961
+ }
962
+ }
963
+ ]
964
+ }]
965
+ });
966
+ }
967
+
968
+ // 更新基本信息内容
969
+ function updateContent(field) {
970
+ const value = document.getElementById(`report-${field}`).value;
971
+ switch(field) {
972
+ case 'title':
973
+ document.getElementById('main-title').textContent = value;
974
+ break;
975
+ case 'subtitle':
976
+ document.getElementById('main-subtitle').textContent = value;
977
+ break;
978
+ }
979
+ }
980
+
981
+ // 更新市场份额数据
982
+ function updateMarketShare() {
983
+ const traditional = parseFloat(document.getElementById('traditional-share').value) || 0;
984
+ const innovation = parseFloat(document.getElementById('innovation-share').value) || 0;
985
+ const premium = parseFloat(document.getElementById('premium-share').value) || 0;
986
+ const other = parseFloat(document.getElementById('other-share').value) || 0;
987
+
988
+ if (isNaN(traditional) || isNaN(innovation) || isNaN(premium) || isNaN(other)) {
989
+ alert('请输入有效数字');
990
+ return;
991
+ }
992
+
993
+ const total = traditional + innovation + premium + other;
994
+ if (total !== 100) {
995
+ alert('所有份额之和必须等于100%');
996
+ return;
997
+ }
998
+
999
+ const newData = [
1000
+ {value: traditional, name: '传统黄酒'},
1001
+ {value: innovation, name: '创新产品'},
1002
+ {value: premium, name: '高端定制'},
1003
+ {value: other, name: '其他'}
1004
+ ];
1005
+
1006
+ charts.marketShare.setOption({
1007
+ series: [{
1008
+ data: newData
1009
+ }]
1010
+ });
1011
+ }
1012
+
1013
+ // 更新销售趋势数据
1014
+ function updateSalesTrend() {
1015
+ const salesData = Array.from(document.querySelectorAll('#sales-data-container input'))
1016
+ .map(input => parseFloat(input.value) || 0);
1017
+
1018
+ if (salesData.some(isNaN)) {
1019
+ alert('请输入有效的销售数据');
1020
+ return;
1021
+ }
1022
+
1023
+ charts.salesTrend.setOption({
1024
+ series: [{
1025
+ data: salesData
1026
+ }]
1027
+ });
1028
+ }
1029
+
1030
+ // 更新关键指标数据
1031
+ function updateMetrics() {
1032
+ const brandValue = parseFloat(document.getElementById('brand-value-target').value) || 0;
1033
+ const newProduct = parseFloat(document.getElementById('new-product-target').value) || 0;
1034
+ const channelCoverage = parseFloat(document.getElementById('channel-coverage-target').value) || 0;
1035
+ const customerSatisfaction = parseFloat(document.getElementById('customer-satisfaction-target').value) || 0;
1036
+
1037
+ if ([brandValue, newProduct, channelCoverage, customerSatisfaction].some(isNaN)) {
1038
+ alert('请输入有效的指标数据');
1039
+ return;
1040
+ }
1041
+
1042
+ // 更新指标卡片
1043
+ document.querySelectorAll('.metric-value')[0].textContent = brandValue + '%';
1044
+ document.querySelectorAll('.metric-value')[1].textContent = newProduct + '%';
1045
+ document.querySelectorAll('.metric-value')[2].textContent = channelCoverage + '%';
1046
+ document.querySelectorAll('.metric-value')[3].textContent = customerSatisfaction + '%';
1047
+
1048
+ // 更新雷达图
1049
+ charts.expectedResults.setOption({
1050
+ series: [{
1051
+ data: [
1052
+ {
1053
+ value: [brandValue, newProduct, channelCoverage, customerSatisfaction, 88, 82],
1054
+ name: '目标值'
1055
+ },
1056
+ {
1057
+ value: [70, 65, 55, 75, 68, 60],
1058
+ name: '当前值'
1059
+ }
1060
+ ]
1061
+ }]
1062
+ });
1063
+ }
1064
+
1065
+ // 更新投资数据
1066
+ function updateInvestment() {
1067
+ const smartInvestment = parseFloat(document.getElementById('smart-investment').value) || 0;
1068
+ const brandInvestment = parseFloat(document.getElementById('brand-investment').value) || 0;
1069
+ const channelInvestment = parseFloat(document.getElementById('channel-investment').value) || 0;
1070
+ const rdInvestment = parseFloat(document.getElementById('rd-investment').value) || 0;
1071
+
1072
+ if ([smartInvestment, brandInvestment, channelInvestment, rdInvestment].some(isNaN)) {
1073
+ alert('请输入有效的投资金额');
1074
+ return;
1075
+ }
1076
+
1077
+ // 更新投资表格
1078
+ const table = document.querySelector('.analysis-table');
1079
+ table.rows[1].cells[1].textContent = smartInvestment.toLocaleString();
1080
+ table.rows[2].cells[1].textContent = brandInvestment.toLocaleString();
1081
+ table.rows[3].cells[1].textContent = channelInvestment.toLocaleString();
1082
+ table.rows[4].cells[1].textContent = rdInvestment.toLocaleString();
1083
+
1084
+ // 更新投资收益预测图
1085
+ const totalInvestment = smartInvestment + brandInvestment + channelInvestment + rdInvestment;
1086
+ charts.investmentReturn.setOption({
1087
+ series: [
1088
+ {
1089
+ name: '投资额',
1090
+ data: [totalInvestment, totalInvestment * 0.6, totalInvestment * 0.4, totalInvestment * 0.3, totalInvestment * 0.2]
1091
+ },
1092
+ {
1093
+ name: '预期收益',
1094
+ data: [totalInvestment * 0.25, totalInvestment * 0.5, totalInvestment * 0.8, totalInvestment * 1.2, totalInvestment * 1.6]
1095
+ }
1096
+ ]
1097
+ });
1098
+ }
1099
+
1100
+ // Tab切换功能
1101
+ function showTab(tabId) {
1102
+ // 隐藏所有标签内容
1103
+ document.querySelectorAll('.tab-content').forEach(content => {
1104
+ content.classList.remove('active');
1105
+ });
1106
+
1107
+ // 取消所有按钮的激活状态
1108
+ document.querySelectorAll('.tab-button').forEach(button => {
1109
+ button.classList.remove('active');
1110
+ });
1111
+
1112
+ // 显示选中的标签内容
1113
+ document.getElementById(tabId).classList.add('active');
1114
+
1115
+ // 激活对应的按钮
1116
+ event.target.classList.add('active');
1117
+
1118
+ // 触发图表重绘
1119
+ if (charts[tabId]) {
1120
+ charts[tabId].resize();
1121
+ } else {
1122
+ // 如果当前标签页包含图表,重绘所有图表
1123
+ Object.values(charts).forEach(chart => {
1124
+ if (document.getElementById(tabId).contains(chart.getDom())) {
1125
+ chart.resize();
1126
+ }
1127
+ });
1128
+ }
1129
+ }
1130
+
1131
+ // 侧边栏切换功能
1132
+ function toggleSidebar() {
1133
+ const sidebar = document.getElementById('sidebar');
1134
+ const container = document.getElementById('main-container');
1135
+ sidebar.classList.toggle('active');
1136
+ container.classList.toggle('sidebar-active');
1137
+
1138
+ // 使用延时确保过渡动画完成后再重绘图表
1139
+ setTimeout(() => {
1140
+ Object.values(charts).forEach(chart => {
1141
+ chart && chart.resize();
1142
+ });
1143
+ }, 300);
1144
+ }
1145
+
1146
+ // 添加图表响应式调整
1147
+ let resizeTimer;
1148
+ window.addEventListener('resize', function() {
1149
+ if (resizeTimer) {
1150
+ clearTimeout(resizeTimer);
1151
+ }
1152
+ resizeTimer = setTimeout(function() {
1153
+ Object.values(charts).forEach(chart => {
1154
+ chart && chart.resize();
1155
+ });
1156
+ }, 100);
1157
+ });
1158
+
1159
+ // 页面卸载时清理图表实例
1160
+ window.addEventListener('beforeunload', function() {
1161
+ Object.values(charts).forEach(chart => {
1162
+ chart && chart.dispose();
1163
+ });
1164
+ });
1165
+
1166
+ // 页面加载完成后初始化
1167
+ document.addEventListener('DOMContentLoaded', function() {
1168
+ // 确保DOM完全渲染后再初始化图表
1169
+ setTimeout(() => {
1170
+ initCharts();
1171
+
1172
+ // 添加表格数据编辑功能
1173
+ document.querySelectorAll('.analysis-table td:not(:first-child)').forEach(cell => {
1174
+ cell.addEventListener('dblclick', function() {
1175
+ const currentValue = this.textContent;
1176
+ const input = document.createElement('input');
1177
+ input.value = currentValue;
1178
+ input.style.width = '100%';
1179
+ input.style.border = 'none';
1180
+ input.style.textAlign = 'center';
1181
+
1182
+ input.onblur = function() {
1183
+ cell.textContent = this.value;
1184
+ updateInvestment();
1185
+ };
1186
+
1187
+ input.onkeypress = function(e) {
1188
+ if (e.key === 'Enter') {
1189
+ this.blur();
1190
+ }
1191
+ };
1192
+
1193
+ cell.textContent = '';
1194
+ cell.appendChild(input);
1195
+ input.focus();
1196
+ });
1197
+ });
1198
+ }, 0);
1199
+ });
1200
+ </script>
1201
+ </body>
1202
+ </html>