diff --git a/.neoconf.json b/.neoconf.json
new file mode 100644
index 0000000..437bfce
--- /dev/null
+++ b/.neoconf.json
@@ -0,0 +1,10 @@
+{
+ "emmet_language_server": {
+ "init_options": {
+ "preferences": {
+ "css.intUnit": "rpx",
+ "css.floatUnitr": "rpx"
+ }
+ }
+ }
+}
diff --git a/project.config.json b/project.config.json
index b006e07..2e03a50 100644
--- a/project.config.json
+++ b/project.config.json
@@ -66,7 +66,7 @@
],
"include": []
},
- "appid": "wx2b0bb13edf717c1d",
+ "appid": "wx385f901f517046d0",
"scripts": {
"beforeCompile": "pnpm run beforeCompile",
"beforePreview": "pnpm run beforeCompile",
diff --git a/project.private.config.json b/project.private.config.json
index 610b857..22ecfe3 100644
--- a/project.private.config.json
+++ b/project.private.config.json
@@ -1,6 +1,60 @@
{
"libVersion": "3.5.8",
- "condition": {},
+ "condition": {
+ "miniprogram": {
+ "list": [
+ {
+ "name": "创建活动",
+ "pathName": "pages/actAdd/index",
+ "query": "",
+ "scene": null,
+ "launchMode": "default"
+ },
+ {
+ "name": "活动报名结果",
+ "pathName": "pages/actResult/index",
+ "query": "",
+ "launchMode": "default",
+ "scene": null
+ },
+ {
+ "name": "通知详情",
+ "pathName": "pages/noticeDetail/index",
+ "query": "",
+ "launchMode": "default",
+ "scene": null
+ },
+ {
+ "name": "通知",
+ "pathName": "pages/notice/index",
+ "query": "",
+ "launchMode": "default",
+ "scene": null
+ },
+ {
+ "name": "活动详情",
+ "pathName": "pages/actDetail/index",
+ "query": "",
+ "launchMode": "default",
+ "scene": null
+ },
+ {
+ "name": "活动",
+ "pathName": "pages/act/index",
+ "query": "",
+ "launchMode": "default",
+ "scene": null
+ },
+ {
+ "name": "首页",
+ "pathName": "pages/index/index",
+ "query": "",
+ "launchMode": "default",
+ "scene": null
+ }
+ ]
+ }
+ },
"projectname": "school-miniprogram",
"setting": {
"urlCheck": true,
diff --git a/src/app.json b/src/app.json
index b188573..2105a3c 100644
--- a/src/app.json
+++ b/src/app.json
@@ -2,23 +2,41 @@
"pages": [
"pages/start/index",
"pages/index/index",
+ "pages/act/index",
+ "pages/notice/index",
+ "pages/actDetail/index",
+ "pages/actResult/index",
+ "pages/actAdd/index",
+ "pages/noticeDetail/index",
"pages/login/index",
"pages/my/index"
],
"window": {
"backgroundTextStyle": "light",
"navigationBarBackgroundColor": "#fff",
- "navigationBarTitleText": "校园小程序",
- "navigationBarTextStyle": "black"
+ "navigationBarTitleText": "智能体小程序",
+ "navigationBarTextStyle": "black",
+ "navigationStyle": "custom"
},
"tabBar": {
"custom": true,
+ "color": "#8E8E93",
+ "selectedColor": "#4A6CF7",
+ "backgroundColor": "#ffffff",
"list": [
{
"pagePath": "pages/index/index",
"text": "首页"
},
{
+ "pagePath": "pages/act/index",
+ "text": "活动"
+ },
+ {
+ "pagePath": "pages/notice/index",
+ "text": "通知"
+ },
+ {
"pagePath": "pages/my/index",
"text": "我的"
}
diff --git a/src/app.ts b/src/app.ts
index 6b0f5c9..b0d0b4c 100644
--- a/src/app.ts
+++ b/src/app.ts
@@ -1,9 +1,9 @@
import page from '@/utils/page'
+
import { request } from './api/request'
-import { parseScene } from './utils/util'
+import { parseScene } from './utils/util'
const dayjs = require('dayjs')
-
const licia = require('miniprogram-licia')
require('/utils/dayjs/day-zh-cn.js')
const relativeTime = require('/utils/dayjs/relativeTime.js')
diff --git a/src/custom-tab-bar/index.json b/src/custom-tab-bar/index.json
new file mode 100644
index 0000000..4573acb
--- /dev/null
+++ b/src/custom-tab-bar/index.json
@@ -0,0 +1,7 @@
+{
+ "component": true,
+ "usingComponents": {
+ "van-tabbar": "@vant/weapp/tabbar/index",
+ "van-tabbar-item": "@vant/weapp/tabbar-item/index"
+ }
+}
diff --git a/src/custom-tab-bar/index.scss b/src/custom-tab-bar/index.scss
new file mode 100644
index 0000000..6e99e06
--- /dev/null
+++ b/src/custom-tab-bar/index.scss
@@ -0,0 +1,13 @@
+.tab-item {
+ .icon {
+ width: 44rpx;
+ height: 44rpx;
+ }
+ .name {
+ font-size: 24rpx;
+ color: rgba(148, 163, 184, 1);
+ &.active {
+ color: rgba(74, 184, 253, 1);
+ }
+ }
+}
diff --git a/src/custom-tab-bar/index.ts b/src/custom-tab-bar/index.ts
new file mode 100644
index 0000000..2e5663d
--- /dev/null
+++ b/src/custom-tab-bar/index.ts
@@ -0,0 +1,67 @@
+import { getCurrentPageUrl } from '@/utils/util'
+const app = getApp()
+
+Component({
+ properties: {},
+ data: {
+ imageUrl: app.globalData.imageUrl,
+ Timestamp: app.globalData.Timestamp,
+
+ isChild: 0,
+ active: 0,
+ list: [
+ {
+ pagePath: '/pages/index/index',
+ text: '首页',
+ icon: 'tabbar1',
+ iconActive: 'tabbar11',
+ },
+ {
+ pagePath: '/pages/act/index',
+ text: '活动',
+ icon: 'tabbar2',
+ iconActive: 'tabbar12',
+ },
+ {
+ pagePath: '/pages/notice/index',
+ text: '通知',
+ icon: 'tabbar3',
+ iconActive: 'tabbar13',
+ },
+ {
+ pagePath: '/pages/knowledge/index',
+ text: '智能体',
+ icon: 'tabbar4',
+ iconActive: 'tabbar14',
+ },
+ {
+ pagePath: '/pages/my/index',
+ text: '我的',
+ icon: 'tabbar5',
+ iconActive: 'tabbar15',
+ },
+ ],
+ },
+ observers: {},
+ lifetimes: {
+ ready() {
+ const pagePath = getCurrentPageUrl()
+ const active = this.data.list.findIndex((item) => item.pagePath === pagePath)
+ this.setData({
+ active,
+ anyWhere: app.globalData.anyWhere,
+ })
+ },
+ },
+ methods: {
+ onChange() {},
+ handleNav(e) {
+ const { index } = e.currentTarget.dataset
+ const { list } = this.data
+ const pagePath = list[index].pagePath
+ wx.switchTab({
+ url: pagePath,
+ })
+ },
+ },
+})
diff --git a/src/custom-tab-bar/index.wxml b/src/custom-tab-bar/index.wxml
new file mode 100644
index 0000000..3f340a0
--- /dev/null
+++ b/src/custom-tab-bar/index.wxml
@@ -0,0 +1,14 @@
+
+
+
+ {{item.text}}
+
+
+
+
diff --git a/src/images/bg1.png b/src/images/bg1.png
new file mode 100644
index 0000000..bb802a0
Binary files /dev/null and b/src/images/bg1.png differ
diff --git a/src/images/icon1.png b/src/images/icon1.png
new file mode 100644
index 0000000..e0ba6e3
Binary files /dev/null and b/src/images/icon1.png differ
diff --git a/src/images/icon10.png b/src/images/icon10.png
new file mode 100644
index 0000000..62dbaae
Binary files /dev/null and b/src/images/icon10.png differ
diff --git a/src/images/icon11.png b/src/images/icon11.png
new file mode 100644
index 0000000..591ef43
Binary files /dev/null and b/src/images/icon11.png differ
diff --git a/src/images/icon12.png b/src/images/icon12.png
new file mode 100644
index 0000000..d1a3148
Binary files /dev/null and b/src/images/icon12.png differ
diff --git a/src/images/icon13.png b/src/images/icon13.png
new file mode 100644
index 0000000..1499d11
Binary files /dev/null and b/src/images/icon13.png differ
diff --git a/src/images/icon14.png b/src/images/icon14.png
new file mode 100644
index 0000000..3f97fa1
Binary files /dev/null and b/src/images/icon14.png differ
diff --git a/src/images/icon15.png b/src/images/icon15.png
new file mode 100644
index 0000000..a042589
Binary files /dev/null and b/src/images/icon15.png differ
diff --git a/src/images/icon16.png b/src/images/icon16.png
new file mode 100644
index 0000000..4e5e18a
Binary files /dev/null and b/src/images/icon16.png differ
diff --git a/src/images/icon17.png b/src/images/icon17.png
new file mode 100644
index 0000000..43f8142
Binary files /dev/null and b/src/images/icon17.png differ
diff --git a/src/images/icon18.png b/src/images/icon18.png
new file mode 100644
index 0000000..5cf1447
Binary files /dev/null and b/src/images/icon18.png differ
diff --git a/src/images/icon19.png b/src/images/icon19.png
new file mode 100644
index 0000000..2ad96fc
Binary files /dev/null and b/src/images/icon19.png differ
diff --git a/src/images/icon2.png b/src/images/icon2.png
new file mode 100644
index 0000000..b1f6877
Binary files /dev/null and b/src/images/icon2.png differ
diff --git a/src/images/icon20.png b/src/images/icon20.png
new file mode 100644
index 0000000..2c157f7
Binary files /dev/null and b/src/images/icon20.png differ
diff --git a/src/images/icon21.png b/src/images/icon21.png
new file mode 100644
index 0000000..addf53f
Binary files /dev/null and b/src/images/icon21.png differ
diff --git a/src/images/icon22.png b/src/images/icon22.png
new file mode 100644
index 0000000..aa35ffd
Binary files /dev/null and b/src/images/icon22.png differ
diff --git a/src/images/icon23.png b/src/images/icon23.png
new file mode 100644
index 0000000..e61ac73
Binary files /dev/null and b/src/images/icon23.png differ
diff --git a/src/images/icon24.png b/src/images/icon24.png
new file mode 100644
index 0000000..97a76de
Binary files /dev/null and b/src/images/icon24.png differ
diff --git a/src/images/icon25.png b/src/images/icon25.png
new file mode 100644
index 0000000..4883037
Binary files /dev/null and b/src/images/icon25.png differ
diff --git a/src/images/icon26.png b/src/images/icon26.png
new file mode 100644
index 0000000..903a4f3
Binary files /dev/null and b/src/images/icon26.png differ
diff --git a/src/images/icon27.png b/src/images/icon27.png
new file mode 100644
index 0000000..92ea4d2
Binary files /dev/null and b/src/images/icon27.png differ
diff --git a/src/images/icon28.png b/src/images/icon28.png
new file mode 100644
index 0000000..e7e1d34
Binary files /dev/null and b/src/images/icon28.png differ
diff --git a/src/images/icon29.png b/src/images/icon29.png
new file mode 100644
index 0000000..8433db5
Binary files /dev/null and b/src/images/icon29.png differ
diff --git a/src/images/icon3.png b/src/images/icon3.png
new file mode 100644
index 0000000..bc70ece
Binary files /dev/null and b/src/images/icon3.png differ
diff --git a/src/images/icon30.png b/src/images/icon30.png
new file mode 100644
index 0000000..15defa8
Binary files /dev/null and b/src/images/icon30.png differ
diff --git a/src/images/icon31.png b/src/images/icon31.png
new file mode 100644
index 0000000..f40336a
Binary files /dev/null and b/src/images/icon31.png differ
diff --git a/src/images/icon32.png b/src/images/icon32.png
new file mode 100644
index 0000000..1e2ee71
Binary files /dev/null and b/src/images/icon32.png differ
diff --git a/src/images/icon4.png b/src/images/icon4.png
new file mode 100644
index 0000000..4bd96af
Binary files /dev/null and b/src/images/icon4.png differ
diff --git a/src/images/icon5.png b/src/images/icon5.png
new file mode 100644
index 0000000..7263ba1
Binary files /dev/null and b/src/images/icon5.png differ
diff --git a/src/images/icon6.png b/src/images/icon6.png
new file mode 100644
index 0000000..da87bde
Binary files /dev/null and b/src/images/icon6.png differ
diff --git a/src/images/icon7.png b/src/images/icon7.png
new file mode 100644
index 0000000..9d7baf3
Binary files /dev/null and b/src/images/icon7.png differ
diff --git a/src/images/icon8.png b/src/images/icon8.png
new file mode 100644
index 0000000..3669a83
Binary files /dev/null and b/src/images/icon8.png differ
diff --git a/src/images/icon9.png b/src/images/icon9.png
new file mode 100644
index 0000000..c934259
Binary files /dev/null and b/src/images/icon9.png differ
diff --git a/src/images/tabbar1.png b/src/images/tabbar1.png
new file mode 100644
index 0000000..82a60e1
Binary files /dev/null and b/src/images/tabbar1.png differ
diff --git a/src/images/tabbar11.png b/src/images/tabbar11.png
new file mode 100644
index 0000000..9e62348
Binary files /dev/null and b/src/images/tabbar11.png differ
diff --git a/src/images/tabbar12.png b/src/images/tabbar12.png
new file mode 100644
index 0000000..9bdd9a5
Binary files /dev/null and b/src/images/tabbar12.png differ
diff --git a/src/images/tabbar13.png b/src/images/tabbar13.png
new file mode 100644
index 0000000..97acc53
Binary files /dev/null and b/src/images/tabbar13.png differ
diff --git a/src/images/tabbar14.png b/src/images/tabbar14.png
new file mode 100644
index 0000000..1d4db0b
Binary files /dev/null and b/src/images/tabbar14.png differ
diff --git a/src/images/tabbar15.png b/src/images/tabbar15.png
new file mode 100644
index 0000000..704c68a
Binary files /dev/null and b/src/images/tabbar15.png differ
diff --git a/src/images/tabbar2.png b/src/images/tabbar2.png
new file mode 100644
index 0000000..832d09e
Binary files /dev/null and b/src/images/tabbar2.png differ
diff --git a/src/images/tabbar3.png b/src/images/tabbar3.png
new file mode 100644
index 0000000..cc8df84
Binary files /dev/null and b/src/images/tabbar3.png differ
diff --git a/src/images/tabbar4.png b/src/images/tabbar4.png
new file mode 100644
index 0000000..7b13259
Binary files /dev/null and b/src/images/tabbar4.png differ
diff --git a/src/images/tabbar5.png b/src/images/tabbar5.png
new file mode 100644
index 0000000..d8a0ef3
Binary files /dev/null and b/src/images/tabbar5.png differ
diff --git a/src/pages/act/index.json b/src/pages/act/index.json
new file mode 100644
index 0000000..e33ae3f
--- /dev/null
+++ b/src/pages/act/index.json
@@ -0,0 +1,7 @@
+{
+ "navigationStyle": "default",
+ "navigationBarTitleText": "活动",
+ "usingComponents": {
+ "van-popup": "@vant/weapp/popup/index"
+ }
+}
diff --git a/src/pages/act/index.scss b/src/pages/act/index.scss
new file mode 100644
index 0000000..1f494fc
--- /dev/null
+++ b/src/pages/act/index.scss
@@ -0,0 +1,327 @@
+page {
+ background-color: rgba(247, 248, 250, 1);
+}
+.page {
+ padding-bottom: calc(60px + env(safe-area-inset-bottom));
+ .page-header {
+ padding: 30rpx 30rpx 0;
+ background-color: #fff;
+ .search {
+ margin: 30rpx;
+ padding: 12rpx 24rpx;
+ display: flex;
+ align-items: center;
+ gap: 16rpx;
+ background-color: rgba(247, 248, 250, 1);
+ border-radius: 40rpx;
+ .icon {
+ width: 38rpx;
+ height: 38rpx;
+ }
+ .content {
+ font-size: 28rpx;
+ color: rgba(148, 163, 184, 0.7);
+ line-height: 44rpx;
+ }
+ }
+ .options {
+ display: flex;
+ .tabs {
+ flex: 1;
+ overflow-x: auto;
+ display: flex;
+ align-items: center;
+ flex-wrap: nowrap;
+ overflow-x: auto;
+ &::-webkit-scrollbar {
+ display: none;
+ }
+ .tab {
+ flex-shrink: 0;
+ padding: 10rpx 18rpx 16rpx;
+ font-size: 28rpx;
+ color: rgba(71, 85, 105, 1);
+ &.active {
+ position: relative;
+ font-size: 36rpx;
+ color: rgba(74, 184, 253, 1);
+ &::after {
+ position: absolute;
+ bottom: 0;
+ left: 50%;
+ transform: translateX(-50%);
+ content: '';
+ display: block;
+ width: 32rpx;
+ height: 6rpx;
+ background: #4ab8fd;
+ border-radius: 19228rpx 19228rpx 19228rpx 19228rpx;
+ }
+ }
+ }
+ }
+ .filter-btn {
+ margin-top: 2rpx;
+ align-self: start;
+ padding: 8rpx 24rpx;
+ flex-shrink: 0;
+ display: flex;
+ align-items: center;
+ gap: 6rpx;
+ background-color: rgba(247, 248, 250, 1);
+ border-radius: 40rpx;
+ font-size: 28rpx;
+ color: rgba(74, 184, 253, 1);
+ .icon {
+ width: 32rpx;
+ height: 32rpx;
+ }
+ }
+ }
+ }
+ .type-list {
+ padding: 32rpx 30rpx;
+ display: flex;
+ gap: 30rpx;
+ flex-wrap: nowrap;
+ overflow-x: auto;
+ &::-webkit-scrollbar {
+ display: none;
+ }
+ .type {
+ flex-shrink: 0;
+ .icon {
+ display: block;
+ margin: 0 auto;
+ width: 32rpx;
+ height: 32rpx;
+ padding: 30rpx;
+ background-color: rgba(255, 255, 255, 1);
+ border-radius: 16rpx;
+ }
+ .icon-active {
+ display: none;
+ margin: 0 auto;
+ width: 32rpx;
+ height: 32rpx;
+ padding: 30rpx;
+ background: linear-gradient(90deg, #9ddffd 0%, #4ab8fd 100%);
+ border-radius: 16rpx;
+ }
+ .name {
+ margin-top: 15rpx;
+ font-size: 28rpx;
+ color: rgba(71, 85, 105, 1);
+ text-align: center;
+ }
+ &.active {
+ .icon {
+ display: none;
+ }
+ .icon-active {
+ display: block;
+ }
+ .name {
+ color: rgba(74, 184, 253, 1);
+ }
+ }
+ }
+ }
+ .banner {
+ margin: 30rpx 30rpx 0;
+ height: 230rpx;
+ .b-img {
+ display: block;
+ width: 100%;
+ height: 100%;
+ }
+ }
+ .list {
+ margin: 30rpx;
+ .card {
+ margin-bottom: 24rpx;
+ padding: 24rpx;
+ display: flex;
+ gap: 24rpx;
+ background-color: #fff;
+ border-radius: 24rpx;
+ &:last-of-type {
+ border: none;
+ }
+ .photo {
+ flex-shrink: 0;
+ position: relative;
+ width: 262rpx;
+ height: 196rpx;
+ border-radius: 16rpx;
+ overflow: hidden;
+ .status {
+ position: absolute;
+ top: 0;
+ left: 0;
+ padding: 8rpx 16rpx;
+ font-size: 22rpx;
+ color: rgba(255, 255, 255, 1);
+ background: #feb54a;
+ border-radius: 16rpx 0rpx 16rpx 0rpx;
+ }
+ .p-img {
+ border-radius: 16rpx;
+ display: block;
+ width: 100%;
+ height: 100%;
+ }
+ .user {
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ width: 100%;
+ box-sizing: border-box;
+ text-align: center;
+ line-height: 44rpx;
+ font-size: 24rpx;
+ color: rgba(255, 255, 255, 1);
+ background-color: rgba(0, 0, 0, 0.36);
+ backdrop-filter: blur(8rpx);
+ }
+ }
+ .wrap {
+ .title {
+ margin-bottom: 28rpx;
+ font-size: 32rpx;
+ color: rgba(17, 24, 39, 1);
+ line-height: 48rpx;
+ font-weight: bold;
+ height: 96rpx;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ display: -webkit-box;
+ -webkit-box-orient: vertical;
+ -webkit-line-clamp: 2;
+ }
+ .date,
+ .site {
+ margin-top: 12rpx;
+ font-size: 28rpx;
+ color: rgba(100, 116, 139, 1);
+ display: flex;
+ align-items: center;
+ gap: 8rpx;
+ .icon {
+ width: 22rpx;
+ height: 22rpx;
+ }
+ }
+ }
+ }
+ }
+}
+
+.aside-bar {
+ position: fixed;
+ right: 30rpx;
+ bottom: 290rpx;
+ width: 110rpx;
+ height: 110rpx;
+ background: linear-gradient(90deg, #9ddffd 0%, #4ab8fd 100%);
+ box-shadow:
+ inset 0rpx 4rpx 24rpx 0rpx rgba(255, 255, 255, 0.25),
+ 0rpx 15rpx 30rpx -6rpx rgba(74, 172, 219, 0.4);
+ border-radius: 55rpx 55rpx 55rpx 55rpx;
+ text-align: center;
+ padding-top: 14rpx;
+ box-sizing: border-box;
+ .icon {
+ width: 50rpx;
+ height: 50rpx;
+ }
+ .name {
+ font-size: 20rpx;
+ color: rgba(255, 255, 255, 1);
+ }
+}
+
+.popup {
+ background: #fff;
+ padding: 32rpx 30rpx 120rpx;
+ .popup-line {
+ margin: 0 auto;
+ width: 77rpx;
+ height: 8rpx;
+ background: #c0c6d6;
+ border-radius: 20rpx;
+ }
+ .row {
+ .r-title {
+ margin-top: 42rpx;
+ font-size: 36rpx;
+ color: rgba(17, 24, 39, 1);
+ font-weight: bold;
+ }
+ .select {
+ margin-top: 24rpx;
+ display: flex;
+ flex-wrap: wrap;
+ gap: 23rpx 16rpx;
+ .s-item {
+ font-size: 32rpx;
+ color: rgba(71, 85, 105, 1);
+ padding: 15rpx 30rpx;
+ background: #f7f8fa;
+ border-radius: 15rpx 15rpx 15rpx 15rpx;
+ }
+ }
+ .date-raneg {
+ margin-top: 24rpx;
+ display: flex;
+ align-items: center;
+ gap: 23rpx;
+ .line {
+ color: rgba(192, 198, 214, 1);
+ }
+ .date {
+ flex: 1;
+ .content {
+ padding: 23rpx;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ gap: 8rpx;
+ background: #f8fafd;
+ border-radius: 16rpx 16rpx 16rpx 16rpx;
+ .icon {
+ width: 33rpx;
+ height: 33rpx;
+ }
+ }
+ }
+ }
+ }
+ .popup-footer {
+ margin-top: 56rpx;
+ display: flex;
+ gap: 30rpx;
+ .cancel,
+ .sure {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+ .cancel {
+ flex: 1;
+ border-radius: 16rpx 16rpx 16rpx 16rpx;
+ border: 1px solid #4ab8fd;
+ font-size: 32rpx;
+ color: rgba(74, 184, 253, 1);
+ }
+ .sure {
+ flex: 1;
+ height: 96rpx;
+ background: linear-gradient(90deg, #9ddffd 0%, #4ab8fd 100%);
+ box-shadow: 0rpx 15rpx 30rpx -6rpx rgba(74, 172, 219, 0.4);
+ border-radius: 16rpx 16rpx 16rpx 16rpx;
+ font-size: 32rpx;
+ color: #fff;
+ }
+ }
+}
diff --git a/src/pages/act/index.ts b/src/pages/act/index.ts
new file mode 100644
index 0000000..d1531fc
--- /dev/null
+++ b/src/pages/act/index.ts
@@ -0,0 +1,52 @@
+const _app = getApp()
+
+Page({
+ data: {
+ filterShow: true,
+ typeList: [
+ {
+ name: '全部分类',
+ icon: '5',
+ iconActive: '6',
+ },
+ {
+ name: '学术科技',
+ icon: '7',
+ iconActive: '8',
+ },
+ {
+ name: '文体艺术',
+ icon: '9',
+ iconActive: '10',
+ },
+ {
+ name: '志愿公益',
+ icon: '11',
+ iconActive: '12',
+ },
+ {
+ name: '创新创业',
+ icon: '13',
+ iconActive: '14',
+ },
+ ],
+ },
+ onLoad() {},
+ handlePopupClose() {
+ this.setData({
+ filterShow: false,
+ })
+ },
+ handleApply() {
+ wx.navigateTo({
+ url: '/pages/actAdd/index',
+ })
+ },
+ handleDetail() {
+ wx.navigateTo({
+ url: '/pages/actDetail/index',
+ })
+ },
+})
+
+export {}
diff --git a/src/pages/act/index.wxml b/src/pages/act/index.wxml
new file mode 100644
index 0000000..73e420f
--- /dev/null
+++ b/src/pages/act/index.wxml
@@ -0,0 +1,94 @@
+
+
+
+
+
+
+ 全部分类
+
+
+
+
+
+
+
+
+
+
+ 进行中
+
+ 128人已报名
+
+
+
+ 深职大第十五届校园歌手大赛深职大第十五届校园歌手大深职大第十五届校园歌手大深职大第十五届校园歌手大赛赛赛
+
+
+
+ 2026.04.01-2026.05.30
+
+
+
+ 留仙洞校区音乐厅
+
+
+
+
+
+
+
+
+ 活动申请
+
+
+
+
+
diff --git a/src/pages/actAdd/index.json b/src/pages/actAdd/index.json
new file mode 100644
index 0000000..a97367d
--- /dev/null
+++ b/src/pages/actAdd/index.json
@@ -0,0 +1,3 @@
+{
+ "usingComponents": {}
+}
diff --git a/src/pages/actAdd/index.scss b/src/pages/actAdd/index.scss
new file mode 100644
index 0000000..e69de29
diff --git a/src/pages/actAdd/index.ts b/src/pages/actAdd/index.ts
new file mode 100644
index 0000000..067b6bb
--- /dev/null
+++ b/src/pages/actAdd/index.ts
@@ -0,0 +1,8 @@
+const _app = getApp();
+
+Page({
+ data: {},
+ onLoad() {},
+});
+
+export {}
diff --git a/src/pages/actAdd/index.wxml b/src/pages/actAdd/index.wxml
new file mode 100644
index 0000000..e69de29
diff --git a/src/pages/actDetail/index.json b/src/pages/actDetail/index.json
new file mode 100644
index 0000000..eaefbc1
--- /dev/null
+++ b/src/pages/actDetail/index.json
@@ -0,0 +1,8 @@
+{
+ "usingComponents": {
+ "van-icon": "@vant/weapp/icon/index",
+ "van-count-down": "@vant/weapp/count-down/index",
+ "mp-html": "mp-html",
+ "van-rate": "@vant/weapp/rate/index"
+ }
+}
diff --git a/src/pages/actDetail/index.scss b/src/pages/actDetail/index.scss
new file mode 100644
index 0000000..0c41abb
--- /dev/null
+++ b/src/pages/actDetail/index.scss
@@ -0,0 +1,278 @@
+page {
+ background-color: rgba(248, 250, 253, 1);
+}
+.page-title {
+ font-size: 32rpx;
+ color: #fff;
+}
+.page-back {
+ font-size: 32rpx;
+ color: #fff;
+}
+
+.page {
+ min-height: 100vh;
+ box-sizing: border-box;
+ padding-bottom: 280rpx;
+ .info-card {
+ margin: 349rpx 30rpx 0;
+ padding: 48rpx 30rpx 40rpx;
+ background-color: #fff;
+ border-radius: 24rpx;
+ .title {
+ font-size: 40rpx;
+ color: rgba(17, 24, 39, 1);
+ font-weight: bold;
+ line-height: 56rpx;
+ }
+ .stat {
+ margin-top: 28rpx;
+ display: flex;
+ align-items: center;
+ flex-wrap: wrap;
+ gap: 32rpx;
+ .user {
+ flex: 1;
+ display: flex;
+ align-items: center;
+ gap: 18rpx;
+ .avatar-wrap {
+ display: flex;
+ align-items: center;
+ .icon {
+ margin-right: -8rpx;
+ width: 40rpx;
+ height: 40rpx;
+ }
+ }
+ .content {
+ font-size: 24rpx;
+ color: rgba(148, 163, 184, 1);
+ }
+ }
+ .pv,
+ .share {
+ flex-shrink: 0;
+ display: flex;
+ align-items: center;
+ gap: 12rpx;
+ font-size: 24rpx;
+ color: rgba(148, 163, 184, 1);
+ .icon {
+ width: 34rpx;
+ height: 34rpx;
+ }
+ }
+ }
+ .tags {
+ margin-top: 25rpx;
+ display: flex;
+ flex-wrap: wrap;
+ gap: 16rpx;
+ .tag {
+ padding: 4rpx 16rpx;
+ font-size: 24rpx;
+ border-radius: 8rpx;
+ color: rgba(74, 184, 253, 1);
+ background-color: rgba(74, 184, 253, 0.1);
+ }
+ }
+ .row-wrap {
+ margin-top: 24rpx;
+ border-top: 1px solid rgba(136, 142, 152, 0.19);
+ .row {
+ margin-top: 34rpx;
+ display: flex;
+ align-items: center;
+ gap: 12rpx;
+ .icon {
+ flex-shrink: 0;
+ width: 36rpx;
+ height: 36rpx;
+ }
+ .content {
+ font-size: 28rpx;
+ color: rgba(71, 85, 105, 1);
+ }
+ }
+ }
+ }
+
+ .rich-card {
+ margin: 24rpx 30rpx 0;
+ padding: 30rpx;
+ background-color: #fff;
+ border-radius: 24rpx;
+ .r-title {
+ font-size: 36rpx;
+ color: rgba(17, 24, 39, 1);
+ font-weight: bold;
+ display: flex;
+ align-items: center;
+ gap: 20rpx;
+ &::before {
+ margin-left: -30rpx;
+ content: '';
+ display: block;
+ width: 10rpx;
+ height: 36rpx;
+ background: #4ab8fd;
+ border-radius: 0 12rpx 12rpx 0;
+ }
+ }
+ .mp-html {
+ margin-top: 30rpx;
+ }
+ }
+
+ .comment-list {
+ margin: 42rpx 30rpx 0;
+ .c-title {
+ font-size: 36rpx;
+ color: rgba(25, 28, 30, 1);
+ font-weight: bold;
+ }
+ .c-card {
+ margin-top: 30rpx;
+ padding: 30rpx;
+ background-color: #fff;
+ border-radius: 24rpx;
+ .user {
+ display: flex;
+ .avatar {
+ flex-shrink: 0;
+ width: 84rpx;
+ height: 84rpx;
+ border-radius: 50%;
+ }
+ .wrap {
+ padding-left: 16rpx;
+ .naem {
+ font-size: 32rpx;
+ color: rgba(17, 24, 39, 1);
+ }
+ .rate {
+ display: flex;
+ align-items: baseline;
+ gap: 10rpx;
+ .r-status {
+ font-size: 24rpx;
+ color: rgba(254, 181, 74, 1);
+ }
+ }
+ }
+ }
+ .content {
+ margin-top: 32rpx;
+ font-size: 28rpx;
+ color: rgba(71, 85, 105, 1);
+ line-height: 42rpx;
+ }
+ .photo-wrap {
+ margin-top: 32rpx;
+ display: grid;
+ grid-template-columns: repeat(3, 1fr);
+ gap: 18rpx;
+ .photo-item {
+ aspect-ratio: 1 / 1;
+ .photo {
+ width: 100%;
+ height: 100%;
+ border-radius: 16rpx;
+ }
+ }
+ }
+ .c-footer {
+ margin-top: 24rpx;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ gap: 24rpx;
+ .date {
+ flex: 1;
+ font-size: 28rpx;
+ color: rgba(148, 163, 184, 1);
+ }
+ .stat {
+ display: flex;
+ align-items: center;
+ gap: 24rpx;
+ .s-item {
+ display: flex;
+ align-items: center;
+ gap: 12rpx;
+ .icon {
+ width: 36rpx;
+ height: 36rpx;
+ }
+ .s-content {
+ font-size: 28rpx;
+ color: rgba(100, 116, 139, 1);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ .footer {
+ position: fixed;
+ bottom: 0;
+ left: 0;
+ width: 100%;
+ background-color: #fff;
+ .count-down-wrap {
+ padding: 10rpx 0;
+ position: absolute;
+ top: 0;
+ left: 50%;
+ width: 100%;
+ transform: translate(-50%, -100%);
+ background-color: rgba(255, 246, 233, 1);
+ .count-down {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-size: 28rpx;
+ gap: 8rpx;
+ white-space: nowrap;
+ color: rgba(254, 181, 74, 1);
+ .c-item {
+ padding: 0 10rpx;
+ color: #fff;
+ line-height: 56rpx;
+ background-color: rgba(254, 181, 74, 1);
+ min-width: 50rpx;
+ text-align: center;
+ box-sizing: border-box;
+ border-radius: 4rpx;
+ }
+ }
+ }
+ .options {
+ padding: 32rpx 32rpx calc(env(safe-area-inset-bottom) + 16rpx);
+ display: flex;
+ align-items: center;
+ gap: 26rpx;
+ .com,
+ .btn {
+ flex: 1;
+ height: 96rpx;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ box-sizing: border-box;
+ border-radius: 16rpx;
+ font-size: 32rpx;
+ }
+ .com {
+ color: rgba(74, 184, 253, 1);
+ border: 1px solid #4ab8fd;
+ }
+ .btn {
+ color: #fff;
+ background: linear-gradient(90deg, #9ddffd 0%, #4ab8fd 100%);
+ }
+ }
+ }
+}
diff --git a/src/pages/actDetail/index.ts b/src/pages/actDetail/index.ts
new file mode 100644
index 0000000..067b6bb
--- /dev/null
+++ b/src/pages/actDetail/index.ts
@@ -0,0 +1,8 @@
+const _app = getApp();
+
+Page({
+ data: {},
+ onLoad() {},
+});
+
+export {}
diff --git a/src/pages/actDetail/index.wxml b/src/pages/actDetail/index.wxml
new file mode 100644
index 0000000..e1a81f3
--- /dev/null
+++ b/src/pages/actDetail/index.wxml
@@ -0,0 +1,127 @@
+
+
+ 详情
+
+
+
+
+ 深职大第十五届校园歌手大赛
+
+
+
+
+
+
+
+ 1345人已报名
+
+
+
+ 134次
+
+
+
+ 1380次
+
+
+
+ 校园活动
+ 学生会
+
+
+
+
+ 报名时间 2026.5.30 - 2026.6.30.
+
+
+
+ 活动时间 2026.7.1 19:00 - 2026.7.1 21:00
+
+
+
+ 活动地点 留仙洞校区音乐厅
+
+
+
+ 主办方 学生会
+
+
+
+
+
+ 活动介绍
+
+
+
+
+
+
+
diff --git a/src/pages/actResult/index.json b/src/pages/actResult/index.json
new file mode 100644
index 0000000..a97367d
--- /dev/null
+++ b/src/pages/actResult/index.json
@@ -0,0 +1,3 @@
+{
+ "usingComponents": {}
+}
diff --git a/src/pages/actResult/index.scss b/src/pages/actResult/index.scss
new file mode 100644
index 0000000..e69de29
diff --git a/src/pages/actResult/index.ts b/src/pages/actResult/index.ts
new file mode 100644
index 0000000..067b6bb
--- /dev/null
+++ b/src/pages/actResult/index.ts
@@ -0,0 +1,8 @@
+const _app = getApp();
+
+Page({
+ data: {},
+ onLoad() {},
+});
+
+export {}
diff --git a/src/pages/actResult/index.wxml b/src/pages/actResult/index.wxml
new file mode 100644
index 0000000..e69de29
diff --git a/src/pages/index/index.json b/src/pages/index/index.json
index a97367d..2352750 100644
--- a/src/pages/index/index.json
+++ b/src/pages/index/index.json
@@ -1,3 +1,9 @@
{
- "usingComponents": {}
+ "navigationStyle": "custom",
+ "usingComponents": {
+ "van-icon": "@vant/weapp/icon/index",
+ "van-notice-bar": "@vant/weapp/notice-bar/index",
+ "van-tab": "@vant/weapp/tab/index",
+ "van-tabs": "@vant/weapp/tabs/index"
+ }
}
diff --git a/src/pages/index/index.scss b/src/pages/index/index.scss
index 5c7ea70..0875e8b 100644
--- a/src/pages/index/index.scss
+++ b/src/pages/index/index.scss
@@ -1,3 +1,242 @@
+page {
+ background: rgba(247, 248, 250, 1);
+}
.page {
- padding: 20rpx;
+ position: relative;
+ min-height: 100vh;
+ padding-bottom: calc(60px + env(safe-area-inset-bottom));
+ .search {
+ margin: 30rpx;
+ padding: 10rpx 24rpx;
+ display: flex;
+ align-items: center;
+ gap: 16rpx;
+ background-color: #fff;
+ border-radius: 40rpx;
+ .icon {
+ width: 38rpx;
+ height: 38rpx;
+ }
+ .content {
+ font-size: 28rpx;
+ color: rgba(148, 163, 184, 0.7);
+ line-height: 44rpx;
+ }
+ }
+ .notice {
+ margin: 353rpx 30rpx 0;
+ padding: 12rpx 24rpx;
+ background-color: #fff;
+ border-radius: 59rpx;
+ display: flex;
+ align-items: center;
+ gap: 12rpx;
+ .icon {
+ flex-shrink: 0;
+ width: 36rpx;
+ height: 36rpx;
+ }
+ .content {
+ flex: 1;
+ font-size: 28rpx;
+ color: rgba(71, 85, 105, 1);
+ --notice-bar-padding: 0;
+ --notice-bar-line-height: 40rpx;
+ --notice-bar-height: 40rpx;
+ }
+ .more {
+ color: rgba(148, 163, 184, 1);
+ }
+ }
+ .kkd {
+ margin: 32rpx 30rpx;
+ padding: 36rpx;
+ background-color: #fff;
+ border-radius: 24rpx;
+ display: flex;
+ justify-content: space-between;
+ .k-item {
+ text-align: center;
+ flex: 1;
+ .icon {
+ width: 120rpx;
+ height: 120rpx;
+ }
+ .name {
+ margin-top: 13rpx;
+ font-size: 28rpx;
+ color: rgba(71, 85, 105, 1);
+ }
+ }
+ }
+ .module {
+ margin: 35rpx 30rpx 0;
+ .m-header {
+ display: flex;
+ align-content: inherit;
+ justify-content: space-between;
+ .title {
+ font-size: 36rpx;
+ color: rgba(15, 29, 63, 1);
+ font-weight: bold;
+ }
+ .more {
+ font-size: 28rpx;
+ color: rgba(148, 163, 184, 1);
+ }
+ }
+ .activity-list {
+ margin: 20rpx -30rpx;
+ padding-left: 30rpx;
+ display: flex;
+ flex-wrap: nowrap;
+ gap: 24rpx;
+ overflow-x: auto;
+ &::-webkit-scrollbar {
+ display: none;
+ }
+ .a-card {
+ flex-shrink: 0;
+ width: 653rpx;
+ height: 218rpx;
+ .a-img {
+ display: block;
+ width: 100%;
+ height: 100%;
+ border-radius: 24rpx;
+ }
+ }
+ }
+ .agent-list {
+ margin: 20rpx -30rpx;
+ padding-left: 30rpx;
+ display: flex;
+ flex-wrap: nowrap;
+ gap: 24rpx;
+ overflow-x: auto;
+ &::-webkit-scrollbar {
+ display: none;
+ }
+ .a-card {
+ flex-shrink: 0;
+ padding-top: 44rpx;
+ width: 200rpx;
+ height: 264rpx;
+ background-color: #fff;
+ border-radius: 24rpx;
+ box-sizing: border-box;
+ .icon {
+ display: block;
+ margin: 0 auto;
+ width: 112rpx;
+ height: 112rpx;
+ border-radius: 16rpx;
+ }
+ .name {
+ margin-top: 32rpx;
+ padding: 0 10rpx;
+ font-size: 28rpx;
+ color: rgba(71, 85, 105, 1);
+ text-align: center;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ }
+ }
+ }
+ }
+ .recommend {
+ margin: 42rpx 30rpx 0;
+ --tabs-nav-background-color: transparent;
+ --tab-font-size: 32rpx;
+ .van-tab--active {
+ --tab-font-size: 36rpx;
+ font-weight: bold;
+ }
+ .van-tabs__line {
+ display: none;
+ }
+ .van-tab {
+ position: relative;
+ flex: none;
+ }
+ .van-tab--active::after {
+ content: '';
+ display: block;
+ position: absolute;
+ bottom: 0;
+ left: 50%;
+ transform: translateX(-50%);
+ width: 42rpx;
+ height: 8rpx;
+ background: #4ab8fd;
+ border-radius: 37rpx 37rpx 37rpx 37rpx;
+ }
+ .van-tabs__nav {
+ gap: 70rpx;
+ }
+ .r-activity-list {
+ margin-top: 32rpx;
+ padding: 0 32rpx;
+ border-radius: 16rpx;
+ background-color: #fff;
+ .card {
+ padding: 24rpx 0;
+ display: flex;
+ gap: 24rpx;
+ padding-bottom: 24rpx;
+ border-bottom: 1px solid rgba(148, 163, 184, 0.1);
+ &:last-of-type{
+ border: none;
+ }
+ .photo {
+ flex-shrink: 0;
+ position: relative;
+ width: 262rpx;
+ height: 196rpx;
+ .status {
+ position: absolute;
+ top: 0;
+ left: 0;
+ padding: 8rpx 16rpx;
+ font-size: 22rpx;
+ color: rgba(255, 255, 255, 1);
+ background: #feb54a;
+ border-radius: 16rpx 0rpx 16rpx 0rpx;
+ }
+ .p-img {
+ border-radius: 16rpx;
+ display: block;
+ width: 100%;
+ height: 100%;
+ }
+ }
+ .wrap {
+ .title {
+ font-size: 32rpx;
+ color: rgba(17, 24, 39, 1);
+ line-height: 48rpx;
+ font-weight: bold;
+ }
+ .user {
+ margin-top: 18rpx;
+ color: rgba(100, 116, 139, 1);
+ font-size: 24rpx;
+ }
+ .date {
+ margin-top: 20rpx;
+ font-size: 24rpx;
+ color: rgba(100, 116, 139, 1);
+ display: flex;
+ align-items: center;
+ gap: 8rpx;
+ .icon {
+ width: 22rpx;
+ height: 22rpx;
+ }
+ }
+ }
+ }
+ }
+ }
}
diff --git a/src/pages/index/index.ts b/src/pages/index/index.ts
index bea17d2..e9618c5 100644
--- a/src/pages/index/index.ts
+++ b/src/pages/index/index.ts
@@ -2,11 +2,99 @@ const app = getApp()
Page({
data: {
- title: '首页',
+ statusBarHeight: 44,
+ activeTab: 0,
+ navItems: [
+ { type: 'schedule', label: '智能课表', icon: '/images/icon_schedule.png' },
+ { type: 'bus', label: '校园巴士', icon: '/images/icon_bus.png' },
+ { type: 'race', label: '活动报名', icon: '/images/icon_race.png' },
+ { type: 'ai', label: 'AI辅导员', icon: '/images/icon_ai.png' },
+ ],
+ tabList: [
+ { label: '首页', icon: '/images/icon_home_active.png' },
+ { label: '活动', icon: '/images/icon_calendar.png' },
+ { label: '智能体', icon: '/images/icon_ai.png' },
+ { label: '通知', icon: '/images/icon_bell.png' },
+ { label: '我的', icon: '/images/icon_user.png' },
+ ],
+ recommendAgents: [
+ { id: 'ppt', name: 'PPT小助手', icon: '/images/agent_ppt.png', bgImage: '/images/activity_1.png' },
+ { id: 'ielts', name: '雅思模拟考官', icon: '/images/agent_ielts.png', bgImage: '/images/activity_2.png' },
+ { id: 'pdf', name: 'PDF翻译', icon: '/images/agent_pdf.png', bgImage: '/images/activity_3.png' },
+ ],
+ recommendActivities: [
+ {
+ id: '3',
+ title: '英语角交流活动',
+ desc: '提升口语能力',
+ time: '活动时间:2026-04-01~2026-05-30',
+ image: '/images/activity_1.png',
+ },
+ {
+ id: '4',
+ title: '大学生创业项目大赛',
+ desc: '提升创新能力',
+ time: '活动时间:2026-04-01~2026-05-30',
+ image: '/images/activity_2.png',
+ },
+ ],
+ hotActivities: [
+ {
+ id: '1',
+ title: '计算机学院编程大赛',
+ image: '/images/activity_1.png',
+ deadline: '截止日期:2026年5月30日',
+ },
+ {
+ id: '2',
+ title: '创新创业项目路演',
+ image: '/images/activity_2.png',
+ deadline: '截止日期:2026年6月15日',
+ },
+ ],
},
+
onLoad() {
+ const sysInfo = wx.getSystemInfoSync()
+ this.setData({ statusBarHeight: sysInfo.statusBarHeight || 44 })
app.waitLogin()
},
+
+ onSearchTap() {
+ wx.showToast({ title: '搜索功能开发中', icon: 'none' })
+ },
+
+ onNavTap(e: WechatMiniprogram.TouchEvent) {
+ const type = e.currentTarget.dataset.type
+ wx.showToast({ title: `${type}功能开发中`, icon: 'none' })
+ },
+
+ onAnnounceTap() {
+ wx.showToast({ title: '公告详情开发中', icon: 'none' })
+ },
+
+ onMoreAgentsTap() {
+ wx.showToast({ title: '更多智能体开发中', icon: 'none' })
+ },
+
+ onAgentTap(e: WechatMiniprogram.TouchEvent) {
+ const id = e.currentTarget.dataset.id
+ wx.navigateTo({ url: `/pages/agent/index?id=${id}` })
+ },
+
+ onActivityTap(e: WechatMiniprogram.TouchEvent) {
+ const id = e.currentTarget.dataset.id
+ wx.navigateTo({ url: `/pages/activity-detail/index?id=${id}` })
+ },
+
+ onTabTap(e: WechatMiniprogram.TouchEvent) {
+ const index = e.currentTarget.dataset.index
+ if (index === this.data.activeTab) return
+ this.setData({ activeTab: index })
+ if (index === 4) {
+ wx.switchTab({ url: '/pages/my/index' })
+ }
+ },
})
export {}
diff --git a/src/pages/index/index.wxml b/src/pages/index/index.wxml
index 0e4eb3e..056211b 100644
--- a/src/pages/index/index.wxml
+++ b/src/pages/index/index.wxml
@@ -1,3 +1,86 @@
-
- {{title}}
+
+
+
+ 请搜索你想要的内容
+
+
+
+
+
+
+
+
+
+
+
+ 智能课表
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PPT小助手
+
+
+
+
+
+
+
+
+
+ 进行中
+
+
+
+ 深职大第十五届校园歌手大赛
+ 128人已报名
+
+
+ 2026.04.01-2026.05.30
+
+
+
+
+
+ 内容 2
+
+
diff --git a/src/pages/notice/index.json b/src/pages/notice/index.json
new file mode 100644
index 0000000..0e929f8
--- /dev/null
+++ b/src/pages/notice/index.json
@@ -0,0 +1,9 @@
+{
+ "navigationBarTitleText": "通知",
+ "navigationStyle": "default",
+ "usingComponents": {
+ "van-tab": "@vant/weapp/tab/index",
+ "van-tabs": "@vant/weapp/tabs/index",
+ "van-icon": "@vant/weapp/icon/index"
+ }
+}
diff --git a/src/pages/notice/index.scss b/src/pages/notice/index.scss
new file mode 100644
index 0000000..87c9258
--- /dev/null
+++ b/src/pages/notice/index.scss
@@ -0,0 +1,125 @@
+page {
+ background-color: rgba(247, 248, 250, 1);
+}
+
+.page {
+ .tabs {
+ .van-tabs__line {
+ width: 32rpx !important;
+ }
+ .van-tab--active {
+ --tab-font-size: 32rpx;
+ }
+ }
+ .page0 {
+ padding: 0 32rpx;
+ .module {
+ margin-top: 32rpx;
+ .date {
+ font-size: 28rpx;
+ color: rgba(148, 163, 184, 1);
+ text-align: center;
+ }
+ .card {
+ margin-top: 24rpx;
+ background-color: #fff;
+ border-radius: 24rpx;
+ padding: 32rpx;
+ .title {
+ font-size: 32rpx;
+ color: rgba(17, 24, 39, 1);
+ font-weight: bold;
+ }
+ .content {
+ margin-top: 24rpx;
+ font-size: 28rpx;
+ color: rgba(100, 116, 139, 1);
+ line-height: 44rpx;
+ }
+ .c-footer {
+ margin-top: 32rpx;
+ padding-top: 22rpx;
+ border-top: 1px solid rgba(235, 235, 235, 1);
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ .tag {
+ font-size: 24rpx;
+ color: rgba(74, 184, 253, 1);
+ padding: 4rpx 16rpx;
+ border-radius: 6rpx;
+ background-color: rgba(74, 184, 253, 0.1);
+ }
+ .detail {
+ font-size: 28rpx;
+ color: rgba(148, 163, 184, 0.5);
+ }
+ }
+ }
+ }
+ }
+
+ .page2 {
+ padding: 0 32rpx;
+ .module {
+ margin-top: 32rpx;
+ .date {
+ font-size: 28rpx;
+ color: rgba(148, 163, 184, 1);
+ text-align: center;
+ }
+ .card {
+ margin-top: 24rpx;
+ background-color: #fff;
+ border-radius: 24rpx;
+ padding: 32rpx;
+ .title {
+ font-size: 32rpx;
+ color: rgba(17, 24, 39, 1);
+ font-weight: bold;
+ }
+ .content {
+ margin-top: 24rpx;
+ font-size: 28rpx;
+ color: rgba(100, 116, 139, 1);
+ line-height: 44rpx;
+ }
+ .c-footer {
+ margin-top: 30rpx;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ .tag {
+ font-size: 24rpx;
+ padding: 4rpx 16rpx;
+ border-radius: 6rpx;
+ &.tag1 {
+ color: rgba(111, 220, 174, 1);
+ background-color: rgba(111, 220, 174, 0.1);
+ }
+ &.tag2 {
+ color: rgba(253, 91, 89, 1);
+ background-color: rgba(253, 91, 89, 0.1);
+ }
+ &.tag3 {
+ color: rgba(74, 184, 253, 1);
+ background-color: rgba(74, 184, 253, 0.1);
+ }
+ &.tag4 {
+ color: rgba(254, 181, 74, 1);
+ background-color: rgba(254, 181, 74, 0.1);
+ }
+ &.tag5 {
+ color: rgba(171, 89, 248, 1);
+ background-color: rgba(171, 89, 248, 0.1);
+ }
+ }
+ .detail {
+ font-size: 28rpx;
+ color: rgba(148, 163, 184, 0.5);
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/src/pages/notice/index.ts b/src/pages/notice/index.ts
new file mode 100644
index 0000000..becaafa
--- /dev/null
+++ b/src/pages/notice/index.ts
@@ -0,0 +1,15 @@
+const _app = getApp()
+
+Page({
+ data: {
+ active: 2,
+ },
+ onLoad() {},
+ handleDetail() {
+ wx.navigateTo({
+ url: '/pages/noticeDetail/index',
+ })
+ },
+})
+
+export {}
diff --git a/src/pages/notice/index.wxml b/src/pages/notice/index.wxml
new file mode 100644
index 0000000..f8c613b
--- /dev/null
+++ b/src/pages/notice/index.wxml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ 03-01 13:01
+
+ 2025-2026学年暑期社会实践报名启动
+
+ 本次活动聚焦社会服务、乡村振兴、红色教育、志愿服务等方向,引导青年以实干践行使命,用行...
+
+
+
+
+
+
+ 内容 2
+
+
+
+ 03-01 13:01
+
+ 2025-2026学年暑期社会实践报名启动
+
+ 本次活动聚焦社会服务、乡村振兴、红色教育、志愿服务等方向,引导青年以实干践行使命,用行...
+
+ 驳回原因:
+
+
+
+
+
+ 内容 2
+
+
diff --git a/src/pages/noticeDetail/index.json b/src/pages/noticeDetail/index.json
new file mode 100644
index 0000000..f8bd8c8
--- /dev/null
+++ b/src/pages/noticeDetail/index.json
@@ -0,0 +1,7 @@
+{
+ "navigationBarTitleText": "通知详情",
+ "navigationStyle": "default",
+ "usingComponents": {
+ "mp-html": "mp-html"
+ }
+}
diff --git a/src/pages/noticeDetail/index.scss b/src/pages/noticeDetail/index.scss
new file mode 100644
index 0000000..6ff0d09
--- /dev/null
+++ b/src/pages/noticeDetail/index.scss
@@ -0,0 +1,154 @@
+.page {
+ padding: 32rpx;
+ .info {
+ .row {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ .type {
+ display: flex;
+ align-items: center;
+ gap: 8rpx;
+ .icon {
+ width: 34rpx;
+ height: 34rpx;
+ }
+ .content {
+ font-size: 32rpx;
+ color: rgba(74, 184, 253, 1);
+ }
+ }
+ .status {
+ font-size: 24rpx;
+ padding: 4rpx 16rpx;
+ border-radius: 6rpx;
+ &.status1 {
+ color: rgba(111, 220, 174, 1);
+ background-color: rgba(111, 220, 174, 0.1);
+ }
+ &.status2 {
+ color: rgba(253, 91, 89, 1);
+ background-color: rgba(253, 91, 89, 0.1);
+ }
+ &.status3 {
+ color: rgba(74, 184, 253, 1);
+ background-color: rgba(74, 184, 253, 0.1);
+ }
+ &.status4 {
+ color: rgba(254, 181, 74, 1);
+ background-color: rgba(254, 181, 74, 0.1);
+ }
+ &.status5 {
+ color: rgba(171, 89, 248, 1);
+ background-color: rgba(171, 89, 248, 0.1);
+ }
+ }
+ }
+ .title {
+ margin-top: 30rpx;
+ font-size: 42rpx;
+ line-height: 48rpx;
+ color: rgba(17, 24, 39, 1);
+ font-weight: bold;
+ }
+ .tag-wrap {
+ margin-top: 30rpx;
+ display: flex;
+ gap: 16rpx;
+ flex-wrap: wrap;
+ .tag {
+ font-size: 24rpx;
+ padding: 4rpx 16rpx;
+ border-radius: 6rpx;
+ &.tag1 {
+ color: rgba(111, 220, 174, 1);
+ background-color: rgba(111, 220, 174, 0.1);
+ }
+ &.tag2 {
+ color: rgba(253, 91, 89, 1);
+ background-color: rgba(253, 91, 89, 0.1);
+ }
+ &.tag3 {
+ color: rgba(74, 184, 253, 1);
+ background-color: rgba(74, 184, 253, 0.1);
+ }
+ &.tag4 {
+ color: rgba(254, 181, 74, 1);
+ background-color: rgba(254, 181, 74, 0.1);
+ }
+ &.tag5 {
+ color: rgba(171, 89, 248, 1);
+ background-color: rgba(171, 89, 248, 0.1);
+ }
+ }
+ }
+ .stat {
+ margin-top: 30rpx;
+ display: flex;
+ align-items: center;
+ gap: 36rpx;
+ .date,
+ .user {
+ display: flex;
+ align-items: center;
+ gap: 8rpx;
+ .icon {
+ width: 30rpx;
+ height: 30rpx;
+ }
+ .content {
+ font-size: 28rpx;
+ color: rgba(148, 163, 184, 1);
+ }
+ }
+ }
+ }
+ .mp-html {
+ margin-top: 30rpx;
+ }
+ .tip {
+ margin-top: 30rpx;
+ padding: 24rpx;
+ background-color: rgba(254, 181, 74, 0.1);
+ border-radius: 16rpx;
+ display: flex;
+ gap: 23rpx;
+ .icon {
+ margin-top: 4rpx;
+ flex-shrink: 0;
+ width: 32rpx;
+ height: 32rpx;
+ }
+ .wrap {
+ .w-title {
+ font-size: 32rpx;
+ color: rgba(254, 181, 74, 1);
+ }
+ .w-content {
+ font-size: 28rpx;
+ color: rgba(254, 181, 74, 1);
+ }
+ }
+ }
+ .footer {
+ position: fixed;
+ bottom: 0;
+ left: 0;
+ width: 100%;
+ box-sizing: border-box;
+ padding: 30rpx 30rpx calc(env(safe-area-inset-bottom) + 30rpx);
+ background-color: #fff;
+ box-shadow: 0rpx -4rpx 21rpx 0rpx rgba(0, 0, 0, 0.07);
+ .btn {
+ height: 96rpx;
+ font-size: 32rpx;
+ color: rgba(255, 255, 255, 1);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ background: linear-gradient(90deg, #9ddffd 0%, #4ab8fd 100%);
+ box-shadow: 0rpx 15rpx 30rpx -6rpx rgba(74, 172, 219, 0.4);
+ border-radius: 16rpx 16rpx 16rpx 16rpx;
+ }
+ }
+}
diff --git a/src/pages/noticeDetail/index.ts b/src/pages/noticeDetail/index.ts
new file mode 100644
index 0000000..067b6bb
--- /dev/null
+++ b/src/pages/noticeDetail/index.ts
@@ -0,0 +1,8 @@
+const _app = getApp();
+
+Page({
+ data: {},
+ onLoad() {},
+});
+
+export {}
diff --git a/src/pages/noticeDetail/index.wxml b/src/pages/noticeDetail/index.wxml
new file mode 100644
index 0000000..29c71eb
--- /dev/null
+++ b/src/pages/noticeDetail/index.wxml
@@ -0,0 +1,38 @@
+
+
+
+
+
+ 通知
+
+ 已发布
+
+ 关于开展校园歌手大赛的通知
+
+ 校园活动
+
+
+
+
+ 2026-05-20 14:30:00
+
+
+
+ 浏览人数:128
+
+
+
+
+
+
+
+
+
+ 温馨提示
+ 未尽事宜,请联系校团委文艺部,联系电话:0755-12345678。
+
+
+
+
diff --git a/src/pages/start/index.ts b/src/pages/start/index.ts
index b3dd361..33a2ad9 100644
--- a/src/pages/start/index.ts
+++ b/src/pages/start/index.ts
@@ -4,35 +4,8 @@ const app = getApp()
Page({
data: {},
onLoad(options) {
- if (options.scene) {
- const params = parseScene(options.scene)
- if (params) {
- app.globalData.waitBindDoctorId = (params as any).doctorId
- }
- }
- app.waitLogin().then(() => {
- const initLoginInfo = app.globalData.initLoginInfo || {}
- if (initLoginInfo.isLogin === 0) {
- wx.reLaunch({
- url: '/pages/index/index',
- })
- }
- if (initLoginInfo.loginType === 1) {
- if (initLoginInfo.isReg === 1) {
- wx.reLaunch({
- url: '/pages/index/index',
- })
- return
- }
- wx.reLaunch({
- url: '/pages/index/index',
- })
- }
- if (initLoginInfo.loginType === 2) {
- wx.reLaunch({
- url: '/pages/index/index',
- })
- }
+ wx.reLaunch({
+ url: '/pages/index/index',
})
},
})