From 3c7238a45c4456299bb43d2531ded2d9c0c1effb Mon Sep 17 00:00:00 2001
From: yvan <8574526@qq.com>
Date: Tue, 12 Aug 2025 10:30:31 +0800
Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E5=AE=A0=E7=89=A9=E5=B0=8F?=
=?UTF-8?q?=E7=A8=8B=E5=BA=8F=E5=9F=BA=E7=A1=80=E5=8A=9F=E8=83=BD=E5=BC=80?=
=?UTF-8?q?=E5=8F=91?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
✨ 新功能:
- 创建了4个主要Tab页面:宠物、助手、领养、我的
- 集成uview-ui-next UI框架
- 添加可爱的宠物主题图标
- 实现宠物列表展示和管理功能
- 配置微信小程序登录功能
🎨 界面优化:
- 使用uView组件美化界面
- 统一的设计风格和配色方案
- 响应式布局适配
📦 技术栈:
- uni-app + Vue3
- uview-ui-next UI框架
- 微信小程序平台
---
App.vue | 3 +-
README.md | 88 ++++++++++++++++
main.js | 3 +
package-lock.json | 32 ++++++
package.json | 16 +++
pages.json | 78 +++++++++++++-
pages/adoption/adoption.vue | 41 ++++++++
pages/assistant/assistant.vue | 105 +++++++++++++++++++
pages/pets/pets.vue | 109 ++++++++++++++++++++
pages/profile/profile.vue | 157 +++++++++++++++++++++++++++++
static/tabbar/adoption-active.png | Bin 0 -> 4357 bytes
static/tabbar/adoption.png | Bin 0 -> 10356 bytes
static/tabbar/assistant-active.png | Bin 0 -> 2599 bytes
static/tabbar/assistant.png | Bin 0 -> 4902 bytes
static/tabbar/pets-active.png | Bin 0 -> 3347 bytes
static/tabbar/pets.png | Bin 0 -> 4993 bytes
static/tabbar/profile-active.png | Bin 0 -> 2544 bytes
static/tabbar/profile.png | Bin 0 -> 2889 bytes
uni.scss | 3 +
19 files changed, 630 insertions(+), 5 deletions(-)
create mode 100644 README.md
create mode 100644 package-lock.json
create mode 100644 package.json
create mode 100644 pages/adoption/adoption.vue
create mode 100644 pages/assistant/assistant.vue
create mode 100644 pages/pets/pets.vue
create mode 100644 pages/profile/profile.vue
create mode 100644 static/tabbar/adoption-active.png
create mode 100644 static/tabbar/adoption.png
create mode 100644 static/tabbar/assistant-active.png
create mode 100644 static/tabbar/assistant.png
create mode 100644 static/tabbar/pets-active.png
create mode 100644 static/tabbar/pets.png
create mode 100644 static/tabbar/profile-active.png
create mode 100644 static/tabbar/profile.png
diff --git a/App.vue b/App.vue
index 8c2b732..50fca5f 100644
--- a/App.vue
+++ b/App.vue
@@ -12,6 +12,7 @@
}
-
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..350267d
--- /dev/null
+++ b/README.md
@@ -0,0 +1,88 @@
+# 宠爱小程序
+
+一个专注于宠物管理的微信小程序,提供宠物档案管理、AI助手、领养专区等功能。
+
+## 项目结构
+
+```
+pet-ai/
+├── pages/
+│ ├── pets/ # 宠物管理页面
+│ ├── assistant/ # AI助手页面
+│ ├── adoption/ # 领养专区页面
+│ └── profile/ # 个人中心页面
+├── static/
+│ └── tabbar/ # Tab图标文件夹
+└── uni_modules/ # 插件模块(需要安装)
+```
+
+## 当前完成状态
+
+✅ 基础项目结构搭建
+✅ Tab导航配置
+✅ 四个主要页面创建
+✅ 宠物页面基础功能
+
+## 待完成任务
+
+### 1. UI框架安装
+**推荐方式**:在HBuilderX中打开项目,通过插件市场安装uview-next
+- 插件市场地址:https://ext.dcloud.net.cn/plugin?id=24021
+- 插件ID:uview-next
+- 安装后需要配置main.js和uni.scss
+
+### 2. Tab图标获取
+需要为以下4个tab页面添加可爱的宠物主题图标:
+
+**推荐图标资源**:
+- [iconfont阿里巴巴矢量图标库](https://www.iconfont.cn/)
+- [Feather Icons](https://feathericons.com/)
+- [Heroicons](https://heroicons.com/)
+
+**所需图标**:
+- `static/tabbar/pets.png` - 宠物图标(如猫爪、宠物头像)
+- `static/tabbar/pets-active.png` - 宠物图标激活状态
+- `static/tabbar/assistant.png` - AI助手图标(如机器人、对话框)
+- `static/tabbar/assistant-active.png` - AI助手图标激活状态
+- `static/tabbar/adoption.png` - 领养图标(如爱心、房子)
+- `static/tabbar/adoption-active.png` - 领养图标激活状态
+- `static/tabbar/profile.png` - 个人中心图标(如用户头像)
+- `static/tabbar/profile-active.png` - 个人中心图标激活状态
+
+**图标规格**:
+- 尺寸:81px × 81px(推荐)
+- 格式:PNG
+- 背景:透明
+
+### 3. 功能完善
+- [ ] 宠物详情页面
+- [ ] 添加宠物页面
+- [ ] 宠物记录功能
+- [ ] AI对话功能
+- [ ] 领养信息发布
+- [ ] 微信登录集成
+
+## 技术栈
+
+- **前端框架**:uni-app + Vue3
+- **UI框架**:uview-next(待安装)
+- **开发工具**:HBuilderX
+- **部署平台**:微信小程序
+
+## 开发指南
+
+1. 使用HBuilderX打开项目
+2. 安装uview-next插件
+3. 添加tab图标文件
+4. 运行到微信开发者工具测试
+
+## 项目特色
+
+🐱 **宠物管理**:完整的宠物档案和日常记录系统
+🤖 **AI助手**:智能宠物问答和健康建议
+❤️ **领养专区**:宠物领养信息发布平台
+👤 **个人中心**:用户信息和设置管理
+
+## 联系方式
+
+如有问题或建议,请联系开发团队。
diff --git a/main.js b/main.js
index c1caf36..f61b3c6 100644
--- a/main.js
+++ b/main.js
@@ -1,9 +1,11 @@
import App from './App'
+import uView from 'uview-ui-next'
// #ifndef VUE3
import Vue from 'vue'
import './uni.promisify.adaptor'
Vue.config.productionTip = false
+Vue.use(uView)
App.mpType = 'app'
const app = new Vue({
...App
@@ -15,6 +17,7 @@ app.$mount()
import { createSSRApp } from 'vue'
export function createApp() {
const app = createSSRApp(App)
+ app.use(uView)
return {
app
}
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..f1da83b
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,32 @@
+{
+ "name": "pet-ai",
+ "version": "1.0.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "pet-ai",
+ "version": "1.0.0",
+ "license": "ISC",
+ "dependencies": {
+ "mitt": "^3.0.1",
+ "uview-ui-next": "^0.0.1"
+ }
+ },
+ "node_modules/mitt": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/mitt/-/mitt-3.0.1.tgz",
+ "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==",
+ "license": "MIT"
+ },
+ "node_modules/uview-ui-next": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmmirror.com/uview-ui-next/-/uview-ui-next-0.0.1.tgz",
+ "integrity": "sha512-CGK4XPt1lYhCb+7aHgMpp6/VV1owOH67dPz52ypJ9dcVs0Ixgl5/PF0xajlel11R2yRhtRydLu6nIXs9eDZSBw==",
+ "license": "MIT",
+ "dependencies": {
+ "mitt": "^3.0.0"
+ }
+ }
+ }
+}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..1505158
--- /dev/null
+++ b/package.json
@@ -0,0 +1,16 @@
+{
+ "name": "pet-ai",
+ "version": "1.0.0",
+ "description": "一个专注于宠物管理的微信小程序,提供宠物档案管理、AI助手、领养专区等功能。",
+ "main": "main.js",
+ "scripts": {
+ "test": "echo \"Error: no test specified\" && exit 1"
+ },
+ "keywords": [],
+ "author": "",
+ "license": "ISC",
+ "dependencies": {
+ "mitt": "^3.0.1",
+ "uview-ui-next": "^0.0.1"
+ }
+}
diff --git a/pages.json b/pages.json
index 869105d..36e98da 100644
--- a/pages.json
+++ b/pages.json
@@ -1,5 +1,37 @@
{
- "pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
+ "pages": [
+ {
+ "path": "pages/pets/pets",
+ "style": {
+ "navigationBarTitleText": "我的宠物",
+ "navigationBarBackgroundColor": "#ffffff",
+ "navigationBarTextStyle": "black"
+ }
+ },
+ {
+ "path": "pages/assistant/assistant",
+ "style": {
+ "navigationBarTitleText": "AI助手",
+ "navigationBarBackgroundColor": "#ffffff",
+ "navigationBarTextStyle": "black"
+ }
+ },
+ {
+ "path": "pages/adoption/adoption",
+ "style": {
+ "navigationBarTitleText": "领养专区",
+ "navigationBarBackgroundColor": "#ffffff",
+ "navigationBarTextStyle": "black"
+ }
+ },
+ {
+ "path": "pages/profile/profile",
+ "style": {
+ "navigationBarTitleText": "我的",
+ "navigationBarBackgroundColor": "#ffffff",
+ "navigationBarTextStyle": "black"
+ }
+ },
{
"path": "pages/index/index",
"style": {
@@ -9,9 +41,47 @@
],
"globalStyle": {
"navigationBarTextStyle": "black",
- "navigationBarTitleText": "uni-app",
- "navigationBarBackgroundColor": "#F8F8F8",
- "backgroundColor": "#F8F8F8"
+ "navigationBarTitleText": "宠爱小程序",
+ "navigationBarBackgroundColor": "#ffffff",
+ "backgroundColor": "#f8f9fa"
+ },
+ "easycom": {
+ "autoscan": true,
+ "custom": {
+ "^u-(.*)": "uview-ui-next/components/u-$1/u-$1.vue"
+ }
+ },
+ "tabBar": {
+ "color": "#999999",
+ "selectedColor": "#ff6b6b",
+ "backgroundColor": "#ffffff",
+ "borderStyle": "black",
+ "list": [
+ {
+ "pagePath": "pages/pets/pets",
+ "text": "宠物",
+ "iconPath": "static/tabbar/pets.png",
+ "selectedIconPath": "static/tabbar/pets-active.png"
+ },
+ {
+ "pagePath": "pages/assistant/assistant",
+ "text": "助手",
+ "iconPath": "static/tabbar/assistant.png",
+ "selectedIconPath": "static/tabbar/assistant-active.png"
+ },
+ {
+ "pagePath": "pages/adoption/adoption",
+ "text": "领养",
+ "iconPath": "static/tabbar/adoption.png",
+ "selectedIconPath": "static/tabbar/adoption-active.png"
+ },
+ {
+ "pagePath": "pages/profile/profile",
+ "text": "我的",
+ "iconPath": "static/tabbar/profile.png",
+ "selectedIconPath": "static/tabbar/profile-active.png"
+ }
+ ]
},
"uniIdRouter": {}
}
diff --git a/pages/adoption/adoption.vue b/pages/adoption/adoption.vue
new file mode 100644
index 0000000..eeb5084
--- /dev/null
+++ b/pages/adoption/adoption.vue
@@ -0,0 +1,41 @@
+
+
+
+
+ 宠物领养信息发布与浏览
+
+
+
+
+
+
+
diff --git a/pages/assistant/assistant.vue b/pages/assistant/assistant.vue
new file mode 100644
index 0000000..bc86fab
--- /dev/null
+++ b/pages/assistant/assistant.vue
@@ -0,0 +1,105 @@
+
+
+
+
+
+
+ 您好!我是您的宠物AI助手
+ 可以为您解答宠物饲养、健康、训练等问题
+
+
+
+
+
+
+ 发送
+
+
+
+
+
+
+
+
diff --git a/pages/pets/pets.vue b/pages/pets/pets.vue
new file mode 100644
index 0000000..1e1dba9
--- /dev/null
+++ b/pages/pets/pets.vue
@@ -0,0 +1,109 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 记录
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/profile/profile.vue b/pages/profile/profile.vue
new file mode 100644
index 0000000..66dd0b9
--- /dev/null
+++ b/pages/profile/profile.vue
@@ -0,0 +1,157 @@
+
+
+
+
+
+
+ {{ userInfo.nickName || '未登录' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/static/tabbar/adoption-active.png b/static/tabbar/adoption-active.png
new file mode 100644
index 0000000000000000000000000000000000000000..9dc248c14dc10671931d7d745763eacdcea915eb
GIT binary patch
literal 4357
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
literal 0
HcmV?d00001
diff --git a/static/tabbar/assistant-active.png b/static/tabbar/assistant-active.png
new file mode 100644
index 0000000000000000000000000000000000000000..64a015e22c228411e59175313028d8f1996e404d
GIT binary patch
literal 2599
zcmV+?3fT3DP)
zK~#90?VWp!T}2(oKfBvyd9)O$k?k(8h_ryxVhvQW)`~ntqZHeXQIkSUFeLs#FwsUx
zj2NP*2r(M)UBG~}CRNmmU?~-fphUVAgb-1LQrk+fZezF0c6--9es}eH_nb2`=gjNe
z&L{aMo4a%8{C;!hp2u%yegla_B9TZW5{X12kw_#Gi9{liNF)-8L?V$$Bsz^Q&&TTp
z76Io0ZvzH_0iYk~21bDcz%Jl9;9200z(c@4J=LzeR2(p*RnC
zJi{*AdJ(t+Y1^nd1$YGa4brLxa1VZO4JQNZn#cC(>%+}sN68TKpysndS~UWE%(<7a
zlJI_h!nv0QbOARLu0h&$J21TuAU`Qeir>Y9*bbz@Q3`vCH
z^{N6o9YALYH4!IPI>2lThWO;Kz$&EU&O)Yjtu0Z{kAQaqGn;j-Lgp0IiDT47)Ql27
ztf{N5$fC?FRsv%hb<ka_Tq^7>>YCU5(`UVMJZxi~7R1$;o$pFy%GwT`0y#&c-|{_0413($E8
zd`+WF3_Ph>ZU^x5jL+{yCW`1VtXVEJ$}50Q2e9%W;ep)-Wq+FSSyrdWW0yhMknB|z
z(CGmGuwaM}OlH7r&G_sOj*b-)<+12l$HxLwxW-gR=b@pP7WbFEc0`lIK+gbUMJFEg0g1OVNLg%lZZD
z&ZQqj|CKW|%5$gF0iLs9NEKRR`!kW){<@5EM*!Dr)|vGS{*dN(uSYVVwbMR!a5>?}
z4y>HJ9wc{Nh(LyEY`;N%9Dj=WWQTIcQBQsu%J|-X@;gt+v4asT&UW4szyaOZetV{_
zF{E>3F$c*!ns?0MW|=I8nl`m}IMvv}Ji?3}Y*yH1#Mc8jutw9i@8*1eEpod!8hPlu
z9JwT`j{8EhY=85+OMxHfl$}~vpdv(asjq3;rp3wt4(L8;4G<<_#Xhp%CbC!_z&_QL
z$%r}l9~B%luy3tr+a{6R$GV*2*|vkgu{wt7J|w(~q+auhNdz)0w(pvl#}0;(#XL$(
zo)Ujm&X&?tjqST8=COnObqktw0N=kdlSGdu;p#_#tB?gRM;>J
z?wy>gZe+aN*M01x2DbHS)c1SzGK;?hctWE--G#LvzW8dl9XQMxc&kT8?lG|IS2w=v)=@
zMju1US$fzaE-Y!REA2sZ0Hh*wh;I{#WiA~q!uJ+&MY_SUudUqZ&<|5>aqMd$7v~t|
zTjTgmWHEqDBMzAAZu@QtwExtG(qw}QR4w9&bj8k|k|Cu3Ex$OXQGJnfpm
z&aP-yC|YyxT4T7`C{o4I_zm>5>o)f;>N6Mk7hxJA$SY8jP_M#!uoU&PHE(<;@L5ZB
znetem^G3CPrcDd4KBG@xHkNN0j;<734A5fL|{WfT^rE9q8tW1<=D6T=ztx~UWfbLxPL(LG_cvop22%H>e`E}
z2`I{vJ_ESju}{yFpB$rhEWrIFiYJiCqsJpFh2|ma1@0_)?2+bompAL`Yt}u4tP6DM
z%O2oOrCK^-mf=50R7Z{DcnkQDWX-Qn`kxw)nf$)tTn?7Hq
zLF>qu2;b^>)xeX7wamxQg(z
zi+yMUxYAOabsR&~XOpTj+J}Bp>O+>r_)SLTOMeH>vDi)>%^>dM?LM^)v$S^!WU