{"version":3,"file":"main.4c4e0548.js","mappings":"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","sources":["webpack://insurance-ui/webpack/runtime/chunk loaded","webpack://insurance-ui/webpack/runtime/create fake namespace object","webpack://insurance-ui/webpack/runtime/load script","webpack://insurance-ui/webpack/runtime/css loading","webpack://insurance-ui/./src/components/ChildRoute/ChildRoute.js","webpack://insurance-ui/./src/hooks/useDocumentTitle.js","webpack://insurance-ui/./src/components/Loading/Loading.module.scss","webpack://insurance-ui/./src/components/Loading/Loading.js","webpack://insurance-ui/./src/assets/logo.png","webpack://insurance-ui/./src/components/PageHeader/i18n.js","webpack://insurance-ui/./src/components/PageHeader/PageHeader.module.scss","webpack://insurance-ui/./src/components/PageHeader/PageHeader.js","webpack://insurance-ui/./src/components/PageHeader/assets/message.png","webpack://insurance-ui/./src/components/PageHeader/assets/quit.png","webpack://insurance-ui/./src/components/PageLayout/PageLayout.module.scss","webpack://insurance-ui/./src/components/PageLayout/PageLayout.js","webpack://insurance-ui/./src/components/QueryTable/QueryTable.module.scss","webpack://insurance-ui/./src/components/QueryTable/QueryTable.js","webpack://insurance-ui/./src/components/form/ProductSelect/ProductSelect.js","webpack://insurance-ui/./src/hooks/useDebounce.js","webpack://insurance-ui/./src/hooks/useQuery.js","webpack://insurance-ui/./src/hooks/useSafeEffect.js","webpack://insurance-ui/./src/hooks/useScript.js","webpack://insurance-ui/./src/components/Copyright/Copyright.module.scss","webpack://insurance-ui/./src/components/Copyright/Copyright.js","webpack://insurance-ui/./src/utils/asyncHandler.js","webpack://insurance-ui/./src/utils/store.js","webpack://insurance-ui/./src/componentHOC/async-loader.js","webpack://insurance-ui/./src/components/SearchForm/SearchForm.module.scss","webpack://insurance-ui/./src/components/SearchForm/i18n.js","webpack://insurance-ui/./src/components/SearchForm/SearchForm.js","webpack://insurance-ui/./src/utils/openWindow.js","webpack://insurance-ui/./src/pages/CompanyReport/Query/ReportTable/i18n.js","webpack://insurance-ui/./src/pages/CompanyReport/redux.js","webpack://insurance-ui/./src/pages/CompanyReport/Query/ReportTable/ReportTable.module.scss","webpack://insurance-ui/./src/pages/CompanyReport/Query/ReportTable/ReportTable.js","webpack://insurance-ui/./src/pages/CompanyReport/Query/i18n.js","webpack://insurance-ui/./src/pages/CompanyReport/Query/Query.module.scss","webpack://insurance-ui/./src/pages/CompanyReport/Query/Query.js","webpack://insurance-ui/./src/pages/CompanyReport/ReportDetail/Summary/Summary.module.scss","webpack://insurance-ui/./src/pages/CompanyReport/ReportDetail/Summary/Summary.js","webpack://insurance-ui/./src/pages/CompanyReport/ReportDetail/TableSection/TableSection.module.scss","webpack://insurance-ui/./src/pages/CompanyReport/ReportDetail/TableSection/TableSection.js","webpack://insurance-ui/./src/pages/CompanyReport/ReportDetail/useTables.js","webpack://insurance-ui/./src/pages/CompanyReport/ReportDetail/ReportDetail.module.scss","webpack://insurance-ui/./src/pages/CompanyReport/routeList.js","webpack://insurance-ui/./src/pages/CompanyReport/ReportDetail/ReportDetail.js","webpack://insurance-ui/./src/pages/LifeInsuranceProductLibrary/redux.js","webpack://insurance-ui/./src/pages/LifeInsuranceProductLibrary/Query/ReportTable/i18n.js","webpack://insurance-ui/./src/pages/LifeInsuranceProductLibrary/Query/ReportTable/ReportTable.module.scss","webpack://insurance-ui/./src/pages/LifeInsuranceProductLibrary/Query/ReportTable/ReportTable.js","webpack://insurance-ui/./src/pages/LifeInsuranceProductLibrary/Query/i18n.js","webpack://insurance-ui/./src/pages/LifeInsuranceProductLibrary/Query/Query.module.scss","webpack://insurance-ui/./src/pages/LifeInsuranceProductLibrary/Query/Query.js","webpack://insurance-ui/./src/pages/LifeInsuranceProductLibrary/routeList.js","webpack://insurance-ui/./src/utils/downloadUrl.js","webpack://insurance-ui/./src/components/VipModal/assets/qr.jpg","webpack://insurance-ui/./src/components/VipModal/VipModal.module.scss","webpack://insurance-ui/./src/components/VipModal/VipModal.js","webpack://insurance-ui/./src/pages/ReportViewer/redux.js","webpack://insurance-ui/./src/pages/ReportViewer/ReportViewer.module.scss","webpack://insurance-ui/./src/pages/SummaryOfRegulatoryDocuments/Query/ReportTable/i18n.js","webpack://insurance-ui/./src/pages/SummaryOfRegulatoryDocuments/redux.js","webpack://insurance-ui/./src/pages/SummaryOfRegulatoryDocuments/Query/ReportTable/ReportTable.module.scss","webpack://insurance-ui/./src/pages/SummaryOfRegulatoryDocuments/Query/ReportTable/ReportTable.js","webpack://insurance-ui/./src/pages/SummaryOfRegulatoryDocuments/Query/i18n.js","webpack://insurance-ui/./src/pages/SummaryOfRegulatoryDocuments/Query/Query.module.scss","webpack://insurance-ui/./src/pages/SummaryOfRegulatoryDocuments/Query/Query.js","webpack://insurance-ui/./src/pages/SummaryOfRegulatoryDocuments/routeList.js","webpack://insurance-ui/./src/components/HighlightMatch/HighlightMatch.module.scss","webpack://insurance-ui/./src/components/HighlightMatch/HighlightMatch.js","webpack://insurance-ui/./src/pages/ContentRetrievalForDocument/Query/ReportTable/i18n.js","webpack://insurance-ui/./src/pages/ContentRetrievalForDocument/redux.js","webpack://insurance-ui/./src/pages/ContentRetrievalForDocument/Query/ReportTable/ReportTable.module.scss","webpack://insurance-ui/./src/pages/ContentRetrievalForDocument/Query/ReportTable/ReportTable.js","webpack://insurance-ui/./src/pages/ContentRetrievalForDocument/Query/i18n.js","webpack://insurance-ui/./src/pages/ContentRetrievalForDocument/Query/Query.module.scss","webpack://insurance-ui/./src/pages/ContentRetrievalForDocument/Query/Query.js","webpack://insurance-ui/./src/pages/ContentRetrievalForDocument/routeList.js","webpack://insurance-ui/./src/constants/options.js","webpack://insurance-ui/./src/pages/Product/UniversalInterestRate/Query/i18n.js","webpack://insurance-ui/./src/pages/Product/UniversalInterestRate/redux.js","webpack://insurance-ui/./src/pages/Product/UniversalInterestRate/Query/ReportTable/i18n.js","webpack://insurance-ui/./src/pages/Product/UniversalInterestRate/Query/ReportTable/ReportTable.js","webpack://insurance-ui/./src/pages/Product/UniversalInterestRate/Query/Query.module.scss","webpack://insurance-ui/./src/pages/Product/UniversalInterestRate/Query/Query.js","webpack://insurance-ui/./src/pages/Product/UniversalInterestRate/ProductRateContrast/Chart/Chart.js","webpack://insurance-ui/./src/pages/Product/UniversalInterestRate/ProductRateContrast/redux.js","webpack://insurance-ui/./src/pages/Product/UniversalInterestRate/ProductRateContrast/ProductRateContrast.module.scss","webpack://insurance-ui/./src/pages/Product/UniversalInterestRate/ProductRateContrast/ProductRateContrast.js","webpack://insurance-ui/./src/pages/Product/UniversalInterestRate/routeList.js","webpack://insurance-ui/./src/components/form/CompanySelect/CompanySelect.js","webpack://insurance-ui/./src/pages/Product/AnnuitiesInsurance/Query/options.js","webpack://insurance-ui/./src/utils/cellRender.js","webpack://insurance-ui/./src/pages/Product/AnnuitiesInsurance/redux.js","webpack://insurance-ui/./src/pages/Product/AnnuitiesInsurance/Query/ReportTable/i18n.js","webpack://insurance-ui/./src/pages/Product/AnnuitiesInsurance/Query/ReportTable/ReportTable.js","webpack://insurance-ui/./src/pages/Product/AnnuitiesInsurance/Query/i18n.js","webpack://insurance-ui/./src/pages/Product/AnnuitiesInsurance/Query/Query.module.scss","webpack://insurance-ui/./src/pages/Product/AnnuitiesInsurance/Query/Query.js","webpack://insurance-ui/./src/components/ContrastPanel/ContrastPanel.module.scss","webpack://insurance-ui/./src/components/ContrastPanel/ContrastPanel.js","webpack://insurance-ui/./src/pages/Product/AnnuitiesInsurance/Contrast/Contrast.module.scss","webpack://insurance-ui/./src/pages/Product/AnnuitiesInsurance/Contrast/Contrast.js","webpack://insurance-ui/./src/pages/Product/AnnuitiesInsurance/routeList.js","webpack://insurance-ui/./src/pages/Product/CriticalIllnessInsurance/Query/options.js","webpack://insurance-ui/./src/pages/Product/CriticalIllnessInsurance/Query/i18n.js","webpack://insurance-ui/./src/pages/Product/CriticalIllnessInsurance/redux.js","webpack://insurance-ui/./src/pages/Product/CriticalIllnessInsurance/Query/ReportTable/i18n.js","webpack://insurance-ui/./src/pages/Product/CriticalIllnessInsurance/Query/ReportTable/ReportTable.js","webpack://insurance-ui/./src/pages/Product/CriticalIllnessInsurance/Query/Query.module.scss","webpack://insurance-ui/./src/pages/Product/CriticalIllnessInsurance/Query/Query.js","webpack://insurance-ui/./src/pages/Product/CriticalIllnessInsurance/Contrast/Contrast.module.scss","webpack://insurance-ui/./src/pages/Product/CriticalIllnessInsurance/Contrast/Contrast.js","webpack://insurance-ui/./src/pages/Product/CriticalIllnessInsurance/routeList.js","webpack://insurance-ui/./src/pages/Product/IncrementalWholeLifeInsurance/Query/options.js","webpack://insurance-ui/./src/pages/Product/IncrementalWholeLifeInsurance/redux.js","webpack://insurance-ui/./src/pages/Product/IncrementalWholeLifeInsurance/Query/ReportTable/i18n.js","webpack://insurance-ui/./src/pages/Product/IncrementalWholeLifeInsurance/Query/ReportTable/ReportTable.js","webpack://insurance-ui/./src/pages/Product/IncrementalWholeLifeInsurance/Query/i18n.js","webpack://insurance-ui/./src/pages/Product/IncrementalWholeLifeInsurance/Query/Query.module.scss","webpack://insurance-ui/./src/pages/Product/IncrementalWholeLifeInsurance/Query/Query.js","webpack://insurance-ui/./src/pages/Product/IncrementalWholeLifeInsurance/Contrast/Rate/Chart.module.scss","webpack://insurance-ui/./src/pages/Product/IncrementalWholeLifeInsurance/Contrast/Rate/Chart.js","webpack://insurance-ui/./src/pages/Product/IncrementalWholeLifeInsurance/Contrast/Rate/Search.module.scss","webpack://insurance-ui/./src/pages/Product/IncrementalWholeLifeInsurance/Contrast/Rate/Search.js","webpack://insurance-ui/./src/pages/Product/IncrementalWholeLifeInsurance/Contrast/Rate/Detail.module.scss","webpack://insurance-ui/./src/pages/Product/IncrementalWholeLifeInsurance/Contrast/Rate/Detail.js","webpack://insurance-ui/./src/pages/Product/IncrementalWholeLifeInsurance/Contrast/Cash/redux.js","webpack://insurance-ui/./src/pages/Product/IncrementalWholeLifeInsurance/Contrast/Cash/Chart.module.scss","webpack://insurance-ui/./src/pages/Product/IncrementalWholeLifeInsurance/Contrast/Cash/Chart.js","webpack://insurance-ui/./src/pages/Product/IncrementalWholeLifeInsurance/Contrast/Cash/Search.module.scss","webpack://insurance-ui/./src/pages/Product/IncrementalWholeLifeInsurance/Contrast/Cash/Search.js","webpack://insurance-ui/./src/pages/Product/IncrementalWholeLifeInsurance/Contrast/Cash/Detail.module.scss","webpack://insurance-ui/./src/pages/Product/IncrementalWholeLifeInsurance/Contrast/Cash/Detail.js","webpack://insurance-ui/./src/pages/Product/IncrementalWholeLifeInsurance/Contrast/IRR/redux.js","webpack://insurance-ui/./src/pages/Product/IncrementalWholeLifeInsurance/Contrast/IRR/Chart.module.scss","webpack://insurance-ui/./src/pages/Product/IncrementalWholeLifeInsurance/Contrast/IRR/Chart.js","webpack://insurance-ui/./src/pages/Product/IncrementalWholeLifeInsurance/Contrast/IRR/Search.module.scss","webpack://insurance-ui/./src/pages/Product/IncrementalWholeLifeInsurance/Contrast/IRR/Search.js","webpack://insurance-ui/./src/pages/Product/IncrementalWholeLifeInsurance/Contrast/IRR/Detail.module.scss","webpack://insurance-ui/./src/pages/Product/IncrementalWholeLifeInsurance/Contrast/IRR/Detail.js","webpack://insurance-ui/./src/pages/Product/IncrementalWholeLifeInsurance/Contrast/Contrast.module.scss","webpack://insurance-ui/./src/pages/Product/IncrementalWholeLifeInsurance/Contrast/Contrast.js","webpack://insurance-ui/./src/pages/Product/IncrementalWholeLifeInsurance/Contrast/Rate/index.js","webpack://insurance-ui/./src/pages/Product/IncrementalWholeLifeInsurance/Contrast/Cash/index.js","webpack://insurance-ui/./src/pages/Product/IncrementalWholeLifeInsurance/Contrast/IRR/index.js","webpack://insurance-ui/./src/pages/Product/IncrementalWholeLifeInsurance/routeList.js","webpack://insurance-ui/./src/pages/Product/DividendRealizationRate/Query/options.js","webpack://insurance-ui/./src/pages/Product/DividendRealizationRate/redux.js","webpack://insurance-ui/./src/pages/Product/DividendRealizationRate/Query/ReportTable/i18n.js","webpack://insurance-ui/./src/pages/Product/DividendRealizationRate/Query/ReportTable/ReportTable.js","webpack://insurance-ui/./src/pages/Product/DividendRealizationRate/Query/i18n.js","webpack://insurance-ui/./src/pages/Product/DividendRealizationRate/Query/Query.module.scss","webpack://insurance-ui/./src/pages/Product/DividendRealizationRate/Query/Query.js","webpack://insurance-ui/./src/pages/Product/DividendRealizationRate/Contrast/Chart/Chart.js","webpack://insurance-ui/./src/pages/Product/DividendRealizationRate/Contrast/redux.js","webpack://insurance-ui/./src/pages/Product/DividendRealizationRate/Contrast/Contrast.module.scss","webpack://insurance-ui/./src/pages/Product/DividendRealizationRate/routeList.js","webpack://insurance-ui/./src/pages/Product/DividendRealizationRate/Contrast/Contrast.js","webpack://insurance-ui/./src/components/form/ProductSelect/SearchProduct.js","webpack://insurance-ui/./src/pages/Product/ExclusiveCommercialPensionInsurance/redux.js","webpack://insurance-ui/./src/pages/Product/ExclusiveCommercialPensionInsurance/Query/ReportTable/i18n.js","webpack://insurance-ui/./src/pages/Product/ExclusiveCommercialPensionInsurance/Query/ReportTable/ReportTable.js","webpack://insurance-ui/./src/pages/Product/ExclusiveCommercialPensionInsurance/Query/i18n.js","webpack://insurance-ui/./src/pages/Product/ExclusiveCommercialPensionInsurance/Query/options.js","webpack://insurance-ui/./src/pages/Product/ExclusiveCommercialPensionInsurance/Query/Query.module.scss","webpack://insurance-ui/./src/pages/Product/ExclusiveCommercialPensionInsurance/Query/Query.js","webpack://insurance-ui/./src/pages/Product/ExclusiveCommercialPensionInsurance/Contrast/Chart/Chart.js","webpack://insurance-ui/./src/pages/Product/ExclusiveCommercialPensionInsurance/Contrast/redux.js","webpack://insurance-ui/./src/pages/Product/ExclusiveCommercialPensionInsurance/Contrast/Contrast.module.scss","webpack://insurance-ui/./src/pages/Product/ExclusiveCommercialPensionInsurance/Contrast/Contrast.js","webpack://insurance-ui/./src/pages/Product/ExclusiveCommercialPensionInsurance/routeList.js","webpack://insurance-ui/./src/pages/Product/routeList.js","webpack://insurance-ui/./src/pages/Product/DividendRealizationRate/index.js","webpack://insurance-ui/./src/pages/Product/UniversalInterestRate/index.js","webpack://insurance-ui/./src/pages/Product/AnnuitiesInsurance/index.js","webpack://insurance-ui/./src/pages/Product/CriticalIllnessInsurance/index.js","webpack://insurance-ui/./src/pages/Product/IncrementalWholeLifeInsurance/index.js","webpack://insurance-ui/./src/pages/Product/ExclusiveCommercialPensionInsurance/index.js","webpack://insurance-ui/./src/pages/ProductReport/ProductReport.module.scss","webpack://insurance-ui/./src/pages/ProductReport/assets/bg.png","webpack://insurance-ui/./src/pages/ProductReport/assets/icon.png","webpack://insurance-ui/./src/pages/ProductReport/assets/cover.png","webpack://insurance-ui/./src/pages/ProductReport/ProductReport.js","webpack://insurance-ui/./src/router.js","webpack://insurance-ui/./src/pages/CompanyReport/index.js","webpack://insurance-ui/./src/pages/LifeInsuranceProductLibrary/index.js","webpack://insurance-ui/./src/pages/ReportViewer/ReportViewer.js","webpack://insurance-ui/./src/pages/Product/index.js","webpack://insurance-ui/./src/pages/SummaryOfRegulatoryDocuments/index.js","webpack://insurance-ui/./src/pages/ContentRetrievalForDocument/index.js","webpack://insurance-ui/./src/main.js","webpack://insurance-ui/./src/index.js","webpack://insurance-ui/./src/pages/LifeInsuranceProductLibrary/Query/options/i18n.js","webpack://insurance-ui/./src/pages/LifeInsuranceProductLibrary/Query/options/useOptions.js","webpack://insurance-ui/./src/redux/enums.js","webpack://insurance-ui/./src/redux/hooks/enums.js","webpack://insurance-ui/./src/redux/i18n.js","webpack://insurance-ui/./src/utils/monitor.js","webpack://insurance-ui/./src/utils/tracker.js","webpack://insurance-ui/./src/redux/user.js","webpack://insurance-ui/./src/utils/decrypt.js","webpack://insurance-ui/./src/utils/history.js","webpack://insurance-ui/./src/utils/http/http.js","webpack://insurance-ui/./src/utils/json.js","webpack://insurance-ui/./src/utils/properties.js","webpack://insurance-ui/./src/utils/redux/location.js","webpack://insurance-ui/./src/utils/redux/reducer.js","webpack://insurance-ui/./src/utils/redux/createStore.js","webpack://insurance-ui/./src/utils/redux/asyncMiddleware.js","webpack://insurance-ui/./src/utils/redux/index.js","webpack://insurance-ui/./src/utils/storage.js","webpack://insurance-ui/webpack/bootstrap","webpack://insurance-ui/webpack/runtime/amd options","webpack://insurance-ui/webpack/runtime/compat get default export","webpack://insurance-ui/webpack/runtime/define property getters","webpack://insurance-ui/webpack/runtime/ensure chunk","webpack://insurance-ui/webpack/runtime/get javascript chunk filename","webpack://insurance-ui/webpack/runtime/get mini-css chunk filename","webpack://insurance-ui/webpack/runtime/global","webpack://insurance-ui/webpack/runtime/harmony module decorator","webpack://insurance-ui/webpack/runtime/hasOwnProperty shorthand","webpack://insurance-ui/webpack/runtime/make namespace object","webpack://insurance-ui/webpack/runtime/node module decorator","webpack://insurance-ui/webpack/runtime/publicPath","webpack://insurance-ui/webpack/runtime/jsonp chunk loading","webpack://insurance-ui/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; (typeof current == 'object' || typeof current == 'function') && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"insurance-ui:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t\tif (script.src.indexOf(window.location.origin + '/') !== 0) {\n\t\t\tscript.crossOrigin = \"anonymous\";\n\t\t}\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","var createStylesheet = function(chunkId, fullhref, resolve, reject) {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tvar onLinkComplete = function(event) {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + realHref + \")\");\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tlinkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\tif (linkTag.href.indexOf(window.location.origin + '/') !== 0) {\n\t\tlinkTag.crossOrigin = \"anonymous\";\n\t}\n\tdocument.head.appendChild(linkTag);\n\treturn linkTag;\n};\nvar findStylesheet = function(href, fullhref) {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = function(chunkId) {\n\treturn new Promise(function(resolve, reject) {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t792: 0\n};\n\n__webpack_require__.f.miniCss = function(chunkId, promises) {\n\tvar cssChunks = {\"145\":1,\"190\":1,\"934\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(function() {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, function(e) {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr","import React, { useMemo, useEffect } from 'react';\nimport { Route, Switch, useRouteMatch, Redirect, useHistory } from 'react-router-dom';\n\nimport useReducers from '@/redux/user';\nimport useTitle from '@/hooks/useDocumentTitle';\n\nexport default React.memo(function ChildRoute({ routeList, auth = true }) {\n  const history = useHistory();\n  const [userInfo] = useReducers();\n  const { path } = useRouteMatch();\n\n  useEffect(() => {\n    if (!userInfo.logined && userInfo.loginChecked && auth) {\n      history.push('/user/login');\n    }\n  }, [auth, userInfo.logined, userInfo.loginChecked]);\n\n  const routes = useMemo(() => {\n    return routeList.map(item => {\n      const Com = item.component;\n\n      function ChildComponent(props) {\n        useTitle(item.title);\n\n        return <Com {...props} />;\n      }\n\n      return {\n        ...item,\n        component: ChildComponent,\n      };\n    });\n  }, [routeList]);\n\n  return (\n    <Switch>\n      {routes.map(item => {\n        return (\n          <Route\n            strict\n            key={item.path}\n            path={`${path}${item.path}`}\n            component={!auth || userInfo.salt ? item.component : null}\n            exact={item.exact}\n            title={item.title}\n          />\n        );\n      })}\n\n      <Route path=\"*\">\n        <Redirect to=\"/\" />\n      </Route>\n    </Switch>\n  );\n});\n","import { useEffect } from 'react';\nimport useI18n from '@/redux/i18n';\n\nexport default function useDocumentTitle(title) {\n  const [{ locale }] = useI18n();\n  useEffect(() => {\n    if (locale === 'en') {\n      document.title = 'StrinGaze';\n      return;\n    }\n    if (title !== undefined) {\n      document.title = title;\n    }\n  }, [locale]);\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"loading\":\"SBkkk\",\"local\":\"YBuAe\"};","import React from 'react';\nimport classnames from 'classnames';\nimport { LoadingOutlined } from '@ant-design/icons';\n\nimport styles from './Loading.module.scss';\n\nexport default function Loading({ text = '加载中...', local = false }) {\n  return (\n    <div className={classnames(styles.loading, { [styles.local]: local })}>\n      <LoadingOutlined size=\"small\" />\n      <span style={{ marginTop: 8 }}>{text}</span>\n    </div>\n  );\n}\n","export default __webpack_public_path__ + \"img/logo.60f03723.png\";","import { createI18n } from '@/redux/i18n';\n\nexport default createI18n({\n  en: {\n    平台介绍: 'Platform Introduction',\n    人身险产品库: 'Product Library',\n    产品专题: 'Product Thematic',\n    红利实现利率: 'Dividend Realization Rate',\n    万能险利率: 'Universal Interest Rate',\n    专属商业养老险利率: 'Exclusive Commercial Pension Insurance Rate',\n    重疾险对比: 'Critical Illness Insurance Comparison',\n    养老年金险对比: 'Annuities Insurance Comparison',\n    增额终身寿险对比: 'Incremental Whole Life Insurance Comparison',\n    产品报告: 'Product Report',\n    保司报告: 'Insurer Report',\n    监管文件: 'Regulatory Document',\n    发文检索: 'Regulatory Entry',\n    智能AI: 'AI',\n    前往登录: 'Login',\n    欢迎您: 'Welcome',\n    意见反馈: 'Contact Us',\n    退出登录: 'Logout',\n  },\n  zh: {},\n});\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"_9HeQb\",\"logo\":\"coJPb\",\"en\":\"QnoLt\",\"navs\":\"Y+L0X\",\"nav\":\"NxC22\",\"submenu\":\"_1a5C+\",\"active\":\"To0ow\",\"userinfo\":\"iAcm+\",\"menus\":\"Y+DF+\"};","import React, { useMemo, useCallback, useState } from 'react';\n\nimport { Link, useHistory } from 'react-router-dom';\nimport logo from '@/assets/logo.png';\n\nimport classnames from 'classnames';\nimport { Button } from 'antd';\n\nimport storage from '@/utils/storage';\nimport useReducers from '@/redux/user';\nimport useI18n from './i18n';\nimport quitIcon from './assets/quit.png';\nimport messageIcon from './assets/message.png';\n\nimport styles from './PageHeader.module.scss';\n\nexport default React.memo(function PageHeader({ className }) {\n  const history = useHistory();\n  const [userInfo, actions] = useReducers();\n  const [activeSubmenu, setActiveSubmenu] = useState('');\n  const [t, locale] = useI18n();\n\n  const showLogo = useMemo(() => {\n    return window.top === window;\n  }, []);\n\n  const showSubmenu = useCallback(\n    submenu => {\n      if (submenu === activeSubmenu) {\n        setActiveSubmenu('');\n      } else {\n        setActiveSubmenu(submenu);\n      }\n    },\n    [activeSubmenu]\n  );\n\n  const navs = useMemo(() => {\n    const menus = [];\n    if (showLogo && locale !== 'en') {\n      menus.push({\n        name: t('平台介绍'),\n        href: '/',\n      });\n    }\n    return [\n      ...menus,\n      {\n        name: t('人身险产品库'),\n        href: '/life-insurance-product-library/query',\n      },\n      {\n        name: t('产品专题'),\n        href: '/product',\n        children: [\n          {\n            name: t('红利实现利率'),\n            href: '/product/dividend-realization-rate/query',\n          },\n          {\n            name: t('万能险利率'),\n            href: '/product/universal-interest-rate/query',\n          },\n          {\n            name: t('专属商业养老险利率'),\n            href: '/product/exclusive-commercial-pension-insurance/query',\n          },\n          {\n            name: t('重疾险对比'),\n            href: '/product/critical-illness-insurance/query',\n          },\n          {\n            name: t('养老年金险对比'),\n            href: '/product/annuities-insurance/query',\n          },\n          {\n            name: t('增额终身寿险对比'),\n            href: '/product/incremental-whole-life-insurance/query',\n          },\n        ],\n      },\n      {\n        name: t('产品报告'),\n        href: '/product-report',\n      },\n      {\n        name: t('保司报告'),\n        href: '/company-report/query',\n      },\n      {\n        name: t('监管文件'),\n        href: '/summary-of-regulatory-documents/query',\n      },\n      {\n        name: t('发文检索'),\n        href: '/content-retrieval-for-document/query',\n      },\n    ].filter(item => {\n      if (userInfo.companyCode !== 'taiping') {\n        return true;\n      }\n\n      return [t('监管文件'), t('人身险产品库')].includes(item.name);\n    });\n  }, [t, locale, showLogo, userInfo]);\n\n  const logout = useCallback(async () => {\n    await actions.logout();\n    storage.removeLocalStorage('_stk');\n    actions.clear();\n    history.replace('/user/login');\n  }, []);\n\n  return (\n    <div className={classnames(styles.container, className, { [styles.en]: locale === 'en' })}>\n      {showLogo && <img src={logo} alt=\"\" className={styles.logo} />}\n\n      <div className={styles.navs}>\n        {navs.map(nav => {\n          if (nav.children) {\n            return (\n              <div\n                key={nav.name}\n                className={classnames(styles.nav, {\n                  [styles.active]: history.location.pathname.startsWith(`${nav.href}/`),\n                })}\n                onClick={() => showSubmenu(nav.href)}\n              >\n                {nav.name}\n                <div\n                  className={classnames(styles.submenu, {\n                    [styles.active]: nav.href === activeSubmenu,\n                  })}\n                >\n                  {nav.children.map(child => {\n                    return (\n                      <Link\n                        key={child.href}\n                        to={child.href}\n                        className={classnames(styles.nav, {\n                          [styles.active]: child.href === history.location.pathname,\n                        })}\n                      >\n                        {child.name}\n                      </Link>\n                    );\n                  })}\n                </div>\n              </div>\n            );\n          }\n\n          return (\n            <Link\n              key={nav.href}\n              to={nav.href}\n              className={classnames(styles.nav, {\n                [styles.active]: nav.href === history.location.pathname,\n              })}\n            >\n              {nav.name}\n            </Link>\n          );\n        })}\n      </div>\n\n      {!userInfo.name && !userInfo.userName && (\n        <div className={styles.userinfo}>\n          <Link to=\"/user/login\">{t('前往登录')}</Link>\n        </div>\n      )}\n\n      {(!!userInfo.name || !!userInfo.userName) && showLogo && (\n        <div className={styles.userinfo}>\n          {t('欢迎您')}，{userInfo.name || userInfo.userName}\n          <a target=\"_blank\" href=\"https://jinshuju.net/f/yORKix\" rel=\"noreferrer\">\n            <Button type=\"link\">\n              <img src={messageIcon} alt=\"\" />\n              {t('意见反馈')}\n            </Button>\n          </a>\n          <Button onClick={logout} type=\"link\">\n            <img src={quitIcon} alt=\"\" />\n            {t('退出登录')}\n          </Button>\n        </div>\n      )}\n    </div>\n  );\n});\n","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","// extracted by mini-css-extract-plugin\nexport default {\"main\":\"KfI2U\",\"fixed\":\"XlgwP\"};","import React from 'react';\n\nimport classnames from 'classnames';\nimport PageHeader from '@/components/PageHeader';\nimport styles from './PageLayout.module.scss';\n\nexport default React.memo(function PageLayout({ className, children, fixedLayout = false }) {\n  return (\n    <>\n      <PageHeader />\n      <div className={classnames(styles.main, className, { [styles.fixed]: fixedLayout })}>\n        {children}\n      </div>\n    </>\n  );\n});\n","// extracted by mini-css-extract-plugin\nexport default {\"pager\":\"CCM9C\"};","import React, { useCallback, useState, useMemo } from 'react';\nimport lodash from 'lodash';\nimport { Table, Pagination } from 'antd';\n\nimport styles from './QueryTable.module.scss';\n\nexport default React.memo(function QueryTable({\n  pager,\n  columns,\n  loading,\n  selectedProducts = [],\n  updateSelectedProducts,\n  updateTableParams,\n  queryParams,\n  tableParams,\n  showSelected = false,\n  scroll,\n  query,\n}) {\n  const [innerLoading, setInnerLoading] = useState(false);\n\n  const sorterColumns = useMemo(() => {\n    return (\n      columns?.map(col => {\n        if (tableParams?.column === col.dataIndex) {\n          return {\n            ...col,\n            sortOrder: `${tableParams.order}end`,\n          };\n        }\n\n        return {\n          ...col,\n          sortOrder: null,\n        };\n      }) || []\n    );\n  }, [columns, tableParams]);\n\n  const onPage = useCallback(\n    async (page, pageSize) => {\n      const params = {\n        pageNo: page,\n        pageSize,\n      };\n      await updateTableParams(params);\n      setInnerLoading(true);\n      await query({\n        ...queryParams,\n        ...tableParams,\n        ...params,\n      });\n      setInnerLoading(false);\n    },\n    [updateTableParams, tableParams, queryParams, query]\n  );\n\n  const onChange = useCallback(\n    async (page, filter, sorter) => {\n      const params = {\n        ...tableParams,\n      };\n      if (sorter?.column) {\n        params.column = sorter.column.dataIndex;\n        params.order = sorter.order.replace('end', '');\n      } else {\n        params.column = '';\n        params.order = '';\n      }\n\n      await updateTableParams(params);\n      setInnerLoading(true);\n      await query({\n        ...queryParams,\n        ...params,\n      });\n      setInnerLoading(false);\n    },\n    [queryParams, query, updateTableParams, tableParams]\n  );\n\n  const rowSelection = useMemo(() => {\n    return {\n      selectedRowKeys: selectedProducts?.map(item => item.id) || [],\n      onSelectAll: (selected, selectedRows, changeRows) => {\n        if (selected) {\n          updateSelectedProducts(\n            lodash.uniqBy([...selectedProducts, ...selectedRows.filter(Boolean)], 'id')\n          );\n        } else {\n          updateSelectedProducts(\n            selectedProducts.filter(item => !changeRows.some(row => row.id === item.id))\n          );\n        }\n      },\n      onSelect: record => {\n        if (selectedProducts.some(item => item.id === record.id)) {\n          updateSelectedProducts(selectedProducts.filter(item => item.id !== record.id));\n        } else {\n          updateSelectedProducts([...selectedProducts, record]);\n        }\n      },\n    };\n  }, [selectedProducts, updateSelectedProducts]);\n\n  const rowData = useMemo(() => {\n    if (!showSelected) {\n      return pager?.records || [];\n    }\n\n    return selectedProducts;\n    // if (!selectedProducts.length) {\n    //   return pager?.records || [];\n    // }\n    // const records = pager?.records || [];\n\n    // const restSelectedProducts = selectedProducts.filter(\n    //   item => !records.some(record => record.id === item.id)\n    // );\n\n    // return [...restSelectedProducts, ...records];\n  }, [pager, selectedProducts, showSelected]);\n\n  return (\n    <>\n      <Table\n        loading={loading || innerLoading}\n        size=\"middle\"\n        rowKey=\"id\"\n        scroll={scroll}\n        dataSource={rowData}\n        columns={sorterColumns}\n        rowSelection={rowSelection}\n        pagination={false}\n        onChange={onChange}\n      />\n\n      {!!pager && !showSelected && (\n        <Pagination\n          showSizeChanger\n          showQuickJumper\n          total={pager?.total}\n          pageSize={pager?.size}\n          current={pager?.current}\n          className={styles.pager}\n          size=\"middle\"\n          onChange={onPage}\n        />\n      )}\n    </>\n  );\n});\n","import React, { useEffect, useState, useMemo } from 'react';\n\nimport { Select, Spin } from 'antd';\nimport useDebounce from '@/hooks/useDebounce';\n\nimport useReducers from '@/redux/enums';\n\nexport default React.memo(function ProductSelect({\n  outerProduct,\n  productType,\n  lableOnly,\n  searchParams = {},\n  ...props\n}) {\n  const [loading, setLoading] = useState();\n  const [state, actions] = useReducers();\n\n  useEffect(() => {\n    return () => {\n      actions.updateProducts([]);\n    };\n  }, []);\n\n  const options = useMemo(() => {\n    if (outerProduct) {\n      return state.products;\n    }\n\n    if (lableOnly) {\n      const labels = (state.products || []).map(item => {\n        return item.label;\n      });\n\n      return Array.from(new Set(labels)).map(label => ({ label, value: label }));\n    }\n    return state.products || [];\n  }, [state, lableOnly, outerProduct]);\n\n  const onSearch = useDebounce(\n    async v => {\n      if (!v) {\n        return;\n      }\n      setLoading(true);\n\n      if (outerProduct) {\n        await actions.queryOuterProduct({\n          ...searchParams,\n          productName: v,\n        });\n      } else {\n        await actions.queryProduct({\n          ...searchParams,\n          productType,\n          productName: v,\n        });\n      }\n      setLoading(false);\n    },\n    { delay: 400 }\n  );\n\n  return (\n    <Select\n      dropdownMatchSelectWidth={false}\n      options={options}\n      onSearch={onSearch}\n      filterOption={false}\n      labelInValue\n      notFoundContent={loading ? <Spin size=\"small\" /> : null}\n      {...props}\n    />\n  );\n});\n","import { useRef } from 'react';\n\nexport default function useDebounce(fn, { delay, leading }) {\n  const timer = useRef();\n\n  if (leading) {\n    return function (...args) {\n      if (timer.current) {\n        return;\n      }\n\n      fn(...args);\n\n      timer.current = setTimeout(() => {\n        timer.current = 0;\n      }, delay);\n    };\n  }\n\n  return function (...args) {\n    clearTimeout(timer.current);\n\n    timer.current = setTimeout(() => {\n      fn(...args);\n    }, delay);\n  };\n}\n","import { useMemo } from 'react';\nimport qs from 'qs';\n\nexport default function useQuery() {\n  return useMemo(() => {\n    return qs.parse(window.location.search, { ignoreQueryPrefix: true });\n  }, []);\n}\n","import { useEffect } from 'react';\n\nexport default function useSafeEffect(effect, deps) {\n  useEffect(() => {\n    let unmounted = false;\n\n    const cleanup = effect({\n      isUnmounted() {\n        return unmounted;\n      },\n    });\n\n    return () => {\n      unmounted = true;\n\n      if (typeof cleanup === 'function') {\n        cleanup();\n      }\n    };\n  }, deps);\n}\n","import { useState } from 'react';\n\nimport useSafeEffect from './useSafeEffect';\n\nexport default function useScript(url, checkName) {\n  const [loaded, setLoaded] = useState(window[checkName] || null);\n\n  useSafeEffect(({ isUnmounted }) => {\n    if (!loaded) {\n      const el = document.createElement('script');\n      document.body.appendChild(el);\n      el.type = 'text/javascript';\n      el.src = url;\n\n      el.onload = function () {\n        if (isUnmounted()) {\n          return;\n        }\n        setLoaded(window[checkName]);\n      };\n    }\n  }, []);\n\n  return loaded;\n}\n\nexport function loadScript(url, checkName) {\n  const loaded = window[checkName];\n\n  if (!loaded) {\n    const el = document.createElement('script');\n    document.body.appendChild(el);\n    el.type = 'text/javascript';\n    el.src = url;\n  }\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"_4Que8\"};","import React from 'react';\nimport { useLocation } from 'react-router-dom';\nimport styles from './Copyright.module.scss';\n\nexport default React.memo(function Copyright() {\n  const location = useLocation();\n\n  if (location.pathname.startsWith('/chat')) {\n    return null;\n  }\n\n  return (\n    <div className={styles.container}>\n      Copyright©2025 <span>未来保贝(深圳)科技有限公司</span>{' '}\n      <a href=\"https://beian.miit.gov.cn/\" target=\"_blank\" rel=\"noreferrer\">\n        粤ICP备20052250号\n      </a>\n    </div>\n  );\n});\n","import { message } from 'antd';\n\nfunction onSuccess() {}\n\nfunction onError({ error }, { dispatch }) {\n  const { config, response } = error;\n\n  if (config?.url?.startsWith('/sys/') && response?.status === 500 && !config.silent) {\n    return;\n  }\n\n  if (response?.status === 401) {\n    return response || error;\n  }\n\n  if (response?.status === 502) {\n    message.info('请求失败，请重试');\n  }\n\n  // if (error.message !== '系统错误') {\n  //   Toast.show({ content: error.message || '请求失败，请重试' });\n  // }\n}\n\nexport default {\n  onSuccess,\n  onError,\n};\n","import * as fRedux from '@/utils/redux';\nimport asyncHandler from '@/utils/asyncHandler';\nimport http from '@/utils/http/http';\n\nconst { createStore, asyncMiddleware, InjectReducerManager } = fRedux.default;\n\nconst middlewares = [\n  asyncMiddleware({\n    http,\n    ...asyncHandler,\n  }),\n];\n\nexport default initialState => {\n  const store = createStore(null, initialState, middlewares);\n  InjectReducerManager.with(store);\n  return store;\n};\n","/* eslint-disable react/jsx-props-no-spreading */\nimport React, { useEffect, useState, useRef } from 'react';\nimport Loading from '@/components/Loading';\n\nimport useI18n from '@/redux/i18n';\n\nfunction AsyncLoader({ title, load, ...props }) {\n  const [loading, setLoading] = useState(true);\n  const COMPT = useRef(null);\n  const [{ locale }] = useI18n();\n\n  useEffect(() => {\n    if (!COMPT.current) {\n      load().then(C => {\n        COMPT.current = C.default;\n        setLoading(false);\n      });\n    }\n  }, []);\n\n  useEffect(() => {\n    if (locale === 'en') {\n      document.title = 'StrinGaze';\n      return;\n    }\n    if (title) {\n      document.title = title;\n    }\n  }, [title, locale]);\n\n  return !loading ? React.createElement(COMPT.current, props) : <Loading text=\"加载中...\" />;\n}\n\nexport default (loader, title) => {\n  const asyncFn = props => <AsyncLoader title={title} load={loader} {...props} />;\n\n  return asyncFn;\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"_7OElg\",\"title\":\"NMATS\",\"action\":\"kRqHN\"};","import { createI18n } from '@/redux/i18n';\n\nexport default createI18n({\n  en: {\n    查询: 'Query',\n    重置: 'Reset',\n  },\n  zh: {},\n});\n","import React, { useMemo } from 'react';\nimport classNames from 'classnames';\nimport { SearchOutlined, ReloadOutlined } from '@ant-design/icons';\nimport { Form, Button, Row, Col } from 'antd';\n\nimport styles from './SearchForm.module.scss';\nimport useI18n from './i18n';\n\nexport default React.memo(function SearchForm({\n  form,\n  children,\n  title,\n  className,\n  onSearch,\n  extraAction = null,\n}) {\n  const [t] = useI18n();\n  const wrapperChildren = useMemo(() => {\n    return React.Children.map(children, child => {\n      if (child?.props.hidden === true) {\n        return null;\n      }\n      return <Col span={6}>{child}</Col>;\n    });\n  }, [children]);\n\n  return (\n    <Form\n      form={form}\n      className={classNames(styles.container, className)}\n      wrapperCol={{ span: 16 }}\n      onFinish={onSearch}\n    >\n      <div className={styles.title}>\n        {title}\n        <div className={styles.action}>\n          {extraAction}\n          <Button htmlType=\"submit\" type=\"primary\" icon={<SearchOutlined />}>\n            {t('查询')}\n          </Button>\n          <Button htmlType=\"reset\" icon={<ReloadOutlined />}>\n            {t('重置')}\n          </Button>\n        </div>\n      </div>\n      <Row gutter={24}>{wrapperChildren}</Row>\n\n      <div className={styles.grid} />\n    </Form>\n  );\n});\n","import storage from './storage';\n\nexport default function openWindow(url, ...args) {\n  const stk = storage.getLocalStorage('_stk');\n  if (url.indexOf('?') > -1) {\n    window.open(`${url}&_stk=${stk}`, ...args);\n    return;\n  }\n\n  window.open(`${url}?_stk=${stk}`, ...args);\n}\n","import { createI18n } from '@/redux/i18n';\n\nexport default createI18n({\n  en: {\n    年报: 'Annual Report',\n    偿付能力报告: 'Solvency Report',\n    季度: 'Quarter',\n    报告类型: 'Report Type',\n    更多: 'More',\n    看报告: 'View Report',\n    详情: 'Detail',\n    公司名称: 'Company',\n    年份: 'Year',\n  },\n  zh: {},\n});\n","import * as fRedux from '@/utils/redux';\n\nimport decryptString from '@/utils/decrypt';\n\nconst { createActions } = fRedux.default;\n\nconst namespace = 'company-report';\nconst initState = {\n  queryParams: {},\n};\n\nconst { useReducers } = createActions(namespace, initState, {\n  query: [\n    (params, http, dispatch, getState) => {\n      const { user } = getState();\n\n      return http.get(`/api/report/spCompanyReport/list`, { params }).then(res => {\n        return decryptString(user.salt, res.result);\n      });\n    },\n    (state, response) => ({ pager: response }),\n  ],\n  updateQueryParams: [params => params, (state, params) => ({ queryParams: params })],\n  updateTableParams: [params => params, (state, params) => ({ tableParams: params })],\n  queryDetail: [\n    (id, http, dispatch, getState) => {\n      const { user } = getState();\n      return http\n        .get(`/api/report/spCompanyReport/reportDataById`, { params: { id } })\n        .then(res => {\n          return decryptString(user.salt, res.result);\n        });\n    },\n    (state, response) => ({ reportDetail: response }),\n  ],\n  getReportToken: [\n    (params, http, dispatch, getState) => {\n      const { user } = getState();\n\n      return http.get(`/api/product/getToken`, { params }).then(res => {\n        return decryptString(user.salt, res.result);\n      });\n    },\n  ],\n});\n\nexport default useReducers;\n","// extracted by mini-css-extract-plugin\nexport default {\"pager\":\"U4APG\"};","import React, { useCallback, useState, useMemo, useEffect } from 'react';\n\nimport { Link } from 'react-router-dom';\nimport { Table, Button } from 'antd';\nimport openWindow from '@/utils/openWindow';\nimport useI18n from './i18n';\n\nimport useReducers from '../../redux';\n\nimport styles from './ReportTable.module.scss';\n\nexport default React.memo(function ReportTable() {\n  const [loading, setLoading] = useState();\n  const [state, actions] = useReducers();\n  const [t] = useI18n();\n  useEffect(() => {\n    setLoading(true);\n    actions\n      .query({\n        pageNo: 1,\n        pageSize: 10,\n        ...state.queryParams,\n      })\n      .then(() => {\n        setLoading(false);\n      })\n      .catch(() => {\n        setLoading(false);\n      });\n  }, [state.queryParams]);\n\n  const viewReport = useCallback(\n    async item => {\n      setLoading(true);\n      let params = await actions.getReportToken({ id: item.id, type: 'COMPANY' });\n      if (state.queryParams?.content) {\n        params = `${params}&keyword=${state.queryParams.content}`;\n      }\n      openWindow(`/report-viewer?${params}`);\n      setLoading(false);\n    },\n    [state.queryParams]\n  );\n\n  const dataSource = useMemo(() => {\n    return state.pager?.records || [];\n  }, [state.pager]);\n\n  const columns = useMemo(() => {\n    return [\n      {\n        title: t('公司名称'),\n        dataIndex: 'companyName',\n      },\n      {\n        title: t('年份'),\n        dataIndex: 'year',\n        width: '18%',\n      },\n      {\n        title: t('季度'),\n        dataIndex: 'quarter',\n        width: '18%',\n      },\n      {\n        title: t('报告类型'),\n        dataIndex: 'type',\n        width: '18%',\n        render(type) {\n          if (type === 'ANNUAL') {\n            return t('年报');\n          }\n          if (type === 'SOLVENCY') {\n            return t('偿付能力报告');\n          }\n          return '';\n        },\n      },\n      // {\n      //   title: '导入时间',\n      //   dataIndex: 'importTime',\n      //   render(time) {\n      //     return dayjs(time).format('YYYY-MM-DD HH:mm:ss');\n      //   },\n      // },\n      {\n        title: t('更多'),\n        dataIndex: 'action',\n        width: 150,\n        render(_, item) {\n          return (\n            <div className={styles.action}>\n              <Button onClick={() => viewReport(item)} type=\"link\">\n                {t('看报告')}\n              </Button>\n              <Link target=\"_blank\" to={`/company-report/detail/${item.id}`}>\n                <Button type=\"link\">{t('详情')}</Button>\n              </Link>\n            </div>\n          );\n        },\n      },\n    ];\n  }, [viewReport, t]);\n\n  const onChange = useCallback(\n    async (page, filter, sorter) => {\n      const params = {\n        pageNo: page.current,\n        pageSize: page.pageSize,\n      };\n      if (sorter?.column) {\n        params.column = sorter.column.dataIndex;\n        params.order = sorter.order.replace('end', '');\n      }\n      await actions.updateTableParams(params);\n      setLoading(true);\n      await actions.query({\n        ...state.queryParams,\n        ...params,\n      });\n      setLoading(false);\n    },\n    [state.queryParams]\n  );\n\n  return (\n    <div className={styles.container}>\n      <Table\n        loading={loading}\n        size=\"middle\"\n        rowKey=\"id\"\n        dataSource={dataSource}\n        columns={columns}\n        pagination={{\n          showSizeChanger: true,\n          showQuickJumper: true,\n          total: state.pager?.total,\n          pageSize: state.pager?.size,\n          current: state.pager?.current,\n          className: styles.pager,\n          size: 'middle',\n        }}\n        onChange={onChange}\n      />\n    </div>\n  );\n});\n","import { createI18n } from '@/redux/i18n';\n\nexport default createI18n({\n  en: {\n    保司报告: 'Company Report',\n    公司名称: 'Company',\n    内容: 'Content',\n    年份: 'Year',\n    报告类型: 'Report Type',\n  },\n  zh: {},\n});\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"b1ZoG\",\"main\":\"OPq+C\"};","import React, { useCallback } from 'react';\n\nimport { Form, Input, Select } from 'antd';\nimport PageLayout from '@/components/PageLayout';\nimport SearchForm from '@/components/SearchForm';\nimport { useCompanyOptions, useYearOptions, useReportTypeOptions } from '@/redux/hooks/enums';\nimport ReportTable from './ReportTable';\nimport useI18n from './i18n';\n\nimport useReducers from '../redux';\n\nimport styles from './Query.module.scss';\n\nexport default React.memo(function WarrantyReportQuery() {\n  const [, actions] = useReducers();\n  const companyOptions = useCompanyOptions();\n  const yearOptions = useYearOptions();\n  const typeOptions = useReportTypeOptions();\n  const [t] = useI18n();\n\n  const onSearch = useCallback(async values => {\n    actions.updateQueryParams(values);\n  }, []);\n\n  const filterOption = useCallback((value, option) => {\n    const normalFilter =\n      option.label.toLowerCase().includes(value.toLowerCase()) ||\n      option.value.toLowerCase().includes(value.toLowerCase());\n    return normalFilter || option.pinyin.some(item => item.includes(value.toLowerCase()));\n  }, []);\n\n  return (\n    <PageLayout key=\"company-report\">\n      <div className={styles.container}>\n        <SearchForm title={t('保司报告')} onSearch={onSearch}>\n          <Form.Item label={t('公司名称')} name=\"companyId\">\n            <Select\n              showArrow\n              allowClear\n              // maxTagCount={2}\n              // mode=\"multiple\"\n              filterOption={filterOption}\n              showSearch\n              options={companyOptions}\n              placeholder={t('公司名称')}\n            />\n          </Form.Item>\n\n          <Form.Item label={t('内容')} name=\"content\">\n            <Input placeholder={t('内容')} />\n          </Form.Item>\n\n          <Form.Item label={t('年份')} name=\"year\">\n            <Select allowClear options={yearOptions} placeholder={t('年份')} />\n          </Form.Item>\n\n          <Form.Item label={t('报告类型')} name=\"type\">\n            <Select allowClear options={typeOptions} placeholder={t('报告类型')} />\n          </Form.Item>\n        </SearchForm>\n\n        <div className={styles.main}>\n          <ReportTable />\n        </div>\n      </div>\n    </PageLayout>\n  );\n});\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"f59gK\",\"title\":\"_7iCMD\"};","import React from 'react';\n\nimport { Row, Col } from 'antd';\n\nimport useReducers from '../../redux';\nimport styles from './Summary.module.scss';\n\nexport default React.memo(function Summary() {\n  const [state] = useReducers();\n\n  if (!state.reportDetail) {\n    return null;\n  }\n\n  return (\n    <div className={styles.container}>\n      <div className={styles.title}>公司基本信息</div>\n      <Row gutter={24}>\n        <Col span={8}>\n          <span>报告名称: </span>\n          {state.reportDetail?.spCompanyReport.reportName || ''}\n        </Col>\n        <Col span={8}>\n          <span>保险公司名称:</span>\n          {state.reportDetail?.spCompanyReport.companyName || ''}\n        </Col>\n        <Col span={8}>\n          <span>报告所属时间周期:</span>\n          {state.reportDetail?.spCompanyReport.reportPeriod || ''}\n        </Col>\n      </Row>\n      {state.reportDetail?.spCompanyReport?.type === 'SOLVENCY' &&\n        !!state.reportDetail?.spRiskEvaluation && (\n          <>\n            <div className={styles.title}>近两次风险综合评级表</div>\n            <Row gutter={24}>\n              <Col span={8}>\n                <span>{state.reportDetail?.spRiskEvaluation?.lastQuarter}</span>\n                {state.reportDetail?.spRiskEvaluation?.lastQuarterRating}\n              </Col>\n              <Col span={8}>\n                <span>{state.reportDetail?.spRiskEvaluation?.lastLastQuarter}</span>\n                {state.reportDetail?.spRiskEvaluation?.lastLastQuarterRating}\n              </Col>\n            </Row>\n          </>\n        )}\n    </div>\n  );\n});\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"PxgCb\",\"title\":\"Ymgcd\"};","import React from 'react';\n\nimport { Table } from 'antd';\n\nimport styles from './TableSection.module.scss';\n\nexport default React.memo(function TableSection({ subtitle, title, columns, dataSource }) {\n  return (\n    <div className={styles.container}>\n      <div className={styles.title}>\n        {title}\n        {!!subtitle && <small>{subtitle}</small>}\n      </div>\n      <div className={styles.table}>\n        <Table\n          rowKey=\"id\"\n          tableLayout=\"fixed\"\n          size=\"middle\"\n          scroll={{ x: '100%' }}\n          columns={columns}\n          dataSource={dataSource}\n          pagination={false}\n        />\n      </div>\n    </div>\n  );\n});\n","import { useMemo } from 'react';\n\nimport useReducers from '../redux';\n\nfunction numberRender(v) {\n  if (Number.isFinite(v)) {\n    return v.toFixed(2);\n  }\n  return '';\n}\n\nfunction percentRender(v) {\n  if (Number.isFinite(v)) {\n    return `${v.toFixed(2)}%`;\n  }\n  return '';\n}\n\nexport function useTopFivePremiumIncomeProducts() {\n  const [state] = useReducers();\n\n  const columns = useMemo(() => {\n    return [\n      { title: '排序', dataIndex: 'sort', key: 'sort' },\n      { title: '产品名称', dataIndex: 'productName', key: 'productName' },\n      { title: '销售渠道', dataIndex: 'saleChannel', key: 'saleChannel' },\n      {\n        title: '原保费收入（万元）',\n        dataIndex: 'paid',\n        key: 'paid',\n        align: 'right',\n        render: numberRender,\n      },\n      {\n        title: '退保金（万元）',\n        dataIndex: 'refundAmount',\n        key: 'refundAmount',\n        align: 'right',\n        render: numberRender,\n      },\n    ];\n  }, []);\n\n  const dataSource = useMemo(() => {\n    return state.reportDetail?.topFivePremiumIncomeProducts || [];\n  }, [state]);\n\n  return useMemo(() => {\n    return {\n      title: '原保费收入居前五产品',\n      columns,\n      dataSource,\n    };\n  }, [columns, dataSource]);\n}\n\nexport function useTopThreePolicyholderInvestmentPaymentProducts() {\n  const [state] = useReducers();\n\n  const columns = useMemo(() => {\n    return [\n      { title: '排序', dataIndex: 'sort', key: 'sort' },\n      { title: '产品名称', dataIndex: 'productName', key: 'productName' },\n      { title: '销售渠道', dataIndex: 'saleChannel', key: 'saleChannel' },\n      {\n        title: '保户投资款新增交费（万元）',\n        dataIndex: 'paid',\n        key: 'paid',\n        align: 'right',\n        render: numberRender,\n      },\n      {\n        title: '退保金（万元）',\n        dataIndex: 'refundAmount',\n        key: 'refundAmount',\n        align: 'right',\n        render: numberRender,\n      },\n    ];\n  }, []);\n\n  const dataSource = useMemo(() => {\n    return state.reportDetail?.topThreePolicyholderInvestmentPaymentProducts || [];\n  }, [state]);\n\n  return useMemo(() => {\n    return {\n      title: '保户投资款新增交费居前三产品',\n      columns,\n      dataSource,\n    };\n  }, [columns, dataSource]);\n}\n\nexport function useTopThreeVariableLifeInsuranceAccountPaymentProducts() {\n  const [state] = useReducers();\n\n  const columns = useMemo(() => {\n    return [\n      { title: '排序', dataIndex: 'sort', key: 'sort' },\n      { title: '产品名称', dataIndex: 'productName', key: 'productName' },\n      { title: '销售渠道', dataIndex: 'saleChannel', key: 'saleChannel' },\n      {\n        title: '独立账户负债新增交费（万元）',\n        dataIndex: 'paid',\n        key: 'paid',\n        align: 'right',\n        render: numberRender,\n      },\n      {\n        title: '退保金（万元）',\n        dataIndex: 'refundAmount',\n        key: 'refundAmount',\n        align: 'right',\n        render: numberRender,\n      },\n    ];\n  }, []);\n\n  const dataSource = useMemo(() => {\n    return state.reportDetail?.topThreeVariableLifeInsuranceAccountPaymentProducts || [];\n  }, [state]);\n\n  return useMemo(() => {\n    return {\n      title: '投连险独立账户新增交费居前三产品',\n      columns,\n      dataSource,\n    };\n  }, [columns, dataSource]);\n}\n\nexport function useSolvencyMarginRatios() {\n  const [state] = useReducers();\n\n  const columns = useMemo(() => {\n    return [\n      { title: '周期', dataIndex: 'period', key: 'period', fixed: 'left', width: 120 },\n      {\n        title: '认可资产',\n        dataIndex: 'approvedAssets',\n        key: 'approvedAssets',\n        width: 120,\n        align: 'right',\n        render: numberRender,\n      },\n      {\n        title: '认可负债',\n        dataIndex: 'approvedLiabilities',\n        key: 'approvedLiabilities',\n        width: 120,\n        align: 'right',\n        render: numberRender,\n      },\n      {\n        title: '实际资本',\n        dataIndex: 'actualCapital',\n        key: 'actualCapital',\n        width: 120,\n        align: 'right',\n        render: numberRender,\n      },\n      {\n        title: '核心一级资本',\n        dataIndex: 'tier1CoreCapital',\n        key: 'tier1CoreCapital',\n        width: 130,\n        align: 'right',\n        render: numberRender,\n      },\n      {\n        title: '核心二级资本',\n        dataIndex: 'tier2CoreCapital',\n        key: 'tier2CoreCapital',\n        width: 130,\n        align: 'right',\n        render: numberRender,\n      },\n      {\n        title: '附属一级资本',\n        dataIndex: 'tier1SupplementaryCapital',\n        key: 'tier1SupplementaryCapital',\n        width: 140,\n        align: 'right',\n        render: numberRender,\n      },\n      {\n        title: '附属二级资本',\n        dataIndex: 'tier2SupplementaryCapital',\n        key: 'tier2SupplementaryCapital',\n        width: 140,\n        align: 'right',\n        render: numberRender,\n      },\n      {\n        title: '最低资本',\n        dataIndex: 'minimumCapital',\n        key: 'minimumCapital',\n        width: 120,\n        align: 'right',\n        render: numberRender,\n      },\n      {\n        title: '量化风险最低资本',\n        dataIndex: 'minimumCapitalQuantitativeRisk',\n        key: 'minimumCapitalQuantitativeRisk',\n        width: 140,\n        align: 'right',\n        render: numberRender,\n      },\n      {\n        title: '控制风险最低资本',\n        dataIndex: 'minimumCapitalControlRisk',\n        key: 'minimumCapitalControlRisk',\n        width: 140,\n        align: 'right',\n        render: numberRender,\n      },\n      {\n        title: '附加资本',\n        dataIndex: 'additionalCapital',\n        key: 'additionalCapital',\n        width: 120,\n        align: 'right',\n        render: numberRender,\n      },\n      {\n        title: '核心偿付能力溢额',\n        dataIndex: 'coreSolvencyMargin',\n        key: 'coreSolvencyMargin',\n        width: 140,\n        align: 'right',\n        render: numberRender,\n      },\n      {\n        title: '综合偿付能力溢额',\n        dataIndex: 'comprehensiveSolvencyMargin',\n        key: 'comprehensiveSolvencyMargin',\n        width: 140,\n        align: 'right',\n        render: numberRender,\n      },\n      {\n        title: '核心偿付能力充足率',\n        dataIndex: 'coreSolvencyRatio',\n        key: 'coreSolvencyRatio',\n        width: 150,\n        align: 'right',\n        render: percentRender,\n      },\n      {\n        title: '综合偿付能力充足率',\n        dataIndex: 'comprehensiveSolvencyRatio',\n        key: 'comprehensiveSolvencyRatio',\n        width: 150,\n        align: 'right',\n        render: percentRender,\n      },\n    ];\n  }, []);\n\n  const dataSource = useMemo(() => {\n    return state.reportDetail?.spSolvencyMarginRatios || [];\n  }, [state]);\n\n  return useMemo(() => {\n    return {\n      title: '偿付能力充足率指标（万元）',\n      columns,\n      dataSource,\n    };\n  }, [columns, dataSource]);\n}\n\nexport function useKeyRevenueIndicators() {\n  const [state] = useReducers();\n\n  const columns = useMemo(() => {\n    return [\n      { title: '周期', dataIndex: 'period', key: 'period', width: 120, fixed: 'left' },\n      {\n        title: '保险业务收入',\n        dataIndex: 'insuranceRevenue',\n        key: 'insuranceRevenue',\n        width: 120,\n        align: 'right',\n        render: numberRender,\n      },\n      {\n        title: '净利润',\n        dataIndex: 'netProfit',\n        key: 'netProfit',\n        width: 100,\n        align: 'right',\n        render: numberRender,\n      },\n      {\n        title: '总资产',\n        dataIndex: 'totalAssets',\n        key: 'totalAssets',\n        width: 120,\n        align: 'right',\n        render: numberRender,\n      },\n      {\n        title: '净资产',\n        dataIndex: 'netAssets',\n        key: 'netAssets',\n        width: 100,\n        align: 'right',\n        render: numberRender,\n      },\n      {\n        title: '保险合同负债',\n        dataIndex: 'insuranceLiabilities',\n        key: 'insuranceLiabilities',\n        width: 120,\n        align: 'right',\n        render: numberRender,\n      },\n      {\n        title: '基本每股收益（元）',\n        dataIndex: 'basicEps',\n        key: 'basicEps',\n        width: 150,\n        align: 'right',\n        render: numberRender,\n      },\n      {\n        title: '净资产收益率',\n        dataIndex: 'roe',\n        key: 'roe',\n        width: 120,\n        align: 'right',\n        render: percentRender,\n      },\n      {\n        title: '总资产收益率',\n        dataIndex: 'roa',\n        key: 'roa',\n        width: 120,\n        align: 'right',\n        render: percentRender,\n      },\n      {\n        title: '投资收益率',\n        dataIndex: 'roi',\n        key: 'roi',\n        width: 120,\n        align: 'right',\n        render: percentRender,\n      },\n      {\n        title: '综合投资收益率',\n        dataIndex: 'comprehensiveRoi',\n        key: 'comprehensiveRoi',\n        width: 120,\n        align: 'right',\n        render: percentRender,\n      },\n    ];\n  }, []);\n\n  const dataSource = useMemo(() => {\n    return state.reportDetail?.spKeyRevenueIndicators || [];\n  }, [state]);\n\n  return useMemo(() => {\n    return {\n      title: '主要经营指标（万元）',\n      columns,\n      dataSource,\n    };\n  }, [columns, dataSource]);\n}\n\nexport function useTop3SurrenderRate() {\n  const [state] = useReducers();\n\n  const columns = useMemo(() => {\n    return [\n      { title: '排序', dataIndex: 'sort', key: 'sort', width: 50 },\n      { title: '产品名称', dataIndex: 'productName', key: 'productName', width: 190 },\n      { title: '产品类型', dataIndex: 'productType', key: 'productType', width: 120 },\n      { title: '销售渠道', dataIndex: 'salesChannel', key: 'salesChannel', width: 120 },\n      {\n        title: '本季度退保规模',\n        dataIndex: 'quarterSurrender',\n        key: 'quarterSurrender',\n        width: 120,\n        align: 'right',\n        render: numberRender,\n      },\n      {\n        title: '本季度退保率',\n        dataIndex: 'quarterSurrenderRate',\n        key: 'quarterSurrenderRate',\n        width: 120,\n        align: 'right',\n        render: percentRender,\n      },\n      {\n        title: '本年度退保规模',\n        dataIndex: 'annualSurrender',\n        key: 'annualSurrender',\n        width: 120,\n        align: 'right',\n        render: numberRender,\n      },\n      {\n        title: '本年度退保率',\n        dataIndex: 'annualSurrenderRate',\n        key: 'annualSurrenderRate',\n        width: 120,\n        align: 'right',\n        render: percentRender,\n      },\n    ];\n  }, []);\n\n  const dataSource = useMemo(() => {\n    return state.reportDetail?.top3SurrenderRate || [];\n  }, [state]);\n\n  return useMemo(() => {\n    return {\n      title: '退保率居前三位产品（万元）',\n      columns,\n      dataSource,\n    };\n  }, [columns, dataSource]);\n}\n\nexport function useTop3SurrenderSize() {\n  const [state] = useReducers();\n\n  const columns = useMemo(() => {\n    return [\n      { title: '排序', dataIndex: 'sort', key: 'sort', width: 50 },\n      { title: '产品名称', dataIndex: 'productName', key: 'productName', width: 230 },\n      { title: '产品类型', dataIndex: 'productType', key: 'productType', width: 100 },\n      { title: '销售渠道', dataIndex: 'salesChannel', key: 'salesChannel', width: 100 },\n      {\n        title: '本季度退保规模',\n        dataIndex: 'quarterSurrender',\n        key: 'quarterSurrender',\n        width: 100,\n        align: 'right',\n        render: numberRender,\n      },\n      {\n        title: '本季度退保率',\n        dataIndex: 'quarterSurrenderRate',\n        key: 'quarterSurrenderRate',\n        width: 120,\n        align: 'right',\n        render: percentRender,\n      },\n      {\n        title: '本年度退保规模',\n        dataIndex: 'annualSurrender',\n        key: 'annualSurrender',\n        width: 120,\n        align: 'right',\n        render: numberRender,\n      },\n      {\n        title: '本年度退保率',\n        dataIndex: 'annualSurrenderRate',\n        key: 'annualSurrenderRate',\n        width: 120,\n        align: 'right',\n        render: percentRender,\n      },\n    ];\n  }, []);\n\n  const dataSource = useMemo(() => {\n    return state.reportDetail?.top3SurrenderSize || [];\n  }, [state]);\n\n  return useMemo(() => {\n    return {\n      title: '退保规模居前三位产品（万元）',\n      columns,\n      dataSource,\n    };\n  }, [columns, dataSource]);\n}\n","// extracted by mini-css-extract-plugin\nexport default {};","import Query from './Query';\nimport ReportDetail from './ReportDetail';\n\nexport default [\n  {\n    path: '/query',\n    component: Query,\n    exact: true,\n    title: '保司报告',\n  },\n  {\n    path: '/detail/:id',\n    component: ReportDetail,\n    exact: true,\n    title: '保司报告',\n  },\n];\n","import React, { useEffect } from 'react';\n\nimport { useParams } from 'react-router-dom';\nimport PageLayout from '@/components/PageLayout';\n\nimport Summary from './Summary';\nimport TableSection from './TableSection';\n\nimport useReducers from '../redux';\nimport {\n  useTopFivePremiumIncomeProducts,\n  useTopThreePolicyholderInvestmentPaymentProducts,\n  useTopThreeVariableLifeInsuranceAccountPaymentProducts,\n  useSolvencyMarginRatios,\n  useKeyRevenueIndicators,\n  useTop3SurrenderRate,\n  useTop3SurrenderSize,\n} from './useTables';\n\nimport styles from './ReportDetail.module.scss';\n\nexport default React.memo(function ReportDetail() {\n  const [state, actions] = useReducers();\n  const match = useParams();\n\n  const table1 = useTopFivePremiumIncomeProducts();\n  const table2 = useTopThreePolicyholderInvestmentPaymentProducts();\n  const table3 = useTopThreeVariableLifeInsuranceAccountPaymentProducts();\n  const table4 = useSolvencyMarginRatios();\n  const table5 = useKeyRevenueIndicators();\n  const table6 = useTop3SurrenderRate();\n  const table7 = useTop3SurrenderSize();\n\n  useEffect(() => {\n    actions.queryDetail(match.id);\n  }, [match.id]);\n\n  return (\n    <PageLayout fixedLayout={false}>\n      <div className={styles.container}>\n        <Summary />\n        {state.reportDetail?.spCompanyReport?.type === 'ANNUAL' && (\n          <>\n            <TableSection {...table1} />\n            <TableSection {...table2} />\n            <TableSection {...table3} />\n          </>\n        )}\n        {state.reportDetail?.spCompanyReport?.type === 'SOLVENCY' && (\n          <>\n            <TableSection {...table4} />\n            <TableSection {...table5} />\n            <TableSection {...table6} />\n            <TableSection {...table7} />\n          </>\n        )}\n      </div>\n    </PageLayout>\n  );\n});\n","import * as fRedux from '@/utils/redux';\n\nimport decryptString from '@/utils/decrypt';\n\nconst { createActions } = fRedux.default;\nconst namespace = 'life-product-libray';\nconst initState = {\n  queryParams: {},\n};\n\nconst { useReducers } = createActions(namespace, initState, {\n  query: [\n    (params, http, dispatch, getState) => {\n      const { user } = getState();\n      return http.get(`/api/product/search`, { params }).then(res => {\n        return decryptString(user.salt, res.result);\n      });\n    },\n    (state, response) => ({ pager: response }),\n  ],\n  updateQueryParams: [params => params, (state, params) => ({ queryParams: params })],\n  updateTableParams: [params => params, (state, params) => ({ tableParams: params })],\n  queryDetail: [\n    (id, http) => http.get(`/api/report/spCompanyReport/reportDataById`, { params: { id } }),\n    (state, response) => ({ reportDetail: response.result }),\n  ],\n  getReportToken: [\n    (params, http, dispatch, getState) => {\n      const { user } = getState();\n\n      return http.get(`/api/product/getToken`, { params }).then(res => {\n        return decryptString(user.salt, res.result);\n      });\n    },\n  ],\n});\n\nexport default useReducers;\n","import { createI18n } from '@/redux/i18n';\n\nexport default createI18n({\n  en: {\n    产品名称: 'Product Name',\n    公司名称: 'Company Name',\n    产品类别: 'Product Category',\n    设计类型: 'Design Type',\n    特殊属性: 'Special Attributes',\n    承保方式: 'Underwrite',\n    保险期间: 'Insurance Period',\n    交费方式: 'Payment Method',\n    条款文字编码: 'Clause Text Code',\n    销售状态: 'Sales Status',\n    销售渠道: 'Sales Channel',\n    官网披露时间: 'Official Disclosure Time',\n    标签: 'Tag',\n    更多: 'More',\n    看条款: 'View Clause',\n    费率表: 'Rate Table',\n    现价表: 'Current Price Table',\n    说明书: 'Explanation',\n  },\n  zh: {},\n});\n","// extracted by mini-css-extract-plugin\nexport default {\"pager\":\"_4TiEq\",\"action\":\"E9J7t\"};","import React, { useCallback, useMemo, useEffect, useState } from 'react';\nimport openWindow from '@/utils/openWindow';\nimport dayjs from 'dayjs';\nimport { Table, Button } from 'antd';\n\nimport useReducers from '../../redux';\nimport useI18n from './i18n';\n\nimport styles from './ReportTable.module.scss';\n\nexport default React.memo(function ReportTable() {\n  const [loading, setLoading] = useState();\n  const [state, actions] = useReducers();\n  const [t] = useI18n();\n  const viewReport = useCallback(\n    async (item, type) => {\n      setLoading(true);\n      let params = await actions.getReportToken({ id: item.id, type });\n\n      if (state.queryParams.termContent) {\n        params = `${params}&keyword=${state.queryParams.termContent}`;\n      }\n      openWindow(`/report-viewer?${params}`);\n      setLoading(false);\n    },\n    [state.queryParams]\n  );\n\n  useEffect(() => {\n    setLoading(true);\n    actions.updateTableParams({});\n    actions\n      .query({\n        pageNo: 1,\n        pageSize: 10,\n        ...state.queryParams,\n      })\n      .then(() => {\n        setLoading(false);\n      })\n      .catch(() => {\n        setLoading(false);\n      });\n  }, [state.queryParams]);\n\n  const dataSource = useMemo(() => {\n    return state.pager?.records || [];\n  }, [state.pager]);\n\n  const columns = useMemo(() => {\n    return [\n      {\n        title: t('产品名称'),\n        dataIndex: 'productName',\n      },\n      {\n        title: t('公司名称'),\n        dataIndex: 'companyName',\n        width: '8%',\n      },\n      {\n        title: t('产品类别'),\n        dataIndex: 'productCategory',\n        width: '7%',\n        render(text) {\n          if (text != null && text !== '') {\n            const cats = text.split('-');\n            return cats[cats.length - 1];\n          }\n        },\n      },\n      {\n        title: t('设计类型'),\n        width: '7%',\n        dataIndex: 'designType',\n        sorter: true,\n      },\n      {\n        title: t('特殊属性'),\n        width: '8%',\n        dataIndex: 'specialAttr',\n        sorter: true,\n      },\n      {\n        title: t('承保方式'),\n        dataIndex: 'underwrite',\n        width: '5%',\n        sorter: true,\n      },\n      {\n        title: t('保险期间'),\n        dataIndex: 'periodType',\n        width: '7%',\n        sorter: true,\n      },\n      {\n        title: t('交费方式'),\n        dataIndex: 'paymentType',\n        width: '6%',\n      },\n      {\n        title: t('条款文字编码'),\n        dataIndex: 'cnCode',\n        width: '9%',\n        sorter: true,\n      },\n      {\n        title: t('销售状态'),\n        dataIndex: 'saleStatus',\n        sorter: true,\n        width: '5%',\n      },\n      {\n        title: t('销售渠道'),\n        dataIndex: 'salesChannel',\n        sorter: true,\n        width: '6.3%',\n      },\n      {\n        title: t('官网披露时间'),\n        dataIndex: 'discloseTime',\n        sorter: true,\n        width: '6%',\n        render: timestamp => {\n          if (!timestamp) return null;\n          return dayjs(timestamp).format('YYYY-MM');\n        },\n      },\n      {\n        title: t('标签'),\n        dataIndex: 'tag',\n        width: '5%',\n      },\n      {\n        title: t('更多'),\n        dataIndex: 'action',\n        fixed: 'right',\n        width: 120,\n        render(_, item) {\n          return (\n            <div className={styles.action}>\n              <div>\n                <Button onClick={() => viewReport(item, 'PRODUCT')} type=\"link\">\n                  {t('看条款')}\n                </Button>\n                |\n                <Button\n                  disabled={!item.hasRateFile}\n                  onClick={() => viewReport(item, 'PRODUCT_RATE')}\n                  type=\"link\"\n                >\n                  {t('费率表')}\n                </Button>\n              </div>\n\n              <div>\n                <Button\n                  disabled={!item.hasValueFile}\n                  onClick={() => viewReport(item, 'PRODUCT_VALUE')}\n                  type=\"link\"\n                >\n                  {t('现价表')}\n                </Button>\n                |\n                <Button\n                  disabled={!item.hasDescFile}\n                  onClick={() => viewReport(item, 'PRODUCT_DESC')}\n                  type=\"link\"\n                >\n                  {t('说明书')}\n                </Button>\n              </div>\n            </div>\n          );\n        },\n      },\n    ].map(col => {\n      if (state.tableParams?.column === col.dataIndex) {\n        return {\n          ...col,\n          sortOrder: `${state.tableParams.order}end`,\n        };\n      }\n\n      return {\n        ...col,\n        sortOrder: null,\n      };\n    });\n  }, [viewReport, state.tableParams]);\n\n  const onChange = useCallback(\n    async (page, filter, sorter) => {\n      const params = {\n        pageNo: page.current,\n        pageSize: page.pageSize,\n      };\n      if (sorter?.column) {\n        params.column = sorter.column.dataIndex;\n        params.order = sorter.order.replace('end', '');\n      }\n      await actions.updateTableParams(params);\n      setLoading(true);\n      await actions.query({\n        ...state.queryParams,\n        ...params,\n      });\n      setLoading(false);\n    },\n    [state.queryParams]\n  );\n\n  return (\n    <div className={styles.container}>\n      <Table\n        scroll={{ x: 'max-content' }}\n        loading={loading}\n        size=\"middle\"\n        rowKey=\"id\"\n        dataSource={dataSource}\n        columns={columns}\n        pagination={{\n          showSizeChanger: true,\n          showQuickJumper: true,\n          total: state.pager?.total,\n          pageSize: state.pager?.size,\n          current: state.pager?.current,\n          className: styles.pager,\n          size: 'middle',\n        }}\n        onChange={onChange}\n      />\n    </div>\n  );\n});\n","import { createI18n } from '@/redux/i18n';\n\nexport default createI18n({\n  en: {\n    人身险产品库: 'Life Insurance',\n    产品类别: 'Product Category',\n    报备年份: 'Sale Year',\n    公司名称: 'Company Name',\n    条款内容: 'Clause Content',\n    产品名称: 'Product Name',\n    设计类型: 'Design Type',\n    承保方式: 'Underwrite',\n    保险期间: 'Insurance Period',\n    交费方式: 'Payment Method',\n    销售状态: 'Sales Status',\n    销售渠道: 'Sales Channel',\n    官网披露时间: 'Official Disclosure Time',\n    特殊属性: 'Special Attributes',\n    开始时间: 'Start Time',\n    结束时间: 'End Time',\n    请输入至少一个搜索条件: 'Please enter at least one search condition',\n  },\n  zh: {},\n});\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"kVv-c\",\"main\":\"TuwPo\",\"cascader\":\"iENw1\"};","import React, { useCallback, useEffect } from 'react';\n\nimport { Form, Input, Select, Cascader, message, DatePicker } from 'antd';\nimport PageLayout from '@/components/PageLayout';\nimport SearchForm from '@/components/SearchForm';\nimport { useCompanyOptions, useYearOptions, useProductTypeTree } from '@/redux/hooks/enums';\nimport ProductSelect from '@/components/form/ProductSelect';\nimport useQuery from '@/hooks/useQuery';\nimport ReportTable from './ReportTable';\nimport useOptions from './options/useOptions';\n\nimport useReducers from '../redux';\nimport useI18n from './i18n';\n\nimport styles from './Query.module.scss';\n\nconst { RangePicker } = DatePicker;\n\nexport default React.memo(function LifeInsuranceProductLibrary() {\n  const [form] = Form.useForm();\n  const [, actions] = useReducers();\n  const companyOptions = useCompanyOptions();\n  const yearOptions = useYearOptions(2006);\n  const productTypeTree = useProductTypeTree();\n  const query = useQuery();\n  const [t] = useI18n();\n  const {\n    specialOptions,\n    saleStatusOptions,\n    periodTypeOptions,\n    paymentTypeOptions,\n    underwriteOptions,\n    designTypeOptions,\n    saleChannelOptions,\n  } = useOptions();\n  useEffect(() => {\n    if (query.params) {\n      const params = JSON.parse(query.params);\n      form.setFieldsValue(params);\n      actions.updateQueryParams(params);\n    }\n  }, []);\n\n  const handleSalesChannelChange = useCallback(value => {\n    const flatValues = value.flat(Infinity);\n    // 定义渠道映射关系\n    const channelMapping = {\n      直销渠道: ['公司直销', '团险渠道', '个险渠道'],\n      代理渠道: ['经纪代理', '银邮代理', '银行代理', '个人代理', '保险专业代理', '其他兼业代理'],\n      数字渠道: ['网销渠道', '电销渠道'],\n    };\n\n    // 检查并补充缺失的渠道\n    Object.entries(channelMapping).forEach(([parent, children]) => {\n      if (flatValues.includes(parent)) {\n        const isMissingAllChildren = children.every(child => !flatValues.includes(child));\n        if (isMissingAllChildren) {\n          flatValues.push(...children);\n        }\n      }\n    });\n\n    return [...new Set(flatValues)]; // 去重\n  }, []);\n\n  const isEmpty = useCallback(values => {\n    return !Object.keys(values).some(key => {\n      const value = values[key];\n\n      if (Array.isArray(value)) {\n        return value.length > 0;\n      }\n\n      return value;\n    });\n  }, []);\n\n  const onSearch = useCallback(async searchValues => {\n    if (isEmpty(searchValues)) {\n      message.info(t('请输入至少一个搜索条件'));\n      return;\n    }\n\n    const { discloseTime, productType, productName, ...values } = searchValues;\n    const productTypeParams = {};\n    const productParams = {};\n\n    if (productName) {\n      productName.forEach(product => {\n        if (product.key) {\n          productParams.ids = [...(productParams.ids || []), product.value];\n        } else {\n          productParams.productName = [...(productParams.productName || []), product.value];\n        }\n      });\n    }\n\n    if (productType?.length) {\n      productType\n        .map(type => {\n          return type[type.length - 1];\n        })\n        .forEach(type => {\n          const lv = type.match(/_+/g).length;\n\n          switch (lv) {\n            case 1:\n              productTypeParams.productCategoryL1 = productTypeParams.productCategoryL1 || [];\n              productTypeParams.productCategoryL1.push(type);\n              break;\n            case 2:\n              productTypeParams.productCategoryL2 = productTypeParams.productCategoryL2 || [];\n              productTypeParams.productCategoryL2.push(type);\n              break;\n            case 3:\n              productTypeParams.productCategoryL3 = productTypeParams.productCategoryL3 || [];\n              productTypeParams.productCategoryL3.push(type);\n              break;\n            default:\n              productTypeParams.productCategoryL4 = productTypeParams.productCategoryL4 || [];\n              productTypeParams.productCategoryL4.push(type);\n              break;\n          }\n        });\n\n      Object.keys(productTypeParams).map(key => {\n        productTypeParams[key] = productTypeParams[key].join(',');\n      });\n    }\n\n    // this.queryParam.productCategoryL1 = this.arrayJoinToString(productCategoryL1, ',');\n    // this.queryParam.productCategoryL2 = this.arrayJoinToString(productCategoryL2, ',');\n    // this.queryParam.productCategoryL3 = this.arrayJoinToString(productCategoryL3, ',');\n    // this.queryParam.productCategoryL4 = this.arrayJoinToString(productCategoryL4, ',');\n\n    if (discloseTime) {\n      values.discloseTimeBegin = discloseTime[0].format('YYYY-MM-DD 00:00:00');\n      values.discloseTimeEnd = discloseTime[1].format('YYYY-MM-DD 00:00:00');\n    }\n\n    if (Array.isArray(values.salesChannel) && values.salesChannel.length > 0) {\n      values.salesChannel = handleSalesChannelChange(values.salesChannel);\n    }\n    // console.log('salesChannel', values.salesChannel.toString());\n\n    actions.updateQueryParams({\n      ...values,\n      ...productTypeParams,\n      ...productParams,\n    });\n  }, []);\n\n  const filterOption = useCallback((value, option) => {\n    const normalFilter =\n      option.label.toLowerCase().includes(value.toLowerCase()) ||\n      option.value.toLowerCase().includes(value.toLowerCase());\n    return normalFilter || option.pinyin.some(item => item.includes(value.toLowerCase()));\n  }, []);\n\n  return (\n    <PageLayout>\n      <div className={styles.container}>\n        <SearchForm form={form} title={t('人身险产品库')} onSearch={onSearch}>\n          <Form.Item label={t('产品类别')} name=\"productType\">\n            <Cascader\n              showArrow\n              allowClear\n              placeholder={t('产品类别')}\n              expandTrigger=\"hover\"\n              options={productTypeTree}\n              // onChange={onChange}\n              multiple\n              maxTagCount={2}\n              popupClassName={styles.cascader}\n              // showCheckedStrategy=\"SHOW_PARENT\"\n            />\n          </Form.Item>\n\n          <Form.Item label={t('报备年份')} name=\"saleYear\">\n            <Select\n              allowClear\n              maxTagCount={2}\n              showArrow\n              mode=\"multiple\"\n              options={yearOptions}\n              placeholder={t('报备年份')}\n            />\n          </Form.Item>\n\n          <Form.Item label={t('公司名称')} name=\"companyId\">\n            <Select\n              allowClear\n              showArrow\n              maxTagCount={2}\n              mode=\"multiple\"\n              filterOption={filterOption}\n              showSearch\n              options={companyOptions}\n              placeholder={t('公司名称')}\n              dropdownMatchSelectWidth={false}\n            />\n          </Form.Item>\n\n          <Form.Item label={t('条款内容')} name=\"termContent\">\n            <Input placeholder={t('条款内容')} />\n          </Form.Item>\n\n          <Form.Item label={t('产品名称')} name=\"productName\">\n            <ProductSelect\n              allowClear\n              maxTagCount={2}\n              showArrow\n              mode=\"tags\"\n              placeholder={t('产品名称')}\n            />\n          </Form.Item>\n\n          <Form.Item label={t('设计类型')} name=\"designType\">\n            <Select\n              showArrow\n              allowClear\n              mode=\"multiple\"\n              options={designTypeOptions}\n              placeholder={t('设计类型')}\n              dropdownMatchSelectWidth={false}\n            />\n          </Form.Item>\n\n          <Form.Item label={t('承保方式')} name=\"underwrite\">\n            <Select\n              showArrow\n              allowClear\n              mode=\"multiple\"\n              options={underwriteOptions}\n              placeholder={t('承保方式')}\n              dropdownMatchSelectWidth={false}\n            />\n          </Form.Item>\n\n          <Form.Item label={t('保险期间')} name=\"periodType\">\n            <Select\n              showArrow\n              allowClear\n              mode=\"multiple\"\n              options={periodTypeOptions}\n              placeholder={t('保险期间')}\n              dropdownMatchSelectWidth={false}\n            />\n          </Form.Item>\n\n          <Form.Item label={t('交费方式')} name=\"paymentTypes\">\n            <Select\n              showArrow\n              allowClear\n              mode=\"multiple\"\n              options={paymentTypeOptions}\n              placeholder={t('交费方式')}\n              dropdownMatchSelectWidth={false}\n            />\n          </Form.Item>\n\n          <Form.Item label={t('销售状态')} name=\"saleStatus\">\n            <Select\n              showArrow\n              allowClear\n              mode=\"multiple\"\n              options={saleStatusOptions}\n              placeholder={t('销售状态')}\n              dropdownMatchSelectWidth={false}\n            />\n          </Form.Item>\n\n          <Form.Item label={t('销售渠道')} name=\"salesChannel\">\n            <Cascader\n              showArrow\n              allowClear\n              placeholder={t('销售渠道')}\n              expandTrigger=\"hover\"\n              options={saleChannelOptions}\n              // onChange={handleSalesChannelChange}\n              multiple\n              maxTagCount={2}\n              popupClassName={styles.cascader}\n            />\n          </Form.Item>\n\n          <Form.Item label={t('官网披露时间')} name=\"discloseTime\">\n            <RangePicker\n              separator=\"~\"\n              allowClear\n              picker=\"month\"\n              placeholder={[t('开始时间'), t('结束时间')]}\n            />\n          </Form.Item>\n\n          <Form.Item label={t('特殊属性')} name=\"specialAttr\">\n            <Select\n              showArrow\n              allowClear\n              mode=\"multiple\"\n              options={specialOptions}\n              placeholder={t('特殊属性')}\n              dropdownMatchSelectWidth={false}\n            />\n          </Form.Item>\n        </SearchForm>\n\n        <div className={styles.main}>\n          <ReportTable />\n        </div>\n      </div>\n    </PageLayout>\n  );\n});\n","import Query from './Query';\n\nexport default [\n  {\n    path: '/query',\n    component: Query,\n    exact: true,\n    title: '人身险产品库',\n  },\n];\n","import http from '@/utils/http';\n\nexport default async function downloadUrl(url, fileName = 'download') {\n  const response = await http.get(url, {\n    responseType: 'blob',\n  });\n\n  const blobUrl = window.URL.createObjectURL(response);\n\n  const link = document.createElement('a');\n  link.style.display = 'none';\n  link.href = blobUrl;\n  link.setAttribute('download', fileName); // 确保下载\n  document.body.appendChild(link);\n  link.click();\n\n  document.body.removeChild(link); // 清理 DOM\n  window.URL.revokeObjectURL(blobUrl); // 释放 Blob 对象\n}\n","export default __webpack_public_path__ + \"img/qr.51d6a746.jpg\";","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"TiBY8\",\"modal\":\"g+1+q\"};","import React from 'react';\nimport { Modal } from 'antd';\n\nimport qr from './assets/qr.jpg';\nimport styles from './VipModal.module.scss';\n\nexport default React.memo(function VipModal({ visible, onCancel }) {\n  return (\n    <Modal\n      open={visible}\n      onCancel={onCancel}\n      footer={null}\n      width={400}\n      wrapClassName={styles.modal}\n    >\n      <div className={styles.container}>\n        <h2>微信扫码咨询</h2>\n        <p>该功能为付费功能，请联系我们咨询</p>\n        <img src={qr} alt=\"微信扫码咨询\" />\n      </div>\n    </Modal>\n  );\n});\n","import * as fRedux from '@/utils/redux';\n\nimport decryptString from '@/utils/decrypt';\n\nconst { createActions } = fRedux.default;\n\nconst namespace = 'report-viewer';\nconst initState = {\n  queryParams: {},\n};\n\nconst { useReducers } = createActions(namespace, initState, {\n  query: [\n    (params, http, dispatch, getState) => {\n      const { user } = getState();\n\n      return http.get(`/api/product/getPdfUrlById`, { params }).then(res => {\n        return decryptString(user.salt, res.result);\n      });\n    },\n    (state, response) => ({ url: response }),\n  ],\n  updateUrl: [url => url, (state, url) => ({ url })],\n});\n\nexport default useReducers;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"YJJst\",\"sider\":\"_93baT\",\"pdf\":\"No8Sr\",\"operation\":\"phKG9\",\"main\":\"FyspA\",\"search\":\"WvRE2\",\"matchs\":\"sI6uF\",\"item\":\"LwcQK\",\"header\":\"_5srGC\",\"count\":\"_5m7aQ\",\"summary\":\"ZuURm\",\"progress\":\"_0DNMs\",\"progress-bar\":\"qqzhj\",\"progressBar\":\"qqzhj\"};","import { createI18n } from '@/redux/i18n';\n\nexport default createI18n({\n  en: {\n    监管文件: 'Regulatory Documents',\n    发文文号: 'No.',\n    发文名称: 'Name',\n    发文状态: 'Status',\n    有效: 'Valid',\n    已经废止: 'Invalid',\n    部分条文废止: 'Partially Invalid',\n    发布时间: 'Release Time',\n    状态: 'Status',\n    部分条文更新: 'Partially Updated',\n    更多: 'More',\n    看全文: 'View Full Text',\n\n    total: 'Found {total} results',\n  },\n  zh: {\n    total: '查询到{total}条结果',\n  },\n});\n","import * as fRedux from '@/utils/redux';\n\nimport decryptString from '@/utils/decrypt';\n\nconst { createActions } = fRedux.default;\n\nconst namespace = 'summary-of-regulatory-documents';\nconst initState = {\n  queryParams: {},\n};\n\nconst { useReducers } = createActions(namespace, initState, {\n  query: [\n    (params, http, dispatch, getState) => {\n      const { user } = getState();\n\n      return http.get(`/api/document/list`, { params }).then(res => {\n        return decryptString(user.salt, res.result);\n      });\n    },\n    (state, response) => ({ pager: response }),\n  ],\n  updateQueryParams: [params => params, (state, params) => ({ queryParams: params })],\n  updateTableParams: [params => params, (state, params) => ({ tableParams: params })],\n  getReportToken: [\n    (params, http, dispatch, getState) => {\n      const { user } = getState();\n\n      return http.get(`/api/product/getToken`, { params }).then(res => {\n        return decryptString(user.salt, res.result);\n      });\n    },\n  ],\n  queryProduct: [\n    (params, http, dispatch, getState) => {\n      const { user } = getState();\n      return http.get(`/api/universal/productNameCats`, { params }).then(res => {\n        return decryptString(user.salt, res.result);\n      });\n    },\n    (state, products) => ({ products: products || [] }),\n  ],\n});\n\nexport default useReducers;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"C2DCk\",\"pager\":\"dcZxW\"};","import React, { useCallback, useState, useMemo, useEffect } from 'react';\n\nimport dayjs from 'dayjs';\nimport { Table, Alert } from 'antd';\nimport openWindow from '@/utils/openWindow';\nimport useI18n from './i18n';\n\nimport useReducers from '../../redux';\n\nimport styles from './ReportTable.module.scss';\n\nexport default React.memo(function ReportTable() {\n  const [loading, setLoading] = useState();\n  const [state, actions] = useReducers();\n  const [t] = useI18n();\n  useEffect(() => {\n    setLoading(true);\n    actions.updateTableParams({});\n    actions\n      .query({\n        pageNo: 1,\n        pageSize: 10,\n        ...state.queryParams,\n      })\n      .then(() => {\n        setLoading(false);\n      })\n      .catch(() => {\n        setLoading(false);\n      });\n  }, [state.queryParams]);\n\n  const viewReport = useCallback(async item => {\n    setLoading(true);\n    const params = await actions.getReportToken({ id: item.productId, type: 'PRODUCT' });\n    openWindow(`/report-viewer?${params}`);\n    setLoading(false);\n  }, []);\n\n  const dataSource = useMemo(() => {\n    return state.pager?.records || [];\n  }, [state.pager]);\n\n  const columns = useMemo(() => {\n    return [\n      {\n        title: t('发文文号'),\n        dataIndex: 'docNo',\n        width: '20%',\n        sorter: true,\n      },\n      {\n        title: t('发文名称'),\n        dataIndex: 'docName',\n        sorter: true,\n      },\n      {\n        title: t('发布时间'),\n        dataIndex: 'deliveryDate',\n        width: '14%',\n        sorter: true,\n        render(date) {\n          return date ? dayjs(date).format('YYYY-MM-DD') : '';\n        },\n      },\n      {\n        title: t('状态'),\n        dataIndex: 'status',\n        width: '9%',\n        render(status) {\n          if (status === 'VALID') {\n            return t('有效');\n          }\n          if (status === 'INVALID') {\n            return t('已经废止');\n          }\n          if (status === 'PART_INVALID') {\n            return t('部分条文废止');\n          }\n          if (status === 'PART_UPDATE') {\n            return t('部分条文更新');\n          }\n        },\n      },\n      {\n        title: t('更多'),\n        dataIndex: 'action',\n        render: (value, row) => {\n          return row.url && row.url.startsWith('http') ? (\n            <a href={row.url} target=\"_blank\" rel=\"noreferrer\">\n              {t('看全文')}\n            </a>\n          ) : null;\n        },\n        width: '12%',\n      },\n    ].map(col => {\n      if (state.tableParams?.column === col.dataIndex) {\n        return {\n          ...col,\n          sortOrder: `${state.tableParams.order}end`,\n        };\n      }\n\n      return {\n        ...col,\n        sortOrder: null,\n      };\n    });\n  }, [viewReport, state.tableParams, t]);\n\n  const onChange = useCallback(\n    async (page, filter, sorter) => {\n      const params = {\n        pageNo: page.current,\n        pageSize: page.pageSize,\n      };\n      if (sorter?.column) {\n        params.column = sorter.column.dataIndex;\n        params.order = sorter.order.replace('end', '');\n      }\n      await actions.updateTableParams(params);\n      setLoading(true);\n      await actions.query({\n        ...state.queryParams,\n        ...params,\n      });\n      setLoading(false);\n    },\n    [state.queryParams]\n  );\n\n  const title = useCallback(() => {\n    if (state.pager) {\n      return <Alert type=\"info\" message={t('total', { total: state.pager.total })} />;\n    }\n    return null;\n  }, [state]);\n\n  return (\n    <div className={styles.container}>\n      <Table\n        loading={loading}\n        size=\"middle\"\n        rowKey=\"id\"\n        dataSource={dataSource}\n        columns={columns}\n        title={title}\n        pagination={{\n          showSizeChanger: true,\n          showQuickJumper: true,\n          total: state.pager?.total,\n          pageSize: state.pager?.size,\n          current: state.pager?.current,\n          className: styles.pager,\n          size: 'middle',\n        }}\n        onChange={onChange}\n      />\n    </div>\n  );\n});\n","import { createI18n } from '@/redux/i18n';\n\nexport default createI18n({\n  en: {\n    监管文件: 'Regulatory Documents',\n    发文文号: 'No.',\n    发文名称: 'Name',\n    发文状态: 'Status',\n    有效: 'Valid',\n    已经废止: 'Invalid',\n    部分条文废止: 'Partially Invalid',\n  },\n  zh: {},\n});\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"_5stCF\",\"main\":\"f99qh\",\"group\":\"bksgh\",\"icon\":\"qGdk1\"};","import React, { useCallback, useMemo } from 'react';\n\nimport { Form, Input, Select } from 'antd';\nimport PageLayout from '@/components/PageLayout';\nimport SearchForm from '@/components/SearchForm';\n\nimport ReportTable from './ReportTable';\nimport useI18n from './i18n';\nimport useReducers from '../redux';\n\nimport styles from './Query.module.scss';\n\nexport default React.memo(function UniversalRiskRateQuery() {\n  const [form] = Form.useForm();\n  const [, actions] = useReducers();\n  const [t] = useI18n();\n  const onSearch = useCallback(async params => {\n    actions.updateQueryParams(params);\n  }, []);\n\n  const statusOptions = useMemo(() => {\n    return [\n      {\n        label: t('有效'),\n        value: 'VALID',\n      },\n      {\n        label: t('已经废止'),\n        value: 'INVALID',\n      },\n      {\n        label: t('部分条文废止'),\n        value: 'PART_INVALID',\n      },\n    ];\n  }, [t]);\n\n  return (\n    <PageLayout>\n      <div className={styles.container}>\n        <SearchForm form={form} title={t('监管文件')} onSearch={onSearch}>\n          <Form.Item label={t('发文文号')} name=\"docNo\">\n            <Input placeholder={t('发文文号')} />\n          </Form.Item>\n\n          <Form.Item label={t('发文名称')} name=\"docName\">\n            <Input placeholder={t('发文名称')} />\n          </Form.Item>\n\n          {/* <Form.Item label=\"发文内容\" name=\"type\">\n            <Select allowClear options={statusOptions} placeholder=\"请选择材料类别\" />\n          </Form.Item> */}\n\n          <Form.Item label={t('发文状态')} name=\"status\">\n            <Select allowClear options={statusOptions} placeholder={t('发文状态')} />\n          </Form.Item>\n        </SearchForm>\n\n        <div className={styles.main}>\n          <ReportTable />\n        </div>\n      </div>\n    </PageLayout>\n  );\n});\n","import Query from './Query';\n\nexport default [\n  {\n    path: '/query',\n    component: Query,\n    exact: true,\n    title: '监管文件汇总',\n  },\n  // {\n  //   path: '/detail/:id',\n  //   component: ReportDetail,\n  //   exact: true,\n  //   title: '保司报告',\n  // },\n  // {\n  //   path: '/product-rate-contrast',\n  //   component: ProductRateContrast,\n  //   extra: true,\n  //   title: '历史利率曲线',\n  // },\n];\n","// extracted by mini-css-extract-plugin\nexport default {\"highlight\":\"erSpa\"};","import React, { useMemo } from 'react';\n\nimport styles from './HighlightMatch.module.scss';\n\nexport default React.memo(function HighlightMatch({ text, highlight }) {\n  const content = useMemo(() => {\n    if (!text) {\n      return null;\n    }\n\n    if (!highlight) {\n      return <p dangerouslySetInnerHTML={{ __html: text }} />;\n      // return text.split('\\n').map((ph, phIndex) => {\n      //   return <p key={phIndex}>{ph}</p>;\n      // });\n    }\n\n    return (\n      <p\n        dangerouslySetInnerHTML={{\n          __html: text.replaceAll(\n            new RegExp(highlight, 'g'),\n            `<span class=\"${styles.highlight}\">${highlight}</span>`\n          ),\n        }}\n      />\n    );\n\n    // return text.split('\\n').map((ph, phIndex) => {\n    //   const highlightPh = ph.replaceAll(\n    //     new RegExp(highlight, 'g'),\n    //     `<span class=\"${styles.highlight}\">${highlight}</span>`\n    //   );\n    //\n    //   return <p key={phIndex} dangerouslySetInnerHTML={{ __html: highlightPh }} />;\n    // });\n  }, [text, highlight]);\n\n  return content;\n});\n","import { createI18n } from '@/redux/i18n';\n\nexport default createI18n({\n  en: {\n    发文检索: 'Document Retrieval',\n    产品类别: 'Product Category',\n    设计类型: 'Design Type',\n    保险期间: 'Insurance Period',\n    个团渠道: 'Channel',\n    发文文号: 'No.',\n    发文名称: 'Name',\n    发文内容: 'Content',\n    发文状态: 'Status',\n    状态: 'Status',\n    更多: 'More',\n    看全文: 'View Full Text',\n    有效: 'Valid',\n    无效: 'Invalid',\n\n    total: 'Found {total} results',\n  },\n  zh: {\n    total: '查询到{total}条结果',\n  },\n});\n","import * as fRedux from '@/utils/redux';\n\nimport decryptString from '@/utils/decrypt';\n\nconst { createActions } = fRedux.default;\n\nconst namespace = 'ContentRetrievalForDocument';\nconst initState = {\n  queryParams: {},\n};\n\nconst { useReducers } = createActions(namespace, initState, {\n  query: [\n    (params, http, dispatch, getState) => {\n      const { user } = getState();\n\n      return http.get(`/api/document/complianceDocument/item/query`, { params }).then(res => {\n        return decryptString(user.salt, res.result);\n      });\n    },\n    (state, response) => ({ pager: response }),\n  ],\n  queryEnums: [\n    (http, dispatch, getState) => {\n      const { user } = getState();\n\n      return http.get('/api/document/complianceDocument/item/selectOpts').then(res => {\n        return decryptString(user.salt, res.result);\n      });\n    },\n    (state, response) => ({ enums: response }),\n  ],\n  updateQueryParams: [params => params, (state, params) => ({ queryParams: params })],\n  updateTableParams: [params => params, (state, params) => ({ tableParams: params })],\n  getReportToken: [\n    (params, http, dispatch, getState) => {\n      const { user } = getState();\n\n      return http.get(`/api/product/getToken`, { params }).then(res => {\n        return decryptString(user.salt, res.result);\n      });\n    },\n  ],\n  queryProduct: [\n    (params, http, dispatch, getState) => {\n      const { user } = getState();\n      return http.get(`/api/universal/productNameCats`, { params }).then(res => {\n        return decryptString(user.salt, res.result);\n      });\n    },\n    (state, products) => ({ products: products || [] }),\n  ],\n});\n\nexport default useReducers;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"u5WQp\",\"content\":\"ebw0T\",\"pager\":\"hR1YY\"};","import React, { useCallback, useState, useMemo, useEffect } from 'react';\n\nimport { Table, Alert } from 'antd';\nimport HighlightMatch from '@/components/HighlightMatch';\nimport useI18n from './i18n';\n\nimport useReducers from '../../redux';\n\nimport styles from './ReportTable.module.scss';\n\nexport default React.memo(function ReportTable() {\n  const [loading, setLoading] = useState();\n  const [state, actions] = useReducers();\n  const [t] = useI18n();\n  const queryParams = useMemo(() => {\n    if (!state.queryParams) {\n      return {};\n    }\n\n    const params = { ...state.queryParams };\n\n    Object.keys(params).forEach(key => {\n      const keyValue = params[key];\n      if (Array.isArray(keyValue) && Array.isArray(keyValue[0])) {\n        params[key] = keyValue.map(item => item[item.length - 1]);\n      }\n    });\n\n    return params;\n  }, [state.queryParams]);\n\n  useEffect(() => {\n    setLoading(true);\n    actions.updateTableParams({});\n    actions\n      .query({\n        pageNo: 1,\n        pageSize: 10,\n        ...queryParams,\n      })\n      .then(() => {\n        setLoading(false);\n      })\n      .catch(() => {\n        setLoading(false);\n      });\n  }, [queryParams]);\n\n  const dataSource = useMemo(() => {\n    return state.pager?.records || [];\n  }, [state.pager]);\n\n  const columns = useMemo(() => {\n    return [\n      {\n        title: t('发文内容'),\n        dataIndex: 'docContent',\n        render(_, item) {\n          if (item.url && item.url.startsWith('http')) {\n            return (\n              <a href={item.url} target=\"_blank\" rel=\"noreferrer\">\n                <h4>{item.docName}</h4>\n                <div className={styles.content}>\n                  <HighlightMatch text={item.contentText} highlight={state.queryParams.content} />\n                </div>\n              </a>\n            );\n          }\n\n          return (\n            <>\n              <h4>{item.docName}</h4>\n              <div className={styles.content}>\n                <HighlightMatch text={item.contentText} highlight={state.queryParams.content} />\n              </div>\n            </>\n          );\n        },\n      },\n      {\n        title: t('状态'),\n        dataIndex: 'valid',\n        width: '12%',\n        render(valid) {\n          return valid ? t('有效') : t('无效');\n        },\n      },\n      {\n        title: t('更多'),\n        dataIndex: 'action',\n        render: (value, row) => {\n          return row.url && row.url.startsWith('http') ? (\n            <a href={row.url} target=\"_blank\" rel=\"noreferrer\">\n              {t('看全文')}\n            </a>\n          ) : null;\n        },\n        width: '12%',\n      },\n    ];\n  }, [state.queryParams]);\n\n  const onChange = useCallback(\n    async (page, filter, sorter) => {\n      const params = {\n        pageNo: page.current,\n        pageSize: page.pageSize,\n      };\n      if (sorter?.column) {\n        params.column = sorter.column.dataIndex;\n        params.order = sorter.order.replace('end', '');\n      }\n      await actions.updateTableParams(params);\n      setLoading(true);\n      await actions.query({\n        ...queryParams,\n        ...params,\n      });\n      setLoading(false);\n    },\n    [queryParams]\n  );\n\n  const title = useCallback(() => {\n    if (state.pager) {\n      return <Alert type=\"info\" message={t('total', { total: state.pager.total })} />;\n    }\n    return null;\n  }, [state]);\n\n  return (\n    <div className={styles.container}>\n      <Table\n        loading={loading}\n        size=\"middle\"\n        rowKey=\"id\"\n        dataSource={dataSource}\n        columns={columns}\n        title={title}\n        pagination={{\n          showSizeChanger: true,\n          showQuickJumper: true,\n          total: state.pager?.total,\n          pageSize: state.pager?.size,\n          current: state.pager?.current,\n          className: styles.pager,\n          size: 'middle',\n        }}\n        onChange={onChange}\n      />\n    </div>\n  );\n});\n","import { createI18n } from '@/redux/i18n';\n\nexport default createI18n({\n  en: {\n    发文检索: 'Document Retrieval',\n    产品类别: 'Product Category',\n    设计类型: 'Design Type',\n    保险期间: 'Insurance Period',\n    个团渠道: 'Channel',\n    发文文号: 'No.',\n    发文名称: 'Name',\n    发文内容: 'Content',\n    发文状态: 'Status',\n  },\n  zh: {},\n});\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"kpBtD\",\"main\":\"a9sB-\",\"group\":\"EXpSI\",\"icon\":\"Xqk7b\",\"cascader-type\":\"WFs63\",\"cascaderType\":\"WFs63\"};","import React, { useCallback, useMemo, useEffect } from 'react';\n\nimport { QuestionCircleOutlined } from '@ant-design/icons';\nimport { Form, Input, Select, Cascader, Tooltip } from 'antd';\nimport PageLayout from '@/components/PageLayout';\nimport SearchForm from '@/components/SearchForm';\n\nimport ReportTable from './ReportTable';\nimport useI18n from './i18n';\nimport useReducers from '../redux';\n\nimport styles from './Query.module.scss';\n\nexport default React.memo(function UniversalRiskRateQuery() {\n  const [form] = Form.useForm();\n  const [state, actions] = useReducers();\n  const [t] = useI18n();\n  const onSearch = useCallback(async params => {\n    actions.updateQueryParams(params);\n  }, []);\n\n  useEffect(() => {\n    actions.queryEnums();\n  }, []);\n\n  const options = useMemo(() => {\n    function toOptions(items) {\n      if (!items?.length) {\n        return null;\n      }\n\n      return items.map(item => {\n        return {\n          value: item.code,\n          label: item.title,\n          children: item.children?.length ? toOptions(item.children) : null,\n        };\n      });\n    }\n\n    const enums = state.enums || {};\n\n    return Object.keys(enums).reduce((result, key) => {\n      const opts = toOptions(enums[key]);\n      // return [...result, opts]\n      return {\n        [key]: opts,\n        ...result,\n      };\n    }, {});\n  }, [state.enums]);\n\n  const statusOptions = useMemo(() => {\n    return [\n      {\n        label: '有效',\n        value: 1,\n      },\n      {\n        label: '无效',\n        value: 0,\n      },\n    ];\n  }, []);\n\n  const dropdownMatchSelectWidth = useCallback(opts => {\n    const matchWidth = !opts?.some(opt => {\n      return opt.children?.length > 1;\n    });\n\n    return matchWidth;\n  }, []);\n\n  return (\n    <PageLayout>\n      <div className={styles.container}>\n        <SearchForm form={form} title={t('发文检索')} onSearch={onSearch}>\n          <Form.Item label={t('产品类别')} name=\"propertyOrPerson\">\n            <Cascader\n              placeholder={t('产品类别')}\n              expandTrigger=\"hover\"\n              options={options.propertyOrPerson}\n              // onChange={onChange}\n              multiple\n              maxTagCount={2}\n              popupClassName={styles.cascaderType}\n              dropdownMatchSelectWidth={dropdownMatchSelectWidth(options.propertyOrPerson)}\n              showArrow\n              showClear\n              suffixIcon={\n                <Tooltip\n                  title={\n                    <div>\n                      <p>\n                        “XXXX”标签代表适用于XXXX产品的监管规定，如“定期寿险”标签代表仅适用于定期寿险产品的监管规定；\n                      </p>\n                      “XXXX通用”标签代表适用于所有XXXX产品的监管规定，如“人寿保险通用”标签代表同时适用于定期寿险、终身寿险、两全保险产品的监管规定。\n                    </div>\n                  }\n                >\n                  <QuestionCircleOutlined />\n                </Tooltip>\n              }\n            />\n          </Form.Item>\n\n          <Form.Item label={t('设计类型')} name=\"designCategory\">\n            <Cascader\n              placeholder={t('设计类型')}\n              options={options.designCategory}\n              expandTrigger=\"hover\"\n              multiple\n              maxTagCount={2}\n              showArrow\n              showClear\n              dropdownMatchSelectWidth={dropdownMatchSelectWidth(options.designCategory)}\n              suffixIcon={\n                <Tooltip\n                  title={\n                    <div>\n                      <p>\n                        “XXXX”标签代表适用于XXXX产品的监管规定，如“普通型”标签代表仅适用于普通型产品的监管规定；\n                      </p>\n                      “XXXX通用”标签代表适用于所有XXXX产品的监管规定，如“设计类型通用”标签代表同时适用于\n                    </div>\n                  }\n                >\n                  <QuestionCircleOutlined />\n                </Tooltip>\n              }\n            />\n          </Form.Item>\n\n          <Form.Item label={t('保险期间')} name=\"longOrShort\">\n            <Cascader\n              placeholder={t('保险期间')}\n              options={options.longOrShort}\n              multiple\n              expandTrigger=\"hover\"\n              maxTagCount={2}\n              showArrow\n              showClear\n              dropdownMatchSelectWidth={dropdownMatchSelectWidth(options.longOrShort)}\n              suffixIcon={\n                <Tooltip\n                  title={\n                    <div>\n                      <p>\n                        “XXXX”标签代表适用于XXXX产品的监管规定，如“短期保险”标签代表仅适用于短期保险产品的监管规定；\n                      </p>\n                      “XXXX通用”标签代表适用于所有XXXX产品的监管规定，如“长/短期险通用”标签代表同时适用于短期保险、长期保险、一年期保证续保保险产品的监管规定。\n                    </div>\n                  }\n                >\n                  <QuestionCircleOutlined />\n                </Tooltip>\n              }\n            />\n          </Form.Item>\n\n          <Form.Item label={t('个团渠道')} name=\"indOrGroup\">\n            <Cascader\n              placeholder={t('个团渠道')}\n              options={options.indOrGroup}\n              multiple\n              expandTrigger=\"hover\"\n              maxTagCount={2}\n              showArrow\n              showClear\n              dropdownMatchSelectWidth={dropdownMatchSelectWidth(options.indOrGroup)}\n              suffixIcon={\n                <Tooltip\n                  title={\n                    <div>\n                      <p>\n                        “XXXX”标签代表适用于XXXX产品的监管规定，如“个人保险”标签代表仅适用于个人保险产品的监管规定；\n                      </p>\n                      “XXXX通用”标签代表适用于所有XXXX产品的监管规定，如“个/团险通用”标签代表同时适用于个人保险、团体保险产品的监管规定。/短期险通用”标签代表同时适用于短期保险、长期保险、一年期保证续保保险产品的监管规定。\n                    </div>\n                  }\n                >\n                  <QuestionCircleOutlined />\n                </Tooltip>\n              }\n            />\n          </Form.Item>\n\n          <Form.Item label={t('发文文号')} name=\"docNo\">\n            <Input placeholder={t('发文文号')} />\n          </Form.Item>\n\n          <Form.Item label={t('发文名称')} name=\"docName\">\n            <Input placeholder={t('发文名称')} />\n          </Form.Item>\n\n          <Form.Item label={t('发文内容')} name=\"content\">\n            <Input placeholder={t('发文内容')} />\n          </Form.Item>\n\n          <Form.Item label={t('发文状态')} name=\"valid\">\n            <Select allowClear options={statusOptions} placeholder={t('发文状态')} />\n          </Form.Item>\n        </SearchForm>\n\n        <div className={styles.main}>\n          <ReportTable />\n        </div>\n      </div>\n    </PageLayout>\n  );\n});\n","import Query from './Query';\n\nexport default [\n  {\n    path: '/query',\n    component: Query,\n    exact: true,\n    title: '监管文件汇总',\n  },\n  // {\n  //   path: '/detail/:id',\n  //   component: ReportDetail,\n  //   exact: true,\n  //   title: '保司报告',\n  // },\n  // {\n  //   path: '/product-rate-contrast',\n  //   component: ProductRateContrast,\n  //   extra: true,\n  //   title: '历史利率曲线',\n  // },\n];\n","export const specialOptions = [\n  { label: '无', value: '无' },\n  { label: '学生平安保险', value: '学生平安保险' },\n  { label: '少儿专属产品', value: '少儿专属产品' },\n  { label: '女性专属产品', value: '女性专属产品' },\n  { label: '航空意外保险', value: '航空意外保险' },\n  { label: '老年专属产品', value: '老年专属产品' },\n];\n\nexport const saleStatusOptions = [\n  { label: '在售', value: '在售' },\n  { label: '停售', value: '停售' },\n  { label: '停用', value: '停用' },\n  { label: '未售', value: '未售' },\n];\n\nexport const paymentTypeOptions = [\n  { label: '一次性交费', value: '一次性交费' },\n  { label: '分期交费', value: '分期交费' },\n  { label: '分期交费一次性交费兼有', value: '分期交费一次性交费兼有' },\n  { label: '灵活交费', value: '灵活交费' },\n];\n\nexport const periodTypeOptions = [\n  { label: '短期（一年及一年以下）', value: '短期（一年及一年以下）' },\n  { label: '长期（超过一年或含有保证续保条款）', value: '长期（超过一年或含有保证续保条款）' },\n];\n\nexport const underwriteOptions = [\n  { label: '个人', value: '个人' },\n  { label: '团体', value: '团体' },\n];\n\nexport const designTypeOptions = [\n  { label: '无', value: '无' },\n  { label: '传统型产品', value: '传统型产品' },\n  { label: '新型产品', value: '新型产品' },\n  { label: '普通型', value: '普通型' },\n  { label: '万能型', value: '万能型' },\n  { label: '增额红利', value: '增额红利' },\n  { label: '现金红利', value: '现金红利' },\n  { label: '投资连结型', value: '投资连结型' },\n  { label: '税收递延型', value: '税收递延型' },\n  { label: '专属商业养老', value: '专属商业养老' },\n];\n","import { createI18n } from '@/redux/i18n';\n\nexport default createI18n({\n  en: {\n    万能险利率: 'Universal Interest Rate',\n    已选中: 'Selected',\n    对比: 'Compare',\n    产品名称: 'Product Name',\n    产品类别: 'Product Category',\n    公司名称: 'Company Name',\n    报备年份: 'Sale Year',\n    销售状态: 'Sales Status',\n    结算年月: 'Settlement Month',\n    结算利率: 'Settlement Rate',\n    保证利率: 'Guaranteed Rate',\n    最低: 'Minimum',\n    最高: 'Maximum',\n    开始时间: 'Start Time',\n    结束时间: 'End Time',\n  },\n  zh: {},\n});\n","import * as fRedux from '@/utils/redux';\n\nimport decryptString from '@/utils/decrypt';\n\nconst { createActions } = fRedux.default;\n\nconst namespace = 'universal-interest-rate';\nconst initState = {\n  queryParams: {},\n};\n\nconst { useReducers } = createActions(namespace, initState, {\n  query: [\n    (params, http, dispatch, getState) => {\n      const { user } = getState();\n\n      return http.post(`/api/universal/list`, null, { params }).then(res => {\n        return decryptString(user.salt, res.result);\n      });\n    },\n    (state, response) => ({ pager: response }),\n  ],\n  updateQueryParams: [params => params, (state, params) => ({ queryParams: params })],\n  updateTableParams: [params => params, (state, params) => ({ tableParams: params })],\n  getReportToken: [\n    (params, http, dispatch, getState) => {\n      const { user } = getState();\n\n      return http.get(`/api/product/getToken`, { params }).then(res => {\n        return decryptString(user.salt, res.result);\n      });\n    },\n  ],\n  queryProduct: [\n    (params, http, dispatch, getState) => {\n      const { user } = getState();\n      return http.get(`/api/universal/productNameCats`, { params }).then(res => {\n        return decryptString(user.salt, res.result);\n      });\n    },\n    (state, products) => ({ products: products || [] }),\n  ],\n  updateSelectedProducts: [keys => keys, (state, keys) => ({ selectedProducts: keys })],\n  toggleShowSelected: [() => {}, state => ({ showSelected: !state.showSelected })],\n  setShowSelected: [showSelected => showSelected, (state, showSelected) => ({ showSelected })],\n});\n\nexport default useReducers;\n","import { createI18n } from '@/redux/i18n';\n\nexport default createI18n({\n  en: {\n    看条款: 'View Clause',\n    更多: 'More',\n    备注: 'Remark',\n    最低保证利率: 'Minimum Guaranteed Rate',\n    销售状态: 'Sales Status',\n    产品名称: 'Product Name',\n    产品类别: 'Product Category',\n    公司名称: 'Company Name',\n    报备年份: 'Sale Year',\n    结算年月: 'Settlement Month',\n    结算利率: 'Settlement Rate',\n    保证利率: 'Guaranteed Rate',\n    最低: 'Minimum',\n    最高: 'Maximum',\n    开始时间: 'Start Time',\n    结束时间: 'End Time',\n  },\n  zh: {},\n});\n","import React, { useCallback, useState, useMemo, useEffect } from 'react';\n\nimport dayjs from 'dayjs';\nimport { Button } from 'antd';\nimport QueryTable from '@/components/QueryTable';\nimport openWindow from '@/utils/openWindow';\n\nimport useReducers from '../../redux';\nimport useI18n from './i18n';\n\nexport default React.memo(function ReportTable() {\n  const [loading, setLoading] = useState();\n  const [state, actions] = useReducers();\n  const [t] = useI18n();\n  useEffect(() => {\n    setLoading(true);\n    actions.updateTableParams({});\n    actions\n      .query({\n        pageNo: 1,\n        pageSize: 10,\n        ...state.queryParams,\n      })\n      .then(() => {\n        setLoading(false);\n      })\n      .catch(() => {\n        setLoading(false);\n      });\n  }, [state.queryParams]);\n\n  const viewReport = useCallback(async item => {\n    setLoading(true);\n    const params = await actions.getReportToken({ id: item.productId, type: 'PRODUCT' });\n    openWindow(`/report-viewer?${params}`);\n    setLoading(false);\n  }, []);\n\n  const columns = useMemo(() => {\n    return [\n      {\n        title: t('报备年份'),\n        dataIndex: 'saleYear',\n        width: '7%',\n        sorter: true,\n      },\n      {\n        title: t('产品名称'),\n        dataIndex: 'productName',\n        sorter: true,\n      },\n      {\n        title: t('公司名称'),\n        dataIndex: 'companyName',\n        width: '17%',\n        sorter: true,\n      },\n      {\n        title: t('产品类别'),\n        dataIndex: 'productCategory',\n        width: '8%',\n        sorter: true,\n        render(text) {\n          if (text != null && text !== '') {\n            const cats = text.split('-');\n            return cats[cats.length - 1];\n          }\n        },\n      },\n      {\n        title: t('结算年月'),\n        dataIndex: 'settlementDate',\n        width: '8%',\n        sorter: true,\n        render(text) {\n          return dayjs(text).format('YYYY-MM');\n        },\n      },\n      {\n        title: t('结算利率'),\n        width: '9%',\n        dataIndex: 'settlementRate',\n        sorter: true,\n        render(v) {\n          if (Number.isFinite(v)) {\n            return `${v.toFixed(2)}%`;\n          }\n\n          return v;\n        },\n      },\n      {\n        title: t('最低保证利率'),\n        width: '11%',\n        dataIndex: 'ensureRate',\n        sorter: true,\n        render(v) {\n          if (Number.isFinite(v)) {\n            return `${v.toFixed(2)}%`;\n          }\n\n          return v;\n        },\n      },\n      {\n        title: t('销售状态'),\n        width: '7%',\n        dataIndex: 'saleStatus',\n        sorter: true,\n      },\n      {\n        title: t('备注'),\n        width: '10%',\n        dataIndex: 'remark',\n      },\n      {\n        title: t('更多'),\n        dataIndex: 'action',\n        width: 80,\n        render(_, item) {\n          return (\n            <Button onClick={() => viewReport(item)} type=\"link\">\n              {t('看条款')}\n            </Button>\n          );\n        },\n      },\n    ];\n  }, [viewReport]);\n\n  return (\n    <QueryTable\n      loading={loading}\n      columns={columns}\n      tableParams={state.tableParams}\n      pager={state.pager}\n      queryParams={state.queryParams}\n      selectedProducts={state.selectedProducts}\n      updateSelectedProducts={actions.updateSelectedProducts}\n      updateTableParams={actions.updateTableParams}\n      query={actions.query}\n      showSelected={state.showSelected}\n    />\n  );\n});\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"_4qkU+\",\"main\":\"_8hmLq\",\"group\":\"ObqVf\",\"icon\":\"_6DyeS\"};","import React, { useCallback, useMemo } from 'react';\n\nimport qs from 'qs';\nimport dayjs from 'dayjs';\nimport { SwapOutlined } from '@ant-design/icons';\nimport { Cascader, Form, Input, Select, DatePicker, Button, Checkbox } from 'antd';\nimport PageLayout from '@/components/PageLayout';\nimport SearchForm from '@/components/SearchForm';\nimport { useCompanyOptions, useYearOptions, useProductTypeTree } from '@/redux/hooks/enums';\nimport ProductSelect from '@/components/form/ProductSelect';\nimport openWindow from '@/utils/openWindow';\nimport { saleStatusOptions } from '@/constants/options';\nimport useI18n from './i18n';\nimport ReportTable from './ReportTable';\n\nimport useReducers from '../redux';\n\nimport styles from './Query.module.scss';\n\nconst { RangePicker } = DatePicker;\n\nexport default React.memo(function UniversalRiskRateQuery() {\n  const [form] = Form.useForm();\n  const [state, actions] = useReducers();\n  const companyOptions = useCompanyOptions();\n  const yearOptions = useYearOptions(2006);\n  const productTypeTree = useProductTypeTree();\n  const [t] = useI18n();\n  const onSearch = useCallback(async ({ productType, settlementDate, ...rest }) => {\n    const params = rest;\n\n    if (params.productNames) {\n      params.productNames = params.productNames.map(item => encodeURIComponent(item));\n    }\n\n    if (settlementDate) {\n      params.settlementDateBegin = settlementDate[0].format('YYYY-MM');\n      params.settlementDateEnd = settlementDate[1].format('YYYY-MM');\n    }\n\n    if (productType?.length) {\n      const productTypeParams = {};\n\n      productType\n        .map(type => {\n          return type[type.length - 1];\n        })\n        .forEach(type => {\n          const lv = type.match(/_+/g).length;\n\n          switch (lv) {\n            case 1:\n              productTypeParams.productCategoryL1 = productTypeParams.productCategoryL1 || [];\n              productTypeParams.productCategoryL1.push(type);\n              break;\n            case 2:\n              productTypeParams.productCategoryL2 = productTypeParams.productCategoryL2 || [];\n              productTypeParams.productCategoryL2.push(type);\n              break;\n            case 3:\n              productTypeParams.productCategoryL3 = productTypeParams.productCategoryL3 || [];\n              productTypeParams.productCategoryL3.push(type);\n              break;\n            default:\n              productTypeParams.productCategoryL4 = productTypeParams.productCategoryL4 || [];\n              productTypeParams.productCategoryL4.push(type);\n              break;\n          }\n        });\n\n      Object.keys(productTypeParams).map(key => {\n        params[key] = productTypeParams[key].join(',');\n      });\n    }\n\n    actions.updateQueryParams(params);\n  }, []);\n\n  const filterOption = useCallback((value, option) => {\n    const normalFilter =\n      option.label.toLowerCase().includes(value.toLowerCase()) ||\n      option.value.toLowerCase().includes(value.toLowerCase());\n    return normalFilter || option.pinyin.some(item => item.includes(value.toLowerCase()));\n  }, []);\n\n  const viewCompare = useCallback(() => {\n    const { settlementDate } = form.getFieldsValue(['settlementDate']);\n\n    const params = {};\n\n    if (state.selectedProducts?.length) {\n      params.products = state.selectedProducts.map(item => item.outerProductId);\n    }\n\n    if (settlementDate) {\n      params.settlementBegin = settlementDate[0].format('YYYY-MM');\n      params.settlementEnd = settlementDate[1].format('YYYY-MM');\n    }\n\n    openWindow(\n      `/product/universal-interest-rate/product-rate-contrast?${qs.stringify(params, {\n        arrayFormat: 'comma',\n      })}`\n    );\n  }, [state.selectedProducts]);\n\n  const disabledDate = useMemo(() => {\n    const now = dayjs();\n    return v => {\n      return v.diff(now) > 0;\n    };\n  }, []);\n\n  return (\n    <PageLayout>\n      <div className={styles.container}>\n        <SearchForm\n          form={form}\n          title={t('万能险利率')}\n          onSearch={onSearch}\n          extraAction={\n            <>\n              <Button\n                onClick={actions.toggleShowSelected}\n                htmlType=\"button\"\n                type=\"default\"\n                icon={<Checkbox checked={state.showSelected} style={{ marginRight: 6 }} />}\n              >\n                {t('已选中')}（{state.selectedProducts?.length || 0}）\n              </Button>\n              <Button\n                onClick={viewCompare}\n                icon={<SwapOutlined className={styles.icon} />}\n                type=\"primary\"\n                disabled={!state.selectedProducts?.length}\n              >\n                {t('对比')}\n              </Button>\n            </>\n          }\n        >\n          <Form.Item label={t('产品名称')} name=\"productNames\">\n            <ProductSelect\n              allowClear\n              maxTagCount={2}\n              showArrow\n              showSearch\n              outerProduct\n              labelInValue={false}\n              mode=\"tags\"\n              placeholder={t('产品名称')}\n            />\n          </Form.Item>\n\n          <Form.Item label={t('产品类别')} name=\"productType\">\n            <Cascader\n              showArrow\n              allowClear\n              placeholder={t('产品类别')}\n              expandTrigger=\"hover\"\n              options={productTypeTree}\n              // onChange={onChange}\n              multiple\n              maxTagCount={2}\n              popupClassName={styles.cascader}\n              // showCheckedStrategy=\"SHOW_PARENT\"\n            />\n          </Form.Item>\n\n          <Form.Item label={t('公司名称')} name=\"companyIds\">\n            <Select\n              maxTagCount={2}\n              showArrow\n              allowClear\n              showSearch\n              mode=\"multiple\"\n              filterOption={filterOption}\n              options={companyOptions}\n              placeholder={t('公司名称')}\n            />\n          </Form.Item>\n\n          <Form.Item label={t('报备年份')} name=\"saleYears\">\n            <Select\n              maxTagCount={2}\n              allowClear\n              showArrow\n              mode=\"multiple\"\n              options={yearOptions}\n              placeholder={t('报备年份')}\n            />\n          </Form.Item>\n\n          <Form.Item label={t('销售状态')} name=\"saleStatus\">\n            <Select\n              allowClear\n              showArrow\n              maxTagCount={2}\n              mode=\"multiple\"\n              options={saleStatusOptions}\n              placeholder={t('销售状态')}\n            />\n          </Form.Item>\n\n          <Form.Item label={t('结算年月')} name=\"settlementDate\">\n            <RangePicker\n              separator=\"~\"\n              allowClear\n              picker=\"month\"\n              placeholder={[t('开始时间'), t('结束时间')]}\n              disabledDate={disabledDate}\n            />\n          </Form.Item>\n\n          <Form.Item label={t('结算利率')}>\n            <Input.Group className={styles.group}>\n              <Form.Item noStyle name=\"settlementRateMin\">\n                <Input\n                  type=\"number\"\n                  step={0.01}\n                  suffix=\"%\"\n                  min={0}\n                  max={100}\n                  placeholder={t('最低')}\n                  controls={false}\n                />\n              </Form.Item>\n              <span>~</span>\n              <Form.Item noStyle name=\"settlementRateMax\">\n                <Input\n                  type=\"number\"\n                  step={0.01}\n                  suffix=\"%\"\n                  min={0}\n                  max={100}\n                  placeholder={t('最高')}\n                  controls={false}\n                />\n              </Form.Item>\n            </Input.Group>\n          </Form.Item>\n\n          <Form.Item label={t('保证利率')}>\n            <Input.Group className={styles.group}>\n              <Form.Item noStyle name=\"ensureRateMin\">\n                <Input\n                  type=\"number\"\n                  suffix=\"%\"\n                  step={0.01}\n                  min={0}\n                  max={100}\n                  placeholder={t('最低')}\n                  controls={false}\n                />\n              </Form.Item>\n              <span>~</span>\n              <Form.Item noStyle name=\"ensureRateMax\">\n                <Input\n                  type=\"number\"\n                  suffix=\"%\"\n                  step={0.01}\n                  min={0}\n                  max={100}\n                  placeholder={t('最高')}\n                  controls={false}\n                />\n              </Form.Item>\n            </Input.Group>\n          </Form.Item>\n        </SearchForm>\n\n        <div className={styles.main}>\n          <ReportTable />\n        </div>\n      </div>\n    </PageLayout>\n  );\n});\n","import React, { useRef, useEffect } from 'react';\n\nimport useScript from '@/hooks/useScript';\n\nexport default React.memo(function Chart({ xAxis, series }) {\n  const echarts = useScript('https://s.futurebaobei.com/static/js/echarts.min.js', 'echarts');\n  const chartRef = useRef();\n  const chartDom = useRef();\n  const activeLine = useRef();\n\n  useEffect(() => {\n    if (!echarts) {\n      return;\n    }\n\n    if (!chartRef.current) {\n      chartRef.current = echarts.init(chartDom.current);\n      chartRef.current.on('mouseover', e => {\n        activeLine.current = e.seriesName;\n\n        chartRef.current.setOption({\n          series: {\n            name: e.seriesName,\n            lineStyle: {\n              width: 4,\n              opacity: 1,\n            },\n          },\n        });\n      });\n\n      chartRef.current.on('mouseout', e => {\n        activeLine.current = '';\n        chartRef.current.setOption({\n          series: {\n            name: e.seriesName,\n            lineStyle: {\n              width: 2,\n              opacity: 0.5,\n            },\n          },\n        });\n      });\n    }\n\n    const option = {\n      grid: {\n        top: '20%',\n        right: '4%',\n        bottom: '10',\n        left: '84',\n        borderWidth: 10,\n        containLabel: true,\n      },\n      legend: {\n        show: true,\n        right: 0,\n        color: '#666',\n        fontSize: 16,\n        // data: legend,\n      },\n      tooltip: {\n        trigger: 'axis',\n        formatter(params) {\n          const parent = document.createElement('div');\n\n          const index = document.createElement('p');\n          index.innerHTML = params[0].axisValue;\n          parent.appendChild(index);\n\n          params.map(item => {\n            const child = document.createElement('div');\n            child.style.display = 'flex';\n            child.style.alignItems = 'center';\n\n            const marker = document.createElement('span');\n            marker.innerHTML = item.marker;\n\n            const name = document.createElement('span');\n            name.innerHTML = item.seriesName;\n            name.style.flex = '1';\n            name.style.marginRight = '16px';\n\n            const value = document.createElement('span');\n            if (item.value === undefined) {\n              value.innerHTML = '-';\n            } else {\n              value.innerHTML = `${item.value}%`;\n            }\n            value.style.textAlign = 'right';\n            value.style.fontFamily = 'Arial';\n\n            if (item.seriesName === activeLine.current) {\n              value.style.color = item.color;\n              name.style.color = item.color;\n            } else {\n              value.style.color = activeLine.current ? '#999' : '#333';\n              name.style.color = activeLine.current ? '#999' : '#333';\n            }\n\n            child.appendChild(marker.firstChild);\n            child.appendChild(name);\n            child.appendChild(value);\n\n            parent.appendChild(child);\n          });\n\n          return parent;\n        },\n      },\n      yAxis: {\n        type: 'value',\n        splitNumber: 5,\n        minInterval: 1,\n        min: 0,\n        max: series.length ? undefined : 5,\n        name: '结算利率(%)',\n        nameLocation: 'end',\n        nameGap: 20,\n        nameTextStyle: {\n          fontSize: 14,\n          padding: [0, 94, 0, 0],\n          color: '#333',\n        },\n        axisLabel: {\n          color: '#666',\n          fontSize: 16,\n        },\n      },\n      xAxis: {\n        type: 'category',\n        axisTick: false,\n        axisLabel: {\n          color: '#666',\n          fontSize: 16,\n          formatter: '{value}',\n        },\n        name: '结算年月',\n        nameLocation: 'start',\n        nameGap: 30,\n        nameTextStyle: {\n          fontSize: 14,\n          color: '#333',\n        },\n        data: xAxis,\n      },\n      series,\n    };\n\n    chartRef.current.setOption(option);\n  }, [echarts, xAxis, series]);\n\n  return <div style={{ height: '100%' }} ref={chartDom} />;\n});\n","import * as fRedux from '@/utils/redux';\n\nimport decryptString from '@/utils/decrypt';\n\nconst { createActions } = fRedux.default;\n\nconst namespace = 'UniversalInterestRate';\nconst initState = {};\n\nconst { useReducers } = createActions(namespace, initState, {\n  query: [\n    (params, http, dispatch, getState) => {\n      const { user } = getState();\n\n      return http.get(`/api/universal/queryByProductId`, { params }).then(res => {\n        return decryptString(user.salt, res.result);\n      });\n    },\n    (state, response) => ({ data: response }),\n  ],\n  clear: [() => {}, () => ({ data: [] })],\n});\n\nexport default useReducers;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"OuRfG\",\"title\":\"_8Vv4f\",\"main\":\"_97WF4\"};","import React, { useEffect, useMemo } from 'react';\n\nimport dayjs from 'dayjs';\nimport useQuery from '@/hooks/useQuery';\nimport PageLayout from '@/components/PageLayout';\nimport Chart from './Chart';\n\nimport useReducers from './redux';\n\nimport styles from './ProductRateContrast.module.scss';\n\nexport default React.memo(function ProductRateContrast() {\n  const [state, actions] = useReducers();\n  const query = useQuery();\n\n  const params = useMemo(() => {\n    const end = query.settlementEnd ? dayjs(query.settlementEnd) : dayjs();\n    let start = dayjs(query.settlementBegin || undefined);\n\n    if (!query.settlementBegin) {\n      start = start.subtract(1, 'year');\n    }\n\n    return {\n      outerProductIds: query.products,\n      settlementBegin: start.startOf('month'),\n      settlementEnd: end.endOf('month'),\n    };\n  }, [query.ids]);\n\n  useEffect(() => {\n    actions.clear();\n    actions.query({\n      ...params,\n      settlementBegin: params.settlementBegin.format('YYYY-MM-DD'),\n      settlementEnd: params.settlementEnd.format('YYYY-MM-DD'),\n    });\n  }, [params]);\n\n  const xAxis = useMemo(() => {\n    const end = dayjs(params.settlementEnd);\n    const start = dayjs(params.settlementBegin);\n\n    let distance = end.diff(start, 'month');\n\n    if (distance < 0) {\n      distance = 1;\n    }\n\n    const months = new Array(distance + 1).fill(1).map((m, index) => {\n      return start.month(start.month() + index).format('YYYY-MM');\n    });\n\n    return months;\n  }, [params]);\n\n  const series = useMemo(() => {\n    if (!state.data) {\n      return [];\n    }\n\n    return state.data\n      .map(line => {\n        if (!line.length) {\n          return null;\n        }\n\n        const name = line[0]?.productName;\n        return {\n          name,\n          type: 'line',\n          smooth: true,\n          data: xAxis.map(x => {\n            const data = line.find(item => dayjs(item.settlementDate).format('YYYY-MM') === x);\n            if (!data) {\n              return;\n            }\n            return data.settlementRate;\n          }),\n        };\n      })\n      .filter(Boolean);\n  }, [state.data, xAxis]);\n\n  return (\n    <PageLayout fixedLayout>\n      <div className={styles.container}>\n        <div className={styles.title}>历史利率曲线</div>\n\n        <div className={styles.main}>\n          <Chart xAxis={xAxis} series={series} />\n        </div>\n      </div>\n    </PageLayout>\n  );\n});\n","import Query from './Query';\nimport ProductRateContrast from './ProductRateContrast';\n\nexport default [\n  {\n    path: '/query',\n    component: Query,\n    exact: true,\n    title: '万能险利率',\n  },\n  // {\n  //   path: '/detail/:id',\n  //   component: ReportDetail,\n  //   exact: true,\n  //   title: '保司报告',\n  // },\n  {\n    path: '/product-rate-contrast',\n    component: ProductRateContrast,\n    extra: true,\n    title: '历史利率曲线',\n  },\n];\n","import React, { useCallback } from 'react';\n\nimport { Select } from 'antd';\nimport { useCompanyOptions } from '@/redux/hooks/enums';\n\nexport default React.memo(function CompanySelect({ ...props }) {\n  const companyOptions = useCompanyOptions();\n\n  const filterOption = useCallback((value, option) => {\n    const normalFilter =\n      option.label.toLowerCase().includes(value.toLowerCase()) ||\n      option.value.toLowerCase().includes(value.toLowerCase());\n    return normalFilter || option.pinyin.some(item => item.includes(value.toLowerCase()));\n  }, []);\n\n  return (\n    <Select\n      {...props}\n      showArrow\n      allowClear\n      filterOption={filterOption}\n      showSearch\n      options={companyOptions}\n    />\n  );\n});\n","function toOptions(arr) {\n  return arr.map(item => ({ value: item, label: item }));\n}\n\nexport const designTypeOptions = toOptions([\n  '普通型',\n  '万能型',\n  '分红型',\n  '投资连结型',\n  '税收递延型',\n  '专属商业养老',\n  '商业养老金',\n]);\n\nexport const underwriteOptions = toOptions(['个人', '团体']);\n\nexport const saleStatusOptions = toOptions(['在售', '停售', '停用', '未售']);\n\nexport const labelInsurancePeriodsOptions = toOptions(['终身', '定期', '终身，定期', '其他']);\n\nexport const labelPensionStartAgeOptions = toOptions(['50', '55', '60', '65', '70', '75', '其他']);\n\nexport const labelPensionPaymentMethodOptions = toOptions(['年领', '月领', '年领或月领', '其他']);\n\nexport const annuityTypeOptions = toOptions(['平准年金', '增额年金']);\n\nexport const otherProductAttributesOptions = toOptions([\n  '互联网保险',\n  '附加险',\n  '互联网保险，附加险',\n  '无',\n]);\n\nexport const labelMinInsurableAgeOptions = toOptions(['1岁及以上', '1岁以下', '其他']);\n\nexport const labelMaxInsurableAgeOptions = toOptions([\n  '50-60',\n  '61-70',\n  '71-80',\n  '81及以上',\n  '其他',\n]);\n\nexport const labelPaymentMethodOptions = toOptions([\n  '分期交费',\n  '分期交费，灵活交费',\n  '分期交费一次性交费兼有',\n  '分期交费一次性交费兼有，灵活交费',\n  '灵活交费',\n  '一次性交费',\n  '一次性交费，灵活交费',\n  '其他',\n]);\n\nexport const labelPensionPaymentPeriodOptions = toOptions(['定期', '终身', '终身，定期', '其他']);\n\nexport const guaranteedPensionPaymentPeriodOptions = toOptions(['是', '否']);\n\nexport const dividendDistributionMethodOptions = toOptions([\n  '二选一（累积生息/抵交保费）',\n  '二选一（现金领取/累积生息）',\n  '三选一（现金领取/累积生息/抵交保费）',\n  '增额红利+终了红利',\n  '其他',\n]);\n","import React from 'react';\n\nexport function percentRender(v) {\n  if (Number.isFinite(v)) {\n    return `${v.toFixed(2)}%`;\n  }\n\n  if (Number.isFinite(+v)) {\n    return `${(+v).toFixed(2)}%`;\n  }\n  return '';\n}\n\nexport function percentFromFloatRender(v) {\n  const num = Number(v);\n  if (!Number.isFinite(num)) return '';\n  // 先转为保留5位小数的字符串\n  let formatted = (num * 100).toFixed(5);\n  // 正则表达式：去掉末尾的零，但至少保留2位小数\n  formatted = formatted.replace(/(\\.\\d{2,}?)0+$/, '$1');\n  // 确保至少有2位小数（不足补零）\n  if (!formatted.includes('.')) {\n    formatted += '.00';\n  } else {\n    const decimalPart = formatted.split('.')[1];\n    if (decimalPart.length < 2) {\n      formatted = formatted.padEnd(formatted.length + (2 - decimalPart.length), '0');\n    }\n  }\n  return `${formatted}%`;\n}\n\n/*\nexport function percentFromFloatRender(v) {\n  if (Number.isFinite(v)) {\n    let formatted = `${(v * 100).toFixed(5)}%`;\n    formatted = formatted.replace(/(\\.\\d{2,}?)0+$/, '$1');\n    // 确保至少有2位小数（不足补零）\n    if (!formatted.includes('.')) {\n      formatted += '.00';\n    } else {\n      const decimalPart = formatted.split('.')[1];\n      if (decimalPart.length < 2) {\n        formatted = formatted.padEnd(formatted.length + (2 - decimalPart.length), '0');\n      }\n    }\n    return formatted + '%';\n  }\n\n  if (Number.isFinite(+v)) {\n    return `${(v * 100).toFixed(5)}%`;\n  }\n  return '';\n}\n*/\n\nexport function lineFeedRender(v) {\n  if (!v) {\n    return v;\n  }\n\n  if (!v.split) {\n    return v;\n  }\n\n  const phs = v.split('\\n');\n  if (phs.length < 2) {\n    return v;\n  }\n\n  return phs.map((p, index) => {\n    return (\n      <p style={{ marginBottom: 10 }} key={index}>\n        {p}\n      </p>\n    );\n  });\n}\n","import * as fRedux from '@/utils/redux';\n\nimport decryptString from '@/utils/decrypt';\n\nconst { createActions } = fRedux.default;\n\nconst namespace = 'AnnuitiesComparison';\nconst initState = {\n  queryParams: {},\n};\n\nconst { useReducers } = createActions(namespace, initState, {\n  queryByIds: [\n    (params, http, dispatch, getState) => {\n      const { user } = getState();\n\n      return http.get(`/api/productPension/queryByIds`, { params }).then(res => {\n        return decryptString(user.salt, res.result);\n      });\n    },\n    (state, response) => ({ contrastProducts: response }),\n  ],\n  query: [\n    (params, http, dispatch, getState) => {\n      const { user } = getState();\n\n      return http.post(`/api/productPension/list`, null, { params }).then(res => {\n        return decryptString(user.salt, res.result);\n      });\n    },\n    (state, response) => ({ pager: response }),\n  ],\n  updateQueryParams: [params => params, (state, params) => ({ queryParams: params })],\n  updateTableParams: [params => params, (state, params) => ({ tableParams: params })],\n  getReportToken: [\n    (params, http, dispatch, getState) => {\n      const { user } = getState();\n\n      return http.get(`/api/product/getToken`, { params }).then(res => {\n        return decryptString(user.salt, res.result);\n      });\n    },\n  ],\n  queryProduct: [\n    (params, http, dispatch, getState) => {\n      const { user } = getState();\n      return http.get(`/api/universal/productNameCats`, { params }).then(res => {\n        return decryptString(user.salt, res.result);\n      });\n    },\n    (state, products) => ({ products: products || [] }),\n  ],\n  updateSelectedProducts: [keys => keys, (state, keys) => ({ selectedProducts: keys })],\n  toggleShowSelected: [() => {}, state => ({ showSelected: !state.showSelected })],\n  setShowSelected: [showSelected => showSelected, (state, showSelected) => ({ showSelected })],\n});\n\nexport default useReducers;\n","import { createI18n } from '@/redux/i18n';\n\nexport default createI18n({\n  en: {\n    看条款: 'View Clause',\n    更多: 'More',\n    备注: 'Remark',\n    养老年金领取规则: 'Annuities Payment Rule',\n    养老年金保证给付期间: 'Guaranteed Annuities Payment Period',\n    身故给付规则: 'Death Payment Rule',\n    '满期金（祝寿金）': 'Maturity Benefit',\n    销售状态: 'Sales Status',\n    产品名称: 'Product Name',\n    公司名称: 'Company Name',\n    报备年份: 'Sale Year',\n    保险期间: 'Policy Term',\n    起始领取年龄: 'Start Age',\n    领取方式: 'Payment Method',\n    领取类型: 'Payment Type',\n    其他属性: 'Other Attribute',\n    最小投保年龄: 'Minimum Insurable Age',\n    最大投保年龄: 'Maximum Insurable Age',\n    给付期间: 'Payment Period',\n    是否约定养老年金保证给付期间: 'Guaranteed Payment Period',\n  },\n  zh: {},\n});\n","import React, { useCallback, useState, useMemo, useEffect } from 'react';\n\nimport { Button } from 'antd';\n\nimport QueryTable from '@/components/QueryTable';\nimport { lineFeedRender } from '@/utils/cellRender';\nimport openWindow from '@/utils/openWindow';\nimport useReducers from '../../redux';\nimport useI18n from './i18n';\n\nexport default React.memo(function ReportTable() {\n  const [loading, setLoading] = useState();\n  const [state, actions] = useReducers();\n  const [t] = useI18n();\n  useEffect(() => {\n    setLoading(true);\n    actions.updateTableParams({});\n    actions\n      .query({\n        pageNo: 1,\n        pageSize: 10,\n        ...state.queryParams,\n      })\n      .then(() => {\n        setLoading(false);\n      })\n      .catch(() => {\n        setLoading(false);\n      });\n  }, [state.queryParams]);\n\n  const viewReport = useCallback(async item => {\n    setLoading(true);\n    const params = await actions.getReportToken({ id: item.productId, type: 'PRODUCT' });\n    openWindow(`/report-viewer?${params}`);\n    setLoading(false);\n  }, []);\n\n  const columns = useMemo(() => {\n    return [\n      {\n        title: t('报备年份'),\n        dataIndex: 'saleYear',\n        width: '7%',\n        sorter: true,\n      },\n      {\n        title: t('产品名称'),\n        dataIndex: 'productName',\n        width: '12%',\n        sorter: true,\n      },\n      {\n        title: t('公司名称'),\n        dataIndex: 'companyName',\n        width: '12%',\n        sorter: true,\n      },\n      {\n        title: t('养老年金领取规则'),\n        dataIndex: 'pensionPaymentRules',\n        width: '12%',\n        render: lineFeedRender,\n        sorter: true,\n      },\n      {\n        title: t('养老年金保证给付期间'),\n        dataIndex: 'guaranteedPensionPaymentPeriodValue',\n        width: '9%',\n        sorter: true,\n      },\n      {\n        title: t('身故给付规则'),\n        dataIndex: 'deathPaymentRules',\n        render: lineFeedRender,\n        width: '16%',\n        sorter: true,\n      },\n      {\n        title: t('满期金（祝寿金）'),\n        width: '12%',\n        dataIndex: 'maturityBenefit',\n        sorter: true,\n      },\n      {\n        title: t('销售状态'),\n        width: '7%',\n        dataIndex: 'saleStatus',\n        sorter: true,\n      },\n      {\n        title: t('备注'),\n        width: '6%',\n        dataIndex: 'remark',\n      },\n      {\n        title: t('更多'),\n        dataIndex: 'action',\n        width: 80,\n        render(_, item) {\n          return (\n            <Button onClick={() => viewReport(item)} type=\"link\">\n              {t('看条款')}\n            </Button>\n          );\n        },\n      },\n    ];\n  }, [viewReport, t]);\n\n  return (\n    <QueryTable\n      loading={loading}\n      columns={columns}\n      tableParams={state.tableParams}\n      pager={state.pager}\n      queryParams={state.queryParams}\n      selectedProducts={state.selectedProducts}\n      updateSelectedProducts={actions.updateSelectedProducts}\n      updateTableParams={actions.updateTableParams}\n      query={actions.query}\n      showSelected={state.showSelected}\n    />\n  );\n});\n","import { createI18n } from '@/redux/i18n';\n\nexport default createI18n({\n  en: {\n    养老年金险: 'Annuities Insurance',\n    已选中: 'Selected',\n    对比: 'Compare',\n    产品名称: 'Product Name',\n    公司名称: 'Company Name',\n    报备年份: 'Sale Year',\n    销售状态: 'Sales Status',\n    设计类型: 'Design Type',\n    承保方式: 'Underwrite',\n    保险期间: 'Policy Term',\n    起始领取年龄: 'Start Age',\n    领取方式: 'Payment Method',\n    领取类型: 'Payment Type',\n    其他属性: 'Other Attribute',\n    最小投保年龄: 'Minimum Insurable Age',\n    最大投保年龄: 'Maximum Insurable Age',\n    给付期间: 'Payment Period',\n    是否约定养老年金保证给付期间: 'Guaranteed Payment Period',\n    万能账户最低保证利率: 'Universal Account Minimum Guaranteed Interest Rate',\n    稳健型账户最低保证利率: 'Stable Account Minimum Guaranteed Interest Rate',\n    红利分配方式: 'Dividend Distribution Method',\n    更多字段: 'More Fields',\n    最低: 'Minimum',\n    最高: 'Maximum',\n  },\n  zh: {},\n});\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"ASZDH\",\"main\":\"_5ZY0C\",\"group\":\"X25XL\",\"icon\":\"tTMSu\"};","import React, { useCallback, useState } from 'react';\n\nimport qs from 'qs';\nimport { SwapOutlined, CaretDownOutlined, CaretUpOutlined } from '@ant-design/icons';\nimport { Form, Input, Select, Button, Checkbox } from 'antd';\nimport PageLayout from '@/components/PageLayout';\nimport SearchForm from '@/components/SearchForm';\nimport { useYearOptions } from '@/redux/hooks/enums';\nimport ProductSelect from '@/components/form/ProductSelect';\nimport CompanySelect from '@/components/form/CompanySelect';\nimport openWindow from '@/utils/openWindow';\nimport {\n  designTypeOptions,\n  underwriteOptions,\n  saleStatusOptions,\n  labelInsurancePeriodsOptions,\n  labelPensionStartAgeOptions,\n  annuityTypeOptions,\n  otherProductAttributesOptions,\n  labelPensionPaymentMethodOptions,\n  labelMinInsurableAgeOptions,\n  labelMaxInsurableAgeOptions,\n  // labelPaymentMethodOptions,\n  labelPensionPaymentPeriodOptions,\n  guaranteedPensionPaymentPeriodOptions,\n  dividendDistributionMethodOptions,\n} from './options';\n\nimport ReportTable from './ReportTable';\n\nimport useReducers from '../redux';\nimport useI18n from './i18n';\n\nimport styles from './Query.module.scss';\n\nexport default React.memo(function UniversalRiskRateQuery() {\n  const [expanded, setExpanded] = useState(false);\n  const [form] = Form.useForm();\n  const designType = Form.useWatch('designType', form);\n  const [state, actions] = useReducers();\n  const yearOptions = useYearOptions(2006);\n  const [t] = useI18n();\n  const onSearch = useCallback(\n    async params => {\n      actions.updateQueryParams({\n        ...params,\n        productNames: params.productNames?.map(item => encodeURIComponent(item)),\n      });\n    },\n    [state.queryParams]\n  );\n\n  const viewCompare = useCallback(() => {\n    const params = {\n      products: state.selectedProducts.map(item => item.id),\n    };\n\n    openWindow(\n      `/product/annuities-insurance/contrast?${qs.stringify(params, {\n        arrayFormat: 'comma',\n      })}`\n    );\n  }, [state.selectedProducts]);\n\n  return (\n    <PageLayout>\n      <div className={styles.container}>\n        <SearchForm\n          form={form}\n          title={t('养老年金险')}\n          onSearch={onSearch}\n          extraAction={\n            <>\n              <Button\n                onClick={actions.toggleShowSelected}\n                htmlType=\"button\"\n                type=\"default\"\n                icon={<Checkbox checked={state.showSelected} style={{ marginRight: 6 }} />}\n              >\n                {t('已选中')}（{state.selectedProducts?.length || 0}）\n              </Button>\n              <Button\n                onClick={viewCompare}\n                icon={<SwapOutlined className={styles.icon} />}\n                type=\"primary\"\n                disabled={!state.selectedProducts?.length}\n              >\n                {t('对比')}\n              </Button>\n              <Button onClick={() => setExpanded(!expanded)}>\n                {t('更多字段')} {expanded ? <CaretUpOutlined /> : <CaretDownOutlined />}\n              </Button>\n            </>\n          }\n        >\n          <Form.Item label={t('产品名称')} name=\"productNames\">\n            <ProductSelect\n              allowClear\n              lableOnly\n              searchParams={{ productCategoryL2: 'ProdTypeCode_01_00' }}\n              maxTagCount={2}\n              showArrow\n              mode=\"tags\"\n              placeholder={t('产品名称')}\n              labelInValue={false}\n            />\n          </Form.Item>\n\n          <Form.Item label={t('公司名称')} name=\"companyIds\">\n            <CompanySelect mode=\"multiple\" />\n          </Form.Item>\n\n          <Form.Item label={t('报备年份')} name=\"saleYears\">\n            <Select\n              maxTagCount={2}\n              allowClear\n              showArrow\n              mode=\"multiple\"\n              options={yearOptions}\n              placeholder={t('报备年份')}\n            />\n          </Form.Item>\n\n          <Form.Item label={t('设计类型')} name=\"designType\">\n            <Select allowClear showArrow options={designTypeOptions} placeholder={t('设计类型')} />\n          </Form.Item>\n\n          <Form.Item label={t('承保方式')} name=\"underwrite\">\n            <Select allowClear showArrow options={underwriteOptions} placeholder={t('承保方式')} />\n          </Form.Item>\n\n          <Form.Item label={t('销售状态')} name=\"saleStatus\">\n            <Select\n              mode=\"multiple\"\n              allowClear\n              showArrow\n              options={saleStatusOptions}\n              placeholder={t('销售状态')}\n            />\n          </Form.Item>\n\n          <Form.Item label={t('保险期间')} name=\"labelInsurancePeriods\">\n            <Select\n              maxTagCount={2}\n              allowClear\n              showArrow\n              mode=\"multiple\"\n              options={labelInsurancePeriodsOptions}\n              placeholder={t('保险期间')}\n            />\n          </Form.Item>\n\n          <Form.Item label={t('起始领取年龄')} name=\"labelPensionStartAge\">\n            <Select\n              allowClear\n              showArrow\n              options={labelPensionStartAgeOptions}\n              placeholder={t('起始领取年龄')}\n            />\n          </Form.Item>\n\n          <Form.Item label={t('领取方式')} name=\"labelPensionPaymentMethod\">\n            <Select\n              allowClear\n              showArrow\n              options={labelPensionPaymentMethodOptions}\n              placeholder={t('领取方式')}\n            />\n          </Form.Item>\n\n          <Form.Item label={t('领取类型')} name=\"annuityType\">\n            <Select allowClear showArrow options={annuityTypeOptions} placeholder={t('领取类型')} />\n          </Form.Item>\n\n          <Form.Item label={t('其他属性')} name=\"otherProductAttributes\" hidden={!expanded}>\n            <Select\n              allowClear\n              showArrow\n              options={otherProductAttributesOptions}\n              placeholder={t('其他属性')}\n            />\n          </Form.Item>\n\n          <Form.Item label={t('最小投保年龄')} name=\"labelMinInsurableAge\" hidden={!expanded}>\n            <Select\n              allowClear\n              showArrow\n              options={labelMinInsurableAgeOptions}\n              placeholder={t('最小投保年龄')}\n            />\n          </Form.Item>\n\n          <Form.Item label={t('最大投保年龄')} name=\"labelMaxInsurableAge\" hidden={!expanded}>\n            <Select\n              allowClear\n              showArrow\n              options={labelMaxInsurableAgeOptions}\n              placeholder={t('最大投保年龄')}\n            />\n          </Form.Item>\n\n          {/* <Form.Item label=\"交费方式\" name=\"labelPaymentMethod\" hidden={!expanded}>\n            <Select\n              dropdownMatchSelectWidth={false}\n              allowClear\n              showArrow\n              options={labelPaymentMethodOptions}\n              placeholder=\"请选择交费方式\"\n            />\n          </Form.Item> */}\n\n          <Form.Item label={t('给付期间')} name=\"labelPensionPaymentPeriod\" hidden={!expanded}>\n            <Select\n              allowClear\n              showArrow\n              dropdownMatchSelectWidth={false}\n              options={labelPensionPaymentPeriodOptions}\n              placeholder={t('给付期间')}\n            />\n          </Form.Item>\n\n          <Form.Item\n            label={t('是否约定养老年金保证给付期间')}\n            name=\"guaranteedPensionPaymentPeriod\"\n            hidden={!expanded}\n          >\n            <Select\n              allowClear\n              showArrow\n              options={guaranteedPensionPaymentPeriodOptions}\n              placeholder={t('是否约定养老年金保证给付期间')}\n            />\n          </Form.Item>\n\n          <Form.Item\n            label={t('万能账户最低保证利率')}\n            hidden={designType !== '万能型' || !expanded}\n          >\n            <Input.Group className={styles.group}>\n              <Form.Item noStyle name=\"universalAccountMinimumGuaranteedInterestRateMin\">\n                <Input\n                  type=\"number\"\n                  step={0.01}\n                  suffix=\"%\"\n                  min={0}\n                  max={100}\n                  placeholder={t('最低')}\n                  controls={false}\n                />\n              </Form.Item>\n              <span>~</span>\n              <Form.Item noStyle name=\"universalAccountMinimumGuaranteedInterestRateMax\">\n                <Input\n                  type=\"number\"\n                  step={0.01}\n                  suffix=\"%\"\n                  min={0}\n                  max={100}\n                  placeholder={t('最高')}\n                  controls={false}\n                />\n              </Form.Item>\n            </Input.Group>\n          </Form.Item>\n\n          <Form.Item\n            hidden={designType !== '分红型' || !expanded}\n            label={t('红利分配方式')}\n            name=\"dividendDistributionMethod\"\n          >\n            <Select\n              allowClear\n              showArrow\n              dropdownMatchSelectWidth={false}\n              options={dividendDistributionMethodOptions}\n              placeholder={t('红利分配方式')}\n            />\n          </Form.Item>\n\n          <Form.Item\n            label={t('稳健型账户最低保证利率')}\n            hidden={designType !== '专属商业养老' || !expanded}\n          >\n            <Input.Group className={styles.group}>\n              <Form.Item noStyle name=\"ecpConservativeMinGuaranteedInterestRateMin\">\n                <Input\n                  type=\"number\"\n                  step={0.01}\n                  suffix=\"%\"\n                  min={0}\n                  max={100}\n                  placeholder={t('最低')}\n                  controls={false}\n                />\n              </Form.Item>\n              <span>~</span>\n              <Form.Item noStyle name=\"ecpConservativeMinGuaranteedInterestRateMax\">\n                <Input\n                  type=\"number\"\n                  step={0.01}\n                  suffix=\"%\"\n                  min={0}\n                  max={100}\n                  placeholder={t('最高')}\n                  controls={false}\n                />\n              </Form.Item>\n            </Input.Group>\n          </Form.Item>\n\n          <Form.Item\n            label={t('进取型账户最低保证利率')}\n            hidden={designType !== '专属商业养老' || !expanded}\n          >\n            <Input.Group className={styles.group}>\n              <Form.Item noStyle name=\"ecpAggressiveMinGuaranteedInterestRateMin\">\n                <Input\n                  type=\"number\"\n                  step={0.01}\n                  suffix=\"%\"\n                  min={0}\n                  max={100}\n                  placeholder={t('最低')}\n                  controls={false}\n                />\n              </Form.Item>\n              <span>~</span>\n              <Form.Item noStyle name=\"ecpAggressiveMinGuaranteedInterestRateMax\">\n                <Input\n                  type=\"number\"\n                  step={0.01}\n                  suffix=\"%\"\n                  min={0}\n                  max={100}\n                  placeholder={t('最高')}\n                  controls={false}\n                />\n              </Form.Item>\n            </Input.Group>\n          </Form.Item>\n        </SearchForm>\n\n        <div className={styles.main}>\n          <ReportTable />\n        </div>\n      </div>\n    </PageLayout>\n  );\n});\n","// extracted by mini-css-extract-plugin\nexport default {\"title\":\"COjrd\",\"header\":\"-HrYY\",\"content\":\"UsY50\",\"row\":\"YYHEW\",\"table\":\"ZRelq\"};","import React, { useCallback } from 'react';\n\nimport { Table } from 'antd';\n\nimport styles from './ContrastPanel.module.scss';\n\nexport default React.memo(function ContrastPanel({ columns, dataSource }) {\n  // const renderRow = useCallback((row) => {\n  //   return (\n  //     <div className={styles.row}>\n  //       <div className={styles.label}>{row.label}</div>\n  //       {\n  //         row.children.map(item => {\n  //           return <div className={styles.col}>{item}</div>\n  //         })\n  //       }\n  //     </div>\n  //   )\n  // }, [])\n\n  const rowClassName = useCallback(row => {\n    if (row.group || (row.render && row.fixed)) {\n      return styles.header;\n    }\n\n    return '';\n  }, []);\n\n  return (\n    <Table\n      className={styles.table}\n      rowKey={row => row.key || row.label || row.group}\n      tableLayout=\"fixed\"\n      scroll={{ x: '100%' }}\n      columns={columns}\n      dataSource={dataSource}\n      pagination={false}\n      sticky\n      rowClassName={rowClassName}\n    />\n  );\n});\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"QgiNg\",\"title\":\"fyPTJ\"};","import React, { useEffect, useMemo, useCallback } from 'react';\n\nimport { Button } from 'antd';\nimport useQuery from '@/hooks/useQuery';\nimport PageLayout from '@/components/PageLayout';\nimport ContrastPanel from '@/components/ContrastPanel';\nimport { percentFromFloatRender } from '@/utils/cellRender';\nimport openWindow from '@/utils/openWindow';\n\nimport useReducers from '../redux';\n\nimport styles from './Contrast.module.scss';\n\nexport default React.memo(function Contrast() {\n  const [state, actions] = useReducers();\n  const query = useQuery();\n\n  useEffect(() => {\n    actions.queryByIds({ ids: query.products });\n  }, []);\n\n  const viewReport = useCallback(async item => {\n    const params = await actions.getReportToken({ id: item.productId, type: 'PRODUCT' });\n    openWindow(`/report-viewer?${params}`);\n  }, []);\n\n  const getFields = useCallback((rows, label, field, render = v => v) => {\n    if (!rows?.length) {\n      return [];\n    }\n\n    return rows.reduce(\n      (result, row) => {\n        return {\n          ...result,\n          [`product-${row.id}`]: render(row[field], row),\n        };\n      },\n      { label }\n    );\n  }, []);\n\n  const columns = useMemo(() => {\n    return state.contrastProducts?.reduce(\n      (cols, row) => {\n        return [\n          ...cols,\n          {\n            dataIndex: `product-${row.id}`,\n            title:\n              row.remark && row.remark !== '-'\n                ? `${row.productName}_${row.remark}`\n                : row.productName,\n            width: 300,\n            render: v => {\n              if (!v) {\n                return v;\n              }\n\n              const phs = `${v}`.split('\\n');\n\n              if (phs.length < 2) {\n                return v;\n              }\n\n              return phs.map((p, index) => {\n                return (\n                  <p style={{ marginBottom: 10 }} key={index}>\n                    {p}\n                  </p>\n                );\n              });\n            },\n          },\n        ];\n      },\n      [\n        {\n          dataIndex: 'label',\n          width: 300,\n          fixed: 'left',\n          render: (label, row) => {\n            if (row.group) {\n              return <div className={styles.title}>{row.group}</div>;\n            }\n\n            return label;\n          },\n        },\n      ]\n    );\n  }, [state.contrastProducts]);\n\n  const hasType = useCallback(\n    type => {\n      return state.contrastProducts?.some(row => row.designType === type);\n    },\n    [state.contrastProducts]\n  );\n\n  const dataSource = useMemo(() => {\n    const fixedRows = [\n      {\n        group: '基本信息',\n      },\n      getFields(state.contrastProducts, '公司名称', 'companyName'),\n      getFields(state.contrastProducts, '产品备案号', 'cnCode'),\n      getFields(state.contrastProducts, '报备年份', 'saleYear'),\n      getFields(state.contrastProducts, '设计类型', 'designType'),\n      getFields(state.contrastProducts, '其他产品属性', 'otherProductAttributes'),\n      getFields(state.contrastProducts, '承保方式', 'underwrite'),\n      getFields(state.contrastProducts, '销售状态', 'saleStatus'),\n      getFields(state.contrastProducts, '条款链接', 'productId', (v, row) => {\n        return (\n          <Button style={{ paddingLeft: 0 }} onClick={() => viewReport(row)} type=\"link\">\n            看条款\n          </Button>\n        );\n      }),\n\n      { group: '投保信息' },\n      getFields(state.contrastProducts, '保险期间', 'insurancePeriod'),\n      getFields(state.contrastProducts, '最小投保年龄', 'minInsurableAge'),\n      getFields(state.contrastProducts, '最大投保年龄', 'maxInsurableAge'),\n      getFields(state.contrastProducts, '交费方式', 'paymentMethod'),\n\n      { group: '养老年金' },\n      getFields(state.contrastProducts, '养老年金起始领取年龄（起始领取日）', 'pensionStartAge'),\n      getFields(state.contrastProducts, '养老年金领取方式', 'pensionPaymentMethod'),\n      getFields(state.contrastProducts, '养老年金领取规则', 'pensionPaymentRules'),\n      getFields(state.contrastProducts, '年金领取类型（平准年金/增额年金）', 'annuityType'),\n      getFields(state.contrastProducts, '增额比例', 'incrementRatio'),\n      getFields(state.contrastProducts, '养老年金给付期间', 'pensionPaymentPeriod'),\n      getFields(\n        state.contrastProducts,\n        '是否约定养老年金保证给付期间',\n        'guaranteedPensionPaymentPeriod'\n      ),\n      getFields(\n        state.contrastProducts,\n        '养老年金保证给付期间',\n        'guaranteedPensionPaymentPeriodValue'\n      ),\n\n      { group: '满期金（祝寿金）' },\n      getFields(state.contrastProducts, '满期金（祝寿金）', 'maturityBenefit'),\n\n      { group: '身故/全残/高残责任' },\n      getFields(state.contrastProducts, '身故给付规则', 'deathPaymentRules'),\n      getFields(state.contrastProducts, '全残给付规则', 'totalDisabilityPaymentRules'),\n      getFields(state.contrastProducts, '高残给付规则', 'highDisabilityPaymentRules'),\n\n      { group: '其他责任' },\n      getFields(state.contrastProducts, '豁免保险费（是否包含）', 'waiverOfPremium'),\n      getFields(state.contrastProducts, '减保（是否支持）', 'policyReduction'),\n      getFields(state.contrastProducts, '加保（是否支持）', 'policyAddition'),\n      getFields(state.contrastProducts, '保险金转换/产品转换（是否支持）', 'insuranceConversion'),\n      getFields(\n        state.contrastProducts,\n        '其他必选保险责任名称',\n        'otherMandatoryInsuranceLiabilities'\n      ),\n\n      { group: '可选保险责任' },\n      getFields(state.contrastProducts, '可选保险责任名称', 'optionalCoverageNames'),\n      getFields(\n        state.contrastProducts,\n        '全残/高残是否可选责任',\n        'optionalTotalDisabilityHighDisabilityCoverage'\n      ),\n      getFields(\n        state.contrastProducts,\n        '满期生存金（祝寿金）是否可选责任',\n        'optionalMaturityBenefit'\n      ),\n    ];\n\n    if (hasType('万能型')) {\n      const appendRows = [\n        { group: '设计类型专属标签-万能型' },\n        getFields(\n          state.contrastProducts,\n          '【万能型】万能账户最低保证利率',\n          'universalAccountMinimumGuaranteedInterestRate'\n        ),\n        getFields(state.contrastProducts, '【万能型】初始费用', 'initialExpense'),\n        getFields(state.contrastProducts, '【万能型】保单管理费', 'policyManagementFee'),\n        getFields(state.contrastProducts, '【万能型】部分领取费用', 'partialWithdrawalFee'),\n        getFields(\n          state.contrastProducts,\n          '【万能型】部分领取年限额',\n          'partialWithdrawalAnnualLimit'\n        ),\n        getFields(\n          state.contrastProducts,\n          '【万能型】保单持续奖励（持续奖金）',\n          'policyContinuationBonus'\n        ),\n        getFields(state.contrastProducts, '【万能型】奖励领取起始年度', 'bonusEarningStartYear'),\n      ];\n      fixedRows.push(...appendRows);\n    }\n\n    if (hasType('分红型')) {\n      const appendRows = [\n        { group: '设计类型专属标签-分红型' },\n        getFields(state.contrastProducts, '【分红型】红利分配方式', 'dividendDistributionMethod'),\n        getFields(state.contrastProducts, '【分红型】临时红利（是否支持）', 'temporaryDividend'),\n      ];\n      fixedRows.push(...appendRows);\n    }\n\n    if (hasType('投资连结型')) {\n      const appendRows = [\n        { group: '设计类型专属标签-投资连结型' },\n        getFields(\n          state.contrastProducts,\n          '【投资连结型】投资账户选择',\n          'investmentAccountSelection'\n        ),\n        getFields(\n          state.contrastProducts,\n          '【投资连结型】产品转换（是否支持）',\n          'investmentProductConversion'\n        ),\n        getFields(\n          state.contrastProducts,\n          '【投资连结型】产品转换费用',\n          'investmentProductConversionFee'\n        ),\n        getFields(state.contrastProducts, '【投资连结型】初始费用', 'investmentInitialExpense'),\n        getFields(\n          state.contrastProducts,\n          '【投资连结型】部分领取费用',\n          'investmentPartialWithdrawalFee'\n        ),\n        getFields(\n          state.contrastProducts,\n          '【投资连结型】部分领取年限额',\n          'investmentPartialWithdrawalAnnualLimit'\n        ),\n        getFields(state.contrastProducts, '【投资连结型】资产管理费', 'assetManagementFee'),\n        getFields(\n          state.contrastProducts,\n          '【投资连结型】保单持续奖励（持续奖金）',\n          'investmentPolicyContinuationBonus'\n        ),\n        getFields(\n          state.contrastProducts,\n          '【投资连结型】奖励领取起始年度',\n          'investmentBonusEarningStartYear'\n        ),\n      ];\n      fixedRows.push(...appendRows);\n    }\n\n    if (hasType('税收递延型')) {\n      const appendRows = [\n        { group: '设计类型专属标签-税收递延型' },\n        getFields(\n          state.contrastProducts,\n          '【税收递延型】最低保证利率',\n          'taxDeferredMinimumGuaranteedInterestRate'\n        ),\n        getFields(state.contrastProducts, '【税收递延型】初始费用', 'taxDeferredInitialExpense'),\n        getFields(\n          state.contrastProducts,\n          '【税收递延型】产品转换费',\n          'taxDeferredProductConversionFee'\n        ),\n        getFields(\n          state.contrastProducts,\n          '【税收递延型】部分领取费用',\n          'taxDeferredPartialWithdrawalFee'\n        ),\n      ];\n      fixedRows.push(...appendRows);\n    }\n\n    if (hasType('专属商业养老')) {\n      const appendRows = [\n        { group: '设计类型专属标签-专属商业养老' },\n        getFields(\n          state.contrastProducts,\n          '【专属商业养老】投资账户选择',\n          'ecpInvestmentAccountSelection'\n        ),\n        getFields(\n          state.contrastProducts,\n          '【专属商业养老】稳健型账户最低保证利率',\n          'ecpConservativeMinGuaranteedInterestRate',\n          percentFromFloatRender\n        ),\n        getFields(\n          state.contrastProducts,\n          '【专属商业养老】进取型账户最低保证利率',\n          'ecpAggressiveMinGuaranteedInterestRate',\n          percentFromFloatRender\n        ),\n        getFields(\n          state.contrastProducts,\n          '【专属商业养老】投资组合转换（是否支持）',\n          'ecpInvestmentPortfolioConversionSupport'\n        ),\n        getFields(\n          state.contrastProducts,\n          '【专属商业养老】投资组合转换手续费',\n          'ecpInvestmentPortfolioConversionFee'\n        ),\n        getFields(state.contrastProducts, '【专属商业养老】初始费用', 'ecpInitialCost'),\n        getFields(state.contrastProducts, '【专属商业养老】保单服务费', 'ecpPolicyServiceFee'),\n        getFields(state.contrastProducts, '【专属商业养老】管理费用', 'ecpManagementFee'),\n        getFields(\n          state.contrastProducts,\n          '【专属商业养老】持有期（是否约定）',\n          'ecpHoldingPeriodAgreed'\n        ),\n        getFields(\n          state.contrastProducts,\n          '【专属商业养老】保单持续奖励（持续奖金）',\n          'ecpPolicyContinuationBonus'\n        ),\n        getFields(\n          state.contrastProducts,\n          '【专属商业养老】奖励领取起始年度',\n          'ecpBonusStartingYear'\n        ),\n        getFields(\n          state.contrastProducts,\n          '【专属商业养老】现金价值计算规则',\n          'ecpCashValueCalculationRules'\n        ),\n      ];\n      fixedRows.push(...appendRows);\n    }\n\n    return fixedRows;\n  }, [state.contrastProducts, viewReport, hasType]);\n\n  return (\n    <PageLayout className={styles.container}>\n      <ContrastPanel columns={columns} dataSource={dataSource} />\n    </PageLayout>\n  );\n});\n","import Query from './Query';\nimport Contrast from './Contrast';\n// import ProductRateContrast from './ProductRateContrast';\n\nexport default [\n  {\n    path: '/query',\n    component: Query,\n    exact: true,\n    title: '养老金险',\n  },\n  {\n    path: '/contrast',\n    component: Contrast,\n    exact: true,\n    title: '养老金险对比',\n  },\n];\n","function toOptions(arr) {\n  return arr.map(item => ({ value: item, label: item }));\n}\nexport const illnessTypeOptions = toOptions([\n  '单次重疾险',\n  '多次重疾险（多次重疾必选）',\n  '多次重疾险（多次重疾可选）',\n  '少儿重疾险，单次重疾险',\n  '少儿重疾险，多次重疾险（多次重疾必选）',\n  '少儿重疾险，多次重疾险（多次重疾可选）',\n]);\n\nexport const underwriteOptions = toOptions(['个人', '团体']);\n\nexport const saleStatusOptions = toOptions(['在售', '停售', '停用', '未售']);\n\nexport const policyTermsOptions = toOptions([\n  '终身',\n  '定期（大于1年）',\n  '1年及以下',\n  '终身，定期（大于1年）',\n  '其他',\n]);\n\nexport const otherProductAttributesOptions = toOptions([\n  '互联网保险',\n  '附加险',\n  '互联网保险，附加险',\n  '无',\n]);\n\nexport const yesornoOptions = toOptions(['是', '否']);\n\nexport const maxInsureAgeOptions = toOptions([\n  '16及以下',\n  '17岁',\n  '18-55',\n  '56-60',\n  '61-65',\n  '66及以上',\n  '其他',\n]);\n\nexport const paymentTypesOptions = toOptions([\n  '一次性交费',\n  '分期交费',\n  '分期交费一次性交费兼有',\n  '灵活交费',\n  '其他',\n]);\n\nexport const multiplePaymentRuleOptions = toOptions([\n  '保额*x%',\n  '保费*x%',\n  '其他',\n  '必选责任无多次重疾给付',\n]);\n","import { createI18n } from '@/redux/i18n';\n\nexport default createI18n({\n  en: {\n    重疾险: 'Critical Illness Insurance',\n    已选中: 'Selected',\n    对比: 'Compare',\n    产品名称: 'Product Name',\n    公司名称: 'Company Name',\n    报备年份: 'Sale Year',\n    销售状态: 'Sales Status',\n    保险期间: 'Policy Term',\n    重疾病种数量: 'Critical Illness Disease Type',\n    重疾分组数: 'Critical Illness Group',\n    重疾给付次数: 'Critical Illness Payment',\n    其他产品属性: 'Other Product Attribute',\n    最大投保年龄: 'Maximum Insure Age',\n    最低: 'Minimum',\n    最高: 'Maximum',\n    承保方式: 'Underwrite',\n    重疾险类型: 'Critical Illness Type',\n    中症病种数量: 'Moderate Illness Disease Type',\n    中症是否可选责任: 'Moderate Optional Liability',\n    轻症病种数量: 'Mild Illness Disease Type',\n    轻症是否可选责任: 'Mild Optional Liability',\n    特疾病种数量: 'Special Illness Disease Type',\n    罕见病种数量: 'Rare Illness Disease Type',\n    多次重疾给付规则: 'Multiple Payment Rule',\n    多次重疾是否可选责任: 'Multiple Optional Liability',\n    更多字段: 'More Fields',\n  },\n  zh: {},\n});\n","import * as fRedux from '@/utils/redux';\n\nimport decryptString from '@/utils/decrypt';\n\nconst { createActions } = fRedux.default;\n\nconst namespace = 'CriticalIllnessInsurance';\nconst initState = {\n  queryParams: {},\n};\n\nconst { useReducers } = createActions(namespace, initState, {\n  queryByIds: [\n    (params, http, dispatch, getState) => {\n      const { user } = getState();\n\n      return http.get(`/api/illness/queryByIds`, { params }).then(res => {\n        return decryptString(user.salt, res.result);\n      });\n    },\n    (state, response) => ({ contrastProducts: response }),\n  ],\n  query: [\n    (params, http, dispatch, getState) => {\n      const { user } = getState();\n\n      return http.post(`/api/illness/list`, null, { params }).then(res => {\n        console.log(decryptString(user.salt, res.result));\n        return decryptString(user.salt, res.result);\n      });\n    },\n    (state, response) => ({ pager: response }),\n  ],\n  updateQueryParams: [params => params, (state, params) => ({ queryParams: params })],\n  updateTableParams: [params => params, (state, params) => ({ tableParams: params })],\n  getReportToken: [\n    (params, http, dispatch, getState) => {\n      const { user } = getState();\n\n      return http.get(`/api/product/getToken`, { params }).then(res => {\n        return decryptString(user.salt, res.result);\n      });\n    },\n  ],\n  queryProduct: [\n    (params, http, dispatch, getState) => {\n      const { user } = getState();\n      return http.get(`/api/universal/productNameCats`, { params }).then(res => {\n        return decryptString(user.salt, res.result);\n      });\n    },\n    (state, products) => ({ products: products || [] }),\n  ],\n  updateSelectedProducts: [keys => keys, (state, keys) => ({ selectedProducts: keys })],\n  toggleShowSelected: [() => {}, state => ({ showSelected: !state.showSelected })],\n  setShowSelected: [showSelected => showSelected, (state, showSelected) => ({ showSelected })],\n});\n\nexport default useReducers;\n","import { createI18n } from '@/redux/i18n';\n\nexport default createI18n({\n  en: {\n    看条款: 'View Clause',\n    更多: 'More',\n    备注: 'Remark',\n    重疾病种数量: 'Critical Illness Disease Type',\n    重疾给付次数: 'Critical Illness Payment',\n    首次重疾给付规则: 'First Critical Illness Payment Rule',\n    多次重疾给付规则: 'Multiple Payment Rule',\n    销售状态: 'Sales Status',\n    产品名称: 'Product Name',\n    公司名称: 'Company Name',\n    报备年份: 'Sale Year',\n    保险期间: 'Policy Term',\n    重疾分组数: 'Critical Illness Group',\n    其他产品属性: 'Other Product Attribute',\n  },\n  zh: {},\n});\n","import React, { useCallback, useState, useMemo, useEffect } from 'react';\n\nimport { Button } from 'antd';\nimport { lineFeedRender } from '@/utils/cellRender';\nimport openWindow from '@/utils/openWindow';\n\nimport QueryTable from '@/components/QueryTable';\n\nimport useReducers from '../../redux';\nimport useI18n from './i18n';\n\nexport default React.memo(function ReportTable() {\n  const [loading, setLoading] = useState();\n  const [state, actions] = useReducers();\n  const [t] = useI18n();\n  useEffect(() => {\n    setLoading(true);\n    actions.updateTableParams({});\n    actions\n      .query({\n        pageNo: 1,\n        pageSize: 10,\n        ...state.queryParams,\n      })\n      .then(() => {\n        setLoading(false);\n      })\n      .catch(() => {\n        setLoading(false);\n      });\n  }, [state.queryParams]);\n\n  const viewReport = useCallback(async item => {\n    setLoading(true);\n    const params = await actions.getReportToken({ id: item.productId, type: 'PRODUCT' });\n    openWindow(`/report-viewer?${params}`);\n    setLoading(false);\n  }, []);\n\n  const columns = useMemo(() => {\n    return [\n      {\n        title: t('报备年份'),\n        dataIndex: 'saleYear',\n        width: '7%',\n        sorter: true,\n      },\n      {\n        title: t('产品名称'),\n        dataIndex: 'productName',\n        width: '13%',\n        sorter: true,\n      },\n      {\n        title: t('公司名称'),\n        dataIndex: 'companyName',\n        width: '17%',\n        sorter: true,\n      },\n      {\n        title: t('重疾病种数量'),\n        dataIndex: 'criticalNum',\n        width: '10%',\n        render: lineFeedRender,\n        sorter: true,\n      },\n      {\n        title: t('重疾给付次数'),\n        dataIndex: 'criticalPaymentNum',\n        width: '9%',\n        sorter: true,\n      },\n      {\n        title: t('首次重疾给付规则'),\n        dataIndex: 'criticalFirstPaymentRule',\n        render: lineFeedRender,\n        sorter: true,\n      },\n      {\n        title: t('多次重疾给付规则'),\n        dataIndex: 'multiplePaymentRule',\n        render: lineFeedRender,\n        sorter: true,\n      },\n      {\n        title: t('销售状态'),\n        width: '7%',\n        dataIndex: 'saleStatus',\n        sorter: true,\n      },\n      {\n        title: t('更多'),\n        dataIndex: 'action',\n        width: 80,\n        render(_, item) {\n          return (\n            <Button onClick={() => viewReport(item)} type=\"link\">\n              {t('看条款')}\n            </Button>\n          );\n        },\n      },\n    ];\n  }, [viewReport, t]);\n\n  return (\n    <QueryTable\n      loading={loading}\n      columns={columns}\n      tableParams={state.tableParams}\n      pager={state.pager}\n      queryParams={state.queryParams}\n      selectedProducts={state.selectedProducts}\n      updateSelectedProducts={actions.updateSelectedProducts}\n      updateTableParams={actions.updateTableParams}\n      query={actions.query}\n      showSelected={state.showSelected}\n    />\n  );\n});\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"o+wdS\",\"main\":\"oqrym\",\"group\":\"P++OA\",\"icon\":\"-KZG4\"};","import React, { useCallback, useState } from 'react';\n\nimport qs from 'qs';\nimport { SwapOutlined, CaretDownOutlined, CaretUpOutlined } from '@ant-design/icons';\nimport { Form, Input, Select, Button, Checkbox } from 'antd';\nimport PageLayout from '@/components/PageLayout';\nimport SearchForm from '@/components/SearchForm';\nimport { useYearOptions } from '@/redux/hooks/enums';\nimport ProductSelect from '@/components/form/ProductSelect';\nimport CompanySelect from '@/components/form/CompanySelect';\nimport openWindow from '@/utils/openWindow';\nimport {\n  illnessTypeOptions,\n  underwriteOptions,\n  saleStatusOptions,\n  policyTermsOptions,\n  maxInsureAgeOptions,\n  // paymentTypesOptions,\n  multiplePaymentRuleOptions,\n  otherProductAttributesOptions,\n  yesornoOptions,\n} from './options';\nimport useI18n from './i18n';\nimport ReportTable from './ReportTable';\n\nimport useReducers from '../redux';\n\nimport styles from './Query.module.scss';\n\nexport default React.memo(function UniversalRiskRateQuery() {\n  const [expanded, setExpanded] = useState(false);\n  const [form] = Form.useForm();\n  const [state, actions] = useReducers();\n  const yearOptions = useYearOptions(2006);\n  const [t] = useI18n();\n  const onSearch = useCallback(\n    async params => {\n      actions.updateQueryParams({\n        ...params,\n        productNames: params.productNames?.map(item => encodeURIComponent(item)),\n      });\n    },\n    [state.queryParams]\n  );\n\n  const viewCompare = useCallback(() => {\n    const params = {\n      products: state.selectedProducts.map(item => item.id),\n    };\n\n    openWindow(\n      `/product/critical-illness-insurance/contrast?${qs.stringify(params, {\n        arrayFormat: 'comma',\n      })}`\n    );\n  }, [state.selectedProducts]);\n\n  return (\n    <PageLayout>\n      <div className={styles.container}>\n        <SearchForm\n          form={form}\n          title={t('重疾险')}\n          onSearch={onSearch}\n          extraAction={\n            <>\n              <Button\n                onClick={actions.toggleShowSelected}\n                htmlType=\"button\"\n                type=\"default\"\n                icon={<Checkbox checked={state.showSelected} style={{ marginRight: 6 }} />}\n              >\n                {t('已选中')}（{state.selectedProducts?.length || 0}）\n              </Button>\n              <Button\n                onClick={viewCompare}\n                icon={<SwapOutlined className={styles.icon} />}\n                type=\"primary\"\n                disabled={!state.selectedProducts?.length}\n              >\n                {t('对比')}\n              </Button>\n              <Button onClick={() => setExpanded(!expanded)}>\n                {t('更多字段')} {expanded ? <CaretUpOutlined /> : <CaretDownOutlined />}\n              </Button>\n            </>\n          }\n        >\n          <Form.Item label={t('产品名称')} name=\"productNames\">\n            <ProductSelect\n              searchParams={{ productCategoryL3: 'ProdTypeCode_02_01_00' }}\n              allowClear\n              lableOnly\n              maxTagCount={2}\n              showArrow\n              mode=\"tags\"\n              placeholder={t('产品名称')}\n              labelInValue={false}\n            />\n          </Form.Item>\n\n          <Form.Item label={t('公司名称')} name=\"companyIds\">\n            <CompanySelect mode=\"multiple\" />\n          </Form.Item>\n\n          <Form.Item label={t('报备年份')} name=\"saleYears\">\n            <Select\n              maxTagCount={2}\n              allowClear\n              showArrow\n              mode=\"multiple\"\n              options={yearOptions}\n              placeholder={t('报备年份')}\n            />\n          </Form.Item>\n\n          <Form.Item label={t('重疾险类型')} name=\"illnessTypes\">\n            <Select\n              allowClear\n              showArrow\n              dropdownMatchSelectWidth={false}\n              options={illnessTypeOptions}\n              placeholder={t('重疾险类型')}\n            />\n          </Form.Item>\n\n          <Form.Item label={t('承保方式')} name=\"underwrite\">\n            <Select allowClear showArrow options={underwriteOptions} placeholder={t('承保方式')} />\n          </Form.Item>\n\n          <Form.Item label={t('销售状态')} name=\"saleStatus\">\n            <Select\n              mode=\"multiple\"\n              allowClear\n              showArrow\n              options={saleStatusOptions}\n              placeholder={t('销售状态')}\n            />\n          </Form.Item>\n\n          <Form.Item label={t('保险期间')} name=\"policyTerms\">\n            <Select\n              maxTagCount={2}\n              allowClear\n              showArrow\n              mode=\"multiple\"\n              options={policyTermsOptions}\n              placeholder={t('保险期间')}\n            />\n          </Form.Item>\n\n          <Form.Item label={t('重疾病种数量')}>\n            <Input.Group className={styles.group}>\n              <Form.Item noStyle name=\"criticalNumMin\">\n                <Input type=\"number\" step={1} min={0} placeholder={t('最低')} controls={false} />\n              </Form.Item>\n              <span>~</span>\n              <Form.Item noStyle name=\"criticalNumMax\">\n                <Input type=\"number\" step={1} min={0} placeholder={t('最高')} controls={false} />\n              </Form.Item>\n            </Input.Group>\n          </Form.Item>\n\n          <Form.Item label={t('重疾分组数')}>\n            <Input.Group className={styles.group}>\n              <Form.Item noStyle name=\"criticalGroupNumMin\">\n                <Input type=\"number\" step={1} min={0} placeholder={t('最低')} controls={false} />\n              </Form.Item>\n              <span>~</span>\n              <Form.Item noStyle name=\"criticalGroupNumMax\">\n                <Input type=\"number\" step={1} min={0} placeholder={t('最高')} controls={false} />\n              </Form.Item>\n            </Input.Group>\n          </Form.Item>\n\n          <Form.Item label={t('重疾给付次数')}>\n            <Input.Group className={styles.group}>\n              <Form.Item noStyle name=\"criticalPaymentNumMin\">\n                <Input type=\"number\" step={1} min={0} placeholder={t('最低')} controls={false} />\n              </Form.Item>\n              <span>~</span>\n              <Form.Item noStyle name=\"criticalPaymentNumMax\">\n                <Input type=\"number\" step={1} min={0} placeholder={t('最高')} controls={false} />\n              </Form.Item>\n            </Input.Group>\n          </Form.Item>\n\n          <Form.Item label={t('其他产品属性')} name=\"tagClass\" hidden={!expanded}>\n            <Select\n              maxTagCount={2}\n              allowClear\n              showArrow\n              options={otherProductAttributesOptions}\n              placeholder={t('其他产品属性')}\n            />\n          </Form.Item>\n\n          <Form.Item label={t('最大投保年龄')} name=\"maxInsureAge\" hidden={!expanded}>\n            <Select\n              allowClear\n              showArrow\n              options={maxInsureAgeOptions}\n              placeholder={t('最大投保年龄')}\n            />\n          </Form.Item>\n\n          <Form.Item label={t('中症病种数量')} hidden={!expanded}>\n            <Input.Group className={styles.group}>\n              <Form.Item noStyle name=\"moderateNumMin\">\n                <Input type=\"number\" step={1} min={0} placeholder={t('最低')} controls={false} />\n              </Form.Item>\n              <span>~</span>\n              <Form.Item noStyle name=\"moderateNumMax\">\n                <Input type=\"number\" step={1} min={0} placeholder={t('最高')} controls={false} />\n              </Form.Item>\n            </Input.Group>\n          </Form.Item>\n\n          <Form.Item\n            label={t('中症是否可选责任')}\n            name=\"moderateOptionalLiability\"\n            hidden={!expanded}\n          >\n            <Select\n              allowClear\n              showArrow\n              options={yesornoOptions}\n              placeholder={t('中症是否可选责任')}\n            />\n          </Form.Item>\n\n          <Form.Item label={t('轻症病种数量')} hidden={!expanded}>\n            <Input.Group className={styles.group}>\n              <Form.Item noStyle name=\"mildNumMin\">\n                <Input type=\"number\" step={1} min={0} placeholder={t('最低')} controls={false} />\n              </Form.Item>\n              <span>~</span>\n              <Form.Item noStyle name=\"mildNumMax\">\n                <Input type=\"number\" step={1} min={0} placeholder={t('最高')} controls={false} />\n              </Form.Item>\n            </Input.Group>\n          </Form.Item>\n\n          <Form.Item label={t('轻症是否可选责任')} name=\"mildOptionalLiability\" hidden={!expanded}>\n            <Select\n              allowClear\n              showArrow\n              options={yesornoOptions}\n              placeholder={t('轻症是否可选责任')}\n            />\n          </Form.Item>\n\n          <Form.Item label={t('特疾病种数量')} hidden={!expanded}>\n            <Input.Group className={styles.group}>\n              <Form.Item noStyle name=\"specificNumMin\">\n                <Input type=\"number\" step={1} min={0} placeholder={t('最低')} controls={false} />\n              </Form.Item>\n              <span>~</span>\n              <Form.Item noStyle name=\"specificNumMax\">\n                <Input type=\"number\" step={1} min={0} placeholder={t('最高')} controls={false} />\n              </Form.Item>\n            </Input.Group>\n          </Form.Item>\n\n          <Form.Item label={t('罕见病种数量')} hidden={!expanded}>\n            <Input.Group className={styles.group}>\n              <Form.Item noStyle name=\"rareNumMin\">\n                <Input type=\"number\" step={1} min={0} placeholder={t('最低')} controls={false} />\n              </Form.Item>\n              <span>~</span>\n              <Form.Item noStyle name=\"rareNumMax\">\n                <Input type=\"number\" step={1} min={0} placeholder={t('最高')} controls={false} />\n              </Form.Item>\n            </Input.Group>\n          </Form.Item>\n\n          <Form.Item label={t('多次重疾给付规则')} name=\"multiplePaymentRule\" hidden={!expanded}>\n            <Select\n              allowClear\n              showArrow\n              dropdownMatchSelectWidth={false}\n              options={multiplePaymentRuleOptions}\n              placeholder={t('多次重疾给付规则')}\n            />\n          </Form.Item>\n\n          <Form.Item\n            label={t('多次重疾是否可选责任')}\n            name=\"multipleOptionalLiability\"\n            hidden={!expanded}\n          >\n            <Select\n              allowClear\n              showArrow\n              options={yesornoOptions}\n              placeholder={t('多次重疾是否可选责任')}\n            />\n          </Form.Item>\n        </SearchForm>\n\n        <div className={styles.main}>\n          <ReportTable />\n        </div>\n      </div>\n    </PageLayout>\n  );\n});\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"_1hrZ7\",\"title\":\"gnqiE\",\"header\":\"y8fgw\",\"group\":\"ARQYi\"};","import React, { useEffect, useMemo, useCallback } from 'react';\n\nimport { Table, Button } from 'antd';\nimport useQuery from '@/hooks/useQuery';\nimport PageLayout from '@/components/PageLayout';\nimport { lineFeedRender } from '@/utils/cellRender';\nimport openWindow from '@/utils/openWindow';\n\nimport useReducers from '../redux';\n\nimport styles from './Contrast.module.scss';\n\nexport default React.memo(function Contrast() {\n  const [state, actions] = useReducers();\n  const query = useQuery();\n\n  useEffect(() => {\n    actions.queryByIds({ ids: query.products });\n  }, []);\n\n  const viewReport = useCallback(async item => {\n    const params = await actions.getReportToken({ id: item.productId, type: 'PRODUCT' });\n    openWindow(`/report-viewer?${params}`);\n  }, []);\n\n  const getFields = useCallback((rows, label, field, group, render = v => v) => {\n    if (!rows?.length) {\n      return [];\n    }\n\n    return rows.reduce(\n      (result, row) => {\n        return {\n          ...result,\n          [`product-${row.id}`]: render(row[field], row),\n        };\n      },\n      { label, group }\n    );\n  }, []);\n\n  const columns = useMemo(() => {\n    return state.contrastProducts?.reduce(\n      (cols, row) => {\n        return [\n          ...cols,\n          {\n            dataIndex: `product-${row.id}`,\n            title: row.productName,\n            width: 300,\n          },\n        ];\n      },\n      [\n        {\n          dataIndex: 'group',\n          width: 140,\n          fixed: 'left',\n          render: (group, row) => {\n            if (row.header) {\n              return <div className={styles.title}>{row.header}</div>;\n            }\n\n            return <div className={styles.group}>{group}</div>;\n          },\n        },\n        {\n          dataIndex: 'label',\n          width: 200,\n          fixed: 'left',\n        },\n      ]\n    );\n  }, [state.contrastProducts]);\n\n  const dataSource = useMemo(() => {\n    console.log(state.contrastProducts);\n    const fixedRows = [\n      {\n        header: '基本信息',\n      },\n      getFields(state.contrastProducts, '公司名称', 'companyName'),\n      getFields(state.contrastProducts, '产品备案号', 'cnCode'),\n      getFields(state.contrastProducts, '报备年份', 'saleYear'),\n      getFields(state.contrastProducts, '重疾险类型', 'illnessType'),\n      getFields(state.contrastProducts, '其他产品属性', 'tagClass'),\n      getFields(state.contrastProducts, '承保方式', 'underwrite'),\n      getFields(state.contrastProducts, '销售状态', 'saleStatus'),\n      getFields(state.contrastProducts, '条款链接', 'productId', null, (v, row) => {\n        return (\n          <Button style={{ paddingLeft: 0 }} onClick={() => viewReport(row)} type=\"link\">\n            看条款\n          </Button>\n        );\n      }),\n\n      { header: '投保信息' },\n      getFields(state.contrastProducts, '保险期间', 'policyTerm'),\n      getFields(state.contrastProducts, '最小投保年龄', 'minInsureAge'),\n      getFields(state.contrastProducts, '最大投保年龄', 'maxInsureAge'),\n      getFields(state.contrastProducts, '交费方式', 'paymentType'),\n\n      { header: '必选保险责任' },\n      getFields(state.contrastProducts, '重疾病种数量', 'criticalNum', '重疾责任'),\n      getFields(state.contrastProducts, '重疾分组数', 'criticalGroupNum'),\n      getFields(state.contrastProducts, '重疾给付次数', 'criticalPaymentNum'),\n      getFields(\n        state.contrastProducts,\n        '重疾给付是否区分年龄或保单年度',\n        'criticalPaymentAgeOrPolicy'\n      ),\n      getFields(state.contrastProducts, '首次重疾给付规则', 'criticalFirstPaymentRule'),\n      getFields(state.contrastProducts, '多次重疾给付规则', 'multiplePaymentRule'),\n\n      getFields(state.contrastProducts, '中症病种数量', 'moderateNum', '中症责任'),\n      getFields(state.contrastProducts, '中症分组数', 'moderateGroupNum'),\n      getFields(state.contrastProducts, '中症给付次数', 'moderatePaymentNum'),\n      getFields(\n        state.contrastProducts,\n        '中症给付是否区分年龄或保单年度',\n        'moderatePaymentAgeOrPolicy'\n      ),\n      getFields(state.contrastProducts, '中症给付规则', 'moderatePaymentRule'),\n\n      getFields(state.contrastProducts, '轻症病种数量', 'mildNum', '轻症责任'),\n      getFields(state.contrastProducts, '轻症分组数', 'mildGroupNum'),\n      getFields(state.contrastProducts, '轻症给付次数', 'mildPaymentNum'),\n      getFields(state.contrastProducts, '轻症给付是否区分年龄或保单年度', 'mildPaymentAgeOrPolicy'),\n      getFields(state.contrastProducts, '轻症给付规则', 'mildPaymentRule'),\n\n      getFields(state.contrastProducts, '特疾病种数量', 'specificNum', '特疾责任'),\n\n      getFields(state.contrastProducts, '罕见病种数量', 'rareNum', '罕见病责任'),\n\n      getFields(state.contrastProducts, '身故给付规则', 'deathPaymentRules', '身故/全残/高残责任'),\n      getFields(state.contrastProducts, '全残给付规则', 'disabilityPaymentRules'),\n      getFields(state.contrastProducts, '高残给付规则', 'highDisabilityPaymentRules'),\n\n      getFields(\n        state.contrastProducts,\n        '恶性肿瘤疾病相关保险金',\n        'malignantTumor',\n        '其他责任（是否包含）'\n      ),\n      getFields(state.contrastProducts, '豁免保险费责任', 'premiumWaiverResponsibility'),\n      getFields(state.contrastProducts, '疾病终末期/生命终末期', 'endOfLife'),\n      getFields(state.contrastProducts, '运动达标涨基本保额', 'fitnessStandardsBasicCoverage'),\n      getFields(state.contrastProducts, '得轻症或中症涨基本保额', 'mildOrModerateCoverage'),\n      getFields(state.contrastProducts, '其他必选保险责任', 'otherMandatoryLiability'),\n\n      { header: '可选保险责任' },\n      getFields(\n        state.contrastProducts,\n        '可选保险责任名称',\n        'optionalLiability',\n        null,\n        lineFeedRender\n      ),\n      getFields(state.contrastProducts, '可选责任数量', 'optionalLiabilityNum'),\n      getFields(state.contrastProducts, '多次重疾是否可选责任', 'multipleOptionalLiability'),\n      getFields(state.contrastProducts, '中症是否可选责任', 'moderateOptionalLiability'),\n      getFields(state.contrastProducts, '轻症是否可选责任', 'mildOptionalLiability'),\n    ];\n    return fixedRows;\n  }, [state.contrastProducts, viewReport]);\n\n  const rowClassName = useCallback(row => {\n    if (row.header) {\n      return styles.header;\n    }\n\n    return '';\n  }, []);\n\n  return (\n    <PageLayout className={styles.container}>\n      <Table\n        rowKey=\"id\"\n        tableLayout=\"fixed\"\n        scroll={{ x: '100%' }}\n        columns={columns}\n        dataSource={dataSource}\n        pagination={false}\n        sticky\n        rowClassName={rowClassName}\n      />\n    </PageLayout>\n  );\n});\n","import Query from './Query';\nimport Contrast from './Contrast';\n// import ProductRateContrast from './ProductRateContrast';\n\nexport default [\n  {\n    path: '/query',\n    component: Query,\n    exact: true,\n    title: '重疾险',\n  },\n  {\n    path: '/contrast',\n    component: Contrast,\n    exact: true,\n    title: '重疾险对比 ',\n  },\n];\n","function toOptions(arr) {\n  return arr.map(item => ({ value: item, label: item }));\n}\n\nexport const underwriteOptions = toOptions(['个人', '团体']);\n\nexport const saleStatusOptions = toOptions(['在售', '停售', '停用', '未售']);\n\nexport const otherProductAttributesOptions = toOptions([\n  '互联网保险',\n  '附加险',\n  '互联网保险，附加险',\n  '无',\n]);\n\nexport const designTypeOptions = toOptions(['普通型', '分红型']);\n\nexport const minEntryAgeOptions = toOptions(['5天', '7天', '28天', '30天', '0岁', '18岁', '其他']);\nexport const maxEntryAgeOptions = toOptions([\n  '50岁',\n  '60岁',\n  '65岁',\n  '70岁',\n  '72岁',\n  '74岁',\n  '75岁',\n  '80岁',\n  '其他',\n]);\n\nexport const yesornoOptions = toOptions(['是', '否']);\n","import * as fRedux from '@/utils/redux';\n\nimport decryptString from '@/utils/decrypt';\n\nconst { createActions } = fRedux.default;\n\nconst namespace = 'IncrementalWholeLifeInsurance';\nconst initState = {\n  queryParams: {},\n  selectTab: 'product',\n  hasProductIds: [],\n  contrastLoading: true,\n};\n\nconst { useReducers } = createActions(namespace, initState, {\n  setContrastLoading: [\n    contrastLoading => contrastLoading,\n    (state, contrastLoading) => ({ contrastLoading }),\n  ],\n  setSelectTab: [selectTab => selectTab, (state, selectTab) => ({ selectTab })],\n  queryByIds: [\n    (params, http, dispatch, getState) => {\n      const { user } = getState();\n\n      return http.get(`/api/incrementalWholeLife/queryByIds`, { params }).then(res => {\n        return decryptString(user.salt, res.result);\n      });\n    },\n    (state, response) => ({ contrastProducts: response }),\n  ],\n  query: [\n    (params, http, dispatch, getState) => {\n      const { user } = getState();\n\n      return http.post(`/api/incrementalWholeLife/list`, null, { params }).then(res => {\n        return decryptString(user.salt, res.result);\n      });\n    },\n    (state, response) => ({ pager: response }),\n  ],\n  updateQueryParams: [params => params, (state, params) => ({ queryParams: params })],\n  updateTableParams: [params => params, (state, params) => ({ tableParams: params })],\n  getReportToken: [\n    (params, http, dispatch, getState) => {\n      const { user } = getState();\n\n      return http.get(`/api/product/getToken`, { params }).then(res => {\n        return decryptString(user.salt, res.result);\n      });\n    },\n  ],\n  queryProduct: [\n    (params, http, dispatch, getState) => {\n      const { user } = getState();\n      return http.get(`/api/universal/productNameCats`, { params }).then(res => {\n        return decryptString(user.salt, res.result);\n      });\n    },\n    (state, products) => ({ products: products || [] }),\n  ],\n  updateSelectedProducts: [keys => keys, (state, keys) => ({ selectedProducts: keys })],\n  setSelectedPerm: [\n    permTerm => permTerm,\n    (state, permTerm) => ({ selectedPerm: permTerm.value, selectedPermLabel: permTerm.label }),\n  ],\n  queryRateByIds: [\n    (params, http, dispatch, getState) => {\n      const { user } = getState();\n\n      return http.get(`/api/incrementalWholeLife/getRateByIds`, { params }).then(res => {\n        return decryptString(user.salt, res.result);\n      });\n    },\n    (state, response) => ({ permTerms: response.perms, hasProductIds: response.hasProductIds }),\n  ],\n  queryRateByIdsAndPermTerm: [\n    (params, http, dispatch, getState) => {\n      const { user } = getState();\n\n      return http\n        .get(`/api/incrementalWholeLife/queryRateByIdsAndPermTerm`, { params })\n        .then(res => {\n          return decryptString(user.salt, res.result);\n        });\n    },\n    (state, response) => ({ contrastRateProducts: response }),\n  ],\n  queryPermTermForCashAndIRR: [\n    (params, http, dispatch, getState) => {\n      const { user } = getState();\n\n      return http.get(`/api/incrementalWholeLife/getPermTermByIds`, { params }).then(res => {\n        return decryptString(user.salt, res.result);\n      });\n    },\n    (state, response) => ({\n      contrastCashAndIRROptions: {\n        hasProductIds: response.hasProductIds,\n        items: response.items,\n      },\n    }),\n  ],\n  toggleShowSelected: [() => {}, state => ({ showSelected: !state.showSelected })],\n  setShowSelected: [showSelected => showSelected, (state, showSelected) => ({ showSelected })],\n});\n\nexport default useReducers;\n","import { createI18n } from '@/redux/i18n';\n\nexport default createI18n({\n  en: {\n    看条款: 'View Clause',\n    更多: 'More',\n    备注: 'Remark',\n    主要责任: 'Primary Responsibility',\n    其他责任: 'Other Responsibility',\n    是否支持减保: 'Support Surrender',\n    设计类型: 'Design Type',\n    销售状态: 'Sales Status',\n    产品名称: 'Product Name',\n    公司名称: 'Company Name',\n    报备年份: 'Sale Year',\n    有效保额增长率: 'Effective Policy Value Growth Rate',\n  },\n  zh: {},\n});\n","import React, { useCallback, useState, useMemo, useEffect } from 'react';\n\nimport { Button } from 'antd';\nimport QueryTable from '@/components/QueryTable';\nimport openWindow from '@/utils/openWindow';\n\nimport { percentFromFloatRender } from '@/utils/cellRender';\nimport useReducers from '../../redux';\nimport useI18n from './i18n';\n\nexport default React.memo(function ReportTable() {\n  const [loading, setLoading] = useState();\n  const [state, actions] = useReducers();\n  const [t] = useI18n();\n  useEffect(() => {\n    setLoading(true);\n    actions.updateTableParams({});\n    actions\n      .query({\n        pageNo: 1,\n        pageSize: 10,\n        ...state.queryParams,\n      })\n      .then(() => {\n        setLoading(false);\n      })\n      .catch(() => {\n        setLoading(false);\n      });\n  }, [state.queryParams]);\n\n  const viewReport = useCallback(async item => {\n    setLoading(true);\n    const params = await actions.getReportToken({ id: item.productId, type: 'PRODUCT' });\n    openWindow(`/report-viewer?${params}`);\n    setLoading(false);\n  }, []);\n\n  const columns = useMemo(() => {\n    return [\n      {\n        title: t('报备年份'),\n        dataIndex: 'saleYear',\n        width: '7%',\n        sorter: true,\n      },\n      {\n        title: t('产品名称'),\n        dataIndex: 'productName',\n        width: '13%',\n        sorter: true,\n      },\n      {\n        title: t('公司名称'),\n        dataIndex: 'companyName',\n        width: '17%',\n        sorter: true,\n      },\n      {\n        title: t('有效保额增长率'),\n        dataIndex: 'apeGrowthRate',\n        render: percentFromFloatRender,\n        width: '12%',\n        sorter: true,\n      },\n      {\n        title: t('主要责任'),\n        dataIndex: 'primaryCoverage',\n        width: '8%',\n        sorter: true,\n      },\n      {\n        title: t('其他责任'),\n        dataIndex: 'otherResponsibility',\n        sorter: true,\n      },\n      {\n        title: t('是否支持减保'),\n        width: '12%',\n        dataIndex: 'surrender',\n        sorter: true,\n      },\n      {\n        title: t('设计类型'),\n        width: '7%',\n        dataIndex: 'designType',\n        sorter: true,\n      },\n      {\n        title: t('销售状态'),\n        width: '7%',\n        dataIndex: 'saleStatus',\n        sorter: true,\n      },\n      {\n        title: t('更多'),\n        dataIndex: 'action',\n        width: 80,\n        render(_, item) {\n          return (\n            <Button onClick={() => viewReport(item)} type=\"link\">\n              {t('看条款')}\n            </Button>\n          );\n        },\n      },\n    ];\n  }, [viewReport, t]);\n\n  return (\n    <QueryTable\n      loading={loading}\n      columns={columns}\n      tableParams={state.tableParams}\n      pager={state.pager}\n      queryParams={state.queryParams}\n      selectedProducts={state.selectedProducts}\n      updateSelectedProducts={actions.updateSelectedProducts}\n      updateTableParams={actions.updateTableParams}\n      query={actions.query}\n      showSelected={state.showSelected}\n    />\n  );\n});\n","import { createI18n } from '@/redux/i18n';\n\nexport default createI18n({\n  en: {\n    增额终身寿险: 'Incremental Whole Life Insurance',\n    已选中: 'Selected',\n    对比: 'Compare',\n    产品名称: 'Product Name',\n    公司名称: 'Company Name',\n    报备年份: 'Sale Year',\n    销售状态: 'Sales Status',\n    承保方式: 'Underwrite',\n    有效保额增长率: 'Effective Policy Value Growth Rate',\n    是否支持减保: 'Support Surrender',\n    设计类型: 'Design Type',\n    其他属性: 'Other Attribute',\n    最小投保年龄: 'Minimum Insurable Age',\n    最大投保年龄: 'Maximum Insurable Age',\n    是否区分缴费期内外给付: 'Distinguish Between Inside and Outside Payment Period',\n    是否连生保险: 'Joint Life Insurance',\n    是否支持加保: 'Support Policy Addition',\n    是否支持年金转换: 'Support Annuity Conversion',\n    更多字段: 'More Fields',\n    最低: 'Minimum',\n    最高: 'Maximum',\n  },\n  zh: {},\n});\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"UABAt\",\"main\":\"CdQ5Z\",\"group\":\"WKEW6\",\"icon\":\"jL0Vf\"};","import React, { useCallback, useState } from 'react';\n\nimport qs from 'qs';\nimport { SwapOutlined, CaretDownOutlined, CaretUpOutlined } from '@ant-design/icons';\nimport { Form, Input, Select, Button, Checkbox } from 'antd';\nimport PageLayout from '@/components/PageLayout';\nimport SearchForm from '@/components/SearchForm';\nimport ProductSelect from '@/components/form/ProductSelect';\nimport CompanySelect from '@/components/form/CompanySelect';\nimport { useYearOptions } from '@/redux/hooks/enums';\nimport openWindow from '@/utils/openWindow';\nimport {\n  underwriteOptions,\n  saleStatusOptions,\n  otherProductAttributesOptions,\n  minEntryAgeOptions,\n  maxEntryAgeOptions,\n  yesornoOptions,\n  designTypeOptions,\n} from './options';\n\nimport ReportTable from './ReportTable';\n\nimport useReducers from '../redux';\nimport useI18n from './i18n';\nimport styles from './Query.module.scss';\n\nexport default React.memo(function UniversalRiskRateQuery() {\n  const [expanded, setExpanded] = useState(false);\n  const [form] = Form.useForm();\n  const [state, actions] = useReducers();\n  const yearOptions = useYearOptions(2006);\n  const [t] = useI18n();\n  const onSearch = useCallback(\n    async params => {\n      const queryParams = { ...params };\n\n      if (queryParams.productNames) {\n        queryParams.productNames = queryParams.productNames.map(item => encodeURIComponent(item));\n      }\n\n      if (queryParams.apeGrowthRateMin) {\n        queryParams.apeGrowthRateMin /= 100;\n      }\n      if (queryParams.apeGrowthRateMax) {\n        queryParams.apeGrowthRateMax /= 100;\n      }\n\n      actions.updateQueryParams(queryParams);\n    },\n    [state.queryParams]\n  );\n\n  const viewCompare = useCallback(() => {\n    const params = {\n      products: state.selectedProducts.map(item => item.id),\n    };\n\n    openWindow(\n      `/product/incremental-whole-life-insurance/contrast?${qs.stringify(params, {\n        arrayFormat: 'comma',\n      })}`\n    );\n  }, [state.selectedProducts]);\n\n  return (\n    <PageLayout>\n      <div className={styles.container}>\n        <SearchForm\n          form={form}\n          title={t('增额终身寿险')}\n          onSearch={onSearch}\n          extraAction={\n            <>\n              <Button\n                onClick={actions.toggleShowSelected}\n                htmlType=\"button\"\n                type=\"default\"\n                icon={<Checkbox checked={state.showSelected} style={{ marginRight: 6 }} />}\n              >\n                {t('已选中')}（{state.selectedProducts?.length || 0}）\n              </Button>\n              <Button\n                onClick={viewCompare}\n                icon={<SwapOutlined className={styles.icon} />}\n                type=\"primary\"\n                disabled={!state.selectedProducts?.length}\n              >\n                {t('对比')}\n              </Button>\n              <Button onClick={() => setExpanded(!expanded)}>\n                {t('更多字段')} {expanded ? <CaretUpOutlined /> : <CaretDownOutlined />}\n              </Button>\n            </>\n          }\n        >\n          <Form.Item label={t('产品名称')} name=\"productNames\">\n            <ProductSelect\n              allowClear\n              lableOnly\n              maxTagCount={2}\n              showArrow\n              searchParams={{ tag: 'IncrementalWholeLife' }}\n              mode=\"tags\"\n              placeholder={t('产品名称')}\n              labelInValue={false}\n            />\n          </Form.Item>\n\n          <Form.Item label={t('公司名称')} name=\"companyIds\">\n            <CompanySelect mode=\"multiple\" />\n          </Form.Item>\n\n          <Form.Item label={t('报备年份')} name=\"saleYears\">\n            <Select\n              maxTagCount={2}\n              allowClear\n              showArrow\n              mode=\"multiple\"\n              options={yearOptions}\n              placeholder={t('报备年份')}\n            />\n          </Form.Item>\n\n          <Form.Item label={t('承保方式')} name=\"underwrite\">\n            <Select allowClear showArrow options={underwriteOptions} placeholder={t('承保方式')} />\n          </Form.Item>\n\n          <Form.Item label={t('销售状态')} name=\"saleStatus\">\n            <Select\n              mode=\"multiple\"\n              allowClear\n              showArrow\n              options={saleStatusOptions}\n              placeholder={t('销售状态')}\n            />\n          </Form.Item>\n\n          <Form.Item label={t('有效保额增长率')}>\n            <Input.Group className={styles.group}>\n              <Form.Item noStyle name=\"apeGrowthRateMin\">\n                <Input\n                  type=\"number\"\n                  step={0.01}\n                  suffix=\"%\"\n                  min={0}\n                  max={100}\n                  placeholder={t('最低')}\n                  controls={false}\n                />\n              </Form.Item>\n              <span>~</span>\n              <Form.Item noStyle name=\"apeGrowthRateMax\">\n                <Input\n                  type=\"number\"\n                  step={0.01}\n                  suffix=\"%\"\n                  min={0}\n                  max={100}\n                  placeholder={t('最高')}\n                  controls={false}\n                />\n              </Form.Item>\n            </Input.Group>\n          </Form.Item>\n\n          <Form.Item label={t('是否支持减保')} name=\"surrender\">\n            <Select allowClear showArrow options={yesornoOptions} placeholder={t('是否支持减保')} />\n          </Form.Item>\n\n          <Form.Item label={t('设计类型')} name=\"designTypes\">\n            <Select\n              allowClear\n              showArrow\n              mode=\"multiple\"\n              options={designTypeOptions}\n              placeholder={t('设计类型')}\n            />\n          </Form.Item>\n\n          <Form.Item label={t('其他属性')} name=\"tag\" hidden={!expanded}>\n            <Select\n              allowClear\n              showArrow\n              options={otherProductAttributesOptions}\n              placeholder={t('其他属性')}\n            />\n          </Form.Item>\n\n          <Form.Item label={t('最小投保年龄')} name=\"minEntryAge\" hidden={!expanded}>\n            <Select\n              allowClear\n              showArrow\n              options={minEntryAgeOptions}\n              placeholder={t('最小投保年龄')}\n            />\n          </Form.Item>\n\n          <Form.Item label={t('最大投保年龄')} name=\"maxEntryAge\" hidden={!expanded}>\n            <Select\n              allowClear\n              showArrow\n              options={maxEntryAgeOptions}\n              placeholder={t('最大投保年龄')}\n            />\n          </Form.Item>\n\n          <Form.Item\n            label={t('是否区分缴费期内外给付')}\n            name=\"discPayInsideOrOutside\"\n            hidden={!expanded}\n          >\n            <Select\n              allowClear\n              showArrow\n              options={yesornoOptions}\n              placeholder={t('是否区分缴费期内外给付')}\n            />\n          </Form.Item>\n\n          <Form.Item label={t('是否连生保险')} name=\"jointLifeInsurance\" hidden={!expanded}>\n            <Select allowClear showArrow options={yesornoOptions} placeholder={t('是否连生保险')} />\n          </Form.Item>\n\n          <Form.Item label={t('是否支持加保')} name=\"policyRider\" hidden={!expanded}>\n            <Select allowClear showArrow options={yesornoOptions} placeholder={t('是否支持加保')} />\n          </Form.Item>\n\n          <Form.Item label={t('是否支持年金转换')} name=\"annuityConversion\" hidden={!expanded}>\n            <Select\n              allowClear\n              showArrow\n              options={yesornoOptions}\n              placeholder={t('是否支持年金转换')}\n            />\n          </Form.Item>\n        </SearchForm>\n\n        <div className={styles.main}>\n          <ReportTable />\n        </div>\n      </div>\n    </PageLayout>\n  );\n});\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"_4qTAn\"};","import React, { useMemo, useRef, useEffect } from 'react';\n\nimport useScript from '@/hooks/useScript';\nimport useQuery from '@/hooks/useQuery';\n\nimport useReducers from '../../redux';\nimport styles from './Chart.module.scss';\n\nexport default React.memo(function Chart() {\n  const [state, actions] = useReducers();\n  const echarts = useScript('https://s.futurebaobei.com/static/js/echarts.min.js', 'echarts');\n  const chartRef = useRef();\n  const chartDom = useRef();\n  const query = useQuery();\n  const activeLine = useRef();\n\n  useEffect(() => {\n    if (!state.selectedPerm) {\n      return;\n    }\n\n    actions.setContrastLoading(true);\n    actions\n      .queryRateByIdsAndPermTerm({\n        ids: query.products,\n        permTerm: state.selectedPerm,\n      })\n      .then(() => {\n        actions.setContrastLoading(false);\n      })\n      .catch(() => {\n        actions.setContrastLoading(false);\n      });\n  }, [state.selectedPerm]);\n\n  const xAxis = useMemo(() => {\n    if (!state.contrastRateProducts?.length) {\n      return [];\n    }\n\n    const ages = state.contrastRateProducts.reduce((result, next) => {\n      return [...result, ...next.map(item => item.age)];\n    }, []);\n\n    const maxAge = Math.max(...ages);\n\n    return new Array(maxAge + 1).fill(1).map((item, index) => {\n      return index;\n    });\n  }, [state.contrastRateProducts]);\n\n  const series = useMemo(() => {\n    if (!state.contrastProducts?.length || !xAxis?.length) {\n      return [];\n    }\n\n    const allRates = state.contrastRateProducts.reduce((result, next) => {\n      return [...result, ...next];\n    }, []);\n\n    const ys = state.contrastProducts\n      .reduce((result, product) => {\n        return [\n          ...result,\n          {\n            name: `${product.productName}-男性`,\n            sex: 'M',\n            productId: product.productId,\n          },\n          {\n            name: `${product.productName}-女性`,\n            sex: 'F',\n            productId: product.productId,\n          },\n        ];\n      }, [])\n      .map(y => {\n        return {\n          ...y,\n          type: 'line',\n          soomth: true,\n          data: xAxis.map(x => {\n            const finded = allRates.find(\n              item => item.productId === y.productId && item.sex === y.sex && item.age === x\n            );\n\n            return finded?.prem;\n          }),\n        };\n      });\n\n    return ys;\n  }, [xAxis, state.contrastRateProducts, state.contrastProducts]);\n\n  useEffect(() => {\n    if (!echarts || !xAxis?.length || !series?.length) {\n      return;\n    }\n\n    if (!chartRef.current) {\n      chartRef.current = echarts.init(chartDom.current);\n      chartRef.current.on('mouseover', e => {\n        activeLine.current = e.seriesName;\n\n        chartRef.current.setOption({\n          series: {\n            name: e.seriesName,\n            lineStyle: {\n              width: 4,\n              opacity: 1,\n            },\n          },\n        });\n      });\n\n      chartRef.current.on('mouseout', e => {\n        activeLine.current = '';\n        chartRef.current.setOption({\n          series: {\n            name: e.seriesName,\n            lineStyle: {\n              width: 2,\n              opacity: 0.5,\n            },\n          },\n        });\n      });\n    }\n\n    const option = {\n      grid: {\n        top: query.products.split(',').length > 6 ? '30%' : '20%',\n        right: '6%',\n        bottom: '20',\n        left: '6%',\n        borderWidth: 10,\n        containLabel: true,\n      },\n      legend: {\n        show: true,\n        right: '6%',\n        left: '13%',\n        top: 0,\n        color: '#666',\n        fontSize: 16,\n        // data: legend,\n      },\n      tooltip: {\n        trigger: 'axis',\n        formatter(params) {\n          const parent = document.createElement('div');\n\n          const index = document.createElement('p');\n          index.innerHTML = params[0].dataIndex;\n          parent.appendChild(index);\n\n          params.map(item => {\n            const child = document.createElement('div');\n            child.style.display = 'flex';\n            child.style.alignItems = 'center';\n\n            const marker = document.createElement('span');\n            marker.innerHTML = item.marker;\n\n            const name = document.createElement('span');\n            name.innerHTML = item.seriesName;\n            name.style.flex = '1';\n            name.style.marginRight = '16px';\n\n            const value = document.createElement('span');\n            value.innerHTML = item.data || '-';\n            value.style.textAlign = 'right';\n            value.style.fontFamily = 'Arial';\n\n            if (item.seriesName === activeLine.current) {\n              value.style.color = item.color;\n              name.style.color = item.color;\n            } else {\n              value.style.color = activeLine.current ? '#999' : '#333';\n              name.style.color = activeLine.current ? '#999' : '#333';\n            }\n\n            child.appendChild(marker.firstChild);\n            child.appendChild(name);\n            child.appendChild(value);\n\n            parent.appendChild(child);\n          });\n\n          return parent;\n        },\n      },\n      axisPointer: {\n        link: { xAxisIndex: 'all' },\n      },\n      yAxis: {\n        type: 'value',\n        splitNumber: 5,\n        min(value) {\n          return Number.parseInt(value.min / 100, 10) * 100;\n        },\n        name: '基本保险金额',\n        nameGap: 30,\n        nameTextStyle: {\n          padding: [0, 100, 0, 0],\n          fontSize: 14,\n          color: '#333',\n        },\n        axisLabel: {\n          color: '#666',\n          fontSize: 16,\n        },\n      },\n      xAxis: {\n        type: 'category',\n        axisTick: false,\n        name: '投保年龄',\n        nameLocation: 'start',\n        nameGap: 0,\n        // nameGap: 30,\n        // nameTextStyle: {\n        //   fontSize: 14,\n        //   color: '#333',\n        // },\n        nameTextStyle: {\n          fontSize: 14,\n          color: '#333',\n          align: 'right',\n          verticalAlign: 'top',\n          /**\n           * the top padding will shift the name down so that it does not overlap with the axis-labels\n           * t-l-b-r\n           */\n          padding: [-6, 40, 0, 0],\n        },\n        axisLabel: {\n          color: '#666',\n          fontSize: 16,\n          formatter: '{value}',\n        },\n        data: xAxis,\n      },\n      series,\n    };\n\n    chartRef.current.setOption(option);\n  }, [echarts, xAxis, series]);\n\n  return (\n    <div className={styles.container}>\n      <div style={{ height: '100%' }} ref={chartDom} />\n    </div>\n  );\n});\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"UPNaY\",\"label\":\"kkp-0\"};","import React, { useMemo, useEffect, useCallback } from 'react';\n\nimport { Radio } from 'antd';\nimport useQuery from '@/hooks/useQuery';\n\nimport useReducers from '../../redux';\n\nimport styles from './Search.module.scss';\n\nexport default React.memo(function Search() {\n  const [state, actions] = useReducers();\n  const query = useQuery();\n\n  useEffect(() => {\n    if (state.permTerms && !state.selectedPerm) {\n      actions.setSelectedPerm(state.permTerms[0]);\n    }\n  }, [state.permTerms, state.selectedPerm]);\n\n  useEffect(() => {\n    actions.setContrastLoading(true);\n    actions\n      .queryRateByIds({\n        ids: query.products,\n      })\n      .then(() => {\n        actions.setContrastLoading(false);\n      });\n  }, []);\n\n  const handleChange = useCallback(e => {\n    const item = state.permTerms.find(p => p.value === e.target.value);\n    actions.setSelectedPerm(item);\n  }, []);\n\n  const options = useMemo(() => {\n    return state.permTerms || [];\n    // if (!state.permTerms) {\n    //   return [];\n    // }\n    //\n    // return state.permTerms.map(item => {\n    //   return {\n    //     label: item.value === 1 ? '趸交' : `${item.value}年`,\n    //     value: item.value,\n    //   };\n    // });\n  }, [state.permTerms]);\n\n  return (\n    <div className={styles.container}>\n      <div className={styles.label}>保险期间:</div>\n      <Radio.Group\n        value=\"终身\"\n        optionType=\"button\"\n        buttonStyle=\"solid\"\n        options={[{ label: '终身', value: '终身' }]}\n      />\n      <div className={styles.label}>缴费期限:</div>\n      <Radio.Group\n        onChange={handleChange}\n        value={state.selectedPerm}\n        optionType=\"button\"\n        buttonStyle=\"solid\"\n        options={options}\n      />\n    </div>\n  );\n});\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"vZAHY\",\"split-col\":\"JBFLy\",\"splitCol\":\"JBFLy\",\"no-data\":\"rnzpb\",\"noData\":\"rnzpb\",\"max\":\"k8HYO\"};","import React, { useMemo } from 'react';\nimport classnames from 'classnames';\n\nimport { Table } from 'antd';\n// import useQuery from '@/hooks/useQuery';\nimport useReducers from '../../redux';\n\nimport styles from './Detail.module.scss';\n\nexport default React.memo(function Detail() {\n  const [state] = useReducers();\n  // const query = useQuery();\n  //\n  // useEffect(() => {\n  //   if (query.products) {\n  //     query.products.split(',').forEach(id => {\n  //       actions.hasRate(id);\n  //     });\n  //   }\n  // }, []);\n\n  const dataSource = useMemo(() => {\n    if (!state.contrastRateProducts?.length) {\n      return [];\n    }\n\n    const ages = state.contrastRateProducts.reduce((result, next) => {\n      return [...result, ...next.map(item => item.age)];\n    }, []);\n\n    const maxAge = Math.max(...ages);\n\n    const allRates = state.contrastRateProducts.reduce((result, next) => {\n      return [...result, ...next];\n    }, []);\n\n    return new Array(maxAge + 1)\n      .fill(1)\n      .map((item, index) => {\n        return index;\n      })\n      .map(age => {\n        const values = state.contrastProducts.reduce((result, next) => {\n          const maleRow = allRates.find(\n            item => item.age === age && item.productId === next.productId && item.sex === 'M'\n          );\n          const femaleRow = allRates.find(\n            item => item.age === age && item.productId === next.productId && item.sex === 'F'\n          );\n\n          if (maleRow || femaleRow) {\n            return {\n              ...result,\n              [`product-${next.productId}`]: {\n                male: maleRow?.prem,\n                female: femaleRow?.prem,\n              },\n            };\n          }\n\n          return result;\n        }, {});\n\n        return {\n          age,\n          ...values,\n        };\n      });\n  }, [state.contrastRateProducts, state.contrastProducts]);\n\n  const columns = useMemo(() => {\n    if (!state.contrastProducts?.length) {\n      return [];\n    }\n\n    const detailCols = state.contrastProducts.reduce(\n      (result, next) => {\n        const dataIndex = `product-${next.productId}`;\n        const hasData = dataSource.some(row => row[dataIndex] !== undefined);\n\n        const hasRate = state.hasProductIds.includes(next.productId);\n\n        let title = (\n          <div className={styles.splitCol}>\n            <div>男性</div>\n            <div>女性</div>\n          </div>\n        );\n\n        if (!hasRate) {\n          title = <div className={styles.noData}>暂无费率数据</div>;\n        } else if (!hasData) {\n          title = <div className={styles.noData}>该产品不支持【{state.selectedPermLabel}】</div>;\n        }\n\n        const col =\n          hasData || !state.selectedPerm\n            ? {\n                title,\n                dataIndex,\n                align: 'left',\n                width: 300,\n                render(val, row) {\n                  const maxPrem = Object.keys(row).reduce(\n                    (max, key) => {\n                      if (key.startsWith('product')) {\n                        return {\n                          male: Math.max(row[key]?.male || 0, max.male),\n                          female: Math.max(row[key]?.female || 0, max.female),\n                        };\n                      }\n\n                      return max;\n                    },\n                    { male: 0, female: 0 }\n                  );\n\n                  return (\n                    <div className={styles.splitCol}>\n                      <div>\n                        <span\n                          className={classnames({\n                            [styles.max]: val?.male === maxPrem.male,\n                          })}\n                        >\n                          {val?.male || ''}\n                        </span>\n                      </div>\n                      <div>\n                        <span\n                          className={classnames({\n                            [styles.max]: val?.female === maxPrem.female,\n                          })}\n                        >\n                          {val?.female || ''}\n                        </span>\n                      </div>\n                    </div>\n                  );\n                },\n              }\n            : {\n                title,\n                dataIndex,\n                width: 300,\n              };\n\n        return [...result, col];\n      },\n      [\n        {\n          title: '投保年龄',\n          dataIndex: 'age',\n          width: 340,\n          align: 'center',\n        },\n      ]\n    );\n\n    detailCols.push({\n      dataIndex: 'none',\n      title: '',\n    });\n\n    return detailCols;\n  }, [state.contrastProducts, dataSource]);\n\n  return (\n    <div className={styles.container}>\n      <Table\n        rowKey=\"age\"\n        size=\"small\"\n        tableLayout=\"fixed\"\n        bordered={false}\n        columns={columns}\n        dataSource={dataSource}\n        pagination={false}\n      />\n    </div>\n  );\n});\n","import * as fRedux from '@/utils/redux';\n\nimport decryptString from '@/utils/decrypt';\n\nconst { createActions } = fRedux.default;\n\nconst namespace = 'IncrementalWholeLifeInsuranceCash';\nconst initState = {\n  searchParams: {},\n  selectedPerm: {},\n};\n\nconst { useReducers } = createActions(namespace, initState, {\n  updateSearchParams: [searchParams => searchParams, (state, searchParams) => ({ searchParams })],\n  updateSelectedPermTerm: [\n    selectedPerm => selectedPerm,\n    (state, selectedPerm) => ({ selectedPerm }),\n  ],\n  queryRateByIds: [\n    (params, http, dispatch, getState) => {\n      const { user } = getState();\n\n      return http.get(`/api/incrementalWholeLife/queryActuaryValue`, { params }).then(res => {\n        return decryptString(user.salt, res.result);\n      });\n    },\n    (state, response) => ({ cashData: response }),\n  ],\n  queryRateByIdsAndPermTerm: [\n    (params, http, dispatch, getState) => {\n      const { user } = getState();\n\n      return http\n        .get(`/api/incrementalWholeLife/queryRateByIdsAndPermTerm`, { params })\n        .then(res => {\n          return decryptString(user.salt, res.result);\n        });\n    },\n    (state, response) => ({ contrastRateProducts: response }),\n  ],\n});\n\nexport default useReducers;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"okYBH\"};","import React, { useMemo, useRef, useEffect } from 'react';\n\nimport useScript from '@/hooks/useScript';\nimport useQuery from '@/hooks/useQuery';\n\nimport useLifeReducers from '../../redux';\nimport useReducers from './redux';\nimport styles from './Chart.module.scss';\n\nexport default React.memo(function Chart() {\n  const [state] = useReducers();\n  const [lifeState] = useLifeReducers();\n  const echarts = useScript('https://s.futurebaobei.com/static/js/echarts.min.js', 'echarts');\n  const chartRef = useRef();\n  const chartDom = useRef();\n  const query = useQuery();\n  const activeLine = useRef();\n\n  const xAxis = useMemo(() => {\n    if (!state.cashData?.length) {\n      return [];\n    }\n\n    const policyYears = state.cashData.reduce((result, next) => {\n      return [...result, ...next.map(item => item.policyYear)];\n    }, []);\n\n    if (!policyYears?.length) {\n      return [];\n    }\n\n    const maxPolicyYear = Math.max(...policyYears);\n\n    return new Array(maxPolicyYear + 1).fill(1).map((item, index) => {\n      return index + 1;\n    });\n  }, [state.cashData]);\n\n  const series = useMemo(() => {\n    if (!xAxis?.length) {\n      return [];\n    }\n\n    const allRates = state.cashData.reduce((result, next) => {\n      return [...result, ...next];\n    }, []);\n\n    const ys = lifeState.contrastProducts\n      .reduce((result, product) => {\n        return [\n          ...result,\n          {\n            name: `${product.productName}-男性`,\n            sex: 'M',\n            productId: product.productId,\n          },\n          {\n            name: `${product.productName}-女性`,\n            sex: 'F',\n            productId: product.productId,\n          },\n        ];\n      }, [])\n      .map(y => {\n        return {\n          ...y,\n          type: 'line',\n          soomth: true,\n          data: xAxis.map(x => {\n            const finded = allRates.find(\n              item => item.productId === y.productId && item.sex === y.sex && item.policyYear === x\n            );\n\n            return [x, finded?.csv];\n          }),\n          markPoint: {\n            symbol: 'pin',\n            label: {\n              formatter: `x{c}`,\n              color: '#fff',\n            },\n            data: xAxis.reduce((result, x) => {\n              const finded = allRates.find(\n                item =>\n                  item.productId === y.productId &&\n                  item.sex === y.sex &&\n                  item.policyYear === x &&\n                  item.multiple &&\n                  (item.multiple < 5 || item.multiple % 5 === 0)\n              );\n\n              if (!finded || result.some(item => item.value === finded.multiple)) {\n                return result;\n              }\n\n              return [\n                ...result,\n                {\n                  value: finded.multiple,\n                  xAxis: x,\n                  yAxis: finded.csv,\n                },\n              ];\n            }, []),\n          },\n        };\n      });\n\n    return ys;\n  }, [xAxis, state.cashData, lifeState.contrastProducts]);\n\n  useEffect(() => {\n    if (!echarts || !xAxis?.length || !series?.length) {\n      return;\n    }\n\n    if (!chartRef.current) {\n      chartRef.current = echarts.init(chartDom.current);\n      chartRef.current.on('mouseover', e => {\n        activeLine.current = e.seriesName;\n\n        chartRef.current.setOption({\n          series: {\n            name: e.seriesName,\n            lineStyle: {\n              width: 4,\n              opacity: 1,\n            },\n          },\n        });\n      });\n\n      chartRef.current.on('mouseout', e => {\n        activeLine.current = '';\n        chartRef.current.setOption({\n          series: {\n            name: e.seriesName,\n            lineStyle: {\n              width: 2,\n              opacity: 0.5,\n            },\n          },\n        });\n      });\n    }\n\n    const option = {\n      grid: {\n        top: query.products.split(',').length > 6 ? '30%' : '20%',\n        right: '6%',\n        bottom: '20',\n        left: '6%',\n        borderWidth: 10,\n        containLabel: true,\n      },\n      legend: {\n        show: true,\n        right: '6%',\n        left: '13%',\n        top: 0,\n        color: '#666',\n        fontSize: 16,\n        // data: legend,\n      },\n      tooltip: {\n        trigger: 'axis',\n        formatter(params) {\n          const parent = document.createElement('div');\n\n          const index = document.createElement('p');\n          index.innerHTML = params[0].axisValue;\n          parent.appendChild(index);\n\n          params.map(item => {\n            const child = document.createElement('div');\n            child.style.display = 'flex';\n            child.style.alignItems = 'center';\n\n            const marker = document.createElement('span');\n            marker.innerHTML = item.marker;\n\n            const name = document.createElement('span');\n            name.innerHTML = item.seriesName;\n            name.style.flex = '1';\n            name.style.marginRight = '16px';\n\n            const value = document.createElement('span');\n            value.innerHTML = item.data[1] || '-';\n            value.style.textAlign = 'right';\n            value.style.fontFamily = 'Arial';\n\n            if (item.seriesName === activeLine.current) {\n              value.style.color = item.color;\n              name.style.color = item.color;\n            } else {\n              value.style.color = activeLine.current ? '#999' : '#333';\n              name.style.color = activeLine.current ? '#999' : '#333';\n            }\n\n            child.appendChild(marker.firstChild);\n            child.appendChild(name);\n            child.appendChild(value);\n\n            parent.appendChild(child);\n          });\n\n          return parent;\n        },\n      },\n      axisPointer: {\n        link: { xAxisIndex: 'all' },\n      },\n      yAxis: {\n        type: 'value',\n        splitNumber: 5,\n        axisTick: false,\n        axisLine: false,\n        min(value) {\n          return Number.parseInt(value.min / 100, 10) * 100;\n        },\n        name: '现金价值',\n        nameGap: 30,\n        nameTextStyle: {\n          padding: [0, 70, 0, 0],\n          fontSize: 14,\n          color: '#333',\n        },\n        axisLabel: {\n          color: '#666',\n          fontSize: 16,\n        },\n      },\n      xAxis: {\n        type: 'value',\n        axisTick: false,\n        name: '保单年度',\n        interval: 1,\n        max: xAxis[xAxis.length - 1],\n        nameLocation: 'start',\n        nameGap: 0,\n        splitLine: false,\n        nameTextStyle: {\n          fontSize: 14,\n          color: '#333',\n          align: 'right',\n          verticalAlign: 'top',\n          /**\n           * the top padding will shift the name down so that it does not overlap with the axis-labels\n           * t-l-b-r\n           */\n          padding: [-6, 40, 0, 0],\n        },\n        axisLabel: {\n          color: '#666',\n          fontSize: 16,\n          formatter(value) {\n            if (value === 1 || (value % 5 === 0 && value !== 0)) {\n              return value;\n            }\n\n            return '';\n          },\n        },\n        // data: xAxis,\n      },\n      series,\n    };\n\n    chartRef.current.setOption(option);\n  }, [echarts, xAxis, series]);\n\n  return (\n    <div className={styles.container}>\n      <div style={{ height: '100%' }} ref={chartDom} />\n    </div>\n  );\n});\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"_6A2ZC\",\"label\":\"xcH-8\"};","import React, { useMemo, useEffect, useCallback } from 'react';\n\nimport { Radio, Select } from 'antd';\nimport useQuery from '@/hooks/useQuery';\n\nimport useReducers from './redux';\nimport useLifeReducers from '../../redux';\n\nimport styles from './Search.module.scss';\n\nexport default React.memo(function Search() {\n  const [lifeState, lifeActions] = useLifeReducers();\n  const [state, actions] = useReducers();\n  const query = useQuery();\n\n  useEffect(() => {\n    if (state.searchParams?.premTerm) {\n      lifeActions.setContrastLoading(true);\n      actions\n        .queryRateByIds({\n          ...state.searchParams,\n          ids: query.products,\n        })\n        .then(() => {\n          lifeActions.setContrastLoading(false);\n        })\n        .catch(() => {\n          lifeActions.setContrastLoading(false);\n        });\n    }\n  }, [state.searchParams]);\n\n  useEffect(() => {\n    if (!state.searchParams?.premTerm && lifeState.contrastCashAndIRROptions?.items?.length) {\n      const [first] = lifeState.contrastCashAndIRROptions.items;\n      actions.updateSelectedPermTerm(first);\n      actions.updateSearchParams({\n        age: first.ages[0],\n        premTerm: first.value,\n        premTermLabel: first.label,\n      });\n    }\n  }, [lifeState.contrastCashAndIRROptions?.premTerm, state.searchParams]);\n\n  const options = useMemo(() => {\n    return lifeState.contrastCashAndIRROptions.items || [];\n  }, [lifeState.contrastCashAndIRROptions?.items]);\n\n  const ageOptions = useMemo(() => {\n    if (!state.selectedPerm?.ages) {\n      return [];\n    }\n\n    return state.selectedPerm.ages.map(value => {\n      return {\n        label: value,\n        value,\n      };\n    });\n  }, [state.selectedPerm?.ages]);\n\n  const premTermChange = useCallback(\n    e => {\n      const { value } = e.target;\n\n      const selected = options.find(item => item.value === value);\n      const params = {\n        premTerm: value,\n        premTermLabel: selected.label,\n        age: state.searchParams?.age,\n      };\n      actions.updateSelectedPermTerm(selected);\n\n      if (!selected.ages.includes(state.searchParams?.age)) {\n        [params.age] = selected.ages;\n      }\n\n      actions.updateSearchParams(params);\n    },\n    [state.searchParams?.age, ageOptions, options]\n  );\n\n  const ageChange = useCallback(\n    value => {\n      const params = {\n        ...(state.searchParams || {}),\n        age: value,\n      };\n\n      actions.updateSearchParams(params);\n    },\n    [state.searchParams?.premTerm]\n  );\n\n  return (\n    <div className={styles.container}>\n      <div className={styles.label}>保险期间:</div>\n      <Radio.Group\n        value=\"终身\"\n        optionType=\"button\"\n        buttonStyle=\"solid\"\n        options={[{ label: '终身', value: '终身' }]}\n      />\n      <div className={styles.label}>缴费期限:</div>\n      <Radio.Group\n        onChange={premTermChange}\n        value={state.searchParams?.premTerm}\n        optionType=\"button\"\n        buttonStyle=\"solid\"\n        options={options}\n      />\n      <div className={styles.label}>投保年龄:</div>\n      <Select\n        onChange={ageChange}\n        value={state.searchParams.age}\n        options={ageOptions}\n        style={{ width: 120 }}\n      />\n    </div>\n  );\n});\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"NTCBW\",\"split-col\":\"BUvhO\",\"splitCol\":\"BUvhO\",\"no-data\":\"NVEMl\",\"noData\":\"NVEMl\",\"max\":\"_4b7ao\"};","import React, { useMemo } from 'react';\n\nimport lodashHas from 'lodash.has';\nimport lodashSet from 'lodash.set';\nimport classnames from 'classnames';\nimport { Table, Badge, Tooltip } from 'antd';\n// import useQuery from '@/hooks/useQuery';\nimport useLifeReducers from '../../redux';\nimport useReducers from './redux';\n\nimport styles from './Detail.module.scss';\n\nexport default React.memo(function Detail() {\n  const [state] = useReducers();\n  const [lifeState] = useLifeReducers();\n\n  const dataSource = useMemo(() => {\n    if (!state.cashData?.length) {\n      return [];\n    }\n    const policyYears = state.cashData.reduce((result, next) => {\n      return [...result, ...next.map(item => item.policyYear)];\n    }, []);\n\n    if (!policyYears.length) {\n      return [];\n    }\n\n    const maxPolicyYear = Math.max(...policyYears);\n\n    const allRates = state.cashData.reduce((result, next) => {\n      return [...result, ...next];\n    }, []);\n\n    const multipleMap = {};\n\n    return new Array(maxPolicyYear)\n      .fill(1)\n      .map((item, index) => {\n        return index + 1;\n      })\n      .map(policyYear => {\n        const values = lifeState.contrastProducts.reduce((result, next) => {\n          const maleRow = allRates.find(\n            item =>\n              item.policyYear === policyYear &&\n              item.productId === next.productId &&\n              item.sex === 'M'\n          );\n          const femaleRow = allRates.find(\n            item =>\n              item.policyYear === policyYear &&\n              item.productId === next.productId &&\n              item.sex === 'F'\n          );\n\n          if (!maleRow && !femaleRow) {\n            return result;\n          }\n\n          const rowProductDetail = {\n            male: maleRow?.csv,\n            female: femaleRow?.csv,\n          };\n\n          if (\n            !lodashHas(multipleMap, [next.productId, 'male', maleRow?.multiple]) &&\n            maleRow?.multiple\n          ) {\n            lodashSet(multipleMap, [next.productId, 'male', maleRow?.multiple], maleRow.multiple);\n            rowProductDetail.maleMultiple = maleRow.multiple;\n          }\n\n          if (\n            !lodashHas(multipleMap, [next.productId, 'female', femaleRow?.multiple]) &&\n            femaleRow?.multiple\n          ) {\n            lodashSet(\n              multipleMap,\n              [next.productId, 'female', femaleRow?.multiple],\n              femaleRow.multiple\n            );\n            rowProductDetail.femaleMultiple = femaleRow.multiple;\n          }\n          // if (maleRow || femaleRow) {\n          //   return {\n          //     ...result,\n          //     [`product-${next.productId}`]: {\n          //       male: maleRow?.csv,\n          //       female: femaleRow?.csv,\n          //       maleMultiple: maleRow?.multiple,\n          //       femaleMultiple: femaleRow?.multiple,\n          //     },\n          //   };\n          // }\n\n          return {\n            ...result,\n            [`product-${next.productId}`]: rowProductDetail,\n          };\n        }, {});\n\n        return {\n          policyYear,\n          ...values,\n        };\n      });\n  }, [state.cashData, lifeState.contrastProducts]);\n\n  const columns = useMemo(() => {\n    if (!lifeState.contrastProducts?.length) {\n      return [];\n    }\n\n    const detailCols = lifeState.contrastProducts.reduce(\n      (result, next) => {\n        const dataIndex = `product-${next.productId}`;\n        const hasData = dataSource.some(row => row[dataIndex] !== undefined);\n\n        const hasRate = lifeState.contrastCashAndIRROptions.hasProductIds?.includes(next.productId);\n\n        let title = (\n          <div className={styles.splitCol}>\n            <div>男性</div>\n            <div>女性</div>\n          </div>\n        );\n\n        if (!hasRate) {\n          title = <div className={styles.noData}>暂无现金价值数据</div>;\n        } else if (!hasData) {\n          title = (\n            <div className={styles.noData}>\n              该产品不支持【{' '}\n              {`${state.searchParams?.premTermLabel}/${state.searchParams.age}岁投保`} 】\n            </div>\n          );\n        }\n\n        const col =\n          hasData || !state.searchParams.premTerm\n            ? {\n                title,\n                dataIndex,\n                align: 'left',\n                width: 300,\n                render(val, row) {\n                  const maxPrem = Object.keys(row).reduce(\n                    (max, key) => {\n                      if (key.startsWith('product')) {\n                        return {\n                          male: Math.max(row[key]?.male || 0, max.male),\n                          female: Math.max(row[key]?.female || 0, max.female),\n                        };\n                      }\n\n                      return max;\n                    },\n                    { male: 0, female: 0 }\n                  );\n\n                  return (\n                    <div className={styles.splitCol}>\n                      <div>\n                        <span\n                          className={classnames({\n                            [styles.max]: val?.male === maxPrem.male,\n                          })}\n                        >\n                          {val?.male || ''}\n                        </span>\n\n                        {val?.maleMultiple > 0 && (\n                          <Tooltip placement=\"bottom\" title={`${val.maleMultiple}倍保费`}>\n                            <Badge count={`x${val.maleMultiple}`} color=\"#faad14\" />\n                          </Tooltip>\n                        )}\n                      </div>\n                      <div>\n                        <span\n                          className={classnames({\n                            [styles.max]: val?.female === maxPrem.female,\n                          })}\n                        >\n                          {val?.female || ''}\n                        </span>\n\n                        {val?.femaleMultiple > 0 && (\n                          <Tooltip placement=\"bottom\" title={`${val.femaleMultiple}倍保费`}>\n                            <Badge count={`x${val.femaleMultiple}`} color=\"#faad14\" />\n                          </Tooltip>\n                        )}\n                      </div>\n                    </div>\n                  );\n                },\n              }\n            : {\n                title,\n                dataIndex,\n                width: 300,\n              };\n\n        return [...result, col];\n      },\n      [\n        {\n          title: '保单年度',\n          dataIndex: 'policyYear',\n          width: 340,\n          align: 'center',\n        },\n      ]\n    );\n\n    detailCols.push({\n      dataIndex: 'none',\n      title: '',\n    });\n\n    return detailCols;\n  }, [state.contrastProducts, dataSource, state.searchParams, lifeState.contrastCashAndIRROptions]);\n\n  return (\n    <div className={styles.container}>\n      <Table\n        rowKey=\"policyYear\"\n        size=\"small\"\n        tableLayout=\"fixed\"\n        bordered={false}\n        columns={columns}\n        dataSource={dataSource}\n        pagination={false}\n      />\n    </div>\n  );\n});\n","import * as fRedux from '@/utils/redux';\n\nimport decryptString from '@/utils/decrypt';\n\nconst { createActions } = fRedux.default;\n\nconst namespace = 'IncrementalWholeLifeInsuranceIRR';\nconst initState = {\n  searchParams: {},\n  selectedPerm: {},\n};\n\nconst { useReducers } = createActions(namespace, initState, {\n  updateSearchParams: [searchParams => searchParams, (state, searchParams) => ({ searchParams })],\n  updateSelectedPermTerm: [\n    selectedPerm => selectedPerm,\n    (state, selectedPerm) => ({ selectedPerm }),\n  ],\n  queryRateByIds: [\n    (params, http, dispatch, getState) => {\n      const { user } = getState();\n\n      return http.get(`/api/incrementalWholeLife/queryIRRValue`, { params }).then(res => {\n        return decryptString(user.salt, res.result);\n      });\n    },\n    (state, response) => ({ records: response }),\n  ],\n  queryRateByIdsAndPermTerm: [\n    (params, http, dispatch, getState) => {\n      const { user } = getState();\n\n      return http\n        .get(`/api/incrementalWholeLife/queryRateByIdsAndPermTerm`, { params })\n        .then(res => {\n          return decryptString(user.salt, res.result);\n        });\n    },\n    (state, response) => ({ contrastRateProducts: response }),\n  ],\n});\n\nexport default useReducers;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"UdJKj\"};","import React, { useMemo, useRef, useEffect } from 'react';\n\nimport useScript from '@/hooks/useScript';\nimport useQuery from '@/hooks/useQuery';\n\nimport useLifeReducers from '../../redux';\nimport useReducers from './redux';\nimport styles from './Chart.module.scss';\n\nexport default React.memo(function Chart() {\n  const [state] = useReducers();\n  const [lifeState] = useLifeReducers();\n  const echarts = useScript('https://s.futurebaobei.com/static/js/echarts.min.js', 'echarts');\n  const chartRef = useRef();\n  const chartDom = useRef();\n  const query = useQuery();\n  const activeLine = useRef();\n\n  const xAxis = useMemo(() => {\n    if (!state.records?.length) {\n      return [];\n    }\n\n    const policyYears = state.records.reduce((result, next) => {\n      return [...result, ...next.map(item => item.policyYear)];\n    }, []);\n\n    if (!policyYears.length) {\n      return [];\n    }\n\n    const maxPolicyYear = Math.max(...policyYears);\n\n    return new Array(maxPolicyYear + 1).fill(1).map((item, index) => {\n      return index + 1;\n    });\n  }, [state.records]);\n\n  const series = useMemo(() => {\n    if (!xAxis?.length) {\n      return [];\n    }\n\n    const allRates = state.records.reduce((result, next) => {\n      return [...result, ...next];\n    }, []);\n\n    const ys = lifeState.contrastProducts\n      .reduce((result, product) => {\n        return [\n          ...result,\n          {\n            name: `${product.productName}-男性`,\n            sex: 'M',\n            productId: product.productId,\n          },\n          {\n            name: `${product.productName}-女性`,\n            sex: 'F',\n            productId: product.productId,\n          },\n        ];\n      }, [])\n      .map(y => {\n        return {\n          ...y,\n          type: 'line',\n          soomth: true,\n          data: xAxis.map(x => {\n            const finded = allRates.find(\n              item => item.productId === y.productId && item.sex === y.sex && item.policyYear === x\n            );\n\n            if (!finded || finded.irr < 0) {\n              return [x, '-'];\n            }\n\n            return [x, +(finded.irr * 100).toFixed(2)];\n            // return finded?.irr < 0 ? '-' : finded?.irr;\n          }),\n        };\n      });\n\n    return ys;\n  }, [xAxis, state.records, lifeState.contrastProducts]);\n\n  useEffect(() => {\n    if (!echarts || !xAxis?.length || !series?.length) {\n      return;\n    }\n\n    if (!chartRef.current) {\n      chartRef.current = echarts.init(chartDom.current);\n      chartRef.current.on('mouseover', e => {\n        activeLine.current = e.seriesName;\n\n        chartRef.current.setOption({\n          series: {\n            name: e.seriesName,\n            lineStyle: {\n              width: 4,\n              opacity: 1,\n            },\n          },\n        });\n      });\n\n      chartRef.current.on('mouseout', e => {\n        activeLine.current = '';\n        chartRef.current.setOption({\n          series: {\n            name: e.seriesName,\n            lineStyle: {\n              width: 2,\n              opacity: 0.5,\n            },\n          },\n        });\n      });\n    }\n\n    const option = {\n      grid: {\n        top: query.products.split(',').length > 6 ? '30%' : '20%',\n        right: '6%',\n        bottom: '20',\n        left: '6%',\n        borderWidth: 10,\n        containLabel: true,\n      },\n      legend: {\n        show: true,\n        right: '6%',\n        left: '13%',\n        top: 0,\n        color: '#666',\n        fontSize: 16,\n        // data: legend,\n      },\n      tooltip: {\n        trigger: 'axis',\n        formatter(params) {\n          const parent = document.createElement('div');\n\n          const index = document.createElement('p');\n          index.innerHTML = params[0].axisValue;\n          parent.appendChild(index);\n\n          params.map(item => {\n            const child = document.createElement('div');\n            child.style.display = 'flex';\n            child.style.alignItems = 'center';\n\n            const marker = document.createElement('span');\n            marker.innerHTML = item.marker;\n\n            const name = document.createElement('span');\n            name.innerHTML = item.seriesName;\n            name.style.flex = '1';\n            name.style.marginRight = '16px';\n\n            const value = document.createElement('span');\n            if (typeof item.data[1] === 'number') {\n              value.innerHTML = `${item.data[1]}%`;\n            } else {\n              value.innerHTML = '-';\n            }\n            value.style.textAlign = 'right';\n            value.style.fontFamily = 'Arial';\n\n            if (item.seriesName === activeLine.current) {\n              value.style.color = item.color;\n              name.style.color = item.color;\n            } else {\n              value.style.color = activeLine.current ? '#999' : '#333';\n              name.style.color = activeLine.current ? '#999' : '#333';\n            }\n\n            child.appendChild(marker.firstChild);\n            child.appendChild(name);\n            child.appendChild(value);\n\n            parent.appendChild(child);\n          });\n\n          return parent;\n        },\n      },\n      axisPointer: {\n        link: { xAxisIndex: 'all' },\n      },\n      yAxis: {\n        type: 'value',\n        splitNumber: 5,\n        axisTick: false,\n        axisLine: false,\n        // min(value) {\n        //   return Number.parseInt(value.min / 100, 10) * 100;\n        // },\n        name: 'IRR',\n        nameGap: 30,\n        nameTextStyle: {\n          padding: [0, 70, 0, 0],\n          fontSize: 14,\n          color: '#333',\n        },\n        axisLabel: {\n          color: '#666',\n          fontSize: 16,\n          formatter(v) {\n            return `${v}%`;\n          },\n        },\n      },\n      xAxis: {\n        type: 'value',\n        axisTick: false,\n        name: '保单年度',\n        interval: 1,\n        max: xAxis[xAxis.length - 1],\n        nameLocation: 'start',\n        nameGap: 0,\n        splitLine: false,\n        nameTextStyle: {\n          fontSize: 14,\n          color: '#333',\n          align: 'right',\n          verticalAlign: 'top',\n          /**\n           * the top padding will shift the name down so that it does not overlap with the axis-labels\n           * t-l-b-r\n           */\n          padding: [-6, 40, 0, 0],\n        },\n        axisLabel: {\n          color: '#666',\n          fontSize: 16,\n          formatter(value) {\n            if (value === 1 || (value % 5 === 0 && value !== 0)) {\n              return value;\n            }\n\n            return '';\n          },\n        },\n        data: xAxis,\n      },\n      series,\n    };\n\n    chartRef.current.setOption(option);\n  }, [echarts, xAxis, series]);\n\n  return (\n    <div className={styles.container}>\n      <div style={{ height: '100%' }} ref={chartDom} />\n    </div>\n  );\n});\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"tM5LT\",\"label\":\"TFIWH\"};","import React, { useMemo, useEffect, useCallback } from 'react';\n\nimport { Radio, Select } from 'antd';\nimport useQuery from '@/hooks/useQuery';\n\nimport useReducers from './redux';\nimport useLifeReducers from '../../redux';\n\nimport styles from './Search.module.scss';\n\nexport default React.memo(function Search() {\n  const [lifeState, lifeActions] = useLifeReducers();\n  const [state, actions] = useReducers();\n  const query = useQuery();\n\n  useEffect(() => {\n    if (state.searchParams?.premTerm) {\n      lifeActions.setContrastLoading(true);\n      actions\n        .queryRateByIds({\n          ...state.searchParams,\n          ids: query.products,\n        })\n        .then(() => {\n          lifeActions.setContrastLoading(false);\n        })\n        .catch(() => {\n          lifeActions.setContrastLoading(false);\n        });\n    }\n  }, [state.searchParams]);\n\n  useEffect(() => {\n    if (!state.searchParams?.premTerm && lifeState.contrastCashAndIRROptions?.items?.length) {\n      const [first] = lifeState.contrastCashAndIRROptions.items;\n      actions.updateSelectedPermTerm(first);\n      actions.updateSearchParams({\n        age: first.ages[0],\n        premTerm: first.value,\n        premTermLabel: first.label,\n      });\n    }\n  }, [lifeState.contrastCashAndIRROptions?.premTerm, state.searchParams]);\n\n  const options = useMemo(() => {\n    return lifeState.contrastCashAndIRROptions.items || [];\n  }, [lifeState.contrastCashAndIRROptions?.items]);\n\n  const ageOptions = useMemo(() => {\n    if (!state.selectedPerm?.ages) {\n      return [];\n    }\n\n    return state.selectedPerm.ages.map(value => {\n      return {\n        label: value,\n        value,\n      };\n    });\n  }, [state.selectedPerm?.ages]);\n\n  const premTermChange = useCallback(\n    e => {\n      const { value } = e.target;\n\n      const selected = options.find(item => item.value === value);\n      const params = {\n        premTerm: value,\n        premTermLabel: selected.label,\n        age: state.searchParams?.age,\n      };\n      actions.updateSelectedPermTerm(selected);\n\n      if (!selected.ages.includes(state.searchParams?.age)) {\n        [params.age] = selected.ages;\n      }\n\n      actions.updateSearchParams(params);\n    },\n    [state.searchParams?.age, ageOptions, options]\n  );\n\n  const ageChange = useCallback(\n    value => {\n      const params = {\n        ...(state.searchParams || {}),\n        age: value,\n      };\n\n      actions.updateSearchParams(params);\n    },\n    [state.searchParams?.premTerm]\n  );\n\n  return (\n    <div className={styles.container}>\n      <div className={styles.label}>保险期间:</div>\n      <Radio.Group\n        value=\"终身\"\n        optionType=\"button\"\n        buttonStyle=\"solid\"\n        options={[{ label: '终身', value: '终身' }]}\n      />\n      <div className={styles.label}>缴费期限:</div>\n      <Radio.Group\n        onChange={premTermChange}\n        value={state.searchParams?.premTerm}\n        optionType=\"button\"\n        buttonStyle=\"solid\"\n        options={options}\n      />\n      <div className={styles.label}>投保年龄:</div>\n      <Select\n        onChange={ageChange}\n        value={state.searchParams.age}\n        options={ageOptions}\n        style={{ width: 120 }}\n      />\n    </div>\n  );\n});\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"izV0v\",\"split-col\":\"Z2SmO\",\"splitCol\":\"Z2SmO\",\"no-data\":\"pEAAf\",\"noData\":\"pEAAf\",\"max\":\"PwKzZ\"};","import React, { useMemo } from 'react';\n\nimport classnames from 'classnames';\nimport { Table } from 'antd';\nimport useLifeReducers from '../../redux';\nimport useReducers from './redux';\n\nimport styles from './Detail.module.scss';\n\nfunction formatPercent(v) {\n  if (typeof v === 'number') {\n    return `${(v * 100).toFixed(2)}%`;\n  }\n\n  return '-';\n}\n\nexport default React.memo(function Detail() {\n  const [state] = useReducers();\n  const [lifeState] = useLifeReducers();\n\n  const dataSource = useMemo(() => {\n    if (!state.records?.length) {\n      return [];\n    }\n    const policyYears = state.records.reduce((result, next) => {\n      return [...result, ...next.map(item => item.policyYear)];\n    }, []);\n\n    if (!policyYears.length) {\n      return [];\n    }\n\n    const maxPolicyYear = Math.max(...policyYears);\n\n    const allRates = state.records.reduce((result, next) => {\n      return [...result, ...next];\n    }, []);\n\n    return new Array(maxPolicyYear)\n      .fill(1)\n      .map((item, index) => {\n        return index + 1;\n      })\n      .map(policyYear => {\n        const values = lifeState.contrastProducts.reduce((result, next) => {\n          const maleRow = allRates.find(\n            item =>\n              item.policyYear === policyYear &&\n              item.productId === next.productId &&\n              item.sex === 'M'\n          );\n          const femaleRow = allRates.find(\n            item =>\n              item.policyYear === policyYear &&\n              item.productId === next.productId &&\n              item.sex === 'F'\n          );\n\n          if (maleRow || femaleRow) {\n            return {\n              ...result,\n              [`product-${next.productId}`]: {\n                male: maleRow?.irr < 0 ? '-' : maleRow?.irr,\n                female: femaleRow?.irr < 0 ? '-' : femaleRow?.irr,\n              },\n            };\n          }\n\n          return result;\n        }, {});\n\n        return {\n          policyYear,\n          ...values,\n        };\n      });\n  }, [state.records, lifeState.contrastProducts]);\n\n  const columns = useMemo(() => {\n    if (!lifeState.contrastProducts?.length) {\n      return [];\n    }\n\n    const detailCols = lifeState.contrastProducts.reduce(\n      (result, next) => {\n        const dataIndex = `product-${next.productId}`;\n        const hasData = dataSource.some(row => row[dataIndex] !== undefined);\n\n        const hasRate = lifeState.contrastCashAndIRROptions.hasProductIds?.includes(next.productId);\n\n        let title = (\n          <div className={styles.splitCol}>\n            <div>男性</div>\n            <div>女性</div>\n          </div>\n        );\n\n        if (!hasRate) {\n          title = <div className={styles.noData}>暂无IRR数据</div>;\n        } else if (!hasData) {\n          title = (\n            <div className={styles.noData}>\n              该产品不支持【{' '}\n              {`${state.searchParams?.premTermLabel}/${state.searchParams.age}岁投保`} 】\n            </div>\n          );\n        }\n\n        const col =\n          hasData || !state.searchParams.premTerm\n            ? {\n                title,\n                dataIndex,\n                align: 'left',\n                width: 300,\n                render(val, row) {\n                  const maxPrem = Object.keys(row).reduce(\n                    (max, key) => {\n                      if (key.startsWith('product')) {\n                        return {\n                          male: Math.max(row[key]?.male || 0, max.male),\n                          female: Math.max(row[key]?.female || 0, max.female),\n                        };\n                      }\n\n                      return max;\n                    },\n                    { male: 0, female: 0 }\n                  );\n\n                  return (\n                    <div className={styles.splitCol}>\n                      <div>\n                        <span\n                          className={classnames({\n                            [styles.max]: val?.male === maxPrem.male,\n                          })}\n                        >\n                          {formatPercent(val?.male)}\n                        </span>\n                      </div>\n                      <div>\n                        <span\n                          className={classnames({\n                            [styles.max]: val?.female === maxPrem.female,\n                          })}\n                        >\n                          {formatPercent(val?.female)}\n                        </span>\n                      </div>\n                      {/* <span\n                        className={classnames({\n                          [styles.max]: val?.female === maxPrem.female,\n                        })}\n                      >\n                        {val?.female || ''}\n                      </span> */}\n                    </div>\n                  );\n                },\n              }\n            : {\n                title,\n                dataIndex,\n                width: 300,\n              };\n\n        return [...result, col];\n      },\n      [\n        {\n          title: '保单年度',\n          dataIndex: 'policyYear',\n          width: 340,\n          align: 'center',\n        },\n      ]\n    );\n\n    detailCols.push({\n      dataIndex: 'none',\n      title: '',\n    });\n\n    return detailCols;\n  }, [state.contrastProducts, dataSource, state.searchParams, lifeState.contrastCashAndIRROptions]);\n\n  return (\n    <div className={styles.container}>\n      <Table\n        rowKey=\"policyYear\"\n        size=\"small\"\n        tableLayout=\"fixed\"\n        bordered={false}\n        columns={columns}\n        dataSource={dataSource}\n        pagination={false}\n      />\n    </div>\n  );\n});\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"nD0Ps\",\"title\":\"UOGst\",\"tabs\":\"wCC+I\",\"tab\":\"fuWdz\",\"active\":\"j17SH\",\"arrow\":\"VmhYE\",\"flash\":\"ZzVpL\"};","import React, { useState, useEffect, useMemo, useCallback } from 'react';\n\nimport classnames from 'classnames';\nimport { Button, message } from 'antd';\nimport Loading from '@/components/Loading';\nimport useQuery from '@/hooks/useQuery';\nimport PageLayout from '@/components/PageLayout';\nimport ContrastPanel from '@/components/ContrastPanel';\nimport { InfoCircleOutlined, DoubleRightOutlined } from '@ant-design/icons';\nimport { percentFromFloatRender } from '@/utils/cellRender';\nimport openWindow from '@/utils/openWindow';\nimport useRate from './Rate';\nimport useCash from './Cash';\nimport useIRR from './IRR';\n\nimport useReducers from '../redux';\n\nimport styles from './Contrast.module.scss';\n\nexport default React.memo(function Contrast() {\n  const [state, actions] = useReducers();\n  const [showArrow, setShowArrow] = useState(false);\n  const query = useQuery();\n  const rateComponent = useRate();\n  const cashComponent = useCash();\n  const irrComponent = useIRR();\n\n  useEffect(() => {\n    if (query.products.length >= 4) {\n      setTimeout(() => {\n        setShowArrow(true);\n      }, 1000);\n\n      setTimeout(() => {\n        setShowArrow(false);\n      }, 5000);\n    }\n  }, []);\n\n  useEffect(() => {\n    actions.setContrastLoading(true);\n    Promise.all([\n      actions.queryByIds({ ids: query.products }),\n      actions.queryRateByIds({\n        ids: query.products,\n      }),\n      actions.queryPermTermForCashAndIRR({\n        ids: query.products,\n      }),\n    ]).then(() => {\n      actions.setContrastLoading(false);\n    });\n  }, []);\n\n  const viewReport = useCallback(async item => {\n    const params = await actions.getReportToken({ id: item.productId, type: 'PRODUCT' });\n    openWindow(`/report-viewer?${params}`);\n  }, []);\n\n  const getFields = useCallback((rows, label, field, render = v => v) => {\n    if (!rows?.length) {\n      return [];\n    }\n\n    return rows.reduce(\n      (result, row) => {\n        return {\n          ...result,\n          [`product-${row.id}`]: render(row[field], row),\n        };\n      },\n      { label }\n    );\n  }, []);\n\n  const handleTabChange = useCallback(\n    tab => {\n      if (!state.permTerms?.length && tab === 'prem') {\n        message.info('当前无费率数据');\n        return;\n      }\n\n      if (\n        !state.contrastCashAndIRROptions?.hasProductIds?.length &&\n        ['cash', 'irr'].includes(tab)\n      ) {\n        message.info('当前无数据');\n        return;\n      }\n      actions.setSelectTab(tab);\n    },\n    [state.permTerms, state.contrastCashAndIRROptions]\n  );\n\n  const columns = useMemo(() => {\n    const productCols = state.contrastProducts?.reduce(\n      (cols, row, index) => {\n        return [\n          ...cols,\n          {\n            dataIndex: `product-${row.id}`,\n            title: row.productName,\n            width: 300,\n            onCell(record) {\n              if (record.group) {\n                if (index < state.contrastProducts.length - 1) {\n                  return { colSpan: 0 };\n                }\n\n                return { colSpan: 1 };\n              }\n\n              if (record.render) {\n                if (index < state.contrastProducts.length - 1) {\n                  return { colSpan: 0 };\n                }\n\n                return { colSpan: record.fixed ? 1 : state.contrastProducts.length + 2 };\n              }\n\n              return {};\n            },\n            render: (value, record) => {\n              if (record.render) {\n                return record.render();\n              }\n\n              if (record.group) {\n                return (\n                  <div className={styles.title}>\n                    {record.group}\n                    {!!record.subGroup && (\n                      <small>\n                        <InfoCircleOutlined />\n                        {record.subGroup}\n                      </small>\n                    )}\n                  </div>\n                );\n              }\n\n              return value;\n            },\n          },\n        ];\n      },\n      [\n        {\n          dataIndex: 'label',\n          width: 340,\n          title: (\n            <div className={styles.tabs}>\n              <div\n                onClick={() => handleTabChange('product')}\n                className={classnames(styles.tab, {\n                  [styles.active]: state.selectTab === 'product',\n                })}\n              >\n                产品信息\n              </div>\n              <div\n                onClick={() => handleTabChange('prem')}\n                className={classnames(styles.tab, { [styles.active]: state.selectTab === 'prem' })}\n              >\n                费率表\n              </div>\n              <div\n                onClick={() => handleTabChange('cash')}\n                className={classnames(styles.tab, { [styles.active]: state.selectTab === 'cash' })}\n              >\n                现金价值\n              </div>\n              <div\n                onClick={() => handleTabChange('irr')}\n                className={classnames(styles.tab, { [styles.active]: state.selectTab === 'irr' })}\n              >\n                IRR\n              </div>\n            </div>\n          ),\n          fixed: 'left',\n          onCell(row) {\n            if (row.render || row.group) {\n              return {\n                colSpan: 0,\n              };\n            }\n\n            return {};\n          },\n        },\n      ]\n    );\n\n    if (productCols) {\n      productCols.push({\n        dataIndex: 'none',\n        title: '',\n        onCell(row) {\n          if (row.render || row.group) {\n            return {\n              colSpan: 0,\n            };\n          }\n\n          return {};\n        },\n      });\n    }\n\n    return productCols || [];\n  }, [state.contrastProducts, state.selectTab, handleTabChange]);\n\n  const productInfoComponent = useMemo(() => {\n    if (state.selectTab !== 'product') {\n      return [];\n    }\n\n    return [\n      { group: '基本信息' },\n      getFields(state.contrastProducts, '公司名称', 'companyName'),\n      getFields(state.contrastProducts, '产品备案号', 'cnCode'),\n      getFields(state.contrastProducts, '报备年份', 'saleYear'),\n      getFields(state.contrastProducts, '产品类型', 'productCategory'),\n      getFields(state.contrastProducts, '其他产品属性', 'tag'),\n      getFields(state.contrastProducts, '承保方式', 'underwrite'),\n      getFields(state.contrastProducts, '销售状态', 'saleStatus'),\n      getFields(state.contrastProducts, '条款链接', 'productId', (v, row) => {\n        return (\n          <Button style={{ paddingLeft: 0 }} onClick={() => viewReport(row)} type=\"link\">\n            看条款\n          </Button>\n        );\n      }),\n\n      { group: '投保信息' },\n      // getFields(state.contrastProducts, '保险期间', 'policyTerm'),\n      getFields(state.contrastProducts, '最小投保年龄', 'minEntryAge'),\n      getFields(state.contrastProducts, '最大投保年龄', 'maxEntryAge'),\n\n      { group: '主要保险责任' },\n      getFields(state.contrastProducts, '有效保额增长率', 'apeGrowthRate', percentFromFloatRender),\n      getFields(state.contrastProducts, '主要责任', 'primaryCoverage'),\n      getFields(state.contrastProducts, '主险豁免责任', 'waiverPremiumBenefit'),\n      getFields(state.contrastProducts, '其他责任', 'otherResponsibility'),\n\n      { group: '其他标签' },\n      getFields(state.contrastProducts, '是否区分交费期内外给付', 'discPayInsideOrOutside'),\n      getFields(state.contrastProducts, '是否连生保险', 'jointLifeInsurance'),\n      getFields(state.contrastProducts, '连生保险给付方式', 'settlementOptions'),\n      getFields(state.contrastProducts, '是否支持减保', 'surrender'),\n      getFields(state.contrastProducts, '是否支持加保', 'policyRider'),\n      getFields(state.contrastProducts, '是否支持年金转换', 'annuityConversion'),\n    ];\n  }, [state.contrastProducts, viewReport, state.selectTab, state.selectedPerm]);\n\n  const dataSource = useMemo(() => {\n    if (!state.contrastProducts?.length) {\n      return [];\n    }\n\n    return [...productInfoComponent, ...rateComponent, ...cashComponent, ...irrComponent];\n  }, [productInfoComponent, cashComponent, rateComponent, irrComponent]);\n\n  return (\n    <PageLayout className={styles.container}>\n      {state.contrastLoading && <Loading />}\n      <ContrastPanel columns={columns} dataSource={dataSource} />\n\n      {showArrow && (\n        <div className={styles.arrow}>\n          <DoubleRightOutlined />\n        </div>\n      )}\n    </PageLayout>\n  );\n});\n","import React, { useMemo } from 'react';\n\nimport Chart from './Chart';\nimport Search from './Search';\nimport Detail from './Detail';\n\nimport useReducers from '../../redux';\n\nexport default function useRate() {\n  const [state] = useReducers();\n\n  return useMemo(() => {\n    if (state.selectTab !== 'prem') {\n      return [];\n    }\n\n    const permLabel = state.selectedPermLabel;\n    return [\n      { group: '条件设定', key: 'rate-search-title' },\n      {\n        render: () => {\n          return <Search />;\n        },\n        key: 'rate-serach',\n        fixed: true,\n      },\n\n      {\n        group: '曲线图',\n        key: 'rate-chart-title',\n        subGroup: `费率曲线以每1000元年交保费对应的基本保险金额展示（缴费期限：${permLabel}）`,\n      },\n      {\n        render: () => {\n          return <Chart />;\n        },\n        key: 'rate-chart',\n        fixed: true,\n      },\n\n      {\n        group: '费率表详情',\n        key: 'rate-detail-title',\n        subGroup: `费率表以每1000元年交保费对应的基本保险金额展示（缴费期限：${permLabel}）`,\n      },\n      {\n        render: () => {\n          return <Detail />;\n        },\n        key: 'rate-detail',\n      },\n    ];\n  }, [state.selectedPerm, state.selectTab]);\n}\n","import React, { useMemo } from 'react';\n\nimport Chart from './Chart';\nimport Search from './Search';\nimport Detail from './Detail';\n\nimport useLifeReducers from '../../redux';\nimport useReducers from './redux';\n\nexport default function useRate() {\n  const [lifeState] = useLifeReducers();\n  const [state] = useReducers();\n\n  return useMemo(() => {\n    if (lifeState.selectTab !== 'cash') {\n      return [];\n    }\n\n    const permLabel = state.searchParams?.premTermLabel;\n\n    return [\n      { group: '条件设定', key: 'cash-search-title' },\n      {\n        render: () => {\n          return <Search />;\n        },\n        key: 'cash-search',\n        fixed: true,\n      },\n\n      {\n        group: '曲线图',\n        key: 'cash-chart-title',\n        subGroup: `现价曲线以每1000元年交保费对应的现金价值展示（${permLabel}）`,\n      },\n      {\n        render: () => {\n          return <Chart />;\n        },\n        key: 'cash-chart',\n        fixed: true,\n      },\n\n      {\n        group: '现金价值表详情',\n        key: 'cash-detail-title',\n        subGroup: `现价表以每1000元年交保费对应的现金价值展示（${permLabel}）`,\n      },\n      {\n        render: () => {\n          return <Detail />;\n        },\n        key: 'cash-detail',\n      },\n    ];\n  }, [state.searchParams, lifeState.selectTab]);\n}\n","import React, { useMemo } from 'react';\n\nimport Chart from './Chart';\nimport Search from './Search';\nimport Detail from './Detail';\n\nimport useReducers from '../../redux';\n\nexport default function useRate() {\n  const [state] = useReducers();\n\n  return useMemo(() => {\n    if (state.selectTab !== 'irr') {\n      return [];\n    }\n\n    return [\n      { group: '条件设定', key: 'irr-search-title' },\n      {\n        render: () => {\n          return <Search />;\n        },\n        key: 'irr-search',\n        fixed: true,\n      },\n\n      {\n        group: '曲线图',\n        key: 'irr-chart-title',\n      },\n      {\n        render: () => {\n          return <Chart />;\n        },\n        key: 'irr-chart',\n        fixed: true,\n      },\n\n      {\n        group: 'IRR详情',\n        key: 'irr-detail-title',\n      },\n      {\n        key: 'irr-detail',\n        render: () => {\n          return <Detail />;\n        },\n      },\n    ];\n  }, [state.selectedPerm, state.selectTab]);\n}\n","import Query from './Query';\nimport Contrast from './Contrast';\n// import ProductRateContrast from './ProductRateContrast';\n\nexport default [\n  {\n    path: '/query',\n    component: Query,\n    exact: true,\n    title: '增额终身寿险',\n  },\n  {\n    path: '/contrast',\n    component: Contrast,\n    exact: true,\n    title: '增额终身寿险对比',\n  },\n];\n","function toOptions(arr) {\n  return arr.map(item => ({ value: item, label: item }));\n}\n\nexport const saleStatusOptions = toOptions(['在售', '停售', '停用', '未售']);\n","import * as fRedux from '@/utils/redux';\n\nimport decryptString from '@/utils/decrypt';\n\nconst { createActions } = fRedux.default;\n\nconst namespace = 'DividendRealizationRate';\nconst initState = {\n  queryParams: {},\n  selectedTag: '现金分红',\n};\n\nconst { useReducers } = createActions(namespace, initState, {\n  queryByIds: [\n    (params, http, dispatch, getState) => {\n      const { user } = getState();\n\n      return http.get(`/api/productPension/queryByIds`, { params }).then(res => {\n        return decryptString(user.salt, res.result);\n      });\n    },\n    (state, response) => ({ contrastProducts: response }),\n  ],\n  query: [\n    (params, http, dispatch, getState) => {\n      const { user } = getState();\n\n      return http.post(`/api/dividend/list`, null, { params }).then(res => {\n        return decryptString(user.salt, res.result);\n      });\n    },\n    (state, response) => ({ pager: response }),\n  ],\n  updateSelectedTag: [selectedTag => selectedTag, (state, selectedTag) => ({ selectedTag })],\n  updateQueryParams: [params => params, (state, params) => ({ queryParams: params })],\n  updateTableParams: [params => params, (state, params) => ({ tableParams: params })],\n  getReportToken: [\n    (params, http, dispatch, getState) => {\n      const { user } = getState();\n\n      return http.get(`/api/product/getToken`, { params }).then(res => {\n        return decryptString(user.salt, res.result);\n      });\n    },\n  ],\n  queryProduct: [\n    (params, http, dispatch, getState) => {\n      const { user } = getState();\n      return http.get(`/api/universal/productNameCats`, { params }).then(res => {\n        return decryptString(user.salt, res.result);\n      });\n    },\n    (state, products) => ({ products: products || [] }),\n  ],\n  updateSelectedProducts: [keys => keys, (state, keys) => ({ selectedProducts: keys })],\n  toggleShowSelected: [() => {}, state => ({ showSelected: !state.showSelected })],\n  setShowSelected: [showSelected => showSelected, (state, showSelected) => ({ showSelected })],\n});\n\nexport default useReducers;\n","import { createI18n } from '@/redux/i18n';\n\nexport default createI18n({\n  en: {\n    看条款: 'View Clause',\n    更多: 'More',\n    备注: 'Remark',\n    现金分红: 'Cash Dividend',\n    保额分红: 'Accrual Dividend',\n    已选中: 'Selected',\n    对比: 'Compare',\n    产品名称: 'Product Name',\n    产品类别: 'Product Category',\n    公司名称: 'Company Name',\n    报备年份: 'Sale Year',\n    销售状态: 'Sales Status',\n    分红年份: 'Dividend Year',\n    现金红利实现率: 'Cash Dividend Realization Rate',\n    增额红利实现率: 'Incremental Dividend Realization Rate',\n    终了红利实现率: 'Final Dividend Realization Rate',\n  },\n  zh: {},\n});\n","import React, { useCallback, useState, useMemo, useEffect } from 'react';\n\nimport { Button } from 'antd';\n\nimport QueryTable from '@/components/QueryTable';\nimport { percentFromFloatRender } from '@/utils/cellRender';\nimport openWindow from '@/utils/openWindow';\n\nimport useReducers from '../../redux';\nimport useI18n from './i18n';\n\nexport default React.memo(function ReportTable() {\n  const [loading, setLoading] = useState();\n  const [state, actions] = useReducers();\n  const [t] = useI18n();\n  const queryParams = useMemo(() => {\n    const params = {\n      ...state.queryParams,\n      tag: state.selectedTag,\n    };\n\n    if (state.selectedTag === '现金分红') {\n      params.incrementalDividendYieldMin = '';\n      params.incrementalDividendYieldMax = '';\n    } else {\n      params.actualDividendYieldMin = '';\n      params.actualDividendYieldMax = '';\n    }\n\n    return params;\n  }, [state.queryParams, state.selectedTag]);\n\n  useEffect(() => {\n    setLoading(true);\n    actions.updateTableParams({});\n    actions\n      .query({\n        pageNo: 1,\n        pageSize: 10,\n        ...queryParams,\n      })\n      .then(() => {\n        setLoading(false);\n      })\n      .catch(() => {\n        setLoading(false);\n      });\n  }, [queryParams]);\n\n  const viewReport = useCallback(async item => {\n    setLoading(true);\n    const params = await actions.getReportToken({ id: item.firstProductId, type: 'PRODUCT' });\n    openWindow(`/report-viewer?${params}`);\n    setLoading(false);\n  }, []);\n\n  const columns = useMemo(() => {\n    const tabCols = [];\n\n    if (state.selectedTag === '现金分红') {\n      tabCols.push({\n        title: t('现金红利实现率'),\n        dataIndex: 'actualDividendYield',\n        width: '11%',\n        render: percentFromFloatRender,\n        sorter: true,\n      });\n      tabCols.push({\n        title: t('终了红利实现率'),\n        dataIndex: 'finalDividendYield',\n        width: '11%',\n        render: percentFromFloatRender,\n        sorter: true,\n      });\n    } else {\n      tabCols.push({\n        title: t('增额红利实现率'),\n        dataIndex: 'incrementalDividendYield',\n        width: '11%',\n        render: percentFromFloatRender,\n        sorter: true,\n      });\n      tabCols.push({\n        title: t('终了红利实现率'),\n        dataIndex: 'finalDividendYield',\n        width: '11%',\n        render: percentFromFloatRender,\n        sorter: true,\n      });\n    }\n\n    return [\n      {\n        title: t('报备年份'),\n        dataIndex: 'saleYear',\n        width: '7%',\n        sorter: true,\n      },\n      {\n        title: t('产品名称'),\n        dataIndex: 'productName',\n        width: '14%',\n        sorter: true,\n      },\n      {\n        title: t('公司名称'),\n        dataIndex: 'companyName',\n        width: '12%',\n        sorter: true,\n      },\n      {\n        title: t('产品类别'),\n        dataIndex: 'productCategory',\n        width: '12%',\n        sorter: true,\n        render(text) {\n          if (text != null && text !== '') {\n            const cats = text.split('-');\n            return cats[cats.length - 1];\n          }\n        },\n      },\n      {\n        title: t('分红年份'),\n        dataIndex: 'dividendYear',\n        width: '7%',\n        sorter: true,\n      },\n      ...tabCols,\n      {\n        title: t('销售状态'),\n        width: '7%',\n        dataIndex: 'saleStatus',\n        sorter: true,\n      },\n      {\n        title: t('备注'),\n        width: '10%',\n        dataIndex: 'remark',\n      },\n      {\n        title: t('更多'),\n        dataIndex: 'action',\n        width: 70,\n        render(_, item) {\n          return (\n            <Button onClick={() => viewReport(item)} type=\"link\">\n              {t('看条款')}\n            </Button>\n          );\n        },\n      },\n    ];\n  }, [viewReport, state.selectedTag]);\n\n  return (\n    <QueryTable\n      loading={loading}\n      columns={columns}\n      tableParams={state.tableParams}\n      pager={state.pager}\n      queryParams={queryParams}\n      selectedProducts={state.selectedProducts}\n      updateSelectedProducts={actions.updateSelectedProducts}\n      updateTableParams={actions.updateTableParams}\n      query={actions.query}\n      showSelected={state.showSelected}\n    />\n  );\n});\n","import { createI18n } from '@/redux/i18n';\n\nexport default createI18n({\n  en: {\n    现金分红: 'Cash Dividend',\n    保额分红: 'Accrual Dividend',\n    已选中: 'Selected',\n    对比: 'Compare',\n    产品名称: 'Product Name',\n    产品类别: 'Product Category',\n    公司名称: 'Company Name',\n    报备年份: 'Sale Year',\n    销售状态: 'Sales Status',\n    分红年份: 'Dividend Year',\n    现金红利实现率: 'Cash Dividend Realization Rate',\n    增额红利实现率: 'Incremental Dividend Realization Rate',\n    终了红利实现率: 'Final Dividend Realization Rate',\n    最低: 'Minimum',\n    最高: 'Maximum',\n  },\n  zh: {},\n});\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"_2BOxw\",\"main\":\"x0KrI\",\"group\":\"FAYN1\",\"icon\":\"qUjqH\",\"tabs\":\"jd8xT\",\"tab\":\"theBK\",\"active\":\"jWOSF\",\"cascader\":\"_9qHQc\"};","import React, { useCallback } from 'react';\n\nimport classnames from 'classnames';\nimport qs from 'qs';\nimport { SwapOutlined } from '@ant-design/icons';\nimport { Form, Input, Select, Button, Cascader, Checkbox } from 'antd';\nimport PageLayout from '@/components/PageLayout';\nimport SearchForm from '@/components/SearchForm';\nimport { useYearOptions, useProductTypeTree } from '@/redux/hooks/enums';\nimport ProductSelect from '@/components/form/ProductSelect';\nimport CompanySelect from '@/components/form/CompanySelect';\nimport openWindow from '@/utils/openWindow';\nimport { saleStatusOptions } from './options';\n\nimport ReportTable from './ReportTable';\n\nimport useReducers from '../redux';\nimport useI18n from './i18n';\n\nimport styles from './Query.module.scss';\n\nfunction toFloat(values, key) {\n  if (values[key] && values[key] / 100) {\n    Object.assign(values, {\n      [key]: values[key] / 100,\n    });\n  }\n}\n\nexport default React.memo(function UniversalRiskRateQuery() {\n  const [form] = Form.useForm();\n  const [state, actions] = useReducers();\n  const yearOptions = useYearOptions(2006);\n  const productTypeTree = useProductTypeTree();\n  const [t] = useI18n();\n  const onSearch = useCallback(\n    async ({ productType, productNames, ...values }) => {\n      const productTypeParams = {};\n\n      if (productType?.length) {\n        productType\n          .map(type => {\n            return type[type.length - 1];\n          })\n          .forEach(type => {\n            const lv = type.match(/_+/g).length;\n\n            switch (lv) {\n              case 1:\n                productTypeParams.productCategoryL1 = productTypeParams.productCategoryL1 || [];\n                productTypeParams.productCategoryL1.push(type);\n                break;\n              case 2:\n                productTypeParams.productCategoryL2 = productTypeParams.productCategoryL2 || [];\n                productTypeParams.productCategoryL2.push(type);\n                break;\n              case 3:\n                productTypeParams.productCategoryL3 = productTypeParams.productCategoryL3 || [];\n                productTypeParams.productCategoryL3.push(type);\n                break;\n              default:\n                productTypeParams.productCategoryL4 = productTypeParams.productCategoryL4 || [];\n                productTypeParams.productCategoryL4.push(type);\n                break;\n            }\n          });\n\n        Object.keys(productTypeParams).map(key => {\n          productTypeParams[key] = productTypeParams[key].join(',');\n        });\n      }\n\n      toFloat(values, 'finalDividendYieldMin');\n      toFloat(values, 'finalDividendYieldMax');\n      toFloat(values, 'actualDividendYieldMin');\n      toFloat(values, 'actualDividendYieldMax');\n      toFloat(values, 'incrementalDividendYieldMin');\n      toFloat(values, 'incrementalDividendYieldMax');\n\n      actions.updateQueryParams({\n        ...values,\n        ...productTypeParams,\n        productNames: productNames?.map(item => encodeURIComponent(item)),\n      });\n    },\n    [state.queryParams]\n  );\n\n  const viewCompare = useCallback(() => {\n    const params = {\n      products: state.selectedProducts?.map(item => item.id),\n      type: state.selectedTag,\n    };\n\n    openWindow(\n      `/product/dividend-realization-rate/contrast?${qs.stringify(params, {\n        arrayFormat: 'comma',\n      })}`\n    );\n  }, [state.selectedProducts]);\n\n  const handleTabChange = useCallback(\n    tab => {\n      actions.setShowSelected(false);\n      actions.updateSelectedProducts([]);\n      actions.updateSelectedTag(tab);\n    },\n    [state.selectedTag]\n  );\n\n  return (\n    <PageLayout>\n      <div className={styles.container}>\n        <SearchForm\n          form={form}\n          title={\n            <div className={styles.tabs}>\n              <div\n                onClick={() => handleTabChange('现金分红')}\n                className={classnames(styles.tab, {\n                  [styles.active]: state.selectedTag === '现金分红',\n                })}\n              >\n                {t('现金分红')}\n              </div>\n              <div\n                onClick={() => handleTabChange('保额分红')}\n                className={classnames(styles.tab, {\n                  [styles.active]: state.selectedTag === '保额分红',\n                })}\n              >\n                {t('保额分红')}\n              </div>\n            </div>\n          }\n          onSearch={onSearch}\n          extraAction={\n            <>\n              <Button\n                onClick={actions.toggleShowSelected}\n                htmlType=\"button\"\n                type=\"default\"\n                icon={<Checkbox checked={state.showSelected} style={{ marginRight: 6 }} />}\n              >\n                {t('已选中')}（{state.selectedProducts?.length || 0}）\n              </Button>\n              <Button\n                onClick={viewCompare}\n                icon={<SwapOutlined className={styles.icon} />}\n                type=\"primary\"\n                disabled={!state.selectedProducts?.length}\n              >\n                {t('对比')}\n              </Button>\n            </>\n          }\n        >\n          <Form.Item label={t('产品名称')} name=\"productNames\">\n            <ProductSelect\n              productType=\"dividend\"\n              allowClear\n              lableOnly\n              maxTagCount={2}\n              showArrow\n              mode=\"tags\"\n              placeholder={t('产品名称')}\n              labelInValue={false}\n            />\n          </Form.Item>\n\n          <Form.Item label={t('产品类别')} name=\"productType\">\n            <Cascader\n              showArrow\n              allowClear\n              placeholder={t('产品类别')}\n              expandTrigger=\"hover\"\n              options={productTypeTree}\n              // onChange={onChange}\n              multiple\n              maxTagCount={2}\n              popupClassName={styles.cascader}\n              // showCheckedStrategy=\"SHOW_PARENT\"\n            />\n          </Form.Item>\n\n          <Form.Item label={t('公司名称')} name=\"companyIds\">\n            <CompanySelect mode=\"multiple\" />\n          </Form.Item>\n\n          <Form.Item label={t('报备年份')} name=\"saleYears\">\n            <Select\n              maxTagCount={2}\n              allowClear\n              showArrow\n              mode=\"multiple\"\n              options={yearOptions}\n              placeholder={t('报备年份')}\n            />\n          </Form.Item>\n\n          <Form.Item label={t('销售状态')} name=\"saleStatus\">\n            <Select\n              mode=\"multiple\"\n              allowClear\n              showArrow\n              options={saleStatusOptions}\n              placeholder={t('销售状态')}\n            />\n          </Form.Item>\n\n          <Form.Item label={t('分红年份')}>\n            <Input.Group className={styles.group}>\n              <Form.Item noStyle name=\"dividendYearMin\">\n                <Input placeholder={t('最低')} />\n              </Form.Item>\n              <span>~</span>\n              <Form.Item noStyle name=\"dividendYearMax\">\n                <Input placeholder={t('最高')} />\n              </Form.Item>\n            </Input.Group>\n          </Form.Item>\n\n          <Form.Item label={t('现金红利实现率')} hidden={state.selectedTag !== '现金分红'}>\n            <Input.Group className={styles.group}>\n              <Form.Item noStyle name=\"actualDividendYieldMin\">\n                <Input\n                  type=\"number\"\n                  step={0.01}\n                  suffix=\"%\"\n                  min={0}\n                  placeholder={t('最低')}\n                  controls={false}\n                />\n              </Form.Item>\n              <span>~</span>\n              <Form.Item noStyle name=\"actualDividendYieldMax\">\n                <Input\n                  type=\"number\"\n                  step={0.01}\n                  suffix=\"%\"\n                  min={0}\n                  placeholder={t('最高')}\n                  controls={false}\n                />\n              </Form.Item>\n            </Input.Group>\n          </Form.Item>\n\n          <Form.Item\n            label={t('增额红利实现率')}\n            name=\"incrementalDividendYield\"\n            hidden={state.selectedTag !== '保额分红'}\n          >\n            <Input.Group className={styles.group}>\n              <Form.Item noStyle name=\"incrementalDividendYieldMin\">\n                <Input\n                  type=\"number\"\n                  step={0.01}\n                  suffix=\"%\"\n                  min={0}\n                  placeholder={t('最低')}\n                  controls={false}\n                />\n              </Form.Item>\n              <span>~</span>\n              <Form.Item noStyle name=\"incrementalDividendYieldMax\">\n                <Input\n                  type=\"number\"\n                  step={0.01}\n                  suffix=\"%\"\n                  min={0}\n                  placeholder={t('最高')}\n                  controls={false}\n                />\n              </Form.Item>\n            </Input.Group>\n          </Form.Item>\n\n          <Form.Item label={t('终了红利实现率')} name=\"finalDividendYield\">\n            <Input.Group className={styles.group}>\n              <Form.Item noStyle name=\"finalDividendYieldMin\">\n                <Input\n                  type=\"number\"\n                  step={0.01}\n                  suffix=\"%\"\n                  min={0}\n                  placeholder={t('最低')}\n                  controls={false}\n                />\n              </Form.Item>\n              <span>~</span>\n              <Form.Item noStyle name=\"finalDividendYieldMax\">\n                <Input\n                  type=\"number\"\n                  step={0.01}\n                  suffix=\"%\"\n                  min={0}\n                  placeholder={t('最高')}\n                  controls={false}\n                />\n              </Form.Item>\n            </Input.Group>\n          </Form.Item>\n        </SearchForm>\n\n        <div className={styles.main}>\n          <ReportTable />\n        </div>\n      </div>\n    </PageLayout>\n  );\n});\n","import React, { useRef, useEffect } from 'react';\n\nimport useScript from '@/hooks/useScript';\n\nexport default React.memo(function Chart({ xAxis, series }) {\n  const echarts = useScript('https://s.futurebaobei.com/static/js/echarts.min.js', 'echarts');\n  const chartRef = useRef();\n  const chartDom = useRef();\n  const activeLine = useRef();\n\n  useEffect(() => {\n    if (!echarts) {\n      return;\n    }\n\n    if (!chartRef.current) {\n      chartRef.current = echarts.init(chartDom.current);\n      chartRef.current.on('mouseover', e => {\n        activeLine.current = e.seriesName;\n\n        chartRef.current.setOption({\n          series: {\n            name: e.seriesName,\n            lineStyle: {\n              width: 4,\n              opacity: 1,\n            },\n          },\n        });\n      });\n\n      chartRef.current.on('mouseout', e => {\n        activeLine.current = '';\n        chartRef.current.setOption({\n          series: {\n            name: e.seriesName,\n            lineStyle: {\n              width: 2,\n              opacity: 0.5,\n            },\n          },\n        });\n      });\n    }\n\n    const option = {\n      grid: {\n        top: '20%',\n        right: '2%',\n        bottom: '10',\n        left: '6%',\n        borderWidth: 10,\n        containLabel: true,\n      },\n      legend: {\n        show: true,\n        right: '2%',\n        top: 0,\n        color: '#666',\n        fontSize: 16,\n        // data: legend,\n      },\n      tooltip: {\n        trigger: 'axis',\n        formatter(params) {\n          const parent = document.createElement('div');\n\n          const index = document.createElement('p');\n          index.innerHTML = params[0].axisValue;\n          parent.appendChild(index);\n\n          params.map(item => {\n            const child = document.createElement('div');\n            child.style.display = 'flex';\n            child.style.alignItems = 'center';\n\n            const marker = document.createElement('span');\n            marker.innerHTML = item.marker;\n\n            const name = document.createElement('span');\n            name.innerHTML = item.seriesName;\n            name.style.flex = '1';\n            name.style.marginRight = '16px';\n\n            const value = document.createElement('span');\n            if (item.value === undefined) {\n              value.innerHTML = '-';\n            } else {\n              value.innerHTML = `${item.value}%`;\n            }\n            value.style.textAlign = 'right';\n            value.style.fontFamily = 'Arial';\n\n            if (item.seriesName === activeLine.current) {\n              value.style.color = item.color;\n              name.style.color = item.color;\n            } else {\n              value.style.color = activeLine.current ? '#999' : '#333';\n              name.style.color = activeLine.current ? '#999' : '#333';\n            }\n\n            child.appendChild(marker.firstChild);\n            child.appendChild(name);\n            child.appendChild(value);\n\n            parent.appendChild(child);\n          });\n\n          return parent;\n        },\n      },\n      yAxis: {\n        type: 'value',\n        axisLabel: {\n          color: '#666',\n          fontSize: 16,\n        },\n        name: '红利实现利率(%)',\n        nameGap: 30,\n        nameTextStyle: {\n          padding: [0, 100, 0, 0],\n          fontSize: 14,\n          color: '#333',\n        },\n      },\n      xAxis: {\n        type: 'category',\n        axisTick: false,\n        name: '分红年度',\n        nameLocation: 'start',\n        nameGap: 0,\n        nameTextStyle: {\n          fontSize: 14,\n          color: '#333',\n          align: 'right',\n          verticalAlign: 'top',\n          padding: [-6, 40, 0, 0],\n        },\n        axisLabel: {\n          color: '#666',\n          fontSize: 16,\n        },\n        data: xAxis,\n      },\n      series,\n    };\n\n    chartRef.current.setOption(option);\n  }, [echarts, xAxis, series]);\n\n  return <div style={{ height: '100%' }} ref={chartDom} />;\n});\n","import * as fRedux from '@/utils/redux';\n\nimport decryptString from '@/utils/decrypt';\n\nconst { createActions } = fRedux.default;\n\nconst namespace = 'DividendRealizationRateContrast';\nconst initState = {};\n\nconst { useReducers } = createActions(namespace, initState, {\n  query: [\n    (params, http, dispatch, getState) => {\n      const { user } = getState();\n\n      return http.get(`/api/dividend/queryByIds`, { params }).then(res => {\n        return decryptString(user.salt, res.result);\n      });\n    },\n    (state, response) => ({ data: response }),\n  ],\n  clear: [() => {}, () => ({ data: [] })],\n});\n\nexport default useReducers;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"GLS2i\",\"title\":\"sjYmI\",\"main\":\"_59kL4\",\"empty\":\"s63NZ\"};","import Query from './Query';\nimport Contrast from './Contrast';\n// import ProductRateContrast from './ProductRateContrast';\n\nexport default [\n  {\n    path: '/query',\n    component: Query,\n    exact: true,\n    title: '红利实现利率',\n  },\n  {\n    path: '/contrast',\n    component: Contrast,\n    exact: true,\n    title: '红利实现利率',\n  },\n];\n","import React, { useEffect, useMemo } from 'react';\n\nimport useQuery from '@/hooks/useQuery';\nimport PageLayout from '@/components/PageLayout';\nimport Chart from './Chart';\n\nimport useReducers from './redux';\n\nimport styles from './Contrast.module.scss';\n\nexport default React.memo(function Contrast() {\n  const [state, actions] = useReducers();\n  const query = useQuery();\n\n  useEffect(() => {\n    actions.clear();\n    actions.query({\n      ids: query.products,\n    });\n  }, []);\n\n  const xAxis = useMemo(() => {\n    if (!state.data?.length) {\n      return [];\n    }\n\n    const { minDividendYear, maxDividendYear } =\n      state.data?.reduce(\n        (result, next) => {\n          return {\n            maxDividendYear: Math.max(\n              result.maxDividendYear,\n              ...next.map(item => item.dividendYear)\n            ),\n            minDividendYear: Math.min(\n              result.minDividendYear,\n              ...next.map(item => item.dividendYear)\n            ),\n          };\n        },\n        {\n          maxDividendYear: 0,\n          minDividendYear: 9999,\n        }\n      ) || {};\n\n    const distance = maxDividendYear - minDividendYear;\n\n    if (distance < 0) {\n      return [];\n    }\n    return new Array(distance + 1).fill(1).map((m, index) => {\n      return minDividendYear + index;\n    });\n  }, [state.data]);\n\n  // const series = useMemo(() => {\n  //   if (!state.data || !xAxis.length) {\n  //     return [];\n  //   }\n  //\n  //   return state.data.map(line => {\n  //     const [firstItem] = line\n  //\n  //     const name = firstItem.dividendRemark ? `${firstItem.productName}-${firstItem.dividendRemark}` : firstItem.dividendRemark\n  //\n  //     return {\n  //       name,\n  //       type: 'line',\n  //       smooth: true,\n  //       data: xAxis.map(x => {\n  //         const data = line.find(item => item.dividendYear === x);\n  //         if (!data) {\n  //           return;\n  //         }\n  //         return +data.actualDividendYield;\n  //       }),\n  //     };\n  //   });\n  // }, [state.data, xAxis]);\n\n  const hasSeries = useMemo(() => {\n    return state.data?.some(line => {\n      return line.some(item => {\n        return query.type === '现金分红' ? item.actualDividendYield : item.incrementalDividendYield;\n      });\n    });\n  }, [state.data]);\n\n  const series = useMemo(() => {\n    if (!xAxis.length) {\n      return [];\n    }\n\n    return state.data\n      .filter(line => line.length)\n      .map(line => {\n        const [firstItem] = line;\n\n        const name = firstItem.dividendRemark\n          ? `${firstItem.productName}-${firstItem.dividendRemark}`\n          : firstItem.productName;\n\n        return {\n          name,\n          type: 'line',\n          smooth: true,\n          data: xAxis.map(x => {\n            const data = line.find(item => item.dividendYear === x);\n            const value =\n              query.type === '现金分红'\n                ? data?.actualDividendYield\n                : data?.incrementalDividendYield;\n            if (!+value) {\n              return;\n            }\n\n            return +(value * 100).toFixed(2);\n          }),\n        };\n      });\n  }, [hasSeries, xAxis, state.data]);\n\n  const hasSeries2 = useMemo(() => {\n    return state.data?.some(line => {\n      return line.some(item => item.finalDividendYield);\n    });\n  }, [state.data]);\n\n  const series2 = useMemo(() => {\n    if (!hasSeries2) {\n      return [];\n    }\n\n    return state.data.map(line => {\n      const [firstItem] = line;\n      const name = firstItem.dividendRemark\n        ? `${firstItem.productName}-${firstItem.dividendRemark}`\n        : firstItem.productName;\n\n      return {\n        name,\n        type: 'line',\n        smooth: true,\n        data: xAxis.map(x => {\n          const data = line.find(item => item.dividendYear === x && +item.finalDividendYield);\n          if (!data) {\n            return;\n          }\n\n          return +(data.finalDividendYield * 100).toFixed(2);\n        }),\n      };\n    });\n  }, [hasSeries2, xAxis, state.data]);\n\n  return (\n    <PageLayout>\n      <div className={styles.container}>\n        <div className={styles.title}>\n          {query.type === '现金分红' ? '现金红利实现率曲线' : '增额红利实现率曲线'}\n        </div>\n\n        {hasSeries && (\n          <div className={styles.main}>\n            <Chart xAxis={xAxis} series={series} />\n          </div>\n        )}\n        {!hasSeries && <div className={styles.empty}>暂无数据</div>}\n      </div>\n\n      <div className={styles.container}>\n        <div className={styles.title}>终了红利实现率曲线</div>\n\n        {hasSeries2 && (\n          <div className={styles.main}>\n            <Chart xAxis={xAxis} series={series2} />\n          </div>\n        )}\n        {!hasSeries2 && <div className={styles.empty}>暂无数据</div>}\n      </div>\n    </PageLayout>\n  );\n});\n","import React, { useState, useMemo } from 'react';\n\nimport { Select, Spin } from 'antd';\nimport useDebounce from '@/hooks/useDebounce';\n\nexport default React.memo(function SearchProduct({\n  onQuery,\n  lableOnly,\n  searchParams = {},\n  ...props\n}) {\n  const [products, setProducts] = useState([]);\n  const [loading, setLoading] = useState();\n\n  const options = useMemo(() => {\n    return products;\n    // if (lableOnly) {\n    //   const labels = (state.products || []).map(item => {\n    //     return item.label;\n    //   });\n    //\n    //   return Array.from(new Set(labels)).map(label => ({ label, value: label }));\n    // }\n    // return state.products || [];\n  }, [products]);\n\n  const onSearch = useDebounce(\n    async v => {\n      if (!v) {\n        return;\n      }\n      setLoading(true);\n\n      const res = await onQuery({\n        ...searchParams,\n        productName: v,\n      });\n\n      setProducts(res);\n      setLoading(false);\n    },\n    { delay: 400 }\n  );\n\n  return (\n    <Select\n      dropdownMatchSelectWidth={false}\n      options={options}\n      onSearch={onSearch}\n      filterOption={false}\n      notFoundContent={loading ? <Spin size=\"small\" /> : null}\n      {...props}\n    />\n  );\n});\n","import * as fRedux from '@/utils/redux';\n\nimport decryptString from '@/utils/decrypt';\n\nconst { createActions } = fRedux.default;\n\nconst namespace = 'ExclusiveCommercialPensionInsurance';\nconst initState = {\n  queryParams: {},\n  tableParams: {},\n};\n\nconst { useReducers } = createActions(namespace, initState, {\n  query: [\n    (params, http, dispatch, getState) => {\n      const { user } = getState();\n\n      return http.post(`/api/exclusive/business/list`, null, { params }).then(res => {\n        return decryptString(user.salt, res.result);\n      });\n    },\n    (state, response) => ({ pager: response }),\n  ],\n  updateQueryParams: [params => params, (state, params) => ({ queryParams: params })],\n  updateTableParams: [params => params, (state, params) => ({ tableParams: params })],\n  getReportToken: [\n    (params, http, dispatch, getState) => {\n      const { user } = getState();\n\n      return http.get(`/api/product/getToken`, { params }).then(res => {\n        return decryptString(user.salt, res.result);\n      });\n    },\n  ],\n  queryProduct: [\n    (params, http, dispatch, getState) => {\n      const { user } = getState();\n      return http.get(`/api/universal/productNameCats`, { params }).then(res => {\n        return decryptString(user.salt, res.result);\n      });\n    },\n    (state, products) => ({ products: products || [] }),\n  ],\n  updateSelectedProducts: [keys => keys, (state, keys) => ({ selectedProducts: keys })],\n  toggleShowSelected: [() => {}, state => ({ showSelected: !state.showSelected })],\n  setShowSelected: [showSelected => showSelected, (state, showSelected) => ({ showSelected })],\n});\n\nexport default useReducers;\n","import { createI18n } from '@/redux/i18n';\n\nexport default createI18n({\n  en: {\n    看条款: 'View Clause',\n    更多: 'More',\n    备注: 'Remark',\n    专属商业养老险利率: 'Exclusive Commercial Pension Insurance Rate',\n    已选中: 'Selected',\n    对比: 'Compare',\n    产品名称: 'Product Name',\n    产品类别: 'Product Category',\n    公司名称: 'Company Name',\n    报备年份: 'Sale Year',\n    销售状态: 'Sales Status',\n    结算年度: 'Settlement Year',\n    结算利率: 'Settlement Rate',\n    保证利率: 'Guaranteed Rate',\n    特殊属性: 'Special Attribute',\n    开始时间: 'Start Time',\n    结束时间: 'End Time',\n    最低: 'Minimum',\n    最高: 'Maximum',\n    最低保证利率: 'Minimum Guaranteed Rate',\n    账户类型: 'Account Type',\n  },\n  zh: {},\n});\n","import React, { useCallback, useState, useMemo, useEffect } from 'react';\n\nimport { Button } from 'antd';\nimport QueryTable from '@/components/QueryTable';\nimport openWindow from '@/utils/openWindow';\n\nimport useReducers from '../../redux';\nimport useI18n from './i18n';\n\nexport default React.memo(function ReportTable() {\n  const [loading, setLoading] = useState();\n  const [state, actions] = useReducers();\n  const [t] = useI18n();\n  useEffect(() => {\n    setLoading(true);\n    actions.updateTableParams({});\n    actions\n      .query({\n        pageNo: 1,\n        pageSize: 10,\n        ...state.queryParams,\n      })\n      .then(() => {\n        setLoading(false);\n      })\n      .catch(() => {\n        setLoading(false);\n      });\n  }, [state.queryParams]);\n\n  const viewReport = useCallback(async item => {\n    setLoading(true);\n    const params = await actions.getReportToken({ id: item.productId, type: 'PRODUCT' });\n    openWindow(`/report-viewer?${params}`);\n    setLoading(false);\n  }, []);\n\n  const columns = useMemo(() => {\n    return [\n      {\n        title: t('报备年份'),\n        dataIndex: 'saleYear',\n        width: '7%',\n        sorter: true,\n      },\n      {\n        title: t('产品名称'),\n        dataIndex: 'productName',\n        sorter: true,\n      },\n      {\n        title: t('公司名称'),\n        dataIndex: 'companyName',\n        width: '17%',\n        sorter: true,\n      },\n      {\n        title: t('账户类型'),\n        dataIndex: 'accountType',\n        width: '8%',\n        sorter: true,\n      },\n      {\n        title: t('结算年度'),\n        dataIndex: 'settlementYear',\n        width: '7%',\n        sorter: true,\n      },\n      {\n        title: t('结算利率'),\n        width: '7%',\n        dataIndex: 'settlementRate',\n        sorter: true,\n        render(v) {\n          if (Number.isFinite(v)) {\n            return `${v.toFixed(2)}%`;\n          }\n\n          return v;\n        },\n      },\n      {\n        title: t('最低保证利率'),\n        width: '9%',\n        dataIndex: 'ensureRate',\n        sorter: true,\n        render(v) {\n          if (Number.isFinite(v)) {\n            return `${v.toFixed(2)}%`;\n          }\n\n          return v;\n        },\n      },\n      {\n        title: t('销售状态'),\n        width: '7%',\n        dataIndex: 'saleStatus',\n        sorter: true,\n      },\n      {\n        title: t('特殊属性'),\n        width: '7%',\n        dataIndex: 'specialAttr',\n        sorter: true,\n      },\n      {\n        title: t('备注'),\n        width: '10%',\n        dataIndex: 'remark',\n      },\n      {\n        title: t('更多'),\n        dataIndex: 'action',\n        width: 80,\n        render(_, item) {\n          return (\n            <Button onClick={() => viewReport(item)} type=\"link\">\n              {t('看条款')}\n            </Button>\n          );\n        },\n      },\n    ];\n  }, [viewReport]);\n\n  return (\n    <QueryTable\n      loading={loading}\n      columns={columns}\n      tableParams={state.tableParams}\n      pager={state.pager}\n      queryParams={state.queryParams}\n      selectedProducts={state.selectedProducts}\n      updateSelectedProducts={actions.updateSelectedProducts}\n      updateTableParams={actions.updateTableParams}\n      query={actions.query}\n      showSelected={state.showSelected}\n    />\n  );\n});\n","import { createI18n } from '@/redux/i18n';\n\nexport default createI18n({\n  en: {\n    专属商业养老险利率: 'Exclusive Commercial Pension Insurance Rate',\n    已选中: 'Selected',\n    对比: 'Compare',\n    产品名称: 'Product Name',\n    产品类别: 'Product Category',\n    公司名称: 'Company Name',\n    报备年份: 'Sale Year',\n    销售状态: 'Sales Status',\n    结算年度: 'Settlement Year',\n    结算利率: 'Settlement Rate',\n    保证利率: 'Guaranteed Rate',\n    特殊属性: 'Special Attribute',\n    账户类型: 'Account Type',\n    开始时间: 'Start Time',\n    结束时间: 'End Time',\n    最低: 'Minimum',\n    最高: 'Maximum',\n  },\n  zh: {},\n});\n","function toOptions(arr) {\n  return arr.map(item => ({ value: item, label: item }));\n}\n\nexport const specialOptions = [\n  { label: '无', value: '无' },\n  { label: '个人养老金产品', value: '个人养老金产品' },\n];\n\nexport const accountTypeOptions = toOptions(['稳健型', '进取型']);\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"NaSgj\",\"main\":\"B5zLg\",\"group\":\"tLNMe\",\"icon\":\"S7WxN\"};","import React, { useCallback, useState } from 'react';\n\nimport qs from 'qs';\nimport { SwapOutlined } from '@ant-design/icons';\nimport { Form, Input, Select, DatePicker, Button, Checkbox } from 'antd';\nimport PageLayout from '@/components/PageLayout';\nimport SearchForm from '@/components/SearchForm';\nimport { useCompanyOptions, useYearOptions } from '@/redux/hooks/enums';\nimport SearchProduct from '@/components/form/ProductSelect/SearchProduct';\nimport openWindow from '@/utils/openWindow';\nimport http from '@/utils/http/http';\nimport decryptString from '@/utils/decrypt';\nimport useUserReducers from '@/redux/user';\n\nimport { saleStatusOptions } from '@/constants/options';\nimport VipModal from '@/components/VipModal';\nimport ReportTable from './ReportTable';\nimport useI18n from './i18n';\nimport { specialOptions, accountTypeOptions } from './options';\n\nimport useReducers from '../redux';\n\nimport styles from './Query.module.scss';\n\nconst { RangePicker } = DatePicker;\n\nexport default React.memo(function UniversalRiskRateQuery() {\n  const [form] = Form.useForm();\n  const [state, actions] = useReducers();\n  const companyOptions = useCompanyOptions();\n  const yearOptions = useYearOptions(2006);\n  const [user] = useUserReducers();\n  const [vipModalVisible, setVipModalVisible] = useState(false);\n  const [t] = useI18n();\n  const onSearch = useCallback(\n    async ({ settlementYear, ...rest }) => {\n      if (user.userLevel !== 'VIP') {\n        setVipModalVisible(true);\n        return;\n      }\n\n      const params = rest;\n\n      if (params.productNames) {\n        params.productNames = params.productNames.map(item => encodeURIComponent(item));\n      }\n\n      if (settlementYear) {\n        params.settlementYearBegin = settlementYear[0].format('YYYY');\n        params.settlementYearEnd = settlementYear[1].format('YYYY');\n      }\n\n      actions.updateQueryParams(params);\n    },\n    [user]\n  );\n\n  const filterOption = useCallback((value, option) => {\n    const normalFilter =\n      option.label.toLowerCase().includes(value.toLowerCase()) ||\n      option.value.toLowerCase().includes(value.toLowerCase());\n    return normalFilter || option.pinyin.some(item => item.includes(value.toLowerCase()));\n  }, []);\n\n  const viewCompare = useCallback(() => {\n    const { settlementYear } = form.getFieldsValue(['settlementYear']);\n\n    const params = {};\n\n    if (state.selectedProducts?.length) {\n      params.products = state.selectedProducts.map(item => item.id);\n    }\n\n    if (settlementYear) {\n      params.settlementYearBegin = settlementYear[0].format('YYYY');\n      params.settlementYearEnd = settlementYear[1].format('YYYY');\n    }\n\n    openWindow(\n      `/product/exclusive-commercial-pension-insurance/contrast?${qs.stringify(params, {\n        arrayFormat: 'comma',\n      })}`\n    );\n  }, [state.selectedProducts]);\n\n  const onQueryProduct = useCallback(\n    params => {\n      return http.get('/api/exclusive/business/getProductNameCats', { params }).then(res => {\n        return decryptString(user.salt, res.result);\n      });\n    },\n    [user.salt]\n  );\n\n  return (\n    <PageLayout>\n      <div className={styles.container}>\n        <SearchForm\n          form={form}\n          title={t('专属商业养老险利率')}\n          onSearch={onSearch}\n          extraAction={\n            <>\n              <Button\n                onClick={actions.toggleShowSelected}\n                htmlType=\"button\"\n                type=\"default\"\n                icon={<Checkbox checked={state.showSelected} style={{ marginRight: 6 }} />}\n              >\n                {t('已选中')}（{state.selectedProducts?.length || 0}）\n              </Button>\n              <Button\n                onClick={viewCompare}\n                icon={<SwapOutlined className={styles.icon} />}\n                type=\"primary\"\n                disabled={!state.selectedProducts?.length}\n              >\n                {t('对比')}\n              </Button>\n            </>\n          }\n        >\n          <Form.Item label={t('产品名称')} name=\"productNames\">\n            <SearchProduct\n              allowClear\n              maxTagCount={2}\n              showArrow\n              showSearch\n              onQuery={onQueryProduct}\n              mode=\"tags\"\n              placeholder={t('产品名称')}\n            />\n          </Form.Item>\n\n          <Form.Item label={t('公司名称')} name=\"companyIds\">\n            <Select\n              maxTagCount={2}\n              showArrow\n              allowClear\n              showSearch\n              mode=\"multiple\"\n              filterOption={filterOption}\n              options={companyOptions}\n              fieldNames={{ label: 'label', value: 'value' }}\n              placeholder={t('公司名称')}\n            />\n          </Form.Item>\n\n          <Form.Item label={t('报备年份')} name=\"saleYears\">\n            <Select\n              maxTagCount={2}\n              allowClear\n              showArrow\n              mode=\"multiple\"\n              options={yearOptions}\n              placeholder={t('报备年份')}\n            />\n          </Form.Item>\n\n          <Form.Item label={t('销售状态')} name=\"saleStatus\">\n            <Select\n              allowClear\n              showArrow\n              maxTagCount={2}\n              mode=\"multiple\"\n              options={saleStatusOptions}\n              placeholder={t('销售状态')}\n            />\n          </Form.Item>\n\n          <Form.Item label={t('结算年度')} name=\"settlementYear\">\n            <RangePicker\n              separator=\"~\"\n              allowClear\n              picker=\"year\"\n              placeholder={[t('开始时间'), t('结束时间')]}\n            />\n          </Form.Item>\n\n          <Form.Item label={t('结算利率')}>\n            <Input.Group className={styles.group}>\n              <Form.Item noStyle name=\"settlementRateMin\">\n                <Input\n                  type=\"number\"\n                  step={0.01}\n                  suffix=\"%\"\n                  min={0}\n                  max={100}\n                  placeholder={t('最低')}\n                  controls={false}\n                />\n              </Form.Item>\n              <span>~</span>\n              <Form.Item noStyle name=\"settlementRateMax\">\n                <Input\n                  type=\"number\"\n                  step={0.01}\n                  suffix=\"%\"\n                  min={0}\n                  max={100}\n                  placeholder={t('最高')}\n                  controls={false}\n                />\n              </Form.Item>\n            </Input.Group>\n          </Form.Item>\n\n          <Form.Item label={t('保证利率')}>\n            <Input.Group className={styles.group}>\n              <Form.Item noStyle name=\"ensureRateMin\">\n                <Input\n                  type=\"number\"\n                  suffix=\"%\"\n                  step={0.01}\n                  min={0}\n                  max={100}\n                  placeholder={t('最低')}\n                  controls={false}\n                />\n              </Form.Item>\n              <span>~</span>\n              <Form.Item noStyle name=\"ensureRateMax\">\n                <Input\n                  type=\"number\"\n                  suffix=\"%\"\n                  step={0.01}\n                  min={0}\n                  max={100}\n                  placeholder={t('最高')}\n                  controls={false}\n                />\n              </Form.Item>\n            </Input.Group>\n          </Form.Item>\n\n          <Form.Item label={t('特殊属性')} name=\"specialAttr\">\n            <Select\n              showArrow\n              allowClear\n              mode=\"multiple\"\n              options={specialOptions}\n              placeholder={t('特殊属性')}\n              dropdownMatchSelectWidth={false}\n            />\n          </Form.Item>\n          <Form.Item label={t('账户类型')} name=\"accountType\">\n            <Select\n              showArrow\n              allowClear\n              options={accountTypeOptions}\n              placeholder={t('账户类型')}\n              dropdownMatchSelectWidth={false}\n            />\n          </Form.Item>\n        </SearchForm>\n\n        <div className={styles.main}>\n          <ReportTable />\n        </div>\n      </div>\n      <VipModal visible={vipModalVisible} onCancel={() => setVipModalVisible(false)} />\n    </PageLayout>\n  );\n});\n","import React, { useRef, useEffect } from 'react';\n\nimport useScript from '@/hooks/useScript';\n\nexport default React.memo(function Chart({ xAxis, series }) {\n  const echarts = useScript('https://s.futurebaobei.com/static/js/echarts.min.js', 'echarts');\n  const chartRef = useRef();\n  const chartDom = useRef();\n  const activeLine = useRef();\n\n  useEffect(() => {\n    if (!echarts) {\n      return;\n    }\n\n    if (!chartRef.current) {\n      chartRef.current = echarts.init(chartDom.current);\n\n      chartRef.current.on('mouseover', e => {\n        activeLine.current = e.seriesName;\n\n        chartRef.current.setOption({\n          series: {\n            name: e.seriesName,\n            lineStyle: {\n              width: 4,\n              opacity: 1,\n            },\n          },\n        });\n      });\n\n      chartRef.current.on('mouseout', e => {\n        activeLine.current = '';\n        chartRef.current.setOption({\n          series: {\n            name: e.seriesName,\n            lineStyle: {\n              width: 2,\n              opacity: 0.5,\n            },\n          },\n        });\n      });\n    }\n\n    const option = {\n      grid: {\n        top: '20%',\n        right: '4%',\n        bottom: '10',\n        left: '84',\n        borderWidth: 10,\n        containLabel: true,\n      },\n      legend: {\n        show: true,\n        right: 0,\n        color: '#666',\n        fontSize: 16,\n        // data: legend,\n      },\n      tooltip: {\n        trigger: 'axis',\n        // formatter: '{a}%'\n        formatter(params) {\n          const parent = document.createElement('div');\n\n          const index = document.createElement('p');\n          index.innerHTML = params[0].axisValue;\n          parent.appendChild(index);\n\n          params.map(item => {\n            const child = document.createElement('div');\n            child.style.display = 'flex';\n            child.style.alignItems = 'center';\n\n            const marker = document.createElement('span');\n            marker.innerHTML = item.marker;\n\n            const name = document.createElement('span');\n            name.innerHTML = item.seriesName;\n            name.style.flex = '1';\n            name.style.marginRight = '16px';\n\n            const value = document.createElement('span');\n            if (item.value === undefined) {\n              value.innerHTML = '-';\n            } else {\n              value.innerHTML = `${item.value}%`;\n            }\n            value.style.textAlign = 'right';\n            value.style.fontFamily = 'Arial';\n\n            if (item.seriesName === activeLine.current) {\n              value.style.color = item.color;\n              name.style.color = item.color;\n            } else {\n              value.style.color = activeLine.current ? '#999' : '#333';\n              name.style.color = activeLine.current ? '#999' : '#333';\n            }\n\n            child.appendChild(marker.firstChild);\n            child.appendChild(name);\n            child.appendChild(value);\n\n            parent.appendChild(child);\n          });\n\n          return parent;\n        },\n      },\n      yAxis: {\n        type: 'value',\n        splitNumber: 5,\n        minInterval: 1,\n        name: '结算利率(%)',\n        min: 0,\n        nameGap: 20,\n        nameLocation: 'end',\n        nameTextStyle: {\n          fontSize: 14,\n          padding: [0, 94, 0, 0],\n          color: '#333',\n        },\n        axisLabel: {\n          color: '#666',\n          fontSize: 16,\n        },\n      },\n      xAxis: {\n        type: 'category',\n        axisTick: false,\n        name: '结算年度',\n        nameLocation: 'start',\n        nameGap: 30,\n        nameTextStyle: {\n          fontSize: 14,\n          color: '#333',\n        },\n        axisLabel: {\n          color: '#666',\n          fontSize: 16,\n          formatter: '{value}',\n        },\n        data: xAxis,\n      },\n      series,\n    };\n\n    chartRef.current.setOption(option);\n  }, [echarts, xAxis, series]);\n\n  return <div style={{ height: '100%' }} ref={chartDom} />;\n});\n","import * as fRedux from '@/utils/redux';\n\nimport decryptString from '@/utils/decrypt';\n\nconst { createActions } = fRedux.default;\n\nconst namespace = 'ExclusiveCommercialPensionInsuranceContrast';\nconst initState = {};\n\nconst { useReducers } = createActions(namespace, initState, {\n  query: [\n    (params, http, dispatch, getState) => {\n      const { user } = getState();\n\n      return http.get(`/api/exclusive/business/queryByIds`, { params }).then(res => {\n        return decryptString(user.salt, res.result);\n      });\n    },\n    (state, response) => ({ data: response }),\n  ],\n  clear: [() => {}, () => ({ data: [] })],\n});\n\nexport default useReducers;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"wN4rw\",\"title\":\"swf6P\",\"main\":\"wIOh3\"};","import React, { useEffect, useMemo } from 'react';\n\nimport dayjs from 'dayjs';\nimport useQuery from '@/hooks/useQuery';\nimport PageLayout from '@/components/PageLayout';\nimport Chart from './Chart';\n\nimport useReducers from './redux';\n\nimport styles from './Contrast.module.scss';\n\nexport default React.memo(function Contrast() {\n  const [state, actions] = useReducers();\n  const query = useQuery();\n\n  const params = useMemo(() => {\n    const end = query.settlementYearEnd ? dayjs(query.settlementYearEnd) : dayjs();\n    let start = query.settlementYearBegin ? dayjs(query.settlementYearBegin) : dayjs();\n\n    if (!query.settlementYearBegin) {\n      start = start.subtract(5, 'year');\n    }\n\n    return {\n      ids: query.products,\n      settlementYearBegin: start,\n      settlementYearEnd: end,\n    };\n  }, [query.ids]);\n\n  useEffect(() => {\n    actions.clear();\n    actions.query({\n      ...params,\n      settlementYearBegin: params.settlementYearBegin.format('YYYY'),\n      settlementYearEnd: params.settlementYearEnd.format('YYYY'),\n    });\n  }, [params]);\n\n  const xAxis = useMemo(() => {\n    const end = dayjs(params.settlementYearEnd);\n    const start = dayjs(params.settlementYearBegin);\n\n    let distance = end.diff(start, 'year');\n\n    if (distance < 0) {\n      distance = 1;\n    }\n\n    const months = new Array(distance + 1).fill(1).map((m, index) => {\n      return start.year(start.year() + index).format('YYYY');\n    });\n\n    return months;\n  }, [params]);\n\n  const series = useMemo(() => {\n    if (!state.data) {\n      return [];\n    }\n\n    return state.data.map(line => {\n      const [first] = line;\n      const name = first.remark ? `${first.productName}_${first.remark}` : first.productName;\n      return {\n        name,\n        type: 'line',\n        smooth: true,\n        data: xAxis.map(x => {\n          const data = line.find(item => {\n            return item.settlementYear === +x;\n          });\n          if (!data) {\n            return;\n          }\n          return data.settlementRate;\n        }),\n      };\n    });\n  }, [state.data, xAxis]);\n\n  return (\n    <PageLayout fixedLayout>\n      <div className={styles.container}>\n        <div className={styles.title}>历史利率曲线</div>\n\n        <div className={styles.main}>\n          <Chart xAxis={xAxis} series={series} />\n        </div>\n      </div>\n    </PageLayout>\n  );\n});\n","import Query from './Query';\nimport Contrast from './Contrast';\n\nexport default [\n  {\n    path: '/query',\n    component: Query,\n    exact: true,\n    title: '专属商业养老险利率',\n  },\n  // {\n  //   path: '/detail/:id',\n  //   component: ReportDetail,\n  //   exact: true,\n  //   title: '保司报告',\n  // },\n  {\n    path: '/contrast',\n    component: Contrast,\n    extra: true,\n    title: '专属商业养老险利率对比',\n  },\n];\n","import UniversalInterestRate from './UniversalInterestRate';\nimport AnnuitiesInsurance from './AnnuitiesInsurance';\nimport CriticalIllnessInsurance from './CriticalIllnessInsurance';\nimport IncrementalWholeLifeInsurance from './IncrementalWholeLifeInsurance';\nimport DividendRealizationRate from './DividendRealizationRate';\nimport ExclusiveCommercialPensionInsurance from './ExclusiveCommercialPensionInsurance';\n\nexport default [\n  {\n    path: '/dividend-realization-rate',\n    component: DividendRealizationRate,\n  },\n  {\n    path: '/universal-interest-rate',\n    component: UniversalInterestRate,\n  },\n  {\n    path: '/annuities-insurance',\n    component: AnnuitiesInsurance,\n  },\n  {\n    path: '/critical-illness-insurance',\n    component: CriticalIllnessInsurance,\n  },\n  {\n    path: '/incremental-whole-life-insurance',\n    component: IncrementalWholeLifeInsurance,\n  },\n  {\n    path: '/exclusive-commercial-pension-insurance',\n    component: ExclusiveCommercialPensionInsurance,\n  },\n];\n","import React from 'react';\nimport ChildRoute from '@/components/ChildRoute';\nimport routeList from './routeList';\n\nexport default function User() {\n  return <ChildRoute routeList={routeList} />;\n}\n","import React from 'react';\nimport ChildRoute from '@/components/ChildRoute';\nimport routeList from './routeList';\n\nexport default function User() {\n  return <ChildRoute routeList={routeList} />;\n}\n","import React from 'react';\nimport ChildRoute from '@/components/ChildRoute';\nimport routeList from './routeList';\n\nexport default function User() {\n  return <ChildRoute routeList={routeList} />;\n}\n","import React from 'react';\nimport ChildRoute from '@/components/ChildRoute';\nimport routeList from './routeList';\n\nexport default function User() {\n  return <ChildRoute routeList={routeList} />;\n}\n","import React from 'react';\nimport ChildRoute from '@/components/ChildRoute';\nimport routeList from './routeList';\n\nexport default function User() {\n  return <ChildRoute routeList={routeList} />;\n}\n","import React from 'react';\nimport ChildRoute from '@/components/ChildRoute';\nimport routeList from './routeList';\n\nexport default function User() {\n  return <ChildRoute routeList={routeList} />;\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"UDHre\",\"header\":\"Fsrv2\",\"desc\":\"yACYE\",\"bg\":\"+LA53\",\"content\":\"_8On+H\",\"title\":\"h8Dz5\",\"detail\":\"+T5A5\",\"name\":\"PQzAu\",\"summary\":\"NC72F\",\"tip\":\"bGOiI\",\"link\":\"ee+bT\"};","export default __webpack_public_path__ + \"img/bg.230153a4.png\";","export default __webpack_public_path__ + \"img/icon.e7b8145d.png\";","export default __webpack_public_path__ + \"img/cover.243ad17c.png\";","import React, { useCallback } from 'react';\n\nimport { Button } from 'antd';\nimport PageLayout from '@/components/PageLayout';\nimport openWindow from '@/utils/openWindow';\nimport styles from './ProductReport.module.scss';\n\nimport bg from './assets/bg.png';\nimport icon from './assets/icon.png';\nimport cover from './assets/cover.png';\n\nexport default React.memo(function ProductReport() {\n  const openReport = useCallback(() => {\n    openWindow(\n      `/report-viewer?url=${encodeURIComponent(\n        'https://s.futurebaobei.com/insurance-report/产品报告/增额终身寿险产品分析报告_v1.0_20230921_PY_PDF.pdf'\n      )}`\n    );\n  }, []);\n\n  return (\n    <PageLayout className={styles.container}>\n      <div className={styles.header}>\n        <div className={styles.bg}>\n          <img src={bg} alt=\"\" />\n        </div>\n        {/* <div className={styles.bg}>\n          <ScaleImage src={bg} fill/>\n        </div> */}\n        {/* <div className={styles.desc}>\n          <h3>\n            <span>更容易</span>\n            <span>更全面</span>\n            <span>更高效</span>\n          </h3>\n          <h4>触达保险行业产品信息</h4>\n        </div> */}\n      </div>\n\n      <div className={styles.content}>\n        <div className={styles.title}>\n          <img src={icon} alt=\"\" />\n          增额终身寿险产品报告\n        </div>\n        <div className={styles.detail}>\n          <img src={cover} alt=\"\" />\n          <div className={styles.name}>增额终身寿险产品分析报告2023（1-8月数据）</div>\n          <div className={styles.summary}>\n            本报告对中国大陆保险行业于2023年1-8月报备的增额终身寿险产品从多个维度进行统计分析。以帮助行业伙伴更全面更整体的了解行业增额终身寿险产品的变化及发展趋势。\n          </div>\n          <div className={styles.tip}>\n            注：本报告仅供保险同行在线查询与参考，所引用产品信息均来源于公开渠道。\n          </div>\n          <Button onClick={openReport} type=\"primary\" className={styles.link}>\n            查看报告\n          </Button>\n        </div>\n      </div>\n    </PageLayout>\n  );\n});\n","import AsyncLoader from '@/componentHOC/async-loader';\n\nimport CompanyReport from './pages/CompanyReport';\nimport LifeInsuranceProductLibrary from './pages/LifeInsuranceProductLibrary';\nimport ReportViewer from './pages/ReportViewer';\nimport SummaryOfRegulatoryDocuments from './pages/SummaryOfRegulatoryDocuments';\nimport ContentRetrievalForDocument from './pages/ContentRetrievalForDocument';\nimport Product from './pages/Product';\nimport ProductReport from './pages/ProductReport';\n\nexport default [\n  {\n    path: '/',\n    component: AsyncLoader(() => import('./pages/Home')),\n    exact: true,\n  },\n  {\n    path: '/chat/:id?',\n    component: AsyncLoader(() => import('./pages/Chat')),\n    exact: true,\n  },\n  {\n    path: '/tokenlogin',\n    component: AsyncLoader(() => import('./pages/TokenLogin')),\n    exact: true,\n  },\n  {\n    path: '/user',\n    component: AsyncLoader(() => import('./pages/user')),\n  },\n  {\n    path: '/company-report',\n    // component: AsyncLoader(() => import('./pages/CompanyReport')),\n    component: CompanyReport,\n    extra: true,\n    title: '保司报告',\n  },\n  {\n    path: '/life-insurance-product-library',\n    // component: AsyncLoader(() => import('./pages/LifeInsuranceProductLibrary')),\n    component: LifeInsuranceProductLibrary,\n    title: '人身险产品库',\n  },\n  {\n    path: '/report-viewer',\n    // component: AsyncLoader(() => import('./pages/ReportViewer')),\n    component: ReportViewer,\n    title: '查看报告',\n  },\n  {\n    path: '/product',\n    component: Product,\n  },\n  {\n    path: '/summary-of-regulatory-documents',\n    component: SummaryOfRegulatoryDocuments,\n    title: '监管文件汇总',\n  },\n  {\n    path: '/content-retrieval-for-document',\n    component: ContentRetrievalForDocument,\n    title: '发文内容检索',\n  },\n  {\n    path: '/product-report',\n    component: ProductReport,\n    title: '产品报告',\n  },\n];\n","import React from 'react';\nimport ChildRoute from '@/components/ChildRoute';\nimport routeList from './routeList';\n\nexport default function User() {\n  return <ChildRoute routeList={routeList} />;\n}\n","import React from 'react';\nimport ChildRoute from '@/components/ChildRoute';\nimport routeList from './routeList';\n\nexport default function User() {\n  return <ChildRoute routeList={routeList} />;\n}\n","/* eslint-disable no-underscore-dangle */\nimport React, { useEffect, useState, useRef, useCallback, useMemo } from 'react';\n\nimport Loading from '@/components/Loading';\nimport useSafeEffect from '@/hooks/useSafeEffect';\nimport useQuery from '@/hooks/useQuery';\nimport { PlusCircleOutlined, MinusCircleOutlined, DownloadOutlined } from '@ant-design/icons';\nimport { Button, Divider, Select } from 'antd';\nimport http from '@/utils/http';\nimport downloadUrl from '@/utils/downloadUrl';\nimport decryptString from '@/utils/decrypt';\nimport VipModal from '@/components/VipModal';\n\nimport 'pdfjs-dist/legacy/build/pdf';\nimport 'pdfjs-dist/legacy/web/pdf_viewer';\nimport 'pdfjs-dist/legacy/web/pdf_viewer.css';\n\nimport useUserReducers from '@/redux/user';\nimport useReducers from './redux';\n\nimport styles from './ReportViewer.module.scss';\n\nexport default function PDFViewer() {\n  const { pdfjsLib } = window;\n  const { pdfjsViewer } = window;\n  const [vipModalVisible, setVipModalVisible] = useState(false);\n  const [loading, setLoading] = useState(true);\n  const [state, actions] = useReducers();\n  const query = useQuery();\n  const [scale, setScale] = useState(1);\n  const [search, setSearch] = useState(query.keyword || '');\n  const [userInfo] = useUserReducers();\n  // const [loaded, setLoaded] = useState(false);\n  const [matchs, setMatchs] = useState([]);\n  const timer = useRef();\n  const eventRef = useRef();\n  const pdfViewer = useRef();\n  const canvas = useRef();\n  const pdf = useRef();\n  const [loadPercent, setLoadPercent] = useState(0);\n  const [page, setPage] = useState(0);\n  const [pagesCount, setPagesCount] = useState(0);\n\n  useEffect(() => {\n    if (pdfViewer.current) {\n      pdfViewer.current.currentScale = scale;\n    }\n  }, [scale]);\n\n  const scaleOptions = useMemo(() => {\n    return [1, 1.1, 1.2, 1.5, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 20].map(item => {\n      return {\n        value: item,\n        label: `${Math.round(item * 100)}%`,\n      };\n    });\n  }, []);\n\n  const scaleChange = useCallback(v => {\n    setScale(v);\n  }, []);\n\n  const increaseScale = useCallback(() => {\n    const index = scaleOptions.findIndex(opt => opt.value === scale);\n\n    setScale(scaleOptions[Math.max(0, index - 1)].value);\n  }, [scale, scaleOptions]);\n\n  const decreaseScale = useCallback(() => {\n    const index = scaleOptions.findIndex(opt => opt.value === scale);\n\n    setScale(scaleOptions[Math.min(scaleOptions.length - 1, index + 1)].value);\n  }, [scale, scaleOptions]);\n\n  useEffect(() => {\n    if (userInfo.id && !query.url) {\n      actions.query(query);\n    }\n\n    if (query.url) {\n      actions.updateUrl(query.url);\n    }\n  }, [userInfo.id]);\n\n  const gotoPage = useCallback(p => {\n    const ele = document.querySelector(`.pdfViewer .page:nth-child(${p + 1})`);\n    ele.scrollIntoView();\n  }, []);\n\n  useSafeEffect(\n    async ({ isUnmounted }) => {\n      if (!canvas.current || !pdfjsLib || !pdfjsViewer || !state.url) {\n        return;\n      }\n\n      const pdfjsWorker = await import('pdfjs-dist/build/pdf.worker');\n      pdfjsLib.GlobalWorkerOptions.workerSrc = pdfjsWorker;\n      // pdfjsLib.GlobalWorkerOptions.workerSrc =\n      //   'https://s.futurebaobei.com/static/js/pdf.js/3.3.122/pdf.worker.min.js';\n\n      // setLoaded(false);\n      const task = pdfjsLib.getDocument({\n        url: state.url,\n        cMapUrl: '/cmaps/',\n        cMapPacked: true,\n        enableXfa: true,\n      });\n\n      task.onProgress = function (progressData) {\n        setLoadPercent((progressData.loaded / progressData.total) * 100);\n      };\n\n      task.promise.then(function (res) {\n        setLoading(false);\n        const eventBus = new pdfjsViewer.EventBus();\n        eventRef.current = eventBus;\n\n        const pdfLinkService = new pdfjsViewer.PDFLinkService({\n          eventBus,\n        });\n\n        const pdfFindController = new pdfjsViewer.PDFFindController({\n          eventBus,\n          linkService: pdfLinkService,\n        });\n\n        // const pdfScriptingManager = new pdfjsViewer.PDFScriptingManager({\n        //   eventBus,\n        //   sandboxBundleSrc:\n        //     'https://s.futurebaobei.com/static/js/pdf.js/3.3.122/pdf.sandbox.min.js',\n        // });\n\n        pdfViewer.current = new pdfjsViewer.PDFViewer({\n          container: canvas.current,\n          eventBus,\n          linkService: pdfLinkService,\n          findController: pdfFindController,\n          // scriptingManager: pdfScriptingManager,\n        });\n        pdfLinkService.setViewer(pdfViewer.current);\n        // pdfScriptingManager.setViewer(pdfViewer.current);\n\n        pdfViewer.current.setDocument(res);\n        pdfFindController.setDocument(res);\n        pdfLinkService.setDocument(res, null);\n\n        // eventBus.on('updatefindmatchescount', e => {\n        // })\n        eventBus.on('updatefindmatchescount', () => {\n          if (!pdfFindController.highlightMatches) {\n            setMatchs([]);\n          } else {\n            const contents = pdfFindController._pageContents || [];\n            const newMatchs = pdfFindController.pageMatches\n              .map((pageMatches, index) => {\n                return {\n                  page: index,\n                  count: pageMatches.length,\n                  summary: contents[index],\n                };\n              })\n              .filter(item => !!item.count);\n\n            setMatchs(newMatchs);\n          }\n        });\n\n        eventBus.on('pagesinit', function () {\n          // pdfViewer.currentScaleValue = \"page-width\";\n\n          if (pdfViewer.current.scrollMode === 3) {\n            setPage(pdfViewer.current.currentPageNumber);\n            setPagesCount(pdfViewer.current.pagesCount);\n            pdfViewer.current.currentPageNumber = 1;\n          }\n\n          if (query.keyword) {\n            setTimeout(() => {\n              eventRef.current.dispatch('find', {\n                type: '',\n                query: query.keyword,\n                highlightAll: true,\n                phraseSearch: true,\n              });\n            }, 1000);\n          }\n        });\n\n        // setLoaded(true);\n        if (isUnmounted()) {\n          return;\n        }\n\n        // setTotal(res.numPages);\n        pdf.current = res;\n        // renderPage(1);\n      });\n    },\n    [canvas.current, state.url]\n  );\n\n  const onChange = useCallback(e => {\n    const { value } = e.target;\n    setSearch(value);\n    if (timer.current) {\n      clearTimeout(timer.current);\n      timer.current = null;\n    }\n    timer.current = setTimeout(() => {\n      eventRef.current.dispatch('find', {\n        type: '',\n        query: value,\n        highlightAll: true,\n        phraseSearch: true,\n      });\n    }, 500);\n  }, []);\n\n  const onDownload = useCallback(async () => {\n    if (userInfo.userLevel !== 'VIP') {\n      setVipModalVisible(true);\n      return;\n    }\n\n    const res = await http.get('/api/product/getDownloadUrl', {\n      params: {\n        ...query,\n      },\n    });\n\n    const data = decryptString(userInfo.salt, res.result);\n\n    downloadUrl(data.url, data.fileName);\n  }, [query, userInfo.salt]);\n\n  const onPrevPage = useCallback(() => {\n    pdfViewer.current.currentPageNumber = Math.max(pdfViewer.current.currentPageNumber - 1, 1);\n    setPage(pdfViewer.current.currentPageNumber);\n  }, []);\n\n  const onNextPage = useCallback(() => {\n    pdfViewer.current.currentPageNumber = Math.min(\n      pdfViewer.current.currentPageNumber + 1,\n      pagesCount\n    );\n    setPage(pdfViewer.current.currentPageNumber);\n  }, [pagesCount]);\n\n  const pager = useMemo(() => {\n    if (!pagesCount) {\n      return null;\n    }\n\n    return (\n      <>\n        <Divider type=\"vertical\" />\n        <Button onClick={onPrevPage}>上一页</Button>\n        <Button onClick={onNextPage}>下一页</Button>\n\n        <span style={{ color: '#999' }}>\n          第{page}页 / 共{pagesCount}\n        </span>\n      </>\n    );\n  }, [onNextPage, onPrevPage, page, pagesCount]);\n\n  return (\n    <div className={styles.container}>\n      {loadPercent < 100 && (\n        <div className={styles.progress} style={{ '--progress': `${loadPercent}%` }}>\n          <div className={styles.progressBar} />\n        </div>\n      )}\n\n      {loading && <Loading />}\n      <div className={styles.sider}>\n        <input\n          disabled={pagesCount > 0}\n          value={search}\n          className={styles.search}\n          type=\"text\"\n          onChange={onChange}\n          placeholder={pagesCount > 0 ? '文件较大暂不支持搜索' : '输入查询'}\n        />\n        <div className={styles.matchs}>\n          {matchs.map(item => {\n            return (\n              <div className={styles.item} key={item.page} onClick={() => gotoPage(item.page)}>\n                <div className={styles.header}>\n                  <div className={styles.page}>第{item.page + 1}页</div>\n                  <div className={styles.count}>{item.count}个结果</div>\n                </div>\n                <div className={styles.summary}>{item.summary}</div>\n              </div>\n            );\n          })}\n        </div>\n      </div>\n      <div className={styles.pdf}>\n        <div className={styles.operation}>\n          <Button onClick={increaseScale}>\n            <MinusCircleOutlined />\n          </Button>\n          <Divider type=\"vertical\" />\n          <Button onClick={decreaseScale}>\n            <PlusCircleOutlined />\n          </Button>\n          <Divider type=\"vertical\" />\n          <Select onChange={scaleChange} value={scale} options={scaleOptions} />\n          {pager}\n          {!query.url && (\n            <>\n              <Divider type=\"vertical\" />\n              <Button onClick={onDownload}>\n                <DownloadOutlined />\n              </Button>\n            </>\n          )}\n        </div>\n\n        <div ref={canvas} className={styles.main}>\n          <div className=\"pdfViewer\" />\n        </div>\n      </div>\n      <VipModal visible={vipModalVisible} onCancel={() => setVipModalVisible(false)} />\n    </div>\n  );\n}\n\n// export default function PDFMemo() {\n//   const [loaded, setLoaded] = useState(false);\n//\n//   const loadScript = useCallback(async () => {\n//     if (window.pdfjsLib) {\n//       return [window.pdfjsLib, window.pdfjsViewer];\n//     }\n//\n//     return new Promise(resolve => {\n//       const el = document.createElement('script');\n//\n//       el.onload = function () {\n//         const elview = document.createElement('script');\n//\n//         elview.onload = function () {\n//           return resolve([window.pdfjsLib, window.pdfjsViewer]);\n//         };\n//\n//         elview.type = 'text/javascript';\n//         elview.src = 'https://s.futurebaobei.com/static/js/pdf.js/3.3.122/pdf_viewer.min.js';\n//         document.body.appendChild(elview);\n//       };\n//\n//       el.type = 'text/javascript';\n//       el.src = 'https://s.futurebaobei.com/static/js/pdf.js/3.3.122/pdf.min.js';\n//       document.body.appendChild(el);\n//     });\n//   }, []);\n//\n//   useEffect(() => {\n//     loadScript().then(() => {\n//       setLoaded(true);\n//     });\n//   }, []);\n//\n//   if (!loaded) {\n//     return null;\n//   }\n//\n//   return <PDFViewer />;\n// }\n","import React from 'react';\nimport ChildRoute from '@/components/ChildRoute';\nimport routeList from './routeList';\n\nexport default function User() {\n  return <ChildRoute routeList={routeList} />;\n}\n","import React from 'react';\nimport ChildRoute from '@/components/ChildRoute';\nimport routeList from './routeList';\n\nexport default function User() {\n  return <ChildRoute routeList={routeList} />;\n}\n","import React from 'react';\nimport ChildRoute from '@/components/ChildRoute';\nimport routeList from './routeList';\n\nexport default function User() {\n  return <ChildRoute routeList={routeList} />;\n}\n","/* eslint-disable camelcase */\n\nimport React, { useEffect } from 'react';\nimport { Route, Switch, withRouter, Redirect, useHistory } from 'react-router-dom';\nimport routeList from '@/router';\nimport useReducers from '@/redux/user';\nimport useQuery from '@/hooks/useQuery';\nimport storage from '@/utils/storage';\n\n// window.BMAP_PROTOCOL = 'https'\nconst RouterComponent = props => {\n  const history = useHistory();\n  const [, action] = useReducers();\n  const query = useQuery()\n\n  useEffect(() => {\n    if (query._stk) {\n      storage.setLocalStorage('_stk', query._stk)\n    }\n\n    if (\n      ['/user/login', '/user/register', '/user/activate', '/', '/tokenlogin'].includes(\n        history.location.pathname\n      )\n    ) {\n      action.getUserInfoSilent();\n    } else {\n      action.getUserInfo();\n    }\n\n    const unlisten = history.listen(() => {\n      window.scrollTo(0, 0);\n    });\n\n    return () => unlisten();\n  }, []);\n\n  // 结束\n  return (\n    <Switch>\n      {routeList.map(item => {\n        if (item.redirect) {\n          return (\n            <Redirect\n              key={item.path}\n              to={`${item.redirect}${props.location.search}`}\n              from={item.path}\n            />\n          );\n        }\n        return <Route key={item.path} {...item} />;\n      })}\n      <Route path=\"*\">\n        <Redirect to=\"/\" />\n      </Route>\n    </Switch>\n  );\n};\n\nexport default withRouter(RouterComponent);\n","import React, { useMemo } from 'react';\nimport ReactDOM from 'react-dom';\nimport { Router } from 'react-router-dom';\nimport { Provider } from 'react-redux';\nimport { ConfigProvider } from 'antd';\nimport 'intersection-observer';\nimport Copyright from '@/components/Copyright';\nimport 'dayjs/locale/zh-cn';\nimport dayjs from 'dayjs';\nimport zhCN from 'antd/es/locale/zh_CN';\nimport enUS from 'antd/es/locale/en_US';\nimport getStore from '@/utils/store';\nimport history from '@/utils/history';\nimport useI18n from '@/redux/i18n';\nimport RouterComponent from './main';\nimport './style/global-style.scss';\nimport 'antd/dist/antd.variable.min.css';\n\ndayjs.locale('zh-cn');\n\n// window.BMAP_PROTOCOL = 'https'\n\nconst store = getStore();\nconst ROOT = document.getElementById('root');\n\nConfigProvider.config({\n  theme: {\n    primaryColor: '#7e84ff',\n  },\n});\n\nfunction Main() {\n  const [state] = useI18n();\n\n  const locale = useMemo(() => {\n    if (state.locale === 'en') {\n      return enUS;\n    }\n\n    return zhCN;\n  }, [state.locale]);\n\n  return (\n    <ConfigProvider locale={locale}>\n      <Router history={history}>\n        <RouterComponent />\n        <Copyright />\n      </Router>\n    </ConfigProvider>\n  );\n}\n\nconst App = () => (\n  <Provider store={store}>\n    <Main />\n  </Provider>\n);\n\nReactDOM.render(<App />, ROOT);\n","import { createI18n } from '@/redux/i18n';\n\nexport default createI18n({\n  en: {\n    直销渠道: 'Direct Sales Channel',\n    代理渠道: 'Agency Channel',\n    数字渠道: 'Digital Channel',\n    一次性交费: 'One-time Payment',\n    分期交费: 'Installment Payment',\n    分期交费一次性交费兼有: 'Installment Payment with One-time Payment',\n    灵活交费: 'Flexible Payment',\n    短期: 'Short-term',\n    长期: 'Long-term',\n    个人: 'Individual',\n    团体: 'Group',\n    普通型: 'Ordinary Type',\n    万能型: 'Universal Type',\n    分红型: 'Dividend Type',\n    投资连结型: 'Investment Linked Type',\n    税收递延型: 'Tax Deferred Type',\n    专属商业养老: 'Exclusive Commercial Pension',\n    商业养老金: 'Commercial Pension',\n    无: 'None',\n    在售: 'On Sale',\n    停售: 'Stop Sale',\n    停用: 'Stop Use',\n    未售: 'Not Sale',\n    学生平安保险: 'Student Safe Insurance',\n    少儿专属产品: 'Child-specific Product',\n    女性专属产品: 'Female-specific Product',\n    航空意外保险: 'Air Accident Insurance',\n    老年专属产品: 'Elderly-specific Product',\n    个人养老金产品: 'Personal Pension Product',\n    网销渠道: 'Online Sales Channel',\n    电销渠道: 'Tele Sales Channel',\n    公司直销: 'Company Direct Sales',\n    团险渠道: 'Group Insurance Channel',\n    个险渠道: 'Individual Insurance Channel',\n    经纪代理: 'Brokerage Agency',\n    银邮代理: 'Postal Savings Agency',\n    银行代理: 'Bank Agency',\n    个人代理: 'Individual Agency',\n    保险专业代理: 'Insurance Professional Agency',\n    其他兼业代理: 'Other Joint Business Agency',\n    '短期（一年及一年以下）': 'Short-term (one year or less)',\n    '长期（超过一年或含有保证续保条款）':\n      'Long-term (over one year or with guaranteed renewal clause)',\n  },\n  zh: {},\n});\n","import { useCallback, useMemo } from 'react';\nimport useI18n from './i18n';\n\nexport default function useOptions() {\n  const [t] = useI18n();\n\n  const toOptions = useCallback(\n    arr => {\n      return arr.map(item => ({ value: item, label: t(item) }));\n    },\n    [t]\n  );\n\n  const specialOptions = useMemo(() => {\n    return toOptions([\n      '无',\n      '学生平安保险',\n      '少儿专属产品',\n      '女性专属产品',\n      '航空意外保险',\n      '老年专属产品',\n      '个人养老金产品',\n    ]);\n  }, [toOptions]);\n\n  const saleStatusOptions = useMemo(() => {\n    return toOptions(['在售', '停售', '停用', '未售']);\n  }, [toOptions]);\n\n  const saleChannelOptions = useMemo(() => {\n    return [\n      {\n        label: t('直销渠道'),\n        value: '直销渠道',\n        children: toOptions(['公司直销', '团险渠道', '个险渠道']),\n      },\n      {\n        label: t('代理渠道'),\n        value: '代理渠道',\n        children: toOptions([\n          '经纪代理',\n          '银邮代理',\n          '银行代理',\n          '个人代理',\n          '保险专业代理',\n          '其他兼业代理',\n        ]),\n      },\n      {\n        label: t('数字渠道'),\n        value: '数字渠道',\n        children: toOptions(['网销渠道', '电销渠道']),\n      },\n    ];\n  }, [toOptions, t]);\n\n  const paymentTypeOptions = useMemo(() => {\n    return toOptions(['一次性交费', '分期交费', '分期交费一次性交费兼有', '灵活交费']);\n  }, [toOptions]);\n\n  const periodTypeOptions = useMemo(() => {\n    return toOptions(['短期（一年及一年以下）', '长期（超过一年或含有保证续保条款）']);\n  }, [toOptions]);\n\n  const underwriteOptions = useMemo(() => {\n    return toOptions(['个人', '团体']);\n  }, [toOptions]);\n\n  const designTypeOptions = useMemo(() => {\n    return toOptions([\n      '普通型',\n      '万能型',\n      '分红型',\n      '投资连结型',\n      '税收递延型',\n      '专属商业养老',\n      '商业养老金',\n    ]);\n  }, [toOptions]);\n\n  return {\n    specialOptions,\n    saleStatusOptions,\n    saleChannelOptions,\n    paymentTypeOptions,\n    periodTypeOptions,\n    underwriteOptions,\n    designTypeOptions,\n  };\n}\n","import * as fRedux from '@/utils/redux';\n\nimport decryptString from '@/utils/decrypt';\n\nconst { createActions } = fRedux.default;\nconst namespace = 'enums';\nconst initState = {};\n\nconst { useReducers } = createActions(namespace, initState, {\n  getCompanies: [\n    (http, dispatch, getState) => {\n      const { user } = getState();\n      return http.get(`/api/product/companyCats`).then(res => {\n        return decryptString(user.salt, res.result);\n      });\n    },\n    (state, companies) => ({ companies }),\n  ],\n  queryProduct: [\n    (params, http, dispatch, getState) => {\n      const { user } = getState();\n      const url = {\n        default: '/api/product/productNameCats',\n        dividend: '/api/dividend/getProductNameCats',\n      }[params.productType || 'default'];\n\n      return http.get(url, { params }).then(res => {\n        return decryptString(user.salt, res.result);\n      });\n    },\n    (state, products) => ({ products: products.records || products || [] }),\n  ],\n  queryOuterProduct: [\n    (params, http, dispatch, getState) => {\n      const { user } = getState();\n      return http.get(`/api/universal/getProductNameCats`, { params }).then(res => {\n        return decryptString(user.salt, res.result);\n      });\n    },\n    (state, products) => ({ products: products || [] }),\n  ],\n  updateProducts: [products => products, (state, products) => ({ products })],\n  queryProductType: [\n    (http, dispatch, getState) => {\n      const { user } = getState();\n      return http.get(`/api/product/productCats`).then(res => {\n        return decryptString(user.salt, res.result);\n      });\n    },\n    (state, response) => ({ productTypeTree: response || [] }),\n  ],\n});\n\nexport default useReducers;\n","import { useEffect, useMemo } from 'react';\n\nimport dayjs from 'dayjs';\nimport useReducers from '../enums';\n\nexport function useCompanyOptions() {\n  const [state, actions] = useReducers();\n\n  useEffect(() => {\n    actions.getCompanies();\n  }, []);\n\n  return useMemo(() => {\n    return (state.companies || []).sort((c1, c2) => {\n      return c1.pinyin[0] > c2.pinyin[0] ? 1 : -1;\n    });\n  }, [state.companies]);\n}\n\nexport function useProductTypeTree() {\n  const [state, actions] = useReducers();\n\n  useEffect(() => {\n    actions.queryProductType();\n  }, []);\n\n  return useMemo(() => {\n    return state.productTypeTree || [];\n  }, [state.productTypeTree]);\n}\n\nexport function useYearOptions(minYear = 2020) {\n  return useMemo(() => {\n    const now = dayjs().year();\n\n    return new Array(now - minYear + 1).fill(1).map((item, index) => {\n      return {\n        value: now - index,\n        label: now - index,\n      };\n    });\n  }, [minYear]);\n}\n\nexport function useReportTypeOptions() {\n  return useMemo(() => {\n    return [\n      {\n        value: 'ANNUAL',\n        label: '年报',\n      },\n      {\n        value: 'SOLVENCY',\n        label: '偿付能力报告',\n      },\n    ];\n  }, []);\n}\n","import { createActions } from '@/utils/redux';\nimport { useCallback } from 'react';\nimport lodash from 'lodash';\nimport getProperties from '@/utils/properties';\nimport storage from '@/utils/storage';\n\nconst namespace = 'i18n';\n\nconst initState = {\n  locale: storage.getLocalStorage('_locale') || getProperties('V_LOCALE') || 'zh',\n  // locale: 'zh',\n  messages: {},\n};\n\nconst { useReducers } = createActions(namespace, initState, {\n  update: [locale => locale, (state, locale) => ({ locale })],\n  switch: [() => {}, state => ({ locale: state.locale === 'zh' ? 'en' : 'zh' })],\n});\n\nexport default useReducers;\n\nexport function createI18n(messages) {\n  return () => {\n    const [state] = useReducers();\n\n    const t = useCallback(\n      (key, options) => {\n        const message = lodash.get(messages, [state.locale, ...key.split('.')]) || key;\n        if (options) {\n          return message.replace(/{(\\w+)}/g, (match, p1) => {\n            if (p1 in options) {\n              return options[p1];\n            }\n            return match;\n          });\n        }\n        return message;\n      },\n      [state.locale, messages]\n    );\n\n    return [t, state.locale];\n  };\n}\n","const BrowserLogger = require('alife-logger');\n\nexport const environment = (function () {\n  const { hostname, port } = window.location;\n  switch (true) {\n    case !!port:\n      return 'local';\n    case /test/.test(hostname):\n      return 'daily';\n    case /uat/.test(hostname):\n      return 'pre';\n    default:\n      return 'prod';\n  }\n})();\n\nconst monitor =\n  environment === 'prod'\n    ? BrowserLogger.singleton({\n        pid: 'c03fyuvck2@46639d7d790c245',\n        appType: 'web',\n        imgUrl: 'https://arms-retcode.aliyuncs.com/r.png?',\n        sendResource: true,\n        enableLinkTrace: true,\n        behavior: true,\n      })\n    : {\n        setConfig() {},\n      };\n\nmonitor.setConfig({\n  enableSPA: true,\n  useFmp: true,\n  environment,\n  parseHash: () => {\n    return window.location.pathname;\n  },\n  ignore: {\n    ignoreApis: [/.*problem\\/processing\\/list.*/, /.*get_problem_interactions.*/, /ws\\/target.*/],\n  },\n});\n\nexport default monitor;\n","export default window.sensors;\n","import * as fRedux from '@/utils/redux';\nimport monitor from '@/utils/monitor';\nimport tracker from '@/utils/tracker';\nimport md5 from 'js-md5';\nimport storage from '@/utils/storage';\n\nconst { createActions } = fRedux.default;\n\nconst namespace = 'user';\nconst initState = {};\n\nfunction loginHandle(state, res) {\n  const { result } = res;\n\n  if (result?.userVO?.id) {\n    localStorage.setItem('userId', result.userVO.id);\n    tracker.setProfile({ urd: md5(`${result.userVO.id}`) });\n    monitor.setConfig({\n      setUsername: () => md5(`${result.userVO.id}`),\n    });\n  }\n\n  return {\n    ...(result?.userVO || {}),\n    logined: !!result?.userVO,\n    loginChecked: true,\n  };\n}\n\nfunction signupHandle(state, res) {\n  const { result } = res;\n\n  if (result?.id) {\n    localStorage.setItem('userId', result.id);\n    tracker.setProfile({ urd: md5(`${result.id}`) });\n    monitor.setConfig({\n      setUsername: () => md5(`${result.id}`),\n    });\n  }\n\n  return {\n    ...(result || {}),\n    logined: !!result?.id,\n    loginChecked: true,\n  };\n}\n\nconst { useReducers } = createActions(namespace, initState, {\n  sendSms: [\n    (data, http) =>\n      http.post(`/api/user/sms`, { templateCode: 'baobei_register_login_verify_code', ...data }),\n  ],\n  signup: [(data, http) => http.post(`/api/user/register`, data), signupHandle],\n\n  logout: [http => http.post('/api/user/logout')],\n\n  setChannel: [channel => channel, (state, channel) => ({ channel })],\n\n  login: [\n    (data, http) =>\n      http.post(`/api/user/login`, data).then(res => {\n        if (res.result?.token) {\n          storage.setLocalStorage('_stk', res.result.token);\n        }\n        return res;\n      }),\n    loginHandle,\n  ],\n\n  loginToken: [\n    (data, http) =>\n      http.post(`/api/user/loginByToken`, data).then(res => {\n        if (res.result?.token) {\n          storage.setLocalStorage('_stk', res.result.token);\n        }\n        return res;\n      }),\n    loginHandle,\n  ],\n\n  getUserInfoSilent: [\n    http => http.get('/api/user/getCurrentUser', { silent: true }),\n    signupHandle,\n    signupHandle,\n  ],\n  clear: [() => {}, () => ({ salt: '', active: '', id: '', logined: false, loginChecked: true })],\n  getUserInfo: [http => http.get('/api/user/getCurrentUser'), signupHandle, signupHandle],\n  activate: [(params, http) => http.get('/api/user/activate', { params })],\n  sendActivateEmail: [(data, http) => http.post('/api/user/sendActivateEmail', data)],\n});\n\nexport default useReducers;\n","import CryptoJS from 'crypto-js';\n\nimport getProperties from './properties';\nimport tryJson from './json';\n\nconst key = getProperties('iv');\n\n// export function decryptString(iv, str) {\n//   const config = {\n//     iv: CryptoJS.enc.Utf8.parse(iv),\n//     mode: CryptoJS.mode.CBC,\n//     padding: CryptoJS.pad.Pkcs7\n//   }\n//\n//   const decrypted = CryptoJS.AES.decrypt(str, CryptoJS.enc.Utf8.parse(key), config);\n//\n//   return decrypted.toString(CryptoJS.enc.Utf8);\n// }\n\nexport default function decryptString(iv, str) {\n  const config = {\n    iv: CryptoJS.enc.Utf8.parse(iv),\n    mode: CryptoJS.mode.CBC,\n    padding: CryptoJS.pad.Pkcs7,\n  };\n\n  const decrypted = CryptoJS.AES.decrypt(str, CryptoJS.enc.Utf8.parse(key), config);\n\n  return tryJson(decrypted.toString(CryptoJS.enc.Utf8));\n}\n","import { createBrowserHistory } from 'history';\n\nconst history = createBrowserHistory({ basename: BASE_NAME });\n\n// const orgPush = history.push;\n// history.push = function (params) {\n//   if (typeof params === 'string' && (/^\\/h5/.test(params) || /^\\/forum/.test(params))) {\n//     window.location.href = params;\n//     return;\n//   }\n//\n//   if (/^\\/h5/.test(params.pathname) || /^\\/forum/.test(params.pathname)) {\n//     window.location.href = `${params.pathname}?${params.search}`;\n//     return;\n//   }\n//\n//   orgPush(params);\n// };\n\nexport default history;\n","import axios from 'axios';\nimport qs from 'qs';\nimport { message } from 'antd';\nimport storage from '../storage';\nimport history from '../history';\n\nconst instance = axios.create({\n  baseURL: '',\n  headers: {\n    'Content-Type': 'application/json',\n  },\n  paramsSerializer: params => {\n    return qs.stringify(params, { arrayFormat: 'comma' });\n  },\n});\n\ninstance.interceptors.request.use(function (config) {\n  const { headers } = config;\n\n  if (storage.getLocalStorage('_stk')) {\n    headers['Front-Access-Token'] = storage.getLocalStorage('_stk');\n  }\n\n  return {\n    ...config,\n    headers,\n  };\n});\n\ninstance.interceptors.response.use(\n  function (response) {\n    if (response.data?.code === 500) {\n      message.error(response?.data?.message);\n      return Promise.reject(response.data.message);\n    }\n\n    if (response && response.data) {\n      return response.data;\n    }\n\n    return response;\n  },\n  function (error) {\n    const { response, config } = error;\n    if (response?.status === 401 && !config.silent) {\n      history.push('/user/login');\n      return Promise.reject(error);\n    }\n\n    if (response?.status === 500 && response?.data?.message) {\n      message.error(response?.data?.message);\n    }\n    return Promise.reject(error);\n  }\n);\n\nexport default instance;\n","export default function tryJson(str) {\n  try {\n    return JSON.parse(str)\n  } catch(err) {\n    console.error(err);\n    return str\n  }\n}\n","const props = PROPERTIES;\n\nexport default function get(key) {\n  return props[key];\n}\n","// ------------------------------------\n// Constants\n// ------------------------------------\nexport const LOCATION_CHANGE = 'LOCATION_CHANGE';\n\n// ------------------------------------\n// Actions\n// ------------------------------------\nexport function locationChange(location = '/') {\n  return {\n    type: LOCATION_CHANGE,\n    payload: location,\n  };\n}\n\n// ------------------------------------\n// Specialized Action Creator\n// ------------------------------------\nexport const updateLocation = ({ dispatch }) => {\n  return nextLocation => dispatch(locationChange(nextLocation));\n};\n\n// ------------------------------------\n// Reducer\n// ------------------------------------\nconst initialState = {};\nexport function locationReducer(state = initialState, action) {\n  return action.type === LOCATION_CHANGE ? action.payload : state;\n}\n","import { useMemo } from 'react';\nimport { combineReducers } from 'redux';\nimport { useSelector, useDispatch } from 'react-redux';\nimport set from 'lodash.set';\nimport has from 'lodash.has';\nimport * as loca from './location';\n\nconst combine = combineReducers;\n\nexport let initReducers = { // eslint-disable-line\n  location: loca.locationReducer,\n};\n\nexport const makeRootReducer = (reducers = {}) => {\n  initReducers = { ...initReducers, ...reducers };\n\n  return combineReducers({\n    ...initReducers,\n  });\n};\n\nexport const combineReducersRecurse = function (reducers) {\n  if (typeof reducers === 'function') {\n    return reducers;\n  }\n\n  if (typeof reducers === 'object') {\n    const combinedReducers = {};\n    for (const key of Object.keys(reducers)) {\n      combinedReducers[key] = combineReducersRecurse(reducers[key]);\n    }\n    return combine(combinedReducers);\n  }\n\n  throw new Error({\n    message: 'Invalid item in reducer tree',\n    item: reducers,\n  });\n};\n\nexport const InjectReducerManager = {\n  store: {},\n  loadReducer: [],\n  with(store) {\n    this.injectReducer = this.create(store);\n    this.store = store;\n    this.setLoadReducer();\n  },\n  create:\n    store =>\n    ({ key, reducer, ...reducers }) => {\n      if (has(store.asyncReducers, key)) return;\n      if (!key) {\n        Object.keys(reducers).forEach(eachKey => {\n          set(store.asyncReducers, eachKey, reducers[key]);\n        });\n      } else {\n        set(store.asyncReducers, key, reducer);\n      }\n      store.replaceReducer(combineReducersRecurse({ ...initReducers, ...store.asyncReducers }));\n    },\n  injectReducer({ key, reducer, ...reducers }) {\n    this.loadReducer.push({ key, reducer, ...reducers });\n  },\n  setLoadReducer() {\n    this.loadReducer.forEach(reducer => {\n      this.injectReducer(reducer);\n    });\n  },\n};\n\nexport const injectReducer = ({ key, reducer, ...reducers }) => {\n  InjectReducerManager.injectReducer({ key, reducer, ...reducers });\n};\n\nexport const createReducer = () => {\n  const reducer = (initState = {}) => {\n    // const reduxState = window.reduxState || JSON.parse(sessionStorage.getItem('reduxState')) || {};\n    // const saveState = reduxState[namespace || initState.key];\n\n    // const mergeState = { ...initState, ...saveState };\n    return (state = initState, action = {}) => {\n      const handler = reducer[action.type];\n      if (!handler) {\n        return state;\n      }\n      const result = 'result' in action ? action.result : action.error;\n      const returnHandler = handler(state, result, ...(action.args || []));\n      // const reduxSaveState = JSON.parse(sessionStorage.getItem('reduxState')) || {};\n      // reduxSaveState[namespace || state.key] = returnHandler;\n      // sessionStorage.setItem('reduxState', JSON.stringify(reduxSaveState));\n      return returnHandler;\n    };\n  };\n  return reducer;\n};\n\nexport const action = (\n  { namespace, type, action: asAction, handler = state => state, errorHandler },\n  reducerCreator\n) => {\n  // eslint-disable-line\n  const { REQUEST, SUCCESS, FAILURE } = types(`${namespace}.${type}`) // eslint-disable-line\n  const useReducerCreator = reducerCreator;\n  useReducerCreator[REQUEST] = state => state;\n\n  useReducerCreator[SUCCESS] = (state, result, ...args) => ({\n    ...state,\n    ...handler(state, result, ...args),\n  });\n\n  useReducerCreator[FAILURE] = (state, error) => {\n    if (errorHandler) {\n      return {\n        ...state,\n        ...errorHandler(state, error),\n      };\n    }\n\n    return state;\n  };\n\n  return (...args) => ({\n    type: `${namespace}.${type}`,\n    args,\n    promise: (http, dispatch, getState) =>\n      asAction.apply(this, args.concat([http, dispatch, getState])),\n  });\n};\n\nexport const types = type => ({\n  REQUEST: `async.action.request.${type}`,\n  SUCCESS: `async.action.success.${type}`,\n  FAILURE: `async.action.failure.${type}`,\n});\n\nexport const createActions = (namespace, initState, actions) => {\n  const reducerHandler = createReducer(namespace);\n  const reducerActions = Object.keys(actions).reduce((reducers, next) => {\n    const config = actions[next];\n\n    if (Array.isArray(config)) {\n      [config.action, config.handler, config.errorHandler] = config;\n    }\n\n    return {\n      ...reducers,\n      [next]: action(\n        {\n          ...config,\n          type: `${next}`,\n          namespace,\n        },\n        reducerHandler\n      ),\n    };\n  }, {});\n\n  injectReducer({ key: namespace, reducer: reducerHandler(initState) });\n\n  return {\n    useStore: () =>\n      useSelector(state => {\n        return state[namespace];\n      }),\n    useReducers: () => {\n      const dispatch = useDispatch();\n      const namespaceState = useSelector(state => state[namespace]);\n\n      const dispatchActions = useMemo(() => {\n        return Object.keys(reducerActions).reduce((reducers, key) => {\n          return {\n            ...reducers,\n            [key]: (...args) => {\n              return dispatch(reducerActions[key](...args));\n            },\n          };\n        }, {});\n      }, []);\n\n      return [namespaceState, dispatchActions];\n    },\n    actions: reducerActions,\n  };\n};\n\nexport function action2ReduxHook(actions, namespace) {\n  return function useReducers() {\n    const dispatch = useDispatch();\n    const namespaceState = useSelector(state => state[namespace]);\n\n    const dispatchActions = useMemo(() => {\n      return Object.keys(actions).reduce((reducers, key) => {\n        return {\n          ...reducers,\n          [key]: (...args) => {\n            return dispatch(actions[key](...args));\n          },\n        };\n      }, {});\n    }, []);\n\n    return [namespaceState, dispatchActions];\n  };\n}\n","import { compose, createStore as _createStore, applyMiddleware } from 'redux';\nimport { makeRootReducer } from './reducer';\n// store目录\nexport const createStore = (reducer, initialState, middlewares = []) => {\n  const middls = [...middlewares];\n  let composeEnhancers = compose;\n\n  if (true) {\n    const composeWithDevToolsExtension = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__;\n    if (typeof composeWithDevToolsExtension === 'function') {\n      composeEnhancers = composeWithDevToolsExtension;\n    }\n  }\n\n  const store = _createStore(\n    makeRootReducer(reducer),\n    {},\n    composeEnhancers(applyMiddleware(...middls))\n  );\n\n  store.asyncReducers = {};\n  return store;\n};\n","import { types } from './reducer';\n\nfunction noop() {}\n\nexport const asyncMiddleware =\n  ({ http, onRequest = noop, onSuccess = noop, onError = noop }) =>\n  ({ dispatch, getState }) =>\n  next =>\n  async action => {\n    const { promise, type, args, ...rests } = action;\n    if (!promise) {\n      return next(action);\n    }\n\n    const { REQUEST, SUCCESS, FAILURE } = types(type);\n    const promised = promise(http, dispatch, getState);\n\n    if (!promised?.then) {\n      dispatch({ type: SUCCESS, result: promised });\n      onSuccess({ type: SUCCESS, result: promised, ...rests });\n      return promised;\n    }\n\n    dispatch({ type: REQUEST });\n    onRequest({ type: REQUEST, ...rests });\n\n    try {\n      const result = await promised;\n      dispatch({ type: SUCCESS, result, args });\n      onSuccess({ type: SUCCESS, result, ...rests });\n      return result;\n    } catch (error) {\n      onError({ type: FAILURE, error, ...rests }, { dispatch });\n      if (!error.response || error.response.status !== 401) {\n        console.error(error);\n      }\n\n      if (error.response) {\n        dispatch({ type: FAILURE, error: error.response.data });\n      } else {\n        dispatch({ type: FAILURE, error });\n      }\n      throw error;\n    }\n  };\n","import * as createStore from './createStore';\nimport * as reducer from './reducer';\nimport * as asyncMiddleware from './asyncMiddleware';\n\nexport * from './reducer';\n\nexport default {\n  ...createStore,\n  ...reducer,\n  ...asyncMiddleware,\n};\n","function getJSON(str) {\n  try {\n    return JSON.parse(str);\n  } catch (err) {\n    return str;\n  }\n}\n\nfunction setItem(key, paylod) {\n  sessionStorage.setItem(key, JSON.stringify(paylod));\n}\n\nfunction getItem(key) {\n  return getJSON(sessionStorage.getItem(key));\n}\n\nfunction removeItem(key) {\n  sessionStorage.removeItem(key);\n}\n\nfunction setLocalStorage(key, paylod) {\n  localStorage.setItem(key, JSON.stringify(paylod));\n}\n\nfunction getLocalStorage(key) {\n  return getJSON(localStorage.getItem(key));\n}\n\nfunction removeLocalStorage(key) {\n  localStorage.removeItem(key);\n}\n\nexport default {\n  setItem,\n  getItem,\n  removeItem,\n  setLocalStorage,\n  getLocalStorage,\n  removeLocalStorage,\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \".\" + {\"16\":\"bfa74612\",\"46\":\"3d3ba791\",\"47\":\"700b988c\",\"50\":\"5a741234\",\"87\":\"ab97e75f\",\"526\":\"2019c874\",\"564\":\"9c3b9a91\",\"636\":\"1031f721\",\"647\":\"bfbbbe3d\",\"746\":\"cd3d1185\",\"833\":\"c46a659d\",\"918\":\"12fb8cf8\",\"934\":\"de83a6ae\",\"947\":\"1bfffd35\",\"961\":\"046dc290\"}[chunkId] + \".js\";\n};","// This function allow to reference all chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + ({\"268\":\"libs-0e5d714b\",\"792\":\"main\",\"907\":\"libs-f507df6c\"}[chunkId] || chunkId) + \".\" + {\"145\":\"fd02e5f2\",\"190\":\"e7dfffd5\",\"268\":\"ca01a663\",\"792\":\"49ea65f4\",\"907\":\"a176e009\",\"934\":\"673ba5f3\"}[chunkId] + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.hmd = function(module) {\n\tmodule = Object.create(module);\n\tif (!module.children) module.children = [];\n\tObject.defineProperty(module, 'exports', {\n\t\tenumerable: true,\n\t\tset: function() {\n\t\t\tthrow new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);\n\t\t}\n\t});\n\treturn module;\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t792: 0,\n\t907: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(!/^(145|190|907)$/.test(chunkId)) {\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkinsurance_ui\"] = self[\"webpackChunkinsurance_ui\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\n__webpack_require__.O(undefined, [479,701,907,317,161,15,501,988,894,889,613,504,277,288,713,268,912,125,845,893,875,829,374,987,558,887], function() { return __webpack_require__(95631); })\n__webpack_require__.O(undefined, [479,701,907,317,161,15,501,988,894,889,613,504,277,288,713,268,912,125,845,893,875,829,374,987,558,887], function() { return __webpack_require__(27461); })\nvar __webpack_exports__ = __webpack_require__.O(undefined, [479,701,907,317,161,15,501,988,894,889,613,504,277,288,713,268,912,125,845,893,875,829,374,987,558,887], function() { return __webpack_require__(32322); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","leafPrototypes","getProto","inProgress","dataWebpackPrefix","loadStylesheet","installedCssChunks","React","_ref","routeList","_ref$auth","auth","history","useHistory","_useReducers","useReducers","userInfo","_slicedToArray","path","useRouteMatch","useEffect","logined","loginChecked","push","routes","useMemo","map","item","Com","component","_objectSpread","props","title","_useI18n","locale","useI18n","undefined","document","Switch","Route","strict","key","concat","salt","exact","Redirect","to","Loading","_ref$text","text","_ref$local","local","className","classnames","styles","loading","_defineProperty","LoadingOutlined","size","style","marginTop","createI18n","en","平台介绍","人身险产品库","产品专题","红利实现利率","万能险利率","专属商业养老险利率","重疾险对比","养老年金险对比","增额终身寿险对比","产品报告","保司报告","监管文件","发文检索","智能AI","前往登录","欢迎您","意见反馈","退出登录","zh","_useReducers2","actions","_useState","useState","_useState2","activeSubmenu","setActiveSubmenu","_useI18n2","t","showLogo","window","top","showSubmenu","useCallback","submenu","navs","menus","name","href","children","filter","companyCode","includes","logout","_asyncToGenerator","_regeneratorRuntime","_callee","_context","prev","next","storage","removeLocalStorage","clear","replace","stop","src","logo","alt","nav","location","pathname","startsWith","onClick","child","Link","userName","target","rel","Button","type","_ref$fixedLayout","fixedLayout","PageHeader","pager","columns","_ref$selectedProducts","selectedProducts","updateSelectedProducts","updateTableParams","queryParams","tableParams","_ref$showSelected","showSelected","scroll","query","innerLoading","setInnerLoading","sorterColumns","col","column","dataIndex","sortOrder","order","onPage","_ref2","page","pageSize","params","pageNo","_x","_x2","apply","arguments","onChange","_ref3","_callee2","sorter","_context2","_x3","_x4","_x5","rowSelection","selectedRowKeys","id","onSelectAll","selected","selectedRows","changeRows","lodash","_toConsumableArray","Boolean","some","row","onSelect","record","rowData","records","Table","rowKey","dataSource","pagination","Pagination","showSizeChanger","showQuickJumper","total","current","outerProduct","productType","lableOnly","_ref$searchParams","searchParams","_objectWithoutProperties","_excluded","setLoading","state","updateProducts","options","products","labels","label","Array","from","Set","value","onSearch","useDebounce","v","abrupt","queryOuterProduct","productName","queryProduct","delay","Select","_extends","dropdownMatchSelectWidth","filterOption","labelInValue","notFoundContent","Spin","fn","leading","timer","useRef","setTimeout","_len","length","args","_key","clearTimeout","useQuery","qs","search","ignoreQueryPrefix","useSafeEffect","effect","deps","unmounted","cleanup","isUnmounted","useScript","url","checkName","loaded","setLoaded","el","createElement","body","appendChild","onload","useLocation","onSuccess","onError","_config$url","error","config","dispatch","response","status","silent","message","info","_fRedux$default","fRedux","createStore","asyncMiddleware","InjectReducerManager","middlewares","http","asyncHandler","AsyncLoader","load","COMPT","then","C","default","loader","查询","重置","form","_ref$extraAction","extraAction","wrapperChildren","hidden","Col","span","Form","classNames","container","wrapperCol","onFinish","action","htmlType","icon","SearchOutlined","ReloadOutlined","Row","gutter","grid","openWindow","_window2","_window","stk","getLocalStorage","indexOf","open","年报","偿付能力报告","季度","报告类型","更多","看报告","详情","公司名称","年份","_createActions","createActions","getState","user","get","res","decryptString","result","updateQueryParams","queryDetail","reportDetail","getReportToken","_state$pager2","_state$pager3","_state$pager4","catch","viewReport","_state$queryParams","sent","content","_state$pager","width","render","_","内容","companyOptions","useCompanyOptions","yearOptions","useYearOptions","typeOptions","useReportTypeOptions","values","option","toLowerCase","pinyin","PageLayout","SearchForm","Item","showArrow","allowClear","showSearch","placeholder","Input","ReportTable","_state$reportDetail","_state$reportDetail2","_state$reportDetail3","_state$reportDetail4","_state$reportDetail5","_state$reportDetail6","_state$reportDetail7","_state$reportDetail8","_state$reportDetail9","spCompanyReport","reportName","companyName","reportPeriod","spRiskEvaluation","lastQuarter","lastQuarterRating","lastLastQuarter","lastLastQuarterRating","subtitle","table","tableLayout","x","numberRender","Number","isFinite","toFixed","percentRender","Query","match","useParams","table1","align","topFivePremiumIncomeProducts","useTopFivePremiumIncomeProducts","table2","_useReducers3","topThreePolicyholderInvestmentPaymentProducts","useTopThreePolicyholderInvestmentPaymentProducts","table3","_useReducers5","topThreeVariableLifeInsuranceAccountPaymentProducts","useTopThreeVariableLifeInsuranceAccountPaymentProducts","table4","_useReducers7","fixed","spSolvencyMarginRatios","useSolvencyMarginRatios","table5","_useReducers9","spKeyRevenueIndicators","useKeyRevenueIndicators","table6","_useReducers1","top3SurrenderRate","useTop3SurrenderRate","table7","_useReducers11","top3SurrenderSize","useTop3SurrenderSize","Summary","TableSection","产品名称","产品类别","设计类型","特殊属性","承保方式","保险期间","交费方式","条款文字编码","销售状态","销售渠道","官网披露时间","标签","看条款","费率表","现价表","说明书","termContent","cats","split","timestamp","dayjs","format","disabled","hasRateFile","hasValueFile","hasDescFile","_state$tableParams","报备年份","条款内容","开始时间","结束时间","请输入至少一个搜索条件","RangePicker","DatePicker","_Form$useForm","useForm","productTypeTree","useProductTypeTree","_useOptions","useOptions","specialOptions","saleStatusOptions","periodTypeOptions","paymentTypeOptions","underwriteOptions","designTypeOptions","saleChannelOptions","JSON","parse","setFieldsValue","handleSalesChannelChange","flatValues","flat","Infinity","Object","entries","直销渠道","代理渠道","数字渠道","forEach","parent","every","isEmpty","keys","isArray","searchValues","discloseTime","productTypeParams","productParams","product","ids","productCategoryL1","productCategoryL2","productCategoryL3","productCategoryL4","join","discloseTimeBegin","discloseTimeEnd","salesChannel","Cascader","expandTrigger","multiple","maxTagCount","popupClassName","mode","ProductSelect","separator","picker","downloadUrl","_downloadUrl","fileName","blobUrl","link","_args","responseType","URL","createObjectURL","display","setAttribute","click","removeChild","revokeObjectURL","visible","onCancel","Modal","footer","wrapClassName","qr","updateUrl","发文文号","发文名称","发文状态","有效","已经废止","部分条文废止","发布时间","状态","部分条文更新","看全文","productId","date","Alert","statusOptions","highlight","dangerouslySetInnerHTML","__html","replaceAll","RegExp","个团渠道","发文内容","无效","queryEnums","enums","keyValue","docName","HighlightMatch","contentText","valid","toOptions","items","_item$children","code","reduce","opts","opt","_opt$children","propertyOrPerson","showClear","suffixIcon","Tooltip","QuestionCircleOutlined","designCategory","longOrShort","indOrGroup","已选中","对比","结算年月","结算利率","保证利率","最低","最高","post","toggleShowSelected","setShowSelected","备注","最低保证利率","QueryTable","_state$selectedProduc2","_state$selectedProduc3","settlementDate","rest","productNames","encodeURIComponent","settlementDateBegin","settlementDateEnd","viewCompare","_state$selectedProduc","getFieldsValue","outerProductId","settlementBegin","settlementEnd","arrayFormat","disabledDate","now","diff","Checkbox","checked","marginRight","SwapOutlined","cascader","Group","group","noStyle","step","suffix","min","max","controls","main","xAxis","series","echarts","chartRef","chartDom","activeLine","init","on","e","seriesName","setOption","lineStyle","opacity","right","bottom","left","borderWidth","containLabel","legend","show","color","fontSize","tooltip","trigger","formatter","index","innerHTML","axisValue","alignItems","marker","flex","textAlign","fontFamily","firstChild","yAxis","splitNumber","minInterval","nameLocation","nameGap","nameTextStyle","padding","axisLabel","axisTick","data","height","ref","end","start","subtract","outerProductIds","startOf","endOf","distance","fill","m","month","line","_line$","smooth","find","settlementRate","Chart","extra","_objectDestructuringEmpty","arr","labelInsurancePeriodsOptions","labelPensionStartAgeOptions","labelPensionPaymentMethodOptions","annuityTypeOptions","otherProductAttributesOptions","labelMinInsurableAgeOptions","labelMaxInsurableAgeOptions","labelPensionPaymentPeriodOptions","guaranteedPensionPaymentPeriodOptions","dividendDistributionMethodOptions","percentFromFloatRender","num","formatted","decimalPart","padEnd","lineFeedRender","phs","p","marginBottom","queryByIds","contrastProducts","养老年金领取规则","养老年金保证给付期间","身故给付规则","起始领取年龄","领取方式","领取类型","其他属性","最小投保年龄","最大投保年龄","给付期间","是否约定养老年金保证给付期间","养老年金险","万能账户最低保证利率","稳健型账户最低保证利率","红利分配方式","更多字段","expanded","setExpanded","designType","useWatch","_params$productNames","CaretUpOutlined","CaretDownOutlined","CompanySelect","rowClassName","sticky","getFields","rows","field","_state$contrastProduc","cols","remark","hasType","_state$contrastProduc2","fixedRows","paddingLeft","appendRows","ContrastPanel","Contrast","illnessTypeOptions","policyTermsOptions","yesornoOptions","maxInsureAgeOptions","multiplePaymentRuleOptions","重疾险","重疾病种数量","重疾分组数","重疾给付次数","其他产品属性","重疾险类型","中症病种数量","中症是否可选责任","轻症病种数量","轻症是否可选责任","特疾病种数量","罕见病种数量","多次重疾给付规则","多次重疾是否可选责任","console","log","首次重疾给付规则","header","minEntryAgeOptions","maxEntryAgeOptions","selectTab","hasProductIds","contrastLoading","setContrastLoading","setSelectTab","setSelectedPerm","permTerm","selectedPerm","selectedPermLabel","queryRateByIds","permTerms","perms","queryRateByIdsAndPermTerm","contrastRateProducts","queryPermTermForCashAndIRR","contrastCashAndIRROptions","主要责任","其他责任","是否支持减保","有效保额增长率","增额终身寿险","是否区分缴费期内外给付","是否连生保险","是否支持加保","是否支持年金转换","apeGrowthRateMin","apeGrowthRateMax","tag","_state$contrastRatePr","ages","age","maxAge","Math","allRates","sex","y","soomth","finded","prem","axisPointer","xAxisIndex","parseInt","verticalAlign","handleChange","Radio","optionType","buttonStyle","maleRow","femaleRow","male","female","detailCols","hasData","hasRate","val","maxPrem","_row$key","_row$key2","bordered","updateSearchParams","updateSelectedPermTerm","cashData","_useLifeReducers","useLifeReducers","lifeState","_state$cashData","policyYears","policyYear","maxPolicyYear","csv","markPoint","symbol","axisLine","interval","splitLine","_lifeState$contrastCa3","_lifeState$contrastCa4","_state$selectedPerm2","_state$searchParams5","_state$searchParams6","_state$searchParams7","_useLifeReducers2","lifeActions","_state$searchParams","premTerm","_state$searchParams2","_lifeState$contrastCa","first","premTermLabel","ageOptions","_state$selectedPerm","premTermChange","_state$searchParams3","_state$searchParams4","_selected$ages","ageChange","multipleMap","rowProductDetail","lodashHas","lodashSet","maleMultiple","femaleMultiple","_lifeState$contrastPr","placement","Badge","count","_state$records","irr","formatPercent","setShowArrow","rateComponent","permLabel","Search","subGroup","Detail","useRate","cashComponent","useCash","irrComponent","useIRR","Promise","all","handleTabChange","tab","_state$permTerms","_state$contrastCashAn","productCols","onCell","colSpan","InfoCircleOutlined","productInfoComponent","DoubleRightOutlined","selectedTag","updateSelectedTag","现金分红","保额分红","分红年份","现金红利实现率","增额红利实现率","终了红利实现率","incrementalDividendYieldMin","incrementalDividendYieldMax","actualDividendYieldMin","actualDividendYieldMax","firstProductId","tabCols","toFloat","assign","_state$data","_state$data2","maxDividendYear","dividendYear","minDividendYear","hasSeries","_state$data3","actualDividendYield","incrementalDividendYield","firstItem","dividendRemark","hasSeries2","_state$data4","finalDividendYield","series2","onQuery","setProducts","_useState3","_useState4","结算年度","账户类型","accountTypeOptions","_useUserReducers","useUserReducers","vipModalVisible","setVipModalVisible","settlementYear","userLevel","settlementYearBegin","settlementYearEnd","onQueryProduct","SearchProduct","fieldNames","VipModal","year","ChildRoute","openReport","bg","cover","pdfjsLib","pdfjsViewer","_useState5","_useState6","scale","setScale","_useState7","keyword","_useState8","setSearch","_useState9","_useState0","matchs","setMatchs","eventRef","pdfViewer","canvas","pdf","_useState1","_useState10","loadPercent","setLoadPercent","_useState11","_useState12","setPage","_useState13","_useState14","pagesCount","setPagesCount","currentScale","scaleOptions","round","scaleChange","increaseScale","findIndex","decreaseScale","gotoPage","querySelector","scrollIntoView","pdfjsWorker","task","GlobalWorkerOptions","workerSrc","getDocument","cMapUrl","cMapPacked","enableXfa","onProgress","progressData","promise","eventBus","EventBus","pdfLinkService","PDFLinkService","pdfFindController","PDFFindController","linkService","PDFViewer","findController","setViewer","setDocument","highlightMatches","contents","_pageContents","newMatchs","pageMatches","summary","scrollMode","currentPageNumber","highlightAll","phraseSearch","onDownload","onPrevPage","onNextPage","Divider","progress","progressBar","sider","operation","MinusCircleOutlined","PlusCircleOutlined","DownloadOutlined","ProductReport","withRouter","_stk","setLocalStorage","getUserInfoSilent","getUserInfo","unlisten","listen","scrollTo","redirect","store","initialState","with","getStore","ROOT","getElementById","Main","enUS","zhCN","ConfigProvider","Router","RouterComponent","Copyright","theme","primaryColor","App","Provider","ReactDOM","一次性交费","分期交费","分期交费一次性交费兼有","灵活交费","短期","长期","个人","团体","普通型","万能型","分红型","投资连结型","税收递延型","专属商业养老","商业养老金","无","在售","停售","停用","未售","学生平安保险","少儿专属产品","女性专属产品","航空意外保险","老年专属产品","个人养老金产品","网销渠道","电销渠道","公司直销","团险渠道","个险渠道","经纪代理","银邮代理","银行代理","个人代理","保险专业代理","其他兼业代理","getCompanies","companies","dividend","queryProductType","sort","c1","c2","_useReducers4","minYear","initState","getProperties","messages","update","switch","p1","BrowserLogger","require","environment","_window$location","hostname","port","test","monitor","singleton","pid","appType","imgUrl","sendResource","enableLinkTrace","behavior","setConfig","enableSPA","useFmp","parseHash","ignore","ignoreApis","loginHandle","_result$userVO","userVO","localStorage","setItem","tracker","setProfile","urd","md5","setUsername","signupHandle","sendSms","templateCode","signup","setChannel","channel","login","_res$result","token","loginToken","_res$result2","active","activate","sendActivateEmail","iv","str","CryptoJS","Utf8","CBC","Pkcs7","decrypted","decrypt","tryJson","toString","createBrowserHistory","basename","BASE_NAME","instance","axios","create","baseURL","headers","paramsSerializer","interceptors","request","use","_response$data","_response$data2","reject","_response$data3","_response$data4","err","PROPERTIES","LOCATION_CHANGE","combine","combineReducers","initReducers","payload","makeRootReducer","reducers","combineReducersRecurse","_typeof","combinedReducers","_i","_Object$keys","Error","loadReducer","this","injectReducer","setLoadReducer","reducer","has","asyncReducers","set","eachKey","replaceReducer","_excluded2","_this","_excluded3","createReducer","handler","_ref4","reducerCreator","namespace","asAction","_ref4$handler","errorHandler","_types","types","REQUEST","SUCCESS","FAILURE","useReducerCreator","_len2","_key2","reducerHandler","reducerActions","_config","useStore","useSelector","useDispatch","namespaceState","dispatchActions","action2ReduxHook","middls","composeEnhancers","compose","composeWithDevToolsExtension","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","_createStore","applyMiddleware","noop","_ref$onRequest","onRequest","_ref$onSuccess","_ref$onError","rests","promised","_t","getJSON","paylod","sessionStorage","stringify","getItem","removeItem","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","call","amdO","O","chunkIds","priority","notFulfilled","i","fulfilled","j","splice","r","n","getter","__esModule","d","a","getPrototypeOf","obj","__proto__","ns","def","getOwnPropertyNames","definition","o","defineProperty","enumerable","f","chunkId","promises","u","miniCssF","g","globalThis","Function","hmd","prop","prototype","hasOwnProperty","l","done","script","needAttach","scripts","getElementsByTagName","s","getAttribute","charset","nc","origin","crossOrigin","onScriptComplete","event","onerror","timeout","doneFns","parentNode","bind","head","Symbol","toStringTag","nmd","paths","resolve","fullhref","existingLinkTags","dataHref","existingStyleTags","findStylesheet","linkTag","errorType","realHref","createStylesheet","miniCss","installedChunks","installedChunkData","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","__webpack_exports__"],"sourceRoot":""}