Parcourir la source

Merge branch 'master' of http://git.fmode.cn:3000/19870581353/travel-flatform

0235474 il y a 4 jours
Parent
commit
ba888090bd

+ 0 - 1
travel-platform-web/travel-web/src/app/page-crm-member/page-crm-member.html

@@ -1 +0,0 @@
-<p>page-crm-member works!</p>

+ 0 - 0
travel-platform-web/travel-web/src/app/page-crm-member/page-crm-member.scss


+ 0 - 23
travel-platform-web/travel-web/src/app/page-crm-member/page-crm-member.spec.ts

@@ -1,23 +0,0 @@
-import { ComponentFixture, TestBed } from '@angular/core/testing';
-
-import { PageCrmMember } from './page-crm-member';
-
-describe('PageCrmMember', () => {
-  let component: PageCrmMember;
-  let fixture: ComponentFixture<PageCrmMember>;
-
-  beforeEach(async () => {
-    await TestBed.configureTestingModule({
-      imports: [PageCrmMember]
-    })
-    .compileComponents();
-
-    fixture = TestBed.createComponent(PageCrmMember);
-    component = fixture.componentInstance;
-    fixture.detectChanges();
-  });
-
-  it('should create', () => {
-    expect(component).toBeTruthy();
-  });
-});

+ 0 - 11
travel-platform-web/travel-web/src/app/page-crm-member/page-crm-member.ts

@@ -1,11 +0,0 @@
-import { Component } from '@angular/core';
-
-@Component({
-  selector: 'app-page-crm-member',
-  imports: [],
-  templateUrl: './page-crm-member.html',
-  styleUrl: './page-crm-member.scss'
-})
-export class PageCrmMember {
-
-}

+ 1 - 1
travel-platform-web/travel-web/src/crm/mobile/nav-mobile-menu/nav-mobile-menu.scss

@@ -126,7 +126,7 @@
 
 /* 内容区域样式 */
 .web-content {
-  max-width: 1200px;
+  max-width: 1600px;
   margin: 20px auto;
   padding: 0 5%;
 }

+ 307 - 1
travel-platform-web/travel-web/src/crm/mobile/page-crm-system/page-crm-system.html

