猫妈狗爸伴宠师小程序前端代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

196 lines
5.3 KiB

fix(订单管理): 修复宠物档案跳转缺少订单ID的问题 修复订单详情页跳转宠物档案页面时未传递orderId参数的问题 ``` ```msg refactor(认证考试): 重构考试答案提交逻辑 将单个题目提交改为批量提交,优化考试流程: 1. 基础考试和培训考试都改为最后统一提交答案 2. 添加加载状态提示 3. 使用Promise.all处理并发请求 ``` ```msg fix(认证考试): 修复考试完成状态判断逻辑 修改answeBaseIsFinish和answeTrainIsFinish接口的返回判断逻辑,从检查code改为检查data字段 ``` ```msg feat(认证考试): 新增重新考试和成为伴宠师接口 1. 添加retakeExam和appletUsersTeacher接口 2. 在错误详情页添加重新考试功能 3. 在考试完成页添加成为伴宠师功能 ``` ```msg style(时间轴组件): 优化操作按钮布局 1. 添加按钮间距(gap) 2. 使用flex:1使按钮等宽 3. 根据状态显示不同按钮文本 4. 添加serviceBtn属性控制档案按钮显示 ``` ```msg refactor(订单弹窗): 重构服务档案弹窗组件 1. 使用timelineService组件替代原有实现 2. 简化数据结构处理 3. 添加状态判断逻辑 4. 优化弹窗标题和样式 ``` ```msg fix(表单验证): 添加认证考试结束页表单验证 1. 添加姓名、电话、地址的必填验证 2. 添加格式验证(电话格式、姓名格式) 3. 添加长度验证 4. 添加错误状态样式 5. 优化错误提示体验 ``` ```msg refactor(工作台): 重构伴宠师申请流程 1. 优化申请条件判断逻辑 2. 添加用户状态检查 3. 完善考试状态跳转逻辑 4. 统一使用store获取用户信息
4 days ago
fix(订单管理): 修复宠物档案跳转缺少订单ID的问题 修复订单详情页跳转宠物档案页面时未传递orderId参数的问题 ``` ```msg refactor(认证考试): 重构考试答案提交逻辑 将单个题目提交改为批量提交,优化考试流程: 1. 基础考试和培训考试都改为最后统一提交答案 2. 添加加载状态提示 3. 使用Promise.all处理并发请求 ``` ```msg fix(认证考试): 修复考试完成状态判断逻辑 修改answeBaseIsFinish和answeTrainIsFinish接口的返回判断逻辑,从检查code改为检查data字段 ``` ```msg feat(认证考试): 新增重新考试和成为伴宠师接口 1. 添加retakeExam和appletUsersTeacher接口 2. 在错误详情页添加重新考试功能 3. 在考试完成页添加成为伴宠师功能 ``` ```msg style(时间轴组件): 优化操作按钮布局 1. 添加按钮间距(gap) 2. 使用flex:1使按钮等宽 3. 根据状态显示不同按钮文本 4. 添加serviceBtn属性控制档案按钮显示 ``` ```msg refactor(订单弹窗): 重构服务档案弹窗组件 1. 使用timelineService组件替代原有实现 2. 简化数据结构处理 3. 添加状态判断逻辑 4. 优化弹窗标题和样式 ``` ```msg fix(表单验证): 添加认证考试结束页表单验证 1. 添加姓名、电话、地址的必填验证 2. 添加格式验证(电话格式、姓名格式) 3. 添加长度验证 4. 添加错误状态样式 5. 优化错误提示体验 ``` ```msg refactor(工作台): 重构伴宠师申请流程 1. 优化申请条件判断逻辑 2. 添加用户状态检查 3. 完善考试状态跳转逻辑 4. 统一使用store获取用户信息
4 days ago
fix(订单管理): 修复宠物档案跳转缺少订单ID的问题 修复订单详情页跳转宠物档案页面时未传递orderId参数的问题 ``` ```msg refactor(认证考试): 重构考试答案提交逻辑 将单个题目提交改为批量提交,优化考试流程: 1. 基础考试和培训考试都改为最后统一提交答案 2. 添加加载状态提示 3. 使用Promise.all处理并发请求 ``` ```msg fix(认证考试): 修复考试完成状态判断逻辑 修改answeBaseIsFinish和answeTrainIsFinish接口的返回判断逻辑,从检查code改为检查data字段 ``` ```msg feat(认证考试): 新增重新考试和成为伴宠师接口 1. 添加retakeExam和appletUsersTeacher接口 2. 在错误详情页添加重新考试功能 3. 在考试完成页添加成为伴宠师功能 ``` ```msg style(时间轴组件): 优化操作按钮布局 1. 添加按钮间距(gap) 2. 使用flex:1使按钮等宽 3. 根据状态显示不同按钮文本 4. 添加serviceBtn属性控制档案按钮显示 ``` ```msg refactor(订单弹窗): 重构服务档案弹窗组件 1. 使用timelineService组件替代原有实现 2. 简化数据结构处理 3. 添加状态判断逻辑 4. 优化弹窗标题和样式 ``` ```msg fix(表单验证): 添加认证考试结束页表单验证 1. 添加姓名、电话、地址的必填验证 2. 添加格式验证(电话格式、姓名格式) 3. 添加长度验证 4. 添加错误状态样式 5. 优化错误提示体验 ``` ```msg refactor(工作台): 重构伴宠师申请流程 1. 优化申请条件判断逻辑 2. 添加用户状态检查 3. 完善考试状态跳转逻辑 4. 统一使用store获取用户信息
4 days ago
fix(订单管理): 修复宠物档案跳转缺少订单ID的问题 修复订单详情页跳转宠物档案页面时未传递orderId参数的问题 ``` ```msg refactor(认证考试): 重构考试答案提交逻辑 将单个题目提交改为批量提交,优化考试流程: 1. 基础考试和培训考试都改为最后统一提交答案 2. 添加加载状态提示 3. 使用Promise.all处理并发请求 ``` ```msg fix(认证考试): 修复考试完成状态判断逻辑 修改answeBaseIsFinish和answeTrainIsFinish接口的返回判断逻辑,从检查code改为检查data字段 ``` ```msg feat(认证考试): 新增重新考试和成为伴宠师接口 1. 添加retakeExam和appletUsersTeacher接口 2. 在错误详情页添加重新考试功能 3. 在考试完成页添加成为伴宠师功能 ``` ```msg style(时间轴组件): 优化操作按钮布局 1. 添加按钮间距(gap) 2. 使用flex:1使按钮等宽 3. 根据状态显示不同按钮文本 4. 添加serviceBtn属性控制档案按钮显示 ``` ```msg refactor(订单弹窗): 重构服务档案弹窗组件 1. 使用timelineService组件替代原有实现 2. 简化数据结构处理 3. 添加状态判断逻辑 4. 优化弹窗标题和样式 ``` ```msg fix(表单验证): 添加认证考试结束页表单验证 1. 添加姓名、电话、地址的必填验证 2. 添加格式验证(电话格式、姓名格式) 3. 添加长度验证 4. 添加错误状态样式 5. 优化错误提示体验 ``` ```msg refactor(工作台): 重构伴宠师申请流程 1. 优化申请条件判断逻辑 2. 添加用户状态检查 3. 完善考试状态跳转逻辑 4. 统一使用store获取用户信息
4 days ago
2 months ago
2 months ago
2 months ago
fix(订单管理): 修复宠物档案跳转缺少订单ID的问题 修复订单详情页跳转宠物档案页面时未传递orderId参数的问题 ``` ```msg refactor(认证考试): 重构考试答案提交逻辑 将单个题目提交改为批量提交,优化考试流程: 1. 基础考试和培训考试都改为最后统一提交答案 2. 添加加载状态提示 3. 使用Promise.all处理并发请求 ``` ```msg fix(认证考试): 修复考试完成状态判断逻辑 修改answeBaseIsFinish和answeTrainIsFinish接口的返回判断逻辑,从检查code改为检查data字段 ``` ```msg feat(认证考试): 新增重新考试和成为伴宠师接口 1. 添加retakeExam和appletUsersTeacher接口 2. 在错误详情页添加重新考试功能 3. 在考试完成页添加成为伴宠师功能 ``` ```msg style(时间轴组件): 优化操作按钮布局 1. 添加按钮间距(gap) 2. 使用flex:1使按钮等宽 3. 根据状态显示不同按钮文本 4. 添加serviceBtn属性控制档案按钮显示 ``` ```msg refactor(订单弹窗): 重构服务档案弹窗组件 1. 使用timelineService组件替代原有实现 2. 简化数据结构处理 3. 添加状态判断逻辑 4. 优化弹窗标题和样式 ``` ```msg fix(表单验证): 添加认证考试结束页表单验证 1. 添加姓名、电话、地址的必填验证 2. 添加格式验证(电话格式、姓名格式) 3. 添加长度验证 4. 添加错误状态样式 5. 优化错误提示体验 ``` ```msg refactor(工作台): 重构伴宠师申请流程 1. 优化申请条件判断逻辑 2. 添加用户状态检查 3. 完善考试状态跳转逻辑 4. 统一使用store获取用户信息
4 days ago
fix(订单管理): 修复宠物档案跳转缺少订单ID的问题 修复订单详情页跳转宠物档案页面时未传递orderId参数的问题 ``` ```msg refactor(认证考试): 重构考试答案提交逻辑 将单个题目提交改为批量提交,优化考试流程: 1. 基础考试和培训考试都改为最后统一提交答案 2. 添加加载状态提示 3. 使用Promise.all处理并发请求 ``` ```msg fix(认证考试): 修复考试完成状态判断逻辑 修改answeBaseIsFinish和answeTrainIsFinish接口的返回判断逻辑,从检查code改为检查data字段 ``` ```msg feat(认证考试): 新增重新考试和成为伴宠师接口 1. 添加retakeExam和appletUsersTeacher接口 2. 在错误详情页添加重新考试功能 3. 在考试完成页添加成为伴宠师功能 ``` ```msg style(时间轴组件): 优化操作按钮布局 1. 添加按钮间距(gap) 2. 使用flex:1使按钮等宽 3. 根据状态显示不同按钮文本 4. 添加serviceBtn属性控制档案按钮显示 ``` ```msg refactor(订单弹窗): 重构服务档案弹窗组件 1. 使用timelineService组件替代原有实现 2. 简化数据结构处理 3. 添加状态判断逻辑 4. 优化弹窗标题和样式 ``` ```msg fix(表单验证): 添加认证考试结束页表单验证 1. 添加姓名、电话、地址的必填验证 2. 添加格式验证(电话格式、姓名格式) 3. 添加长度验证 4. 添加错误状态样式 5. 优化错误提示体验 ``` ```msg refactor(工作台): 重构伴宠师申请流程 1. 优化申请条件判断逻辑 2. 添加用户状态检查 3. 完善考试状态跳转逻辑 4. 统一使用store获取用户信息
4 days ago
fix(订单管理): 修复宠物档案跳转缺少订单ID的问题 修复订单详情页跳转宠物档案页面时未传递orderId参数的问题 ``` ```msg refactor(认证考试): 重构考试答案提交逻辑 将单个题目提交改为批量提交,优化考试流程: 1. 基础考试和培训考试都改为最后统一提交答案 2. 添加加载状态提示 3. 使用Promise.all处理并发请求 ``` ```msg fix(认证考试): 修复考试完成状态判断逻辑 修改answeBaseIsFinish和answeTrainIsFinish接口的返回判断逻辑,从检查code改为检查data字段 ``` ```msg feat(认证考试): 新增重新考试和成为伴宠师接口 1. 添加retakeExam和appletUsersTeacher接口 2. 在错误详情页添加重新考试功能 3. 在考试完成页添加成为伴宠师功能 ``` ```msg style(时间轴组件): 优化操作按钮布局 1. 添加按钮间距(gap) 2. 使用flex:1使按钮等宽 3. 根据状态显示不同按钮文本 4. 添加serviceBtn属性控制档案按钮显示 ``` ```msg refactor(订单弹窗): 重构服务档案弹窗组件 1. 使用timelineService组件替代原有实现 2. 简化数据结构处理 3. 添加状态判断逻辑 4. 优化弹窗标题和样式 ``` ```msg fix(表单验证): 添加认证考试结束页表单验证 1. 添加姓名、电话、地址的必填验证 2. 添加格式验证(电话格式、姓名格式) 3. 添加长度验证 4. 添加错误状态样式 5. 优化错误提示体验 ``` ```msg refactor(工作台): 重构伴宠师申请流程 1. 优化申请条件判断逻辑 2. 添加用户状态检查 3. 完善考试状态跳转逻辑 4. 统一使用store获取用户信息
4 days ago
  1. <template>
  2. <up-list @scrolltolower="scrolltolower">
  3. <up-list-item>
  4. <view v-if="list && list.length > 0">
  5. <view class="mb28 container-list-item"
  6. @click.stop="toOrderDetail(item.id)"
  7. v-for="(item, index) in list"
  8. :key="item.id">
  9. <view class="flex-between flex" style="background: #FFF4E5;padding: 22rpx 42rpx">
  10. <view>{{ orderStatus[item.status] }}</view>
  11. <view>本单酬劳
  12. <text style="color: #FF530A">{{ item.orderGivePrice }}</text>
  13. </view>
  14. </view>
  15. <view class="container-list">
  16. <view class="flex-between flex mb28"
  17. :key="index"
  18. style="justify-content: flex-start;"
  19. v-for="(pet, index) in item.h5OrderVO.petVOList">
  20. <up-image style="flex-shrink:0" class="mr20" width="70px" height="70px"
  21. :src="pet.photo" shape="circle"></up-image>
  22. <view style="display: flex;flex-direction: column;gap: 20rpx;">
  23. <!-- <view class="font28 col3">服务天数: {{ pet.orderServiceText.length }} I {{ pet.orderServiceText.join(',') }}
  24. </view> -->
  25. <view class="font28 col3">服务天数: {{ pet.orderServiceText.length }} I
  26. {{ pet.orderServiceText.length >= 2 ? `${pet.orderServiceText[0]}${pet.orderServiceText[pet.orderServiceText.length - 1]}` : pet.orderServiceText.join(',') }}
  27. </view>
  28. <!-- <view style="margin: 18rpx 0">期望上门时间</view> -->
  29. <view>{{ pet.breed }}{{ pet.bodyType }} | {{ pet.productNameText.join(',') }}</view>
  30. </view>
  31. </view>
  32. <view class="mb28 address">{{ item.address }}</view>
  33. <view class="mb28" v-if="item.type == 0">订单为系统派发请确认订单信息后再抢单</view>
  34. <view class="flex flex-between">
  35. <!-- <up-button type="primary" text="订单详情"
  36. shape="circle"
  37. class="mr20" color="#FFAA48"></up-button> -->
  38. <up-button type="primary" text="打卡记录"
  39. @click.stop="showServicePopup(item)"
  40. shape="circle"
  41. class="mr20" color="#FFAA48"></up-button>
  42. <up-button type="primary" text="宠物档案"
  43. @click.stop="toPet(item)" shape="circle" class="mr20"
  44. color="#FFAA48"></up-button>
  45. <up-button type="primary" text="服务档案"
  46. @click.stop="toService(item)" shape="circle"
  47. color="#FFAA48"></up-button>
  48. </view>
  49. </view>
  50. </view>
  51. </view>
  52. <view v-else class="empty-state">
  53. <text class="empty-text">暂无订单数据</text>
  54. </view>
  55. </up-list-item>
  56. </up-list>
  57. <!-- 宠物服务时间弹窗 -->
  58. <pet-service-popup :show="popupVisible" :orderData="currentOrder" @close="closeServicePopup" ref="servicePopupRef" />
  59. </template>
  60. <script setup>
  61. import { onMounted, ref, computed } from 'vue';
  62. import PetServicePopup from './petServicePopup.vue';
  63. import {
  64. appletOrderDateFrequencyList,
  65. } from "@/api/order/frequency.js"
  66. import {
  67. useStore
  68. } from "vuex"
  69. const store = useStore();
  70. const userInfo = computed(() => {
  71. return store.getters.userInfo;
  72. })
  73. const scrolltolower = () => {
  74. }
  75. onMounted(() => {
  76. console.log(props)
  77. })
  78. const props = defineProps({
  79. list: {
  80. type: Array,
  81. required: true
  82. },
  83. current: {
  84. type: Number,
  85. required: true
  86. }
  87. });
  88. const orderStatus = ['待接单','进行中','已完成']
  89. // 弹窗相关状态
  90. const popupVisible = ref(false);
  91. const currentOrder = ref([]);
  92. const servicePopupRef = ref(null);
  93. function toClock(item) {
  94. item.h5OrderVO.orderItemList
  95. let itemID = 0
  96. if(item.h5OrderVO.orderServiceList && item.h5OrderVO.orderServiceList[0]){
  97. itemID = item.h5OrderVO.orderServiceList[0].id
  98. }
  99. const paths = [
  100. `/otherPages/myOrdersManage/clock/index?id=${item.orderId}&itemID=${itemID}`,
  101. `/otherPages/myOrdersManage/clock/index?id=${item.orderId}&itemID=${itemID}`,
  102. `/otherPages/myOrdersManage/clock/index?isRead=true&id=${item.orderId}&itemID=${itemID}`,
  103. ]
  104. uni.navigateTo({
  105. url: paths[item.orderStatus]
  106. })
  107. }
  108. // 跳转订单详情
  109. const toOrderDetail = (id) => {
  110. // uni.navigateTo({
  111. // url: `/otherPages/orderTakingManage/detail/index?id=${id}&type=my`
  112. // });
  113. }
  114. // 显示服务时间弹窗
  115. function showServicePopup(item) {
  116. // 如果是已完成状态,直接跳转到打卡记录页面
  117. // if (item.orderStatus === 2) {
  118. // return toClock(item);
  119. // }
  120. appletOrderDateFrequencyList({
  121. masterId: userInfo.value.userId,
  122. orderId : item.orderId,
  123. }).then(res => {
  124. // 显示弹窗并设置当前订单数据
  125. currentOrder.value = res.data;
  126. popupVisible.value = true;
  127. if (servicePopupRef.value) {
  128. servicePopupRef.value.updateServiceList();
  129. }
  130. })
  131. }
  132. // 关闭服务时间弹窗
  133. function closeServicePopup() {
  134. popupVisible.value = false;
  135. }
  136. function toPet(item) {
  137. uni.navigateTo({
  138. url: "/otherPages/orderTakingManage/pet/index?id=" + item.orderId
  139. })
  140. }
  141. function toService(item) {
  142. uni.navigateTo({
  143. url: "/otherPages/myOrdersManage/service/index?id=" + item.orderId
  144. })
  145. }
  146. </script>
  147. <style scoped lang="scss">
  148. @import "../index";
  149. .empty-state {
  150. display: flex;
  151. flex-direction: column;
  152. align-items: center;
  153. justify-content: center;
  154. padding: 40rpx;
  155. }
  156. .empty-image {
  157. width: 200rpx;
  158. height: 200rpx;
  159. margin-bottom: 20rpx;
  160. }
  161. .empty-text {
  162. color: #999;
  163. font-size: 28rpx;
  164. }
  165. </style>