permission.js 833 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import store from "@/store";
  2. function change(el, binding) {
  3. el.style.display = checkPerm(binding.value) ? el.getAttribute("_display") : "none";
  4. }
  5. function parse(value) {
  6. const permission = store.getters.permission;
  7. if (typeof value == "string") {
  8. return value ? permission.some((e) => e.includes(value.replace(/\s/g, ""))) : false;
  9. } else {
  10. return Boolean(value);
  11. }
  12. }
  13. export default {
  14. inserted(el, binding) {
  15. el.setAttribute("_display", el.style.display || "");
  16. change(el, binding);
  17. },
  18. update: change
  19. };
  20. export const checkPerm = (value) => {
  21. if (!value) {
  22. return false;
  23. }
  24. if (Object.prototype.toString.call(value) === "[object Object]") {
  25. if (value.or) {
  26. return value.or.some(parse);
  27. }
  28. if (value.and) {
  29. return value.and.some((e) => !parse(e)) ? false : true;
  30. }
  31. }
  32. return parse(value);
  33. };