@@ -1 +1,307 @@
-<p>page-crm-system works!支撑系统</p>
+<!-- Banner区域 -->
+<section class="support-banner">
+    <div class="banner-content">
+        <h1 class="banner-title">数智支撑系统</h1>
+        <p class="banner-subtitle">为江西文旅数字化提供坚实技术底座,融合前沿技术构建安全、智能、高效的文旅数字基础设施</p>
+    </div>
+</section>
+
+<!-- 智能中台 -->
+<section class="section" id="intelligence">
+    <h2 class="section-title">智能中台</h2>
+    <div class="module-container">
+        <div class="module-card">
+            <div class="module-header">
+                <div class="module-icon">🧠</div>
+                <h3 class="module-title">大模型引擎</h3>
+                <p>文旅专用AI大脑</p>
+            </div>
+            <div class="module-body">
+                <ul class="feature-list">
+                    <li class="feature-item">
+                        <div class="feature-icon">📚</div>
+                        <div>
+                            <div>赣鄱文化知识库</div>
+                            <div class="feature-desc">集成江西历史、非遗等专业知识</div>
+                        </div>
+                    </li>
+                    <li class="feature-item">
+                        <div class="feature-icon">💬</div>
+                        <div>
+                            <div>智能对话系统</div>
+                            <div class="feature-desc">支持多轮自然语言交互</div>
+                        </div>
+                    </li>
+                    <li class="feature-item">
+                        <div class="feature-icon">🎨</div>
+                        <div>
+                            <div>创意生成引擎</div>
+                            <div class="feature-desc">自动生成文旅宣传内容</div>
+                        </div>
+                    </li>
+                </ul>
+            </div>
+        </div>
+        
+        <div class="module-card">
+            <div class="module-header">
+                <div class="module-icon">🕸️</div>
+                <h3 class="module-title">知识图谱管理</h3>
+                <p>文化元素关联网络</p>
+            </div>
+            <div class="module-body">
+                <ul class="feature-list">
+                    <li class="feature-item">
+                        <div class="feature-icon">🔗</div>
+                        <div>
+                            <div>实体关系挖掘</div>
+                            <div class="feature-desc">发现文化元素间隐藏关联</div>
+                        </div>
+                    </li>
+                    <li class="feature-item">
+                        <div class="feature-icon">📊</div>
+                        <div>
+                            <div>可视化分析</div>
+                            <div class="feature-desc">三维展示文化元素网络</div>
+                        </div>
+                    </li>
+                    <li class="feature-item">
+                        <div class="feature-icon">🔄</div>
+                        <div>
+                            <div>动态更新机制</div>
+                            <div class="feature-desc">实时吸收新研究成果</div>
+                        </div>
+                    </li>
+                </ul>
+            </div>
+        </div>
+        
+        <div class="module-card">
+            <div class="module-header">
+                <div class="module-icon">📱</div>
+                <h3 class="module-title">多终端适配</h3>
+                <p>全渠道无缝体验</p>
+            </div>
+            <div class="module-body">
+                <ul class="feature-list">
+                    <li class="feature-item">
+                        <div class="feature-icon">🖥️</div>
+                        <div>
+                            <div>Web端适配</div>
+                            <div class="feature-desc">响应式设计支持各种屏幕尺寸</div>
+                        </div>
+                    </li>
+                    <li class="feature-item">
+                        <div class="feature-icon">📲</div>
+                        <div>
+                            <div>移动端优化</div>
+                            <div class="feature-desc">轻量化设计提升移动体验</div>
+                        </div>
+                    </li>
+                    <li class="feature-item">
+                        <div class="feature-icon">🔄</div>
+                        <div>
+                            <div>多端数据同步</div>
+                            <div class="feature-desc">用户数据实时跨平台同步</div>
+                        </div>
+                    </li>
+                </ul>
+            </div>
+        </div>
+    </div>
+</section>
+
+<!-- 数据治理 -->
+<section class="section" id="data">
+    <h2 class="section-title">数据治理</h2>
+    <div class="module-container">
+        <div class="module-card">
+            <div class="module-header">
+                <div class="module-icon">🧹</div>
+                <h3 class="module-title">AI清洗工具</h3>
+                <p>数据质量保障</p>
+            </div>
+            <div class="module-body">
+                <ul class="feature-list">
+                    <li class="feature-item">
+                        <div class="feature-icon">🔍</div>
+                        <div>
+                            <div>智能纠错</div>
+                            <div class="feature-desc">自动识别并修正数据错误</div>
+                        </div>
+                    </li>
+                    <li class="feature-item">
+                        <div class="feature-icon">🧩</div>
+                        <div>
+                            <div>缺失值填充</div>
+                            <div class="feature-desc">基于上下文智能补全数据</div>
+                        </div>
+                    </li>
+                    <li class="feature-item">
+                        <div class="feature-icon">📈</div>
+                        <div>
+                            <div>质量评估</div>
+                            <div class="feature-desc">生成数据质量评分报告</div>
+                        </div>
+                    </li>
+                </ul>
+            </div>
+        </div>
+        
+        <div class="module-card">
+            <div class="module-header">
+                <div class="module-icon">⛓️</div>
+                <h3 class="module-title">区块链存证</h3>
+                <p>数据不可篡改</p>
+            </div>
+            <div class="module-body">
+                <ul class="feature-list">
+                    <li class="feature-item">
+                        <div class="feature-icon">🔏</div>
+                        <div>
+                            <div>数字指纹</div>
+                            <div class="feature-desc">为每份数据生成唯一哈希</div>
+                        </div>
+                    </li>
+                    <li class="feature-item">
+                        <div class="feature-icon">📅</div>
+                        <div>
+                            <div>时间戳认证</div>
+                            <div class="feature-desc">精确记录数据创建时间</div>
+                        </div>
+                    </li>
+                    <li class="feature-item">
+                        <div class="feature-icon">🔗</div>
+                        <div>
+                            <div>跨链验证</div>
+                            <div class="feature-desc">支持多区块链网络验证</div>
+                        </div>
+                    </li>
+                </ul>
+            </div>
+        </div>
+        
+        <div class="module-card">
+            <div class="module-header" style="background:linear-gradient(135deg, var(--secondary-red), #d86b70)">
+                <div class="module-icon">🚫</div>
+                <h3 class="module-title">敏感词过滤</h3>
+                <p>内容安全防护</p>
+            </div>
+            <div class="module-body">
+                <ul class="feature-list">
+                    <li class="feature-item">
+                        <div class="feature-icon">🛡️</div>
+                        <div>
+                            <div>多层级过滤</div>
+                            <div class="feature-desc">从关键词到语义理解</div>
+                        </div>
+                    </li>
+                    <li class="feature-item">
+                        <div class="feature-icon">🌐</div>
+                        <div>
+                            <div>方言识别</div>
+                            <div class="feature-desc">支持江西方言敏感词识别</div>
+                        </div>
+                    </li>
+                    <li class="feature-item">
+                        <div class="feature-icon">📝</div>
+                        <div>
+                            <div>智能替换</div>
+                            <div class="feature-desc">自动替换为合规表达</div>
+                        </div>
+                    </li>
+                </ul>
+            </div>
+        </div>
+    </div>
+</section>
+
+<!-- 权限管理 -->
+<section class="section" id="permission">
+    <h2 class="section-title">权限管理系统</h2>
+    
+    <div class="permission-tabs">
+        <button class="tab-btn" [class.active]="isActive('government')" (click)="changeTab('government')">政府级权限</button>
+        <button class="tab-btn" [class.active]="isActive('university')" (click)="changeTab('university')">高校级权限</button>
+        <button class="tab-btn" [class.active]="isActive('public')" (click)="changeTab('public')">公众级权限</button>
+    </div>
+    
+    <div class="tab-content" [class.active]="isActive('government')">
+        <h3>数据监管权限</h3>
+        <p class="tab-desc">为政府部门提供全面的数据监管能力,确保文旅数据安全合规</p>
+        
+        <div class="permission-features">
+            <div class="permission-feature">
+                <h4>数据审计追踪</h4>
+                <p class="feature-desc">完整记录数据访问、修改历史,支持时间点回溯与责任人追踪</p>
+            </div>
+            
+            <div class="permission-feature">
+                <h4>合规性检查</h4>
+                <p class="feature-desc">自动检测数据存储、传输是否符合国家及地方数据安全法规</p>
+            </div>
+            
+            <div class="permission-feature">
+                <h4>敏感数据监控</h4>
+                <p class="feature-desc">实时监控敏感数据访问行为,异常操作即时预警</p>
+            </div>
+        </div>
+    </div>
+    
+    <div class="tab-content" [class.active]="isActive('university')">
+        <h3>教研权限</h3>
+        <p class="tab-desc">为高校和研究机构提供文旅数据研究分析工具与权限</p>
+        
+        <div class="permission-features">
+            <div class="permission-feature">
+                <h4>数据集下载</h4>
+                <p class="feature-desc">授权访问脱敏后的文旅数据集,支持多种格式导出</p>
+            </div>
+            
+            <div class="permission-feature">
+                <h4>分析工具集成</h4>
+                <p class="feature-desc">提供专业数据分析工具接口,支持Python、R等语言调用</p>
+            </div>
+            
+            <div class="permission-feature">
+                <h4>协作研究空间</h4>
+                <p class="feature-desc">创建团队协作环境,共享研究笔记与分析成果</p>
+            </div>
+        </div>
+    </div>
+    
+    <div class="tab-content" [class.active]="isActive('public')">
+        <h3>创作权限</h3>
+        <p class="tab-desc">为公众用户提供文旅内容创作工具与分享平台</p>
+        
+        <div class="permission-features">
+            <div class="permission-feature">
+                <h4>素材库访问</h4>
+                <p class="feature-desc">提供免费文旅素材库,包括图片、视频、音频等资源</p>
+            </div>
+            
+            <div class="permission-feature">
+                <h4>在线创作工具</h4>
+                <p class="feature-desc">内置简易视频剪辑、图文排版等创作工具</p>
+            </div>
+            
+            <div class="permission-feature">
+                <h4>内容审核系统</h4>
+                <p class="feature-desc">AI辅助内容审核,确保创作内容符合规范</p>
+            </div>
+        </div>
+    </div>
+</section>
+
+<!-- 页脚 -->
+<footer class="footer">
+    <div class="footer-links">
+        <a routerLink="/about">关于协会</a>
+        <a routerLink="/membership">会员服务</a>
+        <a routerLink="/cooperation">项目合作</a>
+        <a routerLink="/contact">联系我们</a>
+    </div>
+    <div class="footer-bottom">
+        <p>© 2023 江西省文化和旅游研究推广协会 | 赣ICP备XXXXXXXX号</p>
+    </div>
+</footer>

