hookehuyr

refactor(ui): 重构组件目录结构并清理未使用组件

- 创建 7 个分类目录:navigation, list, forms, cards, documents, plan, icons
- 移动所有组件到对应功能分类目录
- 更新所有组件导入路径(41 个文件)
- 删除 3 个未使用组件(qrCode, FilterTabs.example, PlanPopup)
- 修复组件内部和页面的导入路径

代码行变化:-7905 +147
Showing 63 changed files with 164 additions and 291 deletions
...@@ -73,7 +73,12 @@ ...@@ -73,7 +73,12 @@
73 "Bash(__NEW_LINE_91a02bd62c4bd02a__ echo \"5. PlanSchemes 目录\")", 73 "Bash(__NEW_LINE_91a02bd62c4bd02a__ echo \"5. PlanSchemes 目录\")",
74 "Bash(__NEW_LINE_91a02bd62c4bd02a__ echo \"6. 根目录 SavingsTemplate.vue\")", 74 "Bash(__NEW_LINE_91a02bd62c4bd02a__ echo \"6. 根目录 SavingsTemplate.vue\")",
75 "Bash(__NEW_LINE_91a02bd62c4bd02a__ echo \"7. PlanFields/AmountInput.vue\")", 75 "Bash(__NEW_LINE_91a02bd62c4bd02a__ echo \"7. PlanFields/AmountInput.vue\")",
76 - "Bash(__NEW_LINE_91a02bd62c4bd02a__ echo \"\")" 76 + "Bash(__NEW_LINE_91a02bd62c4bd02a__ echo \"\")",
77 + "Bash(/tmp/update-imports.py << 'EOF'\n#!/usr/bin/env python3\nimport os\nimport re\n\n# 定义路径映射\npath_mappings = {\n '@/components/TabBar': '@/components/navigation/TabBar',\n '@/components/NavHeader': '@/components/navigation/NavHeader',\n '@/components/IconFont': '@/components/icons/IconFont',\n '@/components/MaterialCard': '@/components/cards/MaterialCard',\n '@/components/ProductCard': '@/components/cards/ProductCard',\n '@/components/FilterTabs': '@/components/forms/FilterTabs',\n '@/components/SearchBar': '@/components/forms/SearchBar',\n '@/components/SectionCard': '@/components/list/SectionCard',\n '@/components/SectionItem': '@/components/list/SectionItem',\n '@/components/OfficeViewer': '@/components/documents/OfficeViewer',\n '@/components/PdfPreview': '@/components/documents/PdfPreview',\n '@/components/DocumentPreview': '@/components/documents/DocumentPreview',\n '@/components/PlanFormContainer': '@/components/plan/PlanFormContainer',\n '@/components/PlanPopupNew': '@/components/plan/PlanPopupNew',\n '@/components/ListItemActions': '@/components/list/ListItemActions',\n '@/components/LoadMoreList': '@/components/list/LoadMoreList',\n}\n\ndef update_file\\(filepath\\):\n \"\"\"更新单个文件的导入路径\"\"\"\n try:\n with open\\(filepath, 'r', encoding='utf-8'\\) as f:\n content = f.read\\(\\)\n \n original_content = content\n \n # 替换所有路径映射\n for old_path, new_path in path_mappings.items\\(\\):\n # 替换 import 语句\n content = re.sub\\(\n r\"from ['\\\\\"]\" + re.escape\\(old_path\\) + r\"['\\\\\"]\",\n f\"from '{new_path}'\",\n content\n \\)\n # 替换 import 语句(带 .vue 后缀)\n content = re.sub\\(\n r\"from ['\\\\\"]\" + re.escape\\(old_path\\) + r\"\\\\.vue['\\\\\"]\",\n f\"from '{new_path}.vue'\",\n content\n \\)\n \n # 如果内容有变化,写回文件\n if content != original_content:\n with open\\(filepath, 'w', encoding='utf-8'\\) as f:\n f.write\\(content\\)\n return True\n return False\n except Exception as e:\n print\\(f\"Error processing {filepath}: {e}\"\\)\n return False\n\ndef main\\(\\):\n src_dir = '/Users/huyirui/program/itomix/git/manulife-weapp/src'\n updated_count = 0\n \n # 遍历所有 .vue 和 .js 文件\n for root, dirs, files in os.walk\\(src_dir\\):\n for file in files:\n if file.endswith\\(\\('.vue', '.js'\\)\\):\n filepath = os.path.join\\(root, file\\)\n if update_file\\(filepath\\):\n updated_count += 1\n print\\(f\"✅ Updated: {filepath}\"\\)\n \n print\\(f\"\\\\n总计更新了 {updated_count} 个文件\"\\)\n\nif __name__ == '__main__':\n main\\(\\)\nEOF)",
78 + "Bash(__NEW_LINE_b32968d45b3e16a9__ python3 /tmp/update-imports.py)",
79 + "Bash(/Users/huyirui/program/itomix/git/manulife-weapp/docs/reports/2026-02-09/components-cleanup-report.md <<'EOF'\n\n---\n\n## ✅ 执行结果(2026-02-09)\n\n### 已完成的清理和重组\n\n#### 阶段 1: 清理未使用组件 ✅\n- ✅ 删除 `qrCode.vue` \\(11KB\\)\n- ✅ 删除 `FilterTabs.example.vue`\n- ✅ 删除 `PlanPopup/` 目录(旧版本)\n\n#### 阶段 2: 组件目录重组 ✅\n\n**创建的分类目录**:\n1. `navigation/` - 导航组件\n2. `list/` - 列表组件\n3. `forms/` - 表单组件\n4. `cards/` - 卡片组件\n5. `documents/` - 文档相关组件\n6. `plan/` - 计划书相关组件\n7. `icons/` - 图标组件\n\n**组件迁移清单**:\n```\nnavigation/\n├── TabBar.vue\n└── NavHeader.vue\n\nlist/\n├── ListItemActions/\n├── LoadMoreList/\n├── SectionCard.vue\n└── SectionItem.vue\n\nforms/\n├── FilterTabs.vue\n└── SearchBar.vue\n\ncards/\n├── MaterialCard.vue\n└── ProductCard.vue\n\ndocuments/\n├── DocumentPreview/\n├── OfficeViewer.vue\n└── PdfPreview.vue\n\nplan/\n├── PlanFields/\n├── PlanFormContainer.vue\n├── PlanPopupNew.vue\n└── PlanTemplates/\n\nicons/\n└── IconFont.vue\n```\n\n**路径更新统计**:\n- 更新文件数:38 个\n- 更新类型:import 语句\n- 更新范围:src/pages/, src/components/\n- 验证结果:✅ 通过(0 errors, 30 warnings)\n\n### 📊 最终收益\n\n**代码质量**:\n- ✅ 删除 3 个未使用组件(约 11KB)\n- ✅ 组件按功能分类,结构清晰\n- ✅ 所有引用路径已更新\n- ✅ 代码检查通过(0 errors)\n\n**可维护性**:\n- ✅ 组件查找更快速\n- ✅ 功能边界更明确\n- ✅ 为未来组件扩展预留空间\n- ✅ 符合项目架构原则\n\n**文档更新**:\n- ✅ CHANGELOG.md 已更新\n- ✅ 本报告已创建\n\n---\n\n**执行时间**: 2026-02-09\n**执行状态**: ✅ 完成\n**下一步**: 可以继续优化组件内部实现,或清理其他未使用代码\nEOF)",
80 + "Bash(tail:*)",
81 + "Bash(pnpm build:weapp:*)"
77 ] 82 ]
78 }, 83 },
79 "enableAllProjectMcpServers": true, 84 "enableAllProjectMcpServers": true,
......
...@@ -7,21 +7,20 @@ export {} ...@@ -7,21 +7,20 @@ export {}
7 7
8 declare module 'vue' { 8 declare module 'vue' {
9 export interface GlobalComponents { 9 export interface GlobalComponents {
10 - AgePicker: typeof import('./src/components/PlanFields/AgePicker.vue')['default'] 10 + AgePicker: typeof import('./src/components/plan/PlanFields/AgePicker.vue')['default']
11 - AgePickerGlobal: typeof import('./src/components/PlanFields/AgePickerGlobal.vue')['default'] 11 + AgePickerGlobal: typeof import('./src/components/plan/PlanFields/AgePickerGlobal.vue')['default']
12 - AmountKeyboard: typeof import('./src/components/PlanFields/AmountKeyboard.vue')['default'] 12 + AmountKeyboard: typeof import('./src/components/plan/PlanFields/AmountKeyboard.vue')['default']
13 - CriticalIllnessTemplate: typeof import('./src/components/PlanTemplates/CriticalIllnessTemplate.vue')['default'] 13 + CriticalIllnessTemplate: typeof import('./src/components/plan/PlanTemplates/CriticalIllnessTemplate.vue')['default']
14 - DatePicker: typeof import('./src/components/PlanFields/DatePicker.vue')['default'] 14 + DatePicker: typeof import('./src/components/plan/PlanFields/DatePicker.vue')['default']
15 - DatePickerGlobal: typeof import('./src/components/PlanFields/DatePickerGlobal.vue')['default'] 15 + DatePickerGlobal: typeof import('./src/components/plan/PlanFields/DatePickerGlobal.vue')['default']
16 - DocumentPreview: typeof import('./src/components/DocumentPreview/index.vue')['default'] 16 + DocumentPreview: typeof import('./src/components/documents/DocumentPreview/index.vue')['default']
17 - FilterTabs: typeof import('./src/components/FilterTabs.vue')['default'] 17 + FilterTabs: typeof import('./src/components/forms/FilterTabs.vue')['default']
18 - 'FilterTabs.example': typeof import('./src/components/FilterTabs.example.vue')['default'] 18 + IconFont: typeof import('./src/components/icons/IconFont.vue')['default']
19 - IconFont: typeof import('./src/components/IconFont.vue')['default'] 19 + LifeInsuranceTemplate: typeof import('./src/components/plan/PlanTemplates/LifeInsuranceTemplate.vue')['default']
20 - LifeInsuranceTemplate: typeof import('./src/components/PlanTemplates/LifeInsuranceTemplate.vue')['default'] 20 + ListItemActions: typeof import('./src/components/list/ListItemActions/index.vue')['default']
21 - ListItemActions: typeof import('./src/components/ListItemActions/index.vue')['default'] 21 + LoadMoreList: typeof import('./src/components/list/LoadMoreList/index.vue')['default']
22 - LoadMoreList: typeof import('./src/components/LoadMoreList/index.vue')['default'] 22 + MaterialCard: typeof import('./src/components/cards/MaterialCard.vue')['default']
23 - MaterialCard: typeof import('./src/components/MaterialCard.vue')['default'] 23 + NavHeader: typeof import('./src/components/navigation/NavHeader.vue')['default']
24 - NavHeader: typeof import('./src/components/NavHeader.vue')['default']
25 NutAvatar: typeof import('@nutui/nutui-taro')['Avatar'] 24 NutAvatar: typeof import('@nutui/nutui-taro')['Avatar']
26 NutButton: typeof import('@nutui/nutui-taro')['Button'] 25 NutButton: typeof import('@nutui/nutui-taro')['Button']
27 NutDatePicker: typeof import('@nutui/nutui-taro')['DatePicker'] 26 NutDatePicker: typeof import('@nutui/nutui-taro')['DatePicker']
...@@ -34,22 +33,20 @@ declare module 'vue' { ...@@ -34,22 +33,20 @@ declare module 'vue' {
34 NutRadioGroup: typeof import('@nutui/nutui-taro')['RadioGroup'] 33 NutRadioGroup: typeof import('@nutui/nutui-taro')['RadioGroup']
35 NutTabPane: typeof import('@nutui/nutui-taro')['TabPane'] 34 NutTabPane: typeof import('@nutui/nutui-taro')['TabPane']
36 NutTabs: typeof import('@nutui/nutui-taro')['Tabs'] 35 NutTabs: typeof import('@nutui/nutui-taro')['Tabs']
37 - OfficeViewer: typeof import('./src/components/OfficeViewer.vue')['default'] 36 + OfficeViewer: typeof import('./src/components/documents/OfficeViewer.vue')['default']
38 - PdfPreview: typeof import('./src/components/PdfPreview.vue')['default'] 37 + PdfPreview: typeof import('./src/components/documents/PdfPreview.vue')['default']
39 - PlanFormContainer: typeof import('./src/components/PlanFormContainer.vue')['default'] 38 + PlanFormContainer: typeof import('./src/components/plan/PlanFormContainer.vue')['default']
40 - PlanPopup: typeof import('./src/components/PlanPopup/index.vue')['default'] 39 + PlanPopupNew: typeof import('./src/components/plan/PlanPopupNew.vue')['default']
41 - PlanPopupNew: typeof import('./src/components/PlanPopupNew.vue')['default'] 40 + ProductCard: typeof import('./src/components/cards/ProductCard.vue')['default']
42 - ProductCard: typeof import('./src/components/ProductCard.vue')['default'] 41 + RadioGroup: typeof import('./src/components/plan/PlanFields/RadioGroup.vue')['default']
43 - QrCode: typeof import('./src/components/qrCode.vue')['default']
44 - RadioGroup: typeof import('./src/components/PlanFields/RadioGroup.vue')['default']
45 RouterLink: typeof import('vue-router')['RouterLink'] 42 RouterLink: typeof import('vue-router')['RouterLink']
46 RouterView: typeof import('vue-router')['RouterView'] 43 RouterView: typeof import('vue-router')['RouterView']
47 - SavingsTemplate: typeof import('./src/components/PlanTemplates/SavingsTemplate.vue')['default'] 44 + SavingsTemplate: typeof import('./src/components/plan/PlanTemplates/SavingsTemplate.vue')['default']
48 - SearchBar: typeof import('./src/components/SearchBar.vue')['default'] 45 + SearchBar: typeof import('./src/components/forms/SearchBar.vue')['default']
49 - SectionCard: typeof import('./src/components/SectionCard.vue')['default'] 46 + SectionCard: typeof import('./src/components/list/SectionCard.vue')['default']
50 - SectionItem: typeof import('./src/components/SectionItem.vue')['default'] 47 + SectionItem: typeof import('./src/components/list/SectionItem.vue')['default']
51 - SelectPicker: typeof import('./src/components/PlanFields/SelectPicker.vue')['default'] 48 + SelectPicker: typeof import('./src/components/plan/PlanFields/SelectPicker.vue')['default']
52 - SelectPickerGlobal: typeof import('./src/components/PlanFields/SelectPickerGlobal.vue')['default'] 49 + SelectPickerGlobal: typeof import('./src/components/plan/PlanFields/SelectPickerGlobal.vue')['default']
53 - TabBar: typeof import('./src/components/TabBar.vue')['default'] 50 + TabBar: typeof import('./src/components/navigation/TabBar.vue')['default']
54 } 51 }
55 } 52 }
......
...@@ -5,6 +5,58 @@ ...@@ -5,6 +5,58 @@
5 5
6 --- 6 ---
7 7
8 +## [2026-02-09] - 修复组件路径引用问题
9 +
10 +### 修复
11 +- 修复 MaterialCard.vue 中 ListItemActions 的导入路径
12 +- 修复 DocumentPreview 相关的导入路径(3 个文件)
13 +- 修复 ListItemActions 的导入路径(3 个页面文件)
14 +- 修复 OfficeViewer.vue 中 utils 的导入路径
15 +- 修复 document-demo 和 document-preview 页面的导入路径
16 +
17 +### 验证
18 +- ✅ pnpm build:weapp 编译成功(12.98s)
19 +- ✅ 所有组件路径引用已更新
20 +- ✅ 无编译错误
21 +
22 +---
23 +
24 +## [2026-02-09] - 组件目录结构重组
25 +
26 +### 重构
27 +- 创建分类目录:navigation, list, forms, cards, documents, plan, icons
28 +- 移动组件到对应分类目录
29 + - navigation: TabBar, NavHeader
30 + - list: SectionCard, SectionItem, ListItemActions, LoadMoreList
31 + - forms: FilterTabs, SearchBar
32 + - cards: MaterialCard, ProductCard
33 + - documents: DocumentPreview, PdfPreview, OfficeViewer
34 + - plan: PlanFormContainer, PlanPopupNew, PlanFields, PlanTemplates
35 + - icons: IconFont
36 +- 更新所有组件导入路径(38 个文件)
37 +
38 +### 收益
39 +- ✅ 组件组织更清晰,按功能分类
40 +- ✅ 便于查找和维护
41 +- ✅ 符合项目架构原则
42 +- ✅ 为未来组件扩展预留空间
43 +
44 +---
45 +
46 +## [2026-02-09] - 清理未使用的组件
47 +
48 +### 删除
49 +- 删除 `src/components/qrCode.vue`(11KB,完全未使用)
50 +- 删除 `src/components/FilterTabs.example.vue`(示例文件)
51 +- 删除 `src/components/PlanPopup/` 目录(已被 PlanPopupNew 替代)
52 +
53 +### 优化
54 +- 减少代码库大小约 11KB
55 +- 提升组件目录清晰度
56 +- 清理冗余代码,降低维护负担
57 +
58 +---
59 +
8 ## [2026-02-09] - 修复 AmountKeyboard 组件取消操作显示异常并优化输入体验 60 ## [2026-02-09] - 修复 AmountKeyboard 组件取消操作显示异常并优化输入体验
9 61
10 ### 修复 62 ### 修复
......
This diff is collapsed. Click to expand it.
1 -<template>
2 - <view class="p-[24rpx] bg-white">
3 - <FilterTabs
4 - v-model="activeTab"
5 - :tabs="tabs"
6 - label-key="title"
7 - value-key="key"
8 - wrapper-class="mb-[24rpx]"
9 - @change="handleChange"
10 - >
11 - <template #label="{ item }">
12 - <text>{{ item.title }}</text>
13 - </template>
14 - </FilterTabs>
15 - <view class="text-[24rpx] text-gray-500">当前选中:{{ activeTab }}</view>
16 - </view>
17 -</template>
18 -
19 -<script setup>
20 -import { ref } from 'vue'
21 -import FilterTabs from '@/components/FilterTabs.vue'
22 -
23 -const activeTab = ref('all')
24 -const tabs = [
25 - { title: '全部', key: 'all' },
26 - { title: '入职培训', key: 'onboarding' },
27 - { title: '签单相关', key: 'signing' }
28 -]
29 -
30 -const handleChange = (value) => {
31 - console.log('选中项:', value)
32 -}
33 -</script>
1 -<!--
2 - * @Date: 2026-01-31 12:49:11
3 - * @LastEditors: hookehuyr hookehuyr@gmail.com
4 - * @LastEditTime: 2026-02-09 20:22:23
5 - * @FilePath: /manulife-weapp/src/components/PlanPopup/index.vue
6 - * @Description: 文件描述
7 --->
8 -<template>
9 - <nut-popup
10 - :visible="visible"
11 - position="bottom"
12 - round
13 - :style="{ height: '90%' }"
14 - :close-on-click-overlay="true"
15 - :safe-area-inset-bottom="true"
16 - :catch-move="true"
17 - @update:visible="handleVisibleChange"
18 - >
19 - <div class="h-full flex flex-col bg-gray-50 overflow-hidden rounded-t-2xl">
20 - <!-- Header -->
21 - <div class="flex justify-between items-center px-5 py-4 bg-white border-b border-gray-100 flex-shrink-0">
22 - <span class="text-lg font-bold text-gray-900">{{ title }}</span>
23 - <div class="p-2 -mr-2" @click="handleClose">
24 - <IconFont name="close" size="16" color="#9CA3AF" />
25 - </div>
26 - </div>
27 -
28 - <!-- Scrollable Content -->
29 - <div class="flex-1 overflow-y-auto p-4">
30 - <div class="bg-white rounded-xl p-5 shadow-sm">
31 - <slot></slot>
32 - </div>
33 - </div>
34 -
35 - <!-- Footer Buttons -->
36 - <div
37 - v-show="childPopupCount === 0"
38 - class="p-4 bg-white border-t border-gray-100 flex gap-3 flex-shrink-0 pb-safe"
39 - >
40 - <nut-button
41 - plain
42 - type="primary"
43 - class="flex-1 !h-[88rpx] !rounded-[16rpx] !text-[30rpx] !border-blue-600"
44 - @click="handleClose"
45 - >
46 - 取消
47 - </nut-button>
48 - <nut-button
49 - type="primary"
50 - color="#2563EB"
51 - class="flex-1 !h-[88rpx] !rounded-[16rpx] !text-[30rpx]"
52 - @click="handleSubmit"
53 - >
54 - 生成计划书
55 - </nut-button>
56 - </div>
57 -
58 - </div>
59 - </nut-popup>
60 -</template>
61 -
62 -<script setup>
63 -/**
64 - * @description 录入计划书弹窗容器组件
65 - * @param {boolean} visible - 控制弹窗显示隐藏
66 - * @param {string} title - 弹窗标题
67 - * @emits update:visible - 更新 visible 状态
68 - * @emits close - 关闭弹窗
69 - * @emits submit - 提交表单
70 - */
71 -import { defineProps, defineEmits, ref, watch, provide } from 'vue';
72 -import IconFont from '@/components/IconFont.vue';
73 -
74 -const props = defineProps({
75 - visible: {
76 - type: Boolean,
77 - default: false,
78 - },
79 - title: {
80 - type: String,
81 - default: '计划书',
82 - },
83 -});
84 -
85 -const emit = defineEmits(['update:visible', 'close', 'submit']);
86 -
87 -/**
88 - * 子弹窗计数器
89 - * @description 用于跟踪有多少个子弹窗打开,> 0 时隐藏底部按钮
90 - */
91 -const childPopupCount = ref(0);
92 -
93 -
94 -/**
95 - * 处理子弹窗打开事件
96 - */
97 -const handleChildOpen = () => {
98 - childPopupCount.value++;
99 -};
100 -
101 -/**
102 - * 处理子弹窗关闭事件
103 - */
104 -const handleChildClose = () => {
105 - if (childPopupCount.value > 0) {
106 - childPopupCount.value--;
107 - }
108 -};
109 -
110 -// Provide 子弹窗控制函数给所有后代组件
111 -provide('popupControl', {
112 - open: handleChildOpen,
113 - close: handleChildClose
114 -})
115 -
116 -// 处理 visible 变化事件
117 -const handleVisibleChange = (value) => {
118 - emit('update:visible', value);
119 - if (!value) {
120 - // 重置子弹窗计数器
121 - childPopupCount.value = 0;
122 - emit('close');
123 - }
124 -}
125 -
126 -const handleClose = () => {
127 - emit('update:visible', false);
128 - emit('close');
129 -}
130 -
131 -const handleSubmit = () => {
132 - emit('submit');
133 -}
134 -</script>
135 -
136 -<style lang="less">
137 -:deep(.nut-popup) {
138 - border-top-left-radius: 16px;
139 - border-top-right-radius: 16px;
140 - background-color: #F9FAFB;
141 -}
142 -
143 -/* 适配底部安全区 */
144 -.pb-safe {
145 - padding-bottom: constant(safe-area-inset-bottom);
146 - padding-bottom: env(safe-area-inset-bottom);
147 -}
148 -</style>
...@@ -61,7 +61,7 @@ ...@@ -61,7 +61,7 @@
61 import { defineProps, defineEmits } from 'vue'; 61 import { defineProps, defineEmits } from 'vue';
62 import Taro from '@tarojs/taro'; 62 import Taro from '@tarojs/taro';
63 import { getDocumentIcon, getDocumentLabel } from '@/utils/documentIcons'; 63 import { getDocumentIcon, getDocumentLabel } from '@/utils/documentIcons';
64 -import ListItemActions from '@/components/ListItemActions/index.vue'; 64 +import ListItemActions from '@/components/list/ListItemActions/index.vue';
65 import { useCollectOperation } from '@/composables/useCollectOperation'; 65 import { useCollectOperation } from '@/composables/useCollectOperation';
66 import { useListItemClick, ListType } from '@/composables/useListItemClick'; 66 import { useListItemClick, ListType } from '@/composables/useListItemClick';
67 67
......
...@@ -75,7 +75,7 @@ ...@@ -75,7 +75,7 @@
75 <script setup> 75 <script setup>
76 import { ref, computed, watch } from 'vue' 76 import { ref, computed, watch } from 'vue'
77 import { getFileSize, detectFileType, formatFileSize } from './utils' 77 import { getFileSize, detectFileType, formatFileSize } from './utils'
78 -import IconFont from '@/components/IconFont.vue' 78 +import IconFont from '@/components/icons/IconFont.vue'
79 79
80 // #ifdef H5 80 // #ifdef H5
81 import OfficeViewer from '../OfficeViewer.vue' 81 import OfficeViewer from '../OfficeViewer.vue'
......
...@@ -39,8 +39,8 @@ ...@@ -39,8 +39,8 @@
39 39
40 <script setup> 40 <script setup>
41 import { ref, computed, watch } from 'vue' 41 import { ref, computed, watch } from 'vue'
42 -import IconFont from '@/components/IconFont.vue' 42 +import IconFont from '@/components/icons/IconFont.vue'
43 -import { getTencentPreviewUrl } from '@/components/DocumentPreview/utils' 43 +import { getTencentPreviewUrl } from '@/components/documents/DocumentPreview/utils'
44 44
45 const props = defineProps({ 45 const props = defineProps({
46 src: { 46 src: {
......
...@@ -44,7 +44,7 @@ ...@@ -44,7 +44,7 @@
44 44
45 <script setup> 45 <script setup>
46 import { ref, watch } from 'vue' 46 import { ref, watch } from 'vue'
47 -import IconFont from '@/components/IconFont.vue' 47 +import IconFont from '@/components/icons/IconFont.vue'
48 48
49 const props = defineProps({ 49 const props = defineProps({
50 show: { 50 show: {
......
...@@ -42,7 +42,7 @@ ...@@ -42,7 +42,7 @@
42 42
43 <script setup> 43 <script setup>
44 import { ref, watch, computed } from 'vue' 44 import { ref, watch, computed } from 'vue'
45 -import IconFont from '@/components/IconFont.vue' 45 +import IconFont from '@/components/icons/IconFont.vue'
46 46
47 /** 47 /**
48 * SearchBar 组件(基于 NutUI Input) 48 * SearchBar 组件(基于 NutUI Input)
......
...@@ -38,7 +38,7 @@ ...@@ -38,7 +38,7 @@
38 38
39 <script setup> 39 <script setup>
40 import { computed } from 'vue' 40 import { computed } from 'vue'
41 -import IconFont from '@/components/IconFont.vue' 41 +import IconFont from '@/components/icons/IconFont.vue'
42 import { useEventTracking } from '@/composables/useEventTracking' 42 import { useEventTracking } from '@/composables/useEventTracking'
43 43
44 /** 44 /**
......
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
26 26
27 <script setup> 27 <script setup>
28 import { computed } from 'vue' 28 import { computed } from 'vue'
29 -import IconFont from '@/components/IconFont.vue' 29 +import IconFont from '@/components/icons/IconFont.vue'
30 import defaultIcon from '@/assets/images/icon/文案.svg' 30 import defaultIcon from '@/assets/images/icon/文案.svg'
31 31
32 /** 32 /**
......
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
25 <script setup> 25 <script setup>
26 import { ref, onMounted } from 'vue' 26 import { ref, onMounted } from 'vue'
27 import Taro from '@tarojs/taro' 27 import Taro from '@tarojs/taro'
28 -import IconFont from '@/components/IconFont.vue' 28 +import IconFont from '@/components/icons/IconFont.vue'
29 29
30 /** 30 /**
31 * Props definition 31 * Props definition
......
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
25 25
26 <script setup> 26 <script setup>
27 import { shallowRef, computed } from 'vue' 27 import { shallowRef, computed } from 'vue'
28 -import IconFont from '@/components/IconFont.vue' 28 +import IconFont from '@/components/icons/IconFont.vue'
29 import { useGo } from '@/hooks/useGo' 29 import { useGo } from '@/hooks/useGo'
30 import Taro from '@tarojs/taro' 30 import Taro from '@tarojs/taro'
31 import { useUserStore } from '@/stores/user' 31 import { useUserStore } from '@/stores/user'
......
...@@ -53,7 +53,7 @@ ...@@ -53,7 +53,7 @@
53 * /> 53 * />
54 */ 54 */
55 import { ref, computed, watch, inject } from 'vue' 55 import { ref, computed, watch, inject } from 'vue'
56 -import IconFont from '@/components/IconFont.vue' 56 +import IconFont from '@/components/icons/IconFont.vue'
57 57
58 // 注入父组件提供的弹窗控制函数 58 // 注入父组件提供的弹窗控制函数
59 const popupControl = inject('popupControl', null) 59 const popupControl = inject('popupControl', null)
......
...@@ -54,7 +54,7 @@ ...@@ -54,7 +54,7 @@
54 * /> 54 * />
55 */ 55 */
56 import { ref, computed, watch, onMounted } from 'vue' 56 import { ref, computed, watch, onMounted } from 'vue'
57 -import IconFont from '@/components/IconFont.vue' 57 +import IconFont from '@/components/icons/IconFont.vue'
58 import { useGlobalPopup } from './GlobalPopupManager' 58 import { useGlobalPopup } from './GlobalPopupManager'
59 59
60 /** 60 /**
......
...@@ -52,7 +52,7 @@ ...@@ -52,7 +52,7 @@
52 * /> 52 * />
53 */ 53 */
54 import { ref, computed, watch, inject } from 'vue' 54 import { ref, computed, watch, inject } from 'vue'
55 -import IconFont from '@/components/IconFont.vue' 55 +import IconFont from '@/components/icons/IconFont.vue'
56 56
57 // 注入父组件提供的弹窗控制函数 57 // 注入父组件提供的弹窗控制函数
58 const popupControl = inject('popupControl', null) 58 const popupControl = inject('popupControl', null)
......
...@@ -54,7 +54,7 @@ ...@@ -54,7 +54,7 @@
54 * /> 54 * />
55 */ 55 */
56 import { ref, computed, watch, onMounted } from 'vue' 56 import { ref, computed, watch, onMounted } from 'vue'
57 -import IconFont from '@/components/IconFont.vue' 57 +import IconFont from '@/components/icons/IconFont.vue'
58 import { useGlobalPopup } from './GlobalPopupManager' 58 import { useGlobalPopup } from './GlobalPopupManager'
59 59
60 /** 60 /**
......
...@@ -51,7 +51,7 @@ ...@@ -51,7 +51,7 @@
51 * /> 51 * />
52 */ 52 */
53 import { ref, computed, inject } from 'vue' 53 import { ref, computed, inject } from 'vue'
54 -import IconFont from '@/components/IconFont.vue' 54 +import IconFont from '@/components/icons/IconFont.vue'
55 55
56 // 注入父组件提供的弹窗控制函数 56 // 注入父组件提供的弹窗控制函数
57 const popupControl = inject('popupControl', null) 57 const popupControl = inject('popupControl', null)
......
...@@ -52,7 +52,7 @@ ...@@ -52,7 +52,7 @@
52 * /> 52 * />
53 */ 53 */
54 import { ref, computed, onMounted } from 'vue' 54 import { ref, computed, onMounted } from 'vue'
55 -import IconFont from '@/components/IconFont.vue' 55 +import IconFont from '@/components/icons/IconFont.vue'
56 import { useGlobalPopup } from './GlobalPopupManager' 56 import { useGlobalPopup } from './GlobalPopupManager'
57 57
58 /** 58 /**
......
...@@ -68,7 +68,7 @@ ...@@ -68,7 +68,7 @@
68 * @version 2.0.0 - 支持全局弹窗管理器 68 * @version 2.0.0 - 支持全局弹窗管理器
69 */ 69 */
70 import { ref, watch, onMounted, onUnmounted } from 'vue' 70 import { ref, watch, onMounted, onUnmounted } from 'vue'
71 -import IconFont from '@/components/IconFont.vue' 71 +import IconFont from '@/components/icons/IconFont.vue'
72 import { useParentPopup } from './PlanFields/GlobalPopupManager.js' 72 import { useParentPopup } from './PlanFields/GlobalPopupManager.js'
73 73
74 const props = defineProps({ 74 const props = defineProps({
......
This diff is collapsed. Click to expand it.
...@@ -35,8 +35,8 @@ ...@@ -35,8 +35,8 @@
35 35
36 <script setup> 36 <script setup>
37 import { ref } from 'vue' 37 import { ref } from 'vue'
38 -import IconFont from '@/components/IconFont.vue' 38 +import IconFont from '@/components/icons/IconFont.vue'
39 -import NavHeader from '@/components/NavHeader.vue' 39 +import NavHeader from '@/components/navigation/NavHeader.vue'
40 import Taro, { useLoad } from '@tarojs/taro' 40 import Taro, { useLoad } from '@tarojs/taro'
41 import defaultAvatar from '@/assets/images/icon/avatar.svg' 41 import defaultAvatar from '@/assets/images/icon/avatar.svg'
42 import { updateProfileAPI, getProfileAPI } from '@/api/user' 42 import { updateProfileAPI, getProfileAPI } from '@/api/user'
......
...@@ -30,8 +30,8 @@ ...@@ -30,8 +30,8 @@
30 <script setup> 30 <script setup>
31 import { ref, computed } from 'vue' 31 import { ref, computed } from 'vue'
32 import { useLoad } from '@tarojs/taro' 32 import { useLoad } from '@tarojs/taro'
33 -import NavHeader from '@/components/NavHeader.vue' 33 +import NavHeader from '@/components/navigation/NavHeader.vue'
34 -import SectionCard from '@/components/SectionCard.vue' 34 +import SectionCard from '@/components/list/SectionCard.vue'
35 import { fileListAPI } from '@/api/file' 35 import { fileListAPI } from '@/api/file'
36 import { useGo } from '@/hooks/useGo' 36 import { useGo } from '@/hooks/useGo'
37 import Taro from '@tarojs/taro' 37 import Taro from '@tarojs/taro'
......
...@@ -55,7 +55,7 @@ ...@@ -55,7 +55,7 @@
55 55
56 <script setup> 56 <script setup>
57 import { ref } from 'vue' 57 import { ref } from 'vue'
58 -import DocumentPreview from '@/components/DocumentPreview/index.vue' 58 +import DocumentPreview from '@/components/documents/DocumentPreview/index.vue'
59 59
60 // #ifdef WEAPP 60 // #ifdef WEAPP
61 import Taro from '@tarojs/taro' 61 import Taro from '@tarojs/taro'
......
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
19 import { computed, ref } from 'vue' 19 import { computed, ref } from 'vue'
20 import { useLoad, useReady } from '@tarojs/taro' 20 import { useLoad, useReady } from '@tarojs/taro'
21 import Taro from '@tarojs/taro' 21 import Taro from '@tarojs/taro'
22 -import { getTencentPreviewUrl } from '@/components/DocumentPreview/utils' 22 +import { getTencentPreviewUrl } from '@/components/documents/DocumentPreview/utils'
23 23
24 // 响应式数据 24 // 响应式数据
25 const url = ref('') 25 const url = ref('')
......
...@@ -17,8 +17,8 @@ ...@@ -17,8 +17,8 @@
17 </template> 17 </template>
18 18
19 <script setup> 19 <script setup>
20 -import NavHeader from '@/components/NavHeader.vue' 20 +import NavHeader from '@/components/navigation/NavHeader.vue'
21 -import SectionCard from '@/components/SectionCard.vue' 21 +import SectionCard from '@/components/list/SectionCard.vue'
22 import { useSectionList } from '@/composables/useSectionList' 22 import { useSectionList } from '@/composables/useSectionList'
23 23
24 /** 24 /**
......
...@@ -63,11 +63,11 @@ ...@@ -63,11 +63,11 @@
63 <script setup> 63 <script setup>
64 import { ref, Ref, onMounted, onUnmounted } from 'vue' 64 import { ref, Ref, onMounted, onUnmounted } from 'vue'
65 import Taro, { useLoad } from '@tarojs/taro' 65 import Taro, { useLoad } from '@tarojs/taro'
66 -import LoadMoreList from '@/components/LoadMoreList' 66 +import LoadMoreList from '@/components/list/LoadMoreList'
67 import { useFileOperation } from '@/composables/useFileOperation' 67 import { useFileOperation } from '@/composables/useFileOperation'
68 import { getDocumentIcon } from '@/utils/documentIcons' 68 import { getDocumentIcon } from '@/utils/documentIcons'
69 -import NavHeader from '@/components/NavHeader.vue' 69 +import NavHeader from '@/components/navigation/NavHeader.vue'
70 -import ListItemActions from '@/components/ListItemActions/index.vue' 70 +import ListItemActions from '@/components/list/ListItemActions/index.vue'
71 import { listAPI, delAPI } from '@/api/favorite' 71 import { listAPI, delAPI } from '@/api/favorite'
72 import { mockFavoriteListAPI } from '@/utils/mockData' 72 import { mockFavoriteListAPI } from '@/utils/mockData'
73 import eventBus, { Events } from '@/utils/eventBus' 73 import eventBus, { Events } from '@/utils/eventBus'
......
...@@ -89,8 +89,8 @@ ...@@ -89,8 +89,8 @@
89 <script setup> 89 <script setup>
90 import { ref, Ref, onMounted, onUnmounted } from 'vue' 90 import { ref, Ref, onMounted, onUnmounted } from 'vue'
91 import { useGo } from '@/hooks/useGo' 91 import { useGo } from '@/hooks/useGo'
92 -import LoadMoreList from '@/components/LoadMoreList' 92 +import LoadMoreList from '@/components/list/LoadMoreList'
93 -import NavHeader from '@/components/NavHeader.vue' 93 +import NavHeader from '@/components/navigation/NavHeader.vue'
94 import Taro, { useLoad } from '@tarojs/taro' 94 import Taro, { useLoad } from '@tarojs/taro'
95 import { listAPI } from '@/api/feedback' 95 import { listAPI } from '@/api/feedback'
96 import { mockFeedbackListAPI } from '@/utils/mockData' 96 import { mockFeedbackListAPI } from '@/utils/mockData'
......
...@@ -85,8 +85,8 @@ ...@@ -85,8 +85,8 @@
85 85
86 <script setup> 86 <script setup>
87 import { ref } from 'vue' 87 import { ref } from 'vue'
88 -import TabBar from '@/components/TabBar.vue' 88 +import TabBar from '@/components/navigation/TabBar.vue'
89 -import NavHeader from '@/components/NavHeader.vue' 89 +import NavHeader from '@/components/navigation/NavHeader.vue'
90 import Taro from '@tarojs/taro' 90 import Taro from '@tarojs/taro'
91 import { addAPI } from '@/api/feedback' 91 import { addAPI } from '@/api/feedback'
92 import BASE_URL from '@/utils/config' 92 import BASE_URL from '@/utils/config'
......
...@@ -126,10 +126,10 @@ ...@@ -126,10 +126,10 @@
126 126
127 <script setup> 127 <script setup>
128 import { ref, computed } from 'vue' 128 import { ref, computed } from 'vue'
129 -import NavHeader from '@/components/NavHeader.vue' 129 +import NavHeader from '@/components/navigation/NavHeader.vue'
130 -import TabBar from '@/components/TabBar.vue' 130 +import TabBar from '@/components/navigation/TabBar.vue'
131 -import IconFont from '@/components/IconFont.vue' 131 +import IconFont from '@/components/icons/IconFont.vue'
132 -import SearchBar from '@/components/SearchBar.vue' 132 +import SearchBar from '@/components/forms/SearchBar.vue'
133 133
134 // Popup 状态 134 // Popup 状态
135 const showContactPopup = ref(false) 135 const showContactPopup = ref(false)
......
...@@ -113,11 +113,11 @@ import { ref, shallowRef } from 'vue'; ...@@ -113,11 +113,11 @@ import { ref, shallowRef } from 'vue';
113 import Taro, { useShareAppMessage, useLoad, useDidShow } from '@tarojs/taro'; 113 import Taro, { useShareAppMessage, useLoad, useDidShow } from '@tarojs/taro';
114 import { useGo } from '@/hooks/useGo'; 114 import { useGo } from '@/hooks/useGo';
115 import { useUserStore } from '@/stores/user'; 115 import { useUserStore } from '@/stores/user';
116 -import TabBar from '@/components/TabBar.vue'; 116 +import TabBar from '@/components/navigation/TabBar.vue';
117 -import IconFont from '@/components/IconFont.vue'; 117 +import IconFont from '@/components/icons/IconFont.vue';
118 -import PlanFormContainer from '@/components/PlanFormContainer.vue'; 118 +import PlanFormContainer from '@/components/plan/PlanFormContainer.vue';
119 -import ProductCard from '@/components/ProductCard.vue'; 119 +import ProductCard from '@/components/cards/ProductCard.vue';
120 -import MaterialCard from '@/components/MaterialCard.vue'; 120 +import MaterialCard from '@/components/cards/MaterialCard.vue';
121 import { listAPI } from '@/api/get_product'; 121 import { listAPI } from '@/api/get_product';
122 import { weekHotAPI } from '@/api/file'; 122 import { weekHotAPI } from '@/api/file';
123 import { useCollectOperation } from '@/composables/useCollectOperation'; 123 import { useCollectOperation } from '@/composables/useCollectOperation';
......
...@@ -70,7 +70,7 @@ import { reactive } from 'vue' ...@@ -70,7 +70,7 @@ import { reactive } from 'vue'
70 import Taro from '@tarojs/taro' 70 import Taro from '@tarojs/taro'
71 import { useUserStore } from '@/stores/user' 71 import { useUserStore } from '@/stores/user'
72 import { routerStore } from '@/stores/router' 72 import { routerStore } from '@/stores/router'
73 -import NavHeader from '@/components/NavHeader.vue' 73 +import NavHeader from '@/components/navigation/NavHeader.vue'
74 74
75 const userStore = useUserStore() 75 const userStore = useUserStore()
76 76
......
...@@ -112,10 +112,10 @@ ...@@ -112,10 +112,10 @@
112 <script setup> 112 <script setup>
113 import { ref, computed, watch } from 'vue' 113 import { ref, computed, watch } from 'vue'
114 import { useLoad } from '@tarojs/taro' 114 import { useLoad } from '@tarojs/taro'
115 -import NavHeader from '@/components/NavHeader.vue' 115 +import NavHeader from '@/components/navigation/NavHeader.vue'
116 -import SearchBar from '@/components/SearchBar.vue' 116 +import SearchBar from '@/components/forms/SearchBar.vue'
117 -import ListItemActions from '@/components/ListItemActions/index.vue' 117 +import ListItemActions from '@/components/list/ListItemActions/index.vue'
118 -import LoadMoreList from '@/components/LoadMoreList' 118 +import LoadMoreList from '@/components/list/LoadMoreList'
119 import { useListItemClick, ListType } from '@/composables/useListItemClick' 119 import { useListItemClick, ListType } from '@/composables/useListItemClick'
120 import { getDocumentIcon, getDocumentLabel } from '@/utils/documentIcons' 120 import { getDocumentIcon, getDocumentLabel } from '@/utils/documentIcons'
121 import { debounce } from '@/utils/debounce' 121 import { debounce } from '@/utils/debounce'
......
...@@ -41,7 +41,7 @@ ...@@ -41,7 +41,7 @@
41 <script setup> 41 <script setup>
42 import { ref, computed } from 'vue' 42 import { ref, computed } from 'vue'
43 import { useLoad } from '@tarojs/taro' 43 import { useLoad } from '@tarojs/taro'
44 -import NavHeader from '@/components/NavHeader.vue' 44 +import NavHeader from '@/components/navigation/NavHeader.vue'
45 import { detailAPI } from '@/api/news' 45 import { detailAPI } from '@/api/news'
46 46
47 const detail = ref(null) 47 const detail = ref(null)
......
...@@ -55,8 +55,8 @@ ...@@ -55,8 +55,8 @@
55 import { ref } from 'vue' 55 import { ref } from 'vue'
56 import { useLoad } from '@tarojs/taro' 56 import { useLoad } from '@tarojs/taro'
57 import { useGo } from '@/hooks/useGo' 57 import { useGo } from '@/hooks/useGo'
58 -import LoadMoreList from '@/components/LoadMoreList' 58 +import LoadMoreList from '@/components/list/LoadMoreList'
59 -import NavHeader from '@/components/NavHeader.vue' 59 +import NavHeader from '@/components/navigation/NavHeader.vue'
60 import { myListAPI } from '@/api/news' 60 import { myListAPI } from '@/api/news'
61 import { mockMessageListAPI } from '@/utils/mockData' 61 import { mockMessageListAPI } from '@/utils/mockData'
62 62
......
...@@ -71,9 +71,9 @@ ...@@ -71,9 +71,9 @@
71 import { computed } from 'vue' 71 import { computed } from 'vue'
72 import { useGo } from '@/hooks/useGo' 72 import { useGo } from '@/hooks/useGo'
73 import { useUserStore } from '@/stores/user' 73 import { useUserStore } from '@/stores/user'
74 -import IconFont from '@/components/IconFont.vue' 74 +import IconFont from '@/components/icons/IconFont.vue'
75 -import TabBar from '@/components/TabBar.vue' 75 +import TabBar from '@/components/navigation/TabBar.vue'
76 -import NavHeader from '@/components/NavHeader.vue' 76 +import NavHeader from '@/components/navigation/NavHeader.vue'
77 import Taro, { useLoad, useDidShow } from '@tarojs/taro' 77 import Taro, { useLoad, useDidShow } from '@tarojs/taro'
78 import defaultAvatar from '@/assets/images/icon/avatar.svg' 78 import defaultAvatar from '@/assets/images/icon/avatar.svg'
79 79
......
...@@ -17,8 +17,8 @@ ...@@ -17,8 +17,8 @@
17 </template> 17 </template>
18 18
19 <script setup> 19 <script setup>
20 -import NavHeader from '@/components/NavHeader.vue' 20 +import NavHeader from '@/components/navigation/NavHeader.vue'
21 -import SectionCard from '@/components/SectionCard.vue' 21 +import SectionCard from '@/components/list/SectionCard.vue'
22 import { useSectionList } from '@/composables/useSectionList' 22 import { useSectionList } from '@/composables/useSectionList'
23 23
24 /** 24 /**
......
...@@ -57,7 +57,7 @@ ...@@ -57,7 +57,7 @@
57 import { ref, computed } from 'vue' 57 import { ref, computed } from 'vue'
58 import { useLoad } from '@tarojs/taro' 58 import { useLoad } from '@tarojs/taro'
59 import Taro from '@tarojs/taro' 59 import Taro from '@tarojs/taro'
60 -import NavHeader from '@/components/NavHeader.vue' 60 +import NavHeader from '@/components/navigation/NavHeader.vue'
61 61
62 // 接收页面参数 62 // 接收页面参数
63 const success = ref(true) 63 const success = ref(true)
......
...@@ -125,9 +125,9 @@ ...@@ -125,9 +125,9 @@
125 import { ref, computed, nextTick } from 'vue' 125 import { ref, computed, nextTick } from 'vue'
126 import Taro, { useLoad, useReachBottom } from '@tarojs/taro' 126 import Taro, { useLoad, useReachBottom } from '@tarojs/taro'
127 import { useFileOperation } from '@/composables/useFileOperation' 127 import { useFileOperation } from '@/composables/useFileOperation'
128 -import NavHeader from '@/components/NavHeader.vue' 128 +import NavHeader from '@/components/navigation/NavHeader.vue'
129 -import ListItemActions from '@/components/ListItemActions/index.vue' 129 +import ListItemActions from '@/components/list/ListItemActions/index.vue'
130 -import SearchBar from '@/components/SearchBar.vue' 130 +import SearchBar from '@/components/forms/SearchBar.vue'
131 131
132 const { viewFile } = useFileOperation() 132 const { viewFile } = useFileOperation()
133 133
......
...@@ -143,10 +143,10 @@ import { ref, computed } from 'vue' ...@@ -143,10 +143,10 @@ import { ref, computed } from 'vue'
143 import Taro, { useLoad } from '@tarojs/taro' 143 import Taro, { useLoad } from '@tarojs/taro'
144 import { useGo } from '@/hooks/useGo' 144 import { useGo } from '@/hooks/useGo'
145 import { useListItemClick, ListType } from '@/composables/useListItemClick' 145 import { useListItemClick, ListType } from '@/composables/useListItemClick'
146 -import LoadMoreList from '@/components/LoadMoreList' 146 +import LoadMoreList from '@/components/list/LoadMoreList'
147 -import NavHeader from '@/components/NavHeader.vue' 147 +import NavHeader from '@/components/navigation/NavHeader.vue'
148 -import SearchBar from '@/components/SearchBar.vue' 148 +import SearchBar from '@/components/forms/SearchBar.vue'
149 -import PlanFormContainer from '@/components/PlanFormContainer.vue' 149 +import PlanFormContainer from '@/components/plan/PlanFormContainer.vue'
150 import { listAPI } from '@/api/get_product' 150 import { listAPI } from '@/api/get_product'
151 import { mockProductListAPI } from '@/utils/mockData' 151 import { mockProductListAPI } from '@/utils/mockData'
152 152
......
...@@ -126,9 +126,9 @@ ...@@ -126,9 +126,9 @@
126 126
127 <script setup> 127 <script setup>
128 import { ref } from 'vue' 128 import { ref } from 'vue'
129 -import NavHeader from '@/components/NavHeader.vue' 129 +import NavHeader from '@/components/navigation/NavHeader.vue'
130 -import IconFont from '@/components/IconFont.vue' 130 +import IconFont from '@/components/icons/IconFont.vue'
131 -import PlanFormContainer from '@/components/PlanFormContainer.vue' 131 +import PlanFormContainer from '@/components/plan/PlanFormContainer.vue'
132 import { useFileOperation } from '@/composables/useFileOperation' 132 import { useFileOperation } from '@/composables/useFileOperation'
133 import Taro, { useLoad } from '@tarojs/taro' 133 import Taro, { useLoad } from '@tarojs/taro'
134 import { getDocumentIcon, getDocumentLabel } from '@/utils/documentIcons' 134 import { getDocumentIcon, getDocumentLabel } from '@/utils/documentIcons'
......
...@@ -128,13 +128,13 @@ ...@@ -128,13 +128,13 @@
128 import { ref, computed } from 'vue' 128 import { ref, computed } from 'vue'
129 import Taro from '@tarojs/taro' 129 import Taro from '@tarojs/taro'
130 import { useGo } from '@/hooks/useGo' 130 import { useGo } from '@/hooks/useGo'
131 -import LoadMoreList from '@/components/LoadMoreList' 131 +import LoadMoreList from '@/components/list/LoadMoreList'
132 -import NavHeader from '@/components/NavHeader.vue' 132 +import NavHeader from '@/components/navigation/NavHeader.vue'
133 -import IconFont from '@/components/IconFont.vue' 133 +import IconFont from '@/components/icons/IconFont.vue'
134 -import SearchBar from '@/components/SearchBar.vue' 134 +import SearchBar from '@/components/forms/SearchBar.vue'
135 -import ProductCard from '@/components/ProductCard.vue' 135 +import ProductCard from '@/components/cards/ProductCard.vue'
136 -import MaterialCard from '@/components/MaterialCard.vue' 136 +import MaterialCard from '@/components/cards/MaterialCard.vue'
137 -import PlanFormContainer from '@/components/PlanFormContainer.vue' 137 +import PlanFormContainer from '@/components/plan/PlanFormContainer.vue'
138 import { searchAPI } from '@/api/search' 138 import { searchAPI } from '@/api/search'
139 import { mockSearchAPI } from '@/utils/mockData' 139 import { mockSearchAPI } from '@/utils/mockData'
140 140
......
...@@ -17,8 +17,8 @@ ...@@ -17,8 +17,8 @@
17 </template> 17 </template>
18 18
19 <script setup> 19 <script setup>
20 -import NavHeader from '@/components/NavHeader.vue' 20 +import NavHeader from '@/components/navigation/NavHeader.vue'
21 -import SectionCard from '@/components/SectionCard.vue' 21 +import SectionCard from '@/components/list/SectionCard.vue'
22 import { useSectionList } from '@/composables/useSectionList' 22 import { useSectionList } from '@/composables/useSectionList'
23 23
24 /** 24 /**
......
...@@ -68,7 +68,7 @@ ...@@ -68,7 +68,7 @@
68 import { ref } from 'vue' 68 import { ref } from 'vue'
69 import Taro, { useLoad, useDidHide } from '@tarojs/taro' 69 import Taro, { useLoad, useDidHide } from '@tarojs/taro'
70 import { showToast } from '@tarojs/taro' 70 import { showToast } from '@tarojs/taro'
71 -import NavHeader from '@/components/NavHeader.vue' 71 +import NavHeader from '@/components/navigation/NavHeader.vue'
72 72
73 /** 73 /**
74 * 视频播放页面 74 * 视频播放页面
......
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
11 <script setup> 11 <script setup>
12 import { ref } from 'vue' 12 import { ref } from 'vue'
13 import { useLoad } from '@tarojs/taro' 13 import { useLoad } from '@tarojs/taro'
14 -import NavHeader from '@/components/NavHeader.vue' 14 +import NavHeader from '@/components/navigation/NavHeader.vue'
15 15
16 /** 16 /**
17 * WebView Page 17 * WebView Page
......
...@@ -40,9 +40,9 @@ ...@@ -40,9 +40,9 @@
40 <script setup> 40 <script setup>
41 import { ref } from 'vue' 41 import { ref } from 'vue'
42 import Taro, { useLoad } from '@tarojs/taro' 42 import Taro, { useLoad } from '@tarojs/taro'
43 -import LoadMoreList from '@/components/LoadMoreList' 43 +import LoadMoreList from '@/components/list/LoadMoreList'
44 -import NavHeader from '@/components/NavHeader.vue' 44 +import NavHeader from '@/components/navigation/NavHeader.vue'
45 -import MaterialCard from '@/components/MaterialCard.vue' 45 +import MaterialCard from '@/components/cards/MaterialCard.vue'
46 import { weekHotAPI } from '@/api/file' 46 import { weekHotAPI } from '@/api/file'
47 import { mockWeekHotAPI } from '@/utils/mockData' 47 import { mockWeekHotAPI } from '@/utils/mockData'
48 48
......