diff --git a/src/api/accompany-order/accompany-order.js b/src/api/accompany-order/accompany-order.js index 4696dd8..e95cfe7 100644 --- a/src/api/accompany-order/accompany-order.js +++ b/src/api/accompany-order/accompany-order.js @@ -1,10 +1,31 @@ import request from '@/utils/request' +function customParamsSerializer(params) { + let result = ''; + for (let key in params) { + if (params.hasOwnProperty(key)) { + if (Array.isArray(params[key])) { + params[key].forEach((item,index) => { + if(item.key){ + result += `${key}[${index}][key]=${item.key}&${key}[${index}][op]=${item.op}&${key}[${index}][value]=${item.value}&`; + + }else{ + result +=`${key}[${index}]=${item}&` + } + }); + } else { + result += `${key}=${params[key]}&`; + } + } + } + return result.slice(0, -1); +} export function index(params, isLoading = true) { return request({ method: 'get', url: '/api/admin/accompany-order/index', params, + paramsSerializer: customParamsSerializer, isLoading }) } diff --git a/src/api/notice.js b/src/api/notice.js new file mode 100644 index 0000000..62b50ee --- /dev/null +++ b/src/api/notice.js @@ -0,0 +1,20 @@ +import request from '@/utils/request' + +export function getNotice(params) { + return request({ + url: '/api/admin/notification/todo', + method: 'get', + params, + isLoading: false + }) +} + +export function toggleRead(params) { + return request({ + url: '/api/admin/notification/read', + method: 'get', + params, + isLoading: false + }) +} + diff --git a/src/layout/components/Navbar.vue b/src/layout/components/Navbar.vue index 93b3ccd..be0eebb 100644 --- a/src/layout/components/Navbar.vue +++ b/src/layout/components/Navbar.vue @@ -4,7 +4,64 @@ -
+
+ +
+ + + 消息中心 + + +
+ +
@@ -36,17 +93,25 @@ } from 'vuex' import Breadcrumb from '@/components/Breadcrumb' import Hamburger from '@/components/Hamburger' - +import { getNotice, toggleRead } from "@/api/notice"; export default { components: { Breadcrumb, Hamburger + }, + data(){ + return{ + noticeData:[] + } }, computed: { ...mapGetters([ 'sidebar', 'avatar' ]) + }, + mounted() { + this.getNotice(); }, methods: { toggleSideBar() { @@ -55,11 +120,43 @@ async logout() { await this.$store.dispatch('user/logout') this.$router.push(`/login?redirect=${this.$route.fullPath}`) + }, + toggleMessage(item){ + if(item.read_at) return + toggleRead({ + id:item.id + }).then(res => { + this.$message({ + type:'success', + message:res?.msg || "成功" + }) + this.getNotice() + }) + }, + + async getNotice() { + let res = await getNotice({ + page:1, + page_size:99, + }); + console.log(res); + this.noticeData = res.list.data; + }, + goOrder(item){ + this.$router.push("/accompany-order?order_id="+item.data.order_id); } } } - +