+ 322 - 0
travel-platform-web/travel-web/src/crm/mobile/page-crm-system/page-crm-system.scss

@@ -0,0 +1,322 @@
+/* 全局样式 */
+:host {
+  display: block;
+  font-family: "阿里巴巴普惠体", sans-serif;
+  background-color: #f8f4e8;
+  color: #333;
+  line-height: 1.6;
+}
+
+/* 主色调定义 */
+:host {
+  --primary-blue: #2F7DAD;  /* 天青瓷 */
+  --primary-green: #5B8C5A; /* 香樟绿 */
+  --primary-gold: #D4B16A; /* 庐金 */
+  --secondary-gray: #6D6D6D; /* 婺源黛瓦灰 */
+  --secondary-red: #C53D43;  /* 井冈山鹃红 */
+}
+
+/* 导航栏 */
+.navbar {
+  background: linear-gradient(90deg, var(--primary-blue), var(--primary-green));
+  height: 80px;
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  padding: 0 5%;
+  box-shadow: 0 4px 12px rgba(0,0,0,0.1);
+}
+
+.logo {
+  font-size: 2rem;
+  color: white;
+  text-shadow: 2px 2px 4px rgba(0,0,0,0.3);
+}
+
+.nav-links {
+  display: flex;
+  gap: 2rem;
+}
+
+.nav-links a {
+  color: white;
+  text-decoration: none;
+  padding: 0.5rem 1rem;
+  transition: all 0.3s;
+  position: relative;
+}
+
+.nav-links a:hover {
+  background-color: rgba(255,255,255,0.2);
+}
+
+.nav-links a::after {
+  content: "";
+  position: absolute;
+  bottom: -5px;
+  left: 50%;
+  transform: translateX(-50%);
+  width: 0;
+  height: 2px;
+  background-color: var(--primary-gold);
+  transition: width 0.3s;
+}
+
+.nav-links a:hover::after {
+  width: 70%;
+}
+
+/* Banner区域 */
+.support-banner {
+  height: 350px;
+  background: linear-gradient(135deg, var(--primary-blue), var(--primary-green));
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  text-align: center;
+  color: white;
+  position: relative;
+  overflow: hidden;
+}
+
+.banner-content {
+  position: relative;
+  z-index: 2;
+  max-width: 800px;
+  padding: 0 2rem;
+}
+
+.banner-title {
+  font-size: 2.8rem;
+  margin-bottom: 1.5rem;
+  text-shadow: 2px 2px 8px rgba(0,0,0,0.3);
+}
+
+.banner-subtitle {
+  font-size: 1.2rem;
+  margin-bottom: 2rem;
+  line-height: 1.8;
+}
+
+/* 主内容区 */
+.section {
+  padding: 4rem 10%;
+}
+
+.section-title {
+  font-size: 2.2rem;
+  color: var(--primary-blue);
+  text-align: center;
+  margin-bottom: 3rem;
+  position: relative;
+}
+
+.section-title::after {
+  content: "";
+  display: block;
+  width: 80px;
+  height: 3px;
+  background: linear-gradient(to right, var(--primary-blue), var(--primary-green));
+  margin: 1rem auto 0;
+}
+
+/* 模块卡片 */
+.module-container {
+  display: flex;
+  flex-wrap: wrap;
+  gap: 2rem;
+  justify-content: center;
+}
+
+.module-card {
+  flex: 1 1 300px;
+  max-width: 350px;
+  background: white;
+  border-radius: 8px;
+  overflow: hidden;
+  box-shadow: 0 8px 24px rgba(0,0,0,0.1);
+  transition: all 0.3s;
+}
+
+.module-card:hover {
+  transform: translateY(-10px);
+  box-shadow: 0 12px 32px rgba(0,0,0,0.15);
+}
+
+.module-header {
+  background: linear-gradient(135deg, var(--primary-blue), var(--primary-green));
+  color: white;
+  padding: 1.5rem;
+  text-align: center;
+}
+
+.module-icon {
+  font-size: 2.5rem;
+  margin-bottom: 1rem;
+}
+
+.module-title {
+  font-size: 1.5rem;
+  margin-bottom: 0.5rem;
+}
+
+.module-body {
+  padding: 1.5rem;
+}
+
+.feature-list {
+  list-style: none;
+}
+
+.feature-item {
+  display: flex;
+  align-items: center;
+  margin-bottom: 1rem;
+  padding: 0.8rem;
+  border-radius: 6px;
+  transition: all 0.3s;
+}
+
+.feature-item:hover {
+  background-color: rgba(47, 125, 173, 0.1);
+}
+
+.feature-icon {
+  width: 40px;
+  height: 40px;
+  background-color: rgba(47, 125, 173, 0.1);
+  border-radius: 50%;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  margin-right: 1rem;
+  color: var(--primary-blue);
+  font-size: 1.2rem;
+}
+
+.feature-desc {
+  font-size: 0.9rem;
+  color: var(--secondary-gray);
+}
+
+/* 权限管理 */
+.permission-tabs {
+  display: flex;
+  justify-content: center;
+  margin-bottom: 2rem;
+  flex-wrap: wrap;
+}
+
+.tab-btn {
+  padding: 0.8rem 2rem;
+  background: none;
+  border: none;
+  border-bottom: 3px solid transparent;
+  font-size: 1.1rem;
+  color: var(--secondary-gray);
+  cursor: pointer;
+  transition: all 0.3s;
+}
+
+.tab-btn.active {
+  color: var(--primary-blue);
+  border-bottom-color: var(--primary-blue);
+  font-weight: bold;
+}
+
+.tab-content {
+  display: none;
+  background: white;
+  padding: 2rem;
+  border-radius: 8px;
+  box-shadow: 0 4px 12px rgba(0,0,0,0.08);
+}
+
+.tab-content.active {
+  display: block;
+  animation: fadeIn 0.5s;
+}
+
+@keyframes fadeIn {
+  from { opacity: 0; transform: translateY(10px); }
+  to { opacity: 1; transform: translateY(0); }
+}
+
+.tab-desc {
+  margin-bottom: 1.5rem;
+  color: var(--secondary-gray);
+}
+
+.permission-features {
+  display: grid;
+  grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
+  gap: 1.5rem;
+}
+
+.permission-feature {
+  background-color: rgba(47, 125, 173, 0.05);
+  padding: 1.2rem;
+  border-radius: 8px;
+  border-left: 4px solid var(--primary-blue);
+}
+
+/* 页脚 */
+.footer {
+  background-color: #2a2a2a;
+  color: white;
+  padding: 3rem 10% 2rem;
+  text-align: center;
+}
+
+.footer-links {
+  display: flex;
+  justify-content: center;
+  gap: 2rem;
+  margin-bottom: 2rem;
+  flex-wrap: wrap;
+}
+
+.footer-links a {
+  color: #ccc;
+  text-decoration: none;
+  transition: color 0.3s;
+}
+
+.footer-links a:hover {
+  color: var(--primary-gold);
+}
+
+.footer-bottom {
+  padding-top: 2rem;
+  border-top: 1px solid #444;
+  color: #999;
+  font-size: 0.9rem;
+}
+
+/* 响应式设计 */
+@media (max-width: 768px) {
+  .navbar {
+    height: auto;
+    flex-direction: column;
+    padding: 1rem;
+  }
+  
+  .nav-links {
+    margin-top: 1rem;
+    flex-wrap: wrap;
+    justify-content: center;
+  }
+  
+  .support-banner {
+    height: auto;
+    padding: 3rem 1rem;
+  }
+  
+  .banner-title {
+    font-size: 2.2rem;
+  }
+  
+  .section {
+    padding: 2rem 5%;
+  }
+}

