From 5b31eac508562cd7c4d3db44c04869b703977534 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E4=BC=8A=E5=B8=86?= Date: Wed, 9 Sep 2026 17:48:56 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E9=A6=96=E9=A1=B5=E9=83=A8=E5=88=86?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/AppTabBar.vue | 91 ++++ src/hooks/use-greeting.ts | 9 + src/pages.json | 30 ++ src/pages/Login/user-login/index.vue | 5 +- src/pages/Login/user-sms-login/index.vue | 3 + src/pages/case-library/index.vue | 41 ++ .../home-index/components/ProjectCard.vue | 162 ++++++ .../home-index/components/ServiceCard.vue | 109 +++++ src/pages/home-index/index.vue | 462 ++++++++++++++++++ src/pages/message-center/index.vue | 41 ++ src/pages/personal-center/index.vue | 41 ++ src/pages/project-center/index.vue | 41 ++ src/static/icons/1.png | Bin 0 -> 14698 bytes src/static/icons/hardware.png | Bin 0 -> 5864 bytes src/static/icons/hi.png | Bin 0 -> 733 bytes src/static/icons/icon-message.png | Bin 0 -> 934 bytes src/static/icons/iot.png | Bin 0 -> 5959 bytes src/static/icons/logos.png | Bin 0 -> 1794 bytes src/static/icons/production.png | Bin 0 -> 5386 bytes src/static/icons/quick-contract.png | Bin 0 -> 2573 bytes src/static/icons/quick-finance.png | Bin 0 -> 2750 bytes src/static/icons/quick-project.png | Bin 0 -> 2374 bytes src/static/icons/quick-report.png | Bin 0 -> 2406 bytes src/static/icons/quick-service.png | Bin 0 -> 2426 bytes src/static/icons/software.png | Bin 0 -> 6149 bytes src/static/icons/tab-case.svg | 6 + src/static/icons/tab-home.svg | 4 + src/static/icons/tab-message.svg | 3 + src/static/icons/tab-personal.svg | 4 + src/static/icons/tab-project.svg | 3 + src/styles/variables.scss | 7 + src/types/home.ts | 25 + 32 files changed, 1084 insertions(+), 3 deletions(-) create mode 100644 src/components/AppTabBar.vue create mode 100644 src/hooks/use-greeting.ts create mode 100644 src/pages/case-library/index.vue create mode 100644 src/pages/home-index/components/ProjectCard.vue create mode 100644 src/pages/home-index/components/ServiceCard.vue create mode 100644 src/pages/home-index/index.vue create mode 100644 src/pages/message-center/index.vue create mode 100644 src/pages/personal-center/index.vue create mode 100644 src/pages/project-center/index.vue create mode 100644 src/static/icons/1.png create mode 100644 src/static/icons/hardware.png create mode 100644 src/static/icons/hi.png create mode 100644 src/static/icons/icon-message.png create mode 100644 src/static/icons/iot.png create mode 100644 src/static/icons/logos.png create mode 100644 src/static/icons/production.png create mode 100644 src/static/icons/quick-contract.png create mode 100644 src/static/icons/quick-finance.png create mode 100644 src/static/icons/quick-project.png create mode 100644 src/static/icons/quick-report.png create mode 100644 src/static/icons/quick-service.png create mode 100644 src/static/icons/software.png create mode 100644 src/static/icons/tab-case.svg create mode 100644 src/static/icons/tab-home.svg create mode 100644 src/static/icons/tab-message.svg create mode 100644 src/static/icons/tab-personal.svg create mode 100644 src/static/icons/tab-project.svg create mode 100644 src/types/home.ts diff --git a/src/components/AppTabBar.vue b/src/components/AppTabBar.vue new file mode 100644 index 0000000..28d7dba --- /dev/null +++ b/src/components/AppTabBar.vue @@ -0,0 +1,91 @@ + + + + + diff --git a/src/hooks/use-greeting.ts b/src/hooks/use-greeting.ts new file mode 100644 index 0000000..c916bf9 --- /dev/null +++ b/src/hooks/use-greeting.ts @@ -0,0 +1,9 @@ +export function useGreeting() { + const hour = new Date().getHours() + + if (hour < 12) + return '上午好' + if (hour < 18) + return '中午好' + return '晚上好' +} diff --git a/src/pages.json b/src/pages.json index 7a7be15..83c9f70 100644 --- a/src/pages.json +++ b/src/pages.json @@ -42,6 +42,36 @@ "style": { "navigationStyle": "custom" } + }, + { + "path": "pages/home-index/index", + "style": { + "navigationStyle": "custom" + } + }, + { + "path": "pages/case-library/index", + "style": { + "navigationStyle": "custom" + } + }, + { + "path": "pages/message-center/index", + "style": { + "navigationStyle": "custom" + } + }, + { + "path": "pages/project-center/index", + "style": { + "navigationStyle": "custom" + } + }, + { + "path": "pages/personal-center/index", + "style": { + "navigationStyle": "custom" + } } ], "globalStyle": { diff --git a/src/pages/Login/user-login/index.vue b/src/pages/Login/user-login/index.vue index e9a92ef..77161fc 100644 --- a/src/pages/Login/user-login/index.vue +++ b/src/pages/Login/user-login/index.vue @@ -1,6 +1,5 @@ + + + + diff --git a/src/pages/home-index/components/ProjectCard.vue b/src/pages/home-index/components/ProjectCard.vue new file mode 100644 index 0000000..faa8545 --- /dev/null +++ b/src/pages/home-index/components/ProjectCard.vue @@ -0,0 +1,162 @@ + + + + + diff --git a/src/pages/home-index/components/ServiceCard.vue b/src/pages/home-index/components/ServiceCard.vue new file mode 100644 index 0000000..61ddfc5 --- /dev/null +++ b/src/pages/home-index/components/ServiceCard.vue @@ -0,0 +1,109 @@ + + + + + diff --git a/src/pages/home-index/index.vue b/src/pages/home-index/index.vue new file mode 100644 index 0000000..1043184 --- /dev/null +++ b/src/pages/home-index/index.vue @@ -0,0 +1,462 @@ + + + + + diff --git a/src/pages/message-center/index.vue b/src/pages/message-center/index.vue new file mode 100644 index 0000000..ec58487 --- /dev/null +++ b/src/pages/message-center/index.vue @@ -0,0 +1,41 @@ + + + + + diff --git a/src/pages/personal-center/index.vue b/src/pages/personal-center/index.vue new file mode 100644 index 0000000..484e593 --- /dev/null +++ b/src/pages/personal-center/index.vue @@ -0,0 +1,41 @@ + + + + + diff --git a/src/pages/project-center/index.vue b/src/pages/project-center/index.vue new file mode 100644 index 0000000..711ba76 --- /dev/null +++ b/src/pages/project-center/index.vue @@ -0,0 +1,41 @@ + + + + + diff --git a/src/static/icons/1.png b/src/static/icons/1.png new file mode 100644 index 0000000000000000000000000000000000000000..8873aed977c7720ea31075d80c9bdac2fce4bb49 GIT binary patch literal 14698 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 P00000NkvXXu0mjfkGovg literal 0 HcmV?d00001 diff --git a/src/static/icons/icon-message.png b/src/static/icons/icon-message.png new file mode 100644 index 0000000000000000000000000000000000000000..7ba3bb16d88203ab95e05187c6fa9e2a7dfd114b GIT binary patch literal 934 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 literal 0 HcmV?d00001 diff --git a/src/static/icons/logos.png b/src/static/icons/logos.png new file mode 100644 index 0000000000000000000000000000000000000000..980ed08f1ff151a28cc47406d8a8448438c44ddf GIT binary patch literal 1794 zcmV+d2mSboP))Ng>E)aa70|h|@217t4EHI}dEC|H7fv6DJpr2iAd}&kz}PsXdBo(N zx>nT~QyxFkqk(nwtP_K0+``lO)!0(*h(<+}sl4Vw_JUeGJFOZU_c`G8ic>8O(ivcK zOH!x)bs@K?4wtGuu-d%%Xl(rro)KHEjunw*jf>+ zBejDSF6{lYSz@S+A_83hs{;<%QnHPIs$AIrx5TVz@F?C{rt+Ex6;;v_UcBMLsf#Y2 zQc&qGM~fRq6`;%Q#kN2E%OSL9_@1$dAWUuo{{ym1sGSylyjqB3;dIMLTmx8TdkX7ueG z8_BLX*Rg#JKFl$pFxQM{x+ymb3!S{+qC5;;ex74e1$dUq1q%q&twRi!O-)4qCvQCYkZZ^9E$~*P|pq5j~TYA9jV(C|nK;wp0OD-J}E&q^Qr$G(fMD zikXuF%q51VA~u~2Ph6}96UmNTfvZGa;~hlM=1?kie^lm)Jj6(Kn%>l#{G(VZ*beiY zbWCy|j#MKUEG(2z~2&00>j?+_=j(Q}AM&LoptIiK83uQ(hr5+m|N0Bw^ zRUxp5`X=GotbTerrsAQc6wwooS=lCZ?Vv1de5qwwIq}I5e0&YN5*meLumqoa@KB2h$utVkHq&Z0%()<)m;f7qNFWX-KXdO;0_5FI@m zT6kHH%gdnYw=j006=R6FG%eoTh^@ajA%%9XmY0PETc8#J`t)gu`8LC2{)_Gmm6<9! zN%+FaJTNz8F8{Jn@=F}qghMyl|)fB zjYfk$kL$2>aw5tLlkm;kiFj+cfoh^21E17kKvx|GcGn@RUmT`VkzO{{jPfs%eDeMi zBPus?p-Kk0N6v|MY&K|pMfRQHCOTEjSVe_-%?B2&de4HwyhN&@CMqj>SWN5!clz7I z+ABy~d3`2ED`<>qg;t}{949aWkju|F&4%IA3#FN|6Iu=bR|R_ zTI%jeW8aJ+Gl0ntkfAVxi2vJ~O7CA2ohFK^1d-hTY3zf2vCmY-K*Ry_+58Ux0RR8H kQP4{O000I_L_t&o0EYgpCx5A{oB#j-07*qoM6N<$f{gG<$N&HU literal 0 HcmV?d00001 diff --git a/src/static/icons/production.png b/src/static/icons/production.png new file mode 100644 index 0000000000000000000000000000000000000000..886303b1230b5fde7b69542380c03ad82495fd25 GIT binary patch literal 5386 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 literal 0 HcmV?d00001 diff --git a/src/static/icons/quick-contract.png b/src/static/icons/quick-contract.png new file mode 100644 index 0000000000000000000000000000000000000000..1bf0ae9fad83abac0bbff23000590d392f4c4f1e GIT binary patch literal 2573 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 Y0Nb^|o>=by0000007*qoM6N<$f|!YWsQ>@~ literal 0 HcmV?d00001 diff --git a/src/static/icons/quick-service.png b/src/static/icons/quick-service.png new file mode 100644 index 0000000000000000000000000000000000000000..fbb01452b96e1978e0c43d657e7f6ca0672e12b9 GIT binary patch literal 2426 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 literal 0 HcmV?d00001 diff --git a/src/static/icons/software.png b/src/static/icons/software.png new file mode 100644 index 0000000000000000000000000000000000000000..0a1ffc5e2ea31c7d313b6e93ed09a2ae5cd89737 GIT binary patch literal 6149 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 + + + + + diff --git a/src/static/icons/tab-home.svg b/src/static/icons/tab-home.svg new file mode 100644 index 0000000..81a2e0a --- /dev/null +++ b/src/static/icons/tab-home.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/static/icons/tab-message.svg b/src/static/icons/tab-message.svg new file mode 100644 index 0000000..c3b179c --- /dev/null +++ b/src/static/icons/tab-message.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/static/icons/tab-personal.svg b/src/static/icons/tab-personal.svg new file mode 100644 index 0000000..cd0d641 --- /dev/null +++ b/src/static/icons/tab-personal.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/static/icons/tab-project.svg b/src/static/icons/tab-project.svg new file mode 100644 index 0000000..3600b24 --- /dev/null +++ b/src/static/icons/tab-project.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/styles/variables.scss b/src/styles/variables.scss index 3feaf13..054df0a 100644 --- a/src/styles/variables.scss +++ b/src/styles/variables.scss @@ -13,3 +13,10 @@ $color-bg-input: #f2f3f5; $color-splash-gradient-start: #f0f7ff; $color-splash-gradient-end: #deedff; $color-splash-circle: rgba(180, 210, 255, 0.35); + +$color-home-header: #2563EB; +$color-bg-section: #f5f6f8; +$color-tag-orange: #ff8a4c; +$color-tag-orange-bg: #fff3eb; +$color-stat-orange: #ff9a3d; +$color-stat-orange-bg: #fff7ed; diff --git a/src/types/home.ts b/src/types/home.ts new file mode 100644 index 0000000..073a6a8 --- /dev/null +++ b/src/types/home.ts @@ -0,0 +1,25 @@ +export interface ServiceItem { + id: string + title: string + desc: string + theme: 'blue' | 'green' | 'pink' | 'orange' + illus?: string +} + +export interface QuickEntryItem { + id: string + label: string + icon: string + bgColor: string +} + +export interface ProjectItem { + id: string + title: string + category: string + projectNo: string + progress: number + status: string + updateTime: string + tagTheme?: 'orange' | 'peach' +}