cainiao-hue 4 月之前
父节点
当前提交
228755a143
共有 67 个文件被更改,包括 170 次插入1270 次删除
  1. 3 166
      README.md
  2. 167 0
      soul-prod/README.md
  3. 0 0
      soul-prod/img/1.png
  4. 0 0
      soul-prod/img/2.png
  5. 0 0
      soul-prod/img/3.png
  6. 0 16
      src/app/app-routing.module.ts
  7. 0 3
      src/app/app.component.html
  8. 0 0
      src/app/app.component.scss
  9. 0 21
      src/app/app.component.spec.ts
  10. 0 10
      src/app/app.component.ts
  11. 0 16
      src/app/app.module.ts
  12. 0 1
      src/app/chat/fm-bubble/fm-bubble.component.html
  13. 0 16
      src/app/chat/fm-bubble/fm-bubble.component.scss
  14. 0 22
      src/app/chat/fm-bubble/fm-bubble.component.spec.ts
  15. 0 15
      src/app/chat/fm-bubble/fm-bubble.component.ts
  16. 0 4
      src/app/explore-container/explore-container.component.html
  17. 0 27
      src/app/explore-container/explore-container.component.scss
  18. 0 24
      src/app/explore-container/explore-container.component.spec.ts
  19. 0 12
      src/app/explore-container/explore-container.component.ts
  20. 0 14
      src/app/explore-container/explore-container.module.ts
  21. 0 17
      src/app/tab-mine/tab-mine-routing.module.ts
  22. 0 22
      src/app/tab-mine/tab-mine.module.ts
  23. 0 23
      src/app/tab-mine/tab-mine.page.html
  24. 0 0
      src/app/tab-mine/tab-mine.page.scss
  25. 0 17
      src/app/tab-mine/tab-mine.page.spec.ts
  26. 0 15
      src/app/tab-mine/tab-mine.page.ts
  27. 0 16
      src/app/tab1/tab1-routing.module.ts
  28. 0 20
      src/app/tab1/tab1.module.ts
  29. 0 89
      src/app/tab1/tab1.page.html
  30. 0 47
      src/app/tab1/tab1.page.scss
  31. 0 26
      src/app/tab1/tab1.page.spec.ts
  32. 0 12
      src/app/tab1/tab1.page.ts
  33. 0 16
      src/app/tab2/tab2-routing.module.ts
  34. 0 20
      src/app/tab2/tab2.module.ts
  35. 0 17
      src/app/tab2/tab2.page.html
  36. 0 0
      src/app/tab2/tab2.page.scss
  37. 0 26
      src/app/tab2/tab2.page.spec.ts
  38. 0 12
      src/app/tab2/tab2.page.ts
  39. 0 16
      src/app/tab3/tab3-routing.module.ts
  40. 0 20
      src/app/tab3/tab3.module.ts
  41. 0 17
      src/app/tab3/tab3.page.html
  42. 0 0
      src/app/tab3/tab3.page.scss
  43. 0 26
      src/app/tab3/tab3.page.spec.ts
  44. 0 12
      src/app/tab3/tab3.page.ts
  45. 0 16
      src/app/tab4/tab4-routing.module.ts
  46. 0 20
      src/app/tab4/tab4.module.ts
  47. 0 17
      src/app/tab4/tab4.page.html
  48. 0 0
      src/app/tab4/tab4.page.scss
  49. 0 26
      src/app/tab4/tab4.page.spec.ts
  50. 0 12
      src/app/tab4/tab4.page.ts
  51. 0 47
      src/app/tabs/tabs-routing.module.ts
  52. 0 19
      src/app/tabs/tabs.module.ts
  53. 0 49
      src/app/tabs/tabs.page.html
  54. 0 1
      src/app/tabs/tabs.page.scss
  55. 0 26
      src/app/tabs/tabs.page.spec.ts
  56. 0 12
      src/app/tabs/tabs.page.ts
  57. 二进制
      src/assets/icon/favicon.png
  58. 0 1
      src/assets/shapes.svg
  59. 0 3
      src/environments/environment.prod.ts
  60. 0 16
      src/environments/environment.ts
  61. 0 37
      src/global.scss
  62. 0 26
      src/index.html
  63. 0 12
      src/main.ts
  64. 0 55
      src/polyfills.ts
  65. 0 14
      src/test.ts
  66. 0 2
      src/theme/variables.scss
  67. 0 6
      src/zone-flags.ts

+ 3 - 166
README.md

