{"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\\service.js","dependencies":[{"path":"D:\\jenkins\\workspace\\artfess-module\\src\\service.js","mtime":1675232038856},{"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/web.dom.iterable\";\nimport \"core-js/modules/es6.regexp.split\";\nimport utils from \"@/utils.js\";\nvar service = {\n  // 对联动规则进行处理\n  linkageHandler: function linkageHandler(_me, exp) {\n    if (!_me || !_me._isVue) {\n      throw \"传入的对象为空或者不是VueComponent类型.\";\n    }\n\n    if (!exp || exp.constructor !== Object && exp.constructor !== Array) {\n      throw \"\\u4F20\\u5165\\u7684\\u5BF9\\u8C61\".concat(exp, \"\\u4E3A\\u7A7A\\uFF0C\\u6216\\u8005\\u65E2\\u4E0D\\u662FObject\\u7C7B\\u578B\\u4E5F\\u4E0D\\u662FArray\\u7C7B\\u578B.\");\n    }\n\n    var linkageExp = exp;\n\n    if (exp.constructor === Object) {\n      linkageExp = [exp];\n    }\n\n    var pInst = utils.getOnlineFormInstance(_me);\n\n    if (!pInst) {\n      throw \"没有获取到控件所在的表单\";\n    } // 当前控件的联动轨迹\n\n\n    _me.traces = {}; //修改子表或孙表行内联动权限\n\n    var operationEleByPermission = function operationEleByPermission(n, permission) {\n      var idxObj = utils.getSubScopeElAndIndex(_me.$el);\n      var tpaths = n.target.split('.');\n      var fPoint = n.boType + '_' + tpaths[tpaths.length - 2] + '_' + tpaths[tpaths.length - 1] + '_' + idxObj.index;\n      var basePath = 'permission.subFields'; //孙表时，获取孙表所属子表序号\n\n      if (n.boType == 'sun') {\n        var subIdxObj = utils.getSubScopeElAndIndex(idxObj.subScopeEl.parentElement);\n        fPoint = n.boType + '_' + tpaths[tpaths.length - 2] + '_' + tpaths[tpaths.length - 1] + '_' + subIdxObj.index + '_' + idxObj.index;\n      }\n\n      if (!pInst.permission['subFields']) {\n        utils.setValueByPath(pInst, basePath, {});\n      }\n\n      utils.setValueByPath(pInst, basePath + '.' + fPoint, permission);\n    };\n\n    linkageExp.forEach(function (m) {\n      m.effect.forEach(function (n) {\n        // 联动会影响字段的显示、隐藏、必填等权限，以及字段的校验规则。\n        // 这里先将这两部分信息存放起来作为恢复的轨迹数据\n        _me.traces[n.target] = utils.getValueByPath(pInst, n.target);\n      });\n    });\n\n    _me.$watch(\"inputVal\", function (newVal, oldVal) {\n      if (newVal !== oldVal) {\n        // 两个对象是否相等\n        if (newVal && newVal.constructor == Object && utils.objectEquals(newVal, oldVal)) {\n          return;\n        } // 两个数组是否相等\n\n\n        if (newVal && newVal.constructor == Array && utils.arrayEquals(newVal, oldVal)) {\n          return;\n        } // 在联动触发之前，先还原一次\n\n\n        linkageExp.forEach(function (m) {\n          m.effect.forEach(function (n) {\n            if (n.target) {\n              var boType = n.boType;\n              var traceValue = _me.traces[n.target];\n\n              if (boType && (boType == 'sub' || boType == 'sun')) {\n                operationEleByPermission(n, traceValue);\n              } else {\n                utils.setValueByPath(pInst, n.target, traceValue);\n              }\n            }\n\n            if (n.ref && n.ref.indexOf(\"sub_\") != -1) {\n              var arr = n.ref.split(\".\"); //子表\n\n              if (arr.length == 4) {\n                if (n.ref && document.querySelector('[model-name=\"' + n.ref + '\"]')) {\n                  var idxObj = utils.getSubScopeElAndIndex(_me.$el); //获取子表对象（含下标)\n\n                  var subModeNameArray = document.querySelectorAll('[model-name=\"' + n.ref + '\"]');\n                  subModeNameArray[idxObj.index].__vue__._data.newValidate = null;\n                }\n              }\n            } else {\n              //主表\n              if (n.ref && document.querySelector('[model-name=\"' + n.ref + '\"]')) {\n                document.querySelector('[model-name=\"' + n.ref + '\"]').__vue__._data.newValidate = null;\n              }\n            }\n          });\n        });\n        linkageExp.forEach(function (m) {\n          // 是否匹配联动要求的值\n          var match = false;\n\n          if (newVal) {\n            if (newVal.constructor === String) {\n              match = newVal === m.value;\n            } else if (newVal.constructor === Array) {\n              match = newVal.some(function (v) {\n                return v === m.value;\n              });\n            }\n          }\n\n          m.effect.forEach(function (n) {\n            if (match) {\n              switch (n.type) {\n                // 直接赋值\n                case \"=\":\n                  //如果表单是只读的情况下,控件的必填与可编辑替换成只读\n                  var v = n.value;\n\n                  if (pInst.isLook && (n.value === 'b' || n.value === 'w')) {\n                    v = 'r';\n                  }\n\n                  var boType = n.boType;\n\n                  if (boType && (boType == 'sub' || boType == 'sun')) {\n                    operationEleByPermission(n, v);\n                  } else {\n                    utils.setValueByPath(pInst, n.target, v);\n                  }\n\n                  break;\n                // 追加验证规则\n\n                case \"+\":\n                  if (!n.value || n.value.constructor !== Object && n.value.constructor !== String) {\n                    throw \"\\u8054\\u52A8\\u65F6\\u8981\\u8FFD\\u52A0\\u7684\\u9A8C\\u8BC1\\u89C4\\u5219\".concat(n.value, \"\\u65E2\\u4E0D\\u662FString\\u7C7B\\u578B\\u4E5F\\u4E0D\\u662FObject\\u7C7B\\u578B\");\n                  }\n\n                  if (n.target) {\n                    // 获取旧的校验规则\n                    var oldValid = utils.getValueByPath(pInst, n.target); // 将旧规则与新规则进行融合\n\n                    var newValid = utils.mergeValidate(oldValid, n.value); // 更新融合后的规则\n\n                    utils.setValueByPath(pInst, n.target, newValid);\n                  }\n\n                  if (n.ref) {\n                    setTimeout(function () {\n                      if (document.querySelector('[model-name=\"' + n.ref + '\"]')) {\n                        if (n.ref && n.ref.indexOf(\"sub_\") != -1) {\n                          var arr = n.ref.split(\".\"); //子表\n\n                          if (arr.length == 4) {\n                            var idxObj = utils.getSubScopeElAndIndex(_me.$el);\n                            var subModeNameArray = document.querySelectorAll('[model-name=\"' + n.ref + '\"]');\n                            var targetVnode = subModeNameArray[idxObj.index].__vue__;\n                            var _oldValid = targetVnode.validate; // 将旧规则与新规则进行融合\n\n                            var _newValid = utils.mergeValidate(_oldValid, n.value);\n\n                            targetVnode._data.newValidate = _newValid;\n                          }\n                        } else {\n                          //主表\n                          var _targetVnode = document.querySelector('[model-name=\"' + n.ref + '\"]').__vue__;\n\n                          var _oldValid2 = _targetVnode.validate; // 将旧规则与新规则进行融合\n\n                          var _newValid2 = utils.mergeValidate(_oldValid2, n.value);\n\n                          _targetVnode._data.newValidate = _newValid2;\n                        }\n                      }\n                    }, 100);\n                  }\n\n                  break;\n                // 减少验证规则\n\n                case \"-\":\n                  if (!n.value || n.value.constructor !== Object && n.value.constructor !== String) {\n                    throw \"\\u8054\\u52A8\\u65F6\\u8981\\u51CF\\u5C11\\u7684\\u9A8C\\u8BC1\\u89C4\\u5219\".concat(n.value, \"\\u65E2\\u4E0D\\u662FString\\u7C7B\\u578B\\u4E5F\\u4E0D\\u662FObject\\u7C7B\\u578B\");\n                  }\n\n                  if (n.target) {\n                    // 获取旧的规则\n                    var oldV = utils.getValueByPath(pInst, n.target); // 从旧的规则移除指定规则\n\n                    var newValidate = utils.reduceValidate(oldV, n.value); // 更新规则\n\n                    utils.setValueByPath(pInst, n.target, newValidate);\n                  }\n\n                  if (n.ref) {\n                    var _oldValid3 = pInst.$refs[n.ref].validate; // 将旧规则与新规则进行融合\n\n                    var _newValid3 = utils.reduceValidate(_oldValid3, n.value);\n\n                    pInst.$refs[n.ref].newValidate = _newValid3;\n                  }\n\n                  break;\n              }\n            }\n          });\n        });\n      }\n    }, {\n      immediate: true\n    });\n  },\n  // 通用查询\n  commonQuery: function commonQuery(_me, exp) {\n    debugger;\n  }\n};\nexport default service;",null]}