From b8ea8620f08e4d8e6bb853de775eb09b2d252e15 Mon Sep 17 00:00:00 2001 From: Fox-33 <1466778434@qq.com> Date: Fri, 26 Sep 2025 13:27:22 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=8E=A5=E5=8F=A3=E5=AF=B9=E6=8E=A5;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/api.js | 4 +- api/fetch.js | 4 +- api/http.js | 8 +- api/model/image.js | 2 + api/model/partner.js | 5 + components/base/servicePopup.vue | 116 ++++++++++++++++++++++++ components/growing/recordsView.vue | 2 +- components/growing/userCard.vue | 22 ++--- components/home/pictureLiveView.vue | 10 +- components/product/productCard.vue | 5 - pages.json | 3 +- pages/index/category.vue | 4 - pages/index/center.vue | 24 ++++- pages/index/growing.vue | 36 ++++---- pages/index/partner.vue | 40 ++++++-- pages_order/auth/agreementConfirmPopup.vue | 4 +- pages_order/auth/roleChoose.vue | 4 + pages_order/auth/wxLogin.vue | 6 +- pages_order/center/orderCard.vue | 14 ++- pages_order/comment/commentCard.vue | 2 - pages_order/comment/recordFormPopup.vue | 12 --- pages_order/components/formInput.vue | 5 + pages_order/growing/achievement/index.vue | 60 +++++++++--- pages_order/growing/achievement/recordsView.vue | 2 +- pages_order/growing/activity/index.vue | 10 +- pages_order/growing/activity/markList.vue | 93 ++++--------------- pages_order/growing/activity/markPopup.vue | 31 ++++--- pages_order/growing/activity/search.vue | 5 +- pages_order/live/formPopup.vue | 96 ++------------------ pages_order/live/index.vue | 39 ++++++-- pages_order/live/list.vue | 50 +++++----- pages_order/member/memberApplyCard.vue | 4 +- pages_order/member/memberBind.vue | 31 +++---- pages_order/member/memberCard.vue | 14 +-- pages_order/member/switch.vue | 62 +++++++++---- pages_order/message/card.vue | 2 +- pages_order/message/index.vue | 2 +- pages_order/order/components/productCard.vue | 1 - pages_order/order/orderConfirm/index.vue | 13 +-- pages_order/order/orderDetail/index.vue | 7 +- pages_order/order/orderList/index.vue | 9 +- pages_order/order/orderPay/index.vue | 13 +-- pages_order/partner/apply.vue | 45 +++++++-- pages_order/partner/withdraw.vue | 31 ++++++- pages_order/product/collectList.vue | 2 +- pages_order/product/productDetail.vue | 3 +- pages_order/product/search.vue | 31 ++++++- pages_order/traveler/travelerCard.vue | 1 - pages_order/traveler/travelerList.vue | 7 +- pages_order/traveler/travelerPopup.vue | 19 ++-- store/store.js | 11 ++- 51 files changed, 603 insertions(+), 423 deletions(-) create mode 100644 components/base/servicePopup.vue diff --git a/api/api.js b/api/api.js index 6ec7e2f..82f11a6 100644 --- a/api/api.js +++ b/api/api.js @@ -25,7 +25,7 @@ const config = { } -export function api(key, data, callback, loadingTitle) { +export function api(key, data, callback, loadingTitle, disabledToast) { let req = config[key] if (!req) { @@ -85,7 +85,7 @@ export function api(key, data, callback, loadingTitle) { } return http.http(req.url, data, callback, req.method, - loadingTitle || req.showLoading, loadingTitle || req.loadingTitle) + loadingTitle || req.showLoading, loadingTitle || req.loadingTitle, disabledToast) } diff --git a/api/fetch.js b/api/fetch.js index 87ed77c..f38091b 100644 --- a/api/fetch.js +++ b/api/fetch.js @@ -1,6 +1,6 @@ import api from './api.js' -const fetch = (key, data = {}, transform = true, loadingTitle) => { +const fetch = (key, data = {}, transform = true, loadingTitle, disabledToast = false) => { return new Promise((resolve, reject) => { const callback = (res) => { @@ -15,7 +15,7 @@ const fetch = (key, data = {}, transform = true, loadingTitle) => { } } - api(key, data, callback, loadingTitle) + api(key, data, callback, loadingTitle, disabledToast) }) } diff --git a/api/http.js b/api/http.js index 6c3da63..92efd3a 100644 --- a/api/http.js +++ b/api/http.js @@ -3,7 +3,7 @@ import Vue from 'vue' import utils from '../utils/utils.js' import store from '../store/store.js' -function http(uri, data, callback, method = 'GET', showLoading, title) { +function http(uri, data, callback, method = 'GET', showLoading, title, disabledToast) { if(showLoading){ uni.showLoading({ @@ -35,12 +35,10 @@ function http(uri, data, callback, method = 'GET', showLoading, title) { if(res.statusCode == 401 || res.data.message == '操作失败,token非法无效!' || res.data.message == '操作失败,用户不存在!'){ - store.commit('logout') console.error('登录过期'); + store.commit('clearUserInfo') utils.toLogin() - } - - if(res.statusCode == 200 && res.data.code != 200 + } else if(!disabledToast && res.statusCode == 200 && res.data.code != 200 && res.data.code != 902){ uni.showToast({ mask: true, diff --git a/api/model/image.js b/api/model/image.js index 8f4d99c..993b178 100644 --- a/api/model/image.js +++ b/api/model/image.js @@ -25,6 +25,8 @@ const api = { queryMarkmeList: { url: '/image/queryMarkmeList', method: 'GET', + limit : 500, + showLoading : true, }, } diff --git a/api/model/partner.js b/api/model/partner.js index 4b2fecd..e3c3fc5 100644 --- a/api/model/partner.js +++ b/api/model/partner.js @@ -9,6 +9,11 @@ const api = { limit : 500, showLoading : true, }, + // 合伙人-查询合伙人信息 + queryPartner: { + url: '/partner/queryPartner', + method: 'GET', + }, // 合伙人-邀请二维码 getInviteCode: { url: '/partner/getInviteCode', diff --git a/components/base/servicePopup.vue b/components/base/servicePopup.vue new file mode 100644 index 0000000..f5635eb --- /dev/null +++ b/components/base/servicePopup.vue @@ -0,0 +1,116 @@ + + + + + \ No newline at end of file diff --git a/components/growing/recordsView.vue b/components/growing/recordsView.vue index ce1d35e..e92bf16 100644 --- a/components/growing/recordsView.vue +++ b/components/growing/recordsView.vue @@ -17,7 +17,7 @@ {{ record.name }} - + diff --git a/components/growing/userCard.vue b/components/growing/userCard.vue index ba36cd5..f74fe37 100644 --- a/components/growing/userCard.vue +++ b/components/growing/userCard.vue @@ -16,13 +16,13 @@ - - {{ memberInfo.roleDesc || '' }} + + {{ info.roleDesc || '' }} - {{ memberInfo.nickName }} - {{ `ID:${memberInfo.id}` }} + {{ info.nickName || '' }} + {{ `ID:${info.id}` }} {{ medalCount }} @@ -34,7 +34,7 @@ - + @@ -69,16 +69,12 @@ }, computed: { - ...mapState(['memberInfo']), + ...mapState(['userInfo', 'memberInfo']), + info() { + return this.memberInfo || this.userInfo + }, }, methods: { - async getData() { - try { - await this.$fetch('queryMedalList', { pageNo: 1, pageSize: 1000, isLight: '1', }) - } catch (err) { - - } - }, onAdd() { this.$emit('addRecord') }, diff --git a/components/home/pictureLiveView.vue b/components/home/pictureLiveView.vue index b9288f7..b1e4c16 100644 --- a/components/home/pictureLiveView.vue +++ b/components/home/pictureLiveView.vue @@ -7,7 +7,6 @@ - + {{ userCenterData.noticeNum }} + + @@ -126,7 +130,7 @@ } }, computed: { - ...mapState(['userInfo', 'configList']), + ...mapState(['userInfo', 'userCenterData', 'configList']), isLogin() { return this.userInfo && this.userInfo.id } @@ -292,6 +296,22 @@ height: 40rpx; } } + + .right { + column-gap: 8rpx; + } + + .sup { + min-width: 32rpx; + height: 32rpx; + font-family: PingFang SC; + font-weight: 500; + font-size: 24rpx; + line-height: 1.3; + color: #FFFFFF; + background: #F53F3F; + border-radius: 32rpx; + } } } diff --git a/pages/index/growing.vue b/pages/index/growing.vue index 0d4f15d..4b0a85b 100644 --- a/pages/index/growing.vue +++ b/pages/index/growing.vue @@ -20,11 +20,11 @@ - + - + @@ -63,18 +63,17 @@ queryParams: { pageNo: 1, pageSize: 10, - // userId: '', + bindUserId: '', }, + mixinsListApi: '', medalList: [], medalCount: 0, } }, computed: { - ...mapState(['memberInfo']), - mixinsListApi() { - return 'queryExperienceList' - // todo - return this.queryParams.userId ? 'queryExperienceList' : '' + ...mapState(['userInfo', 'memberInfo']), + bindUserId() { + return this.memberInfo?.id || this.userInfo.id }, }, onLoad() { @@ -83,26 +82,27 @@ } }, onShow() { - // todo: set queryParams.userId by memberInfo - if (!this.memberInfo && this.userInfo.id) { - this.$store.commit('setMemberInfo', this.userInfo) - } - // this.queryParams.userId = this.memberInfo.id - // this.getData() - + console.log('bindUserId', this.bindUserId) + this.queryParams.bindUserId = this.bindUserId + this.mixinsListApi = this.queryParams.bindUserId ? 'queryExperienceList' : '' + if(uni.getStorageSync('token')){ this.fetchMedalList() + this.getData() } }, + onHide() { + this.mixinsListApi = '' + }, methods: { getDataThen(records) { this.list = records.map(item => { - const { id, activityTitle, activityId_dictText, image, createTime } = item + const { id, activityTitle, activityId_dictText, imageList, createTime } = item return { id, name: activityTitle || activityId_dictText || '', - image: image?.split?.(',') || [], + images: imageList?.split?.(',') || [], createTime } }) @@ -116,7 +116,7 @@ }, async fetchMedalList() { try { - const result = await this.$fetch('queryMedalList', { pageNo: 1, pageSize: 1000, isLight: '1', }) + const result = await this.$fetch('queryMedalList', { pageNo: 1, pageSize: 1000, isLight: '1', bindUserId: this.bindUserId }) const { records, total } = result this.medalList = records diff --git a/pages/index/partner.vue b/pages/index/partner.vue index b724c10..8acfd1f 100644 --- a/pages/index/partner.vue +++ b/pages/index/partner.vue @@ -16,7 +16,7 @@ - + {{ userInfo.roleDesc || '' }} @@ -65,12 +65,11 @@ - - + @@ -108,13 +107,18 @@ data() { return { advantages: ['收益高', '品类全', '到账快', '城市多'], - // todo: fetch - isPartner: true, - mixinsListApi: 'queryCommissionList', + partnerInfo: {}, + mixinsListApi: '', } }, computed: { ...mapState(['userCenterData']), + isPartner() { + // 审核状态status:0-审核中 1-已通过 2-未通过 + const { status } = this.partnerInfo + + return status == '1' + }, }, onLoad() { if(uni.getStorageSync('token')){ @@ -123,13 +127,29 @@ } }, onShow() { - // todo: refresh is partner? + if(uni.getStorageSync('token')){ + this.fetchPartner() + this.mixinsListApi = 'queryCommissionList' + console.log('onShow getData') + this.getData() + } + }, + // 下拉刷新 + async onPullDownRefresh() { + await this.fetchPartner() + uni.stopPullDownRefresh() }, methods: { + async fetchPartner() { + try { + const result = await this.$fetch('queryPartner') + this.partnerInfo = result || {} + } catch (err) { + + } + }, onApplyPartner() { - // todo: check - return - this.$utils.navigateTo(`/pages_order/partner/apply`) + this.$utils.navigateTo(`/pages_order/partner/apply?readonly=${this.isPartner ? 1 : 0}`) }, jumpToTeam() { this.$utils.navigateTo(`/pages_order/partner/team`) diff --git a/pages_order/auth/agreementConfirmPopup.vue b/pages_order/auth/agreementConfirmPopup.vue index 7063a47..15d723a 100644 --- a/pages_order/auth/agreementConfirmPopup.vue +++ b/pages_order/auth/agreementConfirmPopup.vue @@ -7,9 +7,9 @@ 在你使用 鸿宇研学生服务之前,请仔细阅读 - 《用户服务协议》 + 《用户服务协议》 和 - 《隐私政策》 + 《隐私政策》 如你同意该指引,请点击“同意“开始使用本小程序。 diff --git a/pages_order/auth/roleChoose.vue b/pages_order/auth/roleChoose.vue index bd91385..18b8aa1 100644 --- a/pages_order/auth/roleChoose.vue +++ b/pages_order/auth/roleChoose.vue @@ -48,6 +48,10 @@ }, async onConfirm() { try { + const params = { + role: this.role + } + await this.$fetch('updateInfo', params, false) uni.showToast({ diff --git a/pages_order/auth/wxLogin.vue b/pages_order/auth/wxLogin.vue index 46bdeef..f390119 100644 --- a/pages_order/auth/wxLogin.vue +++ b/pages_order/auth/wxLogin.vue @@ -24,11 +24,9 @@ 我已阅读并同意 - - 《服务协议》 + 《服务协议》 和 - - 《隐私政策》 + 《隐私政策》 diff --git a/pages_order/center/orderCard.vue b/pages_order/center/orderCard.vue index 3eccd94..d03fcbb 100644 --- a/pages_order/center/orderCard.vue +++ b/pages_order/center/orderCard.vue @@ -7,13 +7,20 @@ {{ item.label }} + + diff --git a/pages_order/traveler/travelerCard.vue b/pages_order/traveler/travelerCard.vue index 3f7e78a..0e072f5 100644 --- a/pages_order/traveler/travelerCard.vue +++ b/pages_order/traveler/travelerCard.vue @@ -115,7 +115,6 @@ title: '确认删除?', success : e => { if(e.confirm){ - // todo this.$emit('delete') } } diff --git a/pages_order/traveler/travelerList.vue b/pages_order/traveler/travelerList.vue index 33c0b52..47bb03d 100644 --- a/pages_order/traveler/travelerList.vue +++ b/pages_order/traveler/travelerList.vue @@ -65,8 +65,6 @@ this.list = records.map(item => { return { ...item, - // todo: transform periodId to type and type desc - type: 0, // 0-成人 1-青少年 2-儿童 isDefault: item.isDefault == '1' ? true : false } }) @@ -86,6 +84,11 @@ } }, async onDelete(id) { + uni.showToast({ + icon: 'none', + title: '该功能待对接接口', + }); + return uni.showToast({ icon: 'loading', diff --git a/pages_order/traveler/travelerPopup.vue b/pages_order/traveler/travelerPopup.vue index 6215571..4d34d5f 100644 --- a/pages_order/traveler/travelerPopup.vue +++ b/pages_order/traveler/travelerPopup.vue @@ -43,11 +43,11 @@ 我已阅读并同意 - - 《服务协议》 + 《服务协议》 和 - - 《隐私政策》 + 《隐私政策》 @@ -212,8 +210,8 @@ form: { name: null, cerNo: null, - periodId: 0, - sex: 0, + periodId: null, + sex: null, phone: null, wechat: null, school: null, @@ -328,9 +326,8 @@ this.form = { name: '', cerNo: '', - // todo: fetch default - periodId: 0, - sex: 0, + periodId: this.configList?.periodList?.[0]?.id || null, + sex: this.sexOptions?.[0]?.value, phone: '', wechat: '', school: '', diff --git a/store/store.js b/store/store.js index 4ae576a..acb20a7 100644 --- a/store/store.js +++ b/store/store.js @@ -18,6 +18,7 @@ const store = new Vuex.Store({ couponInfo: null, memberInfo: null, liveInfo: null, + markmeList: [], }, getters: { // 角色 true为水洗店 false为酒店 : 身份判断如果不需要,可以删除 @@ -143,6 +144,11 @@ const store = new Vuex.Store({ } }) }, + clearUserInfo(state) { + state.userInfo = {} + state.role = false + uni.removeStorageSync('token') + }, setTravelerList(state, data) { state.travelerList = data }, @@ -153,12 +159,15 @@ const store = new Vuex.Store({ state.couponInfo = data }, setMemberInfo(state, data) { + console.log('memberInfo', data) state.memberInfo = data }, setLiveInfo(state, data) { - console.log('liveInfo', data) state.liveInfo = data }, + setMarkmeList(state, data) { + state.markmeList = data + }, }, actions: { async collect(state, activityId) {