@@ -1,167 +1,4 @@
-# 项目产品策划
-姓名:颜紫嫣 学号:202226701036 班级:22级大数据技术班 手机号:19870628587
-## 项目设想
-- 心理测评行业在预约咨询方面专家数量有限且预约费用高,面对面的心理咨询、调查问卷不一定能表达出自己内心的想法,会造成刻意回避行为,无法真正帮助到用户缓解问题。希望一个AI陪聊师去跟用户更深度的交流,在陪聊过程中及时发现问题并开导患者,一款通过与用户陪聊的形式为用户解决心理问题的AGI产品
-# 一、项目背景
-## 政策背景
-> 用关键字:心理、陪聊,搜索相关的政策和扶持
-- 心理陪聊行业作为朝阳产业,具有广阔的发展前景。国家出台了一系列政策支持心理健康服务行业的发展,包括《2022国民健康洞察报告》中提到的心理压力问题,以及政府对心理健康服务的重视和政策支持‌。
-- 近日,国家卫生计生委、中宣部、中央综治办、民政部等22个部门共同印发《关于加强心理健康服务的指导意见》(国卫疾控发〔2016〕77号)(以下简称《意见》)。《意见》作为贯彻落实习近平总书记在2016年全国卫生与健康大会上的讲话要求,落实“十三五”规划纲要和“健康中国2030”规划纲要的重要文件,是我国首个加强心理健康服务的宏观指导性意见,明确了专业社会工作参与心理健康服务的路径和方法,强调了专业社会工作在提供心理健康服务、完善心理健康服务体系中的重要作用,对于加强心理健康领域社会工作专业人才队伍建设、推动心理健康领域社会工作实务发展具有重要意义。
-## 行业背景
-> 用关键字: 心理、陪聊 + 行业分析/行业报告
-- 《中国消费者权益保护状况年度报告(2023)》
-    - 心理和陪聊行业的市场规模正在不断扩大。根据中国消费者协会发布的《中国消费者权益保护状况年度报告(2023)》,情绪消费已成为影响年轻一代消费决策的新热点。电商平台上,倾诉、陪聊、安慰等服务价格从1元至上百元不等,部分网店销量极高,例如“失眠XXX梦”网店仅“10元商品”销量就超过30万单‌。
-## 市场痛点
-- 情绪消费服务通常需要用户分享个人隐私和经历,增加了数据泄露的风险
-- 由于市场尚未形成完善的监管机制,服务内容和服务质量参差不齐
-- 许多陪聊人员没有相关的心理学或心理咨询资质,服务质量难以保证
-# 二、产品定位
-## 用户分析
-- 用户
-    - 高压力人群
-    - 心理疾病患者
-    - 孤独人群
-- 商家
-    - 在线平台
-    - 网店
-## 主要功能
-- 智能匹配:通过用户的描述匹配一个专业性的聊天机器人
-- 实时聊天:通过陪聊察觉用户的心理问题并让用户获得心理上的疏导
-- 专业建议:通过用户描述提供专业性的情绪、压力等的管理技巧与方法
-## 商业模式
-- B端客户:商家
-    - 购买此产品付费
-    - 投放心理咨询广告收费
-- C端客户:用户
-    - 普通用户体验免费,匹配聊天机器人类别付费
-    - 充值vip用户体验、匹配免费,超过期限匹配付费
-# 三、可行性测试
-## 智能匹配
-- 根据用户的描述匹配相对应类别的聊天机器人
-> 聊天机器人类别
-```python
-1.情感支持机器人
-    - 情感识别:通过分析用户的语言和语调来识别情绪状态。
-    - 倾诉平台:提供一个安全的空间,让用户自由表达情感和烦恼。
-    - 积极反馈:给予用户积极的反馈和鼓励,帮助他们缓解压力。
-    - 情绪记录:帮助用户记录情绪变化,识别情绪模式。
-2.认知行为疗法(CBT)机器人
-    - 思维记录:引导用户记录负面思维,并帮助分析其合理性。
-    - 认知重构:提供工具和方法,帮助用户挑战和改变消极思维。
-    - 行为实验:鼓励用户进行小的行为实验,以验证他们的思维模式。
-    - 情绪调节技巧:教授用户情绪调节和应对技巧。
-3.压力管理机器人
-    - 压力评估:通过问卷或对话评估用户的压力水平。
-    - 放松练习:提供冥想、深呼吸和放松练习的指导。
-    - 时间管理建议:帮助用户制定合理的时间管理策略,以减少压力。
-    - 自我关怀提示:提醒用户进行自我关怀活动,提升心理健康。
-4.焦虑与抑郁支持机器人
-    - 症状监测:帮助用户监测焦虑和抑郁的症状,并提供反馈。
-    - 应对策略:提供应对焦虑和抑郁的具体策略和建议。
-    - 日常活动记录:鼓励用户记录日常活动,以提高积极性。
-    - 危机干预:在用户表现出严重症状时,提供紧急资源和建议。
-5.自我成长与发展机器人
-    - 目标设定:帮助用户设定个人成长和发展的目标。
-    - 进度追踪:记录用户的进展,并提供反馈和建议。
-    - 积极心理学练习:提供积极心理学相关的练习和活动,促进幸福感。
-    - 资源推荐:推荐相关书籍、文章和视频,帮助用户提升自我认知。
-6.社交技能训练机器人
-    - 社交情境模拟:模拟社交场景,帮助用户练习社交技巧。
-    - 反馈机制:提供对用户社交表现的反馈和改进建议。
-    - 情绪理解:帮助用户理解他人的情绪和非语言信号。
-    - 沟通技巧:教授有效的沟通技巧,提升人际关系。
-```
-## 实时聊天
-- 根据用户的描述提供疏导方法
-> 你作为一名专业的心理陪聊师,我目前天天感觉心理压抑,觉得生活无趣,你应该如何与我聊天帮我解决这个心理问题?
-- 通过与用户的聊天发现用户心理问题并疏导用户的情绪解决
-> 我最近学习压力好大啊,学也学不明白,真不知道怎么办了
-## 专业建议
-- 专业性的情绪管理技巧与方法
-```python
-1. 情绪识别与表达
-    - 情绪日记:记录每天的情绪变化及其触发因素,帮助识别情绪模式。
-    - 情绪词汇:学习并使用丰富的情绪词汇,准确表达自己的感受。
-    - 非语言表达:注意身体语言、面部表情和语调,以更全面地理解情绪。
-2. 认知重构
-    - 识别负面思维:注意到引发负面情绪的思维模式。
-    - 挑战不合理信念:质疑这些思维的真实性,寻找证据支持更积极的观点。
-    - 替代思维:用更积极、合理的思维替代负面思维,改变情绪反应。
-3. 情绪调节策略
-    - 情绪接纳:接受自己的情绪,无论是正面还是负面,避免压抑。
-    - 情绪释放:通过写作、艺术创作、运动等方式释放情绪。
-    - 深呼吸与放松:运用深呼吸、渐进性肌肉放松等技术来缓解情绪紧张。
-4. 正念与冥想
-    - 正念练习:专注于当下的体验,观察情绪而不做评判,减少情绪波动。
-    - 冥想:定期进行冥想,帮助清晰思维,增强情绪的自我调节能力。
-    - 身体扫描:通过注意身体各个部位的感受,增强对情绪和身体反应的觉察。
-5. 社交支持
-    - 倾诉与分享:与信任的朋友或家人分享情绪,获得支持和理解。
-    - 建立支持网络:参与社交活动,维护良好的社交关系,增强归属感。
-    - 专业帮助:在需要时寻求心理咨询师或治疗师的支持与指导。
-6. 自我关怀
-    - 健康生活方式:保持规律的作息、均衡饮食和适当运动,提升整体心理健康。
-    - 设定界限:学会拒绝过度的责任和压力,保护自己的情绪健康。
-    - 培养兴趣爱好:参与自己喜欢的活动,提升情绪的积极性。
-7. 情绪管理技能
-    - 情绪调节技巧:学习和运用情绪调节技巧,如情绪转移、情绪重定向等。
-    - 问题解决技能:面对情绪困扰时,采用有效的问题解决方法,减少无助感。
-    - 设定目标:为情绪管理设定具体、可实现的目标,增强自我效能感。
-8. 积极心理学
-    - 感恩练习:每天记录三件让自己感激的事情,提升积极情绪。
-    - 乐观思维:培养乐观的心态,关注生活中的积极方面。
-    - 自我肯定:通过积极的自我对话增强自信和自尊。
-```
-- 专业性的压力管理技巧与方法
-```python
-1. 认知行为疗法(CBT)
-    - 识别负面思维:记录并识别引发压力的负面思维。
-    - 挑战不合理信念:通过逻辑分析和证据挑战这些思维,寻找更合理的替代想法。
-    - 行为改变:鼓励采取积极行动来应对压力源,而不是逃避。
-2. 放松技术
-    - 深呼吸:练习腹式呼吸,通过缓慢而深的呼吸来放松身体。
-    - 渐进性肌肉放松:逐步紧张和放松身体各个肌肉群,释放身体紧张感。
-    - 冥想和正念:通过冥想和正念练习,专注于当下,减少焦虑和压力。
-3. 时间管理
-    - 优先级排序:使用四象限法则(重要紧急、重要不紧急、紧急不重要、不紧急不重要)来优先- 处理任务。
-    - 制定计划:使用日历或待办事项清单,合理安排时间,避免临时抱佛脚。
-    - 设定界限:学会拒绝不必要的任务,保护个人时间和精力。
-4. 身体锻炼
-    - 规律运动:每周至少150分钟的中等强度有氧运动(如快走、游泳、骑自行车)。
-    - 力量训练:增加肌肉力量,改善身体健康,释放内啡肽,提升心情。
-    - 户外活动:接触自然,享受阳光,改善心理健康。
-5. 社交支持
-    - 倾诉和交流:与朋友、家人或专业人士分享感受,获得情感支持。
-    - 建立支持网络:参与社交活动,建立良好的社交关系,增强归属感。
-    - 寻求专业帮助:在压力过大时,考虑咨询心理医生或心理治疗师。
-6. 自我关怀
-    - 养成健康习惯:保持规律的作息、均衡饮食和充足的睡眠。
-    - 设定个人时间:定期安排时间进行自己喜欢的活动,放松身心。
-    - 练习感恩:每天记录三件让自己感激的事情,提升积极情绪。
-7. 解决问题的技巧
-    - 问题分析:识别问题的根源,分析可行的解决方案。
-    - 制定行动计划:为每个解决方案制定具体的行动步骤。
-    - 评估结果:实施后评估效果,调整方法以更好地应对未来的压力。
-8. 心理调节
-    - 保持积极心态:培养乐观思维,关注积极的方面。
-    - 情绪管理:识别和表达情绪,避免情绪压抑。
-    - 练习幽默感:通过幽默的方式看待生活中的压力,减轻紧张感。
-```
-### 总结
-通过陪聊可以帮用户正确引导,让用户放轻松与陪聊机器人聊天,陪聊机器人及时分析用户的心理问题,面对心理问题及时解决,用户不用担心自己的坏情绪没法发泄,可以通过陪聊正确面对,用户还可以得到专业性的建议,用户还可匹配更具体的机器人去分析自己的问题。
-![](./img/1.png)
-# 四、产品结构
-## 竞品分析
-- 寻找提供在线心理咨询、心理测试的APP体验其中的核心功能
-    - 壹点灵(参考心理问答和测验心理获取如何评判心理问题和专业性解答、建议的信息)
-- 寻找提供陪聊服务的网站或在线平台
-    - 多米趣(参考陪聊中要注意的问题)
-## 产品结构图
-![](./img/2.png)
-## 信息结构图
-![](./img/3.png)
-# FAQ:项目起名
-> 项目名称的生成:
-{{项目策划文档}},作为一名创意大师,请帮我设计本项目的名称,并且要突出心理、陪聊的关键字。
+#心灵陪聊项目仓库
 
-> 心灵陪聊
+- soul-app 前端代码
+- soul-prod 产品文档

+ 167 - 0
soul-prod/README.md

