Răsfoiți Sursa

docs: 文档目录迁移、内容新增

zhangyuhan 1 an în urmă
părinte
comite
d2b17d58d3
49 a modificat fișierele cu 245 adăugiri și 191 ștergeri
  1. 1 1
      data/api/README.md
  2. 7 1
      data/data-models/README.md
  3. 68 0
      data/data-models/modules/article/README.md
  4. 4 0
      data/data-models/modules/quick-monitor/README.md
  5. 100 8
      docs/.vitepress/config.mts
  6. 0 135
      docs/core-emitter/introduce.md
  7. 1 1
      docs/index.md
  8. 64 45
      docs/to-do/index.md
  9. 0 0
      public/icon/HuggingChat.png
  10. 0 0
      public/icon/caniuse.png
  11. 0 0
      public/icon/code-geex.png
  12. 0 0
      public/icon/codewhisperer.svg
  13. 0 0
      public/icon/cursor.svg
  14. 0 0
      public/icon/exercism.png
  15. 0 0
      public/icon/figma.png
  16. 0 0
      public/icon/git.png
  17. 0 0
      public/icon/gitlab.png
  18. 0 0
      public/icon/hackr.png
  19. 0 0
      public/icon/logo-npm.png
  20. 0 0
      public/icon/mdn.png
  21. 0 0
      public/icon/pdf.png
  22. 0 0
      public/icon/perplexity.ai.png
  23. 0 0
      public/icon/poe.com.ico
  24. 0 0
      public/icon/sass.svg
  25. 0 0
      public/icon/stackoverflow.png
  26. 0 0
      public/icon/th.jpg
  27. 0 0
      public/icon/wenxin-chat.jpg
  28. 0 0
      public/icon/xmind.png
  29. 0 0
      public/images/track-demo.png
  30. 0 0
      public/images/track-hj-open-page.png
  31. 0 0
      public/images/track-hj.png
  32. 0 0
      public/images/track-page-maps.png
  33. 0 0
      public/images/track-tools.png
  34. 0 0
      public/logo.png
  35. 0 0
      public/pdf/企业搜索.pdf
  36. 0 0
      public/pdf/前端知识点.pdf
  37. 0 0
      public/pdf/前端项目工程化要点.pdf
  38. 0 0
      public/pdf/我的-页面功能梳理.pdf
  39. 0 0
      public/pdf/招标采购搜索.pdf
  40. 0 0
      public/pdf/拟在建搜索.pdf
  41. 0 0
      public/pdf/组件拆分示例.pdf
  42. 0 0
      public/pdf/订阅-页面功能梳理.pdf
  43. 0 0
      public/pdf/采购单位搜索.pdf
  44. 0 0
      public/xmind/企业搜索.xmind
  45. 0 0
      public/xmind/前端项目工程化要点.xmind
  46. 0 0
      public/xmind/我的-页面功能梳理.xmind
  47. 0 0
      public/xmind/招标采购搜索.xmind
  48. 0 0
      public/xmind/拟在建搜索.xmind
  49. 0 0
      public/xmind/采购单位搜索.xmind

+ 1 - 1
data/api/README.md

@@ -1,4 +1,4 @@
-# @jy/api
+# @jy/api 🚧
 > 按领域聚合API接口,对外提供 Promise 调用
 
 * 按照领域模型聚合API接口

+ 7 - 1
data/data-models/README.md

@@ -2,7 +2,7 @@
 > 聚合API接口,对外提供聚合API接口,对外提供业务数据模型
 
 * 按照领域模型聚合API接口、数据模型
-* 因为该包作为依赖静态编译,无需发布,无需更新 `version`
+* 在 `web` 项目中,因为该包作为依赖静态编译,无需发布,无需更新 `version`
 
 
 ## 安装