+ 17 - 4
travel-platform-web/travel-web/src/crm/mobile/page-crm-system/page-crm-system.spec.ts

@@ -1,5 +1,4 @@
 import { ComponentFixture, TestBed } from '@angular/core/testing';
-
 import { PageCrmSystem } from './page-crm-system';
 
 describe('PageCrmSystem', () => {
@@ -9,8 +8,7 @@ describe('PageCrmSystem', () => {
   beforeEach(async () => {
     await TestBed.configureTestingModule({
       imports: [PageCrmSystem]
-    })
-    .compileComponents();
+    }).compileComponents();
 
     fixture = TestBed.createComponent(PageCrmSystem);
     component = fixture.componentInstance;
@@ -20,4 +18,19 @@ describe('PageCrmSystem', () => {
   it('should create', () => {
     expect(component).toBeTruthy();
   });
-});
+
+  it('should initialize with government tab active', () => {
+    expect(component.activeTab).toBe('government');
+  });
+
+  it('should change active tab', () => {
+    component.changeTab('university');
+    expect(component.activeTab).toBe('university');
+  });
+
+  it('should correctly identify active tab', () => {
+    component.activeTab = 'public';
+    expect(component.isActive('public')).toBeTrue();
+    expect(component.isActive('government')).toBeFalse();
+  });
+});

+ 14 - 3
travel-platform-web/travel-web/src/crm/mobile/page-crm-system/page-crm-system.ts

@@ -1,14 +1,25 @@
 import { Component } from '@angular/core';
+import { CommonModule } from '@angular/common';
 import { RouterModule } from '@angular/router';
 
 @Component({
   selector: 'page-crm-system',
+  standalone: true,
   imports: [
-    RouterModule // 新增路由导航模块
+    CommonModule,
+    RouterModule
   ],
   templateUrl: './page-crm-system.html',
-  styleUrl: './page-crm-system.scss'
+  styleUrls: ['./page-crm-system.scss']
 })
 export class PageCrmSystem {
+  activeTab: string = 'government';
 
-}
+  changeTab(tab: string): void {
+    this.activeTab = tab;
+  }
+
+  isActive(tab: string): boolean {
+    return this.activeTab === tab;
+  }
+}