@@ -0,0 +1,167 @@
+# 项目产品策划
+姓名:颜紫嫣 学号:202226701036 班级:22级大数据技术班 手机号:19870628587
+## 项目设想
+- 心理测评行业在预约咨询方面专家数量有限且预约费用高,面对面的心理咨询、调查问卷不一定能表达出自己内心的想法,会造成刻意回避行为,无法真正帮助到用户缓解问题。希望一个AI陪聊师去跟用户更深度的交流,在陪聊过程中及时发现问题并开导患者,一款通过与用户陪聊的形式为用户解决心理问题的AGI产品
+# 一、项目背景
+## 政策背景
+> 用关键字:心理、陪聊,搜索相关的政策和扶持
+- 心理陪聊行业作为朝阳产业,具有广阔的发展前景。国家出台了一系列政策支持心理健康服务行业的发展,包括《2022国民健康洞察报告》中提到的心理压力问题,以及政府对心理健康服务的重视和政策支持‌。
+- 近日,国家卫生计生委、中宣部、中央综治办、民政部等22个部门共同印发《关于加强心理健康服务的指导意见》(国卫疾控发〔2016〕77号)(以下简称《意见》)。《意见》作为贯彻落实习近平总书记在2016年全国卫生与健康大会上的讲话要求,落实“十三五”规划纲要和“健康中国2030”规划纲要的重要文件,是我国首个加强心理健康服务的宏观指导性意见,明确了专业社会工作参与心理健康服务的路径和方法,强调了专业社会工作在提供心理健康服务、完善心理健康服务体系中的重要作用,对于加强心理健康领域社会工作专业人才队伍建设、推动心理健康领域社会工作实务发展具有重要意义。
+## 行业背景
+> 用关键字: 心理、陪聊 + 行业分析/行业报告
+- 《中国消费者权益保护状况年度报告(2023)》
+    - 心理和陪聊行业的市场规模正在不断扩大。根据中国消费者协会发布的《中国消费者权益保护状况年度报告(2023)》,情绪消费已成为影响年轻一代消费决策的新热点。电商平台上,倾诉、陪聊、安慰等服务价格从1元至上百元不等,部分网店销量极高,例如“失眠XXX梦”网店仅“10元商品”销量就超过30万单‌。
+## 市场痛点
+- 情绪消费服务通常需要用户分享个人隐私和经历,增加了数据泄露的风险
+- 由于市场尚未形成完善的监管机制,服务内容和服务质量参差不齐
+- 许多陪聊人员没有相关的心理学或心理咨询资质,服务质量难以保证
+# 二、产品定位
+## 用户分析
+- 用户
+    - 高压力人群
+    - 心理疾病患者
+    - 孤独人群
+- 商家
+    - 在线平台
+    - 网店
+## 主要功能
+- 智能匹配:通过用户的描述匹配一个专业性的聊天机器人
+- 实时聊天:通过陪聊察觉用户的心理问题并让用户获得心理上的疏导
+- 专业建议:通过用户描述提供专业性的情绪、压力等的管理技巧与方法
+## 商业模式
+- B端客户:商家
+    - 购买此产品付费
+    - 投放心理咨询广告收费
+- C端客户:用户
+    - 普通用户体验免费,匹配聊天机器人类别付费
+    - 充值vip用户体验、匹配免费,超过期限匹配付费
+# 三、可行性测试
+## 智能匹配
+- 根据用户的描述匹配相对应类别的聊天机器人
+> 聊天机器人类别
+```python
+1.情感支持机器人
+    - 情感识别:通过分析用户的语言和语调来识别情绪状态。
+    - 倾诉平台:提供一个安全的空间,让用户自由表达情感和烦恼。
+    - 积极反馈:给予用户积极的反馈和鼓励,帮助他们缓解压力。
+    - 情绪记录:帮助用户记录情绪变化,识别情绪模式。
+2.认知行为疗法(CBT)机器人
+    - 思维记录:引导用户记录负面思维,并帮助分析其合理性。
+    - 认知重构:提供工具和方法,帮助用户挑战和改变消极思维。
+    - 行为实验:鼓励用户进行小的行为实验,以验证他们的思维模式。
+    - 情绪调节技巧:教授用户情绪调节和应对技巧。
+3.压力管理机器人
+    - 压力评估:通过问卷或对话评估用户的压力水平。
+    - 放松练习:提供冥想、深呼吸和放松练习的指导。
+    - 时间管理建议:帮助用户制定合理的时间管理策略,以减少压力。
+    - 自我关怀提示:提醒用户进行自我关怀活动,提升心理健康。
+4.焦虑与抑郁支持机器人
+    - 症状监测:帮助用户监测焦虑和抑郁的症状,并提供反馈。
+    - 应对策略:提供应对焦虑和抑郁的具体策略和建议。
+    - 日常活动记录:鼓励用户记录日常活动,以提高积极性。
+    - 危机干预:在用户表现出严重症状时,提供紧急资源和建议。
+5.自我成长与发展机器人
+    - 目标设定:帮助用户设定个人成长和发展的目标。
+    - 进度追踪:记录用户的进展,并提供反馈和建议。
+    - 积极心理学练习:提供积极心理学相关的练习和活动,促进幸福感。
+    - 资源推荐:推荐相关书籍、文章和视频,帮助用户提升自我认知。
+6.社交技能训练机器人
+    - 社交情境模拟:模拟社交场景,帮助用户练习社交技巧。
+    - 反馈机制:提供对用户社交表现的反馈和改进建议。
+    - 情绪理解:帮助用户理解他人的情绪和非语言信号。
+    - 沟通技巧:教授有效的沟通技巧,提升人际关系。
+```
+## 实时聊天
+- 根据用户的描述提供疏导方法
+> 你作为一名专业的心理陪聊师,我目前天天感觉心理压抑,觉得生活无趣,你应该如何与我聊天帮我解决这个心理问题?
+- 通过与用户的聊天发现用户心理问题并疏导用户的情绪解决
+> 我最近学习压力好大啊,学也学不明白,真不知道怎么办了
+## 专业建议
+- 专业性的情绪管理技巧与方法
+```python
+1. 情绪识别与表达
+    - 情绪日记:记录每天的情绪变化及其触发因素,帮助识别情绪模式。
+    - 情绪词汇:学习并使用丰富的情绪词汇,准确表达自己的感受。
+    - 非语言表达:注意身体语言、面部表情和语调,以更全面地理解情绪。
+2. 认知重构
+    - 识别负面思维:注意到引发负面情绪的思维模式。
+    - 挑战不合理信念:质疑这些思维的真实性,寻找证据支持更积极的观点。
+    - 替代思维:用更积极、合理的思维替代负面思维,改变情绪反应。
+3. 情绪调节策略
+    - 情绪接纳:接受自己的情绪,无论是正面还是负面,避免压抑。
+    - 情绪释放:通过写作、艺术创作、运动等方式释放情绪。
+    - 深呼吸与放松:运用深呼吸、渐进性肌肉放松等技术来缓解情绪紧张。
+4. 正念与冥想
+    - 正念练习:专注于当下的体验,观察情绪而不做评判,减少情绪波动。
+    - 冥想:定期进行冥想,帮助清晰思维,增强情绪的自我调节能力。
+    - 身体扫描:通过注意身体各个部位的感受,增强对情绪和身体反应的觉察。
+5. 社交支持
+    - 倾诉与分享:与信任的朋友或家人分享情绪,获得支持和理解。
+    - 建立支持网络:参与社交活动,维护良好的社交关系,增强归属感。
+    - 专业帮助:在需要时寻求心理咨询师或治疗师的支持与指导。
+6. 自我关怀
+    - 健康生活方式:保持规律的作息、均衡饮食和适当运动,提升整体心理健康。
+    - 设定界限:学会拒绝过度的责任和压力,保护自己的情绪健康。
+    - 培养兴趣爱好:参与自己喜欢的活动,提升情绪的积极性。
+7. 情绪管理技能
+    - 情绪调节技巧:学习和运用情绪调节技巧,如情绪转移、情绪重定向等。
+    - 问题解决技能:面对情绪困扰时,采用有效的问题解决方法,减少无助感。
+    - 设定目标:为情绪管理设定具体、可实现的目标,增强自我效能感。
+8. 积极心理学
+    - 感恩练习:每天记录三件让自己感激的事情,提升积极情绪。
+    - 乐观思维:培养乐观的心态,关注生活中的积极方面。
+    - 自我肯定:通过积极的自我对话增强自信和自尊。
+```
+- 专业性的压力管理技巧与方法
+```python
+1. 认知行为疗法(CBT)
+    - 识别负面思维:记录并识别引发压力的负面思维。
+    - 挑战不合理信念:通过逻辑分析和证据挑战这些思维,寻找更合理的替代想法。
+    - 行为改变:鼓励采取积极行动来应对压力源,而不是逃避。
+2. 放松技术
+    - 深呼吸:练习腹式呼吸,通过缓慢而深的呼吸来放松身体。
+    - 渐进性肌肉放松:逐步紧张和放松身体各个肌肉群,释放身体紧张感。
+    - 冥想和正念:通过冥想和正念练习,专注于当下,减少焦虑和压力。
+3. 时间管理
+    - 优先级排序:使用四象限法则(重要紧急、重要不紧急、紧急不重要、不紧急不重要)来优先- 处理任务。
+    - 制定计划:使用日历或待办事项清单,合理安排时间,避免临时抱佛脚。
+    - 设定界限:学会拒绝不必要的任务,保护个人时间和精力。
+4. 身体锻炼
+    - 规律运动:每周至少150分钟的中等强度有氧运动(如快走、游泳、骑自行车)。
+    - 力量训练:增加肌肉力量,改善身体健康,释放内啡肽,提升心情。
+    - 户外活动:接触自然,享受阳光,改善心理健康。
+5. 社交支持
+    - 倾诉和交流:与朋友、家人或专业人士分享感受,获得情感支持。
+    - 建立支持网络:参与社交活动,建立良好的社交关系,增强归属感。
+    - 寻求专业帮助:在压力过大时,考虑咨询心理医生或心理治疗师。
+6. 自我关怀
+    - 养成健康习惯:保持规律的作息、均衡饮食和充足的睡眠。
+    - 设定个人时间:定期安排时间进行自己喜欢的活动,放松身心。
+    - 练习感恩:每天记录三件让自己感激的事情,提升积极情绪。
+7. 解决问题的技巧
+    - 问题分析:识别问题的根源,分析可行的解决方案。
+    - 制定行动计划:为每个解决方案制定具体的行动步骤。
+    - 评估结果:实施后评估效果,调整方法以更好地应对未来的压力。
+8. 心理调节
+    - 保持积极心态:培养乐观思维,关注积极的方面。
+    - 情绪管理:识别和表达情绪,避免情绪压抑。
+    - 练习幽默感:通过幽默的方式看待生活中的压力,减轻紧张感。
+```
+### 总结
+通过陪聊可以帮用户正确引导,让用户放轻松与陪聊机器人聊天,陪聊机器人及时分析用户的心理问题,面对心理问题及时解决,用户不用担心自己的坏情绪没法发泄,可以通过陪聊正确面对,用户还可以得到专业性的建议,用户还可匹配更具体的机器人去分析自己的问题。
+![](./img/1.png)
+# 四、产品结构
+## 竞品分析
+- 寻找提供在线心理咨询、心理测试的APP体验其中的核心功能
+    - 壹点灵(参考心理问答和测验心理获取如何评判心理问题和专业性解答、建议的信息)
+- 寻找提供陪聊服务的网站或在线平台
+    - 多米趣(参考陪聊中要注意的问题)
+## 产品结构图
+![](./img/2.png)
+## 信息结构图
+![](./img/3.png)
+# FAQ:项目起名
+> 项目名称的生成:
+{{项目策划文档}},作为一名创意大师,请帮我设计本项目的名称,并且要突出心理、陪聊的关键字。
+
+> 心灵陪聊

