{"remainingRequest":"D:\\jenkins\\workspace\\xq-web-fvue\\node_modules\\thread-loader\\dist\\cjs.js!D:\\jenkins\\workspace\\xq-web-fvue\\node_modules\\babel-loader\\lib\\index.js!D:\\jenkins\\workspace\\xq-web-fvue\\node_modules\\eslint-loader\\index.js??ref--13-0!D:\\jenkins\\workspace\\xq-web-fvue\\src\\components\\eipControl\\bus\\CustomQuery.js","dependencies":[{"path":"D:\\jenkins\\workspace\\xq-web-fvue\\src\\components\\eipControl\\bus\\CustomQuery.js","mtime":1667327529309},{"path":"D:\\jenkins\\workspace\\xq-web-fvue\\babel.config.js","mtime":1667327525434},{"path":"D:\\jenkins\\workspace\\xq-web-fvue\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xq-web-fvue\\node_modules\\thread-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xq-web-fvue\\node_modules\\babel-loader\\lib\\index.js","mtime":315532800000},{"path":"D:\\jenkins\\workspace\\xq-web-fvue\\node_modules\\eslint-loader\\index.js","mtime":499162500000}],"contextDependencies":[],"result":["import \"core-js/modules/es7.object.get-own-property-descriptors\";\nimport \"core-js/modules/es6.object.keys\";\nimport _defineProperty from \"D:/jenkins/workspace/xq-web-fvue/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";\nimport \"core-js/modules/web.dom.iterable\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nimport store from \"@/store.js\";\nimport utils from \"@/hotent-ui-util.js\";\nimport req from \"@/request.js\";\nimport { Message } from \"element-ui\";\nvar CustomQuery = {\n  /**\r\n   * 通过别名获取关联查询定义\r\n   */\n  get: function get(alias) {\n    return new Promise(function (resolve, reject) {\n      if (!alias) {\n        reject(\"alias can not be null.\");\n      }\n\n      var _query = null; // 通过vuex加载关联查询对象\n\n      var unwatchMethod = store.watch(function (state) {\n        return state.form.customQueryData;\n      }, function (val) {\n        if (val) {\n          _query = val[alias];\n        }\n\n        if (_query) {\n          setTimeout(function () {\n            // 获取到指定别名的关联查询后即移除watch\n            unwatchMethod && unwatchMethod();\n          }, 10);\n          resolve(_query);\n        }\n      }, {\n        deep: true,\n        immediate: true\n      });\n      setTimeout(function () {\n        // vuex缓存的数据中没找到关联查询时，查询后台\n        !_query && store.dispatch(\"form/getCustomQuery\", alias); // 15秒后未找到关联查询时，移除watch并显示错误信息。\n\n        setTimeout(function () {\n          if (!_query) {\n            unwatchMethod();\n            reject();\n\n            CustomQuery._throwException(\"\\u672A\\u627E\\u5230\\u522B\\u540D\\u4E3A\".concat(alias, \"\\u7684\\u5173\\u8054\\u67E5\\u8BE2\"));\n          }\n        }, 15000);\n      }, 10);\n    });\n  },\n\n  /**\r\n  * 通过别名获取对话框\r\n  */\n  getDialog: function getDialog(alias) {\n    return new Promise(function (resolve, reject) {\n      if (!alias) {\n        reject(\"alias can not be null.\");\n      }\n\n      var _query = null; // 通过vuex加载关联查询对象\n\n      var unwatchMethod = store.watch(function (state) {\n        return state.form.customDialogData;\n      }, function (val) {\n        if (val) {\n          _query = val[alias];\n        }\n\n        if (_query) {\n          setTimeout(function () {\n            // 获取到指定别名的关联查询后即移除watch\n            unwatchMethod && unwatchMethod();\n          }, 10);\n          resolve(_query);\n        }\n      }, {\n        deep: true,\n        immediate: true\n      });\n      setTimeout(function () {\n        // vuex缓存的数据中没找到关联查询时，查询后台\n        !_query && store.dispatch(\"form/getCustomDialog\", alias); // 15秒后未找到关联查询时，移除watch并显示错误信息。\n\n        setTimeout(function () {\n          if (!_query) {\n            unwatchMethod();\n            reject();\n\n            CustomQuery._throwException(\"\\u672A\\u627E\\u5230\\u522B\\u540D\\u4E3A\".concat(alias, \"\\u7684\\u5173\\u8054\\u67E5\\u8BE2\"));\n          }\n        }, 15000);\n      }, 10);\n    });\n  },\n\n  /**\r\n   * 传入关联查询别名和查询参数，返回查询到的数据\r\n   */\n  load: function load(alias, params) {\n    return new Promise(function (resolve, reject) {\n      CustomQuery.get(alias).then(function (query) {\n        // 执行关联查询\n        CustomQuery._doQuery(query, params, '1', function (data) {\n          resolve(data);\n        });\n      }, function () {\n        reject();\n      });\n    });\n  },\n\n  /**\r\n   * 传入对话框别名和查询参数，返回查询到的数据\r\n   */\n  loadDialog: function loadDialog(alias, params) {\n    return new Promise(function (resolve, reject) {\n      CustomQuery.getDialog(alias).then(function (query) {\n        // 执行关联查询\n        CustomQuery._doQuery(query, params, '2', function (data) {\n          resolve(data);\n        });\n      }, function () {\n        reject();\n      });\n    });\n  },\n  _throwException: function _throwException(msg) {\n    Message.error(msg);\n    throw msg;\n  },\n  // 处理POST请求时的参数\n  _handlePostData: function _handlePostData(query, queryParams) {\n    if (!query.dataParam || query.dataParam.constructor != String) {\n      return queryParams;\n    } // 构建上下文数据对象\n\n\n    var ctx = {};\n    queryParams && queryParams.forEach(function (element) {\n      ctx[element.key] = element.value;\n    });\n    var exp = utils.parseExp(query.dataParam, ctx);\n\n    try {\n      return JSON.parse(exp);\n    } catch (e) {\n      CustomQuery._throwException(\"POST\\u53C2\\u6570\\u4E0D\\u662F\\u6709\\u6548\\u7684JSON\\u683C\\u5F0F\".concat(query.dataParam));\n    }\n  },\n  // 处理GET请求的URL（GET请求的查询参数追加到URL后面）\n  _handleGetUrl: function _handleGetUrl(url, queryParams) {\n    if (!url) {\n      CustomQuery._throwException('Restful类型的url地址为空');\n    }\n\n    var urlParamsAry = [];\n    queryParams && queryParams.forEach(function (q) {\n      urlParamsAry.push(\"\".concat(q.key, \"=\").concat(q.value));\n    });\n    var linkWord = url.indexOf(\"?\") == -1 ? \"?\" : \"&\";\n    return \"\".concat(url).concat(linkWord).concat(urlParamsAry.join(\"&\"));\n  },\n  _doQuery: function _doQuery(query, params, type, cb) {\n    params = params || {}; // 复制一份关联查询对象\n\n    query = _objectSpread({}, query); // 关联数据始终查询第一页\n\n    var page = 1; // 关联数据查询参数\n\n    var queryParams = [];\n\n    if (query.conditionfield) {\n      try {\n        var conditionFields = JSON.parse(query.conditionfield); // 构建查询参数\n\n        if (conditionFields && conditionFields.constructor == Array && conditionFields.length > 0) {\n          conditionFields.forEach(function (c) {\n            // 默认按照固定值构建查询参数\n            var obj = {\n              key: c.field,\n              value: c.defaultValue\n            }; // 参数传入时获取传入的params中的同名参数值\n\n            if (c.defaultType == \"1\") {\n              if (params.hasOwnProperty(c.field)) {\n                obj.value = params[c.field];\n              }\n            }\n\n            queryParams.push(obj);\n          });\n        }\n      } catch (e) {\n        CustomQuery._throwException(\"\\u6761\\u4EF6\\u5B57\\u6BB5\\u7684JSON\\u683C\\u5F0F\\u9519\\u8BEF\\uFF1A\".concat(e));\n      }\n    }\n\n    if (query.dsType != \"dataSource\") {\n      // POST请求，则处理queryParams参数\n      if (query.requestType == \"POST\") {\n        queryParams = CustomQuery._handlePostData(query, queryParams);\n      } // GET请求，则处理url地址\n      else if (query.requestType == \"GET\") {\n        query.url = CustomQuery._handleGetUrl(query.url, queryParams);\n      }\n    } // 构建查询地址\n\n\n    var queryUrl = query.dsType == \"dataSource\" ? \"${form}/form/customQuery/v1/doQuery?alias=\" + query.alias + \"&page=\" + page : query.url; // 处理url地址中的${服务名}\n\n    queryUrl = utils.parseUrl(queryUrl);\n    var requestMethod = \"POST\"; //如果关联数据列表查询数据不是数据源则请求方法为restful配置的请求方式\n\n    if (query.dsType != \"dataSource\") {\n      requestMethod = query.requestType;\n    } //查询数据\n\n\n    var response = req.request({\n      url: queryUrl,\n      method: requestMethod,\n      data: queryParams,\n      headers: query.header\n    }).then(function (response) {\n      //自定义对话框因为要显示分页信息，并且显示字段的key是小写，故此处直接返回，由自定义对话框组件本身处理数据\n      if (type == '2') {\n        var data = CustomQuery._handleDialogResponse(response.data, query);\n\n        cb(data);\n      } else {\n        //如果数据来源是数据源\n        if (query.dsType == \"dataSource\") {\n          cb(response.data.rows);\n        } else {\n          // 如果数据来源是REST接口\n          var _data = CustomQuery._handleResponse(response.data, query.listKey);\n\n          cb(_data);\n        }\n      }\n    }, function (reason) {\n      cb([]);\n\n      CustomQuery._throwException(reason);\n    });\n  },\n  _handleDialogResponse: function _handleDialogResponse(data, query) {\n    if (!data) {\n      Message.error(\"返回的数据为空\");\n      return [];\n    }\n\n    if (data.constructor == String) {\n      try {\n        data = JSON.parse(data);\n      } catch (e) {\n        CustomQuery._throwException(\"\\u5C06\\u8FD4\\u56DE\\u503C\\u89E3\\u6790\\u4E3AJSON\\u5BF9\\u8C61\\u65F6\\u51FA\\u9519\\u4E86\\uFF1A\".concat(e));\n      }\n    }\n\n    var result = {\n      rows: []\n    };\n\n    if (data.constructor == Object) {\n      if (query.dsType == \"dataSource\") {\n        if (data && data.rows) {\n          result.rows = data.rows; //如果有分页\n\n          if (data.page) {\n            result.pageResult = {\n              page: data.page,\n              pageSize: data.pageSize,\n              total: data.total\n            };\n          }\n        }\n      } else {\n        // 如果没有指定提取key，则将返回值包装为列表\n        if (!query.listKey) {\n          result.rows = [data];\n        } else {\n          try {\n            result.rows = utils.getValueByPath(data, query.listKey) || []; //如果有分页\n\n            if (query.pageKey && data[query.pageKey]) {\n              result.pageResult = {\n                page: data[query.pageKey],\n                pageSize: data[query.pageSizeKey],\n                total: data[query.totalKey]\n              };\n            }\n          } catch (e) {\n            CustomQuery._throwException(\"\\u4ECE\\u8FD4\\u56DE\\u7684\\u6570\\u636E\\u4E2D\\u63D0\\u53D6\\u6570\\u7EC4\\u65F6\\u51FA\\u9519\\u4E86\\uFF1A\".concat(e));\n          }\n        }\n      }\n    } else if (data.constructor == Array) {\n      // 已经是数组类型时，不再通过rowsKey提取\n      result.rows = data;\n    } else {\n      CustomQuery._throwException(\"\\u8FD4\\u56DE\\u7684\\u6570\\u636E\\u65E0\\u6CD5\\u89E3\\u6790:\".concat(data));\n    }\n\n    result.rows = CustomQuery._listKeyToLower(result.rows);\n    return result;\n  },\n  _handleResponse: function _handleResponse(data, rowsKey) {\n    if (!data) {\n      Message.error(\"返回的数据为空\");\n      return [];\n    }\n\n    if (data.constructor == String) {\n      try {\n        data = JSON.parse(data);\n      } catch (e) {\n        CustomQuery._throwException(\"\\u5C06\\u8FD4\\u56DE\\u503C\\u89E3\\u6790\\u4E3AJSON\\u5BF9\\u8C61\\u65F6\\u51FA\\u9519\\u4E86\\uFF1A\".concat(e));\n      }\n    }\n\n    if (data.constructor == Object) {\n      // 如果没有指定提取key，则将返回值包装为列表\n      if (!rowsKey) {\n        return [data];\n      }\n\n      try {\n        return utils.getValueByPath(data, rowsKey);\n      } catch (e) {\n        CustomQuery._throwException(\"\\u4ECE\\u8FD4\\u56DE\\u7684\\u6570\\u636E\\u4E2D\\u63D0\\u53D6\\u6570\\u7EC4\\u65F6\\u51FA\\u9519\\u4E86\\uFF1A\".concat(e));\n      }\n    } else if (data.constructor == Array) {\n      // 已经是数组类型时，不再通过rowsKey提取\n      return data;\n    } else {\n      CustomQuery._throwException(\"\\u8FD4\\u56DE\\u7684\\u6570\\u636E\\u65E0\\u6CD5\\u89E3\\u6790:\".concat(data));\n    }\n  },\n  _listKeyToLower: function _listKeyToLower(list) {\n    var newRows = []; //不知道为什么724的某个版本自定义对话框的显示字段key后台被转小写了，所以此处把返回值也转小写\n\n    var _loop = function _loop(i) {\n      var data = list[i];\n      var keys = Object.keys(data);\n      var objRows = {};\n      keys.forEach(function (key) {\n        objRows[key.toLowerCase()] = data[key];\n      });\n      newRows.push(objRows);\n    };\n\n    for (var i = 0; i < list.length; i++) {\n      _loop(i);\n    }\n\n    return newRows;\n  }\n};\nexport default CustomQuery;",null]}