diff --git a/api/order/task.js b/api/order/task.js
index 313a0e7..7108696 100644
--- a/api/order/task.js
+++ b/api/order/task.js
@@ -1,10 +1,10 @@
import upload from '@/utils/upload'
import request from '@/utils/request'
-// 查询任务列表
+// 查询待领取任务列表
export function getTaskList(params) {
return request({
- url: '/applet/mall/task/list',
+ url: '/h5/mall/task/list',
headers: {
"isToken": true
},
@@ -13,10 +13,33 @@ export function getTaskList(params) {
})
}
-// 查询任务详情
+// 查询已领取任务列表
+export function getTaskListByUser(params) {
+ return request({
+ url: '/h5/mall/task/listByUser',
+ headers: {
+ "isToken": true
+ },
+ method: 'get',
+ params
+ })
+}
+
+// 查询待领取任务详情
export function getTaskDetail(params) {
return request({
- url: '/applet/mall/task/taskDetail/' + params,
+ url: '/h5/mall/task/taskDetail/' + params,
+ headers: {
+ "isToken": true
+ },
+ method: 'get',
+ })
+}
+
+// 查询待领取任务详情
+export function getTaskDetailUser(params) {
+ return request({
+ url: '/h5/mall/task/taskUserDetail/' + params,
headers: {
"isToken": true
},
@@ -27,7 +50,7 @@ export function getTaskDetail(params) {
// 接受任务
export function acceptTask(params) {
return request({
- url: '/applet/mall/task/acceptTask',
+ url: '/h5/mall/task/acceptTask',
headers: {
"isToken": true
},
@@ -39,11 +62,23 @@ export function acceptTask(params) {
// 提交任务
export function submitTask(data) {
return request({
- url: '/applet/mall/task/submitTask',
+ url: '/h5/mall/task/submitTask',
headers: {
"isToken": true
},
method: 'post',
data
})
-}
\ No newline at end of file
+}
+
+
+// 任务统计
+export function getTaskStat() {
+ return request({
+ url: '/h5/mall/task/taskStat',
+ headers: {
+ "isToken": true
+ },
+ method: 'get',
+ })
+}
diff --git a/doc/Group 1000001612.png b/doc/Group 1000001612.png
new file mode 100644
index 0000000..19fd784
Binary files /dev/null and b/doc/Group 1000001612.png differ
diff --git a/doc/Group 1000001612@2x.png b/doc/Group 1000001612@2x.png
new file mode 100644
index 0000000..9f17b75
Binary files /dev/null and b/doc/Group 1000001612@2x.png differ
diff --git a/doc/Group 1000001612@3x.png b/doc/Group 1000001612@3x.png
new file mode 100644
index 0000000..3fd2f1c
Binary files /dev/null and b/doc/Group 1000001612@3x.png differ
diff --git a/doc/Group 1000001821.png b/doc/Group 1000001821.png
new file mode 100644
index 0000000..6c15cc5
Binary files /dev/null and b/doc/Group 1000001821.png differ
diff --git a/doc/Group 1000001821@2x.png b/doc/Group 1000001821@2x.png
new file mode 100644
index 0000000..3dd63a3
Binary files /dev/null and b/doc/Group 1000001821@2x.png differ
diff --git a/doc/Group 1000001821@3x.png b/doc/Group 1000001821@3x.png
new file mode 100644
index 0000000..1024c90
Binary files /dev/null and b/doc/Group 1000001821@3x.png differ
diff --git a/doc/Group 1000001821_slices.zip b/doc/Group 1000001821_slices.zip
new file mode 100644
index 0000000..9fefc8f
Binary files /dev/null and b/doc/Group 1000001821_slices.zip differ
diff --git a/doc/wechat_2025-08-07_194518_960.png b/doc/wechat_2025-08-07_194518_960.png
new file mode 100644
index 0000000..1e56d36
Binary files /dev/null and b/doc/wechat_2025-08-07_194518_960.png differ
diff --git a/main.js b/main.js
index 6cb6945..0f91aab 100644
--- a/main.js
+++ b/main.js
@@ -23,6 +23,28 @@ Vue.mixin(share)
// 创建一个空的Vue实例作为事件中心
Vue.prototype.$eventHub = new Vue()
+Vue.prototype.uploadFilePromise = function(url) {
+ return new Promise((resolve, reject) => {
+ let a = uni.uploadFile({
+ url: 'https://store-test.catmdogd.com/test-api/h5/oss/upload',
+ filePath: url,
+ name: 'file',
+ formData: {
+ user: 'test'
+ },
+ success: (res) => {
+ setTimeout(() => {
+ if (res && res.data) {
+ let resData = JSON.parse(res.data);
+ resolve(resData.url);
+ }
+ reject("上传失败");
+ }, 1000)
+ }
+ });
+ })
+}
+
Vue.prototype.initGlobalData = function() {
Vue.prototype.$globalData = {
diff --git a/mixins/configList.js b/mixins/configList.js
index edc8205..8a38537 100644
--- a/mixins/configList.js
+++ b/mixins/configList.js
@@ -13,7 +13,7 @@ export default {
}
},
computed: {
- ...mapState(['configList', 'userInfo', 'buyInfo', 'price_config']),
+ ...mapState(['configList', 'userInfo', 'buyInfo', 'price_config', 'configMap']),
// currentPagePath() {
// const pages = getCurrentPages();
// const currentPage = pages[pages.length - 1];
diff --git a/pages.json b/pages.json
index 5fe2fe7..58be278 100644
--- a/pages.json
+++ b/pages.json
@@ -454,6 +454,15 @@
"enablePullDownRefresh": false,
"navigationBarTextStyle": "white"
}
+ },
+ {
+ "path": "newUser/index",
+ "style": {
+ "navigationBarTitleText": "新用户专享",
+ "navigationBarBackgroundColor": "#FFBF60",
+ "enablePullDownRefresh": false,
+ "navigationBarTextStyle": "white"
+ }
}
]
}
diff --git a/pages/components/NewUserCoupon.vue b/pages/components/NewUserCoupon.vue
index f2fdc1a..241cd0f 100644
--- a/pages/components/NewUserCoupon.vue
+++ b/pages/components/NewUserCoupon.vue
@@ -1,120 +1,151 @@
-
-
-
-
-
- 立即领取
-
-
- ×
-
+
+
+
+
+
+
+
+
+
+
+
+ 立即领取
+
+
+ ×
+
+
-
\ No newline at end of file
diff --git a/pages/index.vue b/pages/index.vue
index c7207c0..c4ffb26 100644
--- a/pages/index.vue
+++ b/pages/index.vue
@@ -1,7 +1,7 @@
-
+
@@ -389,16 +389,8 @@
},
mounted() {
this.getCalendarDate();
- this.checkNewUser();
},
methods: {
- checkNewUser() {
- const isFirstVisit = !uni.getStorageSync('hasVisited');
- if (isFirstVisit) {
- this.isNewUser = true;
- uni.setStorageSync('hasVisited', true);
- }
- },
closeNewUserPopup() {
this.isNewUser = false;
},
@@ -668,8 +660,18 @@
getCouponListAuth() {
getCouponList().then(res => {
if (res.code == 200) {
- this.couponData.push(res.data[0])
- console.log("this.couponData", this.couponData)
+
+ for (let index = 0; index < res.data.length; index++) {
+ const element = res.data[index];
+ if(element.sendType == 'newUser'){
+ this.couponData = [element]
+ this.isNewUser = true
+ this.$store.commit('setNewUserCoupon', element)
+ return
+ }
+ }
+
+ this.couponData = [res.data[0]]
} else {
this.$modal.showToast('获取优惠券失败')
}
@@ -852,6 +854,8 @@
onShow() {
if (!getToken() || !getOpenIdKey()) {
this.login()
+ }else {
+ this.getCouponListAuth()
}
if(this.$globalData.mainSku.length < 1 || !this.$globalData.mainSku[0].price){
// 获取主产品
@@ -870,6 +874,8 @@
if(this.$globalData.newOrderData.companionLevel) {
this.companionLevel = this.$globalData.newOrderData.companionLevel
}
+
+ this.$store.commit('getUserInfo')
// 获取周边伴宠师数据
this.getCompanionList();
diff --git a/pages_order/auth/login.vue b/pages_order/auth/login.vue
index 743c1b0..0c52228 100644
--- a/pages_order/auth/login.vue
+++ b/pages_order/auth/login.vue
@@ -1,19 +1,28 @@
-
-
+
+
+
+
+
-
-
+
+
+
+
我已阅读并同意猫爸狗妈
@@ -25,19 +34,17 @@
+
+
+
+
-
-
-
-
-
+
+
\ No newline at end of file
diff --git a/pages_order/components/order/CompanionSelectPopup.vue b/pages_order/components/order/CompanionSelectPopup.vue
index 2a3681b..841113d 100644
--- a/pages_order/components/order/CompanionSelectPopup.vue
+++ b/pages_order/components/order/CompanionSelectPopup.vue
@@ -187,4 +187,4 @@ export default {
}
}
}
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/pages_order/newUser/index.vue b/pages_order/newUser/index.vue
new file mode 100644
index 0000000..a475007
--- /dev/null
+++ b/pages_order/newUser/index.vue
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ isReceived ? '立即使用' : '立即领取' }}
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages_order/task/taskDetail.vue b/pages_order/task/taskDetail.vue
index 39aa17d..81ad582 100644
--- a/pages_order/task/taskDetail.vue
+++ b/pages_order/task/taskDetail.vue
@@ -1,430 +1,422 @@
-
-
-
-
-
-
- 任务进度
-
-
-
-
-
-
+
+
+
+
+ 任务进度
+
+
+
+
+
+
-
-
+
-
-
+
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages_order/task/taskList.vue b/pages_order/task/taskList.vue
index 62cce56..e5e0a3d 100644
--- a/pages_order/task/taskList.vue
+++ b/pages_order/task/taskList.vue
@@ -1,407 +1,394 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{item.title}}
- {{item.description}}
- 任务截止日期: {{item.deadline}}
-
-
-
-
-
-
- 暂无待接受任务
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{item.title}}
- {{item.description}}
- 任务截止日期: {{item.deadline}}
-
-
-
-
-
-
-
- 暂无已接收任务
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.title }}
+ 主题:{{ item.theme }}
+ 任务截止日期: {{ item.endTime }}
+
+
+
+
+
+
+ 暂无待接受任务
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.title }}
+ 主题:{{ item.theme }}
+ 任务截止日期: {{ item.endTime }}
+
+
+
+
+
+
+ 暂无已接收任务
+
+
+
\ No newline at end of file
diff --git a/pages_order/task/taskUpload.vue b/pages_order/task/taskUpload.vue
index 58140be..02e59ab 100644
--- a/pages_order/task/taskUpload.vue
+++ b/pages_order/task/taskUpload.vue
@@ -1,363 +1,431 @@
-
-
-
-
-
-
- 审核未通过原因:
- {{taskInfo.examineText || '暂无驳回原因'}}
-
-
-
-
-
-
- 笔记/视频链接
-
-
-
-
-
-
-
- 证明截图
- 请上传任务完成的截图证明,例如发布成功的截图
-
-
-
-
-
-
-
- 提交审核
-
-
-
+
+
+
+
+
+ ⚠
+
+ 拒绝原因:{{taskInfo.rejectTxt}}
+
+
+
+
+ ⏳
+
+ 任务审核中,请耐心等待审核结果
+
+
+
+
+ ✅
+
+ 任务已审核通过
+
+
+
+
+
+
+
+
+ 笔记链接
+
+
+
+
+
+
+
+ 笔记截图
+
+
+
+
+
+
+
+ 提交审核
+
+
+
-
\ No newline at end of file
diff --git a/store/index.js b/store/index.js
index 46bc2d1..6296584 100644
--- a/store/index.js
+++ b/store/index.js
@@ -12,6 +12,7 @@ const store = new Vuex.Store({
state : {
price_config : {},
configList : {},
+ configMap : {},
position : {},//用户选择的定位信息
buyInfo : {
teacher : null,//用户选择的购买老师
@@ -21,6 +22,8 @@ const store = new Vuex.Store({
memberRate : 1,
//技师等级规则列表
teacherLevelList : [],
+ //新人优惠劵
+ NewUserCoupon : {},
},
mutations : {
// 初始化配置
@@ -45,6 +48,9 @@ const store = new Vuex.Store({
res.forEach(n => {
configList[n.paramCode] = n.paramValueText;
configList[n.paramCode + '_keyValue'] = n.keyValue;
+
+ state.configMap[n.paramCode] = n;
+
if(n.paramCode == 'price_config'){
state.price_config = JSON.parse(n.paramValueText)
@@ -68,6 +74,9 @@ const store = new Vuex.Store({
setUserInfo(state, userInfo){
state.userInfo = userInfo;
},
+ setNewUserCoupon(state, coupon){
+ state.NewUserCoupon = coupon
+ },
getUserInfo(state){
getPersonalInfo().then(res=>{
if(res&&(res.id || res.id === 0)){