+ 0 - 0
img/1.png → soul-prod/img/1.png


+ 0 - 0
img/2.png → soul-prod/img/2.png


+ 0 - 0
img/3.png → soul-prod/img/3.png


+ 0 - 16
src/app/app-routing.module.ts

@@ -1,16 +0,0 @@
-import { NgModule } from '@angular/core';
-import { PreloadAllModules, RouterModule, Routes } from '@angular/router';
-
-const routes: Routes = [
-  {
-    path: '',
-    loadChildren: () => import('./tabs/tabs.module').then(m => m.TabsPageModule)
-  }
-];
-@NgModule({
-  imports: [
-    RouterModule.forRoot(routes, { preloadingStrategy: PreloadAllModules })
-  ],
-  exports: [RouterModule]
-})
-export class AppRoutingModule {}

+ 0 - 3
src/app/app.component.html

@@ -1,3 +0,0 @@
-<ion-app>
-  <ion-router-outlet></ion-router-outlet>
-</ion-app>

+ 0 - 0
src/app/app.component.scss


+ 0 - 21
src/app/app.component.spec.ts

@@ -1,21 +0,0 @@
-import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
-import { TestBed } from '@angular/core/testing';
-
-import { AppComponent } from './app.component';
-
-describe('AppComponent', () => {
-
-  beforeEach(async () => {
-    await TestBed.configureTestingModule({
-      declarations: [AppComponent],
-      schemas: [CUSTOM_ELEMENTS_SCHEMA],
-    }).compileComponents();
-  });
-
-  it('should create the app', () => {
-    const fixture = TestBed.createComponent(AppComponent);
-    const app = fixture.componentInstance;
-    expect(app).toBeTruthy();
-  });
-
-});

+ 0 - 10
src/app/app.component.ts

@@ -1,10 +0,0 @@
-import { Component } from '@angular/core';
-
-@Component({
-  selector: 'app-root',
-  templateUrl: 'app.component.html',
-  styleUrls: ['app.component.scss'],
-})
-export class AppComponent {
-  constructor() {}
-}

+ 0 - 16
src/app/app.module.ts

@@ -1,16 +0,0 @@
-import { NgModule } from '@angular/core';
-import { BrowserModule } from '@angular/platform-browser';
-import { RouteReuseStrategy } from '@angular/router';
-
-import { IonicModule, IonicRouteStrategy } from '@ionic/angular';
-
-import { AppRoutingModule } from './app-routing.module';
-import { AppComponent } from './app.component';
-
-@NgModule({
-  declarations: [AppComponent],
-  imports: [BrowserModule, IonicModule.forRoot(), AppRoutingModule],
-  providers: [{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy }],
-  bootstrap: [AppComponent],
-})
-export class AppModule {}

+ 0 - 1
src/app/chat/fm-bubble/fm-bubble.component.html

@@ -1 +0,0 @@
-<div class="bubble" [style.backgroundColor]="color"></div>

+ 0 - 16
src/app/chat/fm-bubble/fm-bubble.component.scss

@@ -1,16 +0,0 @@
-.bubble {
-    width: 100px;
-    height: 100px;
-    background-color: #3498db;
-    border-radius: 50%;
-    animation: breathe 1.5s infinite alternate;
-}
-
-@keyframes breathe {
-    0% {
-        transform: scale(0.5);
-    }
-    100% {
-        transform: scale(1);
-    }
-}

+ 0 - 22
src/app/chat/fm-bubble/fm-bubble.component.spec.ts

@@ -1,22 +0,0 @@
-import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
-
-import { FmBubbleComponent } from './fm-bubble.component';
-
-describe('FmBubbleComponent', () => {
-  let component: FmBubbleComponent;
-  let fixture: ComponentFixture<FmBubbleComponent>;
-
-  beforeEach(waitForAsync(() => {
-    TestBed.configureTestingModule({
-      imports: [FmBubbleComponent],
-    }).compileComponents();
-
-    fixture = TestBed.createComponent(FmBubbleComponent);
-    component = fixture.componentInstance;
-    fixture.detectChanges();
-  }));
-
-  it('should create', () => {
-    expect(component).toBeTruthy();
-  });
-});

+ 0 - 15
src/app/chat/fm-bubble/fm-bubble.component.ts

@@ -1,15 +0,0 @@
-import { Component, Input, OnInit } from '@angular/core';
-
-@Component({
-  selector: 'fm-bubble',
-  templateUrl: './fm-bubble.component.html',
-  styleUrls: ['./fm-bubble.component.scss'],
-  standalone: true,
-})
-export class FmBubbleComponent  implements OnInit {
-  @Input() color:string = "#3498db"
-  constructor() { }
-
-  ngOnInit() {}
-
-}

+ 0 - 4
src/app/explore-container/explore-container.component.html

@@ -1,4 +0,0 @@
-<div id="container">
-  <strong>{{ name }}</strong>
-  <p>Explore <a target="_blank" rel="noopener noreferrer" href="https://ionicframework.com/docs/components">UI Components</a></p>
-</div>

+ 0 - 27
src/app/explore-container/explore-container.component.scss

@@ -1,27 +0,0 @@
-#container {
-  text-align: center;
-
-  position: absolute;
-  left: 0;
-  right: 0;
-  top: 50%;
-  transform: translateY(-50%);
-}
-
-#container strong {
-  font-size: 20px;
-  line-height: 26px;
-}
-
-#container p {
-  font-size: 16px;
-  line-height: 22px;
-
-  color: #8c8c8c;
-
-  margin: 0;
-}
-
-#container a {
-  text-decoration: none;
-}

+ 0 - 24
src/app/explore-container/explore-container.component.spec.ts

