增加列表和详情页的互动

This commit is contained in:
zhl 2021-05-31 15:09:20 +08:00
parent dddbed3b6f
commit fce12be42a
15 changed files with 100 additions and 18 deletions

View File

@ -1,3 +1,39 @@
import Vue from 'vue'
export const EventBus = new Vue()
/**
*
* @type {string}
*/
export const EVENT_SHOP_PUZZLES_UPDATE = 'event_shop_puzzles_update'
/**
*
* @type {string}
*/
export const EVENT_ACTIVITY_UPDATE = 'event_activity_update'
/**
*
* @type {string}
*/
export const EVENT_EXAM_UPDATE = 'event_exam_update'
/**
*
* @type {string}
*/
export const EVENT_GAME_UPDATE = 'event_game_update'
/**
*
* @type {string}
*/
export const EVENT_COUPON_UPDATE = 'event_coupon_update'
/**
*
* @type {string}
*/
export const EVENT_PUZZLE_UPDATE = 'event_puzzle_update'
/**
*
* @type {string}
*/
export const EVENT_SHOP_UPDATE = 'event_shop_update'

View File

@ -394,13 +394,7 @@ import Sticky from '@/components/Sticky/index.vue'
import UploadImage from '@/components/UploadImage/index.vue'
import RegionPicker from '@/components/RegionPicker/index.vue'
import { getMyShop, getShops } from '@/api/shop'
import {
defaultActivityData,
defaultRewardData,
getActivity,
IRewardData,
saveActivity
} from '@/api/activity'
import { defaultActivityData, defaultRewardData, getActivity, IRewardData, saveActivity } from '@/api/activity'
import { sec2TimeStr, timeStr2Sec } from '@/utils'
import { getAllCategory } from '@/api/question'
import { cloneDeep } from 'lodash'
@ -409,6 +403,7 @@ import { IShopData } from '@/api/types'
import { ElTree } from 'element-ui/types/tree'
import { UserModule } from '@/store/modules/user'
import UploadCorpImage from '@/components/UploadCorpImage/index.vue'
import { EVENT_ACTIVITY_UPDATE, EventBus } from '@/utils/event-bus'
@Component({
name: 'ActivityEditor',
@ -594,6 +589,7 @@ export default class extends Vue {
type: 'success',
duration: 2000
})
EventBus.$emit(EVENT_ACTIVITY_UPDATE, {})
} catch (err) {
console.error('Submit Error!')
return false

View File

@ -139,6 +139,7 @@ import { parseTime } from '@/utils'
import { getAllCategory, getAllTags } from '@/api/question'
import { deleteActivity, getActivitys, publishActivity, IActivityData } from '@/api/activity'
import { UserModule } from '@/store/modules/user'
import { EVENT_ACTIVITY_UPDATE, EVENT_SHOP_PUZZLES_UPDATE, EventBus } from '@/utils/event-bus'
@Component({
name: 'ActivityList',
@ -201,6 +202,13 @@ export default class extends Vue {
}
await this.getRemoteCategory()
await this.getList()
EventBus.$on(EVENT_ACTIVITY_UPDATE, () => {
this.getList()
})
}
beforeDestory() {
EventBus.$off(EVENT_ACTIVITY_UPDATE)
}
private async getList() {

View File

@ -323,6 +323,7 @@ import { UserModule } from '@/store/modules/user'
import { defaultRewardData, IRewardData } from '@/api/activity'
import PuzzleList from './components/PuzzleList.vue'
import UploadCorpImage from '@/components/UploadCorpImage/index.vue'
import { EVENT_EXAM_UPDATE, EVENT_SHOP_PUZZLES_UPDATE, EventBus } from '@/utils/event-bus'
@Component({
name: 'ExamEditor',
components: {
@ -472,6 +473,7 @@ export default class extends Vue {
type: 'success',
duration: 2000
})
EventBus.$emit(EVENT_EXAM_UPDATE, {})
} catch (err) {
console.error('Submit Error!')
return false

View File

@ -137,6 +137,7 @@ import { parseTime } from '@/utils'
import { getAllCategory, getAllTags, IQuestionData } from '@/api/question'
import { deleteExam, getExams } from '@/api/exam'
import { UserModule } from '@/store/modules/user'
import { EVENT_EXAM_UPDATE, EVENT_SHOP_PUZZLES_UPDATE, EventBus } from '@/utils/event-bus'
@Component({
name: 'ExamList',
@ -198,6 +199,13 @@ export default class extends Vue {
}
await this.getRemoteCategory()
await this.getList()
EventBus.$on(EVENT_EXAM_UPDATE, () => {
this.getList()
})
}
beforeDestory() {
EventBus.$off(EVENT_EXAM_UPDATE)
}
private async getList() {

View File

@ -150,6 +150,7 @@ import {
import { ITagView, TagsViewModule } from '@/store/modules/tags-view'
import UploadImage from '@/components/UploadImage/index.vue'
import { AppModule } from '@/store/modules/app'
import { EVENT_GAME_UPDATE, EVENT_SHOP_PUZZLES_UPDATE, EventBus } from '@/utils/event-bus'
@Component({
name: 'GameEdit',
@ -249,6 +250,7 @@ export default class extends Vue {
type: 'success',
duration: 2000
})
EventBus.$emit(EVENT_GAME_UPDATE, {})
} catch (err) {
console.error('Submit Error!')
return false

View File

@ -100,6 +100,7 @@ import { Component, Vue } from 'vue-property-decorator'
import Pagination from '@/components/Pagination/index.vue'
import { parseTime } from '@/utils'
import { deleteGame, getGames, IGameData } from '@/api/game'
import { EVENT_GAME_UPDATE, EventBus } from '@/utils/event-bus'
@Component({
name: 'GameList',
@ -145,10 +146,13 @@ export default class extends Vue {
created() {
this.getList()
EventBus.$on(EVENT_GAME_UPDATE, () => {
this.getList()
})
}
activated() {
this.getList()
beforeDestory() {
EventBus.$off(EVENT_GAME_UPDATE)
}
private async getList() {

View File

@ -133,6 +133,7 @@ import { getShops } from '@/api/shop'
import { parseTime } from '@/utils'
import { deleteCoupon, getCoupons } from '@/api/coupon'
import { UserModule } from '@/store/modules/user'
import { EVENT_COUPON_UPDATE, EventBus } from '@/utils/event-bus'
@Component({
name: 'CouponList',
@ -191,6 +192,9 @@ export default class extends Vue {
this.listQuery.shop = UserModule.department
}
await this.getList()
EventBus.$on(EVENT_COUPON_UPDATE, () => {
this.getList()
})
}
private async getList() {
@ -202,6 +206,10 @@ export default class extends Vue {
this.total = data.total
}
beforeDestory() {
EventBus.$off(EVENT_COUPON_UPDATE)
}
private async handleDelete(scope: any) {
const { $index, row } = scope
await this.$confirm('确认删除该优惠券?', 'Warning', {

View File

@ -134,6 +134,7 @@ import Tinymce from '@/components/Tinymce/index.vue'
import { getShops } from '@/api/shop'
import { defaultCouponData, getCoupon, saveCoupon } from '@/api/coupon'
import { UserModule } from '@/store/modules/user'
import { EVENT_COUPON_UPDATE, EVENT_SHOP_PUZZLES_UPDATE, EventBus } from '@/utils/event-bus'
@Component({
name: 'CouponEditor',
@ -263,6 +264,7 @@ export default class extends Vue {
type: 'success',
duration: 2000
})
EventBus.$emit(EVENT_COUPON_UPDATE, {})
} catch (err) {
console.error('Submit Error!')
return false

View File

@ -193,6 +193,7 @@ import {
saveQuestion,
saveTag
} from '@/api/question'
import { EVENT_PUZZLE_UPDATE, EVENT_SHOP_PUZZLES_UPDATE, EventBus } from '@/utils/event-bus'
@Component({
name: 'QuestionPrepare',
@ -346,6 +347,7 @@ export default class extends Vue {
type: 'success',
duration: 2000
})
EventBus.$emit(EVENT_PUZZLE_UPDATE, {})
} catch (err) {
console.error('Submit Error!')
this.loading = false

View File

@ -143,6 +143,7 @@ import {
getQuestions,
IQuestionData
} from '@/api/question'
import { EVENT_PUZZLE_UPDATE, EVENT_SHOP_PUZZLES_UPDATE, EventBus } from '@/utils/event-bus'
@Component({
name: 'QuestionList',
@ -198,6 +199,13 @@ export default class extends Vue {
this.getList()
this.getRemoteTags()
this.getRemoteCategory()
EventBus.$on(EVENT_PUZZLE_UPDATE, () => {
this.getList()
})
}
beforeDestory() {
EventBus.$off(EVENT_PUZZLE_UPDATE)
}
private async getList() {

View File

@ -160,7 +160,7 @@ import Tinymce from '@/components/Tinymce/index.vue'
import UploadImage from '@/components/UploadImage/index.vue'
import { defaultQuestionData } from '@/api/question'
import { deleteShopQuestion, getShopQuestion, saveShopQuestion } from '@/api/shoppuzzle'
import { EventBus } from '@/utils/event-bus'
import { EVENT_SHOP_PUZZLES_UPDATE, EventBus } from '@/utils/event-bus'
@Component({
name: 'ShopPuzzleEdit',
@ -286,7 +286,7 @@ export default class extends Vue {
type: 'success',
duration: 2000
})
EventBus.$emit('shop_puzzles_update', {})
EventBus.$emit(EVENT_SHOP_PUZZLES_UPDATE, {})
} catch (err) {
console.error('Submit Error!')
this.loading = false
@ -304,7 +304,7 @@ export default class extends Vue {
})
await deleteShopQuestion(this.postForm.shop!, this.postForm._id!)
this.loading = false
EventBus.$emit('shop_puzzles_update', {})
EventBus.$emit(EVENT_SHOP_PUZZLES_UPDATE, {})
this.$store.dispatch('delView', this.$route)
this.$router.go(-1)
} catch (e) {

View File

@ -157,7 +157,7 @@ import { IQuestionData } from '@/api/question'
import { UserModule } from '@/store/modules/user'
import { deleteShopQuestion, getShopCategory, getShopQuestions } from '@/api/shoppuzzle'
import { IShopData } from '@/api/types'
import { EventBus } from '@/utils/event-bus'
import { EVENT_SHOP_PUZZLES_UPDATE, EventBus } from '@/utils/event-bus'
@Component({
name: 'ShopPuzzles',
@ -223,13 +223,13 @@ export default class extends Vue {
await this.getList()
}
// this.getList()
EventBus.$on('shop_puzzles_update', () => {
EventBus.$on(EVENT_SHOP_PUZZLES_UPDATE, () => {
this.getList()
})
}
beforeDestory() {
EventBus.$off('shop_puzzles_update')
EventBus.$off(EVENT_SHOP_PUZZLES_UPDATE)
}
private async getList() {

View File

@ -122,6 +122,7 @@ import RegionPicker from '@/components/RegionPicker/index.vue'
import { defaultShopData, getShop, saveShop } from '@/api/shop'
import { addressToLoc, IAreaData, queryArea } from '@/api/map'
import i18n from '@/lang'
import { EVENT_SHOP_PUZZLES_UPDATE, EVENT_SHOP_UPDATE, EventBus } from '@/utils/event-bus'
@Component({
name: 'ShopEditor',
@ -219,6 +220,7 @@ export default class extends Vue {
type: 'success',
duration: 2000
})
EventBus.$emit(EVENT_SHOP_UPDATE, {})
} catch (err) {
console.error('Submit Error!')
return false

View File

@ -151,6 +151,7 @@ import Pagination from '@/components/Pagination/index.vue'
import { deleteShop, getShops, updateShopPublish } from '@/api/shop'
import { parseTime } from '@/utils'
import i18n from '@/lang'
import { EVENT_SHOP_PUZZLES_UPDATE, EVENT_SHOP_UPDATE, EventBus } from '@/utils/event-bus'
@Component({
name: 'ShopList',
@ -186,10 +187,13 @@ export default class extends Vue {
created() {
this.getList()
EventBus.$on(EVENT_SHOP_UPDATE, () => {
this.getList()
})
}
activated() {
this.getList()
beforeDestory() {
EventBus.$off(EVENT_SHOP_UPDATE)
}
private async getList() {