directive.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import Vue from "vue";
  2. // import store from '@/store'
  3. // let permissionArr = store.getters.permission
  4. Vue.directive("permission", {
  5. inserted(el, binding) {
  6. let value = binding.value;
  7. let permission = window.localStorage.getItem("permission");
  8. permission = permission.split(",");
  9. // 如果一个权限判断不了则用两个
  10. // 格式: v-permission="{child: 'child', parent: 'parent'}"
  11. // 在特殊情况下才会用到两个参数,基本情况只会用到一个标识
  12. if (typeof value == "string") {
  13. if (!permission.includes(value)) {
  14. // el.style.display = 'none'
  15. el.parentNode && el.parentNode.removeChild(el);
  16. }
  17. } else {
  18. if (
  19. permission.includes(value.parent) &&
  20. permission.includes(value.child)
  21. ) {
  22. // el.style.display = 'none'
  23. } else {
  24. el.parentNode && el.parentNode.removeChild(el);
  25. }
  26. }
  27. }
  28. });
  29. Vue.directive("number", {
  30. inserted(el) {
  31. el.oninput = function(e) {
  32. let value = "" + e.target.value;
  33. if (value.indexOf(".") != -1) {
  34. let arr = value.split("");
  35. arr.splice(arr.length - 1);
  36. let str2 = arr.join("");
  37. e.target.value = +str2;
  38. return;
  39. }
  40. };
  41. }
  42. });
  43. /** 防止重复点击指令 */
  44. Vue.directive("preventReClick", {
  45. mounted(el, binding) {
  46. el.addEventListener("click", () => {
  47. if (!el.disabled) {
  48. el.disabled = true;
  49. setTimeout(() => {
  50. el.disabled = false;
  51. }, binding.value || 2000);
  52. }
  53. });
  54. }
  55. });