@@ -1,24 +0,0 @@
-import { ComponentFixture, TestBed } from '@angular/core/testing';
-import { IonicModule } from '@ionic/angular';
-
-import { ExploreContainerComponent } from './explore-container.component';
-
-describe('ExploreContainerComponent', () => {
-  let component: ExploreContainerComponent;
-  let fixture: ComponentFixture<ExploreContainerComponent>;
-
-  beforeEach(async () => {
-    await TestBed.configureTestingModule({
-      declarations: [ExploreContainerComponent],
-      imports: [IonicModule.forRoot()]
-    }).compileComponents();
-
-    fixture = TestBed.createComponent(ExploreContainerComponent);
-    component = fixture.componentInstance;
-    fixture.detectChanges();
-  });
-
-  it('should create', () => {
-    expect(component).toBeTruthy();
-  });
-});

+ 0 - 12
src/app/explore-container/explore-container.component.ts

@@ -1,12 +0,0 @@
-import { Component, Input } from '@angular/core';
-
-@Component({
-  selector: 'app-explore-container',
-  templateUrl: './explore-container.component.html',
-  styleUrls: ['./explore-container.component.scss'],
-})
-export class ExploreContainerComponent {
-
-  @Input() name?: string;
-
-}

+ 0 - 14
src/app/explore-container/explore-container.module.ts

@@ -1,14 +0,0 @@
-import { NgModule } from '@angular/core';
-import { CommonModule } from '@angular/common';
-import { FormsModule } from '@angular/forms';
-
-import { IonicModule } from '@ionic/angular';
-
-import { ExploreContainerComponent } from './explore-container.component';
-
-@NgModule({
-  imports: [ CommonModule, FormsModule, IonicModule],
-  declarations: [ExploreContainerComponent],
-  exports: [ExploreContainerComponent]
-})
-export class ExploreContainerComponentModule {}

+ 0 - 17
src/app/tab-mine/tab-mine-routing.module.ts

@@ -1,17 +0,0 @@
-import { NgModule } from '@angular/core';
-import { Routes, RouterModule } from '@angular/router';
-
-import { TabMinePage } from './tab-mine.page';
-
-const routes: Routes = [
-  {
-    path: '',
-    component: TabMinePage
-  }
-];
-
-@NgModule({
-  imports: [RouterModule.forChild(routes)],
-  exports: [RouterModule],
-})
-export class TabMinePageRoutingModule {}

+ 0 - 22
src/app/tab-mine/tab-mine.module.ts

@@ -1,22 +0,0 @@
-import { NgModule } from '@angular/core';
-import { CommonModule } from '@angular/common';
-import { FormsModule } from '@angular/forms';
-
-import { IonicModule } from '@ionic/angular';
-
-import { TabMinePageRoutingModule } from './tab-mine-routing.module';
-
-import { TabMinePage } from './tab-mine.page';
-import { FmBubbleComponent } from '../chat/fm-bubble/fm-bubble.component';
-
-@NgModule({
-  imports: [
-    CommonModule,
-    FormsModule,
-    IonicModule,
-    TabMinePageRoutingModule,
-    FmBubbleComponent
-  ],
-  declarations: [TabMinePage]
-})
-export class TabMinePageModule {}

+ 0 - 23
src/app/tab-mine/tab-mine.page.html

@@ -1,23 +0,0 @@
-<ion-header [translucent]="true">
-  <ion-toolbar>
-    <ion-title>tab-mine</ion-title>
-  </ion-toolbar>
-</ion-header>
-
-<ion-content [fullscreen]="true">
-  <ion-header collapse="condense">
-    <ion-toolbar>
-      <ion-title size="large">tab-mine</ion-title>
-    </ion-toolbar>
-  </ion-header>
-
-  <fm-bubble></fm-bubble>
-  <fm-bubble color="#5cb85c"></fm-bubble>
-  <fm-bubble [color]="'red'"></fm-bubble>
-
-  <ion-select label="Default label" placeholder="Favorite Fruit">
-    <ion-select-option value="apple">Apple</ion-select-option>
-    <ion-select-option value="banana">Banana</ion-select-option>
-    <ion-select-option value="orange">Orange</ion-select-option>
-  </ion-select>
-</ion-content>

+ 0 - 0
src/app/tab-mine/tab-mine.page.scss


+ 0 - 17
src/app/tab-mine/tab-mine.page.spec.ts

@@ -1,17 +0,0 @@
-import { ComponentFixture, TestBed } from '@angular/core/testing';
-import { TabMinePage } from './tab-mine.page';
-
-describe('TabMinePage', () => {
-  let component: TabMinePage;
-  let fixture: ComponentFixture<TabMinePage>;
-
-  beforeEach(() => {
-    fixture = TestBed.createComponent(TabMinePage);
-    component = fixture.componentInstance;
-    fixture.detectChanges();
-  });
-
-  it('should create', () => {
-    expect(component).toBeTruthy();
-  });
-});

+ 0 - 15
src/app/tab-mine/tab-mine.page.ts

@@ -1,15 +0,0 @@
-import { Component, OnInit } from '@angular/core';
-
-@Component({
-  selector: 'app-tab-mine',
-  templateUrl: './tab-mine.page.html',
-  styleUrls: ['./tab-mine.page.scss'],
-})
-export class TabMinePage implements OnInit {
-
-  constructor() { }
-
-  ngOnInit() {
-  }
-
-}

+ 0 - 16
src/app/tab1/tab1-routing.module.ts

@@ -1,16 +0,0 @@
-import { NgModule } from '@angular/core';
-import { RouterModule, Routes } from '@angular/router';
-import { Tab1Page } from './tab1.page';
-
-const routes: Routes = [
-  {
-    path: '',
-    component: Tab1Page,
-  }
-];
-
-@NgModule({
-  imports: [RouterModule.forChild(routes)],
-  exports: [RouterModule]
-})
-export class Tab1PageRoutingModule {}

+ 0 - 20
src/app/tab1/tab1.module.ts

@@ -1,20 +0,0 @@
-import { IonicModule } from '@ionic/angular';
-import { NgModule } from '@angular/core';
-import { CommonModule } from '@angular/common';
-import { FormsModule } from '@angular/forms';
-import { Tab1Page } from './tab1.page';
-import { ExploreContainerComponentModule } from '../explore-container/explore-container.module';
-
-import { Tab1PageRoutingModule } from './tab1-routing.module';
-
-@NgModule({
-  imports: [
-    IonicModule,
-    CommonModule,
-    FormsModule,
-    ExploreContainerComponentModule,
-    Tab1PageRoutingModule
-  ],
-  declarations: [Tab1Page]
-})
-export class Tab1PageModule {}

+ 0 - 89
src/app/tab1/tab1.page.html

@@ -1,89 +0,0 @@
-<ion-header>
-  <ion-toolbar>
-    <ion-buttons slot="start">
-      <ion-button>
-        <ion-icon name="person-circle"></ion-icon>
-        登录
-      </ion-button>
-    </ion-buttons>
-    <ion-title>1小时玩转平台宝典</ion-title>
-    <ion-buttons slot="end">
-      <ion-button>
-        <ion-icon name="cube"></ion-icon>
-        买货
-        <ion-icon name="chevron-forward"></ion-icon>
-      </ion-button>
-    </ion-buttons>
-  </ion-toolbar>
-</ion-header>
-
-<ion-content>
-
-  <div class="banner">
-    <div class="envelope-top">领取卖货福利红包,开启卖货之旅</div>
-    <div class="envelope-middle">
-        <div class="avatar"></div>
-        <div class="avatar"></div>
-        <div class="avatar"></div>
-        <div class="buyers">20名采购商正在等你联系</div>
-    </div>
-    <div class="envelope-bottom">
-        <div class="left-info">3天前 兴盛果蔬 158****8660 正在采购 桃</div>
-        <div class="right-info">等你来聊</div>
-    </div>
-</div>
-  
-  <!-- 活动横幅 -->
-  <div class="activity-banner">
-    <!-- 信封上部 -->
-    <div class="envelope-top">
-      <p>领取卖货福利红包,开启卖货之旅</p>
-      <div class="envelope-content">
-        <div class="user-images">
-          <!-- 用户头像 -->
-        </div>
-        <p>20名采购商正在等你联系</p>
-      </div>
-      <ion-button expand="block">免费发布</ion-button>
-    </div>
-    <!-- 信封底部 -->
-    <div class="envelope-bottom">
-      <div class="left-info">3天前 兴盛果蔬 158****8660 正在采购 桃</div>
-      <div class="right-info">等你来聊</div>
-    </div>
-  </div>
-
-  <!-- 推荐客户区域 -->
-  <div class="recommend-customers">
-    <div class="title-row">
-      <h2>推荐客户</h2>
-      <p>每天早8点/晚6点更新</p>
-    </div>
-    <div class="carousel">
-      <!-- 商机卡片 -->
-    </div>
-  </div>
-
-  <!-- 金刚区 -->
-  <div class="quick-actions">
-    <!-- 第一行金刚区按钮 -->
-    <div class="action-row">
-      <!-- 按钮图标 -->
-    </div>
-    <!-- 第二行金刚区按钮 -->
-    <div class="action-row">
-      <!-- 按钮图标 -->
-    </div>
-  </div>
-
-  <!-- 轮播图区域 -->
-  <div class="carousel-area">
-    <!-- 促销海报轮播 -->
-  </div>
-</ion-content>
-
-<ion-fab vertical="bottom" horizontal="end">
-  <ion-fab-button>
-    <ion-icon name="add"></ion-icon>
-  </ion-fab-button>
-</ion-fab>

