mirror of
				https://github.com/dromara/RuoYi-Vue-Plus.git
				synced 2025-11-04 16:23:42 +08:00 
			
		
		
		
	自定义文字复制剪贴指令
This commit is contained in:
		@@ -3,10 +3,12 @@ import hasPermi from './permission/hasPermi'
 | 
			
		||||
import dialogDrag from './dialog/drag'
 | 
			
		||||
import dialogDragWidth from './dialog/dragWidth'
 | 
			
		||||
import dialogDragHeight from './dialog/dragHeight'
 | 
			
		||||
import clipboard from './module/clipboard'
 | 
			
		||||
 | 
			
		||||
const install = function(Vue) {
 | 
			
		||||
  Vue.directive('hasRole', hasRole)
 | 
			
		||||
  Vue.directive('hasPermi', hasPermi)
 | 
			
		||||
  Vue.directive('clipboard', clipboard)
 | 
			
		||||
  Vue.directive('dialogDrag', dialogDrag)
 | 
			
		||||
  Vue.directive('dialogDragWidth', dialogDragWidth)
 | 
			
		||||
  Vue.directive('dialogDragHeight', dialogDragHeight)
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										54
									
								
								ruoyi-ui/src/directive/module/clipboard.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								ruoyi-ui/src/directive/module/clipboard.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,54 @@
 | 
			
		||||
/**
 | 
			
		||||
* v-clipboard 文字复制剪贴
 | 
			
		||||
* Copyright (c) 2021 ruoyi
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
import Clipboard from 'clipboard'
 | 
			
		||||
export default {
 | 
			
		||||
  bind(el, binding, vnode) {
 | 
			
		||||
    switch (binding.arg) {
 | 
			
		||||
      case 'success':
 | 
			
		||||
        el._vClipBoard_success = binding.value;
 | 
			
		||||
        break;
 | 
			
		||||
      case 'error':
 | 
			
		||||
        el._vClipBoard_error = binding.value;
 | 
			
		||||
        break;
 | 
			
		||||
      default: {
 | 
			
		||||
        const clipboard = new Clipboard(el, {
 | 
			
		||||
          text: () => binding.value,
 | 
			
		||||
          action: () => binding.arg === 'cut' ? 'cut' : 'copy'
 | 
			
		||||
        });
 | 
			
		||||
        clipboard.on('success', e => {
 | 
			
		||||
          const callback = el._vClipBoard_success;
 | 
			
		||||
          callback && callback(e);
 | 
			
		||||
        });
 | 
			
		||||
        clipboard.on('error', e => {
 | 
			
		||||
          const callback = el._vClipBoard_error;
 | 
			
		||||
          callback && callback(e);
 | 
			
		||||
        });
 | 
			
		||||
        el._vClipBoard = clipboard;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  update(el, binding) {
 | 
			
		||||
    if (binding.arg === 'success') {
 | 
			
		||||
      el._vClipBoard_success = binding.value;
 | 
			
		||||
    } else if (binding.arg === 'error') {
 | 
			
		||||
      el._vClipBoard_error = binding.value;
 | 
			
		||||
    } else {
 | 
			
		||||
      el._vClipBoard.text = function () { return binding.value; };
 | 
			
		||||
      el._vClipBoard.action = () => binding.arg === 'cut' ? 'cut' : 'copy';
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  unbind(el, binding) {
 | 
			
		||||
    if (!el._vClipboard) return
 | 
			
		||||
    if (binding.arg === 'success') {
 | 
			
		||||
      delete el._vClipBoard_success;
 | 
			
		||||
    } else if (binding.arg === 'error') {
 | 
			
		||||
      delete el._vClipBoard_error;
 | 
			
		||||
    } else {
 | 
			
		||||
      el._vClipBoard.destroy();
 | 
			
		||||
      delete el._vClipBoard;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user