{"remainingRequest":"D:\\jenkins\\workspace\\artfess-module\\node_modules\\thread-loader\\dist\\cjs.js!D:\\jenkins\\workspace\\artfess-module\\node_modules\\babel-loader\\lib\\index.js!D:\\jenkins\\workspace\\artfess-module\\src\\directive.js","dependencies":[{"path":"D:\\jenkins\\workspace\\artfess-module\\src\\directive.js","mtime":1675232038762},{"path":"D:\\jenkins\\workspace\\artfess-module\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\artfess-module\\node_modules\\thread-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\artfess-module\\node_modules\\babel-loader\\lib\\index.js","mtime":315532800000}],"contextDependencies":[],"result":["import \"core-js/modules/es6.regexp.split\";\nimport \"core-js/modules/es6.string.iterator\";\nimport \"core-js/modules/es6.map\";\nimport \"core-js/modules/es6.function.name\";\nimport \"core-js/modules/es6.regexp.flags\";\nimport \"core-js/modules/es6.number.constructor\";\nimport \"core-js/modules/web.dom.iterable\";\nimport Vue from \"vue\";\nimport utils from \"@/utils.js\";\nimport FormMath from \"@/math.js\";\nimport hljs from \"highlight.js\";\nvar directive = {};\n\ndirective.install = function (Vue) {\n  var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  // 代码高亮指令\n  Vue.directive('highlight', {\n    componentUpdated: function componentUpdated(el) {\n      setTimeout(function () {\n        var blocks = el.querySelectorAll('pre code');\n\n        if (blocks && blocks.constructor === Array) {\n          blocks.forEach(function (block) {\n            hljs.highlightBlock(block);\n          });\n        }\n      }, 1);\n    }\n  }); // 表单tr中根据隐藏字段动态合并单元格的指令\n\n  Vue.directive('permit', function (el, binding) {\n    if (el.tagName !== \"TR\") {\n      throw \"v-permit指令只能用在tr元素上.\";\n    }\n\n    if (!binding.value || binding.value.constructor !== Number) {\n      throw \"v-permit指令的值只能是大于0的数字.\";\n    }\n\n    el.removeAttribute(\"hidden\"); // tr中没有子元素时，删除tr自身\n\n    if (el.cells.length == 0) {\n      el.setAttribute(\"hidden\", \"hidden\");\n    } else if (el.cells.length < binding.value) {\n      var colspan = binding.value - el.cells.length + 1; // 设置colspan实现单元格合并\n\n      el.cells[el.cells.length - 1].setAttribute(\"colspan\", colspan);\n    } else if (el.cells.length == binding.value) {\n      for (var i = 0, c; c = el.cells[i++];) {\n        c.removeAttribute(\"colspan\");\n      }\n    }\n  }); // 表单指令，会在表单的vue实例上添加一个map，用以存放数学运算的表达式\n\n  Vue.directive('form', {\n    bind: function bind(el, binding, vnode) {\n      // 修正vee-validate中对于元素上的aria-invalid属性更新的问题\n      var judgeAriaInvalid = function judgeAriaInvalid(fields) {\n        if (!fields || fields.length == 0) {\n          return;\n        }\n\n        var fieldInst = fields.items[0];\n\n        var includes = function includes(collection, item) {\n          return collection.indexOf(item) !== -1;\n        };\n\n        var isCheckboxOrRadioInput = function isCheckboxOrRadioInput(el) {\n          return includes([\"radio\", \"checkbox\"], el.type);\n        };\n\n        var isCallable = function isCallable(func) {\n          return typeof func === \"function\";\n        };\n\n        Object.getPrototypeOf(fieldInst).constructor.prototype.updateAriaAttrs = function updateAriaAttrs() {\n          var this$1 = this;\n\n          if (!this.aria || !this.el || !isCallable(this.el.setAttribute)) {\n            return;\n          }\n\n          var applyAriaAttrs = function applyAriaAttrs(el) {\n            el.setAttribute(\"aria-required\", this$1.isRequired ? \"true\" : \"false\");\n            el.setAttribute(\"aria-invalid\", this$1.flags.invalid ? \"true\" : \"false\"); // 组件初次加载时，既不显示验证失败也不显示验证成功\n\n            if (this$1.flags.invalid == null) {\n              el.removeAttribute(\"aria-invalid\");\n            }\n          };\n\n          if (!isCheckboxOrRadioInput(this.el)) {\n            applyAriaAttrs(this.el);\n            return;\n          }\n\n          var els = document.querySelectorAll('input[name=\"' + this.el.name + '\"]');\n          toArray(els).forEach(applyAriaAttrs);\n        };\n      };\n\n      var inst = vnode.context;\n      inst.$root.$validator && judgeAriaInvalid(inst.$root.$validator.fields);\n\n      if (inst && !inst.hasOwnProperty(\"watchMap\")) {\n        inst[\"watchMap\"] = new Map();\n      }\n    }\n  }); // 判断输入框是否作为计算字段，是则添加监听\n\n  Vue.directive('express', {\n    componentUpdated: function componentUpdated(el, binding, vnode) {\n      var inst = vnode.context;\n\n      if (!inst.$vnode.data.model) {\n        return;\n      }\n\n      var elAttr = inst.$vnode.data.model.expression;\n\n      if (inst.$vnode && inst.$vnode.componentOptions && inst.$vnode.componentOptions.propsData && inst.$vnode.componentOptions.propsData.modelExpression) {\n        elAttr = inst.$vnode.componentOptions.propsData.modelExpression;\n      }\n\n      if (elAttr && !inst._expressInit) {\n        inst._expressInit = true; // 子表每一行数据作用域所在的dom元素\n\n        var _utils$getSubScopeElA = utils.getSubScopeElAndIndex(el),\n            subScopeEl = _utils$getSubScopeElA.subScopeEl;\n\n        var subname = null;\n        var aliasElAttr = null; // 子表数据，需要找到配置了data-subname的元素\n\n        if (subScopeEl) {\n          subname = subScopeEl.dataset[\"subname\"];\n\n          if (!subname) {\n            throw \"无法获取到当前子表前缀\";\n          }\n\n          var elAttrAry = elAttr.split(\".\"),\n              elAttrArySize = elAttrAry.length;\n\n          if (elAttrArySize < 1) {\n            throw \"\\u5B50\\u8868\\u4E2D\\u7684\\u6570\\u636E\\u7ED1\\u5B9A\\u8868\\u8FBE\\u5F0F\".concat(elAttr, \"\\u9519\\u8BEF\");\n          }\n\n          aliasElAttr = \"\".concat(subname, \".\").concat(elAttrAry[elAttrArySize - 1]);\n        }\n\n        var p = utils.getOnlineFormInstance(inst);\n\n        if (p.watchMap && (p.watchMap.has(elAttr) || p.watchMap.has(aliasElAttr))) {\n          if (!inst._watchers.some(function (m) {\n            return m.expression === 'inputVal';\n          })) {\n            inst.$watch(\"inputVal\", function (newVal, oldVal, farewell) {\n              if (newVal !== oldVal) {\n                var elAttrExpList = p.watchMap.get(elAttr) || [];\n                var aliasElAttrExpList = p.watchMap.get(aliasElAttr) || [];\n                var unionExpList = elAttrExpList.concat(aliasElAttrExpList);\n                var attrExpObj = {};\n                unionExpList.forEach(function (item) {\n                  var result = 0;\n                  var t = item.target;\n                  var targetList = attrExpObj[t] || [];\n\n                  if (targetList.indexOf(item.exp) < 0) {\n                    targetList.push(item.exp);\n                    attrExpObj[t] = targetList;\n\n                    if (subScopeEl && t.split(\".\").length == 2) {\n                      var index = subScopeEl.dataset[\"index\"];\n\n                      if (index === undefined) {\n                        throw \"获取不到当前子表行的索引，无法完成计算.\";\n                      }\n\n                      result = FormMath.calcSubExpValue(item.exp, p, subname, index);\n                      p.$emit(t, {\n                        result: result,\n                        index: index\n                      });\n                    } else {\n                      result = FormMath.calcExpValue(item.exp, p);\n                      p.$emit(t, {\n                        result: result\n                      });\n                    }\n                  }\n                });\n              }\n            }, {\n              immediate: true\n            });\n          }\n        }\n      }\n    }\n  }); // 注册一个过滤器，将byte单位的数值转换为合适单位的数值返回\n\n  Vue.filter(\"computerSize\", function renderSize(value) {\n    if (null == value || value == '') {\n      return \"0 Bytes\";\n    }\n\n    var unitArr = new Array(\"Bytes\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\");\n    var index = 0;\n    var srcsize = parseFloat(value);\n    index = Math.floor(Math.log(srcsize) / Math.log(1024));\n    var size = srcsize / Math.pow(1024, index);\n    size = size.toFixed(2); //保留的小数位数\n\n    return size + unitArr[index];\n  });\n  Vue.filter('dateformat', function (dataStr) {\n    var pattern = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'yyyy-MM-dd hh:mm:ss';\n\n    if (dataStr) {\n      if (pattern == 'yyyy-MM-dd hh:mm:ss') {\n        pattern = 'YYYY-MM-DD HH:mm:ss';\n      }\n\n      return new Date(dataStr).format(pattern);\n    } else {\n      return \"\";\n    }\n  });\n};\n\nif (typeof window !== 'undefined' && window.Vue) {\n  directive.install(window.Vue);\n}\n\nexport default directive;",null]}