123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- /**
- * 选中多个组件进行组合
- */
- import { mapMutations, mapState } from 'vuex'
- let isMac = false
- if (window && window.navigator && window.navigator.userAgent) {
- isMac = window.navigator.userAgent.indexOf('Mac') > -1
- }
- export default {
- computed: {
- ...mapState({
- activeCodes: (state) => state.bigScreen.activeCodes,
- activeChart: (state) => state.bigScreen.activeItemConfig
- })
- },
- mounted () {
- // 监听shift键的按下和抬起
- document.addEventListener('keydown', this.keydown)
- document.addEventListener('keyup', this.keyup)
- },
- beforeDestroy () {
- document.removeEventListener('keydown', this.keydown)
- document.removeEventListener('keyup', this.keyup)
- },
- methods: {
- ...mapMutations('bigScreen', {
- changeCtrlOrCommandDown: 'changeCtrlOrCommandDown',
- changeActivePos: 'changeActivePos',
- deleteItem: 'delItem',
- undoTimeLine: 'undoTimeLine',
- copyCharts: 'copyCharts',
- pasteCharts: 'pasteCharts'
- }),
- keydown (event) {
- if (event.keyCode === 37) {
- // 关闭默认事件
- event.preventDefault()
- // 左箭头键被按下
- this.changeActivePos({ diffX: -1, diffY: 0 })
- } else if (event.keyCode === 38) {
- // 关闭默认事件
- event.preventDefault()
- // 上箭头键被按下
- this.changeActivePos({ diffX: 0, diffY: -1 })
- } else if (event.keyCode === 39) {
- // 关闭默认事件
- event.preventDefault()
- // 右箭头键被按下
- this.changeActivePos({ diffX: 1, diffY: 0 })
- } else if (event.keyCode === 40) {
- // 关闭默认事件
- event.preventDefault()
- // 下箭头键被按下
- this.changeActivePos({ diffX: 0, diffY: 1 })
- }
- // ctrl/command + s保存
- if ((event.ctrlKey || event.metaKey) && event.keyCode === 83) {
- // 关闭默认事件
- event.preventDefault()
- this.$refs.PageTopSetting.save('saveLoading')
- }
- // ctrl/command + z撤销
- if ((event.ctrlKey || event.metaKey) && !event.shiftKey && event.keyCode === 90) {
- event.preventDefault()
- this.undoTimeLine(true)
- }
- // ctrl/command + shift + z 反撤销
- if ((event.ctrlKey || event.metaKey) && event.shiftKey && event.keyCode === 90) {
- event.preventDefault()
- this.undoTimeLine(false)
- }
- if (isMac) {
- // 是否按下了command键
- if (event.metaKey) {
- this.changeCtrlOrCommandDown(true)
- }
- } else {
- // 是否按下了ctrl键
- if (event.ctrlKey) {
- this.changeCtrlOrCommandDown(true)
- }
- }
- },
- keyup (event) {
- // 判断mac系统还是windows系统
- if (isMac) {
- // 是否按下了command键
- if (!event.metaKey) {
- this.changeCtrlOrCommandDown(false)
- }
- } else {
- // 是否按下了ctrl键
- if (!event.ctrlKey) {
- this.changeCtrlOrCommandDown(false)
- }
- }
- },
- designKeydown (event) {
- // 删除键被按下且鼠标没有在输入框中
- if (
- (event.keyCode === 8 || event.keyCode === 46) &&
- !event.target.classList.contains('el-input__inner')
- ) {
- // 关闭默认事件
- event.preventDefault()
- this.$confirm('确定删除该组件吗?', '提示', {
- confirmButtonText: '确定',
- cancelButtonText: '取消',
- type: 'warning',
- customClass: 'bs-el-message-box'
- }).then(() => {
- // 批量删除
- if (Array.isArray(this.activeCodes) && this.activeCodes.length > 0) {
- this.deleteItem(this.activeCodes)
- } else {
- // 单个删除
- this.deleteItem(this.activeChart)
- }
- }).catch(() => {})
- }
- // ctrl/command + c复制
- if ((event.ctrlKey || event.metaKey) && event.keyCode === 67) {
- this.copyCharts()
- }
- if ((event.ctrlKey || event.metaKey) && event.keyCode === 86) {
- console.log('粘贴')
- // 粘贴
- this.pasteCharts()
- }
- }
- }
- }
|