@@ -33,3 +33,9 @@ modules: {
 ### 新增/修改
 1. 对应添加 `/modules/领域/index.js`。
 
+
+## 模块导航
+
+### quick-monitor
+
+[quick-monitor](./modules/quick-monitor/README.md)

+ 68 - 0
data/data-models/modules/article/README.md

@@ -0,0 +1,68 @@
+# 详情页业务
+* `useContentModel`
+* `useContentExpandModel`
+
+::: warning
+该业务模型未集成 API 接口请求,需要自己请求接口,处理数据后,使用提供的 transformModel 初始化模型。
+:::
+
+## 业务模型使用
+```javascript
+// 接口
+import {
+  ajaxGetArticlePreAgentInfo,
+  ajaxGetContentInfo,
+  ajaxGetContentOtherInfo
+} from '@/api/modules/detail'
+
+// 页面模型
+import useContentModel from '@jy/data-models/modules/article/model/content'
+import useContentExpandModel from '@jy/data-models/modules/article/model/expand'
+```
+
+## Setup 用法
+### 组合式
+````vue
+<script setup>
+  import { reactive, ref } from 'vue'
+
+  const AgentInfo = ref({
+    token: '',
+    baseToken: ''
+  })
+  const Content = reactive(useContentModel())
+  const ContentExpands = reactive(useContentExpandModel())
+
+
+  async function useContentStore() {
+    await ajaxGetArticlePreAgentInfo().then((res) => {
+      if (res?.error_code === 0 && res?.data) {
+        AgentInfo.value.token = res.data?.token
+      }
+    })
+
+    await ajaxGetContentInfo({ token: AgentInfo.value.token })
+      .then((res) => {
+        if (res.error_code === 0) {
+          AgentInfo.value.baseToken = res.data?.token
+          return res.data
+        }
+      })
+      .then(Content.transformModel)
+    
+      await ajaxGetContentOtherInfo({ token: AgentInfo.value.baseToken })
+        .then((res) => {
+          ContentPageExpandsLoading.value = false
+          if (res.error_code === 0) {
+            return res.data
+          }
+        })
+        .then(ContentExpands.transformModel)
+
+    return {
+      useContentStore
+    }
+  }  
+  
+<script>
+````

+ 4 - 0
data/data-models/modules/quick-monitor/README.md

@@ -1,6 +1,10 @@
 # useQuickMonitor
 > 监控(项目监控、企业监控、客户监控)业务
 
+::: tip
+该业务模型已集成 API 接口请求。
+:::
+
 ## 前置要求
 
 * 使用 `interceptors-data-models.js`,将 service axios 实例中注入

+ 100 - 8
docs/.vitepress/config.mts

@@ -1,5 +1,6 @@
 import { defineConfig } from 'vitepress'
 import { CustomAvatars } from './constant'
+// @ts-ignore
 import { getChangelogAndContributors } from 'vitepress-plugin-changelog'
 
 export default defineConfig({
@@ -8,6 +9,24 @@ export default defineConfig({
   title: '文档',
   description: "剑鱼前端团队内部文档 - 探索前端世界,从文档开始",
   lang: 'zh-CN',
+  srcExclude: [
+    'dist/**',
+    'node_modules/**',
+    'plugins/**',
+    'scripts/**',
+  ],
+  // sitemap: {
+  //   hostname: './'
+  // },
+  rewrites: {
+    'apps/(.*)/README.md': 'apps/(.*)/index.md',
+    'core/(.*)/README.md': 'core/(.*)/index.md',
+    'packages/(.*)/README.md': 'packages/(.*)/index.md',
+    'data/(.*)/README.md': 'data/(.*)/index.md',
+    'docs/:name.md': ':name.md',
+    'docs/:group/:name.md': ':group/:name.md',
+    'docs/:group/:group2/:name.md': ':group/:group2/:name.md',
+  },
   themeConfig: {
     siteTitle: ' ',
     logo: {
@@ -16,24 +35,41 @@ export default defineConfig({
     },
     nav: [
       { text: '指南', link: '/guide/getting-started' },
-      { text: '组件', link: '/component/' },
       {
-        text: '知识库',
+        text: '项目文档',
         items: [
-          { text: 'monorepo', link: '/monorepo/introduce' },
-          { text: '常见问题自检清单', link: '/check/' },
-          { text: '通用埋点相关', link: '/track/index-new' },
-          { text: 'go模板相关', link: '/go/go安装应用' }
+          { text: 'bigmember_pc', link: '/apps/bigmember_pc/' },
+          { text: '🚧 jy-pc', link: '/apps/jy-pc/' },
+          { text: 'mobile', link: '/apps/mobile/' },
+          { text: 'work-bench', link: '/apps/work-bench/' },
+        ]
+      },
+      {
+        text: 'data',
+        items: [
+          { text: '🚧 @jy/api', link: '/data/api/' },
+          { text: '@jy/data-models', link: '/data/data-models/' }
         ]
       },
       {
         text: 'packages',
         items: [
-          { text: '@jy/emiiter', link: '/core-emitter/introduce' },
+          { text: '@jy/emiiter', link: '/core/emitter/' },
           { text: '@jy/plugin-login-auth', link: '/plugin-login-auth/introduce' },
+          { text: '@jy/vue-anti', link: '/packages/vue-anti/' },
+          { text: '@jy/work-bench-frame', link: '/packages/work-bench-frame/' },
           { text: '@jianyu/cli', link: '/cli/' },
         ]
       },
+      {
+        text: '知识库',
+        items: [
+          { text: 'monorepo', link: '/monorepo/introduce' },
+          { text: '常见问题自检清单', link: '/check/' },
+          { text: '通用埋点相关', link: '/track/index-new' },
+          { text: 'go模板相关', link: '/go/go安装应用' }
+        ]
+      },
       { text: '资源', link: '/resource' },
       { text: '参与建设', link: '/to-do/' }
     ],
@@ -77,6 +113,55 @@ export default defineConfig({
             ]
           }
         ]
+      },
+      '/data/data-models/': {
+        base: '/data/data-models/',
+        items: [
+          {
+            text: '业务模型',
+            base: '/data/data-models/modules/',
+            items: [
+              { text: 'article 详情页', link: '/article/' },
+              { text: 'quick-monitor<br>项目、企业、业主监控', link: '/quick-monitor/' },
+            ]
+          }
+        ]
+      },
+      '/apps/bigmember_pc/': {
+        base: '/apps/bigmember_pc/',
+        items: [
+          {
+            text: '业务维护文档',
+            base: '/apps/bigmember_pc/src/',
+            items: [
+              {
+                text: 'article-content<br>详情页',
+                link: '/views/article-content/composables/'
+              }
+            ]
+          },
+          {
+            text: 'composables',
+            base: '/apps/bigmember_pc/src/composables/',
+            items: [
+              { text: 'down-project-report<br>下载项目报告', link: '/down-project-report/' },
+              { text: 'quick-join-bid<br>参标,取消参标相关', link: '/quick-join-bid/' },
+              { text: 'quick-monitor<br>项目、企业、业主监控', link: '/quick-monitor/' }
+            ]
+          }
+        ]
+      },
+      '/apps/mobile/': {
+        base: '/apps/mobile/',
+        items: [
+          {
+            text: 'composables',
+            base: '/apps/mobile/src/composables/',
+            items: [
+              { text: 'quick-monitor<br>项目、企业、业主监控', link: '/quick-monitor/' }
+            ]
+          }
+        ]
       }
     },
     outline: {
@@ -115,5 +200,12 @@ export default defineConfig({
         title: '更新记录'
       }
     }
-  }
+  },
+  // vite: {
+  //   build: {
+  //     rollupOptions: {
+  //       external: ["vue/server-renderer", "vue"]
+  //     }
+  //   }
+  // }
 })

+ 0 - 135
docs/core-emitter/introduce.md

@@ -1,135 +0,0 @@
-# Emitter
-
-> 订阅/发布 基础工具包
-
-| Statements                                                                                 | Branches                                                                              | Functions                                                                                | Lines                                                                            |
-| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- |
-| ![Statements](https://img.shields.io/badge/statements-91.78%25-brightgreen.svg?style=flat) | ![Branches](https://img.shields.io/badge/branches-94.5%25-brightgreen.svg?style=flat) | ![Functions](https://img.shields.io/badge/functions-94.33%25-brightgreen.svg?style=flat) | ![Lines](https://img.shields.io/badge/lines-91.78%25-brightgreen.svg?style=flat) |
-
-## API
-
-| Fn    | 参数                     | 说明       |
-| ----- | ------------------------ | ---------- |
-| $emit | (type, data, expands)    | 发布       |
-| $on   | (type, handler, expands) | 订阅       |
-| $once | (type, handler, expands) | 仅订阅单次 |
-| $off  | (type, handler, expands) | 取消订阅   |
-
-### 参数
-
-| 参数                    | 类型                           | 说明                                       |
-| ----------------------- | ------------------------------ | ------------------------------------------ |
-| type                    | String                         | 事件标识                                   |
-| data                    | Any                            | 事件数据                                   |
-| handler                 | Function (data, expands, type) | 订阅回调函数                               |
-| expands                 | Object                         | 扩展参数                                   |
-| expands.cross           | Boolean                        | 是否发布跨标签页事件                       |
-| expands.fromCross       | Boolean                        | 是否来自跨标签页事件                       |
-| expands.replay          | Boolean                        | 是否发布可回放事件(仅回放最近一次)       |
-| expands.fromReplay      | Boolean                        | 是否来自可回放事件                         |
-| expands.customEvent     | Boolean                        | 是否发布自定义事件(custom-event-emitter) |
-| expands.fromCustomEvent | Boolean                        | 是否来自自定义事件(custom-event-emitter) |
-
-## 示例
-
-> 更多示例请参考 `test` 目录下的测试用例
-
-```javascript
-this.$on('init', () => {
-  // init
-})
-
-this.$emit('init')
-```
-
-### 跨标签页通信
-
-> 跨标签页通信,需要在发布事件时设置 `cross` 参数为 `true`
-
-⚠️ 注意:会同时触发本页面的 $on() 监听及其他页面的 $on() 监听,如需不触发本页面的 $on() 监听,请在 $on 回调中单独判断 expands.`fromCross`
-
-```javascript
-this.$on('init', (data, expands) => {
-  // 是否来自跨标签页事件
-  if (expands?.fromCross) {
-  }
-})
-
-this.$emit('init', {
-  cross: true
-})
-```
-
-### 可回放事件
-
-> 可回放事件,需要在发布事件时设置 `replay` 参数为 `true`
-
-```javascript
-const emitter = new Emitter({
-  replay: true,
-  logger: false,
-  cross: false,
-  customEvent: false
-})
-const testContent = 'test-replay'
-let result = null
-
-emitter.$emit(testContent, testContent, { replay: true })
-emitter.$on(testContent, (event, expands) => {
-  result = event
-  // expect(expands.replay).toBe(true)
-  // expect(expands.fromReplay).toBe(true)
-})
-// expect(result).toBe(testContent)
-emitter.$off(testContent)
-```
-
-### 自定义事件
-
-> 自定义事件,需要在发布事件时设置 `customEvent` 参数为 `true`
-
-默认用于 addListener, dispatchEvent 通信的event: ** custom-event-emitter **
-
-⚠️ 注意:会同时触发本页面的 $on() 监听,如需不触发本页面的 $on() 监听,请在 $on 回调中单独判断 expands.`fromCustomEvent`
-
-```javascript
-const emitter = new Emitter({
-  replay: false,
-  logger: false,
-  cross: false,
-  customEvent: true
-})
-const testContent = 'test-custom-event-dispatchEvent'
-
-emitter.$on(testContent, (event, expands, type) => {
-  // test('应该正常获取 event, type', () => {
-  //      expect(type).toBe(testContent)
-  //      expect(event).toBe(testContent)
-  //  })
-  //  test('[!] expands.customEvent === undefined', () => {
-  //      expect(expands.customEvent).toBe(undefined)
-  //  })
-  //
-  //  test('[*] expands.fromCustomEvent === true', () => {
-  //      expect(expands.fromCustomEvent).toBe(true)
-  //  })
-})
-
-window.dispatchEvent(
-  new CustomEvent(realEventName, {
-    detail: {
-      type: testContent,
-      event: testContent,
-      expands: {}
-    }
-  })
-)
-
-emitter.$off(testContent)
-```
-
-## 应用场景记录
-
-| 版本 | 日期    | 说明 |
-| ---- | ------- |--|
-| v1   | 2023-11 | 用于登录弹窗 |

+ 1 - 1
docs/index.md

@@ -17,7 +17,7 @@ hero:
     link: /guide/style/introduce
   - theme: alt
     text: 参与贡献
-    link: /
+    link: /to-do/
   image:
     src: /logo.png
     alt: 剑鱼标讯

+ 64 - 45
docs/to-do/index.md

@@ -1,47 +1,66 @@
 # 参与建设
 
-## PC端组件库
-- [ ] 改造原有项目依赖
-- [ ] 从项目抽取迁移为独立 npm 包
-- [ ] 现有项目组件梳理
-- [x] v0.1版本已完成
-- [ ] ~~升级vue3~~
-
-## 移动端组件库
-- [ ] 改造原有项目依赖
-- [ ] 从项目迁移为独立 npm 包 
-- [x] v1.0版本已完成
-- [ ] ~~升级vue3~~
-
-## 工具库
-- [ ] 改造原有项目依赖
-- [ ] 整合迁移为独立 npm 包
-- [ ] 现有项目工具集梳理
-- [x] v0.1版本已完成
-
-## CLI
-- [ ] 提供 code lint 、git commit 等辅助开发流程
-- [x] 提供 CLI 版本更新
-- [x] 提供模版拉取、模块创建、发布
-
-## 技术文档
-- [ ] 持续更新完善
-- [ ] 项目技术栈及情况概述,汇集剑鱼相关项目业务分布及技术情况
-- [ ] 内网包-组件开发流程示例
-- [ ] 代码约束 + 内网 eslint 规则 完善
-- [ ] 常见问题-山川应用 完善
-- [ ] 自动构建更新
-- [x] 提供技术指南、文档等
-
-## 更多
-
-### icon 内网包 @next 迭代
-- [ ] 提供更优的注入、引用方式
-- [ ] 合并 iconfont 移动、pc端
-
-### eslint 内网规则包 @next
-- [ ] 基于 @vue/press 更新规则
-
-### element-ui 内网版本迁移更新工作
-- [ ] 原PC项目中需要进行升级更新
-- [x] qiankun 模式下 event path 内网修复包已发布
+## 2024年前端团队计划
+
+首先回顾去年的计划与实际工作情况,总结后梳理2024年计划。
+
+### 去年存在的问题
+
+* 组件库建设和维护工作推进效率不高
+> 虽然进行了业务组件的沉淀,但由于项目优先级调整、以及架构影响导致,但并未按照原定目标将组件库独立提取出来。今年SEO工作较多,与原定的SPA应用,微前端架构无法有效复用组件,还有 monorepo 项目结构调整带来的影响。
+* 技术分享与培训活动的组织和执行力度不够
+> 版本研发紧急度太多,缺乏有效的激励机制以推动团队成员积极参与此类活动,从而影响了整体技术氛围的提升。
+* 代码审查制度未能有效落实
+> 需要在工时预估方面增加该项工作工时,或改为季度审查、或者考虑其他方向解决落地问题。
+
+### 2024前端团队工作计划
+
+* 1. 技术架构调整:
+    * 1.1 全部前后端分离项目,采用 monorepo 项目架构集中管理、维护。
+    * 1.2 提取工具库、UI库、业务组件、业务数据模型库。
+    * 1.3 调整全局工具库,采用SDK + 插件机制管理。
+    * 1.4 全量项目迁移至 vite 后,考虑移动端项目迁移 vue3 技术体系。
+    * 1.5 重新梳理工作台模式,采用依赖倒置、注入的形式管理,优化依赖加载,复用。
+    * 1.6 在沉淀后的组件上,研究结合开源低代码编辑器,落地到项目应用中。
+* 2. 技术分享:
+    * 2.1 落实技术分享、培训,找到合适的推行方式,比如每个人分享5分钟,降低参与门槛。
+    * 2.2 持续完成技术规范、技术文档。
+    * 2.3 落实定期进行代码审查,提高团队成员的代码审查技能。
+* 3. 代码质量:
+    * 3.1 持续维护自检清单,加入自动检查,减少常见问题的出现频率。
+    * 3.2 基于 vtest 完成上述工具库、业务组件的单元测试,覆盖率达到 80%+
+    * 3.3 追踪 Sentry 异常,分析总结问题,整理后纳入自检清单,避免重复问题。
+    * 3.4 继续复盘项目、分析缺陷,整理后纳入自检清单。
+    * 3.5 研究组件的自动化测试及快照,找到落地方向。
+
+### 目标细化及完成状态
+|目标|目标细化|达成度|备注|
+|:--:|:--:|:--:|:--:|
+|工具库、UI库、业务组件|新增需求、重构页面时需提取组件、工具库| ❌ |-|
+|可复用业务模型建设|新增需求、重构页面时需抽象业务模型,方便多端复用| 进行中 |详情页重构已实践采用|
+|技术分享|人均季度分享次数 1 +|✅|每月最低达成1次分享目标|
+|技术分享|技术规范、技术文档 |✅|补充、完善中|
+|代码质量|项目复盘率达到	50%|✅|每月项目复盘已达成50%目标|
+|代码质量|季度组织可避免缺陷原因分析及改进方式讨论会议	1+|❌|-|
+|代码质量|提升成员代码审查能力,季度度组织集体 CR 次数	1+|❌|-|
+
+## 2023年前端团队计划
+
+2023年制定的工作目标主要为:
+1. 提升开发效率,提升 10% 以上
+2. 提升技术氛围,组织培训及交流落地
+3. 提升代码质量,控制代码缺陷率6%以下
+
+### 目标细化及完成状态
+
+|目标|目标细化|达成度|备注|
+|:--:|:--:|:--:|:--:|
+|提升前端开发效率及体验|全盘项目 pnpm 技术栈升级| ✅ 90% |已改造3个项目,基本完成|
+|提升前端开发效率及体验|组件库建设推进,沉淀业务组件 30 +|❌ 60%|组件库未独立提取,沉淀在分散项目业务组件 20+|
+|提升前端开发效率及体验|异常监控、告警、修复|✅|已覆盖jy、jy-mobile 两个核心项目,每周分析、处理收集的异常问题|
+|提升前端开发效率及体验|相关技术文档完善 10篇 +|✅ 80%|完善代码规范、知识库等,8篇|
+|培训、分享相关落地|人均季度分享次数 1 +|❌|分享次数1,目标未达成|
+|培训、分享相关落地|培训提升月度组织次数 1 +|❌| 目标未达成|
+|代码缺陷降低|项目复盘率达到	50%|✅|每月项目复盘已达成50%目标|
+|代码缺陷降低|月度组织可避免缺陷原因分析及改进方式讨论会议	1+|✅||
+|代码缺陷降低|提升成员代码审查能力,月度组织集体 CR 次数	1+|❌|未落地执行|

+ 0 - 0
docs/public/icon/HuggingChat.png → public/icon/HuggingChat.png


+ 0 - 0
docs/public/icon/caniuse.png → public/icon/caniuse.png


+ 0 - 0
docs/public/icon/code-geex.png → public/icon/code-geex.png


+ 0 - 0
docs/public/icon/codewhisperer.svg → public/icon/codewhisperer.svg


+ 0 - 0
docs/public/icon/cursor.svg → public/icon/cursor.svg


+ 0 - 0
docs/public/icon/exercism.png → public/icon/exercism.png


+ 0 - 0
docs/public/icon/figma.png → public/icon/figma.png


+ 0 - 0
docs/public/icon/git.png → public/icon/git.png


+ 0 - 0
docs/public/icon/gitlab.png → public/icon/gitlab.png


+ 0 - 0
docs/public/icon/hackr.png → public/icon/hackr.png


+ 0 - 0
docs/public/icon/logo-npm.png → public/icon/logo-npm.png


+ 0 - 0
docs/public/icon/mdn.png → public/icon/mdn.png


+ 0 - 0
docs/public/icon/pdf.png → public/icon/pdf.png


+ 0 - 0
docs/public/icon/perplexity.ai.png → public/icon/perplexity.ai.png


+ 0 - 0
docs/public/icon/poe.com.ico → public/icon/poe.com.ico


+ 0 - 0
docs/public/icon/sass.svg → public/icon/sass.svg


+ 0 - 0
docs/public/icon/stackoverflow.png → public/icon/stackoverflow.png


+ 0 - 0
docs/public/icon/th.jpg → public/icon/th.jpg


+ 0 - 0
docs/public/icon/wenxin-chat.jpg → public/icon/wenxin-chat.jpg


+ 0 - 0
docs/public/icon/xmind.png → public/icon/xmind.png


+ 0 - 0
docs/public/images/track-demo.png → public/images/track-demo.png


+ 0 - 0
docs/public/images/track-hj-open-page.png → public/images/track-hj-open-page.png


+ 0 - 0
docs/public/images/track-hj.png → public/images/track-hj.png


+ 0 - 0
docs/public/images/track-page-maps.png → public/images/track-page-maps.png


+ 0 - 0
docs/public/images/track-tools.png → public/images/track-tools.png


+ 0 - 0
docs/public/logo.png → public/logo.png


+ 0 - 0
docs/public/pdf/企业搜索.pdf → public/pdf/企业搜索.pdf


+ 0 - 0
docs/public/pdf/前端知识点.pdf → public/pdf/前端知识点.pdf


+ 0 - 0
docs/public/pdf/前端项目工程化要点.pdf → public/pdf/前端项目工程化要点.pdf


+ 0 - 0
docs/public/pdf/我的-页面功能梳理.pdf → public/pdf/我的-页面功能梳理.pdf


+ 0 - 0
docs/public/pdf/招标采购搜索.pdf → public/pdf/招标采购搜索.pdf


+ 0 - 0
docs/public/pdf/拟在建搜索.pdf → public/pdf/拟在建搜索.pdf


+ 0 - 0
docs/public/pdf/组件拆分示例.pdf → public/pdf/组件拆分示例.pdf


+ 0 - 0
docs/public/pdf/订阅-页面功能梳理.pdf → public/pdf/订阅-页面功能梳理.pdf


+ 0 - 0
docs/public/pdf/采购单位搜索.pdf → public/pdf/采购单位搜索.pdf


+ 0 - 0
docs/public/xmind/企业搜索.xmind → public/xmind/企业搜索.xmind


+ 0 - 0
docs/public/xmind/前端项目工程化要点.xmind → public/xmind/前端项目工程化要点.xmind


+ 0 - 0
docs/public/xmind/我的-页面功能梳理.xmind → public/xmind/我的-页面功能梳理.xmind


+ 0 - 0
docs/public/xmind/招标采购搜索.xmind → public/xmind/招标采购搜索.xmind


+ 0 - 0
docs/public/xmind/拟在建搜索.xmind → public/xmind/拟在建搜索.xmind


+ 0 - 0
docs/public/xmind/采购单位搜索.xmind → public/xmind/采购单位搜索.xmind