diff --git a/src/api/announce.ts b/src/api/announce.ts new file mode 100644 index 0000000..66d0d46 --- /dev/null +++ b/src/api/announce.ts @@ -0,0 +1,55 @@ + +import request from '@/utils/request' + +export interface IAnnounceData { + _id?: string + shop?: string + title?: string + content?: string + type: number + accounts: string[] + shops: string[] + sendTime?: number + endTime?: number +} + +export const defaultAnnounceData: IAnnounceData = { + shops: [], + type: 0, + accounts: [] +} + +export const getAnnounces = (params: any) => + request({ + url: '/api/announces', + method: 'post', + params + }) + +export const getAnnounce = (id: string, params: any) => + request({ + url: `/api/announce/${id}`, + method: 'get', + params + }) + +export const saveAnnounce = (data: any) => + request({ + url: '/api/announce/save', + method: 'post', + data + }) + +export const deleteAnnounce = (data: any) => + request({ + url: '/api/announce/delete', + method: 'post', + data + }) + +export const publishAnnounce = (data: any) => + request({ + url: '/api/announce/publish', + method: 'post', + data + }) diff --git a/src/icons/components/announce.ts b/src/icons/components/announce.ts new file mode 100644 index 0000000..dfcd4e4 --- /dev/null +++ b/src/icons/components/announce.ts @@ -0,0 +1,12 @@ +/* eslint-disable */ +/* tslint:disable */ +// @ts-ignore +import icon from 'vue-svgicon' +icon.register({ + 'announce': { + width: 125.156, + height: 120, + viewBox: '0 0 1068 1024', + data: '' + } +}) diff --git a/src/icons/components/index.ts b/src/icons/components/index.ts index 6014c16..609bac2 100644 --- a/src/icons/components/index.ts +++ b/src/icons/components/index.ts @@ -1,6 +1,7 @@ /* tslint:disable */ import './404' import './admin' +import './announce' import './back-top' import './bug' import './chart' @@ -31,6 +32,8 @@ import './like' import './link' import './list' import './lock' +import './lottery' +import './mail' import './message' import './money' import './nested' @@ -46,6 +49,7 @@ import './question_list' import './role' import './search' import './sell' +import './share' import './shop_list' import './shop' import './shopping' diff --git a/src/icons/components/lottery.ts b/src/icons/components/lottery.ts new file mode 100644 index 0000000..d0fc60b --- /dev/null +++ b/src/icons/components/lottery.ts @@ -0,0 +1,12 @@ +/* eslint-disable */ +/* tslint:disable */ +// @ts-ignore +import icon from 'vue-svgicon' +icon.register({ + 'lottery': { + width: 120, + height: 120, + viewBox: '0 0 1024 1024', + data: '' + } +}) diff --git a/src/icons/components/mail.ts b/src/icons/components/mail.ts new file mode 100644 index 0000000..8786513 --- /dev/null +++ b/src/icons/components/mail.ts @@ -0,0 +1,12 @@ +/* eslint-disable */ +/* tslint:disable */ +// @ts-ignore +import icon from 'vue-svgicon' +icon.register({ + 'mail': { + width: 120, + height: 120, + viewBox: '0 0 1024 1024', + data: '' + } +}) diff --git a/src/icons/components/share.ts b/src/icons/components/share.ts new file mode 100644 index 0000000..dfda446 --- /dev/null +++ b/src/icons/components/share.ts @@ -0,0 +1,12 @@ +/* eslint-disable */ +/* tslint:disable */ +// @ts-ignore +import icon from 'vue-svgicon' +icon.register({ + 'share': { + width: 120, + height: 120, + viewBox: '0 0 1024 1024', + data: '' + } +}) diff --git a/src/icons/svg/announce.svg b/src/icons/svg/announce.svg new file mode 100644 index 0000000..70c561f --- /dev/null +++ b/src/icons/svg/announce.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/lottery.svg b/src/icons/svg/lottery.svg new file mode 100644 index 0000000..f3508fc --- /dev/null +++ b/src/icons/svg/lottery.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/mail.svg b/src/icons/svg/mail.svg new file mode 100644 index 0000000..2a6f5da --- /dev/null +++ b/src/icons/svg/mail.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/share.svg b/src/icons/svg/share.svg new file mode 100644 index 0000000..5a9942a --- /dev/null +++ b/src/icons/svg/share.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/lang/en.ts b/src/lang/en.ts index 0308b8d..6c1cc56 100644 --- a/src/lang/en.ts +++ b/src/lang/en.ts @@ -101,7 +101,10 @@ export default { shop_share: 'Share Setting', shop_mail: 'Mails', create_mail: 'New Mail', - edit_mail: 'Edit Mail' + edit_mail: 'Edit Mail', + shop_announce: 'Announce', + create_announce: 'New Announce', + edit_announce: 'Edit Announce' }, navbar: { logOut: 'Log Out', diff --git a/src/lang/zh.ts b/src/lang/zh.ts index 9742146..498ee54 100644 --- a/src/lang/zh.ts +++ b/src/lang/zh.ts @@ -101,7 +101,10 @@ export default { shop_share: '分享设置', shop_mail: '邮件', create_mail: '新邮件', - edit_mail: '编辑邮件' + edit_mail: '编辑邮件', + shop_announce: '公告', + create_announce: '新建公告', + edit_announce: '编辑公告' }, navbar: { logOut: '退出登录', diff --git a/src/main.ts b/src/main.ts index d4302f3..85cdf81 100644 --- a/src/main.ts +++ b/src/main.ts @@ -18,7 +18,7 @@ import * as directives from '@/directives' import * as filters from '@/filters' import local from '@/utils/storage' -require('@/utils/Extend') +import '@/utils/Extend' Vue.use(ElementUI, { size: AppModule.size, diff --git a/src/router/modules/shop.ts b/src/router/modules/shop.ts index b26621c..e13a972 100644 --- a/src/router/modules/shop.ts +++ b/src/router/modules/shop.ts @@ -123,7 +123,7 @@ const shopRoutes: RouteConfig = { meta: { title: 'shop_lottery', permissions: ['shop:edit'], - icon: 'game' + icon: 'lottery' } }, { @@ -133,7 +133,7 @@ const shopRoutes: RouteConfig = { meta: { title: 'shop_share', permissions: ['shop:edit'], - icon: 'game' + icon: 'share' } }, { @@ -143,7 +143,7 @@ const shopRoutes: RouteConfig = { meta: { title: 'shop_mail', permissions: ['shopmail:read'], - icon: 'list' + icon: 'mail' } }, { @@ -167,6 +167,38 @@ const shopRoutes: RouteConfig = { elicon: 'el-icon-arrow-right', hidden: true } + }, + { + path: 'announce_list', + component: () => import('@/views/announce/list.vue'), + name: 'AnnounceList', + meta: { + title: 'shop_announce', + permissions: ['shopannounce:read'], + icon: 'announce' + } + }, + { + path: 'announce_new', + component: () => import('@/views/announce/edit.vue'), + name: 'CreateAnnounce', + meta: { + title: 'create_announce', + icon: 'edit', + permissions: ['shopannounce:edit'], + hidden: true + } + }, + { + path: 'announce_edit/:id', + component: () => import('@/views/announce/edit.vue'), + name: 'AnnounceEditor', + meta: { + title: 'edit_announce', + permissions: ['shopannounce:read'], + elicon: 'el-icon-arrow-right', + hidden: true + } } ] } diff --git a/src/utils/event-bus.ts b/src/utils/event-bus.ts index 4f77e80..2bb0a44 100644 --- a/src/utils/event-bus.ts +++ b/src/utils/event-bus.ts @@ -42,3 +42,5 @@ export const EVENT_SHOP_UPDATE = 'event_shop_update' * @type {string} */ export const EVENT_ROLE_UPDATE = 'event_role_update' +export const EVENT_MAIL_UPDATE = 'event_mail_update' +export const EVENT_ANNOUNCE_UPDATE = 'event_announce_update' diff --git a/src/views/announce/edit.vue b/src/views/announce/edit.vue new file mode 100644 index 0000000..8c7fec1 --- /dev/null +++ b/src/views/announce/edit.vue @@ -0,0 +1,342 @@ + + + diff --git a/src/views/announce/list.vue b/src/views/announce/list.vue new file mode 100644 index 0000000..a55f59a --- /dev/null +++ b/src/views/announce/list.vue @@ -0,0 +1,379 @@ + + + diff --git a/src/views/mail/edit.vue b/src/views/mail/edit.vue index dbb772c..a8e0e35 100644 --- a/src/views/mail/edit.vue +++ b/src/views/mail/edit.vue @@ -206,7 +206,7 @@ import { ITagView, TagsViewModule } from '@/store/modules/tags-view' import UploadImage from '@/components/UploadImage/index.vue' import { getShops, getShopUsers } from '@/api/shop' import { UserModule } from '@/store/modules/user' -import { EVENT_COUPON_UPDATE, EVENT_SHOP_UPDATE, EventBus } from '@/utils/event-bus' +import { EVENT_COUPON_UPDATE, EVENT_MAIL_UPDATE, EVENT_SHOP_UPDATE, EventBus } from '@/utils/event-bus' import { defaultMailData, defaultMailItem, getMail, IMailItem, saveMail } from '@/api/mail' import i18n from '@/lang' import { getCoupons, ICouponData } from '@/api/coupon' @@ -393,7 +393,7 @@ export default class extends Vue { type: 'success', duration: 2000 }) - EventBus.$emit(EVENT_COUPON_UPDATE, {}) + EventBus.$emit(EVENT_MAIL_UPDATE, {}) } catch (err) { console.error('Submit Error!') return false diff --git a/src/views/mail/list.vue b/src/views/mail/list.vue index 72f0e26..ccb688d 100644 --- a/src/views/mail/list.vue +++ b/src/views/mail/list.vue @@ -149,7 +149,7 @@ import { getShops } from '@/api/shop' import { parseTime } from '@/utils' import { getAllCategory, getAllTags } from '@/api/question' import { UserModule } from '@/store/modules/user' -import { EVENT_ACTIVITY_UPDATE, EVENT_SHOP_UPDATE, EventBus } from '@/utils/event-bus' +import { EVENT_ACTIVITY_UPDATE, EVENT_MAIL_UPDATE, EVENT_SHOP_UPDATE, EventBus } from '@/utils/event-bus' import { deleteMail, getMails, IMailData } from '@/api/mail' import { LAST_SHOP } from '@/utils/storage' @@ -221,13 +221,13 @@ export default class extends Vue { } await this.getRemoteCategory() await this.getList() - EventBus.$on(EVENT_ACTIVITY_UPDATE, () => { + EventBus.$on(EVENT_MAIL_UPDATE, () => { this.getList() }) } beforeDestory() { - EventBus.$off(EVENT_ACTIVITY_UPDATE) + EventBus.$off(EVENT_MAIL_UPDATE) if (UserModule.level === 1) { EventBus.$off(EVENT_SHOP_UPDATE) }