diff --git a/common/api/account/message.js b/common/api/account/message.js new file mode 100644 index 0000000..05efff0 --- /dev/null +++ b/common/api/account/message.js @@ -0,0 +1,30 @@ +// 引入 request 文件 +import request from '@/common/api/request.js' +import { + prveUrl +} from './config.js' + +// 获取未读消息数量 +export const getUnReadCountReq = () => { + return request({ + url: prveUrl + '/user/msg/unReadCount', + method: 'get', + }) +} + +// 获取消息列表分页数据 +export const getUserMsgPageReq = (data) => { + return request({ + url: prveUrl + '/user/msg/page', + method: 'get', + data: data + }) +} + +// 根据订单 Id 查询入账消息 +export const getMsgByOrderIdReq = (id) => { + return request({ + url: prveUrl + '/user/msg/order/' + id, + method: 'get', + }) +} \ No newline at end of file diff --git a/components/msg-list-item/msg-list-item.vue b/components/msg-list-item/msg-list-item.vue new file mode 100644 index 0000000..1a9f995 --- /dev/null +++ b/components/msg-list-item/msg-list-item.vue @@ -0,0 +1,71 @@ + + + + + \ No newline at end of file diff --git a/pages.json b/pages.json index 8abee6e..7e00b9c 100644 --- a/pages.json +++ b/pages.json @@ -213,6 +213,12 @@ "style": { "navigationBarTitleText": "消息" } + }, + { + "path": "pages/user/message/index", + "style": { + "navigationBarTitleText": "消息通知" + } } ], "subPackages": [ diff --git a/pages/index/index.vue b/pages/index/index.vue index b687705..f0f3aea 100644 --- a/pages/index/index.vue +++ b/pages/index/index.vue @@ -151,6 +151,7 @@ import { APIhomehomePageUp, APIhome } from '@/common/api/index/index.js'; import { APIgeocodelocation } from '@/common/api/api.js'; import { useNavbarStore } from '@/stores/navbarStore'; import { productStore } from '@/stores/user.js'; +import { getUnReadCountReq } from '../../common/api/account/message'; const store = useNavbarStore(); const storeuser = productStore(); store.updateNavbarConfig({ @@ -352,9 +353,27 @@ onShow(async () => { const showPageLoading = ref(true); +const getUnReadMsgCount = async () => { + let res = await getUnReadCountReq() + + let badge = Number(res) + if (badge > 0) { + uni.setTabBarBadge({ + index: 2, + text: badge.toString() + }) + } else { + uni.removeTabBarBadge({ + index: 2 + }) + } +} + onMounted(async () => { setTimeout(() => { showPageLoading.value = false; + + getUnReadMsgCount(); }, 800); }); diff --git a/pages/order/confirm-order.vue b/pages/order/confirm-order.vue index 9d3978f..507f5e4 100644 --- a/pages/order/confirm-order.vue +++ b/pages/order/confirm-order.vue @@ -40,6 +40,13 @@ > + + + + + + 扫码加好友,优惠多多 @@ -265,6 +272,8 @@ import { useCartsStore } from "@/stores/carts.js"; import { useWebSocket } from "@/stores/carts-websocket.js"; import * as chatApi from "@/http/php/chat"; + import MsgListItem from '@/components/msg-list-item/msg-list-item.vue' + function pwdClose() { ispws.value = false; pay_unlock(); @@ -413,6 +422,7 @@ import rechargeFree from "./components/rechargeFree.vue"; import paymentMethodes from "@/components/paymentMethod.vue"; //支付方式 import { onShow, onBackPress } from "@dcloudio/uni-app"; import { onHide } from "@dcloudio/uni-app"; +import { getMsgByOrderIdReq } from "../../common/api/account/message"; // 输入支付密码 const ispws = ref(false); let userInfo = uni.cache.get("userInfo"); @@ -502,8 +512,24 @@ const orderorderInfo = async (isNpwGetOrderDetail = false) => { console.log(res); getOrderInfoAfterCalcInit(res); + + if (listinfo.status == 'done') { + getOrderMsgInfo() + } }; + const orderMsgList = ref([]) + + // 获取订单消息 + const getOrderMsgInfo = async () => { + orderMsgList.value = [] + let res = await getMsgByOrderIdReq(listinfo.id) + + if (res) { + orderMsgList.value = res + } + } + //拿到订单数据后续初始化处理 function getOrderInfoAfterCalcInit(res) { console.log("getOrderInfoAfterCalcInit", res); @@ -1762,4 +1788,8 @@ page { color: #666666; } } + + .order-msg-list { + margin-bottom: 30rpx; + } diff --git a/pages/order/detail.vue b/pages/order/detail.vue index 09fb782..187d3ac 100644 --- a/pages/order/detail.vue +++ b/pages/order/detail.vue @@ -16,6 +16,13 @@ + + + + + + 扫码加好友,优惠多多 @@ -123,6 +130,11 @@ onShow, onBackPress } from '@dcloudio/uni-app'; + import { + getMsgByOrderIdReq + } from "@/common/api/account/message"; + + import MsgListItem from '@/components/msg-list-item/msg-list-item.vue' // 输入支付密码 const ispws = ref(false) @@ -172,8 +184,10 @@ let res = await APIgetOrderById({ orderId: orderId.value }) + console.log("orderorderInfo1: res == ", res); if (res) { Object.assign(listinfo, res); + console.log("orderorderInfo: res == ", res); // 历史订单 if (listinfo.detailMap) { let combinedArray = []; @@ -206,6 +220,22 @@ listinfo.pointsDiscountAmount = 0 // console.log(listinfo) + console.log("orderorderInfo list info: ", listinfo); + if (listinfo.status == 'done') { + getOrderMsgInfo() + } + } + } + + const orderMsgList = ref([]) + + // 获取订单消息 + const getOrderMsgInfo = async () => { + orderMsgList.value = [] + let res = await getMsgByOrderIdReq(orderId.value) + + if (res) { + orderMsgList.value = res } } @@ -417,7 +447,7 @@ // }) //return // } - if (orderVIP.value.payPwd == '') { + if (orderVIP.value.payPwd == '') { uni.showModal({ title: '提示', content: '您还未设置支付密码,是否去设置?', @@ -584,6 +614,7 @@ orderVIP.value = uni.cache.get('orderVIP') // 积分信息 + console.log("orderInfo onMounted"); orderorderInfo() }) @@ -1056,4 +1087,8 @@ } } + + .order-msg-list { + margin-bottom: 30rpx; + } \ No newline at end of file diff --git a/pages/user/message/index.vue b/pages/user/message/index.vue new file mode 100644 index 0000000..e171f14 --- /dev/null +++ b/pages/user/message/index.vue @@ -0,0 +1,81 @@ + + + + + \ No newline at end of file diff --git a/pages/user/user.vue b/pages/user/user.vue index 8251732..620d1d0 100644 --- a/pages/user/user.vue +++ b/pages/user/user.vue @@ -21,11 +21,38 @@ > {{ userInfo.nickName }} - + + + + + + + + + + {{ unreadMsgCount > 99 ? '99+' : unreadMsgCount }} + + + + +