diff --git a/.env b/.env index 03dd89b..2518203 100644 --- a/.env +++ b/.env @@ -5,7 +5,8 @@ SHOPRO_VERSION=v2.4.1 SHOPRO_BASE_URL=http://api-dashboard.yudao.iocoder.cn # 后端接口 - 测试环境(通过 process.env.NODE_ENV = development) -SHOPRO_DEV_BASE_URL=http://127.0.0.1:48080 +#SHOPRO_DEV_BASE_URL=http://127.0.0.1:48080 +SHOPRO_DEV_BASE_URL=http://1.12.53.43:9999 ### SHOPRO_DEV_BASE_URL=http://10.171.1.188:48080 ### SHOPRO_DEV_BASE_URL = http://yunai.natapp1.cc @@ -32,4 +33,4 @@ SHOPRO_H5_URL=http://127.0.0.1:3000 SHOPRO_MPLIVE_ON=0 # 租户ID 默认 1 -SHOPRO_TENANT_ID=1 +SHOPRO_TENANT_ID=162 diff --git a/pages.json b/pages.json index dc3120c..d13d3a8 100644 --- a/pages.json +++ b/pages.json @@ -116,6 +116,18 @@ "group": "物业管理" } }, + { + "path": "pages/index/switch-house", + "style": { + "navigationBarTitleText": "" + }, + "meta": { + "auth": false, + "sync": true, + "title": "切换房号", + "group": "物业管理" + } + }, { "path": "pages/index/auth-form", "style": { @@ -636,7 +648,18 @@ "group": "物业管理" } }, - { + { + "path": "income/index", + "style": { + "navigationBarTitleText": "收益公示" + }, + "meta": { + "sync": true, + "title": "收益公示", + "group": "物业管理" + } + }, + { "path": "knowledge/classroom", "style": { "navigationBarTitleText": "知识课堂" diff --git a/pages/commission/message.vue b/pages/commission/message.vue new file mode 100644 index 0000000..3827a5f --- /dev/null +++ b/pages/commission/message.vue @@ -0,0 +1,160 @@ + + + + + + diff --git a/pages/community/dynamics.vue b/pages/community/dynamics.vue new file mode 100644 index 0000000..899840e --- /dev/null +++ b/pages/community/dynamics.vue @@ -0,0 +1,290 @@ + + + + + + diff --git a/pages/index/auth-form.vue b/pages/index/auth-form.vue index 6f8558c..46572d5 100644 --- a/pages/index/auth-form.vue +++ b/pages/index/auth-form.vue @@ -6,26 +6,26 @@ 小区名称 - - 融侨馨苑 + + {{ state.form.communityName || '请选择小区' }} - + 序号 - + 号楼 - + 单元 - + @@ -54,7 +54,7 @@ 与产权人关系 - {{ state.form.relation || '请输入' }} + {{ state.form.relationType || '请输入' }} @@ -79,7 +79,7 @@ 手机号 性别 - {{ state.form.gender || '请选择' }} + {{ state.form.sex === 1 ? '男' : state.form.sex === 2 ? '女' : '请选择' }} @@ -145,13 +145,32 @@ 上传附件 - + + + + 📁 选择文件 + + + + 上传人脸照片 + + + + + + + + 📁 + + 选择照片 + + @@ -163,33 +182,152 @@ @@ -513,6 +704,18 @@ const handleSubmit = () => { color: #999999; } } + + .upload-preview { + width: 180rpx; + height: 180rpx; + border-radius: 16rpx; + overflow: hidden; + + .preview-img { + width: 100%; + height: 100%; + } + } } /* 底部按钮 */ diff --git a/pages/index/cart.vue b/pages/index/cart.vue index 8f02d5d..bc88036 100644 --- a/pages/index/cart.vue +++ b/pages/index/cart.vue @@ -246,13 +246,6 @@ cart.delete(state.selectedIds); } - function getCartList() { - cart.getList(); - } - - onShow(() => { - getCartList(); - }); diff --git a/pages/index/switch-house.vue b/pages/index/switch-house.vue new file mode 100644 index 0000000..ea149cb --- /dev/null +++ b/pages/index/switch-house.vue @@ -0,0 +1,260 @@ + + + + + + diff --git a/pages/index/user.vue b/pages/index/user.vue index a85750e..4709b6e 100644 --- a/pages/index/user.vue +++ b/pages/index/user.vue @@ -95,6 +95,7 @@ import { ref, onMounted } from 'vue'; import { onShow } from '@dcloudio/uni-app'; import sheep from '@/sheep'; +import AuthUtil from '@/sheep/api/member/auth'; // 用户信息 const userInfo = ref({ @@ -131,10 +132,15 @@ const handleLogout = () => { uni.showModal({ title: '提示', content: '确定要退出登录吗?', - success: (res) => { + success: async (res) => { if (res.confirm) { - sheep.$store('user').logout(); - sheep.$router.go('/pages/index/login-page'); + const { code } = await AuthUtil.logout(); + if (code === 0) { + sheep.$store('user').logout(); + sheep.$router.go('/pages/index/login-page'); + } else { + uni.showToast({ title: '退出登录失败', icon: 'none' }); + } } } }); diff --git a/pages/notice/detail.vue b/pages/notice/detail.vue new file mode 100644 index 0000000..657c4f5 --- /dev/null +++ b/pages/notice/detail.vue @@ -0,0 +1,411 @@ + + + + + + diff --git a/pages/sub/income/index.vue b/pages/sub/income/index.vue new file mode 100644 index 0000000..dd72182 --- /dev/null +++ b/pages/sub/income/index.vue @@ -0,0 +1,549 @@ + + + + + + diff --git a/pages/sub/staff/index.vue b/pages/sub/staff/index.vue index 0887046..15287db 100644 --- a/pages/sub/staff/index.vue +++ b/pages/sub/staff/index.vue @@ -9,34 +9,49 @@ - - - - + + + + + 物业人员 + + + + + + {{ statsInfo.buildingName }} - 物业人员 - - - - 总人数 - {{ statsInfo.total }} - + + + 总人数 + {{ statsInfo.total }} + - - - - {{ cat.name }} - {{ cat.count }} + + + + {{ cat.name }} + {{ cat.count }} + + + + + + + + + 人员信息 + @@ -51,9 +66,6 @@ - - - 人员信息 @@ -81,10 +93,7 @@ 电话: - {{ item.phone }} - - - + {{ item.phone }} @@ -236,27 +245,68 @@ function callPhone(phone) { /* ==================== 统计卡片 ==================== */ .stats-card { margin: 24rpx 32rpx 24rpx; - padding: 28rpx 32rpx 24rpx; - background: linear-gradient(135deg, #EBF4FF 0%, #D6E7FF 100%); + padding: 28rpx 0 24rpx 32rpx; border-radius: 24rpx; + display: flex; + align-items: flex-start; + justify-content: space-between; + position: relative; + overflow: hidden; + min-height: 320rpx; - /* 卡片顶部:小区名+标签 */ + /* 背景图 */ + .stats-bg { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 0; + } + + /* 右侧叠加背景图 */ + .right-bg { + position: absolute; + top: 50%; + right: 24rpx; + transform: translateY(-50%); + width: 160rpx; + height: 180rpx; + z-index: 1; + } + + /* 右上角标签 */ + .corner-badge { + position: absolute; + top: 0; + right: 30rpx; + color: #FFFFFF; + font-size: 28rpx; + font-weight: 500; + padding: 12rpx 28rpx; + border-radius: 0 24rpx 0 24rpx; + z-index: 2; + } + + /* 左侧内容区 */ + .card-left { + flex: 1; + min-width: 0; + position: relative; + z-index: 1; + } + + /* 卡片顶部:小区名 */ .card-top { display: flex; align-items: center; - justify-content: space-between; margin-bottom: 20rpx; - } - - /* 小区信息 */ - .building-info { - display: flex; - align-items: center; .building-icon { - font-size: 36rpx; - color: #333333; + width: 40rpx; + height: 40rpx; margin-right: 12rpx; + flex-shrink: 0; } .building-name { @@ -266,35 +316,25 @@ function callPhone(phone) { } } - /* 物业人员标签 */ - .staff-badge { - background: linear-gradient(135deg, #5B9BFF 0%, #3D7BD9 100%); - color: #FFFFFF; - font-size: 26rpx; - font-weight: 500; - padding: 8rpx 24rpx; - border-radius: 24rpx 0 24rpx 0; - } - - /* 总人数行 */ + /* 总人数行 - 纵向排列 */ .total-row { display: flex; - align-items: baseline; - margin-bottom: 24rpx; + flex-direction: column; + margin-bottom: 20rpx; .total-label { font-size: 26rpx; color: #666666; - margin-right: 16rpx; + margin-bottom: 8rpx; } .total-count { - font-size: 48rpx; + font-size: 52rpx; font-weight: 700; color: #FA7E49; /* 橙色主题 */ .total-unit { - font-size: 28rpx; + font-size: 30rpx; font-weight: 400; color: #FA7E49; margin-left: 4rpx; @@ -305,7 +345,8 @@ function callPhone(phone) { /* 分类统计行 */ .category-row { display: flex; - justify-content: space-between; + justify-content: space-around; + gap: 32rpx; .category-item { display: flex; @@ -313,9 +354,9 @@ function callPhone(phone) { align-items: center; .cat-name { - font-size: 26rpx; + font-size: 24rpx; color: #666666; - margin-bottom: 8rpx; + margin-bottom: 10rpx; } .cat-count { @@ -325,6 +366,18 @@ function callPhone(phone) { } } } + + /* 右侧区域 */ + .card-right { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + padding-right: 24rpx; + padding-left: 16rpx; + position: relative; + z-index: 1; + } } /* ==================== 分类Tab栏 ==================== */ @@ -341,6 +394,7 @@ function callPhone(phone) { padding: 20rpx 0; margin-right: 40rpx; position: relative; + flex-shrink: 0; /* 防止Tab项被压缩 */ &:last-child { margin-right: 0; @@ -397,13 +451,14 @@ function callPhone(phone) { .staff-item { display: flex; padding: 28rpx 0; + position: relative; - /* 分割线(非第一项) */ - &:not(:last-child)::after { + /* 分割线 */ + &::after { content: ''; position: absolute; bottom: 0; - left: 112rpx; + left: 0; right: 0; height: 1rpx; background-color: #F0F0F0; @@ -442,6 +497,9 @@ function callPhone(phone) { font-weight: 500; margin-right: 24rpx; } + .name-text{ + margin-right:100rpx; + } } /* 电话行 */ @@ -478,17 +536,23 @@ function callPhone(phone) { } } - /* 职责描述行 */ + /* 职责描述行 - 标签与内容同行换行 */ .duty-row { + display: flex; + align-items: flex-start; + .duty-label { font-size: 26rpx; color: #999999; + flex-shrink: 0; } .duty-text { + flex: 1; font-size: 26rpx; color: #666666; line-height: 1.6; + word-break: break-all; } } } diff --git a/sheep/api/community/community.js b/sheep/api/community/community.js new file mode 100644 index 0000000..065c3cf --- /dev/null +++ b/sheep/api/community/community.js @@ -0,0 +1,29 @@ +import request from '@/sheep/request'; + +const CommunityApi = { + // 获取小区简单列表 + getSimpleList: () => { + return request({ + url: '/community/community/simple-list', + method: 'GET', + custom: { + showLoading: true, + auth: true, + }, + }); + }, + // 获取小区房屋树 + getHouseTree: (communityId) => { + return request({ + url: '/community/house/tree', + method: 'GET', + params: { communityId }, + custom: { + showLoading: true, + auth: true, + }, + }); + }, +}; + +export default CommunityApi; diff --git a/sheep/api/community/memberHouse.js b/sheep/api/community/memberHouse.js new file mode 100644 index 0000000..e969446 --- /dev/null +++ b/sheep/api/community/memberHouse.js @@ -0,0 +1,56 @@ +import request from '@/sheep/request'; + +const MemberHouseApi = { + // 获取我的房屋认证列表 + getMyList: () => { + return request({ + url: '/community/member-house/my-list', + method: 'GET', + custom: { + showLoading: true, + auth: true, + }, + }); + }, + // 获取小区房屋树 + getCommunityTree: () => { + return request({ + url: '/community/member-house/community-tree', + method: 'GET', + custom: { + showLoading: true, + auth: true, + }, + }); + }, + // 切换当前房屋 + switchHouse: (data) => { + return request({ + url: '/community/member-house/switch-house', + method: 'POST', + data, + custom: { + showLoading: true, + auth: true, + showSuccess: true, + successMsg: '切换成功', + }, + }); + }, + // 新增业主认证信息 + create: (data) => { + return request({ + url: '/community/member-house/create', + method: 'POST', + data, + custom: { + showLoading: true, + auth: true, + showSuccess: true, + successMsg: '提交成功', + }, + }); + }, +}; + +export default MemberHouseApi; diff --git a/sheep/platform/provider/alipay/miniProgram.js b/sheep/platform/provider/alipay/miniProgram.js index b22457a..534e28f 100644 --- a/sheep/platform/provider/alipay/miniProgram.js +++ b/sheep/platform/provider/alipay/miniProgram.js @@ -8,7 +8,7 @@ let subscribeEventList = [] function load() { checkUpdate() - getSubscribeTemplate() + // getSubscribeTemplate() // 已移除:不需要获取订阅消息模板列表 } // ================= 登录相关逻辑=================== diff --git a/sheep/platform/provider/wechat/miniProgram.js b/sheep/platform/provider/wechat/miniProgram.js index 1fe1809..6271769 100644 --- a/sheep/platform/provider/wechat/miniProgram.js +++ b/sheep/platform/provider/wechat/miniProgram.js @@ -10,7 +10,7 @@ let subscribeEventList = []; // 加载微信小程序 function load() { checkUpdate(); - getSubscribeTemplate(); + // getSubscribeTemplate(); // 已移除:不需要获取订阅消息模板列表 } // 微信小程序静默授权登陆 diff --git a/sheep/store/app.js b/sheep/store/app.js index b84c1a9..b843295 100644 --- a/sheep/store/app.js +++ b/sheep/store/app.js @@ -67,12 +67,12 @@ const app = defineStore({ await adaptTenant(); // 加载装修配置 - await adaptTemplate(this.template, templateId); + // await adaptTemplate(this.template, templateId); // TODO 芋艿:【初始化优化】未来支持管理后台可配;对应 https://api.shopro.sheepjs.com/shop/api/init if (true) { this.info = { - name: '芋道商城', + name: '物业管理', logo: 'https://static.iocoder.cn/ruoyi-vue-pro-logo.png', version: '2026.01', copyright: '全部开源,个人与企业可 100% 免费使用', @@ -172,7 +172,7 @@ const adaptTenant = async () => { userStore.setToken(); // 设置新的 tenantId 到本地存储 - uni.setStorageSync('tenant-id', newTenantId); + uni.setStorageSync('tenant-id', '162'||newTenantId); console.log('租户 ID 已更新:', `${oldTenantId} -> ${newTenantId}`); } } catch (error) { diff --git a/sheep/store/user.js b/sheep/store/user.js index fceb584..eea182f 100644 --- a/sheep/store/user.js +++ b/sheep/store/user.js @@ -16,6 +16,11 @@ const defaultUserInfo = { gender: 0, // 性别 mobile: '', // 手机号 point: 0, // 积分 + currentCommunityId: null, // 当前小区ID + currentCommunityName: '', // 当前小区名称 + currentHouseId: null, // 当前房屋ID + currentHouseAddress: '', // 当前房屋完整地址 + isHouseAuth: false, // 是否已完成房屋认证(有认证记录) }; // 默认钱包信息 @@ -110,8 +115,8 @@ const user = defineStore({ // 获取最新信息 await this.getInfo(); - this.getWallet(); - this.getNumData(); + // this.getWallet(); + // this.getNumData(); return this.userInfo; }, @@ -132,17 +137,17 @@ const user = defineStore({ await this.updateUserData(); // 加载购物车 - cart().getList(); + // cart().getList(); // 登录后设置全局分享参数 $share.getShareInfo(); // 提醒绑定手机号 - if (app().platform.bind_mobile && !this.userInfo.mobile) { - showAuthModal('changeMobile'); - } + // if (app().platform.bind_mobile && !this.userInfo.mobile) { + // showAuthModal('changeMobile'); + // } // 绑定推广员 - $share.bindBrokerageUser(); + // $share.bindBrokerageUser(); }, // 登出系统 diff --git a/static/img/jr-icon1.png b/static/img/jr-icon1.png new file mode 100644 index 0000000..330feff Binary files /dev/null and b/static/img/jr-icon1.png differ diff --git a/static/img/jr-icon2.png b/static/img/jr-icon2.png new file mode 100644 index 0000000..177c97e Binary files /dev/null and b/static/img/jr-icon2.png differ diff --git a/static/img/jr-icon3.png b/static/img/jr-icon3.png new file mode 100644 index 0000000..0eeca2a Binary files /dev/null and b/static/img/jr-icon3.png differ diff --git a/static/img/jr-icon4.png b/static/img/jr-icon4.png new file mode 100644 index 0000000..a6f3449 Binary files /dev/null and b/static/img/jr-icon4.png differ diff --git a/static/img/wy-icon1.png b/static/img/wy-icon1.png new file mode 100644 index 0000000..2365702 Binary files /dev/null and b/static/img/wy-icon1.png differ diff --git a/static/img/wy-icon2.png b/static/img/wy-icon2.png new file mode 100644 index 0000000..5952c51 Binary files /dev/null and b/static/img/wy-icon2.png differ diff --git a/static/img/wy-icon3.png b/static/img/wy-icon3.png new file mode 100644 index 0000000..8254941 Binary files /dev/null and b/static/img/wy-icon3.png differ