+ 0 - 47
src/app/tab1/tab1.page.scss

@@ -1,47 +0,0 @@
-.banner {
-    width: 100%;
-    height: 300px;
-    background: linear-gradient(135deg, #ff4d4d 50%, transparent 50%);
-    position: relative;
-    border-radius: 10px;
-    color: white;
-    padding: 20px;
-}
-
-.envelope-top {
-    font-size: 18px;
-    font-weight: bold;
-}
-
-.envelope-middle {
-    display: flex;
-    align-items: center;
-    margin-top: 20px;
-}
-
-.avatar {
-    width: 40px;
-    height: 40px;
-    border-radius: 50%;
-    margin-right: -15px;
-    border: 2px solid white;
-}
-
-.buyers {
-    margin-left: 20px;
-}
-
-.envelope-bottom {
-    background: rgba(0, 0, 0, 0.5);
-    border-radius: 0 0 10px 10px;
-    padding: 10px;
-    margin-top: 20px;
-}
-
-.left-info {
-    float: left;
-}
-
-.right-info {
-    float: right;
-}

+ 0 - 26
src/app/tab1/tab1.page.spec.ts

@@ -1,26 +0,0 @@
-import { ComponentFixture, TestBed } from '@angular/core/testing';
-import { IonicModule } from '@ionic/angular';
-
-import { ExploreContainerComponentModule } from '../explore-container/explore-container.module';
-
-import { Tab1Page } from './tab1.page';
-
-describe('Tab1Page', () => {
-  let component: Tab1Page;
-  let fixture: ComponentFixture<Tab1Page>;
-
-  beforeEach(async () => {
-    await TestBed.configureTestingModule({
-      declarations: [Tab1Page],
-      imports: [IonicModule.forRoot(), ExploreContainerComponentModule]
-    }).compileComponents();
-
-    fixture = TestBed.createComponent(Tab1Page);
-    component = fixture.componentInstance;
-    fixture.detectChanges();
-  });
-
-  it('should create', () => {
-    expect(component).toBeTruthy();
-  });
-});

+ 0 - 12
src/app/tab1/tab1.page.ts

@@ -1,12 +0,0 @@
-import { Component } from '@angular/core';
-
-@Component({
-  selector: 'app-tab1',
-  templateUrl: 'tab1.page.html',
-  styleUrls: ['tab1.page.scss']
-})
-export class Tab1Page {
-
-  constructor() {}
-
-}

+ 0 - 16
src/app/tab2/tab2-routing.module.ts

@@ -1,16 +0,0 @@
-import { NgModule } from '@angular/core';
-import { RouterModule, Routes } from '@angular/router';
-import { Tab2Page } from './tab2.page';
-
-const routes: Routes = [
-  {
-    path: '',
-    component: Tab2Page,
-  }
-];
-
-@NgModule({
-  imports: [RouterModule.forChild(routes)],
-  exports: [RouterModule]
-})
-export class Tab2PageRoutingModule {}

+ 0 - 20
src/app/tab2/tab2.module.ts

@@ -1,20 +0,0 @@
-import { IonicModule } from '@ionic/angular';
-import { NgModule } from '@angular/core';
-import { CommonModule } from '@angular/common';
-import { FormsModule } from '@angular/forms';
-import { Tab2Page } from './tab2.page';
-import { ExploreContainerComponentModule } from '../explore-container/explore-container.module';
-
-import { Tab2PageRoutingModule } from './tab2-routing.module';
-
-@NgModule({
-  imports: [
-    IonicModule,
-    CommonModule,
-    FormsModule,
-    ExploreContainerComponentModule,
-    Tab2PageRoutingModule
-  ],
-  declarations: [Tab2Page]
-})
-export class Tab2PageModule {}

+ 0 - 17
src/app/tab2/tab2.page.html

@@ -1,17 +0,0 @@
-<ion-header [translucent]="true">
-  <ion-toolbar>
-    <ion-title>
-      Tab 2
-    </ion-title>
-  </ion-toolbar>
-</ion-header>
-
-<ion-content [fullscreen]="true">
-  <ion-header collapse="condense">
-    <ion-toolbar>
-      <ion-title size="large">Tab 2</ion-title>
-    </ion-toolbar>
-  </ion-header>
-
-  <app-explore-container name="Tab 2 page"></app-explore-container>
-</ion-content>

+ 0 - 0
src/app/tab2/tab2.page.scss


+ 0 - 26
src/app/tab2/tab2.page.spec.ts

@@ -1,26 +0,0 @@
-import { ComponentFixture, TestBed } from '@angular/core/testing';
-import { IonicModule } from '@ionic/angular';
-
-import { ExploreContainerComponentModule } from '../explore-container/explore-container.module';
-
-import { Tab2Page } from './tab2.page';
-
-describe('Tab2Page', () => {
-  let component: Tab2Page;
-  let fixture: ComponentFixture<Tab2Page>;
-
-  beforeEach(async () => {
-    await TestBed.configureTestingModule({
-      declarations: [Tab2Page],
-      imports: [IonicModule.forRoot(), ExploreContainerComponentModule]
-    }).compileComponents();
-
-    fixture = TestBed.createComponent(Tab2Page);
-    component = fixture.componentInstance;
-    fixture.detectChanges();
-  });
-
-  it('should create', () => {
-    expect(component).toBeTruthy();
-  });
-});

+ 0 - 12
src/app/tab2/tab2.page.ts

@@ -1,12 +0,0 @@
-import { Component } from '@angular/core';
-
-@Component({
-  selector: 'app-tab2',
-  templateUrl: 'tab2.page.html',
-  styleUrls: ['tab2.page.scss']
-})
-export class Tab2Page {
-
-  constructor() {}
-
-}

+ 0 - 16
src/app/tab3/tab3-routing.module.ts

@@ -1,16 +0,0 @@
-import { NgModule } from '@angular/core';
-import { RouterModule, Routes } from '@angular/router';
-import { Tab3Page } from './tab3.page';
-
-const routes: Routes = [
-  {
-    path: '',
-    component: Tab3Page,
-  }
-];
-
-@NgModule({
-  imports: [RouterModule.forChild(routes)],
-  exports: [RouterModule]
-})
-export class Tab3PageRoutingModule {}

+ 0 - 20
src/app/tab3/tab3.module.ts

@@ -1,20 +0,0 @@
-import { IonicModule } from '@ionic/angular';
-import { NgModule } from '@angular/core';
-import { CommonModule } from '@angular/common';
-import { FormsModule } from '@angular/forms';
-import { Tab3Page } from './tab3.page';
-import { ExploreContainerComponentModule } from '../explore-container/explore-container.module';
-
-import { Tab3PageRoutingModule } from './tab3-routing.module';
-
-@NgModule({
-  imports: [
-    IonicModule,
-    CommonModule,
-    FormsModule,
-    ExploreContainerComponentModule,
-    Tab3PageRoutingModule
-  ],
-  declarations: [Tab3Page]
-})
-export class Tab3PageModule {}

+ 0 - 17
src/app/tab3/tab3.page.html

@@ -1,17 +0,0 @@
-<ion-header [translucent]="true">
-  <ion-toolbar>
-    <ion-title>
-      Tab 3
-    </ion-title>
-  </ion-toolbar>
-</ion-header>
-
-<ion-content [fullscreen]="true">
-  <ion-header collapse="condense">
-    <ion-toolbar>
-      <ion-title size="large">Tab 3</ion-title>
-    </ion-toolbar>
-  </ion-header>
-
-  <app-explore-container name="Tab 3 page"></app-explore-container>
-</ion-content>

+ 0 - 0
src/app/tab3/tab3.page.scss


+ 0 - 26
src/app/tab3/tab3.page.spec.ts

@@ -1,26 +0,0 @@
-import { ComponentFixture, TestBed } from '@angular/core/testing';
-import { IonicModule } from '@ionic/angular';
-
-import { ExploreContainerComponentModule } from '../explore-container/explore-container.module';
-
-import { Tab3Page } from './tab3.page';
-
-describe('Tab3Page', () => {
-  let component: Tab3Page;
-  let fixture: ComponentFixture<Tab3Page>;
-
-  beforeEach(async () => {
-    await TestBed.configureTestingModule({
-      declarations: [Tab3Page],
-      imports: [IonicModule.forRoot(), ExploreContainerComponentModule]
-    }).compileComponents();
-
-    fixture = TestBed.createComponent(Tab3Page);
-    component = fixture.componentInstance;
-    fixture.detectChanges();
-  });
-
-  it('should create', () => {
-    expect(component).toBeTruthy();
-  });
-});

+ 0 - 12
src/app/tab3/tab3.page.ts

@@ -1,12 +0,0 @@
-import { Component } from '@angular/core';
-
-@Component({
-  selector: 'app-tab3',
-  templateUrl: 'tab3.page.html',
-  styleUrls: ['tab3.page.scss']
-})
-export class Tab3Page {
-
-  constructor() {}
-
-}

+ 0 - 16
src/app/tab4/tab4-routing.module.ts

@@ -1,16 +0,0 @@
-import { NgModule } from '@angular/core';
-import { RouterModule, Routes } from '@angular/router';
-import { Tab4Page } from './tab4.page';
-
-const routes: Routes = [
-  {
-    path: '',
-    component: Tab4Page,
-  }
-];
-
-@NgModule({
-  imports: [RouterModule.forChild(routes)],
-  exports: [RouterModule]
-})
-export class Tab4PageRoutingModule {}

+ 0 - 20
src/app/tab4/tab4.module.ts

@@ -1,20 +0,0 @@
-import { IonicModule } from '@ionic/angular';
-import { NgModule } from '@angular/core';
-import { CommonModule } from '@angular/common';
-import { FormsModule } from '@angular/forms';
-import { Tab4Page } from './tab4.page';
-import { ExploreContainerComponentModule } from '../explore-container/explore-container.module';
-
-import { Tab4PageRoutingModule } from './tab4-routing.module';
-
-@NgModule({
-  imports: [
-    IonicModule,
-    CommonModule,
-    FormsModule,
-    ExploreContainerComponentModule,
-    Tab4PageRoutingModule
-  ],
-  declarations: [Tab4Page]
-})
-export class Tab4PageModule {}

+ 0 - 17
src/app/tab4/tab4.page.html

@@ -1,17 +0,0 @@
-<ion-header [translucent]="true">
-  <ion-toolbar>
-    <ion-title>
-      Tab 3
-    </ion-title>
-  </ion-toolbar>
-</ion-header>
-
-<ion-content [fullscreen]="true">
-  <ion-header collapse="condense">
-    <ion-toolbar>
-      <ion-title size="large">聊生意</ion-title>
-    </ion-toolbar>
-  </ion-header>
-
-  <app-explore-container name="Tab 3 page"></app-explore-container>
-</ion-content>

+ 0 - 0
src/app/tab4/tab4.page.scss


+ 0 - 26
src/app/tab4/tab4.page.spec.ts

@@ -1,26 +0,0 @@
-import { ComponentFixture, TestBed } from '@angular/core/testing';
-import { IonicModule } from '@ionic/angular';
-
-import { ExploreContainerComponentModule } from '../explore-container/explore-container.module';
-
-import { Tab4Page } from './tab4.page';
-
-describe('Tab4Page', () => {
-  let component: Tab4Page;
-  let fixture: ComponentFixture<Tab4Page>;
-
-  beforeEach(async () => {
-    await TestBed.configureTestingModule({
-      declarations: [Tab4Page],
-      imports: [IonicModule.forRoot(), ExploreContainerComponentModule]
-    }).compileComponents();
-
-    fixture = TestBed.createComponent(Tab4Page);
-    component = fixture.componentInstance;
-    fixture.detectChanges();
-  });
-
-  it('should create', () => {
-    expect(component).toBeTruthy();
-  });
-});

+ 0 - 12
src/app/tab4/tab4.page.ts

@@ -1,12 +0,0 @@
-import { Component } from '@angular/core';
-
-@Component({
-  selector: 'app-tab4',
-  templateUrl: 'tab4.page.html',
-  styleUrls: ['tab4.page.scss']
-})
-export class Tab4Page {
-
-  constructor() {}
-
-}

+ 0 - 47
src/app/tabs/tabs-routing.module.ts

@@ -1,47 +0,0 @@
-import { NgModule } from '@angular/core';
-import { RouterModule, Routes } from '@angular/router';
-import { TabsPage } from './tabs.page';
-
-const routes: Routes = [
-  {
-    path: 'tabs',
-    component: TabsPage,
-    children: [
-      {
-        path: 'tab1',
-        loadChildren: () => import('../tab1/tab1.module').then(m => m.Tab1PageModule)
-      },
-      {
-        path: 'tab2',
-        loadChildren: () => import('../tab2/tab2.module').then(m => m.Tab2PageModule)
-      },
-      {
-        path: 'tab3',
-        loadChildren: () => import('../tab3/tab3.module').then(m => m.Tab3PageModule)
-      },
-      {
-        path: 'tab4',
-        loadChildren: () => import('../tab4/tab4.module').then(m => m.Tab4PageModule)
-      },
-      {
-        path: 'tab-mine',
-        loadChildren: () => import('../tab-mine/tab-mine.module').then( m => m.TabMinePageModule)
-      },
-      {
-        path: '',
-        redirectTo: '/tabs/tab1',
-        pathMatch: 'full'
-      }
-    ]
-  },
-  {
-    path: '',
-    redirectTo: '/tabs/tab1',
-    pathMatch: 'full'
-  }
-];
-
-@NgModule({
-  imports: [RouterModule.forChild(routes)],
-})
-export class TabsPageRoutingModule {}

+ 0 - 19
src/app/tabs/tabs.module.ts

@@ -1,19 +0,0 @@
-import { IonicModule } from '@ionic/angular';
-import { NgModule } from '@angular/core';
-import { CommonModule } from '@angular/common';
-import { FormsModule } from '@angular/forms';
-
-import { TabsPageRoutingModule } from './tabs-routing.module';
-
-import { TabsPage } from './tabs.page';
-
-@NgModule({
-  imports: [
-    IonicModule,
-    CommonModule,
-    FormsModule,
-    TabsPageRoutingModule
-  ],
-  declarations: [TabsPage]
-})
-export class TabsPageModule {}

+ 0 - 49
src/app/tabs/tabs.page.html

@@ -1,49 +0,0 @@
-<ion-tabs>
-  <ion-tab-bar slot="bottom">
-    <ion-tab-button tab="tab1" href="/tabs/tab1">
-      <ion-icon name="home"></ion-icon>
-      <ion-label>首页</ion-label>
-    </ion-tab-button>
-
-    <ion-tab-button tab="tab2" href="/tabs/tab2">
-      <ion-icon name="search"></ion-icon>
-      <ion-label>找采购商</ion-label>
-    </ion-tab-button>
-
-    <ion-tab-button tab="tab3" href="/tabs/tab3">
-      <ion-icon name="people"></ion-icon>
-      <ion-label>我的客户</ion-label>
-    </ion-tab-button>
-
-    <ion-tab-button tab="tab4">
-      <ion-icon name="chatbubbles"></ion-icon>
-      <ion-label>聊生意</ion-label>
-    </ion-tab-button>
-
-    <ion-tab-button tab="tab-mine">
-      <ion-icon name="person"></ion-icon>
-      <ion-label>我的</ion-label>
-    </ion-tab-button>
-  </ion-tab-bar>
-</ion-tabs>
-
-<!-- <ion-tabs>
-
-  <ion-tab-bar slot="bottom">
-    <ion-tab-button tab="tab1" href="/tabs/tab1">
-      <ion-icon aria-hidden="true" name="triangle"></ion-icon>
-      <ion-label>Tab 1</ion-label>
-    </ion-tab-button>
-
-    <ion-tab-button tab="tab2" href="/tabs/tab2">
-      <ion-icon aria-hidden="true" name="ellipse"></ion-icon>
-      <ion-label>Tab 2</ion-label>
-    </ion-tab-button>
-
-    <ion-tab-button tab="tab3" href="/tabs/tab3">
-      <ion-icon aria-hidden="true" name="square"></ion-icon>
-      <ion-label>Tab 3</ion-label>
-    </ion-tab-button>
-  </ion-tab-bar>
-
-</ion-tabs> -->

+ 0 - 1
src/app/tabs/tabs.page.scss

@@ -1 +0,0 @@
-

+ 0 - 26
src/app/tabs/tabs.page.spec.ts

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

+ 0 - 12
src/app/tabs/tabs.page.ts

@@ -1,12 +0,0 @@
-import { Component } from '@angular/core';
-
-@Component({
-  selector: 'app-tabs',
-  templateUrl: 'tabs.page.html',
-  styleUrls: ['tabs.page.scss']
-})
-export class TabsPage {
-
-  constructor() {}
-
-}

二进制
src/assets/icon/favicon.png


+ 0 - 1
src/assets/shapes.svg

@@ -1 +0,0 @@
-<svg width="350" height="140" xmlns="http://www.w3.org/2000/svg" style="background:#f6f7f9"><g fill="none" fill-rule="evenodd"><path fill="#F04141" style="mix-blend-mode:multiply" d="M61.905-34.23l96.194 54.51-66.982 54.512L22 34.887z"/><circle fill="#10DC60" style="mix-blend-mode:multiply" cx="155.5" cy="135.5" r="57.5"/><path fill="#3880FF" style="mix-blend-mode:multiply" d="M208.538 9.513l84.417 15.392L223.93 93.93z"/><path fill="#FFCE00" style="mix-blend-mode:multiply" d="M268.625 106.557l46.332-26.75 46.332 26.75v53.5l-46.332 26.75-46.332-26.75z"/><circle fill="#7044FF" style="mix-blend-mode:multiply" cx="299.5" cy="9.5" r="38.5"/><rect fill="#11D3EA" style="mix-blend-mode:multiply" transform="rotate(-60 148.47 37.886)" x="143.372" y="-7.056" width="10.196" height="89.884" rx="5.098"/><path d="M-25.389 74.253l84.86 8.107c5.498.525 9.53 5.407 9.004 10.905a10 10 0 0 1-.057.477l-12.36 85.671a10.002 10.002 0 0 1-11.634 8.42l-86.351-15.226c-5.44-.959-9.07-6.145-8.112-11.584l13.851-78.551a10 10 0 0 1 10.799-8.219z" fill="#7044FF" style="mix-blend-mode:multiply"/><circle fill="#0CD1E8" style="mix-blend-mode:multiply" cx="273.5" cy="106.5" r="20.5"/></g></svg>

+ 0 - 3
src/environments/environment.prod.ts

@@ -1,3 +0,0 @@
-export const environment = {
-  production: true
-};

+ 0 - 16
src/environments/environment.ts

@@ -1,16 +0,0 @@
-// This file can be replaced during build by using the `fileReplacements` array.
-// `ng build` replaces `environment.ts` with `environment.prod.ts`.
-// The list of file replacements can be found in `angular.json`.
-
-export const environment = {
-  production: false
-};
-
-/*
- * For easier debugging in development mode, you can import the following file
- * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.
- *
- * This import should be commented out in production mode because it will have a negative impact
- * on performance if an error is thrown.
- */
-// import 'zone.js/plugins/zone-error';  // Included with Angular CLI.

+ 0 - 37
src/global.scss

@@ -1,37 +0,0 @@
-/*
- * App Global CSS
- * ----------------------------------------------------------------------------
- * Put style rules here that you want to apply globally. These styles are for
- * the entire app and not just one component. Additionally, this file can be
- * used as an entry point to import other CSS/Sass files to be included in the
- * output CSS.
- * For more information on global stylesheets, visit the documentation:
- * https://ionicframework.com/docs/layout/global-stylesheets
- */
-
-/* Core CSS required for Ionic components to work properly */
-@import "@ionic/angular/css/core.css";
-
-/* Basic CSS for apps built with Ionic */
-@import "@ionic/angular/css/normalize.css";
-@import "@ionic/angular/css/structure.css";
-@import "@ionic/angular/css/typography.css";
-@import "@ionic/angular/css/display.css";
-
-/* Optional CSS utils that can be commented out */
-@import "@ionic/angular/css/padding.css";
-@import "@ionic/angular/css/float-elements.css";
-@import "@ionic/angular/css/text-alignment.css";
-@import "@ionic/angular/css/text-transformation.css";
-@import "@ionic/angular/css/flex-utils.css";
-
-/**
- * Ionic Dark Mode
- * -----------------------------------------------------
- * For more info, please see:
- * https://ionicframework.com/docs/theming/dark-mode
- */
-
-/* @import "@ionic/angular/css/palettes/dark.always.css"; */
-/* @import "@ionic/angular/css/palettes/dark.class.css"; */
-@import "@ionic/angular/css/palettes/dark.system.css";

+ 0 - 26
src/index.html

@@ -1,26 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-
-<head>
-  <meta charset="utf-8" />
-  <title>智慧助农</title>
-
-  <base href="/" />
-
-  <meta name="color-scheme" content="light dark" />
-  <meta name="viewport" content="viewport-fit=cover, width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" />
-  <meta name="format-detection" content="telephone=no" />
-  <meta name="msapplication-tap-highlight" content="no" />
-
-  <link rel="icon" type="image/png" href="assets/icon/favicon.png" />
-
-  <!-- add to homescreen for ios -->
-  <meta name="apple-mobile-web-app-capable" content="yes" />
-  <meta name="apple-mobile-web-app-status-bar-style" content="black" />
-</head>
-
-<body>
-  <app-root></app-root>
-</body>
-
-</html>

+ 0 - 12
src/main.ts

@@ -1,12 +0,0 @@
-import { enableProdMode } from '@angular/core';
-import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
-
-import { AppModule } from './app/app.module';
-import { environment } from './environments/environment';
-
-if (environment.production) {
-  enableProdMode();
-}
-
-platformBrowserDynamic().bootstrapModule(AppModule)
-  .catch(err => console.log(err));

+ 0 - 55
src/polyfills.ts

@@ -1,55 +0,0 @@
-/**
- * This file includes polyfills needed by Angular and is loaded before the app.
- * You can add your own extra polyfills to this file.
- *
- * This file is divided into 2 sections:
- *   1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.
- *   2. Application imports. Files imported after ZoneJS that should be loaded before your main
- *      file.
- *
- * The current setup is for so-called "evergreen" browsers; the last versions of browsers that
- * automatically update themselves. This includes recent versions of Safari, Chrome (including
- * Opera), Edge on the desktop, and iOS and Chrome on mobile.
- *
- * Learn more in https://angular.io/guide/browser-support
- */
-
-/***************************************************************************************************
- * BROWSER POLYFILLS
- */
-
-/**
- * By default, zone.js will patch all possible macroTask and DomEvents
- * user can disable parts of macroTask/DomEvents patch by setting following flags
- * because those flags need to be set before `zone.js` being loaded, and webpack
- * will put import in the top of bundle, so user need to create a separate file
- * in this directory (for example: zone-flags.ts), and put the following flags
- * into that file, and then add the following code before importing zone.js.
- * import './zone-flags';
- *
- * The flags allowed in zone-flags.ts are listed here.
- *
- * The following flags will work for all browsers.
- *
- * (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame
- * (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick
- * (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames
- *
- *  in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js
- *  with the following flag, it will bypass `zone.js` patch for IE/Edge
- *
- *  (window as any).__Zone_enable_cross_context_check = true;
- *
- */
- 
-import './zone-flags';
-
-/***************************************************************************************************
- * Zone JS is required by default for Angular itself.
- */
-import 'zone.js';  // Included with Angular CLI.
-
-
-/***************************************************************************************************
- * APPLICATION IMPORTS
- */

+ 0 - 14
src/test.ts

@@ -1,14 +0,0 @@
-// This file is required by karma.conf.js and loads recursively all the .spec and framework files
-
-import 'zone.js/testing';
-import { getTestBed } from '@angular/core/testing';
-import {
-  BrowserDynamicTestingModule,
-  platformBrowserDynamicTesting
-} from '@angular/platform-browser-dynamic/testing';
-
-// First, initialize the Angular testing environment.
-getTestBed().initTestEnvironment(
-  BrowserDynamicTestingModule,
-  platformBrowserDynamicTesting(),
-);

+ 0 - 2
src/theme/variables.scss

@@ -1,2 +0,0 @@
-// For information on how to create your own theme, please see:
-// http://ionicframework.com/docs/theming/

+ 0 - 6
src/zone-flags.ts

@@ -1,6 +0,0 @@
-/**
- * Prevents Angular change detection from
- * running with certain Web Component callbacks
- */
-// eslint-disable-next-line no-underscore-dangle
-(window as any).__Zone_disable_customElements = true;