diff --git a/.github/workflows/gh-page.yml b/.github/workflows/gh-page.yml
index 505e085c..0dc4a8c1 100644
--- a/.github/workflows/gh-page.yml
+++ b/.github/workflows/gh-page.yml
@@ -24,7 +24,7 @@ jobs:
- name: Use Node.js
uses: actions/setup-node@v3
with:
- node-version: 16
+ node-version: 18
cache: "pnpm"
- name: Install dependencies
@@ -43,3 +43,10 @@ jobs:
with:
BRANCH: gh-pages # 部署分支
FOLDER: gbeata-dist # 打包, 静态资源输出的目录
+
+ - name: Release
+ env:
+ GITHUB_TOKEN: ${{ secrets.PERSONAL_TOKEN }}
+ NPM_TOKEN: ${{ secrets.NPM_PACKAGE }}
+ run: |
+ npx semantic-release
diff --git a/.github/workflows/push-message.yml b/.github/workflows/push-message.yml
new file mode 100644
index 00000000..ea129129
--- /dev/null
+++ b/.github/workflows/push-message.yml
@@ -0,0 +1,27 @@
+name: Notify WeChat on Tag
+
+on:
+ push:
+ tags:
+ - "*"
+
+jobs:
+ notify:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v2
+
+ - name: Extract Release Note
+ id: extract_note
+ run: echo ::set-output name=note::$(git show -s --format=%b ${{ github.sha }})
+
+ - name: Debug Release Note
+ run: echo "Release Note:${{ steps.extract_note.outputs.note }}"
+
+ - name: Send notification to WeChat
+ run: |
+ curl -H "Content-Type: application/json" \
+ -X POST \
+ -d "{\"msgtype\": \"text\", \"text\": {\"content\": \"New tag created: ${{ github.ref }}\\nRelease Note: ${{ steps.extract_note.outputs.note }}\"}}" \
+ "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=9875c111-57b0-42c4-a301-cdaed5e215cc"
diff --git a/.releaserc.js b/.releaserc.js
index cc88ca6e..422f4acd 100644
--- a/.releaserc.js
+++ b/.releaserc.js
@@ -1,5 +1,5 @@
module.exports = {
- branches: ["main"], // 指定在哪个分支下要执行发布操作
+ branches: ["main", "admin"], // 指定在哪个分支下要执行发布操作
plugins: [
"@semantic-release/commit-analyzer", // 解析 commit 信息,默认就是 Angular 规范
"@semantic-release/release-notes-generator",
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 84bc236d..ae3c4e46 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,109 @@
+# [1.3.0](https://github.com/anyone-yuren/react-antd-admin-pnpm/compare/v1.2.5...v1.3.0) (2024-01-03)
+
+
+### Bug Fixes
+
+* :bug: 同步esbuild版本 ([6e02325](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/6e02325f328d79cceb0b0df0418acde5c55df232))
+
+
+### Features
+
+* :sparkles: ceshi ([4295d28](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/4295d28af36c4b8a4e178229305abafc65f5a6db))
+* :sparkles: ceshi ([e11cd31](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/e11cd31a86606a98b36c2cd34afe82aca33e2edc))
+* :sparkles: ceshi ([0d4e8f3](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/0d4e8f3267141042f247a2759353f8642d43bbf9))
+* :sparkles: ceshi ([b5b4454](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/b5b4454e4512517c220f406a9a95063e4b6edbb8))
+* :sparkles: ceshi ([16a5f53](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/16a5f531aa47af4e565ceb3c6368dbf200941203))
+* :sparkles: ceshi ([433ad9d](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/433ad9ddbd79a90e0328dcae75b7929bdd085c17))
+* :sparkles: debugger ([fdc788d](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/fdc788df8c466be8567859832f5326489cd2683a))
+* :sparkles: feat: 修改动态路由数据 ([c332d69](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/c332d69f87007671df2d04c17ea1ab67ae2a825a))
+* :sparkles: feature 模块改造 ([9e0e814](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/9e0e81406c10fba8fabc66d0b7f9c06ae720f30e))
+* :sparkles: friends组件 ([5f92ffc](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/5f92ffc1f79a1a73e09e894b0bc44dc421aa78cb))
+* :sparkles: less 转 antd-style写法 ([83e5382](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/83e53825434d1abd673e58570c098769858fff0c))
+* :sparkles: te ttet ([d3f7563](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/d3f7563e24cafc54496458fb5041c4c1d74b5327))
+* :sparkles: tesst ([a1cf56c](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/a1cf56c8c4d2fe8bc021e2216f46b3b5d1aca41c))
+* :sparkles: test ([3bbec41](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/3bbec41a96462e42bfa5794a768148be3f072ea4))
+* :sparkles: test ([dfe84fd](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/dfe84fdec7950460572a8f6368d8de913f132774))
+* :sparkles: test ([d6761fb](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/d6761fb71b04cba4cdeb95f08baeb40e3cf6a086))
+* :sparkles: test ([78ae6cf](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/78ae6cf56dcc0466af7207968bc2fed05ba70fcb))
+* :sparkles: test ([253a176](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/253a176c1a3921db207ff092a6cf5b5ea221f7c6))
+* :sparkles: test ([c11bed3](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/c11bed3715805395810b8a8c192ede3684b986bb))
+* :sparkles: test ([47d4b75](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/47d4b754f7b68f85c810b89c5408e01ae1e9c403))
+* :sparkles: testtest ([6275dd0](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/6275dd01868531f4e55d98c21a515a0b64e3a71b))
+* :sparkles: 个人中心页面设计 ([cc37e2e](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/cc37e2e114d20c0062655fa7014e69eea68d4de3))
+* :sparkles: 修改ADMINvite配置bug ([2b8901f](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/2b8901f627cf1ce7828de4659fd783da08f72adb))
+* :sparkles: 修改ant visible=>open ([0fcd283](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/0fcd283d1a44ab56d0d526b0a00cd40a956978bc))
+* :sparkles: 修改lazyload默认导出 ([d2fa236](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/d2fa236445a76481f208b621254caff1b4b1b2bd))
+* :sparkles: 修改lock mock版本 ([90dbed8](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/90dbed89f436c592a9528e98dbb91afc06c4675a))
+* :sparkles: 修改logo、系统名称样式 ([46aadba](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/46aadbae3fe694f51dd081bffd14f5437e7d0d58))
+* :sparkles: 修改Tags组件样式 ([9f626a5](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/9f626a5fe4d999ee469eec691195f10700bf331f))
+* :sparkles: 修改tags颜色 ([9ec557f](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/9ec557f8b2ef2f3ded1ab696a2dbbc0305409d8d))
+* :sparkles: 修改tag标签样式BUG ([96c5e48](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/96c5e4878950793aa811e9b3697614631134c372))
+* :sparkles: 修改userCard圆角样式 ([7a1aa84](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/7a1aa84322fb6f867da77bdadc02be1b3b15965a))
+* :sparkles: 修改userCard组件样式 ([d74ab37](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/d74ab37aed0003c19e6c8fbaf81f473672f1f25d))
+* :sparkles: 修改VITE配置 ([1b57ebf](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/1b57ebf7bee264c9f39951831a79137e8f20545d))
+* :sparkles: 修改主题色 ([f0b5dbe](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/f0b5dbe254a06abe91936c464a4d19d99f8b0c9f))
+* :sparkles: 修改启动页动画效果 ([4ed0a1a](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/4ed0a1af1c3289f44c7fc12cacdb1fdf5f93fa85))
+* :sparkles: 修改头像 ([b21f8c3](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/b21f8c3f71f000c074a06a195b24bbe690592c5f))
+* :sparkles: 修改头部样式以及主体背景色 ([942d1fa](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/942d1fa0738561f9c0fc1a29616acc3a56f71d00))
+* :sparkles: 修改弹窗comfirm样式主题不生效问题 ([9494594](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/9494594683e1d0d12b64793ac7c9b10b56cfd1e1))
+* :sparkles: 修改构建node版本 ([267244b](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/267244ba4e89cfe19aa15cab4b0dd4d321d705f9))
+* :sparkles: 修改构建胚子 ([4a4596f](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/4a4596ff5d069aefd30ebd524d9dd8b91ccd3e02))
+* :sparkles: 修改系统图标与公用配置抽离 ([1137e11](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/1137e11b25234deb97c120c17edd7b976eb4687d))
+* :sparkles: 修改菜单样式 ([486c668](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/486c6683df0f963626e247a32f69979259170abb))
+* :sparkles: 修改路由 ([469c401](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/469c401250b1dabab11a732ef50b42034ee3e09e))
+* :sparkles: 修改首页布局 ([407c6ed](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/407c6ed34e15ec7e724dac6e984b2d229f604ea0))
+* :sparkles: 修改首页请求异常问题 ([9f0b3b0](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/9f0b3b0565bd4c6bce84ac89fa4728c2c055fa1b))
+* :sparkles: 升级版本 ([2bf6224](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/2bf62241db1f45a1143410608cde21a0612e2d3f))
+* :sparkles: 去除admin短路运算符限制 ([72e3aef](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/72e3aefe922d01b3360cd56a2d38c5d34ddd0034))
+* :sparkles: 去除多余样式 ([3b1fa10](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/3b1fa1074a8910908e517d58b72b18a9908dd0d3))
+* :sparkles: 去除测试代码 ([bff44ee](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/bff44ee677dcac37b01048d62a94bc8a3c5e0364))
+* :sparkles: 启动页设计 ([0035bb0](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/0035bb0aac676a6db0dec14adeeeb11563bc4514))
+* :sparkles: 增加npm参数 ([8a0756c](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/8a0756ca5556be1b1d41817956b05224c197987e))
+* :sparkles: 完成proFile面板设计 ([a198765](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/a198765b9b59bb9a0e63d63fc151ebcd2b7cae82))
+* :sparkles: 完成快捷操作搜索功能 ([d86ca8b](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/d86ca8b17eb1abb47942e0aa47da37cf92a31b41))
+* :sparkles: 打印错误日志 ([956b104](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/956b104c6d5f09f021890a3050c21b5c2f4fc917))
+* :sparkles: 新增apis模块,首页新增github记录 ([046cc3a](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/046cc3a0b7f868730becfd587a332005f08c6aec))
+* :sparkles: 新增GlobalSearch组件 ([74bb8e6](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/74bb8e649d56c5fc5ec774be4de22876e04110af))
+* :sparkles: 新增loading组件 ([8d17b48](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/8d17b48410af3f35ebb51fd78ff9be6c3bacbbf4))
+* :sparkles: 新增logologo ([af9457f](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/af9457f35285ff90ea8d611bf2e7da7f12eb4cff))
+* :sparkles: 新增Slick组件,首页新增轮播 ([8f5d7c2](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/8f5d7c285608bdcadd1cc972a75abd19b5642410))
+* :sparkles: 新增UI包,新增动画组件 ([7f5a8d0](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/7f5a8d082f8e279892d11fe7b0e543ec34996011))
+* :sparkles: 新增一键换肤 ([dee7f96](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/dee7f961db14bb610c41556a0f9122e0becc116d))
+* :sparkles: 新增主题切换 ([219fe76](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/219fe76c4cc11a66b01f0a22012714154f9dfa3d))
+* :sparkles: 新增全局配置configProvider ([bd337bf](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/bd337bfd6e89c68a40e7fd76443c2b934450ed89))
+* :sparkles: 新增系统logo ([a693e26](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/a693e2666ee426f6e44b45682e56998f1336d38a))
+* :sparkles: 新增设置面板,完成主题切换 ([aad62bc](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/aad62bc2c5502960ce50353a8cf9802264edd169))
+* :sparkles: 新增面包屑与页签控制 ([21d92b7](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/21d92b765a6ffe7b5b8ac3a90351d816b5003931))
+* :sparkles: 更换logo ([ddffe83](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/ddffe83a321206acbe9bd1862bc8251acbd79f90))
+* :sparkles: 更新依赖包 ([9557c10](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/9557c1007e51d0a1b600e4b57d02eb16f137db4d))
+* :sparkles: 测试 ([e97e52c](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/e97e52c322d72ea9d424c392e5904c5d8d68a3be))
+* :sparkles: 测试 ([0054117](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/00541173dabd7faa5db3843a84e55f73d1a96b78))
+* :sparkles: 测试 ([46583e9](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/46583e94a4f4601c053084d62ee57b6e936a888e))
+* :sparkles: 测试 ([fb6c1b0](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/fb6c1b07475b1a4cc7b08b4834002a7ed6416bf5))
+* :sparkles: 测试 ([777d68f](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/777d68f2a80c08a3f1d7ed92d7026503971bb77a))
+* :sparkles: 测试 ([ca9713b](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/ca9713b646865d9381010ce15ad1f70d73782ee6))
+* :sparkles: 测试打包mock ([25dfb60](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/25dfb6046250f208ddc45f4fdc731b957bedae35))
+* :sparkles: 测试提前加载 ([f5360d4](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/f5360d4723b6b1c68a02149560bde32ef11c5414))
+* :sparkles: 测试生产环境mock ([76df4c8](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/76df4c8dcd28ae8a08c6a7bcb08364449feb407d))
+* :sparkles: 测试路由 ([889a971](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/889a971991832bb000853dde85866050cacfc581))
+* :sparkles: 测试路由bug ([f389274](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/f389274f32c6184c30135c030ebfc7f278b37355))
+* :sparkles: 添加主题选择器 ([04cda0f](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/04cda0fbbed090a4ee9b11d9d4c6393a2cda4d10))
+* :sparkles: 添加全局Card 类名,添加按钮wave动效 ([e39a668](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/e39a668833b7b317dad3166d3371efc85eb65913))
+* :sparkles: 添加全局Paper样式 ([7c49824](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/7c498248e3c49b1f7bc14216a012b4d438c1d0a7))
+* :sparkles: 添加异步测试 ([bd18dda](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/bd18dda1ddcc0224f02dc2781e097b667a52ce71))
+* :sparkles: 添加用户管理模块,修改meta参数,支持自定义图标大小 ([57401c1](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/57401c195126623defd074297a5c50f3861a5c70))
+* :sparkles: 添加登录页标题, 错误页面icon ([67d356c](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/67d356cbdd0aa0bcd588022055f7a643691f1adb))
+* :sparkles: 添加自定义token类型定义,完成登录页设计 ([1124c0d](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/1124c0d481f4702680a7490e3963bb4d40fa6d55))
+* :sparkles: 添加首页欢迎面板 ([9727b16](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/9727b16e91bb3f5b16e67deec3284730b60c7d66))
+* :sparkles: 登录页修改 ([12f1295](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/12f129555525ef49f83544dcc47707e4d9c3b196))
+* :sparkles: 自动更新版本 ([eccde83](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/eccde830e931c60cfaef84029be95ff3621fbbaa))
+* :sparkles: 设计用户Card ([0f97588](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/0f975886c64c49cea25f6914f00a9c94cdd98748))
+* :sparkles: 请求admin分支提交记录 ([292dbd8](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/292dbd85f4e144687de344f3e7a94f0b0d65e06c))
+* :sparkles: 还原 ([433111a](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/433111a3953ce4694814c2be83e3e6c0a56b7249))
+* :sparkles: 降低react-router-dom版本 ([b8e234f](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/b8e234f4044389f9293ea0c7b3a15330c669704b))
+* :sparkles: 首页统计 ([3b42a98](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/3b42a9867ab15809fc7c94e7ff582ffc2ef153fe))
+* 还原路由 ([a0efb2e](https://github.com/anyone-yuren/react-antd-admin-pnpm/commit/a0efb2e2d791cac6d6d9586a68a95e44fc20f8ab))
+
# [1.1.0](https://github.com/anyone-yuren/pnpm-monorepo-mui/compare/v1.0.0...v1.1.0) (2023-12-15)
diff --git a/Readme.md b/Readme.md
index 296e7adb..b2a05004 100644
--- a/Readme.md
+++ b/Readme.md
@@ -25,8 +25,9 @@ antd5已经发布很久了,之前一直在维护的一套基于antd4版本的
- [x] pnpm turbo vite 集成方案搭建
- [x] 配置代码提交规范与自动化部署
-- [ ] antd5组件库开发
-- [ ] 分包设计与应用设计
+- [x] antd5组件库开发
+- [x] 分包设计与应用设计
+- [x] 自动化tag版本打包
- [ ] 微前端接入
- [ ] 模板编写
@@ -47,13 +48,13 @@ antd5已经发布很久了,之前一直在维护的一套基于antd4版本的
"antd": "^5.x","vite": "^5.x","echarts-for-react": "^3.x","antd-style": "^3.x","@react-spring/web": "^9.x","zustand": "^4.x"
``` -->
-- [ ] 框架设计
+- [x] 框架设计
- [x] 主题设计
- [x] 登录页设计
- [x] 状态管理(zustand)
- [x] 路由设计,使用loadable-compoment替代React.lazy
- [x] 主题控制面板
-- [ ] 模块高亮搜索
+- [x] 模块高亮搜索
## 分支管理
@@ -71,10 +72,14 @@ antd5已经发布很久了,之前一直在维护的一套基于antd4版本的
npx @chenshuai2144/less2cssinjs less2js -i src
```
+3. 关于本地运行项目,出现gbeata未定义的问题,起初在设计组件库阶段,并没有打算直接在项目包中直接应用workspace中的源码,所以,你可以在执行 ` pnpm dev --filter gbeata-admin` 之前,请先将gbeata组件包打包生成lib目录, 执行` pnpm build --filter gbeata`
+
## 贡献
-欢迎 PR,您可以直接找我讨论,QQ: 1003473088,如果这是一个很大的变化!
+欢迎 PR,当然您也可以扫码进群讨论,或者直接联系我,QQ: 1003473088,如果这是一个很大的变化!欢迎您的加入!
+
+
diff --git a/apps/admin/package.json b/apps/admin/package.json
index c41f4762..75279713 100644
--- a/apps/admin/package.json
+++ b/apps/admin/package.json
@@ -1,5 +1,5 @@
{
- "name": "react-admin-design",
+ "name": "gbeata-admin",
"version": "0.0.0",
"scripts": {
"dev": "vite",
diff --git a/apps/admin/src/views/home/components/data.ts b/apps/admin/src/views/home/components/data.ts
new file mode 100644
index 00000000..9e2e35a8
--- /dev/null
+++ b/apps/admin/src/views/home/components/data.ts
@@ -0,0 +1,1710 @@
+export const juejinData = [
+ {
+ article_id: '7303048156967026714',
+ article_info: {
+ article_id: '7303048156967026714',
+ user_id: '2682464101469480',
+ category_id: '6809637767543259144',
+ tag_ids: [6809640407484334000, 6809640419505209000, 6809640793381274000],
+ visible_level: 0,
+ link_url: '',
+ cover_image:
+ 'https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/84274f1176744240b47471a79d920a2f~tplv-k3u1fbpfcp-jj-mark:0:0:0:0:q75.image#?w=1276&h=638&s=1250001&e=gif&f=46&b=d3d9dc',
+ is_gfw: 0,
+ title: '3D数字孪生 - 智能仓储管理平台-开源啦💐',
+ brief_content:
+ ' 截止目前,相信你在社区上很难找到开源且真正对前期的你学习有帮助的案例和文章,之所以做这类分享,纯粹的是用爱发电,新的领域学习,让我痛苦的度过了好多个夜晚,值得庆幸自己的思路和计划都能按照设想的方案实',
+ is_english: 0,
+ is_original: 1,
+ user_index: 0,
+ original_type: 0,
+ original_author: '',
+ content: '',
+ ctime: '1700465692',
+ mtime: '1700532628',
+ rtime: '-62135596800',
+ draft_id: '7302787905043693577',
+ view_count: 397,
+ collect_count: 5,
+ digg_count: 7,
+ comment_count: 0,
+ hot_index: 26,
+ is_hot: 0,
+ rank_index: 1.2e-7,
+ status: 1,
+ verify_status: 1,
+ audit_status: 2,
+ mark_content: '',
+ display_count: 0,
+ is_markdown: 1,
+ app_html_content: '',
+ version: 4,
+ web_html_content: null,
+ meta_info: null,
+ catalog: null,
+ homepage_top_time: -62135596800,
+ homepage_top_status: 0,
+ content_count: 1012,
+ read_time: '3分钟',
+ },
+ author_user_info: {
+ user_id: '2682464101469480',
+ user_name: 'G_大雨',
+ company: '',
+ job_title: '',
+ avatar_large:
+ 'https://p3-passport.byteacctimg.com/img/user-avatar/c2fb4874b00b9202d5d26eb6624101d3~300x300.image',
+ level: 3,
+ description: '',
+ followee_count: 10,
+ follower_count: 129,
+ post_article_count: 9,
+ digg_article_count: 48,
+ got_digg_count: 190,
+ got_view_count: 22026,
+ post_shortmsg_count: 5,
+ digg_shortmsg_count: 0,
+ isfollowed: false,
+ favorable_author: 0,
+ power: 971,
+ study_point: 0,
+ university: {
+ university_id: '0',
+ name: '',
+ logo: '',
+ },
+ major: {
+ major_id: '0',
+ parent_id: '0',
+ name: '',
+ },
+ student_status: 0,
+ select_event_count: 0,
+ select_online_course_count: 0,
+ identity: 0,
+ is_select_annual: true,
+ select_annual_rank: 0,
+ annual_list_type: 0,
+ extraMap: {},
+ is_logout: 0,
+ annual_info: [],
+ account_amount: 0,
+ user_growth_info: {
+ user_id: 2682464101469480,
+ jpower: 971,
+ jscore: 929.5,
+ jpower_level: 3,
+ jscore_level: 5,
+ jscore_title: '先锋掘友',
+ author_achievement_list: [],
+ vip_level: 0,
+ vip_title: '',
+ jscore_next_level_score: 2000,
+ jscore_this_level_mini_score: 500,
+ vip_score: 0,
+ },
+ is_vip: false,
+ become_author_days: 0,
+ collection_set_article_count: 0,
+ recommend_article_count_daily: 0,
+ article_collect_count_daily: 0,
+ user_priv_info: {
+ administrator: 0,
+ builder: 0,
+ favorable_author: 0,
+ book_author: 0,
+ forbidden_words: 0,
+ can_tag_cnt: 0,
+ auto_recommend: 0,
+ signed_author: 0,
+ popular_author: 0,
+ can_add_video: 0,
+ },
+ },
+ category: {
+ category_id: '6809637767543259144',
+ category_name: '前端',
+ category_url: 'frontend',
+ rank: 2,
+ back_ground: 'https://lc-mhke0kuv.cn-n1.lcfile.com/8c95587526f346c0.png',
+ icon: 'https://lc-mhke0kuv.cn-n1.lcfile.com/1c40f5eaba561e32.png',
+ ctime: 1457483942,
+ mtime: 1432503190,
+ show_type: 3,
+ item_type: 2,
+ promote_tag_cap: 4,
+ promote_priority: 2,
+ },
+ tags: [
+ {
+ id: 2546526,
+ tag_id: '6809640407484334093',
+ tag_name: '前端',
+ color: '#60ADFF',
+ icon: 'https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/leancloud-assets/bac28828a49181c34110.png~tplv-t2oaga2asx-image.image',
+ back_ground: '',
+ show_navi: 1,
+ ctime: 1435971546,
+ mtime: 1704364179,
+ id_type: 9,
+ tag_alias: '',
+ post_article_count: 437520,
+ concern_user_count: 674239,
+ },
+ {
+ id: 2546535,
+ tag_id: '6809640419505209358',
+ tag_name: '开源',
+ color: '#6EBD68',
+ icon: 'https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/leancloud-assets/553ecacd498946a9a6d9.png~tplv-t2oaga2asx-image.image',
+ back_ground: '',
+ show_navi: 0,
+ ctime: 1435972427,
+ mtime: 1704363524,
+ id_type: 9,
+ tag_alias: '',
+ post_article_count: 11756,
+ concern_user_count: 249816,
+ },
+ {
+ id: 2546806,
+ tag_id: '6809640793381273614',
+ tag_name: 'three.js',
+ color: '#000000',
+ icon: 'https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/leancloud-assets/edf74d6b6b4f5121731c.png~tplv-t2oaga2asx-image.image',
+ back_ground: '',
+ show_navi: 0,
+ ctime: 1488865919,
+ mtime: 1704360273,
+ id_type: 9,
+ tag_alias: '',
+ post_article_count: 1781,
+ concern_user_count: 28094,
+ },
+ ],
+ user_interact: {
+ id: 7303048156967027000,
+ omitempty: 2,
+ user_id: 0,
+ is_digg: false,
+ is_follow: false,
+ is_collect: false,
+ collect_set_count: 0,
+ },
+ org: {
+ org_info: null,
+ is_followed: false,
+ },
+ req_id: '2024010418301169F36BCDF5FB8E1AB87B',
+ status: {
+ push_status: 0,
+ },
+ theme_list: [],
+ extra: {
+ extra: '',
+ },
+ },
+ {
+ article_id: '7299709109879324691',
+ article_info: {
+ article_id: '7299709109879324691',
+ user_id: '2682464101469480',
+ category_id: '6809637776263217160',
+ tag_ids: [6809640407484334000, 6809640402103042000, 6809640419505209000],
+ visible_level: 0,
+ link_url: '',
+ cover_image:
+ 'https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/941af6d2401c4600b2867fc314dbbeaf~tplv-k3u1fbpfcp-jj-mark:0:0:0:0:q75.image#?w=1886&h=1186&s=505219&e=png&b=260947',
+ is_gfw: 0,
+ title: '仿mac系统交互设计的车载Pad操作系统',
+ brief_content:
+ '时隔100天,我又来水文了!3D数字孪生的系列好多小伙伴都感兴趣,项目在10月就已经完结了,后续我会将继续补充如何完整的做完一个3D数字孪生项目',
+ is_english: 0,
+ is_original: 1,
+ user_index: 11.437480020762536,
+ original_type: 0,
+ original_author: '',
+ content: '',
+ ctime: '1699636366',
+ mtime: '1699778058',
+ rtime: '1699778058',
+ draft_id: '7299506825875226661',
+ view_count: 2077,
+ collect_count: 10,
+ digg_count: 15,
+ comment_count: 2,
+ hot_index: 120,
+ is_hot: 0,
+ rank_index: 0.01209184,
+ status: 2,
+ verify_status: 1,
+ audit_status: 2,
+ mark_content: '',
+ display_count: 0,
+ is_markdown: 1,
+ app_html_content: '',
+ version: 2,
+ web_html_content: null,
+ meta_info: null,
+ catalog: null,
+ homepage_top_time: -62135596800,
+ homepage_top_status: 0,
+ content_count: 1841,
+ read_time: '6分钟',
+ },
+ author_user_info: {
+ user_id: '2682464101469480',
+ user_name: 'G_大雨',
+ company: '',
+ job_title: '',
+ avatar_large:
+ 'https://p3-passport.byteacctimg.com/img/user-avatar/c2fb4874b00b9202d5d26eb6624101d3~300x300.image',
+ level: 3,
+ description: '',
+ followee_count: 10,
+ follower_count: 129,
+ post_article_count: 9,
+ digg_article_count: 48,
+ got_digg_count: 190,
+ got_view_count: 22026,
+ post_shortmsg_count: 5,
+ digg_shortmsg_count: 0,
+ isfollowed: false,
+ favorable_author: 0,
+ power: 971,
+ study_point: 0,
+ university: {
+ university_id: '0',
+ name: '',
+ logo: '',
+ },
+ major: {
+ major_id: '0',
+ parent_id: '0',
+ name: '',
+ },
+ student_status: 0,
+ select_event_count: 0,
+ select_online_course_count: 0,
+ identity: 0,
+ is_select_annual: true,
+ select_annual_rank: 0,
+ annual_list_type: 0,
+ extraMap: {},
+ is_logout: 0,
+ annual_info: [],
+ account_amount: 0,
+ user_growth_info: {
+ user_id: 2682464101469480,
+ jpower: 971,
+ jscore: 929.5,
+ jpower_level: 3,
+ jscore_level: 5,
+ jscore_title: '先锋掘友',
+ author_achievement_list: [],
+ vip_level: 0,
+ vip_title: '',
+ jscore_next_level_score: 2000,
+ jscore_this_level_mini_score: 500,
+ vip_score: 0,
+ },
+ is_vip: false,
+ become_author_days: 0,
+ collection_set_article_count: 0,
+ recommend_article_count_daily: 0,
+ article_collect_count_daily: 0,
+ user_priv_info: {
+ administrator: 0,
+ builder: 0,
+ favorable_author: 0,
+ book_author: 0,
+ forbidden_words: 0,
+ can_tag_cnt: 0,
+ auto_recommend: 0,
+ signed_author: 0,
+ popular_author: 0,
+ can_add_video: 0,
+ },
+ },
+ category: {
+ category_id: '6809637776263217160',
+ category_name: '代码人生',
+ category_url: 'career',
+ rank: 7,
+ back_ground: '',
+ icon: '',
+ ctime: 1553759544,
+ mtime: 1553759548,
+ show_type: 3,
+ item_type: 2,
+ promote_tag_cap: 4,
+ promote_priority: 7,
+ },
+ tags: [
+ {
+ id: 2546526,
+ tag_id: '6809640407484334093',
+ tag_name: '前端',
+ color: '#60ADFF',
+ icon: 'https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/leancloud-assets/bac28828a49181c34110.png~tplv-t2oaga2asx-image.image',
+ back_ground: '',
+ show_navi: 1,
+ ctime: 1435971546,
+ mtime: 1704364179,
+ id_type: 9,
+ tag_alias: '',
+ post_article_count: 437520,
+ concern_user_count: 674239,
+ },
+ {
+ id: 2546522,
+ tag_id: '6809640402103042061',
+ tag_name: '前端框架',
+ color: '#F2AB5B',
+ icon: 'https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/leancloud-assets/f7a198f1e1aeb6d79878.png~tplv-t2oaga2asx-image.image',
+ back_ground: '',
+ show_navi: 0,
+ ctime: 1435964339,
+ mtime: 1704364179,
+ id_type: 9,
+ tag_alias: '',
+ post_article_count: 7744,
+ concern_user_count: 326495,
+ },
+ {
+ id: 2546535,
+ tag_id: '6809640419505209358',
+ tag_name: '开源',
+ color: '#6EBD68',
+ icon: 'https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/leancloud-assets/553ecacd498946a9a6d9.png~tplv-t2oaga2asx-image.image',
+ back_ground: '',
+ show_navi: 0,
+ ctime: 1435972427,
+ mtime: 1704363524,
+ id_type: 9,
+ tag_alias: '',
+ post_article_count: 11756,
+ concern_user_count: 249816,
+ },
+ ],
+ user_interact: {
+ id: 7299709109879325000,
+ omitempty: 2,
+ user_id: 0,
+ is_digg: false,
+ is_follow: false,
+ is_collect: false,
+ collect_set_count: 0,
+ },
+ org: {
+ org_info: null,
+ is_followed: false,
+ },
+ req_id: '2024010418301169F36BCDF5FB8E1AB87B',
+ status: {
+ push_status: 0,
+ },
+ theme_list: [],
+ extra: {
+ extra: '',
+ },
+ },
+ {
+ article_id: '7256964915133694008',
+ article_info: {
+ article_id: '7256964915133694008',
+ user_id: '2682464101469480',
+ category_id: '6809637767543259144',
+ tag_ids: [6809640407484334000, 6809640404791591000],
+ visible_level: 0,
+ link_url: '',
+ cover_image:
+ 'https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/b5542f51a3274f8791ce1d8257dc4039~tplv-k3u1fbpfcp-watermark.image?',
+ is_gfw: 0,
+ title: '制造业领域,我是如何被逼到做顶级架构设计的',
+ brief_content:
+ '什么是顶级?还是澄清下吧; 这里的顶级并非说“最牛&”、最高档次,而指的是在开发一个复杂系统或软件时的最高层次设计的过程。 接下来,我要介绍的是,我是如何被逼到从单业务系统到系统与系统层面的顶级设计。',
+ is_english: 0,
+ is_original: 1,
+ user_index: 10.070339420019154,
+ original_type: 0,
+ original_author: '',
+ content: '',
+ ctime: '1689652100',
+ mtime: '1689668573',
+ rtime: '1689668573',
+ draft_id: '7255491496831631416',
+ view_count: 1404,
+ collect_count: 21,
+ digg_count: 19,
+ comment_count: 6,
+ hot_index: 95,
+ is_hot: 0,
+ rank_index: 0.00212567,
+ status: 2,
+ verify_status: 1,
+ audit_status: 2,
+ mark_content: '',
+ display_count: 0,
+ is_markdown: 1,
+ app_html_content: '',
+ version: 2,
+ web_html_content: null,
+ meta_info: null,
+ catalog: null,
+ homepage_top_time: -62135596800,
+ homepage_top_status: 0,
+ content_count: 2360,
+ read_time: '8分钟',
+ },
+ author_user_info: {
+ user_id: '2682464101469480',
+ user_name: 'G_大雨',
+ company: '',
+ job_title: '',
+ avatar_large:
+ 'https://p3-passport.byteacctimg.com/img/user-avatar/c2fb4874b00b9202d5d26eb6624101d3~300x300.image',
+ level: 3,
+ description: '',
+ followee_count: 10,
+ follower_count: 129,
+ post_article_count: 9,
+ digg_article_count: 48,
+ got_digg_count: 190,
+ got_view_count: 22026,
+ post_shortmsg_count: 5,
+ digg_shortmsg_count: 0,
+ isfollowed: false,
+ favorable_author: 0,
+ power: 971,
+ study_point: 0,
+ university: {
+ university_id: '0',
+ name: '',
+ logo: '',
+ },
+ major: {
+ major_id: '0',
+ parent_id: '0',
+ name: '',
+ },
+ student_status: 0,
+ select_event_count: 0,
+ select_online_course_count: 0,
+ identity: 0,
+ is_select_annual: true,
+ select_annual_rank: 0,
+ annual_list_type: 0,
+ extraMap: {},
+ is_logout: 0,
+ annual_info: [],
+ account_amount: 0,
+ user_growth_info: {
+ user_id: 2682464101469480,
+ jpower: 971,
+ jscore: 929.5,
+ jpower_level: 3,
+ jscore_level: 5,
+ jscore_title: '先锋掘友',
+ author_achievement_list: [],
+ vip_level: 0,
+ vip_title: '',
+ jscore_next_level_score: 2000,
+ jscore_this_level_mini_score: 500,
+ vip_score: 0,
+ },
+ is_vip: false,
+ become_author_days: 0,
+ collection_set_article_count: 0,
+ recommend_article_count_daily: 0,
+ article_collect_count_daily: 0,
+ user_priv_info: {
+ administrator: 0,
+ builder: 0,
+ favorable_author: 0,
+ book_author: 0,
+ forbidden_words: 0,
+ can_tag_cnt: 0,
+ auto_recommend: 0,
+ signed_author: 0,
+ popular_author: 0,
+ can_add_video: 0,
+ },
+ },
+ category: {
+ category_id: '6809637767543259144',
+ category_name: '前端',
+ category_url: 'frontend',
+ rank: 2,
+ back_ground: 'https://lc-mhke0kuv.cn-n1.lcfile.com/8c95587526f346c0.png',
+ icon: 'https://lc-mhke0kuv.cn-n1.lcfile.com/1c40f5eaba561e32.png',
+ ctime: 1457483942,
+ mtime: 1432503190,
+ show_type: 3,
+ item_type: 2,
+ promote_tag_cap: 4,
+ promote_priority: 2,
+ },
+ tags: [
+ {
+ id: 2546526,
+ tag_id: '6809640407484334093',
+ tag_name: '前端',
+ color: '#60ADFF',
+ icon: 'https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/leancloud-assets/bac28828a49181c34110.png~tplv-t2oaga2asx-image.image',
+ back_ground: '',
+ show_navi: 1,
+ ctime: 1435971546,
+ mtime: 1704364179,
+ id_type: 9,
+ tag_alias: '',
+ post_article_count: 437520,
+ concern_user_count: 674239,
+ },
+ {
+ id: 2546524,
+ tag_id: '6809640404791590919',
+ tag_name: '面试',
+ color: '#545454',
+ icon: 'https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/leancloud-assets/85dd1ce8008458ac220c.png~tplv-t2oaga2asx-image.image',
+ back_ground: '',
+ show_navi: 0,
+ ctime: 1435971430,
+ mtime: 1704364179,
+ id_type: 9,
+ tag_alias: '',
+ post_article_count: 46282,
+ concern_user_count: 465905,
+ },
+ ],
+ user_interact: {
+ id: 7256964915133694000,
+ omitempty: 2,
+ user_id: 0,
+ is_digg: false,
+ is_follow: false,
+ is_collect: false,
+ collect_set_count: 0,
+ },
+ org: {
+ org_info: null,
+ is_followed: false,
+ },
+ req_id: '2024010418301169F36BCDF5FB8E1AB87B',
+ status: {
+ push_status: 0,
+ },
+ theme_list: [],
+ extra: {
+ extra: '',
+ },
+ },
+ {
+ article_id: '7250318500882432057',
+ article_info: {
+ article_id: '7250318500882432057',
+ user_id: '2682464101469480',
+ category_id: '6809637767543259144',
+ tag_ids: [6809640793381274000, 6809640525595935000],
+ visible_level: 0,
+ link_url: '',
+ cover_image:
+ 'https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/3727534baa6a478e9bbcb30d7472d40f~tplv-k3u1fbpfcp-watermark.image?',
+ is_gfw: 0,
+ title: '3D数字孪生 - Three.js 项目实战之相机控制器(五)',
+ brief_content:
+ '机器学习 oz@0xozram 9号在twitter上发了这样的一个短视频: 当然,这属于机器学习领域的内容,也就是大名鼎鼎的 google 在2015开源的 tensorflow,TensorFlo',
+ is_english: 0,
+ is_original: 1,
+ user_index: 9.463944942479607,
+ original_type: 0,
+ original_author: '',
+ content: '',
+ ctime: '1688108878',
+ mtime: '1688831884',
+ rtime: '1688831884',
+ draft_id: '7249765949742530597',
+ view_count: 2280,
+ collect_count: 24,
+ digg_count: 16,
+ comment_count: 5,
+ hot_index: 135,
+ is_hot: 0,
+ rank_index: 0.0027185,
+ status: 2,
+ verify_status: 1,
+ audit_status: 2,
+ mark_content: '',
+ display_count: 0,
+ is_markdown: 1,
+ app_html_content: '',
+ version: 1,
+ web_html_content: null,
+ meta_info: null,
+ catalog: null,
+ homepage_top_time: -62135596800,
+ homepage_top_status: 0,
+ content_count: 1808,
+ read_time: '6分钟',
+ },
+ author_user_info: {
+ user_id: '2682464101469480',
+ user_name: 'G_大雨',
+ company: '',
+ job_title: '',
+ avatar_large:
+ 'https://p3-passport.byteacctimg.com/img/user-avatar/c2fb4874b00b9202d5d26eb6624101d3~300x300.image',
+ level: 3,
+ description: '',
+ followee_count: 10,
+ follower_count: 129,
+ post_article_count: 9,
+ digg_article_count: 48,
+ got_digg_count: 190,
+ got_view_count: 22026,
+ post_shortmsg_count: 5,
+ digg_shortmsg_count: 0,
+ isfollowed: false,
+ favorable_author: 0,
+ power: 971,
+ study_point: 0,
+ university: {
+ university_id: '0',
+ name: '',
+ logo: '',
+ },
+ major: {
+ major_id: '0',
+ parent_id: '0',
+ name: '',
+ },
+ student_status: 0,
+ select_event_count: 0,
+ select_online_course_count: 0,
+ identity: 0,
+ is_select_annual: true,
+ select_annual_rank: 0,
+ annual_list_type: 0,
+ extraMap: {},
+ is_logout: 0,
+ annual_info: [],
+ account_amount: 0,
+ user_growth_info: {
+ user_id: 2682464101469480,
+ jpower: 971,
+ jscore: 929.5,
+ jpower_level: 3,
+ jscore_level: 5,
+ jscore_title: '先锋掘友',
+ author_achievement_list: [],
+ vip_level: 0,
+ vip_title: '',
+ jscore_next_level_score: 2000,
+ jscore_this_level_mini_score: 500,
+ vip_score: 0,
+ },
+ is_vip: false,
+ become_author_days: 0,
+ collection_set_article_count: 0,
+ recommend_article_count_daily: 0,
+ article_collect_count_daily: 0,
+ user_priv_info: {
+ administrator: 0,
+ builder: 0,
+ favorable_author: 0,
+ book_author: 0,
+ forbidden_words: 0,
+ can_tag_cnt: 0,
+ auto_recommend: 0,
+ signed_author: 0,
+ popular_author: 0,
+ can_add_video: 0,
+ },
+ },
+ category: {
+ category_id: '6809637767543259144',
+ category_name: '前端',
+ category_url: 'frontend',
+ rank: 2,
+ back_ground: 'https://lc-mhke0kuv.cn-n1.lcfile.com/8c95587526f346c0.png',
+ icon: 'https://lc-mhke0kuv.cn-n1.lcfile.com/1c40f5eaba561e32.png',
+ ctime: 1457483942,
+ mtime: 1432503190,
+ show_type: 3,
+ item_type: 2,
+ promote_tag_cap: 4,
+ promote_priority: 2,
+ },
+ tags: [
+ {
+ id: 2546806,
+ tag_id: '6809640793381273614',
+ tag_name: 'three.js',
+ color: '#000000',
+ icon: 'https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/leancloud-assets/edf74d6b6b4f5121731c.png~tplv-t2oaga2asx-image.image',
+ back_ground: '',
+ show_navi: 0,
+ ctime: 1488865919,
+ mtime: 1704360273,
+ id_type: 9,
+ tag_alias: '',
+ post_article_count: 1781,
+ concern_user_count: 28094,
+ },
+ {
+ id: 2546612,
+ tag_id: '6809640525595934734',
+ tag_name: '机器学习',
+ color: '#616161',
+ icon: 'https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/leancloud-assets/a066ea8ec92485ff84e8.png~tplv-t2oaga2asx-image.image',
+ back_ground: '',
+ show_navi: 0,
+ ctime: 1440889206,
+ mtime: 1704362750,
+ id_type: 9,
+ tag_alias: '',
+ post_article_count: 10146,
+ concern_user_count: 166781,
+ },
+ ],
+ user_interact: {
+ id: 7250318500882432000,
+ omitempty: 2,
+ user_id: 0,
+ is_digg: false,
+ is_follow: false,
+ is_collect: false,
+ collect_set_count: 0,
+ },
+ org: {
+ org_info: null,
+ is_followed: false,
+ },
+ req_id: '2024010418301169F36BCDF5FB8E1AB87B',
+ status: {
+ push_status: 0,
+ },
+ theme_list: [],
+ extra: {
+ extra: '',
+ },
+ },
+ {
+ article_id: '7248545082130169893',
+ article_info: {
+ article_id: '7248545082130169893',
+ user_id: '2682464101469480',
+ category_id: '6809637767543259144',
+ tag_ids: [6809640793381274000, 6809640497393435000],
+ visible_level: 0,
+ link_url: '',
+ cover_image:
+ 'https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/05bba1c501124628a6bd11dc7f93a96a~tplv-k3u1fbpfcp-watermark.image?',
+ is_gfw: 0,
+ title: '3D数字孪生 - Three.js 项目实战之相机(四)',
+ brief_content:
+ '承上 在第一篇# 3D数字孪生 - Three.js 项目介绍与基础环境搭建(一)有介绍,在使用 three/filber 的Canvas组件时,默认情况下,会自动添加初始化一个透视相机(Perspe',
+ is_english: 0,
+ is_original: 1,
+ user_index: 9.01959424539129,
+ original_type: 0,
+ original_author: '',
+ content: '',
+ ctime: '1687694967',
+ mtime: '1687748103',
+ rtime: '1687748103',
+ draft_id: '7248466120364343333',
+ view_count: 1752,
+ collect_count: 32,
+ digg_count: 22,
+ comment_count: 1,
+ hot_index: 110,
+ is_hot: 0,
+ rank_index: 0.0020533,
+ status: 2,
+ verify_status: 1,
+ audit_status: 2,
+ mark_content: '',
+ display_count: 0,
+ is_markdown: 1,
+ app_html_content: '',
+ version: 1,
+ web_html_content: null,
+ meta_info: null,
+ catalog: null,
+ homepage_top_time: -62135596800,
+ homepage_top_status: 0,
+ content_count: 1576,
+ read_time: '5分钟',
+ },
+ author_user_info: {
+ user_id: '2682464101469480',
+ user_name: 'G_大雨',
+ company: '',
+ job_title: '',
+ avatar_large:
+ 'https://p3-passport.byteacctimg.com/img/user-avatar/c2fb4874b00b9202d5d26eb6624101d3~300x300.image',
+ level: 3,
+ description: '',
+ followee_count: 10,
+ follower_count: 129,
+ post_article_count: 9,
+ digg_article_count: 48,
+ got_digg_count: 190,
+ got_view_count: 22026,
+ post_shortmsg_count: 5,
+ digg_shortmsg_count: 0,
+ isfollowed: false,
+ favorable_author: 0,
+ power: 971,
+ study_point: 0,
+ university: {
+ university_id: '0',
+ name: '',
+ logo: '',
+ },
+ major: {
+ major_id: '0',
+ parent_id: '0',
+ name: '',
+ },
+ student_status: 0,
+ select_event_count: 0,
+ select_online_course_count: 0,
+ identity: 0,
+ is_select_annual: true,
+ select_annual_rank: 0,
+ annual_list_type: 0,
+ extraMap: {},
+ is_logout: 0,
+ annual_info: [],
+ account_amount: 0,
+ user_growth_info: {
+ user_id: 2682464101469480,
+ jpower: 971,
+ jscore: 929.5,
+ jpower_level: 3,
+ jscore_level: 5,
+ jscore_title: '先锋掘友',
+ author_achievement_list: [],
+ vip_level: 0,
+ vip_title: '',
+ jscore_next_level_score: 2000,
+ jscore_this_level_mini_score: 500,
+ vip_score: 0,
+ },
+ is_vip: false,
+ become_author_days: 0,
+ collection_set_article_count: 0,
+ recommend_article_count_daily: 0,
+ article_collect_count_daily: 0,
+ user_priv_info: {
+ administrator: 0,
+ builder: 0,
+ favorable_author: 0,
+ book_author: 0,
+ forbidden_words: 0,
+ can_tag_cnt: 0,
+ auto_recommend: 0,
+ signed_author: 0,
+ popular_author: 0,
+ can_add_video: 0,
+ },
+ },
+ category: {
+ category_id: '6809637767543259144',
+ category_name: '前端',
+ category_url: 'frontend',
+ rank: 2,
+ back_ground: 'https://lc-mhke0kuv.cn-n1.lcfile.com/8c95587526f346c0.png',
+ icon: 'https://lc-mhke0kuv.cn-n1.lcfile.com/1c40f5eaba561e32.png',
+ ctime: 1457483942,
+ mtime: 1432503190,
+ show_type: 3,
+ item_type: 2,
+ promote_tag_cap: 4,
+ promote_priority: 2,
+ },
+ tags: [
+ {
+ id: 2546806,
+ tag_id: '6809640793381273614',
+ tag_name: 'three.js',
+ color: '#000000',
+ icon: 'https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/leancloud-assets/edf74d6b6b4f5121731c.png~tplv-t2oaga2asx-image.image',
+ back_ground: '',
+ show_navi: 0,
+ ctime: 1488865919,
+ mtime: 1704360273,
+ id_type: 9,
+ tag_alias: '',
+ post_article_count: 1781,
+ concern_user_count: 28094,
+ },
+ {
+ id: 2546591,
+ tag_id: '6809640497393434632',
+ tag_name: 'Canvas',
+ color: '#F51A00',
+ icon: 'https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/leancloud-assets/d21230e1c079d7706713.png~tplv-t2oaga2asx-image.image',
+ back_ground: '',
+ show_navi: 0,
+ ctime: 1439500018,
+ mtime: 1704364179,
+ id_type: 9,
+ tag_alias: '',
+ post_article_count: 3106,
+ concern_user_count: 84113,
+ },
+ ],
+ user_interact: {
+ id: 7248545082130170000,
+ omitempty: 2,
+ user_id: 0,
+ is_digg: false,
+ is_follow: false,
+ is_collect: false,
+ collect_set_count: 0,
+ },
+ org: {
+ org_info: null,
+ is_followed: false,
+ },
+ req_id: '2024010418301169F36BCDF5FB8E1AB87B',
+ status: {
+ push_status: 0,
+ },
+ theme_list: [],
+ extra: {
+ extra: '',
+ },
+ },
+ {
+ article_id: '7246657502842945597',
+ article_info: {
+ article_id: '7246657502842945597',
+ user_id: '2682464101469480',
+ category_id: '6809637767543259144',
+ tag_ids: [6809640793381274000],
+ visible_level: 0,
+ link_url: '',
+ cover_image:
+ 'https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/1465296be96f41f58e9a2c9a35551736~tplv-k3u1fbpfcp-watermark.image?',
+ is_gfw: 0,
+ title: '3D数字孪生 - Three.js 项目实战之场景材质(三)',
+ brief_content:
+ '接上文# 3D数字孪生 - Three.js 场景光源(二)最后的问题: “为何已关闭场景中所有光源,仍然有些面是亮的呢?” 我们不妨近距离的观察一下,打开场景中的方向光 DirectionalLig',
+ is_english: 0,
+ is_original: 1,
+ user_index: 8.52173105363898,
+ original_type: 0,
+ original_author: '',
+ content: '',
+ ctime: '1687251948',
+ mtime: '1687335742',
+ rtime: '1687335742',
+ draft_id: '7246564869222580282',
+ view_count: 1869,
+ collect_count: 24,
+ digg_count: 13,
+ comment_count: 0,
+ hot_index: 106,
+ is_hot: 0,
+ rank_index: 0.00191366,
+ status: 2,
+ verify_status: 1,
+ audit_status: 2,
+ mark_content: '',
+ display_count: 0,
+ is_markdown: 1,
+ app_html_content: '',
+ version: 4,
+ web_html_content: null,
+ meta_info: null,
+ catalog: null,
+ homepage_top_time: -62135596800,
+ homepage_top_status: 0,
+ content_count: 1284,
+ read_time: '4分钟',
+ },
+ author_user_info: {
+ user_id: '2682464101469480',
+ user_name: 'G_大雨',
+ company: '',
+ job_title: '',
+ avatar_large:
+ 'https://p3-passport.byteacctimg.com/img/user-avatar/c2fb4874b00b9202d5d26eb6624101d3~300x300.image',
+ level: 3,
+ description: '',
+ followee_count: 10,
+ follower_count: 129,
+ post_article_count: 9,
+ digg_article_count: 48,
+ got_digg_count: 190,
+ got_view_count: 22026,
+ post_shortmsg_count: 5,
+ digg_shortmsg_count: 0,
+ isfollowed: false,
+ favorable_author: 0,
+ power: 971,
+ study_point: 0,
+ university: {
+ university_id: '0',
+ name: '',
+ logo: '',
+ },
+ major: {
+ major_id: '0',
+ parent_id: '0',
+ name: '',
+ },
+ student_status: 0,
+ select_event_count: 0,
+ select_online_course_count: 0,
+ identity: 0,
+ is_select_annual: true,
+ select_annual_rank: 0,
+ annual_list_type: 0,
+ extraMap: {},
+ is_logout: 0,
+ annual_info: [],
+ account_amount: 0,
+ user_growth_info: {
+ user_id: 2682464101469480,
+ jpower: 971,
+ jscore: 929.5,
+ jpower_level: 3,
+ jscore_level: 5,
+ jscore_title: '先锋掘友',
+ author_achievement_list: [],
+ vip_level: 0,
+ vip_title: '',
+ jscore_next_level_score: 2000,
+ jscore_this_level_mini_score: 500,
+ vip_score: 0,
+ },
+ is_vip: false,
+ become_author_days: 0,
+ collection_set_article_count: 0,
+ recommend_article_count_daily: 0,
+ article_collect_count_daily: 0,
+ user_priv_info: {
+ administrator: 0,
+ builder: 0,
+ favorable_author: 0,
+ book_author: 0,
+ forbidden_words: 0,
+ can_tag_cnt: 0,
+ auto_recommend: 0,
+ signed_author: 0,
+ popular_author: 0,
+ can_add_video: 0,
+ },
+ },
+ category: {
+ category_id: '6809637767543259144',
+ category_name: '前端',
+ category_url: 'frontend',
+ rank: 2,
+ back_ground: 'https://lc-mhke0kuv.cn-n1.lcfile.com/8c95587526f346c0.png',
+ icon: 'https://lc-mhke0kuv.cn-n1.lcfile.com/1c40f5eaba561e32.png',
+ ctime: 1457483942,
+ mtime: 1432503190,
+ show_type: 3,
+ item_type: 2,
+ promote_tag_cap: 4,
+ promote_priority: 2,
+ },
+ tags: [
+ {
+ id: 2546806,
+ tag_id: '6809640793381273614',
+ tag_name: 'three.js',
+ color: '#000000',
+ icon: 'https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/leancloud-assets/edf74d6b6b4f5121731c.png~tplv-t2oaga2asx-image.image',
+ back_ground: '',
+ show_navi: 0,
+ ctime: 1488865919,
+ mtime: 1704360273,
+ id_type: 9,
+ tag_alias: '',
+ post_article_count: 1781,
+ concern_user_count: 28094,
+ },
+ ],
+ user_interact: {
+ id: 7246657502842946000,
+ omitempty: 2,
+ user_id: 0,
+ is_digg: false,
+ is_follow: false,
+ is_collect: false,
+ collect_set_count: 0,
+ },
+ org: {
+ org_info: null,
+ is_followed: false,
+ },
+ req_id: '2024010418301169F36BCDF5FB8E1AB87B',
+ status: {
+ push_status: 0,
+ },
+ theme_list: [],
+ extra: {
+ extra: '',
+ },
+ },
+ {
+ article_id: '7246316652048269373',
+ article_info: {
+ article_id: '7246316652048269373',
+ user_id: '2682464101469480',
+ category_id: '6809637767543259144',
+ tag_ids: [6809640793381274000],
+ visible_level: 0,
+ link_url: '',
+ cover_image:
+ 'https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/638de6b1ba4b48bab0229b70095e718e~tplv-k3u1fbpfcp-watermark.image?',
+ is_gfw: 0,
+ title: '3D数字孪生 - Three.js 项目实战之场景光源(二)',
+ brief_content:
+ '前言 接下来的项目实战讲解过程中,有必要多花几个篇幅介绍一下项目中用到的两个库。 "@react-three/drei": "^9.70.3", "@react-three/fiber": "^8.1',
+ is_english: 0,
+ is_original: 1,
+ user_index: 9.158795645897236,
+ original_type: 0,
+ original_author: '',
+ content: '',
+ ctime: '1687179552',
+ mtime: '1687331693',
+ rtime: '1687239614',
+ draft_id: '7246311040267370556',
+ view_count: 1414,
+ collect_count: 19,
+ digg_count: 10,
+ comment_count: 2,
+ hot_index: 82,
+ is_hot: 0,
+ rank_index: 0.00151119,
+ status: 2,
+ verify_status: 1,
+ audit_status: 2,
+ mark_content: '',
+ display_count: 0,
+ is_markdown: 1,
+ app_html_content: '',
+ version: 2,
+ web_html_content: null,
+ meta_info: null,
+ catalog: null,
+ homepage_top_time: -62135596800,
+ homepage_top_status: 0,
+ content_count: 1143,
+ read_time: '4分钟',
+ },
+ author_user_info: {
+ user_id: '2682464101469480',
+ user_name: 'G_大雨',
+ company: '',
+ job_title: '',
+ avatar_large:
+ 'https://p3-passport.byteacctimg.com/img/user-avatar/c2fb4874b00b9202d5d26eb6624101d3~300x300.image',
+ level: 3,
+ description: '',
+ followee_count: 10,
+ follower_count: 129,
+ post_article_count: 9,
+ digg_article_count: 48,
+ got_digg_count: 190,
+ got_view_count: 22026,
+ post_shortmsg_count: 5,
+ digg_shortmsg_count: 0,
+ isfollowed: false,
+ favorable_author: 0,
+ power: 971,
+ study_point: 0,
+ university: {
+ university_id: '0',
+ name: '',
+ logo: '',
+ },
+ major: {
+ major_id: '0',
+ parent_id: '0',
+ name: '',
+ },
+ student_status: 0,
+ select_event_count: 0,
+ select_online_course_count: 0,
+ identity: 0,
+ is_select_annual: true,
+ select_annual_rank: 0,
+ annual_list_type: 0,
+ extraMap: {},
+ is_logout: 0,
+ annual_info: [],
+ account_amount: 0,
+ user_growth_info: {
+ user_id: 2682464101469480,
+ jpower: 971,
+ jscore: 929.5,
+ jpower_level: 3,
+ jscore_level: 5,
+ jscore_title: '先锋掘友',
+ author_achievement_list: [],
+ vip_level: 0,
+ vip_title: '',
+ jscore_next_level_score: 2000,
+ jscore_this_level_mini_score: 500,
+ vip_score: 0,
+ },
+ is_vip: false,
+ become_author_days: 0,
+ collection_set_article_count: 0,
+ recommend_article_count_daily: 0,
+ article_collect_count_daily: 0,
+ user_priv_info: {
+ administrator: 0,
+ builder: 0,
+ favorable_author: 0,
+ book_author: 0,
+ forbidden_words: 0,
+ can_tag_cnt: 0,
+ auto_recommend: 0,
+ signed_author: 0,
+ popular_author: 0,
+ can_add_video: 0,
+ },
+ },
+ category: {
+ category_id: '6809637767543259144',
+ category_name: '前端',
+ category_url: 'frontend',
+ rank: 2,
+ back_ground: 'https://lc-mhke0kuv.cn-n1.lcfile.com/8c95587526f346c0.png',
+ icon: 'https://lc-mhke0kuv.cn-n1.lcfile.com/1c40f5eaba561e32.png',
+ ctime: 1457483942,
+ mtime: 1432503190,
+ show_type: 3,
+ item_type: 2,
+ promote_tag_cap: 4,
+ promote_priority: 2,
+ },
+ tags: [
+ {
+ id: 2546806,
+ tag_id: '6809640793381273614',
+ tag_name: 'three.js',
+ color: '#000000',
+ icon: 'https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/leancloud-assets/edf74d6b6b4f5121731c.png~tplv-t2oaga2asx-image.image',
+ back_ground: '',
+ show_navi: 0,
+ ctime: 1488865919,
+ mtime: 1704360273,
+ id_type: 9,
+ tag_alias: '',
+ post_article_count: 1781,
+ concern_user_count: 28094,
+ },
+ ],
+ user_interact: {
+ id: 7246316652048269000,
+ omitempty: 2,
+ user_id: 0,
+ is_digg: false,
+ is_follow: false,
+ is_collect: false,
+ collect_set_count: 0,
+ },
+ org: {
+ org_info: null,
+ is_followed: false,
+ },
+ req_id: '2024010418301169F36BCDF5FB8E1AB87B',
+ status: {
+ push_status: 0,
+ },
+ theme_list: [],
+ extra: {
+ extra: '',
+ },
+ },
+ {
+ article_id: '7244894506305536057',
+ article_info: {
+ article_id: '7244894506305536057',
+ user_id: '2682464101469480',
+ category_id: '6809637767543259144',
+ tag_ids: [6809640793381274000, 6809640357354013000, 6809640407484334000],
+ visible_level: 0,
+ link_url: '',
+ cover_image:
+ 'https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/6dac5e4b92d048409629828852b2d79d~tplv-k3u1fbpfcp-jj-mark:0:0:0:0:q75.image#?w=1919&h=959&s=1380008&e=png&b=e0dede',
+ is_gfw: 0,
+ title: '3D数字孪生 - Three.js 项目介绍与基础环境搭建(一)',
+ brief_content:
+ '3D数字孪生,生成3D可视化仓库地图,实时监控仓库库位坐标、调度任务状态、车辆位置等信息。 根据调度信息,动态展现小车任务状态',
+ is_english: 0,
+ is_original: 1,
+ user_index: 8.905619350311529,
+ original_type: 0,
+ original_author: '',
+ content: '',
+ ctime: '1686886155',
+ mtime: '1702997867',
+ rtime: '1686908640',
+ draft_id: '7244785030567886907',
+ view_count: 9415,
+ collect_count: 186,
+ digg_count: 86,
+ comment_count: 33,
+ hot_index: 589,
+ is_hot: 0,
+ rank_index: 0.00966501,
+ status: 2,
+ verify_status: 1,
+ audit_status: 2,
+ mark_content: '',
+ display_count: 0,
+ is_markdown: 1,
+ app_html_content: '',
+ version: 10,
+ web_html_content: null,
+ meta_info: null,
+ catalog: null,
+ homepage_top_time: -62135596800,
+ homepage_top_status: 0,
+ content_count: 1859,
+ read_time: '6分钟',
+ },
+ author_user_info: {
+ user_id: '2682464101469480',
+ user_name: 'G_大雨',
+ company: '',
+ job_title: '',
+ avatar_large:
+ 'https://p3-passport.byteacctimg.com/img/user-avatar/c2fb4874b00b9202d5d26eb6624101d3~300x300.image',
+ level: 3,
+ description: '',
+ followee_count: 10,
+ follower_count: 129,
+ post_article_count: 9,
+ digg_article_count: 48,
+ got_digg_count: 190,
+ got_view_count: 22026,
+ post_shortmsg_count: 5,
+ digg_shortmsg_count: 0,
+ isfollowed: false,
+ favorable_author: 0,
+ power: 971,
+ study_point: 0,
+ university: {
+ university_id: '0',
+ name: '',
+ logo: '',
+ },
+ major: {
+ major_id: '0',
+ parent_id: '0',
+ name: '',
+ },
+ student_status: 0,
+ select_event_count: 0,
+ select_online_course_count: 0,
+ identity: 0,
+ is_select_annual: true,
+ select_annual_rank: 0,
+ annual_list_type: 0,
+ extraMap: {},
+ is_logout: 0,
+ annual_info: [],
+ account_amount: 0,
+ user_growth_info: {
+ user_id: 2682464101469480,
+ jpower: 971,
+ jscore: 929.5,
+ jpower_level: 3,
+ jscore_level: 5,
+ jscore_title: '先锋掘友',
+ author_achievement_list: [],
+ vip_level: 0,
+ vip_title: '',
+ jscore_next_level_score: 2000,
+ jscore_this_level_mini_score: 500,
+ vip_score: 0,
+ },
+ is_vip: false,
+ become_author_days: 0,
+ collection_set_article_count: 0,
+ recommend_article_count_daily: 0,
+ article_collect_count_daily: 0,
+ user_priv_info: {
+ administrator: 0,
+ builder: 0,
+ favorable_author: 0,
+ book_author: 0,
+ forbidden_words: 0,
+ can_tag_cnt: 0,
+ auto_recommend: 0,
+ signed_author: 0,
+ popular_author: 0,
+ can_add_video: 0,
+ },
+ },
+ category: {
+ category_id: '6809637767543259144',
+ category_name: '前端',
+ category_url: 'frontend',
+ rank: 2,
+ back_ground: 'https://lc-mhke0kuv.cn-n1.lcfile.com/8c95587526f346c0.png',
+ icon: 'https://lc-mhke0kuv.cn-n1.lcfile.com/1c40f5eaba561e32.png',
+ ctime: 1457483942,
+ mtime: 1432503190,
+ show_type: 3,
+ item_type: 2,
+ promote_tag_cap: 4,
+ promote_priority: 2,
+ },
+ tags: [
+ {
+ id: 2546806,
+ tag_id: '6809640793381273614',
+ tag_name: 'three.js',
+ color: '#000000',
+ icon: 'https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/leancloud-assets/edf74d6b6b4f5121731c.png~tplv-t2oaga2asx-image.image',
+ back_ground: '',
+ show_navi: 0,
+ ctime: 1488865919,
+ mtime: 1704360273,
+ id_type: 9,
+ tag_alias: '',
+ post_article_count: 1781,
+ concern_user_count: 28094,
+ },
+ {
+ id: 2546490,
+ tag_id: '6809640357354012685',
+ tag_name: 'React.js',
+ color: '#61DAFB',
+ icon: 'https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/leancloud-assets/f655215074250f10f8d4.png~tplv-t2oaga2asx-image.image',
+ back_ground: '',
+ show_navi: 0,
+ ctime: 1432234367,
+ mtime: 1704364179,
+ id_type: 9,
+ tag_alias: '',
+ post_article_count: 30277,
+ concern_user_count: 292781,
+ },
+ {
+ id: 2546526,
+ tag_id: '6809640407484334093',
+ tag_name: '前端',
+ color: '#60ADFF',
+ icon: 'https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/leancloud-assets/bac28828a49181c34110.png~tplv-t2oaga2asx-image.image',
+ back_ground: '',
+ show_navi: 1,
+ ctime: 1435971546,
+ mtime: 1704364179,
+ id_type: 9,
+ tag_alias: '',
+ post_article_count: 437520,
+ concern_user_count: 674239,
+ },
+ ],
+ user_interact: {
+ id: 7244894506305536000,
+ omitempty: 2,
+ user_id: 0,
+ is_digg: false,
+ is_follow: false,
+ is_collect: false,
+ collect_set_count: 0,
+ },
+ org: {
+ org_info: null,
+ is_followed: false,
+ },
+ req_id: '2024010418301169F36BCDF5FB8E1AB87B',
+ status: {
+ push_status: 0,
+ },
+ theme_list: [],
+ extra: {
+ extra: '',
+ },
+ },
+ {
+ article_id: '7235027795393462333',
+ article_info: {
+ article_id: '7235027795393462333',
+ user_id: '2682464101469480',
+ category_id: '6809637767543259144',
+ tag_ids: [6809640497393435000],
+ visible_level: 0,
+ link_url: '',
+ cover_image: '',
+ is_gfw: 0,
+ title: 'konva绘制图像标定',
+ brief_content: '视频流标定工具,矩形与多边形绘制。仓库地图动态标注摄像机位置。konva.js konva-react实战',
+ is_english: 0,
+ is_original: 1,
+ user_index: 0,
+ original_type: 0,
+ original_author: '',
+ content: '',
+ ctime: '1684553355',
+ mtime: '1684571408',
+ rtime: '1684571408',
+ draft_id: '7234887157000454202',
+ view_count: 1418,
+ collect_count: 9,
+ digg_count: 2,
+ comment_count: 2,
+ hot_index: 74,
+ is_hot: 0,
+ rank_index: 0.00101618,
+ status: 2,
+ verify_status: 1,
+ audit_status: 2,
+ mark_content: '',
+ display_count: 0,
+ is_markdown: 1,
+ app_html_content: '',
+ version: 3,
+ web_html_content: null,
+ meta_info: null,
+ catalog: null,
+ homepage_top_time: -62135596800,
+ homepage_top_status: 0,
+ content_count: 1222,
+ read_time: '4分钟',
+ },
+ author_user_info: {
+ user_id: '2682464101469480',
+ user_name: 'G_大雨',
+ company: '',
+ job_title: '',
+ avatar_large:
+ 'https://p3-passport.byteacctimg.com/img/user-avatar/c2fb4874b00b9202d5d26eb6624101d3~300x300.image',
+ level: 3,
+ description: '',
+ followee_count: 10,
+ follower_count: 129,
+ post_article_count: 9,
+ digg_article_count: 48,
+ got_digg_count: 190,
+ got_view_count: 22026,
+ post_shortmsg_count: 5,
+ digg_shortmsg_count: 0,
+ isfollowed: false,
+ favorable_author: 0,
+ power: 971,
+ study_point: 0,
+ university: {
+ university_id: '0',
+ name: '',
+ logo: '',
+ },
+ major: {
+ major_id: '0',
+ parent_id: '0',
+ name: '',
+ },
+ student_status: 0,
+ select_event_count: 0,
+ select_online_course_count: 0,
+ identity: 0,
+ is_select_annual: true,
+ select_annual_rank: 0,
+ annual_list_type: 0,
+ extraMap: {},
+ is_logout: 0,
+ annual_info: [],
+ account_amount: 0,
+ user_growth_info: {
+ user_id: 2682464101469480,
+ jpower: 971,
+ jscore: 929.5,
+ jpower_level: 3,
+ jscore_level: 5,
+ jscore_title: '先锋掘友',
+ author_achievement_list: [],
+ vip_level: 0,
+ vip_title: '',
+ jscore_next_level_score: 2000,
+ jscore_this_level_mini_score: 500,
+ vip_score: 0,
+ },
+ is_vip: false,
+ become_author_days: 0,
+ collection_set_article_count: 0,
+ recommend_article_count_daily: 0,
+ article_collect_count_daily: 0,
+ user_priv_info: {
+ administrator: 0,
+ builder: 0,
+ favorable_author: 0,
+ book_author: 0,
+ forbidden_words: 0,
+ can_tag_cnt: 0,
+ auto_recommend: 0,
+ signed_author: 0,
+ popular_author: 0,
+ can_add_video: 0,
+ },
+ },
+ category: {
+ category_id: '6809637767543259144',
+ category_name: '前端',
+ category_url: 'frontend',
+ rank: 2,
+ back_ground: 'https://lc-mhke0kuv.cn-n1.lcfile.com/8c95587526f346c0.png',
+ icon: 'https://lc-mhke0kuv.cn-n1.lcfile.com/1c40f5eaba561e32.png',
+ ctime: 1457483942,
+ mtime: 1432503190,
+ show_type: 3,
+ item_type: 2,
+ promote_tag_cap: 4,
+ promote_priority: 2,
+ },
+ tags: [
+ {
+ id: 2546591,
+ tag_id: '6809640497393434632',
+ tag_name: 'Canvas',
+ color: '#F51A00',
+ icon: 'https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/leancloud-assets/d21230e1c079d7706713.png~tplv-t2oaga2asx-image.image',
+ back_ground: '',
+ show_navi: 0,
+ ctime: 1439500018,
+ mtime: 1704364179,
+ id_type: 9,
+ tag_alias: '',
+ post_article_count: 3106,
+ concern_user_count: 84113,
+ },
+ ],
+ user_interact: {
+ id: 7235027795393462000,
+ omitempty: 2,
+ user_id: 0,
+ is_digg: false,
+ is_follow: false,
+ is_collect: false,
+ collect_set_count: 0,
+ },
+ org: {
+ org_info: null,
+ is_followed: false,
+ },
+ req_id: '2024010418301169F36BCDF5FB8E1AB87B',
+ status: {
+ push_status: 0,
+ },
+ theme_list: [],
+ extra: {
+ extra: '',
+ },
+ },
+];
diff --git a/apps/admin/src/views/home/components/juejinTable.tsx b/apps/admin/src/views/home/components/juejinTable.tsx
new file mode 100644
index 00000000..b27f6f9e
--- /dev/null
+++ b/apps/admin/src/views/home/components/juejinTable.tsx
@@ -0,0 +1,74 @@
+import { Card } from 'antd';
+import { GSearchTable } from 'gbeata';
+import React, { useState } from 'react';
+
+import { juejinData } from './data';
+
+import type { GSearchTableField } from 'gbeata/lib/GSearchTable/g-search-table';
+
+const fields: Array = [
+ {
+ title: '文章标题',
+ key: 'title',
+ search: true,
+ render: (text, record) => {
+ // eslint-disable-next-line @typescript-eslint/naming-convention
+ const { title, article_id } = record.article_info;
+ return (
+
+ {title}
+
+ );
+ },
+ },
+ {
+ title: '简介',
+ key: 'brief_content',
+ render: (text, record) => {
+ // eslint-disable-next-line @typescript-eslint/naming-convention
+ const { brief_content } = record.article_info;
+ return brief_content;
+ },
+ },
+
+ {
+ title: '阅读数',
+ width: '120px',
+ key: 'view_count',
+ render: (text, record) => {
+ // eslint-disable-next-line @typescript-eslint/naming-convention
+ const { view_count } = record.article_info;
+ return view_count;
+ },
+ },
+ {
+ title: '点赞数',
+ key: 'digg_count',
+ width: '120px',
+ sort: true,
+ render: (text, record) => {
+ // eslint-disable-next-line @typescript-eslint/naming-convention
+ const { digg_count } = record.article_info;
+ return digg_count;
+ },
+ },
+ {
+ title: '收藏数',
+ key: 'collect_count',
+ width: '90px',
+ render: (text, record) => {
+ // eslint-disable-next-line @typescript-eslint/naming-convention
+ const { collect_count } = record.article_info;
+ return collect_count;
+ },
+ },
+];
+
+export default function JuejinTable() {
+ const [data] = useState(juejinData);
+ return (
+
+
+
+ );
+}
diff --git a/apps/admin/src/views/home/index.tsx b/apps/admin/src/views/home/index.tsx
index 72733427..e91e22e1 100644
--- a/apps/admin/src/views/home/index.tsx
+++ b/apps/admin/src/views/home/index.tsx
@@ -6,6 +6,7 @@ import UserCard from '@/components/UserCard';
import { AnalyzeCard } from './components/AnalyzeCard';
import CommitTable from './components/CommitTable';
+import JuejinTable from './components/juejinTable';
import SlickBox from './components/SlickBox';
import useStyles from './index.style';
@@ -65,10 +66,11 @@ const HomePage: FC = () => {
-
+
+ {/*
其实呢,大部分普通人的生活,就是在做那些零零碎碎的小事,工作也好,生活也好,哪有那么多惊天动地的大事呢,只不过我们很多时候并没有用心,又或者我们太忙碌,大焦虑,无法从这些小事中品出温情,获得满足。
借此记录自己每天的点点滴滴,充实自己。
-
+ */}
diff --git a/apps/admin/src/views/user/components/friends/index.tsx b/apps/admin/src/views/user/components/friends/index.tsx
index 3fefb556..ce2bdb70 100644
--- a/apps/admin/src/views/user/components/friends/index.tsx
+++ b/apps/admin/src/views/user/components/friends/index.tsx
@@ -1,30 +1,110 @@
-import { Card, Checkbox, Col, Row, Select, Switch } from 'antd';
+import { DeleteOutlined, EditOutlined, MoreOutlined } from '@ant-design/icons';
+import { Avatar, Button, Card, Col, Dropdown, Flex, Row, Space, Typography } from 'antd';
+import { SvgIcon } from 'ui';
+import travel_3 from '@/assets/images/travel_3.jpg';
+
+import useStyles from '../styles';
+
+import type { MenuProps } from 'antd';
import type { FC } from 'react';
+const { Title, Text } = Typography;
+
+export interface PFriendsItem {
+ avatar: string;
+ name: string;
+ title: string;
+}
+
export interface PFriends {}
-const Friends: FC = () => (
- <>
-
-
-
- Checkbox
-
-
-
-
-
-
- >
-);
+const Friends: FC = () => {
+ const { styles, cx } = useStyles();
+ const items: MenuProps['items'] = [
+ {
+ key: '1',
+ label: (
+
+
+ 删除
+
+ ),
+ },
+ {
+ key: '2',
+ label: (
+
+
+ 修改
+
+ ),
+ },
+ ];
+ const onClick: MenuProps['onClick'] = ({ key }) => {
+ switch (key) {
+ case 'lock':
+ break;
+ case 'logout':
+ break;
+ default:
+ break;
+ }
+ };
+
+ const FriendData: PFriendsItem[] = [
+ {
+ avatar: travel_3,
+ name: 'Gbeata',
+ title: '来历不明',
+ },
+ {
+ avatar: travel_3,
+ name: 'Gbeata',
+ title: '来历不明',
+ },
+ {
+ avatar: travel_3,
+ name: 'Gbeata',
+ title: '来历不明',
+ },
+ {
+ avatar: travel_3,
+ name: 'Gbeata',
+ title: '来历不明',
+ },
+ ];
+ return (
+ <>
+
+ {FriendData.map((item, index) => (
+
+
+
+ }
+ >
+
+
+
+
+ {item.name}
+
+ {item.title}
+
+ } />
+ } />
+ } />
+
+
+
+
+ ))}
+
+ >
+ );
+};
export default Friends;
diff --git a/apps/admin/src/views/user/components/proFile/index.tsx b/apps/admin/src/views/user/components/proFile/index.tsx
index 89ebaf69..3f471d7b 100644
--- a/apps/admin/src/views/user/components/proFile/index.tsx
+++ b/apps/admin/src/views/user/components/proFile/index.tsx
@@ -22,7 +22,7 @@ import travel_3 from '@/assets/images/travel_3.jpg';
import Message from '../message';
import SendBox from '../sendBox';
-import useStyles from './styles';
+import useStyles from '../styles';
import type { PMessage } from '../message';
import type { FC } from 'react';
diff --git a/apps/admin/src/views/user/components/proFile/styles.ts b/apps/admin/src/views/user/components/styles/index.ts
similarity index 64%
rename from apps/admin/src/views/user/components/proFile/styles.ts
rename to apps/admin/src/views/user/components/styles/index.ts
index c62677ed..4b739ed9 100644
--- a/apps/admin/src/views/user/components/proFile/styles.ts
+++ b/apps/admin/src/views/user/components/styles/index.ts
@@ -4,6 +4,11 @@ const useStyles = createStyles(({ token }) => ({
'custom-image': {
borderRadius: token.borderRadiusLG,
},
+ 'card-action': {
+ position: 'absolute',
+ right: token.paddingSM,
+ top: token.paddingSM,
+ },
}));
export default useStyles;
diff --git a/apps/admin/vite.config.ts b/apps/admin/vite.config.ts
index 351ac23b..ba2f72f1 100644
--- a/apps/admin/vite.config.ts
+++ b/apps/admin/vite.config.ts
@@ -36,6 +36,11 @@ export default ({ command, mode }: ConfigEnv): UserConfig => {
secure: true,
rewrite: (pt) => pt.replace(/^\/repos/, ''),
},
+ '/content_api': {
+ target: 'https://api.juejin.cn',
+ changeOrigin: true,
+ secure: true,
+ },
},
},
plugins: [
diff --git a/package.json b/package.json
index 7143fceb..1da1cb05 100644
--- a/package.json
+++ b/package.json
@@ -1,12 +1,12 @@
{
"name": "pnpm-monorepo-mui",
- "version": "1.1.0",
+ "version": "1.3.0",
"description": "",
"main": "index.js",
"scripts": {
"bootstrap": "pnpm install",
"build": "turbo build",
- "build:admin": "pnpm run build --filter react-admin-design",
+ "build:admin": "pnpm run build --filter gbeata-admin",
"dev": "turbo dev",
"lint": "turbo lint",
"format": "prettier --write \"**/*.{ts,tsx,md}\"",
diff --git a/packages/apis/index.ts b/packages/apis/index.ts
index 707f6cb5..95db7e2d 100644
--- a/packages/apis/index.ts
+++ b/packages/apis/index.ts
@@ -1,2 +1,5 @@
+import request from 'umi-request';
+
// 暴露modules文件夹中的所有模块状态
export * from './modules';
+export default request;
diff --git a/packages/apis/modules/github/index.ts b/packages/apis/modules/github/index.ts
index 188f90df..7563d081 100644
--- a/packages/apis/modules/github/index.ts
+++ b/packages/apis/modules/github/index.ts
@@ -1,4 +1,4 @@
-import { request } from '../../request';
+import { GRequest } from '../../request';
import type { IResponse } from '../../type';
@@ -7,7 +7,7 @@ const repoOwner = 'anyone-yuren';
const repoName = 'react-antd-admin-pnpm';
const apiUrl = `/${repoOwner}/${repoName}/commits?per_page=10`;
export const GetGithubCommits = () =>
- request>(apiUrl, {
+ GRequest>(apiUrl, {
method: 'GET',
headers: {
Authorization: `token ${accessToken}`,
diff --git a/packages/apis/request.ts b/packages/apis/request.ts
index 40924211..67425ea5 100644
--- a/packages/apis/request.ts
+++ b/packages/apis/request.ts
@@ -1,10 +1,10 @@
// eslint-disable-next-line import/no-extraneous-dependencies
import { notification } from 'antd';
-import { type RequestOptionsInit, extend } from 'umi-request';
+import request, { type RequestOptionsInit, extend } from 'umi-request';
// 全局请求参数设置
const PREFIX = '';
-export const request = extend({
+export const GRequest = extend({
timeout: 60000,
// 记得区分开发环境与生产环境
prefix: PREFIX,
@@ -17,7 +17,7 @@ const requestQueue: {
resolve: (value: Response | PromiseLike) => any;
reject: (reason?: any) => void;
}[] = []; // 请求队列
-request.interceptors.request.use((url, options) => {
+GRequest.interceptors.request.use((url, options) => {
const { headers } = options;
return {
@@ -29,7 +29,7 @@ request.interceptors.request.use((url, options) => {
};
});
-request.interceptors.response.use(async (response, options) => {
+GRequest.interceptors.response.use(async (response, options) => {
const { status } = response;
if (status === 200) {
const data = await response.clone().json();
@@ -48,16 +48,16 @@ request.interceptors.response.use(async (response, options) => {
const userInfo = JSON.parse(localStorage.getItem('userInfo') || '{}');
isRefreshingToken = true;
// 刷新token
- const res = await request('/User/ReLogin', {
+ const res = await GRequest('/User/ReLogin', {
method: 'POST',
data: userInfo,
});
localStorage.setItem('userInfo', JSON.stringify(res.data));
isRefreshingToken = false;
- const response = request(options.url, options);
+ const response = GRequest(options.url, options);
// 重新登录后,将队列中的请求重新发出
- requestQueue.forEach((cb) => cb.resolve(request(cb.url, cb.options)));
+ requestQueue.forEach((cb) => cb.resolve(GRequest(cb.url, cb.options)));
return response;
}
@@ -72,3 +72,5 @@ request.interceptors.response.use(async (response, options) => {
});
return Promise.reject(response.statusText);
});
+
+export default request;
diff --git a/packages/ui/modules/GlobalConfig/style.ts b/packages/ui/modules/GlobalConfig/style.ts
index 692dabbe..842f2879 100644
--- a/packages/ui/modules/GlobalConfig/style.ts
+++ b/packages/ui/modules/GlobalConfig/style.ts
@@ -4,6 +4,10 @@ const useStyles = createStyles(({ token }) => ({
'custom-card': {
boxShadow: 'rgba(145, 158, 171, 0.2) 0px 0px 2px 0px, rgba(145, 158, 171, 0.12) 0px 12px 24px -4px',
transition: 'box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms',
+ // padding: token.padding * 2,
+ '.ant-card-body': {
+ padding: token.paddingMD,
+ },
},
}));
export default useStyles;