{"version":3,"sources":["common/Message/index.js","common/Select/index.js","utils/request.js","common/Input/index.js","common/Button/index.js","components/FrontendAuth/AuthMap.js","common/Table/index.js","common/Dialog/index.js","common/Pagenation/index.js","common/BreadCrumbs/index.js","common/Drawer/index.js","services/Derived.js","common/Form_D/index.js","common/Layout/index.js","common/Switch/index.js","components/BreadCrumbsAndTablde/index.js","common/Loadding/index.js","common/Loadding/img/loadding.png","utils/formatJson.js","services/application.js","config/config.js","services/api.js","common/Empty/img/no_data@2x.png","common/Empty/img/plan@2x.png","common/Empty/img/no_auth@2x.png","common/Empty/img/net_abnormal@2x.png","common/Empty/img/data_abnormal@2x.png","common/Empty/img/empty_left@2x.png","common/Empty/img/no_search@2x.png","common/Empty/index.js","utils/formatTime.js","services/midTable.js","services/dataAccess.js","services/metaData.js","services/alertRules.js","utils/submit.js","pages/common/index.js","common/Tabs/index.js","services/dataStandars.js","services/operationConfiguration.js","common/Radiobox/index.js","services/atom.js","common/Enable/index.js","common/Checkbox/index.js","services/dataVisualization.js","services/modifier.js","utils/common.js","pages/Market/Metadata/common.js","common/Input2/index.js","routers/switchRoutes.js","services/auditInfoPage.js","common/MulRadiobox/index.js","common/TimePicker/TimePage.js","common/TimePicker/index.js","common/DateTimePicker/index.js","pages/NoRight.js","common/Popover/index.js","common/Textarea/index.js","common/Cascader/index.js","services/AjaxApi.js","customHooks/api.js","services/management.js","customHooks/UseGetTopic.js","common/DatePicker/formatAllDays.js","common/DatePicker/index.js","img/icon_16_bj@2x.png","pages/Market/Metadata/TableDetails/common/AuthText.js","common/Steps/index.js","common/TreeNew/index.js","common/TreeNew/img/tree_edit@2x.png","common/TreeNew/img/tree_add@2x.png","common/TreeNew/img/tree_del@2x.png","common/FlowChart/Path/index.js","common/FlowChart/Tools/index.js","common/FlowChart/util/common.js","common/FlowChart/index.js","common/CopyText/img/icon_12_copy@2x.png","common/CopyText/index.js","utils/copyText.js","pages/Market/Metadata/TableDetails/img/auth_technological.svg","pages/Market/Metadata/TableDetails/common/AuthApply.js","pages/MachFactory/Derived/Detail/Blood/img/level3.png","pages/Knowledge/DataManagement/ConfigRule.js","common/Water/index.js","routers sync /Router/.js$","redux sync nonrecursive /Model/.js$","redux/apiIndexModel.js","redux/apiModel.js","redux/applicationModel.js","redux/countModel.js","redux/dataAccessModel.js","redux/databaseModel.js","redux/keyIndicatorAllocationModel.js","redux/labelManagementModel.js","redux/layoutModel.js","redux/midTableViewModel.js","redux/pageModel.js","redux/topicModel.js","redux/userModel.js","components/ConfirmWin/index.js","pages/MachFactory/Atom/components/EditData.js","pages/MachFactory/Atom/index.js","pages/MachFactory/Derived/components/EditData.js","pages/MachFactory/Derived/components/DialogShowData.js","pages/MachFactory/Derived/components/DialogShowRunData.js","pages/MachFactory/Derived/components/util.js","pages/MachFactory/Derived/components/EditIndicatorsData/AddIndicators.js","pages/MachFactory/Derived/components/EditIndicatorsData/DialogShowFilterData.js","pages/MachFactory/Derived/components/EditIndicatorsData/AddFilter.js","pages/MachFactory/Derived/components/EditIndicatorsData/AddArea.js","pages/MachFactory/Derived/components/EditIndicatorsData/FloatIndicators.js","pages/MachFactory/Derived/components/EditIndicatorsData/EditIndicatorsData2.js","pages/MachFactory/Derived/index.js","services/dimen.js","pages/MachFactory/Dimension/components/EditData.js","pages/MachFactory/Dimension/dimen.js","pages/MachFactory/Dimension/components/EditMapData.js","pages/MachFactory/Dimension/dimenMap.js","pages/MachFactory/Dimension/index.js","pages/MachFactory/Modifier/components/EditData.js","pages/MachFactory/Modifier/components/DialogShowData.js","pages/MachFactory/Modifier/index.js","pages/MachFactory/Application/AddApplicationWin.js","pages/MachFactory/Application/ReRunWin.js","pages/MachFactory/Application/index.js","utils/handleGlobalClose.js","pages/MachFactory/Application/common/Cascader/index.js","pages/MachFactory/Application/common.js","pages/MachFactory/Application/ApplicationSettingWin.js","pages/MachFactory/Application/RegularRerunWin.js","common/Tree/index.js","pages/MachFactory/Application/ApplicationDetail/TagTree.js","pages/MachFactory/Application/ApplicationDetail/IndicatorAttributes.js","pages/MachFactory/Application/SetTopWin.js","pages/MachFactory/Application/ApplicationDetail/SelectedAttributes.js","pages/MachFactory/Application/ApplicationDetail/TabPage.js","pages/MachFactory/Application/ApplicationDetail/index.js","pages/MachFactory/Application/ApplicationDetail.js","pages/MachFactory/Api/AddApiWin.js","pages/MachFactory/Api/ConfirmWin/index.js","pages/MachFactory/Api/index.js","pages/MachFactory/Api/ApiDetail/DialogShowTemplateConfig.js","pages/MachFactory/Api/ApiDetail/TagTree.js","pages/MachFactory/Api/ApiDetail/img/icon_16_bj@2x.png","pages/MachFactory/Api/common.js","pages/MachFactory/Api/common/Cascader/index.js","pages/MachFactory/Api/ApiSettingWin.js","pages/MachFactory/Api/ApiDetail/SelectedAttributes.js","pages/MachFactory/Api/ReRunWin.js","pages/MachFactory/Api/RegularRerunWin.js","pages/MachFactory/Api/ApiDetail/TabPage.js","pages/MachFactory/Api/ApiDetail/index.js","pages/MachFactory/Api/ApiDetail.js","pages/MachFactory/Api/indexDetail/TagTree.js","pages/MachFactory/Api/indexDetail/IndicatorAttributes.js","pages/MachFactory/Api/SetTopWin.js","pages/MachFactory/Api/indexDetail/SelectedAttributes.js","pages/MachFactory/Api/indexDetail/SelectedAttributesTwo.js","pages/MachFactory/Api/EditCurrentWin.js","pages/MachFactory/Api/indexDetail/TabPage.js","pages/MachFactory/Api/indexDetail/index.js","pages/MachFactory/Derived/Detail/Blood/img/level0.png","pages/MachFactory/Derived/Detail/Blood/img/level2.png","pages/MachFactory/Derived/Detail/Blood/index.js","pages/MachFactory/Derived/Detail/Blood/img/level1.png","pages/commomContext/derived.js","pages/MachFactory/Derived/Detail/Log/index.js","config/derived.js","pages/MachFactory/Derived/components/ReRunWin.js","pages/MachFactory/Derived/Detail/index.js","routers/DataMachRouter.js","pages/common/auditInfoPage.js","pages/Knowledge/DataManagement/DataReview.js","pages/Knowledge/DataManagement/win/DataBaseWin.js","pages/Knowledge/DataManagement/win/DataLogWin.js","pages/Knowledge/DataManagement/SubmitDataWin.js","pages/Knowledge/DataManagement/DbManagement.js","pages/Knowledge/DataManagement/LogManagement.js","pages/Knowledge/DataManagement/index.js","services/dataGovern.js","pages/Knowledge/DataGovern/TableTempConfig/index.js","common/UpLoad/index.js","pages/Knowledge/DataGovern/BusinessDataUpload/index.js","pages/Knowledge/DataGovern/BusinessDataUploadRecord/index.js","pages/Knowledge/DataGovern/index.js","pages/Knowledge/MidTable/AddWin/index.js","pages/Knowledge/MidTable/ReRunWin.js","pages/Knowledge/MidTable/index.js","pages/Knowledge/MidTable/JobPublish/index.js","pages/Knowledge/MidTable/PublishDetail/index.js","pages/Knowledge/MidTable/AddSource/TableSource/index.js","pages/Knowledge/MidTable/AddSource/ViewSource/index.js","pages/Knowledge/MidTable/AddSource/index.js","pages/Knowledge/MidTable/stepList/index.js","pages/Knowledge/MidTable/AddFiled/index.js","pages/Knowledge/MidTable/TableList/index.js","pages/Knowledge/MidTable/TableView/index.js","pages/Knowledge/MidTable/EditMidTable/index.js","pages/Knowledge/DataManagement/accessType/DataAccessPage/index.js","pages/Knowledge/DataManagement/accessType/DataLog/index.js","pages/Knowledge/DataManagement/accessType/DataAccessTest/index.js","pages/Knowledge/DataManagement/DataAccess.js","services/logManagement.js","pages/Knowledge/LogManagement/EditWin/index.js","pages/Knowledge/LogAccess/CollectionServiceManagement/StepWin/LogDetails.js","pages/Knowledge/LogAccess/CollectionServiceManagement/StepWin/CollectionTask.js","pages/Knowledge/LogAccess/CollectionServiceManagement/StepWin/StatusWin.js","pages/Knowledge/LogAccess/CollectionServiceManagement/img/check_img@2x.png","pages/Knowledge/LogAccess/CollectionServiceManagement/img/success_img@2x.png","pages/Knowledge/LogAccess/CollectionServiceManagement/img/error_img@2x.png","pages/Knowledge/LogAccess/CollectionServiceManagement/index.js","pages/Knowledge/LogAccess/ResolveDistributionConfiguration/StepWin/DistributeWin.js","pages/Knowledge/LogAccess/ResolveDistributionConfiguration/index.js","pages/Knowledge/LogAccess/LogIdConfiguration/StepWin/CollectionWin.js","pages/Knowledge/LogAccess/LogIdConfiguration/index.js","pages/Knowledge/LogAccess/IpAccessConfiguration/StepWin/MachineWin.js","pages/Knowledge/LogAccess/IpAccessConfiguration/index.js","pages/Knowledge/LogAccess/QualityMonitoring/StepWin/DetailedWin.js","pages/Knowledge/LogAccess/QualityMonitoring/StepWin/SupplementWin.js","pages/Knowledge/LogAccess/QualityMonitoring/index.js","pages/Knowledge/LogAccess/index.js","pages/Knowledge/LogAccess/ResolveDistributionConfiguration/LogAccessDetail/index.js","pages/Knowledge/LogAccess/ResolveDistributionConfiguration/LogAccessDetail/setupTwo.js","routers/DataCollectRouter.js","pages/Knowledge/LogManagement/index.js","services/monitoringEye.js","pages/Monitor/MonitoringEye/index.js","pages/Monitor/MonitoringEye/ChatArea.js","pages/Monitor/MonitoringEye/MonitoringEyeDetail.js","pages/Monitor/QualityControl/EarlyWarningRules/common.js","pages/Monitor/QualityControl/index.js","pages/Monitor/QualityControl/EarlyWarningRules/WarnStrategy.js","pages/Monitor/QualityControl/EarlyWarningRules/SelectAddInputGroup.js","pages/Monitor/QualityControl/EarlyWarningRules/util/validate.js","pages/Monitor/QualityControl/EarlyWarningRules/EditControlWin.js","pages/Monitor/QualityControl/EarlyWarningRules/OverViewWin.js","pages/Monitor/QualityControl/EarlyWarningRules/index.js","utils/validateFun.js","pages/Monitor/BusinessIndicatorsOperation/utils/const.js","pages/Monitor/BusinessIndicatorsOperation/IndicatorOperationConfiguration/EditBusinessIndicaWin.js","pages/Monitor/BusinessIndicatorsOperation/IndicatorOperationConfiguration/BusinessIndicatorsOperation.js","common/InputTip/index.js","pages/Monitor/BusinessIndicatorsOperation/ArchiveL4/EditWin.js","pages/Monitor/BusinessIndicatorsOperation/ArchiveL4/index.js","pages/Monitor/BusinessIndicatorsOperation/FormConfig/EditWin.js","pages/Monitor/BusinessIndicatorsOperation/FormConfig/index.js","pages/Monitor/BusinessIndicatorsOperation/index.js","utils/monitor.js","components/SelectUsers/index.js","pages/Monitor/MonitorManagement/MonitorConfig/EditWin.js","services/monitorSetting.js","pages/Monitor/MonitorManagement/index.js","pages/Monitor/MonitorManagement/SendRecord/index.js","pages/Monitor/MonitorManagement/MonitorConfig/index.js","services/keyIndicatorAllocation.js","pages/Monitor/KeyIndicatorAllocation/IndexGroupConfiguration/RelateWin.js","pages/Monitor/KeyIndicatorAllocation/IndexGroupConfiguration/StepWin/BasicConfiguration.js","pages/Monitor/KeyIndicatorAllocation/IndexGroupConfiguration/StepWin/ConfigGroup.js","pages/Monitor/KeyIndicatorAllocation/IndexGroupConfiguration/StepWin/GroupingConfiguration.js","pages/Monitor/KeyIndicatorAllocation/IndexGroupConfiguration/StepWin/Staffing.js","pages/Monitor/KeyIndicatorAllocation/IndexGroupConfiguration/StepWin/index.js","pages/Monitor/KeyIndicatorAllocation/IndexConcernManagement/EditWin.js","pages/Monitor/KeyIndicatorAllocation/index.js","pages/Monitor/KeyIndicatorAllocation/IndexGroupConfiguration/index.js","pages/Monitor/KeyIndicatorAllocation/IndexConcernManagement/index.js","routers/SmartOperationRouter.js","services/dataSearch.js","pages/common/useAllTablecfg.js","pages/DataGasStation/DataSearch/DataList/index.js","pages/DataGasStation/DataSearch/common/index.js","pages/DataGasStation/DataSearch/ExportRecord/index.js","pages/DataGasStation/DataSearch/index.js","common/DropDown/index.js","pages/DataGasStation/DataSearch/SearchEport/index.js","img/icon_16_sc@2x.png","pages/Monitor/img/searchImg.svg","pages/Monitor/UserSearch/img/defaultUser.svg","pages/Monitor/UserSearch/img/user.png","services/userSearch.js","pages/Monitor/UserSearch/common.js","pages/Monitor/UserSearch/Base/index.js","pages/Monitor/UserSearch/Base/BaseInfo.js","pages/Monitor/UserSearch/Base/LinkAccount.js","components/CollapseWithTime/img/call.svg","components/CollapseWithTime/Collapse/index.js","components/CollapseWithTime/index.js","pages/Monitor/UserSearch/Service/TrajectInfo.js","pages/Monitor/UserSearch/Service/Trajectory.js","pages/Monitor/UserSearch/Service/index.js","pages/Monitor/UserSearch/Service/WorkOrder.js","pages/Monitor/UserSearch/DisplayTraceDetail/index.js","pages/Monitor/UserSearch/index.js","customHooks/UseGetUserTraceItem.js","pages/DataGasStation/DataVisualization/win/CatalogueWin.js","pages/DataGasStation/DataVisualization/win/ReportWin.js","pages/DataGasStation/DataVisualization/win/SortWin.js","pages/DataGasStation/DataVisualization/index.js","pages/DataGasStation/DataVisualization/img/sort_img@2x.png","pages/DataGasStation/DataVisualization/img/open_tree@2x.png","pages/DataGasStation/DataVisualization/img/close_tree@2x.png","routers/DataGasStationRouter.js","pages/Market/Dictionary/index.js","pages/Market/Dictionary/img/icon-03.png","pages/Market/Dictionary/img/icon-02.png","pages/Market/Dictionary/img/icon-01.png","pages/Market/Dictionary/img/icon-04.png","services/dictionary.js","pages/Market/Dictionary/img/icon-order-01.png","pages/Market/Dictionary/img/icon-order-02.png","pages/Market/Dictionary/img/icon-order-03.png","pages/Market/Dictionary/img/icon_12_right@2x.png","pages/Market/common.js","pages/Market/components/EditDataStandardWin.js","pages/Market/DataStandard/index.js","img/icon_56_xz@2x.png","img/icon_56_xz_hover@2x.png","pages/Market/DomainManagement/index.js","services/subjectDomainDetail.js","pages/Market/components/StandardDistribution.js","pages/Market/components/TopicAllClass.js","pages/Market/components/BaseInfo.js","pages/Market/SubjectDomainDetail/index.js","pages/Market/DataStandardDetail/index.js","pages/Market/Metadata/EditMetadataWin.js","pages/Market/Metadata/index.js","pages/Market/Metadata/TableDetails/Alert.js","common/Input3/index.js","common/Card/index.js","pages/Market/Metadata/TableDetails/components/DbBaseInfo.js","pages/Market/Metadata/TableDetails/components/EditBaseDbWin.js","utils/topic.js","pages/Market/Metadata/TableDetails/Base.js","pages/Market/Metadata/TableDetails/Blood.js","pages/Market/Metadata/TableDetails/Review.js","pages/Market/Metadata/TableDetails/index.js","routers/DataMarketRouter.js","services/labelManagement.js","pages/LabelProcess/LabelManagement/LabelStandardManagement/EditWin.js","pages/LabelProcess/LabelManagement/common/UseLabelName.js","customHooks/UseStandardItemSelects.js","pages/LabelProcess/LabelManagement/TicketLabelRules/EditWin.js","pages/LabelProcess/LabelManagement/TicketLabelRules/StepWin/LabelTest.js","pages/LabelProcess/LabelManagement/TicketLabelRules/StepWin/LabelRuleConfig.js","pages/LabelProcess/LabelManagement/TicketLabelRules/StepWin/index.js","pages/LabelProcess/LabelManagement/OfflineTaskManagement/EditWin.js","pages/LabelProcess/LabelManagement/index.js","pages/LabelProcess/LabelManagement/LabelStandardManagement/index.js","pages/LabelProcess/LabelManagement/TicketLabelRules/index.js","pages/LabelProcess/LabelManagement/OfflineTaskManagement/index.js","services/labelProcess.js","pages/LabelProcess/UserLabel/index.js","pages/LabelProcess/UserLabel/UserLabelDetail/Basic/index.js","pages/LabelProcess/UserLabel/UserLabelDetail/Info/index.js","pages/LabelProcess/UserLabel/UserLabelDetail/Detail/index.js","pages/LabelProcess/UserLabel/UserLabelDetail/Log/index.js","pages/LabelProcess/UserLabel/UserLabelDetail/index.js","pages/LabelProcess/UserLabel/img/icon_16_bj@2x.png","pages/LabelProcess/UserLabel/UserLabelWin/index.js","pages/LabelProcess/UserLabel/UserLabelWin/setupTwo.js","pages/LabelProcess/UserLabel/img/icon_test-img@2x.png","routers/LabelProcessRouter.js","components/Layout/UILayout.js","components/img/logo.svg","components/Layout/AuditInfo.js","components/Layout/UILayoutNavbar.js","components/FrontendAuth/index.js","routers/index.js","services/userService.js","AppRouter.js","store.js","reportWebVitals.js","index.js"],"names":["SdwMessage","record","Message","customClass","type","success","message","obj","error","warning","info","SdwSelect","selectInputRef","React","createRef","selectInputWrapRef","state","isValidatePass","showSelectList","showClearIcon","validateText","isFilter","curInputVal","isShowToUp","handleGlobalClose","e","ReactDOM","findDOMNode","current","contains","target","text","_","isArray","props","data","filter","i","id","value","setState","filterVal","isMultipleChoice","onInputFilter","handleClearInput","preventDefault","onChange","validate","focus","handleClick","curIsShowToUp","clientY","window","innerHeight","dialogHeight","disabled","onDelMultipleValue","item","Array","curValue","cloneDeep","index","findIndex","splice","handleItemClick","push","curID","validateFun","res","handleOnInput","getCurrentVal","document","addEventListener","this","removeEventListener","prevProps","prevState","snapshot","length","sholdCheckValidate","String","indexOf","valArr","split","allOptions","selectedArr","some","j","notExistArr","val","selectItem","isEmpty","join","placeholder","width","listWidth","listMaxHeight","height","clearable","readOnly","label","maxOptionsLength","hideDefaultList","borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius","filterData","slice","wrapDivClassName","iconClassName","selectInputWrapClass","inputClassName","className","style","cursor","ref","onClick","onMouseEnter","onMouseLeave","map","display","overflow","textOverflow","onInput","onFocus","maxHeight","isSelected","disabledObj","arr","key","tip","isDisabled","dividLine","title","fontSize","color","fontWeight","Component","defaultProps","noop","baseReqInst","axios","create","baseURL","requestOptions","basename","withCredentials","baseReqInstYZF","requestOptionsYZF","request","options","config","requestYZF","commonApi","api","params","Promise","resolve","reject","then","code","get","msg","catch","err","fileDownload","url","location","href","hostname","origin","openNewWin","winObj","open","opener","SdwInput","inputRef","isOnFocus","hideSearchField","searchValue","handleChange","handleBlur","onBlur","onClear","handleKeyDown","keyCode","onEnterKeyDown","blur","multipleValue","onChangeMultipleValue","list","changeMultipleValue","inputValue","curVal","multipleOption","trim","hasPerson","includes","concat","rows","cols","errTip","textareaClassName","filterSearchFieldsArr","selectedFields","name","marginLeft","onKeyDown","v","onInputSearchValChange","Button","iconClass","PureComponent","authMap","oprAuthMap","hasPriv","pathname","AllAuthMap","assign","permissions","sessionStorage","getItem","JSON","parse","console","log","shouldCheckAuth","Table","isCheckClass","checkBoxIdList","allCheckState","tipStyleClass","tipContent","dividLineOnMouseDown","mouseDownClientX","widthList","showDividLine","dividLineIndex","oprShowBoxShadow","hasChildrenList","openChildrenList","inithasChildrenList","childrenString","idList","forEach","initData","initColWidth","columns","reduce","prev","col","isNaN","selectboxChange","checkId","dataSource","checkboxChange","event","stopPropagation","selectAllChange","dataKey","checkTd","dataIndex","dataSourceChildren","idChildren","showTdTip","showState","content","contentNullState","styleClass","offsetTop","offsetLeft","hideTdTip","getTdClassName","tdWhiteSpace","fiexd","classNames","retRows","isLastNoOp","tdEmptyText","showCheck","undefined","showVal","stringify","showTip","getCellClick","checkChildren","handCheckChildren","render","renderEle","renderTip","curArr","pID","flagIndex","retEmptyText","emptyText","trClick","onRowClick","tableTdClick","onMouseDown","k","clientX","getCurWidth","curWidth","onMouseUp","moveX","curWidthArr","differenceWith","isEqual","classTableHeadName","tableStyle","tbodyMinHeight","tbodyHeight","tableHeight","setOverflow","newDataSource","childList","row","userSelect","isUserSelect","position","minHeight","bind","DEFAULT_POSITION","x","y","DEFAULT_MARGINOPTION","left","top","Dialog","contentRef","isMouseDown","marginOption","ContentNode","changeVisible","visible","cancelText","sureText","hideCancelButton","hideSureButton","onCancelClick","onSureClick","hideHeader","sureBtnDisabled","cancelBtnDisabled","cusWrapClass","zIndex","bodyHeight","createPortal","marginTop","paddingBottom","onMouseMove","screenX","screenY","children","body","Pagenation","seqPageStartList","seqPageCenterList","seqPageEndNum","currentPage","currPageCount","gotoPageVal","retPageGroup","parseInt","total","seqPageStartListCount","pageCount","Math","ceil","n1","n2","n3","n4","pageCountChange","curPage","maxPageCount","showChangeCurrentPage","t","setTimeout","getClickPage","clearTimeout","gotoPageChange","Number","updatePageInfo","gotoPageChangeVal","clickPageNum","num","showTotal","showPageCountSelect","pageStyle","pageCountList","showGotoPage","withRouter","connect","pageInfo","page","dispatch","BreadCrumbs","HISTORY","useHistory","history","hideStepsFunc","goBack","path","isFunction","DrawerBody","SdwDrawer","isHide","isShowWin","hanldeClick","prevStates","contentClassName","onIconClick","Body","getStandardSelects","method","getTopicBusiness","getTablecfgFieldsAndStandardList","getAllTablecfg","getTablecfgList","getTablecfgFields","getTargetPage","getPublicCfg","getAllAtomTarget","getAllModifier","getTableFieldsByAtomId","getAllDimMapping","getAllTarget","storeOrUpdateTarget","callback","checkTarget","storeOrUpdateDerive","storeOrUpdateAuth","getChildTarget","getTarget","getTargetResults","timeout","runTargetResult","ajaxPost","runTargetResultAuth","getTargetLogs","getDataKinship","FormInstance","createContext","Form","fields","addFormItemInstance","instance","prop","cb","flag","field","labelPosition","Provider","FormItem","isError","errMsg","context","model","rules","rule","element","func","onFieldBlur","onFieldChange","timer","removeField","required","labelWidth","contextType","Layout","Row","customObj","gutter","justifyContent","justigy","boxSizing","marginBottom","Col","span","margin","Switch","changeValue","switchClassName","BreadCrumbsAndTablde","LeftCrumbsProps","RightCrumbsProps","CenterWrapProps","comp","prototype","LeftCrumbs","RightCrumbs","CenterWrap","IMG_MAP","Loadding","loadding","tipIconWidth","tipIconHeight","transform","src","formatJsonParse","str","defaultVal","jsonData","searchAppInfo","searchAppInfoManage","getAllTopicTarget","getTargetCfgById","searchTarget","searchDistinctTarget","storeNewAppTable","updateNewAppTable","storeAppTarget","updateAppTarget","deleteAppTarget","updatePublishState","getMetricTypeConf","getAppDimField","storeOrUpdateDepth","getDelayTargets","saveAppDelay","getAppDetail","process","REACT_APP_HTML_PREFIX","REACT_APP_WEB_PREFIX","REACT_APP_YZF_PREFIX","REACT_APP_LOG_PREFIX","REACT_APP_WEBSOCKET_PREFIX","__app_env__","routerOptions","hostUrl","host","requestOptionsLOG","requestOptionsWEBSOCKET","pageAppTables","pageAppTablesManage","saveAppConf","updateAppConf","getTemplateConfList","saveTemplateConf","delTemplateConf","pageApiTargets","previewTargets","saveApiTargets","deleteApiTargets","getGroupTree","getModifyTargets","publishApi","storeRelateTarget","getRelateTarget","saveApiDelay","getTemplateDetail","noData","noDataImg","plan","planImg","noAuth","noAuthImg","netAbnormal","netAbnormalImg","dataAbnormal","dataAbnormalImg","emptyLeft","emptyLeftImg","noSearch","noSearchImg","hideImage","innerWidth","icon","hideText","formatTime","time","Date","numHour","date","toJSON","substr","replace","getRangeDateTime","rangeTime","tablePages","getDetailInfo","fieldItems","selectTableList","saveTable","saveNode","saveLink","getNodeFields","getNodeRelateFields","getDetailTreeInfo","saveFields","deleteFields","deleteNode","tablePreview","jobPublish","jobDisable","taskReRun","getTableApiItems","getFieldRuleConf","getAllTasks","getInfoById","getTargetPreview","getCollectConfigList","getLogCollectConfigDetail","setLogCollectConfig","checkLogCollectCfg","getMonitorServerConfigList","setMonitorJoinLogConfig","storeCollection","updateCollection","runDataTask","getMetaDataInfo","getTablecfgById","getItermSelects","getBusinessStatisticByTopic","getStaffs","updateTablecfg","storeTablecfg","getItems","getTablecfgDetail","getTablecfgDetailAuth","getTablecfgFieldById","updateTableField","applyTableAuth","getAlarmCfgList","updateAlarmConf","insertAlarmConf","getAlarmItemSelects","alarmBusinessItemSelects","channelItemSelects","getProblemTypeSelects","storeProblemType","ids","getFormDataParams","keyList","formData","FormData","hasOwnProperty","append","getSearchParams","likeArr","isObject","Object","call","el","operator","LEVEL_TYPE_MAP","DIM","ODS","DWD","DWS","APP","LEVEL_TEXT_MAP","ALL","PENDING","STATE_MAP","UPDATE_CONTEXT_MAP","target_name","target_name_cn","target_type","source_targets","decoration","decoration_ids","group_by_type","group_by_field","metric_type","metric_field","complex_script","enable","create_user","create_time","modify_user","modify_time","depth","store_dimension","field_ref","topic","comments","target_unit","service","time_schedule","cal_fields","cal_expression","store_dimension_cn","empty_drop","delay_expression","granular_category","is_granular","topicBusiness","TARGET_TYPE_MAP","MSG_TYPE_MAP","Tabs","curIndex","curMenuIndex","updateTabsInfo","menu","titleWidth","CUR_COMPONENT","component","border","tabsInfo","searchFields","searchFieldsForAll","getFieldById","getFieldUpdateHistory","getFieldRelativeTableInfo","storeNewField","getIndicatorConfItems","insertIndicatorConf","updateIndicatorConf","getIndicators","getTargets","deleteTarget","getArchiveCodeConfItems","getArchiveCodeArchivesSelect","getArchiveCodeL4Query","getArchiveCodeSelect","insertArchiveCodeConf","updateArchiveCodeConf","getItemsSelect","queryFormsConfPage","getFormById","saveFormConf","Radiobox","changeCheckedFun","checked","srcTableItems","getPage","storeOrUpdateAtomTarget","EnableComp","Boolean","Checkbox","isChecked","disabledArr","marginRight","getPathTree","getPathTreeAuth","insertPath","updatePath","getPathInfo","setHomePath","getHomePath","setNodesSort","staffItems","upData","addData","getTablecfgpreview","getModifierList","getTitle","len","debounce","fn","TypeError","ags","arguments","apply","LTyM","LTxM","getMetaDataDetailInfo","search","items","inputValueIsChange","outDivClassName","switchRoutes","routes","initRoute","Fragment","route","to","from","getMessage","getProcessApproval","applyApproval","colorStyle","TimePage","HourRef","disabledPassed","hour","disableArr","disableTimeRange","hour1","hour2","startHour","endHour","disableHourRange","getHourRange","isHourDisabled","hourClass","onChangeTime","TIME_MAP","prefixInteger","MinRef","min","curHour","min1","min2","isMinDisabled","minClass","SecRef","sec","curMin","startMin","endMin","sec1","sec2","isSecDisabled","secClass","TimePicker","useRef","HourRef2","MinRef2","SecRef2","useState","setHour","setMin","setSec","setHour2","setMin2","setSec2","showTimePickerPage","setShowTimePickerPage","originTime","setOriginTime","enterTimePickerInput","setEnterTimePickerInput","RANGE_TIME_MAP","gloabalClick","onCancelTime","getSingelCurTime","h","m","s","onResetTime","showTimeRangePicker","checkHour","checkMin","useEffect","curTime","startTime","endTime","onParentChangeValue","spanHeight","scrollTop","initScollTop","leftDisableArr","rightDisableArr","disabledTimeRange","farmatRangeTime","strTime","disableValidate","getHours","getMinutes","getSeconds","propsTypes","PropTypes","oneOfType","string","array","bool","number","DateTimePicker","originDateTime","setOriginDateTime","setCurTime","curRightTime","setCurRightTime","curDate","setCurDate","reSetDateTime","showDateTimeRangePicker","DatePicker","fixedDatePickerPage","disabledDateFun","showDateRangePickePage","curDateTime","NoRight","Popover","lineHeight","ShowTip","EMPTY_SELECT_OBJ","texts","SdwCascader","cascaderInputRef","cascaderInputWrapRef","showcascaderList","curSelectObject","levelDataList","beforeLevel","fliterDataList","olderLevelDataList","formatFlatData","parentItem","curItem","findExtraList","shift","childrenList","level","isFliter","curLevelDataList","selectObj","pop","extraList","clickItem","itemChildren","canNotChooseParent","canChooseParent","curRecord","flat","Infinity","listWrapWidth","levelData","CascaderItem","itemList","background","headers","_csrf_token","transformRequest","Qs","async","response","retcode","csrf_token","requestHook","duration","showClose","defaults","interceptors","use","standardItemSelects","getUserTraceItem","getUserTraceDetail","getManageTopics","getTopicInfoById","storeTopic","UseGetTopic","topicAndBusiness","setTopicAndBusiness","getAllDays","year","month","dateValue","getFullYear","getMonth","allDays","theFirstDay","getDay","beforeFirstDay","getDate","theLastDay","PrefixMonthInteger","PrefixInteger","colorClass","isCurrentChiose","getCheckedDaysClass","d","prevPropsRef","setDateValue","showDatePickePage","setShowDatePickePage","setYear","setMonth","showYearBtn","setShowYearBtn","showMonthBtn","setShowMonthBtn","beforeYear","setBeforeYear","dataRange","setDataRange","hideClearIcon","setHideClearIcon","setIsValidatePass","setValidateText","onYearClick","onMonthClick","handleClickDateItem","day","unshift","rangeValues","minVal","maxVal","rightAllDays","tenYearList","dateInputValue","sholdYearDown","sholdYearUp","dayColorClass","AuthText","displayText","showAuthApply","Steps","showSteps","breadMenu","stepMenu","handlePrevBtn","handleNextBtn","setCurIndex","curComp","useMemo","prevBtn","find","nextBtn","stepNumber","padding","isEdit","TreeNew","domainInputVal","currentItem","expendList","allTreeGroupList","getCurList","Set","onGroupClick","group","curExpendList","onClickButton","operateFun","formatTreeDate","tree_level","filterTreeData","onSplice","showFilterInput","curList","prevPros","filterInputWidth","emptyChildrenIsShow","inputPlaceholder","homePathId","treeData","TreeItem","hasChildren","paddingLeft","isEditIconShow","isAddIconShow","isDelIconShow","Path","startP","endP","x1","y1","x2","y2","x3","y3","x4","y4","isNumber","isToBottom","refX","refY","markerHeight","markerWidth","orient","fill","markerEnd","stroke","strokeWidth","Tools","handleDragStart","dataTransfer","setData","nativeEvent","offsetX","offsetY","backgroundColor","draggable","onDragStart","Position","right","bottom","getPosition","curStyle","FlowChart","flowRef","setRecord","pathArr","setPathArr","prevBegin","setPrevBegin","mouseP","setMouseP","showTimePath","setShowTimePath","useLayoutEffect","initRecord","initPathArr","showTools","onDrop","isCreate","getData","now","textContent","ID","cloneRecord","handleDrop","onDragOver","handleUpate","beginID","beginPosition","endID","endPosition","isCopy","setIsCopy","isShowTip","setIsShowTip","handleCopy","copyText","input","createElement","select","execCommand","parentNode","removeChild","copyToClipboard","copyTip","AuthApply","curDbData","applyTimeValue","applyReason","applyUser","loginName","updateCurDbData","submitApplyAuth","days","reason","authTechnological","queue","dataList","changeConfigRule","method_name","fieldList","method_param","delConfigRule","__canvasWM","container","textAlign","textBaseline","font","fillStyle","rotate","args","canvas","setAttribute","ctx","getContext","PI","fillText","parseFloat","base64Url","toDataURL","__wm","querySelector","watermarkDiv","styleStr","classList","add","insertBefore","firstChild","MutationObserver","WebKitMutationObserver","mo","getAttribute","disconnect","observe","attributes","subtree","module","exports","webpackContext","req","webpackContextResolve","__webpack_require__","o","Error","keys","updateAllSelectedIndicator","produce","payload","allSelectedIndicator","updateCurShowSelectedTarget","curShowSelectedTarget","updateOriAllSelectedTarget","oriAllSelectedTarget","changeComfirmVisible","comfirmVisible","updateCurrentClickTreeNode","currentClickTreeNode","updateCurClickTreeValue","curClickTreeValue","updateApiTemplateClickTreeValue","apiTemplateClickTreeValue","updateFilterStr","filterStr","updateTargetTime","targetTime","updateTargetDimension","targetDimension","updateCurrentData","currentData","updateIndexDetailIsEdit","indexDetailIsEdit","reducers","updatePageApiTargets","updatePreviewData","previewData","header","count","increment","decrease","effects","incrementAsync","rootState","decreaseAsync","updateFormData","updateTableData","tableData","updateCurrentPage","pageMap","main","logSecondPage","updateDatabaseInfo","databaseInfo","updatePublicCfgInfo","publicCfgInfo","updateBasicConfiguration","basicConfiguration","updateGroupingConfiguration","groupingConfiguration","updateStaffing","staffing","group_name","remark","two_group","three_group","relate_module","enabled","visible_list","focused_list","subscribe_info_dict","real_time_change","change_day","once_day","change_week","once_week","change_month","once_month","updateLabelRuleConfig","labelRuleConfig","updateLabelRuleConfigID","labelRuleConfigID","updateExample","example","layout","menus","updateTableConf","tableConf","updateLinkConf","linkConf","updatePhysicsTableList","physicsTableList","updateTreeInfo","treeInfo","updateDetailInfo","detailInfo","updateCurrentSource","currentSource","updateStepList","stepList","updateCfgData","cfgData","tree","updateTopicInfo","topicInfo","updateTopic","updateBusiness","business","updateStandardType","standardType","updateUserInfo","userInfo","updateStaffUserList","staffUserList","TYPE_MAP","TYPE_MAP_TEXT","ConfirmWin","cloneArr","typeList","objByID","confirmData","groupBy","isString","hideTitle","EditData","target_name_ch","related_table_id","time_field","calculation","is_same_dim","tableFields","showConfirmWin","that","parame","handleSureClick","onStoreOrUpdateAtomTarget","comitFieldData","enableStateChange","topicData","si","tableList","data_set_chinese","database_name","table_name","field_name","field_name_ch","tableTimeFields","field_type","calculationMethod","enableState","size","autosize","minRows","maxRows","Atom","pagination","per_page","pages","current_page","topicDic","topicServerDic","curTitle","tableShowData","srcTableIArr","limit","getPageData","dval","topicId","topicName","enableName","getcolumns","self","topicID","serviceID","topicText","onClickGetOneData","topicServiceName","sid","toString","pageNum","addOrEdit","query","CUR_GRANULAR","comment","commentError","complex_params","run_cycle","time_cycle","defaultItem","dimNames","modifier","targetData","targetSeachData","targetDataSelectVal","searchKey","expression","btnList","selectedItem","selectedItemId","calculateNum","calculateNumState","metricTypeMap","allEnableTargetArr","warningVisible","errorMsgContent","getAllEnableTarget","handleTargetChange","saveSureAction","handleStoreOrUpdateTarget","handleConfirm","isToBig","handleChangeComment","tabConfigChange","tab","configDataChange","addVirtualProperty","removeVirtualProperty","addVirtualProperty2","removeVirtualProperty2","handleFetchModifier","tid","atomTarget","source_id","dimensionData","dimension","map_name_en","apply_table","tableid","calculateChange","newData","calculateCulSelect","expressionField","calculateCulBack","calculateCulShowAddNum","calculateNumChange","handleGranular","unitList","unit","runCycle","timeCycle","activeName","onTabClick","Pane","multiple","Option","modifier_name","calculateCulClick","Textarea","DialogVisible","timefield","dateRange","dialogVisible","cost_time","theader","fetchItems","getShowDataDefauteTime","zeroFill","date2","getTime","getShowData","gettest","fieldData","dateFieldList","closeDialog","columnData","target_id","start_time","end_time","tmp","onCancel","lockScroll","isShowTime","format","hasReRunPriv","disabledDate","Mapping","float_rate","float_cnt","daily_avg","rank","rank_rate","CHECKED_OPTION","CHECKED_OPTION1","CHECKED_OPTION2","RATE_NAME_MAP","cn","en","CNT_NAME_MAP","AVG_NAME_MAP","AddIndicators","sourceFieldData","onGetTablecfgFieldsAndStandardList","standardMap","originID","rankDimensionData","rangeRankData","rankDimention","group_by_field_Id","group_by_field_key","group_by_field_value","showOrhideContent","setComplexScript","setRankDimension","setRankRange","setSourceOrRangeField","isShow","disabledCheck","baseInfo","handleSubmit","setAddFilterValue","time_schedule_obj","timeCycles","time_schedules","AddFilter","filterDataList","currentRecord","showFilterContent","arrChangeOne","validateIndicateItemValue","filterDataListNew","syncFilterDataList","addIndicators","handleEdit","getColumns","recode","sd","setAdd","DialogShowFilterData","AddArea","setAreaData","addVirtualArea","removeVirtualArea","setAddAreaValue","range_name","gte","lt","FloatIndicators","timeSchedule","cal_expression_list","every","checkedOption","setCheckedValue","setChangeDimensions","dimensionTitle","typeTitle","changeDimension","hasEnabled","checkItem","checkItemIndex","float_type","EditIndicatorsData2","sourceIndicators","indexAttrTime","checkedOption1","checkedOption2","showAddList","innerHTML","addListRef","showOrhideAddList","onGetTargetPage","time_chedule","derivativeTargets","initCheckOption","result","array1","numOne","numTwo","numThree","array2","ele","initArrayIndicator","formatArr1","formatArray1","olderTimeCycleList","uniq","option","option1","option2","onGetTargetCfgById","onGetTablecfg","cloneFormData","cal_index","propsName","getTargetName","indicateItem","str_store","str_group","str_name","getIndicateItem","beAssignObj","setFloatIndicateItem","setAreaIndicateItem","setFilterIndicateItem","formatData","cloneItem","isPass","isStoreEmpty","isTimeCycleEmpty","clearTimeSchedule","cloneObj","cur_time_schedule","ts","ce","newFormData","param","arrayTemp","addDataNew","ONLY_GRANULAR","Derived","indicatorsDialogVisible","indicatorsTitle","indicatorsRecord","currShowDataRow","checkTdIdList","dialogReRunDataVisible","setItem","cloneSearch","strArr","serviceName","storeDimension","dimensionName","isShowButton","jumpToDetail","onClickShowData","showDerivedIndicators","onSureClickOfIndicators","closeRunDataDialog","reRunData","forceUpdate","enableValue","getTableFields","getDimenById","dimMappingAllList","getPageMap","addOrUpdateDimenMap","getDimenMapById","dim_type","dim_name_cn","dim_name_en","data_standard","propertyTableId","propertyInfo","virtualPropertyList","upState","selectVal","selectValList","fieldId","propertyInfoUpData","desc","id2","tableFields2","standardSelectsOptions","filterable","dimensionType","dimensionTypeMap","standardSelctDataDic","PropertySourceSqlTablesDic","dimType","dimTypeName","dataStandardName","selt","editorData","form","tableKey","source_db","source_table","selectList","attr_id","attr_name","attr_id_field_id","virtualPropertyListNew","getOptions","standardData","standard","standardDataDic","topicHasOtherDic","businessId","business_id","businessData","businessDataDic","topic_id","business_name","topicDataList","topic_name","dimenGetOptions","other","dimensionDesc","map_name_cn","source_dim","target_dim","virtualPropertyTwoList","mapping_type","tableFieldsTwo","propertySourceSqlTables","virtualPropertyListInit","selectSourceDimAttrList","tableFieldsIdList","tableIdList","tableFieldsOneNew","source_attr_id","target_attr_id","dimEnName","dimId","sourceDimListDic","targetDimListDic","source_table_id","sourceDimList","itemV","targetDimList","source","orSearch","sourceDimId","targetDimId","attrs","tableFieldSelectList","properList","selectdata","virtualPropertyListDic","plist","formdata","getPropertySourceSqlTables","tables","tableName","filter_value","dataid","source_name","timeField","must","query_string","range_time","range","post","targetDatas","float","curShowDataRecord","AddApplicationWin","appInputValue","zhNameInputValue","domainValue","timeValue","isAppInputValuePass","isZhNameValidateFunPass","isRefreshValuePass","isRespUserValuePass","isDomainValuePass","timeSelectList","refreshValue","respUser","allMembers","iniData","indexFlag","lastIndexOf","table_name_cn","resp_user","getStaff","appNameValidateFun","test","zhNameValidateFun","domainSelectValidateFun","selectValidateFun","respUserValidateFun","resetData","changeDialogVisible","curTopicData","runCycleData","ReRunWin","dataPicker","isChecked2","allTargetArr","table_id","target_name_en","appTable","app_table","changeReRunVisible","reRunVisible","wordBreak","isReadOnly","rangeSeparator","align","Application","creactPerson","curLimit","allAppInfos","publishType","onSearchAppInfo","publish_state","handleReRun","initTableData","curRunCycleData","hGClose","visibleProps","Cascader","showCascaderList","showCascaderSecondList","secondList","fuzzyData","cascaderToggle","toGetSecondList","ajaxFun","setValue","newSelectItem","fuzzyFilter","filterArr","temObj","isErrorTip","errorMsg","TOP_MAP","TOP_MAP_TEXT","formatToIdMap","objMap","dimensionTableMatchingFelds","addField","relateConfig","relate_table_id","relate_field","app_field","f","fieldSettingObj","ApplicationSettingWin","fieldSettingList","oriList","onGetTablecfgList","oriData","ori","fieldName","dim_field_info","addConfigRule","fieldSetting","removeConfigRule","setFieldSettingProps","getField","checkFieldSetting","getParams","relate_config","cloneList","isEqualWith","cloneListMap","oriListMap","addArr","delArr","updateArr","oriItem","onDeleteAppTarget","onUpdateAppTarget","onStoreAppTarget","delete","update","fetchId","FieldSettingRow","onGetTablecfgFields","RegularRerunWin","delayList","checkList","delay_ids","changeDelayReRunVisible","Group","Tree","TagTree","allTargetData","checkedTargetIDs","treeOptions","handleRenderTree","curAllTargetData","addTreeCustomClass","changeCurClickTreeValue","initClickTreeNode","onGetTarget","targetTotal","application","IndicatorAttributes","updateSelectedTarget","checkedTime","checkedDimension","addTarget","dimen","oriTarget","db_id","name_en","top_count","SetTopWim","selectInputValue","numberValidateFun","topValidateFun","isTopType","isSelectPass","updateTargetValue","changeSetTopVisible","setTopVisible","SelectedAttributes","setCurrentPage","setPageCount","curDataSource","start","end","Total","offsetHeight","CUR_TARGET_INDEX","TabPage","datePicker","previewTableHeader","curActiveName","curClickTargetData","initDatePicker","setTime","onSearchPreviewData","timeRange","previewDataMsg","isCurTarget","handleDeleteButtom","handleSetButtom","onReWriteData","curTarget","target_top","previewColumns","isButtomDisabled","onSubmit","ApplicationDetail","settingDialogVisible","regularRerunVisible","checkedDimen","curTargetTime","curTargetDimension","onSearchTarget","changeSettingDialogVisible","hanlderChangeTreeSubmit","hanlderChangeTreeCancel","targetID","isSingelTarget","reWriteData","onPublish","addNewTarget","delOriTarget","updateOriTarget","addParams","formatParams","reInitData","updateParams","deleteParams","name_cn","changeTitle","command","trigger","Menu","Item","onCommand","AddApiWin","project","tableNameValidateFun","rule1","rule2","rule3","paramsData","onSearchApiInfo","insert","modify","Api","editDataVisible","getModifyTargetsList","editDataItem","isDisplayOperate","publishApiTable","submitApiTable","setTemplateConfValue","template_name","dialogEditVisible","dialogDelVisible","templateConfItem","getTemplateList","api_id","templateName","pid","addTemplateConf","saveTemplate","delTemplate","templateConfItemOne","iniPropsData","DialogShowTemplateConfig","ApiSettingWin","target_names","cloneListMapItem","fieldItem","onStoreRelateTarget","setSearchValue","setSettingDialogVisible","Select","setSearch","Input","changeRegularReRunVisible","searchData","cmdStr","disTestTableDataVisible","disTestTableText","isLoading","shouldVerify","searchClone","searchObj","initTestTableData","form_data","env","agg_name","targetApiTest","collapsed","displayObjectSize","displayDataTypes","shouldCollapse","ApiDetail","match","apiIndex","onclickSubmit","curShowSelectedTargetClone","time_cycles","dimension_values","dimension_value","filter_str","enterIndexDetailEdit","short_name","full_name","table_unit","sort_value","alarm_ids","agg_calculate","group_value_one_id","group_value_one_name","group_value_one_select","group_value_two_id","group_value_two_name","group_value_two_select","group_value_three_id","group_value_three_name","group_value_three_select","groupTree","curClickTargetData_index","group_value","group_value_id","changeOneGroup","targets","group_value_name","regex","isDisplayPage","SelectedAttributesTwo","EditCurrentWin","postParams","template_id","iniAllSelectedIndicator","setParamsData","paramsClone","delVisible","hasClickTargetData","editCurrentWinVisible","hasSelectedIndicator","addCurShowSelectedTarget","curShowSelectedTargetProps","handleSetButton","handleDeleteButton","is_edit_target","editHasTargetButton","delHasTargetButton","changeDelVisible","getColumnsTwo","indexDetail","typeMap","topMap","img0","img2","maxDeepth","setMaxDeepth","maxWidth","setMaxWidth","setInitRecord","setInitPathArr","showDialog","setShowDialog","divClick","setDivClick","setPosition","setCurRecord","kinshipData","setKinshipData","setCurID","getLevel","lengthMap","onCloseDialog","commonFunc","sdetail","tdetail","getLeftAndTop","leftMap","getWrapWidth","getTop","getStyle","getDiv","detail","isCurrentID","onDivClick","img3","sdepth","tdepth","curKinshipData","stype","ttype","datasetLength","atomLength","oneLength","appLength","twoIndex","twoLength","max","maxNum","oriLeftMap","stitle","ttitle","hasSameSID","hasSameTID","wrapWidth","flowHeight","aaa","warehouse_level","source_targets_cn","derives","Empty","w","run_status_map","LogPage","curData","setCurData","oper_id","status","r","setReRunVisible","setEmpty_drop","setDelay_expression","setTimeCycle","isSameIndex","next","delay_num","delayExpression","selectedTimeCycleArr","cloneDelayExpression","handleAdd","cloneDelayExpressionClone","cloneDelayExpressionCloneFilter","flex","handleDel","BloodPage","Detail","setBaseInfo","topicMap","setTopicMap","businessMap","setBusinessMap","setVisible","indicatorsVisible","setIndicatorsVisible","getCurItem","topicObj","businessObj","der","routerPath","bar","rootUrl","activeClassName","order","atomData","atomDataDetail","derived","derivedDetail","DerivedDetail","dimensionManage","Dimension","dimensionDetail","modifierManage","Modifier","modifierDetail","applicationDetail","apiDetail","AuditInfoPage","messageArr","setMessageArr","setPageInfo","curStatus","setCurStatus","setIsLoading","approvalTotal","setApprovalTotal","stomMap","setStomMap","onInit","API","finally","onapplyApproval","clonePageInfo","topicArr","bussinessArr","messageContext","message_context","updateContext","isReRun","msg_type","message_title","send_time","send_user","update_time","old_value","new_value","task_status","approval_user","approvalId","Router","values","SubmitDataWin","setDatePicker","setDataSource","setColumns","isLoadding","setIsLoadding","doGetTargetPreview","task_id","curObj","columnArr","today","dataReviewVisible","changeDataReviewVisible","DataBaseWin","curRef","stream_type","task_type","DataLogWin","isBreakTable","setIsBreakTable","logArr","setLogArr","logArrOptios","setLogArrOptios","is_valid","service_name","monitorIDList","configID","taskType","DataReview","currentRef","submitVisible","DataManagement","searchFieldsArr","businessValue","search_create_user","businessArr","businessList","tableID","taskID","curClickData","onGetAllTasks","paramData","data_set_type","curName","addOrEditStandard","onSearchFields","curParams","target_table","LogManagement","search_update_user","onSubmitWork","access_test_result","curPageIndex","store_table_id","update_user","onChangeVisible","dataAccess","DbManagement","priv","hasPrivMenu","getAllModels","getServiceConfig","getAllUploadRecord","deleteUploadRecord","uploadFile","TableTempConfig","UpLoad","files","setFiles","NAME","accept","accees","file","onFileChage","whiteSpace","BusinessDataUpload","businessOption","modelOption","onGetModel","model_name","fileName","fileSize","model_id","verticalAlign","BusinessDataUploadRecord","deleted","onDelete","DataGovern","curMenu","AddWin","job_name","exec_cycle","job_type","editMidTable","schedule_time","job","max_retries","special_code","changeShowAddWin","updatePage","formatDate","hours","minutes","seconds","dateStr","showAddWin","midTableRunCyclesOption","midTableRunCycles","midTableView","is_cover","setShowAddWin","setIsEdit","setSearchObj","setCurClickData","tableNameArr","setTableNameArr","seTableName","midTableList","setMidTableList","isPublishState","updateSearchObj","updateSearchObjBySearch","JobPublish","nodeList","fieldsListOption","result_id","iniDataSourceFields","table_primary_key","partition_field_id","initTableList","job_id","node_id","link","link_id","changeClickTableView","setFormValue","showPublishDialog","PublishDetail","getNodeList","showDetailDialog","TableSource","changeDataSource","setTableNodeValue","timeFieldList","nodeParams","timeCycleList","changeDataSetType","get_time_cycle","ViewSource","setViewNodeValue","tableFieldsList","leftNodeFieldsList","rightNodeFieldsList","linkParams","tableConfList","table_type","left_node_id","right_node_id","groupby_key","left_field","right_field","view_type","concat_type","after_filter","AddSource","fields_conf","sholdTableCheckValidate","sholdViewCheckValidate","initTimeCycle","midTableTimes","addNode","ruleNodeTableParams","table_conf","iniTableViewList","changeShowAddSource","ruleNodeViewParams","link_conf","currentSourceClone","iniFieldsList","table_item","linkParamsClone","showAddSource","StepList","recordList","iniStepList","n","AddField","fieldParams","script","src_reader_id","fieldConfig","fieldTypeMapOption","dataInfoList","field_value","showPopover","isUp","checkAll","isIndeterminate","handleClosePopover","popoverRef","iniFieldTypeMap","field_type_map","getFieldItems","fieldItemsList","fieldParamsClone","fieldParamsState","reader_id","selectConfig","addVirtualGroup","removeVirtualGroup","updateVirtualGroup","renderPopover","clickFieldsList","flexDirection","handleCheckChange","indeterminate","handleCheckAllChange","addFieldsToDataInfoList","checkedCount","fieldListLength","enabledItems","getEnabledItems","existingFields","matchedField","finalDataInfoList","newItem","validateListData","sdwMes","changeShowAddField","fieldItemsClone","clickFieldsListOptions","fieldItemsCopy","mappingType","pids","midTableFunctionMapping","is_column","fieldValue","is_multi","sholdCheck","default","zujianType","TableList","showAddField","dialogDelNodeVisible","previewDataColumns","previewDataList","iniClickData","clickDataSource","editField","deleteFieldsSureClick","delNode","deleteNodeSureClick","addFieldClick","editTableViewNode","changeFieldType","single","combine","previewDataFlush","getPreviewDataColumns","tableViewClickNode","deep","dataClone","positionMap","readerMap","table_conf_clone","link_conf_item","target_node_id","targetNodeIdTem","leftNodeId","rightNodeId","targetNodeId","readerInfo","is_used","getDetailInfoList","linkConfList","EditMidTable","sholdCheckSpecialCodeValidate","showStopDialog","iniEditMidTable","getPublicCfgs","iniTableViewTree","onSubmitSpecialCode","stopTask","DEFAULT_CONFIG_RULE","BINLOG","INIT","DataAccess","sholdSqlCheckValidate","sholdBreakTableCheckValidate","resourseTableValue","targetTableValue","filedNameValue","filedTypeValue","tableRuleValue","configRules","syncType","sqlConfigValue","configRuleList","resourseTableList","targetTableList","filedTypeList","onGetInfoById","pipelineParams","tablename","taskParams","sourceID","sql","suffix_time_field","is_split_table","split_table_type","split_table_rule","fieldRule","field_rule","onChangeConfigRule","beforeVal","currentVal","onDelConfigRule","lastIndex","addConfigRules","pipelineList","task","pipeline","changeCheckedRadiobox","changeCheckedSync","sort","a","b","ConfigRule","Default_form_data","log_topic","white_ip_list","regmatchKeywords","parse_type","separator","encodeFlag","LOG_TOPIC_MAP","oriTableData","setFormData","setTableData","setTargetTableList","setShowConfirmWin","configInfo","tableColumnList","store_table_name_ch","store_table_name_en","can_next","cloneTableData","getDisabled","column_name","onConfirmSubmit","uniqColumnName","getValiidate","curFormData","curTableData","column_example","column_type","column_length","curExample","curlist","delIndex","onDelClick","formRecord","setFormRecord","showResult","setShowResult","setIsPass","logText","updateFormRecord","COMPONENTS","DataAccessPage","DataLog","CurCom","btnArr","notEmpty","ip","port","ip_bak","port_bak","iplist","precursorFileName","sendMaxLine","DEFAULT_DATA","EditWin","changeShowEditWin","formRef","setTopicArr","setBusinessArr","setFormDataProps","cloneForm","defaultD","valid","setMonitorServerConfig","dateFormat","LogDetails","logServerList","ipList","principal","rtx","extra","filebeatAdvancedConfigVOS","staffsList","advancedConfigList","ipListData","optionsList","filebeatConfigItemValueDTOS","queryInputFileConfig","fetch","mode","json","inputFileAdvancedConfigDTOS","queryAdvancedConfig","configId","configItemName","configItemId","configItemValue","queryValidIpList","configType","configName","configValueId","submitClick","filebeatConfigItemValueVOS","collectionTaskSubmit","logVisible","user","CollectionTask","tagList","inputFileId","inputTag","cmd","queryValidInputTag","queryInputFileConfigList","taskVisible","CHECK_OPTION","STATUS_CH","StatusWin","displayList","displayStatus","displayLength","checkerList","sessionId","socketList","client","W3CWebSocket","checkName","socketConnect","onopen","onerror","onmessage","dataFromServer","close","onclose","displayExist","displayLengthClone","statusVisible","CollectionServiceManagement","businessTopic","accessStatus","configList","tagIsEdit","chainCheck","topicRecord","logAddOrEdit","taskAddOrEdit","tableDataClone","inputConfigViewDTOS","iniList","DistributeWin","deliveryType","parseId","storeTableId","storeTableName","storeTableNameZh","topicList","queryDeliveryConfig","getTargetTableList","distributeWinSubmit","distributeVisible","ResolveDistributionConfiguration","createRtx","queryParseConfigList","distributeAddOrEdit","logAccessAddOrEdit","deliveryIsEdit","deliveryConfigQueryDTOS","CollectionWin","inputName","businessTopicId","queryMaxConfigId","maxConfigId","iniDataList","collectionVisible","LogIdConfiguration","queryInputTag","parseStatus","jumpToTabs","deliveryStatus","accessFileStatus","collectionAddOrEdit","MachineWin","cluster","filebeatAdvancedConfigQueryDTOS","machineVisible","IpAccessConfiguration","queryFilebeatConfig","installStatus","machineAddOrEdit","DetailedWin","queryReconciliationDetail","detailedVisible","childrenColumnName","scroll","SupplementWin","exceptionMessage","relevanceTimeCycle","queryReconciliations","supplementVisible","QualityMonitoring","timeGranularity","reconciliationStatus","additionalRecordingStatus","infoVisible","reasonVisible","startDate","setHours","endDate","queryReconciliationAuthority","reconcileStatus","accessReconcileStatus","processReconcileStatus","consumeReconcileStatus","reconciliationDetailed","supplementInfo","abnormalSupplement","abnormalReason","exceptionRecording","exceptionResult","LogAccess","LogAccessDetail","parseType","parseValue","startParseType","startParseValue","endParseType","endParseValue","fieldConfigVOS","tableDataList","deliveryInnerConfigDTOS","queryParseConfig","fieldConfigDTOS","getTableList","fieldType","parseKeys","fieldConfigDTOSItem","cloneTableDataList","newTableDataList","jumpToTwo","getFieldConfig","exampleClone","fixed","dynamic","index1","setupTwo","deliveryConfigList","delKey","queryParseIdByCmd","jumpToOne","delVirtualGroup","submitFinish","logManagement","showEditWin","setShowEditWin","setTopicID","setBusinessList","service_id","cfgList","logAccess","logAccessDetail","SetupTwo","dataManagement","midTable","MidTable","GetHotEventMap","GetHotEventChooseList","GetHotEventOne","GetHotEventUrl","MonitoringEye","enableOptios","typeOptions","typeValue","isPageLoading","prevDatePicker","hasDateAndValidate","showPrevTime","onGetHotEventMap","product","isEffect","onGetHotEventChooseList","suchHeat","such_heat","today_word","tongbi","plain","condition_count","fault_count","arrList","userInfoData","reverse","isLoad","answer","decodeURIComponent","msgtime","dangerouslySetInnerHTML","__html","formatSession","RECORD_TYPE_MAP","MonitoringEyeDetail","detailDate","userProfileData","onGetHotEventOne","session","openDetail","hot_word","reg","RegExp","openid","relation_type","account_type","borderBottom","record_time","record_person","record_type","record_detail","all_session_values","ChatArea","traces","OPR_TYPE_MAP","STRATEGY_TYPE_MAP","Frequency_TIME_MAP","MODULE_ID_OPTIONS","SEND_TYPE_OPTIONS","FIXED_VALUE","FIXED_VALUE_LESS","DEFAULT_ITEM_OBJ","rule_name","left_value","left_operator","right_operator","right_value","data_cycle","DEFAULT_VARIATION_OBJ","MONITOR_TYPE_MAP","SELF","MonitorControl","send_type","alarmRuleName","notifyPerson","ruleName","problemTypeSelects","editData","problemType","selfType","problem_name","searchParams","alarm_rule_name","deal_users","onEditClick","problem_type","is_recommend_case","onEditSureClick","updateEditData","cloneEditData","WarnStrategy","validateIntegerFun","addPolicy","updateWarnStrategyList","firstIndex","removePolicy","onUpdate","strategyData","strategy","isFixValue","SelectAddInputGroup","validateArrFun","handlerList","updateHanderList","relatedOption","person","user_type","related_field","decorate","isCheck","rulers","PERSON_OBJ","DAY","EditControlWin","relatedIndicators","jump_url","alarm_title","alarm_content","fk_id","alarm_field","date_field","monitor_freq_unit","show_time","show_time_unit","recently_monitor","recently_monitor_unit","push_limit_time","alert_freq_unit","push_limit_plot","is_task","monitor_type","dimension_field","dimension_value_name","delay_time","delay_time_unit","currentAlarmData","warnStrategyList","copyMenList","tablecfgFields","dataSourceOptions","alarmItemSelection","alarmBusinessItems","channelSelection","currentAlarmID","getAlarmBusinessItemSelects","op","initFormData","execCycleArr","gettimer","show_time_range","pushLimitTimeArr","delay_timeArr","formatJson","format_json","isCopyOprType","oprType","duplicate_users","alarm_rules_json","newWarnStrategyList","validateWarnFieldFun","addStrategy","removeStrategy","secondIndex","resetCheckValidate","curWarnStrategy","updateCopyMenList","checkIsPassValidate","notNull","notEmptyRule","isPostiveNumberRule","isNumberRule","tendency","recover_point","alarm_repeat_point","handlerListPass","warnStrategyListPass","setErrorMsg","errName","dealBeforeRequetParam","duplicateUsers","isUpdate","changeVisibleFun","setFormDataProp","owner_business","hasnoFkId","warnDementionOptions","field_ref_standard","bussiness","minWidth","branch_business","channel","dimension_value_unit","OverViewWin","showOverViewWin","visibal","setVisibal","dataList2","editControlWinRef","module_id","ruleID","alarmField","showEditControlWin","handleOverView","isInteger","TIME_CYCLE_OPTIONS","Target_VALUE_ITEM","target_rule","alarm_rule","OPRATOR_OPTION","EditBusinessIndicaWin","dimension_id","dimension_name","target_value_configuration","deleteTargetList","initTargetValueConfig","currentConf","processTargetRule","tempArr","processTargetValueConf","onDeleteTarget","getBusinessIndicatorsCfgListBySearch","addTargetConfig","removeTargetConfig","delObj","setTargetValueConfItemValue","indicatorsDimentionList","targetList","BusinessIndicatorsOperation","editBusinessIndicaRef","showEditBusinessIndicaWin","onGetTargets","getIndicatorsDimensionOptions","InputTip","showOptions","onDocClick","handleFocus","archive_name","ai_code","getVal","setSearchData","setTimer","archiveOption","setArchiveOption","l4Option","setL4Option","onArchiveChange","onL4Change","ai_name","arOptions","code_id","parent_name_list","parentCodeList","parent_code_list","L4Options","codeId","codeName","ai_level","archive_code","onArchiveClick","L4","onl4Click","ArchiveL4","setParams","setCurItem","archiveMap","setArchiveMap","productMap","setProductMap","l4Map","setL4Map","onGetArchiveCodeConfItems","jasonData","cloneParams","onSearch","formatSelectOptions","handleOnFocus","form_id","form_name","formConfigOption","setFormConfigOption","formTypeData","setFormTypeData","onFormConfigChange","onFormConfigClick","form_business","form_type","FormConfig","onQueryFormsConfPage","MENU_MAP","IOC","ARCHIVE","FORM","MENU_TEXT_MAP","OperationConfiguration","switchItem","menuKey","MONITOR_TYPE","SelectUser","oriAllMembers","setAllMembers","setMultipleValue","Options","repeat_cycle","period_format","showWin","setShowWin","CurID","repeatCycleMap","setRepeatCycleMap","cycleArr","setCycleArr","templateID","memberKey","send_cycle","cloneJob","info_list","rtx_name","curAllMembers","selectedMember","Drawer","old","delOldParams","setSearchParams","setTitle","setStatus","push_title","successMember","sendList","failMember","job_monitor_type","Enable","onOpenDetail","pageTargetsGroup","relateApiTarget","getPageFocus","saveFocusUser","RelateWin","allModules","setShowRelateWin","apiList","showRelateWin","BasicConfiguration","formDataClone","keyIndicatorAllocation","changeConfigGroup","group_type","GroupingConfiguration","twoGroup","threeGroup","relateModule","three_group_obj","relate_module_obj","onRelationModule","addRelationModule","setRelationModule","relateModuleClone","ConfigGroup","Staffing","subscribe_ing","usedStaff","saveSubmit","focused_list_members","subscribe_info_members","setSholdCheckValidate","ruleFormData","saveTargetsGroup","focusedList","targetsGroupList","user_focused_list","removeFocusedList","addFocusedList","changeFocusedList","targetsGroupListClone","curEditItem","setCurEditItem","setShowSteps","pageConfig","setPageConfig","setApiList","getApi","useCallback","visible_count","indicator_focus_count","indicator_subscribe_count","pageSize","focusList","setFocusList","setName","group_list","monitorManagement","QualityControl","EarlyWarningRules","KeyIndicatorAllocation","BusinessIndicators","getTables","getItemsNew","getTablecfgFieldsNew","exportItemsData","exportTaskItems","useAllTablecfg","BASE_LEVEL_MAP","tableArr","topicAndBusinessRecord","curTopicList","curBusinessList","allBusinessList","curTabID","setCurTabID","updateSearchParams","curSearch","jumpToSearchEport","TYPE_TEXT_MAP","TYPE_CLASS_NAEM_MAP","DataList","apiParams","setApiParams","createUser","setCreateUser","onSetSearchParams","curSearchParams","isLikeType","stateMap","is_download","DataSearch","DropDown","showMenuList","listMaxWidth","showTitle","showTitleMaxNumber","titleClassName","dataSetTypeMap","es","mysql","TIME_ARR","isLocation","functionName","dropMenu","setDropMenu","curDropDownItem","setCurDropDownItem","tableRecord","setTableRecord","allCheckList","setAllCheckList","checkedArr","setCheckedArr","fieldArr","setFieldArr","selectMethod","setSelectMethod","clickButtonMap","setClickButtonMap","setFieldName","indexID","searchList","setSearchList","data_time","selectValue","searchCustomList","setSearchCustomList","dialogConfig","setDialogConfig","allFiledArr","setAllFiledArr","setCode","isApplyAuth","tableRecordTotal","isTotalHeigh","clickButtonMapTmp","searchListClone","searchCustomListClone","propsData","allFilterArray","equal","data_set_id","fieldsArray","fieldNum","fieldArrTmp","dataSetType","onAddItem","maxIndexID","updateSearchList","cloneSearchList","keyValue","getJsonSearch","curEqual","getCustomJsonSearch","fieldIDs","handleOnSearch","field_ids","createCaptcha","ticket","randstr","TencentCaptcha","ready","needFeedBack","show","floor","ret","random","errorCode","errorMessage","loadErrorCallback","changeFieldList","allCheckListTmp","dateTypeMap","searchBtnDisabled","changeSearch","fieldItemI","onDropMenuChange","onDelItem","ChineseName","relationAccount","historyOrder","getUserLabelHbase","accountMap","USER_LABELS","user_gender","user_age","user_hometown","generation","userTranceItem","userLabels","setUserLabels","basicInfo","OPENID","account","accountType","labels","tag_name","defaultUserImg","userImg","PHONE","QQ","WX","USERID","tag_value","qq","phone","is_detail","Base","aiBuleOperType","ivrBuleOperType","imcBuleOperType","isBuleBackground","Collapse","widths","contextKey","contextKeys","contextwidths","isActive","setIsActive","conKeys","conWidths","contextArr","itemType","itemTaskID","keyIndex","archivepathNameHasTaskID","imc_num","callImg","oper_type","CopyText","CollapseWithTime","keyInfo","trajectMap","ALLINONE","IVR","AI","FAQ","WSS","ASYNC","isEffectNumber","getText","p1","p2","TrajectInfo","callInfo","channelValue","jsonparseItem","curTraject","tjkey","childKey","childRecord","childTextArr","crkey","oriCurRelativeVal","setOriCurRelativeVal","relativeVal","setRelativeVal","setChannelValue","relativeOptions","setRelativeOptions","channelOptions","setChannelOptions","traceInfo","setTraceInfo","relationAccountMap","setRelationAccountMap","setCallInfo","proTmp","setProTmp","oriCurID","type_id","product_set","sum","MulRadiobox","isAll","setIsAll","setDataList","descobj","setDescobj","curBaseInfo","setCurBaseInfo","getTableInfo","is_all","tasks","orderStatus","curDataList","startNum","endNum","rel","Service","DisplayTraceDetail","jsonDataStr","GetRequest","doSearch","setDoSearch","showSearchImg","setShowSearchImg","displayTraceDetail","setDisplayTraceDetail","userTraceItem","setUserTraceItem","UseGetUserTraceItem","theRequest","strs","unescape","nick","FullName","getElementById","updateSearch","searchImg","CatalogueWin","setPathTreeData","curPermissionsObj","path_name","LoginName","ReportWin","reportDialogVisible","uri","is_white_node","SortWin","treeList","childrenObj","curChildrenList","treeListId","treeListName","onTabClickName","tree_list","handleSelectChange","changeTreeList","treeListClone","clone","changeTreeChildrenList","curChildrenListClone","sortDialogVisible","DataVisualization","curClickTreeRecord","pathTreeData","layoutSpan","homePath","pathInfo","savePath","pathTreeDataClone","reportAddOrEdit","openSortWin","changeLayoutSpan","frameBorder","datasearch","searchEport","SearchEport","UserSearch","UserSearchDetail","DataVisual","ICON_MAP","getPathName","pathName","Dictionary","comonDomain","countedFields","reloadState","initPieData","echarts","setOption","colors","tooltip","formatter","legend","itemWidth","itemHeight","textStyle","series","radius","avoidLabelOverlap","emphasis","labelLine","jumpToDomainDetail","domain","topicid","seclevel","jumpToDataStandard","typeID","goToDataStandard","standard_type","Window","reload","paddingRight","EXTRA_MAP","EXTRA_MAP_TEXT","TABLE_EXTRA_MAP_TEXT","DataStandardWin","field_define","field_format","owner","field_range","secret_level_id","is_dim","is_sensitive","handleRefresh","typeData","standardOption","topicOption","DataStandard","onSearchFieldsForAll","subjectMap","onGetItermSelects","dataObj","subMap","onGetBusinessByTopic","subjectValue","standardValue","statistic","EditDataStandardWin","DEFAULT_FORM","introduct","system","development_heads","product_heads","DomainManagement","showData","listData","dialogTitle","addImgSrc","addNewImg","editManagement","resetFields","goTopicInfo","handleLink","onMouseenter","addNewHoverImg","onMouseleave","handleCancel","addSubjectDomain","DomainItem","alt","Footer","borderTop","editImg","item1","getAllTopics","storeNewBusiness","StandardDistribution","curStandardItem","onBusinessStatisticByTopic","dropdownMenu","setDropdownMenu","setCurTitle","radioVal","setRadioVal","allData","setAllData","fieldsData","setFieldsData","paginationData","setPaginationData","curStandardType","setCurStandardType","currentChange","setCurrentChange","curTopicID","allRecord","primordial","atom","derive","menuAlign","handleCurStandardType","accordion","FieldItem","small","onCurrentChange","KEY_MAP","createTime","businesses","developmentHeads","productHeads","KEY_TEXT_MAP","SubjectDomainDetail","curSecLevel","curSecLevelData","formatTopicData","resData","extraMap","totalFormat","TopicAllClass","LABEL_MAP","DataStandardDetail","historyData","fieldRelativeTableInfo","fieldUpdateHistoryDate","curHistoryPage","curHistoryLimit","curRelativePage","curRelativeLimit","handleMouseEnter","field_num","onClickToTableInfo","tableId","getLogColumns","initBaseData","getHistory","getFieldTableInfo","editItem","new","label_cn","EditMetadataWin","pattern","address","validataList","paramsList","oprText","freshTableData","dbID","isEs","isCreateTable","add_type","topicOptions","curOwner","curOwnerObj","username","password","deadline","sec_id","TYPE_DATA","LEVEL_DATA","Metadata","tableValue","idValue","topicValue","businessName","levelValue","handleSearch","jumpToDetails","Card","headerTitle","lableWidth","DATA_SET_TYPE_MAP","EditBaseDbWin","justInOnce","topicInputValue","handleTopicInputValue","IDlist","baseDetail","standardObj","standardOptions","field_ref_directory","getTopic","BOOL_MAP","BaseInfo","baseData","keyWord","DATA_SET_TYPE","fieldStandard","onGetTablecfgDetail","curEnabled","feilds","DbBaseInfo","database","Review","MENU","DetailIndex","onGetTablecfgDetailPermission","dispath","insertStandardManage","updateStandardManage","getStandardManageItems","insertOrderRule","updateOrderRule","getOrderRuleItems","testOrderRule","submitTask","getMethods","getTaskFlowItems","elementLabels","label_name","task_label_id","label_type","standard_id","getTopicRecord","labelTypeArr","is_display","labelList","setLabelList","label_field","standardArr","cloneFormDate","handleLabelNameChange","UseLabelName","labelName","idIsLabelLable","standardManageItems","setStandardManageItems","UseStandardItemSelects","TASK_TYPE","dateTimeRangeValue","setDateTimeRangeValue","setTaskType","labelManagement","showTest","setShowTest","isTestSuccess","setIsTestSuccess","label_standard_id","rule_type","process_way","log_id","task_id_field","extract_field","LogIdMap","taskIDFieldArr","setTaskIDFieldArr","ruleTypeArr","setRuleTypeArr","processWayArr","setProcessWayArr","setLabelName","functionNameArr","setFunctionNameArr","ruleType","processWay","logID","function_name","function_handle","curNext","curIsEdit","setCurIsEdit","onSumit","initForm","setLabelTypeArr","labelType","businessRecord","statusArr","setStatusArr","ruleConfigStatus","status_ch","taskFlowStatus","saveConfig","saveRuleConfig","searchDetail","switchStatus","labelTest","getRuleDataSource","UserLabel","ruleDataSourceList","newArr","tag_name_ch","data_source","BasicPage","setCfgData","labelDetail","sensitivityValue","sensitivity","label_value_type","label_value_type_ch","life_cycle","life_cycle_ch","onwer","require_rtx","first_classify","second_classify","value_mapping","InfoPage","ruleData","rule_data","deal_type","deal_type_ch","run_cycle_ch","multi_type","multi_type_ch","time_cycle_ch","user_fields","handle","DetailPage","OPERATE_MAP","logDetail","setLogDetail","searchLogs","result_user_total","import_first_time","import_last_time","searchChangeLogs","oper","UserLabelDetail","labelVisible","labelStopVisible","is_test_pass","jumpToEdit","backPath","useLabel","label_type_ch","intro","UserLabelWin","breadCrumbsTitle","buttonPrevTitle","buttonNextTitle","demandSide","userLabelTopicRecord","onSearchDetail","changeParamsValue","data_source_type","user_field_type","is_sec","testStatus","testWaringText","relationFieldValue","userLabelList","tagValue","scrpt","dicts","ruleNamePlaceholder","stateParams","testClassName","tableListFields","LabelManagement","UILayout","child","Top","Sidebar","Content","AuditInfo","processApproval","setProcessApproval","isImgEnter","setIsImgEnter","isImgEnterHelp","setIsImgEnterHelp","all","r1","r2","arr2","docClick","setInterval","clearInterval","curMessageList","UILayoutNavbar","gotoPath","bars","logoImg","childHasPriv","startsWith","gotoPathState","borderRadius","avatar","FrontendAuth","Routers","router","modules","require","Admin","showComponets","jumpToNoRightPage","onRecord","login","encodeURIComponent","AdminRouter","RootRouter","exact","AppRouter","models","modelFiles","modelName","store","init","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","StrictMode"],"mappings":"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","file":"static/js/main.d8b35468.chunk.js","sourcesContent":["import { Message } from 'element-react'\n\nimport './index.css'\n\nfunction SdwMessage(record) {\n if (typeof record === 'object') {\n return Message({\n ...record,\n customClass: `custom-${record.type}`\n })\n }\n}\n\nSdwMessage.success = message => {\n let obj = typeof message === 'string' ? { message: message } : message\n Message({\n ...obj,\n type: 'success',\n customClass: 'custom-success'\n })\n}\n\nSdwMessage.error = message => {\n let obj = typeof message === 'string' ? { message: message } : message\n Message({\n ...obj,\n type: 'error',\n customClass: 'custom-error'\n })\n}\n\nSdwMessage.warning = message => {\n let obj = typeof message === 'string' ? { message: message } : message\n Message({\n ...obj,\n type: 'warning',\n customClass: 'custom-warning'\n })\n}\n\nSdwMessage.info = message => {\n let obj = typeof message === 'string' ? { message: message } : message\n Message({\n ...obj,\n type: 'info',\n customClass: 'custom-info'\n })\n}\n\nexport default SdwMessage\n","import React, { Component } from 'react'\nimport _ from 'lodash'\nimport PropTypes from 'prop-types'\nimport ReactDOM from 'react-dom'\n\nimport './index.css'\n\nclass SdwSelect extends Component {\n selectInputRef = React.createRef()\n selectInputWrapRef = React.createRef()\n\n static defaultProps = {\n width: null,\n height: 40,\n listMaxHeight: 300,\n placeholder: '全部',\n clearable: true,\n value: '',\n disabled: false,\n readOnly: true,\n data: [],\n sholdCheckValidate: false,\n label: '',\n isMultipleChoice: false,\n hideDefaultList: false,\n disabledObj: {\n arr: [], // 禁用数组\n key: '', // 与data备选项中的哪个字段比较\n tip: '', // 禁用提示语\n },\n\n onChange: _.noop,\n onInputFilter: _.noop,\n onFocus: _.noop,\n }\n\n state = {\n isValidatePass: true,\n showSelectList: false,\n showClearIcon: false,\n validateText: '',\n isFilter: false,\n curInputVal: '', // 模糊匹配输入值\n isShowToUp: false, // 是否向上展示\n }\n\n componentDidMount() {\n document.addEventListener('click', this.handleGlobalClose)\n let record = _.isArray(this.props.data) && (this.props.data.filter(i => i.id === this.props.value)[0] || {})\n let text = record.text || ''\n this.setState({\n curInputVal: text\n })\n }\n\n componentWillUnmount() {\n document.removeEventListener('click', this.handleGlobalClose)\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n // 异步传入的data,有一定的延迟,初始化回显\n if ((prevProps.data.length !== this.props.data.length && this.props.data.length > 0) || (this.props.data.length > 0 && prevProps.value !== this.props.value)) {\n let record = _.isArray(this.props.data) && (this.props.data.filter(i => i.id === this.props.value)[0] || {})\n let text = record.text || ''\n // 异步传入的data,有一定的延迟,初始化回显\n if (!!text && text !== this.state.curInputVal) {\n this.setState({\n curInputVal: text\n })\n }\n }\n\n if (prevProps.sholdCheckValidate !== this.props.sholdCheckValidate) {\n this.validate(this.props.value)\n }\n\n // 一次性批量输入英文 + 英文逗号或者英文分号,进行批量选项的选中,英文必须全匹配才能选中\n if (!prevState.curInputVal && !!this.state.curInputVal && (String(this.state.curInputVal).indexOf(',') !== -1 || String(this.state.curInputVal).indexOf(';') !== -1)) {\n const valArr = String(this.state.curInputVal).split(/[,;]/).filter(i => !!i)\n // console.log('valArr: ', valArr)\n const allOptions = this.props.data\n // console.log('allOptions: ', allOptions)\n if (allOptions.length && valArr.length) {\n const selectedArr = allOptions.filter(i => valArr.some(j => j === i.id))\n // console.log('selectedArr: ', selectedArr)\n if (selectedArr.length) {\n this.props.onChange(selectedArr)\n const notExistArr = valArr.filter(val => !selectedArr.some(selectItem => selectItem.id === val))\n if (!_.isEmpty(notExistArr)) {\n // console.log('notExistArr: ', notExistArr)\n // console.log('不存在的选项:', notExistArr.join(', '))\n this.setState({\n isValidatePass: false,\n validateText: `${notExistArr.join(', ')} 不存在`\n })\n }\n }\n }\n }\n }\n\n handleGlobalClose = e => {\n const node = ReactDOM.findDOMNode(this.selectInputWrapRef.current)\n\n if (!node.contains(e.target)) {\n let record = _.isArray(this.props.data) && (this.props.data.filter(i => i.id === this.props.value)[0] || {})\n let text = record.text || ''\n this.setState({\n showSelectList: false,\n curInputVal: text\n })\n\n let filterVal = ''\n if (this.props.isMultipleChoice) {\n filterVal = []\n }\n this.props.onInputFilter(filterVal)\n }\n }\n\n handleClearInput = e => {\n e.preventDefault()\n this.setState({\n curInputVal: ''\n })\n let record = ''\n\n if (this.props.isMultipleChoice) {\n record = []\n }\n\n this.props.onChange(record, {})\n this.props.onInputFilter(record)\n this.validate('')\n this.selectInputRef.current.focus()\n }\n\n handleClick = (e) => {\n let curIsShowToUp = this.state.isShowToUp\n\n // 一旦向上展示,就固定向上展示\n if (!curIsShowToUp && e.clientY+270 > window.innerHeight) {\n curIsShowToUp = true\n }\n if (this.props.dialogHeight) {\n if (!curIsShowToUp && e.clientY+50 > this.props.dialogHeight) {\n curIsShowToUp = true\n }\n }\n\n if (this.props.disabled) return\n let { showSelectList } = this.state\n this.setState(({\n showSelectList: this.props.isMultipleChoice || !showSelectList,\n isFilter: false,\n isShowToUp: curIsShowToUp\n }))\n }\n\n onDelMultipleValue = item => {\n let { isMultipleChoice, value } = this.props\n\n if (Array.isArray(value)) {\n let curValue = _.cloneDeep(value)\n let index = curValue.findIndex(i => i.id === item.id)\n if (index !== -1) {\n curValue.splice(index, 1)\n }\n this.props.onChange(curValue)\n\n this.validate(curValue)\n }\n this.setState({\n showClearIcon: false,\n showSelectList: isMultipleChoice\n })\n }\n\n handleItemClick = (e, item) => {\n let { isMultipleChoice, value } = this.props\n\n if (isMultipleChoice && Array.isArray(value)) {\n let curValue = _.cloneDeep(value)\n let index = curValue.findIndex(i => i.id === item.id)\n if (index !== -1) {\n curValue.splice(index, 1)\n } else {\n curValue.push(item)\n }\n this.props.onChange(curValue)\n\n } else {\n this.props.onChange(item.id, item)\n }\n\n this.setState({\n showClearIcon: false,\n showSelectList: isMultipleChoice,\n curInputVal: isMultipleChoice ? '' : item.text\n }, () => {\n this.validate(item.id)\n })\n }\n\n validate = curID => {\n\n // 如果没有传入validateFun进行校验,直接跳过\n if (typeof this.props.validateFun !== 'function') {\n return\n }\n\n let res = this.props.validateFun(curID)\n\n // validateFun只有返回true,才会校验通过\n if (res === true) {\n this.setState({\n isValidatePass: res,\n validateText: ''\n })\n } else {\n this.setState({\n isValidatePass: false,\n validateText: res\n })\n }\n }\n\n handleOnInput = e => {\n let curInputVal = e.target.value\n this.props.onInputFilter(curInputVal)\n if (typeof this.props.getCurrentVal === 'function') {\n this.props.getCurrentVal(curInputVal)\n }\n this.setState({\n isFilter: true,\n showSelectList: true,\n curInputVal\n })\n }\n\n render() {\n let {\n placeholder,\n disabled,\n width,\n listWidth,\n listMaxHeight,\n height,\n clearable,\n readOnly,\n data,\n label,\n isMultipleChoice,\n value,\n maxOptionsLength, // 最大展示候选项数量(接口数据过多,用于优化使用)\n hideDefaultList,\n borderTopLeftRadius,\n borderTopRightRadius,\n borderBottomLeftRadius,\n borderBottomRightRadius\n } = this.props\n\n let {\n isValidatePass,\n validateText,\n showSelectList,\n showClearIcon,\n curInputVal,\n isFilter,\n isShowToUp\n } = this.state\n\n let filterData = data\n if (isFilter) {\n filterData = _.isArray(data) ? data.filter(i => !_.isEmpty(i.text) && i.text.indexOf(curInputVal) !== -1) : []\n }\n\n if (!readOnly && _.isArray(filterData) && filterData.length && typeof maxOptionsLength === 'number' && maxOptionsLength) {\n filterData = filterData.slice(0, maxOptionsLength)\n }\n\n // let wrapDivClassName = isValidatePass ? 'sdw-select-input__wrap' : 'sdw-select-input__wrap sdw-error-input'\n let wrapDivClassName = `${isValidatePass ? 'sdw-select-input__wrap' : 'sdw-select-input__wrap sdw-error-input'} ${isMultipleChoice && disabled ? ' is-multiple-disabled' : ''}`\n\n let iconClassName = 'sdw-select__icon'\n if (clearable && showClearIcon) {\n\n if (isMultipleChoice && _.isArray(value) && value.length) {\n iconClassName += ' sdw-select-clearable'\n } else if (!isMultipleChoice && curInputVal) {\n iconClassName += ' sdw-select-clearable'\n }\n } else if (showSelectList) {\n iconClassName += ' sdw-select__drop-up sdw-select__drop-down'\n } else {\n iconClassName += ' sdw-select__drop-down'\n }\n\n let selectInputWrapClass = isValidatePass ? 'operation-label-title' : 'operation-label-title sdw-error-input'\n let inputClassName = 'sdw-select__wrap'\n if (showSelectList) {\n inputClassName += ' sdw-select__show-selected'\n selectInputWrapClass += ' sdw-select__show-selected'\n wrapDivClassName += ' sdw-select__show-selected'\n }\n\n return (\n \n {\n !!label && {label}\n }\n this.setState({ showClearIcon: true })}\n onMouseLeave={() => this.setState({ showClearIcon: false })}\n >\n {\n isMultipleChoice &&\n Array.isArray(value) &&\n value.map(item => (\n // \n \n {item.text}\n this.onDelMultipleValue(item)}\n />\n \n ))\n }\n this.props.onFocus(e.target.value)}\n className={inputClassName}\n />\n\n {\n !disabled && \n }\n {\n !isValidatePass &&
{validateText}
\n }\n {\n ((isMultipleChoice && hideDefaultList) ? !!this.state.curInputVal : true) &&\n this.setState({ showClearIcon: false })}\n style={{\n width: listWidth ? listWidth : '100%',\n maxHeight: listMaxHeight\n }} >\n {\n showSelectList &&\n !!filterData.length ?\n filterData.map((item, index) => {\n let isSelected = !isMultipleChoice ? this.state.curInputVal === item.text :\n (_.isArray(this.props.value) ? this.props.value.some(i => i.id === item.id) : false)\n\n let { arr, key, tip } = this.props.disabledObj\n let isDisabled = arr.some(i => i === item[key])\n return (\n item.dividLine ?\n
:\n ((item.disabled || isDisabled) ?\n
{item.text}
:\n this.handleItemClick(e, item)}>{item.text}\n
)\n )})\n :\n
暂无匹配数据
\n }\n \n }\n \n \n )\n }\n}\n\nSdwSelect.propTypes = {\n data: PropTypes.array,\n maxOptionsLength: PropTypes.number, // 最大展示候选项数量(接口数据过多,用于优化使用)\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n listWidth: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n listMaxHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n placeholder: PropTypes.string,\n label: PropTypes.string,\n clearable: PropTypes.bool,\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.array]),\n disabled: PropTypes.bool,\n disabledObj: PropTypes.object,\n readOnly: PropTypes.bool,\n onChange: PropTypes.func,\n onInputFilter: PropTypes.func, // 会返回输入的值给父组件使用\n onFocus: PropTypes.func, // 会返回输入的值给父组件使用\n validateFun: PropTypes.func,\n sholdCheckValidate: PropTypes.bool, // true: 手动触发必填项的检查\n isMultipleChoice: PropTypes.bool, // true: 支持'多选'\n hideDefaultList: PropTypes.bool, // true: 当curInputVal为空时,不展示下拉选项\n}\n\nexport default SdwSelect\n","import axios from 'axios'\nimport _ from 'lodash'\nimport { requestOptions, requestOptionsYZF } from '../config/config'\n\nexport const baseReqInst = axios.create({\n /**\n * 设置所有请求的前缀\n */\n baseURL: requestOptions.basename,\n withCredentials: true,\n})\n\nexport const baseReqInstYZF = axios.create({\n /**\n * 设置云智服相关请求的前缀\n */\n baseURL: requestOptionsYZF.basename,\n withCredentials: true,\n})\n\n/**\n * 请求接口,项目内的接口都使用request,作统一处理。\n * 请避免直接使用axios或者使用其他请求方式\n * @param options\n */\nexport function request(options) {\n options.config = options.config || {}\n return baseReqInst.request(options)\n}\n\n/**\n * 云智服接口\n */\nexport function requestYZF(options) {\n options.config = options.config || {}\n return baseReqInstYZF.request(options)\n}\n\n/**\n * 写一个统一处理接口问题的api\n * @param {接口请求} api Function\n * @param {请求参数} params Object\n * @returns\n * 1、如果请求成功:直接取出接口对应的data值\n * 2、如果请求失败:返回msg值\n * 3、如果接口异常:返回err值\n */\nexport function commonApi(api, params) {\n if (typeof api !== 'function') return\n\n return new Promise((resolve, reject) => {\n Promise.resolve(api(params)).then(res => {\n const code = _.get(res, 'data.code')\n const msg = _.get(res, 'data.msg')\n if (code === 0) {\n let data = _.get(res, 'data.data') || {}\n resolve(data)\n } else {\n reject(msg)\n }\n }).catch(err => reject('请求异常' + err))\n })\n}\n\n// 用于文件下载功能\nexport function fileDownload(url = '') {\n window.location.href = `${window.location.hostname === 'localhost' ? 'http://dev.dsp.cm.com' : window.location.origin}${url}`\n}\n\n// 打开新窗口\nexport function openNewWin(url = '') {\n let winObj = window.open(url)\n winObj.opener = null\n}\n","import React, { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport _ from 'lodash'\n\nimport './index.css'\n\nclass SdwInput extends Component {\n inputRef = React.createRef()\n\n static defaultProps = {\n width: '80%',\n height: 40,\n rows: 3,\n cols: 28,\n placeholder: '请输入',\n clearable: true,\n value: '',\n label: '',\n errTip: '',\n type: 'text',\n disabled: false,\n sholdCheckValidate: false,\n multipleValue: [],\n multipleOption: [],\n onChange: _.noop,\n onBlur: _.noop,\n onFocus: _.noop,\n onClear: _.noop,\n onEnterKeyDown: _.noop,\n }\n\n state = {\n isValidatePass: true,\n validateText: '',\n showClearIcon: false,\n isOnFocus: false,\n hideSearchField: true,\n searchValue: ''\n }\n\n componentDidUpdate (prevProps, prevState) {\n if (\n prevProps.sholdCheckValidate !== this.props.sholdCheckValidate ||\n prevProps.multipleValue !== this.props.multipleValue\n ) {\n this.validate(this.props.value)\n }\n\n if (this.props.value !== this.state.inputValue) {\n this.setState({\n inputValue: this.props.value\n })\n }\n }\n\n handleChange = e => {\n if (this.props.disabled) return\n let value = e.target.value\n\n this.props.onChange(value)\n\n if (!this.state.isValidatePass) {\n this.validate(value)\n }\n\n if (!value.length) {\n this.validate('')\n }\n }\n\n handleBlur = e => {\n this.validate(e.target.value)\n this.props.onBlur(e.target.value)\n }\n\n handleClearInput = e => {\n e.preventDefault()\n\n if (!this.props.isMultipleChoice) {\n this.props.onChange('')\n }\n\n this.props.onClear()\n this.validate('')\n this.inputRef.current.focus()\n }\n\n handleKeyDown = record => {\n if (record.keyCode === 13) {\n this.props.onEnterKeyDown()\n this.inputRef.current.blur()\n }\n }\n\n validate = value => {\n\n if (this.props.isMultipleChoice) {\n value = this.props.multipleValue\n }\n\n // 如果没有传入valiateFun进行校验,直接跳过\n if (typeof this.props.validateFun !== 'function' || !this.props.sholdCheckValidate) {\n this.setState({\n isValidatePass: true,\n validateText: ''\n })\n return\n }\n\n let res = this.props.validateFun(value)\n\n // validateFun只有返回true,才会校验通过\n if (res === true) {\n this.setState({\n isValidatePass: res,\n validateText: ''\n })\n } else {\n this.setState({\n isValidatePass: false,\n validateText: res\n })\n }\n }\n\n onInputSearchValChange(e) {\n let curVal = e.target.value\n\n // 当多选时,输入 yyyyan;darrenlai;xxx 格式,会先自动以 ; 号进行分割,然后逐一查看备选项中是否有匹配项,有就自动填充,没有就过滤掉\n if (this.props.isMultipleChoice && typeof curVal === 'string' && curVal.length) {\n let index = curVal.indexOf(';')\n\n if (index !== -1) {\n let { multipleValue, multipleOption, changeMultipleValue } = this.props\n let arr = curVal.split(';')\n\n if (arr.length) arr = arr.map(i => _.trim(i))\n\n let hasPerson = arr.filter(i => multipleOption.some(j => j.value === i) && !multipleValue.includes(i))\n\n if (hasPerson.length) {\n hasPerson = hasPerson.concat(_.cloneDeep(multipleValue)).filter(i => !!i)\n changeMultipleValue(hasPerson)\n curVal = ''\n }\n\n }\n }\n\n this.setState({\n searchValue: curVal,\n hideSearchField: !curVal\n })\n }\n\n onChangeMultipleValue = (obj, type) => {\n let { multipleValue } = this.props\n let list = [...multipleValue].filter(i => !!i)\n\n this.setState({\n searchValue: ''\n })\n\n if (\n !type || !obj ||\n typeof this.props.changeMultipleValue !== 'function'\n ) return\n\n if (type === 'add' && multipleValue.indexOf(obj.value) === -1) {\n list.push(obj.value)\n }\n\n if (type === 'del' && multipleValue.indexOf(obj.value) !== -1) {\n let index = list.findIndex(i => i === obj.value)\n list.splice(index, 1)\n }\n\n this.props.changeMultipleValue(list)\n }\n\n render() {\n let {\n value,\n type,\n placeholder,\n disabled,\n width,\n height,\n rows,\n cols,\n label,\n clearable,\n isMultipleChoice,\n multipleValue,\n multipleOption,\n errTip,\n borderTopLeftRadius,\n borderTopRightRadius,\n borderBottomLeftRadius,\n borderBottomRightRadius\n } = this.props\n\n let { isValidatePass, validateText, showClearIcon, isOnFocus, hideSearchField, searchValue } = this.state\n\n let textareaClassName = isValidatePass ? 'sdw-textarea-input__wrap' : 'sdw-textarea-input__wrap sdw-error-input'\n let inputClassName = (isValidatePass && !errTip) ? 'sdw-input__wrap' : 'sdw-input__wrap sdw-error-input'\n\n let filterSearchFieldsArr = []\n let selectedFields = []\n if (isMultipleChoice) {\n filterSearchFieldsArr = multipleOption.filter(i => i.name.indexOf(searchValue) !== -1 && !multipleValue.includes(i.value))\n selectedFields = multipleOption.filter(i => multipleValue.some(j => j === i.value))\n }\n\n return (\n \n {\n !!label && {label}\n }\n this.setState({ showClearIcon: true })}\n onMouseLeave={() => this.setState({ showClearIcon: false })}\n className=\"sdw-input__div-wrap\"\n style={{ width: '100%' }}\n >\n {\n type === 'textarea' ?\n this.handleChange(e)}\n onFocus={() => this.setState({ isOnFocus: true })}\n onBlur={e => {\n this.handleBlur(e)\n this.setState({ isOnFocus: false })\n }} />\n :\n (\n isMultipleChoice ?\n \n {\n selectedFields.map(item => (\n \n {item.name}\n this.onChangeMultipleValue(item, 'del')}\n />\n \n ))\n }\n this.handleKeyDown(v)}\n onChange={e => this.onInputSearchValChange(e)}\n onFocus={() => {\n this.setState({ isOnFocus: true })\n this.props.onFocus()\n }}\n onBlur={e => {\n this.handleBlur(e)\n this.setState({ isOnFocus: false })\n }}\n />\n {\n Array.isArray(filterSearchFieldsArr) &&\n !!filterSearchFieldsArr.length &&\n !hideSearchField &&\n
\n {\n filterSearchFieldsArr.map((item, index) => {\n\n return (\n (item.disabled) ?
{item.name}
:\n {\n this.onChangeMultipleValue(item, 'add')\n this.setState({\n hideSearchField: true\n })\n }}>{item.name}
\n )\n })\n }\n \n }\n
:\n this.handleKeyDown(v)}\n onChange={e => this.handleChange(e)}\n onFocus={() => {\n this.setState({ isOnFocus: true })\n this.props.onFocus()\n }}\n onBlur={e => {\n this.handleBlur(e)\n this.setState({ isOnFocus: false })\n }}\n />\n )\n }\n {\n !disabled && clearable && showClearIcon &&\n (!isMultipleChoice ? !!value : !!multipleValue.length) &&\n \n }\n {\n !!errTip &&
{errTip}
\n }\n {\n // 有限使用 errTip\n (!errTip && !isValidatePass) &&
{validateText}
\n }\n \n \n )\n }\n}\n\nSdwInput.propTypes = {\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n height: PropTypes.number,\n placeholder: PropTypes.string,\n clearable: PropTypes.bool,\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n type: PropTypes.string,\n label: PropTypes.string,\n disabled: PropTypes.bool,\n rows: PropTypes.number,\n cols: PropTypes.number,\n onChange: PropTypes.func,\n validateFun: PropTypes.func,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n onEnterKeyDown: PropTypes.func, // 按下enter键触发的事件\n sholdCheckValidate: PropTypes.bool, // true: 手动触发必填项的检查\n isMultipleChoice: PropTypes.bool, // true: 支持'多选'\n multipleValue: PropTypes.array, // 多选绑定的数组value\n multipleOption: PropTypes.array, // 多选绑定的数组候选项\n changeMultipleValue: PropTypes.func, // 改变multipleValue函数\n errTip: PropTypes.string, // 仅仅展示错误信息\n}\n\nexport default SdwInput\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport './index.css'\n\nclass Button extends React.PureComponent {\n\n static defaultProps = {\n type: 'text',\n iconClass: '',\n style: {}\n }\n\n render () {\n let { type, iconClass, text, disabled, onClick, style, tip } = this.props\n\n return (\n {\n if (disabled || typeof onClick !== 'function') return\n onClick()\n }}\n >\n { text }\n \n )\n }\n}\n\nButton.propTypes = {\n type: PropTypes.string, // submit、cancel、text、normal ---> 默认为text:table中的蓝色字体按钮\n iconClass: PropTypes.string,\n text: PropTypes.string,\n disabled: PropTypes.bool,\n onClick: PropTypes.func,\n style: PropTypes.object, // 自定义一些样式:font-size...\n tip: PropTypes.string, // 鼠标悬浮提示语\n}\n\nexport default Button","import _ from 'lodash'\n\n// 前端路由对应权限接口字段,以下是需要校验的前端路由(没有校验的路由默认允许访问)\nexport const authMap = { // 路由级别、导航菜单选项,需要进行路由拦截层面\n '/admin/factory/atom': ['dataset/atomTargetV2/items'], // 获取原子指标\n '/admin/dataMarket/standard': ['statistics/dataMarket/searchFields'], // 字段标准页搜索字段(数据标准)\n '/admin/factory/modifier': ['dataset/modifier/getModifierList'], // 查询修饰词\n '/admin/factory/dimension': ['dataset/process/dimensionList'], // 查询维度信息\n '/admin/factory/derived': ['dataset/targetV2/items'], // 获取所有派生指标\n '/admin/monitor/operationConfiguration': ['operation/indicatorOperationConf/getIndicatorConfItems', 'operation/indicatorOperationConf/getArchiveCodeConfItems'], // 获取指标运营配置、归档项L4配置\n '/admin/dataMarket/dictionary': ['statistics/dataMarket/getCommonTopics', 'statistics/dataMarket/getCountedFields'], // 数据字典页获取统计主题信息,数据字典页获取统计字段\n '/admin/dataMarket/management': ['statistics/dataMarket/getManageTopics'], // 主题域管理页获取主题域信息\n '/admin/factory/application': ['statistics/dataProcess/searchAppInfo', 'statistics/dataProcess/searchAppInfoManage'], // 获取所有应用表\n '/admin/factory/api': ['statistics/targetApi/pageAppTables', 'statistics/targetApi/pageAppTablesManage'], // 获取所有指标API\n '/admin/dataMarket/metadatas': ['metadata/tableApi/items'], // 获取元数据管理数据\n '/admin/monitor/monitorManagement': ['monitor/api/getPushLogList', 'monitor/api/getMonitorSettingList'], // 获取分析监控眼\n '/admin/dataCollect/dataManagement': ['collection/dbimport/getAllTasks', 'collection/dbimport/getCollectConfigList'], // 获取数据接入数据\\日志管理\n '/admin/monitor/qualityControl': ['statistics/fieldAlarm/items'], // 获取所有告警信息(预警监控眼)\n '/admin/monitor/monitoringEye': ['dataset/process/GetHotEventMap'], // 获取所有监控眼信息(热词监控眼)\n '/admin/dataCollect/logManagement': ['collection/dbimport/getMonitorServerConfigList'], // 获取日志监听管理\n '/admin/dataCollect/dataGovern': ['collection/dataGovern/getAllModels', 'collection/dataGovern/getServiceConfig', 'collection/dataGovern/getAllUploadRecord'], // 手工上传\n '/admin/dataGasStation/dataSearch': ['metadata/tableApi/getTablecfgList', 'metadata/tableApi/exportTaskItems'], // 明细查询\n '/admin/labelProcess/labelManagement': ['tagmanage/standardManage/items', 'tagmanage/orderRule/items', 'tagmanage/taskFlow/name'], // 标签管理\n '/admin/monitor/keyIndicatorAllocation': ['statistics/masterTarget/pageTargetsGroup', 'statistics/masterTarget/getPageFocus'], // 关键指标配置\n '/admin/dataGasStation/userSearch': ['usertrace/userTrace/item'], // 用户查询\n '/admin/dataCollect/midTable': ['metadata/midTable/tablePages'], // 数据采集地-中间表\n '/admin/labelProcess/userLabel': ['tagmanage/userManager/items'], // 获取所有用户标签\n}\n\n// 页面相关操作权限映射\nexport const oprAuthMap = { // 页面级别的按钮,用于禁用、不展示页面、按钮层面\n 'searchAppInfo': ['statistics/dataProcess/searchAppInfo'], // 应用表分页列表\n 'searchAppInfoManage': ['statistics/dataProcess/searchAppInfoManage'], // 应用表新增负责人分页列表\n //应用表页面是两个权限有一个就能查看 列表数据展示逻辑是‘不同的权限点走不同的列表接口’\n 'pageAppTables': ['statistics/targetApi/pageAppTables'], // 指标API分页列表\n 'pageAppTablesManage': ['statistics/targetApi/pageAppTablesManage'], // 指标API新增负责人分页列表\n 'atomCreateOrUpdate': ['dataset/atomTargetV2/storeOrUpdate'], // 增改原子指标\n 'getAllModifier': ['dataset/modifier/getAllModifier'], // 获取所有修饰词\n 'getAllDimensionList': ['dataset/process/dimensionAllList'], // 获取所有维度信息\n 'derivedCreateOrUpdate': ['dataset/targetV2/storeOrUpdate'], // 增改派生指标\n 'insertIndicatorConf': ['operation/indicatorOperationConf/insertIndicatorConf'], // 增加指标运营配置\n 'updateIndicatorConf': ['operation/indicatorOperationConf/updateIndicatorConf'], // 更新指标运营配置\n 'getCommonTopics': ['statistics/dataMarket/getCommonTopics'], // 数据字典页获取统计主题信息\n 'getCountedFields': ['statistics/dataMarket/getCountedFields'], // 数据字典页获取统计字段\n 'getFieldById': ['statistics/dataMarket/getFieldById'], // 获取标准字段详情\n 'searchFields': ['statistics/dataMarket/searchFields'], // 字段标准页搜索字段\n 'getTopicInfoById': ['statistics/dataMarket/getTopicInfoById'], // 获取主题域详情\n 'storeNewBusiness': ['statistics/dataMarket/storeNewBusiness'], // 新建修改分类\n 'runTargetResult': ['statistics/dataProcess/runTargetResult'], // 重跑应用表\n 'storeNewAppTable': ['statistics/dataProcess/storeNewAppTable'], // 增加应用表\n 'updateNewAppTable': ['statistics/dataProcess/updateNewAppTable'], // 修改应用表\n 'updatePublishState': ['statistics/dataProcess/updatePublishState'], // 发布应用表\n 'getTopicBusiness': ['dataset/common/getTopicBusiness'], // 获取主题分类信息\n 'getIndicatorConfItems': ['operation/indicatorOperationConf/getIndicatorConfItems'], // 获取指标运营配置\n 'getArchiveCodeConfItems': ['operation/indicatorOperationConf/getArchiveCodeConfItems'], // 获取归档项L4配置\n 'insertArchiveCodeConf': ['operation/indicatorOperationConf/insertArchiveCodeConf'], // 添加配置\n 'updateArchiveCodeConf': ['operation/indicatorOperationConf/updateArchiveCodeConf'], // 编辑配置\n 'getPushLogList': ['monitor/api/getPushLogList'], // 获取监控眼管理--推送记录\n 'getMonitorSettingList': ['monitor/api/getMonitorSettingList'], // 获取监控眼管理--监控配置\n 'queryFormsConfPage': ['operation/formBusiness/queryFormsConfPage'], // 获取表单业务类型配置\n 'saveFormConf': ['operation/formBusiness/saveFormConf'], // 修改/更新表单业务类型配置\n 'getAllTasks': ['collection/dbimport/getAllTasks'], // 获取数据接入数据\n 'getCollectConfigList': ['collection/dbimport/getCollectConfigList'], // 获取日志管理\n 'getAllModels': ['collection/dataGovern/getAllModels'], // 表模版列表\n 'downloadModel': ['collection/dataGovern/downloadModel'], // 下载按钮:表模版列表\n 'getServiceConfig': ['collection/dataGovern/getServiceConfig'], // 经分业务数据上传\n 'getAllUploadRecord': ['collection/dataGovern/getAllUploadRecord'], // 经分业务数据上传记录\n 'downloadUploadRecord': ['collection/dataGovern/downloadUploadRecord'], // 下载按钮:经分业务数据上传记录\n 'deleteUploadRecord': ['collection/dataGovern/deleteUploadRecord'], // 删除按钮:经分业务数据上传记录\n 'getDataKinship': ['dataset/targetV2/getDataKinship'], // 详情按钮:派生指标是否有查看详情权限\n 'getTablecfgList': ['metadata/tableApi/getTablecfgList'], // 明细查询 --> 数据列表\n 'exportTaskItems': ['metadata/tableApi/exportTaskItems'], // 明细查询 --> 导出记录\n 'standardManage': ['tagmanage/standardManage/items'], // 标签管理 --> 标签标准管理\n 'orderRule': ['tagmanage/orderRule/items'], // 标签管理 --> 工单标签规则\n 'taskFlow': ['tagmanage/taskFlow/name'], // 标签管理 --> 离线任务管理\n 'storeOrUpdateDepth': ['dataset/targetV2/storeOrUpdateDepth'], // 指标加工厂 -- 派生指标 -- 指标详情 --> 重跑弹窗\n 'applyApproval': ['dataset/common/applyApproval'], // 指标加工厂 -- 消息中心 -- 审批按钮权限\n 'targetV2RunTargetResult': ['dataset/targetV2/runTargetResult'], // 指标加工厂 -- 重跑指标\n 'storeOrUpdateDerive': ['dataset/targetV2/storeOrUpdateDerive'], // 指标加工厂 -- 编辑衍生指标\n 'storeTablecfg': ['metadata/tableApi/storeTablecfg'], // 数据集市 -- 元数据管理 -- 创建表\n 'updateTablecfg': ['metadata/tableApi/updateTablecfg'], // 数据集市 -- 元数据管理 -- 编辑表\n 'getTablecfgDetailPermission': ['metadata/tableApi/getTablecfgDetailPermission'], // 数据集市 -- 元数据管理 -- 编辑表\n 'saveTemplateConf': ['statistics/targetApi/saveTemplateConf'], // 数据加工厂 -- 指标API -- 增改权限点\n 'saveAppConf': ['statistics/targetApi/saveAppConf'], // 数据加工厂 -- 指标API -- 增加指标\n 'updateAppConf': ['statistics/targetApi/updateAppConf'], // 数据加工厂 -- 指标API -- 修改指标\n 'publishApi': ['statistics/targetApi/publishApi'], // 数据加工厂 -- 指标API -- 发布指标\n 'tableApiRunTargetResult': ['statistics/targetApi/runTargetResult'], // 数据加工厂 -- 指标API -- 发布指标\n 'deleteApiTargets': ['statistics/targetApi/deleteApiTargets'], // 数据加工厂 -- 指标API -- 删除指标\n 'userTraceDetail': ['usertrace/userTrace/detail'], // 用户查询轨迹-查看详情\n 'saveUserLabel': ['tagmanage/userManager/saveConfig'], // 增改用户标签\n 'userLabelDetail': ['tagmanage/userManager/searchDetail'], // 查看用户标签详情\n 'userLabelSwitchStatus': ['tagmanage/userManager/switchStatus'], // 查看用户标签详情\n 'getPathTree': ['visual/node/getPathTree'], // 数据加油站 -- 数据可视化 -- 获取树结构\n 'insertPath': ['visual/node/insertPath'], // 数据加油站 -- 数据可视化 -- 新增节点\n 'updatePath': ['visual/node/updatePath'], // 数据加油站 -- 数据可视化 -- 编辑节点\n}\n\n// 判断是否存在对应的权限\nexport function hasPriv(pathname = '') {\n // if(pathname == 'data-status__item') debugger // 打断点使用的\n const AllAuthMap = _.assign({}, authMap, oprAuthMap)\n let permissions = sessionStorage.getItem('permissions')\n try {\n permissions = JSON.parse(permissions)\n } catch (error) {\n console.log(error);\n }\n\n // 说明配置了权限,需要进行权限的校验,没配置的默认为true\n let shouldCheckAuth = _.isArray(AllAuthMap[pathname]) && AllAuthMap[pathname].length\n let hasPriv = (pathname && shouldCheckAuth) ? AllAuthMap[pathname].some(key => permissions && permissions[key]) : true\n\n return hasPriv\n}\n","// API\n// columns为表格定义数据格式,title字段为表格标题,dataIndex为传入的数据源中需要显示的字段一致,可以通过render函数来渲染当前列的数据 -> Array// dataSource为数据源 -> Array\n// onRowClick为单行点击事件 返回该行的数据\n// checkTd:1 表示该单元格是可选单元格\nimport _ from 'lodash'\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport SdwPopover from '@common/Popover'\nimport './index.css';\nclass Table extends Component {\n constructor(props) {\n super(props);\n }\n\n state = {\n isCheckClass: \"is-checked\", // 选中后的样式变化\n checkBoxIdList: [],\n allCheckState: 0,\n tipStyleClass: {\n \"display\": \"none\"\n },\n tipContent: \"\",\n dividLineOnMouseDown: false,\n mouseDownClientX: 0,\n widthList: [],\n showDividLine: false,\n dividLineIndex: null,\n oprShowBoxShadow: false,\n hasChildrenList: [], // 拥有孩子节点的父节点的id\n openChildrenList: [], // 存储当前需要展开的子行的父行id\n }\n\n // 属性默认值\n static defaultProps = {\n tableStyle: {},\n className: \"\",\n dataSource: [],\n columns: [],\n emptyText: '暂无数据',\n tbodyMinHeight: '230px',\n onRowClick: () => {},\n checkboxChange: () => {},\n checkBoxIdList: [],\n tdEmptyText: \"-\",\n tdWhiteSpace: false,\n classTableHeadName: '',\n isUserSelect: 'none',\n childrenString: 'children',\n setOverflow: ''\n };\n\n componentDidMount() {\n if (this.props.checkBoxIdList.length) {\n this.initData()\n }\n\n if (Array.isArray(this.props.columns) && this.props.columns.length) {\n this.initColWidth()\n }\n }\n\n componentDidUpdate (prevProps, prevState) {\n if (prevProps.checkBoxIdList.length !== this.props.checkBoxIdList.length) {\n this.initData()\n }\n\n if (\n (prevProps.columns !== this.props.columns || prevProps.columns.length !== this.props.columns.length) &&\n Array.isArray(this.props.columns) && this.props.columns.length\n ) {\n this.initColWidth()\n }\n\n if (\n prevProps.dataSource.length !== this.props.dataSource.length ||\n _.differenceWith(prevProps.dataSource, this.props.dataSource, _.isEqual).length\n ) {\n this.inithasChildrenList(this.props.dataSource)\n }\n }\n\n inithasChildrenList = (list = []) => {\n let { childrenString } = this.props\n let idList = []\n list.forEach(item => {\n if (_.isArray(item[childrenString]) && item[childrenString].length) {\n idList.push(item.id)\n }\n })\n\n this.setState({\n hasChildrenList: idList\n })\n }\n\n initData = () => {\n this.setState({\n checkBoxIdList: this.props.checkBoxIdList || []\n })\n }\n\n initColWidth = () => {\n let defaultWidth = 70\n let widthList = this.props.columns.reduce((prev, col) => {\n\n if (!!col.width) {\n if (typeof col.width === 'string' && col.width.indexOf('px') !== -1) {\n let width = +col.width.slice(0, -2)\n if (typeof width === 'number' && !isNaN(width)) {\n prev.push(width)\n } else {\n prev.push(defaultWidth)\n }\n } else if (typeof +col.width === 'number') {\n prev.push(+col.width)\n } else {\n prev.push(defaultWidth)\n }\n } else {\n prev.push(defaultWidth)\n }\n\n return prev\n }, [])\n\n this.setState({ widthList: widthList })\n }\n\n // 单元格变化事件\n selectboxChange = (e, data, checkId) => {\n let checkBoxIdList = [...this.props.checkBoxIdList]\n let index = checkBoxIdList.indexOf(checkId)\n\n if(index >= 0) {\n checkBoxIdList.splice(index, 1)\n }else {\n checkBoxIdList.push(checkId)\n }\n\n this.setState({\n checkBoxIdList: checkBoxIdList,\n allCheckState: checkBoxIdList.length === this.props.dataSource.length\n })\n\n this.props.checkboxChange(checkBoxIdList)\n\n // 阻止事件冒泡\n var e = e || window.event;\n e.stopPropagation();\n e.preventDefault()\n }\n\n // 全选单元格事件\n selectAllChange = (e) => {\n let checkBoxIdList = []\n let allCheckState = 0\n let {childrenString} = this.props\n if(this.state.allCheckState == 0) {\n let dataKey = \"\"\n for(let i=0; i {\n if (contentNullState === 1) {\n return\n }\n\n let styleClass = {\n \"position\": \"absolute\",\n \"top\": e.target.offsetTop + 10,\n \"left\": e.target.offsetLeft,\n \"background\": \"#262626\",\n \"color\": \"#fff\",\n \"display\": \"block\",\n \"padding\": \"8px\",\n \"borderRadius\": \"3px\"\n }\n\n this.setState({\n tipStyleClass: styleClass,\n tipContent: content\n })\n }\n\n hideTdTip = (e) => {\n let styleClass = {\n \"display\": \"none\",\n }\n\n this.setState({\n tipStyleClass: styleClass,\n tipContent: \"\"\n })\n }\n\n getTdClassName = (tdWhiteSpace, fiexd) => {\n let classNames = \"\"\n if(tdWhiteSpace) {\n classNames += \"tdWhiteSpace \"\n }\n if(fiexd && this.state.oprShowBoxShadow) {\n classNames += \"fiexdTdClass\"\n }\n return classNames\n }\n\n // 表体渲染(tbody)\n retRows = (columns, data, index, isLastNoOp, length) =>{\n let tdEmptyText = this.props.tdEmptyText\n let { widthList, tipContent } = this.state\n return (\n columns.map((col, i) => {\n // 是否是可选单元格\n let checkTd = col.checkTd ? col.checkTd : 0\n\n // 可选单元格渲染\n if(checkTd == 1 && this.props.showCheck) {\n return (\n \n \n \n \n \n \n )\n }\n\n // 非选中单元格渲染 className={row.fiexd ? \"fiexdClass\" : \"\"} {this.props.tdWhiteSpace && col.fiexd ? 'tdWhiteSpace':''}\n if(checkTd === 0) {\n if (col.dataIndex !== undefined) {\n if (data[col.dataIndex] !== undefined) {\n let showVal = data[col.dataIndex]\n let contentNullState = 0\n if (typeof data[col.dataIndex] === 'object' || typeof data[col.dataIndex] === 'array') {\n showVal = JSON.stringify(data[col.dataIndex])\n }\n if(showVal === \"\" || showVal === 'null' || showVal === null) {\n contentNullState = 1\n showVal = tdEmptyText\n }\n\n // 如果设置了showTip的bool值,就使用设置的值;否则使用默认规则:如果长度大于10,默认给tip\n const showTip = typeof col.showTip === 'boolean' ? col.showTip :\n String(showVal).length > 10 ? true : false\n return (\n {showTip && this.hideTdTip(e, showTip, showVal)}}\n onMouseEnter={(e) => {showTip && this.showTdTip(e, showTip, showVal, contentNullState)}}\n className={this.getTdClassName(this.props.tdWhiteSpace, col.fiexd)}\n onClick = {() => {col.getCellClick && col.getCellClick(this, col, data)}}\n key={i}\n width={widthList[i]}\n >\n \n {\n col.checkChildren &&\n i===data.id) ? 'sdw-table__td-has-children is-open' :\n (this.state.hasChildrenList.some(i => i===data.id) ? 'sdw-table__td-has-children' : 'no-children')\n }\n onClick={() => this.handCheckChildren(data)}\n >\n }\n \n {col.render ? col.render(showVal, data, index) : showVal}\n {col.tip ? col.tip(showVal, data, index) : ''}\n \n \n \n )\n } else {\n return (\n {col.getCellClick && col.getCellClick(this, col, data)}}\n key={i}\n width={widthList[i]}\n >{tdEmptyText}\n )\n }\n } else {\n // 自定义 render 函数渲染\n let renderEle = \"\"\n if (col.render) {\n renderEle = col.render(data, index)\n if(isLastNoOp && index === length - 1){\n renderEle = \"\"\n }\n }\n\n // 自定义 tip 函数渲染\n let renderTip = ''\n if (col.tip) {\n renderTip = col.tip(data, index)\n }\n return (\n \n \n \n {col.render && renderEle}\n \n \n \n )\n }\n }\n })\n );\n }\n\n handCheckChildren = data => {\n let curArr = [...this.state.openChildrenList]\n let pID = data.id\n let flagIndex = curArr.findIndex(i => i === pID)\n\n if (flagIndex === -1) {\n curArr.push(pID)\n } else {\n curArr.splice(flagIndex, 1)\n }\n\n this.setState({\n openChildrenList: curArr\n })\n }\n\n // 表体空内容的展示\n retEmptyText = (emptyText) => {\n return (\n
\n {emptyText}\n
\n )\n }\n\n // 行点击事件 如果存在则触发该事件\n trClick = (data, event) => {\n this.props.onRowClick(data, event);\n var e = e || window.event;\n e.stopPropagation();\n }\n\n // 单元格点击事件\n tableTdClick = (data, event) => {\n this.props.tableTdClick(data, event);\n var e = e || window.event;\n e.stopPropagation();\n }\n\n onMouseDown = (e, k) => {\n this.setState({\n dividLineOnMouseDown: true,\n mouseDownClientX: e.clientX,\n dividLineIndex: k\n })\n }\n\n getCurWidth = curWidth => {\n return curWidth < 80 ? 80 : curWidth\n }\n\n onMouseUp = e => {\n let { dividLineIndex, mouseDownClientX, widthList, dividLineOnMouseDown } = this.state\n\n if (dividLineOnMouseDown) {\n let moveX = e.clientX - mouseDownClientX\n let curWidthArr = [...widthList]\n curWidthArr[dividLineIndex - 1] = this.getCurWidth(+curWidthArr[dividLineIndex - 1] + moveX)\n curWidthArr[dividLineIndex] = this.getCurWidth(+curWidthArr[dividLineIndex] - moveX)\n\n this.setState({\n widthList: curWidthArr,\n dividLineOnMouseDown: false,\n oprShowBoxShadow: true\n })\n }\n\n\n }\n\n render () {\n const {\n className,\n classTableHeadName,\n columns,\n dataSource,\n emptyText,\n isLastNoOp,\n tableStyle,\n tbodyMinHeight,\n tbodyHeight,\n tableHeight,\n childrenString,\n setOverflow\n } = this.props;\n\n let {\n widthList,\n showDividLine,\n openChildrenList\n } = this.state\n\n let curDataSource = _.cloneDeep(dataSource)\n let newDataSource = curDataSource.reduce((prev, item) => {\n prev.push(item)\n\n let childList = _.cloneDeep(item[childrenString])\n if (openChildrenList.includes(item.id) && childList && childList.length) {\n childList = childList.map(i => {\n return _.assign({}, i, {\n customClass: 'children'\n })\n })\n prev = prev.concat(childList)\n }\n\n return prev\n }, [])\n\n return (\n
\n \n {/* 表头部分 */}\n \n this.setState({showDividLine: true})}\n onMouseLeave={() => this.setState({showDividLine: false})}\n onMouseUp={e => this.onMouseUp(e)}\n >\n {columns.map((row, k) =>{\n let checkTd = row.checkTd ? row.checkTd : 0\n if(checkTd == 1 && this.props.showCheck) {\n // 选择类型表头\n return (\n \n )\n }\n\n // 普通表头\n if(checkTd == 0) {\n return (\n \n )\n }\n })}\n \n \n\n {/* 表体部分 */}\n \n {/* {\n dataSource && dataSource.map((data, i) => {\n return (\n \n {this.retRows(columns, data, i, isLastNoOp, dataSource.length)}\n \n )\n })\n } */}\n {\n newDataSource && newDataSource.map((data, i) => {\n return (\n \n {this.retRows(columns, data, i, isLastNoOp, newDataSource.length)}\n \n )\n })\n }\n \n
\n \n \n \n \n \n {row.title}\n {\n showDividLine &&\n k !== 0 &&\n !row.fiexd &&\n (columns[0].checkTd === 1 && k !== 1 || columns[0].checkTd !== 1) &&\n this.onMouseDown(e, k)}\n />\n }\n
\n {/* 表体空内容展示 */}\n {\n newDataSource && newDataSource.length == 0 && this.retEmptyText(emptyText)\n }\n\n {/** 单元格数据tip展示 */}\n {/*
\n {tipContent}\n
*/}\n
\n );\n }\n}\n\nTable.propTypes = {\n columns: PropTypes.array.isRequired, //表头名称\n dataSource: PropTypes.array.isRequired, //数据列表\n emptyText: PropTypes.string, //列表为空时, 空内容展示的html\n isLastNoOp: PropTypes.bool, //表格最后一行不需要渲染操作样式\n className: PropTypes.string, //表格的自定义的样式名,\n classTableHeadName: PropTypes.string, // 表格的表头的自定义样式名\n tableStyle: PropTypes.object,\n tbodyMinHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n tbodyHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n tableHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n showCheck: PropTypes.bool, // 是否展示选中单元格\n checkBoxIdList: PropTypes.array, // 选中的单元格数据\n tdEmptyText: PropTypes.string, // 表格缺省值\n tdWhiteSpace: PropTypes.bool, // 单元格的内容是否需要一行展示\n isUserSelect: PropTypes.string,\n childrenString: PropTypes.string, // 子节点对应的字段,默认为 children\n setOverflow: PropTypes.string, // 是否设置table的overflow\n}\n\nexport default Table\n","import React from 'react'\nimport ReactDOM from 'react-dom'\nimport PropTypes from 'prop-types'\nimport SdwButton from '@common/Button'\nimport _ from 'lodash'\n\nimport './index.css'\n\nconst DEFAULT_POSITION = {\n x: 0,\n y: 0\n}\n\nconst DEFAULT_MARGINOPTION = {\n left: 0,\n top: 0\n}\n\nclass Dialog extends React.Component {\n contentRef = React.createRef()\n\n state = {\n isMouseDown: false,\n position: DEFAULT_POSITION,\n marginOption: DEFAULT_MARGINOPTION\n }\n\n static defaultProps = {\n visible: false,\n hideHeader: false,\n title: '',\n cancelText: '',\n sureText: '',\n hideCancelButton: false,\n hideSureButton: false,\n onCancelClick: () => ({}),\n onSureClick: () => ({}),\n changeVisible: () => ({}),\n sureBtnDisabled: false,\n cancelBtnDisabled: false,\n cusWrapClass: ''\n }\n\n componentDidUpdate (prevProps, prevState) {\n if (!_.isEqual(prevState.position, this.state.position)) {\n\n if (!prevState.position.x || !this.props.visible) return\n\n let { marginOption } = this.state\n this.setState({\n marginOption: {\n left: marginOption.left + this.state.position.x - prevState.position.x,\n top: marginOption.top + this.state.position.y - prevState.position.y\n }\n })\n }\n\n if (!_.isEqual(prevProps.visible, this.props.visible) && !this.props.visible) {\n this.setState({\n position: DEFAULT_POSITION,\n marginOption: DEFAULT_MARGINOPTION\n })\n }\n }\n\n handleGlobalClose = e => {\n const ContentNode = ReactDOM.findDOMNode(this.contentRef.current)\n\n if (ContentNode && !ContentNode.contains(e.target)) {\n this.props.changeVisible(false)\n }\n }\n\n render () {\n let { isMouseDown, marginOption } = this.state\n\n let {\n visible,\n title,\n cancelText,\n sureText,\n hideCancelButton,\n hideSureButton,\n onCancelClick,\n onSureClick,\n width,\n height,\n hideHeader,\n sureBtnDisabled,\n cancelBtnDisabled,\n cusWrapClass,\n zIndex\n } = this.props\n\n let bodyHeight = height > 180 ? height - 176 : ''\n\n return ReactDOM.createPortal(\n (\n visible &&\n this.handleGlobalClose(e)}\n >\n \n {\n !hideHeader &&\n this.setState({ isMouseDown: true })}\n onMouseUp={() => this.setState({ isMouseDown: false })}\n onMouseLeave={() => this.setState({ isMouseDown: false })}\n onMouseMove={e => {\n if (isMouseDown) {\n this.setState({\n position: {\n x: e.screenX,\n y: e.screenY\n }\n })\n }\n }}\n >\n {title}\n \n \n }\n\n
\n {this.props.children}\n
\n\n
\n {\n !hideCancelButton &&\n \n }\n \n {\n !hideSureButton &&\n \n }\n
\n \n \n ),\n document.body\n )\n }\n}\n\nDialog.propTypes = {\n visible: PropTypes.bool,\n changeVisible: PropTypes.func,\n title: PropTypes.string,\n cancelText: PropTypes.string,\n sureText: PropTypes.string,\n hideCancelButton: PropTypes.bool,\n hideSureButton: PropTypes.bool,\n onCancelClick: PropTypes.func,\n onSureClick: PropTypes.func,\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n sureBtnDisabled: PropTypes.bool,\n cancelBtnDisabled: PropTypes.bool,\n cusWrapClass: PropTypes.string\n}\n\nexport default Dialog\n","// API\n\nimport React, { Component } from 'react';\nimport {connect} from 'react-redux'\nimport {withRouter} from 'react-router-dom'\nimport PropTypes from 'prop-types';\nimport './index.css';\nimport { ceil } from 'lodash';\nimport SdwSelect from '../Select'\n\nclass Pagenation extends Component {\n constructor(props) {\n super(props);\n }\n\n state = {\n seqPageStartList: [], // 序列页码, 前面部位\n seqPageCenterList: [], // 序列页码, 中间部位\n seqPageEndNum: 0, // 序列页码,最后的页码\n currentPage: 0, // 当前页码\n currPageCount: 0, // 当前每页显示总条数\n gotoPageVal: 0,\n }\n\n // 可传递的参数\n static propTypes = {\n className: PropTypes.string, // 自定义样式class名\n total: PropTypes.number.isRequired, //记录总数\n showTotal: PropTypes.bool, // 是否显示总记录数样本\n pageCountList: PropTypes.array, // 每页显示的总条数的选项列表\n showPageCountSelect: PropTypes.bool, // 是否显示每页总记录数选项\n pageCount: PropTypes.number.isRequired, // 每页显示条数\n seqPageStartListCount: PropTypes.number, // 序列页码, 前面部位最多显示多少个\n pageStyle: PropTypes.object, // 可定义组件顶层dom样式\n currentPage: PropTypes.number.isRequired, // 当前页码\n getClickPage: PropTypes.func, // 获取当前点击的页码\n showGotoPage: PropTypes.bool, // 实现显示前往页码\n }\n\n // 属性默认值\n static defaultProps = {\n className: \"\",\n total: 0,\n currentPage: 1, \n showTotal: true,\n pageCountList: [10, 15, 20, 40, 50],\n showPageCountSelect: true,\n pageCount: 10,\n seqPageStartListCount: 6,\n pageStyle: {\"textAlign\": \"right\"},\n getClickPage: () => {},\n pageCountChange: () => {},\n showGotoPage: true,\n };\n \n // 初始化\n componentDidMount () {\n this.setState({\n currentPage: this.props.currentPage,\n gotoPageVal: this.props.gotoPageVal,\n })\n this.retPageGroup(this.props.pageCount, this.props.currentPage);\n }\n\n // 变更\n componentDidUpdate(prevProps, prevState, snapshot) {\n if (prevProps.total !== this.props.total) {\n this.setState({\n currentPage: this.props.currentPage,\n gotoPageVal: this.props.gotoPageVal,\n })\n this.retPageGroup(this.props.pageCount, this.props.currentPage);\n }\n }\n\n // 页码分组\n retPageGroup = (currPageCount, currentPage) => {\n currentPage = parseInt(currentPage)\n currPageCount = parseInt(currPageCount)\n const {\n total,\n seqPageStartListCount,\n pageCount\n } = this.props;\n\n let seqPageStartList = []\n let seqPageCenterList = []\n let seqPageEndNum = currPageCount\n if (currPageCount == 0) {\n seqPageEndNum = pageCount\n }\n seqPageEndNum = Math.ceil(total/seqPageEndNum)\n if (currentPage > seqPageEndNum) {\n currentPage = seqPageEndNum \n }\n \n // 分组开始部位的序号\n if (seqPageEndNum < seqPageStartListCount) {\n for(let i=0; i 1) seqPageCenterList.push(n1)\n if (n2 > 1) seqPageCenterList.push(n2)\n seqPageCenterList.push(currentPage)\n let n3 = currentPage + 1\n let n4 = currentPage + 2\n if (n3 < seqPageEndNum) seqPageCenterList.push(n3)\n if (n4 < seqPageEndNum) seqPageCenterList.push(n4) \n }\n }\n\n // 分组尾部部位序号\n if (total > seqPageStartListCount) {\n this.setState({seqPageEndNum: seqPageEndNum})\n }else {\n this.setState({seqPageEndNum: 0})\n }\n\n this.setState({\n seqPageStartList: seqPageStartList,\n seqPageCenterList: seqPageCenterList,\n currPageCount: currPageCount,\n currentPage: currentPage,\n gotoPageVal: currentPage\n })\n }\n\n // 每页总数选择数据改变事件\n pageCountChange = (val) => {\n const { currentPage } = this.state\n let curPage = currentPage\n let maxPageCount = Math.ceil(this.props.total / val)\n const showChangeCurrentPage = maxPageCount < currentPage\n\n // 如果每页展示的条数大于当前展示的条数,需要更新下展示的页码\n if (showChangeCurrentPage) {\n curPage = maxPageCount\n }\n this.retPageGroup(val, curPage)\n this.props.pageCountChange(val)\n \n if (showChangeCurrentPage) {\n const t = setTimeout(() => {\n this.props.getClickPage(curPage)\n clearTimeout(t)\n }, 0);\n }\n }\n\n // 跳到指定页事件\n gotoPageChange = (event) => {\n const {\n seqPageEndNum,\n currentPage\n } = this.state\n let val = Number(event.target.value) || currentPage\n if (parseInt(val) > parseInt(seqPageEndNum)) {\n val = seqPageEndNum || 1\n }\n this.retPageGroup(this.state.currPageCount, val)\n this.props.updatePageInfo(val)\n this.props.getClickPage(val)\n }\n\n // 跳转指定页输入改变事件\n gotoPageChangeVal = (event) => {\n const val = event.target.value\n this.setState({gotoPageVal: val})\n }\n\n // 点击了指定页码\n clickPageNum = (num) => {\n this.retPageGroup(this.state.currPageCount, num)\n this.props.updatePageInfo(num)\n this.props.getClickPage(num)\n }\n\n render () {\n const {\n className,\n total,\n showTotal,\n showPageCountSelect,\n pageStyle,\n seqPageStartListCount\n } = this.props;\n \n const {\n seqPageStartList,\n currentPage,\n currPageCount,\n seqPageEndNum,\n seqPageCenterList,\n gotoPageVal\n } = this.state \n\n let pageCountList = this.props.pageCountList.map(i => {\n return {\n id: i,\n text: i + '条/页'\n }\n })\n\n return (\n
\n {/* 总记录数 */}\n { showTotal && 共{total}条 }\n\n {/* 下拉选项每页条数 */}\n { showPageCountSelect &&\n \n this.pageCountChange(val)}\n data={pageCountList}\n />\n \n }\n \n {/* 序列页码 */}\n \n { currentPage > 0 && seqPageStartList.length !== 1 && {\n if (currentPage > 1) {\n this.clickPageNum(currentPage - 1)\n }\n }} > }\n
    \n {/* 序列前面部位 */}\n {seqPageStartList.map((num, k) => {\n if(num == currentPage) {\n return
  • this.clickPageNum(num)} style={{\"color\": \"#265cf0\"}} key={k}>{num}
  • \n }else {\n return
  • this.clickPageNum(num)} key={k}>{num}
  • \n }\n })}\n \n {/* 序列中间部位 */}\n {seqPageEndNum > seqPageStartListCount &&
  • ...
  • }\n {seqPageCenterList.map((num, k) => {\n if(num == currentPage) {\n return
  • this.clickPageNum(num)} style={{\"color\": \"#265cf0\"}} key={k}>{num}
  • \n }else {\n return
  • this.clickPageNum(num)} key={k}>{num}
  • \n }\n })}\n {seqPageCenterList.length > 0 && currentPage < seqPageEndNum &&
  • ...
  • }\n\n {/* 序列尾部 */}\n {seqPageEndNum > seqPageStartListCount && currentPage < seqPageEndNum &&
  • this.clickPageNum(seqPageEndNum)}>{seqPageEndNum}
  • }\n
\n { currentPage <= seqPageEndNum && {\n if (currentPage < seqPageEndNum) {\n this.clickPageNum(currentPage + 1)\n }\n }}> }\n
\n\n {/* 跳转页码 */}\n {\n this.props.showGotoPage && \n \n 前往 this.gotoPageChangeVal(event)} onBlur={(event) => this.gotoPageChange(event)} />页\n \n }\n
\n );\n }\n}\n\nconst mapState = state => ({\n pageInfo: state.page.pageInfo\n})\n\nconst mapDispatch = dispatch => ({\n updatePageInfo: dispatch.page.updatePageInfo\n})\n\nexport default withRouter(connect(mapState, mapDispatch)(Pagenation))","import _ from 'lodash'\nimport { useHistory } from 'react-router-dom'\nimport './index.css'\n\nfunction BreadCrumbs(props) {\n const HISTORY = useHistory()\n const { data, history, hideStepsFunc } = props\n\n const handleClick = record => {\n const {\n goBack,\n path\n } = record\n\n if (goBack && _.isFunction(hideStepsFunc)) { // 此处是专门为 steps(步骤弹窗)而做的,意为关闭当前步骤弹窗,回到初始页面\n hideStepsFunc(false)\n } else {\n path && history && history.push(path) || HISTORY.push(path)\n }\n }\n\n return (\n
\n
\n {\n Array.isArray(data) && \n data.map((record, index) => {\n let dataLength = data.length\n\n return dataLength === ++index ?\n {record.title} :\n \n handleClick(record)}\n >{record.title}\n \n \n })\n }\n\n
\n {props.children}\n
\n
\n
\n )\n}\n\nexport default BreadCrumbs\n","import React, { Component } from 'react'\nimport ReactDOM from 'react-dom'\n\nimport './index.css'\n\nfunction DrawerBody(props) {\n return (\n props.children\n )\n}\n\nclass SdwDrawer extends Component {\n\n state = {\n isHide: false,\n isShowWin: false\n }\n\n componentDidMount() {\n this.setState({\n isShowWin: this.props.visible\n })\n }\n\n componentDidUpdate (prevProps, prevStates) {\n if (prevProps.visible !== this.props.visible) {\n\n if (!this.props.visible) {\n this.hanldeClick()\n } else {\n this.setState({\n isShowWin: this.props.visible\n })\n }\n }\n }\n\n hanldeClick = () => {\n this.setState({\n isHide: true\n })\n\n setTimeout(() => {\n this.setState({\n isHide: false,\n isShowWin: false\n })\n }, 150)\n }\n\n render() {\n let { isHide, isShowWin } = this.state\n let { sureBtnDisabled } = this.props\n\n let contentClassName = isHide ? 'is_hide_win' : ''\n\n return ReactDOM.createPortal(\n (\n isShowWin &&\n
\n
\n
\n
\n {this.props.title}\n \n
\n
\n \n {this.props.children}\n \n
\n
\n {\n !this.props.hideCancelButton &&\n \n {this.props.cancelText || '取 消'}\n \n }\n {\n !this.props.hideSureButton && \n \n {this.props.sureText || '确 定'}\n \n }\n
\n
\n
\n ),\n document.body\n )\n }\n}\n\nSdwDrawer.Body = DrawerBody\n\nexport default SdwDrawer\n","import { request } from '../utils/request'\nimport { ajaxPost } from \"./AjaxApi\";\nimport { requestOptions } from '../config/config'\n\nconst baseURL = requestOptions.basename\n\nexport function getStandardSelects (params) {\n return request({ url: '/metadata/tableApi/getStandardSelects', method: 'get', params: params })\n}\n\n// 获取主题列表\nexport const getTopicBusiness = (params = {}) => {\n return request({ url: '/dataset/common/getTopicBusiness', method: 'get', data: params })\n}\n\n// 排名维度\nexport const getTablecfgFieldsAndStandardList = (params = {}) => {\n return request({ url: '/metadata/tableApi/getTablecfgFieldsAndStandardList', method: 'get', params: params })\n}\n\n// 来源表\nexport const getAllTablecfg = (params = {}) => {\n return request({ url: '/metadata/tableApi/getAllTablecfg', method: 'get', params: params })\n}\n\n// 获取所有的表\nexport const getTablecfgList = (params = {}) => {\n return request({ url: '/metadata/tableApi/getTablecfgList', method: 'get', params: params })\n}\n\n// 获取该表的所有的字段\nexport const getTablecfgFields = (params = {}) => {\n return request({ url: '/metadata/tableApi/getTablecfgFields', method: 'get', params: params })\n}\n\n// 获取分页数据\nexport const getPage = (params = {}) => {\n return request({ url: '/dataset/targetV2/items', method: 'get', params: params })\n}\n\n// 获取分页数据\nexport const getTargetPage = (params = {}) => {\n return request({ url: '/dataset/targetV2/getTargetPage', method: 'get', params: params })\n}\n\n// 获取所有的计算方式\nexport const getPublicCfg = (params = {}) => {\n return request({ url: '/dataset/common/getPublicCfg', method: 'get', data: params })\n}\n\n/**\n * 添加,修改数据\n * @param {object} params\n * @param {func} callback\n */\nexport function storeOrUpdateAtomTarget (params, callback) {\n return request({ url: '/dataset/process/addOrUpdateDimen', method: 'get', params: params })\n}\n\n// 获取所有原子指标选项\nexport const getAllAtomTarget = (params = {}) => {\n return request({ url: '/dataset/atomTargetV2/getAllAtomTarget', method: 'get', params: params })\n}\n\n/**\n * 获取所有修饰词记录\n * @param {object} params\n * @param {func} callback\n */\nexport const getAllModifier = (params = {}) => {\n return request({ url: '/dataset/modifier/getAllModifier', method: 'get', params: params })\n}\n\n/**\n * 根据原子指标ID获取关联表所有字段\n * @param {object} params\n * @param {func} callback\n */\nexport const getTableFieldsByAtomId = (params = {}) => {\n return request({ url: '/dataset/common/getTableFieldsByAtomId', method: 'get', params: params })\n}\n\n/**\n * 获取所有维度映射数据\n * @param {object} params\n * @param {func} callback\n */\nexport const getAllDimMapping = (params = {}) => {\n return request({ url: '/dataset/common/getAllDimMapping', method: 'get', params: params })\n}\n\n/**\n * 获取所有派生指标\n * @param {object} params\n * @param {func} callback\n */\nexport const getAllTarget = (params = {}) => {\n return request({ url: '/dataset/targetV2/getAllTarget', method: 'get', params: params })\n}\n\n\n\n/**\n * 添加,修改派生指标\n * @param {object} params\n * @param {func} callback\n */\nexport function storeOrUpdateTarget (params, callback) {\n return request({url: \"/dataset/targetV2/storeOrUpdate\", method: 'post', data: params})\n}\n\nexport function checkTarget (params, callback) {\n return request({url: \"/dataset/targetV2/checkTarget\", method: 'post', data: params})\n}\n\n\n\n\n/**\n * 修改衍生指标\n * @param {object} params\n * @param {func} callback\n */\nexport function storeOrUpdateDerive (params, callback) {\n return request({url: \"/dataset/targetV2/storeOrUpdateDerive\", method: 'post', data: params})\n}\n\n// 审批申请接口\nexport function storeOrUpdateAuth (params, callback) {\n return request({url: \"dataset/targetV2/storeOrUpdateAuth\", method: 'post', data: params})\n}\n\n/**\n * 修改派生指标弹窗确认\n * @param {object} params\n */\nexport function getChildTarget (params) {\n return request({url: \"/dataset/targetV2/getChildTarget\", method: 'get', params: params})\n}\n\n\n/**\n * 获取派生指标详情\n * @param {object} params\n * @param {func} callback\n */\nexport const getTarget = (params = {}) => {\n return request({ url: '/dataset/targetV2/item', method: 'get', params: params })\n}\n\n\n/**\n * 获取指标计算结果\n * @param {object} params\n * @param {func} callback\n */\nexport const getTargetResults = (params = {}) => {\n return request({ url: '/dataset/targetV2/getTargetResults', method: 'get', params: params, timeout: 30000 })\n}\n\n/**\n * 跑指标计算结果\n * @param {object} params\n * @param {func} callback\n */\nexport function runTargetResult (params, callback) {\n return ajaxPost(baseURL + \"/dataset/targetV2/runTargetResult\", params, callback);\n}\n\n// 提交重跑--提交审批\nexport function runTargetResultAuth (params, callback) {\n return ajaxPost(baseURL + \"/dataset/targetV2/runTargetResultAuth \", params, callback);\n}\n\nexport const getTargetLogs = (params = {}) => {\n return request({ url: '/dataset/targetV2/getTargetLogs', method: 'get', params: params })\n}\n\nexport const getDataKinship = (params = {}) => {\n return request({ url: '/dataset/targetV2/getDataKinship', method: 'get', params: params })\n}\n","import React from 'react'\nimport './index.css'\n\nconst FormInstance = React.createContext('');\n\nclass Form extends React.Component {\n state = {\n fields: [] //存放每个formItem的实例\n }\n addFormItemInstance = (instance) => {\n if (instance.props.prop) {\n this.state.fields.push(instance)\n }\n }\n removeField(field) {\n if (field.props.prop) {\n this.state.fields.splice(this.state.fields.indexOf(field), 1);\n }\n }\n validate = (cb) => {\n // 对每一个formItem的项的校验\n let flag = true\n this.state.fields.forEach(field => {\n let res = field.validate()\n if(res) flag = false\n })\n typeof cb === 'function' && cb( flag )\n }\n render() {\n let {labelPosition} = this.props\n return (\n \n
\n {this.props.children}\n
\n
\n )\n }\n}\n\n//FormItem的校验控制自己那一项的校验状态\nclass FormItem extends React.Component {\n static contextType = FormInstance;\n state = {\n isError: '',\n errMsg: false\n }\n componentDidMount() {\n this.timer = null\n let form = this.context\n form.addFormItemInstance(this)\n }\n componentWillUnmount() {\n let form = this.context\n form.removeField(this);\n }\n validate = () => {\n let form = this.context\n let {model,rules} = form.props\n let prop = this.props.prop\n\n let rule = rules[prop]\n let value = model[prop]\n\n let isError = false\n let errMsg = ''\n\n if (!rule) return false\n\n // 在这拿到值和规则 进行校验\n for (let index = 0; index < rule.length; index++) {\n const element = rule[index];\n if(element.func && !element.func(value)) {\n errMsg = element.message\n isError = true\n break\n }\n }\n\n this.setState({\n isError,\n errMsg\n })\n return isError\n }\n onFieldBlur = () => {\n // this.validate()\n setTimeout(this.validate, 250)\n }\n onFieldChange = () => {\n if(this.timer) {\n clearTimeout(this.timer)\n this.timer = setTimeout(() => {\n this.validate()\n }, 250)\n }else{\n this.timer = setTimeout(this.validate, 250)\n }\n }\n render() {\n let { isError, errMsg } = this.state\n let { label, required,className } = this.props\n let labelWidth = this.context.props && this.context.props.labelWidth\n if (this.props.labelWidth) {\n labelWidth = this.props.labelWidth\n }\n return (\n
\n \n\n \n\n
\n\n {this.props.children}\n\n {isError &&
{errMsg}
}\n
\n\n
\n )\n }\n}\nForm.FormItem = FormItem\n\nexport default Form","import React from 'react'\nimport _ from 'lodash'\nimport PropTypes from 'prop-types'\n\nimport './index.css'\n\nconst ROW = props => {\n Layout.customObj.gutter = props.gutter\n\n return (\n
{props.children}
\n )\n}\n\nconst COL = props => (\n
{props.children}
\n)\n\nclass Layout extends React.PureComponent {\n\n render () {\n return (\n
\n {this.props.children}\n
\n )\n }\n}\n\nCOL.propTypes = {\n span: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), // 占比宽度:span/24\n}\n\nROW.propTypes = {\n gutter: PropTypes.number, // 单位是:px\n justigy: PropTypes.string\n}\n\nLayout.Row = ROW\nLayout.Col = COL\nLayout.customObj = {}\n\nexport default Layout","import React from 'react'\nimport PropTypes from 'prop-types'\nimport './index.css'\n\nclass Switch extends React.PureComponent {\n\n render () {\n let { value, changeValue }= this.props\n let switchClassName = 'sdw__switch-button-wrap'\n if (!!(+value)) switchClassName += ' is_true'\n\n return (\n <>\n {\n if (typeof changeValue === 'function') {\n changeValue(Number(!value))\n }\n }} />\n \n )\n }\n}\n\nSwitch.propTypes = {\n value: PropTypes.oneOfType([PropTypes.bool, PropTypes.string, PropTypes.number]),\n changeValue: PropTypes.func\n}\n\nexport default Switch","/**\n * @file 导航左右结构 + table 组合成的通用界面组件:这里主要是样式的抽取\n */\nimport './index.css'\n\nfunction LeftCrumbs(props) {\n return <>{ props.children }\n}\n\nfunction RightCrumbs(props) {\n return <>{ props.children }\n}\n\nfunction CenterWrap(props) {\n return <>{ props.children }\n}\n\nfunction BreadCrumbsAndTablde(props) {\n let LeftCrumbsProps = null\n let RightCrumbsProps = null\n let CenterWrapProps = null\n\n // 只有一个的时候,是对象,不是数组,同意转为数组处理\n const propsChildren = Array.isArray(props.children) ? props.children : [props.children]\n \n propsChildren.forEach(comp => {\n switch (comp.type.prototype.name) {\n case 'LeftCrumbs':\n LeftCrumbsProps = comp\n break;\n\n case 'RightCrumbs':\n RightCrumbsProps = comp\n break;\n\n case 'CenterWrap':\n CenterWrapProps = comp\n break;\n \n default:\n break;\n }\n })\n\n return (\n <>\n
\n
\n { LeftCrumbsProps }\n
\n
\n { RightCrumbsProps }\n
\n
\n
\n { CenterWrapProps }\n
\n \n )\n}\n\nBreadCrumbsAndTablde.LeftCrumbs = LeftCrumbs\nBreadCrumbsAndTablde.LeftCrumbs.prototype.name = 'LeftCrumbs'\nBreadCrumbsAndTablde.RightCrumbs = RightCrumbs\nBreadCrumbsAndTablde.RightCrumbs.prototype.name = 'RightCrumbs'\nBreadCrumbsAndTablde.CenterWrap = CenterWrap\nBreadCrumbsAndTablde.CenterWrap.prototype.name = 'CenterWrap'\n\nexport default BreadCrumbsAndTablde","import React, { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport loaddingImg from './img/loadding.png'\n\nimport './index.css'\n\nconst IMG_MAP = {\n loaddingImg: loaddingImg,\n}\n\nclass Loadding extends Component {\n\n static defaultProps = {\n tipContent: \"加载中...\",\n tipIconWidth: 44,\n tipIconHeight: 44,\n }\n\n render() {\n let {\n top,\n width,\n loadding,\n tipContent,\n tipIconWidth,\n tipIconHeight\n } = this.props\n \n return (\n
\n {\n loadding &&\n
\n
\n \n {tipContent}\n
\n
\n }\n {this.props.children}\n
\n )\n }\n}\n\nLoadding.propTypes = {\n loadding: PropTypes.bool,\n tipContent: PropTypes.string, // 加载中的提示文本\n tipIconWidth: PropTypes.number, // 加载icon的宽度\n tipIconHeight: PropTypes.number, // 加载icon的高度\n width: PropTypes.number, // 宽度\n top: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), // 提示文字固定top\n}\n\nexport default Loadding\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAK4AAACuCAYAAACvDDbuAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAArqADAAQAAAABAAAArgAAAABZ+F9+AAAYxElEQVR4Ae1dDYxc1XW+982ubdY7M0akMbYKwWt3Z9c4KxojWoEtsAEZq6mjKICL2VkciBxVCRJxSIRKMGOIqzZQE4nSKBYxZmeBOJBEcZGIMRhTu6hCmNKNsXdc/6RQ2TjFindm/bv73u133niW2Znz5mfnf/c8yX7vnfv7vvvtmXPvPfdereQqCIGbIqbp+EeJucpWIWXon/lTpY1fOcqvtPYjEz9keMZd4d3QHZdWCaVMAu8JxMMz7gbvFt3xrvX/Ik5M+VRs1pX+w7siesRNJ//lREDnDJ2EgVdHzBT7SGKhMWq+Mk4IzAuBWB0gXptRpqmSkGgF0mp1BGUNgOwxpa2Y1mq/r82/98OIvlDJshst70lP3Dt+YXz7X40vHFZmqXb0EmjRRSBtSz01JMh7Btp5j7HMW81K75z/5cDel+/Udj3Vsdp1mZTEDfUMdSljLwXYS40xN+IeqDbwJZYX11q/jTx2Ku3bGett7S8xv4ZLPmmIGwqfnaP0hW5o0x7YmPMarqVyVVjrQ9DKvcpM6YtFLzmaK+pECZvQxF24xgQT5xJ3KMf0oMEWwW6c0N8Le9zgO/coS/f6p/lf3rtJD04UomZ+x4RryEjEWFuPxpc7tuoBTVdAu07L/Ojxv+sTyU6TilnGOgiWnARJEto4yRGCJgujBr6EcoYT6FDRCIJCR8+vrGaMMNh+NeJg1MH4jbYwGmH8AP8yRzvt6IwlO4HKzBx/3TJSan0ONN5m+VTvyjmB1yIR7WTEaOjXCUNcGq765HACpoB5CL1/EKGES6tT6OHvNkb/zofePX6GY1N8gdgHW/SpEnLNm/Sa1WbGBTsegjkTsjGaobX5Ir5lMYg9I2/iHBHwLfgG/Q+Xz/X3TZThtoYn7vL7zdQjfxy8F8NI30eDX5Wj/TyDQMzT+Jndg387lXJ23jU3+H69aCj6BXnp8OCXlLLQmTT0j0Y9pnt+TI4AfOfv8Ufwo7ZLg5tfe1qfzxG17oMalrhdYTP9nE58UzvmQWilWcUiDQ30Hsi+DRMAO1un+t+FPThcbB61iA+7vXnofOI6mEBLQcIV+IW5tth6QAMfN5Z+cprx/7Q/qvFH23hXwxGXJghGDg1+B4T7HhrtsqIg1+pjaK4+zFL1HtwSwCB/41/tq+MdmM1D59PpBpGvKOaLQOBPocGfbJoXfKrRJjgairidPaducRz9z8XYsPh5TBilf6m11TvwfOsuaFrqeU+4C3/EuuOeoZuMcXq0Ml+DOZGcci7gS8kGtizz7QO9M94oIHpdRGkI4obuPT1bDY9sROOsLBQ1EHafZfQTLS2BV2AGnCk03USIB3Oi5cyZ+O2ONvhVUgsK/Sb8UW9VzU1rY5unHys0Ta3i1TVxaaTg2OH4/dAg6wvVIGS7QvlsiEX9v5mo2rVQspAWDoUTX8GPzMN4LsgWvvgL9ejsuYGn63kEom6J29Edv95o5ycgbFdhDaV3W1ptGIgGtxcWf3LF6ggPLnOMehg27eJCvhwE7tfG+tuBvsA7hcSvdpy6Iy4N//z8SHwdQH4EPWcrLyBavdHksx7bvyWwO29ciaDmr44vHrGddejI3ZIXDq0dKIPH/6Yt8Fi9DA+m6lxXxL169dDlI/bIC9Cy5ACT84JG+MjS1gMHegO/zhlRAlkEOnviX3WM82NgfSUbIU0IrHc2+Zru/nBL6ydp4po+1g1xacTAdnQffspyTnvCbh3GtOnGqSb4eKOOQda0xdMKp7Hw83oQv2x6LWzg5rQg5lGf8Fmmu15GHmpOXPKH7d8WfxR+BQ/nMw3wlw9/VN+39kX9BxhkRTROBBaEE53Dyn4G2ndJzixgOmAwcUPXisD6WvsD15S4nWtOz3LODL+IgdWbcgKm9AnLUmsHeoMv5o4noaUg0NEzuMpx1Ma8v3pK7bJamlcd2DT9eCnllZK2ZsSlGR9tO9vz2ljofE1Tvrv7o/4/lPKhkrYwBLrCic+fU/YL+Tpv1McwPmtZrWYg8/faC/veomJd3TN4nbbNntyk1Tbs2UdWzQ0uE9IWBW9JkQlrwpywh9OR5/IgajtqQ2rLkgocZ+Kqa9xQ9+Bt6Fy9gg/39HDCFOQxTNGuGoj63x7nd0myMiDQEU7ciClkmHJmtld20Lyn0bm7PdYX/K1XnErIq6pxQdq7ySMrD2lfb2m2rhHSVqK5i8uT2oDaAorkda+UbluiTd229YpUAXnVNG57GB5dRv0TDP8cZepILBp4bLJP1VagnUvKMjl1HF+Htot4Z4TxBq2+ezAafMo7TvlCcpCofIWEwoOP4+N/4J0j7FlLr4n1BjZ7x5GQWiMQ6onfaxyzCQT2edUFSueHsWgQ9nFlr4oTN6lpDYZYPC5aG2XplbHnA9s8Yoi4jhAI3RNfAfJuxZi791o+rddWWvNWlLhk92CMNuppHmBtF3Zr+euDvQEsm5GrURBo74kvwi4//wrTz2MtnCZ7MIwO2wuV+qaKETc5ekAdMX4qkUYO4Guw7EDUv69SHyf5Vg6BznBiAXwdtnuNOMBkwOZAakWlRhsqQtz54cG/sJV502v0AKT9b2vqlFsP/OyS/6kctJJzpRHovO/sF5zzF3aAvH/GlUVDZU1aL/2wN/guF16KrOzETc6I0eQCvx7M1bRTp1wvpC2l2eon7UXyvpND8540Pr2o3DNsZR3HJd+D5DQuT1oMl5xyzQPRtPXDvBJrQgqI2pTalsuKFBhxgrjBhY9XVjbikpeX6zDj5d+J0QPqiIlNO96mqt90bpuibbHy+hxXS5iMVxI3iCNc+HhkZSOu65ro6eXljtOulNGD8TRRY6ShtqVhTS//BvIAJI6U62vKYuO6TuBGb/fyp4XfwTcwI/azclVa8qlfBELh+H3wb3iWrSH8eX3aLCuHM3rJGpeW27grFzzXh7nTuEJatiUnnjCpoHSE/TJwhLhCnGHDixCWRFxa2Ig1YnDu5pfbkHMG+R4UUR+JOgEQcP1NPB1zzEziDHGnlE8tKTGtxoXhvYSrAA17wbOoWxxmOHQmtoza3G17cID7UuIMcYcLK1Q2bhsXc9Y3YM7633i7VtsYIrlZXBMLbYaJGY/8eTG79ibrlENL341ePN59G8alcWmHGeU4/8KTFv1KrSJC2olJxmK+ijhAXGDTwN6lDV9cLrERcgvHRVzaFgnqnt9hBmvE7pob+PvcxUroZEHA5QI4wX0vcYi4xIXlkxVtKiQ3oBseQKHMboD6xDRtdckasXywT67wBd8YmnnhnP1fXCceGjmhmps7it1or3iN6+6ayJEWO89iCbmQdnKRspCv3fdsq7u9ABfXVYDgFBeWS1aUxk3uNqN2cBniL+etWHTGUi5MZIIAIRAKn9oJorKjUD5L3VrMxETBGpd2AneMfoZrAvK9pB1muDCRCQIpBIgjxJXUe/qdNuwmjqXLcj0XTFzavh6ePu1sZtjLS7ZFYpERYRoCLkfAlTTR6CPcIkPuEQmjktwPBRGXNkejMxe4rGAifEQb0HFhIhMEMhEgrhBnMuXJd/2gyzU+cIy0IOLS6TZejuGYaHhAdk0cg6m85ECAuEKc4aJA636OuMaFZcryds6S54jFjyLTbEdgjM8djM64NTNTeRcE8iHQHj61g9ufDK4Cx9suDczJdw5bXo1Lh9+xpEXNaCfwfBWUcEGAQ8CLO8Q198BFLlGaLCdx3ek4nNiYFj/tUe+W7evT4JDHohBIckfvZhOBc/mmgnMSN3k2rrqKyxxnA2zg5CITBApFwItDGOu9iriXKx9P4kbgL4kO2UNcYozFvSen23DIiKwYBIhDxCUuDXGPOMiFkcwzYOvR+HLYG+wp5HSOmFeGIhcEikHAi0vEPeKgV16exHXc82Gzk2EMbh8dfpcdIhJBoHgEkgcpKnY3Iy8OUikscXGkZhCbP63gqkHHjEK9Y9GmXIJA6QgQl4hTXE7EQeIiF8YS9/TZxJ3cbnzQtgk6G5fLSGSCwHgRIE4Rt7LSY0fIxLnEHVlyCFjiOsaEuch0CvlkO9CZw0Fk5UWAOEXcYnN1TA8nzyJuKHx2DiIu4iJjf4ReTi4yQaBUBHJwa9FFTo4pIou4Rl2AtqXtTTMurT4eeL51V4ZUXgWBsiDgcgscy87MoENFnBx7ZREXwVmRkkmsPumUjQVP3sqHQJJbFo7EZa8sTo4hbqhnqAudsnlsUp8SM4EFRoRlQ8CLY+Cky820gsYQ1xj75rSw0Uf8NbxX7v1NRzOXB0HgIgLEMeIaC4ixl6bLxxAXhu2S9MDRZ5xjNfosD4JAJRHw5hpPXNq7FPPDN7J10nonKxehIFBuBDy4RtxM3193VOPufzW+EHUIZNYDA8OnW6f6y76Hf2Y58i4IEALENeIcg0bgIkfdoFHi4oiUMar4s4R6DwaI2ZWZn8WRJ0GgPAgkuabZ48PSOTpKXAzdehFXzITytInkUjACHqZpGkdd4tJ6dq3MDXy+jhCXB0akFUOA5xxxNLX3gktc+1DiWnidt2TVAyep3DU3+H6WXASCQAURcDnHnOJDHLWPJKgvlnSycSw1n6sHVlzujkS0w4WJTBCoFALEOeIelz/I63LV1bhaOexKByTs5xKLTBCoNAJYGfE7tgyT5KpLXHTMWOLCWzzGJhahIFBpBLQZYIvQuoPkSeJiIz0uUrMW4nK4iKzyCOTgnstVy12/blQbV5VmK3CQk4tMEKg0Ap7cA1eJs9bxjxJzsaKyKbsi+sQHWzR7Pmt2XJEIAuVFIMk9fSIzV+IqcdZSNm8mwJlc7NtM1OS9ygh4cBCctbDxGGvf4jRsIW6Vm0mKy0DAi4PgLO1Wc0VGdPfVMpbYtxwwIqsaAl4cJM7SqAJzeg6kWn1atRpKQYIAh4A3B/3Yd8zwxDU6e507l7nIBIFKIeDBQeIsbFzNE9dnC3Er1SCSb2EIeHEQnLVgEvDENZYQtzB4JValEPDiIDgLjWta2XIta4iVi1AQqBYCXhwEZ701rvKJxq1WA0k5Hgh4cNDVuMrDxnWGhbgecIq4Sgh4cpBsXPYwaaV8bX4hbpXaR4rhEfDkIDib8g7jU4pUEKghAh9G9AU6PoqpwkmycVnNiiUS/GgDk4uIBIGKIWCZ3qy8IYNXmCHiXpYd2EzEPZklF4EgUEUEmtqC60aODCrl6B63WCItZE2wcVmNq5QtGreKDSRF8QiQuYAQOv1pzAlQMBU8pnZHHCEuj6VI6wAB6pzxGld7+DDUQaWlCoIAzZyxxDXaEo0r/KhbBHBSj2andrXXVHDdfopUbDIh4G0qGPW5yQSEfGtjIWBhB2jmwAgafXDaG+tTpLaTCQGagODXlnmtRZtM6Mi31i0ClvJ5EFfxu9vU7ZdIxSYVAtasK/2HMR88kv3VZuY1q82MbLlIBIHaI2DtioC0Wh3hqjLsxMXO5YARWc0RSHmHsXau4yh3g7Ga11IqIAhkIJAkruF3xrPFzs2AS17rBYEkcbXFalytzRfrpaJSD0EgHQGXuDieZ3+6MPWMDcYWRyImZU6kxHIXBGqOgEtKLJHYC/KeyaqNUTNeOjz4pSy5CASBGiPgEpd8Ho3S/87XxVrKy0UqCNQOgc/MAG08joXyOrivdpWWkgWBUeI2K49D0ZRZtHCNaRaoBIF6QmCUuPO/HNiLisUzK4fjeaYPnU9clymXd0GglgiMEvflO7UNT7G32coYMRdYXERYMwRGiUs1wPFQb7E1MWoFKxehIFAjBMYQV2vfm1w9sAP0te2r4zL9y4EjspogMIa4sd7Wfqz6PcTWxFbJde1soAgFgeoiMIa4F4uO8lVwuqF5NR8mUkGgughkEVerKSCuhrmbcRl1Rcc9QzdlSOVVEKgJAlnEjUUvOYqa7OFqY4wj5gIHjMiqjkAWcd0aWLqXqwkOjfgaJiNauDCRCQLVRIAlrn+a/2V00s5lVgSTEf4zZ+K3Z8rlXRCoNgIscfdu0oOwcrdxlXG0+Z500jhkRFZNBFjiUgUsn2LNBWjdBaFw4ivVrKSUJQhkIuBJ3JVzAq9h9a/XyoiHMzOSd0GgmgjkHJftCMdXO8Z5jqsQtsC5bSAa3M6FiUwQqDQCnhqXCr58rr8PKyN+z1XCMUq0LgeMyKqCQE7iunsuGPUjviZm8fzV8cV8mEgFgcoikJO4VHTbpcHNHiefqBHbWVfZ6knuggCPQF7ivva0Pm8s/SSb3KhbOnviX2XDRCgIVBCBvMSlsqcZ/0/hZH6Sqwc6bz/uCpvpXJjIBIFKIVAQcfuj+jS23H+CqwTGda88rwcf4cJEJghUCoGCiEuFN80LPuU1rquMXrsgnOisVCUlX0EgE4GCiUt7L1iW+XZmBvSOKeDmYWU/w4WJTBCoBAIFE5cKP9A74w3Yulu5isBkWNLRM7iKCxOZIFBuBIoirlt4c9NaTEqwR0xhW9KNXeHE58tdSclPEMhEoGjixjZPP4btmh7NzCj5bmaeU/YLslEej45Iy4dA0cSlomfPDTwNrdvPVgNjuy8djv8dGyZCQaBMCOR0sslVRkd3/Hr45u5Gz4whv7Ytbd08EPXzG4zkyljCBIECEGBIV0AqRBnoC7yDHUQe42MbH9anvfjnX0/8CR8uUkGgNATGTVwqdtW8wOMwGdhdHrEp9Owzw06frJYorYEkNY/AuE2FVHZXrx66fHjE/gCjuTNTsrF3HTnYF1w/ViZvgkBpCJRMXCq+s+fULbbR23l7F7s0WNZ9sd7A5tKqKqkFgc8QKMlUSGXjTkwYtSH1nnk3jtkUuicuG+dlAiPv40agLMSl0rtWBNZDfe/ia4LOmu38vL0nvogPF6kgUBwCZTEVUkV2rjk9yzk7/B/kMZaSjblrdcqnfIsPRP37xsjlRRAoEoGyaVwq98Cm6ceNz1rm5buL4bMZ8N/d3nnf2S8UWU+JLgiMQaCsxKWcD24JDPiU+isMk50eU9LFFxomc85f2CHk5dARWaEIlNVUSC801D14Gw633kYuj+ny1DN8e49hdm2ZmA0pROReDAJl17ipwmN9wd/CNPg6u2UpIpHmtZW9WzpsKcTkXgwCFSMuVQLkfQFa97ueFYLNi7HfHTJU5omQBHggUFHiUpkHo1jyo/UPPcqn5RPTjG1+FQrH7/OMIwGCQAYCFSculReLBh/BtqVrvcwGsJeccp5t7x58VHwbMlpIXlkEKtY540pDh+1umA7PeXXYKA06ba+3NFvd//mc//+4PEQmCBACVSUuFZgcbTCvYJLCcy8GGnHQ2lol/ryEmFwcAlUxFdILptEGn9I3e05SILI71mucN0PhwR/IMqB09OQ5hUDVNW6qYDrwT9vOds/p4VRErd6Ypnx390f9f0iJ5C4IVF3jpiCnGTbrkua/xF/OrpSMvWMN2znj9MvSdxadSSusmcZNIX7HL4yvf1v8URz997CXP28qLqaR32pWvm/ti/oPpGRyn5wI1Jy4KdhdZ3RH98HC9VhJkYwJ23gY5wdubJ0WfAyHrJxJpZf75EKgbohLsNMyoBF75EXaFSdfM0D7fgRfhwcO9AZ+nS+uhE88BGpm43JQfril9ZO75gZvsSy9HhMWDhcnJaNOne04v2oPn9ohO6OnUJk897rSuOmw074NRjs/AUG70uXez3q3pdUGOVDFG6GJFFK3xCWQb4qYpmOH4/fjKNb1ILC/EOBhA7+HQ943xKL+3+DZFJJG4jQeAnVN3BScoXtPz1bDIxsxVbwyJct3hw28zzL6iZaWwCvSicuHVuOFNwRxU7DSyINj9DMgcHtKlu8OAiewSd8vMYXcO/B86y7RwvkQa4zwhiIuQXp1xEwZOTT4HXTe6Ezhy4qCWauPcdhrn8JxrzQBUlRaiVxXCDQccVPo0YEp53Tim9oxD8K3YVZKXuidbGG4GG3DH8DO1qn+d2FODBeaVuLVHoGGJW4KuuX3m6lH/jh4L0j4fXTgrkrJi7nDnMDCTr0H/7APmrMTQ3LvRyK5h+OKyV/ilh+BhiduChIagfjkcKIb5sND0MChlHxcd+z/ANfK3Ujbj2GJWLPGPytw8IMt+tS48pNEZUdgwhA3hQy5QW49Gl/u2KoH/g8raGlQKqz0uz6BKekYtHvMMtZB3D/FiUMJ5bMTylgJZVlDSvkSyhlO+Nr8CTrwpfQyJQcOgQlH3PSPXLjGBE+fTdzpGBOGHNs/gcpVvKC1jyvL9Da1BdcJicsLfFUbsrxVLy63UPjsHKMuEIHD0MLziktdWmxtqX+M9c54qLRcJHU6ApOGuOkfHeoZ6jLGvhkfvwQ28Y0IC6SHl/uZNC9Wfswud76TOb9JSdz0Bid/4P2vxhcOK7MUlsRSTC/fgNGJlvQ4pT4LcUtFMDv9pCduJiQ0wWEfSlwLa7hTaacDZKYRihAWwrVhtKIpM34h72IqFIJScXGEuAXihY5e89BIok3ZLolDMDGuQFI/NLQf5PZjhKEVtjPd4QyE96RT0EnpnBUIcJHR/h8D1CaSr11wJwAAAABJRU5ErkJggg==\"","function formatJsonParse (str, defaultVal) {\n let jsonData = defaultVal\n\n if (typeof str === 'string') {\n try {\n jsonData = JSON.parse(str)\n } catch (error) {\n \n }\n }\n return jsonData\n}\n\nexport {\n formatJsonParse\n}\n","// 应用管理\nimport { request } from '../utils/request'\n\nexport function getAllAppInfos (params) {\n return request({ url: '/statistics/dataProcess/getAllAppInfos', method: 'get', params: params })\n}\n\nexport function searchAppInfo (params) {\n return request({ url: '/statistics/dataProcess/searchAppInfo', method: 'get', params: params })\n}\n\nexport function searchAppInfoManage (params) {\n return request({ url: '/statistics/dataProcess/searchAppInfoManage', method: 'get', params: params })\n}\n\nexport function getAllTopicTarget (params) {\n return request({ url: '/statistics/dataProcess/getAllTopicTarget', method: 'get', params: params })\n}\n\nexport function getTargetCfgById (params) {\n return request({ url: '/statistics/dataProcess/getTargetCfgById', method: 'get', params: params })\n}\n\n// 这是搜索指标的\nexport function searchTarget (params) {\n return request({ url: '/statistics/dataProcess/searchTarget', method: 'get', params: params })\n}\n\n// 这是接口去重过的指标的\nexport function searchDistinctTarget (params) {\n return request({ url: '/statistics/dataProcess/searchDistinctTarget', method: 'get', params: params })\n}\n\nexport function storeNewAppTable (params) {\n return request({ url: '/statistics/dataProcess/storeNewAppTable', method: 'post', data: params })\n}\n\nexport function updateNewAppTable (params) {\n return request({ url: '/statistics/dataProcess/updateNewAppTable', method: 'post', data: params })\n}\n\nexport function storeAppTarget (params) {\n return request({ url: '/statistics/dataProcess/storeAppTarget', method: 'post', data: params })\n}\n\nexport function updateAppTarget (params) {\n return request({ url: '/statistics/dataProcess/updateAppTarget', method: 'post', data: params })\n}\n\nexport function deleteAppTarget (params) {\n return request({ url: '/statistics/dataProcess/deleteAppTarget', method: 'post', data: params })\n}\n\nexport function runTargetResult (params) {\n return request({ url: '/statistics/dataProcess/runTargetResult', method: 'post', data: params })\n}\n\nexport function updatePublishState (params) {\n return request({ url: '/statistics/dataProcess/updatePublishState', method: 'get', params: params })\n}\n\nexport function getTargetResults (params) {\n return request({ url: 'statistics/dataProcess/getTargetResults', method: 'get', params: params })\n}\n\nexport function getMetricTypeConf (params) {\n return request({ url: '/dataset/targetV2/getMetricTypeConf', method: 'get', params: params })\n}\n\nexport function getAppDimField (params) {\n return request({ url: '/statistics/dataProcess/getAppDimField', method: 'get', params: params })\n}\n\nexport function storeOrUpdateDepth (params) {\n return request({ url: '/dataset/targetV2/storeOrUpdateDepth', method: 'post', data: params })\n}\n\n// 获取模块下的所有可以延迟重跑的指标\nexport function getDelayTargets (params) {\n return request({ url: '/statistics/dataProcess/getDelayTargets', method: 'get', params: params })\n}\n\n// 保存延迟重跑指标\nexport function saveAppDelay (params) {\n return request({ url: '/statistics/dataProcess/saveAppDelay', method: 'post', data: params })\n}\n\n// 查询模块详情\nexport function getAppDetail (params) {\n return request({ url: '/statistics/dataProcess/getAppDetail', method: 'get', params: params })\n}\n","/* eslint-disable */\nconst {\n REACT_APP_HTML_PREFIX,\n REACT_APP_WEB_PREFIX,\n REACT_APP_YZF_PREFIX,\n REACT_APP_LOG_PREFIX,\n REACT_APP_WEBSOCKET_PREFIX\n} = process.env || {}\n\n// Log process.env to window for debug\nwindow.__app_env__ = process.env\n\nexport const routerOptions = {\n basename: REACT_APP_HTML_PREFIX, // 页面挂载路由地址\n // forceRefresh: '',\n // getUserConfirmation: '',\n // keyLength: '',\n}\nvar k_host = window.location.host\nlet hostUrl = REACT_APP_WEB_PREFIX\nif (k_host == \"sdw.oa.com\") {\n hostUrl = \"http://sdw.oa.com\"\n}\n// console.log(\"====k_host\", hostUrl)\n\nexport const requestOptions = {\n basename: hostUrl, // 接口请求前缀\n}\n\nexport const requestOptionsYZF = {\n basename: REACT_APP_YZF_PREFIX, // 云智服接口请求前缀\n}\n\nexport const requestOptionsLOG = {\n basename: REACT_APP_LOG_PREFIX, // 日志接入模块接口请求前缀\n}\n\nexport const requestOptionsWEBSOCKET = {\n basename: REACT_APP_WEBSOCKET_PREFIX, // WebSocket接口请求前缀\n}\n","// 应用管理\nimport { request } from '../utils/request'\n\nexport function pageAppTables (params) {\n return request({ url: '/statistics/targetApi/pageAppTables', method: 'post', data: params })\n}\n\nexport function pageAppTablesManage (params) {\n return request({ url: '/statistics/targetApi/pageAppTablesManage', method: 'post', data: params })\n}\n\nexport function saveAppConf (params) {\n return request({ url: '/statistics/targetApi/saveAppConf', method: 'post', data: params })\n}\n\nexport function updateAppConf (params) {\n return request({ url: '/statistics/targetApi/updateAppConf', method: 'post', data: params })\n}\n\nexport function getTemplateConfList (params) {\n return request({ url: '/statistics/targetApi/getTemplateConfList', method: 'get', params: params})\n}\n\nexport function saveTemplateConf (params) {\n return request({ url: '/statistics/targetApi/saveTemplateConf', method: 'post', data: params })\n}\nexport function delTemplateConf (params) {\n return request({ url: '/statistics/targetApi/delTemplateConf', method: 'post', data: params })\n}\n//指标列表\nexport function pageApiTargets (params) {\n return request({ url: '/statistics/targetApi/pageApiTargets', method: 'post', data: params, timeout: 10000 })\n}\n//指标列表\nexport function previewTargets (params) {\n return request({ url: '/statistics/targetApi/previewTargets', method: 'post', data: params })\n}\n//指标属性检查\nexport function checkTarget (params) {\n return request({ url: '/statistics/targetApi/checkTarget', method: 'post', data: params })\n}\n//指标保存\nexport function saveApiTargets (params) {\n return request({ url: '/statistics/targetApi/saveApiTargets', method: 'post', data: params })\n}\n//指标删除\nexport function deleteApiTargets (params) {\n return request({ url: '/statistics/targetApi/deleteApiTargets', method: 'post', data: params })\n}\n\n//扩展字段-分组 一级分组过滤名称\nexport function getGroupTree (params) {\n return request({ url: '/statistics/masterTarget/getGroupTree', method: 'get', params: params})\n}\n\n//指标api模块重跑\nexport function runTargetResult (params) {\n return request({ url: '/statistics/targetApi/runTargetResult', method: 'post', data: params })\n}\n\n//获取修改的指标\nexport function getModifyTargets (params) {\n return request({ url: '/statistics/targetApi/getModifyTargets', method: 'get', params: params})\n}\n//发布API应用表\nexport function publishApi (params) {\n return request({ url: '/statistics/targetApi/publishApi', method: 'post', data: params })\n}\n\n//API应用表关联表\nexport function storeRelateTarget (params) {\n return request({ url: '/statistics/targetApi/storeRelateTarget', method: 'post', data: params })\n}\n\n//查询API应用表关联表详情\nexport function getRelateTarget (params) {\n return request({ url: '/statistics/targetApi/getRelateTarget', method: 'get', params: params })\n}\n\n//获取模块下的所有可以延迟重跑的指标\nexport function getDelayTargets (params) {\n return request({ url: '/statistics/targetApi/getDelayTargets', method: 'get', params: params })\n}\n\n//保存延迟重跑指标\nexport function saveApiDelay (params) {\n return request({ url: '/statistics/targetApi/saveApiDelay', method: 'post', data: params })\n}\n\n//查询模块详情\nexport function getTemplateDetail (params) {\n return request({ url: '/statistics/targetApi/getTemplateDetail', method: 'get', params: params })\n}\n\n// 获取所有的计算方式\nexport const getPublicCfg = (params = {}) => {\n return request({ url: '/dataset/common/getPublicCfg', method: 'get', data: params })\n}\n","export default __webpack_public_path__ + \"static/media/no_data@2x.0254803e.png\";","export default __webpack_public_path__ + \"static/media/plan@2x.1dafb7df.png\";","export default __webpack_public_path__ + \"static/media/no_auth@2x.1307221c.png\";","export default __webpack_public_path__ + \"static/media/net_abnormal@2x.90733ef4.png\";","export default __webpack_public_path__ + \"static/media/data_abnormal@2x.b572bbf6.png\";","export default __webpack_public_path__ + \"static/media/empty_left@2x.492b384c.png\";","export default __webpack_public_path__ + \"static/media/no_search@2x.44c2a570.png\";","import React from 'react'\nimport noDataImg from './img/no_data@2x.png'\nimport planImg from './img/plan@2x.png'\nimport noAuthImg from './img/no_auth@2x.png'\nimport netAbnormalImg from './img/net_abnormal@2x.png'\nimport dataAbnormalImg from './img/data_abnormal@2x.png'\nimport emptyLeftImg from './img/empty_left@2x.png'\nimport noSearchImg from './img/no_search@2x.png'\n\nimport './index.css'\n\nconst IMG_MAP = {\n noData: noDataImg,\n plan: planImg,\n noAuth: noAuthImg,\n netAbnormal: netAbnormalImg,\n dataAbnormal: dataAbnormalImg,\n emptyLeft: emptyLeftImg,\n noSearch: noSearchImg,\n}\n\nexport default props => {\n\n return (\n
\n
\n {\n !props.hideImage && \n }\n {\n !props.hideText &&
{!!props.text ? props.text : '暂无数据'}
\n }\n {\n props.children\n }\n
\n
\n )\n}\n","// 传入时间戳,返回 2020-01-01 00:01:00\nexport function formatTime(time = +new Date(), numHour = 1) {\n var date = new Date(time + (numHour + 8) * 3600 * 1000); // 增加(numHour + 8)小时 ---> 东八区:小时加 8\n return date.toJSON().substr(0, 19).replace('T', ' ');\n}\n\n// 选择的时间为[2021-10-28, 2021-10-29]--------> [2021-10-28 00:00:00, 2021-10-29 23:59:59]\nexport function getRangeDateTime(rangeTime = '') {\n if (!rangeTime || !Array.isArray(rangeTime) || rangeTime.length !== 2) return\n\n return rangeTime.map((t, index) => {\n if (index === 0) return `${t} 00:00:00`\n return `${t} 23:59:59`\n })\n}","import { request } from '../utils/request'\n\n//中间表分页列表\nexport const tablePages = params => {\n return request({ url: '/metadata/midTable/tablePages', method: 'post', data: params })\n}\n\n//获取中间表详情\nexport const getDetailInfo = params => {\n return request({ url: '/metadata/midTable/getDetailInfo', method: 'get', params: params })\n}\n//获取字段配置\nexport const fieldItems = params => {\n return request({ url: '/metadata/midTable/fieldItems', method: 'get', params: params })\n}\n//获取落地表列表\nexport const selectTableList = params => {\n return request({ url: '/metadata/midTable/selectTableList', method: 'get', params: params })\n}\n//保存中间表\nexport const saveTable = params => {\n return request({ url: '/metadata/midTable/saveTable', method: 'post', data: params })\n}\n//保存物理表\nexport const saveNode = params => {\n return request({ url: '/metadata/midTable/saveNode', method: 'post', data: params })\n}\n//保存节点\nexport const saveLink = params => {\n return request({ url: '/metadata/midTable/saveLink', method: 'post', data: params })\n}\n//获取节点的聚合字段\nexport const getNodeFields = params => {\n return request({ url: '/metadata/midTable/getNodeFields', method: 'get', params: params })\n}\n\n//获取节点的聚合字段\nexport const getNodeRelateFields = params => {\n return request({ url: '/metadata/midTable/getNodeRelateFields', method: 'get', params: params })\n}\n\n//详情树 结构接口\nexport const getDetailTreeInfo = params => {\n return request({ url: '/metadata/midTable/getDetailTreeInfo', method: 'get', params: params })\n}\n// 获取所有的计算方式\nexport const getPublicCfg = (params = {}) => {\n return request({ url: '/dataset/common/getPublicCfg', method: 'get', data: params })\n}\n//保存字段\nexport const saveFields = params => {\n return request({ url: '/metadata/midTable/saveFields', method: 'post', data: params })\n}\n//删除字段\nexport const deleteFields = params => {\n return request({ url: '/metadata/midTable/deleteFields', method: 'post', data: params })\n}\n//删除节点\nexport const deleteNode = params => {\n return request({ url: '/metadata/midTable/deleteNode', method: 'post', data: params })\n}\n//预览数据\nexport const tablePreview = params => {\n return request({ url: '/metadata/midTable/tablePreview', method: 'post', data: params })\n}\n//中间表发布\nexport const jobPublish = params => {\n return request({ url: '/metadata/midTable/jobPublish', method: 'post', data: params })\n}\n//中间表停止\nexport const jobDisable = params => {\n return request({ url: '/metadata/midTable/jobDisable', method: 'post', data: params })\n}\n//中间表重跑\nexport const taskReRun = params => {\n return request({ url: '/metadata/midTable/taskReRun', method: 'post', data: params })\n}\n","import { request } from '../utils/request'\n\n// 来源表(mysql)、目标表(es)\nexport const getTableApiItems = params => {\n return request({ url: '/metadata/tableApi/items', method: 'get', params: params })\n}\n\nexport const getAllTablecfg = params => {\n return request({ url: '/metadata/tableApi/getAllTablecfg', method: 'get', params: params })\n}\n\nexport const getFieldRuleConf = params => {\n return request({ url: '/collection/dbimport/getFieldRuleConf', method: 'get', params: params })\n}\n\nexport const getAllTasks = params => {\n return request({ url: '/collection/dbimport/getAllTasks', method: 'get', params: params })\n}\n\nexport const getInfoById = params => {\n return request({ url: '/collection/dbimport/getInfoById', method: 'get', params: params })\n}\n\nexport const getTargetPreview = params => {\n return request({ url: '/collection/dbimport/getDataPreview', method: 'get', params: params })\n}\n\nexport const getCollectConfigList = params => {\n return request({ url: '/collection/dbimport/getCollectConfigList', method: 'get', params: params })\n}\n\nexport const getLogCollectConfigDetail = params => {\n return request({ url: '/collection/dbimport/getLogCollectConfigDetail', method: 'get', params: params })\n}\n\nexport const setLogCollectConfig = params => {\n return request({ url: '/collection/dbimport/setLogCollectConfig', method: 'post', data: params })\n}\n\nexport const checkLogCollectCfg = params => {\n return request({ url: '/collection/dbimport/checkLogCollectCfg', method: 'post', data: params })\n}\n\nexport const getMonitorServerConfigList = params => {\n return request({ url: '/collection/dbimport/getMonitorServerConfigList', method: 'get', params: params })\n}\n\nexport const setMonitorJoinLogConfig = params => {\n return request({ url: '/collection/dbimport/setMonitorJoinLogConfig', method: 'post', data: params })\n}\n\n// 任务配置\nexport const storeCollection = params => {\n return request({ url: '/collection/dbimport/store', method: 'post', data: params })\n}\n\n// 更新配置\nexport const updateCollection = params => {\n return request({ url: '/collection/dbimport/update', method: 'post', data: params })\n}\n\n// 任务提交\nexport const runDataTask = params => {\n return request({ url: '/collection/dbimport/runDataTask', method: 'post', data: params })\n}\n","// 元数据管理\nimport { request } from '../utils/request'\n\n// 获取 元数据 表数据\nexport function getMetaDataInfo (params) {\n return request({ url: '/metadata/tableApi/items', method: 'get', params: params })\n}\n\n// 获取 元数据 表信息 下拉选项\nexport function getAllTablecfg (params) {\n return request({ url: '/metadata/tableApi/getAllTablecfg', method: 'get', params: params })\n}\n\n// 编辑元数据,数据回显\nexport function getTablecfgById (params) {\n return request({ url: '/metadata/tableApi/getTablecfgById', method: 'get', params: params })\n}\n\n// 获取主题域等\nexport function getItermSelects (params) {\n return request({ url: '/statistics/dataMarket/getItermSelects', method: 'get', params: params })\n}\n\n// 根据主题域id获取 业务business\nexport function getBusinessStatisticByTopic (params) {\n return request({ url: '/statistics/dataMarket/getBusinessStatisticByTopic', method: 'get', params: params })\n}\n\n// 获取所有管理人员姓名\nexport function getStaffs (params) {\n return request({ url: '/admin/staff/getStaffs/', method: 'get', params: params })\n}\n\n// 编辑元数据\nexport function updateTablecfg (params) {\n return request({ url: '/metadata/tableApi/updateTablecfg', method: 'post', data: params })\n}\n\n// 新增元数据\nexport function storeTablecfg (params) {\n return request({ url: '/metadata/tableApi/storeTablecfg', method: 'post', data: params })\n}\n\n// 获取 数据预览 表数据\nexport function getItems (params) {\n return request({ url: '/metadata/tableApi/getItems', method: 'get', params: params })\n}\n\n// 获取 基本信息 表数据\nexport function getTablecfgDetail (params) {\n return request({ url: '/metadata/tableApi/getTablecfgDetail', method: 'get', params: params })\n}\n\n// 权限点校验\nexport function getTablecfgDetailPermission (params) {\n return request({ url: '/metadata/tableApi/getTablecfgDetailPermission', method: 'get', params: params })\n}\n// 权限点校验\nexport function getTablecfgDetailAuth (params) {\n return request({ url: '/metadata/tableApi/getTablecfgDetailAuth', method: 'get', params: params })\n}\n\n// 获取 基本信息 编辑数据回显\nexport function getTablecfgFieldById (params) {\n return request({ url: '/metadata/tableApi/getTablecfgFieldById', method: 'get', params: params })\n}\n\n// 获取 基本信息 编辑数据回显 获取所有的字段标准数据选项列表\nexport function getStandardSelects (params) {\n return request({ url: '/metadata/tableApi/getStandardSelects', method: 'get', params: params })\n}\n\n// 获取 基本信息 编辑数据回显 获取所有的字段标准数据选项列表\nexport function updateTableField (params) {\n return request({ url: '/metadata/tableApi/updateTableField', method: 'post', data: params })\n}\n//提交权限申请\nexport const applyTableAuth = (params = {}) => {\n return request({ url: '/metadata/tableApi/applyTableAuth', method: 'post', data: params })\n}\n","// 预警规则\nimport { request, requestYZF } from '../utils/request'\n\nexport function getAlarmCfgList (params) {\n return request({ url: '/statistics/fieldAlarm/items', method: 'get', params: params })\n}\n\nexport function getAllTablecfg (params) {\n return request({ url: '/metadata/tableApi/getAllTablecfg', method: 'get', params: params })\n}\n\nexport function getTablecfgFields (params) {\n return request({ url: '/metadata/tableApi/getTablecfgFields', method: 'get', params: params })\n}\n\nexport function getStaffs (params) {\n return request({ url: '/admin/staff/getStaffs', method: 'get', params: params })\n}\n\nexport function storeNewAppTable (params) {\n return request({ url: '/statistics/dataProcess/storeNewAppTable', method: 'post', data: params })\n}\n\nexport function updateAlarmConf (params) {\n return request({ url: '/statistics/fieldAlarm/updateAlarmConf', method: 'post', data: params })\n}\n\nexport function insertAlarmConf (params) {\n return request({ url: '/statistics/fieldAlarm/insertAlarmConf', method: 'post', data: params })\n}\n\nexport function createTask (params) {\n return requestYZF({ url: '/mini/task_model/api_create_task', method: 'post', data: params })\n}\n\nexport function getAlarmItemSelects (params) {\n return request({ url: '/statistics/fieldAlarm/alarmItemSelects', method: 'get', params: params })\n}\n\nexport function alarmBusinessItemSelects (params) {\n return request({ url: '/statistics/fieldAlarm/alarmBusinessItemSelects', method: 'get', params: params })\n}\n\nexport function channelItemSelects (params) {\n return request({ url: '/statistics/fieldAlarm/channelItemSelects', method: 'get', params: params })\n}\n\nexport function getProblemTypeSelects (params) {\n return request({ url: '/statistics/fieldAlarm/getProblemTypeSelects', method: 'get', params: params })\n}\n\nexport function storeProblemType (params) {\n return request({ url: '/statistics/fieldAlarm/storeProblemType', method: 'post', data: params })\n}","import _ from 'lodash'\n\nexport const validateFun = (val, tip, type = '') => {\n\n if (val === null) {\n return tip\n }\n\n if (type === 'cascader') {\n return (val.ids && !!val.ids.length) || tip\n }\n\n // 一般的输入、下拉组件(单选)的校验\n if (typeof val === 'string') {\n return !!val || tip\n }\n\n // 级联组件、下拉组件(多选)的校验\n if (_.isArray(val)) {\n return !!val.length || tip\n }\n\n return true\n}\n\n// 下发字段数组:paramsList;字段获取值得来源:record\nexport const getFormDataParams = (record = {}, keyList = []) => {\n let formData = new FormData()\n\n keyList.forEach(key => {\n if (record.hasOwnProperty(key)) {\n formData.append(`field[${key}]`, record[key])\n }\n })\n\n return formData\n}\n\n// 对接口中search进行json\n/**\n * 对搜索中的search进行JSON.stringify\n * @param {Object} params search对象\n * @param {Array} likeArr 模糊匹配的字段\n * @returns JSON.stringify(params)\n */\nexport const getSearchParams = (params = {}, likeArr = []) => {\n let res = {}\n\n if (_.isObject(params) && !_.isEmpty(params)) {\n for (const key in params) {\n if (Object.hasOwnProperty.call(params, key)) {\n const el = params[key];\n if (el !== '' && el !== undefined) {\n if (likeArr.includes(key)) {\n res[key] = {\n value: el,\n operator: 'like',\n type: 'both'\n }\n } else {\n res[key] = {\n value: el,\n operator: '='\n }\n }\n }\n }\n }\n }\n\n return JSON.stringify(res)\n}","// 对应下发参数\nexport const LEVEL_TYPE_MAP = {\n DIM: 'DIM',\n ODS: 'ODS',\n DWD: 'DWD',\n DWS: 'DWS',\n APP: 'APP'\n}\n\nexport const LEVEL_TEXT_MAP = {\n [LEVEL_TYPE_MAP.DIM]: 'DIM(维度层)',\n [LEVEL_TYPE_MAP.ODS]: 'ODS(贴源层)',\n [LEVEL_TYPE_MAP.DWD]: 'DWD(明细层)',\n [LEVEL_TYPE_MAP.DWS]: 'DWS(汇总层)',\n [LEVEL_TYPE_MAP.APP]: 'APP(应用层)'\n}\n\nexport const ALL = 'all'\n\nexport const PENDING = 'pending'\n\nexport const STATE_MAP = {\n 0: '审批中',\n 1: '通过',\n 2: '驳回'\n}\n\n// 修改点:map映射关系\nexport const UPDATE_CONTEXT_MAP = {\n target_name: '英文名',\n target_name_cn: '中文名',\n target_type: '指标类型',\n source_targets: '原子指标',\n decoration: '修饰词',\n decoration_ids: '修饰词id',\n group_by_type: '桶类型',\n group_by_field: '聚合字段',\n metric_type: '计算公式',\n metric_field: '度量字段',\n complex_script: '复合方式',\n enable: '是否启用',\n create_user: '创建人',\n create_time: '创建时间',\n modify_user: '修改人',\n modify_time: '修改时间',\n depth: '指标依赖层级',\n store_dimension: '关联维度',\n field_ref: '多个字段逗号隔开',\n topic: '指标主题',\n comments: '指标描述',\n target_unit: '单位',\n service: '所属业务',\n time_schedule: '时间周期',\n cal_fields: '派生复合指标计算字段',\n cal_expression: '派生复合指标计算公式',\n store_dimension_cn: '中文名',\n empty_drop: '是否空值删除(0否,1是)',\n delay_expression: '延时重跑计算公式JsonList',\n granular_category: '颗粒化类别',\n is_granular: '是否颗粒化指标',\n topicBusiness: '主题域/业务',\n}\n\nexport const TARGET_TYPE_MAP = {\n 1: '基础型',\n 2: '复合型',\n 3: '代码型',\n}\n\nexport const MSG_TYPE_MAP = {\n '1': '指标新增',\n '2': '指标修改',\n '3': '指标重跑',\n}","import React from 'react'\nimport {connect} from 'react-redux'\nimport {withRouter} from 'react-router-dom'\nimport PropTypes from 'prop-types'\nimport './index.css'\nimport NoRight from '@pages/NoRight'\nimport _ from 'lodash'\n\nclass Tabs extends React.PureComponent {\n\n state = {\n curIndex: 0\n }\n\n componentDidMount() {\n const { curMenuIndex } = this.props\n if (typeof curMenuIndex === 'number') this.setState({ curIndex: curMenuIndex })\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n const { curMenuIndex } = this.props\n if (prevProps.curMenuIndex !== curMenuIndex && typeof curMenuIndex === 'number') {\n this.setState({ curIndex: curMenuIndex })\n }\n }\n\n handleClick (index, item) {\n this.setState({ curIndex: index })\n this.props.updatePageInfo('')\n this.props.updateTabsInfo(index)\n this.props.onChange(item)\n }\n\n render () {\n let { menu, titleWidth } = this.props\n let { curIndex } = this.state\n\n let CUR_COMPONENT = null\n if (_.isArray(menu) && menu.length) {\n CUR_COMPONENT = menu[curIndex].component\n }\n\n return (\n
\n {\n Array.isArray(menu) &&\n !!menu.length ?\n <>\n
\n {\n menu.map((item, index) => (\n this.handleClick(index, item)}\n >\n {item.title}\n \n ))\n }\n
\n \n \n \n
\n {\n CUR_COMPONENT !== null &&\n \n }\n
\n :\n \n }\n
\n )\n }\n}\n\nTabs.propTypes = {\n menu: PropTypes.array,\n titleWidth: PropTypes.number, // 数字:需要进行计算\n curMenuIndex: PropTypes.number, // 当前tab的位置\n onChange: PropTypes.func\n}\n\nTabs.defaultProps = {\n menu: [],\n titleWidth: 98,\n curMenuIndex: 0,\n onChange: _.noop\n}\n\nconst mapState = state => ({\n pageInfo: state.page.pageInfo,\n tabsInfo: state.page.tabsInfo\n})\n\nconst mapDispatch = dispatch => ({\n updatePageInfo: dispatch.page.updatePageInfo,\n updateTabsInfo: dispatch.page.updateTabsInfo\n})\n\nexport default withRouter(connect(mapState, mapDispatch)(Tabs))","import { request } from '../utils/request'\n\n// 获取数据字典页面常见主题域和改主题拥有的字段列表\nexport const getItermSelects = () => {\n return request({ url: '/statistics/dataMarket/getItermSelects', method: 'get' })\n}\n\nexport const searchFields = params => {\n return request({ url: '/statistics/dataMarket/searchFields', method: 'get', params: params })\n}\n\nexport const searchFieldsForAll = params => {\n return request({ url: '/statistics/dataMarket/searchFieldsForAll', method: 'get', params: params })\n}\n\nexport const getFieldById = params => {\n return request({ url: '/statistics/dataMarket/getFieldById', method: 'get', params: params })\n}\n\nexport const getFieldUpdateHistory = params => {\n return request({ url: '/statistics/dataMarket/getFieldUpdateHistory', method: 'get', params: params })\n}\n\nexport const getBusinessStatisticByTopic = params => {\n return request({ url: '/statistics/dataMarket/getBusinessStatisticByTopic', method: 'get', params: params })\n}\n\nexport const getFieldRelativeTableInfo = params => {\n return request({ url: '/statistics/dataMarket/getFieldRelativeTableInfo', method: 'get', params: params })\n}\n\nexport const storeNewField = params => {\n return request({ url: '/statistics/dataMarket/storeNewField', method: 'post', data: params })\n}\n","// 业务配置\nimport { request } from '../utils/request'\n\n//业务配置 -> 指标运营配置 indicatorOperationConfiguration\n\nexport function getIndicatorConfItems (params) {\n return request({ url: '/operation/indicatorOperationConf/sdwGetIndicatorConfItems', method: 'get', params: params })\n}\n\nexport function insertIndicatorConf (params) {\n return request({ url: '/operation/indicatorOperationConf/insertIndicatorConf', method: 'post', data: params })\n}\n\nexport function updateIndicatorConf (params) {\n return request({ url: '/operation/indicatorOperationConf/updateIndicatorConf', method: 'post', data: params })\n}\n\nexport function getIndicators (params) {\n return request({ url: '/operation/indicatorOperationConf/getAllIndicators', method: 'get', params: params })\n}\n\nexport function getTargets (params) {\n return request({ url: '/operation/indicatorOperationConf/getTargets', method: 'get', params: params })\n}\n\nexport function deleteTarget (params) {\n return request({ url: '/operation/indicatorOperationConf/delIndicatorConf', method: 'post', data: params })\n}\n\nexport function getArchiveCodeConfItems (params) {\n return request({ url: '/operation/indicatorOperationConf/getArchiveCodeConfItems', method: 'get', params: params })\n}\n\nexport function getArchiveCodeProductIdsSelect (params) {\n return request({ url: '/operation/indicatorOperationConf/getArchiveCodeProductIdsSelect', method: 'get', params: params })\n}\n\nexport function getArchiveCodeArchivesSelect (params) {\n return request({ url: '/operation/indicatorOperationConf/getArchiveCodeArchivesSelect', method: 'get', params: params })\n}\n\nexport function getArchiveCodeL4Query (params) {\n return request({ url: '/operation/indicatorOperationConf/getArchiveCodeL4Query', method: 'get', params: params })\n}\n\nexport function getArchiveCodeSelect (params) {\n return request({ url: '/operation/indicatorOperationConf/getArchiveCodeSelect', method: 'get', params: params })\n}\n\nexport function getArchiveCodeL4idSelect (params) {\n return request({ url: '/operation/indicatorOperationConf/getArchiveCodeL4idSelect', method: 'get', params: params })\n}\n\nexport function insertArchiveCodeConf (params) {\n return request({ url: '/operation/indicatorOperationConf/insertArchiveCodeConf', method: 'post', data: params })\n}\n\nexport function updateArchiveCodeConf (params) {\n return request({ url: '/operation/indicatorOperationConf/updateArchiveCodeConf', method: 'post', data: params })\n}\n\nexport function getItemsSelect (params) {\n return request({ url: '/operation/formBusiness/getItemsSelect', method: 'get', params: params })\n}\nexport function queryFormsConfPage (params) {\n return request({ url: '/operation/formBusiness/queryFormsConfPage', method: 'post', data: params })\n}\nexport function getFormById (params) {\n return request({ url: '/operation/formBusiness/getFormById', method: 'get', params: params })\n}\nexport function saveFormConf (params) {\n return request({ url: '/operation/formBusiness/saveFormConf', method: 'post', data: params })\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport './index.css'\nimport _ from 'lodash'\n\nclass Radiobox extends React.Component {\n\n static defaultProps = {\n changeCheckedFun: () => {},\n options: []\n }\n\n render() {\n let { options, value, disabled } = this.props\n\n return (\n
\n {\n Array.isArray(options) &&\n !!options.length &&\n options.map((item, index) => (\n {\n if (_.isArray(disabled) && disabled.includes(item.value)) return\n this.props.changeCheckedFun(item.value)\n }}\n >\n \n {item.text}\n \n )) \n }\n
\n )\n }\n}\n\nRadiobox.propTypes = {\n options: PropTypes.array,\n changeCheckedFun: PropTypes.func,\n disabled: PropTypes.array,\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.bool])\n}\n\nexport default Radiobox","import { request } from '../utils/request'\nimport { ajaxPost } from \"./AjaxApi\";\nimport { requestOptions } from '../config/config'\n\nconst baseURL = requestOptions.basename\n\n// 获取主题列表\nexport const getTopicBusiness = (params = {}) => {\n return request({ url: '/dataset/common/getTopicBusiness', method: 'get', data: params })\n}\n\n// 获取所有的表\nexport const getTablecfgList = (params = {}) => {\n return request({ url: '/metadata/tableApi/getTablecfgList', method: 'get', params: params })\n}\n\n// 获取所有的来源表(并不是库里面所有的,只是原子指标表中已配置了的来源表),仅在原子指标来源表下拉选项中使用\nexport const srcTableItems = (params = {}) => {\n return request({ url: '/dataset/atomTargetV2/srcTableItems', method: 'get', params: params })\n}\n\n// 获取该表的所有的字段\nexport const getTablecfgFields = (params = {}) => {\n return request({ url: '/metadata/tableApi/getTablecfgFields', method: 'get', params: params })\n}\n\n// 获取分页数据\nexport const getPage = (params = {}) => {\n return request({ url: '/dataset/atomTargetV2/items', method: 'get', params: params })\n}\n\n// 获取所有的计算方式\nexport const getPublicCfg = (params = {}) => {\n return request({ url: '/dataset/common/getPublicCfg', method: 'get', data: params })\n}\n\n/**\n * 添加,修改原子指标\n * @param {object} params\n * @param {func} callback\n */\nexport function storeOrUpdateAtomTarget (params, callback) {\n return ajaxPost(baseURL + \"/dataset/atomTargetV2/storeOrUpdate\", params, callback);\n}\n\n// 修改派生指标弹窗确认\nexport function getChildTarget (params) {\n return request({ url: '/dataset/atomTargetV2/getChildTarget', method: 'get', params: params })\n}","import './index.css'\n\nexport default function EnableComp(props) {\n const { enable } = props\n\n return (\n <>\n \n {\n Boolean(+enable) ? '有效' : '无效'\n }\n \n \n )\n}","import React from 'react'\nimport './index.css'\n\nexport default class Checkbox extends React.Component {\n\n render() {\n\n let { text, changeCheckedFun, isChecked, value, disabled, disabledArr } = this.props\n\n return (\n <>\n {\n typeof text === 'string' &&\n {\n if (disabled) return\n changeCheckedFun()\n }}\n >\n {}} // 没有此方法,控制台会报错\n />\n 14 ? text : ''}\n >\n { text }\n \n \n }\n\n {\n Array.isArray(text) &&\n !!text.length &&\n !!value &&\n text.map(i => (\n \n {}}\n disabled={disabledArr.indexOf(i) !== -1}\n onClick={e => {\n let val = e.target.value\n let checked = e.target.checked\n let arr = [...value]\n\n if (typeof this.props.changeValue !== 'function') return\n if (checked) {\n this.props.changeValue([...arr, val])\n } else {\n let index = arr.findIndex(i => i == val)\n if (index === -1) return\n arr.splice(index, 1)\n this.props.changeValue(arr)\n }\n }}\n />{i}\n \n ))\n }\n \n )\n }\n}","import { request } from '../utils/request'\n\n// 获取树结构(有权限)\nexport function getPathTree (params) {\n return request({ url: '/visual/node/getPathTree', method: 'post', data: params })\n}\n\n// 获取树结构(无权限)\nexport function getPathTreeAuth (params) {\n return request({ url: '/visual/node/getPathTreeAuth', method: 'post', data: params })\n}\n\n// 新增节点\nexport function insertPath (params) {\n return request({ url: '/visual/node/insertPath', method: 'post', data: params })\n}\n\n// 编辑节点\nexport function updatePath (params) {\n return request({ url: '/visual/node/updatePath', method: 'post', data: params })\n}\n\n// 获取id详情\nexport const getPathInfo = params => {\n return request({url: '/visual/node/getPathInfo', method: 'get', params: params})\n}\n\n// 记录页面路由日志\nexport function record (params) {\n return request({ url: '/statistics/page/record', method: 'post', data: params })\n}\n\n// 设置用户主页\nexport function setHomePath (params) {\n return request({ url: '/visual/node/setHomePath', method: 'post', data: params })\n}\n\n// 获取用户主页\nexport function getHomePath (params) {\n return request({ url: '/visual/node/getHomePath', method: 'get', params: params })\n}\n\n// 排序节点\nexport function setNodesSort (params) {\n return request({ url: '/visual/node/setNodesSort', method: 'post', data: params })\n}\n\n// 获取公司人员姓名\nexport function staffItems (params) {\n return request({ url: '/admin/staff/staffItems', method: 'get', params: params })\n}\n","import { request } from '../utils/request'\nimport { ajaxPost } from \"./AjaxApi\";\nimport { requestOptions } from '../config/config'\n\nconst baseURL = requestOptions.basename\n\n// 获取主题列表\nexport const getTopicBusiness = (params = {}) => {\n return request({ url: '/dataset/common/getTopicBusiness', method: 'get', data: params })\n}\n\n// 获取所有的表\nexport const getTablecfgList = (params = {}) => {\n return request({ url: '/metadata/tableApi/getTablecfgList', method: 'get', params: params })\n}\n\n// 获取该表的所有的字段\nexport const getTablecfgFields = (params = {}) => {\n return request({ url: '/metadata/tableApi/getTablecfgFields', method: 'get', params: params })\n}\n\n// 获取该表的所有的字段\nexport const getTablecfgDetail = (params = {}) => {\n return request({ url: '/metadata/tableApi/getTablecfgDetail', method: 'get', params: params })\n}\n\n// 获取分页数据\nexport const getPage = (params = {}) => {\n return request({ url: '/dataset/modifier/getModifierList', method: 'get', params: params })\n}\n\n// 获取所有的计算方式\nexport const getPublicCfg = (params = {}) => {\n return request({ url: '/dataset/common/getPublicCfg', method: 'get', data: params })\n}\n\n/**\n * 修改数据\n * @param {object} params\n * @param {func} callback\n */\nexport function upData (params, callback) {\n return ajaxPost(baseURL + \"/dataset/modifier/update\", params, callback);\n}\n\n/**\n * 添加数据\n * @param {object} params\n * @param {func} callback\n */\nexport function addData (params, callback) {\n return ajaxPost(baseURL + \"/dataset/modifier/store\", params, callback);\n}\n\n// 获取预判数据\nexport const getTablecfgpreview = (params = {}) => {\n return request({ url: '/metadata/tableApi/getItems', method: 'get', params: params })\n}\n\n// 获取某个数据数据\nexport const getModifierList = (params = {}) => {\n return request({ url: '/dataset/modifier/getModifierList', method: 'get', params: params })\n}","// 暴露一些公共函数\n\n/**\n * 用于统一处理是否显示 title 的函数,一般比较短的 string 没必要悬浮提示\n * @param {String} str 传入的字符串\n * @param {Number} len 长度\n * @returns 默认20,超过len的长度的字符串返回字符串本身,否则返回 ''\n */\nexport function getTitle(str, len = 20) {\n return String(str).length > len ? str : ''\n}\n\n/**\n * 防抖函数\n * @param {Function} fn 传入的防抖函数\n * @param {Number}} t 毫秒数\n */\nlet timer = null\nexport function debounce(fn, t = 500) {\n\n if (typeof fn !== 'function') {\n throw TypeError('fn is not function')\n }\n\n return function () {\n const ags = [...arguments]\n\n // 清除上一个timer,防抖\n if (timer) clearTimeout(timer)\n\n timer = setTimeout(() => {\n fn.apply(this, ags)\n\n // 清除本次timer,防内存泄漏\n if (timer) {\n clearTimeout(timer)\n timer = null\n }\n }, t);\n }\n}","// 元数据 常量文件\nimport _ from 'lodash'\nimport { getMetaDataInfo } from '@services/metaData'\nimport SdwMessage from '@common/Message/index'\nimport { LEVEL_TYPE_MAP as LTyM, LEVEL_TEXT_MAP as LTxM } from '@pages/common/index'\n\n// 对应下发参数\nexport const LEVEL_TYPE_MAP = LTyM\n\nexport const LEVEL_TEXT_MAP = LTxM\n\nexport async function getMetaDataDetailInfo(id = '') {\n if (!id) return null\n\n let item = {}\n \n // 获取表头详情信息\n await getMetaDataInfo({\n search: JSON.stringify({\n id: {\n value: id,\n operator: '='\n }\n })\n }).then(res => {\n if (res && res.data && res.data.code === 0) {\n let record = res.data.data || {}\n item = _.isArray(record.items) ? record.items[0] : {}\n } else {\n let msg = res && res.data && res.data.msg || '获取数据失败'\n SdwMessage.error(msg)\n }\n }).catch(err => SdwMessage.error('请求异常 ' + err))\n\n return item\n}","import React, { Component } from 'react'\nimport PropTypes from 'prop-types'\n\nimport './index.css'\n\nclass SdwInput extends Component {\n inputRef = React.createRef()\n\n static defaultProps = {\n width: '100%',\n height: 40,\n placeholder: '请输入',\n clearable: true,\n value: '',\n label: '',\n type: 'text',\n disabled: false,\n error: {\n isError: false,\n msg: ''\n },\n\n onChange: () => {},\n onBlur: () => {},\n }\n\n state = {\n inputValue: this.props.value || '',\n showClearIcon: false,\n isOnFocus: false,\n inputValueIsChange: false,\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (this.props.value !== this.state.inputValue) {\n this.setState({\n inputValue: this.props.value\n })\n }\n }\n\n handleChange = e => {\n if (this.props.disabled) return\n let value = e.target.value\n this.setState({\n inputValue: value,\n inputValueIsChange: true\n })\n this.props.onChange(value)\n }\n \n handleBlur = e => {\n this.setState({\n isOnFocus: false,\n inputValueIsChange: false\n })\n this.props.onBlur(e.target.value)\n }\n\n handleClearInput = e => {\n e.preventDefault()\n this.setState({ inputValue: '' })\n this.props.onChange('')\n this.props.onBlur('')\n }\n\n handleKeyDown = e => {\n if (e.keyCode === 13) {\n this.inputRef.current.blur()\n }\n }\n\n render() {\n let { type, placeholder, disabled, width, height, label, clearable, error } = this.props\n let { inputValue, showClearIcon, isOnFocus, inputValueIsChange } = this.state\n let inputClassName = !error.isError ? 'sdw-input2__wrap' : 'sdw-input2__wrap sdw-input2-error'\n\n let outDivClassName = 'sdw-input2__outer-div-warp'\n if (isOnFocus) outDivClassName += ' sdw-input2__on-focus'\n if (error.isError) outDivClassName += ' sdw-input2-error__wrap'\n \n return (\n
\n {\n !!label &&
{label}
\n }\n this.setState({ showClearIcon: true })}\n onMouseLeave={() => this.setState({ showClearIcon: false })}\n >\n this.handleKeyDown(e)}\n onChange={e => this.handleChange(e)}\n onFocus={() => this.setState({ isOnFocus: true })}\n onBlur={e => {\n this.handleBlur(e)\n \n }}\n />\n {\n !disabled && clearable && showClearIcon && !!inputValue && \n \n }\n {\n !inputValueIsChange && error.isError &&
{error.msg}
\n }\n
\n \n )\n }\n}\n\nSdwInput.propTypes = {\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n height: PropTypes.number,\n placeholder: PropTypes.string,\n clearable: PropTypes.bool,\n value: PropTypes.string,\n type: PropTypes.string,\n label: PropTypes.string,\n disabled: PropTypes.bool,\n onChange: PropTypes.func,\n onBlur: PropTypes.func, // 按下enter键触发也会触发blur事件(看 handleKeyDown 函数)\n error: PropTypes.object, // 错误校验对象\n}\n\nexport default SdwInput\n","import React from 'react'\nimport { Redirect, Route, Switch } from 'react-router-dom'\n\nconst switchRoutes = ({ routes, type }) => {\n // 不使用匿名简写为了 React Dev Tool 显示出相应的名字\n const initRoute = routes[0]\n return function SwitchRoutes() {\n let Comp = type || React.Fragment\n return (\n \n {routes.map(route => )}\n \n \n )\n }\n}\n\nexport default switchRoutes\n","import { request } from '../utils/request'\n\n//我的消息\nexport const getMessage = (params = {}) => {\n return request({ url: '/dataset/common/getMessage', method: 'post', data: params })\n}\n\n//待审批的消息\nexport const getProcessApproval = (params = {}) => {\n return request({ url: '/dataset/common/getProcessApproval', method: 'post', data: params })\n}\n\n//任务审批接口\n// {\n// \"approvalId\": 1, 任务approvalId\n// \"task_status\": 1, 1同意,2驳回\n// \"comment\": \"\" 备注\n// }\nexport const applyApproval = (params = {}) => {\n return request({ url: '/dataset/common/applyApproval', method: 'post', data: params })\n}\n\nexport const getTopicBusiness = (params = {}) => {\n return request({ url: '/dataset/common/getTopicBusiness', method: 'get', params: params })\n}","import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport './mulIndex.css'\n\nclass Radiobox extends React.Component {\n\n static defaultProps = {\n changeCheckedFun: () => {},\n options: []\n }\n\n render() {\n let { options, value, colorStyle } = this.props\n let className = \"sdw-mul-radiobox__wrap\"\n if (colorStyle == \"light\") {\n className += \" light\"\n } else {\n className += \" deep\"\n }\n return (\n
\n {\n Array.isArray(options) &&\n !!options.length &&\n options.map((item, index) => (\n this.props.changeCheckedFun(item.value)}\n >\n {}}\n name={`onlyOne_${options[0].value}_${options[0].text}`}\n />\n {item.text}\n \n ))\n }\n
\n )\n }\n}\n\nRadiobox.propTypes = {\n options: PropTypes.array,\n colorStyle: PropTypes.string,\n changeCheckedFun: PropTypes.func,\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.bool])\n}\n\nexport default Radiobox\n","import './index.css'\n\nexport default function TimePage (props) {\n\n // disableArr: [[1,0,0,2,0,0],[4,10,20,5,30,40]...]---->[[01:00:00-02:00:00],[04:10:20-05:30:40]...]\n function isHourDisabled (hour, disableArr) {\n let disableTimeRange = []\n disableArr.forEach(arr => {\n let hour1 = arr[0]\n let hour2 = arr[3]\n\n disableTimeRange = disableTimeRange.concat(getHourRange(hour1, hour2))\n })\n\n return disableTimeRange.some(i => (i[0] < hour && hour < i[1]))\n }\n\n function getHourRange (startHour, endHour) {\n let disableHourRange = []\n if (startHour > endHour) { // 8:00:00-3:00:00 ----> 8:00:00-23:59:59 && 0:00:00-3:00:00\n disableHourRange.push([startHour, 24], [-1, endHour]) // 为啥是24和-1:因为判断使用的大于和小于\n } else {\n disableHourRange.push([startHour, endHour])\n }\n return disableHourRange\n }\n\n // 只需要判断小时的首尾\n function isMinDisabled (min, disableArr, hour) {\n let curHour = Number(hour)\n let flag = false\n disableArr.forEach(arr => {\n let startHour = arr[0]\n let endHour = arr[3]\n let min1 = arr[1]\n let min2 = arr[4]\n if (curHour === startHour && curHour === endHour ) {\n flag = min > min1 && min < min2\n } else {\n if (curHour === startHour && min > min1) {\n flag = true\n } else if (curHour === endHour && min < min2) {\n flag = true\n }\n }\n })\n\n return flag\n }\n\n // 同上\n function isSecDisabled (sec, disableArr, hour, min) {\n let curHour = Number(hour)\n let curMin = Number(min)\n let flag = false\n disableArr.forEach(arr => {\n let startHour = arr[0]\n let endHour = arr[3]\n let startMin = arr[1]\n let endMin = arr[4]\n let sec1 = arr[2]\n let sec2 = arr[5]\n if (curHour === startHour && curMin === startMin && curHour === endHour && curMin === endMin) {\n flag = sec > sec1 && sec < sec2\n } else {\n if (curHour === startHour && curMin === startMin && sec > sec1) {\n flag = true\n } else if (curHour === endHour && curMin === endMin && sec < sec2) {\n flag = true\n }\n }\n })\n\n return flag\n }\n\n return (\n
\n
\n {\n Array.from(Array(24)).map((i, k) => {\n let isDisabled = props.disabledPassed ? isHourDisabled(k, props.disableArr) : false\n let hourClass = 'comp__time-picker-page__item-label'\n if (isDisabled) hourClass += ' disabled'\n if (k == props.hour) hourClass += ' current'\n return (\n {\n if (isDisabled) return\n props.onChangeTime(props.TIME_MAP.hour, k, props.index, props.disableArr)\n }}\n key={k}\n className={hourClass}\n >{props.prefixInteger(k)}
\n )\n })\n }\n
\n
\n {\n Array.from(Array(60)).map((i, k) => {\n let isDisabled = props.disabledPassed ? isMinDisabled(k, props.disableArr, props.hour) : false\n let minClass = 'comp__time-picker-page__item-label'\n if (isDisabled) minClass += ' disabled'\n if (k == props.min) minClass += ' current'\n return (\n {\n if (isDisabled) return\n props.onChangeTime(props.TIME_MAP.min, k, props.index, props.disableArr)\n }}\n key={k}\n className={minClass}\n >{props.prefixInteger(k)}
\n )\n })\n }\n \n
\n {\n Array.from(Array(60)).map((i, k) => {\n let isDisabled = props.disabledPassed ? isSecDisabled(k, props.disableArr, props.hour, props.min) : false\n let secClass = 'comp__time-picker-page__item-label'\n if (isDisabled) secClass += ' disabled'\n if (k == props.sec) secClass += ' current'\n return (\n {\n if (isDisabled) return\n props.onChangeTime(props.TIME_MAP.sec, k, props.index, props.disableArr)\n }}\n key={k}\n className={secClass}\n >{props.prefixInteger(k)}
\n )\n })\n }\n \n \n )\n}","import { useState, useEffect, useRef } from 'react'\nimport PropTypes from 'prop-types'\nimport _ from 'lodash'\nimport TimePage from './TimePage'\n\nimport './index.css'\n\nconst TIME_MAP = {\n hour: 'hour',\n min: 'min',\n sec: 'sec'\n}\n\nfunction TimePicker(props) {\n const HourRef = useRef()\n const MinRef = useRef()\n const SecRef = useRef()\n const HourRef2 = useRef()\n const MinRef2 = useRef()\n const SecRef2 = useRef()\n\n const time = props.value ? props.value.split(\":\") : [0, 0, 0]\n const [hour, setHour] = useState(time[0])\n const [min, setMin] = useState(time[1])\n const [sec, setSec] = useState(time[2])\n const [hour2, setHour2] = useState(23)\n const [min2, setMin2] = useState(59)\n const [sec2, setSec2] = useState(59)\n const [showTimePickerPage, setShowTimePickerPage] = useState(false)\n const [originTime, setOriginTime] = useState(null)\n const [enterTimePickerInput, setEnterTimePickerInput] = useState(false)\n\n const RANGE_TIME_MAP = {\n 0: {\n hour: setHour,\n min: setMin,\n sec: setSec\n },\n 1: {\n hour: setHour2,\n min: setMin2,\n sec: setSec2\n }\n }\n\n useEffect(() => {\n document.addEventListener('click', gloabalClick)\n return () => {\n document.removeEventListener('click', gloabalClick)\n }\n }, [])\n\n useEffect(() => {\n setOriginTime(props.value)\n }, [props.value])\n\n useEffect(() => {\n onResetTime()\n }, [originTime])\n\n\n function gloabalClick(e) {\n onCancelTime()\n }\n\n function getSingelCurTime(h, m, s) {\n return `${prefixInteger(h)}:${prefixInteger(m)}:${prefixInteger(s)}`\n }\n\n function getRangeCurTime() {\n return `${getSingelCurTime(hour, min, sec)} - ${getSingelCurTime(hour2, min2, sec2)}`\n }\n\n function onParentChangeValue() {\n\n let curTime = getSingelCurTime(hour, min, sec)\n\n if (props.showTimeRangePicker) {\n\n let startTime = getSingelCurTime(hour, min, sec)\n let endTime = getSingelCurTime(hour2, min2, sec2)\n curTime = `${startTime} - ${endTime}`\n\n props.changeValue([startTime, endTime])\n } else {\n props.changeValue(curTime)\n }\n\n setOriginTime(curTime)\n }\n\n useEffect(() => {\n onParentChangeValue()\n }, [showTimePickerPage])\n\n function handleNowTime() {\n setHour(new Date().getHours())\n setMin(new Date().getMinutes())\n setSec(new Date().getSeconds())\n setShowTimePickerPage(false)\n }\n\n function onResetTime() {\n\n if (!props.showTimeRangePicker) {\n let arr = []\n if (typeof originTime === 'string') {\n arr = originTime.split(':')\n\n if (arr[0] >= 0 && arr[0] <=23 && arr[1] >= 0 && arr[1] <= 59 && arr[2] >= 0 && arr[2] <= 59) {\n setHour(arr[0])\n setMin(arr[1])\n setSec(arr[2])\n }\n }\n } else {\n // ['08:08:08', '09:09:09']\n if (Array.isArray(originTime) && originTime.length === 2) {\n originTime.forEach((time, index) => {\n if (typeof time === 'string') {\n let arr = time.split(':')\n\n if (arr[0] >= 0 && arr[0] <=23 && arr[1] >= 0 && arr[1] <= 59 && arr[2] >= 0 && arr[2] <= 59) {\n if (typeof RANGE_TIME_MAP[index]['hour'] === 'function') RANGE_TIME_MAP[index]['hour'](arr[0])\n if (typeof RANGE_TIME_MAP[index]['min'] === 'function') RANGE_TIME_MAP[index]['min'](arr[1])\n if (typeof RANGE_TIME_MAP[index]['sec'] === 'function') RANGE_TIME_MAP[index]['sec'](arr[2])\n }\n }\n })\n } else if (originTime === '') {\n setHour('00')\n setMin('00')\n setSec('00')\n setHour2('23')\n setMin2('59')\n setSec2('59')\n }\n }\n }\n\n function onCancelTime() {\n onResetTime()\n setShowTimePickerPage(false)\n }\n\n function checkHour(val, disableArr, index) {\n if (!Array.isArray(disableArr) || disableArr.length < 3) return\n disableArr.forEach(arr => {\n if (val == arr[0] && index == 0) {\n setMin(arr[1])\n setSec(arr[2])\n }\n if (val == arr[3] && index == 0) {\n setMin(arr[4])\n setSec(arr[5])\n }\n if (val == arr[0] && index == 1) {\n setMin2(arr[1])\n setSec2(arr[2])\n }\n if (val == arr[3] && index == 1) {\n setMin2(arr[4])\n setSec2(arr[5])\n }\n })\n }\n\n function checkMin(val, disableArr, index) {\n if (!Array.isArray(disableArr) || disableArr.length < 3) return\n disableArr.forEach(arr => {\n if (val == arr[1] && index == 0) {\n setSec(arr[2])\n }\n if (val == arr[4] && index == 0) {\n setSec(arr[5])\n }\n if (val == arr[1] && index == 1) {\n setSec2(arr[2])\n }\n if (val == arr[4] && index == 1) {\n setSec2(arr[5])\n }\n })\n }\n\n useEffect(() => {\n initScollTop()\n }, [hour, min, sec, hour2, min2, sec2, showTimePickerPage])\n\n function onChangeTime(type, val, index = 0, disableArr) {\n\n switch (type) {\n case TIME_MAP.hour:\n checkHour(val, disableArr, index)\n if (typeof RANGE_TIME_MAP[index]['hour'] === 'function') {\n RANGE_TIME_MAP[index]['hour'](val)\n }\n break;\n case TIME_MAP.min:\n checkMin(val, disableArr, index)\n if (typeof RANGE_TIME_MAP[index]['min'] === 'function') {\n RANGE_TIME_MAP[index]['min'](val)\n }\n break;\n case TIME_MAP.sec:\n if (typeof RANGE_TIME_MAP[index]['sec'] === 'function') {\n RANGE_TIME_MAP[index]['sec'](val)\n }\n break;\n\n default:\n break;\n }\n }\n\n // 确定时分秒选中值居中显示\n function initScollTop() {\n let spanHeight = 36\n\n if (HourRef.current) {\n HourRef.current.scrollTop = (+hour + 1) * spanHeight\n }\n if (MinRef.current) {\n MinRef.current.scrollTop = (+min + 1) * spanHeight\n }\n if (SecRef.current) {\n SecRef.current.scrollTop = (+sec + 1) * spanHeight\n }\n\n if (!props.showTimeRangePicker) return\n\n if (HourRef2.current) {\n HourRef2.current.scrollTop = (+hour2 + 1) * spanHeight\n }\n if (MinRef2.current) {\n MinRef2.current.scrollTop = (+min2 + 1) * spanHeight\n }\n if (SecRef2.current) {\n SecRef2.current.scrollTop = (+sec2 + 1) * spanHeight\n }\n }\n\n function prefixInteger(num, length = 2) {\n return (Array(length).join('0') + +num).slice(-length);\n }\n\n function disableValidate(rangeTime) {\n\n if (\n !Array.isArray(rangeTime) ||\n !rangeTime.length ||\n rangeTime.some(str => typeof str !== 'string')\n ) {\n return [false, null]\n }\n\n let flag = true\n let farmatRangeTime = []\n rangeTime.forEach(arr => {\n let strTime = arr.split('-').join(':').split(':').map(i => Number(i))\n\n // 时间禁用校验,过:【true, [[1,0,0,2,0,0],[4,10,20,5,30,40...]】,不过:【false, null】\n if (\n flag &&\n strTime.length === 6 &&\n strTime[0] >= 0 && strTime[0] <=23 &&\n strTime[3] >= 0 && strTime[3] <=23 &&\n strTime[1] >= 0 && strTime[1] <=59 &&\n strTime[4] >= 0 && strTime[4] <=59 &&\n strTime[2] >= 0 && strTime[2] <=59 &&\n strTime[5] >= 0 && strTime[5] <=59\n ) {\n farmatRangeTime.push(strTime)\n } else {\n flag = false\n farmatRangeTime = null\n }\n })\n\n if (!flag) {\n return [flag, farmatRangeTime]\n }\n\n return [flag, farmatRangeTime]\n }\n\n function handleClearValue() {\n setHour('')\n setMin('')\n setSec('')\n setOriginTime('')\n\n props.changeValue('')\n }\n\n const leftDisableArr = [+hour2, +min2, +sec2, 24, 0, 0]\n const rightDisableArr = [0, 0, 0, +hour, +min, +sec]\n\n let { disabledTimeRange, showClearIcon, placeholder, showTimeRangePicker, value, width, listWidth } = props\n\n // 时间禁用校验,过:【true, [[1,0,0,2,0,0],[4,10,20,5,30,40]...]】,不过:【false, null】\n let [disabledPassed, disableArr] = disableValidate(disabledTimeRange)\n\n return (\n e.stopPropagation()}\n style={{ ...(!!width ? {width: width + 12} : {}) }}\n >\n setShowTimePickerPage(v => !v)}\n onMouseEnter={() => setEnterTimePickerInput(true)}\n onMouseLeave={() => setEnterTimePickerInput(false)}\n >\n {\n (!showTimeRangePicker && !!value && hour !== '' && min !== '' && sec !== '') ?\n getSingelCurTime(hour, min, sec) :\n (\n (showTimeRangePicker && !!value && hour !== '' && min !== '' && sec !== '' && hour2 !== '' && min2 !== '' && sec2 !== '') ?\n getRangeCurTime() :\n {placeholder}\n )\n }\n {\n showClearIcon &&\n enterTimePickerInput &&\n hour !== '' && min !== '' && sec !== '' &&\n \n }\n \n {\n // 选择单个时间点\n showTimePickerPage &&\n !showTimeRangePicker &&\n
\n \n
\n {\n !disabledPassed &&\n 此刻\n }\n 取消\n setShowTimePickerPage(false)}>确定\n
\n
\n }\n {\n // 选择时间范围\n showTimePickerPage &&\n showTimeRangePicker &&\n
\n
\n
\n
开始时间
\n
\n \n
\n
\n
\n
结束时间
\n
\n \n
\n
\n
\n
\n 取消\n setShowTimePickerPage(false)}>确定\n
\n
\n }\n \n )\n}\n\nTimePicker.propsTypes = {\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\n changeValue: PropTypes.func,\n disabledTimeRange: PropTypes.array,\n showClearIcon: PropTypes.bool,\n placeholder: PropTypes.string,\n showTimeRangePicker: PropTypes.bool,\n width: PropTypes.number,\n listWidth: PropTypes.number,\n}\n\nTimePicker.defaultProps = {\n placeholder: '请选择时间',\n changeValue: _.noop\n}\n\nexport default TimePicker\n","import { useState, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport DatePicker from '../DatePicker'\nimport TimePicker from '../TimePicker'\nimport _ from 'lodash'\n\nimport './index.css'\n\nfunction DateTimePicker(props) {\n\n const [showTimePickerPage, setShowTimePickerPage] = useState(false)\n const [enterTimePickerInput, setEnterTimePickerInput] = useState(false)\n const [originDateTime, setOriginDateTime] = useState('')\n const [curTime, setCurTime] = useState('')\n const [curRightTime, setCurRightTime] = useState('')\n const [curDate, setCurDate] = useState('')\n\n useEffect(() => {\n document.addEventListener('click', gloabalClick)\n return () => {\n document.removeEventListener('click', gloabalClick)\n }\n }, [])\n\n useEffect(() => {\n setOriginDateTime(props.value)\n }, [props.value])\n\n useEffect(reSetDateTime, [originDateTime])\n\n useEffect(() => {\n if(showTimePickerPage && !!props.value) {\n reSetDateTime()\n }\n }, [showTimePickerPage])\n\n function gloabalClick() {\n setShowTimePickerPage(false)\n }\n\n function reSetDateTime() {\n let { value, showDateTimeRangePicker } = props\n\n if (!showDateTimeRangePicker && typeof value === 'string' && value.length > 0) {\n let arr = value.split(' ')\n setCurDate(arr[0])\n setCurTime(arr[1])\n }\n\n if (showDateTimeRangePicker && Array.isArray(value) && value.length === 2) {\n let curDate = []\n let curTime = ''\n let curRightTime = ''\n value.forEach((str, index) => {\n let arr = str.split(' ')\n curDate[index] = arr[0]\n\n if (index === 0) {\n curTime = arr[1]\n } else {\n curRightTime = arr[1]\n }\n })\n\n setCurDate(curDate)\n setCurTime(curTime)\n setCurRightTime(curRightTime)\n }\n }\n\n function handleClearValue() {\n setOriginDateTime('')\n setCurTime('')\n setCurDate('')\n\n props.changeValue('')\n }\n\n function onParentChangeValue() {\n let { showDateTimeRangePicker } = props\n if (!curDate || !curTime) return\n if (showDateTimeRangePicker && (!Array.isArray(curDate) || curDate.length !== 2)) return\n\n let curDateTime = showDateTimeRangePicker ? [\n `${curDate[0]} ${curTime}`,\n `${curDate[1]} ${curRightTime}`\n ] : `${curDate} ${curTime}`\n\n setOriginDateTime(curDateTime)\n\n props.changeValue(curDateTime)\n }\n\n function onSure() {\n onParentChangeValue()\n setShowTimePickerPage(false)\n }\n\n let {\n placeholder,\n showDateTimeRangePicker\n } = props\n\n return (\n e.stopPropagation()}\n >\n setShowTimePickerPage(v => !v)}\n onMouseEnter={() => setEnterTimePickerInput(true)}\n onMouseLeave={() => setEnterTimePickerInput(false)}\n >\n {\n !!originDateTime ? (\n showDateTimeRangePicker ? originDateTime.join(' 至 ') : originDateTime\n ) : {placeholder}\n }\n {\n enterTimePickerInput &&\n originDateTime !== '' ?\n : \n }\n \n\n {\n showTimePickerPage &&\n
\n {\n showDateTimeRangePicker &&\n {!!curDate[0] ? curDate[0] : 请选择日期}\n }\n \n \n \n\n {\n showDateTimeRangePicker &&\n <>\n {!!curDate[1] ? curDate[1] : 请选择日期}\n \n \n \n }\n\n
\n 确定\n
\n
\n }\n \n )\n}\n\nDateTimePicker.propTypes = {\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\n placeholder: PropTypes.string,\n changeValue: PropTypes.func,\n showDateTimeRangePicker: PropTypes.bool,\n disabledDateFun: PropTypes.func\n}\n\nDateTimePicker.defaultProps = {\n placeholder: '请选择',\n showDateTimeRangePicker: false,\n changeValue: _.noop,\n disabledDateFun: _.noop\n}\n\nexport default DateTimePicker\n","import React from 'react'\nimport SdwEmpty from '@common/Empty'\n\nfunction NoRight(props) {\n return (\n \n )\n}\n\nexport default NoRight\n","import React from 'react'\nimport ReactDOM from 'react-dom'\nimport _ from 'lodash'\n\nimport './index.css'\n\nexport default class Popover extends React.Component {\n\n state = {\n position: {}\n }\n\n render () {\n return (\n this.setState({\n position: {\n x: e.clientX,\n y: e.clientY\n }\n })}\n onMouseLeave={e => this.setState({\n position: {}\n })}\n >\n {this.props.children}\n {\n !!this.props.tip &&\n !!this.state.position.x &&\n !!this.state.position.y &&\n \n }\n \n )\n }\n}\n\nfunction ShowTip({ tip = '', position = {} }) {\n \n let clientX = position.x\n let clientY = position.y\n\n return ReactDOM.createPortal(\n (\n \n {tip}\n \n ),\n document.body\n )\n}\n","import React, { Component } from 'react'\nimport PropTypes from 'prop-types'\n\nimport './index.css'\n\nclass SdwInput extends Component {\n\n static defaultProps = {\n width: '100%',\n rows: 3,\n cols: 28,\n placeholder: '请输入',\n clearable: true,\n value: '',\n disabled: false,\n sholdCheckValidate: false,\n error: {\n isError: false,\n msg: ''\n },\n\n onChange: () => {},\n onBlur: () => {},\n }\n\n state = {\n inputValue: this.props.value || '',\n isOnFocus: false,\n showClearIcon: false,\n inputValueIsChange: false,\n }\n\n componentDidMount() {\n const value = this.props.value\n if (value !== '') this.setState({ inputValue: value })\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevProps.value !== this.props.value) {\n this.setState({ inputValue: this.props.value })\n }\n }\n\n handleChange = e => {\n if (this.props.disabled) return\n let value = e.target.value\n this.setState({\n inputValue: value,\n inputValueIsChange: true\n })\n this.props.onChange(value)\n }\n \n handleBlur = e => { \n this.setState({\n isOnFocus: false,\n inputValueIsChange: false\n })\n this.props.onBlur(e.target.value)\n }\n\n handleClearInput = e => {\n e.preventDefault()\n this.setState({ inputValue: '' })\n this.props.onChange('')\n }\n\n render() {\n let { placeholder, disabled, width, rows, cols, clearable, error } = this.props\n let { inputValue, showClearIcon, isOnFocus, inputValueIsChange } = this.state\n\n let textareaClassName = 'sdw-textarea-input__wrap'\n if (error.isError) {\n textareaClassName += ' sdw-textarea-input-error'\n }\n\n let wrapDivClassName = 'sdw-textarea-input__div-wrap'\n if (isOnFocus) {\n wrapDivClassName += ' sdw-textarea-input__on-focus'\n }\n\n return (\n this.setState({ showClearIcon: true })}\n onMouseLeave={() => this.setState({ showClearIcon: false })}\n className={wrapDivClassName}\n style={{ width }}\n >\n this.handleChange(e)}\n onFocus={() => this.setState({ isOnFocus: true })}\n onBlur={e => this.handleBlur(e)}\n />\n {\n !disabled && clearable && showClearIcon && !!inputValue && \n \n }\n {\n !inputValueIsChange && error.isError &&
{error.msg}
\n }\n \n )\n }\n}\n\nSdwInput.propTypes = {\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n placeholder: PropTypes.string,\n clearable: PropTypes.bool,\n value: PropTypes.string,\n disabled: PropTypes.bool,\n rows: PropTypes.number,\n cols: PropTypes.number,\n onChange: PropTypes.func,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n sholdCheckValidate: PropTypes.bool, // true: 手动触发必填项的检查\n error: PropTypes.object\n}\n\nexport default SdwInput\n","import React, { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport ReactDOM from 'react-dom'\nimport _ from 'lodash'\n\nimport './index.css'\n\nconst EMPTY_SELECT_OBJ = {\n ids: [],\n texts: [],\n item: {}\n}\n\nclass SdwCascader extends Component {\n cascaderInputRef = React.createRef()\n cascaderInputWrapRef = React.createRef()\n\n static defaultProps = {\n width: '80%',\n listWidth: 0,\n listMaxHeight: 300,\n height: 40,\n rows: 3,\n cols: 28,\n placeholder: '全部',\n clearable: true,\n value: {\n id: '',\n text: ''\n },\n disabled: false,\n readOnly: true,\n data: [],\n canChooseParent: false // 默认只能选择叶子节点\n }\n\n state = {\n isValidatePass: true,\n showcascaderList: false,\n showClearIcon: false,\n validateText: '',\n isFilter: false,\n curSelectObject: EMPTY_SELECT_OBJ, // 当前选中的级联对象\n curInputVal: '', // 模糊匹配输入值\n levelDataList: [], // 当前层级 [[firstList], [secondList], ...]\n beforeLevel: 0, // 记录上次的层级,\n fliterDataList: [], // 已经将所有的叶子节点组合到一个一维数组中\n olderLevelDataList: [], // 模糊搜索前一个 curLevelDataList 数组\n sholdCheckValidate: false\n }\n\n componentDidMount() {\n document.addEventListener('click', this.handleGlobalClose)\n this.setState(({\n levelDataList: [this.props.data]\n }))\n\n // 设置可以模糊搜索后\n if (!this.props.readOnly) {\n let fliterDataList = this.formatFlatData({\n id: [],\n text: [],\n item: {}\n }, this.props.data).flat(Infinity)\n\n this.setState({ fliterDataList })\n }\n }\n\n formatFlatData = (parentItem, list) => {\n return list.map(item => {\n let curItem = {\n id: [...parentItem.id, item.id],\n text: [...parentItem.text, item.text],\n item: item\n }\n\n if (item.children && item.children.length) {\n return this.formatFlatData(curItem, item.children)\n }\n\n return curItem\n })\n }\n\n componentWillUnmount() {\n document.removeEventListener('click', this.handleGlobalClose)\n }\n\n componentDidUpdate (prevProps, prevState) {\n let { value, sholdCheckValidate } = this.props\n if (!this.state.isFilter && Array.isArray(value.texts) && value.texts.length && ((value.texts && !this.state.curInputVal) || prevProps.value.texts !== value.texts)) {\n this.setState({\n curInputVal: value.texts.join(' / ') || ''\n })\n }\n \n if (prevProps.sholdCheckValidate !== sholdCheckValidate) {\n this.validate(value)\n }\n\n if (prevProps.data.length !== this.props.data.length) {\n this.setState(({\n levelDataList: [this.props.data]\n }))\n }\n }\n\n handleGlobalClose = e => {\n const node = ReactDOM.findDOMNode(this.cascaderInputWrapRef.current)\n\n if (!node.contains(e.target)) {\n let { value } = this.props\n this.setState({\n showcascaderList: false,\n curInputVal: value.texts && value.texts.join(' / ') || ''\n })\n\n // this.validate(value)\n }\n }\n\n handleClearInput = e => {\n e.preventDefault()\n this.setState(state => ({\n curInputVal: '',\n curSelectObject: EMPTY_SELECT_OBJ,\n levelDataList: state.levelDataList.slice(0, 1),\n beforeLevel: 0,\n }))\n\n if (typeof this.props.onChange === 'function') {\n this.props.onChange({})\n }\n \n this.validate({})\n this.cascaderInputRef.current.focus()\n }\n\n handleClick = () => {\n this.setState(state => ({\n showcascaderList: !state.showcascaderList,\n isFilter: false,\n }))\n }\n\n findExtraList = (list, ids) => {\n if (!(ids && ids.length)) return []\n let id = ids.shift()\n let childrenList = list.filter(i => i.id === id)[0].children || []\n return [childrenList, ...this.findExtraList(childrenList, ids)]\n }\n\n handleItemClick = (e, item, level, isFliter = false) => {\n let { levelDataList, beforeLevel, curSelectObject, olderLevelDataList } = this.state\n let { data } = this.props\n\n let curLevelDataList = _.cloneDeep(levelDataList)\n let selectObj = EMPTY_SELECT_OBJ\n\n if (isFliter) {\n let ids = Object.assign([], item.id)\n ids.pop()\n let extraList = ids.length && this.findExtraList(data, ids) || []\n curLevelDataList = [data, ...extraList]\n\n // 修改当前的展开level\n level = curLevelDataList.length\n selectObj = {\n ids: item.id,\n texts: item.text,\n clickItem: item,\n }\n } else {\n let itemChildren = item.children ? item.children : []\n if (level > beforeLevel) {\n curLevelDataList.push(itemChildren)\n } else {\n curLevelDataList = _.cloneDeep(curLevelDataList.splice(0, level))\n\n if (_.isArray(itemChildren) && itemChildren.length) curLevelDataList.push(itemChildren)\n }\n \n selectObj = {\n ids: [...curSelectObject.ids.slice(0, level - 1), item.id],\n texts: [...curSelectObject.texts.slice(0, level - 1), item.text],\n clickItem: item,\n }\n }\n\n this.setState({\n olderLevelDataList: curLevelDataList,\n levelDataList: curLevelDataList,\n beforeLevel: level,\n showClearIcon: false,\n curSelectObject: selectObj,\n // curInputVal: selectObj.texts.join(' / '),\n showcascaderList: !(item.children && item.children.length)\n })\n\n // 如果只能选择 叶子节点,这里就只能叶子节点可以赋值\n let canNotChooseParent = !this.props.canChooseParent && item.children && _.isArray(item.children) && !!item.children.length\n if (!canNotChooseParent && typeof this.props.onChange === 'function') {\n this.setState({\n curInputVal: selectObj.texts.join(' / ')\n })\n\n this.props.onChange(selectObj)\n }\n\n this.validate(selectObj)\n }\n\n validate = curRecord => {\n\n // 如果没有传入valiateFun进行校验,直接跳过\n if (typeof this.props.validateFun !== 'function') {\n return\n }\n\n let res = this.props.validateFun(curRecord)\n\n // validateFun只有返回true,才会校验通过\n if (res === true) {\n this.setState({\n isValidatePass: res,\n validateText: ''\n })\n } else {\n this.setState({\n isValidatePass: false,\n validateText: res\n })\n }\n }\n\n render() {\n let {\n placeholder,\n disabled,\n width,\n listWidth,\n height,\n listMaxHeight,\n clearable,\n readOnly,\n } = this.props\n\n let { \n isValidatePass,\n validateText,\n showcascaderList,\n showClearIcon,\n curInputVal,\n isFilter,\n levelDataList,\n curSelectObject,\n fliterDataList,\n } = this.state\n\n // 模糊搜索进行过滤\n let filterData = levelDataList\n if (isFilter) {\n filterData = [fliterDataList.filter(\n item => Array.isArray(item.text) && \n item.text.some(text => text.indexOf(curInputVal) !== -1))]\n }\n\n let listWrapWidth = (isFilter && '100%') || \n listWidth || \n (typeof width === 'number' && (width / 3)) || \n 200\n\n let inputClassName = isValidatePass ? 'sdw-cascader__wrap' : 'sdw-cascader__wrap sdw-error-input'\n if (showcascaderList) {\n inputClassName += ' sdw-select__show-selected'\n }\n\n let iconClassName = 'sdw-cascader__icon'\n if (clearable && showClearIcon && curInputVal) {\n iconClassName += ' sdw-cascader-clearable'\n } else if (showcascaderList) {\n iconClassName += ' sdw-cascader__drop-up sdw-cascader__drop-down'\n } else {\n iconClassName += ' sdw-cascader__drop-down'\n }\n \n return (\n this.setState({ showClearIcon: true })}\n onMouseLeave={() => this.setState({ showClearIcon: false })} >\n this.setState({\n isFilter: true,\n showcascaderList: true,\n curInputVal: e.target.value,\n })}\n className={inputClassName}\n />\n\n {\n !disabled && \n }\n {\n !isValidatePass &&
{validateText}
\n }\n {\n showcascaderList && \n ( \n
\n {\n filterData.map((levelData, index) => (\n levelData && levelData.length ?\n this.setState({ showClearIcon: false })}\n />\n :\n (\n index === 0 ? \n
\n 暂无匹配数据\n
: null\n ) \n ))\n }\n
\n )\n }\n \n )\n }\n}\n\nSdwCascader.propTypes = {\n data: PropTypes.array,\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n listWidth: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n listMaxHeight: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n placeholder: PropTypes.string,\n clearable: PropTypes.bool,\n value: PropTypes.object,\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n onChange: PropTypes.func,\n validateFun: PropTypes.func,\n sholdCheckValidate: PropTypes.bool, // true: 手动触发必填项的检查\n canChooseParent: PropTypes.bool, // true: 可以选择非叶子节点\n}\n\nexport default SdwCascader\n\nfunction CascaderItem (props) {\n return (\n
\n { \n props.itemList.map((item, index) => {\n let isSelected = props.curSelectObject.ids && \n props.curSelectObject.ids[props.level] == item.id\n return (\n props.handleItemClick(e, item, (props.level + 1), props.isFilter)}\n title={props.isFilter ? item.text.join(' / ') : item.text}\n >\n {\n props.isFilter ? item.text.join(' / ') : item.text\n }\n {\n item.children && item.children.length &&\n \n }\n
\n )\n })\n }\n \n )\n}\n","import axios from 'axios'\nimport Qs from 'qs'\nimport SdwMessage from '../common/Message'\n\n// 支持跨域请求\naxios.defaults.withCredentials = true\n\n// 拦截request,设置全局请求为ajax请求\naxios.interceptors.request.use((config) => {\n config.headers['X-Requested-With'] = 'XMLHttpRequest'\n return config\n})\n\n/**\n * 通过axios异步get数据\n * @param url 请求地址\n * @param params 请求参数\n * @param options axios参数\n * @param callback 回调函数(定义最后一个参数如果是函数则为回调函数)\n * @returns void\n */\nexport function ajaxGet(url, params, options) {\n // 定义最后一个参数如果是函数则为回调函数\n const callback = arguments[arguments.length - 1]\n if (typeof options === 'function') {\n options = {}\n } else {\n options = options || {}\n }\n options.params = params || {}\n options.url = url\n options.method = 'get'\n return request(options, callback)\n}\n\n/**\n * 通过axios异步post数据 \n * @param url 请求地址\n * @param params 请求参数\n * @param options axios参数\n * @param callback 回调函数(定义最后一个参数如果是函数则为回调函数)\n * @returns void\n */\nexport function ajaxPost(url, params, options) {\n // 定义最后一个参数如果是函数则为回调函数\n const callback = arguments[arguments.length - 1]\n if (typeof options === 'function') {\n options = {}\n } else {\n options = options || {}\n }\n options.method = 'post'\n options.url = url\n options.data = params\n if (!options.headers) {\n options.headers = {}\n }\n if (window._csrf_token && window._csrf_token.value) {\n options.headers['x-csrf-token'] = window._csrf_token.value\n }\n options.transformRequest = [\n (data, headers) => {\n // Do whatever you want to transform the data\n return Qs.stringify(params)\n }\n ]\n return request(options, callback)\n}\n\n/**\n * 通过异步下载文件\n * @param {string} url 请求下载地址\n * @param {object} params 请求参数\n * @param {string} fileName 自定义下载文件名称\n */\nexport function ajaxDownload(url, params, fileName) {\n axios({\n url: url,\n method: 'POST',\n responseType: 'blob', // important\n params: params || {}\n })\n .then((response) => {\n if (!fileName) {\n if (\n response.headers['content-disposition'] &&\n response.headers['content-disposition'].indexOf('filename=') !== -1\n ) {\n fileName = response.headers['content-disposition'].split(\n 'filename='\n )[1]\n } else if (response.headers.filename) {\n fileName = response.headers.filename\n } else {\n const d = new Date()\n fileName =\n '' +\n d.getFullYear() +\n d.getMonth() +\n d.getHours() +\n d.getMinutes() +\n d.getSeconds()\n }\n }\n const url = window.URL.createObjectURL(new Blob([response.data]))\n const link = document.createElement('a')\n link.href = url\n link.setAttribute('download', fileName)\n document.body.appendChild(link)\n link.click()\n })\n .catch((error) => {\n // console.log('下载文件异常')\n })\n}\n\n/**\n * 调用axios插件发起ajax请求\n * @param {object} options axios参数\n * @param {object} callback 回调方法,为空时,则按原axios链式方式回调处理数据\n */\nexport function request(options) {\n options.timeout = options.timeout || 30000\n options.async = options.async || true\n // 定义最后一个参数如果是函数则为回调函数\n const callback = arguments[arguments.length - 1]\n if (typeof callback !== 'function') {\n return axios(options)\n }\n return axios(options)\n .then((response) => {\n response.code = 0\n if (typeof response.data === 'string') {\n // 接口返回结果非json\n } else {\n response.code = response.data.retcode || response.data.code || 0 // 定义code=0时表示正常返回\n }\n response.msg = response.msg || ''\n response.body = response.data\n if (response.data.csrf_token) {\n window._csrf_token = response.data.csrf_token\n }\n requestHook(response)\n\n callback(response)\n })\n .catch((error) => {\n // 定义code=500时表示异常返回\n const response = { data: [], msg: error, code: 500 }\n requestHook(response)\n callback(response)\n })\n}\n\n/**\n * 并发请求\n * @param {array} ajax\n * @param {func} callback\n */\nexport function ajaxAll(ajax, callback) {\n axios.all(ajax).then(\n axios.spread((...res) => {\n if (typeof callback === 'function') callback(res)\n }),\n (error) => {\n const res = { data: error }\n // handle error\n res.msg = '查询超时或接口异常'\n res.status = -200\n if (typeof callback === 'function') callback(res)\n // console.log('error: ', res)\n }\n )\n}\n\nfunction requestHook(res) {\n if (res.code == 4004) {\n // 无权限做跳转\n // SdwMessage.warning({\n // message: \"无权限\",\n // duration: 0,\n // showClose: true\n // })\n } else if (res.code == 1004 || res.code == 1005) {\n SdwMessage.warning({\n message: '未登录或登录失效,请按F5刷新页面',\n duration: 0,\n showClose: true\n })\n // 未登录\n setTimeout(() => {\n // login()\n }, 1000)\n } else if (res.code == 500) {\n // 网络异常\n }\n return true\n}\n","import { request } from '../utils/request'\n\nexport function getStandardSelects (params) {\n return request({ url: '/metadata/tableApi/getStandardSelects', method: 'get', params: params })\n}\n\nexport function standardItemSelects (params) {\n return request({ url: '/tagmanage/standardManage/standardItemSelects', method: 'get', params: params })\n}\n\nexport function getUserTraceItem (params) {\n return request({ url: `/usertrace/userTrace/item`, method: 'get', params: params })\n}\n\nexport function getUserTraceDetail (params) {\n return request({ url: `/usertrace/userTrace/detail`, method: 'get', params: params })\n}\n","import { request } from '../utils/request'\n\n// 获取主题域管理数据\nexport function getManageTopics (params) {\n return request({ url: '/statistics/dataMarket/getManageTopics', method: 'get', params: params })\n}\n\n// 编辑主题域获取 实时 数据\nexport function getTopicInfoById (params) {\n return request({ url: '/statistics/dataMarket/getTopicInfoById', method: 'get', params: params })\n}\n\n// 新增/编辑主题域\nexport function storeTopic (params) {\n return request({ url: '/statistics/dataMarket/storeTopic', method: 'post', data: params })\n}\n","import { useState, useEffect } from \"react\"\nimport { getStandardSelects } from './api'\nimport { commonApi } from \"@utils/request\"\nimport Message from '@common/Message'\n\nexport default function UseGetTopic(props) {\n\n const [topicAndBusiness, setTopicAndBusiness] = useState({})\n \n useEffect(() => {\n commonApi(getStandardSelects, {}).then(data => {\n setTopicAndBusiness(data)\n }).catch(err => Message.error(err))\n }, [])\n\n return topicAndBusiness\n}","export function getAllDays (year, month, dateValue, showDateRangePickePage) {\n year = typeof Number(year) === 'number' ? +year : new Date().getFullYear()\n month = (\n typeof Number(month) === 'number' && ([0,1,2,3,4,5,6,7,8,9,10,11].includes(month))\n ) ? +month : new Date().getMonth()\n\n let allDays = []\n\n let theFirstDay = new Date(year, month, 1).getDay()\n let beforeFirstDay = new Date(year, month, 0).getDate()\n let theLastDay = new Date(year,month + 1,0).getDate()\n\n for (let i = theFirstDay - 1; i >= 0; i--, beforeFirstDay--) {\n allDays[i] = {\n num: beforeFirstDay,\n value: [month == 0 ? year - 1 : year, PrefixMonthInteger(month, 2), PrefixInteger(beforeFirstDay, 2)],\n colorClass: 'gray'\n }\n }\n\n for (let i = theFirstDay, j = 1; i < (theLastDay + theFirstDay); i++, j++) {\n allDays[i] = {\n num: j,\n value: [year, PrefixMonthInteger(month+1, 2), PrefixInteger(j, 2)],\n colorClass: (isCurrentChiose(year, month+1, j, dateValue, showDateRangePickePage) ? ' current ' : ((\n year === new Date().getFullYear() &&\n month === new Date().getMonth() &&\n j === new Date().getDate()\n ) ? ' today ' : ''))\n + getCheckedDaysClass(year, month+1, j, dateValue, showDateRangePickePage)\n }\n }\n \n for (let i = allDays.length, k = 1; i < 7 * 6; i++, k++) {\n allDays[i] = {\n num: k,\n value: [month == 11 ? year + 1 : year, PrefixMonthInteger(month+2, 2), PrefixInteger(k, 2)],\n colorClass: 'gray'\n }\n }\n\n return allDays\n}\n\n\nexport function PrefixMonthInteger(num, length) {\n num = num % 12 === 0 ? 12 : num % 12\n return (Array(length).join('0') + num).slice(-length);\n}\n\nexport function PrefixInteger(num, length) {\n return (Array(length).join('0') + num).slice(-length);\n}\n\nfunction isCurrentChiose(y, m, d, list, showDateRangePickePage) {\n if (showDateRangePickePage && Array.isArray(list) && Array.isArray(list[0]) && Array.isArray(list[1])) {\n return list.some(item => y == item[0] && m == item[1] && d == item[2])\n } else {\n return list.some(item => y == item[0] && m == item[1] && d == item[2])\n }\n}\n\nfunction getCheckedDaysClass(y, m, d, list, showDateRangePickePage) {\n if (showDateRangePickePage && Array.isArray(list) && Array.isArray(list[0]) && Array.isArray(list[1])) {\n if (new Date(y, m-1, d) > new Date(list[0]) && new Date(y, m-1, d) < new Date(list[1])) {\n return ' range__in'\n } else if (+new Date(y, m-1, d) === +new Date(list[0])) {\n return ' min__date'\n } else if (+new Date(y, m-1, d) === +new Date(list[1])) {\n return ' max__date'\n }\n } else {\n return ''\n }\n}\n","import React, { useState, useEffect, useRef } from 'react'\nimport PropTypes from 'prop-types'\nimport _ from 'lodash'\nimport { getAllDays } from './formatAllDays'\n\nimport './index.css'\n\nfunction DatePicker(props) {\n\n const prevPropsRef = useRef()\n\n const [dateValue, setDateValue] = useState([])\n const [showDatePickePage, setShowDatePickePage] = useState(false)\n const [year, setYear] = useState(new Date().getFullYear())\n const [month, setMonth] = useState(new Date().getMonth())\n const [showYearBtn, setShowYearBtn] = useState(false)\n const [showMonthBtn, setShowMonthBtn] = useState(false)\n const [beforeYear, setBeforeYear] = useState('')\n const [dataRange, setDataRange] = useState([])\n const [hideClearIcon, setHideClearIcon] = useState(true)\n const [isValidatePass, setIsValidatePass] = useState(true)\n const [validateText, setValidateText] = useState('')\n\n useEffect(() => {\n if (prevPropsRef.current) {\n if (props.sholdCheckValidate !== prevPropsRef.current.sholdCheckValidate) {\n validate(props.value)\n }\n }\n // 更新 prevPropsRef\n prevPropsRef.current = props\n })\n\n useEffect(() => {\n document.addEventListener('click', gloabalClick)\n return () => {\n document.removeEventListener('click', gloabalClick)\n }\n }, [])\n\n function gloabalClick() {\n setShowDatePickePage(false)\n }\n\n useEffect(() => {\n let { value, showDateRangePickePage } = props\n if (showDateRangePickePage && Array.isArray(value)) {\n let minVal = value[0] || null\n let maxVal = value[1] || null\n\n if (minVal && typeof minVal === 'string' && maxVal && typeof maxVal === 'string') {\n let list = maxVal.split('-')\n\n setYear(list[1] == 1 ? list[0] : +list[0])\n setDataRange([\n minVal.split('-'),\n list\n ])\n }\n\n } else {\n let arr = typeof value === 'string' ? value.split('-') : []\n if (arr.length && arr.length === 3) {\n setYear(arr[0])\n setMonth(arr[1] - 1)\n setDateValue(arr)\n }\n }\n }, [props.value])\n\n function onYearClick() {\n let beforeYear = year - year % 10\n setBeforeYear(beforeYear)\n setShowYearBtn(true)\n setShowMonthBtn(false)\n }\n\n function onMonthClick() {\n setBeforeYear(year)\n setShowYearBtn(false)\n setShowMonthBtn(true)\n }\n\n function handleClickDateItem(disabled, showDateRangePickePage, dataRange, day) {\n if (disabled) return\n\n if (showDateRangePickePage) {\n let arr = dataRange.length > 1 ? [] : [...dataRange]\n\n // 特殊处理:如果先选大日期,后选小日期,小日期置前\n if (arr.length === 1 && new Date(arr[0]) > new Date(day.value)) {\n arr.unshift(day.value)\n } else {\n arr.push(day.value)\n }\n\n setDataRange(arr)\n setShowDatePickePage(arr.length !== 2)\n\n if (arr.length === 2) {\n let rangeValues = arr.map(date => date.join('-'))\n props.changeValue(rangeValues)\n }\n\n } else {\n setYear(+day.value[0])\n setMonth(+day.value[1] - 1)\n setDateValue(day.value)\n setShowDatePickePage(false)\n validate(day.value)\n\n props.changeValue(day.value.join('-'))\n }\n }\n\n function onClearDateValue() {\n setDateValue([])\n setDataRange([])\n\n props.changeValue('')\n validate('')\n }\n\n\n let {\n placeholder,\n showDateRangePickePage,\n showClearIcon,\n width,\n showDateTimeRangePicker,\n label\n } = props\n\n let allDays = []\n\n let rightAllDays = []\n if (showDateRangePickePage) {\n allDays = getAllDays(year, month, dataRange, showDateRangePickePage)\n rightAllDays = getAllDays((month == 11 ? year + 1 : year), (month + 1) % 12, dataRange, showDateRangePickePage)\n } else {\n allDays = getAllDays(year, month, [dateValue], showDateRangePickePage)\n }\n // console.log('allDays: ', allDays)\n\n let tenYearList = []\n for (let i = 0; i < 10; i++) {\n tenYearList[i] = beforeYear + i\n }\n\n let dateInputValue = ''\n if (showDateRangePickePage) {\n dateInputValue = dataRange.length === 2 ? `${dataRange[0].join('-')} 至 ${dataRange[1].join('-')}` : ''\n } else {\n dateInputValue = dateValue.join('-')\n }\n\n function validate(value) {\n\n // 如果没有传入validateFun进行校验,直接跳过\n if (typeof props.validateFun !== 'function' || !props.sholdCheckValidate) {\n setIsValidatePass(true)\n setValidateText('')\n return\n }\n\n let res = props.validateFun(value)\n\n // validateFun只有返回true,才会校验通过\n if (res === true) {\n setIsValidatePass(true)\n setValidateText('')\n } else {\n setIsValidatePass(false)\n setValidateText(res)\n }\n }\n\n return (\n e.stopPropagation()}\n >\n {\n !!label &&\n {label}\n }\n {\n !showDateTimeRangePicker &&\n setHideClearIcon(false)}\n onMouseLeave={() => setHideClearIcon(true)}\n >\n setShowDatePickePage(v => !v)}\n />\n {\n showClearIcon &&\n !hideClearIcon &&\n \n }\n \n }\n {!showDateTimeRangePicker && !isValidatePass &&\n
{validateText}
\n }\n {\n (showDatePickePage || props.fixedDatePickerPage) &&\n
\n
\n
\n {\n setYear(year => --year)\n setBeforeYear(beforeYear - 10)\n }}\n >\n {\n !showYearBtn &&\n !showMonthBtn &&\n {\n let sholdYearDown = month - 1 === -1\n setMonth(month => sholdYearDown ? 11 : --month)\n setYear(year => sholdYearDown ? --year : year)\n }}\n >\n }\n \n {\n showYearBtn &&\n {`${beforeYear}年-${beforeYear + 9}年`}\n }\n {\n showMonthBtn &&\n {`${year}年`}\n }\n {\n !showYearBtn &&\n !showMonthBtn &&\n <>\n {`${year}年`}\n {`${month + 1}月`}\n \n }\n \n {\n !showYearBtn &&\n !showMonthBtn &&\n !showDateRangePickePage &&\n {\n let sholdYearUp = month + 1 === 12\n setMonth(month => sholdYearUp ? 0 : ++month)\n setYear(year => sholdYearUp? ++year : year)\n }}\n >\n }\n {\n (showYearBtn || showMonthBtn || !showDateRangePickePage) &&\n {\n setYear(year => ++year)\n setBeforeYear(beforeYear + 10)\n }}\n >\n }\n
\n {\n !showYearBtn &&\n !showMonthBtn &&\n
\n \n \n \n \n \n \n \n
\n }\n {\n !showYearBtn &&\n !showMonthBtn &&\n [0,7,14,21,28,35].map(key => (\n
\n {\n allDays.slice(key,key + 7).map((day, index) => {\n let disabled = props.disabledDateFun(new Date(day.value[0],+day.value[1] - 1,day.value[2]))\n\n let dayColorClass = day.colorClass\n if (disabled) {\n dayColorClass += ` disabled`\n }\n\n return (\n \n handleClickDateItem(disabled, showDateRangePickePage, dataRange, day)}\n >{day.num}\n \n )\n })\n }\n
\n ))\n }\n {\n showYearBtn &&\n
\n {\n tenYearList.map((year, index) => (\n {\n setYear(year)\n setShowYearBtn(false)\n setShowMonthBtn(true)\n }}\n >{year}\n ))\n }\n
\n }\n {\n showMonthBtn &&\n
\n {\n [1,2,3,4,5,6,7,8,9,10,11,12].map((month, index) => (\n {\n setMonth(month - 1)\n setShowMonthBtn(false)\n }}\n >{month + '月'}\n ))\n }\n
\n }\n
\n {\n showDateRangePickePage &&\n !(showYearBtn || showMonthBtn || !showDateRangePickePage) &&\n
\n
\n {\n !showDateRangePickePage &&\n {\n setYear(year => --year)\n setBeforeYear(beforeYear - 10)\n }}\n >\n }\n {\n !showYearBtn &&\n !showMonthBtn &&\n !showDateRangePickePage &&\n {\n let sholdYearDown = month - 1 === -1\n setMonth(month => sholdYearDown ? 11 : --month)\n setYear(year => sholdYearDown ? --year : year)\n }}\n >\n }\n \n {\n !showYearBtn &&\n !showMonthBtn &&\n <>\n {`${month == 11 ? year + 1 : year}年`}\n {`${(month + 1) % 12 + 1}月`}\n \n }\n \n {\n !showYearBtn &&\n !showMonthBtn &&\n {\n let sholdYearUp = month + 1 === 12\n setMonth(month => sholdYearUp ? 0 : ++month)\n setYear(year => sholdYearUp? ++year : year)\n }}\n >\n }\n {\n !showYearBtn &&\n !showMonthBtn &&\n {\n setYear(year => ++year)\n setBeforeYear(beforeYear + 10)\n }}\n >\n }\n
\n {\n !showYearBtn &&\n !showMonthBtn &&\n
\n \n \n \n \n \n \n \n
\n }\n {\n !showYearBtn &&\n !showMonthBtn &&\n [0,7,14,21,28,35].map(key => (\n
\n {\n rightAllDays.slice(key,key + 7).map((day, index) => {\n let disabled = props.disabledDateFun(new Date(day.value[0],+day.value[1] - 1,day.value[2]))\n\n let dayColorClass = day.colorClass\n if (disabled) {\n dayColorClass += ` disabled`\n }\n\n return (\n \n handleClickDateItem(disabled, showDateRangePickePage, dataRange, day)}\n >{day.num}\n \n )\n })\n }\n
\n ))\n }\n
\n }\n
\n }\n \n )\n}\n\nDatePicker.propTypes = {\n placeholder: PropTypes.string,\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\n changeValue: PropTypes.func,\n disabledDateFun: PropTypes.func,\n showDateRangePickePage: PropTypes.bool, // 是否是选择日期范围\n showClearIcon: PropTypes.bool,\n width: PropTypes.number,\n fixedDatePickerPage: PropTypes.bool,\n showDateTimeRangePicker: PropTypes.bool,\n label: PropTypes.string,\n sholdCheckValidate: PropTypes.bool, // true: 手动触发必填项的检查\n validateFun: PropTypes.func,\n}\n\nDatePicker.defaultProps = {\n placeholder: '请选择日期',\n showDateRangePickePage: false,\n showClearIcon: true,\n fixedDatePickerPage: false,\n showDateTimeRangePicker: false,\n changeValue: _.noop,\n disabledDateFun: _.noop,\n label: '',\n sholdCheckValidate: false,\n}\n\nexport default DatePicker\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAADYklEQVRYR8WXSUwTYRiG3+//pyylBSxBDaJR0MRE44YHb/RkQmJcKR4U3BJcEu/e1CMHTx5MjCuVU2NM9OKakCguBy/GEAO4G1SQpSCUxZnP/NOFLlM6xQpzaZOZzP+877cOYYEvWuDzkUMAJoAYYMJZEM6TYUdcjgDCh3u9rJWXgwMB0k0QE2j2698BfCwRIH3DgYHKUZJtAE0IEo3v/e4+RO7NhvBvAGdZKKurGgdXgMUdBraYhxG9KJRyb+cN1w9EnkkHMXeAiLrKpvFlDmPqHoDNIHoKZgeAbQpCamJXz3V3/2xOzA0gTjmzuA1gK0AvSzSjztC1vFHWHwDYBFBHUYHc9/aK62c6J7IHsFIOelZUIOvNgwCokMTABL2UUuw0nbAIR3YAFsoZ9FxziN0xqxXBTFLeVaEhUIeLxN43KjGTqsM+QCbl8eoiz648PLIWf4xnBJSRQMuH1tIzqlTb2+lPNCntAdhRbtY+ELW5ppkdg6HhC2A6DaJBMO3+eKv4aXIYMgNkozyuC1YfCl4ydD7BwJAD2N99q/RR9jkwB+U+H8vXBcGLzDgJ0JAmuKG7tfRxulJM70Aulc/SEa0Bcqg8OemSO2IqwDwpt66CeVSeCjDPypMAwrM7voWmdLikOk+X7ZlinpoDEdvXHxlYPjYt1VTbiPjentC/Z7Ydyzq3Mf/TJuGqg8Nqgm1XE0w6xJ6UMRoByZXyhBBUNPc688edvwBoyOc1H68u+pzYtXKvPAGg0ve10JHvHlS7jJsmyt74l47FrPpPyq0cUACQrC/uafOM1jRDc3eB22thqLUrIeZCa+hudT0OJxzCQyira2ZZNRtRJAQmwKRz3NN7uWI8OrfT9vYMu55dnngAlQOqHI8DYoKEoemgkGRjBzOOAhh2sFbf1eZ6svpg8JwBVBNRiNkQdg4jgBmQAIVCpLd893u+qDyLALAzLzTSR8xFANQuH23R5n8CBYXkhp6bpQ/XHQt6QpP8hM2dz7Rf2gGIe+8kE9V+8pe8UhMyNguqmoKn2OBaJvwWDDIIHP2VQlx7f7O4Q4XF64X8tnyoTiexRICnwTa/rgjMBAGIqTym++9aiwfU+zIvJFF5OYp5+mnoY+ntt1YTrYSE0uy0qdwqPgEY0c82+w7YDHS2j/0FOnG/FkDSfMIAAAAASUVORK5CYII=\"","import {PureComponent} from 'react'\nclass AuthText extends PureComponent{\n displayText = () => {\n let code = this.props.code\n let text = \"\"\n switch (code) {\n case 5001:\n text = 您没有该表的访问权限,如需查询和使用该表,可以点击“{\n this.props.showAuthApply(true)\n }\n }>申请权限\n break\n case 5002:\n text = 该数据暂未开放,如有疑问可联系管理员(kurtgu)\n break\n case 5003:\n text = 已提交权限申请,你可点击“我的权限申请单”查看审批进展\n break\n case 5004:\n text = 无效权限点,请联系管理员(kurtgu)处理\n break\n case 5005:\n text = 存在其他审批中的数据源,请在审批完成后再提交申请\n

你可点击“我的权限申请单”查看审批进展

\n break\n default:\n text = 无效权限点,请联系管理员(kurtgu)处理\n }\n return text\n }\n render() {\n return (\n
\n {this.displayText()}\n
\n )\n }\n}\nexport default AuthText\n","import { useState, useMemo } from 'react'\nimport { createPortal } from 'react-dom'\nimport PropTypes from 'prop-types'\nimport BreadCrumbs from '@common/BreadCrumbs'\nimport Button from '@common/Button'\nimport _ from 'lodash'\nimport './index.css'\n\nfunction Steps(props) {\n const {\n showSteps,\n hideStepsFunc,\n breadMenu,\n stepMenu,\n titleWidth,\n handlePrevBtn,\n handleNextBtn\n } = props\n\n const [curIndex, setCurIndex] = useState(0) // 当前页面标记\n\n const onPrevBtn = function () {\n handlePrevBtn(curIndex, function () {\n if (curIndex === 0) return\n setCurIndex(i => i - 1)\n })\n }\n\n const onNextBtn = function () {\n handleNextBtn(curIndex, function () {\n if (curIndex === stepMenu.length - 1) return\n setCurIndex(i => i + 1)\n })\n }\n\n const curComp = useMemo(() => {\n if (_.isArray(stepMenu) && !_.isEmpty(stepMenu[curIndex])) return stepMenu[curIndex]\n }, [stepMenu, curIndex])\n\n // console.log('==============curComp: ', curComp);\n const prevBtn = _.get(curComp.find(i => !!i.prevBtn), 'prevBtn') || ''\n const nextBtn = _.get(curComp.find(i => !!i.nextBtn), 'nextBtn') || ''\n \n return createPortal((\n showSteps &&\n
\n \n\n
\n {\n _.isArray(curComp) &&\n curComp.map((item, index) => (\n
0 ? 'top-border' : ''}`}\n >\n
{ item.title }
\n
\n { item.component || null }\n
\n
\n ))\n }\n
\n\n
\n {\n !!prevBtn &&\n \n }\n {\n !!nextBtn &&\n \n }\n
\n
\n ), document.body)\n}\n\nSteps.propTypes = {\n showSteps: PropTypes.bool,\n hideStepsFunc: PropTypes.func, // 专门针对面包屑设定的,意为关闭当前步骤弹窗,回到初始页面\n handlePrevBtn: PropTypes.func,\n handleNextBtn: PropTypes.func,\n isEdit: PropTypes.bool,\n record: PropTypes.object,\n breadMenu: PropTypes.array,\n stepMenu: PropTypes.array,\n titleWidth: PropTypes.oneOfType([PropTypes.number, PropTypes.string])\n}\n\nSteps.defaultProps = {\n showSteps: false,\n hideStepsFunc: _.noop,\n handlePrevBtn: _.noop,\n handleNextBtn: _.noop,\n isEdit: false,\n record: {},\n breadMenu: [],\n stepMenu: [],\n titleWidth: 168,\n}\n\nexport default Steps","import React from 'react'\nimport _ from 'lodash'\nimport PropTypes from 'prop-types'\nimport SdwInput from '@common/Input'\nimport SdwEmpty from '@common/Empty'\nimport editImg from './img/tree_edit@2x.png'\nimport addImg from './img/tree_add@2x.png'\nimport delImg from './img/tree_del@2x.png'\nimport './index.css'\n\nclass TreeNew extends React.Component {\n\n state = {\n domainInputVal: '', // 模糊搜索值\n currentItem: '',\n expendList: [], // 存放展开的组\n allTreeGroupList: [], // 存储所有非叶子节点,用于模糊搜索展开分组使用\n }\n\n static defaultProps = {\n showFilterInput: false,\n width: 340,\n data: [],\n options: {\n children: 'children',\n label: 'label'\n },\n inputPlaceholder: '请输入'\n }\n\n componentDidMount() {\n\n // 展开所有的分组\n if (this.props.showFilterInput) {\n let curList = this.getCurList(this.props.data)\n this.setState({\n allTreeGroupList: curList\n })\n }\n }\n\n componentDidUpdate(prevPros, prevState) {\n\n // 展开所有的分组\n if (this.props.showFilterInput && !_.isEqual(prevPros.data, this.props.data)) {\n let curList = this.getCurList(this.props.data)\n this.setState({\n allTreeGroupList: curList\n })\n }\n\n let {allTreeGroupList, domainInputVal, expendList} = this.state\n\n if (prevState.domainInputVal !== this.state.domainInputVal) {\n\n if (!domainInputVal) {\n this.setState({\n expendList: []\n })\n } else {\n this.setState({\n expendList: allTreeGroupList\n })\n }\n }\n }\n\n getCurList = (data, list = []) => {\n let {options} = this.props\n\n if (Array.isArray(data) && data.length) {\n data.forEach(item => {\n if (item[options.children] && item[options.children].length) {\n list.push(item[options.label])\n\n if (item[options.children] && item[options.children].length) {\n let childList = this.getCurList(item[options.children], list)\n\n if (childList && childList.length) {\n list.push(...childList)\n }\n }\n }\n })\n return Array.from(new Set(list))\n }\n }\n\n onGroupClick = group => {\n let {expendList} = this.state\n let {options, changeValue} = this.props\n\n let curExpendList = [...expendList]\n let index = curExpendList.indexOf(group[options.label])\n if (index !== -1) {\n curExpendList.splice(index, 1)\n } else {\n curExpendList.push(group[options.label])\n }\n this.setState({\n currentItem: group,\n expendList: curExpendList\n })\n\n if (typeof changeValue === 'function') {\n changeValue(group)\n }\n }\n\n onClickButton = (type, obj) => {\n let {operateFun} = this.props\n if (typeof operateFun === 'function') {\n operateFun(type, obj)\n }\n }\n\n formatTreeDate = (list, tree_level) => {\n\n let {options} = this.props\n\n // 给每一项补充level, 给每一级设置paddingLeft使用的\n list = list.map(item => {\n item = {\n ...item,\n tree_level: tree_level\n }\n\n if (item[options.children] && item[options.children].length) {\n let index = tree_level + 1\n item[options.children] = this.formatTreeDate(item[options.children], index)\n }\n\n return item\n })\n\n return list\n }\n\n // 将叶子节点不是模糊搜索中的去除\n filterTreeData = list => {\n let record = [...list]\n\n record = record.map(item => {\n\n if (item[this.props.options.children] && item[this.props.options.children].length) {\n item[this.props.options.children] = this.filterTreeData(item[this.props.options.children]).filter(i => i)\n return item\n }\n\n if (item[this.props.options.label].indexOf(this.state.domainInputVal) > -1) {\n return item\n }\n\n return ''\n })\n\n return record\n }\n\n // 将非叶子节点且没有叶子元素的去除\n onSplice = list => {\n\n let data = [...list]\n\n // 倒序删除\n for (let j = data.length - 1; j >= 0; j--) {\n for (let i = j; i >= 0; i--) {\n let item = data[i];\n if (item && item[this.props.options.children]) {\n if (!item[this.props.options.children].length) {\n data.splice(i, 1)\n } else {\n item[this.props.options.children] = this.onSplice(item[this.props.options.children])\n }\n }\n }\n }\n\n return data\n }\n\n render() {\n\n let {\n domainInputVal,\n currentItem,\n expendList,\n } = this.state\n\n let {\n showFilterInput,\n filterInputWidth,\n emptyChildrenIsShow,\n data,\n options,\n inputPlaceholder,\n width,\n homePathId\n } = this.props\n\n let treeData = this.formatTreeDate([...data], 0)\n // 过滤tree的数据\n if (showFilterInput) {\n treeData = this.filterTreeData(treeData)\n if (!emptyChildrenIsShow) {\n treeData = this.onSplice(treeData)\n }\n }\n return (\n
\n {\n showFilterInput &&\n
\n {\n this.setState({domainInputVal: val})\n }}\n />\n
\n }\n\n
\n {\n !!treeData.length &&\n TreeItem(\n treeData,\n options,\n currentItem,\n expendList,\n homePathId,\n this.onGroupClick,\n this.onClickButton\n )\n }\n {\n !treeData.length &&\n \n }\n
\n
\n )\n }\n}\n\nTreeNew.propTypes = {\n filterInputWidth: PropTypes.number,\n showFilterInput: PropTypes.bool,\n data: PropTypes.array,\n emptyChildrenIsShow: PropTypes.bool,\n options: PropTypes.object,\n inputPlaceholder: PropTypes.string,\n changeValue: PropTypes.func,\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n homePathId: PropTypes.number,\n}\n\nexport default TreeNew\n\nfunction TreeItem(\n data,\n options,\n currentItem,\n expendList,\n homePathId,\n onGroupClick,\n onClickButton) {\n return (\n !!data.length &&\n data.map((group, index) => {\n let hasChildren = !!group[options.children] && !!group[options.children].length\n // console.log(\"group-----------------\",group)\n return (\n
\n onGroupClick(group)}\n >\n
\n {\n group.id === homePathId &&\n
\n }\n \n {group[options.label]}\n \n
\n {\n
\n {\n group.isEditIconShow &&\n {\n onClickButton('edit', group)\n e.stopPropagation()\n }}\n />\n }\n {\n group.isAddIconShow &&\n {\n onClickButton('add', group)\n e.stopPropagation()\n }}\n />\n }\n {\n group.isDelIconShow &&\n {\n onClickButton('del', group)\n e.stopPropagation()\n }}\n />\n }\n
\n }\n
\n\n {\n hasChildren &&\n expendList.includes(group[options.label]) &&\n TreeItem(\n group[options.children],\n options,\n currentItem,\n expendList,\n homePathId,\n onGroupClick,\n onClickButton)\n }\n \n )\n })\n )\n}\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAFhSURBVHgB7ZZBUoMwFIbfC7XTnfYGrDou9Qb2Fi6YUU/gEcQjeIPOuOnSG9QjuHTGTTxBcdepkPjiFFra0IQA6YZ/Q0kTvo+8NwBAnxMHocVc3i/DLGOPv4F44bMxt1nTmoCCiwwXICGkq/J1IKc2EgxaSAkOkKjjkM5DGjetbSywC5eIM5bKa/rNbSUalWAf/vV6/vA/fkvjAY2juRzOAlXw4n9LCacSmOAqn/MxZ5mc7pZDd63aAjbwPKsRJBKpKVWEfk4tgTpwar6LsxQXVOMrtQtrtRuaWPdAUzifN2jCruBWAl3CjQJdw48K+IBXCviCawV8wg8EfMNLAqeAqxRPQpGyu837/M0XvCSwDX6AJ3iFgD+4tUBXcJWBaYL2rTaipo2WN+CY1QB4/nGiEZDxJEri4jTNh7d3Pol+ngTNA8cMU4zp8FwSkEJ8I6t4Mu9tu5oLDN/BNWp9nz6b/AHMsp9F8dY2bwAAAABJRU5ErkJggg==\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAABQSURBVHgB7dUxDQAhEETRuVOAClQhD1WowAGEEhqKIdnmv4SGhh+KXQkw5NLHOjL8CkYAAQQQEB7wnRfuaL1pNW1vhv+AhWVEAAEEEAC8MAEonQ3wz6eHqAAAAABJRU5ErkJggg==\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAACjSURBVHgB7ZbBDYAgDEW/xgF0CadyCScQd3EqT24gC5iqJxO1QAkJJvYlXKDA728PBf5OIQluu9UcVwZ3FI3z1BgEUkKE7/PQmIsKEcxT/epc21mCEKED6XlkEpOFhLt72R1gOZ1I4YbvnewOqACxAK6msT2jJVABKkAFqIDsAsQzITcPcvs+tASf7gF7rDrJlExYuCPWASqod10UYDeUBgrDDuGgMe++p373AAAAAElFTkSuQmCC\"","// 连线组件\nimport PropTypes from 'prop-types'\nimport _ from 'lodash'\n\nfunction Path(props) {\n let { startP, endP } = props\n let position = { // path的4个坐标位置\n x1: 0,\n y1: 0,\n x2: 0,\n y2: 0,\n x3: 0,\n y3: 0,\n x4: 0,\n y4: 0\n }\n\n // 判断 startP, endP 的合法性\n if (\n _.isArray(startP) && _.isArray(endP) &&\n startP.length === 2 && endP.length === 2 &&\n _.isNumber(+startP[0]) && _.isNumber(+startP[1]) &&\n _.isNumber(+endP[0]) && _.isNumber(+endP[1])\n ) {\n position.x1 = +startP[0]\n position.y1 = +startP[1]\n position.x4 = +endP[0]\n position.y4 = +endP[1]\n\n if (props.isToBottom) {\n position.x2 = +startP[0]\n position.y2 = (+endP[1] + +startP[1]) / 2\n position.x3 = +endP[0]\n position.y3 = (+endP[1] + +startP[1]) / 2\n } else {\n position.x2 = (+startP[0] + +endP[0]) / 2\n position.y2 = +startP[1]\n position.x3 = (+startP[0] + +endP[0]) / 2\n position.y3 = +endP[1]\n }\n }\n\n return (\n \n \n \n \n \n \n {/* */}\n \n {/* 折线 */}\n {/* */}\n \n )\n}\n\nPath.propTypes = {\n startP: PropTypes.array, // 线段开始坐标(相对于FlowChart组件的div,取相对位置)\n endP: PropTypes.array, // 线段结束坐标\n isToBottom: PropTypes.bool\n}\n\nPath.defaultProps = {\n startP: [0, 0],\n endP: [0, 0],\n isToBottom: true\n}\n\nexport default Path","import { useState } from 'react'\nimport './index.css'\n\nfunction Tools(props) {\n\n function handleDragStart(e, color) {\n e.dataTransfer.setData(\"isCreate\", true) // 从工具栏拉出来的图标,需要新建\n e.dataTransfer.setData(\"color\", color)\n e.dataTransfer.setData(\"offsetX\", e.nativeEvent.offsetX)\n e.dataTransfer.setData(\"offsetY\", e.nativeEvent.offsetY)\n }\n\n return (\n <>\n
handleDragStart(e, 'red')}\n >\n red\n
\n
handleDragStart(e, 'green')}\n >\n green\n
\n
handleDragStart(e, 'blue')}\n >\n blue\n
\n \n )\n}\n\nexport default Tools","export const Position = {\n top: 'top',\n right: 'right',\n bottom: 'bottom',\n left: 'left'\n}\n\n/**\n * 通过div,计算其上右下左4个点的偏移量(left,top)\n * @param {Array} record div数组\n * @param {String} id path对应的div的ID\n * @param {String} position path对应的div的上右下左哪个点\n * @returns {Array} 一个点的坐标【x,y】\n */\nexport function getPosition(record, id, position) {\n let x = 0, y=0\n let curRecord = record.filter(i => i.id === id)[0]\n\n if (!curRecord) {\n return false // 表明并无此id对应的div\n }\n\n let curStyle = curRecord.style || {}\n let { left, top, width, height } = curStyle\n\n switch (position) {\n case Position.top:\n x = left + width / 2\n y = top\n break;\n\n case Position.right:\n x = left + width\n y = top + height / 2\n break;\n\n case Position.bottom:\n x = left + width / 2\n y = top + height\n break;\n\n case Position.left:\n x = left\n y = top + height / 2\n break;\n \n default:\n break;\n }\n\n return [x, y]\n}","import { useState, Fragment, useEffect, useLayoutEffect, useRef } from 'react'\nimport PropTypes from 'prop-types'\nimport Path from './Path'\nimport Tools from './Tools'\nimport _ from 'lodash'\nimport { getPosition, Position } from './util/common'\nimport './index.css'\n\nfunction FlowChart(props) {\n let { width, height, style } = props\n\n const flowRef = useRef(null)\n const [record, setRecord] = useState([]) // 存储数据\n const [pathArr, setPathArr] = useState([])\n const [prevBegin, setPrevBegin] = useState({}) // 临时存储出发点\n const [mouseP, setMouseP] = useState([]) // 时刻记录鼠标的位置\n const [showTimePath, setShowTimePath] = useState(false) // 时刻记录鼠标的位置\n\n useLayoutEffect(() => {\n // console.log('useLayoutEffect initRecord initPathArr: ', props.initRecord, props.initPathArr);\n setRecord(props.initRecord)\n setPathArr(props.initPathArr)\n }, [props.initRecord, props.initPathArr])\n\n function handleDrop(event) {\n // console.log('handleDrop: ', event)\n event.preventDefault()\n if (event.target.className === \"comp__flow-chart-wrap_body\") {\n var isCreate = event.dataTransfer.getData(\"isCreate\") // 从工具栏拖过来的需要新建,画布中的只需要移动\n var offsetX = event.dataTransfer.getData(\"offsetX\")\n var offsetY = event.dataTransfer.getData(\"offsetY\")\n let left = event.nativeEvent.offsetX - offsetX\n let top = event.nativeEvent.offsetY - offsetY\n \n // 创建一个div\n if (isCreate) {\n var color = event.dataTransfer.getData(\"color\")\n let obj = {\n id: Date.now(), // 生成唯一标识id,用于之后移动元素\n style: {\n left: left,\n top: top,\n backgroundColor: color,\n padding: 6,\n width: 60,\n height: 60\n },\n textContent: color\n }\n\n setRecord(v => [...v, obj])\n } else {\n // 移动一个div的位置\n // 更新id对应的position\n var index = event.dataTransfer.getData(\"index\")\n var ID = event.dataTransfer.getData(\"ID\")\n // 更新id对应的position\n if (!_.isEmpty(record[index]) && _.isEqual(+record[index].id, +ID)) {\n let cloneRecord = _.cloneDeep(record)\n cloneRecord[index].style.left = left\n cloneRecord[index].style.top = top\n setRecord(cloneRecord)\n }\n }\n }\n }\n\n function handleDragStart(e, obj, index) {\n e.dataTransfer.setData(\"index\", index)\n e.dataTransfer.setData(\"ID\", obj.id)\n e.dataTransfer.setData(\"offsetX\", e.nativeEvent.offsetX)\n e.dataTransfer.setData(\"offsetY\", e.nativeEvent.offsetY)\n }\n\n function handleMouseDown(id, position) {\n setPrevBegin({\n beginID: id,\n beginPosition: position\n })\n }\n\n function handleMouseUp(id, position) {\n // console.log(id, position, prevBegin);\n\n // 结束点的id不能和出发点一样(表示不同的div相连)\n if (prevBegin.beginID && id && prevBegin.beginID !== id) {\n let clonePathArr = _.cloneDeep(pathArr)\n clonePathArr.push({\n ...prevBegin,\n endID: id,\n endPosition: position\n })\n setPathArr(clonePathArr)\n setPrevBegin({})\n }\n }\n\n function handleUpate(id, value) {\n let cloneRecord = _.cloneDeep(record)\n let index = cloneRecord.findIndex(i => i.id === id)\n if (index !== -1) {\n cloneRecord[index].textContent = value\n setRecord(cloneRecord)\n }\n }\n\n return (\n
\n {\n props.showTools &&\n
\n \n
\n }\n
handleDrop(e)}\n onDragOver={e => e.preventDefault()}\n onMouseMove={e => setMouseP([e.nativeEvent.offsetX, e.nativeEvent.offsetY])}\n onMouseDown={e => {\n e.stopPropagation()\n setShowTimePath(true)\n }}\n onMouseUp={e => {\n e.stopPropagation()\n setShowTimePath(false)\n setPrevBegin({})\n }}\n >\n {\n _.isArray(record) &&\n record.length > 0 &&\n record.map((obj, index) => {\n \n return (\n
\n handleUpate(obj.id, e.target.textContent)} // 修改textContent\n id={obj.id}\n className=\"comp__flow-chart__obj-wrap-div\"\n // draggable={true} // 没有拖动\n onDragStart={e => handleDragStart(e, obj, index)}\n // title={obj.textContent}\n >{obj.textContent}
\n {\n false && // 不显示点\n // ['top', 'right', 'bottom', 'left'].map(key => (\n ['top', 'bottom'].map(key => (\n handleMouseDown(obj.id, key)} // 没有连线功能\n // onMouseUp={() => handleMouseUp(obj.id, key)}\n // onMouseMove={e => {\n // e.stopPropagation()\n // setMouseP([])\n // }}\n />\n ))\n }\n
\n )\n })\n }\n {\n _.isArray(pathArr) &&\n pathArr.length > 0 &&\n pathArr.map(path => {\n let startP = []\n let endP = []\n if (!_.isEmpty(path)) {\n let { beginID, beginPosition, endID, endPosition } = path\n startP = getPosition(record, beginID, beginPosition)\n endP = getPosition(record, endID, endPosition)\n } \n // console.log('********** ', startP, endP, path);\n\n return (\n \n {\n _.isArray(startP) &&\n startP.length > 0 &&\n _.isArray(endP) &&\n endP.length > 0 &&\n \n }\n \n )\n })\n }\n {\n // 一条描绘鼠标即将连接的path线条\n showTimePath &&\n !_.isEmpty(prevBegin) &&\n _.isArray(mouseP) &&\n mouseP.length > 0 &&\n \n }\n
\n \n )\n}\n\nFlowChart.propTypes = {\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n style: PropTypes.object,\n showTools: PropTypes.bool,\n initRecord: PropTypes.array,\n initPathArr: PropTypes.array,\n}\n\nFlowChart.defaultProps = {\n width: 800,\n height: 600,\n style: {},\n showTools: false,\n initRecord: [],\n initPathArr: [],\n}\n\nexport default FlowChart","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAADH0lEQVRYR+2Xy08TURTGvzPPlhZoE0iIQoDIyggujCALscZEV7pjSZRI3Pk3EP4GtxBIWLhwZ0zURJOywuBG0aWRZ9Tgg/IotDN35phDixRh+iAUYuIsZ+bc+7vfPfec7xJO+aFTnh8BAEwYDvpWIfIIGCAOijoEgPPvgoMqQyg+3qEKXHrANb+8VGPEt/3KJtv/d1rLak3rsZXpJ7RdhgJCSny+n61tOzUG0C0GHAD6ESE8AiyAX+rx2NCnR5QFcnMUjrenwDBrGCG/dSDVrgNTzGgB8J3BikCVQsgkEtNAhCVlILE4HvucSLCRTMIrhDgAcGFwq2XTdaYJMEyN7hiavqiRZmrKy5ajhNJJs+Bm0kCbUvSCADcasnpnR2uWsbNISUp5ckoEAcwAzHUhu1sCm/s5XBdJ1xsel8yJPQCzzVXquWguC7EsfWEjq2rqkVmZnWxK7y4mEEACI6Z1uWEu/HWhee0xA9cBdsrcDmaCSYx4fqKfBGQYsAl47Rv1g/MTlJGcKAag1ZLeuWpqhu6otwQ+s5sTQEFc4L4wayBXPvsgg8AmgEYClj1C38JkbE62pCSADLDO6h1BEiEnZZrdUDlHVI6h75BWaxtbjuO1uj4/ZUBFTav343jNUtkAG+x9YLC3mxO5ZKKS+bAjTv7frqGt5vVMdkbUi5pW9xEA4JPNV+bG4gs7x+kaygJITEFLJkm1319t5Sy9EaYjAxQGVqpA/njP/Af4r8C/pUDYMC4K8bZS7xnwT/oUkG7qnQLguVKIwCcJIO3YMgzjpgC4Sr2SRhQ17Z7dCla1OvC3ISEgy0CzGAu2+KpUwqOU4tKFKG+XOh6y7a2mRgssmZiGswLg69w3PxGfr04pLmirvf0c/hJaayroYs8Y5NaFzJ49Z3PczegPQN5Gy71ghHzpYpsZZ5oBy9TodiXtWIaUlhwhM1O6He8zFkyJBHTpYh13U+d8D0nJg8oMSeGAYpDIKG5IDjibnIVuu8chTa2NM3DjOGx6sCUrYnm7Br5FNiy7oRwXVMw5y3bUOtkfh5vSYG9X1atambfj6l1WfwP96/Q/3PYNjgAAAABJRU5ErkJggg==\"","import React, { useState } from 'react'\nimport copyToClipboard from '@utils/copyText'\n\nimport USERIMG from './img/icon_12_copy@2x.png'\nimport './index.css'\n\nexport default props => {\n\n let [isCopy, setIsCopy] = useState(false)\n let [isShowTip, setIsShowTip] = useState(false)\n\n function handleCopy () {\n\n !!props.copyText && copyToClipboard(props.copyText)\n setIsCopy(true)\n }\n\n return (\n
\n handleCopy()}\n onMouseLeave={() => {\n setIsCopy(false)\n setIsShowTip(false)\n }}\n onMouseEnter={() => setIsShowTip(true)}\n >\n {\n isShowTip &&
\n {isCopy ? '复制成功' : !!props.copyTip ? props.copyTip : '点击复制'}\n
\n }\n
\n )\n}\n","export default function copyToClipboard(value) {\n const input = document.createElement('input')\n input.style.position = 'absolute'\n input.style.left = '10000px'\n input.style.bottom = '10000px'\n input.value = value\n document.body.append(input)\n input.select()\n document.execCommand('copy')\n input.parentNode.removeChild(input)\n}\n","export default __webpack_public_path__ + \"static/media/auth_technological.ae2b33f7.svg\";","import {PureComponent} from \"react\"\nimport \"./authApply.css\"\nimport SdwInput from '@common/Input'\nimport Radiobox from '@common/Radiobox'\nimport _ from 'lodash'\nimport Button from '@common/Button'\nimport authTechnological from \"../img/auth_technological.svg\"\nimport { applyTableAuth } from '@services/metaData'\nimport { commonApi } from '@utils/request'\nimport Message from '@common/Message'\nimport { selectTableList } from '@api/midTable'\nimport SdwMessage from '@common/Message'\n\nclass AuthApply extends PureComponent{\n state = {\n curDbData:{\n applyTimeValue:3,\n applyReason:\"\",\n },\n applyUser:this.props.loginName,\n sholdCheckValidate:false,\n }\n\n updateCurDbData = (key, val) => {\n let record = _.cloneDeep(this.state.curDbData)\n record[key] = val\n this.setState({ curDbData: record })\n }\n submitApplyAuth = () => {\n let params = {\n id:this.props.id,\n days:this.state.curDbData.applyTimeValue,\n reason:this.state.curDbData.applyReason,\n }\n if (params.reason == \"\") {\n this.setState({\n sholdCheckValidate:true\n })\n return\n }\n applyTableAuth(params).then(res => {\n const code = _.get(res, 'data.code')\n if (code === 0) {\n Message.success('提交申请成功')\n setTimeout(()=>{\n console.log(\"====睡1秒\")\n }, 1000)\n console.log(\"=====1111\")\n this.props.showAuthApply(false)\n } else {\n const msg = _.get(res, 'data.msg') || '接口异常'\n Message.error('提交申请失败 ' + msg)\n }\n }).catch(err => Message.error('提交申请失败 ' + err))\n }\n render() {\n let {sholdCheckValidate} = this.state\n console.log(\"====11111\")\n const applyTime = [{ text: '3天',value: 3 },{text: '7天',value: 7}]\n let { applyUser,curDbData } = this.state\n return (\n
\n
\n 权限申请\n
\n
\n
\n
\n
\n 申请人\n \n
\n
\n 申请时长\n this.updateCurDbData(\"applyTimeValue\", val)}\n />\n
\n
\n 申请原因\n this.updateCurDbData('applyReason', val)}\n sholdCheckValidate={sholdCheckValidate}\n validateFun={value => !!value ? true : '申请原因不能为空'}\n />\n
\n
\n \n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n )\n }\n}\n\nexport default AuthApply\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAE2UlEQVRYR6WXXYhUZRjHf897dv1aTC8iCSlU8CLWq4hqZra1pZAQNRB2oy5mRivs0y4Uos+ZrSzCJLIPTNCdkazYhULs4yJjs113jQq7UAgE3ZsMC0oxtnR3zhvvOeedPefMObMjnqvhzPs+7//5P//n/7xHaPXRWhgaUt7yvr5a4rbBQcd739vrIqJbCS2tLEKXFEOdEjl4eLgNJtr8/cum6emZrscyQHpPaaTfnS1+cwAma8riBTJBb7y0irb21Wj3XrQsR7tLvANEnUf0WUQdYXrqKL8vPOmBNcAp62ZsNAdQKin6+11GK50IL6D1/cACwNAb32vfTSJyCM0OuoqnsDFSqEgHYDI2WYwfeIxabdfMwVID7WthBkRQb3FBGx2YuJM4zjYy+T0eeym6SQZgUY9VXsfVzwUZm3qa9fbwtPKadQaQWSco5w2y+efTmGgEYOpman7swDZ07S3AHtyaYGdgGRA+EHG2k8vv8jQRE2Y0qF0wsv8ORL4H2mNU2/AmcFzhfsbRx7biFFp3c9fmH+IgZjZ4ijchRHOsehjtrgNMv/u9Hc0siQ17WPw/P4aoL8gV1hM+J4LYCuVopRtHHw3oCwvN/LZK/xOR3Wj5Ge224Ug36Mdx6UjokLAhraZr00hYlCEGgvqMV0vU3DLINOjAaLz0DeUKkRMovZHMpolINuP7b6UmnwM319fWWQtiOapMptAfLkNMA1oYq36L1j2xIEHm8g9KuskWTjBcCoODnv5pRqrrUO5hj6foY8EPky3cEzamKICTg3O4OHkSrVfGqAy0IPvoKj6S2NfWNceWH0lNQOQ0ixasYlXfFYvPB2A2G/GNDc5HT55D68VRAAGF4jxDLr87FYAn4Mo7aL01JmCrnb9RHUvJ9v1rz2xk4MLkr6CXJwJQTols/pWmAEYrVdD5RADCGRZ13NLIQL27S4qxFSNoNxvTgF9D+JFzHRlv3NqW9RgMBPzTx9fz35VfQC+NlTDYr0bJnVkdNqPGLhit7gR3e4IH+DQ6zotk8jvqh0b9Yy/afbSxCwI/EdlFrrg9uQuMqj0lD9yH8HWCBds6XkaxB0e9yu35vzwmRg/chHLfRPNAgnOGDWoNXZu+SfGBQIind8/l/MLvgDtTnNC21AWEU2ja0boTPBOypQo3oXXT4yy5dDcrt16ui77Bu20tRysbQB9qMvfttIsfFJ8HfvYiQo11dBe/TJ8FNpQdxeMD71PjCWAqNJTiM8HSmzKibfuqD8gVnpx9GoY94fRXczn/xyDoDSmlaLC72ItgCMmnXLyhyNq1EeqjRhQPZY3p+EfXUZseQus1CbOhCQA7R9RnLJ7/IJ29hkV/0sae9EtGXQ/7FqLUQVzWt8iEn7lSn8D8h33Xa7yINGegbkx+Zyw7OzBv4jd1ENyNTZiwlxQHRZXMxGbKQPlabsVhlxsemEe72gfuQylMBJnLXuZcforbtkw1y7w1BsJMlMviZTS+Yj+uWwhAWPWb/ndQ8h7Z4tPeBXSWzK8OQMTvP2znyrx3cd0tAQjzr6n5TjL5Z/3AwcfMbH2ScIlsvsV+H5o7/szYNep+jVzxJc9ir+K70GuMFkBGl4Q/t8Yqb+PKJboKL8cvm63GvXoAdV2EWqtJm80G5BoABNf4uppa+xyPA/ofhH4/P6lUHokAAAAASUVORK5CYII=\"","import SdwSelect from '@common/Select'\nimport SdwInput from '@common/Input'\nimport './style/configRule.css'\n\nexport default props => {\n\n return (\n
\n {\n if (typeof props.changeConfigRule !== 'function') return\n props.changeConfigRule(props.index + 1, 'queue', val)\n }}\n />\n \n {\n if (typeof props.changeConfigRule !== 'function') return\n props.changeConfigRule(props.index + 1, 'method_name', val)\n }}\n />\n \n {\n if (typeof props.changeConfigRule !== 'function') return\n props.changeConfigRule(props.index + 1, 'method_param', val)\n }}\n />\n \n {\n if (typeof props.delConfigRule !== 'function') return\n props.delConfigRule(props.index)\n }}\n />\n
\n )\n}","function __canvasWM({\n // 使用 ES6 的函数默认值方式设置参数的默认取值\n // 具体参见 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Functions/Default_parameters\n container = document.body,\n width = '300px',\n height = '200px',\n textAlign = 'center',\n textBaseline = 'middle',\n font = \"20px Microsoft Yahei\",\n fillStyle = 'rgba(38,38,38, 0.05)',\n content = '请勿外传',\n rotate = '30',\n zIndex = 100000\n } = {}) {\n const args = arguments[0];\n const canvas = document.createElement('canvas');\n\n canvas.setAttribute('width', width);\n canvas.setAttribute('height', height);\n const ctx = canvas.getContext(\"2d\");\n\n ctx.textAlign = textAlign;\n ctx.textBaseline = textBaseline;\n ctx.font = font;\n ctx.fillStyle = fillStyle;\n ctx.rotate(Math.PI / 180 * rotate);\n ctx.fillText(content, parseFloat(width) / 2, parseFloat(height) / 2);\n\n const base64Url = canvas.toDataURL();\n const __wm = document.querySelector('.__wm');\n\n const watermarkDiv = __wm || document.createElement(\"div\");\n const styleStr = `\n position:absolute;\n top:0;\n left:0;\n width:100%;\n height:100%;\n z-index:${zIndex};\n pointer-events:none;\n background-repeat:repeat;\n background-image:url('${base64Url}')`;\n\n watermarkDiv.setAttribute('style', styleStr);\n watermarkDiv.classList.add('__wm');\n\n if (!__wm) {\n container.style.position = 'relative';\n container.insertBefore(watermarkDiv, container.firstChild);\n }\n\n const MutationObserver = window.MutationObserver || window.WebKitMutationObserver;\n if (MutationObserver) {\n let mo = new MutationObserver(function () {\n const __wm = document.querySelector('.__wm');\n // 只在__wm元素变动才重新调用 __canvasWM\n if ((__wm && __wm.getAttribute('style') !== styleStr) || !__wm) {\n // 避免一直触发\n mo.disconnect();\n mo = null;\n __canvasWM(JSON.parse(JSON.stringify(args)));\n }\n });\n\n mo.observe(container, {\n attributes: true,\n subtree: true,\n childList: true\n })\n }\n\n}\nif (typeof module != 'undefined' && module.exports) { //CMD\n module.exports = __canvasWM;\n} else {\n window.__canvasWM = __canvasWM;\n}\n\nexport default __canvasWM\n","var map = {\n\t\"./DataCollectRouter.js\": 738,\n\t\"./DataGasStationRouter.js\": 740,\n\t\"./DataMachRouter.js\": 737,\n\t\"./DataMarketRouter.js\": 741,\n\t\"./LabelProcessRouter.js\": 742,\n\t\"./SmartOperationRouter.js\": 739\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 595;","var map = {\n\t\"./apiIndexModel.js\": 723,\n\t\"./apiModel.js\": 724,\n\t\"./applicationModel.js\": 725,\n\t\"./countModel.js\": 726,\n\t\"./dataAccessModel.js\": 727,\n\t\"./databaseModel.js\": 728,\n\t\"./keyIndicatorAllocationModel.js\": 729,\n\t\"./labelManagementModel.js\": 730,\n\t\"./layoutModel.js\": 731,\n\t\"./midTableViewModel.js\": 732,\n\t\"./pageModel.js\": 733,\n\t\"./topicModel.js\": 734,\n\t\"./userModel.js\": 735\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 722;","import produce from 'immer'\n\nconst state = {\n allSelectedIndicator: [], // 所有的已选择指标---用于表二显示使用\n curShowSelectedTarget: [], // 当前指标tab展示的一个指标的所有数据\n // 已选指标---单个指标的已选指标---用与表一比较/显示使用\n oriAllSelectedTarget: [],\n comfirmVisible: false,\n currentClickTreeNode: {},\n curClickTreeValue: {},\n targetTime: [],\n targetDimension: [],\n apiTemplateClickTreeValue: {},\n filterStr: \"\",\n currentData:{}, //账号编辑页,点击编辑\n indexDetailIsEdit:true //是否重新进入了indexDetail页面\n}\n\nconst updateAllSelectedIndicator = produce((state, payload) => {\n state.allSelectedIndicator = payload\n})\n\nconst updateCurShowSelectedTarget = produce((state, payload) => {\n state.curShowSelectedTarget = payload\n})\n\nconst updateOriAllSelectedTarget = produce((state, payload) => {\n state.oriAllSelectedTarget = payload\n})\n\nconst changeComfirmVisible = produce((state, payload) => {\n state.comfirmVisible = payload\n})\n\nconst updateCurrentClickTreeNode = produce((state, payload) => {\n state.currentClickTreeNode = payload\n})\n\nconst updateCurClickTreeValue = produce((state, payload) => {\n state.curClickTreeValue = payload\n})\n\nconst updateApiTemplateClickTreeValue = produce((state, payload) => {\n state.apiTemplateClickTreeValue = payload\n})\nconst updateFilterStr = produce((state, payload) => {\n state.filterStr = payload\n})\n\nconst updateTargetTime = produce((state, payload) => {\n state.targetTime = payload\n})\n\nconst updateTargetDimension = produce((state, payload) => {\n state.targetDimension = payload\n})\nconst updateCurrentData = produce((state, payload) => {\n state.currentData = payload\n})\nconst updateIndexDetailIsEdit = produce((state, payload) => {\n state.indexDetailIsEdit = payload\n})\n\nconst reducers = {\n updateAllSelectedIndicator,\n updateCurShowSelectedTarget,\n updateOriAllSelectedTarget,\n changeComfirmVisible,\n updateCurrentClickTreeNode,\n updateCurClickTreeValue,\n updateApiTemplateClickTreeValue,\n updateFilterStr,\n updateTargetTime,\n updateTargetDimension,\n updateCurrentData,\n updateIndexDetailIsEdit,\n}\n\nexport default { state, reducers }\n","import produce from 'immer'\n\nconst state = {\n pageApiTargets: [], // 点击账号专区API 所有的已选择指标---用于表二显示使用\n curClickTreeValue: {}, //点击的专区API\n currentData:{}, //点击指标API列表编辑的item\n previewData: {\n data:[],\n header:[],\n }, //调用测试table\n}\n\nconst updatePageApiTargets = produce((state, payload) => {\n state.pageApiTargets = payload\n})\nconst updateCurClickTreeValue = produce((state, payload) => {\n state.curClickTreeValue = payload\n})\nconst updateCurrentData = produce((state, payload) => {\n state.currentData = payload\n})\n\nconst updatePreviewData = produce((state, payload) => {\n state.previewData = payload\n})\n\nconst reducers = {\n updatePageApiTargets,\n updateCurClickTreeValue,\n updatePreviewData,\n updateCurrentData,\n}\n\nexport default { state, reducers }\n","import produce from 'immer'\n\nconst state = {\n allSelectedIndicator: [], // 所有的已选择指标---用于表二显示使用\n curShowSelectedTarget: [], // 当前指标tab展示的一个指标的所有数据\n\n // 已选指标---单个指标的已选指标---用与表一比较/显示使用\n oriAllSelectedTarget: [],\n comfirmVisible: false,\n currentClickTreeNode: {},\n curClickTreeValue: {},\n targetTime: [],\n targetDimension: [],\n}\n\nconst updateAllSelectedIndicator = produce((state, payload) => {\n state.allSelectedIndicator = payload\n})\n\nconst updateCurShowSelectedTarget = produce((state, payload) => {\n state.curShowSelectedTarget = payload\n})\n\nconst updateOriAllSelectedTarget = produce((state, payload) => {\n state.oriAllSelectedTarget = payload\n})\n\nconst changeComfirmVisible = produce((state, payload) => {\n state.comfirmVisible = payload\n})\n\nconst updateCurrentClickTreeNode = produce((state, payload) => {\n state.currentClickTreeNode = payload\n})\n\nconst updateCurClickTreeValue = produce((state, payload) => {\n state.curClickTreeValue = payload\n})\n\nconst updateTargetTime = produce((state, payload) => {\n state.targetTime = payload\n})\n\nconst updateTargetDimension = produce((state, payload) => {\n state.targetDimension = payload\n})\n\nconst reducers = {\n updateAllSelectedIndicator,\n updateCurShowSelectedTarget,\n updateOriAllSelectedTarget,\n changeComfirmVisible,\n updateCurrentClickTreeNode,\n updateCurClickTreeValue,\n updateTargetTime,\n updateTargetDimension,\n}\n\nexport default { state, reducers }\n","const count = {\n state: 0, // initial state\n reducers: {\n // handle state changes with pure functions\n increment(state, payload) {\n // console.log(state + payload)\n return state + payload\n },\n decrease(state, payload) {\n return state - payload\n },\n },\n effects: dispatch => ({\n // handle state changes with impure functions.\n // use async/await for async actions\n async incrementAsync(payload, rootState) {\n await new Promise(resolve => setTimeout(resolve, 1000))\n dispatch.count.increment(payload)\n },\n async decreaseAsync(payload, rootState) {\n await new Promise(resolve => setTimeout(resolve, 1000))\n dispatch.count.increment(payload)\n },\n }),\n}\n\nexport default count\n","import produce from 'immer'\n\nconst state = {\n pageMap: {\n main: 'main',\n logSecondPage: 'log-second-page'\n },\n formData: {}, // 数据接入--日志,表单\n tableData: [], // 数据接入--日志,table\n currentPage: 'main', // 数据接入--日志,当前主界面显示内容区\n}\n\nconst updateFormData = produce((state, payload) => {\n state.formData = payload\n})\n\nconst updateTableData = produce((state, payload) => {\n state.tableData = payload\n})\n\nconst updateCurrentPage = produce((state, payload) => {\n state.currentPage = payload\n})\n\nconst reducers = {\n updateFormData,\n updateTableData,\n updateCurrentPage\n}\n\nexport default { state, reducers }\n","// 元数据管理相关 redux\nimport produce from 'immer'\n\nconst state = {\n databaseInfo: {},\n publicCfgInfo: {}\n}\n\nconst updateDatabaseInfo = produce((state, payload) => {\n state.databaseInfo = payload\n})\n\nconst updatePublicCfgInfo = produce((state, payload) => {\n state.publicCfgInfo = payload\n})\n\nconst reducers = {\n updateDatabaseInfo,\n updatePublicCfgInfo\n}\n\nexport default { state, reducers }\n","import produce from \"immer\";\n\nconst state = {\n basicConfiguration: {},\n groupingConfiguration: {},\n staffing: {},\n formData: {\n group_name: \"\",\n remark: \"\",\n two_group: \"\",\n three_group: \"\",\n relate_module: \"\",\n enabled: 1,\n visible_list: [],\n focused_list: [],\n subscribe_info_dict: {\n real_time_change: [],\n change_day: [],\n once_day: [],\n change_week: [],\n once_week: [],\n change_month: [],\n once_month: []\n },\n },\n}\n\nconst updateBasicConfiguration = produce((state, payload) => {\n state.basicConfiguration = payload\n})\n\nconst updateGroupingConfiguration = produce((state, payload) => {\n state.groupingConfiguration = payload\n})\n\nconst updateStaffing = produce((state, payload) => {\n state.staffing = payload\n})\n\nconst updateFormData = produce((state, payload) => {\n state.formData = payload\n})\n\nconst reducers = {\n updateBasicConfiguration,\n updateGroupingConfiguration,\n updateStaffing,\n updateFormData,\n}\n\nexport default { state, reducers }\n","import produce from 'immer'\n\nconst state = {\n labelRuleConfig: {}, // 标签规则配置项\n labelRuleConfigID: '', // 标签规则配置id\n example: '', // 标签规则配置--关联日志--example\n}\n\nconst updateLabelRuleConfig = produce((state, payload) => {\n state.labelRuleConfig = payload\n})\n\nconst updateLabelRuleConfigID = produce((state, payload) => {\n state.labelRuleConfigID = payload\n})\n\nconst updateExample = produce((state, payload) => {\n state.example = payload\n})\n\nconst reducers = {\n updateLabelRuleConfig,\n updateLabelRuleConfigID,\n updateExample\n}\n\nexport default { state, reducers }\n","// { url, title, icon, component, children }\n// url\n// children\nconst layout = {\n // initial state\n state: {\n menus: {},\n },\n reducers: {\n increment(state, payload) {\n // console.log(state + payload)\n return state + payload\n },\n decrease(state, payload) {\n return state - payload\n },\n },\n effects: dispatch => ({\n // handle state changes with impure functions.\n // use async/await for async actions\n async incrementAsync(payload, rootState) {\n await new Promise(resolve => setTimeout(resolve, 1000))\n dispatch.count.increment(payload)\n },\n async decreaseAsync(payload, rootState) {\n await new Promise(resolve => setTimeout(resolve, 1000))\n dispatch.count.increment(payload)\n },\n }),\n}\n\nexport default layout\n","import produce from 'immer'\nimport { getDetailTreeInfo } from '@api/midTable'\n\nconst state = {\n tableConf: [], // 节点\n physicsTableList: {}, // 物理表列表\n linkConf: [], // 连线的列表\n treeInfo: {\n tree:{},\n list:[],\n }, // 节点的树结构\n detailInfo: {}, // 节点的列表结构\n stepList: {}, // 加工步骤总览\n currentSource:{}, //当前编辑的数据源 为空则为添加数据源\n cfgData:{}, //通用配置\n}\n\nconst updateTableConf = produce((state, payload) => {\n state.tableConf = payload\n})\nconst updateLinkConf = produce((state, payload) => {\n state.linkConf = payload\n})\n\nconst updatePhysicsTableList = produce((state, payload) => {\n state.physicsTableList = payload\n})\n\nconst updateTreeInfo = produce((state, payload) => {\n state.treeInfo = payload\n})\nconst updateDetailInfo = produce((state, payload) => {\n state.detailInfo = payload\n})\nconst updateCurrentSource = produce((state, payload) => {\n state.currentSource = payload\n})\n\n\nconst updateStepList = produce((state, payload) => {\n state.stepList = payload\n})\n\nconst updateCfgData = produce((state, payload) => {\n state.cfgData = payload\n})\n\nconst reducers = {\n updateTableConf,\n updatePhysicsTableList,\n updateLinkConf,\n updateTreeInfo,\n updateDetailInfo,\n updateStepList,\n updateCurrentSource,\n updateCfgData,\n}\n\nexport default { state, reducers }\n","import produce from 'immer'\n\nconst state = {\n pageInfo: '', // 储存当前页码\n tabsInfo: '', // 储存当前tab的位置\n}\n\nconst updatePageInfo = produce((state, payload) => {\n state.pageInfo = payload\n})\n\nconst updateTabsInfo = produce((state, payload) => {\n state.tabsInfo = payload\n})\n\nconst reducers = {\n updatePageInfo,\n updateTabsInfo\n}\n\nexport default { state, reducers }","import produce from 'immer'\n\nconst state = {\n topicInfo: {}, // 存放主题域\n topic: [], // 字段与接口对应: 主题域\n business: [], // 字段与接口对应: 业务\n standardType: [], // 字段与接口对应: 类型\n}\n\nconst updateTopicInfo = produce((state, payload) => {\n state.topicInfo = payload\n})\n\nconst updateTopic = produce((state, payload) => {\n state.topic = payload\n})\n\nconst updateBusiness = produce((state, payload) => {\n state.business = payload\n})\n\nconst updateStandardType = produce((state, payload) => {\n state.standardType = payload\n})\n\nconst reducers = {\n updateTopicInfo,\n updateTopic,\n updateBusiness,\n updateStandardType,\n}\n\nexport default { state, reducers }\n","import produce from 'immer'\n\nconst state = {\n userInfo: {}, // initial state\n staffUserList: [], // 部门所有的人员名单\n}\n\nconst updateUserInfo = produce((state, payload) => {\n state.userInfo = payload\n})\n\nconst updateStaffUserList = produce((state, payload) => {\n state.staffUserList = payload\n})\n\nconst reducers = {\n updateUserInfo,\n updateStaffUserList\n}\n\nexport default { state, reducers }\n","import React from 'react'\nimport _ from 'lodash'\nimport './index.css'\n\n// id:指标ID\n// target_name:指标名称\n// target_name_cn:指标中文\n// target_type:指标类型(1:普通指标;2:复合指标;3:个性指标;4:衍生指标)\n\nconst TYPE_MAP = {\n one: 1,\n two: 2,\n three: 3,\n four: 4\n}\n\nconst TYPE_MAP_TEXT = {\n [TYPE_MAP.one]: '普通指标',\n [TYPE_MAP.two]: '复合指标',\n [TYPE_MAP.three]: '个性指标',\n [TYPE_MAP.four]: '衍生指标'\n}\n\nexport default function ConfirmWin(props) {\n let cloneArr = []\n let typeList = []\n let objByID = []\n if (_.isArray(props.confirmData)) {\n cloneArr = _.cloneDeep(props.confirmData)\n objByID = _.groupBy(cloneArr, 'target_type')\n typeList = _.keys(objByID)\n } else if (_.isString(props.confirmData)) {\n cloneArr = props.confirmData\n }\n\n\n\n return (\n
\n {\n !props.hideTitle &&\n { props.title }\n }\n\n
\n {\n _.isString(cloneArr) ?
\n {cloneArr}\n
:\n (\n !!typeList.length &&\n typeList.map(type => (\n <>\n
{ TYPE_MAP_TEXT[type] }
\n {\n _.isArray(objByID[type]) &&\n objByID[type].map(i => (\n
{`${i.id} ${i.target_name} (${i.target_name_cn})`}
\n ))\n }\n \n ))\n )\n }\n
\n
\n )\n}\n","import React, { PureComponent } from 'react'\nimport SdwDrawer from '@common/Drawer'\nimport SdwInput from '@common/Input'\nimport SdwSelect from '@common/Select'\nimport SdwCascader from '@common/Cascader'\nimport SdwSwitch from '@common/Switch'\nimport SdwMessage from '@common/Message'\nimport SdwDialog from '@common/Dialog'\nimport ConfirmWin from '@components/ConfirmWin'\nimport { getTablecfgFields, storeOrUpdateAtomTarget, getChildTarget } from '@services/atom'\nimport 'element-theme-default'\nimport './style/EditData.css'\n\nclass EditData extends PureComponent {\n\n state = {\n id: \"\",\n target_name_ch: \"\",\n target_name: \"\",\n topicBusiness: {},\n related_table_id: \"\",\n metric_field: \"\",\n time_field: \"\",\n metric_type: \"\",\n calculation: \"\",\n comments: \"\",\n target_type: 1,\n is_same_dim: 0,\n enable: 1,\n\n sholdCheckValidate: false,\n tableFields: [],\n showConfirmWin: false,\n confirmData: []\n }\n\n componentDidMount () {\n this.initData()\n }\n\n componentDidUpdate (prevProps, prevState) {\n\n if (prevProps.record.id !== this.props.record.id) {\n this.initData()\n }\n\n if (prevProps.record.related_table_id !== this.props.record.related_table_id) {\n this.getTablecfgFields(this.props.record.related_table_id)\n }\n }\n\n initData = () => {\n this.setState({\n id: this.props.record.id,\n target_name_ch: this.props.record.target_name_ch,\n target_name: this.props.record.target_name,\n topicBusiness: this.props.record.topicBusiness || {},\n related_table_id: this.props.record.related_table_id,\n metric_field: this.props.record.metric_field,\n time_field: this.props.record.time_field,\n metric_type: this.props.record.metric_type,\n calculation: this.props.record.calculation,\n comments: this.props.record.comments,\n enable: this.props.record.enable,\n })\n }\n\n validateFun = (curValue, label = '') => {\n if (typeof curValue != 'object' && (typeof curValue === 'number' || !!curValue.trim())) {\n return true\n }\n if (label == \"主题域/业务\" && curValue.ids && curValue.ids.length) {\n return true\n }\n return `${label}不能为空`\n }\n\n // 获取指定的表的字段\n getTablecfgFields = (related_table_id) => {\n this.setState({related_table_id: related_table_id})\n let that = this\n let parame = {}\n parame.id = related_table_id\n getTablecfgFields(parame).then(res => {\n let tableFields = res.data.data || []\n that.setState({tableFields: tableFields})\n })\n }\n\n handleSureClick = () => {\n let { id } = this.state\n\n // 新增\n if (!id) {\n this.onStoreOrUpdateAtomTarget()\n return\n }\n\n // 1、弹窗二次确认(只有编辑才需要)\n getChildTarget({id}).then((res) => {\n\n if (res && res.data && res.data.code === 0) {\n // 2、确认后才编辑数据\n let list = Array.isArray(res.data.data) ? res.data.data : []\n\n // 这里list没有长度:表明没有关联的指标,不用弹出确认框\n if (!list.length) {\n this.onStoreOrUpdateAtomTarget()\n return\n }\n\n this.setState({ confirmData: list, showConfirmWin: true })\n }\n })\n }\n\n onStoreOrUpdateAtomTarget = () => {\n let {\n id,\n target_name_ch,\n target_name,\n topicBusiness,\n related_table_id,\n metric_field,\n time_field,\n metric_type,\n calculation,\n comments,\n target_type,\n is_same_dim,\n enable\n } = this.state\n\n let isValidatePass =\n (typeof related_table_id === 'number' || (!!related_table_id)) &&\n typeof topicBusiness === 'object' &&\n !!target_name_ch &&\n !!target_name &&\n !!metric_field &&\n !!time_field &&\n !!metric_type\n\n if (!isValidatePass) {\n // 手动触发必填项的检查\n this.setState({\n sholdCheckValidate: true\n })\n return\n }\n\n let dataid = this.props.record.id || 0\n\n let params = { id: dataid, field: {}}\n\n let comitFieldData = {\n target_name_ch,\n target_name,\n topicBusiness,\n related_table_id,\n metric_field,\n time_field,\n metric_type,\n calculation,\n comments,\n target_type,\n is_same_dim,\n enable\n }\n\n let formData = new FormData()\n for (let i in comitFieldData) {\n let val = comitFieldData[i]\n if (i === 'id') {\n continue\n }\n if (i === 'topicBusiness') {\n params.field['topic'] = val[\"ids\"][0] || ''\n params.field['service'] = val[\"ids\"][1] || ''\n continue\n }\n params.field[i] = val\n }\n\n for (let i in params) {\n formData.append(i, params[i])\n }\n\n // 编辑数据\n storeOrUpdateAtomTarget(params, (res) => {\n\n if (res && res.data && res.data.code === 0) {\n let msg = id === 0 ? '新建成功' : '编辑成功'\n SdwMessage.success(msg)\n this.setState({ showConfirmWin: false })\n // 告诉父级点击了确定按钮\n this.props.onSureClick()\n } else {\n SdwMessage.error(res.data.msg);\n }\n })\n }\n\n enableStateChange = (val) => {\n if(val) {\n this.setState({enable: 1})\n }else {\n this.setState({enable: 0})\n }\n }\n\n render () {\n let {\n target_name_ch,\n target_name,\n topicBusiness,\n related_table_id,\n metric_field,\n time_field,\n metric_type,\n calculation,\n comments,\n enable,\n\n sholdCheckValidate,\n showConfirmWin,\n confirmData\n } = this.state\n\n let width = this.props.record.width || 500\n\n // 主题列表渲染成组件需要的数据\n let topicData = this.props.topicData.map(i => {\n return {\n id: i.value,\n text: i.label,\n children: i.children && i.children.map(si => { return {id:si.value, text:si.label} })\n }\n })\n\n // 来源表\n let tableList = this.props.tableList.map(i => {\n return {\n id: i.id+'',\n text: i.data_set_chinese + \"(\" + i.database_name + \".\" + i.table_name + \")\"\n }\n })\n\n // 度量字段\n let tableFields = this.state.tableFields.map(i => {\n return {\n id: i.field_name,\n text: i.field_name_ch + '(' + i.field_name + ')'\n }\n })\n\n // 时间字段\n let tableTimeFields = []\n for(let si=0; si {\n return {\n id: i.id,\n text: i.name\n }\n })\n }\n\n // 有效无效状态\n let enableState = enable == 1 ? true : false\n\n return (\n
\n \n \n
\n
\n 中文名称\n this.validateFun(value, '中文名称')}\n sholdCheckValidate={sholdCheckValidate}\n onChange={val => this.setState({target_name_ch: val})}\n />\n
\n\n
\n 英文名称\n this.validateFun(value, '英文名称')}\n sholdCheckValidate={sholdCheckValidate}\n onChange={val => this.setState({target_name: val})}\n />\n
\n\n
\n 主题域/业务\n this.validateFun(value, '主题域/业务')}\n sholdCheckValidate={sholdCheckValidate}\n onChange={val => this.setState({topicBusiness: val})}\n data={topicData}\n />\n
\n\n
\n 来源表\n this.validateFun(value, '来源表')}\n sholdCheckValidate={sholdCheckValidate}\n onChange={val => {this.getTablecfgFields(val)}}\n data={tableList}\n />\n
\n\n
\n 度量字段\n this.validateFun(value, '度量字段')}\n sholdCheckValidate={sholdCheckValidate}\n onChange={val => this.setState({metric_field: val})}\n data={tableFields}\n />\n
\n\n
\n 时间字段\n this.validateFun(value, '时间字段')}\n sholdCheckValidate={sholdCheckValidate}\n onChange={val => this.setState({time_field: val})}\n data={tableTimeFields}\n />\n
\n\n
\n 计算逻辑\n this.validateFun(value, '计算逻辑')}\n sholdCheckValidate={sholdCheckValidate}\n onChange={val => this.setState({metric_type: val})}\n data={calculationMethod}\n />\n
\n\n
\n 过滤条件\n this.setState({calculation: val})}\n />\n
\n\n
\n 描述\n this.setState({comments: val})}\n />\n
\n\n
\n 是否启用\n {this.enableStateChange(val)}}\n />\n
\n\n
\n
\n \n\n {\n showConfirmWin &&\n this.setState({showConfirmWin: bool})}\n onCancelClick={() => this.setState({showConfirmWin: false})}\n onSureClick={this.onStoreOrUpdateAtomTarget}\n >\n \n \n }\n
\n )\n }\n}\n\nexport default EditData\n","import React, { PureComponent } from 'react'\nimport SdwTable from '@common/Table'\nimport SdwPagenation from '@common/Pagenation'\nimport { Button } from 'element-react'\nimport './index.css'\nimport { getTopicBusiness, getPage, getTablecfgList, getPublicCfg, srcTableItems } from '@services/atom'\nimport EditData from './components/EditData'\nimport SdwBreadCrumbs from '@common/BreadCrumbs'\nimport SdwSelect from '@common/Select'\nimport SdwInput from '@common/Input'\nimport _ from 'lodash'\nimport SdwLoading from '@common/Loadding'\nimport { hasPriv } from '@components/FrontendAuth/AuthMap'\nimport { commonApi } from '@utils/request'\nimport SdwMessage from '@common/Message/index'\n\nclass Atom extends PureComponent {\n state = {\n dataList: [],\n search: {\n target_name: { value: '', operator: '=' },\n target_name_ch: { value: '', operator: 'like', type: 'both' },\n target_type: { value: '', operator: '=' },\n topic: { value: '', operator: '=' },\n create_user: { value: '', operator: '=' },\n enable: { value: '', operator: '=' },\n related_table_id: { value: '', operator: '=' },\n },\n topicData: [],\n pagination: {\n total: 0,\n per_page: 10,\n pages: 0,\n current_page: 0,\n },\n topicDic: {},\n topicServerDic: {},\n curTitle: '',\n curRecord: {},\n visible: false,\n tableList: [],\n cfgData: {},\n tableShowData: false,\n srcTableIArr: []\n }\n\n // 初始化\n async componentDidMount() {\n\n // 路由跳转携带参数进行过滤\n let query = this.props.location.state || {}\n if (query.topicID) {\n const { search } = this.state\n await this.setState({\n search: Object.assign({}, search, {\n topic: Object.assign({}, search.topic, {\n value: String(query.topicID)\n })\n })\n })\n }\n\n this.getTopicBusiness()\n this.getPageData()\n this.getTablecfgList()\n this.getPublicCfg()\n this.srcTableItems()\n }\n\n // 获取所有的表\n getTablecfgList = () => {\n let that = this\n getTablecfgList({ limit: 10000, page: 0, search: { enable: { value: '1', operator: \"=\" } } }).then(res => {\n let tableList = res.data.data.items || []\n that.setState({tableList: tableList})\n })\n }\n\n // 获取所有计算方式选项列表\n getPublicCfg = () => {\n let that = this\n getPublicCfg().then(res => {\n if (res.data.code === 0 && res.data.data) {\n let cfgData = {}\n for (let i in res.data.data) {\n cfgData[i] = res.data.data[i]\n }\n that.setState({cfgData: cfgData})\n }\n })\n }\n\n // 获取分页数据\n getPageData = () => {\n let that = this\n var params = {}\n params.page = this.state.pagination.current_page || 0\n params.limit = this.state.pagination.per_page\n params.search = {}\n for (const key in this.state.search) {\n const dval = this.state.search[key]\n if (dval.value !== \"\") {\n params.search[key] = dval\n }\n }\n\n getPage(params).then((res) => {\n let items = res.data.data.items\n\n if(!items) {\n items = []\n }\n\n for (let i=0; i {\n commonApi(srcTableItems, {}).then(data => {\n if (!_.isArray(data) || !data.length) return\n const srcTableIArr = data.filter(i => !!i.related_table_id).map(i => ({\n id: i.related_table_id,\n text: `${i.data_set_chinese}(${i.database_name}.${i.table_name})`\n }))\n this.setState({\n srcTableIArr\n })\n }).catch(err => SdwMessage.error(err))\n }\n\n // 获取主题列表\n getTopicBusiness = () => {\n let that = this\n that.setState({tableShowData: false})\n getTopicBusiness().then((res) => {\n that.setState({tableShowData: true})\n that.setState({topicData: res.data.data})\n let topicDic = {}\n for(let i=0; i {\n let self = this\n let {cfgData} = this.state\n const columns = [\n {\n title: \"中文名称\",\n width: 80,\n dataIndex: \"target_name_ch\",\n },\n {\n title: \"英文名称\",\n width: 80,\n dataIndex: \"target_name\",\n },\n {\n title: \"主题域/业务\",\n width: 80,\n // dataIndex: \"topicName\",\n render: data => {\n const { topicDic } = this.state\n if (_.isEmpty(topicDic)) return '-'\n const topicID = data.topic\n const serviceID = data.service\n const topicText = topicDic[topicID] && topicDic[topicID].label || ''\n const childrenList = topicDic[topicID] && _.get(topicDic[topicID], 'children') || []\n const record = childrenList.find(i => i.value == serviceID) || {}\n const text = _.isEmpty(record) ? '-' : record.label\n return { `${topicText}/${text}` }\n }\n },\n {\n title: \"来源表\",\n // dataIndex: \"related_table_id\",\n width: 80,\n render: data => {\n const { tableList } = this.state\n if (_.isEmpty(tableList) || !_.isArray(tableList) || !tableList.length) return '-'\n const record = tableList.find(i => i.id == data.related_table_id) || {}\n const text = _.isEmpty(record) ? '-' : record.data_set_chinese + \"(\" + record.database_name + \".\" + record.table_name + \")\"\n return { text }\n }\n },\n {\n title: \"度量字段\",\n width: 40,\n dataIndex: \"metric_field\",\n },\n {\n title: \"时间字段\",\n width: 40,\n dataIndex: \"time_field\",\n },\n {\n title: \"计算逻辑\",\n width: 60,\n render: data => {\n if (!cfgData.calculationMethod) {\n return (\n <>\n \n )}\n for (let i in cfgData.calculationMethod) {\n if (cfgData.calculationMethod[i].id == data.metric_type) {\n return (\n <>\n {cfgData.calculationMethod[i].name}\n \n )}\n }\n }\n },\n {\n title: \"过滤条件\",\n width: 50,\n dataIndex: \"calculation\",\n },\n {\n title: \"修改人\",\n width: 30,\n dataIndex: \"modify_user\",\n },\n {\n //title: \"状态\",\n //dataIndex: \"enableName\",\n width:20,\n title: \"状态\",\n render: function (data, record) {\n return (\n <>\n {\n _.isEqual(typeof data.enable, 'number') && \n }\n {_.isEqual(typeof data.enable, 'number') ?\n (data.enable ? '有效' : '无效') : '-'}\n \n )\n }\n },\n {\n title: \"更新时间\",\n width: 90,\n dataIndex: \"modify_time\",\n },\n ...hasPriv('atomCreateOrUpdate') ?\n [{\n title: \"操作\",\n width: 20,\n render: (data, record) => {\n return (\n
{ self.onClickGetOneData(data, self) } }>编辑
\n )\n },\n }] : []\n ]\n return columns\n }\n\n // 获取编辑的行记录\n onClickGetOneData = (data, e) => {\n let topicName = \"\"\n let topicServiceName = \"\"\n if(this.state.topicDic.hasOwnProperty(data.topic)) {\n topicName = this.state.topicDic[data.topic].label\n if(this.state.topicDic[data.topic].hasOwnProperty(\"children\")){\n for(let i=0; i {\n this.state.pagination.current_page = pageNum\n this.getPageData()\n }\n\n // 获取当前每页总条数\n pageCountChange = (per_page) => {\n this.state.pagination.per_page = per_page\n this.getPageData()\n }\n\n addOrEdit = (record = {}) => {\n this.setState({\n visible: true,\n curTitle: record.title,\n curRecord: record,\n })\n }\n\n onSureClick = () => {\n this.setState({\n visible: false,\n })\n this.getPageData()\n this.srcTableItems()\n }\n\n render () {\n var { search, pagination, curTitle, visible, curRecord, topicData, tableList, cfgData, tableShowData } = this.state;\n return (\n
\n \n\n
\n {/** 搜索区域 */}\n
\n
\n \n ({})} // enter或触发onblur事件,所以这里传空func\n onChange={val => this.setState({\n pagination:Object.assign({}, pagination, {\n current_page:1\n }),\n search: Object.assign({}, search, {\n target_name_ch: Object.assign({}, search.target_name_ch, {\n value: val\n })\n })\n })}\n />\n \n\n \n ({})} // enter或触发onblur事件,所以这里传空func\n onChange={val => this.setState({\n pagination:Object.assign({}, pagination, {\n current_page:1\n }),\n search: Object.assign({}, search, {\n target_name: Object.assign({}, search.target_name, {\n value: val\n })\n })\n })}\n />\n \n\n \n {\n return {\n id: el.value,\n text: el.label\n }\n })}\n onChange={val => {\n this.setState({\n pagination:Object.assign({}, pagination, {\n current_page:1\n }),\n search: Object.assign({}, search, {\n topic: Object.assign({}, search.topic, {\n value: val\n })\n })\n }, this.getPageData)\n }}\n />\n \n\n \n ({})} // enter或触发onblur事件,所以这里传空func\n onChange={val => this.setState({\n pagination:Object.assign({}, pagination, {\n current_page:1\n }),\n search: Object.assign({}, search, {\n create_user: Object.assign({}, search.create_user, {\n value: val\n })\n })\n })}\n />\n \n\n \n {\n this.setState({\n pagination:Object.assign({}, pagination, {\n current_page:1\n }),\n search: Object.assign({}, search, {\n related_table_id: Object.assign({}, search.related_table_id, {\n value: val\n })\n })\n }, this.getPageData)\n }}\n />\n \n \n {\n this.setState({\n pagination:Object.assign({}, pagination, {\n current_page:1\n }),\n search: Object.assign({}, search, {\n enable: Object.assign({}, search.enable, {\n value: val\n })\n })\n }, this.getPageData)\n }}\n />\n \n
\n {\n hasPriv('atomCreateOrUpdate') &&\n this.addOrEdit({ title: '新增原子指标', curRecord:{} }) }\n >新增\n }\n
\n
\n\n
\n\n {/** 分页显示数据区域 */}\n
\n \n \n \n \n
\n
\n\n {/** 编辑弹窗 */}\n this.setState({ visible: false })}\n onCancelClick={() => this.setState({ visible: false })}\n onSureClick={() => {\n this.setState({ visible: false })\n this.onSureClick()\n }}\n />\n
\n )\n }\n}\n\nexport default Atom\n","import React, { PureComponent } from 'react'\nimport _ from 'lodash'\nimport SdwDrawer from '@common/Drawer'\nimport SdwInput from '@common/Input'\nimport SdwSelect from '@common/Select'\nimport SdwSwitch from '@common/Switch'\nimport SdwCascader from '@common/Cascader'\nimport { Input, Tabs, Select, Button } from 'element-react'\nimport SdwMessage from '@common/Message'\nimport {\n getTablecfgFields, storeOrUpdateTarget, checkTarget, getTableFieldsByAtomId, getAllModifier, getAllTarget,\n getChildTarget, storeOrUpdateAuth\n} from '@services/Derived'\nimport { getMetricTypeConf } from '@services/application'\nimport SdwDialog from '@common/Dialog'\nimport Textarea from '@common/Textarea'\nimport ConfirmWin from '@components/ConfirmWin'\n\nimport 'element-theme-default'\nimport './style/EditData.css'\nimport { hasPriv } from '@components/FrontendAuth/AuthMap'\n\n// 本指标为颗粒指标\nconst CUR_GRANULAR = 'cur_granular'\n\nclass EditData extends PureComponent {\n\n state = {\n isEdit: false, // 是否是编辑 or 新增\n comment: '',\n commentError: {\n isError: false,\n msg: ''\n },\n id: \"\",\n target_name_cn: \"\",\n target_name: \"\",\n topicBusiness: \"\",\n target_unit: \"\",\n granular_category: \"\", // 所属颗粒化指标id\n is_granular: 0, // 是否颗粒化指标。0否,1是\n comments: \"\",\n source_targets: \"\",\n decoration_ids: [],\n decoration: \"\",\n store_dimension: [{ id: [] }],\n complex_script: \"\",\n complex_params: \"\",\n enable: 0,\n time_schedule: [{ run_cycle: '', time_cycle: '' }],\n cal_expression: [],\n\n target_type: \"1\",\n tableFields: [],\n defaultItem: {\n time_schedule: { run_cycle: '', time_cycle: '' },\n store_dimension: { id: [] }\n },\n dimNames: {},\n fields: [],\n modifier: [],\n targetData: [],\n targetSeachData: [],\n targetDataSelectVal: \"\",\n searchKey: \"\",\n expression: \"\",\n btnList: ['+', '-', '*', '/', '(', ')'],\n selectedItem: [],\n selectedItemId: [],\n calculateNum: 0,\n calculateNumState: false,\n sholdCheckValidate: false,\n showConfirmWin: false,\n confirmData: [],\n metric_type: '',\n metricTypeMap: {}, // 计算公式类型\n allEnableTargetArr: [],\n warningVisible:false,\n errorMsgContent:\"\",\n }\n\n componentDidMount () {\n this.getAllTarget()\n this.initData()\n this.getMetricTypeConf()\n this.getAllEnableTarget()\n }\n\n componentDidUpdate (prevProps, prevState) {\n if (prevProps.record.id !== this.props.record.id) {\n this.initData()\n }\n }\n\n getAllEnableTarget = () => {\n getAllTarget({\n search: JSON.stringify({\n // target_type != 4 and enable = 1 and is_granular=1\n target_type: {\n value: 4,\n operator: '!='\n },\n enable: {\n value: 1,\n operator: '='\n },\n is_granular: {\n value: 1,\n operator: '='\n }\n })\n }).then(res => {\n const curID = _.get(this.props, 'record.id')\n let arr = _.get(res, 'data.data')\n arr = _.isArray(arr) ? arr : []\n arr = arr.reduce((prev, item) => {\n if (item.id != curID) {\n prev.push({\n ...item,\n text: `${item.target_name}(${item.target_name_cn})`\n })\n }\n return prev\n }, [])\n\n // 新增或者编辑,都需要展示下面这个选项\n arr.unshift({\n id: CUR_GRANULAR,\n text: '本指标为颗粒指标'\n })\n this.setState({\n allEnableTargetArr: arr\n })\n }, () => SdwMessage.error(\"接口异常\"))\n }\n\n getMetricTypeConf = () => {\n getMetricTypeConf()\n .then(res => {\n if (res && res.data && res.data.code === 0) {\n let metricTypeMap = _.get(res, 'data.data.metric_type')\n this.setState({\n metricTypeMap\n })\n } else {\n let msg = _.get(res, 'data.msg')\n if (!!msg) SdwMessage.error(msg)\n }\n })\n .catch(err => SdwMessage.error('请求计算公式出错 ' + err))\n }\n\n initData = () => {\n const curRecord = this.props.record || {}\n console.log(\"----------curRecord\", curRecord)\n let cal_fields = curRecord.cal_fields || \"\"\n cal_fields = cal_fields == \"\" ? [] : JSON.parse(cal_fields)\n\n let cal_expression = curRecord.cal_expression || \"\"\n cal_expression = cal_expression == \"\" ? [] : JSON.parse(cal_expression)\n\n const isEdit = !!_.get(this.props, 'record.id')\n\n this.setState({\n isEdit,\n id: curRecord.id || 0,\n target_name_cn: curRecord.target_name_cn,\n target_name: curRecord.target_name,\n topicBusiness: curRecord.topicBusiness || [],\n target_unit: curRecord.target_unit,\n is_granular: curRecord.is_granular,\n granular_category: curRecord.is_granular == 1 ? CUR_GRANULAR : curRecord.granular_category,\n comments: curRecord.comments,\n source_targets: curRecord.source_targets,\n decoration_ids: curRecord.decoration_ids || [],\n decoration: curRecord.decoration,\n store_dimension: curRecord.store_dimension instanceof Array ? curRecord.store_dimension : [{ id: [] }],\n complex_script: curRecord.complex_script || \"\",\n complex_params: curRecord.complex_params || \"\",\n enable: curRecord.enable || 0,\n time_schedule: curRecord.time_schedule instanceof Array ? curRecord.time_schedule : [{ run_cycle: '', time_cycle: '' }],\n cal_expression: cal_expression,\n cal_fields: cal_fields,\n target_type: curRecord.target_type || \"1\",\n selectedItem: cal_fields.join(\"\"),\n selectedItemId: cal_expression.join(\"\"),\n metric_type: curRecord.metric_type || '',\n })\n\n if(\n curRecord.target_type == \"1\" ||\n curRecord.target_type == \"3\" && !!curRecord.source_targets\n ) {\n this.handleTargetChange(curRecord.source_targets)\n }\n }\n\n validateFun = (curValue, label = '') => {\n if (typeof curValue != 'object' && (typeof curValue === 'number' || !!curValue.trim())) {\n return true\n }\n if (label == \"主题域/业务\" && Array.isArray(curValue.ids) && curValue.ids.length) {\n return true\n }\n return `${label}不能为空`\n }\n\n // 获取所有的派生指标数据\n getAllTarget = () => {\n let that = this\n getAllTarget().then(res => {\n let targetData = res.data.data || []\n that.setState({\n targetData: targetData,\n targetSeachData: targetData\n })\n })\n }\n\n // 获取指定的表的字段\n getTablecfgFields = (related_table_id) => {\n this.setState({related_table_id: related_table_id})\n let that = this\n let parame = {}\n parame.id = related_table_id\n getTablecfgFields(parame).then(res => {\n let tableFields = res.data.data || []\n that.setState({tableFields: tableFields})\n })\n }\n\n handleSureClick = () => {\n let {\n id,\n target_name_cn,\n target_name,\n target_unit,\n is_granular,\n granular_category,\n comments,\n source_targets,\n metric_type,\n decoration_ids,\n decoration,\n store_dimension,\n complex_script,\n complex_params,\n enable,\n time_schedule,\n cal_expression,\n cal_fields,\n target_type,\n topicBusiness,\n comment\n } = this.state\n\n let isValidatePass =\n !!target_name_cn &&\n !!target_name &&\n topicBusiness && Array.isArray(topicBusiness.ids) && topicBusiness.ids.length > 0\n\n if (!isValidatePass) {\n // 手动触发必填项的检查\n this.setState({\n sholdCheckValidate: true\n })\n return\n }\n\n let dataid = this.props.record.id || 0\n\n let params = { id: dataid, field: {}}\n\n let comitFieldData = {\n target_name_cn,\n target_name,\n target_unit,\n is_granular,\n granular_category,\n comments,\n source_targets: source_targets,\n decoration_ids,\n decoration,\n store_dimension,\n complex_script: complex_script,\n complex_params: complex_params,\n enable,\n time_schedule,\n cal_expression,\n cal_fields,\n target_type,\n topicBusiness,\n metric_type: metric_type,\n }\n\n let formData = new FormData()\n for (let i in comitFieldData) {\n let val = comitFieldData[i]\n if (i === 'id') {\n continue\n }\n\n if (i === 'granular_category' && val == CUR_GRANULAR) {\n val = ''\n }\n\n if (i === 'topicBusiness') {\n params.field['topic'] = val[\"ids\"][0] || ''\n params.field['service'] = val[\"ids\"][1] || ''\n }\n\n if(i === \"store_dimension\") {\n params.field['store_dimension'] = store_dimension ? JSON.stringify(store_dimension) : ''\n continue\n }\n\n if(i === \"time_schedule\") {\n params.field['time_schedule'] = time_schedule ? JSON.stringify(time_schedule) : ''\n continue\n }\n\n if(i === \"decoration_ids\") {\n let decoration_ids = val ? val.join(\",\") : ''\n params.field['decoration_ids'] = decoration_ids\n continue\n }\n\n if(i === \"cal_fields\") {\n params.field[i] = JSON.stringify(val)\n continue\n }\n\n if(i === \"cal_expression\") {\n params.field[i] = JSON.stringify(val)\n continue\n }\n\n params.field[i] = val\n }\n\n for (let i in params) {\n formData.append(i, params[i])\n }\n\n\n\n if (!hasPriv('derivedCreateOrUpdate')) {\n // 没有编辑权限,说明只能提交申请接口(审批接口)\n storeOrUpdateAuth({\n ...params,\n comment\n }).then((res) => {\n if (_.get(res, 'data.code') === 0) {\n let msg = '提交审批成功'\n SdwMessage.success(msg)\n this.setState({ showConfirmWin: false })\n // 告诉父级点击了确定按钮\n this.props.onSureClick()\n } else {\n SdwMessage.error(_.get(res, 'data.msg') || '提交审批失败');\n }\n }).catch(err => SdwMessage.error('接口异常 ' + err))\n return\n }\n\n //如果有权限那么就去校验指标\n // 有编辑权限,直接走编辑接口(老接口,非提交申请接口)\n checkTarget(params).then((res) => {\n\n if (res && res.data && res.data.code === 0) {\n // 告诉父级点击了确定按钮\n this.saveSureAction(id)\n } else {\n this.setState({\n errorMsgContent:res.data.msg,\n warningVisible:true,\n })\n //SdwMessage.error(res.data.msg);\n }\n }).catch(err => SdwMessage.error('接口异常 ' + err))\n }\n\n saveSureAction = (id) => {\n if (!id) {\n // 新增\n this.handleStoreOrUpdateTarget()\n return\n }\n\n // 1、弹窗二次确认(只有编辑才需要)\n getChildTarget({id}).then((res) => {\n\n if (res && res.data && res.data.code === 0) {\n // 2、确认后才编辑数据\n let list = Array.isArray(res.data.data) ? res.data.data : []\n\n // 这里list没有长度:表明没有关联的指标,不用弹出确认框\n if (hasPriv('derivedCreateOrUpdate') && !list.length) {\n this.handleStoreOrUpdateTarget()\n return\n }\n\n this.setState({ confirmData: list, showConfirmWin: true })\n }\n })\n }\n\n handleConfirm = () => {\n let { comment } = this.state\n comment = _.trim(comment)\n\n const isToBig = String(comment).length >= 10000\n if (!comment || isToBig) {\n this.setState({\n commentError: {\n isError: true,\n msg: isToBig ? '输入最大长度不超过10000字' : '请填写修改原因'\n }\n })\n return\n }\n\n this.handleStoreOrUpdateTarget()\n }\n\n handleChangeComment = val => {\n this.setState({\n commentError: {\n isError: false,\n msg: ''\n }\n })\n\n this.setState({\n comment: val\n })\n }\n\n handleStoreOrUpdateTarget = () => {\n let {\n id,\n target_name_cn,\n target_name,\n target_unit,\n is_granular,\n granular_category,\n comments,\n source_targets,\n metric_type,\n decoration_ids,\n decoration,\n store_dimension,\n complex_script,\n complex_params,\n enable,\n time_schedule,\n cal_expression,\n cal_fields,\n target_type,\n topicBusiness,\n comment\n } = this.state\n\n let isValidatePass =\n !!target_name_cn &&\n !!target_name &&\n topicBusiness && Array.isArray(topicBusiness.ids) && topicBusiness.ids.length > 0\n\n if (!isValidatePass) {\n // 手动触发必填项的检查\n this.setState({\n sholdCheckValidate: true\n })\n return\n }\n\n let dataid = this.props.record.id || 0\n\n let params = { id: dataid, field: {}}\n\n let comitFieldData = {\n target_name_cn,\n target_name,\n target_unit,\n is_granular,\n granular_category,\n comments,\n source_targets: source_targets,\n decoration_ids,\n decoration,\n store_dimension,\n complex_script: complex_script,\n complex_params: complex_params,\n enable,\n time_schedule,\n cal_expression,\n cal_fields,\n target_type,\n topicBusiness,\n metric_type: metric_type,\n }\n\n let formData = new FormData()\n for (let i in comitFieldData) {\n let val = comitFieldData[i]\n if (i === 'id') {\n continue\n }\n\n if (i === 'granular_category' && val == CUR_GRANULAR) {\n val = ''\n }\n\n if (i === 'topicBusiness') {\n params.field['topic'] = val[\"ids\"][0] || ''\n params.field['service'] = val[\"ids\"][1] || ''\n }\n\n if(i === \"store_dimension\") {\n params.field['store_dimension'] = store_dimension ? JSON.stringify(store_dimension) : ''\n continue\n }\n\n if(i === \"time_schedule\") {\n params.field['time_schedule'] = time_schedule ? JSON.stringify(time_schedule) : ''\n continue\n }\n\n if(i === \"decoration_ids\") {\n let decoration_ids = val ? val.join(\",\") : ''\n params.field['decoration_ids'] = decoration_ids\n continue\n }\n\n if(i === \"cal_fields\") {\n params.field[i] = JSON.stringify(val)\n continue\n }\n\n if(i === \"cal_expression\") {\n params.field[i] = JSON.stringify(val)\n continue\n }\n\n params.field[i] = val\n }\n\n for (let i in params) {\n formData.append(i, params[i])\n }\n\n // 有编辑权限,直接走编辑接口(老接口,非提交申请接口)\n storeOrUpdateTarget(params).then((res) => {\n\n if (res && res.data && res.data.code === 0) {\n let msg = id === 0 ? '新建成功' : '编辑成功'\n SdwMessage.success(msg)\n this.setState({ showConfirmWin: false })\n // 告诉父级点击了确定按钮\n this.props.onSureClick()\n } else {\n SdwMessage.error(res.data.msg);\n }\n }).catch(err => SdwMessage.error('接口异常 ' + err))\n }\n\n enableStateChange = (val) => {\n if(val) {\n this.setState({enable: 1})\n }else {\n this.setState({enable: 0})\n }\n }\n\n tabConfigChange = (tab) => {\n if(this.state.id == 0) {\n this.setState({target_type: tab.props.name})\n }\n }\n\n configDataChange = (val, type, index) => {\n if(type == \"store_dimension\") {\n let store_dimension = [...this.state.store_dimension]\n store_dimension[index].id = val\n this.setState({store_dimension: store_dimension})\n }\n\n if(type == \"time_schedule_time_cycle\") {\n let time_schedule = [...this.state.time_schedule]\n time_schedule[index].time_cycle = val\n this.setState({time_schedule: time_schedule})\n }\n\n if(type == \"store_dimension_run_cycle\") {\n let time_schedule = [...this.state.time_schedule]\n time_schedule[index].run_cycle = val\n this.setState({time_schedule: time_schedule})\n }\n\n if(type == \"targetDataSelectVal\") {\n this.setState({targetDataSelectVal: val})\n }\n }\n\n addVirtualProperty = (index) => {\n let item = {\n id: []\n }\n\n let store_dimension = [...this.state.store_dimension]\n store_dimension.push(item);\n this.setState({store_dimension: store_dimension})\n }\n\n removeVirtualProperty = (index) => {\n let store_dimension = [...this.state.store_dimension]\n store_dimension.splice(index, 1);\n this.setState({store_dimension: store_dimension})\n }\n\n addVirtualProperty2 = (index) => {\n let item = { run_cycle: '', time_cycle: '' }\n\n let time_schedule = [...this.state.time_schedule]\n time_schedule.push(item);\n this.setState({time_schedule: time_schedule})\n }\n\n removeVirtualProperty2 = (index) => {\n let time_schedule = [...this.state.time_schedule]\n time_schedule.splice(index, 1);\n this.setState({time_schedule: time_schedule})\n }\n\n\n // 原子指标相应修饰词和维度(维度关联的表的字符段)的关联进行变化\n handleTargetChange = (id) => {\n this.setState({source_targets: id}, () => {\n this.getTableFieldsByAtomId(id)\n this.handleFetchModifier(id)\n })\n }\n\n getTableFieldsByAtomId = (id) => {\n getTableFieldsByAtomId({ id: id }).then(res => {\n if (res.data.code === 0) {\n let fields = res.data.data\n this.setState({\n fields: fields\n })\n }\n })\n }\n\n handleFetchModifier = (id) => {\n let tid = ''\n if (this.props.atomTarget instanceof Array) {\n this.props.atomTarget.map(item => {\n if (item.id == id) {\n tid = item.related_table_id\n }\n })\n }\n if (!tid) {\n return\n }\n let params = {}\n params.search = {\n source_id: { operator: \"=\", value: tid },\n enable: { operator: \"=\", value: '1' }\n }\n getAllModifier(params).then(res => {\n if (res.data.code === 0) {\n let modifier = res.data.data || []\n this.setState({modifier: [...modifier]})\n }\n })\n }\n\n dimensionData = () => {\n let d = []\n if (!this.state.source_targets) return d\n let tid = ''\n\n // 表字段\n if (this.state.fields instanceof Array) {\n this.state.fields.map((item) => {\n this.state.dimNames[item.field_name] = item.field_name_ch || item.field_name\n if (!tid && !!item.related_table_id) tid = item.related_table_id // 依赖的表id(同一个接口的related_table_id应该唯一)\n d.push({ id: item.field_name, name: item.field_name + \"(\" + item.field_name_ch + \")\" })\n })\n }\n\n // 维度字段\n if (this.props.dimension instanceof Array) {\n this.props.dimension.map((item) => {\n this.state.dimNames[item.id] = item.map_name_en || item.name\n if (!item.apply_table) {\n return\n }\n const tableid = JSON.parse(item.apply_table)\n if (tableid && tableid != undefined && tableid instanceof Array && tableid.indexOf(tid) >= 0) {\n d.push({ id: item.id, name: item.name + \"(\" + item.map_name_en + \")\" })\n }\n })\n }\n\n return d\n }\n\n calculateChange = (val) => {\n this.setState({searchKey: val})\n let targetSeachData = [...this.state.targetData]\n let newData = []\n\n for(let i=0; i= 0 || target_name.indexOf(val) >= 0)) {\n newData.push(targetSeachData[i])\n }\n }\n\n this.setState({targetSeachData: newData})\n }\n\n calculateCulSelect = (val) => {\n let selectedItem = [...this.state.cal_fields]\n selectedItem.push(val)\n\n let selectedItemId = [...this.state.cal_expression]\n selectedItemId.push(val)\n\n let expressionField = selectedItem.join('')\n let expression = selectedItemId.join('')\n\n this.setState({\n selectedItem: expressionField,\n selectedItemId: expression,\n cal_fields: selectedItem,\n cal_expression: selectedItemId,\n calculateNumState: false\n })\n }\n\n calculateCulBack = () => {\n let selectedItem = [...this.state.cal_fields]\n selectedItem.pop()\n\n let selectedItemId = [...this.state.cal_expression]\n selectedItemId.pop()\n\n let expressionField = selectedItem.join('')\n let expression = selectedItemId.join('')\n\n this.setState({\n selectedItem: expressionField,\n selectedItemId: expression,\n cal_fields: selectedItem,\n cal_expression: selectedItemId,\n })\n }\n\n calculateCulClick (row) {\n let selectedItem = [...this.state.cal_fields]\n let selectedItemId = [...this.state.cal_expression]\n\n selectedItem.push(\"[\" + row.target_name_cn + \"]\")\n selectedItemId.push(\"[\" + row.id + \"]\")\n\n let expressionField = selectedItem.join('')\n let expression = selectedItemId.join('')\n\n this.setState({\n selectedItem: expressionField,\n selectedItemId: expression,\n cal_fields: selectedItem,\n cal_expression: selectedItemId,\n })\n }\n\n calculateCulShowAddNum = () => {\n if(this.state.calculateNumState) {\n this.setState({calculateNumState: false})\n }else {\n this.setState({calculateNumState: true})\n }\n this.setState({calculateNum: 0})\n }\n\n calculateNumChange = (num) => {\n this.setState({calculateNum: num})\n }\n\n handleGranular = val => {\n let is_granular =0\n if (val === CUR_GRANULAR) {\n is_granular = 1\n }\n\n this.setState({\n is_granular,\n granular_category: val\n })\n }\n\n render () {\n let {\n id,\n target_name_cn,\n target_name,\n topicBusiness,\n target_unit,\n granular_category,\n comments,\n source_targets,\n decoration_ids,\n decoration,\n store_dimension,\n complex_script,\n complex_params,\n enable,\n time_schedule,\n searchKey,\n target_type,\n targetSeachData,\n sholdCheckValidate,\n btnList,\n calculateNum,\n calculateNumState,\n selectedItem,\n showConfirmWin,\n confirmData,\n metricTypeMap,\n metric_type,\n comment,\n commentError,\n allEnableTargetArr,\n warningVisible,\n errorMsgContent,\n } = this.state\n\n // 主题列表渲染成组件需要的数据\n let topicData = this.props.topicData.map(i => {\n return {\n id: i.value,\n text: i.label,\n children: i.children && i.children.map(si => { return {id:si.value, text:si.label} })\n }\n })\n\n // 单位选项\n let unitList = []\n if(this.props.cfgData.hasOwnProperty(\"unit\")) {\n unitList = this.props.cfgData.unit.map(i => {\n return {\n id: i.name,\n text: i.name\n }\n })\n }\n\n // runCycle\n let runCycle = []\n if(this.props.cfgData.hasOwnProperty(\"runCycle\")) {\n runCycle = this.props.cfgData.runCycle.map(i => {\n return {\n id: i.id + '',\n text: i.name\n }\n })\n }\n\n // timeCycle\n let timeCycle = []\n if(this.props.cfgData.hasOwnProperty(\"timeCycle\")) {\n timeCycle = this.props.cfgData.timeCycle.map(i => {\n return {\n id: i.id + '',\n text: i.name\n }\n })\n }\n\n // 原子指标选项\n let atomTarget = this.props.atomTarget.map(i => {\n return {\n id: i.id + '',\n text: i.target_name + '(' + i.target_name_ch + ')',\n }\n })\n\n // 关联维度\n let dimensionData = this.dimensionData()\n\n // 有效无效状态\n let enableState = enable == 1 ? true : false\n\n /**\n * 1、走确定接口:新增弹窗新增指标、有编辑权限进入编辑弹窗\n * 2、需要提交审批:无编辑权限进入编辑弹窗\n */\n let sureText = '确定'\n\n // 无编辑权限:进入弹窗,一定不是新增,而是编辑进入,此时,没有编辑权限,编辑提交需要进行审批\n if (!hasPriv('derivedCreateOrUpdate')) {\n sureText = '提交审批'\n }\n\n // 审批中的状态\n let sureBtnDisabled = false\n if (_.get(this.props, 'record.isProcess')) {\n sureText = '审批中'\n sureBtnDisabled = true\n }\n\n return (\n
\n \n \n
\n
\n 中文名\n
\n this.validateFun(value, '中文名')}\n sholdCheckValidate={sholdCheckValidate}\n onChange={val => this.setState({target_name_cn: val})}\n />\n
\n
\n\n
\n 英文名\n
\n this.validateFun(value, '英文名')}\n sholdCheckValidate={sholdCheckValidate}\n onChange={val => this.setState({target_name: val})}\n />\n
\n
\n\n
\n 主题域/业务\n
\n this.validateFun(value, '主题域/业务')}\n sholdCheckValidate={sholdCheckValidate}\n onChange={val => this.setState({topicBusiness: val})}\n data={topicData}\n />\n
\n
\n\n
\n 单位\n
\n this.setState({target_unit: val})}\n data={unitList}\n />\n
\n
\n\n
\n 描述\n
\n this.setState({comments: val})}\n />\n
\n
\n\n
\n 颗粒指标\n
\n \n
\n
\n\n
\n { this.tabConfigChange(tab) }} >\n 0 && target_type!=1 ? true:false} label=\"基础型\" name=\"1\">\n 0 && target_type!=2 ? true:false} label=\"复合型\" name=\"2\">\n 0 && target_type!=3 ? true:false} label=\"代码型\" name=\"3\">\n \n
\n\n {/** target_type 1 */}\n {target_type == \"1\" && (\n
\n 原子指标\n
\n this.validateFun(value, '原子指标')}\n sholdCheckValidate={sholdCheckValidate}\n onChange={val => { this.handleTargetChange(val) } }\n data={atomTarget}\n />\n
\n
\n )}\n\n {target_type == \"1\" && (\n
\n 修饰词\n
\n
\n \n
\n\n
\n this.setState({decoration: val})}\n placeholder=\"手动输入过滤逻辑\"\n />\n
\n
\n
\n )}\n\n {target_type == \"1\" && (\n
\n 关联维度\n
\n {store_dimension instanceof Array && store_dimension.map((row, k) => {\n return (\n
\n\n {/* 查看element-react组件源码,他是按照option的顺序显示的value值,不符合交互预期,故使用自己封装的多选下拉组件 */}\n {/* */}\n {\n return {\n id: i,\n text: _.isArray(dimensionData) && dimensionData.find(j => j.id === i) && dimensionData.find(j => j.id === i).name\n }\n })} // 数组对象\n readOnly={false} // 配置为false:可以模糊搜索\n width='90%'\n data={dimensionData.map(i => {\n return {\n id: i.id,\n text: i.name\n }\n })}\n onChange={val => this.configDataChange(val.map(i => i.id), 'store_dimension', k)}\n />\n\n this.addVirtualProperty(k)} className=\"el-icon-plus\" style={{ marginLeft: 8 }}>\n {k > 0 && ( this.removeVirtualProperty(k)} className=\"el-icon-minus\">)}\n
\n )\n })}\n
\n
\n )}\n\n {target_type == \"2\" && (\n
\n 计算逻辑\n \n {/** 派生指标搜索 targetSeachData */}\n
\n
计算字段
\n
\n {this.calculateChange(val)}}\n />\n
\n
    \n {targetSeachData instanceof Array && targetSeachData.map((row, k) => {\n return (\n
  • {this.calculateCulClick(targetSeachData[k])}}>{row.target_name_cn} ({row.target_name})
  • \n )\n })}\n
\n
\n
\n
\n\n {/** 计算公式 btnList */}\n
\n
计算公式
\n
\n
    \n {btnList instanceof Array && btnList.map((row, k) => {\n return (\n
  • {this.calculateCulSelect(btnList[k])}}>{row}
  • \n )\n })}\n\n
  • {this.calculateCulBack()}}>后退
  • \n\n
  • \n {!calculateNumState &&\n {this.calculateCulShowAddNum()}}>\n }\n\n {calculateNumState &&\n {this.calculateCulShowAddNum()}}>\n }\n\n {calculateNumState &&\n
    \n {this.calculateNumChange(val)}}\n />\n \n
    \n }\n
  • \n
\n
\n
\n \n
\n
\n
\n
\n )}\n\n {target_type == \"3\" && (\n <>\n
\n 计算公式\n \n {\n return {\n id: key,\n text: metricTypeMap[key]\n }\n })}\n onChange={val => this.setState({metric_type: val})}\n />\n \n \n this.setState({complex_script: val})}\n />\n \n
\n
\n 参数配置\n
\n this.setState({complex_params: val})}\n />\n
\n
\n
\n 原子指标\n
\n { this.handleTargetChange(val) } }\n data={atomTarget}\n />\n
\n
\n\n
\n 关联维度\n
\n {store_dimension instanceof Array && store_dimension.map((row, k) => {\n return (\n
\n {\n return {\n id: i,\n text: _.isArray(dimensionData) && dimensionData.find(j => j.id === i) && dimensionData.find(j => j.id === i).name\n }\n })} // 数组对象\n readOnly={false} // 配置为false:可以模糊搜索\n width='90%'\n data={dimensionData.map(i => {\n return {\n id: i.id,\n text: i.name\n }\n })}\n onChange={val => this.configDataChange(val.map(i => i.id), 'store_dimension', k)}\n />\n\n this.addVirtualProperty(k)} className=\"el-icon-plus\" style={{ marginLeft: 8 }}>\n {k > 0 && ( this.removeVirtualProperty(k)} className=\"el-icon-minus\">)}\n
\n )\n })}\n
\n
\n \n )}\n\n
\n 时间周期\n
\n {time_schedule instanceof Array && time_schedule.map((row, k) => {\n return (\n
\n \n\n \n\n this.addVirtualProperty2(k)} className=\"el-icon-plus\">\n {k > 0 && ( this.removeVirtualProperty2(k)} className=\"el-icon-minus\">)}\n
\n )\n })}\n
\n
\n\n
\n 是否启用\n {this.enableStateChange(val)}}\n />\n
\n\n
\n
\n \n\n {\n warningVisible &&\n this.setState({warningVisible: false})}\n onCancelClick={() => this.setState({warningVisible: false})}\n onSureClick={() => this.setState({warningVisible: false})}\n >\n \n \n }\n {\n hasPriv('derivedCreateOrUpdate') ?\n (\n // 有编辑权限的弹窗\n showConfirmWin &&\n this.setState({showConfirmWin: bool})}\n onCancelClick={() => this.setState({showConfirmWin: false})}\n onSureClick={this.handleStoreOrUpdateTarget}\n >\n \n \n ) : (\n // 没有编辑权限的弹窗\n this.setState({showConfirmWin: bool})}\n onCancelClick={() => this.setState({showConfirmWin: false})}\n onSureClick={this.handleConfirm}\n >\n
修改原因
\n
\n \n
\n\n {\n Array.isArray(confirmData) &&\n confirmData.length > 0 &&\n <>\n
相关派生指标
\n \n \n }\n \n )\n }\n
\n )\n }\n}\n\nexport default EditData\n","import React, { PureComponent } from 'react'\nimport { Dialog, DateRangePicker } from 'element-react'\nimport SdwMessage from '../../../../common/Message'\nimport 'element-theme-default'\nimport './style/DialogShowData.css'\nimport PropTypes from 'prop-types'\nimport SdwTable from '../../../../common/Table'\nimport SdwSelect from '../../../../common/Select'\nimport { getTargetResults } from '@services/Derived'\nimport { formatTime } from '@utils/formatTime'\nimport { Button } from 'element-react'\nimport SdwLoading from '@common/Loadding'\n\nclass DialogVisible extends PureComponent {\n constructor(props) {\n super(props);\n }\n\n state = {\n id: \"\",\n timefield: \"\",\n dateRange: [],\n tableFields: [],\n dialogVisible: false,\n pagination: {\n total: 0,\n cost_time:0,\n per_page: 20,\n from: 1,\n to: 0,\n current_page: 1,\n items: []\n },\n record: {},\n theader: [],\n tableShowData: false\n }\n\n // 可传递的参数\n static propTypes = {\n\n }\n\n // 属性默认值\n static defaultProps = {\n closeDialog: () => {},\n };\n\n componentDidMount () {\n this.initData()\n // 初始化预览数据的时间选择器的默认时间\n this.getShowDataDefauteTime()\n }\n\n componentDidUpdate (prevProps, prevState) {\n if(this.props.dialogVisible == false || this.props.record.id == 0 || this.props.record.id == \"\") {\n return\n }\n\n if (prevProps.dialogVisible !== this.props.dialogVisible) {\n this.initData()\n }\n if (prevProps.dialogVisible !== this.props.dialogVisible) {\n this.setState({\n dialogVisible: this.props.dialogVisible,\n })\n }\n }\n\n\n\n initData = () => {\n this.setState({\n dialogVisible: this.props.dialogVisible,\n id: this.props.record.id || 0,\n pagination: {\n cost_time:0,\n total: 0,\n per_page: 20,\n from: 1,\n to: 0,\n current_page: 1,\n items: []\n },\n record: {...this.props.record}\n }, () => {this.fetchItems()})\n }\n\n validateFun = (curValue, label = '') => {\n if (typeof curValue != 'object' && (typeof curValue === 'number' || !!curValue.trim())) {\n return true\n }\n return `${label}不能为空`\n }\n\n // 获取昨天时间和今天时间\n getShowDataDefauteTime = () => {\n var date = new Date(Date.now() - 24*60*60*1000);//当前时间\n var year = date.getFullYear()\n var month = this.zeroFill(date.getMonth() + 1);//月\n var day = this.zeroFill(date.getDate());//日\n let startTime = year + \"/\" + month + \"/\" + day + \" 00:00:00\"\n\n var s = startTime\n startTime = new Date(s);\n\n var date2 = new Date();//当前时间\n date2 = new Date(date2.getTime());\n year = date2.getFullYear()\n month = this.zeroFill(date2.getMonth() + 1);//月\n day = this.zeroFill(date2.getDate());//日\n let endTime = year + \"/\" + month + \"/\" + day + \" 00:00:00\"\n\n s = endTime\n endTime = new Date(s);\n\n this.setState({dateRange: [startTime, endTime]})\n }\n\n /**\n * 时间补零\n */\n zeroFill = (i) => {\n if (i >= 0 && i <= 9) {\n return \"0\" + i;\n } else {\n return i;\n }\n }\n\n // 获取预览数据\n getShowData = (val, type) => {\n if(type == \"field\") {\n this.setState({timefield: val}, () => {\n // 获取预览数据\n this.fetchItems()\n })\n }\n if(type == \"date\") {\n this.setState({dateRange: val}, () => {\n // 获取预览数据\n this.fetchItems()\n })\n }\n }\n\n fetchItems() {\n let that = this\n const params = { target_id: this.state.id }\n if (this.state.dateRange && this.state.dateRange.length > 0) {\n params.start_time = formatTime(+new Date(this.state.dateRange[0]), 0)\n params.end_time = formatTime(+new Date(this.state.dateRange[1]), 0)\n }\n\n if(params.target_id == 0 || params.target_id == \"\") {\n return\n }\n that.setState({tableShowData: false})\n getTargetResults(params).then(res => {\n that.setState({tableShowData: true})\n let items = []\n let theader = []\n let total = 0\n if (res.data.code === 0) {\n const tmp = res.data.data.data || []\n total = res.data.data.total || 0\n let cost_time = res.data.data.cost_time || 0\n tmp.forEach((v, k) => {\n if (k < 100) {\n if (Object.keys(v).length > Object.keys(theader).length) {\n for (let i in v) {\n theader.push(i)\n }\n }\n items.push(v)\n }\n });\n if (res.data.data.header) {\n theader = res.data.data.header\n }\n\n let pagination = {...this.state.pagination}\n pagination.items = items\n pagination.total = total\n pagination.cost_time = cost_time\n that.setState({\n theader: theader,\n pagination: pagination\n })\n } else {\n SdwMessage.error(\"查询异常:\" + (res.data.msg || \"请求超时\"))\n }\n })\n }\n\n gettest = (fieldData) => {\n let dateFieldList = [];\n let timefield = \"\";\n if (fieldData.length > 0) {\n for (let i in fieldData) {\n const v = fieldData[i];\n if (v.field_type.includes(\"date\")) {\n dateFieldList.push(v);\n }\n }\n if (dateFieldList.length >0){\n timefield = dateFieldList[0].field_name;\n }\n\n }\n this.setState({\n tableFields: dateFieldList,\n timefield: timefield\n })\n }\n\n closeDialog = () => {\n this.setState({dialogVisible: false})\n this.props.closeDialog()\n }\n\n // 获取表标题\n getcolumns = () => {\n let columnData = this.state.theader\n\n let columns = []\n\n for(let i in columnData) {\n let item = {\n title: columnData[i],\n width: \"150\",\n dataIndex: columnData[i],\n }\n columns.push(item)\n }\n\n return columns\n }\n\n render () {\n var { dateRange, timefield, pagination, tableShowData } = this.state;\n\n // 字段解析\n let tableFields = this.state.tableFields.map(i => {\n return {\n id: i.field_name,\n text: i.field_name_ch + '(' + i.field_name + ')'\n }\n })\n\n return (\n
\n this.closeDialog() }\n lockScroll={ false }\n >\n \n
\n
\n
\n {\n this.getShowData(date, \"date\")\n }}\n />\n
\n
\n\n {/*
共{pagination.total}条
*/}\n
共耗时{pagination.cost_time}秒,共{pagination.total}条,展示{pagination.items.length}条
\n
\n\n
\n \n \n \n
\n
\n \n
\n )\n }\n}\n\nexport default DialogVisible\n","import React, { PureComponent } from 'react'\nimport { DateRangePicker } from 'element-react'\nimport SdwMessage from '@common/Message'\nimport SdwDialog from '@common/Dialog'\nimport 'element-theme-default'\nimport './style/DialogShowRunData.css'\nimport PropTypes from 'prop-types'\nimport { runTargetResult, runTargetResultAuth } from '@services/Derived'\nimport { formatTime } from '@utils/formatTime'\nimport _ from 'lodash'\nimport { hasPriv } from \"@components/FrontendAuth/AuthMap\"\n\nclass DialogVisible extends PureComponent {\n constructor(props) {\n super(props);\n }\n\n state = {\n data: [],\n dateRange: [],\n dialogVisible: false,\n hasReRunPriv: false, // 是否有重跑权限\n }\n\n // 可传递的参数\n static propTypes = {\n closeDialog: PropTypes.object,\n }\n\n // 属性默认值\n static defaultProps = {\n closeDialog: () => {},\n };\n\n componentDidMount () {\n this.initData()\n // 初始化预览数据的时间选择器的默认时间\n this.getShowDataDefauteTime()\n }\n\n componentDidUpdate (prevProps, prevState) {\n if (prevProps.dialogVisible !== this.props.dialogVisible) {\n this.initData()\n }\n }\n\n initData = () => {\n console.log('----hasReRunPriv: ', hasPriv('targetV2RunTargetResult'));\n this.setState({\n dialogVisible: this.props.dialogVisible,\n data: this.props.data || [],\n hasReRunPriv: hasPriv('targetV2RunTargetResult')\n })\n }\n\n // 获取昨天时间和今天时间\n getShowDataDefauteTime = () => {\n var date = new Date();//当前时间\n var year = date.getFullYear()\n var month = this.zeroFill(date.getMonth() + 1);//月\n var day = this.zeroFill(date.getDate());//日\n let startTime = year + \"/\" + month + \"/\" + day + \" 00:00:00\"\n\n var s = startTime\n startTime = new Date(s);\n\n var date2 = new Date();//当前时间\n date2 = new Date(date2.getTime() + 24*60*60*1000);\n year = date2.getFullYear()\n month = this.zeroFill(date2.getMonth() + 1);//月\n day = this.zeroFill(date2.getDate());//日\n let endTime = year + \"/\" + month + \"/\" + day + \" 00:00:00\"\n\n s = endTime\n endTime = new Date(s);\n\n this.setState({dateRange: [startTime, endTime]})\n }\n\n /**\n * 时间补零\n */\n zeroFill = (i) => {\n if (i >= 0 && i <= 9) {\n return \"0\" + i;\n } else {\n return i;\n }\n }\n\n // 获取预览数据\n getShowData = (val, type) => {\n if(type == \"date\") {\n this.setState({dateRange: val})\n }\n }\n\n fetchItems() {\n if (this.state.data.length === 0) {\n return\n }\n let params = {}\n let target_id = []\n this.state.data.map(item => {\n target_id.push(item)\n })\n params[\"tid\"] = target_id.join(\",\")\n if (this.state.dateRange && this.state.dateRange.length > 0) {\n params[\"start_time\"] = formatTime(+new Date(this.state.dateRange[0]), 0)\n params[\"end_time\"] = formatTime(+new Date(this.state.dateRange[1]), 0)\n }\n\n const API = this.state.hasReRunPriv ? runTargetResult : runTargetResultAuth\n\n API(params).then(res => {\n this.closeDialog()\n if (res.data.code === 0) {\n SdwMessage.success(\"重跑任务提交成功\")\n } else {\n let msg = _.get(res, 'data.msg') || '重跑任务提交失败'\n SdwMessage.error(msg)\n }\n })\n }\n\n closeDialog = () => {\n this.setState({dialogVisible: false})\n this.props.closeDialog()\n }\n\n render () {\n var { dateRange, hasReRunPriv } = this.state;\n\n return (\n
\n {this.fetchItems()}}\n onCancelClick={() => this.closeDialog()}\n sureText={hasReRunPriv ? \"确定\" : \"提交审批\"}\n >\n
\n 时间\n time.getTime() > (Date.now() + 24*60*60*1000)}\n isShowTime={true}\n format=\"yyyy-MM-dd HH:mm:ss\"\n onChange={date=>{\n this.getShowData(date, \"date\")\n }}\n />\n
\n \n
\n )\n }\n}\n\nexport default DialogVisible\n","export const Mapping = {\n float_rate: '变化率型',\n float_cnt: '变化量型',\n daily_avg: '均值型',\n rank: '排名型',\n \"\": '区域性',\n filter: '过滤型',\n rank_rate: '击败率型'\n}\n\n// 变化率--变化类型\nexport const CHECKED_OPTION = [{\n key: 'day_annulus',\n timeCycle: '1d',\n text: '日环比(1d)'\n}, {\n key: '7day_avg',\n timeCycle: '1d',\n text: '前7天均值日环比(1d)'\n}, {\n key: '14day_avg',\n timeCycle: '1d',\n text: '前14天均值日环比(1d)'\n}, {\n key: 'day_annulus',\n timeCycle: 'b2d',\n text: '日环比(b2d)'\n}, {\n key: 'day_annulus',\n timeCycle: 'b3d',\n text: '日环比(b3d)'\n}, {\n key: 'day_annulus',\n timeCycle: '7d',\n text: '累计日环比(7d)'\n}, {\n key: 'week_annulus',\n timeCycle: 'wtd',\n text: '周环比(wtd)'\n}, {\n key: 'week_same',\n timeCycle: '7d',\n text: '周同比(7d)'\n}, {\n key: 'day_annulus',\n timeCycle: '30d',\n text: '累计日环比(30d)'\n}, {\n key: 'week_same',\n timeCycle: '30d',\n text: '周同比(30d)'\n}, {\n key: 'day_annulus',\n timeCycle: '90d',\n text: '累计日环比(90d)'\n}, {\n key: 'day_annulus',\n timeCycle: '180d',\n text: '累计日环比(180d)'\n}, {\n key: 'month_annulus',\n timeCycle: 'mtd',\n text: '月环比(mtd)'\n}, {\n key: 'month_annulus',\n timeCycle: 'asm',\n text: '月环比(asm)'\n}, {\n key: 'month_day#avg#annulus',\n timeCycle: 'mtd',\n text: '日均值环比(mtd)'\n}, {\n key: 'week_day#avg#annulus',\n timeCycle: 'wtd',\n text: '日均值环比(wtd)'\n}]\n\n// 变化量--变化类型\nexport const CHECKED_OPTION1 = [{\n key: 'day_annulus',\n timeCycle: '1d',\n text: '近1天变化量(1d)'\n}, {\n key: '7day_avg',\n timeCycle: '1d',\n text: '前7天均值日变化量(1d)'\n}, {\n key: '14day_avg',\n timeCycle: '1d',\n text: '前14天均值日变化量(1d)'\n}, {\n key: 'day_annulus',\n timeCycle: 'b2d',\n text: '近一天变化量(b2d)'\n}, {\n key: 'day_annulus',\n timeCycle: 'b3d',\n text: '近一天变化量(b3d)'\n}, {\n key: 'day_annulus',\n timeCycle: '7d',\n text: '近1天变化量(7d)'\n}, {\n key: 'day_annulus',\n timeCycle: '30d',\n text: '近1天变化量(30d)'\n}, {\n key: 'week_annulus',\n timeCycle: 'wtd',\n text: '近1周变化量(wtd)'\n}, {\n key: 'week_annulus',\n timeCycle: '30d',\n text: '周同比变化量(30d)'\n}, {\n key: 'day_annulus',\n timeCycle: '90d',\n text: '近1天变化量(90d)'\n}, {\n key: 'day_annulus',\n timeCycle: '180d',\n text: '近1天变化量(180d)'\n}, {\n key: 'month_annulus',\n timeCycle: 'mtd',\n text: '近1个月变化量(mtd)'\n}, {\n key: 'month_annulus',\n timeCycle: 'asm',\n text: '近1个绩效月变化量(asm)'\n}, {\n key: 'month_day#avg#annulus',\n timeCycle: 'mtd',\n text: '日均值变化量(mtd)'\n}, {\n key: 'week_day#avg#annulus',\n timeCycle: 'wtd',\n text: '日均值变化量(wtd)'\n}]\n\n// 均值型--变化类型\nexport const CHECKED_OPTION2 = [{\n key: 'day_avg',\n timeCycle: 'mtd',\n text: '日均值(mtd)'\n}, {\n key: 'day_avg',\n timeCycle: 'wtd',\n text: '日均值(wtd)'\n}]\n\n// 变化率--变化类型--对应中英文命名的后缀:键值是:[`${float_type}_${time_cycle}`]\nexport const RATE_NAME_MAP = {\n 'day_annulus_1d': {\n cn: '_1d日环比',\n en: '_1drh_dbl'\n },\n '7day_avg_1d': {\n cn: '_1d7天均值日环比',\n en: '_1drh_7avg_dbl'\n },\n '14day_avg_1d': {\n cn: '_1d14天均值日环比',\n en: '_1drh_14avg_dbl'\n },\n 'day_annulus_b2d': {\n cn: '_b2d日环比',\n en: '_b2drh_dbl'\n },\n 'day_annulus_b3d': {\n cn: '_b3d日环比',\n en: '_b3drh_dbl'\n },\n 'day_annulus_7d': {\n cn: '_7d累计日环比',\n en: '_7drh_dbl'\n },\n 'week_same_7d': {\n cn: '_7d周同比',\n en: '_7dzt_dbl'\n },\n 'week_annulus_wtd': {\n cn: '_wtd周环比',\n en: '_wtdrt_dbl'\n },\n 'day_annulus_30d': {\n cn: '_30d累计日环比',\n en: '_30drh_dbl'\n },\n 'week_same_30d': {\n cn: '_30d周同比',\n en: '_30dzt_dbl'\n },\n 'day_annulus_90d': {\n cn: '_90d累计日环比',\n en: '_90drh_dbl'\n },\n 'day_annulus_180d': {\n cn: '_180d累计日环比',\n en: '_180drh_dbl'\n },\n 'month_annulus_mtd': {\n cn: '_mtd月环比',\n en: '_zmh_dbl'\n },\n 'month_day#avg#annulus_mtd': {\n cn: '_mtd日均值环比',\n en: '_mtd_davgh_dbl'\n },\n 'month_annulus_asm': {\n cn: '_asm月环比',\n en: '_amh_dbl'\n },\n 'week_day#avg#annulus_wtd': {\n cn: '_wtd日均值环比',\n en: '_wtd_davgh_dbl'\n }\n}\n\n// 变化量--变化类型--对应中英文命名的后缀:键值是:[`${float_type}_${time_cycle}`]\nexport const CNT_NAME_MAP = {\n 'day_annulus_1d': {\n cn: '_1d变化量',\n en: '_1d_dbl'\n },\n '7day_avg_1d': {\n cn: '_1d7天均值日变化量',\n en: '_1d_7avg_dbl'\n },\n '14day_avg_1d': {\n cn: '_1d14天均值日变化量',\n en: '_1d_14avg_dbl'\n },\n 'day_annulus_b2d': {\n cn: '_b2d变化量',\n en: '_b2d_dbl'\n },\n 'day_annulus_b3d': {\n cn: '_b3d变化量',\n en: '_b3d_dbl'\n },\n 'day_annulus_7d': {\n cn: '_7d变化量',\n en: '_7d_dbl'\n },\n 'day_annulus_30d': {\n cn: '_30d变化量',\n en: '_30d_dbl'\n },\n 'week_annulus_30d': {\n cn: '_30d周同比变化量',\n en: '_30dztl_dbl'\n },\n 'day_annulus_90d': {\n cn: '_90d变化量',\n en: '_90d_dbl'\n },\n 'day_annulus_180d': {\n cn: '_180d变化量',\n en: '_180d_dbl'\n },\n 'week_annulus_wtd': {\n cn: '_wtd近1周变化量',\n en: '_wtd_dbl'\n },\n 'week_day#avg#annulus_wtd': {\n cn: '_wtd日均值变化量',\n en: '_wtd_davgc_dbl'\n },\n 'month_annulus_mtd': {\n cn: '_1m变化量',\n en: '_1m_dbl'\n },\n 'month_day#avg#annulus_mtd': {\n cn: '_mtd日均值变化量',\n en: '_mtd_davgc_dbl'\n },\n 'month_annulus_asm': {\n cn: '_asm变化量',\n en: '_asm_dbl'\n }\n}\n\n// 均值型--变化类型--对应中英文命名的后缀:键值是:[`${float_type}_${time_cycle}`]\nexport const AVG_NAME_MAP = {\n 'day_avg_mtd': {\n cn: '_mtd日均值',\n en: '_mtd_davg_dbl'\n },\n 'day_avg_wtd': {\n cn: '_wtd日均值',\n en: '_wtd_davg_dbl'\n }\n}\n\n// Json\n\n// Assign\n\n// setState\n","import React, { PureComponent } from 'react'\nimport SdwSelect from '@common/Select'\nimport SdwSwitch from '@common/Switch'\nimport { Mapping } from '../util'\nimport { getTablecfgFieldsAndStandardList } from '@services/Derived'\n\nclass AddIndicators extends PureComponent {\n state = {\n sourceFieldData: []\n }\n componentDidUpdate (prevProps, prevState) {\n let id = this.props.item.group_by_field.id\n if (prevProps.item.group_by_field.id !== id) {\n this.onGetTablecfgFieldsAndStandardList(id)\n }\n }\n componentDidMount () {\n let id = this.props.item.group_by_field.id\n this.onGetTablecfgFieldsAndStandardList(id)\n }\n // 来源字段和范围字段\n onGetTablecfgFieldsAndStandardList = id => {\n getTablecfgFieldsAndStandardList({ id })\n .then(res => {\n if (res && res.data && res.data.code === 0) {\n let record = res.data.data || {}\n let field = Array.isArray(record.field) ? record.field : []\n let standardMap = record.standardMap || {}\n let curArr = field.map(i => {\n let ID = i.id\n let text = !!standardMap[ID] ? `${i.field_name}(${standardMap[ID].field_name_ch})` : i.field_name\n return {\n originID: ID,\n id: text,\n text: text\n }\n })\n this.setState({\n sourceFieldData: curArr\n })\n }\n })\n }\n render() {\n const { item, index, rankDimensionData, rangeRankData, runCycle, timeCycle } = this.props\n const { complex_script, store_dimension, group_by_field, time_schedule } = item\n const rankDimention = (store_dimension.length > 0 && store_dimension[0].id[0]) || ''\n const { id: group_by_field_Id, key: group_by_field_key, value: group_by_field_value } = group_by_field || {}\n // function\n const { showOrhideContent, setComplexScript, setRankDimension, setRankRange, setSourceOrRangeField, configDataChange, addVirtualProperty2, removeVirtualProperty2, enableStateChange } = this.props\n return (\n
\n
\n
showOrhideContent(item, index, 'addData')}>\n
衍生指标-{Mapping[item.metric_type]}{item.complex_script === 'asc' ? '(升序)' : item.complex_script === 'desc' ? '(降序)' : ''}{!!item.id ? `(${item.id})`: ''}
\n
\n
\n
\n
\n
\n 排名类型\n
\n !!value.length ? true : '排名类型不能为空'}\n sholdCheckValidate={item.disabledCheck}\n onChange={val => setComplexScript(index, val)}\n />\n
\n
\n
\n 排名维度\n
\n !!value ? true : '排名维度不能为空'}\n sholdCheckValidate={item.disabledCheck}\n onChange={val => setRankDimension(index, val)}\n />\n
\n
\n
\n 排名范围\n
\n setRankRange(index, val)}\n />\n
\n
\n
\n \n \n setSourceOrRangeField(index, val, 'key')}\n />\n \n setSourceOrRangeField(index, val, 'value')}\n />\n \n
\n
\n 时间周期\n
\n {\n Array.isArray(time_schedule) && time_schedule.map((row, k) => {\n return (\n
\n !!value ? true : '时间周期不能为空'}\n onChange={val => configDataChange(val, 'time_schedule_time_cycle', k, index)} />\n !!value ? true : '运行频率不能为空'}\n onChange={val => configDataChange(val, 'store_dimension_run_cycle', k, index)} />\n addVirtualProperty2(index)} className=\"el-icon-plus\">\n { k > 0 && ( removeVirtualProperty2(k, index)} className=\"el-icon-minus\">)}\n
\n )\n })\n }\n\n
\n
\n
\n 是否启用\n
\n enableStateChange(val, item, index,'addData')}\n />\n
\n
\n
\n
\n
\n
\n )\n }\n}\n\nexport default AddIndicators\n","import React, { PureComponent } from 'react'\n\nimport 'element-theme-default'\nimport '../style/showFilterData.css'\nimport SdwInput from '@common/Input'\nimport SdwSelect from '@common/Select'\nimport SdwRadiobox from '@common/Radiobox'\nimport SdwSwitch from '@common/Switch'\nimport SdwDialog from '@common/Dialog'\n\nclass DialogVisible extends PureComponent {\n constructor(props) {\n super(props);\n }\n validateFun = (curValue, label = '') => {\n if (typeof curValue != 'object' && (typeof curValue === 'number' || !!curValue.trim())) {\n return true\n }\n return `${label}不能为空`\n }\n\n closeDialog = () => {\n this.props.closeDialog()\n }\n\n\n render () {\n const { item, index, rankDimensionData ,timeCycle, baseInfo, dialogVisible} = this.props\n\n const {store_dimension, time_schedule } = item\n\n // function\n const { handleSubmit,setRankDimension, enableStateChange, setAddFilterValue } = this.props\n let time_schedule_obj = JSON.parse(baseInfo.time_schedule)\n let timeCycles = []\n for (let i in timeCycle) {\n for (let j in time_schedule_obj) {\n if (time_schedule_obj[j].time_cycle == timeCycle[i].id) {\n timeCycles.push(timeCycle[i])\n }\n }\n }\n let time_schedules = []\n for (let i in timeCycle) {\n for (let j in time_schedule) {\n if (time_schedule[j].time_cycle == timeCycle[i].id) {\n time_schedules.push(timeCycle[i])\n }\n }\n }\n const rankDimention = (store_dimension.length > 0 && store_dimension[0].id[0]) || ''\n return (\n
\n this.closeDialog() }\n lockScroll={ false }\n >\n
\n 过滤维度\n !!value ? true : '维度不能为空'}\n sholdCheckValidate={item.disabledCheck}\n onChange={val => setRankDimension(val)} />\n
\n
\n 时间周期\n setAddFilterValue( \"time_schedule\",val)}\n sholdCheckValidate={item.disabledCheck}\n validateFun={value => !!value ? true : '时间周期不能为空'}\n />\n
\n
\n 过滤语法\n setAddFilterValue( \"cal_expression\", val)}\n sholdCheckValidate={item.disabledCheck}\n validateFun={value => !!value ? true : '过滤语法不能为空'}\n />\n
\n
\n 指标英文名\n setAddFilterValue( \"target_name\", val)}\n sholdCheckValidate={item.disabledCheck}\n validateFun={value => !!value ? true : '英文名不能为空'}\n />\n
\n
\n 指标中文名\n !!value ? true : '中文名不能为空'}\n sholdCheckValidate={item.disabledCheck}\n onChange={val => setAddFilterValue( \"target_name_cn\", val)}\n />\n
\n
\n 是否启用\n enableStateChange(val)}\n />\n
\n \n
\n )\n }\n}\n\nexport default DialogVisible\n","import React, { PureComponent } from 'react'\nimport SdwTable from '@common/Table'\nimport { Button } from \"element-react\"\nimport _ from 'lodash'\nimport { formatJsonParse } from '@utils/formatJson'\nimport DialogShowFilterData from './DialogShowFilterData'\n\nclass AddFilter extends PureComponent {\n state = {\n index:-1,\n isShow: true,\n enable: true,\n dialogVisible: false,\n addData: [],\n filterDataList:[],\n currentRecord: {},\n }\n componentDidMount() {\n let filterDataList = [...this.props.filterDataList]\n let enable = filterDataList.length > 0 ? true : false\n this.setState({\n enable: enable,\n filterDataList: filterDataList\n })\n }\n componentDidUpdate(prevProps, prevState, snapshot) {\n if (prevProps.filterDataList != this.props.filterDataList) {\n let enable = this.props.filterDataList.length > 0 ? true : false\n let filterDataListNew = [...this.props.filterDataList]\n this.setState({\n enable: enable,\n filterDataList: filterDataListNew\n })\n }\n }\n\n showFilterContent = () => {\n let isShow = this.state.isShow\n this.setState({\n isShow: !isShow\n })\n }\n //过滤型-设置数据\n setAddFilterValue = (type, value) => {\n let currentRecord = {...this.state.currentRecord}\n let arrChangeOne = _.cloneDeep(currentRecord)\n switch (type) {\n case \"cal_expression\" :\n arrChangeOne.cal_expression = value\n break\n case \"target_name\" :\n arrChangeOne.target_name = value\n break\n case \"target_name_cn\" :\n arrChangeOne.target_name_cn = value\n break\n case \"time_schedule\" :\n let time_schedule = JSON.parse(this.props.baseInfo.time_schedule)\n let time_schedules = []\n for (let i in time_schedule) {\n for (let j in value) {\n if (time_schedule[i].time_cycle == value[j].id) {\n time_schedules.push(time_schedule[i])\n }\n }\n }\n arrChangeOne.time_schedule = time_schedules\n break\n }\n arrChangeOne.enable = 0\n this.setState({\n currentRecord: arrChangeOne\n })\n }\n // 设置排名维度值\n setRankDimension = (value) => {\n let currentRecord = {...this.state.currentRecord}\n currentRecord.store_dimension = !!value ? [{ id: [value] }] : [{ id: [] }]\n currentRecord.enable = 0\n this.setState({\n currentRecord: currentRecord\n })\n }\n handleSubmit = () => {\n let flag = this.validateIndicateItemValue()\n if (!flag) {\n return\n }\n let {currentRecord, filterDataList, index} = this.state\n let filterDataListNew = _.cloneDeep(filterDataList)\n if (index == -1) {\n filterDataListNew.push(currentRecord)\n } else {\n filterDataListNew[index] = currentRecord\n }\n console.log(\"======submit_currentRecord\", currentRecord)\n console.log(\"======filterDataListNew\", filterDataListNew)\n this.setState({\n dialogVisible:false,\n currentRecord:{},\n filterDataList:filterDataListNew\n })\n this.props.syncFilterDataList(filterDataListNew)\n // this.setState(function(prevState, props){\n // props.syncFilterDataList(filterDataListNew)\n // return {\n // dialogVisible:false,\n // currentRecord:{},\n // filterDataList:filterDataListNew\n // }\n // });\n }\n addIndicators = () => {\n let name = \"filter\"\n let array = this.state.filterDataList\n // 往formData里面push空的类型\n let obj = {\n key: `${name}${array.length}`,\n metric_type: \"filter\",\n metric_field: \"\",\n label: \"过滤型\",\n cal_expression: \"\",\n enable: 0,\n store_dimension: [{ id: [] }],\n time_schedule: [{ run_cycle: '', time_cycle: \"\" }],\n disabledCheck: false,\n isShow: true,\n target_name: \"\",\n target_name_cn: \"\",\n }\n this.setState({\n index:-1,\n currentRecord:obj,\n dialogVisible: true\n })\n // array.push(obj)\n // this.setState({\n // showAddList: false,\n // filterDataList: array\n // })\n }\n handleEdit = (data, index) => {\n this.setState({\n index:index,\n dialogVisible: true,\n currentRecord:data\n })\n }\n enableStateChange = (val) => {\n let currentRecord = {...this.state.currentRecord}\n if (val !== 0) {\n let flag = this.validateIndicateItemValue()\n if (!flag) return\n }\n currentRecord.disabledCheck = false //为 0 直接fasle 为1上边通过校验置为false\n currentRecord.enable = val\n this.setState({\n currentRecord:currentRecord\n })\n }\n validateIndicateItemValue = () => {\n // 区分是哪个指标 对应的指标check 不通过把对应指标的data里的disabledCheck置为true\n let currentRecord = {...this.state.currentRecord}\n let flag = currentRecord.store_dimension[0].id.length > 0 &&\n !!currentRecord.time_schedule.length > 0 &&\n !!currentRecord.time_schedule[0].time_cycle &&\n !!currentRecord.cal_expression &&\n !!currentRecord.metric_type &&\n !!currentRecord.target_name &&\n !!currentRecord.target_name_cn\n if (!flag) {\n currentRecord.disabledCheck = true\n } else {\n currentRecord.disabledCheck = false\n }\n this.setState({\n currentRecord:currentRecord\n })\n return flag\n }\n getColumns = () => {\n let self = this\n const columns = [\n {\n title: \"指标名称\",\n width: 160,\n render: (data, record) => {\n return (\n {`${data.target_name_cn}(${data.target_name})`}\n )\n }\n },\n {\n title: \"状态\",\n render: function(data, record) {\n return (\n <>\n {\n _.isEqual(typeof data.enable, 'number') && \n }\n {_.isEqual(typeof data.enable, 'number') ?\n (data.enable ? '有效' : '无效') : '-'}\n \n )\n }\n },\n {\n title: \"过滤维度\",\n width: 80,\n render: function(data, recode) {\n let sd = data.store_dimension\n if (_.isArray(sd)) {\n sd = sd.map(i => {\n const arr = _.isArray(i.id) ? i.id : []\n return arr.join('#')\n }).join('/')\n }\n return sd || \"-\"\n }\n },\n {\n title: \"过滤语句\",\n width: 96,\n dataIndex: \"cal_expression\",\n },\n {\n title: \"操作\",\n width: 80,\n render: (data, index) => {\n return this.handleEdit(data, index)}\n style={{ \"fontSize\": \"14px\" }}\n >编辑\n },\n }\n ]\n return columns\n }\n setAdd = (dialogVisible) => {\n this.setState({\n dialogVisible: dialogVisible\n })\n }\n\n render() {\n const { index,isShow,enable, filterDataList, dialogVisible, currentRecord } = this.state\n const { baseInfo, rankDimensionData, timeCycle } = this.props\n return (\n
\n
\n
this.showFilterContent()}>\n
衍生指标-过滤型\n
\n
\n
\n
\n
\n
\n \n
\n
\n {\n this.addIndicators()\n }}>新增\n
\n
\n
\n
\n
\n {/** 预览数据弹窗 */}\n {\n dialogVisible &&\n {\n this.setAdd(false)\n }}\n index={index}\n dialogVisible={dialogVisible}\n item={currentRecord}\n rankDimensionData={rankDimensionData}\n handleSubmit={this.handleSubmit}\n setRankDimension={this.setRankDimension}\n timeCycle={timeCycle}\n baseInfo={baseInfo}\n enableStateChange={this.enableStateChange}\n setAddFilterValue={this.setAddFilterValue}\n closeDialog={() => {\n this.setAdd(false)\n }}\n />\n }\n
\n )\n }\n}\nexport default AddFilter\n","import React, { PureComponent } from 'react'\nimport SdwSelect from '@common/Select'\nimport SdwSwitch from '@common/Switch'\nimport { Mapping } from '../util'\nimport { getTablecfgFieldsAndStandardList } from '@services/Derived'\nimport SdwInput from '@common/Input'\nimport SdwRadiobox from '@common/Radiobox'\nimport { getIndicatorConfItems } from '@api/operationConfiguration'\nimport _ from 'lodash'\n\nclass AddArea extends PureComponent {\n state = {\n \"measure_type_arr\":[{\"id\":0,text:\"求和\"}, {\"id\":1,text:\"计数\"}],\n }\n render() {\n const { item, index, rankDimensionData ,timeCycle, baseInfo} = this.props\n const { complex_script, store_dimension, group_by_field, time_schedule } = item\n let time_schedule_obj = JSON.parse(baseInfo.time_schedule)\n let timeCycles = []\n for (let i in timeCycle) {\n for (let j in time_schedule_obj) {\n if (time_schedule_obj[j].time_cycle == timeCycle[i].id) {\n timeCycles.push(timeCycle[i])\n }\n }\n }\n let time_schedules = []\n for (let i in timeCycle) {\n for (let j in time_schedule) {\n if (time_schedule[j].time_cycle == timeCycle[i].id) {\n time_schedules.push(timeCycle[i])\n }\n }\n }\n const rankDimention = (store_dimension.length > 0 && store_dimension[0].id[0]) || ''\n // function\n const { showOrhideContent, setRankDimension, setAreaData, addVirtualArea, removeVirtualArea, enableStateChange, setAddAreaValue } = this.props\n return (\n
\n
\n
showOrhideContent(item, index, 'addData')}>\n
衍生指标-区间型{complex_script === 'asc' ? '(升序)' : complex_script === 'desc' ? '(降序)' : ''}{!!item.id ? `(${item.id})`: ''}
\n
\n
\n
\n
\n
\n 指标命名\n \n !!value ? true : '英文名不能为空'}\n sholdCheckValidate={item.disabledCheck}\n onChange={val => setAddAreaValue(index, \"target_name\", val)}\n />\n \n !!value ? true : '中文名不能为空'}\n sholdCheckValidate={item.disabledCheck}\n onChange={val => setAddAreaValue(index, \"target_name_cn\", val)}\n />\n \n
\n
\n 指标属性\n
\n
\n !!value ? true : '维度不能为空'}\n sholdCheckValidate={item.disabledCheck}\n onChange={val => setRankDimension(index, val)} />\n \n setAddAreaValue(index, \"time_schedule\",val)}\n sholdCheckValidate={item.disabledCheck}\n validateFun={value => {\n return !!value ? true : '时间周期不能为空'\n }}\n />\n\n
\n
\n
\n 区间类型\n \n setAddAreaValue(index, \"group_by_field\",val)}\n />\n \n
\n
\n
\n 统计方式\n \n
\n {\n if (group_by_field==\"target_value\"){\n return true\n }\n return !!value ? true : '区间字段不能为空'\n }}\n sholdCheckValidate={item.disabledCheck}\n onChange={val => setAddAreaValue(index, \"metric_field\", val)}\n />\n !!value ? true : '度量方式不能为空'}\n onChange={val => setAddAreaValue(index, \"complex_script\", val)}\n />\n
\n\n
\n
\n
\n 区间设置\n
\n {\n Array.isArray(item.cal_expression) && item.cal_expression.map((row, k) => {\n return (\n
\n !!value ? true : '区间名称不能为空'}\n sholdCheckValidate={item.disabledCheck}\n onChange={val => setAreaData(val, 'range_name', index , k)}\n />\n {\n if (!value) {\n return '此处不能为空'\n }\n let val = Number(value)\n if (isNaN(val)) {\n return '只能填写数值'\n }\n }}\n sholdCheckValidate={item.disabledCheck}\n onChange={val => setAreaData(val, 'gte', index , k, \"start\")}\n />\n {\n if (!value) {\n return '此处不能为空'\n }\n let val = Number(value)\n if (isNaN(val)) {\n return '只能填写数值'\n }\n }}\n sholdCheckValidate={item.disabledCheck}\n onChange={val => setAreaData(val, 'lt', index, k, \"end\")}\n />\n addVirtualArea(index)} className=\"el-icon-plus\">\n { k > 0 && ( removeVirtualArea(k, index)} className=\"el-icon-minus\">)}\n
\n )\n })\n }\n\n
\n
\n
\n 是否启用\n
\n enableStateChange(val, item, index,'addData')}\n />\n
\n
\n
\n
\n
\n
\n )\n }\n}\n\nexport default AddArea\n","import React, { PureComponent } from 'react'\nimport _ from 'lodash'\nimport { Mapping } from '../util'\nimport SdwSelect from '@common/Select'\nimport SdwCheckbox from '@common/Checkbox'\nimport '../style/EditIndicatorsData.css'\n\nclass FloatIndicators extends PureComponent {\n\n validateFun = val => {\n // 先判断非禁用项,如果有一个勾选后,需要校验变化维度;否则不需要校验变化维度\n let { item, timeSchedule } = this.props\n let cal_expression_list = item.cal_expression_list || []\n let notValidate = cal_expression_list.filter(i => timeSchedule.some(j => j.time_cycle === i.time_cycle)).every(k => !k.enable)\n let isPass = notValidate || !!val.length\n\n return isPass || '变化维度不能为空'\n }\n\n render() {\n const {\n item,\n index,\n checkedOption,\n rankDimensionData,\n timeSchedule,\n sholdCheckValidate,\n setCheckedValue,\n setChangeDimensions,\n showOrhideContent,\n dimensionTitle,\n typeTitle\n } = this.props\n\n console.log(\"=====------------------------------------------------metric_type\", item.metric_type)\n console.log(\"=====checkedOption\", checkedOption)\n console.log(\"=====timeSchedule\", timeSchedule)\n\n let {store_dimension, cal_expression_list} = item\n let changeDimension = typeof store_dimension === 'string' ? [] : _.map(store_dimension, item => {\n return item.id[0] || ''\n }) || []\n cal_expression_list = _.isArray(cal_expression_list) ? cal_expression_list : []\n let ids = cal_expression_list.map(i => i.enable && i.id).filter(j => !!j).join()\n let hasEnabled = cal_expression_list.some(i => i.enable)\n\n return (\n
\n
showOrhideContent(item, index, 'formData')}>\n
衍生指标-{Mapping[item.metric_type]}{item.complex_script === 'asc' ? '(升序)' : item.complex_script === 'desc' ? '(降序)' : ''}{!!ids ? `(${ids})`: ''}
\n
\n
\n
\n
\n
\n {dimensionTitle}\n
\n changeDimension.includes(i.id))}\n data={rankDimensionData}\n onChange={val => setChangeDimensions(index, val)}\n sholdCheckValidate={sholdCheckValidate}\n validateFun={this.validateFun}\n />\n
\n
\n
\n {typeTitle}\n
\n {\n checkedOption.map((checkItem, checkItemIndex) => {\n let isChecked = cal_expression_list.some(i => i.float_type === checkItem.key && i.time_cycle === checkItem.timeCycle && i.enable)\n return (\n i.time_cycle === checkItem.timeCycle)}\n key={checkItem.key + checkItem.timeCycle}\n text={checkItem.text}\n isChecked={ isChecked }\n changeCheckedFun={() => setCheckedValue(index, checkItem, +!isChecked)}\n />\n )\n })\n }\n
\n
\n
\n
\n
\n )\n }\n}\n\nexport default FloatIndicators\n","import React, { createRef, PureComponent } from 'react'\nimport SdwDrawer from '@common/Drawer'\nimport SdwInput from '@common/Input'\nimport SdwMessage from '@common/Message'\n\nimport { getTargetPage, getAllTablecfg, getTablecfgFieldsAndStandardList, storeOrUpdateDerive } from '@services/Derived'\nimport { getTargetCfgById } from '@services/application'\n\nimport '../style/EditIndicatorsData.css'\nimport AddIndicators from \"./AddIndicators\"\nimport AddFilter from './AddFilter'\nimport AddArea from './AddArea'\nimport FloatIndicators from \"./FloatIndicators\";\nimport { formatJsonParse } from \"@utils/formatJson\";\nimport _ from 'lodash'\nimport { CHECKED_OPTION, CHECKED_OPTION1, CHECKED_OPTION2, RATE_NAME_MAP, CNT_NAME_MAP, AVG_NAME_MAP } from '../util'\n\nclass EditIndicatorsData2 extends PureComponent {\n\n constructor(props) {\n super(props)\n this.addListRef = createRef()\n }\n\n state = {\n sourceIndicators: '',\n comments: '',\n rankDimensionData: [], // 排名维度option\n indexAttrTime: [], // 区间型-指标属性-时间周期\n rangeRankData: [], // 排名范围option\n // sourceFieldData: [], // 来源字段和范围字段\n formData: [{\n key: 'float_rate',\n metric_type: 'float_rate',\n enable: 0,\n text: '日环比',\n store_dimension: JSON.stringify([{ id: [] }]),\n cal_expression: JSON.stringify([{ time_cycle: \"1d\", float_type: ['day_annulus'] }]),\n group_by_field: JSON.stringify({ id: \"\", key: \"\", value: \"\" }),\n disabledCheck: false,\n isShow: true\n }, {\n key: 'float_cnt',\n metric_type: 'float_cnt',\n enable: 0,\n text: '近一天变化量',\n store_dimension: JSON.stringify([{ id: [] }]),\n cal_expression: JSON.stringify([{ time_cycle: \"1d\", float_type: ['day_annulus'] }]),\n group_by_field: JSON.stringify({ id: \"\", key: \"\", value: \"\" }),\n disabledCheck: false,\n isShow: true\n }, {\n key: 'daily_avg',\n metric_type: 'daily_avg',\n enable: 0,\n text: '日均值',\n store_dimension: JSON.stringify([{ id: [] }]),\n cal_expression: JSON.stringify([{ time_cycle: \"mtd\", float_type: ['day_avg'] }]),\n group_by_field: JSON.stringify({ id: \"\", key: \"\", value: \"\" }),\n disabledCheck: false,\n isShow: true\n }],\n addData: [],\n filterDataList: [],\n checkedOption: [],\n checkedOption1: [],\n checkedOption2: [],\n showAddList: false, // 展开新增列表\n timeSchedule: [],\n sholdCheckValidate: false,\n }\n\n componentDidMount() {\n const ID = this.props.record.curRecord.id\n document.addEventListener('click', this.handleGlobalClose)\n this.initData()\n this.onGetTargetCfgById(ID)\n this.onGetTablecfg()\n }\n\n componentWillUnmount() {\n document.removeEventListener('click', this.handleGlobalClose)\n }\n\n handleGlobalClose = e => {\n if (e.target.innerHTML === '新增') {\n return\n }\n const node = this.addListRef.current\n if (!node.contains(e.target)) {\n this.setState({\n showAddList: false,\n })\n }\n }\n\n // 增加按钮列表的显示隐藏\n showOrhideAddList = () => {\n this.setState({\n showAddList: !this.state.showAddList,\n })\n }\n\n // 指标项的内容的显示隐藏\n showOrhideContent = (item, index, type) => {\n const array = type === 'addData' ? _.cloneDeep(this.state.addData) : _.cloneDeep(this.state.formData)\n array[index].isShow = !array[index].isShow\n type === 'addData' ? this.setState({ addData: array }) : this.setState({ formData: array })\n }\n\n onGetTargetPage = record => {\n let ID = record.id\n if (!ID) return\n const params = {}\n params.search = JSON.stringify({\n id: {\n value: ID,\n operator: \"=\"\n }\n })\n }\n\n initData = () => {\n const record = this.props.record.curRecord\n const ID = record.id\n // 初始化来源指标和描述\n const sourceIndicators = `${record.target_name_cn}(${record.target_name})`\n const comments = record.comments\n this.setState({\n comments,\n sourceIndicators\n })\n if (!ID) return\n const params = {}\n params.search = JSON.stringify({\n id: {\n value: ID,\n operator: \"=\"\n }\n })\n\n getTargetPage(params).then(res => {\n let time_chedule = _.get(res, 'data.data.items[0].time_schedule')\n time_chedule = typeof time_chedule === 'string' ? formatJsonParse(time_chedule) : []\n let derivativeTargets = _.get(res, 'data.data.items[0].derivativeTargets')\n derivativeTargets = _.isArray(derivativeTargets) ? derivativeTargets : []\n this.setState({ timeSchedule: time_chedule })\n this.initCheckOption(time_chedule, derivativeTargets)\n const result = _.get(res, 'data.data.items[0].derivativeTargets')\n const formData = this.state.formData\n if (!result) {\n formData.forEach(ele => {\n ele.source_targets = ID + ''\n ele.store_dimension = formatJsonParse(ele.store_dimension)\n ele.cal_expression = formatJsonParse(ele.cal_expression)\n ele.group_by_field = formatJsonParse(ele.group_by_field)\n });\n return\n }\n\n // 筛选固定的三项和新增的若干项,setState\n let array1 = []\n\n let numOne = _.filter(result, { 'metric_type': 'float_rate' })\n // 当第一次新增时没启用的 后端不下发回前端 这时使用前端定义的初始化数据\n if (numOne.length === 0) numOne = _.filter(formData, { 'metric_type': 'float_rate' })\n\n let numTwo = _.filter(result, { 'metric_type': 'float_cnt' })\n if (numTwo.length === 0) numTwo = _.filter(formData, { 'metric_type': 'float_cnt' })\n\n let numThree = _.filter(result, { 'metric_type': 'daily_avg' })\n if (numThree.length === 0) numThree = _.filter(formData, { 'metric_type': 'daily_avg' })\n\n array1 = array1.concat(numOne, numTwo, numThree)\n const array2 = result.filter(ele => ele.metric_type !== \"float_rate\" && ele.metric_type !== \"float_cnt\" && ele.metric_type !== \"daily_avg\")\n // 初始化变化率、变化量型和均值型 与排名型和击败率型\n this.initArrayIndicator(array1, ID)\n // 对解析之后的array1进行组装(当前返回值是每一个变化类型对应一条数组对象,然而界面却是将变化型、变化率显示在同一个框下)\n let formatArr1 = this.formatArray1(array1)\n this.initArrayIndicator(array2, ID)\n this.setState({\n formData: formatArr1,\n addData: array2\n })\n })\n }\n\n initArrayIndicator = (arr, id) => {\n // 加上缺少的项 再把json转化下\n arr.forEach(ele => {\n ele.key = ele.id\n ele.source_targets = id + ''\n ele.time_schedule = formatJsonParse(ele.time_schedule)\n ele.store_dimension = formatJsonParse(ele.store_dimension)\n if (ele.metric_type != \"filter\") {\n ele.cal_expression = formatJsonParse(ele.cal_expression)\n }\n if (ele.metric_type != \"range\") {\n ele.group_by_field = formatJsonParse(ele.group_by_field)\n }\n ele.isShow = true\n });\n }\n\n // 依据接口 time_chedule 字段,提供变化率、变化量的变化类型显示个数\n initCheckOption = (arr, derivativeTargets) => {\n let olderTimeCycleList = derivativeTargets.reduce((prev, item) => {\n let cal_expression = formatJsonParse(item.cal_expression || '', [])\n if (_.isArray(cal_expression)) {\n prev = prev.concat(cal_expression.map(i => i.time_cycle))\n }\n prev = _.uniq(prev)\n return prev\n }, [])\n let option = CHECKED_OPTION.filter(i => arr.some(j => j.time_cycle === i.timeCycle) || olderTimeCycleList.includes(i.timeCycle))\n let option1 = CHECKED_OPTION1.filter(i => arr.some(j => j.time_cycle === i.timeCycle) || olderTimeCycleList.includes(i.timeCycle))\n let option2 = CHECKED_OPTION2.filter(i => arr.some(j => j.time_cycle === i.timeCycle) || olderTimeCycleList.includes(i.timeCycle))\n this.setState({\n checkedOption: option,\n checkedOption1: option1,\n checkedOption2: option2,\n })\n }\n\n formatArray1 = arr => {\n let list = []\n // 将metric_type分为三类:\"float_rate\"、\"float_cnt\"、\"daily_avg\"\n let metricTypeMap = _.groupBy(arr, 'metric_type')\n _.keys(metricTypeMap).forEach(key => {\n let valArr = metricTypeMap[key]\n if (_.isArray(valArr) && valArr.length) {\n // 生成新的项,供界面交互\n let cal_expression_list = valArr.map(item => {\n return {\n id: item.id,\n enable: item.enable, // 是否勾选(该指标是否启用)\n time_cycle: _.get(item, 'cal_expression[0].time_cycle'),\n float_type: _.get(item, 'cal_expression[0].float_type[0]'),\n cal_expression: item.cal_expression\n }\n })\n let obj = _.cloneDeep(valArr[0])\n delete obj.id\n delete obj.cal_expression\n obj.cal_expression_list = cal_expression_list\n list.push(obj)\n }\n })\n return list\n }\n\n // 排名维度options\n onGetTargetCfgById = id => {\n getTargetCfgById({ id })\n .then(res => {\n if (res && res.data && res.data.code === 0) {\n let record = res.data.data || {}\n let dimension = Array.isArray(record.dimension) ? record.dimension.filter(i => !!i.en) : []\n let curArr = dimension.map(i => {\n let text = `${i.cn}(${i.en})`\n return {\n id: i.en,\n text: text\n }\n })\n this.setState({\n rankDimensionData: curArr\n })\n }\n })\n }\n\n // 来源表\n onGetTablecfg = () => {\n getAllTablecfg().then(res => {\n if (res && res.data && res.data.code === 0) {\n let curArr = Array.isArray(res.data.data) ? res.data.data : []\n curArr = curArr.map(i => {\n let info = !!i.database_name ? `${i.database_name}.${i.table_name}` : i.table_name\n return {\n id: i.id,\n text: `${i.data_set_chinese}(${info})`\n }\n })\n this.setState({\n rangeRankData: curArr\n })\n }\n })\n }\n\n //同步过滤型的数据\n syncFilterDataList = (filterDataList) => {\n console.log(\"=====syncFilterDataList————————filterDataList\", filterDataList)\n this.setState({filterDataList: filterDataList})\n }\n\n addIndicators = name => {\n let label = \"\"\n switch (name) {\n case \"range\":\n label = \"区间型\"\n break\n case \"filter\":\n label = \"过滤型\"\n break\n case \"rank\":\n label = \"排名型\"\n break\n default:\n label = \"击败率型\"\n }\n let array = [...this.state.addData]\n // 往formData里面push空的类型\n let obj = {\n key: `${name}${array.length}`,\n metric_type: name,\n metric_field:\"\",\n label: label,\n cal_expression:[{ \"range_name\":\"\", \"gte\":\"\", \"lt\":\"\" }],\n enable: 0,\n target_type:\"\",\n store_dimension: [{ id: [] }],\n group_by_field: { id: \"\", key: \"\", value: \"\" },\n time_schedule: [{ run_cycle: '', time_cycle: \"\" }],\n disabledCheck: false,\n isShow: true,\n target_name:\"\",\n target_name_cn:\"\",\n }\n if (name== \"range\") {\n obj.complex_script = \"\"\n obj.group_by_field = \"\"\n }\n array.push(obj)\n this.setState({\n showAddList: false,\n addData: array\n })\n }\n\n // 变化维度多选\n setChangeDimensions = (index, value) => {\n const array = _.cloneDeep(this.state.formData)\n array[index].store_dimension = _.map(value, i => ({ id: [i.id] }))\n if (array[index].store_dimension.length === 0) {\n array[index].enable = 0\n }\n this.setState({\n formData: array\n })\n }\n\n setCheckedValue = (index, item, value) => {\n let { formData } = this.state\n let cloneFormData = _.cloneDeep(formData)\n if (!cloneFormData[index].cal_expression_list) cloneFormData[index].cal_expression_list = []\n let cal_expression_list = cloneFormData[index].cal_expression_list\n let float_type = item.key\n let time_cycle = item.timeCycle\n\n // 通过 float_type、time_cycle 找到对应的位置,打勾或取消勾选\n let cal_index = _.findIndex(cal_expression_list, { float_type, time_cycle })\n if (cal_index === -1) {\n cloneFormData[index].cal_expression_list.push({\n enable: value,\n float_type: item.key,\n time_cycle: item.timeCycle,\n cal_expression: [{ // 接口数据格式\n time_cycle: item.timeCycle,\n float_type: [item.key]\n }]\n })\n } else {\n let cur = cal_expression_list[cal_index]\n if (cur.id) {\n cloneFormData[index].cal_expression_list[cal_index].enable = value\n } else {\n cloneFormData[index].cal_expression_list.splice(cal_index, 1)\n }\n }\n this.setState({\n formData: cloneFormData,\n sholdCheckValidate: false\n })\n }\n\n // 设置排名类型值\n setComplexScript = (index, value) => {\n const array = [...this.state.addData]\n array[index].complex_script = value\n this.setState({\n addData: array\n })\n }\n\n // 设置排名维度值\n setRankDimension = (index, value) => {\n const array = [...this.state.addData]\n array[index].store_dimension = !!value ? [{ id: [value] }] : [{ id: [] }]\n this.setState({\n addData: array\n })\n }\n\n //区间型-设置区间类型group_by_field的值 target_value 或 service_value\n setAddAreaValue = (index, type, value) => {\n const array = [...this.state.addData]\n const arrChangeOne = _.cloneDeep(array[index])\n switch (type) {\n case \"target_name\" :\n arrChangeOne.target_name = value\n break\n case \"target_name_cn\" :\n arrChangeOne.target_name_cn = value\n break\n case \"group_by_field\" :\n arrChangeOne.group_by_field = value\n break\n case \"complex_script\" :\n arrChangeOne.complex_script = value\n break\n case \"metric_field\" :\n arrChangeOne.metric_field = value\n break\n case \"time_schedule\" :\n let time_schedule = JSON.parse(this.props.record.curRecord.time_schedule)\n let time_schedules = []\n for (let i in time_schedule) {\n for (let j in value) {\n if (time_schedule[i].time_cycle == value[j].id) {\n time_schedules.push(time_schedule[i])\n }\n }\n }\n arrChangeOne.time_schedule = time_schedules\n break\n }\n arrChangeOne.enable = 0\n arrChangeOne.metric_type = \"range\"\n array[index] = arrChangeOne\n this.setState({\n addData: array\n })\n }\n\n //区间型-设置区间设置\n setAreaData = (val, type, index, k) => {\n const array = [...this.state.addData]\n let cal_expression = array[index].cal_expression\n switch (type) {\n case \"range_name\":\n cal_expression[k].range_name = val\n break\n case \"gte\":\n cal_expression[k].gte = val\n break\n case \"lt\":\n cal_expression[k].lt = val\n break\n }\n array[index].enable = 0\n array[index].cal_expression = cal_expression\n this.setState({ addData: array })\n }\n\n // 区间型-新增一项区间设置\n addVirtualArea = (index) => {\n const array = [...this.state.addData]\n let cal_expression = array[index].cal_expression\n cal_expression.push({ \"range_name\":\"\", \"gte\":\"\", \"lt\":\"\" });\n array[index].cal_expression = cal_expression\n array[index].enable = 0\n this.setState({ addData: array })\n }\n\n // 区间型-删除一项区间设置\n removeVirtualArea = (k, index) => {\n const array = [...this.state.addData]\n let cal_expression = array[index].cal_expression\n cal_expression.splice(k, 1);\n array[index].cal_expression = cal_expression\n array[index].enable = 0\n this.setState({ addData: array })\n }\n\n // 设置排名范围值group_by_field的id\n setRankRange = (index, value) => {\n const array = [...this.state.addData]\n const arrChangeOne = _.cloneDeep(array[index])\n const group_by_field = {\n id: value,\n key:'',\n value:''\n }\n arrChangeOne.group_by_field = group_by_field\n array[index] = arrChangeOne\n this.setState({\n addData: array\n })\n }\n\n // 设置来源字段或范围字段的值group_by_field的key 或 value\n setSourceOrRangeField = (index, value, propsName) => {\n const array = [...this.state.addData]\n array[index].group_by_field[propsName] = value\n this.setState({\n addData: array\n })\n }\n\n // 设置时间周期的值 time_schedule\n configDataChange = (val, type, k, index) => {\n const array = [...this.state.addData]\n let time_schedule = [...array[index].time_schedule]\n if (type === \"time_schedule_time_cycle\") {\n time_schedule[k].time_cycle = val\n } else if (type === \"store_dimension_run_cycle\") {\n time_schedule[k].run_cycle = val\n }\n array[index].time_schedule = time_schedule\n this.setState({ addData: array })\n }\n\n // 新增一项time_schedule\n addVirtualProperty2 = (index) => {\n const array = [...this.state.addData]\n let time_schedule = [...array[index].time_schedule]\n time_schedule.push({ run_cycle: '', time_cycle: '' });\n array[index].time_schedule = time_schedule\n this.setState({ addData: array })\n }\n\n // 删除一项time_schedule\n removeVirtualProperty2 = (k, index) => {\n const array = [...this.state.addData]\n let time_schedule = [...array[index].time_schedule]\n time_schedule.splice(k, 1);\n array[index].time_schedule = time_schedule\n this.setState({ addData: array })\n }\n\n validateIndicateItemValue = (item, index, type) => {\n // 区分是哪个指标 对应的指标check 不通过把对应指标的data里的disabledCheck置为true\n const arr = type === 'addData' ? [...this.state.addData] : [...this.state.formData]\n let flag = false\n if (item.metric_type === 'float_rate' || item.metric_type === 'float_cnt' || item.metric_type === 'daily_avg') {\n flag = _.get(item, 'store_dimension[0].id.length') > 0 && _.get(item, 'cal_expression_list.length') > 0\n } else if (item.metric_type === 'rank_rate' || item.metric_type === 'rank') {\n flag = item.store_dimension[0].id.length > 0 &&\n !!item.time_schedule[0].run_cycle &&\n !!item.time_schedule[0].time_cycle &&\n !!item.complex_script\n } else if (item.metric_type === 'range' ) {\n flag = item.store_dimension[0].id.length > 0 &&\n !!item.time_schedule.length > 0 &&\n !!item.time_schedule[0].time_cycle &&\n !!item.cal_expression.length > 0 &&\n !!item.group_by_field &&\n !!item.complex_script &&\n !!item.target_name &&\n !!item.target_name_cn\n for (let i in item.cal_expression) {\n let gte = Number(item.cal_expression[i].gte)\n let lt = Number(item.cal_expression[i].lt)\n if (isNaN(lt) || isNaN(gte)) {\n flag = false\n }\n }\n if (flag == true && item.group_by_field != \"target_value\") {\n flag = !!item.metric_field\n }\n }\n if (!flag) {\n arr[index].disabledCheck = true\n } else {\n arr[index].disabledCheck = false\n }\n type === 'addData' ? this.setState({ addData: arr }) : this.setState({ formData: arr })\n return flag\n }\n\n enableStateChange = (val, item, index, type) => {\n const array = type === 'addData' ? [...this.state.addData] : [...this.state.formData]\n if (val !== 0) {\n let flag = this.validateIndicateItemValue(item, index, type)\n if (!flag) return\n }\n array[index].disabledCheck = false //为 0 直接fasle 为1上边通过校验置为false\n array[index].enable = val\n type === 'addData' ? this.setState({ addData: array }) : this.setState({ formData: array })\n }\n\n getTargetName = (obj, type, item, indicateItem) => {\n\n // 由于同一个指标可以选不同的维度进行排序,因此自动生成命名时需拼接排名维度的前两位字母及排名范围前两位字母\n let str_store = _.get(item, 'store_dimension[0].id[0]') || ''\n let str_group = _.isString(item.group_by_field)?item.group_by_field:_.get(item, 'group_by_field.value') || ''\n let str_name = `${str_store.slice(0, 2)}${str_group.slice(0, 2)}`\n\n if (type === 'rank_rate') {\n if (item.complex_script === 'asc') {\n obj.target_name = `${indicateItem.target_name}_asc_${str_name}_rate_dbl`\n obj.target_name_cn = `${indicateItem.target_name_cn}_升序击败率_${str_name}`\n } else if (item.complex_script === 'desc') {\n obj.target_name = `${indicateItem.target_name}_desc_${str_name}_rate_dbl`\n obj.target_name_cn = `${indicateItem.target_name_cn}_降序击败率_${str_name}`\n }\n } else {\n if (item.complex_script === 'asc') {\n obj.target_name = `${indicateItem.target_name}_asc_${str_name}_rank_cnt`\n obj.target_name_cn = `${indicateItem.target_name_cn}_升序排名_${str_name}`\n } else if (item.complex_script === 'desc') {\n obj.target_name = `${indicateItem.target_name}_desc_${str_name}_rank_cnt`\n obj.target_name_cn = `${indicateItem.target_name_cn}_降序排名_${str_name}`\n }\n }\n return obj\n }\n\n getIndicateItem = (type, indicateItem, beAssignObj, item) => {\n if (type === 'rank_rate') {\n beAssignObj.metric_type = 'rank_rate'\n } else {\n beAssignObj.metric_type = 'rank'\n }\n beAssignObj.complex_script = item.complex_script\n beAssignObj.store_dimension = item.store_dimension\n beAssignObj.group_by_field = item.group_by_field\n beAssignObj.time_schedule = item.time_schedule\n beAssignObj.enable = item.enable\n beAssignObj.comments = this.state.comments\n return _.assign(indicateItem, beAssignObj)\n }\n\n setFloatIndicateItem = (obj, item, indicateItem, type) => {\n let float_type = _.get(item, 'cal_expression[0].float_type[0]')\n let time_cycle = _.get(item, 'cal_expression[0].time_cycle')\n\n if (type === 'float_rate') {\n // 对应自定义中、英文名\n let en = RATE_NAME_MAP[`${float_type}_${time_cycle}`].en\n let cn = RATE_NAME_MAP[`${float_type}_${time_cycle}`].cn\n obj.target_name = `${indicateItem.target_name}${en}`\n obj.target_name_cn = `${indicateItem.target_name_cn}${cn}`\n } else if (type === 'float_cnt') {\n // 对应自定义中、英文名\n let en = CNT_NAME_MAP[`${float_type}_${time_cycle}`].en\n let cn = CNT_NAME_MAP[`${float_type}_${time_cycle}`].cn\n obj.target_name = `${indicateItem.target_name}${en}`\n obj.target_name_cn = `${indicateItem.target_name_cn}${cn}`\n } else if (type === 'daily_avg') {\n // 对应自定义中、英文名\n let en = AVG_NAME_MAP[`${float_type}_${time_cycle}`].en\n let cn = AVG_NAME_MAP[`${float_type}_${time_cycle}`].cn\n obj.target_name = `${indicateItem.target_name}${en}`\n obj.target_name_cn = `${indicateItem.target_name_cn}${cn}`\n }\n\n obj.metric_type = type\n obj.store_dimension = item.store_dimension\n //cal_expression参数代表着一个衍生指标\n obj.cal_expression = JSON.stringify(item.cal_expression)\n\n //重要注释\n //每个衍生指标的time_cycle参数根据cal_expression中的time_cycle 1d来去筛选传过去\n //例如 1d日环比 7d周环比 1m月环比 这里的time_cycle指的是环比 传给接口的time_cycle指的是来源指标的时间周期参数\n let time_schedule = []\n let timeSchedule = this.state.timeSchedule\n console.log(\"=======timeSchedule\", timeSchedule)\n console.log(\"=======time_cycle\", time_cycle)\n for (let i in timeSchedule) {\n if (timeSchedule[i].time_cycle == time_cycle) {\n time_schedule.push(timeSchedule[i])\n }\n }\n console.log(\"=======obj.time_schedule\", time_schedule)\n obj.time_schedule = JSON.stringify(time_schedule)\n console.log(\"=======obj.time_schedule\", obj.time_schedule)\n obj.enable = item.enable\n obj.comments = this.state.comments\n return _.assign(indicateItem, obj)\n }\n\n setAreaIndicateItem = (obj, item, indicateItem) => {\n obj.target_type = 4\n obj.group_by_field = item.group_by_field //区间类型\n obj.metric_field = obj.group_by_field == \"target_value\" ? \"\" : item.metric_field //统计方式-区间字段\n obj.metric_type = item.metric_type //统计方式-度量方式\n obj.complex_script = item.complex_script //统计方式-度量方式\n obj.cal_expression = JSON.stringify(item.cal_expression) //区间设置\n obj.store_dimension = item.store_dimension //指标属性-维度\n obj.time_schedule = item.time_schedule //指标属性-时间周期\n obj.enable = item.enable\n obj.comments = this.state.comments\n obj.target_name = item.target_name //英文名\n obj.target_name_cn = item.target_name_cn //中文名\n return _.assign(indicateItem, obj)\n }\n\n setFilterIndicateItem = (obj, item, indicateItem, type) => {\n obj.target_type = 4\n obj.metric_type = \"filter\"\n obj.cal_expression = item.cal_expression //过滤语法\n obj.store_dimension = item.store_dimension //指标属性-维度\n obj.time_schedule = item.time_schedule //指标属性-时间周期\n obj.enable = item.enable\n obj.target_name = item.target_name //英文名\n obj.target_name_cn = item.target_name_cn //中文名\n return _.assign(indicateItem, obj)\n }\n\n formatData = arr => {\n let list = []\n\n _.forEach(arr, item => {\n let cal_expression_list = _.get(item, 'cal_expression_list') || []\n let cloneItem = _.cloneDeep(item)\n delete cloneItem.cal_expression_list\n console.log(\"=======cal_expression_list\", cal_expression_list)\n _.forEach(cal_expression_list, i => {\n console.log(\"=======cal_expression_list_------------------i\", i)\n console.log(\"=======cal_expression_list_------------------cloneItem\", cloneItem)\n list.push({\n ...cloneItem,\n ...(i.id ? {\n id: i.id\n } : {}),\n enable: i.enable,\n cal_expression: i.cal_expression\n })\n })\n })\n\n return list\n }\n\n validateFun = record => {\n let isPass = true\n let { timeSchedule } = this.state\n\n for (let i = 0; i < record.length; i++) {\n const item = record[i];\n let cal_expression_list = _.get(item, 'cal_expression_list') || []\n let isStoreEmpty = !_.get(item, 'store_dimension[0].id[0]') // 变化维度是否为空\n\n // 非禁用的变化类型为空\n let isTimeCycleEmpty = cal_expression_list.filter(i => timeSchedule.some(j => j.time_cycle === i.time_cycle)).every(k => !k.enable)\n\n // 变化维度为空 && 非禁用的变化类型也为空,不需要校验\n if (!isTimeCycleEmpty && isStoreEmpty) {\n isPass = false\n break\n }\n }\n\n return isPass\n }\n\n // 清洗time_schedule参数只包含cal_expression中为 time_cycle\n clearTimeSchedule = obj => {\n let cloneObj = _.cloneDeep(obj)\n let cal_expression = formatJsonParse(_.get(cloneObj, 'cal_expression'))\n let time_schedule = formatJsonParse(_.get(cloneObj, 'time_schedule'))\n let cur_time_schedule = []\n\n if (_.isArray(cal_expression) && _.isArray(time_schedule)) {\n cur_time_schedule = time_schedule.filter(ts => cal_expression.some(ce => ce.time_cycle === ts.time_cycle))\n }\n cloneObj.time_schedule = JSON.stringify(cur_time_schedule)\n\n return cloneObj\n }\n\n onSureClick = () => {\n let { formData, addData, comments ,filterDataList} = this.state\n // 校验:这里只需要校验formData的,即变化率型和变化量型\n let isPass = this.validateFun(formData)\n if (!isPass) {\n this.setState({ sholdCheckValidate: true })\n return\n }\n let newFormData = this.formatData(formData)\n let params = {}\n let param = { ...this.props.record.curRecord }\n let arrayTemp = []\n //过滤addData 过滤型\n if (filterDataList.length > 0) {\n let addDataNew = []\n for (let i in addData) {\n if (addData[i].metric_type != \"filter\") {\n addDataNew.push(addData[i])\n }\n }\n addData = addDataNew.concat(filterDataList)\n }\n let data = newFormData.concat(addData)\n _.forEach(data, (item) => {\n let indicateItem = _.cloneDeep(this.props.record.curRecord)\n indicateItem = _.assign(indicateItem, {\n target_type: 4, // 衍生指标的target_type是 4,\n })\n let beAssignObj = {}\n indicateItem.source_targets = indicateItem.id + '' //设置source_targets为进来弹窗的指标的id\n delete indicateItem.derivativeTargets\n delete indicateItem.id\n indicateItem.id = item.id\n if (item.metric_type && item.metric_type.indexOf('rank_rate') !== -1) {\n beAssignObj = this.getIndicateItem('rank_rate', indicateItem, beAssignObj, item)\n beAssignObj = this.getTargetName(beAssignObj, 'rank_rate', item, indicateItem)\n } else if (item.metric_type.indexOf('rank') !== -1) {\n beAssignObj = this.getIndicateItem('rank', indicateItem, beAssignObj, item)\n beAssignObj = this.getTargetName(beAssignObj, 'rank', item, indicateItem)\n } else if (item.metric_type.indexOf('float_rate') !== -1) {\n beAssignObj = this.setFloatIndicateItem(beAssignObj, item, indicateItem, 'float_rate')\n } else if (item.metric_type.indexOf('float_cnt') !== -1) {\n beAssignObj = this.setFloatIndicateItem(beAssignObj, item, indicateItem, 'float_cnt')\n } else if (item.metric_type.indexOf('daily_avg') !== -1) {\n beAssignObj = this.setFloatIndicateItem(beAssignObj, item, indicateItem, 'daily_avg')\n } else if (item.metric_type.indexOf('range') !== -1) {\n beAssignObj = this.setAreaIndicateItem(beAssignObj, item, indicateItem)\n beAssignObj = this.getTargetName(beAssignObj, 'range', item, indicateItem)\n } else if (item.metric_type.indexOf('filter') !== -1) {\n beAssignObj = this.setFilterIndicateItem(beAssignObj, item, indicateItem)\n beAssignObj = this.getTargetName(beAssignObj, 'filter', item, indicateItem)\n } else {\n return\n }\n // 前端不做清洗处理\n // 清洗time_schedule:里面对应的不应该是全部的time_schedule,而是对应的cal_expression中的time_cycle\n // beAssignObj = this.clearTimeSchedule(beAssignObj)\n arrayTemp.push(beAssignObj)\n })\n param.comments = comments\n params.id = param.id\n params.field = param\n params.derivativeTargets = arrayTemp\n // 编辑数据\n console.log(\"=====params\", params)\n storeOrUpdateDerive(params).then((res) => {\n if (res && res.data && res.data.code === 0) {\n let msg = '编辑成功'\n SdwMessage.success(msg)\n // 告诉父级点击了确定按钮\n this.props.onSureClick()\n } else {\n SdwMessage.error(res.data.msg);\n }\n })\n }\n\n render() {\n\n const {\n formData,\n addData,\n sourceIndicators,\n comments,\n rankDimensionData,\n rangeRankData,\n checkedOption,\n checkedOption1,\n checkedOption2,\n timeSchedule,\n sholdCheckValidate,\n filterDataList\n } = this.state\n\n const {\n cfgData,\n record\n } = this.props\n\n let baseInfo = record.curRecord\n let filterDataListNew = [...filterDataList]\n //filterDataList\n if (filterDataListNew.length == 0) {\n for (let i in addData) {\n if (addData[i].metric_type == \"filter\") {\n filterDataListNew.push(addData[i])\n }\n }\n }\n //console.log(\"=====edit, filterDataListNew\", filterDataListNew)\n // runCycle\n let runCycle = []\n if (cfgData.hasOwnProperty(\"runCycle\")) {\n runCycle = cfgData.runCycle.map(i => {\n return {\n id: i.id + '',\n text: i.name\n }\n })\n }\n // timeCycle\n let timeCycle = []\n if (cfgData.hasOwnProperty(\"timeCycle\")) {\n timeCycle = cfgData.timeCycle.map(i => {\n return {\n id: i.id ,\n text: i.name\n }\n })\n }\n //console.log(\"===timeCycle\", timeCycle)\n\n return (\n
\n \n \n
\n
\n 来源指标\n
\n \n
\n
\n
\n 描述\n
\n this.setState({ comments: val })}\n placeholder=\"统计每个主管下的员工创建工单量的排名、统计员工维度的工单量的日环比、周同比\"\n />\n
\n
\n {/* 以下是衍生指标详细信息 */}\n
\n
\n {/* 循环输出固定的三项 */}\n {\n formData.map((ele, index) => {\n return (\n \n )\n })\n }\n {\n \n }\n\n {/* 循环输出 --》map */}\n {\n addData.map((item, index) => {\n switch (item.metric_type) {\n case \"rank\":\n return (\n \n )\n break\n case \"rank_rate\":\n return (\n \n )\n break\n case \"filter\":\n break\n default:\n return \n }\n })\n }\n
\n
\n
\n 新增\n
\n
\n
\n
this.addIndicators('range')}>区间型
\n {/*
this.addIndicators('filter')}>过滤型
*/}\n
this.addIndicators('rank')}>排名型
\n
this.addIndicators('rank_rate')}>击败率型
\n
\n
\n
\n
\n
\n
\n \n
\n )\n }\n}\n\nexport default EditIndicatorsData2\n\n// 对于复杂的页面,需要拆分组件,此时有以下步骤\n// 1、写静态页面(重构)\n// 2、把重构页面转换成React页面\n// 3、把能循环输出的先处理(数组的map)\n// 4、用组件当中的变量替换静态页面中写死的数据\n","import React, { PureComponent } from 'react'\nimport {connect} from 'react-redux'\nimport {withRouter} from 'react-router-dom'\nimport SdwTable from '@common/Table'\nimport SdwPagenation from '@common/Pagenation'\nimport SdwBreadCrumbs from '@common/BreadCrumbs'\nimport { Button } from 'element-react'\nimport './index.css'\nimport _ from 'lodash'\nimport {\n getTopicBusiness, getTargetPage, getTablecfgList, getPublicCfg, getAllAtomTarget,\n getAllModifier, getAllDimMapping, getTarget, getAllTarget\n} from '@services/Derived'\nimport EditData from './components/EditData'\nimport SdwSelect from '@common/Select'\nimport SdwMessage from '@common/Message'\nimport SdwInput from '@common/Input'\nimport DialogShowData from './components/DialogShowData'\nimport DialogShowRunData from './components/DialogShowRunData'\nimport EditIndicatorsData from \"./components/EditIndicatorsData/EditIndicatorsData2\";\nimport SdwButton from '@common/Button'\nimport { formatJsonParse } from '@utils/formatJson'\nimport SdwLoading from '@common/Loadding'\nimport { hasPriv } from '@components/FrontendAuth/AuthMap'\n\n// 仅颗粒指标\nconst ONLY_GRANULAR = 'only_granular'\nconst TYPE_MAP = {\n \"1\":\"基础型\",\n \"2\":\"复合型\",\n \"3\":\"代码型\",\n}\n\nclass Derived extends PureComponent {\n state = {\n dataList: [],\n search: {\n target_name: { value: '', operator: '=' },\n target_name_cn: { value: '', operator: 'like', type: 'both' },\n topic: { value: '', operator: '=' },\n source_targets: { value: '', operator: '=' },\n create_user: { value: '', operator: '=' },\n enable: { value: '', operator: '=' },\n id: { value: '', operator: '=' },\n is_granular: { value: '', operator: '=' },\n granular_category: { value: '', operator: '=' }\n },\n cfgData: {},\n topicData: [],\n pagination: {\n total: 0,\n per_page: 10,\n pages: 0,\n current_page: this.props.pageInfo || 0,\n },\n topicDic: {},\n topicServerDic: {},\n curTitle: '',\n curRecord: {},\n visible: false,\n indicatorsDialogVisible: false,\n indicatorsTitle: '',\n indicatorsRecord: {},\n\n tableList: [],\n atomTarget: [],\n modifier: [],\n dimension: [],\n dialogVisible: false,\n currShowDataRow: {},\n showCheck: false,\n checkTdIdList: [],\n dialogReRunDataVisible: false,\n tableShowData: false,\n allEnableTargetArr: []\n }\n\n // 初始化\n async componentDidMount() {\n\n // 路由跳转携带参数进行过滤\n let query = this.props.location.state || {}\n if (query.topicID) {\n const { search } = this.state\n await this.setState({\n search: Object.assign({}, search, {\n topic: Object.assign({}, search.topic, {\n value: String(query.topicID)\n })\n })\n })\n }\n\n this.getTopicBusiness()\n this.getAllAtomTarget()\n this.getAllDimMapping()\n this.getAllModifier()\n this.getPageData()\n this.getTablecfgList()\n this.getPublicCfg()\n this.getAllEnableTarget()\n }\n\n getAllEnableTarget = () => {\n getAllTarget({\n search: JSON.stringify({\n // target_type != 4 and enable = 1 and is_granular=1\n target_type: {\n value: 4,\n operator: '!='\n },\n enable: {\n value: 1,\n operator: '='\n },\n is_granular: {\n value: 1,\n operator: '='\n }\n })\n }).then(res => {\n let arr = _.get(res, 'data.data')\n arr = _.isArray(arr) ? arr : []\n arr = arr.reduce((prev, item) => {\n prev.push({\n ...item,\n text: `${item.target_name}(${item.target_name_cn})`\n })\n return prev\n }, [])\n\n // 新增: 仅颗粒指标\n arr.unshift({\n id: ONLY_GRANULAR,\n text: '仅颗粒指标'\n })\n this.setState({\n allEnableTargetArr: arr\n })\n }, () => SdwMessage.error(\"接口异常\"))\n }\n\n // 获取所有的原子指标选项\n getAllAtomTarget = () => {\n let that = this\n getAllAtomTarget().then(res => {\n let atomTarget = res.data.data || []\n that.setState({ atomTarget: atomTarget })\n\n // 详情中需要使用\n sessionStorage.setItem('derivedAtomTarget', JSON.stringify(atomTarget))\n })\n }\n\n // 获取所有的映射\n getAllDimMapping = () => {\n let that = this\n getAllDimMapping().then(res => {\n let dimension = res.data.data || []\n that.setState({ dimension: dimension })\n\n // 详情中需要使用\n sessionStorage.setItem('derivedDimension', JSON.stringify(dimension))\n })\n }\n\n // 获取所有的修饰词\n getAllModifier = () => {\n let that = this\n getAllModifier().then(res => {\n let modifier = res.data.data || []\n that.setState({ modifier: modifier })\n })\n }\n\n // 获取所有的表\n getTablecfgList = () => {\n let that = this\n getTablecfgList({ limit: 10000, page: 0, search: { enable: { value: '1', operator: \"=\" } } }).then(res => {\n let tableList = res.data.data.items || []\n that.setState({ tableList: tableList })\n\n // 详情中需要使用\n sessionStorage.setItem('derivedTableList', JSON.stringify(tableList))\n })\n }\n\n // 获取所有计算方式选项列表\n getPublicCfg = () => {\n let that = this\n getPublicCfg().then(res => {\n if (res.data.code === 0 && res.data.data) {\n let cfgData = {}\n for (let i in res.data.data) {\n cfgData[i] = res.data.data[i]\n }\n that.setState({ cfgData: cfgData })\n\n // 详情中需要使用\n sessionStorage.setItem('derivedCfgData', JSON.stringify(cfgData))\n }\n })\n }\n\n // 获取分页数据\n getPageData = () => {\n //const search = formatJsonParse(sessionStorage.getItem('derivedSearch'))\n const search = \"\"\n let cloneSearch\n console.log(\"=====\", search)\n if (search == \"\") {\n console.log(\"=====this.state.search==\", this.state.search)\n cloneSearch = _.cloneDeep(this.state.search)\n } else {\n cloneSearch = _.cloneDeep(search)\n console.log(\"=====search==\", this.state.search)\n }\n\n let that = this\n var params = {}\n params.page = this.state.pagination.current_page || 0\n params.limit = this.state.pagination.per_page\n params.search = {}\n\n const granular_category = _.get(cloneSearch, 'granular_category.value')\n if (!!granular_category && granular_category === ONLY_GRANULAR) {\n delete cloneSearch.granular_category\n cloneSearch.is_granular.value = 1\n }\n\n for (const key in cloneSearch) {\n const dval = cloneSearch[key]\n if (dval.value !== '') {\n if (key == \"source_targets\") {\n params.search[\"target_type\"] = {\"value\":1,\"operator\":\"=\"}\n }\n params.search[key] = dval\n }\n }\n that.setState({tableShowData: false})\n getTargetPage(params).then((res) => {\n that.setState({tableShowData: true})\n let items = res.data.data.items\n\n if (!items) {\n items = []\n }\n\n for (let i = 0; i < items.length; i++) {\n let topicId = items[i].topic\n let topicName = topicId\n let enableName = \"无效\"\n if (that.state.topicDic.hasOwnProperty(topicId)) {\n topicName = that.state.topicDic[topicId].label\n }\n if (items[i].enable == 1) {\n enableName = \"有效\"\n }\n items[i][\"topicName\"] = topicName\n items[i][\"enableName\"] = enableName\n\n let timeSchedule = items[i].time_schedule\n if (typeof timeSchedule !== Object) {\n try {\n timeSchedule = JSON.parse(timeSchedule)\n } catch (error) {\n timeSchedule = []\n }\n }\n let strArr = []\n for (let i in timeSchedule) {\n strArr.push(timeSchedule[i].time_cycle + \"/\" + timeSchedule[i].run_cycle)\n }\n items[i][\"time_schedule_name\"] = strArr.join('/')\n\n }\n\n let pagination = that.state.pagination\n pagination.total = res.data.data.total\n pagination.per_page = res.data.data.per_page\n pagination.pages = res.data.data.pages\n pagination.current_page = res.data.data.current_page\n that.setState({\n dataList: [...items],\n pagination: { ...pagination },\n })\n })\n }\n // 获取主题列表\n getTopicBusiness = () => {\n let that = this\n getTopicBusiness().then((res) => {\n that.setState({ topicData: res.data.data })\n\n // 详情中需要使用\n sessionStorage.setItem('derivedTopicData', JSON.stringify(res.data.data))\n\n let topicDic = {}\n for (let i = 0; i < res.data.data.length; i++) {\n let topicId = res.data.data[i].value\n if (!topicDic.hasOwnProperty(topicId)) {\n topicDic[topicId] = res.data.data[i]\n }\n }\n\n that.setState({ topicDic: topicDic })\n })\n }\n\n // 获取表标题\n getcolumns = () => {\n let self = this\n const columns = [\n {\n title: \"checkTd\",\n dataIndex: \"id\",\n width: 20,\n checkTd: 1\n },\n {\n title: \"ID\",\n width: 50,\n dataIndex: \"id\",\n checkChildren: true\n },\n {\n title: \"中文名称\",\n dataIndex: \"target_name_cn\",\n showTip: true,\n width: 150\n },\n {\n title: \"英文名称\",\n dataIndex: \"target_name\",\n showTip: true,\n width: 230\n },\n {\n title: \"主题域/业务\",\n width: 94,\n render: (data, record) => {\n let { topicDic } = self.state\n let { topic, service } = data\n let topicRecord = topicDic[topic]\n let topicName = '-'\n let children = []\n let serviceName = '-'\n\n if (!!topicRecord) {\n topicName = topicDic[topic].label\n children = topicDic[topic].children || []\n serviceName = children.filter(i => i.value == service)[0] && children.filter(i => i.value == service)[0].label || ''\n }\n return (\n {`${topicName}/${serviceName}`}\n )\n }\n },\n {\n title: \"维度\",\n width: 180,\n render: (data, record) => {\n let storeDimension = formatJsonParse(data.store_dimension, [])\n let dimensionName = ''\n\n // 衍生指标拼接规则\n storeDimension = _.isArray(storeDimension) ? storeDimension.filter(i => !!i.id && _.isArray(i.id)) : []\n if (data.target_type == 4) {\n dimensionName = storeDimension.map(i => i.id.join('/')) || '-'\n } else {\n dimensionName = storeDimension.map(i => i.id.join('#')).join('/') || '-'\n }\n return (\n {dimensionName}\n )\n }\n },\n {\n title: \"时间周期\",\n dataIndex: \"time_schedule_name\",\n width: 56\n },\n {\n title: \"类型\",\n width: 56,\n render: (data, record) => {\n let type = \"\"\n if (data.target_type == 4) {\n switch (data.metric_type) {\n case \"rank\":\n type = \"衍生指标-排名型\"\n break\n case \"rank_rate\":\n type = \"衍生指标-击败率型\"\n break\n case \"float_cnt\":\n type = \"衍生指标-变化量型\"\n break\n case \"float_rate\":\n type = \"衍生指标-变化率型\"\n break\n case \"daily_avg\":\n type = \"衍生指标-均值型\"\n break\n case \"filter\":\n type = \"衍生指标-过滤型\"\n break\n case \"range\":\n type = \"衍生指标-区间型\"\n break\n }\n } else {\n type = TYPE_MAP[data.target_type]\n }\n\n return (\n {type}\n )\n }\n },\n {\n title: \"修饰词\",\n dataIndex: \"decoration\",\n width: 188\n },\n {\n //title: \"状态\",\n //dataIndex: \"enableName\",\n title: \"状态\",\n width: 40,\n render: function (data, record) {\n return (\n <>\n {\n _.isEqual(typeof data.enable, 'number') && \n }\n {_.isEqual(typeof data.enable, 'number') ?\n (data.enable ? '有效' : '无效') : '-'}\n \n )\n }\n },\n {\n title: \"修改人\",\n dataIndex: \"modify_user\",\n showTip: true,\n width: 76\n },\n {\n title: \"更新时间\",\n dataIndex: \"modify_time\",\n width: 143\n },\n {\n title: \"操作\",\n width: 280,\n fiexd: true,\n render: (data, record) => {\n let isShowButton = false\n if (data.target_type == 4 && (data.metric_type==\"rank\"||data.metric_type==\"rank_rate\"||data.metric_type==\"float_cnt\"||data.metric_type==\"float_rate\"||data.metric_type==\"daily_avg\"||data.metric_type==\"filter\"||data.metric_type==\"range\")) {\n isShowButton = true\n }\n return (\n
\n {/* 编辑权限放开,都可以点击编辑进入弹窗查看数据 */}\n { self.onClickGetOneData(data, self) }}\n />\n {\n hasPriv('getDataKinship') &&\n { self.jumpToDetail(data) }}\n />\n }\n { self.onClickShowData(data, self) }}\n />\n {\n hasPriv('storeOrUpdateDerive') &&\n { self.showDerivedIndicators({ title: `编辑衍生指标(${data.id})`, curRecord: data }) }}\n />\n }\n
\n )\n },\n }\n ]\n return columns\n }\n\n jumpToDetail = data => {\n // 详情中需要使用\n //sessionStorage.setItem('derivedSearch', JSON.stringify(this.state.search))\n this.props.history.push(`/admin/factory/derived-detail/${data.id}`)\n }\n\n // 展示预览数据\n onClickShowData = (data, e) => {\n this.setState({ dialogVisible: true, currShowDataRow: data })\n }\n\n // 编辑衍生指标\n showDerivedIndicators = (record) => {\n this.setState({\n indicatorsDialogVisible: true,\n indicatorsTitle: record.title,\n indicatorsRecord: record,\n })\n }\n\n // 获取编辑的行记录\n onClickGetOneData = (data, e) => {\n getTarget({ id: data.id }).then(res => {\n if (res.data.code === 0) {\n let item = res.data.data\n for (let i in item) {\n let val = item[i]\n\n if (i === \"store_dimension\") {\n item['store_dimension'] = JSON.parse(val)\n continue\n }\n\n if (i === \"time_schedule\") {\n item['time_schedule'] = JSON.parse(val)\n continue\n }\n\n if (i === \"target_type\") {\n item[\"target_type\"] = item[\"target_type\"] + ''\n continue\n }\n\n if (i === \"decoration_ids\") {\n let decoration_ids = []\n decoration_ids = val ? val.split(\",\") : []\n item[\"decoration_ids\"] = decoration_ids\n continue\n }\n\n item[i] = val\n }\n\n let topicName = \"\"\n let topicServiceName = \"\"\n\n if (this.state.topicDic.hasOwnProperty(item.topic)) {\n topicName = this.state.topicDic[item.topic].label\n if (this.state.topicDic[item.topic].hasOwnProperty(\"children\")) {\n for (let i = 0; i < this.state.topicDic[item.topic].children.length; i++) {\n let sid = this.state.topicDic[item.topic].children[i].value\n let label = this.state.topicDic[item.topic].children[i].label\n\n if (sid == item.service) {\n topicServiceName = label\n }\n }\n }\n }\n item.topicBusiness = {\n \"ids\": [item.topic, item.service],\n \"texts\": [topicName, topicServiceName],\n \"clickItem\": [item.topic + '' + item.service, topicServiceName],\n }\n\n this.setState({\n curRecord: item,\n curTitle: '编辑派生指标'\n }, () => this.setState({\n visible: true\n }))\n }\n })\n }\n\n // 获取当前页码\n getClickPage = (pageNum) => {\n this.state.pagination.current_page = pageNum\n this.getPageData()\n }\n\n // 获取当前每页总条数\n pageCountChange = (per_page) => {\n this.state.pagination.per_page = per_page\n this.getPageData()\n }\n\n // 表格数据双向绑定\n SeachHandleChange(key, value) {\n this.state.pagination.current_page = 1\n\n if (key == \"target_name\") {\n this.state.search.target_name.value = value;\n }\n\n if (key == \"id\") {\n this.state.search.id.value = value;\n }\n\n if (key == \"topic\") {\n this.state.search.topic.value = value;\n this.getPageData()\n }\n\n if (key == \"create_user\") {\n this.state.search.create_user.value = value;\n }\n\n this.forceUpdate();\n }\n\n addOrEdit = (record = {}) => {\n this.setState({\n visible: true,\n curTitle: record.title,\n curRecord: record,\n })\n }\n\n onSureClick = () => {\n this.setState({\n visible: false,\n })\n this.getPageData()\n this.getAllEnableTarget()\n }\n\n onSureClickOfIndicators = () => {\n this.setState({\n indicatorsDialogVisible: false,\n })\n this.getPageData()\n }\n\n closeDialog = () => {\n this.setState({ dialogVisible: false })\n }\n\n closeRunDataDialog = () => {\n this.setState({\n dialogReRunDataVisible: false,\n })\n }\n\n // 获取选中的单元格id列表\n checkboxChange = (data) => {\n this.setState({ checkTdIdList: data })\n }\n\n // 选中的数据重跑\n reRunData = () => {\n this.setState({ dialogReRunDataVisible: true })\n }\n\n render() {\n var {\n search, pagination, curTitle, visible, curRecord, topicData, tableList, cfgData, atomTarget, dimension, currShowDataRow, dialogVisible, showCheck, checkTdIdList,\n dialogReRunDataVisible, tableShowData, enableValue,indicatorsTitle,indicatorsDialogVisible,indicatorsRecord, allEnableTargetArr\n } = this.state;\n console.log(\"--------checkTdIdList\", checkTdIdList)\n console.log(\"--------dataList\", this.state.dataList)\n return (\n
\n \n\n
\n {/** 搜索区域 */}\n
\n
\n\n \n ({})} // enter或触发onblur事件,所以这里传空func\n onChange={val => this.setState({\n pagination:Object.assign({}, pagination, {\n current_page:1\n }),\n search: Object.assign({}, search, {\n id: Object.assign({}, search.id, {\n value: val\n })\n })\n })}\n />\n \n\n \n ({})} // enter或触发onblur事件,所以这里传空func\n onChange={val => this.setState({\n pagination:Object.assign({}, pagination, {\n current_page:1\n }),\n search: Object.assign({}, search, {\n target_name_cn: Object.assign({}, search.target_name_cn, {\n value: val\n })\n })\n })}\n />\n \n\n \n ({})} // enter或触发onblur事件,所以这里传空func\n onChange={val => this.setState({\n pagination:Object.assign({}, pagination, {\n current_page:1\n }),\n search: Object.assign({}, search, {\n target_name: Object.assign({}, search.target_name, {\n value: val\n })\n })\n })}\n />\n \n\n \n {\n return {\n id: el.value,\n text: el.label\n }\n })}\n onChange={val => {\n this.setState({\n pagination:Object.assign({}, pagination, {\n current_page:1\n }),\n search: Object.assign({}, search, {\n topic: Object.assign({}, search.topic, {\n value: val\n })\n })\n }, this.getPageData)\n }}\n />\n \n\n \n ({})} // enter或触发onblur事件,所以这里传空func\n onChange={val => this.setState({\n pagination:Object.assign({}, pagination, {\n current_page:1\n }),\n search: Object.assign({}, search, {\n create_user: Object.assign({}, search.create_user, {\n value: val\n })\n })\n })}\n />\n \n\n \n this.setState({\n pagination:Object.assign({}, pagination, {\n current_page:1\n }),\n search: Object.assign({}, search, {\n enable: Object.assign({}, search.create_user, {\n value: val\n })\n })\n }, this.getPageData)}\n />\n \n\n \n this.setState({\n pagination:Object.assign({}, pagination, {\n current_page:1\n }),\n search: Object.assign({}, search, {\n granular_category: Object.assign({}, search.granular_category, {\n value: val\n })\n })\n }, this.getPageData)}\n />\n \n \n {\n return {\n id: el.id,\n text: el.target_name+\"(\"+el.target_name_ch+\")\"\n }\n })}\n onChange={val => {\n this.setState({\n pagination:Object.assign({}, pagination, {\n current_page:1\n }),\n search: Object.assign({}, search, {\n source_targets: Object.assign({}, search.source_targets, {\n value: val\n })\n })\n }, this.getPageData)\n }}\n />\n \n
\n \n \n \n\n this.addOrEdit({ title: '新增派生指标', curRecord: {} })}\n >新增\n\n
\n
\n
\n\n\n {/** 分页显示数据区域 */}\n
\n \n \n \n\n \n\n {/** 重跑逻辑 */}\n {showCheck && (\n
\n \n this.reRunData()} disabled={checkTdIdList.length == 0 ? true : false}\n />\n \n\n \n this.setState({ showCheck: false, checkTdIdList: [] })}\n />\n \n\n 已选择 {checkTdIdList.length} 项\n
\n )}\n
\n
\n\n {/** 编辑弹窗 */}\n {visible && this.setState({ visible: false })}\n onCancelClick={() => this.setState({ visible: false })}\n onSureClick={() => {\n this.setState({ visible: false })\n this.onSureClick()\n }}\n />}\n\n {/** 编辑衍生指标弹窗 */}\n {indicatorsDialogVisible && this.setState({ indicatorsDialogVisible: false })}\n onCancelClick={() => this.setState({ indicatorsDialogVisible: false })}\n onSureClick={() => {\n this.onSureClickOfIndicators()\n }}\n />}\n\n {/** 预览数据弹窗 */}\n {\n dialogVisible &&\n \n }\n\n {/** 重跑数据弹窗 */}\n {\n dialogReRunDataVisible &&\n \n }\n
\n )\n }\n}\n\nconst mapState = state => ({\n pageInfo: state.page.pageInfo\n})\n\nexport default withRouter(connect(mapState)(Derived))\n","import { request } from '../utils/request'\nimport { ajaxPost } from \"./AjaxApi\";\nimport { requestOptions } from '../config/config'\n\nconst baseURL = requestOptions.basename\n\n// 获取主题列表\nexport const getTopicBusiness = (params = {}) => {\n return request({ url: '/dataset/common/getTopicBusiness', method: 'get', data: params })\n}\n\n// 获取所有的表\nexport const getTablecfgList = (params = {}) => {\n return request({ url: '/metadata/tableApi/getTablecfgList', method: 'get', params: params })\n}\n\n// 获取该表的所有的字段\nexport const getTablecfgFields = (params = {}) => {\n return request({ url: '/metadata/tableApi/getTablecfgFields', method: 'get', params: params })\n}\n\n// 获取该表的所有的字段\nexport const getTableFields = (params = {}) => {\n return request({ url: '/metadata/tableApi/getTablecfgDetail', method: 'get', params: params })\n}\n\n// 获取分页数据\nexport const getPage = (params = {}) => {\n return request({ url: '/dataset/process/dimensionList', method: 'get', params: params })\n}\n\n// 获取所有的计算方式\nexport const dimenGetOptions = (params = {}) => {\n return request({ url: '/dataset/process/dimensionAllList', method: 'get', data: params })\n}\n\n// 获取所有的数据标准\nexport const getStandardSelects = (params = {}) => {\n return request({ url: '/metadata/tableApi/getStandardSelects', method: 'get', data: params })\n}\n\n/**\n * 新增或更新维度\n * @param {object} params\n * @param {func} callback\n */\nexport const storeOrUpdateAtomTarget = (params = {}) => {\n return request({ url: '/dataset/process/addOrUpdateDimen', method: 'get', params: params })\n}\n\n\n// 获取指定维度的数据\nexport const getDimenById = (params = {}) => {\n return request({ url: '/dataset/process/dimensionOne', method: 'get', params: params })\n}\n\n// 获取映射搜索的选项数据\nexport const dimMappingAllList = (params = {}) => {\n return request({ url: '/dataset/process/dimMappingAllList', method: 'get', params: params })\n}\n\n// 获取映射分页数据\nexport const getPageMap = (params = {}) => {\n return request({ url: '/dataset/process/dimMappingList', method: 'get', params: params })\n}\n\n// 获取所有sql来源表选项列表\nexport const getPropertySourceSqlTables = (params = {}) => {\n return request({ url: '/dataset/process/getPropertySourceSqlTables', method: 'get', params: params })\n}\n\n// 新增或更新映射 \nexport const addOrUpdateDimenMap = (params = {}) => {\n return request({ url: '/dataset/process/addOrUpdateDimenMap', method: 'get', params: params })\n}\n\n// 获取指定映射数据 \nexport const getDimenMapById = (params = {}) => {\n return request({ url: '/dataset/process/dimMappingOne', method: 'get', params: params })\n}","import React, { PureComponent } from 'react'\nimport SdwDrawer from '../../../../common/Drawer'\nimport SdwInput from '../../../../common/Input'\nimport SdwInput2 from '../../../../common/Input2'\nimport SdwSelect from '../../../../common/Select'\nimport SdwCascader from '../../../../common/Cascader'\nimport { Radio, Cascader } from 'element-react'\nimport SdwMessage from '../../../../common/Message'\nimport { getTablecfgFields, storeOrUpdateAtomTarget } from '@services/dimen'\nimport 'element-theme-default'\nimport './style/EditData.css'\n\nclass EditData extends PureComponent {\n\n state = {\n id: \"\",\n dim_type: 1,\n dim_name_cn: \"\",\n dim_name_en: \"\",\n data_standard: \"\",\n propertyTableId: \"\",\n propertyInfo: {\n \"id\": \"\",\n \"field\": \"\",\n \"name\": \"\",\n \"selectVal\": \"\",\n \"fieldId\": \"\",\n },\n virtualPropertyList: [\n {\n \"id\": \"\",\n \"name\": \"\",\n \"desc\": \"\",\n }\n ],\n filter: '',\n \n tableFields: [],\n sholdCheckValidate: false,\n upState: 0\n }\n\n componentDidMount () {\n this.initData()\n }\n\n componentDidUpdate (prevProps, prevState) {\n if (prevProps.record.id !== this.props.record.id) {\n this.initData()\n this.getTablecfgFields(this.props.record.propertyTableId)\n }\n }\n\n initData = () => {\n this.setState({\n id: this.props.record.id,\n dim_type: this.props.record.dim_type || 1,\n dim_name_cn: this.props.record.dim_name_cn,\n dim_name_en: this.props.record.dim_name_en,\n data_standard: this.props.record.data_standard,\n propertyTableId: this.props.record.propertyTableId,\n propertyInfo: this.props.record.propertyInfo || {\n \"id\": \"\",\n \"field\": \"\",\n \"name\": \"\",\n \"selectVal\": \"\",\n \"fieldId\": 0,\n },\n virtualPropertyList: this.props.record.virtualPropertyList || [{\n \"id\": \"\",\n \"name\": \"\",\n \"desc\": \"\",\n }],\n filter: this.props.record.filter || ''\n })\n }\n \n validateFun = (curValue, label = '') => {\n if (typeof curValue != 'object' && (typeof curValue === 'number' || !!curValue.trim())) {\n return true\n }\n \n return `${label}不能为空`\n }\n\n handleSureClick = () => {\n let {\n id,\n dim_type,\n dim_name_cn,\n dim_name_en,\n data_standard,\n propertyTableId,\n propertyInfo,\n virtualPropertyList,\n filter\n } = this.state\n\n let isValidatePass = \n !!dim_type && \n !!dim_name_cn &&\n !!dim_name_en &&\n !!data_standard \n\n if (!isValidatePass) {\n // 手动触发必填项的检查\n this.setState({\n sholdCheckValidate: true\n })\n return\n }\n\n let dataid = this.props.record.id || 0\n\n let params = {\n id: dataid,\n dim_type,\n dim_name_cn,\n dim_name_en,\n data_standard,\n propertyTableId,\n propertyInfo,\n virtualPropertyList,\n filter\n }\n \n if(params.propertyInfo.selectVal && params.propertyInfo.selectVal != \"\") {\n let selectValList = params.propertyInfo.selectVal.split(\"@@@\")\n if(selectValList.length > 1) {\n params.propertyInfo.field = selectValList[0] \n params.propertyInfo.fieldId = selectValList[1] && selectValList[1] != '' ? selectValList[1] : 0\n }\n }\n\n if(params.propertyInfo.fieldId == \"\") {\n params.propertyInfo.fieldId = 0\n }\n\n // 编辑数据\n storeOrUpdateAtomTarget(params).then(res => {\n if (res && res.data && res.data.code === 0) {\n let msg = id === 0 ? '新建成功' : '编辑成功'\n SdwMessage.success(msg)\n // 告诉父级点击了确定按钮\n this.props.onSureClick()\n } else {\n SdwMessage.error(res.data.msg);\n }\n })\n }\n\n // 获取指定的表的字段\n getTablecfgFields = (related_table_id) => {\n this.setState({propertyTableId: related_table_id})\n let that = this\n let parame = {}\n parame.id = related_table_id\n getTablecfgFields(parame).then(res => {\n let tableFields = res.data.data || []\n that.setState({tableFields: tableFields})\n })\n }\n\n // 更新数据\n propertyInfoUpData = (val, type, index) => {\n if(type == \"selectVal\") {\n let propertyInfo = {...this.state.propertyInfo}\n propertyInfo.selectVal = val \n this.setState({\n propertyInfo: propertyInfo\n });\n }\n if(type == \"name\") {\n let propertyInfo = {...this.state.propertyInfo}\n propertyInfo.name = val \n this.setState({\n propertyInfo: propertyInfo\n });\n }\n if(type == \"virtualPropertyList-name\") {\n let virtualPropertyList = [...this.state.virtualPropertyList]\n virtualPropertyList[index].name = val\n this.setState({virtualPropertyList: virtualPropertyList})\n }\n if(type == \"virtualPropertyList-desc\") {\n let virtualPropertyList = [...this.state.virtualPropertyList]\n virtualPropertyList[index].desc = val\n this.setState({virtualPropertyList: virtualPropertyList})\n }\n }\n \n addVirtualProperty = (index) => {\n let item = {\n \"id\": \"\",\n \"name\": \"\",\n \"desc\": \"\",\n }\n \n let virtualPropertyList = [...this.state.virtualPropertyList]\n virtualPropertyList.push(item);\n this.setState({virtualPropertyList: virtualPropertyList})\n }\n\n removeVirtualProperty = (index) => {\n let virtualPropertyList = [...this.state.virtualPropertyList]\n virtualPropertyList.splice(index, 1);\n this.setState({virtualPropertyList: virtualPropertyList})\n }\n\n render () {\n let {\n dim_type,\n dim_name_cn,\n dim_name_en,\n data_standard,\n propertyTableId,\n propertyInfo,\n virtualPropertyList,\n filter,\n\n sholdCheckValidate,\n } = this.state\n\n // 来源表\n let tableList = this.props.tableList.map(i => {\n return {\n id: i.id,\n text: i.data_set_chinese + \"(\" + i.database_name + \".\" + i.table_name + \")\"\n }\n })\n\n // 表字段\n let tableFields = this.state.tableFields.map(i => {\n return {\n id: i.field_name+'@@@'+i.id,\n id2: i.field_name,\n text: i.field_name\n }\n })\n\n let tableFields2 = this.state.tableFields.map(i => {\n return {\n id: i.field_name,\n text: i.field_name\n }\n })\n\n return (\n
\n \n \n
\n
\n \n
\n this.setState({dim_type: val})}>普通维度\n this.setState({dim_type: val})}>虚拟维度\n
\n
\n
\n\n
\n 中文名\n
\n this.validateFun(value, '中文名')}\n sholdCheckValidate={sholdCheckValidate}\n onChange={val => this.setState({dim_name_cn: val})}\n placeholder=\"请输入指标中文描述,最多15个字\"\n />\n
\n
\n\n
\n 英文名\n
\n this.validateFun(value, '英文名')}\n sholdCheckValidate={sholdCheckValidate}\n onChange={val => this.setState({dim_name_en: val})}\n placeholder=\"由英文、下划线组成,英文请勿大写\"\n />\n
\n
\n\n
\n 关联数据标准\n
\n this.setState({data_standard: val})} \n clearable={true}\n filterable={true}\n />\n
\n
\n\n {/** 普通维度的配置 */}\n {dim_type == 1 && \n
\n 来源表\n
\n {this.getTablecfgFields(val)}}\n data={tableList}\n />\n
\n
\n }\n\n {dim_type == 1 && \n
\n 属性配置\n
\n \n this.propertyInfoUpData(val, \"selectVal\") }\n data={tableFields}\n />\n \n\n \n this.propertyInfoUpData(val, \"name\") }\n data={tableFields2}\n />\n \n
\n
\n }\n\n {dim_type == 2 && \n
\n 属性配置\n
\n {virtualPropertyList.map((row, k) => {\n return (\n
\n \n this.propertyInfoUpData(val, \"virtualPropertyList-name\", k) }\n placeholder=\"请输入维度ID, department\"\n />\n \n \n \n this.propertyInfoUpData(val, \"virtualPropertyList-desc\", k) }\n placeholder=\"请输入维度描述, 如:部门\"\n />\n \n \n this.addVirtualProperty(k)} className=\"el-icon-plus\">\n {k > 0 && ( this.removeVirtualProperty(k)} className=\"el-icon-minus\">)}\n
\n )\n })}\n
\n
\n }\n\n
\n 条件配置\n
\n this.setState({filter: val})}\n placeholder=\"请输入语法\"\n />\n
\n
\n\n
\n
\n \n
\n )\n }\n}\n\nexport default EditData\n","import React, { PureComponent } from 'react'\nimport SdwTable from '../../../common/Table'\nimport SdwPagenation from '../../../common/Pagenation'\nimport { Button } from 'element-react'\nimport './index.css'\nimport { getTopicBusiness, getPage, getTablecfgList, dimenGetOptions, getStandardSelects, getDimenById } from '@services/dimen'\nimport EditData from './components/EditData'\nimport SdwSelect from '../../../common/Select'\nimport SdwLoading from '@common/Loadding'\n\nclass Atom extends PureComponent {\n state = {\n dataList: [],\n search: {\n dim_type: { value: '', operator: '=' },\n dim_name_cn: { value: '', operator: '=' }\n },\n cfgData: {\n dimensionType: [],\n dimensionName: [],\n dimensionTypeMap: {}\n },\n topicData: [],\n pagination: {\n total: 0,\n per_page: 10,\n pages: 0,\n current_page: 0,\n },\n topicDic: {},\n topicServerDic: {},\n curTitle: '',\n curRecord: {},\n visible: false,\n tableList: [],\n standardSelectsOptions: [],\n standardSelctDataDic: {},\n PropertySourceSqlTablesDic: {},\n tableShowData: false\n }\n\n // 初始化\n componentDidMount() {\n this.getTablecfgList()\n this.getOptions()\n this.getStandardSelects()\n }\n\n // 获取所有的表\n getTablecfgList = () => {\n let that = this\n getTablecfgList({ limit: 10000, page: 0, search: { enable: { value: '1', operator: \"=\" } } }).then(res => {\n let tableList = res.data.data.items || []\n that.setState({tableList: tableList})\n\n let PropertySourceSqlTablesDic = {}\n for(let i=0; i 0){\n return\n }\n\n getStandardSelects().then(response => {\n if (response.data.code == 0) {\n let data = response.data.data\n\n // 字段标准解析\n let standardData = data.standard || []\n let standardDataDic = {}\n let topicHasOtherDic = {}\n let standardSelctDataDic = {}\n for(let i=0; i 0) {\n return\n }\n let that = this\n dimenGetOptions().then(res => {\n if (res.data.code === 0) {\n let data = res.data.data || this.cfgData\n let cfgData = {}\n cfgData.dimensionType = data.type || []\n cfgData.dimensionName = data.other || []\n cfgData.dimensionDesc = data.other || []\n let dimensionTypeMap = {}\n for(let i=0; i {\n let that = this\n var params = {}\n params.page = this.state.pagination.current_page || 0\n params.limit = this.state.pagination.per_page\n params.search = {}\n\n for (const key in this.state.search) {\n const dval = this.state.search[key]\n if (dval.value) {\n params.search[key] = dval\n }\n }\n\n that.setState({tableShowData: false})\n getPage(params).then((res) => {\n that.setState({tableShowData: true})\n\n let items = res.data.data.items\n\n if(!items) {\n items = []\n }\n\n for (let i=0; i {\n let that = this\n getTopicBusiness().then((res) => {\n that.setState({topicData: res.data.data})\n let topicDic = {}\n for(let i=0; i {\n let selt = this\n const columns = [\n {\n title: \"中文名称\",\n dataIndex: \"dim_name_cn\",\n },\n {\n title: \"英文名称\",\n dataIndex: \"dim_name_en\",\n },\n {\n title: \"类型\",\n dataIndex: \"dimTypeName\",\n },\n {\n title: \"关联数据标准\",\n dataIndex: \"dataStandardName\",\n },\n {\n title: \"映射关系\",\n dataIndex: \"dim_name_en\",\n },\n {\n title: \"修改人\",\n dataIndex: \"modify_user\",\n },\n {\n title: \"修改时间\",\n dataIndex: \"modify_time\",\n },\n {\n title: \"操作\",\n width: \"50\",\n render: (data, record) => {\n return (\n
{ selt.onClickGetOneData(data, selt) } }>编辑
\n )\n },\n }\n ]\n return columns\n }\n\n // 获取编辑的行记录\n onClickGetOneData = (data, e) => {\n console.log(\"onClickGetOneData 获取编辑的数据:\", data, e)\n let that = this\n getDimenById({ id: data.id }).then(res => {\n console.log(\"onClickGetOneData 获取编辑的数据 返回:\", res)\n\n if (res.data.code === 0) {\n let editorData = res.data.data.form[0]\n let propertyTableId = \"\"\n let tableKey = editorData.source_db + \"_\" + editorData.source_table\n let data_standard = []\n let virtualPropertyList = res.data.data.propertyInfo\n if (this.state.standardSelctDataDic.hasOwnProperty(editorData.data_standard)){\n data_standard = this.state.standardSelctDataDic[editorData.data_standard].selectList\n }\n if(this.state.PropertySourceSqlTablesDic.hasOwnProperty(tableKey)){\n propertyTableId = this.state.PropertySourceSqlTablesDic[tableKey]\n }\n\n let propertyInfo = {\n \"id\": \"\",\n \"field\": \"\",\n \"name\": \"\",\n \"selectVal\": \"\",\n \"fieldId\": \"\",\n }\n\n if(editorData.dim_type == 1 && virtualPropertyList && virtualPropertyList.length > 0) {\n propertyInfo.id = virtualPropertyList[0].id;\n propertyInfo.field = virtualPropertyList[0].attr_id || \"\";\n propertyInfo.name = virtualPropertyList[0].attr_name || \"\";\n propertyInfo.fieldId = virtualPropertyList[0].attr_id_field_id || \"\";\n if(propertyInfo.field != \"\") {\n propertyInfo.selectVal = propertyInfo.field + \"@@@\" + propertyInfo.fieldId;\n }\n }\n\n let virtualPropertyListNew = [\n {\n \"id\": \"\",\n \"name\": \"\",\n \"desc\": \"\",\n }\n ]\n\n if(editorData.dim_type == 2 && virtualPropertyList && virtualPropertyList.length > 0) {\n virtualPropertyListNew = [];\n for(let i=0; i {\n this.state.pagination.current_page = pageNum\n this.getPageData()\n }\n\n // 获取当前每页总条数\n pageCountChange = (per_page) => {\n this.state.pagination.per_page = per_page\n this.getPageData()\n }\n\n addOrEdit = (record = {}) => {\n this.setState({\n visible: true,\n curTitle: record.title,\n curRecord: record,\n })\n }\n\n onSureClick = () => {\n this.setState({\n visible: false,\n })\n this.getPageData()\n }\n\n render () {\n var { search, pagination, curTitle, visible, curRecord, topicData, tableList, standardSelectsOptions, tableShowData } = this.state;\n return (\n
\n {/** 搜索区域 */}\n
\n
\n\n \n {\n return {\n id: el.dim_name_cn,\n text: el.dim_name_cn\n }\n })}\n onChange={val => {\n this.setState({\n pagination:Object.assign({}, pagination, {\n current_page:1\n }),\n search: Object.assign({}, search, {\n dim_name_cn: Object.assign({}, search.dim_name_cn, {\n value: val\n })\n })\n }, this.getPageData)\n }}\n />\n \n\n \n {\n return {\n id: el.id,\n text: el.name\n }\n })}\n onChange={val => {\n this.setState({\n pagination:Object.assign({}, pagination, {\n current_page:1\n }),\n search: Object.assign({}, search, {\n dim_type: Object.assign({}, search.dim_type, {\n value: val\n })\n })\n }, this.getPageData)\n }}\n />\n \n\n
\n this.addOrEdit({ title: '新增维度', curRecord:{} }) }\n >新增\n
\n
\n\n
\n\n {/** 分页显示数据区域 */}\n
\n \n \n \n\n \n
\n\n {/** 编辑弹窗 */}\n this.setState({ visible: false })}\n onCancelClick={() => this.setState({ visible: false })}\n onSureClick={() => {\n this.setState({ visible: false })\n this.onSureClick()\n }}\n />\n
\n )\n }\n}\n\nexport default Atom\n","import React, { PureComponent } from 'react'\nimport SdwDrawer from '../../../../common/Drawer'\nimport SdwInput from '../../../../common/Input'\nimport SdwInput2 from '../../../../common/Input2'\nimport SdwSelect from '../../../../common/Select'\nimport SdwMessage from '../../../../common/Message'\nimport { getTableFields, getTablecfgFields, addOrUpdateDimenMap, getDimenById } from '@services/dimen'\nimport 'element-theme-default'\nimport './style/EditMapData.css'\n\nclass EditData extends PureComponent {\n\n state = {\n id: \"\",\n map_name_cn: \"\",\n map_name_en: \"\",\n source_dim: \"\",\n target_dim: \"\",\n propertyTableId: [['', '']],\n virtualPropertyList: [\n {\"id\":\"\",\"source_attr_id\":\"\",\"target_attr_id\":\"\"}\n ],\n virtualPropertyTwoList: [{\"id\":\"\",\"source_attr_id\":\"\",\"target_attr_id\":\"\"}],\n mapping_type: 1,\n\n tableFields: [],\n tableFieldsTwo: [],\n propertySourceSqlTables: [\n {\n \"id\": \"\",\n \"source_attr_id\": \"\",\n \"target_attr_id\": \"\",\n }\n ],\n virtualPropertyListInit:[\n {\n \"id\": \"\",\n \"source_attr_id\": \"\",\n \"target_attr_id\": \"\",\n }\n ],\n selectSourceDimAttrList: [],\n sholdCheckValidate: false,\n }\n\n componentDidMount () {\n this.initData()\n }\n\n componentDidUpdate (prevProps, prevState) {\n if (prevProps.record.id !== this.props.record.id) {\n this.initData()\n }\n \n this.setState({propertySourceSqlTables: this.props.propertySourceSqlTables})\n }\n\n initData = () => {\n let source_dim = this.props.record.source_dim || \"\";\n this.setState({\n id: this.props.record.id,\n map_name_cn: this.props.record.map_name_cn || \"\",\n map_name_en: this.props.record.map_name_en || \"\",\n source_dim: source_dim,\n target_dim: this.props.record.target_dim || \"\",\n propertySourceSqlTables: this.props.propertySourceSqlTables || [],\n propertyTableId: this.props.record.propertyTableId || [['', '']],\n virtualPropertyList: this.props.record.virtualPropertyList || [{\n \"id\": \"\",\n \"source_attr_id\": \"\",\n \"target_attr_id\": \"\",\n }],\n virtualPropertyTwoList: this.props.record.virtualPropertyTwoList || [{\n \"id\": \"\",\n \"source_attr_id\": \"\",\n \"target_attr_id\": \"\",\n }],\n mapping_type: this.props.record.mapping_type || 0\n })\n\n // 获取所有的应用表数据\n let propertyTableId = this.props.record.propertyTableId || [['', '']]\n for(let i=0; i 0){\n let tid = propertyTableId[i][0]\n \n if(tid != \"\") {\n this.getTablecfgFields(tid, i)\n }\n }\n }\n\n // 如果来源维度是普通维度则获取改维度信息\n if(source_dim != \"\") {\n this.getDimenById(source_dim, 'source')\n }\n \n }\n \n validateFun = (curValue, label = '') => {\n if (typeof curValue != 'object' && (typeof curValue === 'number' || !!curValue.trim())) {\n return true\n }\n \n return `${label}不能为空`\n }\n\n handleSureClick = () => {\n let {\n id,\n map_name_cn,\n map_name_en,\n source_dim,\n target_dim,\n propertyTableId,\n virtualPropertyList,\n virtualPropertyTwoList,\n mapping_type\n } = this.state\n\n let isValidatePass =\n !!map_name_cn &&\n !!map_name_en && \n !!source_dim &&\n !!target_dim\n\n if (!isValidatePass) {\n // 手动触发必填项的检查\n this.setState({\n sholdCheckValidate: true\n })\n return\n }\n\n let dataid = this.props.record.id || 0\n\n let params = {\n id: dataid,\n map_name_cn,\n map_name_en,\n source_dim,\n target_dim,\n propertyTableId,\n virtualPropertyList,\n virtualPropertyTwoList,\n tableFieldsIdList: [],\n tableIdList: [],\n mapping_type\n }\n\n for (let i = 0; i < propertyTableId.length; i++) {\n params.tableFieldsIdList.push(propertyTableId[i][1])\n params.tableIdList.push(propertyTableId[i][0])\n }\n\n if (mapping_type == 1) {\n params.virtualPropertyTwoList = this.state.virtualPropertyListInit;\n }else {\n params.virtualPropertyList = this.state.virtualPropertyListInit;\n }\n\n params.propertyTableId = JSON.stringify(params.propertyTableId)\n\n // 编辑数据\n addOrUpdateDimenMap(params).then(res => {\n if (res && res.data && res.data.code === 0) {\n let msg = id === 0 ? '新建成功' : '编辑成功'\n SdwMessage.success(msg)\n // 告诉父级点击了确定按钮\n this.props.onSureClick()\n } else {\n SdwMessage.error(res.data.msg);\n }\n })\n }\n\n // 获取指定的表的字段\n getTablecfgFields = (related_table_id, index) => {\n let that = this\n let parame = {}\n parame.id = related_table_id\n getTablecfgFields(parame).then(res => {\n let tableFieldsOne = res.data.data || []\n\n // 表字段\n let tableFieldsOneNew = tableFieldsOne.map(i => {\n return {\n id: i.id,\n text: i.field_name\n }\n })\n\n let tableFields = [...this.state.tableFields]\n tableFields[index] = tableFieldsOneNew\n that.setState({tableFields: tableFields})\n })\n }\n\n // 更新数据\n propertyInfoUpData = (val, type, index) => {\n if(type == \"propertyTableId-table\") {\n let propertyTableId = [...this.state.propertyTableId]\n propertyTableId[index][0] = val \n this.setState({\n propertyTableId: propertyTableId\n });\n this.getTablecfgFields(val, index)\n }\n if(type == \"propertyTableId-field\") {\n let propertyTableId = [...this.state.propertyTableId]\n propertyTableId[index][1] = val \n this.setState({\n propertyTableId: propertyTableId\n });\n }\n\n if(type == \"source_attr_id\") {\n let virtualPropertyTwoList = [...this.state.virtualPropertyTwoList]\n virtualPropertyTwoList[index].source_attr_id = val \n this.setState({\n virtualPropertyTwoList: virtualPropertyTwoList\n });\n }\n if(type == \"target_attr_id\") {\n let virtualPropertyTwoList = [...this.state.virtualPropertyTwoList]\n virtualPropertyTwoList[index].target_attr_id = val \n this.setState({\n virtualPropertyTwoList: virtualPropertyTwoList\n });\n }\n\n if(type == \"source_dim\") {\n this.setState({\n source_dim: val\n });\n this.getDimenById(val, 'source')\n }\n\n if(type == \"target_dim\") {\n this.setState({\n target_dim: val\n });\n this.getDimenById(val, 'target')\n }\n\n if(type == \"virtualPropertyList-one-source_attr_id\") {\n let virtualPropertyList = [...this.state.virtualPropertyList]\n virtualPropertyList[index].source_attr_id = val\n this.setState({\n virtualPropertyList: virtualPropertyList\n });\n }\n\n if(type == \"virtualPropertyList-one-target_attr_id\") {\n let virtualPropertyList = [...this.state.virtualPropertyList]\n virtualPropertyList[index].target_attr_id = val \n this.setState({\n virtualPropertyList: virtualPropertyList\n });\n }\n }\n \n addVirtualProperty = (index) => {\n let item = ['', '']\n let propertyTableId = [...this.state.propertyTableId]\n propertyTableId.push(item);\n this.setState({propertyTableId: propertyTableId})\n }\n\n removeVirtualProperty = (index) => {\n let propertyTableId = [...this.state.propertyTableId]\n propertyTableId.splice(index, 1);\n this.setState({propertyTableId: propertyTableId})\n }\n\n addVirtualProperty2 = (index) => {\n let item = {\n \"id\": \"\",\n \"source_attr_id\": \"\",\n \"target_attr_id\": \"\",\n }\n let virtualPropertyTwoList = [...this.state.virtualPropertyTwoList]\n virtualPropertyTwoList.push(item);\n this.setState({virtualPropertyTwoList: virtualPropertyTwoList})\n }\n\n removeVirtualProperty2 = (index) => {\n let virtualPropertyTwoList = [...this.state.virtualPropertyTwoList]\n virtualPropertyTwoList.splice(index, 1);\n this.setState({virtualPropertyTwoList: virtualPropertyTwoList})\n }\n\n getDimenById = (dimEnName, type) => {\n let dimId = dimEnName;\n let that = this\n getDimenById({ id: dimId }).then(res => {\n if (res.data.code == 0) {\n if (res.data.code === 0) {\n let virtualPropertyList = res.data.data.propertyInfo || []\n \n if(type == \"source\") {\n that.setState({selectSourceDimAttrList: [...virtualPropertyList]})\n }\n\n // 英文名生成\n if(that.state.source_dim != \"\" && that.state.target_dim != \"\") {\n let name = this.props.sourceDimListDic[this.state.source_dim].dim_name_en + \"_\" + this.props.targetDimListDic[this.state.target_dim].dim_name_en\n that.setState({map_name_en: name})\n\n //判断是否选了虚拟维度\n if(this.props.sourceDimListDic[this.state.source_dim].dim_type == 2 || this.props.targetDimListDic[this.state.target_dim].dim_type == 2) {\n this.setState({mapping_type: 2})\n }else{\n this.setState({mapping_type: 1})\n\n // 获取来源维度配置的来源表的所有字段选项\n let parame = {\n id: this.props.sourceDimListDic[this.state.source_dim].source_table_id\n }\n getTableFields(parame).then(res => {\n \n let tableFieldsTwo = res.data.data.fields || []\n that.setState({\n tableFieldsTwo: tableFieldsTwo,\n })\n \n })\n }\n }\n }\n }\n })\n }\n\n render () {\n let {\n map_name_cn,\n map_name_en,\n source_dim,\n target_dim,\n propertyTableId,\n virtualPropertyList,\n virtualPropertyTwoList,\n mapping_type,\n\n tableFields,\n sholdCheckValidate\n } = this.state\n\n // 来源表\n let tableList = this.props.tableList.map(i => {\n return {\n id: i.id,\n text: i.data_set_chinese + \"(\" + i.database_name + \".\" + i.table_name + \")\"\n }\n })\n\n // 来源维度列表\n let sourceDimList = []\n for(let i = 0; i < this.props.cfgData.sourceDimList.length; i++) {\n let item = this.props.cfgData.sourceDimList[i]\n let itemV = {\n id: item.id,\n text: item.dim_name_cn + '[' + item.dim_name_en + ']'\n }\n // if(item.dim_type == 1) {\n // sourceDimList.push(itemV)\n // }\n sourceDimList.push(itemV)\n }\n\n // 目标维度列表\n let targetDimList = []\n for(let i = 0; i < this.props.cfgData.targetDimList.length; i++) {\n let item = this.props.cfgData.targetDimList[i]\n let itemV = {\n id: item.id,\n text: item.dim_name_cn + '[' + item.dim_name_en + ']'\n }\n targetDimList.push(itemV)\n }\n\n // 维度1表字段\n let tableFieldsTwo = this.state.tableFieldsTwo.map(i => {\n return {\n id: i.id,\n text: i.field_name\n }\n })\n\n // 维度1来源属性\n let selectSourceDimAttrList = this.state.selectSourceDimAttrList.map(i => {\n return {\n id: i.attr_id_field_id,\n text: i.attr_id\n }\n })\n\n return (\n
\n \n \n
\n
\n 中文名\n \n this.validateFun(value, '中文名')}\n sholdCheckValidate={sholdCheckValidate}\n onChange={val => this.setState({map_name_cn: val})}\n placeholder=\"请输入指标中文描述,最多15个字\"\n />\n \n
\n\n
\n 英文名\n \n this.validateFun(value, '英文名')}\n sholdCheckValidate={sholdCheckValidate}\n onChange={val => this.setState({map_name_en: val})}\n placeholder=\"由英文、下划线组成,英文请勿大写\"\n />\n \n
\n\n
\n 来源维度\n \n this.validateFun(value, '来源维度')}\n sholdCheckValidate={sholdCheckValidate}\n onChange={val => this.propertyInfoUpData(val, \"source_dim\")}\n data={sourceDimList}\n />\n \n
\n\n
\n 目标维度\n \n this.validateFun(value, '目标维度')}\n sholdCheckValidate={sholdCheckValidate}\n onChange={val => this.propertyInfoUpData(val, \"target_dim\")}\n data={targetDimList}\n />\n \n
\n \n
\n 来源维度关联字段\n \n {propertyTableId.map((row, k) => {\n return (\n
\n \n this.propertyInfoUpData(val, \"propertyTableId-table\", k) }\n data={tableList}\n />\n \n\n \n this.propertyInfoUpData(val, \"propertyTableId-field\", k) }\n data={tableFields[k]}\n />\n \n\n this.addVirtualProperty(k)} className=\"el-icon-plus\">\n {k > 0 && ( this.removeVirtualProperty(k)} className=\"el-icon-minus\">)}\n
\n )\n })}\n
\n
\n\n {mapping_type == 1 && ( \n
\n 映射关系配置\n \n {virtualPropertyList.map((row, k) => {\n return (\n
\n \n this.propertyInfoUpData(val, \"virtualPropertyList-one-source_attr_id\", k) }\n data={selectSourceDimAttrList}\n />\n \n\n \n this.propertyInfoUpData(val, \"virtualPropertyList-one-target_attr_id\", k) }\n data={tableFieldsTwo}\n />\n \n
\n )\n })}\n
\n
\n )}\n \n {mapping_type == 2 && ( \n
\n 映射关系配置\n \n {virtualPropertyTwoList.map((row, k) => {\n return (\n
\n \n this.propertyInfoUpData(val, \"source_attr_id\", k) }\n placeholder=\"请输入\"\n />\n \n\n \n this.propertyInfoUpData(val, \"target_attr_id\", k) }\n placeholder=\"请输入\"\n />\n \n\n this.addVirtualProperty2(k)} className=\"el-icon-plus\">\n {k > 0 && ( this.removeVirtualProperty2(k)} className=\"el-icon-minus\">)}\n
\n )\n })}\n
\n
\n )}\n
\n
\n \n
\n )\n }\n}\n\nexport default EditData\n","import React, { PureComponent } from 'react'\nimport SdwTable from '../../../common/Table'\nimport SdwPagenation from '../../../common/Pagenation'\nimport { Button } from 'element-react'\nimport './index.css'\nimport { getPageMap, getTablecfgList, dimMappingAllList, getPropertySourceSqlTables, getDimenMapById } from '@services/dimen'\nimport EditData from './components/EditMapData'\nimport SdwSelect from '../../../common/Select'\nimport SdwInput from '../../../common/Input'\nimport SdwLoading from '@common/Loadding'\n\nclass Atom extends PureComponent {\n state = {\n dataList: [],\n search: {\n map_name_cn: { value: '', operator: 'like' },\n map_name_en: { value: '', operator: 'like' },\n id: { value: '', operator: '=' },\n source_dim: { value: '', operator: '=' },\n target_dim: { value: '', operator: '=' }\n },\n topicData: [],\n pagination: {\n total: 0,\n per_page: 10,\n pages: 0,\n current_page: 0,\n },\n topicDic: {},\n topicServerDic: {},\n curTitle: '',\n curRecord: {},\n visible: false,\n tableList: [],\n cfgData: {\n sourceDimList: [],\n targetDimList: []\n },\n sourceDimListDic: {},\n targetDimListDic: {},\n propertySourceSqlTables: [],\n tableShowData: false\n }\n\n // 初始化\n componentDidMount() {\n this.getOptions()\n this.getPageData()\n this.getTablecfgList()\n // 获取所有sql来源表选项列表\n this.getPropertySourceSqlTables()\n }\n\n // 获取所有的表\n getTablecfgList = () => {\n let that = this\n getTablecfgList({ limit: 10000, page: 0, search: { enable: { value: '1', operator: \"=\" } } }).then(res => {\n let tableList = res.data.data.items || []\n that.setState({tableList: tableList})\n })\n }\n\n /**\n * 获取所有sql来源表选项列表\n */\n getPropertySourceSqlTables () {\n const data = {}\n if(this.state.propertySourceSqlTables && this.state.propertySourceSqlTables.length > 0){\n return\n }\n\n getPropertySourceSqlTables(data, response => {\n if (response.data.code == 0) {\n let propertySourceSqlTables = []\n let tables = response.data.data\n for(let i=0; i {\n dimMappingAllList().then(res => {\n if (res.data.code === 0) {\n let data = res.data.data || this.state.cfgData\n\n let cfgData = {\n sourceDimList: [],\n targetDimList: []\n }\n cfgData.sourceDimList = data.source || []\n\n let sourceDimListDic = {}\n for (let i=0; i {\n let that = this\n var params = {}\n params.page = this.state.pagination.current_page || 0\n params.limit = this.state.pagination.per_page\n params.search = {}\n params.orSearch = {}\n\n for (const i in this.state.search) {\n const dval = this.state.search[i]\n if (dval.value) {\n if(i != \"id\") {\n params.search[i] = dval\n }\n if(i == \"id\") {\n let param = { value: `%${dval.value}%`, operator: 'like' } // 支持模糊搜索\n params.orSearch[i] = dval\n params.orSearch[\"map_name_cn\"] = param // 中文名支持模糊搜索\n params.orSearch[\"map_name_en\"] = dval\n }\n }\n }\n\n that.setState({tableShowData: false})\n getPageMap(params).then((res) => {\n that.setState({tableShowData: true})\n\n let items = res.data.data.items\n\n if(!items) {\n items = []\n }\n\n for (let i=0; i {\n let selt = this\n const columns = [\n {\n title: \"中文名\",\n dataIndex: \"map_name_cn\",\n },\n {\n title: \"英文名\",\n dataIndex: \"map_name_en\",\n },\n {\n title: \"来源维度\",\n dataIndex: \"source_dim_name\",\n },\n {\n title: \"目标维度\",\n dataIndex: \"target_dim_name\",\n },\n {\n title: \"修改人\",\n dataIndex: \"modify_user\",\n },\n {\n title: \"修改时间\",\n dataIndex: \"modify_time\",\n },\n {\n title: \"操作\",\n width: \"50\",\n render: (data, record) => {\n return (\n
{ selt.onClickGetOneData(data, selt) } }>编辑
\n )\n },\n }\n ]\n return columns\n }\n\n // 获取编辑的行记录\n onClickGetOneData = (data, e) => {\n getDimenMapById({ id: data.id }).then(res => {\n if (res.data.code == 0) {\n if (res.data.data.form.length > 0) {\n\n let info = res.data.data.form[0]\n let attrs = res.data.data.propertyInfo\n\n let propertyTableId = [];\n if(info.tableFieldSelectList != \"\" && info.tableFieldSelectList) {\n let properList = JSON.parse(info.tableFieldSelectList) || []\n for(let i=0; i 0) {\n formdata.virtualPropertyTwoList = [];\n for(let i=0; i {\n this.state.pagination.current_page = pageNum\n this.getPageData()\n }\n\n // 获取当前每页总条数\n pageCountChange = (per_page) => {\n this.state.pagination.per_page = per_page\n this.getPageData()\n }\n\n // 表格数据双向绑定\n SeachHandleChange(key, value) {\n this.state.pagination.current_page = 1\n\n if(key == \"id\") {\n this.state.search.id.value = value;\n }\n\n if(key == \"source_dim\") {\n this.state.search.source_dim.value = value;\n this.getPageData()\n }\n\n if(key == \"target_dim\") {\n this.state.search.target_dim.value = value;\n this.getPageData()\n }\n\n this.forceUpdate();\n }\n\n addOrEdit = (record = {}) => {\n this.setState({\n visible: true,\n curTitle: record.title,\n curRecord: record,\n })\n }\n\n onSureClick = () => {\n this.setState({\n visible: false,\n })\n this.getPageData()\n }\n\n render () {\n var { search, pagination, curTitle, visible, curRecord, topicData, tableList, cfgData, propertySourceSqlTables, sourceDimListDic, targetDimListDic, tableShowData } = this.state;\n\n let dataList = []\n for (let i=0; i\n {/** 搜索区域 */}\n
\n
\n\n \n ({})} // enter或触发onblur事件,所以这里传空func\n onChange={val => this.setState({\n pagination:Object.assign({}, pagination, {\n current_page:1\n }),\n search: Object.assign({}, search, {\n id: Object.assign({}, search.id, {\n value: val\n })\n })\n })}\n />\n \n\n \n {\n return {\n id: el.id,\n text: el.dim_name_cn + '[' + el.dim_name_en + ']'\n }\n })}\n onChange={val => {\n this.setState({\n pagination:Object.assign({}, pagination, {\n current_page:1\n }),\n search: Object.assign({}, search, {\n source_dim: Object.assign({}, search.source_dim, {\n value: val\n })\n })\n }, this.getPageData)\n }}\n />\n \n\n \n {\n return {\n id: el.id,\n text: el.dim_name_cn + '[' + el.dim_name_en + ']'\n }\n })}\n onChange={val => {\n this.setState({\n pagination:Object.assign({}, pagination, {\n current_page:1\n }),\n search: Object.assign({}, search, {\n target_dim: Object.assign({}, search.target_dim, {\n value: val\n })\n })\n }, this.getPageData)\n }}\n />\n \n\n
\n this.addOrEdit({ title: '新增映射', curRecord:{} }) }\n >新增\n
\n
\n\n
\n\n {/** 分页显示数据区域 */}\n
\n \n \n \n\n \n
\n\n {/** 编辑弹窗 */}\n this.setState({ visible: false })}\n onCancelClick={() => this.setState({ visible: false })}\n onSureClick={() => {\n this.setState({ visible: false })\n this.onSureClick()\n }}\n />\n \n )\n }\n}\n\nexport default Atom\n","import React, { PureComponent } from 'react'\nimport { Tabs } from 'element-react'\nimport './index.css'\nimport Dimen from './dimen'\nimport DimenMap from './dimenMap'\nimport SdwBreadCrumbs from '../../../common/BreadCrumbs'\n\nclass Atom extends PureComponent {\n state = {\n activeName: '1',\n visible: false,\n }\n\n // 初始化\n componentDidMount() {\n\n }\n\n render () {\n var { activeName, visible } = this.state;\n return (\n
\n \n\n
\n {/** tab页 */}\n console.log(tab.props.name) }>\n \n \n \n \n \n \n \n
\n\n
\n )\n }\n}\n\nexport default Atom\n","import React, { PureComponent } from 'react'\nimport SdwDrawer from '@common/Drawer'\nimport SdwInput from '@common/Input'\nimport SdwSelect from '@common/Select'\nimport SdwSwitch from '@common/Switch'\nimport SdwCascader from '@common/Cascader'\nimport SdwMessage from '@common/Message'\nimport { upData, addData } from '@services/modifier'\nimport 'element-theme-default'\nimport './style/EditData.css'\n\nclass EditData extends PureComponent {\n\n state = {\n id: \"\",\n modifier_name: \"\",\n source_id: \"\",\n filter_value: \"\",\n decoration: \"\",\n enable: 0\n }\n\n componentDidMount () {\n this.initData()\n }\n\n componentDidUpdate (prevProps, prevState) {\n\n if (prevProps.record.id !== this.props.record.id) {\n this.initData()\n }\n\n if (prevProps.record.related_table_id !== this.props.record.related_table_id) {\n this.getTablecfgFields(this.props.record.related_table_id)\n }\n }\n\n initData = () => {\n this.setState({\n id: this.props.record.id,\n modifier_name: this.props.record.modifier_name,\n source_id: this.props.record.source_id,\n filter_value: this.props.record.filter_value,\n decoration: this.props.record.decoration,\n enable: this.props.record.enable\n })\n }\n\n validateFun = (curValue, label = '') => {\n if (typeof curValue != 'object' && (typeof curValue === 'number' || !!curValue.trim())) {\n return true\n }\n return `${label}不能为空`\n }\n\n handleSureClick = () => {\n let {\n id,\n modifier_name,\n source_id,\n filter_value,\n decoration,\n enable,\n } = this.state\n\n let isValidatePass =\n !!modifier_name &&\n !!source_id &&\n !!filter_value\n\n if (!isValidatePass) {\n // 手动触发必填项的检查\n this.setState({\n sholdCheckValidate: true\n })\n return\n }\n\n let dataid = this.props.record.id || 0\n\n let params = { id: dataid, field: {}}\n\n let source_name = \"\"\n for (const i in this.props.tableList) {\n let item = this.props.tableList[i];\n if (item[\"id\"] == source_id) {\n source_name =\n (item.database_name ? item.database_name + \".\" : \"\") +\n item.table_name +\n \"(\" +\n item.data_set_chinese +\n \")\";\n break;\n }\n }\n\n let comitFieldData = {\n modifier_name,\n source_id,\n filter_value,\n decoration,\n enable,\n source_name: source_name\n }\n\n let formData = new FormData()\n for (let i in comitFieldData) {\n let val = comitFieldData[i]\n if (i === 'id') {\n continue\n }\n params.field[i] = val\n }\n\n for (let i in params) {\n formData.append(i, params[i])\n }\n\n if(dataid == 0) {\n // 添加数据\n addData(params, (res) => {\n\n if (res && res.data && res.data.code === 0) {\n let msg = id === 0 ? '新建成功' : '编辑成功'\n SdwMessage.success(msg)\n // 告诉父级点击了确定按钮\n this.props.onSureClick()\n } else {\n SdwMessage.error(res.data.msg);\n }\n })\n }else {\n // 更新数据\n upData(params, (res) => {\n\n if (res && res.data && res.data.code === 0) {\n let msg = id === 0 ? '新建成功' : '编辑成功'\n SdwMessage.success(msg)\n // 告诉父级点击了确定按钮\n this.props.onSureClick()\n } else {\n SdwMessage.error(res.data.msg);\n }\n })\n }\n }\n\n enableStateChange = (val) => {\n if(val) {\n this.setState({enable: 1})\n }else {\n this.setState({enable: 0})\n }\n }\n\n render () {\n let {\n modifier_name,\n source_id,\n filter_value,\n decoration,\n enable,\n\n sholdCheckValidate,\n } = this.state\n\n // 来源表\n let tableList = this.props.tableList.map(i => {\n return {\n id: i.id+'',\n text: i.data_set_chinese + \"(\" + i.database_name + \".\" + i.table_name + \")\"\n }\n })\n\n // 有效无效状态\n let enableState = enable == 1 ? true : false\n\n return (\n
\n \n \n
\n
\n 修饰词名称\n this.validateFun(value, '修饰词名称')}\n sholdCheckValidate={sholdCheckValidate}\n onChange={val => this.setState({modifier_name: val})}\n />\n
\n\n
\n 来源表\n this.validateFun(value, '来源表')}\n sholdCheckValidate={sholdCheckValidate}\n onChange={val => this.setState({source_id: val})}\n data={tableList}\n />\n
\n\n
\n 过滤条件\n \n this.validateFun(value, '过滤条件')}\n sholdCheckValidate={sholdCheckValidate}\n onChange={val => this.setState({filter_value: val})}\n />\n \n
\n\n
\n 描述\n this.setState({decoration: val})}\n />\n
\n\n
\n 是否启用\n \n {this.enableStateChange(val)}}\n />\n \n
\n
\n
\n \n
\n )\n }\n}\n\nexport default EditData\n","import React, {PureComponent} from 'react'\nimport {Dialog, DateRangePicker} from 'element-react'\nimport 'element-theme-default'\nimport './style/DialogShowData.css'\nimport PropTypes from 'prop-types'\nimport SdwTable from '../../../../common/Table'\nimport SdwSelect from '../../../../common/Select'\nimport SdwDialog from '@common/Dialog'\nimport {getTablecfgDetail, getTablecfgpreview} from '@services/modifier'\nimport {formatTime} from '@utils/formatTime'\nimport SdwLoading from '@common/Loadding'\n\nclass DialogVisible extends PureComponent {\n constructor(props) {\n super(props);\n }\n\n state = {\n id: \"\",\n timeField: \"\",\n dateRange: [],\n tableFields: [],\n dialogVisible: false,\n pagination: {\n total: 0,\n per_page: 20,\n from: 1,\n to: 0,\n current_page: 1,\n items: []\n },\n record: {},\n tableShowData: false\n }\n\n // 可传递的参数\n static propTypes = {\n closeDialog: PropTypes.object,\n }\n\n // 属性默认值\n static defaultProps = {\n closeDialog: () => {\n },\n };\n\n componentDidMount() {\n this.initData()\n // 初始化预览数据的时间选择器的默认时间\n this.getShowDataDefauteTime()\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (this.props.dialogVisible == false) {\n return\n }\n\n if (prevProps.record.id !== this.props.record.id || prevProps.dialogVisible !== this.props.dialogVisible) {\n this.initData()\n }\n if (prevProps.dialogVisible !== this.props.dialogVisible) {\n this.setState({\n dialogVisible: this.props.dialogVisible,\n })\n }\n }\n\n initData = () => {\n this.setState({\n dialogVisible: this.props.dialogVisible,\n id: this.props.record.id || 0,\n pagination: {\n total: 0,\n per_page: 20,\n from: 1,\n to: 0,\n current_page: 1,\n items: []\n },\n record: {...this.props.record}\n })\n this.getTablecfgFields(this.props.record.source_id)\n }\n\n getTablecfgFields = (id) => {\n let that = this\n let parame = {\n \"id\": id\n }\n if (!id || id == \"\") {\n return\n }\n\n that.setState({tableShowData: false})\n getTablecfgDetail(parame).then(res => {\n that.setState({tableShowData: true})\n\n let tableFields = res.data.data.fields || []\n that.setState({tableFields: tableFields})\n that.gettest(tableFields)\n\n // 获取预览数据\n that.fetchItems(that.props.record)\n })\n }\n\n validateFun = (curValue, label = '') => {\n if (typeof curValue != 'object' && (typeof curValue === 'number' || !!curValue.trim())) {\n return true\n }\n return `${label}不能为空`\n }\n\n // 获取昨天时间和今天时间\n getShowDataDefauteTime = () => {\n var date = new Date();//当前时间\n var year = date.getFullYear()\n var month = this.zeroFill(date.getMonth() + 1);//月\n var day = this.zeroFill(date.getDate());//日\n let startTime = year + \"/\" + month + \"/\" + day + \" 00:00:00\"\n\n var s = startTime\n startTime = new Date(s);\n\n var date2 = new Date();//当前时间\n date2 = new Date(date2.getTime() + 24 * 60 * 60 * 1000);\n year = date2.getFullYear()\n month = this.zeroFill(date2.getMonth() + 1);//月\n day = this.zeroFill(date2.getDate());//日\n let endTime = year + \"/\" + month + \"/\" + day + \" 00:00:00\"\n\n s = endTime\n endTime = new Date(s);\n\n this.setState({dateRange: [startTime, endTime]})\n }\n\n /**\n * 时间补零\n */\n zeroFill = (i) => {\n if (i >= 0 && i <= 9) {\n return \"0\" + i;\n } else {\n return i;\n }\n }\n\n // 获取预览数据\n getShowData = (val, type) => {\n if (type == \"field\") {\n this.setState({timeField: val}, () => {\n // 获取预览数据\n this.fetchItems()\n })\n }\n if (type == \"date\") {\n this.setState({dateRange: val}, () => {\n // 获取预览数据\n this.fetchItems()\n })\n }\n }\n\n fetchItems() {\n let that = this\n const data = {\n bool: {\n must: []\n }\n };\n\n let curRecord = this.state.record\n\n if (curRecord.filter_value != \"\") {\n data.bool.must.push({\n query_string: {\n query: curRecord.filter_value\n }\n });\n }\n\n if (this.state.timeField != \"\" && this.state.dateRange != null && this.state.dateRange.length > 0) {\n const range_time = {\n range: {}\n };\n range_time.range[this.state.timeField] = {\n gte: formatTime(+new Date(this.state.dateRange[0]), 0),\n lt: formatTime(+new Date(this.state.dateRange[1]), 0),\n };\n data.bool.must.push(range_time);\n }\n\n const post = {\n id: curRecord.source_id,\n limit: 50,\n search: {\n query: data\n }\n };\n\n getTablecfgpreview(post).then(res => {\n let pagination = {...that.state.pagination}\n pagination.items = [];\n pagination.current_page = 1;\n if (res.data.code == 0) {\n let targetDatas = res.data.data.items || [];\n pagination.items = res.data.data.items || [];\n pagination.total = res.data.data.total || 0;\n that.setState({\n targetDatas: targetDatas,\n pagination: pagination\n })\n }\n });\n }\n\n gettest = (fieldData) => {\n let dateFieldList = [];\n let timeField = \"\";\n if (fieldData.length > 0) {\n for (let i in fieldData) {\n const v = fieldData[i];\n if (v.field_type.includes(\"date\")) {\n dateFieldList.push(v);\n }\n }\n if (dateFieldList.length > 0) {\n timeField = dateFieldList[0].field_name;\n }\n\n }\n this.setState({\n tableFields: dateFieldList,\n timeField: timeField\n })\n }\n\n closeDialog = () => {\n this.setState({dialogVisible: false})\n this.props.closeDialog()\n }\n\n // 获取表标题\n getColumns = () => {\n let columnData = this.state.pagination.items[0]\n\n let columns = []\n\n for (let i in columnData) {\n let item = {\n title: i,\n width: \"120\",\n dataIndex: i,\n }\n columns.push(item)\n }\n\n return columns\n }\n\n render() {\n let {dateRange, timeField, pagination, tableShowData} = this.state;\n\n // 字段解析\n let tableFields = this.state.tableFields.map(i => {\n return {\n id: i.field_name,\n text: i.field_name_ch + '(' + i.field_name + ')'\n }\n })\n\n return (\n
\n this.closeDialog()}\n hideCancelButton={true}\n hideSureButton={true}\n cusWrapClass=\"DialogShowData-wrap\"\n >\n
\n \n this.getShowData(val, \"field\")}\n data={tableFields}\n />\n \n \n {\n this.getShowData(date, \"date\")\n }}\n />\n \n 共{pagination.total}条\n
\n
\n \n \n \n
\n \n
\n )\n }\n}\n\nexport default DialogVisible\n","import React, { PureComponent } from 'react'\nimport SdwTable from '../../../common/Table'\nimport SdwPagenation from '../../../common/Pagenation'\nimport { Button } from 'element-react'\nimport './index.css'\nimport { getPage, getTablecfgList, getModifierList } from '@services/modifier'\nimport EditData from './components/EditData'\nimport DialogShowData from './components/DialogShowData'\nimport SdwBreadCrumbs from '../../../common/BreadCrumbs'\nimport SdwSelect from '../../../common/Select'\nimport SdwInput from '../../../common/Input'\nimport _ from 'lodash'\nimport SdwLoading from '@common/Loadding'\n\nclass Atom extends PureComponent {\n state = {\n dataList: [],\n search: {\n filter_value: { value: \"\", operator: \"like\", type: \"both\" },\n source_id: { value: \"\", operator: \"=\" },\n modifier_name: { value: \"\", operator: \"like\" },\n modify_user: { value: \"\", operator: \"like\" }\n },\n pagination: {\n total: 0,\n per_page: 10,\n pages: 0,\n current_page: 0,\n },\n topicDic: {},\n topicServerDic: {},\n curTitle: '',\n curRecord: {},\n visible: false,\n tableList: [],\n dialogVisible: false,\n curShowDataRecord: {},\n tableShowData: false\n }\n\n // 初始化\n componentDidMount() {\n this.getPageData()\n this.getTablecfgList()\n }\n\n // 获取所有的表\n getTablecfgList = () => {\n let that = this\n getTablecfgList({ limit: 10000, page: 0, search: { enable: { value: '1', operator: \"=\" } } }).then(res => {\n let tableList = res.data.data.items || []\n that.setState({tableList: tableList})\n })\n }\n\n // 获取分页数据\n getPageData = () => {\n let that = this\n var params = {}\n params.page = this.state.pagination.current_page || 0\n params.limit = this.state.pagination.per_page\n params.search = {}\n\n for (const key in this.state.search) {\n const dval = this.state.search[key]\n if (dval.value) {\n params.search[key] = dval\n }\n }\n\n that.setState({tableShowData: false})\n getPage(params).then((res) => {\n that.setState({tableShowData: true})\n\n let items = res.data.data.items\n\n if(!items) {\n items = []\n }\n\n for (let i=0; i {\n let self = this\n const columns = [\n {\n title: \"ID\",\n dataIndex: \"id\",\n width: 44\n },\n {\n title: \"修饰词名称\",\n dataIndex: \"modifier_name\",\n width: 228\n },\n {\n title: \"来源表\",\n dataIndex: \"source_name\",\n width: 228\n },\n {\n title: \"过滤条件\",\n dataIndex: \"filter_value\",\n width: 228\n },\n {\n title: \"修改人\",\n dataIndex: \"modify_user\",\n width: 76\n },\n {\n //title: \"状态\",\n //dataIndex: \"enableName\",\n title: \"状态\",\n width: 40,\n render: function (data, record) {\n return (\n <>\n {\n _.isEqual(typeof data.enable, 'number') && \n }\n {_.isEqual(typeof data.enable, 'number') ?\n (data.enable ? '有效' : '无效') : '-'}\n \n )\n }\n },\n {\n title: \"更新时间\",\n dataIndex: \"modify_time\",\n width: 146\n },\n {\n title: \"操作\",\n width: 100,\n render: (data, record) => {\n return (\n
\n { self.onClickGetOneData(data, self) } }>编辑\n { self.onClickShowData(data, self) } }>预览数据\n
\n )\n },\n }\n ]\n return columns\n }\n\n // 展示预览数据\n onClickShowData = (data, e) => {\n this.setState({ dialogVisible: true, curShowDataRecord: data })\n }\n\n // 获取编辑的行记录\n onClickGetOneData = (data, e) => {\n const search = {\n id: { value: data.id, operator: \"=\" }\n };\n getModifierList({ search: search }).then(res => {\n if (res.data.code == 0) {\n let item = res.data.data.items[0] || [];\n item.enable = item.enable.toString()\n this.setState({\n curRecord: item,\n visible: true,\n curTitle: '编辑修饰词'\n })\n }\n });\n }\n\n // 获取当前页码\n getClickPage = (pageNum) => {\n this.state.pagination.current_page = pageNum\n this.getPageData()\n }\n\n // 获取当前每页总条数\n pageCountChange = (per_page) => {\n this.state.pagination.per_page = per_page\n this.getPageData()\n }\n\n // 表格数据双向绑定\n SeachHandleChange(key, value) {\n this.state.pagination.current_page = 1\n\n if(key == \"modifier_name\") {\n this.state.search.modifier_name.value = value;\n }\n\n if(key == \"source_id\") {\n this.state.search.source_id.value = value;\n this.getPageData()\n }\n\n if(key == \"modify_user\") {\n this.state.search.modify_user.value = value;\n }\n\n this.forceUpdate();\n }\n\n addOrEdit = (record = {}) => {\n this.setState({\n visible: true,\n curTitle: record.title,\n curRecord: record,\n })\n }\n\n onSureClick = () => {\n this.setState({\n visible: false,\n })\n this.getPageData()\n }\n\n closeDialog = () => {\n this.setState({dialogVisible: false})\n }\n\n render () {\n var { search, pagination, curTitle, visible, curRecord, tableList, dialogVisible, curShowDataRecord, tableShowData } = this.state;\n return (\n
\n \n\n
\n {/** 搜索区域 */}\n
\n
\n\n \n ({})} // enter或触发onblur事件,所以这里传空func\n onChange={val => this.setState({\n pagination:Object.assign({}, pagination, {\n current_page:1\n }),\n search: Object.assign({}, search, {\n modifier_name: Object.assign({}, search.modifier_name, {\n value: val\n })\n })\n })}\n />\n \n\n \n {\n return {\n id: el.id,\n text: el.data_set_chinese + \"(\" + el.database_name + \".\" + el.table_name + \")\"\n }\n })}\n onChange={val => {\n this.setState({\n pagination:Object.assign({}, pagination, {\n current_page:1\n }),\n search: Object.assign({}, search, {\n source_id: Object.assign({}, search.source_id, {\n value: val\n })\n })\n }, this.getPageData)\n }}\n />\n \n\n \n ({})} // enter或触发onblur事件,所以这里传空func\n onChange={val => this.setState({\n pagination:Object.assign({}, pagination, {\n current_page:1\n }),\n search: Object.assign({}, search, {\n modify_user: Object.assign({}, search.modify_user, {\n value: val\n })\n })\n })}\n />\n \n\n
\n this.addOrEdit({ title: '新增修饰词', curRecord:{} }) }\n >新增\n
\n
\n\n
\n\n {/** 分页显示数据区域 */}\n
\n \n \n \n\n \n
\n
\n\n {/** 编辑弹窗 */}\n this.setState({ visible: false })}\n onCancelClick={() => this.setState({ visible: false })}\n onSureClick={() => {\n this.setState({ visible: false })\n this.onSureClick()\n }}\n />\n\n {/** 预览数据弹窗 */}\n \n
\n )\n }\n}\n\nexport default Atom\n","import React from 'react'\nimport _ from 'lodash'\nimport SdwDialog from '@common/Dialog'\nimport SdwInput from '@common/Input'\nimport SdwSelect from '@common/Select'\nimport SdwMessage from '@common/Message'\nimport { storeNewAppTable, updateNewAppTable } from '@services/application'\nimport { getStaffs } from '@api/alertRules'\n\nimport './style/addApplicationWin.css'\nimport { hasPriv } from '@components/FrontendAuth/AuthMap'\n\nexport default class AddApplicationWin extends React.Component {\n\n state = {\n appInputValue: '',\n zhNameInputValue: '',\n domainValue: '',\n sholdCheckValidate: false,\n timeValue: 'day',\n isAppInputValuePass: false,\n isZhNameValidateFunPass: false,\n isRefreshValuePass: false,\n isRespUserValuePass: false,\n isDomainValuePass: false,\n timeSelectList: [\n {\n id: 'year',\n text: 'year'\n }, {\n id: 'month',\n text: 'month'\n }, {\n id: 'day',\n text: 'day'\n }, {\n id: 'hour',\n text: 'hour'\n }\n ],\n refreshValue: '',\n respUser: [],\n allMembers:[]\n }\n\n componentDidMount() {\n this.iniData()\n this.getStaff()\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (!this.props.dialogVisible && prevProps.dialogVisible !== this.props.dialogVisible) {\n this.setState({\n sholdCheckValidate: false\n })\n }\n\n if (!_.isEqual(prevProps.currentData, this.props.currentData)) {\n let { currentData } = this.props\n let indexFlag = (currentData.table_name || '').lastIndexOf('_')\n this.setState({\n appInputValue: currentData.table_name.substr(0, indexFlag) || '',\n timeValue: indexFlag !== -1 ? currentData.table_name.substr(indexFlag + 1) : 'day',\n zhNameInputValue: currentData.table_name_cn,\n // zhNameInputValue: currentData.table_name_cn,\n domainValue: Number(currentData.topic),\n refreshValue: currentData.run_cycle,\n respUser: currentData.resp_user.split(\",\"),\n })\n }\n }\n\n iniData = () => {\n let { currentData } = this.props\n console.log(\"----------currentData\", currentData)\n if (!!currentData) {\n let indexFlag = (currentData.table_name || '').lastIndexOf('_')\n this.setState({\n appInputValue: currentData.table_name.substr(0, indexFlag) || '',\n timeValue: indexFlag !== -1 ? currentData.table_name.substr(indexFlag + 1) : 'day',\n zhNameInputValue: currentData.table_name_cn,\n // zhNameInputValue: currentData.table_name_cn,\n domainValue: Number(currentData.topic),\n refreshValue: currentData.run_cycle,\n respUser: currentData.resp_user.split(\",\"),\n })\n }\n\n }\n\n getStaff = () => {\n getStaffs().then(res => {\n if (res && res.data && res.data.code === 0) {\n let list = _.isArray(res.data.data) ? res.data.data : []\n //list.push({name:\"default_focus\", value:\"default_focus\"})\n this.setState({\n allMembers: list\n })\n }\n })\n }\n\n appNameValidateFun = val => {\n this.setState({\n isAppInputValuePass: false\n })\n\n if (!/^[0-9a-zA-Z_]{1,}$/.test(val)) {\n return '仅支持英文、数字、下划线_'\n }\n\n if (val.length > 50) {\n return '输入最大长度50'\n }\n if (!!val) {\n this.setState({\n isAppInputValuePass: true\n })\n return true\n }\n return '该输入项不能为空'\n }\n\n zhNameValidateFun = val => {\n this.setState({\n isZhNameValidateFunPass: false\n })\n\n if (val.length > 50) {\n return '输入最大长度50'\n }\n if (!!val) {\n this.setState({\n isZhNameValidateFunPass: true\n })\n return true\n }\n return '该输入项不能为空'\n }\n\n domainSelectValidateFun = val => {\n this.setState({\n isDomainValuePass: false\n })\n\n if (!!val) {\n this.setState({\n isDomainValuePass: true\n })\n return true\n }\n return '该输入项不能为空'\n }\n\n selectValidateFun = val => {\n this.setState({\n isRefreshValuePass: false\n })\n\n if (!!val) {\n this.setState({\n isRefreshValuePass: true\n })\n return true\n }\n return '该输入项不能为空'\n }\n\n respUserValidateFun = val => {\n this.setState({\n isRespUserValuePass: false\n })\n\n if (val.length > 0) {\n this.setState({\n isRespUserValuePass: true\n })\n return true\n }\n return '运营负责人不能为空'\n }\n\n resetData = () => {\n this.setState({\n appInputValue: '',\n timeValue: 'day',\n zhNameInputValue: '',\n domainValue: '',\n refreshValue: ''\n })\n }\n\n handleSubmit = () => {\n let {\n isAppInputValuePass,\n isZhNameValidateFunPass,\n isDomainValuePass,\n isRefreshValuePass,\n isRespUserValuePass,\n appInputValue,\n timeValue,\n zhNameInputValue,\n domainValue,\n refreshValue,\n respUser\n } = this.state\n\n let { isEdit } = this.props\n\n let isValidatePass = false\n\n isValidatePass = isAppInputValuePass && isZhNameValidateFunPass && isDomainValuePass\n\n console.log(\")---------------isRespUserValuePass\", isRespUserValuePass)\n console.log(\")---------------isValidatePass\", isValidatePass)\n\n if ((!isEdit && !isValidatePass) || !isRespUserValuePass) {\n this.setState({\n sholdCheckValidate: true\n })\n return\n }\n\n // ajax updateNewAppTable\n if (isEdit && hasPriv('updateNewAppTable')) {\n updateNewAppTable({\n id: this.props.currentData.id,\n table_name: `${appInputValue}_${timeValue}`,\n table_name_cn: zhNameInputValue,\n topic: domainValue,\n run_cycle: refreshValue,\n resp_user: respUser.join(\",\"),\n })\n .then(res => {\n if (res.data && res.data.code === 0) {\n this.resetData()\n this.props.changeDialogVisible(false)\n\n // 新增/编辑成功,从新拉去新数据\n if (isEdit) {\n this.props.initData()\n } else {\n this.props.searchAppInfo()\n }\n\n let msg = isEdit ? '编辑成功' : '新增成功'\n SdwMessage.success(msg)\n } else {\n let msg = res.data && res.data.msg\n SdwMessage.error(msg);\n }\n }, () => SdwMessage.error(\"接口异常\"))\n } else if (hasPriv('storeNewAppTable')) {\n storeNewAppTable({\n table_name: `${appInputValue}_${timeValue}`,\n table_name_cn: zhNameInputValue,\n topic: domainValue,\n run_cycle: refreshValue,\n resp_user: respUser.join(\",\"),\n })\n .then(res => {\n if (res.data && res.data.code === 0) {\n this.resetData()\n this.props.changeDialogVisible(false)\n\n // 新增/编辑成功,从新拉去新数据\n if (isEdit) {\n this.props.initData()\n } else {\n this.props.searchAppInfo()\n }\n\n let msg = isEdit ? '编辑成功' : '新增成功'\n SdwMessage.success(msg)\n } else {\n let msg = res.data && res.data.msg\n SdwMessage.error(msg);\n }\n }, () => SdwMessage.error(\"接口异常\"))\n } {\n\n }\n\n }\n\n render() {\n let {\n dialogVisible,\n changeDialogVisible,\n isEdit,\n curTopicData,\n runCycleData,\n } = this.props\n\n let {\n timeValue,\n timeSelectList,\n refreshValue,\n sholdCheckValidate,\n appInputValue,\n zhNameInputValue,\n domainValue,\n respUser,\n allMembers,\n } = this.state\n\n console.log(\"-------respUser\", respUser)\n console.log(\"-------allMembers\", allMembers)\n\n return (\n
\n changeDialogVisible(false)}\n onSureClick={this.handleSubmit}\n >\n
\n 应用表名\n this.setState({ appInputValue: val })}\n sholdCheckValidate={sholdCheckValidate}\n validateFun={this.appNameValidateFun}\n />\n \n this.setState({ timeValue: val })}\n />\n \n
\n
\n 中文名\n this.setState({ zhNameInputValue: val })}\n sholdCheckValidate={sholdCheckValidate}\n validateFun={this.zhNameValidateFun}\n />\n
\n
\n 主题域\n this.setState({ domainValue: val })}\n />\n
\n
\n 运营负责人\n this.setState({ respUser: [] })} // 这里的onClear只是清除所有时才触发\n changeMultipleValue={val => this.setState({ respUser: val })}\n />\n
\n
\n 更新频率\n this.setState({ refreshValue: val })}\n />\n
\n \n
\n )\n }\n}\n","import React from 'react'\nimport _ from 'lodash'\nimport SdwDialog from '@common/Dialog'\nimport SdwSelect from '@common/Select'\nimport SdwCheckbox from '@common/Checkbox'\nimport SdwMessage from '@common/Message'\nimport { DateRangePicker } from 'element-react'\nimport { runTargetResult, searchDistinctTarget } from '@services/application'\nimport { formatTime } from '@utils/formatTime'\nimport { commonApi } from '@utils/request'\n\nimport './style/reRunWin.css'\n\nexport default class ReRunWin extends React.Component {\n state = {\n dataPicker: '',\n isChecked: false,\n isChecked2: false,\n multipleValue: [],\n allTargetArr: [],\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n if (prevProps.record.id !== this.props.record.id) {\n this.initData()\n }\n }\n\n initData = () => {\n this.setState({\n dataPicker: '',\n isChecked: false,\n isChecked2: false,\n multipleValue: []\n })\n\n // search={\"table_id\":{\"value\":61,\"operator\":\"=\"}}\n if (!this.props.record.id) return\n commonApi(searchDistinctTarget, {\n search: {\n table_id: {\n value: this.props.record.id,\n operator: \"=\"\n }\n }\n }).then(arr => {\n if (!_.isArray(arr)) return\n const allTargetArr = arr.reduce((prev, i) => {\n if (prev.every(j => i.target_id != j.id)) {\n prev.push({\n id: i.target_id,\n text: `${i.target_name_en}(${i.target_name_cn || '-'})`\n })\n }\n return prev\n }, [])\n this.setState({\n allTargetArr\n })\n })\n }\n\n handleSubmit = () => {\n let { dataPicker, isChecked, isChecked2, multipleValue } = this.state\n\n // 未选择时间,不下发重跑\n if (!dataPicker) return\n\n let params = {}\n params[\"app_table\"] = this.props.record.table_name\n params[\"is_online\"] = +isChecked\n params[\"is_test\"] = +isChecked2\n params[\"run_cycle\"] = this.props.record.run_cycle\n\n\n if (_.isArray(multipleValue)) {\n params[\"target_ids\"] = multipleValue.map(i => i.id).join(',')\n }\n\n if (dataPicker && dataPicker.length > 0) {\n params[\"start_time\"] = formatTime(+new Date(dataPicker[0]), 0)\n params[\"end_time\"] = formatTime(+new Date(dataPicker[1]), 0)\n }\n\n runTargetResult(params).then(res => {\n\n let record = res && res.data || {}\n let appTable = record && record.data && record.data.app_table\n\n if (record.code === 0) {\n SdwMessage.success(`${!!appTable ? '指标:' + appTable : ''} 重跑任务提交成功`)\n this.props.changeReRunVisible(false)\n return\n }\n\n const errMsg = record.msg || `${!!appTable ? '指标:' + appTable : ''} 重跑任务提交失败`\n SdwMessage.error(errMsg)\n }, () => SdwMessage.error(\"接口异常\"))\n }\n\n render () {\n let { reRunVisible, changeReRunVisible } = this.props\n\n let { dataPicker, isChecked, isChecked2, allTargetArr } = this.state\n\n return (\n changeReRunVisible(false)}\n onSureClick={this.handleSubmit}\n width={524}\n >\n
\n 时间\n time.getTime() > (Date.now() + 24*60*60*1000)}\n onChange={date => {\n this.setState({ dataPicker: date })\n }}\n />\n
\n
\n 指标\n this.setState({multipleValue: val})}\n />\n
\n
\n 数据同步\n
\n {\n this.setState({\n isChecked2: !isChecked2\n })\n }}\n />\n
\n {\n this.setState({\n isChecked: !isChecked\n })\n }}\n />\n
\n
\n
\n \n )\n }\n}\n","import React from 'react'\nimport {connect} from 'react-redux'\nimport {withRouter} from 'react-router-dom'\nimport _ from 'lodash'\nimport SdwBreadCrumbs from '@common/BreadCrumbs'\nimport SdwInput from '@common/Input'\nimport SdwTable from '@common/Table'\nimport SdwPagenation from '@common/Pagenation'\nimport { Button } from 'element-react'\nimport { getManageTopics } from '@services/management'\nimport { getPublicCfg } from '@services/atom'\nimport { searchAppInfo, searchAppInfoManage } from '@services/application'\nimport SdwMessage from '@common/Message'\nimport { hasPriv } from '@components/FrontendAuth/AuthMap'\n\nimport AddApplicationWin from './AddApplicationWin'\nimport ReRunWin from './ReRunWin'\nimport SdwSelect from '@common/Select/index'\nimport SdwLoading from '@common/Loadding'\n\nclass Application extends React.Component {\n\n state = {\n tableName: '',\n creactPerson: '',\n curPage: this.props.pageInfo || 1,\n curLimit: 10,\n dialogVisible: false,\n reRunVisible: false,\n topicData: [],\n runCycleData: [],\n allAppInfos: {},\n curRecord: {},\n tableShowData: false,\n publishType: ''\n }\n\n componentDidMount () {\n this.initData()\n }\n\n initData = async () => {\n await getManageTopics().then(res => {\n let jsonData = res && res.data || {}\n if (jsonData && jsonData.code === 0 && Array.isArray(jsonData.data)) {\n this.setState({\n topicData: jsonData.data\n })\n }\n }, () => SdwMessage.error(\"接口异常\"))\n\n this.onSearchAppInfo()\n\n getPublicCfg().then(res => {\n if (res.data.code === 0 && res.data.data) {\n let cfgData = {}\n for (let i in res.data.data) {\n cfgData[i] = res.data.data[i]\n }\n\n this.setState({ runCycleData: cfgData.runCycle })\n }\n }, () => SdwMessage.error(\"接口异常\"))\n }\n\n onSearchAppInfo = () => {\n let { curLimit, curPage } = this.state\n this.setState({tableShowData: false})\n if (hasPriv('searchAppInfo')) {\n searchAppInfo({\n ...!!curLimit ? {\n limit: curLimit,\n } : {},\n ...!!curPage ? {\n page: curPage\n } : {}\n }).then(res => {\n this.setState({tableShowData: true})\n let jsonData = res && res.data || {}\n if (jsonData && jsonData.code === 0 && jsonData.data) {\n this.setState({\n allAppInfos: jsonData.data\n })\n }\n }, () => SdwMessage.error(\"接口异常\"))\n return\n }\n if (hasPriv('searchAppInfoManage')) {\n searchAppInfoManage({\n ...!!curLimit ? {\n limit: curLimit,\n } : {},\n ...!!curPage ? {\n page: curPage\n } : {}\n }).then(res => {\n this.setState({tableShowData: true})\n let jsonData = res && res.data || {}\n if (jsonData && jsonData.code === 0 && jsonData.data) {\n this.setState({\n allAppInfos: jsonData.data\n })\n }\n }, () => SdwMessage.error(\"接口异常\"))\n return\n }\n }\n\n componentDidUpdate (prevProps, prevStates, snapshot) {\n if (\n !_.isEqual(prevStates.curPage, this.state.curPage) ||\n !_.isEqual(prevStates.curLimit, this.state.curLimit)\n ) {\n this.initTableData()\n }\n }\n\n getcolumns = () => {\n let self = this\n const columns = [\n {\n title: \"应用表名\",\n width: 460,\n // dataIndex: \"table_name\",\n render: (data, record) => {\n return (\n {`${data.table_name}(${data.table_name_cn})`}\n )\n }\n },\n {\n title: \"主题域/业务\",\n width: 160,\n // dataIndex: \"topic\",\n render: (data, record) => {\n let topicData = self.state.topicData.filter(i => i.topic_id == data.topic)\n let topicName = topicData[0] && topicData[0].topic_name || '-'\n return (\n {topicName}\n )\n }\n },\n {\n title: \"包含指标数\",\n width: 80,\n dataIndex: \"target_count\",\n },\n {\n title: \"发布状态\",\n width: 74,\n // dataIndex: \"publish_state\",\n render: (data, record) => (\n {!!data.publish_state ? '已发布' : '未发布'}\n )\n },\n {\n title: \"创建人\",\n width: 96,\n dataIndex: \"create_user\",\n },\n {\n title: \"负责人\",\n width: 96,\n dataIndex: \"resp_user\",\n },\n {\n title: \"创建时间\",\n width: 158,\n dataIndex: \"create_time\",\n },\n {\n title: \"修改人\",\n width: 96,\n dataIndex: \"modify_user\",\n },\n {\n title: \"修改时间\",\n width: 158,\n dataIndex: \"modify_time\",\n },\n ...(hasPriv('storeNewAppTable') || hasPriv('runTargetResult')) ?\n [{\n title: \"操作\",\n width: 80,\n render: (data, record) => {\n return (\n <>\n {\n hasPriv('updateNewAppTable') &&\n self.handleEdit(data)}\n style={{ \"fontSize\": \"14px\" }}\n >编辑\n }\n {\n hasPriv('runTargetResult') &&\n self.handleReRun(data)}\n style={{ \"fontSize\": \"14px\" }}\n >重跑\n }\n \n )\n },\n }] : []\n ]\n\n return columns\n }\n\n initTableData = () => {\n let {\n tableName,\n creactPerson,\n curPage,\n curLimit,\n publishType\n } = this.state\n\n // DO search\n let params = {\n limit: curLimit,\n page: curPage,\n ...(!!tableName || !!creactPerson || publishType !== '') ? {\n search: JSON.stringify({\n ...!!tableName ? {\n table_name: {\n value: `%${tableName}%`,\n operator: 'like'\n }\n } : {},\n ...!!creactPerson ? {\n create_user: {\n value: `%${creactPerson}%`,\n operator: 'like'\n }\n } : {}\n }),\n orSearch: JSON.stringify({\n ...!!tableName ? {\n table_name_cn: {\n value: `%${tableName}%`,\n operator: 'like'\n }\n } : {},\n ...!!creactPerson ? {\n create_user: {\n value: `%${creactPerson}%`,\n operator: 'like'\n }\n } : {},\n ...(publishType !== '') ? {\n publish_state: {\n value: publishType,\n operator: '='\n }\n } : {}\n })\n } : {}\n }\n\n this.setState({tableShowData: false})\n if (hasPriv('searchAppInfo')) {\n searchAppInfo(params).then(res => {\n this.setState({tableShowData: true})\n\n let jsonData = res && res.data || {}\n if (jsonData && jsonData.code === 0 && jsonData.data) {\n this.setState({\n allAppInfos: jsonData.data\n })\n }\n }, () => SdwMessage.error(\"接口异常\"))\n return\n }\n if (hasPriv('searchAppInfoManage')) {\n searchAppInfoManage(params).then(res => {\n this.setState({tableShowData: true})\n\n let jsonData = res && res.data || {}\n if (jsonData && jsonData.code === 0 && jsonData.data) {\n this.setState({\n allAppInfos: jsonData.data\n })\n }\n }, () => SdwMessage.error(\"接口异常\"))\n return\n }\n }\n\n changeDialogVisible = flag => {\n this.setState({\n dialogVisible: flag\n })\n }\n\n changeReRunVisible = flag => {\n this.setState({\n reRunVisible: flag\n })\n }\n\n handleEdit = data => {\n this.props.history.push({\n pathname: '/admin/factory/applicationDetail',\n state: data\n })\n }\n\n handleReRun = data => {\n this.setState({\n curRecord: data\n })\n this.changeReRunVisible(true)\n }\n\n\n render() {\n let {\n tableName,\n creactPerson,\n dialogVisible,\n reRunVisible,\n topicData,\n runCycleData,\n allAppInfos,\n curRecord,\n tableShowData,\n publishType\n } = this.state\n\n let curTopicData = topicData.map(i => {\n return {\n id: i.topic_id,\n text: i.topic_name\n }\n })\n\n let curRunCycleData = runCycleData.map(i => {\n return {\n id: i.id,\n text: i.name\n }\n })\n\n return (\n
\n \n\n
\n
\n
\n
\n this.setState({\n curPage: 1,\n tableName: val\n })}\n />\n
\n
\n this.setState({\n curPage: 1,\n creactPerson: val\n })}\n />\n
\n
\n this.setState({\n curPage: 1,\n publishType: val\n }, this.initTableData)}\n />\n
\n\n
\n {\n hasPriv('storeNewAppTable') &&\n this.changeDialogVisible(true) }\n >新增\n }\n
\n
\n
\n\n
\n \n \n \n\n {\n this.setState({\n curPage: page\n })\n }}\n pageCountChange={limit => {\n this.setState({\n curLimit: limit\n })\n }}\n />\n
\n
\n\n {\n dialogVisible&&\n }\n\n \n
\n )\n }\n}\n\nconst mapState = state => ({\n pageInfo: state.page.pageInfo\n})\n\nexport default withRouter(connect(mapState)(Application))\n","export const hGClose = (e, ref, instance, visibleProps) => {\n const node = ref\n if (!node.contains(e.target)) {\n instance.setState({\n [visibleProps]: false\n })\n }\n}","import React, { Component } from \"react\";\nimport PropTypes from 'prop-types'\nimport \"./index.css\";\nimport { hGClose } from \"@utils/handleGlobalClose\";\nimport _ from \"lodash\";\n\nclass Cascader extends Component {\n cascaderInputWrapRef = React.createRef()\n selectInputRef = React.createRef()\n static defaultProps = {\n width: '100%',\n listWidth: 200,\n listMaxHeight: 300,\n height: 40,\n placeholder: '全部',\n value: {\n ids: [],\n texts: []\n },\n data: [],\n }\n state = {\n showCascaderList: false,\n showCascaderSecondList: false,\n secondList: [],\n fuzzyData:[],\n inputValue: '',\n showClearIcon: false,\n isValidatePass: true,\n validateText: ''\n }\n componentDidMount() {\n document.addEventListener('click', this.handleGlobalClose)\n let { value } = this.props\n if (value.texts.length > 1) {\n this.setState({\n inputValue: value.texts.join('/')\n })\n }\n }\n componentDidUpdate(prevProps,prevState, snapshot){\n let {data,value,sholdCheckValidate} = this.props\n if(prevProps.data.length !== data.length){\n this.setState({\n fuzzyData: data\n })\n }\n if(prevProps.value.texts.length !== value.texts.length || prevProps.value !== value ){\n if (value.texts.length > 1) {\n this.setState({\n inputValue: value.texts.join('/')\n })\n }\n }\n\n if (prevProps.sholdCheckValidate !== sholdCheckValidate) {\n this.validate(value)\n }\n\n }\n componentWillUnmount() {\n document.removeEventListener('click', this.handleGlobalClose)\n }\n handleGlobalClose = e => {\n hGClose(e, this.cascaderInputWrapRef.current, this, 'showCascaderList')\n }\n cascaderToggle = () => {\n this.setState({\n showCascaderList: !this.state.showCascaderList\n })\n }\n toGetSecondList = (e, item) => {\n let selectItem = this.selectItem = {\n ids: [item.id],\n texts: [item.text]\n }\n\n this.props.ajaxFun(item, selectItem).then(res => {\n if (Array.isArray(res)) {\n this.setState({\n secondList: res,\n showCascaderSecondList: true\n })\n }\n })\n }\n setValue = (e, item) => {\n let selectItem = this.selectItem\n let newSelectItem = {\n ids: [selectItem.ids[0], item.id],\n texts: [selectItem.texts[0], item.text]\n }\n // 把选中的数据传递回上层\n this.props.onChange(newSelectItem)\n this.validate(newSelectItem)\n this.setState({\n showCascaderList: false\n })\n }\n fuzzyFilter = (value) => {\n let {data} = this.props\n let filterArr = data.filter(i => i.text.includes(value))\n this.setState({\n showCascaderList:true,\n fuzzyData: filterArr,\n inputValue: value\n })\n }\n handleClearInput = e => {\n e.preventDefault()\n this.setState({\n inputValue: ''\n })\n let temObj ={ids: [],texts: []}\n this.props.onChange(temObj)\n this.validate(temObj)\n this.selectInputRef.current.focus()\n }\n validate = curRecord => {\n\n // 如果没有传入valiateFun进行校验,直接跳过\n if (typeof this.props.validateFun !== 'function') {\n return\n }\n\n let res = this.props.validateFun(curRecord)\n\n // validateFun只有返回true,才会校验通过\n if (res === true) {\n this.setState({\n isValidatePass: res,\n validateText: ''\n })\n } else {\n this.setState({\n isValidatePass: false,\n validateText: res\n })\n }\n }\n render() {\n let { data,placeholder, isError, width, listWidth, listMaxHeight, value,clearable } = this.props\n let { showCascaderList, showCascaderSecondList, secondList,inputValue ,fuzzyData,showClearIcon,isValidatePass,validateText,} = this.state\n\n if(inputValue === '' || !fuzzyData.length) {\n fuzzyData = _.cloneDeep(data)\n }\n let isErrorTip = isError && isError.error\n let errorMsg = isError && isError.msg\n\n if (!isError) {\n isErrorTip = !isValidatePass\n errorMsg = validateText\n }\n\n let { cascaderToggle, toGetSecondList, setValue, handleClearInput } = this\n\n return (\n this.setState({ showClearIcon: true })}\n onMouseLeave={() => this.setState({ showClearIcon: false })}\n >\n this.fuzzyFilter(e.target.value)}\n style={{ width: '100%', height: '40px' }} />\n \n\n { isErrorTip &&
{errorMsg}
}\n\n {\n showCascaderList &&\n
\n\n
\n {\n Array.isArray(fuzzyData) && fuzzyData.length > 0 ?\n fuzzyData.map(item => {\n let isSelected = value.ids && value.ids[0] === item.id\n return (\n
toGetSecondList(e, item)}>\n {item.text}\n \n
\n )\n })\n :\n
\n 暂无匹配数据\n
\n }\n\n
\n\n {\n showCascaderSecondList &&\n
\n {\n Array.isArray(secondList) && secondList.length > 0 ?\n secondList.map(item => {\n let isSelected = value.ids && value.ids[1] === item.id\n return (\n
setValue(e, item)}>\n {item.text}\n
\n )\n })\n :\n
\n 暂无匹配数据\n
\n }\n
\n }\n\n
\n }\n \n )\n }\n}\n\nCascader.propTypes = {\n data: PropTypes.array,\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n listWidth: PropTypes.number,\n listMaxHeight: PropTypes.number,\n value: PropTypes.object,\n height: PropTypes.number,\n placeholder: PropTypes.string,\n ajaxFun: PropTypes.func\n}\n\nexport default Cascader\n","import _ from \"lodash\"\n\nconst TOP_MAP = {\n normal: 1,\n top: 2,\n relation: 3,\n}\n\nconst TOP_MAP_TEXT = {\n [TOP_MAP.normal]: '普通指标',\n [TOP_MAP.top]: 'TOP型指标',\n [TOP_MAP.relation]: '关联字段',\n}\n\nexport {\n TOP_MAP,\n TOP_MAP_TEXT\n}\n\nexport function formatToIdMap(list) {\n let objMap = {}\n if (!_.isArray(list) || !list.length) return objMap\n\n for (let i = 0; i < list.length; i++) {\n const item = list[i];\n let { dimensionTableMatchingFelds, addField } = item\n if (_.isEmpty(dimensionTableMatchingFelds) || !_.isArray(dimensionTableMatchingFelds.ids) || dimensionTableMatchingFelds.ids.length !== 2) break\n let relateConfig = {\n relate_table_id: dimensionTableMatchingFelds.ids[0],\n relate_field: dimensionTableMatchingFelds.ids[1],\n app_field: item.app_field,\n filter: item.filter\n }\n\n if (_.isArray(addField) && addField.length) {\n addField.forEach(f => {\n let { id, field_name, field_name_ch } = f\n objMap[id] = {\n id,\n target_name_en: field_name,\n target_name_cn: field_name_ch,\n ...relateConfig\n }\n })\n }\n }\n\n\n return objMap\n}\n","import React, { Component } from 'react'\n\nimport SdwDialog from '@common/Dialog'\nimport SdwInput from '@common/Input'\nimport SdwSelect from '@common/Select'\nimport SdwMessage from '@common/Message'\nimport SdwLoading from \"@common/Loadding\";\n\nimport FieldCascader from \"./common/Cascader\";\nimport _ from \"lodash\";\n\nimport { getTablecfgList, getTablecfgFields } from '@services/dimen'\nimport { storeAppTarget, updateAppTarget, deleteAppTarget, getAppDimField } from '@services/application'\nimport { formatToIdMap } from './common'\n\nimport './style/applicationSettingWin.css'\n\nconst fieldSettingObj = {\n dimensionTableMatchingFelds: {\n ids: [],\n texts: []\n }, //维度表匹配字段\n app_field: '',//应用表字段\n addField:[], //[{id:'',text:''},] 添加字段\n filter: '', //条件配置\n}\n\nfunction checkMaxLength(value) {\n if(value.length < 500){\n return true\n }\n return '条件配置输入最大500'\n}\n\nfunction checkNotEmpty(value) {\n if(value.ids.length === 2){\n return true\n }\n return '维度表匹配字段不能为空'\n}\n\nexport default class ApplicationSettingWin extends React.Component {\n state={\n fieldSettingList: [_.cloneDeep(fieldSettingObj)],\n tableList: [],\n sholdCheckValidate:false,\n tableFields:[],\n loadding: false,\n oriList: [] // 原始数据\n }\n // 初始化\n componentDidMount() {\n this.onGetTablecfgList()\n }\n // 获取所有的表\n onGetTablecfgList = async () => {\n let that = this\n await getTablecfgList({ limit: 10000, page: 0, search: { enable: { value: '1', operator: \"=\" } } }).then(res => {\n let tableList = res.data.data.items || []\n tableList = tableList.map(i => {\n return {\n id: i.id,\n text: i.data_set_chinese + \"(\" + i.database_name + \".\" + i.table_name + \")\"\n }\n })\n that.setState({tableList})\n })\n\n if (this.props.currentData && this.props.currentData.id) {\n await getAppDimField({ table_id: this.props.currentData.id }).then(res => {\n let code = _.get(res, 'data.code')\n let oriData = _.get(res, 'data.data')\n // console.log('________________res: ', code, oriData);\n if (code === 0 && !_.isEmpty(oriData)) {\n let oriList = oriData.map(ori => {\n let fieldName = that.state.tableList.filter(j => j.id == ori.relate_table_id)[0]\n fieldName = fieldName && fieldName.text || ''\n\n return {\n key: ori.key,\n dimensionTableMatchingFelds: {\n ids: [ori.relate_table_id, ori.relate_field],\n texts: [fieldName, ori.relate_field]\n },\n app_field: ori.app_field,\n addField: _.isArray(ori.dim_field_info) ? ori.dim_field_info.map(j => {\n return {\n field_name: j.target_name_en,\n field_name_ch: j.target_name_cn,\n id: j.id,\n text: j.target_name_en + (!!j.target_name_cn ? ('(' + j.target_name_cn + ')') : '')\n }\n }) : [],\n filter: ori.filter\n }\n })\n\n this.setState({\n fieldSettingList: _.cloneDeep(oriList),\n oriList: _.cloneDeep(oriList) // 原始数据\n })\n }\n })\n }\n\n }\n addConfigRule = () => {\n let fieldSettingList = this.state.fieldSettingList\n let fieldSetting = _.cloneDeep(fieldSettingObj)\n this.setState({ fieldSettingList: [...fieldSettingList,fieldSetting] })\n }\n removeConfigRule = (index) => {\n let fieldSettingList = this.state.fieldSettingList\n if (fieldSettingList.length <= 1) return\n fieldSettingList.splice(index, 1)\n this.setState({ fieldSettingList: [...fieldSettingList] })\n }\n setFieldSettingProps = (val, index, prop) => {\n let fieldSettingList = [...this.state.fieldSettingList]\n fieldSettingList[index][prop] = val\n if(prop === 'dimensionTableMatchingFelds') {\n fieldSettingList[index].addField = []\n }\n this.setState({\n fieldSettingList\n })\n }\n getField = (item, selectItem,index) => {\n this.setFieldSettingProps(selectItem, index, 'dimensionTableMatchingFelds')\n return new Promise((resolve) => {\n let parame = {}\n parame.id = item.id\n this.setState({loadding:true})\n getTablecfgFields(parame).then(res => {\n let tableFields = res.data.data || []\n tableFields = tableFields.map(i => {\n return {\n id: i.field_name,\n text: i.field_name_ch? i.field_name + \"(\" + i.field_name_ch + \")\" : i.field_name\n }\n })\n resolve(tableFields)\n this.setState({\n loadding:false\n })\n })\n })\n }\n checkFieldSetting = (fieldSettingList) => {\n return fieldSettingList.filter(el => el.dimensionTableMatchingFelds.ids.length === 2 && el.app_field !== '' && el.addField.length > 0)\n }\n\n getParams = item => {\n let { target_name_en, target_name_cn, relate_table_id, relate_field, app_field, filter } = item\n return {\n table_id: this.props.currentData.id,\n target_name_en,\n target_name_cn,\n target_type: 3, // 固定值\n relate_config: JSON.stringify({\n relate_table_id,\n relate_field,\n app_field,\n filter\n })\n }\n }\n\n handleSubmit = () => {\n let { fieldSettingList, oriList } = this.state\n\n let cloneList = _.cloneDeep(fieldSettingList)\n cloneList = this.checkFieldSetting(cloneList)\n if (cloneList.length === 0) {\n cloneList.push(_.cloneDeep(fieldSettingObj))\n }\n this.setState({\n fieldSettingList: cloneList\n })\n\n // 如果新数据和原始数据同,则跳出submit\n let isSame = _.isEqualWith(oriList, fieldSettingList, _.isEqual)\n if (isSame) {\n // 关闭弹窗\n this.props.changeDialogVisible(false)\n return\n }\n\n // console.log('cloneList: ', cloneList);\n // console.log('oriList: ', oriList);\n\n // 将 cloneList、oriList 变成以id为key的map,便于对比出增、删、改的类容\n let cloneListMap = formatToIdMap(cloneList)\n let oriListMap = formatToIdMap(oriList)\n\n // console.log('cloneListMap: ', cloneListMap);\n // console.log('oriListMap: ', oriListMap);\n let addArr = [] // 新增列表\n let delArr = [] // 删除列表\n let updateArr = [] // 更新列表\n\n _.keys(oriListMap).forEach(id => {\n let oriItem = oriListMap[id]\n let curItem = cloneListMap[id]\n \n // del\n if (_.isEmpty(curItem)) {\n delArr.push({\n id,\n ...this.getParams(oriItem)\n })\n } else {\n // id同,只要其他参数不同,就是更新\n let isUpdate = ['target_name_en', 'target_name_cn', 'relate_table_id', 'relate_field', 'app_field', 'filter'].some(key => {\n return oriItem[key] !== curItem[key]\n })\n if (isUpdate) {\n updateArr.push({\n id,\n ...this.getParams(curItem)\n })\n }\n }\n })\n\n _.keys(cloneListMap).forEach(id => {\n let curItem = cloneListMap[id]\n\n // add\n if (_.isEmpty(oriListMap[id])) {\n addArr.push(this.getParams(curItem))\n }\n })\n\n // console.log('addArr: ', addArr);\n // console.log('delArr: ', delArr);\n // console.log('updateArr: ', updateArr);\n\n // 删除接口\n if (delArr.length) {\n this.onDeleteAppTarget(delArr)\n }\n\n // 更新接口\n if (updateArr.length) {\n this.onUpdateAppTarget(updateArr)\n }\n\n // 新增接口\n if (addArr.length) {\n this.onStoreAppTarget(addArr)\n }\n\n // 关闭弹窗\n this.props.changeDialogVisible(false)\n }\n\n onDeleteAppTarget = delArr => {\n deleteAppTarget(JSON.stringify({\n delete: delArr\n }))\n .then(res => {\n let code = _.get(res, 'data.code')\n if (code === 0) {\n SdwMessage.success('删除成功')\n } else {\n SdwMessage.error('删除失败')\n }\n }, () => SdwMessage.error(\"接口异常\"))\n }\n\n onUpdateAppTarget = updateArr => {\n updateAppTarget(JSON.stringify({\n update: updateArr\n }))\n .then(res => {\n let code = _.get(res, 'data.code')\n if (code === 0) {\n SdwMessage.success('更新成功')\n } else {\n SdwMessage.error('更新失败')\n }\n }, () => SdwMessage.error(\"接口异常\"))\n }\n \n onStoreAppTarget = addArr => {\n storeAppTarget(JSON.stringify({\n add: addArr\n }))\n .then(res => {\n let code = _.get(res, 'data.code')\n if (code === 0) {\n SdwMessage.success('新增成功')\n } else {\n SdwMessage.error('新增失败')\n }\n }, () => SdwMessage.error(\"接口异常\"))\n }\n render() {\n let { dialogVisible, changeDialogVisible, } = this.props\n let { fieldSettingList, tableList, sholdCheckValidate,loadding } = this.state\n let {setFieldSettingProps,getField} = this\n return (\n dialogVisible &&\n changeDialogVisible(false)}\n onSureClick={this.handleSubmit}\n >\n
字段设置
\n
\n \n {\n fieldSettingList.map((el,index) => (\n
\n
\n getField(item, selectItem,index)}\n data={tableList}\n listWidth={390}\n value={el.dimensionTableMatchingFelds}\n // sholdCheckValidate={sholdCheckValidate}\n // validateFun={checkNotEmpty}\n onChange={(val) => setFieldSettingProps(val, index, 'dimensionTableMatchingFelds')}\n width={390} \n />\n
\n setFieldSettingProps(val, index, 'app_field')}\n width={200}\n />\n
\n
\n setFieldSettingProps(val, index, 'filter')}\n width={200}\n />\n
\n { index > 0 &&
}\n
\n
\n setFieldSettingProps(val, index, 'addField')}\n />\n
\n
\n ))\n }\n
\n \n
\n
\n 添加配置规则\n
\n
\n \n )\n }\n}\n\n\nclass FieldSettingRow extends Component {\n state={\n tableFields: []\n }\n componentDidMount () {\n this.onGetTablecfgFields()\n }\n componentDidUpdate(prevProps, prevState){\n let id = this.props.fetchId\n if(prevProps.fetchId !== id) this.onGetTablecfgFields()\n }\n onGetTablecfgFields = () => {\n let id = this.props.fetchId\n if (!id) return\n let parame = {}\n parame.id = id\n getTablecfgFields(parame).then(res => {\n let tableFields = res.data.data || []\n tableFields = tableFields.map(i => {\n return {\n id: i.id,\n field_name: i.field_name,\n field_name_ch: i.field_name_ch,\n text: i.field_name_ch? i.field_name + \"(\" + i.field_name_ch + \")\" : i.field_name\n }\n })\n this.setState({\n tableFields\n })\n })\n }\n render () {\n let {value,onChange} = this.props\n let {tableFields} = this.state\n return (\n onChange(val)}\n width={820}\n listWidth={820}\n />\n )\n }\n}","import React from 'react'\nimport _ from 'lodash'\nimport SdwDialog from '@common/Dialog'\nimport SdwMessage from '@common/Message'\nimport {Checkbox} from 'element-react'\nimport {getDelayTargets, saveAppDelay, getAppDetail} from '@services/application'\nimport './style/reRunWin.css'\n\nexport default class RegularRerunWin extends React.Component {\n\n state = {\n delayList: [], // 可选指标\n checkList: [], // 已选指标\n }\n\n componentDidMount() {\n this.getDelayTargets()\n this.getAppDetail()\n }\n\n // 获取重跑指标\n getDelayTargets = () => {\n let {currentData} = this.props\n // console.log('currentData=====', currentData)\n let params = {\n 'id': currentData.id\n }\n getDelayTargets(params).then(res => {\n if (res && res.data && res.data.code === 0) {\n let record = res.data.data || []\n // console.log('getDelayTargets=====', record)\n this.setState({\n delayList: record\n })\n }\n })\n }\n\n // 多选框回显\n getAppDetail = () => {\n let {currentData} = this.props\n let params = {\n 'id': currentData.id\n }\n getAppDetail(params).then(res => {\n if (res && res.data && res.data.code === 0) {\n let array\n let items = res.data.data.delay_ids || ''\n if (items) {\n array = (items.split(',')).map(Number)\n } else {\n array = []\n }\n this.setState({\n checkList: array\n })\n }\n })\n }\n\n // 提交重跑\n handleSubmit = () => {\n let {currentData} = this.props\n let {delayList, checkList} = this.state\n if (delayList.length == 0) {\n SdwMessage.error('暂无相关指标')\n return\n }\n let params = {\n 'id': currentData.id,\n 'target_ids': checkList\n }\n saveAppDelay(params).then(res => {\n if (res && res.data && res.data.code === 0) {\n SdwMessage.success('定时重跑提交成功')\n this.props.changeDelayReRunVisible(false)\n }\n }).catch(() => SdwMessage.error('定时重跑提交失败'))\n }\n\n render() {\n let {dialogVisible, changeDelayReRunVisible} = this.props\n let {delayList, checkList} = this.state\n\n // console.log('checkList======', checkList)\n\n return (\n changeDelayReRunVisible(false)}\n onSureClick={this.handleSubmit}\n width={640}\n >\n
\n {\n _.isArray(delayList) && delayList.length > 0 ?\n \n 已设置重跑指标\n \n (勾选后,将按照指标设置的定时重跑规则进行重跑)\n \n :\n \n 暂无相关指标\n \n }\n
\n
\n \n {\n delayList.map((item) => (\n {`${item.target_name}(${item.target_name_cn})`}\n ))\n }\n \n
\n
\n
\n \n )\n }\n}\n","import React from 'react'\nimport _ from 'lodash'\nimport PropTypes from 'prop-types'\nimport SdwInput from '@common/Input'\nimport SdwEmpty from '@common/Empty'\n\nimport './index.css'\n\nclass Tree extends React.Component {\n\n state = {\n domainInputVal: '', // 模糊搜索值\n currentItem: '',\n expendList: [], // 存放展开的组\n allTreeGroupList: [], // 存储所有非叶子节点,用于模糊搜索展开分组使用\n }\n\n static defaultProps = {\n showFilterInput: false,\n width: 340,\n data: [],\n options: {\n children: 'children',\n label: 'label'\n },\n inputPlaceholder: '请输入'\n }\n\n componentDidMount() {\n\n // 展开所有的分组\n if (this.props.showFilterInput) {\n let curList = this.getCurList(this.props.data)\n this.setState({\n allTreeGroupList: curList\n })\n }\n }\n\n componentDidUpdate (prevPros, prevState) {\n\n // 展开所有的分组\n if (this.props.showFilterInput && !_.isEqual(prevPros.data, this.props.data)) {\n let curList = this.getCurList(this.props.data)\n this.setState({\n allTreeGroupList: curList\n })\n }\n\n let { allTreeGroupList, domainInputVal, expendList } = this.state\n\n if (prevState.domainInputVal !== this.state.domainInputVal) {\n\n if (!domainInputVal) {\n this.setState({\n expendList: []\n })\n } else {\n this.setState({\n expendList: allTreeGroupList\n })\n }\n }\n }\n\n getCurList = (data, list = []) => {\n let { options } = this.props\n\n if (Array.isArray(data) && data.length) {\n data.forEach(item => {\n if (item[options.children] && item[options.children].length) {\n list.push(item[options.label])\n\n if (item[options.children] && item[options.children].length) {\n let childList = this.getCurList(item[options.children], list)\n \n if (childList && childList.length) {\n list.push(...childList)\n }\n }\n }\n })\n return Array.from(new Set(list))\n }\n }\n\n onGroupClick = group => {\n let { expendList } = this.state\n\n let { options, changeValue } = this.props\n\n let curExpendList = [...expendList]\n let index = curExpendList.indexOf(group[options.label])\n if (index !== -1) {\n curExpendList.splice(index, 1)\n } else {\n curExpendList.push(group[options.label])\n }\n\n this.setState({\n currentItem: group,\n expendList: curExpendList\n })\n\n if (typeof changeValue === 'function') {\n changeValue(group)\n }\n }\n\n formatTreeDate = (list, tree_level) => {\n\n let { options } = this.props\n\n // 给每一项补充level, 给每一级设置paddingLeft使用的\n list = list.map(item => {\n item = {\n ...item,\n tree_level: tree_level\n }\n\n if (item[options.children] && item[options.children].length) {\n let index = tree_level + 1\n item[options.children] = this.formatTreeDate(item[options.children], index)\n }\n\n return item\n })\n\n return list\n }\n\n // 将叶子节点不是模糊搜索中的去除\n filterTreeData = list => {\n let record = [...list]\n\n record = record.map(item => {\n\n if (item[this.props.options.children] && item[this.props.options.children].length) {\n item[this.props.options.children] = this.filterTreeData(item[this.props.options.children]).filter(i => i)\n return item\n }\n \n if (item[this.props.options.label].indexOf(this.state.domainInputVal) > -1) {\n return item\n }\n\n return ''\n })\n\n return record\n }\n\n // 将非叶子节点且没有叶子元素的去除\n onSplice = list => {\n\n let data = [...list]\n\n // 倒序删除\n for (let j = data.length - 1; j >= 0; j--) {\n for (let i = j; i >= 0; i--) {\n let item = data[i];\n if (item && item[this.props.options.children]) {\n if (!item[this.props.options.children].length) {\n data.splice(i, 1)\n } else {\n item[this.props.options.children] = this.onSplice(item[this.props.options.children])\n }\n }\n }\n }\n\n return data\n }\n\n render () {\n\n let {\n domainInputVal,\n currentItem,\n expendList,\n } = this.state\n\n let {\n showFilterInput,\n filterInputWidth,\n data,\n options,\n inputPlaceholder,\n width\n } = this.props\n\n let treeData = this.formatTreeDate([...data], 0)\n\n // 过滤tree的数据\n if (showFilterInput) {\n treeData = this.filterTreeData(treeData)\n treeData = this.onSplice(treeData)\n }\n\n return (\n
\n {\n showFilterInput &&\n
\n {\n this.setState({ domainInputVal: val })\n }}\n />\n
\n }\n\n
\n {\n !!treeData.length &&\n TreeItem(treeData, options, currentItem, expendList, this.onGroupClick)\n }\n {\n !treeData.length &&\n \n }\n
\n
\n )\n }\n}\n\nTree.propTypes = {\n filterInputWidth: PropTypes.number,\n showFilterInput: PropTypes.bool,\n data: PropTypes.array,\n options: PropTypes.object,\n inputPlaceholder: PropTypes.string,\n changeValue: PropTypes.func,\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n}\n\nexport default Tree\n\nfunction TreeItem (data, options, currentItem, expendList, onGroupClick) {\n return (\n !!data.length &&\n data.map((group, index) => {\n let hasChildren = !!group[options.children] && !!group[options.children].length\n return (\n
\n onGroupClick(group)}\n >{group[options.label]}
\n\n {\n hasChildren &&\n expendList.includes(group[options.label]) &&\n TreeItem(group[options.children], options, currentItem, expendList, onGroupClick)\n }\n \n )\n })\n )\n}\n","import React from 'react'\nimport _ from 'lodash'\nimport { connect } from 'react-redux'\nimport SdwTree from '@common/Tree'\nimport { getAllTopicTarget } from '@services/application'\nimport SdwMessage from '@common/Message'\n\nimport './style/index.css'\n\nclass TagTree extends React.PureComponent {\n\n state = {\n allTargetData: [],\n checkedTargetIDs: [],\n treeOptions: {\n children: 'children',\n label: 'name'\n },\n }\n\n componentDidMount () {\n getAllTopicTarget().then(res => {\n let targetData = res.data.data || []\n this.setState({\n allTargetData: targetData\n })\n }, () => SdwMessage.error(\"接口异常\"))\n }\n\n componentDidUpdate (prevProps, prevState, snapshot) {\n\n // 总的指标有所更改,界面需要标记出已编辑的指标\n if (\n prevProps.allSelectedIndicator.length !== this.props.allSelectedIndicator.length ||\n _.differenceWith(prevProps.allSelectedIndicator, this.props.allSelectedIndicator, _.isEqual).length ||\n prevState.allTargetData.length !== this.state.allTargetData.length ||\n _.differenceWith(prevState.allTargetData, this.state.allTargetData, _.isEqual).length\n ) {\n this.handleRenderTree()\n }\n }\n\n handleRenderTree = () => {\n let { allSelectedIndicator } = this.props\n let { allTargetData } = this.state\n let checkedTargetIDs = allSelectedIndicator.reduce((prev, i) => {\n prev = prev.concat(Number(i.target_id))\n return prev\n }, [])\n\n checkedTargetIDs = Array.from(new Set(checkedTargetIDs))\n\n this.setState({\n checkedTargetIDs: checkedTargetIDs\n })\n\n if (!checkedTargetIDs.length) return\n\n let curAllTargetData = this.addTreeCustomClass(allTargetData, checkedTargetIDs)\n\n this.setState({\n allTargetData: curAllTargetData\n })\n }\n\n addTreeCustomClass = (list, ids) => {\n return list.map(item => {\n let curItem = _.cloneDeep(item)\n if (item.id && ids.includes(item.id)) {\n curItem = {\n ...curItem,\n customClass: 'sdw-application-detail__tree-is-edit'\n }\n } else {\n curItem = {\n ...curItem,\n customClass: ''\n }\n }\n\n if (item.children && item.children.length) {\n curItem.children = this.addTreeCustomClass(item.children, ids)\n }\n\n return curItem\n })\n }\n\n changeCurClickTreeValue = val => {\n\n let { curShowSelectedTarget, oriAllSelectedTarget } = this.props\n\n // 点击其他节点,检查是否有变更,有变更弹出弹窗: 是否保存当前修改\n let hasUpdateData =\n curShowSelectedTarget.length !== oriAllSelectedTarget.length ||\n !!_.differenceWith(curShowSelectedTarget, oriAllSelectedTarget, _.isEqual).length\n\n if (hasUpdateData) {\n this.props.changeComfirmVisible(true)\n this.props.updateCurrentClickTreeNode(val)\n } else {\n this.initClickTreeNode(val)\n }\n }\n\n initClickTreeNode = val => {\n this.props.updateCurClickTreeValue(val)\n\n // 点击叶子节点,查询对应的信息\n if (!val.children) {\n this.props.onGetTarget(val)\n } else {\n this.props.updateTargetTime([])\n this.props.updateTargetDimension([])\n }\n }\n\n render () {\n let {\n checkedTargetIDs,\n allTargetData,\n treeOptions\n } = this.state\n\n // 总的指标\n let targetTotal = allTargetData.reduce((prev, i) => {\n prev = prev.concat(i.children)\n return prev\n }, []).length\n\n return (\n <>\n
\n 指标选择\n {`${checkedTargetIDs.length}/${targetTotal}`}\n
\n\n
\n \n
\n \n )\n }\n}\n\nconst mapState = state => ({\n allSelectedIndicator: state.application.allSelectedIndicator,\n curShowSelectedTarget: state.application.curShowSelectedTarget,\n oriAllSelectedTarget: state.application.oriAllSelectedTarget,\n})\n\nconst mapDispatch = dispatch => ({\n changeComfirmVisible: dispatch.application.changeComfirmVisible,\n updateCurrentClickTreeNode: dispatch.application.updateCurrentClickTreeNode,\n updateCurClickTreeValue: dispatch.application.updateCurClickTreeValue,\n updateCurShowSelectedTarget : dispatch.application.updateCurShowSelectedTarget,\n updateTargetTime: dispatch.application.updateTargetTime,\n updateTargetDimension: dispatch.application.updateTargetDimension,\n})\n\nexport default connect(mapState, mapDispatch)(TagTree)\n","import React from 'react'\nimport _ from 'lodash'\nimport {connect} from 'react-redux'\nimport SdwCheckbox from '@common/Checkbox'\nimport SdwEmpty from '@common/Empty'\n\nimport './style/index.css'\n\nclass IndicatorAttributes extends React.PureComponent {\n\n updateSelectedTarget = (targetTime, targetDimension) => {\n let {curShowSelectedTarget, curClickTreeValue, currentData} = this.props\n\n let checkedTime = targetTime.filter(i => i.isChecked)\n let checkedDimension = targetDimension.filter(i => i.isChecked)\n\n if (!checkedTime.length || !checkedDimension.length) {\n this.props.updateCurShowSelectedTarget([])\n return\n }\n\n let addTarget = []\n checkedTime.forEach(time => {\n checkedDimension.forEach(dimen => {\n\n let oriTarget = curShowSelectedTarget[curShowSelectedTarget.findIndex(i => i.time === time.id && i.dimension === dimen.id)] || {}\n\n addTarget.push({\n 'table_id': currentData.id,\n ...!!oriTarget.db_id ? {\n 'db_id': oriTarget.db_id,\n } : {},\n 'target_id': curClickTreeValue.id,\n 'name_cn': curClickTreeValue.target_name_cn,\n 'name': curClickTreeValue.target_name,\n 'time': time.id,\n 'dimension': dimen.name_en,\n 'target_type': oriTarget.target_type || 1, // 1:普通指标 2:top指标\n 'target_top': (oriTarget.top_count || typeof oriTarget.top_count === 'number') ? oriTarget.top_count : null\n })\n })\n })\n\n this.props.updateCurShowSelectedTarget(addTarget)\n }\n\n render() {\n\n let {\n targetTime,\n targetDimension,\n } = this.props\n\n return (\n <>\n
指标属性
\n
\n
时间
\n
\n {\n (_.isArray(targetTime) && !!targetTime.length) ?\n targetTime.map((item, index) => (\n
\n {\n let curArr = _.cloneDeep(targetTime)\n curArr[index].isChecked = !curArr[index].isChecked\n this.props.updateTargetTime(curArr)\n\n this.updateSelectedTarget(curArr, targetDimension)\n }}\n />\n
\n )) :\n \n }\n
\n
\n\n
\n
维度
\n
\n {\n (_.isArray(targetDimension) && !!targetDimension.length) ?\n targetDimension.map((item, index) => (\n
\n {\n let curArr = _.cloneDeep(targetDimension)\n curArr[index].isChecked = !curArr[index].isChecked\n this.props.updateTargetDimension(curArr)\n\n this.updateSelectedTarget(targetTime, curArr)\n }}\n />\n
\n )) :\n \n }\n
\n
\n \n )\n }\n}\n\nconst mapState = state => ({\n targetTime: state.application.targetTime,\n targetDimension: state.application.targetDimension,\n curShowSelectedTarget: state.application.curShowSelectedTarget,\n curClickTreeValue: state.application.curClickTreeValue,\n})\n\nconst mapDispatch = dispatch => ({\n updateTargetTime: dispatch.application.updateTargetTime,\n updateTargetDimension: dispatch.application.updateTargetDimension,\n updateCurShowSelectedTarget: dispatch.application.updateCurShowSelectedTarget,\n})\n\nexport default connect(mapState, mapDispatch)(IndicatorAttributes)\n","import React from 'react'\nimport _ from 'lodash'\nimport SdwDialog from '@common/Dialog'\nimport SdwSelect from '@common/Select'\nimport SdwInput from '@common/Input'\nimport { TOP_MAP, TOP_MAP_TEXT } from './common'\n\nimport './style/setTopWin.css'\n\nexport default class SetTopWim extends React.Component {\n state = {\n selectInputValue: '',\n inputValue: '',\n sholdCheckValidate: false,\n selectList: [\n {\n id: TOP_MAP.top,\n text: TOP_MAP_TEXT[TOP_MAP.top]\n }, {\n id: TOP_MAP.normal,\n text: TOP_MAP_TEXT[TOP_MAP.normal]\n }\n ]\n }\n\n componentDidUpdate (prevProps, prevState, snapshot) {\n let { record } = this.props\n\n if (!_.isEqual(prevProps.record, record)) {\n this.setState({\n selectInputValue: record.target_type\n })\n\n if (record.top_count) {\n this.setState({\n inputValue: record.top_count\n })\n }\n }\n }\n\n numberValidateFun = val => {\n if (!!val && Number(val) > 0 && String(val).indexOf('.') === -1) {\n return true\n }\n return '请输入一个有效整数'\n }\n\n topValidateFun = val => {\n if (!!val) {\n return true\n }\n return '指标类型不能为空'\n }\n\n handleSubmit = () => {\n let {\n selectInputValue,\n inputValue\n } = this.state\n\n let isTopType = this.state.selectInputValue === TOP_MAP.top\n let isSelectPass = this.topValidateFun(selectInputValue) === true\n\n let isValidatePass = isTopType ? this.numberValidateFun(inputValue) === true && isSelectPass : isSelectPass\n\n if (!isValidatePass) {\n this.setState({\n sholdCheckValidate: true\n })\n return\n }\n\n let params = isTopType ? {selectInputValue, inputValue} : {selectInputValue}\n\n this.props.updateTargetValue(this.props.record, params)\n this.props.changeSetTopVisible(false)\n }\n\n render () {\n let { setTopVisible, changeSetTopVisible } = this.props\n\n return (\n changeSetTopVisible(false)}\n onSureClick={this.handleSubmit}\n width={480}\n height={300}\n >\n
\n 指标类型\n this.setState({selectInputValue: val})}\n />\n
\n {\n this.state.selectInputValue === TOP_MAP.top &&\n
\n 数值\n this.setState({inputValue: +val})}\n />\n
\n }\n \n )\n }\n}\n","// @file 已选指标,前端分页\nimport { useState, useMemo } from 'react'\nimport _ from 'lodash'\nimport Table from '@common/Table'\nimport Pagenation from '@common/Pagenation'\n\nexport default function SelectedAttributes(props) {\n const {\n columns,\n dataSource\n } = props\n\n const [currentPage, setCurrentPage] = useState(1)\n const [pageCount, setPageCount] = useState(15)\n\n const curDataSource = useMemo(() => {\n if (!_.isArray(dataSource) || !dataSource.length) return []\n const start = (currentPage - 1) * pageCount\n const end = currentPage * pageCount\n return dataSource.slice(start, end)\n }, [currentPage, pageCount, dataSource])\n\n const Total = _.isArray(dataSource) ? dataSource.length : 0\n \n return (\n
\n \n\n setCurrentPage(val) }\n pageCountChange={ val => setPageCount(val) }\n />\n
\n )\n}","import React from 'react'\nimport _ from 'lodash'\nimport { connect } from 'react-redux'\nimport SdwTable from '@common/Table'\nimport SdwEmpty from '@common/Empty'\nimport SdwButton from '@common/Button'\nimport { Tabs, DateRangePicker } from 'element-react'\nimport { formatTime } from '@utils/formatTime'\nimport { getTargetResults } from '@services/application'\nimport SdwMessage from '@common/Message'\nimport { TOP_MAP, TOP_MAP_TEXT } from '../common'\nimport SetTopWin from '../SetTopWin'\nimport SelectedAttributes from './SelectedAttributes'\n\nconst CUR_TARGET_INDEX = '1'\n\nclass TabPage extends React.PureComponent {\n\n state = {\n datePicker: '',\n previewData: [], // 预览数据\n previewTableHeader: [], // 预览数据表头\n curActiveName: CUR_TARGET_INDEX,\n setTopVisible: false,\n curClickTargetData: {}, // 当前设置点击的对象,设置指标 or 删除的项\n }\n\n componentDidMount () {\n this.initDatePicker()\n }\n\n // 初始化时间选择当前一天\n initDatePicker = () => {\n let end = new Date(`${new Date().getFullYear()}-${new Date().getMonth()+1}-${new Date().getDate()}`)\n let start = new Date()\n start.setTime(end.getTime() - 3600 * 1000 * 24 * 1)\n\n this.setState({datePicker: [start, end]})\n }\n\n componentDidUpdate (prevProps, prevState, snapshot) {\n\n // 预览数据,时间搜索\n if (\n prevState.datePicker.length !== this.state.datePicker.length ||\n _.differenceWith(prevState.datePicker, this.state.datePicker, _.isEqual).length\n ) {\n this.onSearchPreviewData()\n }\n }\n\n onSearchPreviewData = () => {\n let { datePicker } = this.state\n let { currentData } = this.props\n\n let timeRange = datePicker.map(t => formatTime(+t, 0))\n // console.log('--------timeRange: ', timeRange) //  [\"2021-02-10 00:00:00\", \"2021-02-24 00:00:00\"]\n\n getTargetResults({\n app_table: currentData.table_name,\n run_cycle: currentData.run_cycle,\n start_time: timeRange[0],\n end_time: timeRange[1]\n }).then(res => {\n if (res && res.data && res.data.code === 0) {\n let record = res.data.data || {}\n let list = record.data || []\n let header = record.header || []\n\n this.setState({\n previewData: list,\n previewTableHeader: header\n })\n } else {\n this.setState({\n previewDataMsg: res && res.data && res.data.msg || '暂无数据'\n })\n }\n }, () => SdwMessage.error(\"接口异常\"))\n }\n\n getcolumns = () => {\n let isCurTarget = this.state.curActiveName === CUR_TARGET_INDEX\n return [\n ...isCurTarget ? [] : [\n {\n title: \"字段ID\",\n dataIndex: \"db_id\",\n width: 120\n }\n ],\n {\n title: \"指标ID\",\n dataIndex: \"target_id\",\n width: 120\n },\n {\n title: \"中文名\",\n dataIndex: \"name_cn\",\n width: 120\n },\n {\n title: \"英文名\",\n showTip: true,\n dataIndex: \"name\",\n width: 120\n },\n {\n title: \"时间周期\",\n dataIndex: \"time\",\n width: 120\n },\n {\n title: \"维度\",\n dataIndex: \"dimension\",\n width: 120\n },\n {\n title: \"字段类型\",\n width: 120,\n // dataIndex: \"target_type\",\n render: (data, record) => {\n return (\n {TOP_MAP_TEXT[data.target_type]}\n )\n }\n },\n ...!isCurTarget ? [] : [\n {\n title: \"操作\",\n width: 80,\n fiexd: true,\n render: (data, record) => {\n return (\n <>\n this.handleDeleteButtom(data) }\n >删除
\n this.handleSetButtom(data)}\n >设置\n \n )\n },\n }\n ]\n ]\n }\n\n handleSetButtom = data => {\n this.setState({\n curClickTargetData: data\n }, () => {\n this.changeSetTopVisible(true)\n })\n }\n\n handleDeleteButtom = data => {\n let { curShowSelectedTarget } = this.props\n let arr = _.cloneDeep(curShowSelectedTarget)\n\n let index = arr.findIndex(i => i.time === data.time && i.dimension === data.dimension)\n arr.splice(index, 1)\n\n this.props.updateCurShowSelectedTarget(arr)\n\n // 还原勾选\n this.props.onReWriteData(arr)\n }\n\n updateTargetValue = (curTarget, params) => {\n let { curShowSelectedTarget } = this.props\n let arr = _.cloneDeep(curShowSelectedTarget)\n\n arr.forEach(item => {\n if (curTarget.id === item.id && item.time === curTarget.time && item.dimension === curTarget.dimension) {\n item.target_type = params.selectInputValue\n item.target_top = params.selectInputValue === TOP_MAP.top ? params.inputValue : null\n }\n })\n\n this.props.updateCurShowSelectedTarget(arr)\n }\n\n changeSetTopVisible = flag => {\n this.setState({\n setTopVisible: flag\n })\n }\n\n onCancel = () => {\n let { oriAllSelectedTarget } = this.props\n\n this.props.updateCurShowSelectedTarget(oriAllSelectedTarget)\n this.props.onReWriteData(oriAllSelectedTarget)\n }\n\n render () {\n\n let {\n datePicker,\n curActiveName,\n previewData,\n previewTableHeader,\n setTopVisible,\n curClickTargetData,\n } = this.state\n\n let {\n curShowSelectedTarget,\n allSelectedIndicator,\n oriAllSelectedTarget\n } = this.props\n\n let previewColumns = previewTableHeader.map(item => {\n return {\n title: item,\n dataIndex: item,\n showTip: true,\n width: 150\n }\n })\n\n let isButtomDisabled = curShowSelectedTarget.length !== oriAllSelectedTarget.length ||\n _.differenceWith(curShowSelectedTarget, oriAllSelectedTarget, _.isEqual).length\n\n return (\n <>\n this.setState({ curActiveName: tab.props.name })}>\n \n
\n {\n !!curShowSelectedTarget.length ?\n :\n \n }\n
\n
\n \n \n \n \n
\n\n
\n \n time.getTime() > Date.now()}\n onChange={date => {\n this.setState({ datePicker: date })\n }}\n />\n \n \n \n \n {\n previewData.length <= 200 ? `共${previewData.length}条` : `共${previewData.length}条,仅显示200条`\n }\n
\n {\n !!previewData.length ?\n :\n \n }\n
\n
\n
\n\n {\n curActiveName === CUR_TARGET_INDEX &&\n
\n
\n 取消\n 保存\n
\n
\n }\n\n \n \n )\n }\n}\n\nconst mapState = state => ({\n allSelectedIndicator: state.application.allSelectedIndicator,\n oriAllSelectedTarget: state.application.oriAllSelectedTarget,\n curShowSelectedTarget: state.application.curShowSelectedTarget,\n})\n\nconst mapDispatch = dispatch => ({\n updateCurShowSelectedTarget: dispatch.application.updateCurShowSelectedTarget,\n})\n\nexport default connect(mapState, mapDispatch)(TabPage)\n","import React from 'react'\nimport _ from 'lodash'\nimport { connect } from 'react-redux'\nimport SdwBreadCrumbs from '@common/BreadCrumbs'\nimport AddApplicationWin from '../AddApplicationWin'\nimport ApplicationSettingWin from '../ApplicationSettingWin'\nimport RegularRerunWin from '../RegularRerunWin'\nimport { getManageTopics } from '@services/management'\nimport { getPublicCfg } from '@services/atom'\nimport { getTargetCfgById, searchAppInfoManage } from '@services/application'\nimport { searchAppInfo, storeAppTarget, updateAppTarget, deleteAppTarget, searchTarget, updatePublishState, getTargetResults } from '@services/application'\nimport { TOP_MAP } from '../common'\nimport SdwDialog from '@common/Dialog'\nimport SdwMessage from '@common/Message'\nimport {Dropdown} from 'element-react'\nimport { hasPriv } from '@components/FrontendAuth/AuthMap'\n\nimport TagTree from './TagTree'\nimport IndicatorAttributes from './IndicatorAttributes'\nimport TabPage from './TabPage'\n\nimport './style/index.css'\n\nclass ApplicationDetail extends React.Component {\n\n state = {\n previewDataMsg: '',\n currentData: '',\n dialogVisible: false,\n setTopVisible: false,\n topicData: [],\n runCycleData: [],\n previewTableHeader: [], // 预览数据表头\n settingDialogVisible: false, // 关联字段弹窗\n regularRerunVisible: false, // 定时重跑弹窗\n }\n\n componentDidMount () {\n this.initData()\n }\n\n onSearchAppInfo = params => {\n if (hasPriv('searchAppInfo')) {\n searchAppInfo({\n search: JSON.stringify({\n id: {\n value: params.id,\n operator: '='\n }\n })\n })\n .then(res => {\n if (res && res.data && res.data.code === 0) {\n let record = res.data.data || {}\n if (!_.isArray(record.items) || !record.items.length) return\n\n let curDate = record.items[0] || {}\n if (curDate.id !== this.state.currentData.id) return\n\n this.setState({\n currentData: curDate\n })\n }\n }, () => SdwMessage.error(\"接口异常\"))\n return\n }\n if (hasPriv('searchAppInfoManage')) {\n searchAppInfoManage({\n search: JSON.stringify({\n id: {\n value: params.id,\n operator: '='\n }\n })\n })\n .then(res => {\n if (res && res.data && res.data.code === 0) {\n let record = res.data.data || {}\n if (!_.isArray(record.items) || !record.items.length) return\n\n let curDate = record.items[0] || {}\n if (curDate.id !== this.state.currentData.id) return\n\n this.setState({\n currentData: curDate\n })\n }\n }, () => SdwMessage.error(\"接口异常\"))\n return\n }\n }\n\n componentDidUpdate (prevProps, prevState, snapshot) {\n\n // 还原时间 + 维度的勾选\n if (\n this.state.reWriteData &&\n prevState.reWriteData !== this.state.reWriteData\n ) {\n let { oriAllSelectedTarget } = this.props\n if (!!oriAllSelectedTarget.length) {\n this.onReWriteData(oriAllSelectedTarget)\n }\n\n this.setState({\n reWriteData: false\n })\n }\n }\n\n onReWriteData = oriAllSelectedTarget => {\n if (_.isArray(oriAllSelectedTarget)) {\n let checkedTime = []\n let checkedDimen = []\n oriAllSelectedTarget.forEach(target => {\n checkedTime.push(target.time)\n checkedDimen.push(target.dimension)\n })\n\n checkedTime = Array.from(new Set(checkedTime))\n checkedDimen = Array.from(new Set(checkedDimen))\n\n let { targetTime, targetDimension } = this.props\n let curTargetTime = _.cloneDeep(targetTime)\n let curTargetDimension = _.cloneDeep(targetDimension)\n\n curTargetTime.forEach(time => {\n\n if (!oriAllSelectedTarget.length) {\n time.isChecked = false\n } else {\n time.isChecked = checkedTime.includes(time.id)\n }\n })\n curTargetDimension.forEach(dimen => {\n\n if (!oriAllSelectedTarget.length) {\n dimen.isChecked = false\n } else {\n dimen.isChecked = checkedDimen.includes(dimen.name_en)\n }\n })\n\n this.props.updateTargetTime(curTargetTime)\n this.props.updateTargetDimension(curTargetDimension)\n }\n }\n\n initData = () => {\n // this.initDatePicker()\n\n let id = this.props.location.state && this.props.location.state.id || ''\n if (!!id) {\n let record = this.props.location.state\n this.setState({\n currentData: record\n }, this.onSearchTarget)\n this.onSearchAppInfo(record)\n }\n\n getManageTopics().then(res => {\n let jsonData = res && res.data || {}\n if (jsonData && jsonData.code === 0 && Array.isArray(jsonData.data)) {\n this.setState({\n topicData: jsonData.data\n })\n }\n }, () => SdwMessage.error(\"接口异常\"))\n\n getPublicCfg().then(res => {\n if (res.data.code === 0 && res.data.data) {\n let cfgData = {}\n for (let i in res.data.data) {\n cfgData[i] = res.data.data[i]\n }\n\n this.setState({ runCycleData: cfgData.runCycle })\n }\n }, () => SdwMessage.error(\"接口异常\"))\n\n }\n\n changeDialogVisible = flag => {\n this.setState({\n dialogVisible: flag\n })\n }\n\n // 关联字段弹窗\n changeSettingDialogVisible = flag => {\n this.setState({\n settingDialogVisible: flag\n })\n }\n\n // 定时重跑弹窗\n changeDelayReRunVisible = flag => {\n this.setState({\n regularRerunVisible: flag\n })\n }\n\n initClickTreeNode = val => {\n this.props.updateCurClickTreeValue(val)\n\n // 点击叶子节点,查询对应的信息\n if (!val.children) {\n this.onGetTarget(val)\n } else {\n this.props.updateTargetTime([])\n this.props.updateTargetDimension([])\n }\n }\n\n hanlderChangeTreeSubmit = async () => {\n await this.onSubmit()\n\n this.hanlderChangeTreeCancel()\n }\n\n hanlderChangeTreeCancel = () => {\n this.props.changeComfirmVisible(false)\n this.initClickTreeNode(this.props.currentClickTreeNode)\n }\n\n // isSingelTarget: 是否是单个指标查询\n onSearchTarget = (targetID = '', isSingelTarget = false) => {\n let params = {\n table_id: {\n value: this.state.currentData.id,\n operator: '='\n },\n ...!!targetID ? {\n target_id: {\n value: targetID,\n operator: '='\n }\n } : {}\n }\n return searchTarget({\n search: JSON.stringify(params)\n })\n .then(res => {\n let oriData = []\n if (res && res.data && res.data.code === 0) {\n let jsonData = _.isArray(res.data.data) ? res.data.data : []\n oriData = jsonData.map(i => {\n return Object.assign({}, i, {\n \"db_id\": i.id,\n \"target_id\": i.target_id,\n \"name_cn\": i.target_name_cn,\n \"name\": i.target_name_en,\n \"time\": i.time_cycle,\n \"dimension\": i.target_dim,\n \"target_type\": i.target_type,\n \"target_top\": i.top_count\n })\n })\n }\n\n if (isSingelTarget) {\n this.props.updateCurShowSelectedTarget(oriData)\n this.props.updateOriAllSelectedTarget(oriData)\n\n // 触发时间 + 维度的勾选\n this.setState({\n reWriteData: true\n })\n } else {\n this.props.updateAllSelectedIndicator(oriData)\n }\n }, () => SdwMessage.error(\"接口异常\"))\n }\n\n onPublish = () => {\n let { currentData } = this.state\n let id = currentData.id\n\n if (!id) return\n\n // TODO\n updatePublishState({\n id: id\n })\n .then(res => {\n if (res.data && res.data.code === 0) {\n this.initData()\n let msg = '发布成功'\n SdwMessage.success(msg)\n } else {\n let msg = res.data && res.data.msg\n SdwMessage.error(msg)\n }\n }, () => SdwMessage.error(\"接口异常\"))\n }\n\n onGetTarget = record => {\n\n // TODO 请求当前指标下的原始数据\n this.onSearchTarget(record.id, true).then(() => {\n this.onGetTargetCfgById(record)\n }, () => SdwMessage.error(\"接口异常\"))\n }\n\n onGetTargetCfgById = record => {\n getTargetCfgById({\n id: record.id\n })\n .then(res => {\n if (res && res.data && res.data.code === 0) {\n let jsonData = res.data.data || {}\n let time = jsonData.time_cycle || []\n let dimension = jsonData.dimension || []\n\n this.props.updateCurClickTreeValue(Object.assign({}, this.props.curClickTreeValue, jsonData))\n this.props.updateTargetTime(time.map(i => {\n return {\n ...i,\n isChecked: false\n }\n }))\n\n this.props.updateTargetDimension(dimension.map(i => {\n return {\n id: i.id,\n isChecked: false,\n name_en: i.en,\n name: `${i.cn || '-'}(${i.en || '-'})`\n }\n }))\n\n this.setState({\n reWriteData: true, // 还原时间 + 维度的勾选\n })\n }\n }, () => SdwMessage.error(\"接口异常\"))\n }\n\n onSubmit = () => {\n let { curShowSelectedTarget, oriAllSelectedTarget } = this.props\n\n let curTarget = _.cloneDeep(curShowSelectedTarget)\n let oriTarget = _.cloneDeep(oriAllSelectedTarget)\n let addNewTarget = [] // 新增的项\n let delOriTarget = [] // 删除的项\n let updateOriTarget = [] // 更新的项:当前仅更新指标类型\n\n // 计算出新增的,走新增接口\n curTarget.forEach(curItem => {\n if (!oriTarget.length || oriTarget.every(i => !(i.time === curItem.time && i.dimension === curItem.dimension))) {\n addNewTarget.push(curItem)\n }\n })\n\n oriTarget.forEach(oriItem => {\n\n // 计算出删除的,走删除接口\n if (!curTarget.some(i => i.time === oriItem.time && i.dimension === oriItem.dimension) && oriItem.id) {\n delOriTarget.push(oriItem)\n } else {\n\n // 计算出更新的项\n let index = curTarget.findIndex(i => {\n return (i.id === oriItem.id && i.time === oriItem.time && i.dimension === oriItem.dimension) &&\n (i.target_top !== oriItem.target_top || i.target_type !== oriItem.target_type)\n\n })\n if (index !== -1 && oriItem.id) {\n updateOriTarget.push(Object.assign({}, curTarget[index], {\n id: oriItem.id\n }))\n }\n }\n })\n\n if (addNewTarget.length) {\n let addParams = this.formatParams(addNewTarget)\n storeAppTarget(JSON.stringify({\n add: addParams\n }))\n .then(res => {\n if (res && res.data && res.data.code === 0) {\n SdwMessage.success('保存成功')\n this.reInitData()\n } else {\n SdwMessage.error('保存失败')\n }\n }, () => SdwMessage.error(\"接口异常\"))\n }\n\n if (updateOriTarget.length) {\n let updateParams = this.formatParams(updateOriTarget)\n updateAppTarget(JSON.stringify({\n update: updateParams\n }))\n .then(res => {\n if (res && res.data && res.data.code === 0) {\n SdwMessage.success('更新成功')\n this.reInitData()\n } else {\n SdwMessage.error('更新失败')\n }\n }, () => SdwMessage.error(\"接口异常\"))\n }\n\n if (delOriTarget.length) {\n let deleteParams = this.formatParams(delOriTarget)\n deleteAppTarget(JSON.stringify({\n delete: deleteParams\n }))\n .then(res => {\n if (res && res.data && res.data.code === 0) {\n SdwMessage.success('删除成功')\n this.reInitData()\n } else {\n SdwMessage.error('删除失败')\n }\n }, () => SdwMessage.error(\"接口异常\"))\n }\n }\n\n reInitData = () => {\n let { curClickTreeValue } = this.props\n this.onSearchTarget(curClickTreeValue.id, true) // 不仅要更新单个指标的数据\n this.onSearchTarget() // 还要更新总表的数据---已选指标表二\n this.initData() // 更新当前数据\n }\n\n formatParams = list => {\n return list.map(i => {\n return {\n ...i.id ? {\n id: i.id\n } : {},\n table_id: i.table_id,\n target_id: i.target_id,\n target_name_en: i.name,\n target_name_cn: i.name_cn,\n time_cycle: i.time,\n target_dim: i.dimension,\n target_type: i.target_type,\n ...i.target_type === TOP_MAP.top ? {\n top_count: i.target_top\n } : {}\n }\n })\n }\n\n changeTitle = (command) => {\n if (command == 'associatedField') {\n this.changeSettingDialogVisible(true)\n }\n else if (command == 'regularRerun') {\n this.changeDelayReRunVisible(true)\n }\n }\n\n render () {\n\n let {\n currentData,\n dialogVisible,\n settingDialogVisible, // 关联字段弹窗\n regularRerunVisible, // 定时重跑弹窗\n topicData,\n runCycleData,\n } = this.state\n\n let {\n comfirmVisible,\n } = this.props\n\n let curTopicData = topicData.map(i => {\n return {\n id: i.topic_id,\n text: i.topic_name\n }\n })\n\n let curRunCycleData = runCycleData.map(i => {\n return {\n id: i.id,\n text: i.name\n }\n })\n\n return (\n
\n \n\n
\n {`${currentData.table_name}(${currentData.table_name_cn})`}\n {\n hasPriv('updateNewAppTable') &&\n this.changeDialogVisible(true)}\n >修改\n }\n {/* this.changeSettingDialogVisible(true)}\n >设置*/}\n {\n hasPriv('updatePublishState') &&\n \n \n {!!currentData.publish_state ? '已发布' : '发布'}\n \n \n }\n\n \n \n 关联字段\n 应用表定时重跑\n \n )}\n onCommand={command => this.changeTitle(command)}\n >\n \n 更多设置\n \n \n
\n\n \n
\n \n
\n
\n \n
\n
\n \n
\n
\n\n {\n dialogVisible &&\n \n }\n\n {\n settingDialogVisible &&\n \n }\n\n {\n regularRerunVisible &&\n \n }\n\n \n 是否保存对该指标的修改\n \n \n )\n }\n}\n\nconst mapState = state => ({\n allSelectedIndicator: state.application.allSelectedIndicator,\n curShowSelectedTarget: state.application.curShowSelectedTarget,\n oriAllSelectedTarget: state.application.oriAllSelectedTarget,\n comfirmVisible: state.application.comfirmVisible,\n currentClickTreeNode: state.application.currentClickTreeNode,\n curClickTreeValue: state.application.curClickTreeValue,\n targetTime: state.application.targetTime,\n targetDimension: state.application.targetDimension,\n})\n\nconst mapDispatch = dispatch => ({\n updateAllSelectedIndicator: dispatch.application.updateAllSelectedIndicator,\n updateCurShowSelectedTarget: dispatch.application.updateCurShowSelectedTarget,\n updateOriAllSelectedTarget: dispatch.application.updateOriAllSelectedTarget,\n changeComfirmVisible: dispatch.application.changeComfirmVisible,\n updateCurClickTreeValue: dispatch.application.updateCurClickTreeValue,\n updateTargetTime: dispatch.application.updateTargetTime,\n updateTargetDimension: dispatch.application.updateTargetDimension,\n})\n\nexport default connect(mapState, mapDispatch)(ApplicationDetail)\n","import ApplicationDetail from './ApplicationDetail/index'\n\nexport default ApplicationDetail","import React from 'react'\nimport _ from 'lodash'\nimport SdwDialog from '@common/Dialog'\nimport SdwInput from '@common/Input'\nimport SdwSelect from '@common/Select'\nimport SdwMessage from '@common/Message'\nimport SdwCascader from '@common/Cascader'\nimport { saveAppConf, updateAppConf} from '@services/api'\nimport { getTopicBusiness } from '@services/Derived'\n\nimport './style/addApiWin.css'\nimport { getStaffs } from '@api/alertRules'\nimport { hasPriv } from '@components/FrontendAuth/AuthMap'\n\nexport default class AddApiWin extends React.Component {\n\n state = {\n table_name: '',\n table_name_cn: \"\",\n project: '',\n topicBusiness: {\n ids: [],\n texts:[],\n clickItem:[]\n },\n sholdCheckValidate: false,\n timeValue: 'day',\n resp_user: [],\n isAppInputValuePass: false,\n isZhNameValidateFunPass: false,\n isRefreshValuePass: false,\n isDomainValuePass: false,\n timeSelectList: [\n {\n id: 'year',\n text: 'year'\n }, {\n id: 'month',\n text: 'month'\n }, {\n id: 'day',\n text: 'day'\n }, {\n id: 'hour',\n text: 'hour'\n }\n ],\n topicData: [],\n allMembers:[],\n refreshValue:\"\",\n }\n\n componentDidMount() {\n this.initData()\n this.getStaff()\n this.getTopicBusiness()\n }\n\n initData = () => {\n //currentData\n let {currentData} = this.props\n console.log(\"currentData--------currentData\", currentData)\n if (!!currentData) {\n let indexFlag = (currentData.table_name || '').lastIndexOf('_')\n this.setState({\n table_name:currentData.table_name.substr(0, indexFlag) || '',\n timeValue: indexFlag !== -1 ? currentData.table_name.substr(indexFlag + 1) : 'day',\n table_name_cn:currentData.table_name_cn,\n project:currentData.project,\n topicBusiness: currentData.topicBusiness,\n refreshValue:currentData.run_cycle,\n resp_user:currentData.resp_user.split(\",\"),\n })\n }\n }\n getStaff = () => {\n getStaffs().then(res => {\n if (res && res.data && res.data.code === 0) {\n let list = _.isArray(res.data.data) ? res.data.data : []\n //list.push({name:\"default_focus\", value:\"default_focus\"})\n this.setState({\n allMembers: list\n })\n }\n })\n }\n // 获取主题列表\n getTopicBusiness = () => {\n let that = this\n getTopicBusiness().then((res) => {\n that.setState({ topicData: res.data.data })\n })\n }\n\n appNameValidateFun = val => {\n if (!val) {\n return '该输入项不能为空'\n }\n if (val.length > 500) {\n return '输入最大长度500'\n }\n return true\n }\n\n tableNameValidateFun = val => {\n if (!val) {\n return '该输入项不能为空'\n }\n if (!/^[a-zA-Z_]{1,}$/.test(val)) {\n return '仅支持英文、下划线'\n }\n\n if (val.length > 200) {\n return '输入最大长度200'\n }\n return true\n }\n\n zhNameValidateFun = val => {\n if (!val) {\n return '该输入项不能为空'\n }\n if (val.length > 100) {\n return '输入最大长度100'\n }\n return true\n }\n\n resetData = () => {\n this.setState({\n table_name: '',\n timeValue: 'day',\n project: '',\n topicBusiness: '',\n refreshValue: ''\n })\n }\n\n handleSubmit = () => {\n let {\n table_name,\n table_name_cn,\n timeValue,\n project,\n topicBusiness,\n refreshValue,\n resp_user,\n } = this.state\n let rule1 = this.tableNameValidateFun(table_name)\n let rule2 = this.appNameValidateFun(table_name_cn)\n let rule3 = this.zhNameValidateFun(project)\n if (rule1 != true || rule2 != true || rule3 != true || topicBusiness.ids.length != 2|| resp_user.length == 0) {\n this.setState({\n sholdCheckValidate: true\n })\n return\n }\n let { isEdit } = this.props\n // ajax\n let paramsData = {\n table_name: `${table_name}_${timeValue}`,\n table_name_cn: table_name_cn,\n project: project,\n topic: topicBusiness.ids[0],\n service: topicBusiness.ids[1],\n run_cycle:refreshValue,\n resp_user: resp_user.join(\",\")\n }\n if (isEdit && hasPriv('updateAppConf')) {\n updateAppConf({\n id: this.props.currentData.id,\n data: paramsData\n })\n .then(res => {\n if (res.data && res.data.code === 0) {\n this.resetData()\n this.props.changeDialogVisible(false)\n\n // 新增/编辑成功,从新拉去新数据\n if (isEdit) {\n this.props.initData()\n } else {\n this.props.onSearchApiInfo()\n }\n\n let msg = isEdit ? '编辑成功' : '新增成功'\n SdwMessage.success(msg)\n } else {\n let msg = res.data && res.data.msg\n SdwMessage.error(msg);\n }\n }, () => SdwMessage.error(\"接口异常\"))\n } else if (hasPriv('saveAppConf')) {\n saveAppConf({\n data: paramsData\n })\n .then(res => {\n if (res.data && res.data.code === 0) {\n this.resetData()\n this.props.changeDialogVisible(false)\n\n // 新增/编辑成功,从新拉去新数据\n if (isEdit) {\n this.props.initData()\n } else {\n this.props.onSearchApiInfo()\n }\n\n let msg = isEdit ? '编辑成功' : '新增成功'\n SdwMessage.success(msg)\n } else {\n let msg = res.data && res.data.msg\n SdwMessage.error(msg);\n }\n }, () => SdwMessage.error(\"接口异常\"))\n }\n\n\n }\n validateFun = (curValue, label = '') => {\n if (typeof curValue != 'object' && (typeof curValue === 'number' || !!curValue.trim())) {\n return true\n }\n if (label == \"主题域/业务\" && Array.isArray(curValue.ids) && curValue.ids.length) {\n return true\n }\n return `${label}不能为空`\n }\n\n render() {\n let {\n dialogVisible,\n changeDialogVisible,\n isEdit,\n runCycleData,\n } = this.props\n\n let {\n topicData,\n timeSelectList,\n timeValue,\n resp_user,\n sholdCheckValidate,\n table_name,\n table_name_cn,\n project,\n topicBusiness,\n allMembers,\n refreshValue,\n } = this.state\n\n // 主题列表渲染成组件需要的数据\n topicData = topicData.map(i => {\n return {\n id: i.value,\n text: i.label,\n children: i.children && i.children.map(si => {\n return { id: si.value, text: si.label }\n })\n }\n })\n console.log(\"-=-----------runCycleData\", runCycleData)\n return (\n
\n changeDialogVisible(false)}\n onCancelClick={() => changeDialogVisible(false)}\n onSureClick={this.handleSubmit}\n >\n
\n API名称\n this.setState({ table_name: val })}\n sholdCheckValidate={sholdCheckValidate}\n validateFun={this.tableNameValidateFun}\n />\n \n this.setState({ timeValue: val })}\n />\n \n
\n
\n API中文名\n this.setState({ table_name_cn: val })}\n sholdCheckValidate={sholdCheckValidate}\n validateFun={this.appNameValidateFun}\n />\n
\n
\n 主题域/业务\n this.validateFun(value, '主题域/业务')}\n sholdCheckValidate={sholdCheckValidate}\n onChange={val => {\n console.log(\"-----val\", val)\n this.setState({ topicBusiness: val })\n }}\n data={topicData}\n />\n
\n
\n 运营负责人\n {/* this.setState({ resp_user: val })}*/}\n {/* sholdCheckValidate={sholdCheckValidate}*/}\n {/* validateFun={value => this.validateFun(value, '运营负责人')}*/}\n {/*/>*/}\n this.validateFun(value, '运营负责人')}\n sholdCheckValidate={sholdCheckValidate}\n onClear={() => this.setState({ resp_user: [] })} // 这里的onClear只是清除所有时才触发\n changeMultipleValue={val => this.setState({ resp_user: val })}\n />\n
\n
\n 项目\n this.setState({ project: val })}\n sholdCheckValidate={sholdCheckValidate}\n validateFun={this.zhNameValidateFun}\n />\n
\n
\n 更新频率\n this.validateFun(value, '更新频率')}\n value={refreshValue}\n data={runCycleData}\n onChange={val => this.setState({ refreshValue: val })}\n />\n
\n \n
\n )\n }\n}\n","import React from 'react'\nimport _ from 'lodash'\nimport './index.css'\n\n\nexport default function ConfirmWin(props) {\n let confirmData = props.confirmData\n return (\n
\n {\n !props.hideTitle &&\n {props.title}\n }\n\n
\n {\n confirmData.insert != null &&\n
新增
\n }\n {\n confirmData.insert != null &&\n confirmData.insert.map(i => (\n
{`${i.id} ${i.target_name} (${i.target_name_cn})`}
\n ))\n }\n {\n confirmData.modify != null &&\n
更新
\n }\n {\n confirmData.modify != null &&\n confirmData.modify.map(i => (\n
{`${i.id} ${i.target_name} (${i.target_name_cn})`}
\n ))\n }\n {\n confirmData.delete != null &&\n
删除
\n }\n {\n confirmData.delete != null &&\n confirmData.delete.map(i => (\n
{`${i.id} ${i.target_name} (${i.target_name_cn})`}
\n ))\n }\n
\n
\n )\n}\n","import React from 'react'\nimport {connect} from 'react-redux'\nimport {withRouter} from 'react-router-dom'\nimport _ from 'lodash'\nimport SdwBreadCrumbs from '@common/BreadCrumbs'\nimport SdwInput from '@common/Input'\nimport SdwTable from '@common/Table'\nimport SdwPagenation from '@common/Pagenation'\nimport { Button } from 'element-react'\nimport { pageAppTables, getModifyTargets, publishApi , pageAppTablesManage} from '@services/api'\nimport SdwMessage from '@common/Message'\nimport { hasPriv } from '@components/FrontendAuth/AuthMap'\n\nimport AddApiWin from './AddApiWin'\n//import ReRunWin from './ReRunWin'\nimport { getTopicBusiness } from '@services/Derived'\nimport SdwLoading from '@common/Loadding'\nimport SdwDialog from '@common/Dialog'\nimport ConfirmWin from './ConfirmWin/index.js'\nimport { getPublicCfg } from '@api/atom'\n\nclass Api extends React.Component {\n\n state = {\n tableName: '',\n create_user: '',\n curPage: this.props.pageInfo || 1,\n curLimit: 10,\n dialogVisible: false,\n reRunVisible: false,\n topicData: [],\n runCycleData: [],\n allAppInfos: {},\n curRecord: {},\n tableShowData: false,\n publishType: '',\n topicDic: {},\n editDataVisible: false,\n getModifyTargetsList: [],\n editDataItem: {},\n }\n\n componentDidMount() {\n this.initData()\n }\n\n initData = async () => {\n this.onSearchApiInfo()\n this.getTopicBusiness()\n this.getPublicCfg()\n }\n getPublicCfg = () => {\n getPublicCfg().then(res => {\n if (res.data.code === 0 && res.data.data) {\n let cfgData = {}\n for (let i in res.data.data) {\n cfgData[i] = res.data.data[i]\n }\n\n this.setState({ runCycleData: cfgData.runCycle })\n }\n }, () => SdwMessage.error(\"接口异常\"))\n }\n onSearchApiInfo = () => {\n let { curLimit, curPage } = this.state\n this.setState({ tableShowData: false })\n if (hasPriv('pageAppTables')) {\n pageAppTables({\n ...!!curLimit ? {\n limit: curLimit,\n } : {},\n ...!!curPage ? {\n page: curPage\n } : {}\n }).then(res => {\n this.setState({ tableShowData: true })\n let jsonData = res && res.data || {}\n if (jsonData && jsonData.code === 0 && jsonData.data) {\n this.setState({\n allAppInfos: jsonData.data\n })\n }\n }, () => SdwMessage.error(\"接口异常\"))\n return\n }\n if (hasPriv('pageAppTablesManage')) {\n pageAppTablesManage({\n ...!!curLimit ? {\n limit: curLimit,\n } : {},\n ...!!curPage ? {\n page: curPage\n } : {}\n }).then(res => {\n this.setState({ tableShowData: true })\n let jsonData = res && res.data || {}\n if (jsonData && jsonData.code === 0 && jsonData.data) {\n this.setState({\n allAppInfos: jsonData.data\n })\n }\n }, () => SdwMessage.error(\"接口异常\"))\n return\n }\n }\n\n componentDidUpdate(prevProps, prevStates, snapshot) {\n if (\n !_.isEqual(prevStates.curPage, this.state.curPage) ||\n !_.isEqual(prevStates.curLimit, this.state.curLimit)\n ) {\n this.initTableData()\n }\n }\n // 获取主题列表\n getTopicBusiness = () => {\n let that = this\n getTopicBusiness().then((res) => {\n that.setState({ topicData: res.data.data })\n\n let topicDic = {}\n for (let i = 0; i < res.data.data.length; i++) {\n let topicId = res.data.data[i].value\n if (!topicDic.hasOwnProperty(topicId)) {\n topicDic[topicId] = res.data.data[i]\n }\n }\n that.setState({ topicDic: topicDic })\n })\n }\n getcolumns = () => {\n let self = this\n let isDisplayOperate = false\n if (hasPriv('saveTemplateConf') || hasPriv('publishApi')) {\n isDisplayOperate = true\n }\n const columns = [\n {\n title: \"API名称\",\n width: 260,\n // dataIndex: \"table_name\",\n render: (data, record) => {\n return (\n {`${data.table_name}(${data.table_name_cn})`}\n )\n }\n },\n {\n title: \"主题域/业务\",\n width: 160,\n // dataIndex: \"topic\",\n render: (data, record) => {\n let { topicDic } = self.state\n let { topic, service } = data\n let topicRecord = topicDic[topic]\n let topicName = '-'\n let children = []\n let serviceName = '-'\n if (!!topicRecord) {\n topicName = topicDic[topic].label\n children = topicDic[topic].children || []\n serviceName = children.filter(i => i.value == service)[0] && children.filter(i => i.value == service)[0].label || ''\n }\n return (\n {`${topicName}/${serviceName}`}\n )\n }\n },\n {\n title: \"项目\",\n width: 80,\n dataIndex: \"project\",\n },\n {\n title: \"负责人\",\n width: 96,\n render: function (data, record) {\n let resp_user = \"\"\n // if (data.resp_user != \"\") {\n // resp_user = JSON(data.resp_user).join(\";\")\n // }\n return \n {data.resp_user}\n \n }\n },\n {\n title: \"创建时间\",\n width: 158,\n dataIndex: \"create_time\",\n },\n {\n title: \"调用次数\",\n width: 158,\n dataIndex: \"request_cnt\",\n },\n {\n title: \"发布状态\",\n width: 158,\n render: function (data, record) {\n return (\n <>\n {\n _.isEqual(typeof data.publish_state, 'number') && \n }\n {_.isEqual(typeof data.publish_state, 'number') ?\n (data.publish_state ? '已发布' : '未发布') : '-'}\n \n )\n }\n },\n ...isDisplayOperate ?\n [{\n title: \"操作\",\n width: 80,\n render: (data, record) => {\n return (\n <>\n {\n hasPriv('saveTemplateConf') &&\n self.handleEdit(data)}\n style={{ \"fontSize\": \"14px\" }}\n >编辑\n }\n {\n hasPriv('publishApi') &&\n self.publishApiTable(data)}\n style={{ \"fontSize\": \"14px\" }}\n >发布\n }\n \n )\n },\n }] : []\n ]\n return columns\n }\n\n initTableData = () => {\n let {\n tableName,\n create_user,\n curPage,\n curLimit,\n publishType\n } = this.state\n\n // DO search\n let params = {\n limit: curLimit,\n page: curPage,\n ...(!!tableName || !!create_user) ? {\n search: JSON.stringify({\n ...!!tableName ? {\n table_name: {\n value: `%${tableName}%`,\n operator: 'like'\n }\n } : {},\n ...!!create_user ? {\n create_user: {\n value: `%${create_user}%`,\n operator: 'like'\n }\n } : {}\n }),\n orSearch: JSON.stringify({\n ...!!tableName ? {\n table_name_cn: {\n value: `%${tableName}%`,\n operator: 'like'\n }\n } : {},\n ...!!create_user ? {\n create_user: {\n value: `%${create_user}%`,\n operator: 'like'\n }\n } : {}\n })\n } : {}\n }\n\n this.setState({ tableShowData: false })\n pageAppTables(params).then(res => {\n this.setState({ tableShowData: true })\n\n let jsonData = res && res.data || {}\n if (jsonData && jsonData.code === 0 && jsonData.data) {\n this.setState({\n allAppInfos: jsonData.data\n })\n }\n }, () => SdwMessage.error(\"接口异常\"))\n }\n\n changeDialogVisible = flag => {\n this.setState({\n dialogVisible: flag\n })\n }\n\n changeReRunVisible = flag => {\n this.setState({\n reRunVisible: flag\n })\n }\n\n handleEdit = data => {\n this.props.history.push(`/admin/factory/apiDetail/${data.id}`)\n }\n\n handleReRun = data => {\n this.setState({\n curRecord: data\n })\n this.changeReRunVisible(true)\n }\n\n publishApiTable = (data) => {\n getModifyTargets({\n id: data.id\n }).then(res => {\n let jsonData = res && res.data || {}\n if (jsonData && jsonData.code === 0 && jsonData.data) {\n this.setState({\n getModifyTargetsList: jsonData.data,\n editDataVisible: true,\n editDataItem: data\n })\n }\n }, () => SdwMessage.error(\"接口异常\"))\n\n }\n submitApiTable = () => {\n let editDataItem = this.state.editDataItem\n publishApi({\n id: editDataItem.id\n }).then(res => {\n let jsonData = res && res.data || {}\n if (jsonData && jsonData.code === 0) {\n this.setState({ editDataVisible: false })\n this.onSearchApiInfo()\n } else {\n SdwMessage.error(\"接口异常\")\n }\n }, () => SdwMessage.error(\"接口异常\"))\n\n }\n render() {\n let {\n tableName,\n create_user,\n dialogVisible,\n reRunVisible,\n topicData,\n runCycleData,\n allAppInfos,\n curRecord,\n tableShowData,\n editDataVisible,\n getModifyTargetsList,\n } = this.state\n\n let curTopicData = topicData.map(i => {\n return {\n id: i.label,\n text: i.value\n }\n })\n console.log(\"TagTree====curTopicData\", curTopicData)\n\n let curRunCycleData = runCycleData.map(i => {\n return {\n id: i.id,\n text: i.name\n }\n })\n\n return (\n
\n \n\n
\n
\n
\n
\n this.setState({\n curPage: 1,\n tableName: val\n })}\n />\n
\n
\n this.setState({\n curPage: 1,\n create_user: val\n })}\n />\n
\n\n
\n {\n hasPriv('saveAppConf') &&\n this.changeDialogVisible(true)}\n >新增\n }\n
\n
\n
\n\n
\n \n \n \n\n {\n this.setState({\n curPage: page\n })\n }}\n pageCountChange={limit => {\n this.setState({\n curLimit: limit\n })\n }}\n />\n
\n
\n\n {\n dialogVisible&&\n }\n\n {/** 编辑弹窗 */}\n {\n editDataVisible &&\n this.setState({ editDataVisible: bool })}\n onCancelClick={() => this.setState({ editDataVisible: false })}\n onSureClick={() => { this.submitApiTable() }}\n >\n \n \n }\n
\n )\n }\n}\n\nconst mapState = state => ({\n pageInfo: state.page.pageInfo\n})\n\nexport default withRouter(connect(mapState)(Api))\n","import React, { PureComponent } from 'react'\nimport SdwInput from '@common/Input'\nimport SdwDialog from '@common/Dialog'\nimport 'element-theme-default'\nimport './style/showTemplateConf.css'\n\nclass DialogVisible extends PureComponent {\n constructor(props) {\n super(props);\n }\n validateFun = (curValue, label = '') => {\n if (typeof curValue != 'object' && (typeof curValue === 'number' || !!curValue.trim())) {\n return true\n }\n return `${label}不能为空`\n }\n\n closeDialog = () => {\n this.props.closeDialog()\n }\n\n\n render () {\n let { item, dialogVisible} = this.props\n const { handleSubmit , setTemplateConfValue} = this.props\n return (\n
\n this.closeDialog() }\n lockScroll={ false }\n >\n
\n setTemplateConfValue( \"template_name\", val)}\n sholdCheckValidate={item.hasOwnProperty(\"sholdCheckValidate\")?item.sholdCheckValidate:false}\n validateFun={value => !!value ? true : '名称不能为空'}\n />\n
\n \n
\n )\n }\n}\n\nexport default DialogVisible\n","import React from 'react'\nimport _ from 'lodash'\nimport {connect} from 'react-redux'\nimport SdwTreeNew from '@common/TreeNew'\nimport SdwMessage from '@common/Message'\nimport {getTemplateConfList, saveTemplateConf, delTemplateConf} from '@services/api'\nimport DialogShowTemplateConfig from './DialogShowTemplateConfig'\nimport Dialog from '@common/Dialog'\nimport AddApiWin from '../AddApiWin'\nimport editImg from './img/icon_16_bj@2x.png'\nimport {hasPriv} from '@components/FrontendAuth/AuthMap'\nimport './style/index.css'\n\nclass TagTree extends React.PureComponent {\n\n state = {\n allTargetData: [],\n checkedTargetIDs: [],\n treeOptions: {\n children: 'children',\n label: 'templateName'\n },\n dialogEditVisible: false, //编辑API信息的弹框\n dialogVisible: false, //账号专区API的弹框\n dialogDelVisible: false, //删除账号专区API的弹框\n templateConfItem: {},\n runCycleData: [],\n }\n\n componentDidMount() {\n this.getTemplateList()\n // this.getTopicList()\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n // 总的指标有所更改,界面需要标记出已编辑的指标\n if (prevProps.currentData !== this.props.currentData) {\n this.getTemplateList()\n }\n }\n\n getTemplateList = () => {\n let currentData = this.props.currentData\n //console.log(\"TagTree===============apiDetail_---tagTree\", currentData)\n if (!!currentData && !!currentData.id) {\n getTemplateConfList({\n api_id: currentData.id\n }).then(res => {\n if (res && res.data && res.data.code === 0) {\n let targetData = res.data.data || []\n targetData.map(i => {\n i.isAddIconShow = true\n i.isEditIconShow = true\n i.isDelIconShow = true\n i.templateName = i.template_name\n if (i.children != null) {\n i.children.map(j => {\n j.isAddIconShow = true\n j.isEditIconShow = true\n j.isDelIconShow = true\n j.templateName = `${j.template_name}(id:${j.id})`\n return j\n })\n }\n return i\n })\n this.setState({\n templateConfItem: {\n \"sholdCheckValidate\": false,\n \"api_id\": currentData.id,\n \"id\": 0,\n \"data\": {\n \"pid\": 0,\n \"template_name\": \"页面\",\n }\n },\n allTargetData: targetData\n })\n }\n }, () => SdwMessage.error(\"接口异常\"))\n }\n }\n\n // getTopicList = () => {\n // let curTopicData = this.props.curTopicData\n // }\n\n addTreeCustomClass = (list, ids) => {\n return list.map(item => {\n let curItem = _.cloneDeep(item)\n if (item.id && ids.includes(item.id)) {\n curItem = {\n ...curItem,\n customClass: 'sdw-application-detail__tree-is-edit'\n }\n } else {\n curItem = {\n ...curItem,\n customClass: ''\n }\n }\n\n if (item.children && item.children.length) {\n curItem.children = this.addTreeCustomClass(item.children, ids)\n }\n\n return curItem\n })\n }\n\n //修改账号专区API的方法\n changeCurClickTreeValue = val => {\n if (val.tree_level == 1) {\n this.props.updateCurClickTreeValue(val)\n }\n }\n\n operateFun = (type, item) => {\n let templateConfItem = {\n \"sholdCheckValidate\": false,\n \"api_id\": item.api_id,\n \"id\": 0,\n \"data\": {\n \"pid\": item.pid,\n \"template_name\": item.template_name,\n }\n }\n switch (type) {\n case \"add\":\n if (!item.pid) {\n templateConfItem.data.template_name = \"页面\"\n } else {\n templateConfItem.data.template_name = \"模块\"\n }\n break\n case \"edit\":\n templateConfItem.id = item.id\n break\n case \"del\":\n templateConfItem.id = item.id\n this.delTemplateConf(true)\n break\n }\n if (type == \"add\" || type == \"edit\") {\n this.addTemplateConf(true)\n }\n this.setState({\n templateConfItem: templateConfItem,\n })\n }\n\n saveTemplate = () => {\n let item = {...this.state.templateConfItem}\n if (!item.data.template_name) {\n item.sholdCheckValidate = true\n return\n }\n saveTemplateConf({\n \"api_id\": item.api_id,\n ...!!item.id ? {\n id: item.id\n } : {},\n \"data\": {\n \"template_name\": item.data.template_name,\n \"pid\": item.data.pid\n }\n }).then(res => {\n if (res && res.data && res.data.code === 0) {\n this.getTemplateList()\n this.addTemplateConf(false)\n } else {\n SdwMessage.error(res.data.msg)\n }\n }, () => SdwMessage.error(\"接口异常\"))\n }\n\n //删除页面\n delTemplate = () => {\n let item = {...this.state.templateConfItem}\n if (!item.id) {\n return\n }\n delTemplateConf({\n \"id\": item.id,\n }).then(res => {\n if (res && res.data && res.data.code === 0) {\n this.getTemplateList()\n this.props.updatePageApiTargets([])\n this.delTemplateConf(false)\n } else {\n SdwMessage.error(res.data.msg)\n }\n }, () => SdwMessage.error(\"接口异常\"))\n }\n\n //弹框-编辑页面\n addTemplateConf = val => {\n this.setState({\n dialogVisible: val\n })\n }\n\n //弹框-删除页面\n delTemplateConf = val => {\n this.setState({\n dialogDelVisible: val\n })\n }\n\n //过滤型-设置数据\n setTemplateConfValue = (type, value) => {\n let templateConfItem = {...this.state.templateConfItem}\n let templateConfItemOne = _.cloneDeep(templateConfItem)\n switch (type) {\n case \"template_name\":\n templateConfItemOne.data.template_name = value\n break\n }\n templateConfItemOne.sholdCheckValidate = true\n this.setState({\n templateConfItem: templateConfItemOne\n })\n }\n\n //编辑API信息弹窗\n changeDialogVisible = flag => {\n this.setState({\n dialogEditVisible: flag\n })\n }\n\n iniPropsData = () => {\n this.props.initData()\n }\n\n render() {\n let {\n templateConfItem,\n allTargetData,\n treeOptions,\n dialogEditVisible, //编辑API信息弹框\n dialogVisible, //添加账号专区API弹框\n dialogDelVisible, //删除账号专区API弹框\n } = this.state\n\n let {currentData, curTopicData, cfgData} = this.props\n\n let runCycleData = cfgData[\"runCycle\"]\n\n let topicName = \"\"\n let topicServiceName = \"\"\n curTopicData.forEach(item => {\n if (parseInt(item.id) == currentData.topic) {\n topicName = item.text\n for (let i = 0; i < item.children.length; i++) {\n let sid = parseInt(item.children[i].value)\n let label = item.children[i].label\n if (sid == currentData.service) {\n topicServiceName = label\n }\n }\n }\n })\n currentData.topicBusiness = {\n \"ids\": [currentData.topic, currentData.service],\n \"texts\": [topicName, topicServiceName],\n \"clickItem\": {id: currentData.service, text: topicServiceName},\n }\n let curRunCycleData = []\n if (runCycleData) {\n curRunCycleData = runCycleData.map(i => {\n return {\n id: i.id,\n text: i.name\n }\n })\n }\n // 总的指标\n //console.log(\"TagTree====+==========apiDetail___tagTree---allTargetData\", allTargetData)\n return (\n <>\n
\n {currentData.table_name_cn}({currentData.table_name})\n {\n hasPriv('updateAppConf') &&\n this.changeDialogVisible(true)}\n >\n }\n
\n\n
\n {\n allTargetData.length == 0 ?\n {\n this.addTemplateConf(true)\n }}>添加 :\n \n }\n\n {/**编辑API信息弹窗 */}\n {\n dialogEditVisible && \n }\n\n {/**编辑账号专区弹窗 */}\n {\n dialogVisible &&\n {\n this.addTemplateConf(false)\n }}\n />\n }\n {/**删除账号专区弹窗 */}\n {\n dialogDelVisible &&\n this.delTemplateConf(false)}\n onSureClick={this.delTemplate}\n >\n
{templateConfItem.data.template_name}将被删除,是否确认
\n \n }\n
\n \n )\n }\n}\n\nconst mapState = state => ({\n pageApiTargets: state.api.pageApiTargets,\n curClickTreeValue: state.api.curClickTreeValue,\n})\n\nconst mapDispatch = dispatch => ({\n updatePageApiTargets: dispatch.api.updatePageApiTargets,\n updateCurClickTreeValue: dispatch.api.updateCurClickTreeValue,\n})\n\nexport default connect(mapState, mapDispatch)(TagTree)\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAADYklEQVRYR8WXSUwTYRiG3+//pyylBSxBDaJR0MRE44YHb/RkQmJcKR4U3BJcEu/e1CMHTx5MjCuVU2NM9OKakCguBy/GEAO4G1SQpSCUxZnP/NOFLlM6xQpzaZOZzP+877cOYYEvWuDzkUMAJoAYYMJZEM6TYUdcjgDCh3u9rJWXgwMB0k0QE2j2698BfCwRIH3DgYHKUZJtAE0IEo3v/e4+RO7NhvBvAGdZKKurGgdXgMUdBraYhxG9KJRyb+cN1w9EnkkHMXeAiLrKpvFlDmPqHoDNIHoKZgeAbQpCamJXz3V3/2xOzA0gTjmzuA1gK0AvSzSjztC1vFHWHwDYBFBHUYHc9/aK62c6J7IHsFIOelZUIOvNgwCokMTABL2UUuw0nbAIR3YAFsoZ9FxziN0xqxXBTFLeVaEhUIeLxN43KjGTqsM+QCbl8eoiz648PLIWf4xnBJSRQMuH1tIzqlTb2+lPNCntAdhRbtY+ELW5ppkdg6HhC2A6DaJBMO3+eKv4aXIYMgNkozyuC1YfCl4ydD7BwJAD2N99q/RR9jkwB+U+H8vXBcGLzDgJ0JAmuKG7tfRxulJM70Aulc/SEa0Bcqg8OemSO2IqwDwpt66CeVSeCjDPypMAwrM7voWmdLikOk+X7ZlinpoDEdvXHxlYPjYt1VTbiPjentC/Z7Ydyzq3Mf/TJuGqg8Nqgm1XE0w6xJ6UMRoByZXyhBBUNPc688edvwBoyOc1H68u+pzYtXKvPAGg0ve10JHvHlS7jJsmyt74l47FrPpPyq0cUACQrC/uafOM1jRDc3eB22thqLUrIeZCa+hudT0OJxzCQyira2ZZNRtRJAQmwKRz3NN7uWI8OrfT9vYMu55dnngAlQOqHI8DYoKEoemgkGRjBzOOAhh2sFbf1eZ6svpg8JwBVBNRiNkQdg4jgBmQAIVCpLd893u+qDyLALAzLzTSR8xFANQuH23R5n8CBYXkhp6bpQ/XHQt6QpP8hM2dz7Rf2gGIe+8kE9V+8pe8UhMyNguqmoKn2OBaJvwWDDIIHP2VQlx7f7O4Q4XF64X8tnyoTiexRICnwTa/rgjMBAGIqTym++9aiwfU+zIvJFF5OYp5+mnoY+ntt1YTrYSE0uy0qdwqPgEY0c82+w7YDHS2j/0FOnG/FkDSfMIAAAAASUVORK5CYII=\"","import _ from \"lodash\"\n\nconst TOP_MAP = {\n normal: 1,\n top: 2\n}\n\nconst TOP_MAP_TEXT = {\n [TOP_MAP.normal]: '普通指标',\n [TOP_MAP.top]: 'TOP型指标'\n}\nconst EDIT_TEXT = {\n 0: '未编辑',\n 1: '已编辑'\n}\n\nexport {\n EDIT_TEXT,\n TOP_MAP,\n TOP_MAP_TEXT\n}\n\nexport function formatToIdMap(list) {\n let objMap = {}\n if (!_.isArray(list) || !list.length) return objMap\n\n for (let i = 0; i < list.length; i++) {\n const item = list[i];\n let { dimensionTableMatchingFelds, addField } = item\n if (_.isEmpty(dimensionTableMatchingFelds) || !_.isArray(dimensionTableMatchingFelds.ids) || dimensionTableMatchingFelds.ids.length !== 2) break\n let relateConfig = {\n relate_table_id: dimensionTableMatchingFelds.ids[0],\n relate_field: dimensionTableMatchingFelds.ids[1],\n app_field: item.app_field,\n filter: item.filter\n }\n\n if (_.isArray(addField) && addField.length) {\n addField.forEach(f => {\n let { id, field_name, field_name_ch } = f\n objMap[id] = {\n id,\n target_name_en: field_name,\n target_name_cn: field_name_ch,\n ...relateConfig\n }\n })\n }\n }\n\n\n return objMap\n}\n","import React, { Component } from \"react\";\nimport PropTypes from 'prop-types'\nimport \"./index.css\";\nimport { hGClose } from \"@utils/handleGlobalClose\";\nimport _ from \"lodash\";\n\nclass Cascader extends Component {\n cascaderInputWrapRef = React.createRef()\n selectInputRef = React.createRef()\n static defaultProps = {\n width: '100%',\n listWidth: 200,\n listMaxHeight: 300,\n height: 40,\n placeholder: '全部',\n value: {\n ids: [],\n texts: []\n },\n data: [],\n }\n state = {\n showCascaderList: false,\n showCascaderSecondList: false,\n secondList: [],\n fuzzyData:[],\n inputValue: '',\n showClearIcon: false,\n isValidatePass: true,\n validateText: ''\n }\n componentDidMount() {\n document.addEventListener('click', this.handleGlobalClose)\n let { value } = this.props\n if (value.texts.length > 1) {\n this.setState({\n inputValue: value.texts.join('/')\n })\n }\n }\n componentDidUpdate(prevProps,prevState, snapshot){\n let {data,value,sholdCheckValidate} = this.props\n if(prevProps.data.length !== data.length){\n this.setState({\n fuzzyData: data\n })\n }\n if(prevProps.value.texts.length !== value.texts.length || prevProps.value !== value ){\n if (value.texts.length > 1) {\n this.setState({\n inputValue: value.texts.join('/')\n })\n }\n }\n\n if (prevProps.sholdCheckValidate !== sholdCheckValidate) {\n this.validate(value)\n }\n\n }\n componentWillUnmount() {\n document.removeEventListener('click', this.handleGlobalClose)\n }\n handleGlobalClose = e => {\n hGClose(e, this.cascaderInputWrapRef.current, this, 'showCascaderList')\n }\n cascaderToggle = () => {\n this.setState({\n showCascaderList: !this.state.showCascaderList\n })\n }\n toGetSecondList = (e, item) => {\n let selectItem = this.selectItem = {\n ids: [item.id],\n texts: [item.text]\n }\n\n this.props.ajaxFun(item, selectItem).then(res => {\n if (Array.isArray(res)) {\n this.setState({\n secondList: res,\n showCascaderSecondList: true\n })\n }\n })\n }\n setValue = (e, item) => {\n let selectItem = this.selectItem\n let newSelectItem = {\n ids: [selectItem.ids[0], item.id],\n texts: [selectItem.texts[0], item.text]\n }\n // 把选中的数据传递回上层\n this.props.onChange(newSelectItem)\n this.validate(newSelectItem)\n this.setState({\n showCascaderList: false\n })\n }\n fuzzyFilter = (value) => {\n let {data} = this.props\n let filterArr = data.filter(i => i.text.includes(value))\n this.setState({\n showCascaderList:true,\n fuzzyData: filterArr,\n inputValue: value\n })\n }\n handleClearInput = e => {\n e.preventDefault()\n this.setState({\n inputValue: ''\n })\n let temObj ={ids: [],texts: []}\n this.props.onChange(temObj)\n this.validate(temObj)\n this.selectInputRef.current.focus()\n }\n validate = curRecord => {\n\n // 如果没有传入valiateFun进行校验,直接跳过\n if (typeof this.props.validateFun !== 'function') {\n return\n }\n\n let res = this.props.validateFun(curRecord)\n\n // validateFun只有返回true,才会校验通过\n if (res === true) {\n this.setState({\n isValidatePass: res,\n validateText: ''\n })\n } else {\n this.setState({\n isValidatePass: false,\n validateText: res\n })\n }\n }\n render() {\n let { data,placeholder, isError, width, listWidth, listMaxHeight, value,clearable } = this.props\n let { showCascaderList, showCascaderSecondList, secondList,inputValue ,fuzzyData,showClearIcon,isValidatePass,validateText,} = this.state\n\n if(inputValue === '' || !fuzzyData.length) {\n fuzzyData = _.cloneDeep(data)\n }\n let isErrorTip = isError && isError.error\n let errorMsg = isError && isError.msg\n\n if (!isError) {\n isErrorTip = !isValidatePass\n errorMsg = validateText\n }\n\n let { cascaderToggle, toGetSecondList, setValue, handleClearInput } = this\n\n return (\n this.setState({ showClearIcon: true })}\n onMouseLeave={() => this.setState({ showClearIcon: false })}\n >\n this.fuzzyFilter(e.target.value)}\n style={{ width: '100%', height: '40px' }} />\n \n\n { isErrorTip &&
{errorMsg}
}\n\n {\n showCascaderList &&\n
\n\n
\n {\n Array.isArray(fuzzyData) && fuzzyData.length > 0 ?\n fuzzyData.map(item => {\n let isSelected = value.ids && value.ids[0] === item.id\n return (\n
toGetSecondList(e, item)}>\n {item.text}\n \n
\n )\n })\n :\n
\n 暂无匹配数据\n
\n }\n\n
\n\n {\n showCascaderSecondList &&\n
\n {\n Array.isArray(secondList) && secondList.length > 0 ?\n secondList.map(item => {\n let isSelected = value.ids && value.ids[1] === item.id\n return (\n
setValue(e, item)}>\n {item.text}\n
\n )\n })\n :\n
\n 暂无匹配数据\n
\n }\n
\n }\n\n
\n }\n \n )\n }\n}\n\nCascader.propTypes = {\n data: PropTypes.array,\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n listWidth: PropTypes.number,\n listMaxHeight: PropTypes.number,\n value: PropTypes.object,\n height: PropTypes.number,\n placeholder: PropTypes.string,\n ajaxFun: PropTypes.func\n}\n\nexport default Cascader\n","import React, { Component } from 'react'\n\nimport SdwDialog from '@common/Dialog'\nimport SdwInput from '@common/Input'\nimport SdwSelect from '@common/Select'\nimport SdwMessage from '@common/Message'\nimport SdwLoading from \"@common/Loadding\";\n\nimport FieldCascader from \"./common/Cascader\";\nimport _ from \"lodash\";\n\nimport { getTablecfgList, getTablecfgFields } from '@services/dimen'\nimport { storeRelateTarget, getRelateTarget } from '@services/api'\nimport { formatToIdMap } from './common'\n\nimport './style/applicationSettingWin.css'\n\nconst fieldSettingObj = {\n dimensionTableMatchingFelds: {\n ids: [],\n texts: []\n }, //维度表匹配字段\n app_field: '',//应用表字段\n addField:[], //[{id:'',text:''},] 添加字段\n filter: '', //条件配置\n}\n\nfunction checkMaxLength(value) {\n if(value.length < 500){\n return true\n }\n return '条件配置输入最大500'\n}\n\nfunction checkNotEmpty(value) {\n if(value.ids.length === 2){\n return true\n }\n return '维度表匹配字段不能为空'\n}\n\nexport default class ApiSettingWin extends React.Component {\n state={\n fieldSettingList: [_.cloneDeep(fieldSettingObj)],\n tableList: [],\n sholdCheckValidate:false,\n tableFields:[],\n loadding: false,\n oriList: [] // 原始数据\n }\n // 初始化\n componentDidMount() {\n this.onGetTablecfgList()\n }\n // 获取所有的表\n onGetTablecfgList = async () => {\n let that = this\n await getTablecfgList({ limit: 10000, page: 0, search: { enable: { value: '1', operator: \"=\" } } }).then(res => {\n let tableList = res.data.data.items || []\n tableList = tableList.map(i => {\n return {\n id: i.id,\n text: i.data_set_chinese + \"(\" + i.database_name + \".\" + i.table_name + \")\"\n }\n })\n that.setState({tableList})\n })\n\n if (this.props.currentData && this.props.currentData.id) {\n await getRelateTarget({\n \"api_id\":this.props.currentData.api_id,\n \"template_id\":this.props.currentData.id\n }).then(res => {\n let code = _.get(res, 'data.code')\n let oriData = _.get(res, 'data.data')\n // console.log('________________res: ', code, oriData);\n if (code === 0 && !_.isEmpty(oriData)) {\n let oriList = oriData.map(ori => {\n let fieldName = that.state.tableList.filter(j => j.id == ori.relate_table_id)[0]\n fieldName = fieldName && fieldName.text || ''\n console.log(\"-----fieldName\", fieldName)\n console.log(\"-----that.state.tableList\", that.state.tableList)\n return {\n key: ori.key,\n dimensionTableMatchingFelds: {\n ids: [ori.relate_table_id, ori.relate_field],\n texts: [fieldName, ori.relate_field]\n },\n app_field: ori.app_field,\n addField: _.isArray(ori.target_names) ? ori.target_names.map(j => {\n return {\n field_name: j,\n field_name_ch: j,\n id: j,\n text: j\n }\n }) : [],\n filter: ori.filter\n }\n })\n\n this.setState({\n fieldSettingList: _.cloneDeep(oriList),\n oriList: _.cloneDeep(oriList) // 原始数据\n })\n }\n })\n }\n\n }\n addConfigRule = () => {\n let fieldSettingList = this.state.fieldSettingList\n let fieldSetting = _.cloneDeep(fieldSettingObj)\n this.setState({ fieldSettingList: [...fieldSettingList,fieldSetting] })\n }\n removeConfigRule = (index) => {\n let fieldSettingList = this.state.fieldSettingList\n if (fieldSettingList.length <= 1) return\n fieldSettingList.splice(index, 1)\n this.setState({ fieldSettingList: [...fieldSettingList] })\n }\n setFieldSettingProps = (val, index, prop) => {\n let fieldSettingList = [...this.state.fieldSettingList]\n fieldSettingList[index][prop] = val\n if(prop === 'dimensionTableMatchingFelds') {\n fieldSettingList[index].addField = []\n }\n this.setState({\n fieldSettingList\n })\n }\n getField = (item, selectItem,index) => {\n this.setFieldSettingProps(selectItem, index, 'dimensionTableMatchingFelds')\n return new Promise((resolve) => {\n let parame = {}\n parame.id = item.id\n this.setState({loadding:true})\n getTablecfgFields(parame).then(res => {\n let tableFields = res.data.data || []\n tableFields = tableFields.map(i => {\n return {\n id: i.field_name,\n text: i.field_name_ch? i.field_name + \"(\" + i.field_name_ch + \")\" : i.field_name\n }\n })\n resolve(tableFields)\n this.setState({\n loadding:false\n })\n })\n })\n }\n checkFieldSetting = (fieldSettingList) => {\n return fieldSettingList.filter(el => el.dimensionTableMatchingFelds.ids.length === 2 && el.app_field !== '' && el.addField.length > 0)\n }\n\n getParams = item => {\n let { target_name_en, target_name_cn, relate_table_id, relate_field, app_field, filter } = item\n return {\n table_id: this.props.currentData.id,\n target_name_en,\n target_name_cn,\n target_type: 3, // 固定值\n relate_config: JSON.stringify({\n relate_table_id,\n relate_field,\n app_field,\n filter\n })\n }\n }\n\n handleSubmit = () => {\n let { fieldSettingList, oriList } = this.state\n let {currentData} = this.props\n let cloneList = _.cloneDeep(fieldSettingList)\n cloneList = this.checkFieldSetting(cloneList)\n if (cloneList.length === 0) {\n cloneList.push(_.cloneDeep(fieldSettingObj))\n }\n this.setState({\n fieldSettingList: cloneList\n })\n\n // 如果新数据和原始数据同,则跳出submit\n let isSame = _.isEqualWith(oriList, fieldSettingList, _.isEqual)\n if (isSame) {\n // 关闭弹窗\n this.props.changeDialogVisible(false)\n return\n }\n\n // console.log('cloneList: ', cloneList);\n // console.log('oriList: ', oriList);\n\n // 将 cloneList、oriList 变成以id为key的map,便于对比出增、删、改的类容\n let cloneListMap = []\n cloneList.forEach(i => {\n let cloneListMapItem = {\n target_names: [],\n relate_table_id: \"\",\n relate_field: \"\",\n app_field: i.app_field,\n filter: i.filter\n\n }\n cloneListMapItem[\"target_names\"] = i.addField.map(fieldItem => {\n return fieldItem.field_name\n }) || []\n if (i.dimensionTableMatchingFelds.ids && i.dimensionTableMatchingFelds.ids[0]) {\n cloneListMapItem[\"relate_table_id\"] = i.dimensionTableMatchingFelds.ids[0]\n }\n if (i.dimensionTableMatchingFelds.ids && i.dimensionTableMatchingFelds.ids[1]) {\n cloneListMapItem[\"relate_field\"] = i.dimensionTableMatchingFelds.ids[1]\n }\n cloneListMap.push(cloneListMapItem)\n })\n let params = {\n \"api_id\":currentData.api_id,\n \"template_id\":currentData.id,\n \"add\":cloneListMap\n }\n this.onStoreRelateTarget(params)\n // 关闭弹窗\n this.props.changeDialogVisible(false)\n }\n\n\n onStoreRelateTarget = addArr => {\n console.log(\"-----addArr\", addArr)\n //let relateConfig = JSON.parse(addArr[\"relate_config\"])\n storeRelateTarget(addArr)\n .then(res => {\n let code = _.get(res, 'data.code')\n if (code === 0) {\n SdwMessage.success('新增成功')\n } else {\n SdwMessage.error('新增失败')\n }\n }, () => SdwMessage.error(\"接口异常\"))\n }\n render() {\n let { dialogVisible, changeDialogVisible, } = this.props\n let { fieldSettingList, tableList, sholdCheckValidate,loadding } = this.state\n let {setFieldSettingProps,getField} = this\n return (\n dialogVisible &&\n changeDialogVisible(false)}\n onSureClick={this.handleSubmit}\n >\n
字段设置
\n
\n \n {\n fieldSettingList.map((el,index) => (\n
\n
\n getField(item, selectItem,index)}\n data={tableList}\n listWidth={390}\n value={el.dimensionTableMatchingFelds}\n // sholdCheckValidate={sholdCheckValidate}\n // validateFun={checkNotEmpty}\n onChange={(val) => setFieldSettingProps(val, index, 'dimensionTableMatchingFelds')}\n width={390}\n />\n
\n setFieldSettingProps(val, index, 'app_field')}\n width={200}\n />\n
\n
\n setFieldSettingProps(val, index, 'filter')}\n width={200}\n />\n
\n { index > 0 &&
}\n
\n
\n setFieldSettingProps(val, index, 'addField')}\n />\n
\n
\n ))\n }\n
\n\n
\n
\n 添加配置规则\n
\n
\n \n )\n }\n}\n\n\nclass FieldSettingRow extends Component {\n state={\n tableFields: []\n }\n componentDidMount () {\n this.onGetTablecfgFields()\n }\n componentDidUpdate(prevProps, prevState){\n let id = this.props.fetchId\n if(prevProps.fetchId !== id) this.onGetTablecfgFields()\n }\n onGetTablecfgFields = () => {\n let id = this.props.fetchId\n if (!id) return\n let parame = {}\n parame.id = id\n getTablecfgFields(parame).then(res => {\n let tableFields = res.data.data || []\n tableFields = tableFields.map(i => {\n return {\n id: i.field_name,\n field_name: i.field_name,\n field_name_ch: i.field_name_ch,\n text: i.field_name_ch? i.field_name + \"(\" + i.field_name_ch + \")\" : i.field_name\n }\n })\n this.setState({\n tableFields\n })\n })\n }\n render () {\n let {value,onChange} = this.props\n let {tableFields} = this.state\n return (\n onChange(val)}\n width={820}\n listWidth={820}\n />\n )\n }\n}\n","// @file 指标配置,前端分页\nimport React, {useState, useMemo} from 'react'\nimport _ from 'lodash'\nimport Table from '@common/Table'\nimport Select from '@common/Select'\nimport Input from '@common/Input'\nimport Pagenation from '@common/Pagenation'\nimport {Button, Dropdown} from 'element-react'\nimport {hasPriv} from '@components/FrontendAuth/AuthMap'\nimport ApiSettingWin from '@pages/MachFactory/Api/ApiSettingWin'\nimport './style/selectedAttributes.css'\n\nexport default function SelectedAttributes(props) {\n\n const {\n curClickTreeValue,\n columns,\n dataSource,\n handleEdit,\n reRunVisible, // 重跑弹窗\n regularRerunVisible, // 定时重跑弹窗\n } = props\n\n const [currentPage, setCurrentPage] = useState(1)\n const [pageCount, setPageCount] = useState(15)\n const [searchValue, setSearchValue] = useState({field: \"a.id\", value: \"\"})\n const [settingDialogVisible, setSettingDialogVisible] = useState(false)\n\n const curDataSource = useMemo(() => {\n if (!_.isArray(dataSource) || !dataSource.length) return []\n const start = (currentPage - 1) * pageCount\n const end = currentPage * pageCount\n return dataSource.slice(start, end)\n }, [currentPage, pageCount, dataSource])\n\n const Total = _.isArray(dataSource) ? dataSource.length : 0\n\n function changeTitle(command) {\n if (command == 'associatedField') {\n if (Object.keys(curClickTreeValue).length > 0) {\n setSettingDialogVisible(true)\n }\n } else if (command == 'regularRerun') {\n regularRerunVisible(curClickTreeValue)\n }\n }\n\n return (\n
\n
\n
\n {/*{`${curClickTreeValue.template_name ? curClickTreeValue.template_name : \"\"}(id:${curClickTreeValue.id ? curClickTreeValue.id : \"0\"})`}*/}\n {\n setSearchValue(_.assign({}, searchValue, {field: i, value: \"\"}))\n props.setSearch(i, \"\")\n }}\n />\n {\n setSearchValue(_.assign({}, searchValue, {value: val}))\n props.setSearch(searchValue.field, val)\n }}\n />\n
\n\n
\n \n 关联字段\n 指标定时重跑\n \n )}\n onCommand={command => changeTitle(command)}\n >\n 更多设置\n \n {/* {\n if (Object.keys(curClickTreeValue).length > 0) {\n setSettingDialogVisible(true)\n }\n }}\n >字段设置*/}\n {\n hasPriv('tableApiRunTargetResult') &&\n reRunVisible(curClickTreeValue)}\n >重跑\n }\n\n handleEdit(curClickTreeValue)}\n >编辑指标\n\n
\n
\n\n \n\n setCurrentPage(val)}\n pageCountChange={val => setPageCount(val)}\n />\n\n {settingDialogVisible && }\n
\n )\n}\n","import React from 'react'\nimport SdwDialog from '@common/Dialog'\nimport SdwCheckbox from '@common/Checkbox'\nimport SdwMessage from '@common/Message'\nimport { DateRangePicker } from 'element-react'\nimport { runTargetResult } from '@services/api'\nimport { formatTime } from '@utils/formatTime'\nimport './style/reRunWin.css'\n\nexport default class ReRunWin extends React.Component {\n\n state = {\n dataPicker: '',\n isChecked: false,\n isChecked2: false,\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n if (prevProps.record.id !== this.props.record.id) {\n this.initData()\n }\n }\n\n initData = () => {\n this.setState({\n dataPicker: '',\n isChecked: false,\n isChecked2: false,\n })\n }\n\n handleSubmit = () => {\n let { dataPicker, isChecked, isChecked2 } = this.state\n let {record, curClickTreeValue} = this.props\n // 未选择时间,不下发重跑\n if (!dataPicker) return\n console.log(\"reRunWin=======dataPicker\", dataPicker)\n console.log(\"reRunWin=======isChecked\", isChecked)\n console.log(\"reRunWin=======isChecked2\", isChecked2)\n console.log(\"reRunWin=======isChecked2\", isChecked2)\n console.log(\"reRunWin=======record\", record)\n console.log(\"reRunWin=======curClickTreeValue\", curClickTreeValue)\n let params = {}\n params[\"api_id\"] = record.id\n params[\"template_id\"] = curClickTreeValue.id\n if (dataPicker && dataPicker.length > 0) {\n params[\"start_time\"] = formatTime(+new Date(dataPicker[0]), 0)\n params[\"end_time\"] = formatTime(+new Date(dataPicker[1]), 0)\n }\n params[\"is_online\"] = +isChecked\n params[\"is_test\"] = +isChecked2\n runTargetResult(params).then(res => {\n\n let record = res && res.data || {}\n let appTable = record && record.data && record.data.app_table\n\n if (record.code === 0) {\n SdwMessage.success(`${!!appTable ? '指标:' + appTable : ''} 重跑任务提交成功`)\n this.props.changeReRunVisible(false)\n return\n }\n\n const errMsg = record.msg || `${!!appTable ? '指标:' + appTable : ''} 重跑任务提交失败`\n SdwMessage.error(errMsg)\n }, () => SdwMessage.error(\"接口异常\"))\n }\n\n render () {\n let { reRunVisible, changeReRunVisible } = this.props\n\n let { dataPicker, isChecked, isChecked2 } = this.state\n\n return (\n changeReRunVisible(false)}\n onSureClick={this.handleSubmit}\n width={524}\n >\n
\n 时间\n time.getTime() > (Date.now() + 24*60*60*1000)}\n onChange={date => {\n this.setState({ dataPicker: date })\n }}\n />\n
\n
\n 数据同步\n
\n {\n this.setState({\n isChecked2: !isChecked2\n })\n }}\n />\n
\n {\n this.setState({\n isChecked: !isChecked\n })\n }}\n />\n
\n
\n
\n \n )\n }\n}\n","import React from 'react'\nimport _ from 'lodash'\nimport SdwDialog from '@common/Dialog'\nimport SdwMessage from '@common/Message'\nimport {Checkbox} from 'element-react'\nimport {getDelayTargets, saveApiDelay, getTemplateDetail} from '@services/api'\nimport './style/reRunWin.css'\n\nexport default class RegularRerunWin extends React.Component {\n\n state = {\n delayList: [], // 可选指标\n checkList: [], // 已选指标\n }\n\n componentDidMount() {\n this.getDelayTargets()\n this.getTemplateDetail()\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n if (prevProps.regularRerunVisible !== this.props.regularRerunVisible) {\n this.getDelayTargets()\n this.getTemplateDetail()\n }\n }\n\n // 获取重跑指标\n getDelayTargets = () => {\n let {curClickTreeValue} = this.props\n let params = {\n 'api_id': curClickTreeValue.api_id,\n 'template_id': curClickTreeValue.id,\n }\n // console.log('curClickTreeValue11111', curClickTreeValue)\n getDelayTargets(params).then(res => {\n if (res && res.data && res.data.code === 0) {\n let record = res.data.data || []\n // console.log('getDelayTargets=====', record)\n this.setState({\n delayList: record\n })\n }\n })\n }\n\n // 多选框回显\n getTemplateDetail = () => {\n let {curClickTreeValue} = this.props\n let params = {\n 'id': curClickTreeValue.id,\n }\n getTemplateDetail(params).then(res => {\n if (res && res.data && res.data.code === 0) {\n let array\n let items = res.data.data.delay_ids || ''\n if (items) {\n array = (items.split(',')).map(Number)\n } else {\n array = []\n }\n this.setState({\n checkList: array\n })\n }\n })\n }\n\n // 提交重跑\n handleSubmit = () => {\n let {curClickTreeValue} = this.props\n let {delayList, checkList} = this.state\n if (delayList.length == 0) {\n SdwMessage.error('暂无相关指标')\n return\n }\n let params = {\n 'id': curClickTreeValue.id,\n 'target_ids': checkList\n }\n saveApiDelay(params).then(res => {\n if (res && res.data && res.data.code === 0) {\n SdwMessage.success('定时重跑提交成功')\n this.props.changeRegularReRunVisible(false)\n }\n }).catch(() => SdwMessage.error('定时重跑提交失败'))\n }\n\n render() {\n let {regularRerunVisible, changeRegularReRunVisible} = this.props\n let {delayList, checkList} = this.state\n\n // console.log('delayList======', delayList)\n // console.log('checkList======', checkList)\n\n return (\n changeRegularReRunVisible(false)}\n onSureClick={this.handleSubmit}\n width={640}\n >\n
\n {\n _.isArray(delayList) && delayList.length > 0 ?\n \n 已设置重跑指标\n \n (勾选后,将按照指标设置的定时重跑规则进行重跑)\n \n :\n \n 暂无相关指标\n \n }\n
\n
\n \n {\n delayList.map((item) => (\n {`${item.target_name}(${item.target_name_cn})`}\n )\n )\n }\n \n
\n
\n
\n \n )\n }\n}\n","import React from 'react'\nimport _ from 'lodash'\nimport {connect} from 'react-redux'\nimport SdwButton from '@common/Button'\nimport {Tabs} from 'element-react'\nimport {pageApiTargets, previewTargets} from '@services/api'\nimport SdwMessage from '@common/Message'\nimport {TOP_MAP, TOP_MAP_TEXT} from '../common'\nimport {withRouter} from 'react-router-dom'\nimport SelectedAttributes from './SelectedAttributes'\nimport SdwInput from '@common/Input'\nimport './style/tabPage.css'\nimport ReRunWin from '../ReRunWin'\nimport RegularRerunWin from '../RegularRerunWin'\nimport SdwLoading from '@common/Loadding'\nimport SdwSelect from '@common/Select'\nimport ReactJson from 'react-json-view'\n\nconst CUR_TARGET_INDEX = '1'\n\nclass TabPage extends React.PureComponent {\n\n state = {\n previewData: [], // 预览数据\n previewTableHeader: [], // 预览数据表头\n curActiveName: CUR_TARGET_INDEX,\n setTopVisible: false,\n curClickTargetData: {}, // 当前设置点击的对象,设置指标 or 删除的项\n curClickTreeValue: {},\n search: {},\n searchData: {\n page: 1,\n limit: 1000,\n },\n previewColumns: [],\n cmdStr: \"\",\n reRunVisible: false,\n disTestTableDataVisible: false,\n disTestTableText: \"\",\n isLoading: true,\n shouldVerify: false,\n jsonData: {},\n }\n\n componentDidMount() {\n //this.getPublicCfg()\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n // 预览数据,时间搜索\n if (prevProps.curClickTreeValue !== this.props.curClickTreeValue) {\n this.onSearchPreviewData()\n }\n }\n\n onSearchPreviewData = () => {\n let {curClickTreeValue} = this.props\n let {search, searchData} = this.state\n let searchClone = Object.assign({}, search, {\n // template_id: curClickTreeValue.id\n })\n this.setState({\n search: searchClone\n })\n let params = {\n \"template_id\": curClickTreeValue.id,\n \"search\": {},\n \"orSearch\": {},\n ...searchData\n }\n for (const key in searchClone) {\n if (key !== \"form_data\" && key !== \"env\" && key !== \"\") {\n const dval = searchClone[key]\n if (dval.value !== \"\") {\n params.search[key] = dval\n }\n }\n }\n pageApiTargets(params).then(res => {\n if (res && res.data && res.data.code === 0) {\n let targetData = res.data.data || []\n this.props.updatePageApiTargets(targetData.items)\n }\n }, () => SdwMessage.error(\"接口异常\"))\n }\n\n setSearch = (type, value) => {\n let {search, searchData} = this.state\n let searchObj\n if (type === \"a.id\" || type === \"a.target_id\") {\n if (value) {\n searchObj = {operator: \"in\", value: value.split(\",\")}\n } else {\n searchObj = {operator: \"in\", value: \"\"}\n }\n } else {\n searchObj = {operator: \"like\", value: value}\n }\n this.setState({\n search: {\n [type]: _.assign({}, search[type], searchObj)\n },\n searchData: _.assign({}, searchData, {\n page: 1\n })\n }, () => {\n this.onSearchPreviewData()\n })\n }\n\n //调用测试 搜索\n //targetData data 数据列表 header表格头\n initTestTableData = () => {\n // let { currentData, curClickTreeValue} = this.props\n let search = this.state.search\n let {form_data, env} = search\n console.log(\"------------search\", search)\n // if (!template_id) {\n // SdwMessage.error(\"请先选择指标API\")\n // return\n // }\n if (!form_data || !env) {\n this.setState({\n shouldVerify: true\n })\n return\n }\n this.setState({\n disTestTableDataVisible: true,\n isLoading: true,\n disTestTableText: \"数据调用中\"\n })\n let params = {\n ...search\n }\n previewTargets(params)\n .then(res => {\n if (res && res.data && res.data.code === 0) {\n let jsonData = res.data.data.data || {}\n this.setState({\n jsonData: jsonData,\n isLoading: false,\n })\n } else {\n SdwMessage.error(\"接口调用异常,请核对搜索条件\")\n this.setState({\n isLoading: false,\n })\n }\n }, () => {\n SdwMessage.error(\"接口异常\")\n this.setState({\n isLoading: false,\n })\n })\n }\n\n getColumns = () => {\n return [\n {\n title: \"字段ID\",\n dataIndex: \"id\",\n width: 55\n },\n {\n title: \"指标ID\",\n dataIndex: \"target_id\",\n width: 55\n },\n {\n title: \"中文名\",\n dataIndex: \"target_name_cn\",\n width: 98\n },\n {\n title: \"英文名\",\n showTip: true,\n dataIndex: \"target_name\",\n width: 130\n },\n {\n title: \"时间\",\n dataIndex: \"time_cycle\",\n width: 28\n },\n {\n title: \"维度\",\n dataIndex: \"dimension_value\",\n width: 112\n },\n {\n title: \"过滤\",\n dataIndex: \"filter_str\",\n width: 112\n },\n {\n title: \"简称\",\n dataIndex: \"short_name\",\n width: 60\n },\n {\n title: \"排序\",\n dataIndex: \"sort_value\",\n width: 50\n },\n {\n title: \"全称\",\n width: 120,\n dataIndex: \"full_name\",\n },\n {\n title: \"单位\",\n width: 120,\n dataIndex: \"table_unit\",\n },\n {\n title: \"分组\",\n width: 120,\n dataIndex: \"group_value\",\n },\n {\n title: \"关联预警\",\n width: 120,\n dataIndex: \"alarm_ids\",\n },\n {\n title: \"备注\",\n width: 120,\n dataIndex: \"remark\",\n },\n {\n title: \"聚合方式\",\n width: 100,\n render: data => {\n let arr = {\n \"sum\": \"求和\",\n \"avg\": \"平均\",\n \"calculate\": \"比率\"\n }\n let msg = arr[data.agg_name]\n return {msg}\n }\n },\n {\n title: \"计算公式\",\n width: 150,\n dataIndex: \"agg_calculate\",\n }\n ]\n }\n\n handleEdit = (val) => {\n console.log(\"ApiDetail==========handleEdit_props\", this.props)\n if (Object.keys(val).length == 0) {\n SdwMessage.error(\"请先选择账号专区API\")\n return\n }\n console.log(\"========handleEdit\", val)\n this.props.history.push({\n pathname: '/admin/factory/indexDetail',\n state: val\n })\n }\n\n // 重跑\n reRunVisible = (val) => {\n console.log(\"ApiDetail==========reRunVisible_props\", this.props)\n if (Object.keys(val).length == 0) {\n SdwMessage.error(\"请先选择账号专区API\")\n return\n }\n this.changeReRunVisible(true)\n }\n\n // 重跑弹窗\n changeReRunVisible = flag => {\n this.setState({\n reRunVisible: flag\n })\n }\n\n // 定时重跑\n regularRerunVisible = () => {\n this.changeRegularReRunVisible(true)\n }\n\n // 定时重跑弹窗\n changeRegularReRunVisible = flag => {\n this.setState({\n regularRerunVisible: flag\n })\n }\n\n handleSetButtom = data => {\n this.setState({\n curClickTargetData: data\n }, () => {\n this.changeSetTopVisible(true)\n })\n }\n\n handleDeleteButtom = data => {\n let {curShowSelectedTarget} = this.props\n let arr = _.cloneDeep(curShowSelectedTarget)\n\n let index = arr.findIndex(i => i.time === data.time && i.dimension === data.dimension)\n arr.splice(index, 1)\n\n this.props.updateCurShowSelectedTarget(arr)\n\n // 还原勾选\n this.props.onReWriteData(arr)\n }\n\n updateTargetValue = (curTarget, params) => {\n let {curShowSelectedTarget} = this.props\n let arr = _.cloneDeep(curShowSelectedTarget)\n\n arr.forEach(item => {\n if (curTarget.id === item.id && item.time === curTarget.time && item.dimension === curTarget.dimension) {\n item.target_type = params.selectInputValue\n item.target_top = params.selectInputValue === TOP_MAP.top ? params.inputValue : null\n }\n })\n\n this.props.updateCurShowSelectedTarget(arr)\n }\n\n changeSetTopVisible = flag => {\n this.setState({\n setTopVisible: flag\n })\n }\n\n onCancel = () => {\n let {oriAllSelectedTarget} = this.props\n\n this.props.updateCurShowSelectedTarget(oriAllSelectedTarget)\n this.props.onReWriteData(oriAllSelectedTarget)\n }\n\n render() {\n let {\n search,\n curActiveName,\n // previewColumns,\n // cmdStr,\n reRunVisible, // 重跑弹窗\n regularRerunVisible, // 定时重跑弹窗\n disTestTableDataVisible,\n // disTestTableText,\n isLoading,\n shouldVerify,\n jsonData,\n } = this.state\n\n console.log(\"TabPage======search\", search)\n\n let {\n curClickTreeValue,\n currentData,\n pageApiTargets,\n // previewData,\n cfgData,\n } = this.props\n\n let targetApiTest = []\n\n if (cfgData.hasOwnProperty(\"targetApiTest\")) {\n targetApiTest = cfgData.targetApiTest.map(i => {\n return {\n id: i.value,\n text: i.name\n }\n })\n }\n\n // console.log(\"--------cfgData\", cfgData)\n\n return (\n <>\n this.setState({\n curActiveName: tab.props.name,\n search: {form_data: \"\", env: \"test\"}\n })}\n >\n \n \n \n \n
\n
\n !!value ? true : '此处必填'}\n onChange={val => this.setState({\n search: Object.assign({}, search, {\n form_data: val\n })\n })}\n />\n
\n
\n
\n this.setState({\n search: Object.assign({}, search, {\n env: val\n })\n })}\n />\n
\n
\n \n
\n
\n
\n {\n disTestTableDataVisible &&\n \n
\n \n
\n
\n }\n
\n
\n
\n
\n\n {/* 重跑弹窗 */}\n \n\n {/* 定时重跑弹窗 */}\n \n \n )\n }\n}\n\nconst mapState = state => ({\n pageApiTargets: state.api.pageApiTargets,\n previewData: state.api.previewData,\n curClickTreeValue: state.api.curClickTreeValue,\n})\n\nconst mapDispatch = dispatch => ({\n updatePageApiTargets: dispatch.api.updatePageApiTargets,\n updatePreviewData: dispatch.api.updatePreviewData,\n updateCurClickTreeValue: dispatch.api.updateCurClickTreeValue,\n})\n\nexport default withRouter(connect(mapState, mapDispatch)(TabPage))\n","import React from 'react'\nimport { connect } from 'react-redux'\nimport SdwMessage from '@common/Message'\nimport SdwBreadCrumbs from '@common/BreadCrumbs'\n\nimport TagTree from './TagTree'\nimport TabPage from './TabPage'\n\nimport './style/index.css'\nimport { pageAppTables, pageAppTablesManage } from '@api/api'\nimport { getTopicBusiness } from '@services/Derived'\nimport { hasPriv } from '@components/FrontendAuth/AuthMap'\nimport { getPublicCfg } from '@api/atom'\n\nclass ApiDetail extends React.Component {\n\n state = {\n previewDataMsg: '',\n currentData: {},\n topicData: [],\n runCycleData: [],\n cfgData:{},\n }\n\n componentDidMount() {\n this.initData()\n this.getPublicCfg()\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n }\n\n initData = () => {\n this.props.updatePageApiTargets([])\n this.props.updateCurClickTreeValue({})\n //console.log(\"ApiDetail---index=============\", this.props.pageApiTargets)\n getTopicBusiness().then(res => {\n let topicData = res && res.data || {}\n if (topicData && topicData.code === 0 && Array.isArray(topicData.data)) {\n this.setState({\n topicData: topicData.data\n })\n }\n }, () => SdwMessage.error(\"接口异常\"))\n let id = this.props.match.params && this.props.match.params.id || ''\n if (!!id) {\n // DO search\n let params = {\n limit: 10,\n page: 1,\n search: {\n id: {\n value: id,\n operator: '='\n }\n },\n }\n if (hasPriv('pageAppTables')) {\n pageAppTables(params).then(res => {\n let jsonData = res && res.data || {}\n if (jsonData && jsonData.code === 0 && jsonData.data) {\n if (!jsonData.data.items || jsonData.data.items.length == 0) {\n SdwMessage.error(\"异常的ID\")\n return\n }\n //this.props.updateCurrentData(jsonData.data.items[0])\n this.setState({\n currentData: jsonData.data.items[0]\n })\n }\n }, () => SdwMessage.error(\"接口异常\"))\n return\n }\n if (hasPriv('pageAppTablesManage')) {\n pageAppTablesManage(params).then(res => {\n let jsonData = res && res.data || {}\n if (jsonData && jsonData.code === 0 && jsonData.data) {\n if (!jsonData.data.items || jsonData.data.items.length == 0) {\n SdwMessage.error(\"异常的ID\")\n return\n }\n //this.props.updateCurrentData(jsonData.data.items[0])\n this.setState({\n currentData: jsonData.data.items[0]\n })\n }\n }, () => SdwMessage.error(\"接口异常\"))\n return\n return\n }\n SdwMessage.error(\"暂无权限\")\n }\n }\n getPublicCfg = () => {\n getPublicCfg().then(res => {\n if (res.data.code === 0 && res.data.data) {\n let cfgData = {}\n for (let i in res.data.data) {\n cfgData[i] = res.data.data[i]\n }\n\n this.setState({ cfgData: cfgData })\n }\n }, () => SdwMessage.error(\"接口异常\"))\n }\n render() {\n let {\n currentData,\n topicData,\n cfgData,\n } = this.state\n\n // console.log(\"ApiDetail==============currentData\", currentData)\n // console.log(\"ApiDetail==============topicData\", topicData)\n\n let curTopicData = topicData.map(i => {\n return {\n id: i.value,\n text: i.label,\n children:i.children,\n }\n })\n // console.log(\"================topicData\",topicData)\n\n return (\n
\n \n\n \n
\n {\n currentData && \n }\n
\n\n {/*
*/}\n {/* */}\n {/*
*/}\n\n
\n {currentData && }\n
\n
\n \n )\n }\n}\n\nconst mapState = state => ({\n pageApiTargets: state.api.pageApiTargets,\n previewData: state.api.previewData,\n curClickTreeValue: state.api.curClickTreeValue,\n})\n\nconst mapDispatch = dispatch => ({\n updatePageApiTargets: dispatch.api.updatePageApiTargets,\n updatePreviewData: dispatch.api.updatePreviewData,\n updateCurClickTreeValue: dispatch.api.updateCurClickTreeValue,\n})\n\nexport default connect(mapState, mapDispatch)(ApiDetail)\n","import ApiDetail from './ApiDetail/index'\n\nexport default ApiDetail\n","import React from 'react'\nimport _ from 'lodash'\nimport { connect } from 'react-redux'\nimport SdwTree from '@common/Tree'\nimport { getAllTopicTarget } from '@services/application'\nimport SdwMessage from '@common/Message'\n\nimport './style/index.css'\n\nclass TagTree extends React.PureComponent {\n\n state = {\n allTargetData: [],\n checkedTargetIDs: [],\n treeOptions: {\n children: 'children',\n label: 'name'\n },\n }\n\n componentDidMount () {\n getAllTopicTarget().then(res => {\n let targetData = res.data.data || []\n this.setState({\n allTargetData: targetData\n })\n }, () => SdwMessage.error(\"接口异常\"))\n }\n\n componentDidUpdate (prevProps, prevState, snapshot) {\n\n // 总的指标有所更改,界面需要标记出已编辑的指标\n if (\n prevProps.allSelectedIndicator.length !== this.props.allSelectedIndicator.length ||\n _.differenceWith(prevProps.allSelectedIndicator, this.props.allSelectedIndicator, _.isEqual).length ||\n prevState.allTargetData.length !== this.state.allTargetData.length ||\n _.differenceWith(prevState.allTargetData, this.state.allTargetData, _.isEqual).length\n ) {\n this.handleRenderTree()\n }\n }\n\n handleRenderTree = () => {\n let { allSelectedIndicator } = this.props\n let { allTargetData } = this.state\n let checkedTargetIDs = allSelectedIndicator.reduce((prev, i) => {\n prev = prev.concat(Number(i.target_id))\n return prev\n }, [])\n\n checkedTargetIDs = Array.from(new Set(checkedTargetIDs))\n\n this.setState({\n checkedTargetIDs: checkedTargetIDs\n })\n\n if (!checkedTargetIDs.length) return\n\n let curAllTargetData = this.addTreeCustomClass(allTargetData, checkedTargetIDs)\n\n this.setState({\n allTargetData: curAllTargetData\n })\n }\n\n addTreeCustomClass = (list, ids) => {\n return list.map(item => {\n let curItem = _.cloneDeep(item)\n if (item.id && ids.includes(item.id)) {\n curItem = {\n ...curItem,\n customClass: 'sdw-application-detail__tree-is-edit'\n }\n } else {\n curItem = {\n ...curItem,\n customClass: ''\n }\n }\n\n if (item.children && item.children.length) {\n curItem.children = this.addTreeCustomClass(item.children, ids)\n }\n\n return curItem\n })\n }\n\n changeCurClickTreeValue = val => {\n console.log(\"========val\", val)\n let { curShowSelectedTarget, oriAllSelectedTarget } = this.props\n console.log(\"=======curShowSelectedTarget\", curShowSelectedTarget)\n console.log(\"=======oriAllSelectedTarget\", oriAllSelectedTarget)\n this.initClickTreeNode(val)\n //逻辑改变 ===== 不需要判断检查变更了\n // 点击其他节点,检查是否有变更,有变更弹出弹窗: 是否保存当前修改\n // let hasUpdateData =\n // curShowSelectedTarget.length !== oriAllSelectedTarget.length ||\n // !!_.differenceWith(curShowSelectedTarget, oriAllSelectedTarget, _.isEqual).length\n //\n // if (hasUpdateData) {\n // //this.props.changeComfirmVisible(true)\n // this.props.updateCurrentClickTreeNode(val)\n // } else {\n // this.initClickTreeNode(val)\n // }\n }\n\n initClickTreeNode = val => {\n this.props.updateCurClickTreeValue(val)\n\n // 点击叶子节点,查询对应的信息\n if (!val.children) {\n this.props.onGetTarget(val)\n } else {\n this.props.updateTargetTime([])\n this.props.updateTargetDimension([])\n }\n }\n\n render () {\n let {\n checkedTargetIDs,\n allTargetData,\n treeOptions\n } = this.state\n // 总的指标\n let targetTotal = allTargetData.reduce((prev, i) => {\n prev = prev.concat(i.children)\n return prev\n }, []).length\n\n return (\n <>\n
\n 指标选择\n {`${checkedTargetIDs.length}/${targetTotal}`}\n
\n\n
\n \n
\n \n )\n }\n}\n\nconst mapState = state => ({\n allSelectedIndicator: state.apiIndex.allSelectedIndicator,\n curShowSelectedTarget: state.apiIndex.curShowSelectedTarget,\n oriAllSelectedTarget: state.apiIndex.oriAllSelectedTarget,\n})\n\nconst mapDispatch = dispatch => ({\n changeComfirmVisible: dispatch.apiIndex.changeComfirmVisible,\n updateCurrentClickTreeNode: dispatch.apiIndex.updateCurrentClickTreeNode,\n updateCurClickTreeValue: dispatch.apiIndex.updateCurClickTreeValue,\n updateCurShowSelectedTarget : dispatch.apiIndex.updateCurShowSelectedTarget,\n updateTargetTime: dispatch.apiIndex.updateTargetTime,\n updateTargetDimension: dispatch.apiIndex.updateTargetDimension,\n})\n\nexport default connect(mapState, mapDispatch)(TagTree)\n","import React from 'react'\nimport _ from 'lodash'\nimport { connect } from 'react-redux'\nimport SdwCheckbox from '@common/Checkbox'\nimport SdwEmpty from '@common/Empty'\nimport SdwButton from '@common/Button'\nimport { checkTarget } from '@services/api'\nimport './style/index.css'\nimport SdwInput from '@common/Input'\nimport SdwMessage from '@common/Message'\n\nclass IndicatorAttributes extends React.PureComponent {\n\n state = {\n targetDimension:[],\n targetTime:[],\n filterStr:\"\",\n curShowSelectedTarget:[],\n }\n\n componentDidMount() {\n let {targetDimension, targetTime, enterIndexDetailEdit} = this.props\n if (enterIndexDetailEdit) {\n this.setState({\n targetDimension:[],\n targetTime:[]\n })\n } else {\n this.setState({\n targetDimension:targetDimension,\n targetTime:targetTime\n })\n }\n\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n if (\n prevProps.targetDimension != this.props.targetDimension ||\n prevProps.targetTime != this.props.targetTime||\n prevProps.filterStr != this.props.filterStr\n ) {\n let {targetDimension, targetTime, filterStr} = this.props\n this.setState({\n targetDimension:targetDimension,\n targetTime:targetTime,\n filterStr:filterStr\n })\n this.setState({\n targetDimension:targetDimension,\n targetTime:targetTime,\n filterStr:filterStr\n })\n }\n }\n\n updateSelectedTarget = (targetTime, targetDimension) => {\n //let { curShowSelectedTarget, curClickTreeValue, currentData, apiTemplateClickTreeValue } = this.props\n let { currentData, apiTemplateClickTreeValue, curClickTreeValue } = this.props\n let { curShowSelectedTarget} = this.state\n console.log(\"========indicatorA====currentData\", currentData)\n console.log(\"========indicatorA====apiTemplateClickTreeValue\", apiTemplateClickTreeValue)\n console.log(\"========indicatorA====curClickTreeValue\", curClickTreeValue)\n let checkedTime = targetTime.filter(i => i.isChecked)\n let checkedDimension = targetDimension.filter(i => i.isChecked)\n\n if (!checkedTime.length || !checkedDimension.length) {\n this.updateCurShowSelectedTarget([])\n return\n }\n\n let addTarget = []\n checkedTime.forEach(time => {\n checkedDimension.forEach(dimen => {\n let oriTarget = curShowSelectedTarget[curShowSelectedTarget.findIndex(i => i.time === time.id && i.dimension === dimen.id)] || {}\n addTarget.push({\n 'template_id': currentData.id,\n 'target_id': curClickTreeValue.id,\n 'dimension_value': dimen.name_en,\n 'time_cycle': time.id,\n 'is_edit_target': 0,\n //下面的参数是不需要的 不删除是因为担心后面需要又要加上\n 'name_cn': curClickTreeValue.target_name_cn,\n 'name': curClickTreeValue.target_name,\n 'target_type': oriTarget.target_type || 1, // 1:普通指标 2:top指标\n 'target_top': (oriTarget.top_count || typeof oriTarget.top_count === 'number') ? oriTarget.top_count : null\n })\n })\n })\n this.updateCurShowSelectedTarget(addTarget)\n }\n updateCurShowSelectedTarget = (curShowSelectedTarget) => {\n this.setState({\n curShowSelectedTarget:curShowSelectedTarget\n })\n }\n updateTargetDimension = (targetDimension) => {\n this.setState({\n targetDimension:targetDimension\n })\n }\n updateTargetTime = (targetTime) => {\n this.setState({\n targetTime:targetTime\n })\n }\n updateFilterStr = (filterStr) => {\n this.setState({\n filterStr:filterStr\n })\n }\n onclickSubmit = () => {\n\n let {curShowSelectedTarget, filterStr} = this.state\n let { currentData, curClickTreeValue} = this.props\n if (curShowSelectedTarget.length == 0) {\n SdwMessage.error(\"请先完善数据后再执行添加操作\")\n return\n }\n let params = {\n \"template_id\": currentData.id, //模块id\n \"target_id\": curClickTreeValue.id, //指标id\n \"time_cycles\": [], //时间周期,数组多选\n \"dimension_values\": [], //维度,数组多选\n \"filter_str\": filterStr //过滤\n }\n let curShowSelectedTargetClone = _.cloneDeep(curShowSelectedTarget)\n for (let i in curShowSelectedTargetClone) {\n params.time_cycles.push(curShowSelectedTargetClone[i].time_cycle)\n params.dimension_values.push(curShowSelectedTargetClone[i].dimension_value)\n curShowSelectedTargetClone[i].filter_str = filterStr\n }\n\n checkTarget({\n ...params\n })\n .then(res => {\n if (res && res.data && res.data.code === 0) {\n console.log(\"===========submit\", curShowSelectedTargetClone)\n this.props.updateCurShowSelectedTarget(curShowSelectedTargetClone)\n } else {\n SdwMessage.error(\"该模块已有相同条件数据\")\n }\n }, () => SdwMessage.error(\"接口异常\"))\n\n }\n render () {\n let {targetDimension, targetTime} = this.state\n let {filterStr} = this.state\n return (\n <>\n
指标属性
\n\n
\n
时间
\n
\n {\n (_.isArray(targetTime) && !!targetTime.length) ?\n targetTime.map((item, index) => (\n
\n {\n let curArr = _.cloneDeep(targetTime)\n curArr[index].isChecked = !curArr[index].isChecked\n this.updateTargetTime(curArr)\n this.updateSelectedTarget(curArr, targetDimension)\n }}\n />\n
\n )) :\n \n }\n
\n
\n\n
\n
维度
\n
\n {\n (_.isArray(targetDimension) && !!targetDimension.length) ?\n targetDimension.map((item, index) => (\n
\n {\n let curArr = _.cloneDeep(targetDimension)\n curArr[index].isChecked = !curArr[index].isChecked\n this.updateTargetDimension(curArr)\n this.updateSelectedTarget(targetTime, curArr)\n }}\n />\n
\n )) :\n \n }\n
\n
\n\n
\n
过滤
\n
\n this.updateFilterStr(val)}\n />\n
\n
\n\n
\n
\n \n
\n
\n \n )\n }\n}\n\nconst mapState = state => ({\n targetTime: state.apiIndex.targetTime,\n targetDimension: state.apiIndex.targetDimension,\n curShowSelectedTarget: state.apiIndex.curShowSelectedTarget,\n curClickTreeValue: state.apiIndex.curClickTreeValue,\n apiTemplateClickTreeValue: state.apiIndex.apiTemplateClickTreeValue,\n filterStr: state.apiIndex.filterStr,\n currentData: state.apiIndex.currentData,\n})\n\nconst mapDispatch = dispatch => ({\n updateTargetTime: dispatch.apiIndex.updateTargetTime,\n updateTargetDimension: dispatch.apiIndex.updateTargetDimension,\n updateCurShowSelectedTarget: dispatch.apiIndex.updateCurShowSelectedTarget,\n updateApiTemplateClickTreeValue: dispatch.apiIndex.updateApiTemplateClickTreeValue,\n updateFilterStr: dispatch.apiIndex.updateFilterStr,\n updateCurrentData: dispatch.apiIndex.updateCurrentData,\n})\n\nexport default connect(mapState, mapDispatch)(IndicatorAttributes)\n","import React from 'react'\nimport _ from 'lodash'\nimport SdwDialog from '@common/Dialog'\nimport SdwSelect from '@common/Select'\nimport SdwInput from '@common/Input'\nimport SdwMessage from '@common/Message'\nimport { TOP_MAP, TOP_MAP_TEXT } from './common'\nimport { getGroupTree, getPublicCfg} from '@services/api'\n\nimport './style/setTopWin.css'\n\nexport default class SetTopWim extends React.Component {\n state = {\n short_name: \"\", // 简称\n full_name: \"\", // 全称\n table_unit: \"\", // 单位\n sort_value: \"\", // 排序\n alarm_ids: \"\", // 预警值\n remark: \"\", // 备注\n agg_name: \"\", // 聚合算法\n agg_calculate: \"\", // 选”比率“时必填\n group_value_one_id:\"\",\n group_value_one_name:\"\",\n group_value_one_select:[],\n group_value_two_id:\"\",\n group_value_two_name:\"\",\n group_value_two_select:[],\n group_value_three_id:\"\",\n group_value_three_name:\"\",\n group_value_three_select:[],\n groupTree:[],\n cfgData: \"\",\n selectInputValue: '',\n inputValue: '',\n sholdCheckValidate: false,\n selectList: [\n {\n id: TOP_MAP.top,\n text: TOP_MAP_TEXT[TOP_MAP.top]\n }, {\n id: TOP_MAP.normal,\n text: TOP_MAP_TEXT[TOP_MAP.normal]\n }\n ]\n }\n\n componentDidMount() {\n this.getGroupTree()\n this.getPublicCfg()\n }\n\n componentDidUpdate (prevProps, prevState, snapshot) {\n let { curClickTargetData } = this.props\n console.log(\"SetTopWin___curClickTargetData====prevProps.curClickTargetData\", prevProps.curClickTargetData)\n console.log(\"SetTopWin___curClickTargetData====curClickTargetData\", curClickTargetData)\n if (!_.isEqual(prevProps.curClickTargetData, curClickTargetData)) {\n console.log(\"==========comp_update\", curClickTargetData)\n let group_value_one_select = this.state.group_value_one_select\n let params = {}\n if (curClickTargetData.hasOwnProperty(\"targets\")) {\n let targets = curClickTargetData.targets\n let group_value_name = targets.group_value_name.split(\";\")\n let group_value_id = targets.group_value.split(\";\")\n let two_group = []\n let three_group = []\n let group_value_two_id = group_value_name[0]?group_value_id[1]:\"\"\n let group_value_three_id = group_value_name[0]?group_value_id[2]:\"\"\n for (let i in group_value_one_select) {\n if (group_value_one_select[i].id == parseInt(group_value_id[0])) {\n let item = group_value_one_select[i]\n if (group_value_two_id != \"\") {\n for (let i in item.two_group) {\n two_group.push({id:i, text: item.two_group[i].name})\n }\n }\n if (group_value_three_id != \"\") {\n for (let i in item.three_group) {\n three_group.push({id:i, text: item.three_group[i].name})\n }\n }\n }\n }\n params = {\n short_name: targets.short_name, // 简称\n full_name: targets.full_name, // 全称\n table_unit: targets.table_unit, // 单位\n sort_value: targets.sort_value, // 排序\n alarm_ids: targets.alarm_ids, // 预警值\n remark: targets.remark, // 备注\n agg_name: targets.agg_name, // 聚合算法\n agg_calculate: targets.agg_calculate,\n group_value_one_id: parseInt(group_value_id[0]),\n group_value_one_name: group_value_name[0],\n group_value_two_id: group_value_two_id,\n group_value_two_name: group_value_name[0]?group_value_name[1]:\"\",\n group_value_three_id: group_value_three_id,\n group_value_three_name: group_value_name[0]?group_value_name[2]:\"\",\n group_value_two_select: two_group,\n group_value_three_select: three_group,\n }\n } else {\n params = {\n short_name: \"\", // 简称\n full_name: \"\", // 全称\n table_unit: \"\", // 单位\n sort_value: \"\", // 排序\n alarm_ids: \"\", // 预警值\n remark: \"\", // 备注\n agg_name: \"\", // 聚合算法\n agg_calculate: \"\",\n group_value_one_id: \"\",\n group_value_one_name: \"\",\n group_value_two_id: \"\",\n group_value_two_name: \"\",\n group_value_three_id: \"\",\n group_value_three_name: \"\",\n group_value_two_select: [],\n group_value_three_select: [],\n }\n }\n this.setState({\n sholdCheckValidate:false,\n ...params\n })\n }\n }\n getGroupTree = () => {\n let params = {\n name :\"\"\n }\n getGroupTree(params).then(res => {\n let groupTree = res.data.data || []\n let group_value_one_select = groupTree.map(i => ({\n ...i,\n text: `${i.group_name}`\n }))\n this.setState({\n groupTree:groupTree,\n group_value_one_select: group_value_one_select\n })\n }, () => SdwMessage.error(\"接口异常\"))\n }\n\n getPublicCfg = () => {\n getPublicCfg().then(res => {\n if (res.data.code === 0 && res.data.data) {\n let cfgData = {}\n for (let i in res.data.data) {\n cfgData[i] = res.data.data[i]\n }\n this.setState({ cfgData: cfgData })\n }\n }, () => SdwMessage.error(\"接口异常\"))\n }\n\n numberValidateFun = val => {\n if (!!val && Number(val) > 0 && String(val).indexOf('.') === -1) {\n return true\n }\n return '请输入一个有效整数'\n }\n\n topValidateFun = val => {\n console.log(\"======val\", val)\n if (!!val) {\n return true\n }\n return '指标类型不能为空'\n }\n\n handleSubmit = () => {\n let {\n short_name,\n full_name,\n table_unit,\n sort_value,\n alarm_ids,\n remark,\n agg_name,\n agg_calculate,\n group_value_one_name,\n group_value_one_id,\n group_value_two_name,\n group_value_two_id,\n group_value_three_name,\n group_value_three_id,\n } = this.state\n\n let {curClickTargetData, curClickTargetData_index} = this.props\n let group_value = group_value_one_name ? group_value_one_name+\";\"+(group_value_two_name || \"\" )+\";\"+(group_value_three_name || \"\") :\"\"\n let group_value_id = group_value_one_id ? group_value_one_id+\";\"+(group_value_two_id || \"\")+\";\"+(group_value_three_id || \"\") : \"\"\n let params = {\n \"target_id\": curClickTargetData.target_id, // 指标id\n \"dimension_value\": curClickTargetData.dimension_value, // 维度\n \"time_cycle\": curClickTargetData.time_cycle, // 时间周期\n \"filter_str\": curClickTargetData.filter_str, // 过滤条件\n \"short_name\": short_name, // 简称\n \"full_name\": full_name, // 全称\n \"table_unit\": table_unit, // 单位\n \"sort_value\": sort_value, // 排序\n \"group_value\": group_value_id, // 分组\n \"group_value_name\": group_value, // 分组\n \"alarm_ids\": alarm_ids, // 预警值\n \"remark\": remark, // 备注\n \"agg_name\": agg_name, // 聚合算法\n \"agg_calculate\": agg_calculate,\n }\n console.log(\"-=-----params\", params)\n\n let regex = /^\\[[^\\[\\]]*\\](\\/\\[[^\\[\\]]*\\]){0,4}$/\n if (agg_name == \"calculate\" && !regex.test(agg_calculate)) {\n this.setState({\n sholdCheckValidate: true\n })\n return\n }\n\n this.props.updateTargetValue(curClickTargetData_index, params)\n this.props.changeSetTopVisible(false)\n }\n\n changeOneGroup = (item) => {\n console.log(\"setTopWin======i\", item)\n let two_group = []\n for (let i in item.two_group) {\n two_group.push({id:i, text: item.two_group[i].name})\n }\n let three_group = []\n for (let i in item.three_group) {\n three_group.push({id:i, text: item.three_group[i].name})\n }\n\n this.setState({\n group_value_one_id: item.id,\n group_value_one_name: item.group_name,\n group_value_two_select: two_group,\n group_value_two_id:\"\",\n group_value_three_select: three_group,\n group_value_three_id:\"\"\n })\n }\n\n render () {\n let {\n group_value_one_select,\n group_value_two_select,\n group_value_three_select,\n cfgData,\n sholdCheckValidate,\n } = this.state\n\n let {\n setTopVisible,\n changeSetTopVisible\n } = this.props\n\n let regex = /^\\[[^\\[\\]]*\\](\\/\\[[^\\[\\]]*\\]){0,4}$/\n\n console.log(\"----------\", group_value_one_select)\n console.log(\"----------\", group_value_two_select)\n console.log(\"----------\", group_value_three_select)\n\n return (\n changeSetTopVisible(false)}\n onSureClick={this.handleSubmit}\n width={650}\n height={650}\n >\n
\n 简称\n this.setState({short_name: val})}\n />\n
\n
\n 全称\n this.setState({full_name: val})}\n />\n
\n
\n 单位\n this.setState({table_unit: val})}\n />\n
\n
\n 排序\n this.setState({sort_value: val})}\n />\n
\n
\n 指标分组\n {\n this.changeOneGroup(item)\n }}\n />\n \n this.setState({\n group_value_two_id: item.id,\n group_value_two_name: item.text,\n })}\n />\n \n this.setState({\n group_value_three_id: item.id,\n group_value_three_name: item.text,\n })}\n />\n
\n
\n 关联预警\n this.setState({alarm_ids: val})}\n />\n
\n
\n 备注\n this.setState({remark: val})}\n />\n
\n
\n 聚合算法\n {\n return {id: el.value, text: el.name}\n }) : []}\n value={this.state.agg_name}\n onChange={val => this.setState({\n agg_name: val,\n agg_calculate: \"\"\n })}\n />\n \n regex.test(value) ? true : '格式错误,请重新填写'}\n onChange={val => this.setState({agg_calculate: val})}\n />\n
\n \n )\n }\n}\n","// @file 已选指标,前端分页\nimport { useState, useMemo } from 'react'\nimport _ from 'lodash'\nimport Table from '@common/Table'\nimport Pagenation from '@common/Pagenation'\n\nexport default function SelectedAttributes(props) {\n const {\n columns,\n dataSource,\n isDisplayPage\n } = props\n\n const [currentPage, setCurrentPage] = useState(1)\n const [pageCount, setPageCount] = useState(30)\n\n const curDataSource = useMemo(() => {\n if (!_.isArray(dataSource) || !dataSource.length) return []\n const start = (currentPage - 1) * pageCount\n const end = currentPage * pageCount\n return dataSource.slice(start, end)\n }, [currentPage, pageCount, dataSource])\n\n const Total = _.isArray(dataSource) ? dataSource.length : 0\n\n return (\n
\n \n\n {isDisplayPage&& setCurrentPage(val) }\n pageCountChange={ val => setPageCount(val) }\n />}\n
\n )\n}\n","// @file 已选指标,前端分页\nimport {useState, useMemo} from 'react'\nimport _ from 'lodash'\nimport Table from '@common/Table'\nimport Pagenation from '@common/Pagenation'\nimport Select from \"@common/Select\"\nimport Input from \"@common/Input\"\nimport '../ApiDetail/style/selectedAttributes.css'\n\nexport default function SelectedAttributesTwo(props) {\n\n const {\n columns,\n dataSource,\n isDisplayPage\n } = props\n\n const [currentPage, setCurrentPage] = useState(1)\n const [pageCount, setPageCount] = useState(10)\n const [searchValue, setSearchValue] = useState({field: \"a.id\", value: \"\"})\n\n const curDataSource = useMemo(() => {\n if (!_.isArray(dataSource) || !dataSource.length) return []\n const start = (currentPage - 1) * pageCount\n const end = currentPage * pageCount\n return dataSource.slice(start, end)\n }, [currentPage, pageCount, dataSource])\n\n const Total = _.isArray(dataSource) ? dataSource.length : 0\n\n return (\n
\n
\n
\n {\n setSearchValue(_.assign({}, searchValue, {field: i, value: \"\"}))\n props.setSearch(i, \"\")\n }}\n />\n {\n setSearchValue(_.assign({}, searchValue, {value: val}))\n props.setSearch(searchValue.field, val)\n }}\n />\n
\n
\n\n \n\n {isDisplayPage && setCurrentPage(val)}\n pageCountChange={val => setPageCount(val)}\n />}\n
\n )\n}\n","import React from 'react'\nimport _ from 'lodash'\nimport SdwDialog from '@common/Dialog'\nimport SdwSelect from '@common/Select'\nimport SdwInput from '@common/Input'\nimport SdwMessage from '@common/Message'\nimport { TOP_MAP, TOP_MAP_TEXT } from './common'\nimport { getGroupTree, saveApiTargets, getPublicCfg} from '@services/api'\n\nimport './style/setTopWin.css'\n\nexport default class EditCurrentWin extends React.Component {\n\n state = {\n params: {\n short_name: \"\", // 简称\n full_name: \"\", // 全称\n table_unit: \"\", // 单位\n sort_value: \"\", // 排序\n alarm_ids: \"\", // 预警值\n remark: \"\", // 备注\n agg_name: \"\", // 聚合算法\n agg_calculate: \"\", // 选”比率“时必填\n },\n group_value_one_id: \"\",\n group_value_one_name: \"\",\n group_value_one_select: [],\n group_value_two_id: \"\",\n group_value_two_name: \"\",\n group_value_two_select: [],\n group_value_three_id: \"\",\n group_value_three_name: \"\",\n group_value_three_select: [],\n groupTree: [],\n cfgData: \"\",\n selectInputValue: \"\",\n inputValue: \"\",\n sholdCheckValidate: false,\n selectList: [\n {\n id: TOP_MAP.top,\n text: TOP_MAP_TEXT[TOP_MAP.top]\n }, {\n id: TOP_MAP.normal,\n text: TOP_MAP_TEXT[TOP_MAP.normal]\n }\n ]\n }\n\n componentDidMount() {\n this.iniData()\n this.getGroupTree()\n this.getPublicCfg()\n }\n\n iniData = () => {\n let targets = this.props.curClickTargetData\n let params = {\n short_name: targets.short_name, // 简称\n full_name: targets.full_name, // 全称\n table_unit: targets.table_unit, // 单位\n sort_value: targets.sort_value, // 排序\n alarm_ids: targets.alarm_ids, // 预警值\n remark: targets.remark, // 备注\n agg_name: targets.agg_name, // 聚合算法\n agg_calculate: targets.agg_calculate,\n }\n this.setState({\n params: params,\n sholdCheckValidate: false\n })\n }\n\n getGroupTree = () => {\n let params = {\n name :\"\"\n }\n let curClickTargetData = this.props.curClickTargetData\n\n let group_value_name = curClickTargetData.group_value.split(\";\")\n let two_group = []\n let three_group = []\n let group_value_one_id = \"\"\n let group_value_two_id = \"\"\n let group_value_three_id = \"\"\n\n getGroupTree(params).then(res => {\n let groupTree = res.data.data || []\n let group_value_one_select = groupTree.map(item => {\n if (item.group_name == group_value_name[0]) {\n group_value_one_id = item.id\n for (let i in item.two_group) {\n if (item.two_group[i].name == group_value_name[1]) {\n group_value_two_id = i\n two_group.push({id:i, text: item.two_group[i].name})\n }\n }\n for (let i in item.three_group) {\n if (item.three_group[i].name == group_value_name[2]) {\n group_value_three_id = i\n three_group.push({id:i, text: item.three_group[i].name})\n }\n }\n }\n return {\n ...item,\n text: `${item.group_name}`\n }\n })\n let group = {\n group_value_one_id: parseInt(group_value_one_id),\n group_value_one_name: group_value_name[0],\n group_value_two_id: group_value_two_id,\n group_value_two_name: group_value_name[0]?group_value_name[1]:\"\",\n group_value_three_id: group_value_three_id,\n group_value_three_name: group_value_name[0]?group_value_name[2]:\"\",\n group_value_two_select: two_group,\n group_value_three_select: three_group,\n groupTree:groupTree,\n group_value_one_select: group_value_one_select\n }\n this.setState({\n ...group\n })\n }, () => SdwMessage.error(\"接口异常\"))\n }\n\n getPublicCfg = () => {\n getPublicCfg().then(res => {\n if (res.data.code === 0 && res.data.data) {\n let cfgData = {}\n for (let i in res.data.data) {\n cfgData[i] = res.data.data[i]\n }\n this.setState({ cfgData: cfgData })\n }\n }, () => SdwMessage.error(\"接口异常\"))\n }\n\n numberValidateFun = val => {\n if (!!val && Number(val) > 0 && String(val).indexOf('.') === -1) {\n return true\n }\n return '请输入一个有效整数'\n }\n\n topValidateFun = val => {\n if (!!val) {\n return true\n }\n return '指标类型不能为空'\n }\n\n handleSubmit = () => {\n let {\n params,\n group_value_one_id,\n group_value_one_name,\n group_value_two_id,\n group_value_two_name,\n group_value_three_id,\n group_value_three_name\n } = this.state\n\n let {curClickTargetData, currentData} = this.props\n let group_value = group_value_one_name ? group_value_one_name+\";\"+(group_value_two_name || \"\" )+\";\"+(group_value_three_name || \"\") :\"\"\n let group_value_id = group_value_one_id ? group_value_one_id+\";\"+(group_value_two_id || \"\")+\";\"+(group_value_three_id || \"\") : \"\"\n\n let postParams = {\n api_id: currentData.api_id,\n template_id: currentData.id,\n targets: [{\n \"id\": curClickTargetData.id,\n \"target_id\": curClickTargetData.target_id, // 指标id\n \"dimension_value\": curClickTargetData.dimension_value, // 维度\n \"time_cycle\": curClickTargetData.time_cycle, // 时间周期\n \"filter_str\": curClickTargetData.filter_str, // 过滤条件\n \"short_name\": params.short_name, // 简称\n \"full_name\": params.full_name, // 全称\n \"table_unit\": params.table_unit, // 单位\n \"sort_value\": params.sort_value, // 排序\n \"alarm_ids\": params.alarm_ids, // 预警值\n \"group_value\": group_value_id, // 分组\n \"remark\": params.remark, // 备注\n \"agg_name\": params.agg_name, // 聚合算法\n \"agg_calculate\": params.agg_calculate,\n }]\n }\n\n let regex = /^\\[[^\\[\\]]*\\](\\/\\[[^\\[\\]]*\\]){0,4}$/\n if (params.agg_name == \"calculate\" && !regex.test(params.agg_calculate)) {\n this.setState({\n sholdCheckValidate: true\n })\n return\n }\n\n saveApiTargets({\n ...postParams\n }).then(res => {\n if (res && res.data && res.data.code === 0) {\n this.props.iniAllSelectedIndicator()\n this.props.changeSetTopVisible(false)\n } else {\n SdwMessage.error(\"参数异常\")\n }\n }, () => SdwMessage.error(\"接口异常\"))\n }\n\n changeOneGroup = (item) => {\n let two_group = []\n for (let i in item.two_group) {\n two_group.push({id:i, text: item.two_group[i].name})\n }\n let three_group = []\n for (let i in item.three_group) {\n three_group.push({id:i, text: item.three_group[i].name})\n }\n\n this.setState({\n group_value_one_id: item.id,\n group_value_one_name: item.group_name,\n group_value_two_select: two_group,\n group_value_two_id:\"\",\n group_value_three_select: three_group,\n group_value_three_id:\"\"\n })\n }\n\n setParamsData = (type, val) => {\n let {params} = this.state\n let obj = {}\n obj[type] = val\n let paramsClone = Object.assign({}, params, obj)\n this.setState({\n params: paramsClone\n })\n }\n\n render () {\n\n let {\n params,\n group_value_one_id,\n group_value_two_id,\n group_value_three_id,\n group_value_one_select,\n group_value_two_select,\n group_value_three_select,\n cfgData,\n sholdCheckValidate\n } = this.state\n\n let {\n setTopVisible,\n changeSetTopVisible\n } = this.props\n\n let regex = /^\\[[^\\[\\]]*\\](\\/\\[[^\\[\\]]*\\]){0,4}$/\n\n return (\n changeSetTopVisible(false)}\n onSureClick={this.handleSubmit}\n width={650}\n height={650}\n >\n
\n 简称\n this.setParamsData('short_name', val)}\n />\n
\n
\n 全称\n this.setParamsData('full_name', val)}\n />\n
\n
\n 单位\n this.setParamsData('table_unit', val)}\n />\n
\n
\n 排序\n this.setParamsData('sort_value', val)}\n />\n
\n
\n 指标分组\n {\n this.changeOneGroup(item)\n }}\n />\n \n this.setState({\n group_value_two_id: item.id,\n group_value_two_name: item.text,\n })}\n />\n \n this.setState({\n group_value_three_id: item.id,\n group_value_three_name: item.text,\n })}\n />\n
\n
\n 关联预警\n this.setParamsData('alarm_ids', val)}\n />\n
\n
\n 备注\n this.setParamsData('remark', val)}\n />\n
\n
\n 聚合算法\n {\n return {id: el.value, text: el.name}\n }) : []}\n value={params.agg_name}\n onChange={val => {\n this.setState({\n params: Object.assign({}, params, {\n agg_name: val,\n agg_calculate: \"\"\n })\n })\n }}\n />\n \n regex.test(value) ? true : '格式错误,请重新填写'}\n onChange={val => this.setParamsData('agg_calculate', val)}\n />\n
\n \n )\n }\n}\n","import React from 'react'\nimport _ from 'lodash'\nimport {connect} from 'react-redux'\nimport {Tabs} from 'element-react'\nimport {pageApiTargets, saveApiTargets, deleteApiTargets} from '@services/api'\nimport SdwMessage from '@common/Message'\nimport SetTopWin from '../SetTopWin'\nimport SelectedAttributes from './SelectedAttributes'\nimport SelectedAttributesTwo from './SelectedAttributesTwo'\nimport SdwDialog from '@common/Dialog'\nimport {hasPriv} from '@components/FrontendAuth/AuthMap'\nimport EditCurrentWin from '@pages/MachFactory/Api/EditCurrentWin'\n\nconst CUR_TARGET_INDEX = '1'\n\nclass TabPage extends React.PureComponent {\n\n state = {\n curActiveName: CUR_TARGET_INDEX,\n setTopVisible: false,\n delVisible: false,\n curClickTargetData: {}, // 当前编辑扩展字段点击的对象,设置指标 or 删除的项\n curClickTargetData_index: 0, // 当前编辑扩展字段点击的对象,设置指标 or 删除的数组index\n hasClickTargetData: {}, // 已选指标\n editCurrentWinVisible: false, // 已选指标编辑窗口\n curShowSelectedTarget: [], //当前指标\n allSelectedIndicator: [],\n hasSelectedIndicator: {},\n search: {},\n searchData: {\n page: 1,\n limit: 1000,\n },\n }\n\n componentDidMount() {\n let {enterIndexDetailEdit} = this.props\n if (enterIndexDetailEdit) {\n this.setState({\n curShowSelectedTarget: []\n })\n }\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n // 预览数据,时间搜索\n if (\n //prevProps.curClickTargetData != this.props.curClickTargetData ||\n prevProps.curShowSelectedTarget != this.props.curShowSelectedTarget\n ) {\n this.addCurShowSelectedTarget()\n }\n if (prevProps.currentData != this.props.currentData) {\n this.iniAllSelectedIndicator()\n }\n }\n\n iniAllSelectedIndicator = () => {\n let {currentData} = this.props\n let {search, searchData} = this.state\n let searchClone = _.cloneDeep(search)\n this.setState({\n search: searchClone\n })\n let params = {\n \"template_id\": currentData.id,\n \"search\": {},\n \"orSearch\": {},\n ...searchData\n }\n for (const key in searchClone) {\n if (key !== \"\") {\n const dval = searchClone[key]\n if (dval.value !== \"\") {\n params.search[key] = dval\n }\n }\n }\n pageApiTargets(params).then(res => {\n if (res && res.data && res.data.code === 0) {\n let targetData = res.data.data.items || []\n //this.props.updateAllSelectedIndicator(targetData)\n this.setState({\n allSelectedIndicator: targetData\n })\n }\n }, () => SdwMessage.error(\"接口异常\"))\n }\n\n setSearch = (type, value) => {\n let {search, searchData} = this.state\n let searchObj\n if (type === \"a.id\" || type === \"a.target_id\") {\n if (value) {\n searchObj = {operator: \"in\", value: value.split(\",\")}\n } else {\n searchObj = {operator: \"in\", value: \"\"}\n }\n } else {\n searchObj = {operator: \"like\", value: value}\n }\n this.setState({\n search: {\n [type]: _.assign({}, search[type], searchObj)\n },\n searchData: _.assign({}, searchData, {\n page: 1\n })\n }, () => {\n this.iniAllSelectedIndicator()\n })\n }\n\n //新增指标到当前指标里去\n addCurShowSelectedTarget = () => {\n let {curShowSelectedTarget} = this.state\n let curShowSelectedTargetClone = _.cloneDeep(curShowSelectedTarget)\n let curShowSelectedTargetProps = this.props.curShowSelectedTarget\n //如果新增的指标和当前指标中的template_id、target_id、time_cycle、dimension_value、filter_str\n if (curShowSelectedTargetProps.length > 0) {\n for (let index in curShowSelectedTargetProps) {\n if (curShowSelectedTarget.length == 0) {\n curShowSelectedTargetClone = curShowSelectedTargetProps\n } else {\n let findIndex = curShowSelectedTarget.findIndex(i => i.template_id === curShowSelectedTargetProps[index].template_id && i.target_id === curShowSelectedTargetProps[index].target_id && i.time_cycle === curShowSelectedTargetProps[index].time_cycle && i.dimension_value === curShowSelectedTargetProps[index].dimension_value && i.filter_str === curShowSelectedTargetProps[index].filter_str)\n if (findIndex == -1) {\n curShowSelectedTargetClone.push(curShowSelectedTargetProps[index])\n }\n }\n }\n this.setState({\n curShowSelectedTarget: curShowSelectedTargetClone\n })\n }\n }\n\n //当前指标-确定按钮\n onSubmit = () => {\n let {curShowSelectedTarget} = this.state\n console.log('curShowSelectedTarget=====', curShowSelectedTarget)\n let {currentData} = this.props\n if (curShowSelectedTarget.length == 0) {\n return\n }\n let params = {\n api_id: currentData.api_id,\n template_id: currentData.id,\n targets: []\n }\n for (let i in curShowSelectedTarget) {\n if (curShowSelectedTarget[i].hasOwnProperty(\"targets\")) {\n delete curShowSelectedTarget[i].targets.group_value_name\n params.targets.push({\n ...curShowSelectedTarget[i].targets\n })\n } else {\n params.targets.push({\n \"target_id\": curShowSelectedTarget[i].target_id, // 指标id\n \"dimension_value\": curShowSelectedTarget[i].dimension_value, // 维度\n \"time_cycle\": curShowSelectedTarget[i].time_cycle, // 时间周期\n \"filter_str\": curShowSelectedTarget[i].filter_str, // 过滤条件\n \"short_name\": \"\", // 简称\n \"full_name\": \"\", // 全称\n \"table_unit\": \"\", // 单位\n \"sort_value\": \"\", // 排序\n \"group_value\": \"\", // 分组\n \"alarm_ids\": \"\", // 预警值\n \"remark\": \"\",\n \"agg_name\": \"\", // 聚合算法\n \"agg_calculate\": \"\",\n })\n }\n }\n saveApiTargets({\n ...params\n }).then(res => {\n if (res && res.data && res.data.code === 0) {\n this.iniAllSelectedIndicator()\n this.setState({\n curShowSelectedTarget: []\n })\n } else {\n SdwMessage.error(\"参数异常\")\n }\n }, () => SdwMessage.error(\"接口异常\"))\n }\n\n //当前指标-编辑button\n handleSetButton = (data, index) => {\n this.setState({\n curClickTargetData: data,\n curClickTargetData_index: index\n }, () => {\n this.changeSetTopVisible(true)\n })\n }\n\n //当前指标-删除button\n handleDeleteButton = index => {\n let {curShowSelectedTarget} = this.state\n let arr = _.cloneDeep(curShowSelectedTarget)\n arr.splice(index, 1)\n this.setState({\n curShowSelectedTarget: arr\n })\n }\n\n //当前指标-编辑button - 扩展字段修改字段\n updateTargetValue = (curClickTargetData_index, params) => {\n let {curShowSelectedTarget} = this.state\n let arr = _.cloneDeep(curShowSelectedTarget)\n arr[curClickTargetData_index].targets = params\n arr[curClickTargetData_index].is_edit_target = 1\n this.setState({\n curShowSelectedTarget: arr\n })\n }\n\n //已选指标-编辑button\n editHasTargetButton = (data) => {\n this.setState({\n hasClickTargetData: data,\n editCurrentWinVisible: true,\n })\n }\n\n //已选指标-删除button\n delHasTargetButton = () => {\n let hasSelectedIndicator = this.state.hasSelectedIndicator\n let params = {\n api_id: hasSelectedIndicator.api_id,\n template_id: hasSelectedIndicator.template_id,\n targets: [{\n \"id\": hasSelectedIndicator.id,\n \"is_delete\": 1,\n \"target_id\": hasSelectedIndicator.target_id, // 指标id\n \"dimension_value\": hasSelectedIndicator.dimension_value, // 维度\n \"time_cycle\": hasSelectedIndicator.time_cycle, // 时间周期\n \"filter_str\": hasSelectedIndicator.filter_str, // 过滤条件\n \"short_name\": hasSelectedIndicator.short_name, // 简称\n \"full_name\": hasSelectedIndicator.full_name, // 全称\n \"sort_value\": hasSelectedIndicator.sort_value, // 排序\n \"group_value\": hasSelectedIndicator.group_value, // 分组\n \"alarm_ids\": hasSelectedIndicator.alarm_ids // 预警值\n }]\n }\n deleteApiTargets({\n ...params\n })\n .then(res => {\n if (res && res.data && res.data.code === 0) {\n this.iniAllSelectedIndicator()\n this.changeDelVisible(false)\n } else {\n SdwMessage.error(\"参数异常\")\n }\n }, () => SdwMessage.error(\"接口异常\"))\n }\n\n changeDelVisible = flag => {\n this.setState({\n delVisible: flag\n })\n }\n\n changeSetTopVisible = flag => {\n this.setState({\n setTopVisible: flag\n })\n }\n\n getColumns = () => {\n return [\n {\n title: \"指标ID\",\n dataIndex: \"target_id\",\n width: 50\n },\n {\n title: \"中文名\",\n dataIndex: \"name_cn\",\n width: 100\n },\n {\n title: \"英文名\",\n showTip: true,\n dataIndex: \"name\",\n width: 100\n },\n {\n title: \"时间\",\n dataIndex: \"time_cycle\",\n width: 50\n },\n {\n title: \"维度\",\n dataIndex: \"dimension_value\",\n width: 100\n },\n {\n title: \"过滤\",\n width: 120,\n dataIndex: \"filter_str\",\n },\n {\n title: \"是否编辑\",\n width: 100,\n render: (data, record) => {\n return (\n <>\n {\n \n }\n {data.is_edit_target == 0 ? \"未编辑\" : \"已编辑\"}\n \n )\n }\n },\n {\n title: \"操作\",\n width: 80,\n fiexd: true,\n render: (data, index) => {\n return (\n <>\n this.handleSetButton(data, index)}\n >编辑\n this.handleDeleteButton(index)}\n >删除\n \n )\n },\n }\n ]\n }\n\n getColumnsTwo = () => {\n return [\n {\n title: \"字段ID\",\n dataIndex: \"id\",\n width: 50\n },\n {\n title: \"指标ID\",\n dataIndex: \"target_id\",\n width: 50\n },\n {\n title: \"中文名\",\n dataIndex: \"target_name_cn\",\n width: 100\n },\n {\n title: \"英文名\",\n showTip: true,\n dataIndex: \"target_name\",\n width: 100\n },\n {\n title: \"时间\",\n dataIndex: \"time_cycle\",\n width: 30\n },\n {\n title: \"维度\",\n dataIndex: \"dimension_value\",\n width: 100\n },\n {\n title: \"过滤\",\n width: 120,\n dataIndex: \"filter_str\",\n },\n {\n title: \"简称\",\n width: 120,\n dataIndex: \"short_name\",\n },\n {\n title: \"全称\",\n width: 120,\n dataIndex: \"full_name\",\n },\n {\n title: \"单位\",\n width: 120,\n dataIndex: \"table_unit\",\n },\n {\n title: \"排序\",\n width: 120,\n dataIndex: \"sort_value\",\n },\n {\n title: \"分组\",\n width: 120,\n dataIndex: \"group_value\",\n },\n {\n title: \"关联预警\",\n width: 120,\n dataIndex: \"alarm_ids\",\n },\n {\n title: \"备注\",\n width: 120,\n dataIndex: \"remark\",\n },\n {\n title: \"聚合方式\",\n width: 100,\n render: data => {\n let arr = {\n \"sum\": \"求和\",\n \"avg\": \"平均\",\n \"calculate\": \"比率\"\n }\n let msg = arr[data.agg_name]\n return {msg}\n }\n },\n {\n title: \"计算公式\",\n width: 150,\n dataIndex: \"agg_calculate\",\n },\n ...hasPriv('deleteApiTargets') ? [{\n title: \"操作\",\n width: 80,\n fiexd: true,\n render: (data, index) => {\n return (\n <>\n this.editHasTargetButton(data)}\n >编辑\n {\n {\n this.setState({\n hasSelectedIndicator: data\n })\n this.changeDelVisible(true)\n }}\n >删除\n }\n \n )\n },\n }] : [],\n ]\n }\n\n render() {\n\n let {\n curActiveName,\n setTopVisible,\n delVisible,\n curClickTargetData,\n curClickTargetData_index,\n curShowSelectedTarget,\n allSelectedIndicator,\n editCurrentWinVisible,\n hasClickTargetData,\n } = this.state\n\n let {\n oriAllSelectedTarget\n } = this.props\n\n let isButtomDisabled = curShowSelectedTarget.length !== oriAllSelectedTarget.length ||\n _.differenceWith(curShowSelectedTarget, oriAllSelectedTarget, _.isEqual).length\n\n return (\n <>\n
\n this.setState({curActiveName: tab.props.name})}>\n \n \n \n \n \n \n \n
\n\n\n {\n curActiveName === CUR_TARGET_INDEX &&\n
\n
\n 取消\n \n 确定\n \n
\n
\n }\n\n \n\n {\n editCurrentWinVisible &&\n this.setState({editCurrentWinVisible: flag})}\n />\n }\n\n this.changeDelVisible(false)}\n onSureClick={() => this.delHasTargetButton()}\n >\n 是否删除该指标?\n \n \n )\n }\n}\n\nconst mapState = state => ({\n //allSelectedIndicator: state.apiIndex.allSelectedIndicator,\n oriAllSelectedTarget: state.apiIndex.oriAllSelectedTarget,\n curShowSelectedTarget: state.apiIndex.curShowSelectedTarget,\n //currentData: state.apiIndex.currentData,\n})\n\nconst mapDispatch = dispatch => ({\n //updateAllSelectedIndicator: dispatch.apiIndex.updateAllSelectedIndicator,\n updateCurShowSelectedTarget: dispatch.apiIndex.updateCurShowSelectedTarget,\n updateApiTemplateClickTreeValue: dispatch.apiIndex.updateApiTemplateClickTreeValue,\n //updateCurrentData: dispatch.apiIndex.updateCurrentData,\n})\n\nexport default connect(mapState, mapDispatch)(TabPage)\n","import React from 'react'\nimport _ from 'lodash'\nimport { connect } from 'react-redux'\nimport SdwBreadCrumbs from '@common/BreadCrumbs'\nimport { getTargetCfgById } from '@services/application'\nimport { searchTarget } from '@services/application'\nimport { TOP_MAP } from '../common'\nimport SdwDialog from '@common/Dialog'\nimport SdwMessage from '@common/Message'\n\nimport TagTree from './TagTree'\nimport IndicatorAttributes from './IndicatorAttributes'\nimport TabPage from './TabPage'\n\nimport './style/index.css'\n\nclass indexDetail extends React.Component {\n\n state = {\n previewDataMsg: '',\n dialogVisible: false,\n setTopVisible: false,\n topicData: [],\n runCycleData: [],\n previewTableHeader: [], // 预览数据表头\n settingDialogVisible: false,\n currentData:{},\n enterIndexDetailEdit:true,\n }\n\n componentDidMount () {\n this.initData()\n }\n\n initData = async () => {\n // this.initDatePicker()\n\n let id = this.props.location.state && this.props.location.state.id || ''\n console.log(\"==========initData----indexDetail\", this.props.location.state)\n if (!!id) {\n let record = this.props.location.state\n this.props.updateApiTemplateClickTreeValue(record)\n this.props.updateCurrentData(record)\n this.setState({\n enterIndexDetailEdit:false,\n currentData:record\n })\n this.onSearchTarget()\n }\n }\n changeDialogVisible = flag => {\n this.setState({\n dialogVisible: flag\n })\n }\n\n changeSettingDialogVisible = flag => this.setState({ settingDialogVisible: flag })\n\n initClickTreeNode = val => {\n this.props.updateCurClickTreeValue(val)\n\n // 点击叶子节点,查询对应的信息\n if (!val.children) {\n this.onGetTarget(val)\n } else {\n this.props.updateTargetTime([])\n this.props.updateTargetDimension([])\n }\n }\n\n hanlderChangeTreeSubmit = async () => {\n await this.onSubmit()\n\n this.hanlderChangeTreeCancel()\n }\n\n hanlderChangeTreeCancel = () => {\n this.props.changeComfirmVisible(false)\n this.initClickTreeNode(this.props.currentClickTreeNode)\n }\n\n onGetTarget = record => {\n\n // TODO 请求当前指标下的原始数据\n this.onSearchTarget(record.id, true).then(() => {\n this.onGetTargetCfgById(record)\n }, () => SdwMessage.error(\"接口异常\"))\n }\n// isSingelTarget: 是否是单个指标查询\n onSearchTarget = (targetID = '', isSingelTarget = false) => {\n let params = {\n table_id: {\n value: this.props.currentData.id,\n operator: '='\n },\n ...!!targetID ? {\n target_id: {\n value: targetID,\n operator: '='\n }\n } : {}\n }\n return searchTarget({\n search: JSON.stringify(params)\n })\n .then(res => {\n let oriData = []\n if (res && res.data && res.data.code === 0) {\n let jsonData = _.isArray(res.data.data) ? res.data.data : []\n oriData = jsonData.map(i => {\n return Object.assign({}, i, {\n \"db_id\": i.id,\n \"target_id\": i.target_id,\n \"name_cn\": i.target_name_cn,\n \"name\": i.target_name_en,\n \"time\": i.time_cycle,\n \"dimension\": i.target_dim,\n \"target_type\": i.target_type,\n \"target_top\": i.top_count\n })\n })\n }\n\n if (isSingelTarget) {\n this.props.updateCurShowSelectedTarget(oriData)\n this.props.updateOriAllSelectedTarget(oriData)\n\n // 触发时间 + 维度的勾选\n this.setState({\n reWriteData: true\n })\n } else {\n //this.props.updateAllSelectedIndicator(oriData)\n }\n }, () => SdwMessage.error(\"接口异常\"))\n }\n onGetTargetCfgById = record => {\n getTargetCfgById({\n id: record.id\n })\n .then(res => {\n if (res && res.data && res.data.code === 0) {\n let jsonData = res.data.data || {}\n let time = jsonData.time_cycle || []\n let dimension = jsonData.dimension || []\n\n this.props.updateCurClickTreeValue(Object.assign({}, this.props.curClickTreeValue, jsonData))\n this.props.updateFilterStr(\"\")\n this.props.updateTargetTime(time.map(i => {\n return {\n ...i,\n isChecked: false\n }\n }))\n\n this.props.updateTargetDimension(dimension.map(i => {\n return {\n id: i.id,\n isChecked: false,\n name_en: i.en,\n name: `${i.cn || '-'}(${i.en || '-'})`\n }\n }))\n\n this.setState({\n reWriteData: true, // 还原时间 + 维度的勾选\n })\n }\n }, () => SdwMessage.error(\"接口异常\"))\n }\n\n reInitData = () => {\n let { curClickTreeValue } = this.props\n this.onSearchTarget(curClickTreeValue.id, true) // 不仅要更新单个指标的数据\n this.onSearchTarget() // 还要更新总表的数据---已选指标表二\n this.initData() // 更新当前数据\n }\n\n formatParams = list => {\n return list.map(i => {\n return {\n ...i.id ? {\n id: i.id\n } : {},\n table_id: i.table_id,\n target_id: i.target_id,\n target_name_en: i.name,\n target_name_cn: i.name_cn,\n time_cycle: i.time,\n target_dim: i.dimension,\n target_type: i.target_type,\n ...i.target_type === TOP_MAP.top ? {\n top_count: i.target_top\n } : {}\n }\n })\n }\n\n render () {\n\n let {\n enterIndexDetailEdit,\n currentData,\n } = this.state\n\n let {\n comfirmVisible,\n } = this.props\n\n return (\n
\n \n\n \n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n 是否保存对该指标的修改\n \n \n )\n }\n}\n\nconst mapState = state => ({\n curShowSelectedTarget: state.apiIndex.curShowSelectedTarget,\n oriAllSelectedTarget: state.apiIndex.oriAllSelectedTarget,\n comfirmVisible: state.apiIndex.comfirmVisible,\n currentClickTreeNode: state.apiIndex.currentClickTreeNode,\n curClickTreeValue: state.apiIndex.curClickTreeValue,\n targetTime: state.apiIndex.targetTime,\n targetDimension: state.apiIndex.targetDimension,\n apiTemplateClickTreeValue: state.apiIndex.apiTemplateClickTreeValue,\n filterStr: state.apiIndex.filterStr,\n currentData: state.apiIndex.currentData,\n indexDetailIsEdit: state.apiIndex.indexDetailIsEdit,\n})\n\nconst mapDispatch = dispatch => ({\n updateCurShowSelectedTarget: dispatch.apiIndex.updateCurShowSelectedTarget,\n updateOriAllSelectedTarget: dispatch.apiIndex.updateOriAllSelectedTarget,\n changeComfirmVisible: dispatch.apiIndex.changeComfirmVisible,\n updateCurClickTreeValue: dispatch.apiIndex.updateCurClickTreeValue,\n updateTargetTime: dispatch.apiIndex.updateTargetTime,\n updateTargetDimension: dispatch.apiIndex.updateTargetDimension,\n updateApiTemplateClickTreeValue: dispatch.apiIndex.updateApiTemplateClickTreeValue,\n updateFilterStr: dispatch.apiIndex.updateFilterStr,\n updateCurrentData: dispatch.apiIndex.updateCurrentData,\n updateIndexDetailIsEdit: dispatch.apiIndex.updateIndexDetailIsEdit,\n})\n\nexport default connect(mapState, mapDispatch)(indexDetail)\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAADUklEQVRYR9VXTUhUURT+zr13ihw1hIQ2bYLaqGlZFI2abipKoxYKQtHGVW1q1VKDtrVpWRBZUWTQn2NpVP70s6lFQYuMohZtkiAaNR3fvSfu+N44M775H4neZuDNO/d85zs/9zsEn6eXWZwFGETs938h72JnEplUW0p7GDO1jmJ1RQVEIQ4TbbY1Yi7mnJlSg0oG4H5wYII3M+leZtrL4LLiAJBDxO9Iy75He+hZKog4AI+i9jHepIV+aoANACxlxTJg02j9OAHIrsFmupuYjiUG3Oj3TTj9AI4BWACgios+bm0DkYLwJQDZ8KCJIh4TiwBc552veE1Em28MrrZvXfNlhZMnKMugF6hWJNvCTTThsZAEoOMNl0X/6CkANu8edXn6y/y5BDqGmtVgJgA/AATtMULgKzPCBSFgEBNHBWiHYYS8gBSjPdyiwrkwYBEMDodERyEAOm+zHOgivf+FPs3MF2wR2pr6vwD86xSsSBHml4KlVsxWBplaNbENUQgAWzzZHjuw0t8rCdb5ARAYV5An2Vl+uCGQZCywQrUx+goDG3MZ3XkCEPeHQ+Jw2iubyByc4CoNM8bgOgDajtxMdOUFQAiMQcsTRixnQBFIMxYUo9qBvroyDABRAn5nKQDBwNpskXtn5MNAMW1ou8LapyoqChAODTapodxGsf8hfoQkaoaMGmIV48jDFnUvFwCFMBCzIeA7CB/AmOGU9lSQ58LN9HYlAMScC0Hny6Oib6CNpv00oL8odQVJEXpgsf0IlyHkGcB0gxEksyjnWMCQwSqSmF4XFJeu1dOMB6QUgiSeKiVknWGUG9av3aHkTUf7a1jQqZGQvJjIjB8AT5DkWgOxoiPgc4UjG6YDqDWsX7oALDN2TDvMODrSou6k7gelYCBGP4EnK6pU3exPbHdEHIBNwTwJ9DwOqeutz1mNtlHS3ZJNlOZywbgM8CRF1BYRRKMLwDLoGOD4k2Z108+5rYNSyPKY5CbwR4qoelRiq1sDc0zoGWlSN9I5TwJQxGLiDh7+VFmlamd/YafDepwZ3SMt6lYm58kMJOwH+axmZKsbCBLo/XpH7JpSqHGkrhnerfo9YZrpLinZchqJwIy2Yt5bPtNtw/6DKOVtset5rs6t27+Ppq0/I6r3dwAAAABJRU5ErkJggg==\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAACcklEQVRYR+2XT2sTYRCHn9logwFNc+jBYtEG9ODBzyAI4tWDpzZSVBT8L3gvvQtqawXFSjHpyYNXEQQ/gwcPChulUg89pFFYSTQ7MrtZiGmabsLWFTGXsHnzzjz7m3nnnRE6P7PqMIeC6G+/J/agwizCnPiRSdlsW+XQDNnmyBcnMb/ASHO//3GZRvfLtQFUbKF49usRVGdRPamQSxJAwEPkFSJz7rN97yH0KQSyi1+cqR+mpa9VmQBMokQViGyKsEpGTrjL+Q/mWyKSyel6GXQa+AHsSvLtO2z9BHaDVKqVfMl8ByE4cGZ1Tza795MPY2BJSI/c2IRk/4uSydSKu0ccWG80vh38/Hzie7Bp/OJaLuvl1gnjHhdgGJEi214j542tPR73hgEIjAj6DpyXIYV/SpGjMeATAWgBGYEltzJ6wdwXpzeeKJwHgrU+0iQIIDx1y6PmlGJpY0mVczsFEFXFKMn+EgVSD8EOA5jsjgMvwLnTzvTbPpwGmlbaYyRhd+jMTOwktAKTEZF7bjl/K0y0+l1VvQl2oZCNAdDrMAwIAA/dyuiV9lFbVLi8jQJWaq2M27cpZZ+RjtI+IIDqortSuBoATNUeqIjB9FMgCs+jQi5/zfbVvPqCwqX2EY1K9raVMAzB4AABHKIL1XLhugFMlmrzqBiMHd8/A7AF+H+Af0eBMNN7X0bhWu/kHVwBVOerK4UbQTZP1e4jYpnd7xiGp6D3voEAzKcIzlvV1pvwIXNc8Y9FV+4WDUn7puy5r7M0b1sH4vR3ybVkfZrSfo3nMGtBKe5qSsMBIb22PP3BJLimUxzNNs8baQynbYoUxvNfGTutP8pddYcAAAAASUVORK5CYII=\"","import { useState, useEffect, useLayoutEffect, useMemo } from 'react'\nimport { connect } from 'react-redux'\nimport _ from 'lodash'\nimport Empty from '@common/Empty'\nimport Message from '@common/Message'\nimport FlowChart from '@common/FlowChart'\nimport img0 from './img/level0.png'\nimport img1 from './img/level1.png'\nimport img2 from './img/level2.png'\nimport img3 from './img/level3.png'\nimport { formatJsonParse } from '@utils/formatJson'\nimport { getDataKinship } from '@services/Derived'\nimport { LEVEL_TEXT_MAP } from '@pages/Market/Metadata/common'\nimport './index.css'\n\nconst typeMap = {\n 'dataset': 'dataset', // 元数据表\n 'atom': 'atom', // 原子指标\n '1': '1', // 基础型指标\n '2': '2', // 复合型指标\n '3': '3', // 代码型指标\n 'app': 'app' // 应用表\n}\n\nconst topMap = {\n [typeMap.dataset]: 1, // 元数据表\n [typeMap.atom]: 2, // 原子指标\n [typeMap['1']]: 3, // 基础型指标\n [typeMap['2']]: 4, // 复合型指标\n [typeMap['3']]: 3, // 代码型指标 -- 不与复合型指标 同时存在\n [typeMap.app]: 5 // 应用表\n}\n\nconst IMG_MAP = {\n [typeMap.dataset]: img0, // 元数据表\n [typeMap.atom]: img1, // 原子指标\n [typeMap['1']]: img2, // 基础型指标\n [typeMap['2']]: img2, // 复合型指标\n [typeMap['3']]: img2, // 代码型指标\n [typeMap.app]: img0 // 应用表\n}\n\nfunction BloodPage(props) {\n\n const [maxDeepth, setMaxDeepth] = useState(0) // 找出复合型指标最大深度(用于定位top)\n const [maxWidth, setMaxWidth] = useState(1) // 找出最大宽度(同一层级放最多的元素的数量)\n const [initRecord, setInitRecord] = useState([])\n const [initPathArr, setInitPathArr] = useState([])\n const [showDialog, setShowDialog] = useState(false)\n const [divClick, setDivClick] = useState(false) // 是否点击div\n const [position, setPosition] = useState({\n left: 0,\n top: 0\n })\n const [curRecord, setCurRecord] = useState({})\n const [kinshipData, setKinshipData] = useState([])\n const [curID, setCurID] = useState('')\n\n useEffect(() => {\n const id = _.get(props, 'match.params.id')\n if (!id) return\n setCurID(id)\n getDataKinship({\n target_id: id\n }).then(res => {\n const code = _.get(res, 'data.code')\n if (code === 0) {\n const data = _.get(res, 'data.data')\n if (!_.isArray(data)) return\n setKinshipData(data)\n } else {\n const msg = _.get(res, 'data.msg')\n Message.error(msg)\n }\n }).catch(err => Message.error('接口异常 '+ err))\n }, [props.baseInfo])\n\n useEffect(() => {\n if (!_.isArray(kinshipData)) return\n kinshipData.forEach(i => {\n if (i.sdepth && +i.sdepth > maxDeepth) {\n setMaxDeepth(Number(i.sdepth))\n }\n\n if (i.tdepth && +i.tdepth > maxDeepth) {\n setMaxDeepth(Number(i.tdepth))\n }\n })\n }, [kinshipData])\n\n useLayoutEffect(() => {\n if (!_.isArray(kinshipData) || !kinshipData.length) return\n let record = [], pathArr = []\n \n // 去重:避免接口有重复数据\n const curKinshipData = kinshipData.reduce((prev, item) => {\n if (!prev.every(i => i.sid === item.sid && i.tid === item.tid)) {\n prev.push(item)\n }\n return prev\n }, [kinshipData[0]])\n // console.log('----------------去重 curKinshipData: ', curKinshipData);\n\n let lengthMap = {\n 'dataset': [], // 元数据表\n 'atom': [], // 原子指标\n '1': [], // 基础型指标\n // '2': [], // 复合型指标 这里需要动态生成\n '3': [], // 代码型指标\n 'app': [] // 应用表\n }\n\n for (let i = 1; i <= maxDeepth; i++) {\n lengthMap[`2-${i}`] = [] // 复合型指标:根据深度分层:深度从1开始(深度为1标识基础型指标)\n }\n\n curKinshipData.forEach(i => {\n\n if (i.stype == typeMap['dataset'] && !lengthMap['dataset'].includes(i.sid)) {\n lengthMap['dataset'].push(i.sid)\n }\n \n switch (i.ttype) {\n case typeMap['atom']:\n if (!lengthMap['atom'].includes(i.tid)) {\n lengthMap['atom'].push(i.tid)\n }\n break;\n \n case typeMap['1']:\n if (!lengthMap['1'].includes(i.tid)) {\n lengthMap['1'].push(i.tid)\n }\n break;\n\n case typeMap['2']:\n if (_.isArray(lengthMap[`2-${i.tdepth}`]) && !lengthMap[`2-${i.tdepth}`].includes(i.tid)) {\n lengthMap[`2-${i.tdepth}`].push(i.tid)\n }\n break;\n\n case typeMap['3']:\n if (!lengthMap['3'].includes(i.tid)) {\n lengthMap['3'].push(i.tid)\n }\n break;\n\n case typeMap['app']:\n if (!lengthMap['app'].includes(i.tid)) {\n lengthMap['app'].push(i.tid)\n }\n break;\n \n default:\n break;\n }\n })\n\n const datasetLength = lengthMap[typeMap['dataset']].length + 1;\n const atomLength = lengthMap[typeMap['atom']].length + 1;\n const oneLength = lengthMap[typeMap['1']].length + lengthMap[typeMap['3']].length + 1; // type=1和type=3的在同一层\n // const twoLength = lengthMap[typeMap['2']].length || 1;\n const appLength = lengthMap[typeMap['app']].length + 1;\n\n // 找出type为2中数组最多的元素长度\n let twoIndex = 1\n let twoLength = 1\n while (lengthMap.hasOwnProperty(`2-${twoIndex}`) && _.isArray(lengthMap[`2-${twoIndex}`])) {\n const len = lengthMap[`2-${twoIndex}`].length + 1\n if (twoLength < len) twoLength = len\n twoIndex++\n }\n let maxWidth = Math.max(datasetLength, atomLength, oneLength, appLength, twoLength) - 1\n setMaxWidth(maxWidth)\n\n const maxNum = Math.max(datasetLength, atomLength, oneLength, appLength)\n\n // console.log('*****************maxDeepth: ', maxDeepth);\n // console.log('*****************lengthMap: ', lengthMap);\n // console.log('----------------maxNum: ', maxNum);\n let leftMap = { // 计算每隔节点的left \n 1: maxNum / datasetLength,\n 2: maxNum / atomLength,\n 3: maxNum / oneLength\n }\n\n // 应为复合型指标存在多个,需要动态去确定leftMap\n for (let i = 1; i <= maxDeepth; i++) {\n leftMap[3+i] = maxNum / (lengthMap[`2-${i}`].length + 1)\n }\n // 给应用表设置leftMap\n leftMap[3 + maxDeepth + 1] = maxNum / appLength\n\n // console.log('-=-==-=--=-=-=-=-=leftMap: ', leftMap);\n const oriLeftMap = _.cloneDeep(leftMap)\n // console.log('-=-==-=--=-=-=-=-=oriLeftMap: ', oriLeftMap);\n\n curKinshipData.forEach((item, index) => {\n let { sid, source, stitle, target, ttitle, tid } = item\n\n let hasSameSID = record.some(i => i.id === sid)\n let style = {\n width: 172,\n height: 60\n }\n\n // 创建div数组\n // sid:sid的存在,一定会渲染对应的节点\n if (!!sid && !hasSameSID) {\n const level = getLevel(item.stype, lengthMap, maxDeepth, item.sid) // 层级决定高度\n\n record.push({\n id: sid,\n textContent: getDiv(level, sid, item, stitle, source, leftMap, item.stype, item.sdetail),\n style: getStyle(style, level, leftMap)\n })\n \n leftMap[level] = leftMap[level] + oriLeftMap[level]\n }\n let hasSameTID = record.some(i => i.id === tid)\n // tid:tid的存在,一定会渲染对应的节点\n if (!!tid && !hasSameTID) {\n const level = getLevel(item.ttype, lengthMap, maxDeepth, item.tid) // 层级决定高度\n\n record.push({\n id: tid,\n textContent: getDiv(level, tid, item, ttitle, target, leftMap, item.ttype, item.tdetail),\n style: getStyle(style, level, leftMap)\n })\n leftMap[level] = leftMap[level] + oriLeftMap[level]\n }\n\n // 创建连线的数组\n if (!pathArr.some(i => i.beginID === sid && i.endID === tid)) {\n pathArr.push({\n beginID: sid,\n beginPosition: 'bottom',\n endID: tid,\n endPosition: 'top'\n })\n }\n \n })\n\n setInitRecord(record)\n setInitPathArr(pathArr)\n }, [kinshipData, maxDeepth])\n\n useEffect(() => {\n document.addEventListener('click', onCloseDialog)\n return () => {\n document.removeEventListener('click', onCloseDialog)\n }\n }, [])\n\n // 通过类型获取level,然后动态计算出高度top\n function getLevel(type, lengthMap, maxDeepth, id) {\n let level = Number(topMap[type])\n\n if (type == '2') {\n for (const key in lengthMap) {\n if (Object.hasOwnProperty.call(lengthMap, key)) {\n const arr = lengthMap[key];\n if (arr.includes(id) && Number(key.slice(2))) {\n level = Number(key.slice(2)) + 3\n }\n }\n }\n }\n\n if (type == 'app') {\n // 3:元数据表+原子指标+基础型 maxDeepth:复合型 1:应用表自己\n level = 3 + maxDeepth + 1\n }\n\n return level\n }\n\n // 关闭弹窗\n function onCloseDialog() {\n setDivClick(false)\n setShowDialog(false)\n }\n\n function onDivClick(e, left, top, record, text) {\n setDivClick(true)\n commonFunc(e, left, top, record, text)\n }\n\n function onMouseEnter(e, left, top, record, text) {\n setDivClick(false)\n commonFunc(e, left, top, record, text)\n }\n\n function commonFunc(e, left, top, record, text) {\n e.stopPropagation()\n setCurRecord(text == record.source ? _.assign({type: record.type}, record.sdetail) : _.assign({type: record.type}, record.tdetail))\n setPosition({\n left: (left + 184),\n top: top\n })\n setShowDialog(true)\n }\n\n // 根据level获取top值\n function getTop(level = 1) {\n return 120 * level - 80\n }\n\n function getLeftAndTop(type, leftMap) {\n if (!type) return\n const level = Number(type) // 层级\n const left = (leftMap[level] - 1) * getWrapWidth(maxWidth) + 330\n const top = getTop(level)\n\n return {\n left,\n top\n }\n }\n\n function getStyle(style, level, leftMap) {\n const { left, top } = getLeftAndTop(level, leftMap)\n\n return {\n ...style,\n left,\n top\n }\n }\n\n function getDiv(level, id, item, title, text, leftMap, type, detail) {\n const { left, top } = getLeftAndTop(level, leftMap)\n const isCurrentID = _.get(detail, 'id') == curID // 标识当前指标\n\n return (\n
onDivClick(e, left, top, _.assign({id, type}, item), text)}\n onMouseEnter={e => onMouseEnter(e, left, top, _.assign({id, type}, item), text)}\n onMouseLeave={() => setShowDialog(false)}\n >\n
\n \n {title}\n
\n {text}
\n \n )\n }\n \n const wrapWidth = useMemo(() => {\n return (maxWidth * getWrapWidth(maxWidth) + 600)\n }, [maxWidth])\n\n const flowHeight = useMemo(() => {\n return ((3 + maxDeepth + 1) * 120)\n }, [maxDeepth])\n\n // 计算公式\n const cal_expression = useMemo(() => {\n let ce = formatJsonParse(curRecord.cal_expression)\n if (_.isArray(ce)) {\n ce = ce.join('')\n }\n return ce\n }, [curRecord.cal_expression])\n\n const topicName = useMemo(() => {\n if (!curRecord.topic) return ''\n const record = props.topic.filter(i => i.id == curRecord.topic)[0]\n return _.get(record, 'topic_name') || ''\n }, [curRecord.topic])\n\n const serviceName = useMemo(() => {\n if (!curRecord.service) return ''\n const record = props.business.filter(i => i.id == curRecord.service)[0]\n return _.get(record, 'business_name') || ''\n }, [curRecord.service])\n\n return (\n
\n {\n kinshipData.length > 0 ?\n \n \n {\n (divClick || showDialog) &&\n e.stopPropagation()}\n >\n {\n // 表显示信息\n (curRecord.type == 'dataset' || curRecord.type == 'app') ?\n <>\n
\n 表名\n {\n !!curRecord.database_name ?\n { `${curRecord.database_name}.${curRecord.table_name}` || '-' } :\n { curRecord.table_name || '-' }\n }\n
\n
\n 中文名\n { curRecord.data_set_chinese || curRecord.table_name_cn || '-' }\n
\n {\n // 标识应用表\n curRecord.type == 'app' &&\n
\n 更新频率\n { curRecord.aaa || '-' }\n
\n }\n
\n 主题\n { topicName || '-' }\n
\n
\n 仓库分层\n { LEVEL_TEXT_MAP[curRecord.warehouse_level] || '-' }\n
\n :\n <>\n {/* 基础型,复合型,代码型 */}\n
\n 英文名\n { curRecord.target_name || '-' }\n
\n
\n 中文名\n { curRecord.target_name_cn || curRecord.target_name_ch || '-' }\n
\n
\n 指标id\n { curRecord.id || '-' }\n
\n {\n // 原子指标\n curRecord.type == typeMap.atom ?\n <>\n
\n 主题域/业务\n { `${topicName}/${serviceName}` || '-' }\n
\n
\n 时间字段\n { curRecord.time_field || '-' }\n
\n
\n 度量字段\n { curRecord.metric_field || '-' }\n
\n
\n 计算逻辑\n { curRecord.metric_type || '-' }\n
\n : \n <>\n { // 标基础型\n curRecord.target_type == 1 &&\n
\n 修饰词\n { curRecord.decoration || '-' }\n
\n }\n { // 复合型、代码型\n curRecord.target_type != 1 &&\n <>\n
\n 原子指标\n { curRecord.source_targets_cn || '-' }\n
\n
\n 计算公式\n { cal_expression || '-' }\n
\n \n }\n
\n 维度字段\n {\n (_.isArray(formatJsonParse(curRecord.store_dimension)) && formatJsonParse(curRecord.store_dimension).length > 0) ?\n
\n {\n formatJsonParse(curRecord.store_dimension).map(i => (\n {_.isArray(i.id) && i.id.join('#') || '-'}\n ))\n }\n
: '-'\n }\n
\n
\n 时间周期\n {\n (_.isArray(formatJsonParse(curRecord.time_schedule)) && formatJsonParse(curRecord.time_schedule).length > 0) ?\n
\n {\n return `${i.time_cycle}/${i.run_cycle}`\n }).join('|')\n }\n >{ formatJsonParse(curRecord.time_schedule).map(i => {\n return `${i.time_cycle}/${i.run_cycle}`\n }).join('|') }\n
: '-'\n }\n
\n
\n 衍生指标\n {\n _.isArray(curRecord.derives) && curRecord.derives.length > 0 ?\n
\n {\n curRecord.derives.map(i => (\n {`${i.target_name}(${i.id})`}\n ))\n }\n
: '-'\n }\n
\n \n }\n \n }\n \n
\n }\n :\n \n }\n \n )\n}\n\nconst mapStates = module => ({\n topic: module.topic.topic,\n business: module.topic.business\n})\n\nexport default connect(mapStates, null)(BloodPage)\n\n// 获取宽度\nfunction getWrapWidth(w) {\n return w > 3 ? 240 : 300\n}","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAEMUlEQVRYR+1XTWxbRRD+ZvfZVgJFdqKq/KQtQgKpyqGxOHEjJ9KUCHGIL61aShBWSjDkApcixyIXuLhYaSsjQikqHJIDgtI0FxRunJDTQ1QJJKBtCERV4oiEBttvd9A+e43/m0QFeuiTni37zc58szvzffMId7iYmaanp4UxGxwc1ETErZZs156aObOOIpGIqrWZmpqSC4B8NNvmmGdLoU23G1DNbFsBrwNgAo+NjZmbTbapizMPCZd7iHxhsOoBeC+BOjS4kxghA4AJWQFaYfAqQDdBcp65kNEOzceO9v9R67MyoToAJjuTSeriTJfjypPM6jADBwD47nRcNc8LBFwjkpddR52NHe1ftL4bAjAoTcbxuTlnz/VclFm/y/AyNGfOIGjvE95trlrwtjaMFYNh6sazJyBLJN5Z3h9IJ3p7XRuryon9c+LT2SSUfrMcuAjAOtvOJph12oLwvqU4PXKsb7QOgP0jnb7UXvDLWwDaS4u96r8LlwFifN325dXuaHTgto3pbWMVgIBcBuPBuxC03gVhw5dTe+5xAP/HEVQew8Qns0nwv1SEJE6PvNSgCCsBmDZ85Eb+VaXVeIs2bMagtmXr2lAKeeq3ff4Pm7ahrRhLFucufPOY5sIwQw+Ad0ZE8IhIXBJUODd8fODXlkRUWbLG0PL3e5Nf7npAOmHA6SHoMIC9ADqYuAO6SMUQyBLTKgBz32SIDODO/6nczNtDL6y30pWqrUye/yIYkO1vuWsqEYv15+LxOQf4VicSCdPH5csABCCzJTEKhTZdNBCjeDwugGdFItHrplIzASdI8Zz66/3REy+uWWf1POCXK0TiO6UwGhvqu/oPR6R9wNMIhX7SZnc8Gi1Js7Exv41sZ7NPCOB7RKPRgl2bmpw9KCWSzPoZX151tuQB1y9/Z2AXgJwAfaXAn5PizMgrh69vh5wmPrq8nyWFhaAjrHkAQICAdSevHm5NREUeaKsSHMIiWFwjwT8S6IYgyipXrRILbyuZdFA6skMzhxi8jzU9CdIHwOgq+bFCtdmQiiszO3NhdpK1frmkBeZszfY2k2LruFlbFkqiZgYXQUJ8/NrxvqHKeOWF5fNKzQRkULwBzaeY2RyFgeCCYcAIEESl1FZkaCXb1IcGwQHDm5hAtCGIx5fbNpKJSCTfUI7reOD8lcc10QizPgTCU2VnWy2EIugfiMQVLejM68ee+3lHPHD2s69DKi8PCkIYoB5m7iJCiJg6NXSwSANijYlXmM3gQYsAz2tGRvrV1ZNHns/umAfS6bRvaWlJ3ZM8UDue2yzv88B9HgB7k3AVDxDROgSNqzX9gRG5/5wHBPPE8IlDv2yJB+xrlG29VjzA0N48QBDZVjxgbIw029e9hlRcS3CVWl77bKvzQDFw45miah5oxa4WSHf3Ld7O6/nCwm5qNMzUxvobNkmVTrYb51YAAAAASUVORK5CYII=\"","// @file 指标相关常量文件\n\nexport const run_status_map = {\n 0: '等待运行',\n 1: '进行中',\n 2: '任务取消',\n 3: '任务成功',\n 4: '任务失败',\n 5: '进行中'\n}","import { useState, useEffect } from 'react'\nimport Table from '@common/Table'\nimport Pagenation from '@common/Pagenation'\nimport Message from '@common/Message'\nimport { getTargetLogs } from '@services/Derived'\nimport { run_status_map } from '@pages/commomContext/derived'\nimport _ from 'lodash'\n\nfunction getcolumns() {\n return [{\n title: \"任务id\",\n dataIndex: \"id\",\n width: 50\n }, {\n title: \"指标id\",\n dataIndex: \"oper_id\",\n width: 50\n }, {\n title: \"提交人\",\n dataIndex: \"create_user\",\n width: 70\n }, {\n title: \"提交时间\",\n dataIndex: \"create_time\",\n width: 100\n }, {\n title: \"完成时间\",\n dataIndex: \"finish_time\",\n width: 100\n }, {\n title: \"运行状态\",\n width: 50,\n render: data => {run_status_map[data.status] || '-'}\n }, {\n title: \"运行时长(s)\",\n dataIndex: \"cost_time\",\n width: 65\n }, {\n title: \"入库记录\",\n dataIndex: \"result_total\",\n width: 50\n }, {\n title: \"入库日志\",\n dataIndex: \"run_result\",\n width: 300\n }]\n}\n\nfunction LogPage(props) {\n\n const [curData, setCurData] = useState({})\n const [search, setSearch] = useState({\n limit: 10,\n page: 1\n })\n\n useEffect(() => {\n const curID = _.get(props, 'match.params.id')\n if (!curID) return\n getTargetLogs(_.assign({\n search: JSON.stringify({\n oper_id: {\n value: curID,\n operator: '='\n }\n })\n }, search)).then(res => {\n const code = _.get(res, 'data.code')\n if (code === 0) {\n const data = _.get(res, 'data.data')\n if (_.isEmpty(data)) return\n setCurData(data)\n } else {\n const msg = _.get(res, 'data.msg') || '数据请求失败!'\n Message.error(msg)\n }\n }).catch(err => Message.error('接口异常 ' + err))\n }, [search, props.baseInfo])\n\n return (\n
\n \n\n setSearch(r => _.assign({}, r, {page}))}\n pageCountChange={limit => setSearch(r => _.assign({}, r, {limit}))}\n />\n
\n )\n}\n\nexport default LogPage\n","// 指标类型\n\nexport const TYPE_MAP = {\n one: 1,\n two: 2,\n three: 3,\n four: 4\n}\n\nexport const TYPE_MAP_TEXT = {\n [TYPE_MAP.one]: '基础指标',\n [TYPE_MAP.two]: '复合指标',\n [TYPE_MAP.three]: '代码型指标',\n [TYPE_MAP.four]: '衍生指标'\n}\n","// 重跑设置弹窗\nimport { useState, useEffect, useMemo, useLayoutEffect } from \"react\"\nimport _ from 'lodash'\nimport Dialog from \"@common/Dialog\"\nimport Select from \"@common/Select\"\nimport Input from \"@common/Input\"\nimport Popover from \"@common/Popover\"\nimport Switch from \"@common/Switch\"\nimport Message from \"@common/Message\"\nimport { storeOrUpdateDepth } from '@services/application'\nimport './style/ReRunWin.css'\nimport { commonApi } from \"@utils/request\"\nimport { formatJsonParse } from \"@utils/formatJson\"\n\nexport default function ReRunWin(props) {\n const {\n record,\n cfgData,\n visible,\n onSureClick,\n setReRunVisible,\n } = props\n\n const [empty_drop, setEmpty_drop] = useState(0)\n // delay_expression:[{\"time_cycle\": \"1d\", \"delay_num\":\"1/days\"}, {\"time_cycle\": \"30d\", \"delay_num\":\"1/days\"}]\n const [delay_expression, setDelay_expression] = useState([{}])\n const [timeCycle, setTimeCycle] = useState([])\n\n // 找出是否有2个完全相同的设置:0标识没有完全相同设置,大于0标识有,返回对应的index,用于显示errtip\n const isSameIndex = useMemo(() => {\n let flag = []\n for (let i = 0; i < delay_expression.length; i++) {\n const prev = delay_expression[i];\n for (let j = i+1; j < delay_expression.length; j++) {\n const next = delay_expression[j];\n if (prev.time_cycle === next.time_cycle && prev.delay_num === next.delay_num) {\n flag.push(j)\n break\n }\n }\n }\n return flag\n }, [delay_expression])\n\n // 数据回显\n useLayoutEffect(() => {\n // console.log('---record: ', record);\n const {\n empty_drop = 0,\n delay_expression = '\"\"'\n } = record || {}\n\n let delayExpression = formatJsonParse(delay_expression)\n delayExpression = (_.isArray(delayExpression) && !!delayExpression.length) ? delayExpression.map(i => ({\n time_cycle: i.time_cycle,\n delay_num: i.delay_num.slice(0, -5) // 保存的是加了 /days 的,回显只需要前面的数字\n })) : [{}]\n console.log('数据回显: delayExpression: ', delayExpression);\n setDelay_expression(delayExpression)\n\n setEmpty_drop(empty_drop)\n }, [record])\n\n useEffect(() => {\n const arr = _.get(record, 'time_schedule') || []\n let timeCycle = (!!_.get(cfgData, 'timeCycle') && _.isArray(cfgData.timeCycle)) ? cfgData.timeCycle : []\n if (!_.isArray(arr) || !arr.length || !timeCycle.length) {\n setTimeCycle([])\n return\n }\n\n const selectedTimeCycleArr = arr.map(i => i.time_cycle)\n\n timeCycle = timeCycle.filter(j => selectedTimeCycleArr.includes(j.id)).map(i => ({\n id: i.id,\n text: i.name\n }))\n\n // console.log('time_schedule: ', arr);\n setTimeCycle(timeCycle)\n }, [record.time_schedule, cfgData])\n\n const handleChange = (index, key, val) => {\n let cloneDelayExpression = _.cloneDeep(delay_expression)\n cloneDelayExpression[index] = _.assign({}, cloneDelayExpression[index], {\n [key]: val\n })\n setDelay_expression(cloneDelayExpression)\n }\n\n const handleAdd = () => {\n let cloneDelayExpression = _.cloneDeep(delay_expression)\n cloneDelayExpression.push({})\n setDelay_expression(cloneDelayExpression)\n }\n\n const handleDel = index => {\n let cloneDelayExpression = _.cloneDeep(delay_expression)\n cloneDelayExpression.splice(index, 1)\n setDelay_expression(cloneDelayExpression)\n }\n\n const handleSureClick = () => {\n if (!record.id) {\n Message.error('没有指标id,请刷新界面重试')\n return\n }\n // console.log('isSameIndex: ', isSameIndex);\n // 校验不通过\n if (isSameIndex.length) return\n\n let cloneDelayExpression = _.cloneDeep(delay_expression)\n let cloneDelayExpressionClone = cloneDelayExpression.filter(i => !!i.delay_num && !!i.time_cycle)\n let cloneDelayExpressionCloneFilter = cloneDelayExpression.filter(i => !!i.delay_num || !!i.time_cycle)\n if (cloneDelayExpressionClone.length != cloneDelayExpressionCloneFilter.length) {\n Message.error('任务设置不可为空')\n return\n }\n setDelay_expression(cloneDelayExpressionClone) // 删除设置不全的配置\n\n // 组装下发参数格式\n cloneDelayExpressionClone = cloneDelayExpressionClone.map(i => ({\n time_cycle: i.time_cycle,\n delay_num: i.delay_num + '/days'\n }))\n // console.log('aaa: ', empty_drop, cloneDelayExpression);\n commonApi(storeOrUpdateDepth, {\n id: record.id,\n field: {\n empty_drop,\n delay_expression: JSON.stringify(cloneDelayExpressionClone)\n }\n }).then(data => {\n setReRunVisible(false)\n onSureClick()\n Message.success('重跑设置成功')\n }).catch(() => Message.error('重跑设置失败'))\n }\n\n return (\n <>\n setReRunVisible(false)}\n onSureClick={handleSureClick}\n >\n
\n
\n 定时重跑\n \n \n \n
\n\n
\n {\n _.isArray(delay_expression) &&\n delay_expression.map((item, index) => {\n const selectedArr = delay_expression.map(i => i.time_cycle)\n const curTimeCycle = timeCycle.filter(i => !selectedArr.includes(i.id))\n\n return (\n
\n \n handleChange(index, 'time_cycle', val)}\n />\n \n \n handleChange(index, 'delay_num', val)}\n />\n \n \n \n {\n index > 0 &&\n handleDel(index)} className=\"el-icon-minus\">\n }\n \n
\n )\n })\n }\n
\n
\n
\n 重跑指标为0正常入库\n \n
\n \n \n )\n}\n","// 派生指标详情页\nimport { useState, useEffect, useMemo } from 'react'\nimport _ from 'lodash'\nimport SdwBreadCrumbs from '@common/BreadCrumbs'\nimport SdwLayout from '@common/Layout'\nimport SdwTabs from '@common/Tabs'\nimport Message from '@common/Message'\nimport NoRight from '@pages/NoRight'\nimport BloodPage from './Blood'\nimport LogPage from './Log'\nimport EditData from '../components/EditData'\nimport EditIndicatorsData from '../components/EditIndicatorsData/EditIndicatorsData2'\nimport editImg from '../../../../img/icon_16_bj@2x.png'\nimport { getTargetPage, getTopicBusiness, getTarget } from '@services/Derived'\nimport { formatJsonParse } from '@utils/formatJson'\nimport { TYPE_MAP_TEXT } from '@config/derived'\nimport { hasPriv } from '@components/FrontendAuth/AuthMap'\nimport './index.css'\nimport { getTitle } from '@utils/common'\nimport ReRunWin from '../components/ReRunWin'\n\nconst Menu = [\n {\n title: '指标血缘',\n path: '/BloodPage',\n component: BloodPage\n }, {\n title: '运行日志',\n path: '/LogPage',\n component: LogPage\n }\n]\n\nconst topicData = formatJsonParse(sessionStorage.getItem('derivedTopicData'))\nconst tableList = formatJsonParse(sessionStorage.getItem('derivedTableList'))\nconst cfgData = formatJsonParse(sessionStorage.getItem('derivedCfgData'))\nconst atomTarget = formatJsonParse(sessionStorage.getItem('derivedAtomTarget'))\nconst dimension = formatJsonParse(sessionStorage.getItem('derivedDimension'))\n\nfunction Detail(props) {\n\n const [curID, setCurID] = useState('')\n const [baseInfo, setBaseInfo] = useState({})\n const [topicMap, setTopicMap] = useState({})\n const [businessMap, setBusinessMap] = useState({})\n const [visible, setVisible] = useState(false) // 编辑弹窗\n const [curRecord, setCurRecord] = useState({})\n const [indicatorsVisible, setIndicatorsVisible] = useState(false) // 派生指标弹窗\n const [reRunVisible, setReRunVisible] = useState(false) // 重跑设置弹窗\n\n // 获取主题列表\n useEffect(() => {\n getTopicBusiness().then(res => {\n const code = _.get(res, 'data.code')\n if (code !== 0) return\n const arr = _.get(res, 'data.data')\n if (!_.isArray(arr)) return\n\n let topicObj = {}\n let businessObj = {}\n arr.forEach(i => {\n topicObj[i.value] = i.label\n\n if (_.isArray(i.children) && i.children.length) {\n i.children.forEach(j => {\n businessObj[j.value] = j.label\n })\n }\n })\n\n setTopicMap(topicObj)\n setBusinessMap(businessObj)\n })\n }, [])\n\n // 通过id请求详情数据\n useEffect(() => {\n initData()\n }, [])\n\n useEffect(() => {\n getCurItem(curID)\n }, [curID])\n\n // 获取编辑的行记录\n function getCurItem(id) {\n if (!id || _.isEmpty(topicData)) return\n\n let topicDic = {}\n for (let i = 0; i < topicData.length; i++) {\n let topicId = topicData[i].value\n if (!topicDic.hasOwnProperty(topicId)) {\n topicDic[topicId] = topicData[i]\n }\n }\n\n getTarget({ id }).then(res => {\n const code = _.get(res, 'data.code')\n if (code === 0) {\n let item = _.get(res, 'data.data')\n for (let i in item) {\n let val = item[i]\n\n if (i === \"store_dimension\") {\n item['store_dimension'] = formatJsonParse(val)\n continue\n }\n\n if (i === \"time_schedule\") {\n item['time_schedule'] = formatJsonParse(val)\n continue\n }\n\n if (i === \"target_type\") {\n item[\"target_type\"] = item[\"target_type\"] + ''\n continue\n }\n\n if (i === \"decoration_ids\") {\n let decoration_ids = []\n decoration_ids = val ? val.split(\",\") : []\n item[\"decoration_ids\"] = decoration_ids\n continue\n }\n\n item[i] = val\n }\n\n let topicName = \"\"\n let topicServiceName = \"\"\n\n const record = topicDic[item.topic] || {}\n if (!_.isEmpty(record)) {\n topicName = record.label\n if (_.isArray(record.children)) {\n for (let i = 0; i < record.children.length; i++) {\n let sid = record.children[i].value\n let label = record.children[i].label\n\n if (sid == item.service) {\n topicServiceName = label\n }\n }\n }\n }\n item.topicBusiness = {\n \"ids\": [item.topic, item.service],\n \"texts\": [topicName, topicServiceName],\n \"clickItem\": [item.topic + '' + item.service, topicServiceName],\n }\n\n setCurRecord(item)\n }\n })\n }\n\n function initData() {\n const ID = _.get(props, 'match.params.id') || ''\n if (!!ID) {\n setCurID(ID)\n getCurItem(ID)\n }\n getTargetPage({\n search: JSON.stringify({\n id: {\n value: ID,\n operator: '='\n }\n })\n }).then(res => {\n const code = _.get(res, 'data.code')\n if (code === 0) {\n const record = _.get(res, 'data.data.items[0]')\n if (!_.isEmpty(record)) {\n setBaseInfo(record)\n }\n } else {\n const msg = _.get(res, 'data.msg') || '获取详情数据失败!'\n Message.error(msg)\n }\n }).catch(err => Message.error('获取详情数据接口异常' + err))\n }\n\n // 计算公式\n let cal_expression = useMemo(() => {\n let ce = formatJsonParse(baseInfo.cal_expression)\n if (_.isArray(ce)) {\n ce = ce.join('')\n }\n return ce\n }, [baseInfo.cal_expression])\n\n // 维度\n let store_dimension = useMemo(() => {\n let sd = formatJsonParse(baseInfo.store_dimension)\n if (_.isArray(sd)) {\n sd = sd.map(i => {\n const arr = _.isArray(i.id) ? i.id : []\n return arr.join('#')\n }).join('/')\n }\n return sd\n }, [baseInfo.store_dimension])\n\n // 时间周期\n let time_schedule = useMemo(() => {\n let ts = formatJsonParse(baseInfo.time_schedule)\n if (_.isArray(ts)) {\n ts = ts.map(i => {\n return `${i.time_cycle}/${i.run_cycle}`\n }).join('|')\n }\n return ts\n }, [baseInfo.time_schedule])\n\n let derivativeTargets = useMemo(() => {\n let der = baseInfo.derivativeTargets\n if (_.isArray(der)) {\n der = der.filter(j => j.enable).map(i => i.id).join(',')\n }\n return der\n }, [baseInfo.derivativeTargets])\n\n function onSureClick() {\n setVisible(false)\n initData()\n }\n\n function onSureClickOfIndicators() {\n setIndicatorsVisible(false)\n initData()\n }\n\n return (\n
\n \n\n {\n hasPriv('getDataKinship') ?\n <>\n
\n
\n 指标信息\n {\n hasPriv('derivedCreateOrUpdate') &&\n setVisible(true)}\n />\n }\n {\n hasPriv('storeOrUpdateDepth') &&\n setReRunVisible(true)}\n />\n }\n
\n
\n \n
\n 英文名{ baseInfo.target_name || '-' }\n
\n
\n 指标类型{ TYPE_MAP_TEXT[baseInfo.target_type] || '-' }\n
\n
\n {/* TODO */}\n 原子指标{ baseInfo.source_targets || '-' }\n
\n
\n 描述{ baseInfo.comments || '-' }\n
\n
\n \n
\n 中文名{ baseInfo.target_name_cn || '-' }\n
\n
\n 维度{ store_dimension || '-' }\n
\n
\n 主题域/业务\n {`${topicMap[baseInfo.topic]}/${businessMap[baseInfo.service]}` || '-'}\n
\n
\n 计算公式{ cal_expression || '-' }\n
\n
\n \n
\n 时间周期{ time_schedule || '-' }\n
\n
\n 单位{ baseInfo.target_unit || '-' }\n
\n
\n 衍生指标\n \n { derivativeTargets || '-' }\n {\n hasPriv('storeOrUpdateDerive') &&\n setIndicatorsVisible(true)}\n />\n }\n \n
\n \n
\n
\n
\n\n
\n \n
\n\n {/* 编辑弹窗 */}\n {\n visible &&\n setVisible(false)}\n onCancelClick={() => setVisible(false)}\n onSureClick={onSureClick}\n />\n }\n\n {/* 编辑弹窗 */}\n {\n reRunVisible &&\n \n }\n\n {/* 编辑派生指标弹窗 */}\n {\n indicatorsVisible &&\n setIndicatorsVisible(false)}\n onCancelClick={() => setIndicatorsVisible(false)}\n onSureClick={onSureClickOfIndicators}\n />\n }\n :\n \n }\n
\n )\n}\n\nexport default Detail\n","import _ from 'lodash'\nimport switchRoutes from './switchRoutes'\nimport Atom from '@pages/MachFactory/Atom'\nimport Derived from '@pages/MachFactory/Derived'\nimport Dimension from '@pages/MachFactory/Dimension'\nimport Modifier from '@pages/MachFactory/Modifier'\nimport Application from '@pages/MachFactory/Application'\nimport ApplicationDetail from '@pages/MachFactory/Application/ApplicationDetail'\nimport Api from '@pages/MachFactory/Api'\nimport ApiDetail from '@pages/MachFactory/Api/ApiDetail'\nimport indexDetail from '@pages/MachFactory/Api/indexDetail'\nimport DerivedDetail from '@pages/MachFactory/Derived/Detail'\nimport AuditInfoPage from '@pages/common/auditInfoPage'\n\nexport const routerPath = '/admin/factory'\n\nexport const bar = {\n rootUrl: routerPath,\n activeClassName: 'current',\n className: 'sdw-nav-item',\n name: '指标加工厂',\n children: [\n {\n icon: '',\n title: '原子指标',\n path: `${routerPath}/atom`,\n },\n {\n icon: '',\n title: '派生指标',\n path: `${routerPath}/derived`,\n },\n {\n icon: '',\n title: '维度管理',\n path: `${routerPath}/dimension`,\n },\n {\n icon: '',\n title: '修饰词管理',\n path: `${routerPath}/modifier`,\n },\n // {\n // icon: '',\n // title: '应用管理',\n // path: `${routerPath}/application`,\n // },\n // {\n // icon: '',\n // title: '配置管理',\n // path: `/html/dms/departmentList`,\n // gotoPathState: 1,\n // },\n {\n icon: '',\n title: '应用表管理',\n path: `${routerPath}/application`\n },\n {\n icon: '',\n title: '指标API',\n path: `${routerPath}/api`\n }\n ],\n order: 2\n}\n\nconst pages = {\n atomData: {\n icon: '',\n title: '原子指标',\n path: `${routerPath}/atom`,\n component: Atom,\n },\n atomDataDetail: {\n icon: '',\n title: '',\n path: `${routerPath}/atomData/detail/:id`,\n component: Atom,\n },\n derived: {\n icon: '',\n title: '派生指标',\n path: `${routerPath}/derived`,\n component: Derived,\n },\n derivedDetail: {\n icon: '',\n title: '',\n path: `${routerPath}/derived-detail/:id`,\n component: DerivedDetail,\n },\n dimensionManage: {\n icon: '',\n title: '维度管理',\n path: `${routerPath}/dimension`,\n component: Dimension,\n },\n dimensionDetail: {\n icon: '',\n title: '',\n path: `${routerPath}/dimension/detail/:id`,\n component: Dimension,\n },\n modifierManage: {\n icon: '',\n title: '修饰词管理',\n path: `${routerPath}/modifier`,\n component: Modifier,\n },\n modifierDetail: {\n icon: '',\n title: '',\n path: `${routerPath}/modifier/detail/:id`,\n component: Modifier,\n },\n application: {\n icon: '',\n title: '应用表管理',\n path: `${routerPath}/application`,\n component: Application,\n },\n applicationDetail: {\n icon: '',\n title: '新增应用表',\n path: `${routerPath}/applicationDetail`,\n component: ApplicationDetail,\n },\n api: {\n icon: '',\n title: '指标API',\n path: `${routerPath}/api`,\n component: Api,\n },\n apiDetail: {\n icon: '',\n title: '指标API编辑',\n //path: `${routerPath}/apiDetail`,\n path: `${routerPath}/apiDetail/:id`,\n component: ApiDetail,\n },\n indexDetail: {\n icon: '',\n title: '指标配置',\n path: `${routerPath}/indexDetail`,\n component: indexDetail,\n },\n AuditInfoPage: {\n icon: '',\n title: '审计详情界面',\n path: `${routerPath}/auditInfoPage`,\n component: AuditInfoPage,\n },\n}\n\nexport const menus = [\n\n]\n\nexport const Router = switchRoutes({ routes: _.values(pages) })\n","// @file审计详情界面\nimport { useState, useEffect, useLayoutEffect } from \"react\"\nimport BreadCrumbs from '@common/BreadCrumbs'\nimport Empty from \"@common/Empty\"\nimport Tabs from \"@common/Tabs\"\nimport Button from \"@common/Button\"\nimport Message from \"@common/Message\"\nimport './auditInfoPage.css'\nimport { getMessage, applyApproval, getProcessApproval, getTopicBusiness } from '@services/auditInfoPage'\nimport { commonApi } from \"@utils/request\"\nimport _ from \"lodash\"\nimport { formatJsonParse } from \"@utils/formatJson\"\nimport { hasPriv } from \"@components/FrontendAuth/AuthMap\"\nimport {\n ALL, PENDING, STATE_MAP, UPDATE_CONTEXT_MAP, TARGET_TYPE_MAP, MSG_TYPE_MAP\n} from '@pages/common/index'\nimport Pagenation from \"@common/Pagenation\"\nimport Loadding from \"@common/Loadding\"\nimport { getAllAtomTarget } from '@services/Derived'\n\nexport default function AuditInfoPage(props) {\n\n const [messageArr, setMessageArr] = useState([]);\n const [pageInfo, setPageInfo] = useState({});\n const [curStatus, setCurStatus] = useState(ALL);\n const [isLoading, setIsLoading] = useState(false);\n const [approvalTotal, setApprovalTotal] = useState(0);\n const [stomMap, setStomMap] = useState({}); // 原子指标id-text map映射\n const [topicMap, setTopicMap] = useState({});\n const [businessMap, setBusinessMap] = useState({});\n\n useEffect(() => {\n onInit({})\n }, [])\n\n useLayoutEffect(() => {\n getAllAtomTarget().then(res => {\n const code = _.get(res, 'data.code')\n if (code === 0) {\n const arr = _.get(res, 'data.data') || []\n const obj = arr.reduce((obj, i) => {\n obj[i.id] = `${i.target_name}(${i.target_name_ch})`\n return obj\n }, {})\n setStomMap(obj)\n } else {\n Message.error('获取原子指标失败 ' + (_.get(res, 'data.msg') || ''))\n }\n })\n }, []);\n\n useLayoutEffect(() => {\n commonApi(getTopicBusiness, {}).then(data => {\n // console.log('getTopicBusiness: ', data);\n let arr = _.isArray(data) ? _.cloneDeep(data) : []\n let topicArr = []\n let bussinessArr = []\n while (!!arr.length) {\n const item = arr.shift()\n const itemChildren = _.get(item, 'children') || []\n bussinessArr.push(...itemChildren)\n delete item.children\n topicArr.push(item)\n }\n\n // 将主题、业务映射为id-text\n topicArr = topicArr.reduce((obj, i) => {\n obj[i.value] = i.label\n return obj\n }, {})\n bussinessArr = bussinessArr.reduce((obj, i) => {\n obj[i.value] = i.label\n return obj\n }, {})\n // console.log('topicArr: ', topicArr);\n // console.log('bussinessArr: ', bussinessArr);\n setTopicMap(topicArr)\n setBusinessMap(bussinessArr)\n }).catch(err => Message.error('获取主题域、业务失败 ' + err))\n }, [])\n\n useLayoutEffect(() => {\n commonApi(getProcessApproval, {\n limit: 10,\n page: 1,\n search: JSON.stringify({})\n }).then(data => {\n let total = _.get(data, 'total')\n setApprovalTotal(total)\n })\n }, [])\n\n function onInit({\n per_page = 10,\n current_page = 1,\n search = {},\n status = curStatus\n }) {\n // 待处理走 getProcessApproval 接口\n const API = status === ALL ? getMessage : getProcessApproval\n setIsLoading(true)\n commonApi(API, {\n limit: per_page,\n page: current_page,\n search: JSON.stringify(search)\n }).then((data = {}) => {\n let arr = _.get(data, 'items')\n arr = _.isArray(arr) ? arr : []\n setMessageArr(arr)\n setPageInfo({\n current_page: data.current_page || 1,\n per_page: data.per_page || 10,\n total: data.total || 0,\n })\n\n if (status === PENDING) {\n let total = _.get(data, 'total')\n setApprovalTotal(total)\n }\n }).catch(err => Message.error(err))\n .finally(() => setIsLoading(false))\n }\n\n function handleChange(item) {\n const curStatus = _.get(item, 'path') || ALL\n setCurStatus(curStatus)\n // console.log('curStatus: ', curStatus);\n\n setPageInfo({\n current_page: 1,\n per_page: 10,\n total: 0,\n })\n\n setTimeout(() => {\n onInit({\n status: curStatus\n })\n }, 0);\n }\n\n function onapplyApproval(params) {\n commonApi(applyApproval, params).then(data => {\n Message.success('审批成功')\n onInit({})\n }).catch(err => Message.error('审批失败 ' + err))\n }\n\n function updatePageInfo(key, val) {\n let clonePageInfo = _.cloneDeep(pageInfo)\n clonePageInfo[key] = val\n setPageInfo(clonePageInfo)\n\n onInit(_.assign({}, pageInfo, {\n [key]: val\n }))\n }\n\n return (\n
\n \n\n \n
\n {\n (curStatus === ALL && (!_.isArray(messageArr) || messageArr.length === 0)) ?\n :\n
\n
\n \n
\n\n
\n {\n messageArr.length > 0 ?\n messageArr.map((item, index) => {\n const messageContext = formatJsonParse(item.message_context) || {}\n // console.log('messageContext: ', messageContext);\n const comment = _.get(messageContext, 'comment') || '-'\n const updateContext = _.get(messageContext, 'update_context') || {}\n const isEdit = !!messageContext.id // 新增无id,编辑有id\n const isReRun = item.msg_type == '3'\n\n // 新增隐藏的字段\n if (!isEdit && !_.isEmpty(updateContext)) {\n delete updateContext.complex_script // 复合方式\n delete updateContext.service // 所属业务\n delete updateContext.topic // 指标主题\n }\n\n return
\n
\n
{MSG_TYPE_MAP[item.msg_type] || '-'}
\n
{item.message_title || '-'}
\n
{item.send_time || '-'}
\n
\n
\n
\n
{'指标ID:'}
\n
{messageContext.id || '-'}
\n
\n
\n
{isReRun ? '提交人:' : '修改人:'}
\n
{item.send_user || '-'}
\n
\n
\n {\n !isReRun ?\n <>\n
\n
\n
{'修改点:'}
\n
{\n _.keys(updateContext).map(key => {\n let context = updateContext[key] || '\"\"'\n let old_value = updateContext[key]['old_value'] || '\"\"'\n let new_value = updateContext[key]['new_value'] || '\"\"'\n\n if (key === 'topicBusiness') {\n context = !_.isEmpty(updateContext[key]) && Array.isArray(updateContext[key]['texts']) ? updateContext[key]['texts'].join('/') : '-'\n } else if (key === 'source_targets') {\n context = stomMap[updateContext[key]]\n } else if (key === 'target_type') {\n context = TARGET_TYPE_MAP[updateContext[key]]\n old_value = TARGET_TYPE_MAP[updateContext[key]['old_value']]\n new_value = TARGET_TYPE_MAP[updateContext[key]['new_value']]\n } else if (key === 'topic') {\n context = topicMap[updateContext[key]]\n old_value = topicMap[updateContext[key]['old_value']]\n new_value = topicMap[updateContext[key]['new_value']]\n } else if (key === 'service') {\n context = businessMap[updateContext[key]]\n old_value = businessMap[updateContext[key]['old_value']]\n new_value = businessMap[updateContext[key]['new_value']]\n }\n\n return (\n
\n {UPDATE_CONTEXT_MAP[key] || key}\n {\n isEdit ? null : \n }\n {\n isEdit ?\n
\n {'由'}\n {old_value}\n {'改为'}\n {new_value}\n
:\n
\n {context}\n
\n }\n
\n )\n })\n }
\n
\n
\n
{'修改原因:'}
\n
{comment}
\n
\n
\n
\n
{'修改时间:'}
\n
{messageContext.create_time || '-'}
\n
\n :\n <>\n
\n
{'重跑时间:'}
\n
{`${messageContext.start_time} - ${messageContext.end_time}` || '-'}
\n
\n
\n
{'提交时间:'}
\n
{item.update_time || '-'}
\n
\n \n }\n
\n {\n item.task_status != '0' &&\n
\n
{'审批人:'}
\n
{item.approval_user || '-'}
\n
\n }\n
\n {/* 0: 审批中 1:通过 2:驳回 */}\n
{'审批情况:'}
\n
{STATE_MAP[item.task_status] || '-'}
\n
\n
\n {\n item.task_status != '0' &&\n
\n
{'审批时间:'}
\n
{item.update_time || '-'}
\n
\n }\n {\n (\n item.task_status == '0' &&\n hasPriv('applyApproval')\n ) &&\n <>\n \n
\n }) :\n \n }\n
\n\n {\n messageArr.length > 0 &&\n
\n updatePageInfo('current_page', val)}\n pageCountChange={val => updatePageInfo('per_page', val)}\n />\n
\n }\n\n
\n }\n
\n
\n\n
\n )\n}\n","import { useState, useEffect } from 'react'\nimport SdwDialog from '@common/Dialog'\nimport SdwTable from '@common/Table'\nimport SdwButton from '@common/Button'\nimport { DateRangePicker } from 'element-react'\nimport { getTargetPreview } from '@services/dataAccess'\nimport { formatTime } from '@utils/formatTime'\nimport SdwMessage from '@common/Message'\nimport SdwLoading from '@common/Loadding/index'\n\nimport './style/dataReview.css'\n\nexport default function SubmitDataWin (props) {\n\n const [datePicker, setDatePicker] = useState()\n const [dataSource, setDataSource] = useState([])\n const [columns, setColumns] = useState([])\n const [isLoadding, setIsLoadding] = useState(true)\n\n useEffect(() => {\n if (!props.task_id) return\n \n // reset\n setColumns([])\n setDataSource([])\n setIsLoadding(true)\n\n let today = new Date()\n let endTime = formatTime(+new Date(`${today.getFullYear()}-${today.getMonth() + 1}-${today.getDate()} 00:00:00`) + 24*60*60*1000, 0)\n let startTime = formatTime(+new Date(`${today.getFullYear()}-${today.getMonth() + 1}-${today.getDate()} 00:00:00`) - 6*24*60*60*1000, 0)\n\n setDatePicker([new Date(startTime), new Date(endTime)])\n\n doGetTargetPreview({\n startTime: startTime,\n endTime: endTime\n })\n \n }, [props.task_id])\n\n function doGetTargetPreview(params) {\n getTargetPreview({\n task_id: props.task_id,\n start_time: params.startTime,\n end_time: params.endTime\n }).then(res => {\n setIsLoadding(false)\n if (res && res.data && res.data.code === 0) {\n let curObj = res.data.data || {}\n let curArr = Array.isArray(curObj.data) ? curObj.data : []\n\n if (curArr.length) {\n let columnArr = Object.keys(curArr[0]).map(key => {\n return {\n title: key,\n dataIndex: key,\n showTip: true\n }\n })\n setColumns(columnArr)\n setDataSource(curArr)\n }\n } else {\n let msg = res && res.data && res.data.msg || '请求数据失败'\n SdwMessage.error(msg)\n }\n })\n .catch(error => {\n SdwMessage.error('接口请求有误:' + error)\n })\n }\n\n function getcolumns () {\n return columns\n }\n\n return (\n <>\n {\n if (typeof props.changeDataReviewVisible !== 'function') return\n props.changeDataReviewVisible()\n }}\n onCancelClick={() => props.changeDataReviewVisible(false)}\n onSureClick={() => props.changeDataReviewVisible(false)}\n >\n \n
\n time.getTime() > Date.now() + 24*60*60*1000}\n onChange={date => setDatePicker(date)}\n />\n \n {\n doGetTargetPreview({\n startTime: formatTime(+new Date(datePicker[0]), 0),\n endTime: formatTime(+new Date(datePicker[1]), 0)\n })\n }}\n />\n\n
\n \n
\n
\n
\n \n \n )\n}","import { useState, useEffect } from 'react'\nimport { DateRangePicker } from 'element-react'\nimport { runDataTask } from '@services/dataAccess'\nimport { formatTime } from '@utils/formatTime'\nimport SdwMessage from '@common/Message'\n\nexport default function DataBaseWin (props) {\n\n const [datePicker, setDatePicker] = useState(null)\n\n useEffect(() => {\n setDatePicker(null)\n }, [props.data.id])\n\n props.curRef.current = handleSubmit\n\n function handleSubmit() {\n let isInitType = props.data.stream_type === 'INIT'\n\n if (isInitType && !datePicker) return\n\n runDataTask({\n task_id: props.data.id,\n task_type: props.data.stream_type,\n ...(props.data.stream_type === 'INIT' ? {\n start_time: formatTime(+datePicker[0], 0),\n end_time: formatTime(+datePicker[1], 0)\n } : {})\n })\n .then(res => {\n if (res && res.data && res.data.code === 0) {\n SdwMessage.success('提交任务成功')\n props.changeVisible(false)\n } else {\n let msg = res && res.data && res.data.msg || ''\n SdwMessage.error('提交任务失败:' + msg)\n }\n })\n .catch(err => {\n SdwMessage.error('接口异常:' + err)\n })\n }\n\n return (\n <>\n
\n ID:\n {props.data.id}\n
\n\n
\n 表名:\n {`${props.data.database_name}.${props.data.table_name}(${props.data.data_set_chinese})`}\n
\n\n
\n 同步方式:\n {props.data.stream_type}\n
\n \n {\n props.data.stream_type === 'INIT' &&\n
\n 时间:\n time.getTime() > Date.now() + 24*60*60*1000}\n onChange={date => setDatePicker(date)}\n />\n
\n }\n \n )\n}","import { useState, useEffect } from 'react'\nimport _ from 'lodash'\nimport SdwMessage from '@common/Message'\nimport SdwRadiobox from '@common/Radiobox'\nimport SdwSelect from '@common/Select'\nimport { getMonitorServerConfigList, setMonitorJoinLogConfig } from '@services/dataAccess'\n\nexport default function DataLogWin (props) {\n\n const [isBreakTable, setIsBreakTable] = useState(0)\n const [logArr, setLogArr] = useState([])\n const [logArrOptios, setLogArrOptios] = useState([])\n\n useEffect(() => {\n getMonitorServerConfigList({\n limit: 1000\n }).then(res => {\n const code = _.get(res, 'data.code')\n if (code === 0) {\n const items = _.get(res, 'data.data.items')\n \n if (_.isArray(items)) {\n setLogArrOptios(items.filter(j => j.is_valid).map(i => ({\n ...i,\n text: `${i.service_name}(${i.id})`\n })))\n }\n }\n })\n }, [])\n\n useEffect(() => {\n const monitorIDList = _.get(props, 'data.monitorIDList') || []\n const task_type = _.get(props, 'data.task_type') || 0\n if (_.isArray(logArrOptios) && logArrOptios.length && monitorIDList.length) {\n // console.log('monitorIDList: ', monitorIDList);\n setLogArr(logArrOptios.filter(i => monitorIDList.includes(i.id)))\n }\n setIsBreakTable(task_type)\n }, [logArrOptios, props.data])\n\n props.curRef.current = handleSubmit\n\n function handleSubmit() {\n // console.log('isBreakTable: ', isBreakTable, logArr, props.data);\n const monitorIDList = _.isArray(logArr) ? logArr.map(i => i.id).join() : ''\n const configID = _.get(props, 'data.id')\n if (!configID) return SdwMessage.info('参数错误,请联系管理员!')\n // if (isBreakTable === 0 && logArr.length > 5) return SdwMessage.info('最大支持5个!')\n setMonitorJoinLogConfig({\n configID: props.data.id,\n taskType: isBreakTable,\n ...isBreakTable === 0 ? {\n monitorIDList\n } : {}\n })\n .then(res => {\n if (res && res.data && res.data.code === 0) {\n SdwMessage.success('提交任务成功')\n props.changeVisible(false)\n } else {\n let msg = res && res.data && res.data.msg || ''\n SdwMessage.error('提交任务失败:' + msg)\n }\n })\n .catch(err => {\n SdwMessage.error('接口异常:' + err)\n })\n }\n\n return (\n <>\n
\n 埋点方式:\n setIsBreakTable(val)}\n />\n \n {\n isBreakTable === 0 &&\n
\n \n
\n }\n
\n {\n isBreakTable === 1 &&\n <>\n CMD:\n { _.get(props, 'data.id') || '' }\n \n }\n \n )\n}","import { useRef } from 'react'\nimport _ from 'lodash'\nimport PropTypes from 'prop-types'\nimport SdwDialog from '@common/Dialog'\nimport DataBaseWin from './win/DataBaseWin'\nimport DataLogWin from './win/DataLogWin'\n\nimport './style/dataReview.css'\n\nfunction DataReview (props) {\n const { type } = props\n \n const currentRef = useRef(_.noop)\n\n return (\n <>\n props.changeVisible(false)}\n onSureClick={() => currentRef.current()}\n >\n {\n type === 'DataBaseWin' &&\n \n }\n\n {\n type === 'DataLogWin' &&\n \n }\n \n \n )\n}\n\nDataReview.propTypes = {\n changeVisible: PropTypes.func\n}\n\nDataReview.defaultProps = {\n changeVisible: _.noop\n}\n\nexport default DataReview","import React from 'react'\nimport _ from 'lodash'\nimport SdwSelect from '@common/Select'\nimport SdwInput from '@common/Input'\nimport SdwTable from '@common/Table'\nimport SdwPagenation from '@common/Pagenation'\nimport DataReview from './DataReview'\nimport { Button } from 'element-react'\nimport { getItermSelects, getBusinessStatisticByTopic } from '@services/dataStandars'\nimport { getAllTasks, getTableApiItems } from '@services/dataAccess'\nimport SubmitDataWin from './SubmitDataWin'\nimport SdwMessage from '@common/Message'\n\nimport './style/index.css'\n\nclass DataManagement extends React.PureComponent {\n\n state = {\n curPage: 1,\n curLimit: 10,\n tableData: {},\n searchFieldsArr: [],\n searchValue: '',\n businessValue: '',\n domainValue: '',\n search_create_user: '',\n hideSearchField: true,\n field_name: '',\n businessArr: [],\n topicArr: [],\n topicID: '', // 已选主题域id\n businessList: [], // 已选主题域对应的业务\n dataReviewVisible: false,\n tableID: '',\n taskID: '',\n curClickData: {},\n submitVisible: false\n }\n\n componentDidMount() {\n this.initData()\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n // 清空查询\n if (prevState.searchValue !== this.state.searchValue && this.state.searchValue === '') {\n this.setState({\n tableID: ''\n }, this.onSearchFields)\n }\n if (prevState.topicID !== this.state.topicID) {\n this.getBusinessStatisticByTopic()\n }\n }\n\n initData = () => {\n this.onGetAllTasks()\n\n getItermSelects().then(res => {\n if (res && res.data && res.data.code === 0) {\n let record = res.data.data || {}\n let business = Array.isArray(record.business) ? record.business.map(i => {\n return {\n id: i.business_name,\n text: i.business_name\n }\n }) : []\n let topic = Array.isArray(record.topic) ? record.topic.map(j => {\n return {\n id: j.topic_name,\n text: j.topic_name,\n topic_id: j.id\n }\n }) : []\n\n this.setState({\n businessArr: business,\n topicArr: topic\n })\n }\n })\n\n // 目标表参数\n let paramData = {\n limit: 10000,\n search: JSON.stringify({\n data_set_type: {\n value: 'es',\n operator: '='\n },\n warehouse_level: {\n value: 'ODS',\n operator: '='\n },\n enable: {\n value: '1',\n operator: '='\n }\n })\n }\n\n // 目标表\n getTableApiItems(paramData).then(res => {\n if (res && res.data && res.data.code === 0) {\n let curArr = Array.isArray(res.data.data.items) ? res.data.data.items : []\n curArr = curArr.map(i => {\n let curName = !!i.database_name ? `${i.database_name}.${i.table_name}` : `${i.table_name}`\n return Object.assign({}, i, {\n name: `${curName}(${i.data_set_chinese})`,\n })\n })\n\n this.setState({searchFieldsArr: curArr})\n } else {\n SdwMessage.error('获取目标表数据失败')\n }\n })\n .catch(error => {\n SdwMessage.error('获取目标表接口异常:' + error)\n })\n }\n\n // 根据主题域ID请求对应的业务\n getBusinessStatisticByTopic = () => {\n let { topicID } = this.state\n getBusinessStatisticByTopic({id: topicID}).then(res => {\n if (res && res.data && res.data.code === 0) {\n let record = res.data.data && res.data.data.list.map(i => {\n return {\n id: i.business_name,\n text: i.business_name\n }\n }) || []\n this.setState({\n businessList: record\n })\n }\n })\n }\n\n getColumns = () => {\n let self = this\n return [\n {\n title: \"ID\",\n dataIndex: \"id\",\n width: 30\n },\n {\n title: \"主题域\",\n dataIndex: \"topic\"\n },\n {\n title: \"业务\",\n dataIndex: \"business\"\n },\n {\n title: \"表英文名\",\n width: 140,\n render: data => {\n let name = !!data.database_name ? `${data.database_name}.${data.table_name}` : data.table_name\n return (\n {name}\n )\n }\n },\n {\n title: \"表中文名\",\n dataIndex: \"data_set_chinese\"\n },\n {\n title: \"数据源类型\",\n dataIndex: \"data_set_type\"\n },\n {\n title: \"同步方式\",\n dataIndex: \"stream_type\"\n },\n {\n title: \"创建人\",\n dataIndex: \"create_user\"\n },\n {\n title: \"修改时间\",\n dataIndex: \"modify_time\",\n width: 180,\n },\n {\n title: \"操作\",\n width: 180,\n render: function (data, record) {\n return (\n \n self.addOrEditStandard({\n title: '编辑',\n ...data,\n }) }\n style={{\"fontSize\": \"14px\"}}\n >编辑\n self.setState({ taskID: data.id }, () => self.setState({dataReviewVisible: true}))}\n style={{\"fontSize\": \"14px\"}}\n >预览数据\n self.setState({ curClickData: data }, () => self.setState({submitVisible: true}))}\n style={{\"fontSize\": \"14px\"}}\n >提交任务\n \n )\n }\n }\n ]\n }\n\n addOrEditStandard = obj => {\n this.props.history.push({\n pathname: '/admin/dataCollect/dataAccess',\n state: obj\n })\n }\n\n onGetAllTasks = (params = {}) => {\n getAllTasks(params).then(res => {\n if (res && res.data && res.data.code === 0) {\n let record = res.data.data || {}\n this.setState({ tableData: record })\n } else {\n SdwMessage.error('获取数据失败')\n }\n })\n .catch(error => {\n SdwMessage.error('接口异常:' + error)\n })\n }\n\n onSearchFields = (params = {}) => {\n let { domainValue, businessValue, search_create_user, tableID, curPage, curLimit } = this.state\n let topic = !!params.topic ? params.topic : domainValue\n let business = !!params.business ? params.business : businessValue\n let table_id = !!params.table_id ? params.table_id : tableID\n let curParams = {\n page: !!params.page ? params.page : curPage,\n limit: !!params.limit ? params.limit : curLimit,\n search: JSON.stringify({\n ...(!!topic ? {\n topic: {\n value: topic,\n operator: '='\n }\n } : {}),\n ...(!!business ? {\n business: {\n value: business,\n operator: '='\n }\n } : {}),\n ...(!!table_id ? {\n target_table: {\n value: table_id,\n operator: '='\n }\n } : {}),\n ...(!!search_create_user ? {\n 'data_task.create_user': {\n value: search_create_user,\n operator: 'like'\n }\n } : {})\n })\n }\n this.onGetAllTasks(curParams)\n }\n\n render () {\n let {\n tableData,\n searchFieldsArr,\n searchValue,\n businessValue,\n search_create_user,\n domainValue,\n hideSearchField,\n businessArr,\n topicArr,\n businessList, // 已选主题域对应的业务\n dataReviewVisible,\n submitVisible,\n taskID,\n curClickData,\n } = this.state\n\n let filterSearchFieldsArr = searchFieldsArr.filter(i => i.name.indexOf(searchValue) !== -1)\n\n return (\n <>\n
\n
\n
\n
\n this.setState({\n curPage: 1,\n domainValue: val,\n topicID: item.topic_id\n }, () => {\n this.onSearchFields({\n topic: val\n })\n })}\n />\n
\n
\n this.setState({curPage: 1, businessValue: val}, () => {\n this.onSearchFields({\n business: val\n })\n })}\n />\n
\n
\n ({})} // enter或触发onblur事件,所以这里传空func\n onFocus={() => this.setState({\n curPage: 1,\n hideSearchField: false\n })}\n onBlur={val => {\n setTimeout(() => {\n this.setState({\n hideSearchField: true\n })\n }, 500);\n }}\n onChange={val => this.setState({searchValue: val})}\n />\n {\n _.isArray(filterSearchFieldsArr) &&\n !!filterSearchFieldsArr.length &&\n !hideSearchField &&\n
\n {\n filterSearchFieldsArr.map((item, index) => (\n {\n this.onSearchFields({\n table_id: item.id\n })\n this.setState({\n hideSearchField: true,\n searchValue: item.name,\n tableID: item.id\n })\n }}>{item.name}
\n ))\n }\n
\n }\n
\n
\n {\n this.onSearchFields({\n search_create_user: val\n })\n }}\n onChange={val => this.setState({curPage: 1, search_create_user: val})}\n />\n
\n
\n this.addOrEditStandard({ title: '数据接入' }) }\n >接入数据\n
\n
\n
\n
\n \n {\n _.isArray(tableData.items) && tableData.items.length &&\n
\n {\n this.setState({\n curPage: page\n })\n this.onSearchFields({page})\n } }\n pageCountChange={ limit => {\n this.setState({\n curLimit: limit\n })\n this.onSearchFields({limit})\n } }\n />\n
\n }\n
\n \n\n this.setState({\n dataReviewVisible: typeof bool === \"boolean\" ? bool : !dataReviewVisible\n })}\n />\n\n this.setState({\n submitVisible: typeof bool === \"boolean\" ? bool : !submitVisible\n })}\n />\n \n )\n }\n}\n\nexport default DataManagement\n","import React from 'react'\nimport { connect } from 'react-redux'\nimport _ from 'lodash'\nimport SdwSelect from '@common/Select'\nimport SdwInput from '@common/Input'\nimport SdwTable from '@common/Table'\nimport SdwPagenation from '@common/Pagenation'\nimport DataReview from './DataReview'\nimport { Button } from 'element-react'\nimport { getItermSelects, getBusinessStatisticByTopic } from '@services/dataStandars'\nimport { getTableApiItems, getCollectConfigList } from '@services/dataAccess'\nimport SubmitDataWin from './SubmitDataWin'\nimport SdwMessage from '@common/Message'\n\nimport './style/index.css'\n\nclass LogManagement extends React.PureComponent {\n\n state = {\n curPage: 1,\n curLimit: 10,\n tableData: {},\n searchFieldsArr: [],\n searchValue: '',\n businessValue: '',\n search_update_user: '',\n domainValue: '',\n hideSearchField: true,\n field_name: '',\n businessArr: [],\n topicArr: [],\n topicID: '', // 已选主题域id\n businessList: [], // 已选主题域对应的业务\n dataReviewVisible: false,\n tableID: '',\n taskID: '',\n curClickData: {},\n submitVisible: false\n }\n\n componentDidMount() {\n this.initData()\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n // 清空查询\n if (prevState.searchValue !== this.state.searchValue && this.state.searchValue === '') {\n this.setState({\n tableID: ''\n }, this.onSearchFields)\n }\n if (prevState.topicID !== this.state.topicID) {\n this.getBusinessStatisticByTopic()\n }\n }\n\n initData = () => {\n const { current_page, per_page } = this.state.tableData || {}\n this.onGetAllTasks({\n page: !!current_page ? current_page : 1,\n limit: !!per_page ? per_page : 10\n })\n\n getItermSelects().then(res => {\n if (res && res.data && res.data.code === 0) {\n let record = res.data.data || {}\n let business = Array.isArray(record.business) ? record.business.map(i => {\n return {\n id: i.business_name,\n text: i.business_name\n }\n }) : []\n let topic = Array.isArray(record.topic) ? record.topic.map(j => {\n return {\n id: j.topic_name,\n text: j.topic_name,\n topic_id: j.id\n }\n }) : []\n\n this.setState({\n businessArr: business,\n topicArr: topic\n })\n }\n })\n\n // 目标表参数\n let paramData = {\n limit: 10000,\n search: JSON.stringify({\n data_set_type: {\n value: 'es',\n operator: '='\n },\n warehouse_level: {\n value: 'ODS',\n operator: '='\n },\n enable: {\n value: '1',\n operator: '='\n }\n })\n }\n\n // 目标表\n getTableApiItems(paramData).then(res => {\n if (res && res.data && res.data.code === 0) {\n let curArr = Array.isArray(res.data.data.items) ? res.data.data.items : []\n curArr = curArr.map(i => {\n let curName = !!i.database_name ? `${i.database_name}.${i.table_name}` : `${i.table_name}`\n return Object.assign({}, i, {\n name: `${curName}(${i.data_set_chinese})`,\n })\n })\n\n this.setState({searchFieldsArr: curArr})\n } else {\n SdwMessage.error('获取目标表数据失败')\n }\n })\n .catch(error => {\n SdwMessage.error('获取目标表接口异常:' + error)\n })\n }\n\n // 根据主题域ID请求对应的业务\n getBusinessStatisticByTopic = () => {\n let { topicID } = this.state\n getBusinessStatisticByTopic({id: topicID}).then(res => {\n if (res && res.data && res.data.code === 0) {\n let record = res.data.data && res.data.data.list.map(i => {\n return {\n id: i.business_name,\n text: i.business_name\n }\n }) || []\n this.setState({\n businessList: record\n })\n }\n })\n }\n\n getColumns = () => {\n return [\n {\n title: \"ID\",\n dataIndex: \"id\",\n width: 30\n },\n {\n title: \"主题域\",\n dataIndex: \"topic\"\n },\n {\n title: \"业务\",\n dataIndex: \"business\"\n },\n {\n title: \"表英文名\",\n dataIndex: 'store_table_name_en'\n },\n {\n title: \"表中文名\",\n dataIndex: \"store_table_name_ch\"\n },\n {\n title: \"数据源类型\",\n dataIndex: \"data_set_type\"\n },\n {\n title: \"创建人\",\n dataIndex: \"update_user\"\n },\n {\n title: \"接入验证\",\n dataIndex: \"access_test_result\"\n },\n {\n title: \"修改时间\",\n dataIndex: \"update_time\",\n width: 180,\n },\n {\n title: \"操作\",\n width: 180,\n render: data => {\n return (\n \n this.addOrEditStandard({\n title: '编辑',\n data\n }, true) }\n style={{\"fontSize\": \"14px\"}}\n >编辑\n {/* 这期暂时隐藏 */}\n {/* this.setState({ taskID: data.id }, () => this.setState({dataReviewVisible: true}))}\n style={{\"fontSize\": \"14px\"}}\n >预览数据 */}\n this.onSubmitWork(data) }\n style={{\"fontSize\": \"14px\"}}\n >提交任务\n \n )\n }\n }\n ]\n }\n\n onSubmitWork = data => {\n if (data.access_test_result != '测试通过') {\n SdwMessage.info('测试未通过,无法提交任务!')\n return\n }\n this.setState({ curClickData: data }, () => this.setState({submitVisible: true}))\n }\n\n addOrEditStandard = (obj, isEdit = false) => {\n\n // 新增更新redux数据\n if (!isEdit) {\n this.props.updateFormData({})\n this.props.updateTableData([])\n }\n\n this.props.history.push({\n pathname: '/admin/dataCollect/dataAccess',\n state: {\n ...obj,\n curPageIndex: 1,\n isEdit\n }\n })\n }\n\n onGetAllTasks = (params = {}) => {\n getCollectConfigList(params).then(res => {\n if (res && res.data && res.data.code === 0) {\n let record = res.data.data || {}\n this.setState({ tableData: record })\n } else {\n SdwMessage.error('获取数据失败')\n }\n })\n .catch(error => {\n SdwMessage.error('接口异常:' + error)\n })\n }\n\n onSearchFields = (params = {}) => {\n let { domainValue, businessValue, search_update_user, tableID, curPage, curLimit } = this.state\n let topic = !!params.topic ? params.topic : domainValue\n let business = !!params.business ? params.business : businessValue\n let table_id = !!params.table_id ? params.table_id : tableID\n let curParams = {\n page: !!params.page ? params.page : curPage,\n limit: !!params.limit ? params.limit : curLimit,\n search: JSON.stringify({\n ...(!!topic ? {\n topic: {\n value: topic,\n operator: '='\n }\n } : {}),\n ...(!!business ? {\n business: {\n value: business,\n operator: '='\n }\n } : {}),\n ...(!!table_id ? {\n store_table_id: {\n value: table_id,\n operator: '='\n }\n } : {}),\n ...(!!search_update_user ? {\n update_user: {\n value: search_update_user,\n operator: 'like'\n }\n } : {})\n })\n }\n this.onGetAllTasks(curParams)\n }\n\n onChangeVisible = bool => {\n const { submitVisible } = this.state\n this.setState({\n submitVisible: typeof bool === \"boolean\" ? bool : !submitVisible\n })\n if (!bool) this.initData()\n }\n\n render () {\n let {\n tableData,\n searchFieldsArr,\n searchValue,\n businessValue,\n search_update_user,\n domainValue,\n hideSearchField,\n businessArr,\n topicArr,\n businessList, // 已选主题域对应的业务\n dataReviewVisible,\n submitVisible,\n taskID,\n curClickData,\n } = this.state\n\n let filterSearchFieldsArr = searchFieldsArr.filter(i => i.name.indexOf(searchValue) !== -1)\n\n return (\n <>\n
\n
\n
\n
\n this.setState({\n curPage: 1,\n domainValue: val,\n topicID: item.topic_id\n }, () => {\n this.onSearchFields({\n topic: val\n })\n })}\n />\n
\n
\n this.setState({curPage: 1, businessValue: val}, () => {\n this.onSearchFields({\n business: val\n })\n })}\n />\n
\n
\n ({})} // enter或触发onblur事件,所以这里传空func\n onFocus={() => this.setState({\n curPage: 1,\n hideSearchField: false\n })}\n onBlur={val => {\n setTimeout(() => {\n this.setState({\n hideSearchField: true\n })\n }, 500);\n }}\n onChange={val => this.setState({searchValue: val})}\n />\n {\n _.isArray(filterSearchFieldsArr) &&\n !!filterSearchFieldsArr.length &&\n !hideSearchField &&\n
\n {\n filterSearchFieldsArr.map((item, index) => (\n {\n this.onSearchFields({\n table_id: item.id\n })\n this.setState({\n hideSearchField: true,\n searchValue: item.name,\n tableID: item.id\n })\n }}>{item.name}
\n ))\n }\n
\n }\n
\n
\n {\n this.onSearchFields({\n search_update_user: val\n })\n }}\n onChange={val => this.setState({curPage: 1, search_update_user: val})}\n />\n
\n
\n this.addOrEditStandard({ title: '数据接入' }) }\n >接入数据\n
\n
\n
\n
\n \n {\n _.isArray(tableData.items) && tableData.items.length &&\n
\n {\n this.setState({\n curPage: page\n })\n this.onSearchFields({page})\n } }\n pageCountChange={ limit => {\n this.setState({\n curLimit: limit\n })\n this.onSearchFields({limit})\n } }\n />\n
\n }\n
\n \n\n this.setState({\n dataReviewVisible: typeof bool === \"boolean\" ? bool : !dataReviewVisible\n })}\n />\n\n \n \n )\n }\n}\n\nconst mapDispatch = dispatch => ({\n updateFormData: dispatch.dataAccess.updateFormData,\n updateTableData: dispatch.dataAccess.updateTableData,\n})\n\nexport default connect(null, mapDispatch)(LogManagement)\n","import React from 'react'\nimport _ from 'lodash'\nimport SdwBreadCrumbs from '@common/BreadCrumbs'\nimport SdwTabs from '@common/Tabs'\nimport DbManagement from './DbManagement'\nimport LogManagement from './LogManagement'\nimport { hasPriv } from '@components/FrontendAuth/AuthMap'\n\nimport './style/index.css'\n\nconst menu = [{\n title: '数据库',\n path: '/dbManagement',\n component: DbManagement,\n priv: 'getAllTasks'\n}, {\n title: '日志',\n path: '/logmanagement',\n component: LogManagement,\n priv: 'getCollectConfigList'\n}]\n\nclass DataManagement extends React.PureComponent {\n\n state = {\n curMenuIndex: 0\n }\n\n componentDidMount() {\n const search = _.get(this, 'props.location.search')\n\n // 回到日志tab\n if (!!search && search.indexOf('tab=log')) this.setState({curMenuIndex: 1})\n }\n\n render () {\n let { curMenuIndex } = this.state\n\n const hasPrivMenu = menu.filter(i => hasPriv(i.priv))\n\n return (\n
\n \n\n \n
\n )\n }\n}\n\nexport default DataManagement","import { request } from '../utils/request'\n\nexport const getAllModels = params => {\n return request({ url: '/collection/dataGovern/getAllModels', method: 'get', params: params })\n}\n\nexport const downloadModel = params => {\n return request({ url: '/collection/dataGovern/downloadModel', method: 'get', params: params })\n}\n\nexport const getServiceConfig = params => {\n return request({ url: '/collection/dataGovern/getServiceConfig', method: 'get', params: params })\n}\n\nexport const getAllUploadRecord = params => {\n return request({ url: '/collection/dataGovern/getAllUploadRecord', method: 'get', params: params })\n}\n\nexport const deleteUploadRecord = params => {\n return request({ url: '/collection/dataGovern/deleteUploadRecord', method: 'get', params: params })\n}\n\nexport const uploadFile = params => {\n return request({ url: '/collection/dataGovern/uploadFile', method: 'post', data: params })\n}","import { PureComponent } from \"react\"\nimport _ from 'lodash'\nimport SdwButton from '@common/Button'\nimport SdwTable from '@common/Table'\nimport SdwPagenation from '@common/Pagenation'\nimport { getAllModels } from '@services/dataGovern'\n\nimport './index.css'\nimport { hasPriv } from \"@components/FrontendAuth/AuthMap\"\nimport { fileDownload } from \"@utils/request\"\n\nexport default class TableTempConfig extends PureComponent {\n\n state = {\n tableData: {},\n searchData: {\n page: 1,\n limit: 10\n }\n }\n\n componentDidMount() {\n this.initData()\n }\n\n initData = () => {\n getAllModels({\n ...this.state.searchData\n }).then(res => {\n const code = _.get(res, 'data.code')\n if (code === 0) {\n const data = _.get(res, 'data.data')\n if (!_.isEmpty(data)) this.setState({tableData: data})\n }\n })\n }\n\n getcolumns = () => {\n return [\n {\n title: \"配置时间\",\n dataIndex: \"create_time\",\n }, {\n title: \"业务\",\n dataIndex: \"service_name\",\n }, {\n title: \"模板类型\",\n dataIndex: \"model_name\",\n }, {\n title: \"最后修改时间\",\n dataIndex: \"update_time\",\n }, {\n title: \"最后修改人\",\n dataIndex: \"update_user\",\n }, \n ...hasPriv('downloadModel') ? [{\n title: \"操作\",\n render: data => {\n return (\n <>\n fileDownload(`/collection/dataGovern/downloadModel?id=${data.id}`)}\n />\n \n )\n }\n }] : []\n ]\n }\n\n render() {\n const { tableData, searchData } = this.state\n\n return (\n <>\n {/*
\n
\n
\n
\n 表模板类型\n
\n \n
\n this.addOrEditStandard({ title: '数据接入' }) }\n />\n
\n
\n
\n
*/}\n \n
\n \n {\n this.setState({\n searchData: _.assign({}, searchData, {page})\n }, this.initData)\n }}\n pageCountChange={limit => {\n this.setState({\n searchData: _.assign({}, searchData, {limit})\n }, this.initData)\n }}\n />\n
\n \n )\n }\n}","import { useState } from 'react'\nimport PropTypes from 'prop-types'\nimport _ from 'lodash'\n\nimport './index.css'\n\nfunction UpLoad(props) {\n const { height, width, placeholder, tip } = props\n\n const [files, setFiles] = useState({})\n\n function onFileChage(e) {\n let file = e.target.files \n setFiles(file)\n\n let formData = new FormData()\n formData.append(\"upload-file\", file[0])\n formData.append(\"fileName\", _.get(file, '[0].name'))\n props.changeValue(file, formData)\n }\n\n const NAME = files && files[0] && `已选择文件:${files[0].name}` || placeholder\n return (\n
\n \n { NAME }\n onFileChage(e)} />\n \n {\n !!tip &&\n { tip }\n }\n
\n )\n}\n\nUpLoad.propTypes = {\n accees: PropTypes.string,\n placeholder: PropTypes.string,\n tip: PropTypes.string,\n changeValue: PropTypes.func,\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n}\n\nUpLoad.defaultProps = {\n accees: '*',\n width: '',\n placeholder: '请选择上传文件',\n tip: '',\n height: 32,\n changeValue: _.noop,\n}\n\nexport default UpLoad","import { PureComponent } from \"react\"\nimport _ from 'lodash'\nimport SdwSelect from '@common/Select'\nimport SdwUpLoad from '@common/UpLoad'\nimport SdwButton from '@common/Button'\nimport SdwMessage from \"@common/Message/index\"\nimport { getServiceConfig, getAllModels, uploadFile } from '@services/dataGovern'\n\nimport './index.css'\n\nexport default class BusinessDataUpload extends PureComponent {\n\n state = {\n file: '',\n businessOption: [],\n modelOption: [],\n formData: {}\n }\n\n componentDidMount() {\n this.initData()\n }\n\n initData = () => {\n getServiceConfig().then(res => {\n const code = _.get(res, 'data.code')\n if (code === 0) {\n const list = _.get(res, 'data.data')\n if (_.isArray(list)) {\n let arr = list.map(i => ({ id: i, text: i }))\n this.setState({businessOption: arr})\n }\n }\n })\n }\n\n updateFormData = (key, val) => {\n let cloneObj = _.cloneDeep(this.state.formData)\n cloneObj[key] = val\n if (key === 'service_name') {\n cloneObj['model_id'] = ''\n this.onGetModel(val)\n }\n this.setState({ formData: cloneObj })\n }\n\n onGetModel = service_name => {\n let params = {\n page: 1,\n limit: 1000,\n search: JSON.stringify({\n service_name: {\n value: service_name,\n operator: '='\n }\n })\n }\n getAllModels(params).then(res => {\n const code = _.get(res, 'data.code')\n if (code === 0) {\n const items = _.get(res, 'data.data.items') || []\n let modelOption = items.map(i => ({\n id: i.id,\n text: i.model_name\n }))\n if (_.isArray(modelOption)) this.setState({ modelOption })\n }\n })\n }\n\n onSubmit = () => {\n const { formData, file } = this.state\n const fileName = _.get(file, '[0].name')\n const fileSize = _.get(file, '[0].size')\n // console.log('********file: ', file);\n\n if (!/\\.(xlsx|xls)$/.test(fileName)) return SdwMessage.warning('仅支持导入上传xlsx/xls文件格式!')\n if (fileSize > 4*1024*1024) return SdwMessage.warning('仅支4M以内文件!')\n \n let params = new FormData()\n params.append('upload-file', file[0])\n params.append('file_name', fileName)\n params.append('id', formData.model_id)\n params.append('service_name', formData.service_name)\n\n uploadFile(params).then(res => {\n const code = _.get(res, 'data.code')\n if (code ===0) {\n this.setState({\n formData: {},\n file: ''\n })\n SdwMessage.success('导入文件成功!')\n } else {\n let msg = _.get(res, 'data.msg') || '导入文件失败!'\n SdwMessage.error(msg)\n }\n }).catch(err => SdwMessage.error('接口异常' + err))\n }\n\n render() {\n const { file, businessOption, modelOption, formData } = this.state\n\n return (\n
\n
\n
\n 所属业务\n this.updateFormData('service_name', val)}\n />\n
\n
\n 模板类型\n this.updateFormData('model_id', val)}\n />\n
\n
\n 导入文件\n this.setState({ file })}\n />\n
\n
\n \n
\n
\n
\n )\n }\n}","import { PureComponent } from \"react\"\nimport _ from 'lodash'\nimport SdwButton from '@common/Button'\nimport SdwTable from '@common/Table'\nimport SdwPagenation from '@common/Pagenation'\nimport Dialog from '@common/Dialog'\nimport { getAllUploadRecord, deleteUploadRecord } from '@services/dataGovern'\nimport SdwMessage from \"@common/Message/index\"\nimport { hasPriv } from \"@components/FrontendAuth/AuthMap\"\nimport { fileDownload } from \"@utils/request\"\n\nexport default class BusinessDataUploadRecord extends PureComponent {\n\n state = {\n tableData: {},\n searchData: {\n page: 1,\n limit: 10\n }, // 搜索参数: limit\\page\n visible: false,\n curID: ''\n }\n\n componentDidMount() {\n this.initData()\n }\n\n initData = () => {\n const { searchData } = this.state\n getAllUploadRecord({\n ...searchData\n }).then(res => {\n const code = _.get(res, 'data.code')\n if (code === 0) {\n const data = _.get(res, 'data.data')\n if (!_.isEmpty(data)) this.setState({\n tableData: data\n })\n } else {\n const msg = _.get(res, 'data.msg') || '获取数据失败!'\n SdwMessage.error(msg)\n }\n }).catch(err => SdwMessage.error('接口异常' + err))\n }\n\n getcolumns = () => {\n return [\n {\n title: \"上传时间\",\n dataIndex: \"create_time\",\n }, {\n title: \"业务\",\n dataIndex: \"service_name\",\n }, {\n title: \"文件名\",\n dataIndex: \"package_name\",\n }, {\n title: \"模板类型\",\n dataIndex: \"model_name\",\n }, {\n title: \"创建人\",\n dataIndex: \"create_user\",\n }, {\n title: \"最后操作人\",\n dataIndex: \"update_user\",\n },\n ...(hasPriv('downloadUploadRecord') || hasPriv('deleteUploadRecord')) ? [{\n title: \"操作\",\n render: data => {\n return (\n <>\n {\n hasPriv('downloadUploadRecord') &&\n fileDownload(`/collection/dataGovern/downloadUploadRecord?id=${data.id}`)}\n />\n }\n {\n hasPriv('deleteUploadRecord') &&\n this.onDelete(data)}\n />\n }\n \n )\n }\n }] : []\n ]\n }\n\n changeDialogVisible = bool => {\n this.setState({\n visible: bool\n })\n }\n\n onDelete = data => {\n this.setState({\n curID: data.id\n })\n\n // 二次确定弹窗\n this.changeDialogVisible(true)\n }\n\n onSureClick = () => {\n const { curID } = this.state\n\n if (curID) {\n deleteUploadRecord({\n id: curID\n }).then(res => {\n const code = _.get(res, 'data.code')\n if (code === 0) {\n this.initData()\n SdwMessage.success('删除成功!')\n this.changeDialogVisible(false)\n } else {\n const msg = _.get(res, 'data.msg') || '删除失败!'\n SdwMessage.error(msg)\n }\n }).catch(err => SdwMessage.error('接口异常' + err))\n }\n }\n\n render() {\n const { tableData, searchData, visible } = this.state\n\n return (\n <> \n
\n \n {\n this.setState({\n searchData: _.assign({}, searchData, {page})\n }, this.initData)\n }}\n pageCountChange={limit => {\n this.setState({\n searchData: _.assign({}, searchData, {limit})\n }, this.initData)\n }}\n />\n
\n\n {\n visible &&\n this.changeDialogVisible(false)}\n onSureClick={this.onSureClick}\n >\n
相关数据将标记为删除,是否确认?
\n \n }\n\n \n )\n }\n}","import { PureComponent } from \"react\"\nimport _ from 'lodash'\nimport SdwBreadCrumbs from '@common/BreadCrumbs'\nimport SdwTabs from '@common/Tabs'\nimport TableTempConfig from './TableTempConfig'\nimport BusinessDataUpload from './BusinessDataUpload'\nimport BusinessDataUploadRecord from './BusinessDataUploadRecord'\nimport { hasPriv } from '@components/FrontendAuth/AuthMap'\nimport NoRight from \"@pages/NoRight\"\n\nexport default class DataGovern extends PureComponent {\n\n state = {\n menu: [\n {\n title: '表模版列表',\n path: '/table_temp_config',\n component: TableTempConfig,\n priv: 'getAllModels'\n }, {\n title: '经分业务数据上传',\n path: '/business_data_upload',\n component: BusinessDataUpload,\n priv: 'getServiceConfig'\n }, {\n title: '经分业务数据上传记录',\n path: '/business_data_upload_record',\n component: BusinessDataUploadRecord,\n priv: 'getAllUploadRecord'\n }\n ]\n }\n\n render() {\n const { menu } = this.state\n const curMenu = _.isArray(menu) ? menu.filter(i => hasPriv(i.priv)) : []\n return (\n <>\n \n\n {\n curMenu.length > 0 ?\n :\n \n }\n \n )\n }\n}","import React from 'react'\nimport _ from 'lodash'\nimport SdwDialog from '@common/Dialog'\nimport SdwInput from '@common/Input'\nimport SdwSelect from '@common/Select'\nimport SdwMessage from '@common/Message'\nimport SdwDateTimePicker from '@common/DateTimePicker'\nimport './css/AddWin.css'\nimport { saveTable } from '@services/midTable'\nimport { connect } from 'react-redux'\n\nclass AddWin extends React.Component {\n\n state = {\n datePicker: '',\n params:{\n job_name:\"\",\n exec_cycle:\"1/day\",\n job_type:0,\n },\n sholdCheckValidate:false,\n }\n\n\n componentDidMount () {\n this.initData()\n }\n\n\n initData = () => {\n let {isEdit, editMidTable} = this.props\n if (isEdit) {\n this.setState({\n params:editMidTable,\n datePicker: editMidTable.schedule_time\n })\n }\n }\n\n handleSubmit =() => {\n let {datePicker, params} = this.state\n let isEdit = this.props.isEdit\n let {job_name, exec_cycle, job_type} = params\n if (!job_name || !datePicker) {\n this.setState({\n sholdCheckValidate:true\n })\n return\n }\n let job = {\n job_name:job_name,\n schedule_time:datePicker,\n exec_cycle:exec_cycle,\n job_type:job_type,\n enabled: 1,\n max_retries: 2,\n }\n if (job_type == 0) {\n job.special_code = \"\"\n }\n saveTable({\n ...isEdit?{id:params.id}:{},\n job\n }).then(res => {\n if (res.data && res.data.code === 0) {\n this.props.changeShowAddWin(false)\n if (isEdit) {\n this.props.updatePage(params.id)\n } else {\n this.props.updatePage()\n }\n\n SdwMessage.success(isEdit?\"修改成功\":\"新增成功\")\n } else {\n let msg = res.data && res.data.data\n SdwMessage.error(msg);\n }\n }, () => SdwMessage.error(\"接口异常\"))\n }\n\n formatDate = date => {\n if (_.isArray(date)) {\n return date.map((item, index) => {\n let time = index === 0 ? '00:00:00' : '23:59:59'\n return `${item.getFullYear()}-${item.getMonth() + 1}-${item.getDate()} ${time}`\n })\n } else {\n let year = date.getFullYear()\n let month = (date.getMonth() + 1)\n let day = date.getDate()\n let hours = date.getHours()\n let minutes = date.getMinutes()\n let seconds = date.getSeconds()\n\n let dateStr = year+ \"-\"\n dateStr += (month < 10 ? \"0\"+month:month) + \"-\"\n dateStr += (day < 10 ? \"0\"+day:day) + \" \"\n dateStr += (hours < 10 ? \"0\"+hours:hours) + \":\"\n dateStr += (minutes < 10 ? \"0\"+minutes:minutes) + \":\"\n dateStr += (seconds < 10 ? \"0\"+seconds:seconds)\n return dateStr\n }\n }\n\n render () {\n let {\n isEdit,\n title,\n showAddWin,\n changeShowAddWin,\n cfgData,\n } = this.props\n let midTableRunCyclesOption = cfgData.midTableRunCycles.map(i => {\n return {id:i.value, text:i.name, item:i}\n })\n\n let {\n params,\n datePicker,\n sholdCheckValidate\n } = this.state\n\n return (\n
\n changeShowAddWin(false)}\n onSureClick={this.handleSubmit}\n >\n
\n 任务名称\n {\n this.setState({\n params: Object.assign({}, params, {\n job_name:val\n })\n })\n }}\n sholdCheckValidate={sholdCheckValidate}\n validateFun={value => !!value ? true : '任务名称不能为空'}\n />\n
\n
\n 中间表类型\n {\n this.setState({\n params: Object.assign({}, params, {\n job_type:val\n })\n })\n }}\n />\n
\n
\n 调度时间\n {\n this.setState({\n datePicker: val\n })\n }}\n disabledDateFun={time=>time.getTime() > (Date.now())}\n />\n
\n
\n 调度周期\n {\n this.setState({\n params: Object.assign({}, params, {\n exec_cycle:val\n })\n })\n }}\n />\n
\n \n
\n )\n }\n}\nconst mapState = state => ({\n cfgData: state.midTableView.cfgData,\n})\n\nconst mapDispatch = dispatch => ({\n})\n\nexport default connect(mapState, mapDispatch)(AddWin)\n","import React from 'react'\nimport _ from 'lodash'\nimport SdwDialog from '@common/Dialog'\nimport SdwSelect from '@common/Select'\nimport SdwCheckbox from '@common/Checkbox'\nimport SdwMessage from '@common/Message'\nimport { DateRangePicker } from 'element-react'\nimport { runTargetResult, searchDistinctTarget } from '@services/application'\nimport {taskReRun } from '@services/midTable'\nimport { formatTime } from '@utils/formatTime'\nimport { commonApi } from '@utils/request'\n\n//import './style/reRunWin.css'\n\nexport default class ReRunWin extends React.Component {\n state = {\n dataPicker: '',\n is_cover: false,\n multipleValue: [],\n allTargetArr: [],\n }\n\n componentDidUpdate (prevProps, prevState) {\n if (prevProps.record.id !== this.props.record.id) {\n this.initData()\n }\n }\n\n initData = () => {\n this.setState({\n dataPicker: '',\n isChecked: false,\n isChecked2: false,\n multipleValue: []\n })\n\n // search={\"table_id\":{\"value\":61,\"operator\":\"=\"}}\n if (!this.props.record.id) return\n commonApi(searchDistinctTarget, {\n search: {\n table_id: {\n value: this.props.record.id,\n operator: \"=\"\n }\n }\n }).then(arr => {\n if (!_.isArray(arr)) return\n const allTargetArr = arr.reduce((prev, i) => {\n if (prev.every(j => i.target_id != j.id)) {\n prev.push({\n id: i.target_id,\n text: `${i.target_name_en}(${i.target_name_cn || '-'})`\n })\n }\n return prev\n }, [])\n this.setState({\n allTargetArr\n })\n })\n }\n\n handleSubmit = () => {\n let { dataPicker, is_cover} = this.state\n let { record} = this.props\n console.log(\"========record\", record)\n // 未选择时间,不下发重跑\n if (!dataPicker || dataPicker.length != 2) return\n let params = {}\n params[\"id\"] = record.id\n params[\"is_cover\"] = +is_cover\n if (dataPicker && dataPicker.length > 0) {\n params[\"start_time\"] = formatTime(+new Date(dataPicker[0]), 0)\n params[\"end_time\"] = formatTime(+new Date(dataPicker[1]), 0)\n }\n taskReRun(params).then(res => {\n let record = res && res.data || {}\n if (record.code === 0) {\n SdwMessage.success(`中间表重跑任务提交成功`)\n this.props.changeReRunVisible(false)\n return\n }\n const errMsg = record.msg || `中间表重跑任务提交失败`\n SdwMessage.error(errMsg)\n }, () => SdwMessage.error(\"接口异常\"))\n }\n\n render () {\n let { reRunVisible, changeReRunVisible } = this.props\n\n let { dataPicker, is_cover } = this.state\n\n return (\n changeReRunVisible(false)}\n onSureClick={this.handleSubmit}\n width={550}\n height={300}\n >\n
\n 时间范围\n time.getTime() > (Date.now() + 24*60*60*1000)}\n onChange={date => {\n this.setState({ dataPicker: date })\n }}\n />\n
\n
\n
\n {\n this.setState({\n is_cover: !is_cover\n })\n }}\n />\n
\n {/*覆盖式更新(按最新配置重新加工)*/}\n
\n \n )\n }\n}\n","import React, { useState, useEffect, useLayoutEffect } from 'react'\nimport _ from 'lodash'\nimport SdwBreadCrumbs from '@common/BreadCrumbs'\nimport SdwSelect from '@common/Select'\nimport SdwInput from '@common/Input'\nimport SdwTable from '@common/Table'\nimport SdwPagination from '@common/Pagenation'\nimport SdwButton from '@common/Button'\nimport SdwEnable from '@common/Enable'\nimport SdwMessage from '@common/Message'\nimport AddWin from './AddWin'\nimport { tablePages, selectTableList, getPublicCfg} from '@services/midTable'\nimport { hasPriv } from '@components/FrontendAuth/AuthMap'\nimport ReRunWin from './ReRunWin'\nimport { connect } from 'react-redux'\nimport {withRouter} from 'react-router-dom'\n\nfunction MidTable(props) {\n\n const [showAddWin, setShowAddWin] = useState(false)\n const [reRunVisible, setReRunVisible] = useState(false)\n const [isEdit, setIsEdit] = useState(false)\n const [searchObj, setSearchObj] = useState({\n page: props.pageInfo || 1,\n limit: 10,\n search: {}\n })\n const [curClickData, setCurClickData] = useState({})\n const [tableNameArr, setTableNameArr] = useState([])\n const [tableName, seTableName] = useState(\"\")\n\n const [midTableList, setMidTableList] = useState([])\n\n useLayoutEffect(() => {\n initData()\n getPublicCfgs()\n // tablePages().then(res => {\n // const code = _.get(res, 'data.code')\n // if (code === 0) {\n // const midTableList = _.get(res, 'data.data')\n // setMidTableList(midTableList)\n // }\n // })\n }, [])\n // 获取所有计算方式选项列表\n useLayoutEffect(() => {\n selectTableList().then(res => {\n const code = _.get(res, 'data.code')\n if (code === 0) {\n const data = _.get(res, 'data.data')\n if (!_.isEmpty(data)) {\n console.log(\"selectTableList========\", data.map((item) => {\n return {id:item.id,database_name:item.database_name,data_set_chinese:item.data_set_chinese,text:item.database_name+\".\"+item.table_name+\"(\"+item.data_set_chinese+\")\"}\n }))\n setTableNameArr(data.map((item) => {\n return {id:item.id,database_name:item.database_name,data_set_chinese:item.data_set_chinese,text:item.database_name+\".\"+item.table_name+\"(\"+item.data_set_chinese+\")\"}\n }))\n }\n } else {\n const msg = _.get(res, 'data.msg') || '接口异常'\n SdwMessage.err(msg)\n }\n }).catch(err => SdwMessage.err('接口异常' + err))\n }, [])\n\n useEffect(() => {\n initData()\n }, [searchObj])\n\n function initData() {\n const { page, limit, search } = searchObj\n console.log(\"initData=====search\", search)\n let isPublishState = 0\n if (search.hasOwnProperty(\"publish_state\") && (search.publish_state == 0 || search.publish_state == 1) ) {\n isPublishState = 1\n }\n tablePages({\n page,\n limit,\n search: {\n ...isPublishState ? {\n publish_state: {\n value: search.publish_state,\n operator: '='\n }\n } : {},\n ...search.id ? {\n id: {\n value: search.id,\n operator: '='\n }\n } : {},\n ...search.table_name ? {\n database_name: {\n value: search.table_name.database_name,\n operator: 'like'\n }\n } : {},\n ...search.job_name ? {\n job_name: {\n value: search.job_name,\n operator: 'like'\n }\n } : {}\n }\n }).then(res => {\n const code = _.get(res, 'data.code')\n if (code === 0) {\n const midTableList = _.get(res, 'data.data')\n if (!_.isEmpty(midTableList)) setMidTableList(midTableList)\n } else {\n const msg = _.get(res, 'data.msg') || '接口异常'\n SdwMessage.err(msg)\n }\n }).catch(err => SdwMessage.err('接口异常' + err))\n }\n function getPublicCfgs () {\n getPublicCfg().then(res => {\n if (res.data.code === 0 && res.data.data) {\n let cfgData = {}\n for (let i in res.data.data) {\n cfgData[i] = res.data.data[i]\n }\n props.updateCfgData(cfgData)\n }\n })\n }\n function updateSearchObj(key, val) {\n let cloneObj = _.cloneDeep(searchObj)\n cloneObj[key] = val\n setSearchObj(cloneObj)\n }\n\n function updateSearchObjBySearch(key, val) {\n let cloneObj = _.cloneDeep(searchObj)\n cloneObj.search[key] = val\n if (key != 'page') {\n cloneObj['page'] = 1\n }\n setSearchObj(cloneObj)\n }\n\n function getColumns() {\n return [\n {\n title: \"ID\",\n dataIndex: \"id\",\n width: 60\n },\n {\n title: \"任务名称\",\n dataIndex: \"job_name\",\n width: 160\n },\n {\n title: \"表名称\",\n width: 200,\n render(data){\n return (\n {`${data.database_name??\"-\"}`+'.'+`${data.table_name??\"-\"}`+'('+`${data.data_set_chinese??\"-\"}`+')'}\n )\n }\n },\n {\n title: \"业务/主题域\",\n dataIndex: \"topic\",\n width: 100\n },\n {\n title: \"发布状态\",\n width: 100,\n render: function(data) {\n return (\n <>\n {_.isEqual(typeof data.publish_state, 'number') ?\n (data.publish_state ? '已发布' : '未发布') : '-'}\n \n )\n }\n },\n {\n title: \"创建人\",\n dataIndex: \"create_user\",\n width: 100\n },\n {\n title: \"创建时间\",\n dataIndex: \"create_time\",\n width: 180\n },\n {\n title: \"修改时间\",\n dataIndex: \"modify_time\",\n width: 180\n },\n {\n title: \"操作\",\n width: 100,\n render: data => {\n return (\n
\n {/* 编辑权限放开,都可以点击编辑进入弹窗查看数据 */}\n {\n props.history.push({\n pathname: '/admin/dataCollect/editMidTable/'+data.id,\n state: data\n })\n }}\n />\n\n {\n setCurClickData(data)\n setReRunVisible(true)\n }}\n />\n
\n )\n }\n }\n ]\n }\n\n const { publish_state, id, job_name } = searchObj.search || {}\n return (\n <>\n \n\n
\n
\n
\n
\n updateSearchObjBySearch('id', val)}\n />\n
\n
\n updateSearchObjBySearch('job_name', val)}\n />\n
\n
\n {\n seTableName(val)\n console.log(\"+======item\", item)\n updateSearchObjBySearch('table_name', item)\n }}\n />\n
\n
\n updateSearchObjBySearch('publish_state', val)}\n />\n
\n {\n hasPriv('setMonitorServerConfig') &&\n
\n {\n setShowAddWin(true)\n setIsEdit(false)\n setCurClickData({})\n } }\n />\n
\n }\n
\n
\n\n
\n \n {\n _.isArray(midTableList.items) && midTableList.items.length &&\n
\n updateSearchObj('page', val) }\n pageCountChange={ val => updateSearchObj('limit', val) }\n />\n
\n }\n
\n\n {\n showAddWin &&\n setShowAddWin(bool)}\n updatePage={initData}\n />\n }\n {\n reRunVisible && \n }\n
\n \n )\n}\n\nconst mapState = state => ({\n pageInfo: state.page.pageInfo,\n cfgData: state.midTableView.cfgData,\n})\n\nconst mapDispatch = dispatch => ({\n updateCfgData:dispatch.midTableView.updateCfgData,\n})\n\nexport default withRouter(connect(mapState, mapDispatch)(MidTable))\n","import React from 'react'\nimport _ from 'lodash'\nimport SdwDialog from '@common/Dialog'\nimport SdwSelect from '@common/Select'\nimport SdwMessage from '@common/Message'\nimport './css/index.css'\nimport { getDetailInfo, getNodeFields, jobPublish } from '@services/midTable'\nimport {getTableApiItems } from '@services/dataAccess'\nimport { connect } from 'react-redux'\n\nclass JobPublish extends React.Component {\n\n state = {\n params:{\n \"id\": \"\", //\n \"table_id\": \"\", // 落地表id\n \"table_primary_key\": \"\", // 多选,选节点的字段\n \"result_id\": \"\", // 节点id\n \"partition_field_id\": \"\", // 分区字段\n },\n sholdCheckValidate:false,\n tableList: [],\n nodeList:[],\n clickItem:{},\n fieldsListOption:[],\n }\n\n componentDidMount () {\n this.initData()\n this.getDetailInfo()\n this.initTableList()\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n let {params} = this.state\n if (prevState.params.id !== params.id) {\n if (!params.result_id) {\n this.setState({\n params:_.assign({}, params, {\n table_primary_key: \"\",\n }),\n })\n }\n }\n }\n\n initData = () => {\n let {stepList, editMidTable} = this.props\n let nodeList = []\n for (let i in stepList) {\n nodeList.push(stepList[i])\n }\n this.setState({\n clickItem:stepList[editMidTable.result_id]?stepList[editMidTable.result_id]:{},\n nodeList:nodeList\n }, this.iniDataSourceFields)\n }\n\n getDetailInfo = () => {\n let {editMidTable} = this.props\n getDetailInfo({\n id:editMidTable.id,\n }).then(res => {\n if (res.data && res.data.code === 0) {\n let detailInfo = res.data.data\n this.setState({\n params:{\n id: editMidTable.id, //\n table_id: detailInfo.table_id || \"\", // 落地表id\n table_primary_key: detailInfo.table_primary_key || \"\", // 多选,选节点的字段\n result_id: detailInfo.result_id || \"\", // 节点id\n partition_field_id: detailInfo.partition_field_id || \"\", // 分区字段\n },\n })\n }\n }, () => SdwMessage.error(\"接口异常\"))\n }\n\n initTableList = () => {\n // 目标表参数\n let paramData = {\n limit: 10000,\n search: JSON.stringify({\"warehouse_level\":{\"value\":\"DWD\",\"operator\":\"=\"},\"enable\":{\"value\":1,\"operator\":\"=\"}})\n }\n\n // 目标表\n getTableApiItems(paramData).then(res => {\n if (res && res.data && res.data.code === 0) {\n let curArr = Array.isArray(res.data.data.items) ? res.data.data.items : []\n curArr = curArr.map(i => {\n let curName = !!i.database_name ? `${i.database_name}.${i.table_name}` : `${i.table_name}`\n return Object.assign({}, i, {\n text: `${curName}(${i.data_set_chinese})`,\n })\n })\n\n this.setState({tableList: curArr})\n } else {\n SdwMessage.error('获取落地表数据失败')\n }\n })\n .catch(error => {\n SdwMessage.error('获取落地表接口异常:' + error)\n })\n }\n\n handleSubmit =() => {\n let {params} = this.state\n // console.log(\"params=======\", params)\n if (!(params.result_id && params.table_id && params.table_primary_key)) {\n this.setState({\n sholdCheckValidate:true\n })\n return\n }\n jobPublish({\n ...params\n }).then(res => {\n if (res.data && res.data.code === 0) {\n this.props.updatePage(params.id)\n this.props.changeShowAddWin(false)\n SdwMessage.success(\"发布成功\")\n } else {\n let msg = res.data && res.data.data\n SdwMessage.error(msg);\n }\n }, () => SdwMessage.error(\"接口异常\"))\n }\n\n //初始字段列表\n iniDataSourceFields = () => {\n let {clickItem} = this.state\n let item = clickItem.item\n if (!item) {\n return\n }\n let params = {\n id:item.job_id,\n node_id:item.id,\n }\n if (item.hasOwnProperty(\"link\") && item.link) {\n params.link_id = item.link.id\n }\n getNodeFields(params).then(res => {\n if (res && res.data && res.data.code === 0) {\n let record = res.data.data || []\n this.setState({\n fieldsListOption:record\n })\n } else {\n let msg = res.data.msg || '请求失败'\n SdwMessage.error(msg)\n }\n }).catch(error => SdwMessage.error('请求失败 ' + error))\n }\n //切换节点\n changeClickTableView = (item) => {\n // console.log(\"====item\", item)\n let {params} = this.state\n this.setState({\n params:_.assign({}, params, {\n result_id:item.id,\n table_primary_key:\"\",\n }),\n clickItem:item\n }, this.iniDataSourceFields)\n }\n\n setFormValue = (type, val) => {\n let { params } = this.state\n let obj = {}\n switch (type) {\n case \"table_id\":\n obj = {\n table_id: val\n }\n break\n case \"table_primary_key\":\n obj = { table_primary_key: val }\n break\n case \"result_id\":\n obj = { result_id: val }\n break\n case \"partition_field_id\":\n obj = { partition_field_id: val }\n break\n }\n this.setState({\n params: Object.assign({}, params, {\n ...obj\n })\n })\n }\n render () {\n let {\n showPublishDialog,\n changeShowAddWin,\n } = this.props\n\n let {\n params,\n tableList,\n nodeList,\n sholdCheckValidate,\n fieldsListOption,\n } = this.state\n\n return (\n
\n changeShowAddWin(false)}\n onSureClick={this.handleSubmit}\n >\n
\n 落地表\n {\n this.setFormValue(\"table_id\", val)\n }}\n />\n
\n
\n 节点\n {\n this.changeClickTableView(data)\n }}\n />\n
\n
\n 主键\n {\n return {id: i, text: i}\n }) : []}\n data={_.isArray(fieldsListOption) ? fieldsListOption.map(i=>{\n return {id:i.field, text:i.field, item:i}\n }) : []}\n onChange={(val) => {\n this.setFormValue(\"table_primary_key\", val.map(i => {\n return i.id\n }).join(','))\n }}\n sholdCheckValidate={sholdCheckValidate}\n validateFun={val => {\n return val.length > 0 ? true : \"主键不能为空\"\n }}\n />\n
\n
\n 分区字段\n {\n return {id:i.id, text:i.field, item:i}\n }) : []}\n onChange={val => {\n this.setFormValue(\"partition_field_id\", val)\n }}\n />\n
\n \n
\n )\n }\n}\n\nconst mapState = state => ({\n stepList: state.midTableView.stepList,\n cfgData: state.midTableView.cfgData,\n})\n\nconst mapDispatch = dispatch => ({\n updateStepList: dispatch.midTableView.updateStepList\n})\nexport default connect(mapState, mapDispatch)(JobPublish)\n","import React from 'react'\nimport SdwSelect from '@common/Select'\nimport SdwDialog from '@common/Dialog'\nimport SdwMessage from '@common/Message'\nimport {getDetailInfo, getNodeFields} from '@services/midTable'\nimport {getTableApiItems} from '@services/dataAccess'\nimport {connect} from 'react-redux'\nimport './css/index.css'\n\nclass PublishDetail extends React.Component {\n\n state = {\n params: {\n id: '',\n table_id: '', // 落地表id\n table_primary_key: '', // 多选,选节点的字段\n result_id: '', // 节点id\n partition_field_id: '', // 分区字段\n },\n tableList: [],\n nodeList: [],\n fieldsListOption: [],\n }\n\n componentDidMount() {\n this.getDetailInfo()\n this.getTableApiItems()\n this.getNodeList()\n }\n\n getDetailInfo = () => {\n let {editMidTable} = this.props\n getDetailInfo({\n id: editMidTable.id,\n }).then(res => {\n if (res.data && res.data.code === 0) {\n let detailInfo = res.data.data || {}\n this.setState({\n params: {\n id: editMidTable.id,\n table_id: detailInfo.table_id || '', // 落地表id\n table_primary_key: detailInfo.table_primary_key || '', // 多选,选节点的字段\n result_id: detailInfo.result_id || '', // 节点id\n partition_field_id: detailInfo.partition_field_id || '', // 分区字段\n },\n })\n }\n }, () => SdwMessage.error(\"接口异常\"))\n }\n\n getTableApiItems = () => {\n // 目标表参数\n let paramData = {\n limit: 10000,\n search: JSON.stringify({\n 'warehouse_level': {'value': 'DWD', 'operator': '='},\n 'enable': {'value': 1, 'operator': '='}\n })\n }\n // 目标表\n getTableApiItems(paramData).then(res => {\n if (res && res.data && res.data.code === 0) {\n let curArr = Array.isArray(res.data.data.items) ? res.data.data.items : []\n curArr = curArr.map(i => {\n let curName = !!i.database_name ? `${i.database_name}.${i.table_name}` : `${i.table_name}`\n return Object.assign({}, i, {\n text: `${curName}(${i.data_set_chinese})`,\n })\n })\n this.setState({tableList: curArr})\n } else {\n SdwMessage.error('获取落地表数据失败')\n }\n }).catch(error => {\n SdwMessage.error('获取落地表接口异常:' + error)\n })\n }\n\n getNodeList = () => {\n let {stepList, editMidTable} = this.props\n let nodeList = []\n for (let i in stepList) {\n nodeList.push(stepList[i])\n }\n this.setState({\n clickItem: stepList[editMidTable.result_id] ? stepList[editMidTable.result_id] : {},\n nodeList: nodeList\n }, this.getNodeFields)\n }\n\n getNodeFields = () => {\n let {clickItem} = this.state\n let item = clickItem.item\n if (!item) {\n return\n }\n let params = {\n id: item.job_id,\n node_id: item.id,\n }\n if (item.hasOwnProperty(\"link\") && item.link) {\n params.link_id = item.link.id\n }\n getNodeFields(params).then(res => {\n if (res && res.data && res.data.code === 0) {\n let record = res.data.data || []\n this.setState({\n fieldsListOption: record.map(i => {\n return {id: i.id, text: i.field}\n }),\n })\n } else {\n let msg = res.data.msg || '请求失败'\n SdwMessage.error(msg)\n }\n }).catch(error => SdwMessage.error('请求失败 ' + error))\n }\n\n render() {\n\n let {\n params,\n tableList,\n nodeList,\n fieldsListOption,\n } = this.state\n\n let {\n showDetailDialog,\n changeShowAddWin,\n } = this.props\n\n return (\n
\n changeShowAddWin(false)}\n hideSureButton={true}\n hideCancelButton={true}\n >\n
\n 落地表\n \n
\n
\n 节点\n \n
\n
\n 主键\n {\n return {id: i, text: i}\n }) : []}\n />\n
\n
\n 分区字段\n \n
\n \n
\n )\n }\n}\n\nconst mapState = state => ({\n stepList: state.midTableView.stepList,\n})\n\nconst mapDispatch = dispatch => ({\n updateStepList: dispatch.midTableView.updateStepList\n})\nexport default connect(mapState, mapDispatch)(PublishDetail)\n","import React from 'react'\nimport SdwInput from '@common/Input'\nimport SdwSelect from '@common/Select'\nimport '../css/AddSource.css'\nimport { getTablecfgDetail } from '@services/modifier'\nimport SdwMessage from '@common/Message'\n\nexport default class TableSource extends React.Component {\n\n\n\n\n changeDataSource = (item) => {\n this.props.setTableNodeValue(\"table_id\", item)\n getTablecfgDetail({id:item.id}).then(res => {\n if (res && res.data && res.data.code === 0) {\n let record = res.data.data || {}\n let timeFieldList = []\n record.fields = record.fields || []\n record.fields.forEach(i => {\n if (i.field_type == \"date\" || i.field_type == \"timestamp\"|| i.field_type == \"datetime\" || i.field_type==\"esdate\" || i.field_type==\"date(7)\") {\n timeFieldList.push({id:i.field_name, text:i.field_name})\n }\n })\n this.props.setTableNodeValue(\"time_field\", [])\n this.props.setTableNodeValue(\"timeFieldList\", timeFieldList)\n } else {\n let msg = res.data.msg || '请求失败'\n SdwMessage.error(msg)\n }\n }).catch(error => SdwMessage.error('请求失败 ' + error))\n }\n\n render () {\n let {\n nodeParams,\n sholdCheckValidate,\n tableList,\n timeFieldList,\n timeCycleList,\n setTableNodeValue,\n changeDataSetType,\n } = this.props\n console.log(\"====tableList\", tableList)\n console.log(\"====timeFieldList\", timeFieldList)\n return (\n <>\n
\n 数仓类型\n {\n changeDataSetType(val)\n }}\n sholdCheckValidate={sholdCheckValidate}\n validateFun={val=> { return !!val?true:\"数仓类型不能为空\"}}\n />\n
\n
\n 数据源\n {\n return {\n id: el.id,\n text: \"【\"+el.warehouse_level + \"】\"+el.data_set_chinese + '(' + (el.database_name ? el.database_name + '.' : '') + el.table_name + ')',\n data:el,\n }\n })}\n onChange={(val , item) => {\n this.changeDataSource(item.data)\n }}\n sholdCheckValidate={sholdCheckValidate}\n validateFun={val=> { return !!val?true:\"数据源不能为空\"}}\n />\n
\n {\n
\n 取数时间字段\n {\n setTableNodeValue(\"time_field\", val)\n }}\n sholdCheckValidate={sholdCheckValidate}\n validateFun={val=> {return val.length > 0?true:\"取数时间字段不能为空\"}}\n />\n
\n }\n {\n
\n 取数范围\n {\n setTableNodeValue(\"get_time_cycle\", val)\n }}\n //sholdCheckValidate={sholdCheckValidate}\n //validateFun={val=> { return !val?true:\"取数范围不能为空\"}}\n />\n
\n }\n
\n 过滤条件\n {\n setTableNodeValue(\"filter\", val)\n }}\n />\n
\n \n )\n }\n}\n","import React, { Fragment } from 'react'\nimport SdwInput from '@common/Input'\nimport SdwSelect from '@common/Select'\nimport '../css/AddSource.css'\nimport _ from 'lodash'\nimport { LEVEL_TEXT_MAP } from '@pages/Market/Metadata/common'\nimport SdwMulRadiobox from '@common/MulRadiobox'\nimport { connect } from 'react-redux'\nimport { getNodeFields } from '@api/midTable'\nimport SdwMessage from '@common/Message'\n\nclass ViewSource extends React.Component {\n\n\n changeDataSource = (item, type) => {\n console.log(\"-------------changeDataSource====item\", item)\n let params = {\n id:item.job_id,\n node_id:item.id,\n }\n if (item.hasOwnProperty(\"link\") && item.link) {\n params.link_id = item.link.id\n }\n getNodeFields(params).then(res => {\n if (res && res.data && res.data.code === 0) {\n let record = res.data.data || []\n record = record.map(i => {\n return {id:i.field, text:i.field}\n })\n switch (type) {\n case \"table_id\":\n this.props.setViewNodeValue(\"table_id\", item)\n this.props.setViewNodeValue(\"groupby_key\", \"\")\n this.props.setViewNodeValue(\"tableFieldsList\", record)\n break\n case \"left_node_id\":\n this.props.setViewNodeValue(\"left_node_id\", item)\n this.props.setViewNodeValue(\"left_field\", [])\n this.props.setViewNodeValue(\"leftNodeFieldsList\", record)\n break\n case \"right_node_id\":\n this.props.setViewNodeValue(\"right_node_id\", item)\n this.props.setViewNodeValue(\"right_field\", [])\n this.props.setViewNodeValue(\"rightNodeFieldsList\", record)\n break\n }\n\n\n } else {\n let msg = res.data.msg || '请求失败'\n SdwMessage.error(msg)\n }\n }).catch(error => SdwMessage.error('请求失败 ' + error))\n }\n\n render () {\n let {\n sholdCheckValidate,\n tableFieldsList,\n leftNodeFieldsList,\n rightNodeFieldsList,\n setViewNodeValue,\n } = this.props\n let {\n isEdit,\n stepList,\n linkParams,\n tableConf, physicsTableList, //reduce中的节点列表、物理表节点列表\n } = this.props\n let dataSourceList = Object.values(stepList)\n //let tableConfList = tableConf.filter(el => el.is_used === 0 ).map(el => {\n let tableConfList = dataSourceList.filter(el => el.text !== \"根节点\" ).map(item => {\n let el = item.item\n if (el.table_type == 0) {\n //物理表\n return {\n disabled: (linkParams.left_node_id == el.id || linkParams.right_node_id == el.id) ? true :false,\n id: el.id,\n //text: \"【\"+el.table_item.warehouse_level + \"】\"+el.table_item.data_set_chinese + '(' + (el.table_item.database_name ? el.table_item.database_name + '.' : '') + el.table_item.table_name + ')',\n text: el.table_name,\n data:el,\n }\n } else {\n // 【视图】\n return {\n disabled: (linkParams.left_node_id == el.id || linkParams.right_node_id == el.id) ? true :false,\n id: el.id,\n text: el.table_name,\n data:el,\n }\n }\n\n })\n let groupby_key = linkParams.groupby_key\n let left_field = linkParams.left_field\n let right_field = linkParams.right_field\n if (_.isString(linkParams.groupby_key)) {\n if (linkParams.groupby_key == \"\") {\n groupby_key = []\n } else {\n groupby_key = linkParams.groupby_key.split(',').map(i => {\n return {id:i, text:i}\n })\n }\n }\n if (_.isString(linkParams.left_field)) {\n left_field = linkParams.left_field.split(',').map(i => {\n return {id:i, text:i}\n })\n }\n if (_.isString(linkParams.right_field)) {\n right_field = linkParams.right_field.split(',').map(i => {\n return {id:i, text:i}\n })\n }\n return (\n <>\n
\n 视图类型\n setViewNodeValue(\"view_type\", val)}\n sholdCheckValidate={sholdCheckValidate}\n validateFun={val=> { return !!val?true:\"视图类型不能为空\"}}\n />\n
\n
\n 视图名称\n { return !!val?true:\"视图名称不能为空\"}}\n onChange={val => {\n setViewNodeValue(\"table_name\", val)\n }}\n />\n
\n {\n linkParams.view_type == 1 && //单表聚合\n \n
\n 数据源\n {\n this.changeDataSource(item.data, \"table_id\")\n }}\n sholdCheckValidate={sholdCheckValidate}\n validateFun={val=> { return !!val?true:\"聚合数据源不能为空\"}}\n />\n
\n
\n 聚合字段\n {\n setViewNodeValue(\"groupby_key\", val)\n }}\n sholdCheckValidate={sholdCheckValidate}\n validateFun={val=> { return val.length>0?true:\"聚合字段不能为空\"}}\n />\n
\n
\n }\n {\n linkParams.view_type == 0 && //多表关联\n \n
\n 主表\n {\n this.changeDataSource(item.data, \"left_node_id\")\n }}\n sholdCheckValidate={sholdCheckValidate}\n validateFun={val=> { return !!val?true:\"主表不能为空\"}}\n />\n
\n
\n 副表\n {\n this.changeDataSource(item.data, \"right_node_id\")\n }}\n sholdCheckValidate={sholdCheckValidate}\n validateFun={val=> { return !!val?true:\"副表不能为空\"}}\n />\n
\n
\n 连接方式\n setViewNodeValue(\"concat_type\", val)}\n />\n
\n {\n linkParams.concat_type && linkParams.concat_type==\"join\" &&\n
\n 关联字段\n {\n console.log(\"SdwSelect====\", val)\n setViewNodeValue(\"left_field\", val)\n }}\n sholdCheckValidate={sholdCheckValidate}\n validateFun={val=> { return val.length>0?true:\"主表关联字段不能为空\"}}\n />\n \n {\n setViewNodeValue(\"right_field\", val)\n }}\n sholdCheckValidate={sholdCheckValidate}\n validateFun={val=> { return val.length>0?true:\"副表关联字段不能为空\"}}\n />\n
\n }\n
\n }\n {\n linkParams.view_type == 2 && //分桶聚合\n \n
\n 数据源\n {\n this.changeDataSource(item.data, \"table_id\")\n }}\n sholdCheckValidate={sholdCheckValidate}\n validateFun={val=> { return !!val?true:\"聚合数据源不能为空\"}}\n />\n
\n
\n 分桶字段\n {\n console.log(\"----val\", val)\n setViewNodeValue(\"groupby_key\", val)\n }}\n sholdCheckValidate={sholdCheckValidate}\n validateFun={val=> { return val.length>0?true:\"分桶字段不能为空\"}}\n />\n
\n
\n }\n
\n 过滤条件\n {\n setViewNodeValue(\"after_filter\", val)\n }}\n />\n
\n \n )\n }\n}\nconst mapState = state => ({\n tableConf: state.midTableView.tableConf,\n physicsTableList: state.midTableView.physicsTableList,\n stepList: state.midTableView.stepList,\n})\n\nconst mapDispatch = dispatch => ({\n updateTableConf: dispatch.midTableView.updateTableConf,\n updatePhysicsTableList: dispatch.midTableView.updatePhysicsTableList,\n updateStepList: dispatch.midTableView.updateStepList,\n})\n\nexport default connect(mapState, mapDispatch)(ViewSource)\n","import React from 'react'\nimport _ from 'lodash'\nimport SdwDialog from '@common/Dialog'\nimport SdwInput from '@common/Input'\nimport SdwSelect from '@common/Select'\nimport SdwMessage from '@common/Message'\nimport './css/AddSource.css'\nimport { saveTable, saveNode, saveLink, getNodeFields } from '@services/midTable'\nimport TableSource from './TableSource/index'\n\n\nimport { DateRangePicker, DatePicker } from \"element-react\"\nimport { getAllTablecfg, getMetaDataInfo } from '@api/metaData'\nimport ViewSource from '@pages/Knowledge/MidTable/AddSource/ViewSource'\nimport { connect } from 'react-redux'\nimport { getTablecfgDetail } from '@api/modifier'\n\nclass AddSource extends React.Component {\n\n state = {\n table_type: 0,\n nodeParams:{\n id:\"\",\n table_type:0, //节点类型:-1为根表,0为物理表,1为视图\n data_set_type:\"es\",\n table_id: 0, //物理表数据源id\n filter: \"\", //物理表过滤条件\n time_field: [], //物理表取数时间字段\n get_time_cycle: \"\", //物理表取数范围\n groupby_key: [],\n enabled: 1,\n table_name:\"\", //视图名称\n fields_conf:[]\n },\n linkParams: {\n id: \"\", // 视图节点id,新增不传,编辑传\n view_type:1, //1 单表聚合 0多表关联,1单表聚合,2分桶聚合\n after_filter:\"\", //过滤条件\n link_id: \"\", // 连接id,新增不传,编辑传\n table_name: \"\", //视图名称\n left_node_id: \"\", //主表字段id\n right_node_id: \"\", //副表节点id\n left_field: [], //主表关联字段\n right_field: [], //副表关联字段\n concat_type: \"union\", //关联类型,有左关联join和合并union\n groupby_key: [], //聚合字段\n enabled: 1, //默认有效\n }, // 连线的列表\n sholdTableCheckValidate:false,\n sholdViewCheckValidate:false,\n tableList:[], // 物理表的数据源列表\n timeFieldList:[], // 物理表的数据源-关于时间的字段列表\n timeCycleList:[], //物理表的数据源-取数时间字段列表\n tableFieldsList:[], // 单表聚合的数据源-所有的聚合字段列表\n leftNodeFieldsList:[], // 多表连接的主表数据源-所有的聚合字段列表\n rightNodeFieldsList:[], // 多表连接的副表数据源-所有的聚合字段列表\n physicsTableList:[], //物理表列表\n }\n\n\n componentDidMount () {\n this.initData()\n this.initTimeCycle()\n }\n componentDidUpdate(prevProps, prevState, snapshot) {\n // console.log(\"AddSource++++componentDidUpdate\")\n // console.log(\"AddSource++++componentDidUpdate===prevProps\", prevProps)\n // console.log(\"AddSource++++componentDidUpdate====props\", this.props)\n if (\n prevState.nodeParams != this.state.nodeParams ||\n prevState.linkParams != this.state.linkParams\n ) {\n //this.initData()\n }\n // if (prevProps.currentSource !== this.props.currentSource) {\n // console.log(\"AddSource++++componentDidUpdate==currentSource\", this.props.currentSource)\n // this.initData()\n // }\n }\n\n initTimeCycle = () => {\n let cfgData = this.props.cfgData\n let midTableTimes = cfgData.midTableTimes.map(i => {\n let text = \"\"\n if (i.value) {\n text = i.name+\"(\"+i.code+\")\"\n } else {\n text = i.name\n }\n return {id:i.value, text:text, item:i}\n })\n this.setState({\n timeCycleList:midTableTimes\n })\n }\n\n\n addNode = () => {\n let {nodeParams, linkParams, table_type} = this.state\n let {\n isEdit,editMidTable,\n tableConf, physicsTableList, linkConf //reduce中的节点列表、物理表节点列表、连接的列表\n } = this.props\n console.log(\"addNode============nodeParams\", nodeParams)\n console.log(\"addNode============linkParams\", linkParams)\n\n let params = {}\n if (table_type == 0) {\n let res = this.ruleNodeTableParams(nodeParams)\n if (!res) {\n this.setState({\n sholdTableCheckValidate:true\n })\n return\n }\n params = {\n \"id\": editMidTable.id,\n \"table_conf\": {\n \"table_id\": nodeParams.table_id,\n \"table_name\": nodeParams.table_name,\n \"table_type\": table_type,\n \"filter\": nodeParams.filter,\n \"time_field\": nodeParams.time_field.map(i=> {\n return i.id\n }).join(\",\"),\n \"get_time_cycle\": nodeParams.get_time_cycle,\n \"reader_key\": \"\", //未知\n \"groupby_key\": \"\",\n \"enabled\": 1,\n }\n }\n if (isEdit) {\n params.table_conf.id = nodeParams.id\n }\n saveNode({\n ...params\n }).then(res => {\n if (res.data && res.data.code === 0) {\n SdwMessage.success(isEdit?\"修改成功\":\"新增成功\")\n this.props.iniTableViewList(editMidTable.id)\n this.props.changeShowAddSource(false)\n } else {\n let msg = res.data && res.data.data\n SdwMessage.error(msg)\n }\n }, () => SdwMessage.error(\"接口异常\"))\n } else {\n let res = this.ruleNodeViewParams(linkParams)\n if (!res) {\n this.setState({\n sholdViewCheckValidate:true\n })\n return\n }\n params = {\n id: editMidTable.id,\n link_conf: {\n table_name: linkParams.table_name,\n view_type: linkParams.view_type,\n after_filter: linkParams.after_filter,\n left_node_id: linkParams.left_node_id,\n right_node_id: linkParams.right_node_id,\n left_field:\"\",\n right_field:\"\",\n concat_type: linkParams.concat_type,\n groupby_key: \"\",\n enabled: 1\n }\n }\n\n if (linkParams.view_type == 1 || linkParams.view_type == 2) { //单表聚合或者分桶聚合\n if (Array.isArray(linkParams.groupby_key)) {\n params.link_conf.groupby_key = linkParams.groupby_key.map(i=> {\n return i.id\n }).join(\",\")\n } else {\n params.link_conf.groupby_key = linkParams.groupby_key\n }\n } else { //多表连接\n if (Array.isArray(linkParams.left_field)) {\n params.link_conf.left_field = linkParams.left_field.map(i=> {\n return i.id\n }).join(\",\")\n } else {\n params.link_conf.left_field = linkParams.left_field\n }\n if (Array.isArray(linkParams.right_field)) {\n params.link_conf.right_field = linkParams.right_field.map(i=> {\n return i.id\n }).join(\",\")\n } else {\n params.link_conf.right_field = linkParams.right_field\n }\n }\n if (isEdit) {\n params.link_conf.id = linkParams.id\n params.link_conf.link_id = linkParams.link_id\n }\n console.log(\"linkParams\", linkParams)\n console.log(\"linkParams\", linkParams)\n console.log(\"params\", params)\n saveLink({\n ...params\n }).then(res => {\n if (res.data && res.data.code === 0) {\n SdwMessage.success(isEdit?\"修改成功\":\"新增成功\")\n this.props.iniTableViewList(editMidTable.id)\n this.props.changeShowAddSource(false)\n } else {\n let msg = res.data.data || \"异常\"\n SdwMessage.error(msg)\n }\n }, () => SdwMessage.error(\"接口异常\"))\n }\n }\n\n ruleNodeTableParams = (nodeParams) => {\n if (\n !nodeParams.table_id ||\n !nodeParams.time_field || nodeParams.time_field.length == 0\n ) {\n return false\n }\n return true\n }\n\n ruleNodeViewParams = (linkParams) => {\n if (\n !linkParams.table_name ||\n !linkParams.left_node_id\n\n ) {\n return false\n }\n if (linkParams.view_type == 1 || linkParams.view_type == 2) { //分桶聚合\n if ((Array.isArray(linkParams.groupby_key) && linkParams.groupby_key.length == 0) || (_.isString(linkParams.groupby_key) && !linkParams.groupby_key)) {\n return false\n }\n } else {\n if (!linkParams.right_node_id) {\n return false\n }\n if (linkParams.concat_type == \"join\") {\n if ((Array.isArray(linkParams.left_field) && linkParams.left_field.length == 0) || (_.isString(linkParams.left_field) && !linkParams.left_field)) {\n return false\n }\n if ((Array.isArray(linkParams.right_field) && linkParams.right_field.length == 0) || (_.isString(linkParams.right_field) && !linkParams.right_field)) {\n return false\n }\n }\n }\n return true\n }\n\n initData = () => {\n let {isEdit, currentSource} = this.props\n console.log(\"currentSource=========-----------------------\", currentSource)\n let currentSourceClone = _.cloneDeep(currentSource)\n let data_set_type = \"es\"\n if (isEdit) {\n if (currentSource.table_type == 0) {\n data_set_type = currentSourceClone.data_set_type\n this.setState({\n table_type:currentSource.table_type,\n nodeParams:currentSourceClone,\n })\n this.getTablecfgDetail(currentSource.table_id)\n } else {\n if (currentSource.view_type == 1 || currentSource.view_type == 2) { // 0多表关联,1单表聚合,2分桶聚合\n this.iniFieldsList({job_id:currentSource.job_id, id: currentSource.left_node_id, link_id:currentSource.link_id}, \"table_id\")\n } else { //多表关联\n this.iniFieldsList({job_id:currentSource.job_id, id: currentSource.left_node_id, link_id:currentSource.link_id}, \"left_node_id\")\n this.iniFieldsList({job_id:currentSource.job_id, id: currentSource.right_node_id, link_id:currentSource.link_id}, \"right_node_id\")\n }\n this.setState({\n table_type:currentSource.table_type,\n linkParams:currentSourceClone\n })\n }\n }\n this.changeDataSetType(data_set_type)\n }\n\n iniFieldsList = (item, type) => {\n console.log(\"changeDataSource====item\", item)\n let params = {\n id:item.job_id,\n node_id:item.id,\n link_id:item.link_id\n }\n getNodeFields(params).then(res => {\n if (res && res.data && res.data.code === 0) {\n let record = res.data.data || []\n record = record.map(i => {\n return {id:i.field, text:i.field}\n })\n switch (type) {\n case \"table_id\":\n this.setState({\n tableFieldsList: record\n })\n break\n case \"left_node_id\":\n this.setState({\n leftNodeFieldsList: record\n })\n break\n case \"right_node_id\":\n this.setState({\n rightNodeFieldsList: record\n })\n break\n }\n } else {\n let msg = res.data.msg || '请求失败'\n SdwMessage.error(msg)\n }\n }).catch(error => SdwMessage.error('请求失败 ' + error))\n }\n\n getTablecfgDetail = (id) => {\n getTablecfgDetail({id:id}).then(res => {\n if (res && res.data && res.data.code === 0) {\n let record = res.data.data || {}\n let timeFieldList = []\n record.fields = record.fields || []\n record.fields.forEach(i => {\n if (i.field_type == \"date\") {\n timeFieldList.push({id:i.field_name, text:i.field_name})\n }\n })\n this.setState({\n timeFieldList:timeFieldList\n })\n } else {\n let msg = res.data.msg || '请求失败'\n SdwMessage.error(msg)\n }\n }).catch(error => SdwMessage.error('请求失败 ' + error))\n }\n\n handleSubmit =() => {\n let nodeParams = this.state.nodeParams\n let {isEdit, editMidTable} = this.props\n saveTable({\n id:editMidTable.id,\n }).then(res => {\n if (res.data && res.data.code === 0) {\n this.props.changeShowAddSource(false)\n if (isEdit) {\n this.props.updatePage(nodeParams.id)\n } else {\n this.props.updatePage()\n }\n\n SdwMessage.success(isEdit?\"修改成功\":\"新增成功\")\n } else {\n let msg = res.data && res.data.data\n SdwMessage.error(msg)\n }\n }, () => SdwMessage.error(\"接口异常\"))\n }\n\n formatDate = date => {\n if (_.isArray(date)) {\n return date.map((item, index) => {\n let time = index === 0 ? '00:00:00' : '23:59:59'\n return `${item.getFullYear()}-${item.getMonth() + 1}-${item.getDate()} ${time}`\n })\n } else {\n let year = date.getFullYear()\n let month = date.getMonth()\n let day = date.getDate()\n let hours = date.getHours()\n let minutes = date.getMinutes()\n let seconds = date.getSeconds()\n\n let dateStr = year+ \"-\"\n dateStr += (month < 10 ? \"0\"+month:month) + \"-\"\n dateStr += (day < 10 ? \"0\"+day:day) + \" \"\n dateStr += (hours < 10 ? \"0\"+hours:hours) + \":\"\n dateStr += (minutes < 10 ? \"0\"+minutes:minutes) + \":\"\n dateStr += (seconds < 10 ? \"0\"+seconds:seconds)\n return dateStr\n }\n }\n\n changeDataSetType = (val) => {\n // 获取表名称\n let paramsData = {\n page: 1,\n limit: 10000,\n search:{\n data_set_type: {\n value: val,\n operator: '='\n },\n warehouse_level: {\n value: [\"ODS\", \"DIM\"],\n operator: 'in'\n },\n }\n\n }\n getMetaDataInfo(paramsData).then(res => {\n if (res && res.data && res.data.code === 0) {\n let record = res.data.data || {}\n this.setState({\n tableList: record.items,\n })\n } else {\n let msg = res.data.msg || '请求失败'\n SdwMessage.error(msg)\n }\n })\n }\n //设置物理表的数据\n setTableNodeValue = (type, val) => {\n let obj = {}\n switch (type) {\n case \"table_id\":\n obj = {\n table_id:val.id,\n table_name:val.data_set_chinese,\n table_item:{\n table_id:val.id,\n table_name:val.table_name,\n warehouse_level:val.warehouse_level,\n data_set_chinese:val.data_set_chinese,\n database_name:val.database_name,\n },\n }\n break\n case \"timeFieldList\":\n this.setState({\n timeFieldList:val\n })\n return\n break\n case \"get_time_cycle\":\n obj = {get_time_cycle:val}\n break\n case \"time_field\":\n obj = {time_field:val}\n break\n case \"filter\":\n obj = {filter:val}\n break\n }\n let nodeParams = this.state.nodeParams\n this.setState({\n nodeParams: Object.assign({}, nodeParams, {\n ...obj\n })\n })\n }\n //设置视图的数据\n setViewNodeValue = (type, val, fields = {}) => {\n let linkParams = this.state.linkParams\n let obj = {}\n switch (type) {\n case \"view_type\":\n let linkParamsClone = _.cloneDeep(linkParams)\n console.log(\"===view_type\", type)\n obj = {\n view_type:val, // 0多表关联,1单表聚合,2分桶聚合\n link_id: \"\", // 连接id,新增不传,编辑传\n table_name: \"\", //视图名称\n left_node_id: \"\", //主表字段id\n right_node_id: \"\", //副表节点id\n left_field: [], //主表关联字段\n right_field: [], //副表关联字段\n concat_type: \"union\", //关联类型,有左关联join和合并union\n groupby_key: \"\", //聚合字段\n enabled: 1, //默认有效\n } // 连线的列表\n this.setState({\n linkParams:Object.assign({}, linkParamsClone, {\n ...obj\n }),\n tableFieldsList:[],\n leftNodeFieldsList:[],\n rightNodeFieldsList:[],\n })\n return\n break\n case \"table_name\":\n obj = {table_name:val}\n break\n case \"groupby_key\":\n obj = {groupby_key:val}\n break\n case \"left_node_id\":\n obj = {\n left_node_id:val.id,\n }\n break\n case \"tableFieldsList\":\n this.setState({\n tableFieldsList: val\n })\n return\n break\n case \"table_id\":\n obj = {\n left_node_id:val.id,\n }\n break\n case \"right_node_id\":\n obj = {\n right_node_id:val.id,\n }\n break\n case \"leftNodeFieldsList\":\n this.setState({\n leftNodeFieldsList: val\n })\n return\n break\n case \"rightNodeFieldsList\":\n this.setState({\n rightNodeFieldsList: val\n })\n return\n break\n case \"concat_type\":\n obj = {\n concat_type:val,\n }\n break\n case \"left_field\":\n obj = {\n left_field:val,\n }\n break\n case \"right_field\":\n obj = {\n right_field:val,\n }\n break\n case \"after_filter\":\n obj = {\n after_filter:val,\n }\n break\n }\n this.setState({\n linkParams: Object.assign({}, linkParams, {\n ...obj\n })\n })\n }\n render () {\n let {\n showAddSource,\n changeShowAddSource,\n isEdit,\n } = this.props\n\n let {\n nodeParams,\n linkParams,\n sholdTableCheckValidate,\n sholdViewCheckValidate,\n tableList,\n timeFieldList,\n timeCycleList,\n tableFieldsList,\n leftNodeFieldsList,\n rightNodeFieldsList,\n table_type,\n } = this.state\n console.log(\"linkParams\", linkParams)\n console.log(\"nodeParams\", nodeParams)\n return (\n
\n changeShowAddSource(false)}\n onSureClick={this.addNode}\n >\n
\n 数据源类型\n {\n this.setState({\n table_type:val\n })\n }}\n />\n
\n {\n table_type == 0&&\n {\n this.setState({\n nodeParams:_.assign({}, nodeParams, {\n data_set_type:val\n })\n }, ()=>{\n this.changeDataSetType(val)\n })\n }}\n />\n }\n {\n table_type == 1&&\n \n }\n \n
\n )\n }\n}\n\nconst mapState = state => ({\n tableConf: state.midTableView.tableConf,\n linkConf: state.midTableView.linkConf,\n physicsTableList: state.midTableView.physicsTableList,\n currentSource: state.midTableView.currentSource,\n cfgData: state.midTableView.cfgData,\n})\n\nconst mapDispatch = dispatch => ({\n updateTableConf: dispatch.midTableView.updateTableConf,\n updateLinkConf: dispatch.midTableView.updateLinkConf,\n updatePhysicsTableList: dispatch.midTableView.updatePhysicsTableList,\n})\n\nexport default connect(mapState, mapDispatch)(AddSource)\n","import React from 'react'\nimport './style/index.css'\nimport { connect } from 'react-redux'\n\nclass StepList extends React.Component {\n state = {\n recordList :[],\n }\n componentDidUpdate(prevProps, prevState, snapshot) {\n if (this.props.stepList != prevProps.stepList) {\n this.iniStepList()\n }\n }\n iniStepList = () => {\n let stepList = this.props.stepList\n let recordList = []\n let n = 0\n console.log(\"stepList\", stepList)\n for (let i in stepList) {\n if (stepList[i].item[\"table_name\"] == null) {\n continue\n }\n n = n + 1\n let tableName = stepList[i].item[\"table_type\"] == 0 ? \"物理表\" : \"视图\"\n recordList.push({\n name:\"步骤\"+ n +\":添加\"+tableName+\" \"+stepList[i].item[\"table_name\"],\n item:stepList[i]\n })\n }\n console.log(\"recordList\", recordList)\n this.setState({\n recordList:recordList\n })\n }\n render() {\n\n let {recordList} = this.state\n console.log(\"recordList====\", recordList)\n return (\n <>\n
\n 加工步骤总结\n
\n
\n {\n recordList.map(i=>{\n return
\n {i.name}\n
\n })\n }\n\n
\n \n )\n }\n}\nconst mapState = state => ({\n stepList: state.midTableView.stepList,\n})\n\nconst mapDispatch = dispatch => ({\n updateStepList:dispatch.midTableView.updateStepList\n})\nexport default connect(mapState, mapDispatch)(StepList)\n","import React, {Fragment} from 'react'\nimport _ from 'lodash'\nimport SdwDialog from '@common/Dialog'\nimport SdwInput from '@common/Input'\nimport SdwSelect from '@common/Select'\nimport {Checkbox, Button} from 'element-react'\nimport {connect} from 'react-redux'\nimport SdwMulRadiobox from '@common/MulRadiobox'\nimport {getNodeRelateFields, fieldItems, saveFields} from '@api/midTable'\nimport SdwMessage from '@common/Message'\nimport './css/index.css'\n\nclass AddField extends React.Component {\n\n constructor(props) {\n super(props)\n this.popoverRef = React.createRef()\n }\n\n state = {\n //节点处\n fieldParams: {\n id: \"\", // 字段id,新增不传,编辑传\n config: { // 字段加工配置,由字段配置接口获取,当mappint_type=single时,固定传copy加工方式\n script: \"copy\",\n value: {}\n },\n field: \"\", // 结果字段\n src_reader_id: \"\",\n field_type: 0, // 字段类型\n filter: \"\", // 过滤条件\n mapping_type: \"single\", // single:表原生字段,combine:加工字段\n enable: 1\n },\n fieldList: [], //字段名称列表 //针对原生字段\n sholdCheckValidate: false,\n fieldItems: [], //加工方式列表\n fieldConfig: [{\n \"field\": \"field\",\n \"is_column\": 1,\n \"must\": 1,\n \"name\": \"字段\",\n \"type\": \"select\"\n }], // 选择加工方式后 此变量存里面的conf配置用以在页面上渲染是select还是input组件\n fieldTypeMapOption: [],\n dataInfoList: [{field_value: '', field_type: 0, field: ''}], // 数据信息列表\n showPopover: false, // 是否显示批量增加浮窗\n isUp: false, // 浮窗是否向上展示\n checkList: [], // 已选择的字段列表\n checkAll: false, // 是否全选\n isIndeterminate: true, // 全选图标\n }\n\n componentDidMount() {\n this.iniData()\n this.iniFieldTypeMap()\n this.iniDataSourceFields()\n this.getFieldItems()\n window.addEventListener('mousedown', this.handleClosePopover)\n }\n\n componentWillUnmount() {\n window.removeEventListener('mousedown', this.handleClosePopover)\n }\n\n // 点击空白处关闭浮窗\n handleClosePopover = (event) => {\n if (this.popoverRef.current && !this.popoverRef.current.contains(event.target)) {\n this.setState({showPopover: false})\n }\n }\n\n iniFieldTypeMap = () => {\n let cfgData = this.props.cfgData\n if (JSON.stringify(cfgData) != \"{}\") {\n let field_type_map = cfgData.field_type.map(i => {\n return {id: parseInt(i.value), text: i.code, item: i}\n })\n this.setState({\n fieldTypeMapOption: field_type_map\n })\n }\n }\n\n //获取计算字段的配置\n getFieldItems = () => {\n let {isEdit, fieldParams} = this.props\n fieldItems().then(res => {\n if (res && res.data && res.data.code === 0) {\n let fieldItemsList = res.data.data || {}\n let fieldItems = []\n for (let k in fieldItemsList) {\n fieldItems.push({id: k, text: fieldItemsList[k].name, item: fieldItemsList[k]})\n }\n this.setState({\n fieldItems: fieldItems\n })\n if (isEdit) { //如果是编辑则填充\n let fieldParamsClone = _.cloneDeep(fieldParams)\n let item = fieldItems.filter(i => i.id == fieldParamsClone.config.script)\n this.setState({\n fieldConfig: item[0].item.config\n })\n }\n\n } else {\n let msg = res.data.msg || '请求失败'\n SdwMessage.error(msg)\n }\n }).catch(error => SdwMessage.error('请求失败 ' + error))\n }\n\n //初始化form数据\n iniData = () => {\n let {isEdit, fieldParams, clickItem} = this.props\n if (isEdit) {\n let fieldParamsClone = _.cloneDeep(fieldParams)\n this.setState({\n fieldParams: fieldParamsClone\n })\n } else {\n if (clickItem.item.table_type == 1 && (clickItem.item.view_type == 1)) { //单表聚合或者分桶\n let fieldParamsState = this.state.fieldParams\n let fieldParamsClone = _.cloneDeep(fieldParamsState)\n this.setState({\n fieldParams: _.assign({}, fieldParamsClone, {\n mapping_type: \"combine\"\n })\n })\n }\n }\n }\n\n //初始字段列表\n iniDataSourceFields = () => {\n let {clickItem, stepList} = this.props\n let item = clickItem.item\n if (!item) {\n return\n }\n let params = {\n id: item.job_id,\n node_id: item.id,\n }\n if (item.hasOwnProperty(\"link\") && item.link) {\n params.link_id = item.link.id\n }\n getNodeRelateFields(params).then(res => {\n if (res && res.data && res.data.code === 0) {\n let record = res.data.data || []\n let fieldList = []\n record.forEach(i => {\n let text = i.field_name\n if (stepList.hasOwnProperty(i.reader_id)) {\n text = \"【\" + stepList[i.reader_id].text + \"】\" + text\n }\n fieldList.push({id: i.field_name, text: text, reader_id: i.reader_id})\n })\n this.setState({\n fieldList: fieldList\n })\n } else {\n let msg = res.data.msg || '请求失败'\n SdwMessage.error(msg)\n }\n }).catch(error => SdwMessage.error('请求失败 ' + error))\n }\n\n //切换节点\n changeClickTableView = (item) => {\n this.setState({\n clickItem: item\n }, this.iniDataSourceFields)\n }\n\n setFormValue = (type, val) => {\n let {fieldParams, fieldItems} = this.state\n let obj = {}\n switch (type) {\n case \"mapping_type\":\n obj = {\n mapping_type: val,\n field: \"\",\n }\n if (val == \"single\") {\n let item = fieldItems.filter(i => i.id == \"copy\")\n this.selectConfig(\"copy\", item[0].item)\n }\n break\n case \"src_reader_id\":\n obj = {\n src_reader_id: (val.reader_id ? val.reader_id : \"\"),\n field: val.id\n }\n break\n case \"field_type\":\n obj = {field_type: val}\n break\n case \"filter\":\n obj = {filter: val}\n break\n case \"field\":\n obj = {field: val}\n break\n default:\n break\n }\n this.setState({\n fieldParams: Object.assign({}, fieldParams, {\n ...obj\n })\n })\n }\n\n selectConfig = (type, item) => {\n let {fieldParams} = this.state\n fieldParams.config.script = type\n fieldParams.config.value = {}\n let fieldParamsClone = _.cloneDeep(fieldParams)\n this.setState({\n fieldParams: fieldParamsClone,\n fieldConfig: item.config\n })\n }\n\n setValue = (type, val) => {\n let {fieldParams} = this.state\n fieldParams.config.value = _.assign({}, fieldParams.config.value, {\n [type]: val\n })\n let fieldParamsClone = _.cloneDeep(fieldParams)\n this.setState({\n fieldParams: fieldParamsClone\n })\n }\n\n // 增加数据信息列表\n addVirtualGroup = () => {\n this.setState(prevState => ({\n dataInfoList: [...prevState.dataInfoList, {field_value: '', field_type: 0, field: ''}]\n }))\n }\n\n // 删除数据信息列表\n removeVirtualGroup = (index) => {\n this.setState(prevState => {\n let dataInfoList = [...prevState.dataInfoList]\n dataInfoList.splice(index, 1)\n return {dataInfoList}\n })\n }\n\n // 编辑数据信息列表\n updateVirtualGroup = (val, type, index, item) => {\n this.setState(prevState => {\n let dataInfoList = [...prevState.dataInfoList]\n if (type === 'field_value') {\n dataInfoList[index].field_value = val\n dataInfoList[index].field = val\n dataInfoList[index].src_reader_id = item.reader_id\n } else {\n dataInfoList[index][type] = val\n }\n return {dataInfoList}\n })\n }\n\n // 批量增加字段 模块\n renderPopover = () => {\n let {checkList, showPopover, isUp, fieldList, dataInfoList} = this.state\n let {clickFieldsList} = this.props\n let list = []\n if (dataInfoList.some(obj => !_.isEmpty(obj.field))) {\n list = dataInfoList.filter(i => !_.isEmpty(i.field)).map(i => i.field)\n }\n return (\n
\n {\n this.setState({\n showPopover: true,\n isUp: e.clientY + 100 > 800,\n checkList: list\n })\n }}\n >+添加更多字段\n {showPopover && (\n \n
\n {\n this.handleCheckChange(val)\n }}\n >\n {\n fieldList.map((item, k) => {\n return (\n i.field === item.id) || (checkList.length >= 500 && !checkList.includes(item.id))}\n >{item.text}\n )\n })\n }\n \n
\n
\n this.handleCheckAllChange(val)}\n >全选\n
\n \n
\n
\n
\n )}\n \n )\n }\n\n handleCheckChange = (value) => {\n let {fieldList} = this.state\n const checkedCount = value.length\n const fieldListLength = fieldList.length\n this.setState({\n checkList: value,\n checkAll: checkedCount === fieldListLength,\n isIndeterminate: checkedCount > 0 && checkedCount < fieldListLength,\n })\n }\n\n // 全选\n handleCheckAllChange = (checked) => {\n let {fieldList} = this.state\n let {clickFieldsList} = this.props\n // 过滤掉在clickFieldsList中的元素\n // const enabledItems = fieldList.filter(item => !clickFieldsList.some(i => i.field === item.id))\n // const checkList = checked ? _.isArray(enabledItems) && enabledItems.map(i => i.id) : []\n const enabledItems = this.getEnabledItems(fieldList, clickFieldsList)\n let checkList = checked ? enabledItems.slice(0, 500).map(i => i.id) : []\n if (checkList.length === 500) {\n SdwMessage.info('一次最多只能选择500个选项')\n }\n this.setState({\n isIndeterminate: false,\n checkAll: checked,\n checkList: checkList,\n })\n }\n\n getEnabledItems = (fieldList, clickFieldsList) => {\n return fieldList.filter(item => !clickFieldsList.some(i => i.field === item.id))\n }\n\n // 批量添加字段\n addFieldsToDataInfoList = () => {\n let {checkList, dataInfoList, fieldList} = this.state\n // 判断字段是否存在,不允许重复添加\n const existingFields = dataInfoList.map(item => item.field)\n const list = checkList\n .filter(field => !existingFields.includes(field))\n .map(field => {\n const matchedField = fieldList.find(item => item.id === field)\n const reader_id = matchedField ? matchedField.reader_id : null\n return {\n field_value: field,\n field: field,\n field_type: 0,\n src_reader_id: reader_id\n }\n })\n // 如果field不存在,则直接新添加一条数据\n const newDataInfoList = dataInfoList.map(item => {\n if (!item.field) {\n const newItem = list.shift()\n return newItem ? newItem : item\n }\n return item\n })\n // 删除取消勾选的字段\n const finalDataInfoList = newDataInfoList.filter(item => checkList.includes(item.field))\n // 如果finalDataInfoList为空,添加一条空的字段\n if (finalDataInfoList.length === 0) {\n finalDataInfoList.push({field_value: '', field_type: 0, field: ''})\n }\n this.setState({\n dataInfoList: [\n ...finalDataInfoList,\n ...list\n ],\n showPopover: false\n })\n }\n\n validateListData = (data) => {\n if (!_.isEmpty(data)) {\n for (let i = 0; i < data.length; i++) {\n const item = data[i]\n if (!item.field_value || !item.field) {\n return false\n }\n }\n return true // 通过校验\n }\n }\n\n saveFields = () => {\n let {fieldParams, dataInfoList} = this.state\n let {isEdit, clickItem} = this.props\n let params = {}\n if (!isEdit && fieldParams.mapping_type == \"single\") {\n if (!this.validateListData(dataInfoList)) {\n this.setState({\n sholdCheckValidate: true\n })\n return\n }\n params = {\n \"id\": clickItem.item.job_id,\n \"node_id\": clickItem.item.id,\n \"fields_conf\": dataInfoList.map(item => {\n return {\n config: {\n script: \"copy\",\n value: {\n field: item.field_value\n }\n },\n field: item.field,\n src_reader_id: item.src_reader_id,\n field_type: item.field_type,\n mapping_type: \"single\",\n enable: 1\n }\n })\n }\n } else {\n params = {\n \"id\": clickItem.item.job_id,\n \"node_id\": clickItem.item.id,\n \"fields_conf\": [\n {\n \"config\": fieldParams.config,\n \"field\": fieldParams.field, // 结果字段\n \"src_reader_id\": fieldParams.mapping_type == \"single\" ? fieldParams.src_reader_id : clickItem.id, // 当mapping_type=single时, 取fieldParams.src_reader_id,否为当前节点id\n \"field_type\": fieldParams.field_type, // 字段类型\n \"filter\": fieldParams.filter, // 过滤条件\n \"mapping_type\": fieldParams.mapping_type, // single:表原生字段,combine:加工字段\n \"enable\": 1\n },\n ]\n }\n }\n let sdwMes = \"添加成功\"\n if (isEdit) {\n sdwMes = \"编辑成功\"\n params.fields_conf[0].id = fieldParams.id\n }\n saveFields(params).then(res => {\n if (res && res.data && res.data.code === 0) {\n this.props.iniDataSourceFields()\n SdwMessage.success(sdwMes)\n this.props.changeShowAddField(false)\n } else {\n let msg = res.data.data || '请求失败'\n SdwMessage.error(msg)\n }\n }).catch(error => SdwMessage.error('请求失败 ' + error))\n\n }\n\n render() {\n let {\n isEdit,\n changeShowAddField,\n recordList,\n clickFieldsList,\n clickItem,\n cfgData,\n } = this.props\n\n let {\n fieldParams,\n dataInfoList,\n fieldList,\n sholdCheckValidate,\n fieldItems,\n fieldConfig,\n fieldTypeMapOption,\n } = this.state\n\n let clickFieldsListOptions = clickFieldsList.map(i => {\n return {id: i.field, text: i.field, item: i}\n }) || []\n let fieldItemsCopy = _.cloneDeep(fieldItems)\n let fieldItemsClone = []\n let mappingType = [\n {\n text: '原生字段',\n value: 'single',\n },\n {\n text: '计算字段',\n value: 'combine'\n },\n ]\n if (clickItem.item.table_type == 1 && (clickItem.item.view_type == 1)) { //单表聚合\n mappingType = [\n {\n text: '计算字段',\n value: 'combine'\n },\n ]\n }\n let pids = cfgData.midTableFunctionMapping[clickItem.item.view_type]\n fieldItemsClone = fieldItemsCopy.filter(i => {\n let ret = pids.some(pid => pid == i.item.pid)\n if (ret == true) {\n return i\n }\n })\n\n // 禁用已添加的字段\n let disabledArr = [\n ...dataInfoList.filter(i => !_.isEmpty(i.field_value)).map(i => i.field_value),\n ...clickFieldsList.filter(i => !_.isEmpty(i.field)).map(i => i.field)\n ]\n\n return (\n
\n changeShowAddField(false)}\n onCancelClick={() => changeShowAddField(false)}\n onSureClick={this.saveFields}\n >\n
\n 字段类型\n this.setFormValue(\"mapping_type\", val)}\n />\n
\n
\n 数据源\n \n
\n\n {!isEdit && fieldParams.mapping_type == \"single\" &&\n
\n 数据信息\n
\n {_.isArray(dataInfoList) && dataInfoList.map((item, k) => {\n return (\n
\n {\n this.updateVirtualGroup(val, 'field_value', k, item)\n }}\n disabledObj={{\n arr: disabledArr,\n key: 'id',\n tip: '已存在相同名称的字段,请勿重复添加'\n }}\n sholdCheckValidate={sholdCheckValidate}\n validateFun={value => !!value ? true : '字段不能为空'}\n />\n {\n this.updateVirtualGroup(val, 'field_type', k, item)\n }}\n />\n {\n this.updateVirtualGroup(val, 'field', k, item)\n }}\n sholdCheckValidate={sholdCheckValidate}\n validateFun={value => !!value ? true : '显示名称不能为空'}\n />\n this.addVirtualGroup(k)} className='el-icon-plus'\n style={{marginLeft: 8}}>\n {k > 0 && this.removeVirtualGroup(k)}\n className='el-icon-minus'>}\n
\n )\n })}\n {this.renderPopover()}\n
\n
\n }\n\n {!(!isEdit && fieldParams.mapping_type == \"single\") &&\n
\n 数据类型\n this.setFormValue(\"field_type\", val)}\n />\n
\n }\n\n {\n isEdit && fieldParams.mapping_type == \"single\" &&\n \n {\n fieldConfig.map(i => {\n let placeholder = i.type == 'input' ? `请输入${i.name}` : `请选择${i.name}`\n let label = i.name\n let is_column = i.is_column\n let field = i.field\n let fieldValue = fieldParams.config.value[field]\n let is_multi = i.is_multi\n let sholdCheck = i.must == 1 ? sholdCheckValidate : false\n let data = []\n if (is_column != 1) {\n try {\n data = JSON.parse(i.value).map(i => {\n if (i.default == 1 && !fieldValue) {\n fieldValue = i.value\n }\n return {id: i.value, text: i.name, item: i}\n })\n } catch (e) {\n }\n } else {\n data = fieldList\n }\n return (\n
\n {label}\n !val ? \"此处不能为空\" : true}\n onChange={(val, item) => {\n this.setValue(field, val)\n this.setFormValue(\"src_reader_id\", item)\n }}\n />\n
\n )\n })\n }\n
\n 显示名称\n !val ? \"显示名称不能为空\" : true}\n onChange={val => this.setFormValue(\"field\", val)}\n />\n
\n
\n }\n {\n fieldParams.mapping_type == \"combine\" &&\n \n
\n 字段名称\n !val ? \"显示名称不能为空\" : true}\n onChange={val => this.setFormValue(\"field\", val)}\n />\n
\n
\n 过滤条件\n this.setFormValue(\"filter\", val)}\n />\n
\n
\n 加工方式\n !val ? \"加工方式不能为空\" : true}\n onChange={(val, item) => {\n this.selectConfig(val, item.item)\n }}\n />\n
\n {\n fieldConfig.map(i => {\n let placeholder = i.type == 'input' ? `请输入${i.name}` : `请选择${i.name}`\n let label = i.name\n let zujianType = i.type\n let is_column = i.is_column\n let field = i.field\n let is_multi = i.is_multi\n let fieldValue = fieldParams.config.value[field] || (is_multi == 1 ? [] : \"\")\n if (is_multi == 1 && typeof (fieldValue) == \"string\") {\n fieldValue = fieldValue.split(\",\").map(i => {\n return {id: i, text: i}\n })\n }\n let sholdCheck = i.must == 1 ? sholdCheckValidate : false\n if (zujianType == \"select\") {\n let data = []\n if (is_column == 1) {\n if (clickItem.item.table_type == 1 && (clickItem.item.view_type == 1 || clickItem.item.view_type == 2)) { //单表或者分桶\n data = fieldList\n } else {\n data = clickFieldsListOptions\n }\n } else {\n try {\n data = JSON.parse(i.value).map(i => {\n return {id: i.value, text: i.name, item: i}\n })\n } catch (e) {\n\n }\n }\n return (\n
\n {label}\n !val ? \"此处不能为空\" : true}\n onChange={(val, item) => {\n let value = val\n if (is_multi == 1) {\n value = val.map(i => {\n return i.id\n }).join(\",\")\n }\n this.setValue(field, value)\n }}\n />\n
\n )\n } else if (zujianType == \"input\") {\n return (\n
\n {label}\n !val ? \"此处不能为空\" : true}\n onChange={val => this.setValue(field, val)}\n />\n
\n )\n } else if (zujianType == \"number\") {\n return (\n
\n {label}\n !val ? \"此处不能为空\" : true}\n onChange={val => {\n this.setValue(field, val)\n }}\n />\n
\n )\n } else if (zujianType == \"textarea\") {\n return (\n
\n {label}\n !val ? \"此处不能为空\" : true}\n onChange={val => this.setValue(field, val)}\n />\n
\n )\n }\n })\n }\n
\n }\n \n
\n )\n }\n}\n\nconst mapState = state => ({\n tableConf: state.midTableView.tableConf,\n linkConf: state.midTableView.linkConf,\n physicsTableList: state.midTableView.physicsTableList,\n cfgData: state.midTableView.cfgData,\n})\n\nconst mapDispatch = dispatch => ({\n updateTableConf: dispatch.midTableView.updateTableConf,\n updateLinkConf: dispatch.midTableView.updateLinkConf,\n updatePhysicsTableList: dispatch.midTableView.updatePhysicsTableList,\n})\n\nexport default connect(mapState, mapDispatch)(AddField)\n","import React from 'react'\nimport './style/index.css'\nimport SdwSelect from '@common/Select'\nimport { connect } from 'react-redux'\nimport SdwTable from '@common/Table'\nimport _ from 'lodash'\nimport SdwButton from '@common/Button'\nimport { getNodeFields, getPublicCfg, deleteFields, deleteNode, tablePreview} from '@api/midTable'\nimport SdwMessage from '@common/Message'\nimport AddField from '@pages/Knowledge/MidTable/AddFiled'\nimport Dialog from '@common/Dialog'\nimport Loadding from '@common/Loadding'\n\nclass TableList extends React.Component {\n state = {\n recordList :[], //节点下拉选项\n clickItem:{}, //选中某个节点\n clickFieldsList:[], //字段table列表\n stepList:[], //所有的节点\n fieldParams:{},\n showAddField:false,\n //dialogDelVisible:false,\n isEdit:false,\n dialogDelNodeVisible:false,\n previewDataColumns:[], //预览数据的行\n previewDataList:[], //预览数据\n field_type_map:{},\n isLoading:false,\n }\n componentDidMount() {\n this.iniFieldTypeMap()\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n if (this.props.stepList != prevProps.stepList) {\n this.iniStepList()\n this.iniDataSourceFields()\n }\n if (this.props.clickDataSource != prevProps.clickDataSource) {\n this.iniClickData()\n }\n if (this.props.cfgData != prevProps.cfgData) {\n this.iniFieldTypeMap()\n }\n }\n\n iniFieldTypeMap = () => {\n let cfgData = this.props.cfgData\n if (JSON.stringify(cfgData) != \"{}\") {\n let field_type_map = {}\n cfgData.field_type.forEach(i => {\n field_type_map[i.value] = {id:parseInt(i.value), text:i.code, item:i}\n })\n this.setState({\n field_type_map:field_type_map\n })\n }\n }\n\n iniStepList = () => {\n let stepList = this.props.stepList\n let clickItem = this.state.clickItem\n let recordList = []\n for (let i in stepList) {\n if (stepList[i].item[\"table_name\"] == null) {\n continue\n }\n let text = \"\"\n if (stepList[i].item[\"table_type\"] == 0) {\n text = \"【物理表】 \" + stepList[i].text\n } else {\n text = \"【视图】 \" + stepList[i].text\n }\n if (JSON.stringify(clickItem) != \"{}\" && clickItem.id == stepList[i].id) {\n this.setState({\n clickItem:stepList[i]\n })\n }\n recordList.push({\n id:stepList[i].id,\n text:text,\n item:stepList[i]\n })\n }\n console.log(\"recordList\", recordList)\n this.setState({\n recordList:recordList,\n stepList:stepList,\n })\n }\n //初始化当前的点击的字段信息\n iniClickData = () => {\n let clickDataSource = this.props.clickDataSource\n this.setState({\n clickItem:clickDataSource\n }, this.iniDataSourceFields)\n\n }\n //初始字段列表\n iniDataSourceFields = () => {\n let {clickItem} = this.state\n let item = clickItem.item\n if (!item) {\n return\n }\n console.log(\"----------------clickItem\", clickItem)\n console.log(\"----------------item\", item)\n let params = {\n id:item.job_id,\n node_id:item.id,\n }\n if (item.hasOwnProperty(\"link\") && item.link) {\n params.link_id = item.link.id\n }\n console.log(\"end-----------------params\", params)\n getNodeFields(params).then(res => {\n if (res && res.data && res.data.code === 0) {\n let record = res.data.data || []\n this.setState({\n clickFieldsList:record,\n previewDataList:[],\n })\n } else {\n let msg = res.data.msg || '请求失败'\n SdwMessage.error(msg)\n }\n }).catch(error => SdwMessage.error('请求失败 ' + error))\n }\n //切换节点\n changeClickTableView = (item) => {\n this.setState({\n clickItem:item\n }, this.iniDataSourceFields)\n }\n //编辑字段\n editField = (item) => {\n let fieldParams = {\n id: item.id, // 字段id,新增不传,编辑传\n config: item.config,\n field: item.field, // 结果字段\n src_reader_id:item.src_reader_id,\n field_type: item.field_type, // 字段类型\n filter: item.filter, // 过滤条件\n mapping_type: item.mapping_type, // single:表原生字段,combine:加工字段\n enabled: item.enabled\n }\n this.setState({\n isEdit:true,\n fieldParams:fieldParams,\n showAddField:true\n })\n }\n //删除字段 不需要弹框\n // delField = (item) => {\n // let fieldParams = {\n // id: item.id, // 字段id,新增不传,编辑传\n // config: item.config,\n // field: item.field, // 结果字段\n // src_reader_id:item.src_reader_id,\n // field_type: item.field_type, // 字段类型\n // filter: item.filter, // 过滤条件\n // mapping_type: item.mapping_type, // single:表原生字段,combine:加工字段\n // enabled: item.enabled\n // }\n // this.setState({\n // fieldParams:fieldParams,\n // dialogDelVisible:true\n // })\n // }\n //删除字段确认点击\n deleteFieldsSureClick = (item) => {\n let {clickItem} = this.state\n let fieldParams = {\n id: item.id, // 字段id,新增不传,编辑传\n config: item.config,\n field: item.field, // 结果字段\n src_reader_id:item.src_reader_id,\n field_type: item.field_type, // 字段类型\n filter: item.filter, // 过滤条件\n mapping_type: item.mapping_type, // single:表原生字段,combine:加工字段\n enabled: item.enabled\n }\n let params = {\n \"id\": clickItem.item.job_id,\n \"node_id\": clickItem.item.id,\n \"field_ids\": [fieldParams.id]\n }\n deleteFields(params).then(res => {\n if (res && res.data && res.data.code === 0) {\n SdwMessage.success(\"删除字段成功\")\n this.iniDataSourceFields()\n // this.setState({\n // dialogDelVisible:false\n // })\n } else {\n let msg = res.data.msg || '请求失败'\n SdwMessage.error(msg)\n }\n }).catch(error => SdwMessage.error('请求失败 ' + error))\n }\n //删除按钮点击节点\n delNode = () => {\n let {clickItem} = this.state\n if (JSON.stringify(clickItem) == \"{}\") {\n return\n }\n this.setState({\n dialogDelNodeVisible:true\n })\n }\n //删除节点确认点击\n deleteNodeSureClick = () => {\n let {clickItem} = this.state\n if (JSON.stringify(clickItem) == \"{}\") {\n return\n }\n let item = clickItem.item\n let params = {\n \"id\": item.job_id,\n \"node_id\": item.id\n }\n if (item.hasOwnProperty(\"link\") && item.link) {\n params.link_id = item.link.id\n }\n console.log(\"clickItem\")\n deleteNode(params).then(res => {\n if (res && res.data && res.data.code === 0) {\n SdwMessage.success(\"删除节点成功\")\n this.props.iniTableViewList(item.job_id)\n this.setState({\n clickItem: {},\n clickFieldsList:[],\n previewDataList:[],\n dialogDelNodeVisible:false\n })\n } else {\n let msg = res.data.msg || '请求失败'\n SdwMessage.error(msg)\n }\n }).catch(error => SdwMessage.error('请求失败 ' + error))\n }\n //添加字段按钮点击\n addFieldClick = () => {\n let {clickItem} = this.state\n if (JSON.stringify(clickItem) == \"{}\") {\n return\n }\n this.setState({\n isEdit:false,\n showAddField:true\n })\n }\n //编辑节点按钮点击事件触发\n editTableViewNode = () => {\n let {clickItem} = this.state\n console.log(\"editTableViewNode=========clickItem\", clickItem)\n if (JSON.stringify(clickItem) == \"{}\") {\n return\n }\n this.props.editTableViewNode(clickItem)\n }\n changeFieldType = (data, val) => {\n console.log(\"data\", data)\n console.log(\"data\", val)\n }\n getColumns = () => {\n let {stepList, clickItem,field_type_map} = this.state\n return [\n {\n title: \"字段ID\",\n width: 55,\n showTip: true,\n render(data){\n let mappingType = {\n single:\"原生\",\n combine:\"计算\",\n }\n return (\n <>\n {mappingType[data.mapping_type]}\n {data.field}\n \n )\n }\n },\n // {\n // title: \"数据类型\",\n // width: 50,\n // render(data){\n // return (\n // <>\n // {field_type_map[data.field_type] ? field_type_map[data.field_type].text : \"-\"}\n // \n // )\n // }\n // },\n {\n title: \"来源表\",\n width: 90,\n showTip: true,\n render(data) {\n return (\n <>\n {stepList[data.src_reader_id].text}\n \n );\n }\n },\n {\n title: \"操作\",\n width: 70,\n render: data => {\n if (clickItem.item && clickItem.item.table_type == 1 && clickItem.item.view_type == 1 && data.mapping_type == \"single\" ) { //单表聚合并且是原生字段则不能操作\n return (\n <>\n \n )\n }\n return (\n
\n {/* 编辑权限放开,都可以点击编辑进入弹窗查看数据 */}\n this.editField(data)}\n text=\"编辑\"\n />\n this.deleteFieldsSureClick(data)}\n text=\"删除\"\n />\n
\n )\n }\n }\n ]\n }\n //预览数据刷新按钮点击\n previewDataFlush = () => {\n let {clickItem, isLoading} = this.state\n if (!clickItem || JSON.stringify(clickItem) == \"{}\" || isLoading) {\n return\n }\n this.setState({\n isLoading:true\n })\n let params = {\n \"id\": clickItem.item.job_id,\n \"node_id\": clickItem.item.id\n }\n tablePreview(params).then(res => {\n if (res && res.data && res.data.code === 0) {\n let list = res.data.data.list || []\n this.setState({\n previewDataList:list\n })\n } else {\n let msg = res.data.data || '请求失败'\n SdwMessage.error(msg)\n }\n }).catch(error => SdwMessage.error('请求失败 ' + error)).finally(()=>{\n this.setState({\n isLoading:false\n })\n })\n }\n getPreviewDataColumns = () =>{\n let {clickFieldsList} = this.state\n if (!clickFieldsList || clickFieldsList.length == 0 ) {\n return []\n }\n return clickFieldsList.map(i => ({\n title: <>\n {i.field}\n ,\n dataIndex: i.field\n }))\n }\n\n\n\n render() {\n\n let {\n recordList,\n clickFieldsList,\n clickItem,\n fieldParams,\n showAddField,\n isEdit,\n //dialogDelVisible,\n dialogDelNodeVisible,\n previewDataList,\n isLoading,\n stepList,\n } = this.state\n console.log(\"recordList====\", recordList)\n console.log(\"clickItem====\", clickItem)\n console.log(\"clickFieldsList====\", clickFieldsList)\n console.log(\"showAddField====\", showAddField)\n console.log(\"stepList====\", stepList)\n return (\n <>\n
\n this.changeClickTableView(item.item)}\n />\n \n 编辑\n \n \n 移除\n \n
\n
\n
\n
\n 字段信息\n \n + 添加字段\n \n
\n \n
\n
\n
\n 预览数据(注:随机从各数据源抽取1000条数据加工,并展示100条)\n \n 刷新\n \n
\n \n \n \n
\n
\n {/**删除字段弹窗 */}\n {/*{*/}\n {/* dialogDelVisible &&*/}\n {/* this.setState({*/}\n {/* dialogDelVisible:false*/}\n {/* })}*/}\n {/* onSureClick={this.deleteFieldsSureClick}*/}\n {/* >*/}\n {/*
确认移除字段{fieldParams.field}
*/}\n {/* */}\n {/*}*/}\n {/**移除节点弹窗 */}\n {\n dialogDelNodeVisible &&\n this.setState({\n dialogDelNodeVisible:false\n })}\n onSureClick={this.deleteNodeSureClick}\n >\n
移除后将影响后续的加工步骤,确认移除?
\n \n }\n {\n showAddField&&{\n this.setState({\n showAddField:bool\n })\n }}\n stepList={stepList}\n recordList={recordList}\n clickItem={clickItem}\n clickFieldsList={clickFieldsList}\n fieldParams={fieldParams}\n isEdit={isEdit}\n iniDataSourceFields={this.iniDataSourceFields}\n />\n }\n \n )\n }\n}\nconst mapState = state => ({\n stepList: state.midTableView.stepList,\n cfgData: state.midTableView.cfgData,\n})\n\nconst mapDispatch = dispatch => ({\n updateStepList:dispatch.midTableView.updateStepList\n})\nexport default connect(mapState, mapDispatch)(TableList)\n","import { useState, useEffect, useLayoutEffect, useMemo } from 'react'\nimport { connect } from 'react-redux'\n\nimport \"./style/index.css\"\nimport FlowChart from '@common/FlowChart'\nimport _ from 'lodash'\nimport img3 from '@pages/MachFactory/Derived/Detail/Blood/img/level3.png'\nimport { getDataKinship } from '@api/Derived'\nimport Message from '@common/Message'\n\nfunction TableView(props) {\n const [initRecord, setInitRecord] = useState([])\n const [initPathArr, setInitPathArr] = useState([])\n useEffect(() => {\n let treeInfo = props.treeInfo\n let detailInfo = props.detailInfo\n console.log(\"treeInfo\", treeInfo)\n console.log(\"detailInfo\", detailInfo)\n let dataClone = getDetailInfoList(detailInfo)\n //获取连接关系\n let linkConf = detailInfo.link_conf\n //通过后序遍历的方式计算 列的left\n // let treeObj = getTree(treeInfo.tree)\n // let treeTrace = treeObj.treeTrace\n // let linkConf = treeObj.linkConf\n // //通过中序遍历的方式计算 行的top\n // let treeMidTrace = getMidTree(treeInfo.tree)\n // let levelLength = treeTrace.length\n // let deepNum = -1\n // if (treeInfo.list != null) {\n // treeInfo.list.forEach(i => {\n // deepNum = deepNum + 2\n // dataClone[i.id] = {id:i.id, is_used:0, text:(i.table_name?i.table_name:\"根节点\"), type:(i.table_type==-1?0:i.table_type), deep:deepNum, level:1, item:i}\n // })\n // }\n console.log(\"======dataClone\", dataClone)\n props.updateStepList(dataClone)\n let data = Object.values(dataClone)\n //组装连线关系\n let linkConfList = []\n if (!linkConf) {\n linkConf = []\n }\n linkConf.forEach(i => {\n linkConfList.push({ beginID: i.left_node_id, beginPosition: \"right\", endID: i.target_node_id, endPosition: \"left\", type:\"left_node_id\"})\n if (i.right_node_id !== null) {\n linkConfList.push({ beginID: i.right_node_id, beginPosition: \"right\", endID: i.target_node_id, endPosition: \"left\", type:\"right_node_id\"})\n }\n })\n let initRecord = []\n data.forEach((item, key) => {\n let style = {\n width: 113,\n height: 32\n }\n let marginLeft = item.is_used == 1 ? 450 : 280\n let deep = item.deep //行的层级\n let level = item.level //列的层级\n initRecord.push({\n id: item.id,\n textContent: getDiv(item),\n style: getStyle(style, deep, level, marginLeft)\n })\n })\n setInitPathArr(linkConfList)\n setInitRecord(initRecord)\n }, [props.detailInfo])\n\n function getDetailInfoList(detailInfo) {\n\n let link_conf = detailInfo.link_conf\n let table_conf = detailInfo.table_conf\n let positionMap = {}\n let readerMap = {}\n for (let i in table_conf) {\n let table_conf_clone = _.cloneDeep(table_conf[i])\n if (link_conf) {\n link_conf.forEach(link_conf_item => {\n if (link_conf_item.target_node_id == table_conf[i].id) {\n table_conf_clone.link = link_conf_item\n }\n })\n }\n readerMap[table_conf[i].id] = table_conf_clone\n }\n console.log(\"readerMap===\", readerMap)\n console.log(\"link_conf===\", link_conf)\n let targetNodeIdTem = 0\n for (let i in link_conf) {\n let leftNodeId = link_conf[i].left_node_id\n let rightNodeId = link_conf[i].right_node_id\n let targetNodeId = link_conf[i].target_node_id\n let x = parseInt(i) + 2\n let y = parseInt(i) + 2\n //左节点\n if (leftNodeId && !positionMap.hasOwnProperty(leftNodeId)) {\n let readerInfo = readerMap[leftNodeId]\n let id = leftNodeId\n let deep = y - 1\n let level = x - 1\n if (readerMap[targetNodeId] && (readerMap[targetNodeId].view_type == 1 || readerMap[targetNodeId].view_type == 2)) { //0多表关联,1单表聚合,2分桶聚合\n deep = deep + 2\n }\n if (i != 0 && leftNodeId != targetNodeIdTem) {\n level = level - 1\n deep = deep + 4\n }\n let text = readerInfo.table_name?readerInfo.table_name:\"根节点\"\n let type = readerInfo.table_type==-1?0:readerInfo.table_type\n positionMap[id] = {id:id, is_used:1, text:text, type:type, deep:deep, level:level, item:readerInfo}\n }\n //目标节点\n if (targetNodeId && !positionMap.hasOwnProperty(targetNodeId)) {\n let readerInfo = readerMap[targetNodeId]\n let id = targetNodeId\n let level = 0\n let deep = 0\n if (readerInfo && (readerInfo.view_type == 1 || readerInfo.view_type == 2)) { //0多表关联,1单表聚合,2分桶聚合\n level = positionMap[leftNodeId].level + 1\n deep = positionMap[leftNodeId].deep\n } else { //多表关联\n level = x\n deep = y\n }\n if (i != 0 && leftNodeId != targetNodeIdTem) {\n level = level - 1\n deep = deep + 4\n }\n let text = readerInfo.table_name?readerInfo.table_name:\"根节点\"\n let type = readerInfo.table_type==-1?0:readerInfo.table_type\n positionMap[id] = {id:id, is_used:1, text:text, type:type, deep:deep, level:level, item:readerInfo}\n }\n //右节点\n if (rightNodeId && !positionMap.hasOwnProperty(rightNodeId)) {\n let readerInfo = readerMap[rightNodeId]\n let id = rightNodeId\n let level = x - 1\n let deep = y + 1\n if (i != 0 && leftNodeId != targetNodeIdTem) {\n level = level - 1\n deep = deep + 4\n }\n let text = readerInfo.table_name?readerInfo.table_name:\"根节点\"\n let type = readerInfo.table_type==-1?0:readerInfo.table_type\n positionMap[id] = {id:id, is_used:1, text:text, type:type, deep:deep, level:level, item:readerInfo}\n }\n targetNodeIdTem = targetNodeId\n }\n let n = -1\n for (let id in readerMap) {\n if (!positionMap.hasOwnProperty(readerMap[id].id)) {\n n = n + 2\n let readerInfo = readerMap[id]\n let text = readerInfo.table_name?readerInfo.table_name:\"根节点\"\n let type = readerInfo.table_type==-1?0:readerInfo.table_type\n positionMap[readerMap[id].id] = {id:readerMap[id].id, is_used:0, text:text, type:type, deep:n, level:1, item:readerInfo}\n }\n }\n console.log(\"===positionMap\", positionMap)\n return positionMap\n }\n\n /*\n * @param {TreeNode} root\n * 后序遍历\n * @return {number[]}\n * */\n function getTree(root) {\n // 按前序的次序来存储节点的值\n const ans = [];\n const linkConf = [];\n /**\n * 递归遍历树节点\n */\n const traversal = (node, n) => {\n // 如果该子节点不存在,则终止递归\n if (node === \"\" || node === null || JSON.stringify(node) == \"{}\") return;\n // 处理当前节点的左子树\n if (node.hasOwnProperty(\"left\")) {\n traversal(node.left, n + 1)\n }\n\n // 处理当前节点的右子树\n if (node.hasOwnProperty(\"right\")) {\n traversal(node.right, n + 1)\n }\n // 处理当前节点\n let reader = {...node.reader}\n reader[\"link\"] = node.link\n if (ans[n]) {\n ans[n].push(reader);\n } else {\n ans[n] = [reader]\n }\n if (node.link !== null) {\n linkConf.push(node.link)\n }\n };\n traversal(root, 0);\n\n return {treeTrace:ans, linkConf:linkConf};\n }\n\n /*\n * @param {TreeNode} root\n * 中序遍历\n * @return {number[]}\n * */\n function getMidTree(root) {\n if (root === null) return [];\n // 按前序的次序来存储节点的值\n const ans = [];\n /**\n * 递归遍历树节点\n */\n const traversal = (node, n) => {\n // 如果该子节点不存在,则终止递归\n if (node === \"\" || node === null || JSON.stringify(node) == \"{}\") return;\n // 处理当前节点的左子树\n if (node.hasOwnProperty(\"left\")) {\n traversal(node.left, n + 1)\n }\n ans.push(node.reader);\n // 处理当前节点的右子树\n if (node.hasOwnProperty(\"right\")) {\n traversal(node.right, n + 1)\n }\n };\n traversal(root, 0);\n\n return ans;\n }\n\n function onDivClick(item) {\n props.tableViewClickNode(item)\n }\n\n function getDiv(item) {\n return (\n onDivClick(item)}\n >\n
\n {item.text}\n \n )\n }\n // 根据deep, level获取top值和left\n function getStyle(style, deep, level, marginLeft = 0) {\n let top = 0\n let left = 0\n if (deep % 2 === 0) { //偶数行\n top = (deep / 2 -1) * (32 + 20) + 26\n } else { //奇数行\n top = ((deep + 1) / 2 -1) * (32 + 20)\n }\n\n left = marginLeft + ( level -1) * (113+ 58)\n\n return {\n ...style,\n left,\n top\n }\n }\n let flowHeight = \"1000\"\n console.log(\"====initRecord\", initRecord)\n console.log(\"====initPathArr\", initPathArr)\n console.log(\"====flowHeight\", flowHeight)\n return (\n
\n {\n initRecord.length > 0 &&\n \n }\n
\n )\n}\n\n\n\nconst mapState = state => ({\n treeInfo: state.midTableView.treeInfo,\n stepList: state.midTableView.stepList,\n detailInfo: state.midTableView.detailInfo,\n})\nconst mapDispatch = dispatch => ({\n updateTreeInfo:dispatch.midTableView.updateTreeInfo,\n updateStepList:dispatch.midTableView.updateStepList,\n updateDetailInfo:dispatch.midTableView.updateDetailInfo,\n})\nexport default connect(mapState, mapDispatch)(TableView)\n","import React from 'react'\nimport _ from 'lodash'\nimport { connect } from 'react-redux'\nimport SdwBreadCrumbs from '@common/BreadCrumbs'\nimport SdwDialog from '@common/Dialog'\nimport SdwMessage from '@common/Message'\nimport './style/index.css'\nimport SdwSelect from '@common/Select'\nimport SdwInput from '@common/Input'\nimport AddWin from '@pages/Knowledge/MidTable/AddWin'\nimport JobPublish from '@pages/Knowledge/MidTable/JobPublish'\nimport PublishDetail from '@pages/Knowledge/MidTable/PublishDetail'\nimport AddSource from '@pages/Knowledge/MidTable/AddSource'\nimport StepList from '@pages/Knowledge/MidTable/stepList'\nimport TableList from '@pages/Knowledge/MidTable/TableList'\nimport { saveTable, tablePages, getDetailTreeInfo, getDetailInfo, getPublicCfg, jobPublish, jobDisable } from '@api/midTable'\nimport TableView from '@pages/Knowledge/MidTable/TableView'\n\nclass EditMidTable extends React.Component {\n\n state = {\n editMidTable:{},\n sholdCheckSpecialCodeValidate: false,\n showAddWin:false,\n showPublishDialog:false, //发布弹框\n showDetailDialog:false, //发布详情弹框\n showStopDialog:false, //停止弹框\n showAddSource:false, //添加数据源的visible\n clickDataSource:{}, //当前选择的数据源 为空则说明未选择任何一个数据源\n isEdit:false,\n }\n\n componentDidMount () {\n this.initData()\n this.getPublicCfgs()\n }\n\n initData = () => {\n let id = this.props.location.state && this.props.location.state.id || ''\n // console.log(\"EditMidTable======this.props.location\", this.props.location.state)\n if (!!id) {\n this.iniEditMidTable(id)\n //this.iniTableViewTree(id)\n this.iniTableViewList(id)\n }\n }\n getPublicCfgs = () => {\n getPublicCfg().then(res => {\n if (res.data.code === 0 && res.data.data) {\n let cfgData = {}\n for (let i in res.data.data) {\n cfgData[i] = res.data.data[i]\n }\n this.props.updateCfgData(cfgData)\n }\n })\n }\n\n //初始化加工视图 不使用\n iniTableViewTree = (id) => {\n getDetailTreeInfo({\n id:id,\n }).then(res => {\n if (res.data && res.data.code === 0) {\n this.props.updateTreeInfo(res.data.data)\n } else {\n let data = {\n list:null,\n tree:null\n }\n this.props.updateTreeInfo(data)\n }\n }, () => SdwMessage.error(\"接口异常\"))\n }\n//初始化加工视图\n iniTableViewList = (id) => {\n getDetailInfo({\n id:id,\n }).then(res => {\n if (res.data && res.data.code === 0) {\n this.props.updateDetailInfo(res.data.data)\n }\n }, () => SdwMessage.error(\"接口异常\"))\n }\n\n changeDialogVisible = (type, flag) => {\n switch (type) {\n case \"showAddSource\":\n this.setState({\n showAddSource: flag\n })\n break\n case \"showAddWin\":\n this.setState({\n showAddWin: flag\n })\n break\n case \"showPublishDialog\":\n this.setState({\n showPublishDialog: flag\n })\n break\n case \"showDetailDialog\":\n this.setState({\n showDetailDialog: flag\n })\n break\n case \"showStopDialog\":\n this.setState({\n showStopDialog: flag\n })\n break\n }\n\n }\n //代码型提交\n onSubmitSpecialCode = () => {\n let { editMidTable} = this.state\n // console.log(\"EditMit============onSubmitSpecialCode=====editMidTable\", editMidTable)\n if (!editMidTable.special_code) {\n this.setState({\n sholdCheckSpecialCodeValidate:true\n })\n return\n }\n\n let job = {\n job_name:editMidTable.job_name,\n schedule_time:editMidTable.schedule_time,\n exec_cycle:editMidTable.exec_cycle,\n job_type:editMidTable.job_type,\n enabled: 1,\n max_retries: 2,\n special_code: editMidTable.special_code\n }\n saveTable({\n id:editMidTable.id,\n job\n }).then(res => {\n if (res.data && res.data.code === 0) {\n SdwMessage.success(\"修改成功\")\n this.iniEditMidTable(editMidTable.id)\n } else {\n let msg = res.data && res.data.data\n SdwMessage.error(msg);\n }\n }, () => SdwMessage.error(\"接口异常\"))\n }\n\n //编辑中间表任务之后需要重置当前的editMidTable数据\n iniEditMidTable = (id) => {\n //let editMidTable = this.state.editMidTable\n tablePages({\n search: {\n id: {\n value: id,\n operator: '='\n }\n }\n }).then(res => {\n const code = _.get(res, 'data.code')\n if (code === 0) {\n const midTableList = _.get(res, 'data.data')\n if (midTableList.total == 1) {\n this.setState({\n editMidTable: midTableList.items[0]\n })\n } else {\n SdwMessage.err(\"参数异常\")\n }\n } else {\n const msg = _.get(res, 'data.msg') || '接口异常'\n SdwMessage.err(msg)\n }\n })\n }\n //TableView-----点击节点操作\n tableViewClickNode = (item) => {\n // console.log(\"tableViewClickNode=========item\", item)\n this.setState({\n clickDataSource:item\n })\n }\n //TableView-----点击编辑节点操作\n editTableViewNode = (item) => {\n let currentSource = {}\n // console.log(\"tableViewClickNode=========item\", item)\n if (item.item.table_type == 0) {\n currentSource = {\n id:item.item.id,\n job_id:item.item.job_id,\n table_type:0, //节点类型:-1为根表,0为物理表,1为视图\n data_set_type:item.item.data_set_type,\n table_id: item.item.table_id, //物理表数据源id\n filter: item.item.filter == null ? \"\" : item.item.filter, //物理表过滤条件\n time_field: item.item.time_field ? item.item.time_field.split(\";\").map(i => {\n return {id:i, text: i}\n }) : [], //物理表取数时间字段\n get_time_cycle: item.item.get_time_cycle, //物理表取数范围\n groupby_key: item.item.groupby_key,\n enabled: 1,\n table_name:item.item.table_name, //视图名称\n fields_conf:[]\n }\n } else {\n let link = item.item.link\n currentSource = {\n id: item.item.id, // 视图节点id,新增不传,编辑传\n after_filter:item.item.after_filter,\n job_id:item.item.job_id,\n table_type:1, //节点类型:-1为根表,0为物理表,1为视图\n view_type:item.item.view_type, //0多表关联,1单表聚合,2分桶聚合\n table_name: item.item.table_name, //视图名称\n link_id: link.id,\n concat_type: link.concat_type, //关联类型,有左关联join和合并union\n left_node_id: link.left_node_id, //主表字段id\n right_node_id: link.right_node_id || \"\", //副表节点id\n left_field: link.left_field ? link.left_field .split(\";\").map(i => {\n return {id:i, text: i}\n }) : [],\n right_field: link.right_field ? link.right_field .split(\";\").map(i => {\n return {id:i, text: i}\n }) : [],\n groupby_key: item.item.groupby_key || \"\", //聚合字段\n enabled: 1, //默认有效\n }\n }\n\n // console.log(\"tableViewClickNode=========item\", item)\n // console.log(\"tableViewClickNode=========currentSource\", currentSource)\n this.props.updateCurrentSource(currentSource)\n this.setState({\n isEdit:true\n })\n this.changeDialogVisible(\"showAddSource\", true)\n }\n //停止任务\n stopTask =() => {\n let {editMidTable} = this.state\n jobDisable({\n id:editMidTable.id\n }).then(res => {\n if (res.data && res.data.code === 0) {\n this.changeDialogVisible(\"showStopDialog\", false)\n SdwMessage.success(\"停止成功\")\n this.iniEditMidTable(editMidTable.id)\n } else {\n let msg = res.data && res.data.data\n SdwMessage.error(msg);\n }\n }, () => SdwMessage.error(\"接口异常\"))\n }\n render () {\n\n let {\n editMidTable,\n comfirmVisible,\n showStopDialog,\n showAddWin,\n showPublishDialog,\n showDetailDialog,\n showAddSource,\n clickDataSource,\n sholdCheckSpecialCodeValidate,\n isEdit,\n } = this.state\n return (\n
\n \n\n
\n {`${editMidTable.job_name}`}\n this.changeDialogVisible(\"showAddWin\", true)}\n >修改\n\n {\n editMidTable.publish_state == 0 ? \n \n this.changeDialogVisible(\"showPublishDialog\", true)}\n >发布\n \n :\n \n \n this.changeDialogVisible(\"showDetailDialog\", true)}\n >发布详情\n this.changeDialogVisible(\"showStopDialog\", true)}\n >停止\n \n \n }\n\n
\n\n \n
\n 中间表加工视图\n {\n editMidTable.job_type == 0 &&\n {\n this.props.updateCurrentSource({})\n this.setState({\n isEdit:false\n })\n this.changeDialogVisible(\"showAddSource\", true)\n }} className=\"sdw-edit_mid_table__center-wrap-body-title-button\">\n + 添加数据源\n \n }\n
\n {/*中间表为配置型*/}\n {\n editMidTable.job_type == 0 &&
\n
\n \n
\n
\n
\n \n
\n
\n \n
\n
\n
\n }\n {/*中间表为代码型*/}\n {\n editMidTable.job_type == 1 &&
\n
\n
\n 加工函数\n {return !!val?true:\"加工函数不能为空\"}}\n onChange={val => this.setState({\n editMidTable: Object.assign({}, editMidTable, {special_code:val})\n })}\n />\n
\n
\n \n \n
\n
\n
\n }\n
\n {\n showAddWin &&\n this.changeDialogVisible(\"showAddWin\", bool)}\n updatePage={this.iniEditMidTable}\n />\n }\n {\n showPublishDialog &&\n this.changeDialogVisible(\"showPublishDialog\", bool)}\n updatePage={this.iniEditMidTable}\n />\n }\n {\n showDetailDialog &&\n this.changeDialogVisible(\"showDetailDialog\", bool)}\n />\n\n }\n\n {\n showAddSource &&\n this.changeDialogVisible(\"showAddSource\", bool)}\n iniTableViewList={this.iniTableViewList}\n />\n }\n\n {\n this.changeDialogVisible(\"showStopDialog\", flag)\n }}\n onCancelClick={ ()=>{\n this.changeDialogVisible(\"showStopDialog\", false)\n }}\n onSureClick={this.stopTask}\n >\n 停止后任务将变更为未发布状态,确认停止?\n \n \n 是否保存对该指标的修改\n \n \n )\n }\n}\n\nconst mapState = state => ({\n treeInfo: state.midTableView.treeInfo,\n detailInfo: state.midTableView.detailInfo,\n currentSource: state.midTableView.currentSource,\n cfgData: state.midTableView.cfgData,\n})\n\nconst mapDispatch = dispatch => ({\n updateTreeInfo:dispatch.midTableView.updateTreeInfo,\n updateDetailInfo:dispatch.midTableView.updateDetailInfo,\n updateCurrentSource:dispatch.midTableView.updateCurrentSource,\n updateCfgData:dispatch.midTableView.updateCfgData,\n})\nexport default connect(mapState, mapDispatch)(EditMidTable)\n","import React from 'react'\nimport _ from 'lodash'\nimport { formatJsonParse } from '@utils/formatJson'\nimport SdwInput from '@common/Input'\nimport SdwRadiobox from '@common/Radiobox'\nimport SdwSelect from '@common/Select'\nimport SdwButton from '@common/Button'\nimport SdwPopover from '@common/Popover'\nimport SdwMessage from '@common/Message/index'\nimport ConfigRule from '../../ConfigRule'\nimport { getTableApiItems, storeCollection, updateCollection, getFieldRuleConf, getInfoById } from '@services/dataAccess'\n\nimport '../../style/dataAccess.css'\n\nconst DEFAULT_CONFIG_RULE = {\n queue: 1,\n method_name: '',\n method_param: ''\n}\n\nconst BINLOG = 'BINLOG'\nconst INIT = 'INIT'\nconst TIP_STRING = '若源表为分表(按日期或特定规则分开),需配置对应分表规则,保障数据完整入库'\n\nclass DataAccess extends React.PureComponent {\n\n state = {\n taskID: null, // taskID不为null,表示编辑;否则表示新增\n sholdCheckValidate: false,\n sholdSqlCheckValidate: false,\n sholdBreakTableCheckValidate: false,\n resourseTableValue: '',\n targetTableValue: '',\n timeValue: '',\n filedNameValue: '',\n filedTypeValue: '',\n tableRuleValue: 1,\n configRules: '',\n syncType: BINLOG,\n isBreakTable: '1', // 0分 1不分\n sqlConfigValue: '',\n configRuleList: [],\n resourseTableList: [],\n targetTableList: [],\n filedTypeList: [\n {\n id: 'int',\n text: 'int'\n }, {\n id: 'double',\n text: 'double'\n }, {\n id: 'varchar',\n text: 'varchar'\n }, {\n id: 'float',\n text: 'float'\n }\n ],\n fieldList: []\n }\n\n componentDidMount() {\n this.initData()\n\n let propState = this.props.location.state || {}\n let ID = propState.id\n \n if (!!ID) {\n this.setState({ taskID: ID })\n this.onGetInfoById(ID)\n }\n }\n\n initData = () => {\n this.getTableApiItems()\n this.getFieldRuleConf()\n }\n\n onGetInfoById = id => {\n let pipelineParams = {\n task_id: {\n value: id,\n operator: '='\n }\n }\n getInfoById({\n search: JSON.stringify(pipelineParams),\n tablename: 'data_pipeline'\n }).then(res => {\n if (res && res.data && res.data.code === 0) {\n let record = res.data.data || {}\n let curArr = Array.isArray(record.items) ? record.items : []\n\n if (curArr.length) {\n this.setState({ configRuleList: curArr })\n }\n } else {\n SdwMessage.error('获取数据失败')\n }\n })\n .catch(error => {\n SdwMessage.error('接口异常:' + error)\n })\n\n let taskParams = {\n id: {\n value: id,\n operator: '='\n }\n }\n getInfoById({\n search: JSON.stringify(taskParams),\n tablename: 'data_task'\n }).then(res => {\n if (res && res.data && res.data.code === 0) {\n let record = res.data.data || {}\n let items = record.items || []\n\n if (items.length) {\n let obj = items[0]\n let sourceID = formatJsonParse(obj.source_id || '')\n\n this.setState({\n syncType: obj.stream_type,\n resourseTableValue: +obj.source_table,\n targetTableValue: +obj.target_table,\n sqlConfigValue: obj.sql,\n timeValue: obj.suffix_time_field,\n\n filedNameValue: sourceID.field,\n filedTypeValue: sourceID.type,\n\n isBreakTable: String(obj.is_split_table),\n tableRuleValue: +obj.split_table_type,\n configRules: !!obj.split_table_rule ? obj.split_table_rule : ''\n })\n }\n } else {\n SdwMessage.error('获取数据失败')\n }\n })\n .catch(error => {\n SdwMessage.error('接口异常:' + error)\n })\n }\n \n getTableApiItems = () => {\n\n // 来源表参数\n let params = {\n limit: 10000,\n search: JSON.stringify({\n data_set_type: {\n value: 'mysql',\n operator: '='\n },\n warehouse_level: {\n value: 'ODS',\n operator: '='\n },\n enable: {\n value: '1',\n operator: '='\n }\n })\n }\n\n // 来源表\n getTableApiItems(params).then(res => {\n if (res && res.data && res.data.code === 0) {\n let curArr = Array.isArray(res.data.data.items) ? res.data.data.items : []\n curArr = curArr.map(i => {\n let curName = !!i.database_name ? `${i.database_name}.${i.table_name}` : `${i.table_name}`\n return {\n id: i.id,\n text: `${curName}(${i.data_set_chinese})`,\n }\n })\n\n this.setState({resourseTableList: curArr})\n } else {\n SdwMessage.error('获取来源表数据失败')\n }\n })\n .catch(error => {\n SdwMessage.error('获取来源表接口异常:' + error)\n })\n\n // 目标表参数\n let paramData = {\n limit: 10000,\n search: JSON.stringify({\n data_set_type: {\n value: 'es',\n operator: '='\n },\n warehouse_level: {\n value: 'ODS',\n operator: '='\n },\n enable: {\n value: '1',\n operator: '='\n }\n })\n }\n\n // 目标表\n getTableApiItems(paramData).then(res => {\n if (res && res.data && res.data.code === 0) {\n let curArr = Array.isArray(res.data.data.items) ? res.data.data.items : []\n curArr = curArr.map(i => {\n let curName = !!i.database_name ? `${i.database_name}.${i.table_name}` : `${i.table_name}`\n return {\n id: i.id,\n text: `${curName}(${i.data_set_chinese})`,\n }\n })\n\n this.setState({targetTableList: curArr})\n } else {\n SdwMessage.error('获取目标表数据失败')\n }\n })\n .catch(error => {\n SdwMessage.error('获取目标表接口异常:' + error)\n })\n }\n\n getFieldRuleConf = () => {\n getFieldRuleConf().then(res => {\n if (res && res.data && res.data.code === 0) {\n let fieldRule = res.data.data && res.data.data.field_rule || {}\n let curArr = Object.keys(fieldRule).map(key => {\n return {\n id: key,\n text: fieldRule[key]\n }\n })\n\n this.setState({fieldList: curArr})\n } else {\n SdwMessage.error('获取数据失败')\n }\n })\n .catch(error => {\n SdwMessage.error('接口异常:' + error)\n })\n }\n\n validateFun = (curValue, label = '') => {\n if (typeof curValue != 'object' && (typeof curValue === 'number' || !!curValue.trim())) {\n return true\n }\n if (label == \"主题域/业务\" && curValue.ids && curValue.ids.length) {\n return true\n }\n return `${label}不能为空`\n }\n\n onChangeConfigRule = (index, type, val) => {\n let { configRuleList } = this.state\n let curArr = _.cloneDeep(configRuleList)\n\n if (type === 'queue') {\n let beforeVal = Number(index - 1)\n let currentVal = Number(val - 1)\n\n if (beforeVal < currentVal) {\n for (let j = beforeVal + 1; j <= currentVal; j++) {\n curArr[j]['queue'] = curArr[j]['queue'] - 1\n }\n } else if (beforeVal > currentVal) {\n for (let j = beforeVal - 1; j >= currentVal; j--) {\n curArr[j]['queue'] = curArr[j]['queue'] + 1\n }\n }\n }\n\n curArr[index - 1][type] = val\n\n this.setState({ configRuleList: curArr })\n }\n \n onDelConfigRule = index => {\n let { configRuleList } = this.state\n let curArr = _.cloneDeep(configRuleList)\n let lastIndex = curArr.length - 1\n curArr.splice(index, 1)\n\n // 删除的不是最后一项,需要更新删除下面的序号\n if (lastIndex !== index) {\n curArr = curArr.map((item, k) => {\n if (k < index) {\n return item\n } else {\n return _.assign({}, item, {\n queue: item.queue - 1\n })\n }\n })\n }\n\n this.setState({ configRuleList: curArr })\n }\n\n addConfigRules = () => {\n let { configRuleList } = this.state\n let curArr = _.cloneDeep(configRuleList)\n curArr.push(_.assign({}, DEFAULT_CONFIG_RULE, {\n queue: configRuleList.length + 1\n }))\n\n this.setState({ configRuleList: curArr })\n }\n\n handleSubmit = () => {\n let {\n taskID, // id\n syncType, // 同步方式\n resourseTableValue, // 来源表\n targetTableValue, // 目标表\n sqlConfigValue, // SQL\n filedNameValue, // 唯一键-字段名\n filedTypeValue, // 唯一键-字段类型\n isBreakTable, // 是否分表\n tableRuleValue, // 分表规则\n\n timeValue, // 时间字段\n configRules, // 配置规则\n configRuleList, // 规则配置\n } = this.state\n\n let isPassValidate = !!resourseTableValue &&\n !!targetTableValue && (syncType === INIT ? !!sqlConfigValue : true) && !!filedNameValue &&\n !!filedTypeValue && (!(+isBreakTable) ? !!tableRuleValue : true)\n\n if (!isPassValidate) {\n this.setState({\n sholdCheckValidate: true,\n sholdSqlCheckValidate: syncType === INIT,\n sholdBreakTableCheckValidate: !(+isBreakTable)\n })\n return\n }\n\n let params = {\n stream_type: syncType,\n source_table: resourseTableValue,\n target_table: targetTableValue,\n ...(syncType === INIT ? {\n sql: sqlConfigValue\n } : {}),\n suffix_time_field: timeValue,\n source_id: JSON.stringify({\n field: filedNameValue,\n type: filedTypeValue\n }),\n is_split_table: String(+isBreakTable),\n ...(!(+isBreakTable) ? {\n split_table_type: tableRuleValue,\n split_table_rule: configRules\n } : {})\n }\n\n let pipelineList = !!configRuleList.length ? configRuleList.map(i => {\n return {\n queue: i.queue,\n method_name: i.method_name,\n method_param: i.method_param\n }\n }) : []\n\n if (!!taskID) {\n\n // 编辑\n updateCollection({\n id: taskID,\n task: JSON.stringify(params),\n pipeline: JSON.stringify(pipelineList)\n }).then(res => {\n if (res && res.data && res.data.code === 0) {\n SdwMessage.success('任务编辑成功')\n this.props.history.push('/admin/dataCollect/dataManagement')\n } else {\n let msg = !!res.data.msg ? `(${res.data.msg})` : ''\n SdwMessage.error(`任务编辑失败${msg}`)\n }\n })\n .catch(error => {\n SdwMessage.error('接口异常:' + error)\n })\n\n } else {\n\n // 新增\n storeCollection({\n task: JSON.stringify(params),\n pipeline: JSON.stringify(pipelineList)\n }).then(res => {\n if (res && res.data && res.data.code === 0) {\n SdwMessage.success('任务创建成功')\n this.props.history.push('/admin/dataCollect/dataManagement')\n } else {\n let msg = !!res.data.msg ? `(${res.data.msg})` : ''\n SdwMessage.error(`任务创建失败${msg}`)\n }\n })\n .catch(error => {\n SdwMessage.error('接口异常:' + error)\n })\n }\n }\n\n changeCheckedRadiobox = val => {\n this.setState({\n isBreakTable: val,\n sholdBreakTableCheckValidate: Number(val) === 1\n })\n }\n\n changeCheckedSync = val => {\n this.setState({\n syncType: val,\n sholdSqlCheckValidate: val === BINLOG}\n )\n }\n\n render () {\n let {\n sholdCheckValidate,\n sholdSqlCheckValidate,\n sholdBreakTableCheckValidate,\n resourseTableValue,\n targetTableValue,\n timeValue,\n filedNameValue,\n filedTypeValue,\n tableRuleValue,\n configRules,\n syncType,\n isBreakTable,\n sqlConfigValue,\n configRuleList,\n resourseTableList,\n targetTableList,\n filedTypeList,\n fieldList\n } = this.state\n\n return (\n <>\n <>\n
\n \n \n 接入配置\n \n
\n\n
\n \n 接入配置\n 请保障信息准确,避免同步出错\n
\n
\n 同步方式:\n this.changeCheckedSync(val)}\n />\n
\n
\n 来源表:\n this.validateFun(value, '来源表')}\n sholdCheckValidate={sholdCheckValidate}\n onChange={val => this.setState({resourseTableValue: val})} />\n
\n
\n 目标表:\n this.validateFun(value, '目标表')}\n sholdCheckValidate={sholdCheckValidate}\n onChange={val => this.setState({targetTableValue: val})} />\n
\n {\n syncType === INIT &&\n
\n SQL:\n this.validateFun(value, 'SQL')}\n sholdCheckValidate={sholdSqlCheckValidate}\n onChange={val => this.setState({sqlConfigValue: val})}\n />\n
\n }\n
\n 时间字段:\n this.setState({timeValue: val})}\n />\n
\n
\n 唯一键:\n this.validateFun(value, '字段名')}\n sholdCheckValidate={sholdCheckValidate}\n onChange={val => this.setState({filedNameValue: val})}\n />\n \n this.validateFun(value, '字段类型')}\n sholdCheckValidate={sholdCheckValidate}\n onChange={val => this.setState({filedTypeValue: val})} />\n
\n
\n 是否分表\n \n \n :\n \n this.changeCheckedRadiobox(val)}\n />\n
\n {\n !(+isBreakTable) &&\n <>\n
\n 分表规则:\n this.validateFun(value, '分表规则')}\n sholdCheckValidate={sholdBreakTableCheckValidate}\n onChange={val => this.setState({tableRuleValue: val})} />\n
\n
\n 配置规则:\n this.setState({configRules: val})}\n />\n
\n \n }\n\n
\n \n 规则配置\n (选填)请合理配置清洗函数,保障数据可用性\n
\n
\n {\n !!configRuleList.length &&\n configRuleList.sort((a, b) => a.queue - b.queue).map((item, index) => {\n let dataList = configRuleList.map((i, index) => {\n return {\n id: index + 1,\n text: index + 1\n }\n })\n\n return (\n
\n \n
\n )\n })\n }\n 添加配置规则\n
\n\n
\n
\n \n
\n \n
\n \n )\n }\n}\n\nexport default DataAccess","import { useState, useEffect, useMemo } from 'react'\nimport { connect } from 'react-redux'\nimport _ from 'lodash'\nimport SdwInput from '@common/Input2'\nimport SdwTextarea from '@common/Textarea'\nimport SdwRadiobox from '@common/Radiobox'\nimport SdwSelect from '@common/Select'\nimport SdwButton from '@common/Button'\nimport SdwTable from '@common/Table'\nimport Dialog from '@common/Dialog'\nimport SdwMessage from '@common/Message/index'\nimport { getTableApiItems, getLogCollectConfigDetail, setLogCollectConfig } from '@services/dataAccess'\n\nconst Default_form_data = {\n log_topic: 'tdproxy',\n white_ip_list: '',\n regmatchKeywords: '',\n parse_type: 1,\n separator: '',\n example: '',\n encodeFlag: 0,\n store_table_id: ''\n}\n\nconst LOG_TOPIC_MAP = [{\n id: 'teg_cs_b_teg_cs_user_profile_block_new',\n text: 'teg_cs_b_teg_cs_user_profile_block_new',\n}, {\n id: 'teg_cs_teg_cs_separate_normal_new',\n text: 'teg_cs_teg_cs_separate_normal_new',\n}, {\n id: 'tdproxy',\n text: 'tdproxy',\n}]\n\nlet oriTableData = [] // 存储原始的字段定义数据\n\nfunction DataLog(props) {\n\n const [formData, setFormData] = useState(Default_form_data)\n const [tableData, setTableData] = useState([])\n const [targetTableList, setTargetTableList] = useState([])\n const [isEdit, setIsEdit] = useState(false)\n const [showConfirmWin, setShowConfirmWin] = useState(false)\n\n useEffect(() => {\n const isEdit = _.get(props, 'location.state.isEdit')\n setIsEdit(isEdit)\n const id = _.get(props, 'location.state.data.id')\n if (isEdit && id) { // 编辑:数据回显\n getLogCollectConfigDetail({\n id\n }).then(res => {\n const code = _.get(res, 'data.code')\n const msg = _.get(res, 'data.msg')\n if (code === 0) {\n const configInfo = _.get(res, 'data.data.configInfo')\n const tableColumnList = _.get(res, 'data.data.tableColumnList')\n\n if (!_.isEmpty(configInfo)) setFormData(configInfo)\n if (!_.isEmpty(tableColumnList)) {\n const list = tableColumnList.map((i, index) => _.assign({}, i, {index: index+1}))\n oriTableData = list\n setTableData(list)\n }\n } else {\n SdwMessage.error(msg || '获取配置详情数据失败!')\n }\n }).catch(err => SdwMessage.error('接口异常' + err))\n }\n }, [])\n\n useEffect(() => {\n\n // 目标表参数\n let paramData = {\n limit: 10000,\n search: JSON.stringify({\n data_set_type: {\n value: 'es',\n operator: '='\n },\n warehouse_level: {\n value: 'ODS',\n operator: '='\n },\n enable: {\n value: '1',\n operator: '='\n }\n })\n }\n\n // 目标表\n getTableApiItems(paramData).then(res => {\n const code = _.get(res, 'data.code')\n if (code === 0) {\n const items = _.get(res, 'data.data.items')\n let curArr = _.isArray(items) ? items : []\n curArr = curArr.map(i => {\n let curName = !!i.database_name ? `${i.database_name}.${i.table_name}` : `${i.table_name}`\n return {\n id: i.id,\n text: `${curName}(${i.data_set_chinese})`,\n store_table_name_ch: i.data_set_chinese,\n store_table_name_en: `${i.database_name}.${i.table_name}`,\n topic: i.topic,\n business: i.business,\n data_set_type: i.data_set_type\n }\n })\n setTargetTableList(curArr)\n } else {\n SdwMessage.error('获取目标表数据失败')\n }\n })\n .catch(error => {\n SdwMessage.error('获取目标表接口异常:' + error)\n })\n }, [])\n\n useEffect(() => {\n const { formData, tableData } = props\n if (!_.isEmpty(formData)) setFormData(formData)\n if (!_.isEmpty(tableData)) setTableData(tableData)\n }, [])\n\n // 下一步按钮是否禁用\n const can_next = useMemo(() => {\n return isEdit ?\n !!formData.example && formData.encodeFlag !== '' && !!tableData.length :\n _.values(formData).every(val => val !== '') && !!tableData.length\n }, [formData, tableData])\n\n function updateTableData(key, val, index) {\n let cloneTableData = _.cloneDeep(tableData)\n cloneTableData[index][key] = val\n setTableData(cloneTableData)\n }\n\n function getDisabled(i, data) {\n return isEdit && i.index === data.index && i.column_name === data.column_name\n }\n\n function getcolumns() {\n return [\n {\n title: \"序号\",\n dataIndex: \"index\",\n width: 50\n },\n isEdit ? {\n title: \"日志字段示例\",\n width: 150,\n render: (data, index) => (\n getDisabled(i, data))}\n onChange={val => updateTableData('column_example', val, index)}\n />\n )\n } : {\n title: \"日志字段示例\",\n dataIndex: \"column_example\",\n width: 150\n }, {\n title: \"字段ID\",\n width: 150,\n render: (data, index) => (\n getDisabled(i, data))}\n value={data.column_name}\n onChange={val => updateTableData('column_name', val, index)}\n />\n )\n }, {\n title: \"字段数据类型\",\n width: 150,\n render: (data, index) => (\n getDisabled(i, data))}\n value={data.column_type}\n onChange={val => updateTableData('column_type', val, index)}\n data={[\n {\n id: 'string',\n text: 'string'\n }, {\n id: 'date',\n text: 'date'\n }, {\n id: 'int',\n text: 'int'\n }, {\n id: 'double',\n text: 'double'\n }\n ]}\n />\n )\n }, {\n title: \"数据长度\",\n width: 150,\n render: (data, index) => (\n getDisabled(i, data))}\n placeholder='请输入字段长度限制'\n value={data.column_length}\n onChange={val => updateTableData('column_length', val, index)}\n />\n )\n },\n ...isEdit ? [{\n title: \"操作\",\n width: 50,\n render: (data, index) => (\n getDisabled(i, data))}\n text={oriTableData.some(i => getDisabled(i, data)) ? '-' : '删除'}\n onClick={() => onDelClick(data)}\n />\n )\n }] : []\n ]\n }\n\n function onDelClick(data) {\n const delIndex = tableData.findIndex(i => i.index === data.index)\n let cloneTableData = _.cloneDeep(tableData)\n if (delIndex > -1) {\n cloneTableData.splice(delIndex, 1)\n setTableData(cloneTableData)\n }\n }\n\n function updateFormData(key, val) {\n let cloneFormData = _.cloneDeep(formData)\n cloneFormData[key] = val\n if (cloneFormData.parse_type === 2) delete cloneFormData.separator\n setFormData(cloneFormData)\n }\n\n function handGetConfig() {\n const { example, separator, parse_type } = formData\n let list = []\n if (!example) return\n\n switch (parse_type) {\n case 1:\n if (!separator || String(example).indexOf(separator) === -1) {\n list = [{ column_example: example, index: 1, column_name: '', column_type: '', column_length: 10 }]\n } else {\n let arr = String(example).split(separator)\n if (_.isArray(arr)) list = arr.map((i, j) => ({ column_example: i, index: j+1, column_name: '', column_type: '', column_length: 10 }))\n }\n break;\n\n case 2:\n let curExample = example\n if (String(example).substr(0, 4) == 'msg=') {\n curExample = example.substr(4)\n } else {\n SdwMessage.error('键值对解析必须以:msg= 开始')\n return\n }\n if (String(curExample).indexOf('=') === -1) {\n list = [{ column_example: '', index: 1, column_name: curExample, column_type: '', column_length: 10 }]\n } else {\n let arr = String(curExample).split('&')\n if (_.isArray(arr)) {\n arr.forEach((item, j) => {\n const curlist = item.split('=')\n list.push({ column_example: curlist[1] || '', index: j+1, column_name: curlist[0], column_type: '', column_length: 10 })\n })\n }\n }\n break;\n\n default:\n break;\n }\n\n // 只有分隔符的需要给前三项默认值\n if (parse_type === 1) {\n list = list.map((i, index) => {\n let res = _.cloneDeep(i)\n switch (index) {\n case 0:\n res.column_type = 'string'\n res.column_name = 'log_head'\n res.column_length = 50\n break;\n\n case 1:\n res.column_type = 'string'\n res.column_name = 'log_module'\n res.column_length = 50\n break;\n\n case 2:\n res.column_type = 'date'\n res.column_name = 'log_time'\n break;\n\n default:\n break;\n }\n return res\n })\n }\n\n setTableData(list)\n }\n\n function handAddConfig() {\n let cloneTableData = _.cloneDeep(tableData)\n cloneTableData.push({\n column_example: '',\n index: tableData.length+1,\n column_name: '',\n column_type: '',\n column_length: 10,\n store_table_id: formData.store_table_id,\n table_type: formData.data_set_type\n })\n setTableData(cloneTableData)\n }\n\n function getValiidate() {\n let uniqColumnName = []\n if (_.isArray(tableData)) {\n uniqColumnName = [...new Set(tableData.map(i => i.column_name))]\n }\n\n let bool = uniqColumnName.length === tableData.length\n\n return bool\n }\n\n function handleNext() {\n if (isEdit) {\n setShowConfirmWin(true)\n } else {\n onConfirmSubmit()\n }\n }\n\n // 保存数据,成功跳转下一步\n function onConfirmSubmit() {\n if (isEdit) {\n setShowConfirmWin(false)\n }\n\n // 校验:字段ID不能重复\n const isPass = getValiidate()\n if (!isPass) return SdwMessage.error('字段ID不能重复!')\n\n // 有id既编辑;无id既新增\n const id = _.get(props, 'location.state.data.id')\n\n let curFormData = _.assign({}, formData)\n let curTableData = _.assign([], tableData)\n\n // 新增添加扩展属性:task_type\\task_status\\store_table_id\\table_type\n if (!id) {\n curFormData = _.assign({\n ...id ? {id} : {},\n task_type: 0,\n task_status: 0\n }, formData)\n curTableData = tableData.map(i => ({\n ...i,\n store_table_id: formData.store_table_id,\n table_type: formData.data_set_type\n }))\n }\n\n setLogCollectConfig({\n data: curFormData,\n columns: curTableData\n }).then(res => {\n const code = _.get(res, 'data.code')\n const id = _.get(res, 'data.data')\n if (code === 0 && id) {\n SdwMessage.success('保存成功!')\n\n // 将数据存储到redux中,其他页面下发使用\n props.updateFormData(_.assign({}, curFormData, {id}))\n props.updateTableData(curTableData)\n props.updateCurrentPage(props.pageMap.logSecondPage)\n } else {\n const msg = _.get(res, 'data.msg') || '保存失败!'\n SdwMessage.error(msg)\n }\n }).catch(err => SdwMessage.error('接口异常' + err))\n }\n\n return (\n <>\n
\n \n \n 内容存储配置\n \n
\n\n
\n \n 解析存储配置\n {/* 请保障信息准确,避免同步出错 */}\n
\n
\n 日志topic:\n {/* updateFormData('log_topic', val)}\n /> */}\n\n updateFormData('log_topic', val)}\n />\n
\n
\n 访问IP白名单:\n updateFormData('white_ip_list', val)}\n />\n
\n
\n 日志头部:\n updateFormData('regmatchKeywords', val)}\n />\n
\n
\n 解析标识:\n updateFormData('parse_type', val) }\n />\n
\n {\n formData.parse_type === 1 &&\n
\n 分隔符:\n updateFormData('separator', val)}\n />\n
\n }\n
\n 日志内容示例:\n updateFormData('example', val)}\n />\n
\n
\n 是否转码:\n updateFormData('encodeFlag', val)}\n />\n
\n
\n 落地数据库:\n {\n setFormData(r => _.assign({}, r, {\n store_table_id: val,\n store_table_name_ch: item.store_table_name_ch,\n store_table_name_en: item.store_table_name_en,\n topic: item.topic,\n business: item.business,\n data_set_type: item.data_set_type\n }))\n }}\n />\n
\n\n
\n \n 字段内容定义\n {/* 请保障信息准确,避免同步出错 */}\n
\n\n
\n
\n 字段定义\n {\n isEdit ?\n :\n \n }\n
\n
\n \n
\n
\n\n
\n
\n
\n \n
\n\n {\n showConfirmWin &&\n setShowConfirmWin(false)}\n onSureClick={onConfirmSubmit}\n >\n
将清空已关联的监听任务,确认保存?
\n \n }\n \n )\n}\n\nconst mapState = state => ({\n pageMap: state.dataAccess.pageMap,\n formData: state.dataAccess.formData,\n tableData: state.dataAccess.tableData,\n})\n\nconst mapDispatch = dispatch => ({\n updateFormData: dispatch.dataAccess.updateFormData,\n updateTableData: dispatch.dataAccess.updateTableData,\n updateCurrentPage: dispatch.dataAccess.updateCurrentPage,\n})\n\nexport default connect(mapState, mapDispatch)(DataLog)\n","import { useState } from 'react'\nimport { connect } from 'react-redux'\nimport _ from 'lodash'\nimport SdwTextarea from '@common/Textarea'\nimport SdwButton from '@common/Button'\nimport SdwMessage from '@common/Message/index'\nimport { checkLogCollectCfg } from '@services/dataAccess'\n\nfunction DataAccessTest(props) {\n\n const [formRecord, setFormRecord] = useState({})\n const [showResult, setShowResult] = useState(false)\n const [isPass, setIsPass] = useState(false)\n\n function updateFormRecord(key, val) {\n let cloneFormData = _.cloneDeep(formRecord)\n cloneFormData[key] = val\n setFormRecord(cloneFormData)\n }\n\n function handlePrev() {\n props.updateCurrentPage(props.pageMap.main)\n }\n\n function handleTest() {\n const { formData, tableData } = props\n if (_.isEmpty(formData) || _.isEmpty(tableData)) {\n SdwMessage.info('缺少参数!')\n return\n }\n checkLogCollectCfg({\n id: formData.id,\n msg: formRecord.logText\n }).then(res => {\n const code = _.get(res, 'data.code')\n const msg = _.get(res, 'data.msg')\n setShowResult(true)\n if (code === 0) {\n SdwMessage.success(msg || '测试配置成功!')\n setIsPass(true)\n } else {\n setIsPass(false)\n SdwMessage.error(msg || '测试配置失败!')\n }\n }).catch(err => SdwMessage.error('接口异常' + err))\n }\n\n // 跳转日志页面\n function jumpBtn() {\n props.history.push('/admin/dataCollect/dataManagement?tab=log')\n }\n\n return (\n <>\n
\n
\n \n \n 接入测试\n \n
\n\n
\n \n 日志接入测试\n {/* 请保障信息准确,避免同步出错 */}\n
\n\n
\n 测试内容示例:\n updateFormRecord('logText', val)}\n />\n
\n\n
\n
\n \n
\n {\n showResult &&\n <>\n 测试结果:\n { isPass ? '测试通过' : '解析失败' }\n \n }\n
\n
\n
\n
\n
\n
\n
\n \n \n
\n \n )\n}\n\nconst mapState = state => ({\n pageMap: state.dataAccess.pageMap,\n formData: state.dataAccess.formData,\n tableData: state.dataAccess.tableData,\n})\n\nconst mapDispatch = dispatch => ({\n updateFormData: dispatch.dataAccess.updateFormData,\n updateCurrentPage: dispatch.dataAccess.updateCurrentPage,\n})\n\nexport default connect(mapState, mapDispatch)(DataAccessTest)\n","import React from 'react'\nimport _ from 'lodash'\nimport { connect } from 'react-redux'\nimport SdwBreadCrumbs from '@common/BreadCrumbs'\nimport SdwButton from '@common/Button'\nimport DataAccessPage from './accessType/DataAccessPage'\nimport DataLog from './accessType/DataLog'\nimport DataAccessTest from './accessType/DataAccessTest'\nimport { hasPriv } from '@components/FrontendAuth/AuthMap'\n\nimport './style/dataAccess.css'\n\nconst COMPONENTS = {\n 0: DataAccessPage,\n 1: DataLog\n}\n\nclass DataAccess extends React.PureComponent {\n\n state = {\n curIndex: 0\n }\n\n componentDidMount() {\n const curPageIndex = _.get(this.props, 'location.state.curPageIndex') || 0\n if (curPageIndex) this.setState({ curIndex: curPageIndex })\n this.props.updateCurrentPage(this.props.pageMap.main)\n }\n\n // componentDidUpdate(prevProps, prevState) {\n // const prevIsEdit = _.get(prevProps, 'location.state.isEdit')\n // const curIsEdit = _.get(this.props, 'location.state.isEdit')\n // if (prevIsEdit !== curIsEdit) {\n // console.log('curIsEdit: ', this.props);\n // }\n // }\n\n render () {\n let { curIndex } = this.state\n let { pageMap, currentPage } = this.props\n\n const CurCom = COMPONENTS[curIndex]\n const id = _.get(this.props, 'location.state.id')\n\n const btnArr = [{\n text: '数据库',\n priv: 'getAllTasks'\n }, {\n text: '日志',\n priv: 'getCollectConfigList'\n }].filter(i => hasPriv(i.priv))\n\n return (\n
\n \n\n
\n {\n currentPage === pageMap.main &&\n <>\n
\n \n 接入类型\n {\n btnArr.length > 0 &&\n btnArr.map(i => i.text).map((item, index) => (\n \n this.setState({ curIndex: index })}\n />\n \n ))\n }\n
\n\n {/* 这里根据上面的选项来确定展示哪个组件 */}\n {\n CurCom && \n }\n \n }\n\n {\n currentPage === pageMap.logSecondPage &&\n \n }\n\n
\n
\n )\n }\n}\n\nconst mapState = state => ({\n pageMap: state.dataAccess.pageMap,\n currentPage: state.dataAccess.currentPage,\n})\n\nconst mapDispatch = dispatch => ({\n updateCurrentPage: dispatch.dataAccess.updateCurrentPage\n})\n\nexport default connect(mapState, mapDispatch)(DataAccess)\n","import { request } from '../utils/request'\n\nexport const setMonitorServerConfig = params => {\n return request({ url: '/collection/dbimport/setMonitorServerConfig', method: 'post', data: params })\n}\n\nexport const getItermSelects = params => {\n return request({ url: '/statistics/dataMarket/getItermSelects', method: 'get', params: params })\n}\n\nexport const getBusinessStatisticByTopic = params => {\n return request({ url: '/statistics/dataMarket/getBusinessStatisticByTopic', method: 'get', params: params })\n}\n\nexport const getMonitorServerConfigList = params => {\n return request({ url: '/collection/dbimport/getMonitorServerConfigList', method: 'get', params: params })\n}\n","import { useRef, useState, useEffect } from 'react'\nimport _ from 'lodash'\nimport SdwDrawer from \"@common/Drawer\"\nimport Form from \"@common/Form_D\"\nimport Input from \"@common/Input\"\nimport Select from \"@common/Select\"\nimport Switch from \"@common/Switch\"\nimport Textarea from \"@common/Textarea\"\nimport SdwMessage from \"@common/Message\"\nimport { setMonitorServerConfig, getItermSelects, getBusinessStatisticByTopic } from '@services/logManagement'\n\nfunction notEmpty(val) {\n return !!val\n}\n\nconst rules = {\n service_name: [\n { func: notEmpty, message: '请输入服务中文名称' }\n ],\n topic_id: [\n { func: notEmpty, message: '请选择主题域' }\n ],\n business_id: [\n { func: notEmpty, message: '请选择业务' }\n ],\n ip: [\n { func: notEmpty, message: '请输入该服务数据发送的目标IP,仅填写1个' }\n ],\n port: [\n { func: notEmpty, message: '请输入目标IP端口,仅填写1个' }\n ],\n ip_bak: [\n { func: notEmpty, message: '请输入备用IP,仅填写1个' }\n ],\n port_bak: [\n { func: notEmpty, message: '请输入备用端口,仅填写1个' }\n ],\n iplist: [\n { func: notEmpty, message: '请输入日志服务器IP,多个IP用,(英文逗号)分隔' }\n ],\n fileName: [\n { func: notEmpty, message: '请输入日志文件路径' }\n ],\n precursorFileName: [\n { func: notEmpty, message: '请输入日志文件上一周期路径' }\n ],\n sendMaxLine: [\n { func: notEmpty, message: '请输入日志发送及结算文件数上限' }\n ]\n}\n\nconst DEFAULT_DATA = {\n ip: '11.177.107.29',\n port: '8000',\n ip_bak: '11.177.107.29',\n port_bak: '8000',\n sendMaxLine: 25,\n is_valid: 0\n}\n\nexport default function EditWin(props) {\n const { title, data, visible, isEdit, changeShowEditWin, updatePage } = props\n const formRef = useRef(null)\n\n const [formData, setFormData] = useState({})\n const [topicArr, setTopicArr] = useState([])\n const [businessArr, setBusinessArr] = useState([])\n\n useEffect(() => {\n let defaultD = DEFAULT_DATA\n if (isEdit) {\n defaultD = _.cloneDeep(data)\n }\n setFormData(defaultD)\n }, [data])\n\n useEffect(() => {\n getItermSelects().then(res => {\n const code = _.get(res, 'data.code')\n if (code === 0) {\n const topic = _.get(res, 'data.data.topic')\n if (_.isArray(topic)) setTopicArr(topic.map(i => ({ id: i.id, text: i.topic_name })))\n }\n })\n }, [])\n\n useEffect(() => {\n if (!formData.topic_id) return\n getBusinessStatisticByTopic({\n id: formData.topic_id\n }).then(res => {\n const code = _.get(res, 'data.code')\n if (code === 0) {\n const business = _.get(res, 'data.data.list')\n if (_.isArray(business)) setBusinessArr(business.map(i => ({ id: i.business_id, text: i.business_name })))\n }\n })\n }, [formData.topic_id])\n\n function setFormDataProps(key, val) {\n let cloneForm = _.cloneDeep(formData)\n cloneForm[key] = val\n setFormData(cloneForm)\n }\n\n function onSubmit() {\n formRef.current.validate(valid => {\n // console.log('*******valid, isEdit, formData: ', valid, isEdit, formData);\n if (valid) {\n const params = {\n ...formData,\n ...isEdit ? {\n id: data.id\n } : {}\n }\n setMonitorServerConfig({\n data: params\n }).then(res => {\n const code = _.get(res, 'data.code')\n if (code === 0) {\n let msg = isEdit ? '编辑配置成功' : '添加配置成功'\n SdwMessage.success(msg)\n changeShowEditWin(false)\n updatePage()\n } else {\n let tip = isEdit ? '编辑配置失败' : '添加配置失败'\n const msg = _.get(res, 'data.msg') || tip\n SdwMessage.error(msg)\n }\n }).catch(() => SdwMessage.error(\"接口异常\"))\n }\n })\n }\n\n return (\n changeShowEditWin(false)}\n onCancelClick={() => changeShowEditWin(false)}\n onSureClick={onSubmit}\n >\n \n
\n \n setFormDataProps('service_name', val)}\n />\n \n \n setFormData(r => _.assign({}, r, {\n topic_id: val,\n topic: item.text\n }))}\n />\n \n \n setFormData(r => _.assign({}, r, {\n business_id: val,\n business: item.text\n }))}\n />\n \n \n setFormDataProps('ip', val)}\n />\n \n \n setFormDataProps('port', val)}\n />\n \n \n setFormDataProps('ip_bak', val)}\n />\n \n \n setFormDataProps('port_bak', val)}\n />\n \n \n setFormDataProps('iplist', val)}\n />\n \n \n setFormDataProps('fileName', val)}\n />\n \n \n setFormDataProps('dateFormat', val)}\n />\n \n \n setFormDataProps('precursorFileName', val)}\n />\n \n \n setFormDataProps('sendMaxLine', val)}\n />\n \n \n setFormDataProps('is_valid', val)}\n />\n \n \n setFormDataProps('remark', val)}\n />\n \n
\n
\n \n )\n}","import React, {PureComponent} from 'react'\nimport _ from 'lodash'\nimport SdwDrawer from '@common/Drawer'\nimport SdwInput from '@common/Input'\nimport SdwSelect from '@common/Select'\nimport SdwMessage from '@common/Message'\nimport SdwSwitch from '@common/Switch'\nimport {getStaffs} from '@api/alertRules'\nimport {connect} from 'react-redux'\nimport {withRouter} from 'react-router-dom'\nimport '../../index.css'\nimport {requestOptionsLOG} from '@config/config'\n\nconst baseURL = requestOptionsLOG.basename\n\nclass LogDetails extends PureComponent {\n\n state = {\n logServerList: [],\n params: {\n path: '',\n ipList: [],\n enable: 0,\n principal: '',\n rtx: '',\n extra: '',\n filebeatAdvancedConfigVOS: []\n },\n staffsList: [],\n advancedConfigList: [{id: 0}], // filebeat高级配置\n sholdCheckValidate: false,\n ipListData: [],\n allMembers: [], // rtx\n optionsList: [],\n filebeatConfigItemValueDTOS: []\n }\n\n componentDidMount() {\n this.initData()\n this.queryValidIpList()\n this.queryAdvancedConfig()\n this.getStaffs()\n }\n\n initData = () => {\n let {isEdit, currentItem} = this.props\n if (isEdit) {\n this.queryInputFileConfig(currentItem.id)\n }\n }\n\n // 查询采集文件配置信息\n queryInputFileConfig = (id) => {\n let rtx = this.props.userInfo.name\n fetch(baseURL + '/sdw/filebeat/input/queryInputFileConfig/' + id,\n {\n method: 'GET',\n mode: 'cors',\n headers: {'Content-Type': 'application/json', 'STAFFNAMES': rtx},\n }).then(res => {\n res.json().then(data => {\n if (data && data.code === 100) {\n let items = data.data || []\n let params = {\n id: items.id,\n path: items.path || '',\n ipList: (items.ipList || []).map(i => {\n return {id: i, text: i}\n }),\n principal: '',\n enable: items.enable || '',\n extra: items.extra || '',\n rtx: rtx,\n }\n this.setState({\n params: params,\n staffsList: (items.principal.split(',') || []).map(i => {\n return {id: i, text: i}\n }),\n filebeatConfigItemValueDTOS: items.inputFileAdvancedConfigDTOS || []\n }, ()=> {\n this.queryAdvancedConfig()\n })\n }\n })\n }).catch(error => {\n SdwMessage.error('接口异常:' + error)\n })\n }\n\n // 查询高级配置信息\n queryAdvancedConfig = () => {\n let str = '?configLocation=' + 'ACCESS_CONFIGURATION'\n fetch(baseURL + '/sdw/filebeat/filebeat/queryAdvancedConfig' + str,\n {\n method: 'GET',\n mode: 'cors',\n headers: {'Content-Type': 'application/json'},\n }).then(res => {\n res.json().then((data) => {\n let list = data.data || []\n let {isEdit} = this.props\n let {filebeatConfigItemValueDTOS} = this.state\n this.setState({\n optionsList: list\n })\n // 编辑状态下初始化\n if (isEdit) {\n this.setState({\n advancedConfigList: !_.isEmpty(filebeatConfigItemValueDTOS) && filebeatConfigItemValueDTOS.map(item => {\n let filebeatConfigItemValueDTOS = []\n // let configType = ''\n list.forEach(i => {\n if (i.id == item.configId) {\n filebeatConfigItemValueDTOS = i.filebeatConfigItemValueDTOS\n // configType = i.configType\n }\n })\n return {\n ...item,\n // configType,\n filebeatConfigItemValueDTOS: filebeatConfigItemValueDTOS.map(i => {\n return {\n id: i.id,\n text: i.configItemName,\n configItemId: i.configItemId,\n configItemValue: i.configItemValue\n }\n }) || []\n }\n }) || [{id: 0}]\n })\n }\n })\n }).catch(error => {\n SdwMessage.error('接口异常:' + error)\n })\n }\n\n // 获取rtx\n getStaffs = () => {\n getStaffs().then(res => {\n if (res && res.data && res.data.code === 0) {\n let list = _.isArray(res.data.data) ? res.data.data : []\n this.setState({\n allMembers: list.map(i => {\n return {id: i.value, text: i.name}\n })\n })\n }\n })\n }\n\n // 查询有效的机器ip\n queryValidIpList = () => {\n let rtx = this.props.userInfo.name\n fetch(baseURL + '/sdw/filebeat/filebeat/queryValidIpList',\n {\n method: \"GET\",\n mode: \"cors\",\n headers: {'Content-Type': 'application/json', 'STAFFNAMES': rtx},\n }).then(res => {\n res.json().then(data => {\n if (data && data.code === 100) {\n let items = data.data || []\n this.setState({\n ipListData: items.map(i => {\n return {\n id: i,\n text: i\n }\n })\n })\n }\n })\n }).catch(error => {\n SdwMessage.error('接口异常:' + error)\n })\n }\n\n addVirtualGroup = () => {\n let item = {}\n let advancedConfigList = [...this.state.advancedConfigList]\n advancedConfigList.push(item);\n this.setState({advancedConfigList: advancedConfigList})\n }\n\n removeVirtualGroup = (index) => {\n let advancedConfigList = [...this.state.advancedConfigList]\n advancedConfigList.splice(index, 1);\n this.setState({advancedConfigList: advancedConfigList})\n }\n\n updateVirtualGroup = (val, type, index, item) => {\n\n let {optionsList} = this.state\n\n if (type == 'configId') {\n let advancedConfigList = [...this.state.advancedConfigList]\n optionsList.forEach(i => {\n if (i.configType == 'CONFIG_TYPE_SELECT') {\n if (i.id == val) {\n advancedConfigList[index].filebeatConfigItemValueDTOS = i.filebeatConfigItemValueDTOS.map(j => {\n return {\n ...j,\n text: j.configItemName\n }\n })\n }\n }\n })\n advancedConfigList[index].id = val\n advancedConfigList[index].configId = val\n advancedConfigList[index].configName = item.text\n // advancedConfigList[index].configType = item.configType\n this.setState({advancedConfigList: advancedConfigList})\n }\n\n if (type == 'configValueId') {\n let advancedConfigList = [...this.state.advancedConfigList]\n advancedConfigList[index].configValueId = val\n this.setState({advancedConfigList: advancedConfigList})\n }\n }\n\n setParamsData = (type, value) => {\n let {params} = this.state\n let obj = {}\n obj[type] = value\n let paramsClone = Object.assign({}, params, obj)\n this.setState({\n params: paramsClone\n })\n }\n\n // 写入或更新采集文件配置信息\n submitClick = () => {\n let {params, staffsList, advancedConfigList} = this.state\n let rtx = this.props.userInfo.name\n if (!params.path || params.ipList.length == 0 || staffsList.length == 0) {\n this.setState({\n sholdCheckValidate: true\n })\n return\n }\n params.ipList = params.ipList.map(i => {\n return i.text\n })\n params.principal = staffsList.map(i => {\n return i.id\n }).join(',')\n params.enable = params.enable == 1 ? true : false\n advancedConfigList.map(i => {\n if (!_.isEmpty(i.filebeatConfigItemValueDTOS)) {\n i.filebeatConfigItemValueVOS = i.filebeatConfigItemValueDTOS.filter(j => {\n return j.id === i.configValueId\n })\n delete i.filebeatConfigItemValueDTOS\n }\n return i\n })\n params.filebeatAdvancedConfigVOS = advancedConfigList\n fetch(baseURL + '/sdw/filebeat/input/upsertInputFile',\n {\n method: 'POST',\n mode: 'cors',\n headers: {'Content-Type': 'application/json', 'STAFFNAMES': rtx},\n body: JSON.stringify(params)\n }).then(res => {\n res.json().then((data) => {\n if (data && data.code === 100 || data.code === 101) {\n this.props.changeVisible(false)\n this.props.collectionTaskSubmit(data)\n } else {\n SdwMessage.error(data.message)\n // this.props.changeVisible(false)\n }\n })\n }).catch(error => {\n SdwMessage.error('接口异常:' + error)\n })\n }\n\n render() {\n let {\n params,\n staffsList,\n sholdCheckValidate,\n allMembers,\n advancedConfigList,\n optionsList\n } = this.state\n\n let {\n isEdit,\n logVisible,\n changeVisible,\n } = this.props\n\n console.log(\"render====advancedConfigList\", advancedConfigList)\n\n return (\n changeVisible(false)}\n onCancelClick={() => changeVisible(false)}\n onSureClick={this.submitClick}\n >\n \n
\n
\n 日志文件路径\n this.setParamsData(\"path\", val)}\n sholdCheckValidate={sholdCheckValidate}\n validateFun={value => !!value ? true : '任务名称不能为空'}\n />\n
\n
\n 日志服务器\n {\n this.setParamsData(\"ipList\", val)\n }}\n sholdCheckValidate={sholdCheckValidate}\n validateFun={value => !!value.length ? true : '服务器ip不能为空'}\n />\n
\n
\n 高级配置\n
\n {\n advancedConfigList instanceof Array && advancedConfigList.map((item, k) => {\n return (\n
\n {\n return {\n id: i.id,\n text: i.configName,\n // configType: i.configType\n }\n })}\n value={item.configId}\n onChange={(val, item) => this.updateVirtualGroup(val, 'configId', k, item)}\n />\n \n this.updateVirtualGroup(val, 'configValueId', k, item)}\n />\n this.addVirtualGroup(k)} className='el-icon-plus'\n style={{marginLeft: 8}}>\n {k > 0 && ( this.removeVirtualGroup(k)}\n className='el-icon-minus'>)}\n
\n )\n })\n }\n
\n
\n
\n 负责人\n this.setState({staffsList: val})}\n sholdCheckValidate={sholdCheckValidate}\n validateFun={value => !!value.length ? true : '负责人不能为空'}\n />\n
\n
\n 备注\n {\n this.setParamsData('extra', val)\n }}\n />\n
\n
\n 是否启用\n {\n this.setParamsData('enable', val)\n }}\n />\n
\n
\n
\n \n )\n }\n}\n\nconst mapState = state => ({\n userInfo: state.user.userInfo\n})\nexport default withRouter(connect(mapState)(LogDetails))\n","import React, {PureComponent} from 'react'\nimport SdwDrawer from '@common/Drawer'\nimport SdwInput from '@common/Input'\nimport SdwSelect from '@common/Select'\nimport SdwSwitch from '@common/Switch'\nimport SdwMessage from '@common/Message'\nimport {connect} from 'react-redux'\nimport {withRouter} from 'react-router-dom'\nimport '../../index.css'\nimport {requestOptionsLOG} from '@config/config'\nconst baseURL = requestOptionsLOG.basename\n\nclass CollectionTask extends PureComponent {\n\n state = {\n tagList: [],\n params: {\n inputFileId: '',\n inputTag: '',\n cmd: '',\n extra: '',\n enable: false,\n rtx: '',\n },\n sholdCheckValidate: false,\n }\n\n componentDidMount() {\n this.iniData()\n }\n\n iniData = () => {\n let {isEdit, currentItem} = this.props\n if (isEdit) {\n let params = {\n id: parseInt(currentItem.id),\n inputFileId: parseInt(currentItem.inputFileId),\n inputTag: currentItem.inputTag,\n cmd: currentItem.cmd || '',\n extra: currentItem.extra || '',\n enable: currentItem.enable,\n rtx: this.props.userInfo.name,\n }\n this.setState({\n params: params\n })\n this.queryValidInputTag(currentItem.id)\n } else {\n this.queryInputFileConfigList(currentItem.id)\n }\n }\n\n // 查询未使用的采集标识\n queryValidInputTag = (id = \"\") => {\n let str = \"\"\n if (!!id) {\n str = \"?parseId=\"+id+\"&type=input\"\n }\n let rtx = this.props.userInfo.name\n fetch(baseURL + '/sdw/filebeat/inputTag/queryValidInputTag' + str,\n {\n method: \"GET\",\n mode: \"cors\",\n headers: {'Content-Type': 'application/json', 'STAFFNAMES': rtx}\n }).then(res => {\n res.json().then((data) => {\n let record = data.data\n console.log('tableData-----------------------', record)\n if (Array.isArray(record)) {\n console.log(\"record=======\", record)\n this.setState({\n tagList: record.map(i => {\n return {id: i.inputTag, text: i.inputTag, cmd: i.cmd, item: i}\n })\n })\n }\n\n })\n }).catch(error => {\n SdwMessage.error('接口异常:' + error)\n })\n }\n\n // 查询已被解析配置绑定且不在当前文件下的采集标识\n queryInputFileConfigList = (id = \"\") => {\n let str = \"\"\n if (!!id) {\n str = \"?inputFileConfigId=\" + id\n }\n let rtx = this.props.userInfo.name\n fetch(baseURL + '/sdw/filebeat/inputTag/queryBindedInputTag' + str,\n {\n method: \"GET\",\n mode: \"cors\",\n headers: {'Content-Type': 'application/json', 'STAFFNAMES': rtx},\n }).then(res => {\n res.json().then((data) => {\n let record = data.data\n console.log('queryInputFileConfigList===tableData-----------------------', record)\n if (Array.isArray(record)) {\n this.setState({\n tagList: record.map(i => {\n return {id: i.inputTag, text: i.inputTag, cmd: i.cmd, item: i}\n })\n })\n }\n })\n }).catch(error => {\n SdwMessage.error('接口异常:' + error)\n })\n }\n\n setParamsData = (type, value) => {\n let {params} = this.state\n let obj = {}\n obj[type] = value\n let paramsClone = Object.assign({}, params, obj)\n this.setState({\n params: paramsClone\n })\n }\n\n // 写入或更新采集任务配置\n submitClick = () => {\n let {params} = this.state\n let {currentItem, isEdit} = this.props\n console.log('currentItem===11111', currentItem)\n let rtx = this.props.userInfo.name\n if (!params.inputTag) {\n this.setState({\n sholdCheckValidate: true\n })\n return\n }\n params.enable = params.enable == 1 ? true : false\n params.inputFileId = parseInt(currentItem.id)\n if (isEdit) {\n params.id = parseInt(currentItem.id)\n params.inputFileId = parseInt(currentItem.inputFileId)\n }\n fetch(baseURL + '/sdw/filebeat/input/upsertInputConfig',\n {\n method: \"POST\",\n mode: \"cors\",\n headers: {'Content-Type': 'application/json', 'STAFFNAMES': rtx},\n body: JSON.stringify(params)\n }).then(res => {\n res.json().then((data) => {\n if (data && data.code === 100 || data.code === 101) {\n this.props.changeVisible(false)\n this.props.collectionTaskSubmit(data)\n } else {\n SdwMessage.error(data.message)\n // this.props.changeVisible(false)\n }\n })\n }).catch(error => {\n SdwMessage.error('接口异常:' + error)\n })\n }\n\n render() {\n\n let {\n params,\n sholdCheckValidate,\n tagList,\n } = this.state\n\n let {\n isEdit,\n changeVisible,\n taskVisible,\n } = this.props\n\n // console.log('tagList==========', tagList)\n\n return (\n changeVisible(false)}\n onCancelClick={() => changeVisible(false)}\n onSureClick={this.submitClick}\n >\n \n
\n
\n 采集标识\n {\n this.setState({\n params: Object.assign({}, params, {\n inputTag: val,\n cmd: item.cmd || ''\n })\n })\n }}\n sholdCheckValidate={sholdCheckValidate}\n validateFun={value => !!value ? true : '采集标识不能为空'}\n />\n
\n
\n CMD\n \n
\n
\n 备注\n this.setParamsData('extra', val)}\n />\n
\n
\n 是否有效\n this.setParamsData('enable', val)}\n />\n
\n
\n
\n \n )\n }\n}\n\nconst mapState = state => ({\n userInfo: state.user.userInfo\n})\nexport default withRouter(connect(mapState)(CollectionTask))\n","import React, {PureComponent} from 'react'\nimport _ from 'lodash'\nimport SdwDialog from '@common/Dialog'\nimport checkImg from '../img/check_img@2x.png'\nimport successImg from '../img/success_img@2x.png'\nimport errorImg from '../img/error_img@2x.png'\nimport '../../index.css'\nimport {w3cwebsocket as W3CWebSocket} from 'websocket'\nimport {requestOptionsWEBSOCKET} from '@config/config'\nconst baseURL = requestOptionsWEBSOCKET.basename\n\nconst CHECK_OPTION = {\n \"INPUT_CONFIG_ISSUE\": \"采集配置下发检测\",\n \"PARSE_CONFIG_ISSUR\": \"解析配置下发检测\",\n \"INPUT_ACCESS\": \"采集数据检测\",\n \"PROCESS\": \"数据处理服务检测\",\n \"CONSUME\": \"数据消费服务检测\",\n}\nconst STATUS_CH = {\n \"100\": {\n text: \"检测中\",\n className: \"status-win__check-result\",\n },\n \"802\": {\n text: \"正常\",\n className: \"status-win__success-result\",\n },\n \"-802\": {\n text: \"异常\",\n className: \"status-win__error-result\",\n },\n \"803\": {\n text: \"检测结束\",\n className: \"status-win__success-result\",\n },\n \"804\": {\n text: \"检测线程调度失败\",\n className: \"status-win__error-result\",\n }\n}\n\nclass StatusWin extends PureComponent {\n\n state = {\n displayList: [],\n displayStatus: 0, //0 检测中 1检测正常 2检测失败\n displayLength: 0\n }\n\n componentDidMount() {\n let socketList = this.props.socketList\n // const sessionId = socketList.sessionId\n const checkerList = socketList.checkerList\n // const client = new W3CWebSocket(baseURL + '/sdw/filebeat/socket/' + sessionId);\n\n this.iniData(checkerList)\n // this.socketConnect(client)\n }\n\n iniData = (checkerList) => {\n let sessionId = this.props.socketList.sessionId\n const client = new W3CWebSocket(baseURL + '/sdw/filebeat/socket/' + sessionId)\n let num = 1\n this.setState({\n displayLength: checkerList.length,\n displayList: checkerList.map(i => {\n if (num == 1) {\n num++\n return {\n checkName: i,\n status: \"100\"\n }\n } else {\n return {\n checkName: i,\n status: \"\"\n }\n }\n })\n }, () => {\n this.socketConnect(client)\n })\n }\n\n socketConnect = (client) => {\n let {displayList, displayLength} = this.state\n console.log(\"====client\", client)\n client.onopen = () => {\n console.log('WebSocket Client Connected');\n };\n client.onerror = (message) => {\n console.log(\"client=====message\", message);\n };\n client.onmessage = (message) => {\n console.log(\"message======\", message);\n if (message.data != \"{}\" && message.data != \"null\" && !!message.data) {\n const dataFromServer = JSON.parse(message.data);\n if (dataFromServer.status != \"802\") {\n setTimeout(()=>{\n client.close()\n }, 3000)\n }\n this.displayList(dataFromServer)\n }\n };\n client.onclose = (message) => {\n console.log('websocket断开: ' + message)\n if (displayLength > 0) {\n let displayExist = [...displayList]\n displayExist[0] = {...displayExist[0], status: \"-802\"}\n this.setState({\n displayStatus: 2,\n displayList: displayExist\n })\n }\n }\n }\n\n displayList = (dataFromServer) => {\n let {displayList, displayLength} = this.state\n let displayExist = []\n let displayLengthClone = 0\n if (dataFromServer.status == \"800\") {\n displayExist = displayList.map(item => {\n return {\n ..._.assign({}, item, {status: \"802\"})\n }\n })\n this.setState({\n displayLength: displayLengthClone,\n displayList: displayExist,\n displayStatus: 1,\n })\n return\n } else if (dataFromServer.status == \"803\") {\n return\n } else {\n displayExist = displayList.map(item => {\n if (item.checkName == dataFromServer.checkName && item.status != dataFromServer.status) {\n return {\n ..._.assign({}, item, {status: dataFromServer.status})\n }\n }\n return item\n })\n }\n\n displayLengthClone = displayLength - 1\n let obj = {\n displayLength: displayLengthClone,\n displayList: displayExist\n }\n if (dataFromServer.status == \"802\") {\n if (displayLengthClone == 0) {\n obj[\"displayStatus\"] = 1\n }\n } else {\n obj[\"displayStatus\"] = 2\n }\n this.setState({\n ...obj\n })\n }\n\n // closeWebSocket = (client) => {}\n\n closeDialog = () => {\n this.props.closeDialog()\n }\n\n render() {\n\n let {\n displayList,\n displayStatus\n } = this.state\n\n let {\n statusVisible\n } = this.props\n\n return (\n
\n this.closeDialog()}\n onCancelClick={() => this.closeDialog()}\n >\n
\n {\n displayStatus == 0 ?\n <>\n
\n \n \n 正在检测中,请稍等...\n \n
\n \n : (\n displayStatus == 1 ?\n <>\n
\n \n \n 链路状态正常\n \n
\n \n :\n <>\n
\n \n \n 链路状态异常,请联系开发\n \n
\n \n )\n }\n
\n {\n displayList.map(i => {\n return <>\n
\n
{CHECK_OPTION[i.checkName]}
\n
{STATUS_CH[i.status] ? STATUS_CH[i.status].text : \"待检测\"}
\n
\n \n })\n }\n
\n
\n \n
\n )\n }\n}\n\nexport default StatusWin\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAALSSURBVHgBzZhdbtpAEMdnF5M+tTU3ICpt81Z6gpATlMdKIYKeIOQEwAkCJ4ijgtRHblA4QclbRFPVNzBtqqoFe6cz649CPsBJwM5fgh1hy/75v7PjWQAeiQTcUfmaYz5RsooeFEEgfSAPCGZwtQnFNkU2SNmfSm9oWzk7znVjg+xUnBKCaCBACe6mvgTsnHdzA3gIyE7NyaMrTuYAJhSPJIi+Umo4+w223c9N+EC+7JjGU+NNBlURAfn88jzQ1MCj2xxaCvJ636mjFI3A+okC0XZ/qU5445UP8d7Ju4asSsQaTyHyQyC2Lnq5dmyQVxWnSYcbHCtBAJeqFRfgJiCVkQ3KqZr/C7bG3VxzJcg8BOVF/Wv3eQfWoAI5LIU4vgnmGoiejuBkD2XtW+/ZKaxRLw+cmkBxwrFCPAqnaQGEE1N54gvnxDqduKrQGc6ZmYFvOYHl/Am0Oo41BAprUxAsdoFcb5MLZtb13Ykc4TpBq+IzF6Sph3v2p3iF6L7iwrjliu8UmgpwL3KEVsZhMFqbhmDRdNAKFEF+iIYG4dwgJ3TxcV211uRcpqmhePonNC0lDeJ5UdXsJ+FGKHaFqzTHGoSseccjrZQBJCx+VfijT5DXg5AjSFjKUMP/IOCDuBn3DBLWDHTbEIHofsLP5GQV3lPCYxDVrhDE7yeoyEAKGvfM7RDE5q/s1M+VNOSDCOGvFil3ISX5dQQhWLZYhpSkQf4aUVkvppUnGiQotQN+LW+58hBSULR8qetuBWM9DVcikAvad4SuZD3ZgIS1UNAyLn4Afi0j1rmdgwS1AHJOLQA1tHqKuKd8sf+zCgnpWonnfpJaxibHGaGspJy5dYNVqPyg9g2bHFOja80ytMGyNtc0Ld1yBm0/J65JZ9qAeDo1wNoE0OpNOG8XDb3hWthQCykGQqmzPwaM1tE+xP5bonBwuSvRq18Bmr+SPf5obsM99Q+OE0Fmwz8mywAAAABJRU5ErkJggg==\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAYAAAByDd+UAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAJeSURBVHgBtVZLctpAEH09kGTLEeQb4GWqDIETYE4QwN5kFfsEgRMkuywSwD6BnROAISkv4QbREVh44ypJ7e5ByOZTkpDgVakYaabm0T3vdQ8hDabDmiE0mLkmb448pXBmAdCcCPOA8QeV9jhpK4qdnfRbRPQtJEkDlwldnHVusRfh49Ahn+/AKCMbXC4+1/Hxi7s5YTY/FP5JVB7PcpApHPI+zDD5fb45sR6hLCAydzggmIIWzi5vtwk1jRrZqyAOhYWk93SV3iilQjY6ApmiJOmNsrYkFDUivRKzoIy/g88RYSj9o4JY7GIJxdTIGR2Du1zpEBfpBLYY7ISD6a+akdUN5AHDReWip0Pygu+I0wEXG0bKUna/sSjQF4MLzLTfFcrzuOVELBGCy/F7YqzPzjmDK9RF7mIpRiodOCqaBCv4PVQ6deaguUbGfGNr5mxYCi2VBiWTtIJQGGI0LKF6eS8kP5Zscm6+udaheeIu9hCdEi4S1jjmnRWDBGt6SmbPrd5eqH8l3V+RHgsldJNWMVMLD/0rJWGfTlfntq9/5c/NjWw2TrOYjGz++NOxkem7tq99/cvSrNWMck5pD30uhbhpvPetlKpc52PUbLegyeC/qMPBMaFnX+2cmOWYezgyxLNd/Y36IU0H2gvzdPkYtmV0Oox8yB6psZMskoUsKn9rhKI+V4x9jQODEbStjbYIFdWLm7CE5Y9UI9P7jFSot593XxNHYuqC1Mfsyp2z99x8G1k84Qp6EVa/pSVWcZgsF+Et4sEn2+uIy6T3VQo7jE2blEZbrfge1c5D0lYvLvP8IBLc65kAAAAASUVORK5CYII=\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAYAAAByDd+UAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAJRSURBVHgBvVbdUeMwEF4pGZ5Tgq+CCxVcUgHhjQdwTAehAkIFd1dBcpAH3jAVnK8C3MG5BM/wxowlvpUV58+WlRD4ZjzSeFf7aVffyhbkAR1FA9L6DFMeA4w9a8pJiBRjivFZzOdJWyzhJLq6ihDoFtOA/JDhmYr7+z+0DyEyCkipJ0z7dBgyknKIjLNtg9wh46yUevkAGYM3/KIvL0fbho0MjYOUT3RcROslrghtGTmzHh0XOZI4XZZ3VVKl/n4CGZmYpR6oIjTn5q/EQ9DXYTiuCK30m5Cj9xLiXmtGZu2Zw2dqCE1Tu7PLqdM5x8GfojTTHSvewfaN24DcCCDKgbQ3iNORimLGE7FY3IFg1dRax+ZdOZ9R27F0Omdc0vZ+E2Kkx+OfZt7tTmhZvtfXa8MVhlMQjlrjaG0y9GtwrScQ1wTyzunt7RzPUMRxzu9gvSU/BAK707QPlBqijInZQxT1be96Q9L++F7NimLv648Jc29vVuRi8ZtvJTw98fAwr1VuM3ImzLxctf61ociiMLfHjnLdMVIJBSYerimyuTFrSkUOsG5Qo1w3pARhUTy3uGVGlUuydUVuK7etWkrFwgb6T81Nm9kqBCazOpT2zNqDpjh8I3XtTu+waNbgyEQRudC0kU1Mzd6qNWH40a+8CyY7nqz6sDwD/xbxB59vdbFXhOLxkc/gho4Npa5N7G1CQ1o28rEyzdEBEfo03uCo89QXFwGdnPAvR0CHIeUjWs/MSVgRf9WPcA3xDwz8vetjA6zk1a9+2X8JxhhH8q8t1jtd7R5fXnkaPwAAAABJRU5ErkJggg==\"","import React from 'react'\nimport _ from 'lodash'\nimport SdwInput from '@common/Input'\nimport SdwSelect from '@common/Select'\nimport SdwButton from '@common/Button'\nimport SdwMessage from '@common/Message'\nimport SdwTable from '@common/Table'\nimport SdwEnable from '@common/Enable'\nimport SdwPagination from '@common/Pagenation'\nimport BreadCrumbsAndTablde from '@components/BreadCrumbsAndTablde'\nimport LogDetails from './StepWin/LogDetails'\nimport CollectionTask from './StepWin/CollectionTask'\nimport StatusWin from './StepWin/StatusWin'\nimport {getStandardSelects} from '@services/Derived'\nimport {connect} from 'react-redux'\nimport {withRouter} from 'react-router-dom'\nimport '../index.css'\nimport {requestOptionsLOG} from '@config/config'\nconst baseURL = requestOptionsLOG.basename\n\nclass CollectionServiceManagement extends React.PureComponent {\n state = {\n logVisible: false, // 新增或编辑日志文件弹窗\n taskVisible: false, // 新增或编辑采集任务弹窗\n statusVisible: false, // 链路检查弹窗\n topicData: [], // 主题域\n ipListData: [], // 日志服务器\n search: {\n page: 1,\n size: 10,\n path: \"\",\n inputTag: \"\",\n businessTopic: \"\",\n enable: \"\",\n accessStatus: \"\",\n ip: \"\"\n },\n tableData: {\n configList: [],\n total: 0,\n },\n current_page: 1,\n currentItem: {},\n isEdit: false,\n tagIsEdit: false,\n socketList: {\n checkerList: [],\n sessionId: 0\n }\n }\n\n componentDidMount() {\n this.queryInputFileConfigList()\n this.getStandardSelects()\n this.queryValidIpList()\n }\n\n // 查询采集服务配置列表\n queryInputFileConfigList = () => {\n let {search} = this.state\n let params = {}\n let rtx = this.props.userInfo.name\n for (let key in search) {\n if (search[key]) {\n params[key] = search[key]\n }\n }\n fetch(baseURL + '/sdw/filebeat/input/queryInputFileConfigList',\n {\n method: 'POST',\n mode: 'cors',\n headers: {'Content-Type': 'application/json', 'STAFFNAMES': rtx},\n body: JSON.stringify(params)\n }).then(res => {\n res.json().then((data) => {\n let record = data.data || {}\n this.setState({\n tableData: record\n })\n })\n }).catch(error => {\n SdwMessage.error('接口异常:' + error)\n })\n }\n\n // 主动链路检测\n chainCheck = (data) => {\n let rtx = this.props.userInfo.name\n let str = '?id=' + parseInt(data.id)\n fetch(baseURL + '/sdw/filebeat/input/chainCheck/' + str,\n {\n method: 'GET',\n mode: 'cors',\n headers: {'Content-Type': 'application/json', 'STAFFNAMES': rtx},\n }).then(res => {\n res.json().then((data) => {\n let record = data.data || {}\n if (data && data.code === 100 || data.code === 101) {\n this.collectionTaskSubmit(data)\n } else {\n SdwMessage.error(data.message)\n }\n })\n }).catch(error => {\n SdwMessage.error('接口异常:' + error)\n })\n }\n\n // 获取主题域列表\n getStandardSelects = () => {\n getStandardSelects().then((res) => {\n let topicRecord = res.data.data\n this.setState({\n topicData: topicRecord.topic,\n })\n })\n }\n\n // 查询有效的机器ip\n queryValidIpList = () => {\n let rtx = this.props.userInfo.name\n fetch(baseURL + '/sdw/filebeat/filebeat/queryValidIpList',\n {\n method: 'GET',\n mode: 'cors',\n headers: {'Content-Type': 'application/json', 'STAFFNAMES': rtx},\n }).then(res => {\n res.json().then(data => {\n if (data && data.code === 100) {\n let items = data.data || []\n this.setState({\n ipListData: items.map(i => {\n return {\n id: i,\n text: i\n }\n })\n })\n }\n })\n }).catch(error => {\n SdwMessage.error('接口异常:' + error)\n })\n }\n\n getColumns = () => {\n let self = this\n return [\n {\n title: 'checkTd',\n dataIndex: 'id',\n checkTd: 1,\n width: 20,\n },\n {\n title: 'ID',\n dataIndex: 'id',\n checkChildren: true,\n width: 68\n },\n {\n title: '日志文件',\n dataIndex: 'path',\n width: 160\n },\n {\n title: '采集服务名称',\n dataIndex: 'inputName',\n width: 124\n },\n {\n title: 'CMD',\n dataIndex: 'cmd',\n width: 130\n },\n {\n title: '采集标识',\n dataIndex: 'inputTag',\n width: 130\n },\n {\n title: '主题域',\n dataIndex: 'businessTopic',\n width: 126\n },\n {\n title: '业务',\n dataIndex: 'business',\n width: 110\n },\n {\n title: '提交状态',\n render: data => ,\n width: 70\n },\n {\n title: '链路状态',\n render: data => {\n let arr = {\n '-803': '采集配置下发失败',\n '-804': '解析下发失败',\n '-805': '采集失败',\n '-806': '收包失败',\n '-807': '消费失败',\n '800': '正常'\n }\n let msg = arr[data.status]\n return \n {msg ? msg : '-'}\n \n },\n width: 148\n },\n {\n title: '修改人',\n dataIndex: 'updateRtx',\n width: 96\n },\n {\n title: '修改时间',\n dataIndex: 'updateTime',\n width: 148\n },\n {\n title: '操作',\n width: 140,\n render: data => {\n if (data.hasOwnProperty(\"inputConfigViewDTOS\")) {\n return <>\n {\n self.logAddOrEdit(true, data)\n }}\n />\n {\n self.taskAddOrEdit(false, data)\n }}\n />\n \n } else {\n return <>\n {\n let dataClone = data\n dataClone.id = dataClone.id.replace(/(^\\s*)/g, \"\");\n self.taskAddOrEdit(true, dataClone)\n }}\n />\n {self.chainCheck(data)}}\n />\n \n }\n\n }\n }\n ]\n }\n\n // 新增或编辑日志文件弹窗\n logAddOrEdit = (isEdit, record = {}) => {\n this.setState({\n isEdit: isEdit,\n logVisible: true,\n currentItem: record,\n })\n }\n\n // 新增或编辑采集任务弹窗\n taskAddOrEdit = (tagIsEdit, record) => {\n this.setState({\n tagIsEdit: tagIsEdit,\n taskVisible: true,\n currentItem: record,\n })\n }\n\n setSearch = (type, val) => {\n let {search} = this.state\n let obj = {}\n obj[type] = val\n if (type != 'page') {\n obj['page'] = 1\n }\n let searchClone = Object.assign({}, search, obj)\n this.setState({\n search: searchClone\n }, () => {\n this.queryInputFileConfigList()\n })\n }\n\n collectionTaskSubmit = (data) => {\n this.queryInputFileConfigList()\n let code = data.code\n if (code === 101) {\n this.setState({\n statusVisible: true,\n socketList: data.data\n })\n }\n }\n\n render() {\n let {\n search,\n logVisible,\n taskVisible,\n statusVisible,\n tableData,\n topicData,\n ipListData,\n isEdit,\n tagIsEdit,\n currentItem,\n socketList,\n } = this.state\n\n let tableDataClone = _.cloneDeep(tableData)\n tableDataClone.configList = tableDataClone.configList || []\n let list = tableDataClone.configList.map(i => {\n if (i.hasOwnProperty(\"inputConfigViewDTOS\") && !!i.inputConfigViewDTOS) {\n i.inputConfigViewDTOS = i.inputConfigViewDTOS.map(j => {\n j.id = \" \" + j.id\n return j\n })\n }\n return i\n })\n\n return (\n <>\n \n \n this.setSearch('path', val)}\n />\n this.setSearch('inputTag', val)}\n />\n {\n return {\n id: i.topic_name,\n text: i.topic_name\n }\n })}\n value={search.businessTopic}\n onChange={(val, item) => {\n this.setSearch('businessTopic', item.text)\n }}\n />\n {/* this.setSearch('enable', val)}\n />*/}\n this.setSearch('accessStatus', val)}\n />\n this.setSearch('ip', val)}\n />\n \n \n this.logAddOrEdit(false, {})}\n />\n \n \n \n this.setSearch(\"page\", val)}\n pageCountChange={val => this.setSearch(\"size\", val)}\n />\n \n \n\n {/* 新增或编辑日志文件弹窗 */}\n {logVisible &&\n {\n this.setState({logVisible: bool})\n }}\n iniList={this.queryInputFileConfigList}\n collectionTaskSubmit={this.collectionTaskSubmit}\n />\n }\n\n {/* 新增或编辑采集任务弹窗 */}\n {taskVisible &&\n {\n this.setState({taskVisible: bool})\n }}\n collectionTaskSubmit={this.collectionTaskSubmit}\n />\n }\n\n {statusVisible &&\n this.setState({statusVisible: false})}\n />\n }\n\n \n )\n }\n}\n\nconst mapState = state => ({\n userInfo: state.user.userInfo\n})\nexport default withRouter(connect(mapState)(CollectionServiceManagement))\n","import React, {PureComponent} from 'react'\nimport _ from 'lodash'\nimport SdwDrawer from '@common/Drawer'\nimport SdwInput from '@common/Input'\nimport SdwSelect from '@common/Select'\nimport SdwSwitch from '@common/Switch'\nimport SdwMessage from '@common/Message'\nimport {getTableApiItems} from '@api/dataAccess'\nimport {connect} from 'react-redux'\nimport {withRouter} from 'react-router-dom'\nimport '../../index.css'\nimport {requestOptionsLOG} from '@config/config'\n\nconst baseURL = requestOptionsLOG.basename\n\nclass DistributeWin extends PureComponent {\n\n state = {\n params: {\n topic: '',\n deliveryType: 'STORE', // 分发类型\n parseId: 0, // 解析配置id\n storeTableId: 0, // 入库表id\n storeTableName: '', // 入库表英文名\n storeTableNameZh: '', // 入库表中文名\n extra: '',\n enable: false,\n rtx: ''\n },\n sholdCheckValidate: false,\n topicList: [],\n targetTableList: [],\n }\n\n componentDidMount() {\n this.initData()\n this.queryInputFileConfigList()\n this.getTargetTableList()\n }\n\n initData = () => {\n let {isEdit, currentItem} = this.props\n if (isEdit) {\n this.queryDeliveryConfig(currentItem.id)\n } else {\n this.setParamsData(\"parseId\", currentItem.id)\n }\n }\n\n // 查询分发配置信息\n queryDeliveryConfig = (id) => {\n let rtx = this.props.userInfo.name\n fetch(baseURL + '/sdw/filebeat/parseConfig/queryDeliveryConfig/' + id,\n {\n method: \"GET\",\n mode: \"cors\",\n headers: {'Content-Type': 'application/json', 'STAFFNAMES': rtx},\n }).then(res => {\n res.json().then(data => {\n if (data && data.code === 100) {\n let items = data.data || {}\n let params = {\n id: items.id,\n topic: items.topic,\n deliveryType: items.deliveryType, // 分发类型\n parseId: items.parseId, // 解析配置id\n storeTableId: items.storeTableId, // 入库表id\n storeTableName: items.storeTableName, // 入库表英文名\n storeTableNameZh: items.storeTableNameZh, // 入库表中文名\n extra: items.extra,\n enable: items.enable,\n rtx: rtx,\n }\n this.setState({\n params: params\n })\n }\n })\n }).catch(error => {\n SdwMessage.error('接口异常:' + error)\n })\n }\n\n // 获取落地数据表\n getTargetTableList = () => {\n // 目标表参数\n let paramData = {\n limit: 10000,\n search: JSON.stringify({\n data_set_type: {\n value: 'es',\n operator: '='\n },\n warehouse_level: {\n value: 'ODS',\n operator: '='\n },\n enable: {\n value: '1',\n operator: '='\n }\n })\n }\n\n // 目标表\n getTableApiItems(paramData).then(res => {\n const code = _.get(res, 'data.code')\n if (code === 0) {\n const items = _.get(res, 'data.data.items')\n let curArr = _.isArray(items) ? items : []\n curArr = curArr.map(i => {\n let curName = !!i.database_name ? `${i.database_name}.${i.table_name}` : `${i.table_name}`\n return {\n id: parseInt(i.id),\n text: `${curName}(${i.data_set_chinese})`,\n store_table_name_ch: i.data_set_chinese,\n store_table_name_en: `${i.database_name}.${i.table_name}`,\n topic: i.topic,\n business: i.business,\n data_set_type: i.data_set_type\n }\n })\n this.setState({\n targetTableList: curArr\n })\n } else {\n SdwMessage.error('获取目标表数据失败')\n }\n }).catch(error => {\n SdwMessage.error('获取目标表接口异常:' + error)\n })\n }\n\n // 查询消费topic\n queryInputFileConfigList = () => {\n let rtx = this.props.userInfo.name\n fetch(baseURL + '/sdw/filebeat/parseConfig/queryConsumeTopic',\n {\n method: \"GET\",\n mode: \"cors\",\n headers: {'Content-Type': 'application/json', 'STAFFNAMES': rtx},\n }).then(res => {\n res.json().then((data) => {\n let record = data.data\n this.setState({\n topicList: record.map(i => {\n return {id: i.topic, text: i.topic}\n })\n })\n })\n }).catch(error => {\n SdwMessage.error('接口异常:' + error)\n })\n }\n\n // 更新或写入分发配置\n submitClick = () => {\n let {params} = this.state\n let rtx = this.props.userInfo.name\n if (!params.topic || (params.deliveryType == 'STORE' && !params.storeTableId)) {\n this.setState({\n sholdCheckValidate: true\n })\n return\n }\n fetch(baseURL + '/sdw/filebeat/parseConfig/upsertDeliveryConfig',\n {\n method: \"POST\",\n mode: \"cors\",\n headers: {'Content-Type': 'application/json', 'STAFFNAMES': rtx},\n body: JSON.stringify(params)\n }).then(res => {\n res.json().then((data) => {\n if (data && data.code === 100 || data.code === 101) {\n this.props.changeVisible(false)\n this.props.distributeWinSubmit(data)\n } else {\n SdwMessage.error(data.message)\n }\n })\n }).catch(error => {\n SdwMessage.error('接口异常:' + error)\n })\n }\n\n setParamsData = (type, value) => {\n let {params} = this.state\n let obj = {}\n obj[type] = value\n let paramsClone = Object.assign({}, params, obj)\n this.setState({\n params: paramsClone\n })\n }\n\n render() {\n\n let {\n params,\n targetTableList,\n topicList,\n sholdCheckValidate,\n } = this.state\n\n let {\n isEdit,\n distributeVisible,\n changeVisible,\n currentItem\n } = this.props\n\n return (\n changeVisible(false)}\n onCancelClick={() => changeVisible(false)}\n onSureClick={this.submitClick}\n >\n \n
\n
\n 日志topic\n this.setParamsData('topic', val)}\n sholdCheckValidate={sholdCheckValidate}\n validateFun={value => !!value ? true : '日志topic不能为空'}\n />\n
\n
\n 消费方式\n this.setParamsData('deliveryType', val)}\n />\n
\n {\n params.deliveryType == 'STORE' &&\n
\n 落地数据表\n {\n this.setState({\n params: _.assign({}, params, {\n storeTableId: val,\n storeTableNameZh: item.store_table_name_ch,\n storeTableName: item.store_table_name_en,\n })\n })\n }}\n sholdCheckValidate={sholdCheckValidate}\n validateFun={value => !!value ? true : '落地数据表不能为空'}\n />\n
\n }\n
\n 备注\n {\n this.setParamsData('extra', val)\n }}\n />\n
\n
\n 是否有效\n {\n this.setParamsData('enable', val)\n }}\n />\n
\n
\n
\n \n )\n }\n}\n\nconst mapState = state => ({\n userInfo: state.user.userInfo\n})\nexport default withRouter(connect(mapState)(DistributeWin))\n","import React from 'react'\nimport _ from 'lodash'\nimport SdwInput from '@common/Input'\nimport SdwButton from '@common/Button'\nimport SdwMessage from '@common/Message'\nimport SdwEnable from '@common/Enable'\nimport SdwTable from '@common/Table'\nimport SdwPagination from '@common/Pagenation'\nimport BreadCrumbsAndTablde from '@components/BreadCrumbsAndTablde'\nimport DistributeWin from './StepWin/DistributeWin'\nimport {connect} from 'react-redux'\nimport {withRouter} from 'react-router-dom'\nimport StatusWin from '@pages/Knowledge/LogAccess/CollectionServiceManagement/StepWin/StatusWin'\nimport '../index.css'\nimport {requestOptionsLOG} from '@config/config'\n\nconst baseURL = requestOptionsLOG.basename\n\nclass ResolveDistributionConfiguration extends React.PureComponent {\n\n state = {\n currentItem: {},\n distributeVisible: false,\n statusVisible: false, // 链路检查弹窗\n search: {\n page: this.props.pageInfo || 1,\n size: 10,\n id: '',\n cmd: '',\n storeTableNameZh: '',\n storeTableName: '',\n createRtx: '',\n inputTag: '',\n },\n tableData: {},\n isEdit: false,\n socketList: {\n checkerList: [],\n sessionId: 0\n }\n }\n\n componentDidMount() {\n this.queryParseConfigList()\n }\n\n // 查询解析配置列表\n queryParseConfigList = () => {\n let {search} = this.state\n let rtx = this.props.userInfo.name\n let params = {}\n for (let key in search) {\n if (search[key]) {\n params[key] = search[key]\n }\n }\n fetch(baseURL + '/sdw/filebeat/parseConfig/queryParseConfigList',\n {\n method: \"POST\",\n mode: \"cors\",\n headers: {'Content-Type': 'application/json', 'STAFFNAMES': rtx},\n body: JSON.stringify(params)\n }).then(res => {\n res.json().then((data) => {\n let record = data.data || {}\n // console.log('tableData================================', record)\n this.setState({\n tableData: record\n })\n })\n }).catch(error => {\n SdwMessage.error('接口异常:' + error)\n })\n }\n\n getColumns = () => {\n let self = this\n return [\n {\n title: \"checkTd\",\n dataIndex: \"id\",\n checkTd: 1,\n width: 20,\n },\n {\n title: 'ID',\n dataIndex: 'id',\n checkChildren: true,\n width: 40\n },\n {\n title: 'CMD',\n dataIndex: 'cmd',\n width: 42\n },\n {\n title: '采集标识',\n dataIndex: 'inputTag',\n width: 200\n },\n {\n title: '表中文名',\n dataIndex: 'storeTableNameZh',\n width: 180\n },\n {\n title: '表英文名',\n dataIndex: 'storeTableName',\n width: 180\n },\n {\n title: '消费类型',\n render: data => {\n let arr = {\n 'STORE': '入库',\n 'INDIVIDUAL': '自定义'\n }\n let msg = arr[data.deliveryType]\n return {msg ? msg : '-'}\n },\n width: 56\n },\n {\n title: '状态',\n render: data => {\n if (data.status) {\n let arr = {\n '700': '验证通过',\n '701': '未验证',\n '-704': '验证未通过',\n }\n let msg = arr[data.status]\n return \n {msg ? msg : '-'}\n \n } else {\n return \n }\n },\n width: 82\n },\n {\n title: '修改人',\n dataIndex: 'updateRtx',\n width: 96\n },\n {\n title: '修改时间',\n dataIndex: 'updateTime',\n width: 148\n },\n {\n title: '操作',\n width: 120,\n render: data => {\n if (data.hasOwnProperty(\"parseId\")) {\n let dataClone = data\n dataClone.id = dataClone.id.replace(/(^\\s*)/g, \"\");\n return <>\n self.distributeAddOrEdit(true, dataClone)}\n />\n \n } else {\n return <>\n self.logAccessAddOrEdit(true, data.id)}\n />\n self.distributeAddOrEdit(false, data)}\n />\n \n }\n }\n }\n ]\n }\n\n setSearch = (type, val) => {\n let {search} = this.state\n let obj = {}\n obj[type] = val\n if (type != 'page') {\n obj['page'] = 1\n }\n let searchClone = Object.assign({}, search, obj)\n this.setState({\n search: searchClone\n }, () => {\n this.queryParseConfigList()\n })\n }\n\n // 新增或编辑分发配置弹窗\n distributeAddOrEdit = (isEdit, record = {}) => {\n this.setState({\n deliveryIsEdit: isEdit,\n distributeVisible: true,\n currentItem: record,\n })\n }\n\n logAccessAddOrEdit = (isEdit, id = \"\") => {\n this.props.history.push({\n pathname: '/admin/dataCollect/logAccessDetail',\n state: {\n id: id,\n isEdit: isEdit\n }\n })\n }\n\n distributeWinSubmit = (data) => {\n this.queryParseConfigList()\n console.log(\"distributeWinSubmit====data\", data)\n let code = data.code\n if (code == 101) {\n this.setState({\n statusVisible: true,\n socketList: data.data\n })\n }\n }\n\n render() {\n let {\n currentItem,\n distributeVisible,\n tableData,\n search,\n deliveryIsEdit,\n statusVisible,\n socketList\n } = this.state\n\n let tableDataClone = _.cloneDeep(tableData)\n tableDataClone.configList = tableDataClone.configList || []\n let list = tableDataClone.configList.map(i => {\n if (i.hasOwnProperty(\"deliveryConfigQueryDTOS\") && !!i.deliveryConfigQueryDTOS) {\n i.deliveryConfigQueryDTOS = i.deliveryConfigQueryDTOS.map(j => {\n j.id = \" \" + j.id\n return j\n })\n }\n return i\n })\n\n return (\n <>\n \n \n this.setSearch('id', val)}\n />\n this.setSearch('cmd', val)}\n />\n this.setSearch('inputTag', val)}\n />\n this.setSearch('storeTableNameZh', val)}\n />\n this.setSearch('storeTableName', val)}\n />\n this.setSearch('createRtx', val)}\n />\n \n \n this.logAccessAddOrEdit(false)}\n />\n \n \n \n this.setSearch(\"page\", val)}\n pageCountChange={val => this.setSearch(\"size\", val)}\n />\n \n \n\n {/* 新增或编辑分发配置弹窗 */}\n {distributeVisible &&\n {\n this.setState({distributeVisible: bool})\n }}\n distributeWinSubmit={this.distributeWinSubmit}\n />\n }\n {statusVisible &&\n this.setState({statusVisible: false})}\n />\n }\n \n )\n }\n}\n\nconst mapState = state => ({\n userInfo: state.user.userInfo,\n pageInfo: state.page.pageInfo\n})\n\nexport default withRouter(connect(mapState)(ResolveDistributionConfiguration))\n","import React, {PureComponent} from 'react'\nimport _ from 'lodash'\nimport SdwDrawer from '@common/Drawer'\nimport SdwInput from '@common/Input'\nimport SdwSelect from '@common/Select'\nimport SdwSwitch from '@common/Switch'\nimport SdwMessage from '@common/Message'\nimport {getStaffs} from '@api/alertRules'\nimport {connect} from 'react-redux'\nimport {withRouter} from 'react-router-dom'\nimport '../../index.css'\nimport {requestOptionsLOG} from '@config/config'\nconst baseURL = requestOptionsLOG.basename\n\nclass CollectionWin extends PureComponent {\n\n state = {\n params: {\n inputTag: '',\n inputName: '',\n businessTopicId: '',\n businessTopic: '',\n businessId: '',\n business: '',\n principal: '',\n extra: '',\n enable: false,\n rtx: ''\n },\n staffsList: [],\n allMembers: [], // rtx\n sholdCheckValidate: false,\n }\n\n componentDidMount() {\n this.initData()\n this.getStaffs()\n }\n\n initData = () => {\n let {isEdit, currentItem} = this.props\n if (isEdit) {\n let params = {\n id: currentItem.id,\n inputTag: currentItem.inputTag,\n inputName: currentItem.inputName,\n businessTopicId: currentItem.businessTopicId,\n businessTopic: currentItem.businessTopic,\n businessId: currentItem.businessId,\n business: currentItem.business,\n principal: \"\",\n extra: currentItem.extra || \"\",\n enable: currentItem.enable,\n rtx: this.props.userInfo.name\n }\n this.setState({\n params: params,\n staffsList: (currentItem.principal.split(',') || []).map(i => {\n return {id: i, text: i}\n })\n })\n } else {\n this.queryMaxConfigId()\n }\n }\n\n // 获取rtx\n getStaffs = () => {\n getStaffs().then(res => {\n if (res && res.data && res.data.code === 0) {\n let list = _.isArray(res.data.data) ? res.data.data : []\n this.setState({\n allMembers: list.map(i => {\n return {id: i.value, text: i.name}\n })\n })\n }\n })\n }\n\n // 查询最大配置id\n queryMaxConfigId = () => {\n let rtx = this.props.userInfo.name\n fetch(baseURL + '/sdw/filebeat/inputTag/queryMaxConfigId',\n {\n method: 'GET',\n mode: 'cors',\n headers: {'Content-Type': 'application/json', 'STAFFNAMES': rtx},\n }).then(res => {\n res.json().then((data) => {\n let maxConfigId = data.data || \"\"\n let inputTag = \"\"\n if (maxConfigId.toString().length === 1) {\n inputTag = 'KF_LOG_' + '100' + (maxConfigId + 1)\n } else if (maxConfigId.toString().length === 2) {\n inputTag = 'KF_LOG_' + '10' + (maxConfigId + 1)\n } else if (maxConfigId.toString().length === 3) {\n inputTag = 'KF_LOG_' + '1' + (maxConfigId + 1)\n } else if (maxConfigId.toString().length >= 4) {\n inputTag = 'KF_LOG_' + (maxConfigId + 1)\n }\n this.setParamsData('inputTag', inputTag)\n })\n }).catch(error => {\n SdwMessage.error('接口异常:' + error)\n })\n }\n\n setParamsData = (type, value) => {\n let {params} = this.state\n let obj = {}\n obj[type] = value\n let paramsClone = Object.assign({}, params, obj)\n this.setState({\n params: paramsClone\n })\n }\n\n // 更新或写入采集标识信息\n submitClick = () => {\n let {params, staffsList} = this.state\n let rtx = this.props.userInfo.name\n if (!params.inputTag || !params.inputName || !params.businessTopicId || !params.businessId || staffsList.length == 0) {\n this.setState({\n sholdCheckValidate: true\n })\n return\n }\n params.principal = staffsList.map(i => {\n return i.id\n }).join(\",\")\n fetch(baseURL + '/sdw/filebeat/inputTag/upsertInputTag',\n {\n method: \"POST\",\n mode: \"cors\",\n headers: {'Content-Type': 'application/json', 'STAFFNAMES': rtx},\n body: JSON.stringify(params)\n }).then(res => {\n res.json().then((data) => {\n if (data && data.code === 100) {\n this.props.iniDataList()\n this.props.changeVisible(false)\n } else {\n SdwMessage.error(data.message)\n }\n })\n }).catch(error => {\n SdwMessage.error('接口异常:' + error)\n })\n }\n\n render() {\n\n let {\n params,\n staffsList,\n allMembers,\n sholdCheckValidate\n } = this.state\n\n let {\n isEdit,\n collectionVisible,\n changeVisible\n } = this.props\n\n let topicData = this.props.topicData.map(i => {\n return {\n id: i.id,\n text: i.topic_name\n }\n })\n\n let businessData = this.props.businessData.filter(i => i.topic_id == params.businessTopicId).map(el => {\n return {\n id: el.id,\n text: el.business_name\n }\n })\n\n return (\n changeVisible(false)}\n onCancelClick={() => changeVisible(false)}\n onSureClick={this.submitClick}\n >\n \n
\n
\n 采集标识\n !!value ? true : '采集标识不能为空'}\n onChange={val => this.setParamsData('inputTag', val)}\n />\n
\n
\n 中文名称\n !!value ? true : '中文名称不能为空'}\n onChange={val => this.setParamsData('inputName', val)}\n />\n
\n
\n 主题域\n !!value ? true : '主题域不能为空'}\n onChange={(val, item) => {\n this.setState({\n params: Object.assign({}, params, {\n businessTopicId: val,\n businessTopic: item.text\n })\n })\n }}\n />\n
\n
\n 业务\n !!value ? true : '业务不能为空'}\n onChange={(val, item) => {\n this.setState({\n params: Object.assign({}, params, {\n businessId: val,\n business: item.text\n })\n })\n }}\n />\n
\n
\n 负责人\n this.setState({staffsList: val})}\n sholdCheckValidate={sholdCheckValidate}\n validateFun={value => !!value.length ? true : '负责人不能为空'}\n />\n
\n
\n 备注\n this.setParamsData('extra', val)}\n />\n
\n
\n 是否有效\n this.setParamsData('enable', val)}\n />\n
\n
\n
\n \n )\n }\n}\n\nconst mapState = state => ({\n userInfo: state.user.userInfo\n})\nexport default withRouter(connect(mapState)(CollectionWin))\n","import React from 'react'\nimport SdwInput from '@common/Input'\nimport SdwSelect from '@common/Select'\nimport SdwEnable from '@common/Enable'\nimport SdwButton from '@common/Button'\nimport SdwMessage from '@common/Message'\nimport SdwTable from '@common/Table'\nimport SdwPagination from '@common/Pagenation'\nimport BreadCrumbsAndTablde from '@components/BreadCrumbsAndTablde'\nimport CollectionWin from './StepWin/CollectionWin'\nimport {getStandardSelects} from '@services/Derived'\nimport {getBusinessStatisticByTopic} from '@services/dataStandars'\nimport {connect} from 'react-redux'\nimport {withRouter} from 'react-router-dom'\nimport '../index.css'\nimport {requestOptionsLOG} from '@config/config'\nconst baseURL = requestOptionsLOG.basename\n\nclass LogIdConfiguration extends React.PureComponent {\n\n state = {\n collectionVisible: false,\n tableData: {},\n topicData: [], // 主题域\n businessData: [], // 业务\n businessTopicId: '', // 已选主题域的id\n businessList: [], // 主题域对应的业务\n search: {\n page: 1,\n size: 10,\n cmd: '',\n inputTag: '',\n business: '',\n businessTopic: '',\n createRtx: ''\n },\n isEdit: false,\n currentItem: {}\n }\n\n componentDidMount() {\n this.queryInputTag()\n this.getStandardSelects()\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n if (prevState.businessTopicId !== this.state.businessTopicId) {\n this.getBusinessStatisticByTopic()\n }\n }\n\n // 查询采集标识列表或采集标识详情信息\n queryInputTag = () => {\n let {search} = this.state\n let params = {}\n let rtx = this.props.userInfo.name\n for(let key in search) {\n if (search[key]) {\n params[key] = search[key]\n }\n }\n fetch(baseURL + '/sdw/filebeat/inputTag/queryInputTag',\n {\n method: \"POST\",\n mode: \"cors\",\n headers: {'Content-Type': 'application/json', 'STAFFNAMES': rtx},\n body: JSON.stringify(params)\n }).then(res => {\n res.json().then((data) => {\n let record = data.data || {}\n this.setState({\n tableData: record\n })\n })\n }).catch(error => {\n SdwMessage.error('接口异常:' + error)\n })\n }\n\n // 获取主题/业务列表\n getStandardSelects = () => {\n getStandardSelects().then((res) => {\n if (res && res.data && res.data.code === 0){\n let topicRecord = res.data.data || []\n this.setState({\n topicData: topicRecord.topic,\n businessData: topicRecord.business\n })\n }\n })\n }\n\n // 根据主题域ID请求对应的业务\n getBusinessStatisticByTopic = () => {\n let { businessTopicId } = this.state\n getBusinessStatisticByTopic({id: businessTopicId}).then(res => {\n if (res && res.data && res.data.code === 0) {\n let record = res.data.data && res.data.data.list.map(i => {\n return {\n id: i.business_name,\n text: i.business_name\n }\n }) || []\n this.setState({\n businessList: record\n })\n }\n })\n }\n\n getColumns = () => {\n let self = this\n return [\n // {\n // title: 'ID',\n // dataIndex: 'id',\n // width: 34\n // },\n {\n title: 'CMD',\n dataIndex: 'cmd',\n width: 42\n },\n {\n title: '采集标识',\n dataIndex: 'inputTag',\n width: 164\n },\n {\n title: '中文名',\n dataIndex: 'inputName',\n width: 180\n },\n {\n title: '主题域',\n dataIndex: 'businessTopic',\n width: 90\n },\n {\n title: '业务',\n dataIndex: 'business',\n width: 100\n },\n {\n title: '解析配置',\n width: 90,\n render: data => (\n <>\n self.jumpToTabs('resolve')}\n />\n \n )\n },\n {\n title: '分发配置',\n width: 90,\n render: data => (\n <>\n self.jumpToTabs('resolve')}\n />\n \n )\n },\n {\n title: '日志文件配置',\n width: 90,\n render: data => (\n <>\n self.jumpToTabs('collection')}\n />\n \n )\n },\n {\n title: '采集任务配置',\n width: 90,\n render: data => (\n <>\n self.jumpToTabs('collection')}\n />\n \n )\n },\n // {\n // title: '是否已使用',\n // render: data => (\n // \n // {Boolean(data.used) ? '已使用' : '未使用'}\n // \n // ),\n // width: 70\n // },\n {\n title: '是否有效',\n render: data => ,\n width: 70\n },\n // {\n // title: '负责人',\n // dataIndex: 'principal',\n // width: 96\n // },\n {\n title: '修改人',\n dataIndex: 'updateRtx',\n width: 96\n },\n {\n title: '修改时间',\n dataIndex: 'updateTime',\n width: 148\n },\n {\n title: '操作',\n width: 50,\n render: data => (\n <>\n self.collectionAddOrEdit(true, data)}\n />\n \n )\n }\n ]\n }\n\n setSearch = (type, val) => {\n let {search} = this.state\n let obj = {}\n obj[type] = val\n if (type != 'page') {\n obj['page'] = 1\n }\n let searchClone = Object.assign({}, search, obj)\n this.setState({\n search: searchClone\n }, ()=>{\n this.queryInputTag()\n })\n }\n\n // 新增或编辑采集标识弹窗\n collectionAddOrEdit = (isEdit, record = {}) => {\n this.setState({\n isEdit: isEdit,\n collectionVisible: true,\n currentItem: record,\n })\n }\n\n // 跳转tabs\n jumpToTabs = (val) => {\n if (val == 'resolve') {\n this.props.updateTabsInfo(1)\n } else if (val == 'collection') {\n this.props.updateTabsInfo(2)\n }\n this.props.history.push('/admin/dataCollect')\n this.props.history.goBack()\n }\n\n render() {\n\n let {\n collectionVisible,\n tableData,\n topicData, // 全部主题域\n businessData, // 全部业务\n businessList, // 主题域对应的业务\n search,\n isEdit,\n currentItem\n } = this.state\n\n // console.log(\"-------search\", search)\n // console.log(\"currentItem---------------\", currentItem)\n\n return (\n <>\n \n \n {\n if (val == \"\") {\n this.setSearch('cmd', \"\")\n } else if (!isNaN(val)) {\n this.setSearch('cmd', parseInt(val))\n }\n }}\n />\n this.setSearch('inputTag', val)}\n />\n {\n return {\n id: i.topic_name,\n text: i.topic_name,\n topic_id: i.id\n }\n })}\n onChange={(val, item) => {\n this.setSearch('businessTopic', item.text)\n this.setState({\n businessTopicId: item.topic_id\n })\n }}\n />\n {\n return {\n id: i.business_name,\n text: i.business_name\n }\n })}\n onChange={(val, item) => this.setSearch('business', item.text)}\n />\n this.setSearch('createRtx', val)}\n />\n \n \n this.collectionAddOrEdit(false, {})}\n />\n \n \n \n this.setSearch(\"page\", val)}\n pageCountChange={val => this.setSearch(\"size\", val)}\n />\n \n \n\n {/* 新增或编辑采集标识弹窗 */}\n {collectionVisible &&\n this.setState({collectionVisible: bool})}\n />\n }\n \n )\n }\n}\n\nconst mapState = state => ({\n userInfo: state.user.userInfo,\n tabsInfo: state.page.tabsInfo\n})\n\nconst mapDispatch = dispatch => ({\n updateTabsInfo: dispatch.page.updateTabsInfo\n})\n\nexport default withRouter(connect(mapState, mapDispatch)(LogIdConfiguration))\n","import React, {PureComponent} from 'react'\nimport _ from 'lodash'\nimport SdwDrawer from '@common/Drawer'\nimport SdwInput from '@common/Input'\nimport SdwSelect from '@common/Select'\nimport SdwSwitch from '@common/Switch'\nimport SdwMessage from '@common/Message'\nimport {getStaffs} from '@api/alertRules'\nimport {connect} from 'react-redux'\nimport {withRouter} from 'react-router-dom'\nimport '../../index.css'\nimport {requestOptionsLOG} from '@config/config'\n\nconst baseURL = requestOptionsLOG.basename\n\nclass MachineWin extends PureComponent {\n\n state = {\n params: {\n ip: '', // 安装机器\n principal: [], // 负责人\n cluster: '', // 机器所属集群\n extra: '', // 备注\n enable: false, // 是否有效\n rtx: '', // 操作人\n filebeatAdvancedConfigVOS: []\n },\n staffsList: [],\n advancedConfigList: [{id: 0}], // filebeat高级配置\n sholdCheckValidate: false,\n allMembers: [], // rtx\n optionsList: []\n }\n\n componentDidMount() {\n this.initData()\n this.getStaffs()\n this.queryAdvancedConfig()\n }\n\n initData = () => {\n let {isEdit, currentItem} = this.props\n if (isEdit) {\n let params = {\n id: currentItem.id,\n ip: currentItem.ip || '',\n principal: '',\n cluster: currentItem.cluster || '',\n extra: currentItem.extra || '',\n enable: currentItem.enable,\n rtx: this.props.userInfo.name,\n }\n this.setState({\n params: params,\n staffsList: (currentItem.principal.split(',') || []).map(i => {\n return {id: i, text: i}\n })\n })\n }\n }\n\n // 查询高级配置信息\n queryAdvancedConfig = () => {\n let str = '?configLocation=' + 'GLOBAL_CONFIGURATION'\n fetch(baseURL + '/sdw/filebeat/filebeat/queryAdvancedConfig' + str,\n {\n method: 'GET',\n mode: 'cors',\n headers: {'Content-Type': 'application/json'},\n }).then(res => {\n res.json().then((data) => {\n let list = data.data || []\n let {isEdit, currentItem} = this.props\n this.setState({\n optionsList: list\n })\n // 编辑状态下初始化\n if (isEdit) {\n this.setState({\n advancedConfigList: !_.isEmpty(currentItem.filebeatAdvancedConfigQueryDTOS) && currentItem.filebeatAdvancedConfigQueryDTOS.map(item => {\n let filebeatConfigItemValueDTOS = []\n // let configType = ''\n list.forEach(i => {\n if (i.id == item.configId) {\n filebeatConfigItemValueDTOS = i.filebeatConfigItemValueDTOS\n // configType = i.configType\n }\n })\n return {\n ...item,\n // configType,\n filebeatConfigItemValueDTOS: filebeatConfigItemValueDTOS.map(i => {\n return {\n id: i.id,\n text: i.configItemName,\n configItemId: i.configItemId,\n configItemValue: i.configItemValue\n }\n }) || []\n }\n }) || [{id: 0}]\n })\n }\n })\n }).catch(error => {\n SdwMessage.error('接口异常:' + error)\n })\n }\n\n // 获取rtx\n getStaffs = () => {\n getStaffs().then(res => {\n if (res && res.data && res.data.code === 0) {\n let list = _.isArray(res.data.data) ? res.data.data : []\n this.setState({\n allMembers: list.map(i => {\n return {id: i.value, text: i.name}\n })\n })\n }\n })\n }\n\n addVirtualGroup = () => {\n let item = {}\n let advancedConfigList = [...this.state.advancedConfigList]\n advancedConfigList.push(item);\n this.setState({advancedConfigList: advancedConfigList})\n }\n\n removeVirtualGroup = (index) => {\n let advancedConfigList = [...this.state.advancedConfigList]\n advancedConfigList.splice(index, 1);\n this.setState({advancedConfigList: advancedConfigList})\n }\n\n updateVirtualGroup = (val, type, index, item) => {\n\n let {optionsList} = this.state\n\n if (type == 'configId') {\n let advancedConfigList = [...this.state.advancedConfigList]\n optionsList.forEach(i => {\n if (i.configType == 'CONFIG_TYPE_SELECT') {\n if (i.id == val) {\n advancedConfigList[index].filebeatConfigItemValueDTOS = i.filebeatConfigItemValueDTOS.map(j => {\n return {\n ...j,\n text: j.configItemName\n }\n })\n }\n }\n })\n advancedConfigList[index].id = val\n advancedConfigList[index].configId = val\n advancedConfigList[index].configName = item.text\n // advancedConfigList[index].configValueId = 0\n // advancedConfigList[index].configValue = ''\n // advancedConfigList[index].configType = item.configType\n this.setState({advancedConfigList: advancedConfigList})\n }\n\n if (type == 'configValueId') {\n let advancedConfigList = [...this.state.advancedConfigList]\n advancedConfigList[index].configValueId = val\n // advancedConfigList[index].configValue = item.configItemValue\n this.setState({advancedConfigList: advancedConfigList})\n }\n }\n\n setParamsData = (type, value) => {\n let {params} = this.state\n let obj = {}\n obj[type] = value\n let paramsClone = Object.assign({}, params, obj)\n this.setState({\n params: paramsClone\n })\n }\n\n // 更新或写入IP配置信息\n submitClick = () => {\n let {params, staffsList, advancedConfigList} = this.state\n let rtx = this.props.userInfo.name\n if (!params.ip) {\n this.setState({\n sholdCheckValidate: true\n })\n return\n }\n params.principal = staffsList.map(i => {\n return i.id\n }).join(',')\n params.enable = params.enable == 1 ? true : false\n advancedConfigList.map(i => {\n if (!_.isEmpty(i.filebeatConfigItemValueDTOS)) {\n i.filebeatConfigItemValueVOS = i.filebeatConfigItemValueDTOS.filter(j => {\n return j.id === i.configValueId\n })\n delete i.filebeatConfigItemValueDTOS\n }\n return i\n })\n params.filebeatAdvancedConfigVOS = advancedConfigList\n fetch(baseURL + '/sdw/filebeat/filebeat/upsertFilebeatConfig',\n {\n method: 'POST',\n mode: 'cors',\n headers: {'Content-Type': 'application/json', 'STAFFNAMES': rtx},\n body: JSON.stringify(params)\n }).then(res => {\n res.json().then((data) => {\n if (data && data.code === 100) {\n this.props.iniList()\n this.props.changeVisible(false)\n } else {\n SdwMessage.error(data.message)\n // this.props.changeVisible(false)\n }\n })\n }).catch(error => {\n SdwMessage.error('接口异常:' + error)\n })\n }\n\n render() {\n let {\n isEdit,\n machineVisible,\n changeVisible,\n } = this.props\n\n let {\n params,\n staffsList,\n sholdCheckValidate,\n allMembers,\n advancedConfigList,\n optionsList\n } = this.state\n\n return (\n changeVisible(false)}\n onCancelClick={() => changeVisible(false)}\n onSureClick={this.submitClick}\n >\n \n
\n
\n 日志服务器IP\n this.setParamsData(\"ip\", val)}\n sholdCheckValidate={sholdCheckValidate}\n validateFun={value => !!value ? true : '日志服务器IP不能为空'}\n />\n
\n
\n 目标服务器IP\n \n
\n
\n 高级配置\n
\n {\n advancedConfigList instanceof Array && advancedConfigList.map((item, k) => {\n return (\n
\n {\n return {\n id: i.id,\n text: i.configName,\n // configType: i.configType\n }\n })}\n value={item.configId}\n onChange={(val, item) => this.updateVirtualGroup(val, 'configId', k, item)}\n />\n \n this.updateVirtualGroup(val, 'configValueId', k, item)}\n />\n this.addVirtualGroup(k)} className='el-icon-plus'\n style={{marginLeft: 8}}>\n {k > 0 && ( this.removeVirtualGroup(k)}\n className='el-icon-minus'>)}\n
\n )\n })\n }\n
\n
\n
\n 服务器负责人\n this.setState({staffsList: val})}\n />\n
\n
\n 所属集群\n this.setParamsData(\"cluster\", val)}\n />\n
\n
\n 备注\n this.setParamsData(\"extra\", val)}\n />\n
\n
\n 是否启用\n this.setParamsData('enable', val)}\n />\n
\n
\n
\n \n )\n }\n}\n\nconst mapState = state => ({\n userInfo: state.user.userInfo\n})\nexport default withRouter(connect(mapState)(MachineWin))\n","import React from 'react'\nimport SdwInput from '@common/Input'\nimport SdwSelect from '@common/Select'\nimport SdwButton from '@common/Button'\nimport SdwMessage from '@common/Message'\nimport SdwTable from '@common/Table'\nimport SdwPagination from '@common/Pagenation'\nimport BreadCrumbsAndTablde from '@components/BreadCrumbsAndTablde'\nimport MachineWin from './StepWin/MachineWin'\nimport {connect} from 'react-redux'\nimport {withRouter} from 'react-router-dom'\nimport '../index.css'\nimport {requestOptionsLOG} from '@config/config'\nconst baseURL = requestOptionsLOG.basename\n\nclass IpAccessConfiguration extends React.PureComponent {\n\n state = {\n machineVisible: false, // 新增或编辑机器配置弹窗\n search:{\n page: 1,\n size: 10,\n ip: '',\n createRtx: '',\n enable: '',\n status: '',\n },\n tableData: {\n configList: [],\n total: 0,\n },\n current_page: 1,\n currentItem: {},\n isEdit: false,\n }\n\n componentDidMount() {\n this.queryFilebeatConfig()\n }\n\n // 查询IP配置列表和IP配置详情\n queryFilebeatConfig = () => {\n let {search} = this.state\n let params = {}\n let rtx = this.props.userInfo.name\n for(let key in search) {\n if (search[key]) {\n params[key] = search[key]\n }\n }\n fetch(baseURL + '/sdw/filebeat/filebeat/queryFilebeatConfig',\n {\n method: \"POST\",\n mode: \"cors\",\n headers: {'Content-Type': 'application/json', 'STAFFNAMES': rtx},\n body: JSON.stringify(params)\n }).then(res => {\n res.json().then(data => {\n if (data &&data.code === 100) {\n let items = data.data || {}\n this.setState({\n tableData: items\n })\n }\n })\n }).catch(error => {\n SdwMessage.error('接口异常:' + error)\n })\n }\n\n\n getColumns = () => {\n let self = this\n return [\n {\n title: '日志服务器IP',\n width: 90,\n dataIndex: \"ip\"\n },\n {\n title: '是否有效',\n width: 106,\n render: data => (\n \n {Boolean(data.enable) ? '有效' : '无效'}\n \n )\n },\n {\n title: 'filebeat安装状态',\n width: 106,\n render: data => (\n \n {Boolean(data.installStatus == 202) ? '已安装' : '未安装'}\n \n )\n },\n {\n title: 'filebeat运行状态',\n width: 92,\n render: data => (\n \n {Boolean(data.status == 200) ? '正常' : '异常'}\n \n )\n },\n {\n title: 'filebeat版本号',\n width: 106,\n dataIndex: \"version\"\n },\n {\n title: '服务器负责人',\n width: 96,\n dataIndex: \"principal\"\n },\n {\n title: '修改人',\n width: 96,\n dataIndex: \"updateRtx\"\n },\n {\n title: '修改时间',\n width: 130,\n dataIndex: \"updateTime\"\n },\n {\n title: '操作',\n width: 38,\n render: data => (\n <>\n self.machineAddOrEdit(true, data)}\n />\n \n )\n }\n ]\n }\n\n // 新增或编辑机器配置弹窗\n machineAddOrEdit = (isEdit, record = {}) => {\n this.setState({\n isEdit: isEdit,\n machineVisible: true,\n currentItem: record,\n })\n }\n\n setSearch = (type, val) => {\n let {search} = this.state\n let obj = {}\n obj[type] = val\n if (type != 'page') {\n obj['page'] = 1\n }\n let searchClone = Object.assign({}, search, obj)\n this.setState({\n search: searchClone\n }, ()=>{\n this.queryFilebeatConfig()\n })\n }\n\n render() {\n let {\n machineVisible,\n tableData,\n search,\n isEdit,\n currentItem,\n } = this.state\n\n console.log(\"=====tableData\", tableData)\n console.log(\"-------search\", search)\n\n return (\n <>\n \n \n this.setSearch(\"ip\", val)}\n />\n this.setSearch(\"enable\", val)}\n />\n this.setSearch(\"status\", val)}\n />\n this.setSearch(\"createRtx\", val)}\n />\n \n \n this.machineAddOrEdit(false)}\n />\n \n \n \n this.setSearch(\"page\", val)}\n pageCountChange={val => this.setSearch(\"size\", val)}\n />\n \n \n\n {/* 新增或编辑机器配置弹窗 */}\n {machineVisible &&\n {\n this.setState({ machineVisible: bool })\n }}\n iniList = {this.queryFilebeatConfig}\n />\n }\n \n )\n }\n}\n\nconst mapState = state => ({\n userInfo: state.user.userInfo\n})\nexport default withRouter(connect(mapState)(IpAccessConfiguration))\n","import React, {PureComponent} from 'react'\nimport SdwDialog from '@common/Dialog'\nimport SdwMessage from '@common/Message'\nimport {Table} from 'antd'\nimport {connect} from 'react-redux'\nimport {withRouter} from 'react-router-dom'\nimport '../../index.css'\nimport {requestOptionsLOG} from '@config/config'\n\nconst baseURL = requestOptionsLOG.basename\n\nclass DetailedWin extends PureComponent {\n\n state = {\n tableData: {}\n }\n\n componentDidMount() {\n this.queryReconciliationDetail()\n }\n\n // 查询对账详情\n queryReconciliationDetail = () => {\n let rtx = this.props.userInfo.name\n let {currentItem} = this.props\n let str = ''\n if (!!currentItem.id) {\n str = '?id=' + currentItem.id\n }\n fetch(baseURL + '/sdw/filebeat/reconciliation/queryReconciliationDetail' + str,\n {\n method: 'GET',\n mode: 'cors',\n headers: {'Content-Type': 'application/json', 'STAFFNAMES': rtx},\n }).then(res => {\n res.json().then((data) => {\n let record = data || {}\n this.setState({\n tableData: record\n })\n })\n }).catch(error => {\n SdwMessage.error('接口异常:' + error)\n })\n }\n\n getColumns = () => {\n return [\n {\n title: 'CMD',\n dataIndex: 'cmd',\n checkChildren: true,\n width: 130,\n },\n {\n title: '对账名',\n dataIndex: 'reconcileName',\n width: 100\n },\n {\n title: '分发标识',\n dataIndex: 'deliveryCmd',\n width: 100\n },\n {\n title: '分发方式',\n render: data => {\n let arr = {\n 'STORE': '入库',\n 'INDIVIDUAL': '自定义'\n }\n let msg = arr[data.deliveryType]\n return {msg ? msg : '-'}\n },\n width: 100\n },\n {\n title: '采集ip',\n dataIndex: 'logIp',\n width: 158\n },\n {\n title: '处理ip',\n dataIndex: 'processIp',\n width: 158\n },\n {\n title: '消费ip',\n dataIndex: 'consumeIp',\n width: 158\n },\n {\n title: '时间周期',\n dataIndex: 'timeCycle',\n width: 158\n },\n {\n title: '采集接收成功数量',\n dataIndex: 'accessReceiveSuccessCount',\n width: 100\n },\n {\n title: '采集接收失败数量',\n dataIndex: 'accessReceiveFailedCount',\n render: text => text > 0 ? {text} : {text},\n width: 100\n },\n {\n title: '采集处理成功数量',\n dataIndex: 'accessProcessSuccessCount',\n width: 100\n },\n {\n title: '采集处理失败数量',\n dataIndex: 'accessProcessFailedCount',\n render: text => text > 0 ? {text} : {text},\n width: 100\n },\n {\n title: '采集发送成功数量',\n dataIndex: 'accessSendSuccessCount',\n width: 100\n },\n {\n title: '采集发送失败数量',\n dataIndex: 'accessSendFailedCount',\n render: text => text > 0 ? {text} : {text},\n width: 100\n },\n {\n title: '处理接收成功数量',\n dataIndex: 'processReceiveSuccessCount',\n width: 100\n },\n {\n title: '处理接收失败数量',\n dataIndex: 'processReceiveFailedCount',\n render: text => text > 0 ? {text} : {text},\n width: 100\n },\n {\n title: '处理处理成功数量',\n dataIndex: 'processProcessSuccessCount',\n width: 100\n },\n {\n title: '处理处理失败数量',\n dataIndex: 'processProcessFailedCount',\n render: text => text > 0 ? {text} : {text},\n width: 100\n },\n {\n title: '处理发送成功数量',\n dataIndex: 'processSendSuccessCount',\n width: 100\n },\n {\n title: '处理发送失败数量',\n dataIndex: 'processSendFailedCount',\n render: text => text > 0 ? {text} : {text},\n width: 100\n },\n {\n title: '消费接收成功数量',\n dataIndex: 'consumeReceiveSuccessCount',\n width: 100\n },\n {\n title: '消费接收失败数量',\n dataIndex: 'consumeReceiveFailedCount',\n render: text => text > 0 ? {text} : {text},\n width: 100\n },\n {\n title: '消费处理成功数量',\n dataIndex: 'consumeProcessSuccessCount',\n width: 100\n },\n {\n title: '消费处理失败数量',\n dataIndex: 'consumeProcessFailedCount',\n render: text => text > 0 ? {text} : {text},\n width: 100\n },\n {\n title: '消费发送成功数量',\n dataIndex: 'consumeSendSuccessCount',\n width: 100\n },\n {\n title: '消费发送失败数量',\n dataIndex: 'consumeSendFailedCount',\n render: text => text > 0 ? {text} : {text},\n width: 100\n },\n {\n title: '入库量',\n dataIndex: 'storeCount',\n width: 80\n }\n ]\n }\n\n closeDialog = () => {\n this.props.closeDialog()\n }\n\n render() {\n\n let {\n tableData\n } = this.state\n\n let {\n detailedVisible\n } = this.props\n\n return (\n
\n this.closeDialog()}\n cusWrapClass={'detailed-win_dialog'}\n >\n
\n \n
\n \n
\n )\n }\n}\n\nconst mapState = state => ({\n userInfo: state.user.userInfo\n})\nexport default withRouter(connect(mapState)(DetailedWin))","import React, {PureComponent} from 'react'\nimport SdwInput from '@common/Input'\nimport SdwSwitch from '@common/Switch'\nimport SdwDialog from '@common/Dialog'\nimport SdwMessage from '@common/Message'\nimport {connect} from 'react-redux'\nimport {withRouter} from 'react-router-dom'\nimport {requestOptionsLOG} from '@config/config'\nconst baseURL = requestOptionsLOG.basename\n\nclass SupplementWin extends PureComponent {\n\n state = {\n params: {\n id: '',\n exceptionMessage: '',\n relevanceTimeCycle: false,\n rtx: ''\n },\n sholdCheckValidate: false\n }\n\n // 异常补录\n submitClick = () => {\n let rtx = this.props.userInfo.name\n let {params} = this.state\n let {currentItem} = this.props\n params.id = currentItem.id\n params.rtx = rtx\n if (!params.exceptionMessage) {\n this.setState({\n sholdCheckValidate: true\n })\n return\n }\n fetch(baseURL + '/sdw/filebeat/reconciliation/exceptionAdditionalRecord',\n {\n method: 'POST',\n mode: 'cors',\n headers: {'Content-Type': 'application/json', 'STAFFNAMES': rtx},\n body: JSON.stringify(params)\n }).then(res => {\n res.json().then(data => {\n if (data && data.code === 100) {\n SdwMessage.success(data.message)\n this.closeDialog()\n this.props.queryReconciliations()\n }\n })\n }).catch(error => {\n SdwMessage.error('接口异常:' + error)\n })\n }\n\n setParamsData = (type, value) => {\n let {params} = this.state\n let obj = {}\n obj[type] = value\n let paramsClone = Object.assign({}, params, obj)\n this.setState({\n params: paramsClone\n })\n }\n\n closeDialog = () => {\n this.props.closeDialog()\n }\n\n render() {\n\n let {\n params,\n sholdCheckValidate\n } = this.state\n\n let {\n supplementVisible\n } = this.props\n\n return (\n
\n this.closeDialog()}\n onSureClick={this.submitClick}\n >\n
\n
\n
\n 修复信息\n this.setParamsData('exceptionMessage', val)}\n sholdCheckValidate={sholdCheckValidate}\n validateFun={value => !!value ? true : '修复信息不能为空'}\n />\n
\n
\n 关联本期异常\n this.setParamsData('relevanceTimeCycle', val)}\n />\n
\n
\n
\n \n
\n )\n }\n}\n\nconst mapState = state => ({\n userInfo: state.user.userInfo\n})\nexport default withRouter(connect(mapState)(SupplementWin))","import React from 'react'\nimport _ from 'lodash'\nimport SdwInput from '@common/Input'\nimport SdwSelect from '@common/Select'\nimport SdwButton from '@common/Button'\nimport SdwMessage from '@common/Message'\nimport SdwTable from '@common/Table'\nimport SdwDialog from '@common/Dialog'\nimport SdwPagination from '@common/Pagenation'\nimport SdwDateTimePicker from '@common/DateTimePicker'\nimport BreadCrumbsAndTablde from '@components/BreadCrumbsAndTablde'\nimport DetailedWin from './StepWin/DetailedWin'\nimport SupplementWin from './StepWin/SupplementWin'\nimport {connect} from 'react-redux'\nimport {withRouter} from 'react-router-dom'\nimport {requestOptionsLOG} from '@config/config'\n\nconst baseURL = requestOptionsLOG.basename\n\nclass QualityMonitoring extends React.PureComponent {\n\n state = {\n tableData: {},\n datePicker: [],\n search: {\n page: 1,\n size: 10,\n cmd: '', // 解析标识\n timeGranularity: '', // 时间粒度\n timeCycle: '', // 时间周期\n reconciliationStatus: '', // 对账状态\n additionalRecordingStatus: '', // 补录状态\n start: '', // 查询开始时间\n end: '' // 查询结束时间\n },\n permissions: false, // 异常补录权限\n currentItem: {},\n detailedVisible: false, //对账明细弹窗\n supplementVisible: false, // 异常补录弹窗\n infoVisible: false, // 补录信息弹窗\n reasonVisible: false, // 异常原因弹窗\n }\n\n componentDidMount() {\n this.initDatePicker()\n this.queryReconciliationAuthority()\n }\n\n // 初始化时间为当天零点到第二天零点\n initDatePicker = () => {\n let startDate = new Date(new Date().setHours(0, 0, 0))\n let endDate = new Date(new Date().setHours(24, 0, 0))\n let arr = []\n arr.push(startDate, endDate)\n let date = this.formatDate(arr)\n this.setState({\n datePicker: date,\n search: {\n start: date[0],\n end: date[1],\n timeGranularity: 'HOUR'\n }\n }, () => this.queryReconciliations())\n }\n\n // 格式化时间为yyyy-MM-dd HH:mm:ss\n formatDate = (date) => {\n if (_.isArray(date)) {\n return date.map(item => {\n let year = item.getFullYear()\n let month = item.getMonth() + 1\n month = month < 10 ? ('0' + month) : month\n let date = item.getDate()\n date = date < 10 ? ('0' + date) : date\n let time = '00:00:00'\n return `${year}-${month}-${date} ${time}`\n })\n }\n }\n\n // 查询对账详情\n queryReconciliations = () => {\n let rtx = this.props.userInfo.name\n let {search, datePicker} = this.state\n let params = {}\n for (let key in search) {\n if (search[key]) {\n params[key] = search[key]\n }\n }\n params.start = datePicker[0]\n params.end = datePicker[1]\n fetch(baseURL + '/sdw/filebeat/reconciliation/queryReconciliations',\n {\n method: 'POST',\n mode: 'cors',\n headers: {'Content-Type': 'application/json', 'STAFFNAMES': rtx},\n body: JSON.stringify(params)\n }).then(res => {\n res.json().then((data) => {\n let record = data.data || []\n this.setState({\n tableData: record\n })\n })\n }).catch(error => {\n SdwMessage.error('接口异常:' + error)\n })\n }\n\n // 查询是否有补录权限\n queryReconciliationAuthority = () => {\n let rtx = this.props.userInfo.name\n fetch(baseURL + '/sdw/filebeat/reconciliation/queryReconciliationAuthority',\n {\n method: 'GET',\n mode: 'cors',\n headers: {'Content-Type': 'application/json', 'STAFFNAMES': rtx},\n }).then(res => {\n res.json().then(data => {\n if (data && data.code === 100) {\n let record = data.data || false\n this.setState({\n permissions: record\n })\n }\n })\n }).catch(error => {\n SdwMessage.error('接口异常:' + error)\n })\n }\n\n getColumns = () => {\n let self = this\n let {permissions} = this.state\n return [\n {\n title: 'CMD',\n width: 42,\n dataIndex: 'cmd'\n },\n {\n title: '分发方式',\n width: 66,\n render: data => {\n let arr = {\n 'STORE': '入库',\n 'INDIVIDUAL': '自定义'\n }\n let msg = arr[data.deliveryType]\n return {msg ? msg : '-'}\n }\n },\n {\n title: '时间周期',\n width: 158,\n dataIndex: 'timeCycle'\n },\n {\n title: '对账结果',\n width: 82,\n render: data => (\n \n {Boolean(data.reconcileStatus) ? '正确' : '异常'}\n \n )\n },\n {\n title: '采集对账',\n width: 82,\n render: data => (\n \n {Boolean(data.accessReconcileStatus) ? '正确' : '异常'}\n \n )\n },\n {\n title: '处理对账',\n width: 82,\n render: data => (\n \n {Boolean(data.processReconcileStatus) ? '正确' : '异常'}\n \n )\n },\n {\n title: '消费对账',\n width: 82,\n render: data => (\n \n {Boolean(data.consumeReconcileStatus) ? '正确' : '异常'}\n \n )\n },\n {\n title: '负责人',\n width: 96,\n dataIndex: 'principal'\n },\n {\n title: '补录状态',\n width: 70,\n render: data => (\n \n {Boolean(data.additionalRecordingStatus) ? '已补录' : '未补录'}\n \n )\n },\n {\n title: '操作',\n width: 180,\n render: data => (\n <>\n self.reconciliationDetailed(data)}\n />\n {!data.additionalRecordingStatus ?\n self.abnormalSupplement(data)}\n /> :\n self.supplementInfo(data)}\n />\n }\n {self.abnormalReason(data)}}\n />\n \n )\n },\n ]\n }\n\n // 对账明细\n reconciliationDetailed = (record = {}) => {\n this.setState({\n detailedVisible: true,\n currentItem: record\n })\n }\n\n // 异常补录\n abnormalSupplement = (record = {}) => {\n this.setState({\n supplementVisible: true,\n currentItem: record\n })\n }\n\n // 补录信息\n supplementInfo = (record = {}) => {\n this.setState({\n infoVisible: true,\n currentItem: record\n })\n }\n\n // 异常原因\n abnormalReason = (record = {}) => {\n this.setState({\n reasonVisible: true,\n currentItem: record\n })\n }\n\n setSearch = (type, val) => {\n let {search} = this.state\n let obj = {}\n obj[type] = val\n if (type != 'page') {\n obj['page'] = 1\n }\n let searchClone = Object.assign({}, search, obj)\n this.setState({\n search: searchClone\n }, () => {\n this.queryReconciliations()\n })\n }\n\n render() {\n\n let {\n tableData,\n datePicker,\n currentItem,\n search,\n infoVisible,\n reasonVisible,\n detailedVisible,\n supplementVisible\n } = this.state\n\n return (\n <>\n \n \n {\n this.setState({\n datePicker: val\n }, () => {\n this.queryReconciliations()\n })\n }}\n />\n this.setSearch('cmd', val)}\n />\n this.setSearch('timeGranularity', val)}\n />\n this.setSearch('timeCycle', val)}\n />\n this.setSearch('reconciliationStatus', val)}\n />\n this.setSearch('additionalRecordingStatus', val)}\n />\n \n\n \n \n this.setSearch('page', val)}\n pageCountChange={val => this.setSearch('size', val)}\n />\n \n \n\n {/* 对账明细弹窗 */}\n {detailedVisible &&\n this.setState({detailedVisible: false})}\n />\n }\n\n {/* 异常补录弹窗 */}\n {supplementVisible &&\n this.setState({supplementVisible: false})}\n />\n }\n\n {/* 补录信息弹窗 */}\n {infoVisible &&\n this.setState({infoVisible: false})}\n >\n
\n {currentItem.exceptionRecording}\n
\n \n }\n\n {/* 异常原因弹窗 */}\n {reasonVisible &&\n this.setState({reasonVisible: false})}\n >\n
\n {currentItem.exceptionResult || '暂无异常'}\n
\n \n }\n \n )\n }\n}\n\nconst mapState = state => ({\n userInfo: state.user.userInfo\n})\nexport default withRouter(connect(mapState)(QualityMonitoring))\n","import React from 'react'\nimport {connect} from 'react-redux'\nimport {withRouter} from 'react-router-dom'\nimport SdwBreadCrumbs from '@common/BreadCrumbs'\nimport SdwTabs from '@common/Tabs'\nimport CollectionServiceManagement from './CollectionServiceManagement'\nimport ResolveDistributionConfiguration from './ResolveDistributionConfiguration'\nimport LogIdConfiguration from './LogIdConfiguration'\nimport IpAccessConfiguration from './IpAccessConfiguration'\nimport QualityMonitoring from './QualityMonitoring'\n// import CodeHotUpdate from './CodeHotUpdate'\nimport {hasPriv} from '@components/FrontendAuth/AuthMap'\n\n\nconst menu = [\n {\n title: '日志标识配置',\n path: '/logIdConfiguration',\n component: LogIdConfiguration\n }, {\n title: '解析分发配置',\n path: '/resolveDistributionConfiguration',\n component: ResolveDistributionConfiguration\n }, {\n title: '采集服务管理',\n path: '/collectionServiceManagement',\n component: CollectionServiceManagement\n }, {\n title: '采集IP管理',\n path: '/ipAccessConfiguration',\n component: IpAccessConfiguration\n },\n {\n title: '质量监控-对账',\n path: '/qualityMonitoring',\n component: QualityMonitoring\n },\n // {\n // title: '代码热更新',\n // path: '/codeHotUpdate',\n // component: CodeHotUpdate\n // }\n]\n\nclass LogAccess extends React.PureComponent {\n\n render() {\n\n const hasPrivMenu = menu.filter(i => hasPriv(i.priv))\n\n return (\n <>\n \n\n
\n \n
\n \n )\n }\n}\n\nconst mapState = state => ({\n tabsInfo: state.page.tabsInfo\n})\n\nexport default withRouter(connect(mapState)(LogAccess))\n","import React from 'react'\nimport _ from 'lodash'\nimport SdwInput from '@common/Input'\nimport SdwSelect from '@common/Select'\nimport SdwButton from '@common/Button'\nimport SdwRadio from '@common/Radiobox'\nimport SdwSwitch from '@common/Switch'\nimport SdwMessage from '@common/Message'\nimport SdwTable from '@common/Table'\nimport BreadCrumbs from '@common/BreadCrumbs'\nimport StatusWin from '@pages/Knowledge/LogAccess/CollectionServiceManagement/StepWin/StatusWin'\nimport './index.css'\nimport {connect} from 'react-redux'\nimport {withRouter} from 'react-router-dom'\nimport {requestOptionsLOG} from '@config/config'\n\nconst baseURL = requestOptionsLOG.basename\n\nclass LogAccessDetail extends React.PureComponent {\n\n state = {\n tagList: [],\n sholdCheckValidate: false,\n params: {\n id: '',\n cmd: 0, // 解析标识\n parseType: 'SEPARATOR', // 解析类型\n parseValue: '', // 解析值\n startParseType: '', // 开始解析类型\n startParseValue: '', // 开始解析值\n endParseType: '', // 结束解析类型\n endParseValue: '', // 结束解析值\n message: '', // 日志字段示例消息\n rtx: '', // 操作人\n fieldConfigVOS: [], // 字段配置列表\n },\n example: '',\n tableDataList: [],\n isEdit: false,\n enableState: false, // 高级配置开关\n showResult: false, // 解析结果\n isPass: false, // 解析是否通过\n statusVisible: false, // 链路检查弹窗\n socketList: {\n checkerList: [],\n sessionId: 0\n },\n deliveryInnerConfigDTOS: [] // 分发配置信息\n }\n\n componentDidMount() {\n this.initData()\n }\n\n initData = () => {\n let query = this.props.location.state || {}\n if (!!query.id) {\n this.queryParseConfig(query.id)\n this.queryInputFileConfigList(query.id)\n this.setState({isEdit: query.isEdit})\n } else {\n this.queryInputFileConfigList()\n }\n }\n\n // 查询解析配置列表\n queryParseConfig = (id) => {\n let rtx = this.props.userInfo.name\n fetch(baseURL + '/sdw/filebeat/parseConfig/queryParseConfig/' + id,\n {\n method: \"GET\",\n mode: \"cors\",\n headers: {'Content-Type': 'application/json', 'STAFFNAMES': rtx},\n }).then(res => {\n res.json().then((data) => {\n if (data && data.code == 100) {\n let record = data.data\n // console.log(\"=======record\", record)\n let example = record.message\n let fieldConfigDTOS = record.fieldConfigDTOS\n // console.log(\"=======example\", example)\n delete record[\"message\"]\n let tableDataList = this.getTableList(fieldConfigDTOS, example, record)\n // console.log(\"=======tableDataList\", tableDataList)\n delete record.fieldConfigDTOS\n record.fieldConfigVOS = []\n record.rtx = rtx\n let obj = {\n params: record,\n example: example,\n tableDataList: tableDataList,\n deliveryInnerConfigDTOS: record.deliveryInnerConfigDTOS,\n }\n // console.log(\"=========obj\", obj)\n this.setState({\n ...obj\n })\n }\n })\n }).catch(error => {\n SdwMessage.error('接口异常:' + error)\n })\n }\n\n // 组装表列表数据\n getTableList = (fieldConfigDTOS, example, params) => {\n let list = []\n if (!example) return\n let parse_type = params.parseType\n let separator = params.parseValue\n switch (parse_type) {\n case \"SEPARATOR\":\n // if (!separator || String(example).indexOf(separator) === -1) {\n // list = [{\n // message: example,\n // index: 1,\n // fieldName: '',\n // fieldType: '',\n // parseKeys: '',\n // extra: ''\n // }]\n // } else {\n let arr = String(example).split(separator)\n if (_.isArray(arr)) list = arr.map((i, j) => {\n if (!fieldConfigDTOS[j]) {\n fieldConfigDTOS[j] = {fieldName: '', fieldType: 'string', parseKeys: '', extra: ''}\n }\n let fieldConfigDTOSItem = fieldConfigDTOS[j]\n return {\n message: i,\n index: j + 1,\n fieldName: fieldConfigDTOSItem.fieldName,\n fieldType: fieldConfigDTOSItem.fieldType,\n parseKeys: fieldConfigDTOSItem.parseKeys,\n extra: fieldConfigDTOSItem.extra\n }\n })\n // }\n break;\n\n case \"KEY_VALUE\":\n let curExample = example\n if (String(curExample).indexOf('=') === -1) {\n list = [{\n message: '',\n index: 1,\n fieldName: curExample,\n parseKeys: '',\n fieldType: '',\n extra: ''\n }]\n } else {\n let arr = String(curExample).split('&')\n if (_.isArray(arr)) {\n arr.forEach((item, j) => {\n const curlist = item.split('=')\n if (!fieldConfigDTOS[j]) {\n fieldConfigDTOS[j] = {\n fieldName: '',\n fieldType: 'string',\n parseKeys: '',\n extra: ''\n }\n }\n let fieldConfigDTOSItem = fieldConfigDTOS[j]\n list.push({\n message: curlist[1] || '',\n index: j + 1,\n fieldName: curlist[0],\n fieldType: fieldConfigDTOSItem.fieldType,\n parseKeys: fieldConfigDTOSItem.parseKeys,\n extra: fieldConfigDTOSItem.extra\n })\n })\n }\n }\n break;\n\n default:\n break;\n }\n // console.log(\"tableDataList=====change\", list)\n return list\n }\n\n updateTableData = (key, val, index) => {\n let {tableDataList} = this.state\n let cloneTableDataList = _.cloneDeep(tableDataList)\n cloneTableDataList[index][key] = val\n this.setState({\n tableDataList: cloneTableDataList\n })\n }\n\n addVirtualProperty = (index) => {\n let {tableDataList} = this.state\n let item = {message: '', index: index + 2, fieldName: '', fieldType: 'string', parseKeys: '', extra: ''}\n let newTableDataList = []\n for (let i in tableDataList) {\n if (i > index) {\n tableDataList[i].index++\n }\n newTableDataList.push(tableDataList[i])\n if (i == index) {\n newTableDataList.push(item)\n }\n }\n this.setState({\n tableDataList: newTableDataList\n })\n }\n\n removeVirtualProperty = (index) => {\n let tableDataList = [...this.state.tableDataList]\n tableDataList.splice(index, 1);\n this.setState({tableDataList: tableDataList})\n }\n\n getColumns = () => {\n return [\n {\n title: '序号',\n dataIndex: 'index',\n width: 50\n }, {\n title: '日志字段示例',\n width: 200,\n render: (data, index) => (\n this.updateTableData('message', val, index)}\n />\n )\n },\n {\n title: '字段英文名',\n width: 150,\n render: (data, index) => (\n getDisabled(i, data))}\n value={data.fieldName}\n onChange={val => this.updateTableData('fieldName', val, index)}\n />\n )\n },\n {\n title: '字段数据类型',\n width: 150,\n render: (data, index) => (\n getDisabled(i, data))}\n value={data.fieldType}\n onChange={val => this.updateTableData('fieldType', val, index)}\n data={[\n {\n id: 'string',\n text: 'string'\n }, {\n id: 'date',\n text: 'date'\n }, {\n id: 'int',\n text: 'int'\n }, {\n id: 'json',\n text: 'json'\n }, {\n id: 'timeStamp',\n text: '时间戳'\n }\n ]}\n />\n )\n },\n {\n title: '解析字段',\n width: 200,\n render: (data, index) => (\n data.fieldType == 'json' ?\n this.updateTableData('parseKeys', val, index)}\n /> : '-'\n )\n },\n {\n title: '其他规则',\n width: 240,\n render: (data, index) => {\n return <>\n getDisabled(i, data))}\n value={data.extra}\n onChange={val => this.updateTableData('extra', val, index)}\n data={[\n {\n id: 'utf-8-decode',\n text: 'utf-8解码'\n }, {\n id: 'utf-8-encode',\n text: 'utf-8编码'\n }, {\n id: 'gbk-decode',\n text: 'gbk解码'\n }, {\n id: 'gbk-encode',\n text: 'gbk编码'\n }, {\n id: 'encrypt',\n text: '加密'\n }, {\n id: 'decrypt',\n text: '解密'\n }\n ]}\n />\n this.addVirtualProperty(index)} className=\"el-icon-plus\"\n style={{marginLeft: 12}}>\n this.removeVirtualProperty(index)} className=\"el-icon-minus\">\n \n }\n },\n ]\n }\n\n // 查询未使用的采集标识\n queryInputFileConfigList = (id = \"\") => {\n let str = \"\"\n if (!!id) {\n str = \"?parseId=\" + id + \"&type=parse\"\n }\n let rtx = this.props.userInfo.name\n fetch(baseURL + '/sdw/filebeat/inputTag/queryValidInputTag' + str,\n {\n method: \"GET\",\n mode: \"cors\",\n headers: {'Content-Type': 'application/json', 'STAFFNAMES': rtx}\n }).then(res => {\n res.json().then((data) => {\n let record = data.data\n // console.log('tableData-----------------------', record)\n if (Array.isArray(record)) {\n this.setState({\n tagList: record.map(i => {\n return {id: i.cmd, text: i.cmd + \"(\" + i.inputTag + \")\", item: i}\n })\n })\n }\n })\n }).catch(error => {\n SdwMessage.error('接口异常:' + error)\n })\n }\n\n // 保存并测试\n submitClick = () => {\n let {params, tableDataList, example} = this.state\n let rtx = this.props.userInfo.name\n let obj = {\n showResult: true,\n isPass: false,\n }\n let paramsClone = _.cloneDeep(params)\n delete paramsClone.deliveryInnerConfigDTOS\n if (!paramsClone.cmd || !paramsClone.parseType) {\n this.setState({\n sholdCheckValidate: true\n })\n return\n } else {\n tableDataList.forEach(i => {\n if (!!i.fieldName || !!i.fieldType || !!i.parseKeys) {\n // console.log(\"========fieldConfigVOS\", paramsClone.fieldConfigVOS)\n paramsClone.fieldConfigVOS.push({\n fieldName: i.fieldName,\n fieldType: i.fieldType,\n parseKeys: i.parseKeys,\n extra: i.extra\n })\n }\n })\n if ((paramsClone.parseType == \"SEPARATOR\" && !paramsClone.parseValue)) {\n this.setState({\n sholdCheckValidate: true\n })\n return\n }\n if (paramsClone.fieldConfigVOS.length == 0) {\n SdwMessage.error(\"请填写字段配置中的必填内容\")\n return\n }\n }\n paramsClone.message = example\n fetch(baseURL + '/sdw/filebeat/parseConfig/upsertParseConfig',\n {\n method: \"POST\",\n mode: \"cors\",\n headers: {'Content-Type': 'application/json', 'STAFFNAMES': rtx},\n body: JSON.stringify(paramsClone)\n }).then(res => {\n res.json().then((data) => {\n if (data.code === 100) {\n obj.isPass = true\n } else if (data.code == 101) {\n obj.isPass = true\n obj['statusVisible'] = true\n obj['socketList'] = data.data\n } else {\n obj.isPass = false\n }\n this.setState({\n ...obj\n })\n })\n }).catch(error => {\n SdwMessage.error('接口异常:' + error)\n })\n }\n\n // 下一步\n jumpToTwo = () => {\n let {params, deliveryInnerConfigDTOS} = this.state\n this.props.history.push({\n pathname: '/admin/dataCollect/setupTwo',\n state: {\n cmd: params.cmd,\n deliveryInnerConfigDTOS: deliveryInnerConfigDTOS,\n }\n })\n }\n\n // 设置params的值\n setParamsData = (type, value) => {\n let {params} = this.state\n let obj = {}\n obj[type] = value\n let paramsClone = Object.assign({}, params, obj)\n if (paramsClone.parseType == \"KEY_VALUE\") {\n delete paramsClone.parseValue\n }\n this.setState({\n params: paramsClone\n })\n }\n\n // 解析示例成表列表\n getFieldConfig = () => {\n const {example, params} = this.state\n let exampleClone = _.cloneDeep(example)\n\n // 根据高级配置切割example\n let fixed = 'ADVANCED_PARSE_TYPE_STATIC_PARAM' // 固定参数\n let dynamic = 'ADVANCED_PARSE_TYPE_DYNAMIC_PARAM' // 动态参数\n if (params.startParseType == fixed || params.endParseType == fixed) {\n if (params.startParseValue && !params.endParseValue) {\n let index = exampleClone.indexOf(params.startParseValue)\n exampleClone = exampleClone.slice(index)\n } else if (!params.startParseValue && params.endParseValue) {\n let index1 = exampleClone.length - exampleClone.indexOf(params.endParseValue)\n exampleClone = exampleClone.slice(0, -index1)\n } else if (params.startParseValue && params.endParseValue) {\n if (params.startParseType == fixed && params.endParseType == dynamic) {\n let index = exampleClone.indexOf(params.startParseValue)\n let index1 = params.endParseValue\n exampleClone = exampleClone.slice(index, -index1)\n } else if (params.startParseType == dynamic && params.endParseType == fixed) {\n let index = params.startParseValue\n let index1 = exampleClone.length - exampleClone.indexOf(params.endParseValue)\n exampleClone = exampleClone.slice(index, -index1)\n } else {\n let index = exampleClone.indexOf(params.startParseValue)\n let index1 = exampleClone.length - exampleClone.indexOf(params.endParseValue)\n exampleClone = exampleClone.slice(index, -index1)\n }\n }\n } else if (params.startParseType == dynamic || params.endParseType == dynamic) {\n if (params.startParseValue && !params.endParseValue) {\n let index = params.startParseValue\n exampleClone = exampleClone.slice(index)\n } else if (!params.startParseValue && params.endParseValue) {\n let index1 = params.endParseValue\n exampleClone = exampleClone.slice(0, -index1)\n } else if (params.startParseValue && params.endParseValue) {\n let index = params.startParseValue\n let index1 = params.endParseValue\n exampleClone = exampleClone.slice(index, -index1)\n }\n }\n\n let list = []\n if (!exampleClone) return\n let parse_type = params.parseType\n let separator = params.parseValue\n switch (parse_type) {\n case \"SEPARATOR\":\n if (!separator || String(exampleClone).indexOf(separator) === -1) {\n list = [{\n message: exampleClone,\n index: 1,\n fieldName: '',\n fieldType: 'string',\n parseKeys: '',\n extra: ''\n }]\n } else {\n let arr = String(exampleClone).split(separator)\n if (_.isArray(arr)) list = arr.map((i, j) => ({\n message: i,\n index: j + 1,\n fieldName: '',\n fieldType: 'string',\n parseKeys: '',\n extra: ''\n }))\n }\n break;\n\n case \"KEY_VALUE\":\n let curExample = exampleClone\n if (String(curExample).indexOf('=') === -1) {\n list = [{\n message: '',\n index: 1,\n fieldName: curExample,\n fieldType: 'string',\n parseKeys: '',\n extra: ''\n }]\n } else {\n let arr = String(curExample).split('&')\n if (_.isArray(arr)) {\n arr.forEach((item, j) => {\n const curlist = item.split('=')\n list.push({\n message: curlist[1] || '',\n index: j + 1,\n fieldName: curlist[0],\n fieldType: 'string',\n parseKeys: '',\n extra: ''\n })\n })\n }\n }\n break;\n\n default:\n break;\n }\n\n // 只有分隔符的需要给前三项默认值\n if (parse_type === \"SEPARATOR\") {\n list = list.map((i, index) => {\n let res = _.cloneDeep(i)\n switch (index) {\n case 0:\n res.fieldType = 'string'\n res.fieldName = 'log_head'\n break;\n\n case 1:\n res.fieldType = 'string'\n res.fieldName = 'log_module'\n break;\n\n case 2:\n res.fieldType = 'date'\n res.fieldName = 'log_time'\n break;\n\n default:\n break;\n }\n return res\n })\n }\n // console.log(\"tableDataList=====change\", list)\n this.setState({\n tableDataList: list\n })\n }\n\n // 高级配置开关\n enableStateChange = (val) => {\n if (val) {\n this.setState({enableState: true})\n } else {\n this.setState({enableState: false})\n }\n }\n\n\n render() {\n\n let {\n example,\n tagList,\n params,\n tableDataList,\n sholdCheckValidate,\n showResult,\n isPass,\n statusVisible,\n socketList,\n enableState,\n isEdit\n } = this.state\n\n if (params.startParseType || params.endParseType) {\n enableState = true\n }\n\n return (\n <>\n \n\n
\n\n {/* 步骤条 */}\n
\n
    \n
  1. \n
    \n \n 内容存储配置\n
    \n
  2. \n
  3. \n
    \n \n 分发配置\n
    \n
  4. \n
\n
\n\n
\n
\n 解析配置\n 用于配置解析规则\n
\n
\n CMD\n this.setParamsData('cmd', val)}\n sholdCheckValidate={sholdCheckValidate}\n validateFun={value => !!value ? true : '请选择CMD'}\n />\n
\n
\n 解析标识\n this.setParamsData('parseType', val)}\n />\n
\n {\n params.parseType == \"SEPARATOR\" &&\n
\n 分隔符\n this.setParamsData('parseValue', val)}\n sholdCheckValidate={sholdCheckValidate && params.parseType == \"SEPARATOR\"}\n validateFun={value => !!value ? true : '分隔符不能为空'}\n />\n
\n }\n
\n 日志内容示例\n this.setState({example: val})}\n sholdCheckValidate={sholdCheckValidate}\n validateFun={value => !!value ? true : '请输入日志内容示例'}\n />\n
\n\n
\n 高级配置\n \n this.enableStateChange(val)}\n />\n \n
\n {enableState &&\n <>\n
\n 开始解析字符\n this.setParamsData('startParseType', val)}\n />\n this.setParamsData('startParseValue', val)}\n />\n
\n
\n 结束解析字符\n this.setParamsData('endParseType', val)}\n />\n this.setParamsData('endParseValue', val)}\n />\n
\n \n }\n\n
\n 字段内容定义\n 用于字段内容配置\n
\n
\n \n
\n
\n\n {!_.isEmpty(tableDataList) &&\n
\n \n
\n }\n\n
\n
\n 日志接入测试\n 用于测试解析规则\n
\n
\n \n {\n showResult &&\n {isPass ? '测试通过' : '解析失败'}\n }\n
\n\n
\n {\n this.props.history.push('/admin/dataCollect/logAccess')\n }}\n />\n \n this.jumpToTwo()}\n />\n
\n
\n
\n\n {statusVisible &&\n this.setState({statusVisible: false})}\n />\n }\n \n )\n }\n}\n\nconst mapState = state => ({\n userInfo: state.user.userInfo\n})\nexport default withRouter(connect(mapState)(LogAccessDetail))\n","import React from 'react'\nimport _ from 'lodash'\nimport SdwSelect from '@common/Select'\nimport SdwButton from '@common/Button'\nimport SdwDialog from '@common/Dialog'\nimport SdwMessage from '@common/Message'\nimport BreadCrumbs from '@common/BreadCrumbs'\nimport {getTableApiItems} from '@api/dataAccess'\nimport {connect} from 'react-redux'\nimport {withRouter} from 'react-router-dom'\nimport './index.css'\nimport {requestOptionsLOG} from '@config/config'\n\nconst baseURL = requestOptionsLOG.basename\n\nclass setupTwo extends React.PureComponent {\n\n state = {\n deliveryConfigList: [], // 分发配置\n topicList: [], // 日志topic\n targetTableList: [], // 落地数据表\n dialogDelVisible: false,\n delKey: '',\n parseId: '', // 根据cmd获取到的parseId\n }\n\n componentDidMount() {\n this.initData()\n this.queryInputFileConfigList()\n this.getTargetTableList()\n this.queryParseIdByCmd()\n }\n\n initData = () => {\n let query = this.props.location.state || {}\n if (!_.isEmpty(query.deliveryInnerConfigDTOS)) {\n this.setState({\n deliveryConfigList: query.deliveryInnerConfigDTOS\n })\n }\n }\n\n // 获取日志topic\n queryInputFileConfigList = () => {\n let rtx = this.props.userInfo.name\n fetch(baseURL + '/sdw/filebeat/parseConfig/queryConsumeTopic',\n {\n method: 'GET',\n mode: 'cors',\n headers: {'Content-Type': 'application/json', 'STAFFNAMES': rtx},\n }).then(res => {\n res.json().then((data) => {\n let record = data.data\n this.setState({\n topicList: record.map(i => {\n return {id: i.topic, text: i.topic}\n })\n })\n })\n }).catch(error => {\n SdwMessage.error('接口异常:' + error)\n })\n }\n\n // 获取落地数据表\n getTargetTableList = () => {\n // 目标表参数\n let paramData = {\n limit: 10000,\n search: JSON.stringify({\n data_set_type: {\n value: 'es',\n operator: '='\n },\n warehouse_level: {\n value: 'ODS',\n operator: '='\n },\n enable: {\n value: '1',\n operator: '='\n }\n })\n }\n // 目标表\n getTableApiItems(paramData).then(res => {\n const code = _.get(res, 'data.code')\n if (code === 0) {\n const items = _.get(res, 'data.data.items')\n let curArr = _.isArray(items) ? items : []\n curArr = curArr.map(i => {\n let curName = !!i.database_name ? `${i.database_name}.${i.table_name}` : `${i.table_name}`\n return {\n id: parseInt(i.id),\n text: `${curName}(${i.data_set_chinese})`,\n store_table_name_ch: i.data_set_chinese,\n store_table_name_en: `${i.database_name}.${i.table_name}`,\n topic: i.topic,\n business: i.business,\n data_set_type: i.data_set_type\n }\n })\n this.setState({\n targetTableList: curArr\n })\n } else {\n SdwMessage.error('获取目标表数据失败')\n }\n }).catch(error => {\n SdwMessage.error('获取目标表接口异常:' + error)\n })\n }\n\n // 根据cmd获取parseId\n queryParseIdByCmd = () => {\n let str = '?cmd=' + this.props.location.state.cmd\n let rtx = this.props.userInfo.name\n fetch(baseURL + '/sdw/filebeat/parseConfig/queryParseIdByCmd' + str,\n {\n method: 'GET',\n mode: 'cors',\n headers: {'Content-Type': 'application/json', 'STAFFNAMES': rtx},\n }).then(res => {\n res.json().then((data) => {\n let record = data.data\n this.setState({\n parseId: record\n })\n })\n }).catch(error => {\n SdwMessage.error('接口异常:' + error)\n })\n }\n\n // 上一步\n jumpToOne = () => {\n let {parseId} = this.state\n this.props.history.push({\n pathname: '/admin/dataCollect/logAccessDetail',\n state: {\n id: parseId\n }\n })\n }\n\n addVirtualGroup = () => {\n let item = {}\n let deliveryConfigList = [...this.state.deliveryConfigList]\n deliveryConfigList.push(item);\n this.setState({deliveryConfigList: deliveryConfigList})\n }\n\n removeVirtualGroup = (index) => {\n let deliveryConfigList = [...this.state.deliveryConfigList]\n deliveryConfigList.splice(index, 1);\n this.setState({deliveryConfigList: deliveryConfigList, dialogDelVisible: false})\n }\n\n delVirtualGroup = (val, key) => {\n this.setState({\n delKey: key,\n dialogDelVisible: val,\n })\n }\n\n updateVirtualGroup = (val, type, index, item) => {\n // 日志topic\n if (type == 'logTopic') {\n let deliveryConfigList = [...this.state.deliveryConfigList]\n deliveryConfigList[index].topic = val\n this.setState({deliveryConfigList: deliveryConfigList})\n }\n // 分发方式\n if (type == 'deliveryType') {\n let deliveryConfigList = [...this.state.deliveryConfigList]\n deliveryConfigList[index].deliveryType = val\n this.setState({deliveryConfigList: deliveryConfigList})\n }\n // 落地数据表\n if (type == 'storeTable') {\n let deliveryConfigList = [...this.state.deliveryConfigList]\n deliveryConfigList[index].storeTableId = val\n deliveryConfigList[index].storeTableName = item.store_table_name_en\n deliveryConfigList[index].storeTableNameZh = item.store_table_name_ch\n this.setState({deliveryConfigList: deliveryConfigList})\n }\n }\n\n // 完成按钮点击事件\n submitFinish = () => {\n let {deliveryConfigList} = this.state\n if (_.isEmpty(deliveryConfigList)) {\n this.props.history.push('/admin/dataCollect/logAccess')\n } else {\n this.submitClick('finish')\n }\n }\n\n // 批量更新或写入分发配置\n submitClick = (val) => {\n let {deliveryConfigList, parseId} = this.state\n let rtx = this.props.userInfo.name\n let params = deliveryConfigList.map(i => {\n i.parseId = parseId\n i.rtx = rtx\n i.enable = true\n return i\n })\n fetch(baseURL + '/sdw/filebeat/parseConfig/batchUpsertDeliveryConfig',\n {\n method: 'POST',\n mode: 'cors',\n headers: {'Content-Type': 'application/json', 'STAFFNAMES': rtx},\n body: JSON.stringify(params)\n }).then(res => {\n res.json().then((data) => {\n if (data && data.code === 100) {\n SdwMessage.success('分发配置成功')\n if (val == 'finish') {\n this.props.history.push('/admin/dataCollect/logAccess')\n } else if (val == 'collection') {\n this.props.updateTabsInfo(2)\n this.props.history.push('/admin/dataCollect/logAccess')\n }\n } else if (data.code === -605) {\n SdwMessage.error('分发方式未配置')\n } else {\n SdwMessage.error(data.message)\n }\n })\n }).catch(error => {\n SdwMessage.error('接口异常:' + error)\n })\n }\n\n render() {\n\n let {\n dialogDelVisible,\n delKey,\n deliveryConfigList,\n topicList,\n targetTableList\n } = this.state\n\n return (\n <>\n \n\n
\n\n {/* 步骤条 */}\n
\n
    \n
  1. \n
    \n \n 内容存储配置\n
    \n
  2. \n
  3. \n
    \n \n 分发配置\n
    \n
  4. \n
\n
\n\n\n
\n
\n 分发配置\n 用户消费分发规则\n
\n
\n
\n {\n deliveryConfigList.length == 0 && this.addVirtualGroup()}\n >添加分发配置\n }\n {\n deliveryConfigList instanceof Array && deliveryConfigList.map((item, k) => {\n return (\n
\n
\n 日志topic{k + 1}\n {\n this.updateVirtualGroup(val, 'logTopic', k)\n }}\n />\n
\n
\n 分发配置{k + 1}\n {\n this.updateVirtualGroup(val, 'deliveryType', k)\n }}\n />\n {\n this.updateVirtualGroup(val, 'storeTable', k, item)\n }}\n />\n
\n this.addVirtualGroup(k)} className='el-icon-plus'\n style={{marginLeft: 8}}>\n this.delVirtualGroup(true, k)}\n className='el-icon-minus'>\n
\n )\n })\n }\n
\n
\n\n
\n this.jumpToOne()}\n />\n \n this.submitFinish()}\n />\n \n this.submitClick('collection')}\n />\n
\n
\n
\n\n {dialogDelVisible &&\n this.delVirtualGroup(false)}\n onSureClick={() => this.removeVirtualGroup(delKey)}\n cusWrapClass={'dialog-del-visible'}\n >\n
确认删除后所属配置的采集日志将无法发送,是否确认?
\n \n }\n\n \n )\n }\n}\n\nconst mapState = state => ({\n userInfo: state.user.userInfo,\n tabsInfo: state.page.tabsInfo\n})\n\nconst mapDispatch = dispatch => ({\n updateTabsInfo: dispatch.page.updateTabsInfo\n})\n\nexport default withRouter(connect(mapState, mapDispatch)(setupTwo))\n","import _ from 'lodash'\nimport DataManagement from '@pages/Knowledge/DataManagement'\nimport DataGovern from '@pages/Knowledge/DataGovern'\nimport MidTable from '@pages/Knowledge/MidTable'\nimport EditMidTable from '@pages/Knowledge/MidTable/EditMidTable'\nimport DataAccess from '@pages/Knowledge/DataManagement/DataAccess'\nimport LogManagement from '@pages/Knowledge/LogManagement'\nimport LogAccess from '@pages/Knowledge/LogAccess'\nimport LogAccessDetail from '@pages/Knowledge/LogAccess/ResolveDistributionConfiguration/LogAccessDetail'\nimport SetupTwo from '@pages/Knowledge/LogAccess/ResolveDistributionConfiguration/LogAccessDetail/setupTwo'\nimport switchRoutes from './switchRoutes'\n\n\nexport const routerPath = '/admin/dataCollect'\n\nexport const bar = {\n rootUrl: routerPath,\n activeClassName: 'current',\n className: 'sdw-nav-item',\n name: '数据采集地',\n children: [{\n icon: '',\n title: '日志监听管理',\n path: `${routerPath}/logManagement`,\n }, {\n icon: '',\n title: '日志接入',\n path: `${routerPath}/logAccess`,\n }, {\n icon: '',\n title: '数据接入',\n path: `${routerPath}/dataManagement`,\n }, {\n icon: '',\n title: '手工上传',\n path: `${routerPath}/dataGovern`,\n }, {\n icon: '',\n title: '中间表管理',\n path: `${routerPath}/midTable`,\n }],\n order: 1\n}\n\nconst pages = {\n logManagement: {\n icon: '',\n title: '日志监听管理',\n path: `${routerPath}/logManagement`,\n component: LogManagement,\n },\n logAccess: {\n icon: '',\n title: '日志接入',\n path: `${routerPath}/logAccess`,\n component: LogAccess,\n },\n logAccessDetail: {\n icon: '',\n title: '编辑或新增日志接入第一步',\n path: `${routerPath}/logAccessDetail`,\n component: LogAccessDetail,\n },\n setupTwo: {\n icon: '',\n title: '编辑或新增日志接入第二步',\n path: `${routerPath}/setupTwo`,\n component: SetupTwo,\n },\n dataManagement: {\n icon: '',\n title: '数据接入',\n path: `${routerPath}/dataManagement`,\n component: DataManagement,\n },\n dataAccess: {\n icon: '',\n title: '数据接入',\n path: `${routerPath}/dataAccess`,\n component: DataAccess,\n },\n DataGovern: {\n icon: '',\n title: '手工上传',\n path: `${routerPath}/dataGovern`,\n component: DataGovern,\n },\n midTable: {\n icon: '',\n title: '中间表管理',\n path: `${routerPath}/midTable`,\n component: MidTable,\n },\n editMidTable: {\n icon: '',\n title: '中间表管理编辑',\n path: `${routerPath}/editMidTable/:id`,\n component: EditMidTable,\n }\n}\n\nexport const menus = [pages['home'], pages['voice'], pages['history'], pages['customer'], pages['worker']]\n\nexport const Router = switchRoutes({ routes: _.values(pages) })\n","import { useState, useEffect, useLayoutEffect } from 'react'\nimport _ from 'lodash'\nimport SdwBreadCrumbs from '@common/BreadCrumbs'\nimport SdwSelect from '@common/Select'\nimport SdwInput from '@common/Input'\nimport SdwTable from '@common/Table'\nimport SdwPagenation from '@common/Pagenation'\nimport SdwButton from '@common/Button'\nimport SdwEnable from '@common/Enable'\nimport SdwMessage from '@common/Message'\nimport EditWin from './EditWin'\nimport { getMonitorServerConfigList, getItermSelects, getBusinessStatisticByTopic } from '@services/logManagement'\nimport { hasPriv } from '@components/FrontendAuth/AuthMap'\n\nexport default function LogManagement(props) {\n\n const [showEditWin, setShowEditWin] = useState(false)\n const [isEdit, setIsEdit] = useState(false)\n const [searchObj, setSearchObj] = useState({\n page: 1,\n limit: 10,\n search: {}\n })\n const [curClickData, setCurClickData] = useState({})\n const [tableData, setTableData] = useState({})\n const [topicArr, setTopicArr] = useState([])\n const [businessArr, setBusinessArr] = useState([])\n const [topicID, setTopicID] = useState('')\n const [businessList, setBusinessList] = useState([])\n\n useLayoutEffect(() => {\n getItermSelects().then(res => {\n const code = _.get(res, 'data.code')\n if (code === 0) {\n const topic = _.get(res, 'data.data.topic')\n const business = _.get(res, 'data.data.business')\n if (_.isArray(topic)) setTopicArr(topic.map(i => ({id: i.topic_name, text: i.topic_name, topic_id: i.id})))\n if (_.isArray(business)) setBusinessArr(business.map(i => ({id: i.business_name, text: i.business_name})))\n }\n })\n }, [])\n\n // 根据主题域ID请求对应的业务\n useEffect(() => {\n if (!topicID) return\n getBusinessStatisticByTopic({\n id: topicID\n }).then(res => {\n const code = _.get(res, 'data.code')\n if (code === 0) {\n const business = _.get(res, 'data.data.list')\n if (_.isArray(business)) setBusinessList(business.map(i => ({id: i.business_name, text: i.business_name})))\n }\n })\n }, [topicID])\n\n useEffect(() => {\n initData()\n }, [searchObj])\n\n function initData() {\n const { page, limit, search } = searchObj\n getMonitorServerConfigList({\n page,\n limit,\n search: JSON.stringify({\n ...search.topic ? {\n topic: {\n value: search.topic,\n operator: '='\n }\n } : {},\n ...search.business ? {\n business: {\n value: search.business,\n operator: '='\n }\n } : {},\n ...search.service_id ? {\n id: {\n value: search.service_id,\n operator: '='\n }\n } : {},\n ...search.service_name ? {\n service_name: {\n value: search.service_name,\n operator: 'like'\n }\n } : {},\n ...search.fileName ? {\n fileName: {\n value: search.fileName,\n operator: 'like'\n }\n } : {}\n })\n }).then(res => {\n const code = _.get(res, 'data.code')\n if (code === 0) {\n const data = _.get(res, 'data.data')\n if (!_.isEmpty(data)) setTableData(data)\n } else {\n const msg = _.get(res, 'data.msg') || '接口异常'\n SdwMessage.err(msg)\n }\n }).catch(err => SdwMessage.err('接口异常' + err))\n }\n\n function updateSearchObj(key, val) {\n let cloneObj = _.cloneDeep(searchObj)\n cloneObj[key] = val\n setSearchObj(cloneObj)\n }\n\n function updateSearchObjBySearch(key, val) {\n let cloneObj = _.cloneDeep(searchObj)\n cloneObj.search[key] = val\n if (key != 'page') {\n cloneObj['page'] = 1\n }\n setSearchObj(cloneObj)\n }\n\n function getColumns() {\n return [\n {\n title: \"服务ID\",\n dataIndex: \"id\",\n width: 60\n },\n {\n title: \"服务名称\",\n dataIndex: \"service_name\",\n width: 160\n },\n {\n title: \"主题域\",\n dataIndex: \"topic\",\n width: 100\n },\n {\n title: \"业务\",\n dataIndex: \"business\",\n width: 100\n },\n {\n title: \"日志文件\",\n dataIndex: \"fileName\",\n showTip: true,\n width: 280\n },\n {\n title: \"创建时间\",\n dataIndex: \"create_time\",\n width: 180\n },\n {\n title: \"关联任务数\",\n width: 80,\n render: data => {_.isArray(data.cfgList) ? data.cfgList.length : 0}\n },\n {\n title: \"修改人\",\n dataIndex: \"update_user\",\n width: 100\n },\n {\n title: \"修改时间\",\n dataIndex: \"update_time\",\n width: 180\n },\n {\n title: \"是否有效\",\n width: 100,\n render: data => \n },\n ...hasPriv('setMonitorServerConfig') ? [\n {\n title: \"操作\",\n width: 80,\n render: data => {\n return (\n {\n setShowEditWin(true)\n setIsEdit(true)\n setCurClickData(data)\n }}\n text='编辑'\n />\n )\n }\n }\n ] : []\n ]\n }\n\n const { topic, business, service_id, service_name, fileName } = searchObj.search || {}\n\n return (\n <>\n \n\n
\n
\n
\n
\n updateSearchObjBySearch('service_id', val)}\n />\n
\n
\n updateSearchObjBySearch('service_name', val)}\n />\n
\n
\n {\n updateSearchObjBySearch('topic', val)\n setTopicID(item.topic_id)\n }}\n />\n
\n
\n updateSearchObjBySearch('business', val)}\n />\n
\n
\n updateSearchObjBySearch('fileName', val)}\n />\n
\n {\n hasPriv('setMonitorServerConfig') &&\n
\n {\n setShowEditWin(true)\n setIsEdit(false)\n setCurClickData({})\n } }\n />\n
\n }\n
\n
\n\n
\n \n {\n _.isArray(tableData.items) && tableData.items.length &&\n
\n updateSearchObj('page', val) }\n pageCountChange={ val => updateSearchObj('limit', val) }\n />\n
\n }\n
\n\n {\n showEditWin &&\n setShowEditWin(bool)}\n updatePage={initData}\n />\n }\n
\n \n )\n}\n","import { request } from '../utils/request'\n\nexport function GetHotEventMap (params) {\n //http://p.cm.com/dataset/process/GetHotEventMap?start_time=2021-01-20\n return request({ url: '/dataset/process/GetHotEventMap', method: 'get', params: params })\n}\n\nexport function GetHotEventChooseList (params) {\n return request({ url: '/dataset/process/GetHotEventChooseList', method: 'get', params: params })\n}\n\nexport function GetHotEventOne (params) {\n return request({ url: '/dataset/process/GetHotEventOne', method: 'get', params: params })\n}\n\nexport function GetHotEventUrl (params) {\n return request({ url: '/dataset/process/GetHotEventUrl', method: 'get', params: params })\n}\n","import React, { PureComponent } from 'react'\nimport {connect} from 'react-redux'\nimport {withRouter} from 'react-router-dom'\nimport _ from 'lodash'\nimport { DateRangePicker, Button } from 'element-react'\nimport SdwTable from '../../../common/Table'\nimport SdwPagenation from '../../../common/Pagenation'\nimport SdwSelect from '../../../common/Select'\nimport SdwBreadCrumbs from '../../../common/BreadCrumbs'\nimport { GetHotEventMap, GetHotEventChooseList } from '@services/monitoringEye'\nimport SdwLoading from '@common/Loadding'\n\nimport 'element-theme-default'\nimport './style/index.css'\n\nclass MonitoringEye extends PureComponent {\n\n state = {\n dataPicker: '',\n businessData: [],\n enableOptios: [{\n value: 1,\n label: '有效'\n }, {\n value: 0,\n label: '无效'\n }],\n typeOptions: [{\n value: 1,\n label: '已补登'\n }, {\n value: 0,\n label: '未补登'\n }],\n businessValue: '',\n typeValue: '',\n enableValue: '',\n isPageLoading: true,\n tableData: {},\n curPage: this.props.pageInfo || 0,\n curLimit: 10,\n }\n\n componentDidMount () {\n this.initDatePicker()\n this.onGetHotEventChooseList()\n }\n\n componentWillUnmount () {\n sessionStorage.setItem('monitorDataPicker', JSON.stringify(this.state.dataPicker))\n }\n\n componentDidUpdate (prevProps, prevState) {\n if (\n !_.isEqual(prevState.dataPicker, this.state.dataPicker) ||\n !_.isEqual(prevState.businessValue, this.state.businessValue) ||\n !_.isEqual(prevState.curLimit, this.state.curLimit) ||\n !_.isEqual(prevState.curPage, this.state.curPage) ||\n !_.isEqual(prevState.typeValue, this.state.typeValue) ||\n !_.isEqual(prevState.enableValue, this.state.enableValue)\n ) {\n this.onGetHotEventMap()\n }\n }\n\n // 初始化时间选择当前一天\n initDatePicker = () => {\n let prevDatePicker = JSON.parse(sessionStorage.getItem('monitorDataPicker'))\n let hasDateAndValidate = _.isArray(prevDatePicker) && prevDatePicker.length >= 2\n\n // 从详情页跳转回来,需要保留之前的时间\n let showPrevTime = this.props.location.search.indexOf('showPrevDate') !== -1\n\n if (hasDateAndValidate && showPrevTime) {\n let start = new Date(prevDatePicker[0]);\n let end = new Date(prevDatePicker[1]);\n this.setState({dataPicker: [start, end]})\n return\n }\n\n let end = new Date();\n let start = new Date();\n start.setTime(start.getTime() - 3600 * 1000 * 24 * 1);\n\n this.setState({dataPicker: [start, end]})\n }\n\n // 获取table表格数据\n onGetHotEventMap = () => {\n\n let { dataPicker, businessValue, curPage, curLimit, typeValue, enableValue } = this.state\n\n if (!dataPicker || !dataPicker.length) return\n\n let date = this.formatDate(dataPicker)\n GetHotEventMap({\n start_time: date[0],\n end_time: date[1],\n ...businessValue ? {\n product: businessValue\n } : {},\n limit: curLimit,\n page: curPage,\n ..._.isEqual(typeof typeValue, 'number') ? {\n record: typeValue\n } : {},\n ..._.isEqual(typeof enableValue, 'number') ? {\n isEffect: enableValue\n } : {}\n }).then(res => {\n if (res && res.data && res.data.code === 0) {\n this.setState({\n isPageLoading: false,\n tableData: res.data.data || {}\n })\n }\n })\n }\n\n // 获取业务下拉选择项\n onGetHotEventChooseList = () => {\n GetHotEventChooseList().then(res => {\n if (res && res.data && res.data.code === 0) {\n this.setState({\n businessData: res.data.data || []\n })\n }\n })\n }\n\n getColumns = () => {\n let self = this\n return [\n {\n title: \"预警时间\",\n dataIndex: \"create_time\"\n },\n {\n title: \"所属业务\",\n dataIndex: \"product\"\n },\n {\n title: \"标题\",\n dataIndex: \"hot_word\"\n },\n {\n title: \"相关指标\",\n width: 380,\n render: function (data, record) {\n let suchHeat = data.such_heat.split(' ')[0]\n return (\n \n {\n `反馈数:${data.today_word};同比增长:${data.tongbi};热词占比:${suchHeat}`\n }\n \n )\n }\n },\n {\n title: \"所属渠道\",\n dataIndex: \"type\"\n },\n {\n title: \"补登状态\",\n render: function (data, record) {\n return (\n \n {\n !!data.state ? '已补登' : '-'\n }\n \n )\n }\n },\n {\n title: \"是否有效\",\n render: function (data, record) {\n return (\n <>\n {\n _.isEqual(typeof data.isEffect, 'number') && \n }\n {_.isEqual(typeof data.isEffect, 'number') ?\n (data.isEffect ? '有效' : '无效') : '-'}\n \n )\n }\n },\n {\n title: \"操作\",\n render: function (data, record) {\n return (\n \n self.jumpToDetail(data) }\n >预警详情\n \n )\n }\n }\n ]\n }\n\n jumpToDetail = record => {\n this.props.history.push(`/admin/monitor/monitoringEyeDetail/${record.id}`)\n }\n\n formatDate = date => {\n if (_.isArray(date)) {\n return date.map((item, index) => {\n let time = index === 0 ? '00:00:00' : '23:59:59'\n return `${item.getFullYear()}-${item.getMonth() + 1}-${item.getDate()} ${time}`\n })\n }\n }\n\n render () {\n\n let {\n dataPicker,\n businessValue,\n typeValue,\n enableValue,\n enableOptios,\n typeOptions,\n tableData,\n businessData,\n isPageLoading\n } = this.state\n\n return (\n
\n \n\n
\n
\n \n time.getTime() > (Date.now())}\n onChange={date => {\n this.setState({curPage: 1, dataPicker: date})\n }}\n />\n \n\n \n {\n return {\n id: el.product,\n text: el.product\n }\n })}\n onChange={val => this.setState({curPage: 1, businessValue: val})}\n />\n \n\n \n {\n return {\n id: el.value,\n text: el.label\n }\n })}\n onChange={val => this.setState({curPage: 1, typeValue: val})}\n />\n \n\n \n {\n return {\n id: el.value,\n text: el.label\n }\n })}\n onChange={val => this.setState({curPage: 1, enableValue: val})}\n />\n \n\n \n 预警:{tableData.total || 0}\n 已补登:{tableData.condition_count || 0}\n 故障:{tableData.fault_count || 0}\n \n
\n\n \n \n\n
\n {\n this.setState({\n curPage: page\n })\n } }\n pageCountChange={ limit => {\n this.setState({\n curLimit: limit\n })\n } }\n />\n
\n
\n\n
\n
\n )\n }\n}\n\nconst mapState = state => ({\n pageInfo: state.page.pageInfo\n})\n\nexport default withRouter(connect(mapState)(MonitoringEye))\n","import { formatTime } from '@utils/formatTime'\nimport React from 'react'\nimport _ from 'lodash'\nimport SdwEmpty from '../../../common/Empty'\nimport SdwLoading from '@common/Loadding'\n\nimport './style/chatArea.css'\n\nexport default props => {\n const arrList = _.isArray(props.userInfoData) ? [...props.userInfoData] : []\n _.reverse(arrList)\n return (\n \n {\n !!arrList.length ?\n
\n {\n arrList.map((info, index) => {\n let detail = info && info.detail || {}\n let answer = detail.answer && decodeURIComponent(detail.answer) || ''\n let query = detail.query && decodeURIComponent(detail.query) || ''\n let msgtime = detail.msgtime && formatTime(detail.msgtime * 1000, 0) || ''\n\n return (\n
\n {\n msgtime &&\n
\n

{msgtime}

\n
\n }\n {\n query &&\n
\n
\n
\n \n
\n
\n {/*

太阳当空照4-17 11:03:49

*/}\n
\n
\n {/* {query} */}\n \n
\n
\n
\n
\n
\n }\n {\n answer &&\n
\n
\n
\n \n
\n
\n {/*

客服小助手

*/}\n
\n
\n \n {/* {answer} */}\n
\n
\n
\n
\n
\n }\n
\n )\n })\n }\n
:\n \n }\n
\n )\n}","import React, { PureComponent } from 'react'\nimport _ from 'lodash'\nimport { GetHotEventOne, GetHotEventUrl } from '@services/monitoringEye'\nimport { Layout, Button } from 'element-react'\nimport SdwTable from '../../../common/Table'\nimport SdwPagenation from '../../../common/Pagenation'\nimport SdwDrawer from '../../../common/Drawer'\nimport SdwBreadCrumbs from '../../../common/BreadCrumbs'\nimport SdwCopyText from '../../../common/CopyText'\nimport ChatArea from './ChatArea'\nimport { formatTime } from '@utils/formatTime'\n\nimport './style/monitoringEyeDetail.css'\n\nconst RECORD_TYPE_MAP = {\n 0: '无效',\n 1: '故障',\n 2: '咨询',\n 3: '策略',\n}\n\nclass MonitoringEyeDetail extends PureComponent {\n\n state = {\n detailDate: {},\n curPage: 1,\n curLimit: 5,\n visible: false,\n curTableData: {},\n curID: '',\n isLoad: false,\n userProfileData: {}\n }\n\n componentDidMount () {\n let query = this.props.match.params || {}\n if (!query.id) return\n this.onGetHotEventOne(query.id)\n this.setState({\n curID: query.id\n })\n }\n\n componentDidUpdate (prevProps, prevState) {\n if (\n !_.isEqual(prevState.curPage, this.state.curPage) ||\n !_.isEqual(prevState.curLimit, this.state.curLimit)\n ) {\n this.onGetHotEventOne()\n }\n }\n\n onGetHotEventOne = id => {\n let { curPage, curLimit, curID } = this.state\n GetHotEventOne({\n ...id ? { id } : {id: curID},\n page: curPage,\n limit: curLimit\n })\n .then(res => {\n if (res && res.data && res.data.code === 0) {\n this.setState({\n detailDate: res.data.data || {}\n })\n }\n })\n }\n\n getColumns = () => {\n let self = this\n return [\n {\n title: \"OPENID\",\n dataIndex: \"openid\",\n width: 300\n },\n {\n title: \"会话内容\",\n render: function (data, record) {\n return (\n \n )\n }\n },\n {\n title: \"操作\",\n width: 80,\n render: function (data, record) {\n return (\n \n \n \n )\n }\n }\n ]\n }\n\n formatSession = str => {\n\n // 热词格式:收,客服 公众号,客服 人工,不到 -----> 由 逗号 或者 空格 分隔\n let s = this.state.detailDate.hot_word.replace(/(,|\\s)/g, '|')\n let reg = new RegExp(\"(\" + s + \")\", \"g\")\n return str.replace(reg, \"$1\")\n }\n\n openDetail = record => {\n\n if (this.state.detailDate.type === 'ASYNC') {\n // 异步跳转病历库界面\n window.open(`http://kfdata.oa.com/#/portrait/searchDetail?type=openid&value=${record.openid}`)\n return\n }\n\n this.setState({\n isLoad: false\n })\n\n // 会话取预警时间前后一个小时的\n let startTime = formatTime(new Date(this.state.detailDate.create_time).getTime(), -2)\n let endTime = formatTime(new Date(this.state.detailDate.create_time).getTime(), 2)\n GetHotEventUrl({\n openid: record.openid,\n relation_type: -1,\n account_type: 0,\n start_time: startTime,\n end_time: endTime\n })\n .then(res => {\n this.setState({\n isLoad: true\n })\n if (res && res.data && res.data.code === 0) {\n this.setState({\n userProfileData: res.data.data && JSON.parse(res.data.data) || {}\n })\n }\n })\n .catch(() => {\n this.setState({\n isLoad: true\n })\n })\n\n this.setState({\n visible: true,\n curTableData: record\n })\n }\n\n render () {\n\n let { detailDate, visible, curTableData, userProfileData, isLoad } = this.state\n\n return (\n
\n \n\n \n \n
\n
基础信息
\n
\n \n \n
\n 热词\n {detailDate.hot_word || '-'}\n
\n
\n \n
\n 所属业务\n {detailDate.product || '-'}\n
\n
\n \n
\n 反馈数\n {detailDate.today_word || '-'}\n
\n
\n \n
\n 热词占比\n {detailDate.such_heat && detailDate.such_heat.split(' ')[0] || '-'}\n
\n
\n
\n \n \n
\n 预警时间\n {detailDate.create_time || '-'}\n
\n
\n \n
\n 预警渠道\n {detailDate.type || '-'}\n
\n
\n \n
\n 同比增长\n {detailDate.tongbi || '-'}\n
\n
\n
\n
\n
\n
\n \n
\n
补登信息
\n
\n \n \n
\n 补登时间\n {detailDate.record_time || '-'}\n
\n
\n \n
\n 补登人\n {detailDate.record_person || '-'}\n
\n
\n \n
\n 是否有效\n {\n _.isEqual(typeof detailDate.isEffect, 'number') && \n }\n {_.isEqual(typeof detailDate.isEffect, 'number') ? (detailDate.isEffect ? '有效' : '无效') : '-'}\n
\n
\n \n
\n 预警类型\n {RECORD_TYPE_MAP[detailDate.record_type] || '-'}\n
\n
\n
\n \n \n
\n 补登备注\n {detailDate.record_detail || '-'}\n
\n
\n
\n
\n
\n
\n
\n\n \n \n
\n \n\n
\n {\n this.setState({\n curPage: page\n })\n } }\n pageCountChange={ limit => {\n this.setState({\n curLimit: limit\n })\n } }\n />\n
\n
\n
\n
\n\n this.setState({ visible: false })}\n onCancelClick={() => this.setState({ visible: false })}\n onSureClick={() => this.setState({ visible: false })}\n >\n \n
\n
用户:\n window.open(`http://kfdata.oa.com/#/portrait/searchDetail?type=openid&value=${curTableData.openid}`)}\n >{curTableData.openid}\n \n
\n {/*
来源:来源来源来源来源来源来源来源来源
*/}\n \n
\n
\n \n
\n )\n }\n}\n\nexport default MonitoringEyeDetail\n","export const OPR_TYPE_MAP = {\n edit: 'edit',\n copy: 'copy'\n}\n\nexport const STRATEGY_TYPE_MAP = {\n add: 'add',\n del: 'del',\n update: 'update'\n}\n\nexport const TIME_MAP = [\n {\n id: 'minute',\n text: '分钟'\n },\n {\n id: 'hour',\n text: '小时'\n },\n {\n id: 'day',\n text: '天'\n },\n {\n id: 'week',\n text: '周'\n },\n {\n id: 'month',\n text: '月'\n }\n]\n\nexport const Frequency_TIME_MAP = [\n {\n id: 'minute',\n text: '分钟/次'\n },\n {\n id: 'hour',\n text: '小时/次'\n },\n {\n id: 'day',\n text: '天/次'\n },\n {\n id: 'month',\n text: '月/次'\n }\n]\n// 所属模块选项\nexport const MODULE_ID_OPTIONS = [\n {\n id: '1',\n text: '经营分析'\n }, {\n id: '2',\n text: '质检学习'\n }, {\n id: '3',\n text: '员工绩效'\n }, {\n id: '4',\n text: '热词预警'\n }, {\n id: '6',\n text: '时序预警'\n }, {\n id: '0',\n text: '其他'\n }\n]\n\n\nexport const SEND_TYPE_OPTIONS = [\n {\n id: 'wxappmsg',\n text: '微信消息模版推送告警'\n }, {\n id: 'wxmsg',\n text: '微信文本消息推送告警'\n }, {\n id: 'no_send',\n text: '不推送'\n }\n]\n\nexport const FIXED_VALUE = 'fixed_value'\n\nexport const FIXED_VALUE_LESS = 'fixed_value_less'\n\n// 这是固定值对应的map\nexport const DEFAULT_ITEM_OBJ = {\n rule_name: FIXED_VALUE,\n left_value: '',\n left_operator: '>', // 此处跟嘉濠确定了的:固定传下面2个符号:> 和 <\n right_operator: '<',\n right_value: '',\n data_cycle: '7'\n}\n\n// 下面是突增、突降字段对应的map\nexport const DEFAULT_VARIATION_OBJ = {\n rule_name: 'variation',\n operator: '',\n data_cycle: '',\n value: ''\n}\n\n// 监控类型\nexport const MONITOR_TYPE_MAP = [{\n id: 1,\n text: '基础服务'\n}, {\n id: 2,\n text: '风险服务'\n}, {\n id: 3,\n text: '项目观察'\n}, {\n id: 4,\n text: '用户观察'\n}, {\n id: 5,\n text: '智能生态'\n}]\n","import React, { PureComponent } from 'react'\nimport _ from 'lodash'\nimport { Button, DateRangePicker } from 'element-react'\nimport SdwTable from '@common/Table'\nimport SdwPagenation from '@common/Pagenation'\nimport SdwInput from '@common/Input'\nimport SdwSelect from '@common/Select'\nimport SdwBreadCrumbs from '@common/BreadCrumbs'\nimport SdwButton from '@common/Button'\nimport SdwDialog from '@common/Dialog'\nimport Switch from '@common/Switch'\nimport { getAlarmCfgList, getProblemTypeSelects, storeProblemType } from '@services/alertRules'\nimport { formatTime } from '@utils/formatTime'\nimport { MODULE_ID_OPTIONS,SEND_TYPE_OPTIONS } from \"./EarlyWarningRules/common\";\n\nimport './style/index.css'\nimport SdwMessage from '@common/Message/index'\n\n// 自定义\nconst SELF = 'self'\n\nclass MonitorControl extends PureComponent {\n\n state = {\n module: '',\n send_type: '',\n datePicker: '',\n alarmRuleName: '',\n notifyPerson: '',\n ruleName: '',\n tableData: {},\n curPage: 1,\n curLimit: 10,\n showEditWin: false,\n problemTypeSelects: [],\n editData: {\n problemType: '',\n selfType: ''\n },\n currentData: {}\n }\n\n componentDidMount () {\n this.initDatePicker()\n this.initData()\n }\n\n componentDidUpdate (prevProps, prevState) {\n\n if (\n !_.isEqual(prevState.curPage, this.state.curPage) ||\n !_.isEqual(prevState.curLimit, this.state.curLimit) ||\n !_.isEqual(prevState.datePicker, this.state.datePicker)\n ) {\n this.getAlarmCfgList()\n }\n }\n\n initData = () => {\n getProblemTypeSelects().then(res => {\n const code = _.get(res, 'data.code')\n if (code === 0) {\n let data = _.get(res, 'data.data.problem') || []\n if (_.isArray(data)) {\n data = data.map(i => ({\n id: i.problem_name,\n text: i.problem_name\n }))\n }\n data.push({\n id: SELF,\n text: '自定义'\n })\n // console.log('xxx ', data);\n this.setState({\n problemTypeSelects: data\n })\n }\n })\n }\n\n // 初始化时间选择当前一天\n initDatePicker = () => {\n let end = new Date();\n let start = new Date();\n start.setTime(start.getTime() - 3600 * 1000 * 24 * 7); // 默认近7天的数据\n\n this.setState({datePicker: [start, end]})\n }\n\n getAlarmCfgList = () => {\n let { curPage, curLimit, datePicker, alarmRuleName, notifyPerson, ruleName, module, send_type } = this.state\n let timeRange = datePicker.map(t => formatTime(+t, 0))\n\n let searchParams = JSON.stringify({\n ...datePicker ? {\n create_time: {\n value: timeRange,\n operator: 'range'\n }\n } : {},\n ...module ? {\n module: {\n value: module,\n operator: '='\n }\n } : {},\n ...send_type ? {\n send_type: {\n value: send_type,\n operator: '='\n }\n } : {},\n ...alarmRuleName ? {\n alarm_rule_name: {\n value: `%${alarmRuleName}%`,\n operator: 'like'\n }\n } : {},\n ...notifyPerson ? {\n deal_users: {\n value: `%${notifyPerson}%`,\n operator: 'like'\n }\n } : {},\n ...ruleName ? {\n title: {\n value: `%${ruleName}%`,\n operator: 'like'\n }\n } : {}\n })\n\n getAlarmCfgList({\n tablename: 't_alarm_article_new',\n page: curPage,\n limit: curLimit,\n search: searchParams\n })\n .then(res => {\n if (res && res.data && res.data.code === 0) {\n this.setState({\n tableData: res.data.data || {}\n })\n }\n })\n }\n\n getColumns = () => {\n return [\n {\n title: \"预警时间\",\n width: 200,\n dataIndex: \"create_time\"\n },\n {\n title: \"规则名称\",\n dataIndex: \"alarm_rule_name\"\n },\n {\n title: \"所属模块\",\n render: data => {\n let text = _.get(MODULE_ID_OPTIONS.filter(i => i.id === data.module), '[0].text')\n return (\n { text || '-' }\n )\n }\n },\n {\n title: \"推送方式\",\n render: data => {\n let text = _.get(SEND_TYPE_OPTIONS.filter(i => i.id === data.send_type), '[0].text')\n return (\n { text || '-' }\n )\n }\n },\n {\n title: \"标签\",\n dataIndex: \"label\"\n },\n {\n title: \"关联任务ID\",\n dataIndex: \"task_id\"\n },\n {\n title: \"问题类型\",\n dataIndex: \"problem_type\"\n },\n // {\n // title: \"通知人\",\n // // dataIndex: \"deal_users\",\n // render: (data, record) => {\n // return (\n // // console.log(data.deal_users, typeof JSON.parse(data.deal_users))\n // (_.isString(data.deal_users) && _.isArray(JSON.parse(data.deal_users))) ? JSON.parse(data.deal_users).map(i => {i.decorate}) : '-'\n // )\n // }\n // },\n // {\n // title: \"备注\",\n // dataIndex: \"remark\"\n // }\n {\n title: '操作',\n render: data => (\n <>\n this.onEditClick(data)}\n />\n \n )\n }\n ]\n }\n\n setShowEditWin = bool => {\n this.setState({\n showEditWin: bool\n })\n }\n\n onEditClick = data => {\n const { editData } = this.state\n // console.log('onEditClick: ', data);\n this.setState({\n currentData: data,\n editData: {\n ...editData,\n problemType: data.problem_type,\n is_recommend_case: data.is_recommend_case\n }\n })\n this.setShowEditWin(true)\n }\n\n onEditSureClick = () => {\n const { editData, currentData } = this.state\n let params = {\n problemType: editData.problemType\n }\n if (editData.problemType === SELF) params.problemType = editData.selfType\n // console.log('currentData: ', currentData);\n\n storeProblemType({\n id: currentData.id,\n field: {\n problem_type: params.problemType,\n is_recommend_case: editData.is_recommend_case || 0\n }\n }).then(res => {\n const code = _.get(res, 'data.code')\n const msg = _.get(res, 'data.msg')\n if (code === 0) {\n this.initData()\n this.getAlarmCfgList()\n this.setShowEditWin(false)\n SdwMessage.success(msg || '编辑成功')\n } else {\n SdwMessage.error(msg || '编辑失败')\n }\n }).catch(err => {\n SdwMessage.error('编辑失败 ' + err)\n })\n }\n\n updateEditData = (key, val = '') => {\n let cloneEditData = _.cloneDeep(this.state.editData)\n cloneEditData[key] = val\n this.setState({\n editData: cloneEditData\n })\n }\n\n render () {\n\n let {\n datePicker,\n alarmRuleName,\n notifyPerson,\n ruleName,\n tableData,\n module,\n send_type,\n showEditWin,\n problemTypeSelects,\n editData\n } = this.state\n\n return (\n
\n \n {\n this.props.history.push('/admin/monitor/earlyWarningRules')\n }}\n >预警规则管理\n \n\n
\n
\n \n time.getTime() > Date.now()}\n onChange={date => {\n this.setState({ datePicker: date })\n }}\n />\n {/* 预警时间 */}\n \n\n \n this.setState({curPage: 1, alarmRuleName: val})}\n onBlur={this.getAlarmCfgList}\n />\n \n\n {/* \n this.setState({notifyPerson: val})}\n onBlur={this.getAlarmCfgList}\n onEnterKeyDown={this.getAlarmCfgList}\n />\n */}\n\n \n this.setState({curPage: 1, module: val}, this.getAlarmCfgList)}\n />\n \n \n this.setState({curPage: 1, send_type: val}, this.getAlarmCfgList)}\n />\n \n \n console.log(val)}\n />\n \n {/* \n this.setState({ruleName: val})}\n onBlur={this.getAlarmCfgList}\n onEnterKeyDown={this.getAlarmCfgList}\n />\n */}\n
\n\n \n\n
\n {\n this.setState({\n curPage: page\n })\n } }\n pageCountChange={ limit => {\n this.setState({\n curLimit: limit\n })\n } }\n />\n
\n
\n\n {\n showEditWin &&\n this.setShowEditWin(false)}\n onSureClick={this.onEditSureClick}\n sureBtnDisabled={\n editData.problemType === SELF ? !editData.selfType : false\n }\n >\n
\n 问题类型\n this.updateEditData('problemType', val)}\n />\n
\n {\n editData.problemType === SELF &&\n
\n 自定义值\n this.updateEditData('selfType', val) }\n />\n
\n }\n
\n 是否推荐案例\n this.updateEditData('is_recommend_case', val)}\n />\n
\n \n }\n
\n )\n }\n}\n\nexport default MonitorControl\n","import React from 'react'\nimport _ from 'lodash'\nimport SdwInput from '@common/Input'\nimport SdwSelect from '@common/Select'\nimport { STRATEGY_TYPE_MAP, FIXED_VALUE, FIXED_VALUE_LESS, DEFAULT_ITEM_OBJ, DEFAULT_VARIATION_OBJ } from './common'\n\nimport './style/warn-strategy.css'\n\nexport default class WarnStrategy extends React.Component {\n\n validateFun = val => {\n if (!!val) {\n return true\n }\n return '该输入项不能为空'\n }\n validateIntegerFun = val => {\n if(/-/.test(val)){\n return '请输入正数'\n }\n if (!!val) {\n return true\n }\n return '该输入项不能为空'\n }\n\n addPolicy = () => {\n this.props.updateWarnStrategyList(this.props.firstIndex, STRATEGY_TYPE_MAP.add)\n }\n\n removePolicy = index => {\n this.props.updateWarnStrategyList(this.props.firstIndex, STRATEGY_TYPE_MAP.del, index)\n }\n\n onUpdate = (index, type, val) => {\n let { strategyData, firstIndex } = this.props\n let curObj = _.cloneDeep(strategyData[index])\n\n if (['rule_name', 'operator'].includes(type)) {\n\n // 当前的rule_name:fixed_value\\variation\n let ori_rule_name = curObj.rule_name\n \n // 如果当前未改变,直接返回,不做更新\n if (ori_rule_name === val) return\n \n // 是否是固定值变为突增突降\n let isFixValue = [FIXED_VALUE, FIXED_VALUE_LESS].includes(val)\n \n // variation\n if (isFixValue) {\n curObj = _.cloneDeep(DEFAULT_ITEM_OBJ)\n } else {\n curObj = _.cloneDeep(DEFAULT_VARIATION_OBJ)\n }\n }\n\n curObj[type] = val\n\n this.props.updateWarnStrategyList(firstIndex, STRATEGY_TYPE_MAP.update, index, curObj)\n }\n\n render () {\n\n let {\n strategyData,\n sholdCheckValidate\n } = this.props\n\n return (\n \n {\n !!strategyData.length &&\n strategyData.map((strategy, index) => {\n\n // 是否是固定值\n let isFixValue = [FIXED_VALUE, FIXED_VALUE_LESS].includes(strategy.rule_name)\n\n return (\n \n \n this.onUpdate(index, [FIXED_VALUE, FIXED_VALUE_LESS].includes(val) ? 'rule_name' : 'operator', val)}\n />\n \n {\n isFixValue ? \n <>\n this.onUpdate(index, 'left_value', val)}\n />\n \n this.onUpdate(index, 'right_value', val)}\n />\n \n \n this.onUpdate(index, 'data_cycle', val)}\n />\n \n :\n <>\n this.onUpdate(index, 'data_cycle', val)}\n />\n \n this.onUpdate(index, 'value', val)}\n />\n \n \n }\n \n \n \n {\n index > 0 && \n this.removePolicy(index)} className=\"el-icon-minus\">\n }\n {\n index > 0 &&
\n }\n
\n )\n })\n }\n \n )\n }\n}","import React from 'react'\nimport PropTypes from 'prop-types'\nimport _ from 'lodash'\nimport SdwInput from '@common/Input'\nimport SdwSelect from '@common/Select/index'\nimport { STRATEGY_TYPE_MAP } from './common'\n\nimport './style/warn-strategy.css'\n\nclass SelectAddInputGroup extends React.Component {\n\n static defaultProps = {\n isEmpty: false\n }\n\n validateFun = val => {\n if (this.props.isEmpty || !!val) {\n return true\n }\n return '该输入项不能为空'\n }\n \n validateArrFun = list => {\n if (this.props.isEmpty || (!!list.length && !!list[0])) {\n return true\n }\n return '该输入项不能为空'\n }\n\n handleChange = (type, index, val) => {\n let { handlerList } = this.props\n let obj = _.cloneDeep(handlerList[index])\n obj[type] = val\n\n this.props.updateHanderList(index, STRATEGY_TYPE_MAP.update, obj)\n }\n\n addPolicy = () => {\n this.props.updateHanderList('', STRATEGY_TYPE_MAP.add)\n }\n\n removePolicy = index => {\n this.props.updateHanderList(index, STRATEGY_TYPE_MAP.del)\n }\n\n render () {\n\n let { handlerList, isEmpty, sholdCheckValidate, allMembers, relatedOption } = this.props\n\n return (\n <>\n {\n !!handlerList.length &&\n handlerList.map((person, index) => (\n \n \n this.handleChange('user_type', index, val)} \n />\n \n {\n !!person.user_type &&\n <>\n {\n person.user_type === 'related' ?\n <>\n \n this.handleChange('related_field', index, val)} \n />\n \n \n this.handleChange('decorate', index, val)} \n />\n \n :\n this.handleChange('related_field', index, '')} // 这里的onClear只是清除所有时才触发\n changeMultipleValue={list => this.handleChange('related_field', index, list.join(';'))}\n />\n }\n \n }\n \n {\n index > 0 && \n this.removePolicy(index)} className=\"el-icon-minus\">\n }\n {\n index > 0 &&
\n }\n
\n ))\n }\n \n )\n }\n}\n\nSelectAddInputGroup.propTypes = {\n isEmpty: PropTypes.bool\n}\n\nexport default SelectAddInputGroup","import _ from \"lodash\";\n\nexport const notEmpty = (val) => {\n return _.isString(val) && !!val.trim()\n}\n\nexport const isLength = (val, number) => {\n return val.trim().length < number\n}\n/**\n * rulers 校验的规则\n * params 需要校验的参数\n * return false 不通过 true 通过\n */\nexport const isCheck = (rulers, params) => {\n if (!_.isObject(rulers) && !params) return\n const arr = _.keys(rulers) || []\n let flag = true\n for (let i = 0; i < arr.length; i++) {\n let key = arr[i]\n let rule = rulers[key]\n rule.forEach(element => {\n let val = params[key]\n let res = element(val)\n if(!res) flag = false\n });\n }\n // 如果校验结果为 true 则通过 false则不通过\n return flag\n}\n\n// function check( rule, beValiData ) {\n// // 有自定义validator 走自定义检验的方法 没有validator 有required且为true则走公共的定义方法\n// // if (rule.validator) return rule.validator(beValiData)\n// switch (rule.type) {\n// case String:\n// return notEmpty(beValiData)\n// case Number:\n// return _.isNumber(beValiData)\n// case Date:\n// return _.isDate(beValiData)\n// default:\n// }\n// }","import React from 'react'\nimport _ from 'lodash'\nimport SdwInput from '@common/Input'\nimport SdwSelect from '@common/Select'\nimport SdwSwitch from '@common/Switch'\nimport WarnStrategy from './WarnStrategy'\nimport SelectAddInputGroup from './SelectAddInputGroup'\nimport SdwMessage from '@common/Message'\nimport { getAlarmCfgList, getTablecfgFields, getStaffs, updateAlarmConf, insertAlarmConf, getAlarmItemSelects, alarmBusinessItemSelects, channelItemSelects } from '@services/alertRules'\nimport { formatJsonParse } from '@utils/formatJson'\nimport { formatTime } from '@utils/formatTime'\nimport { DatePicker } from 'element-react'\n\nimport { isCheck } from \"./util/validate\";\nimport { MODULE_ID_OPTIONS,SEND_TYPE_OPTIONS, DEFAULT_ITEM_OBJ,\n STRATEGY_TYPE_MAP, TIME_MAP, Frequency_TIME_MAP, FIXED_VALUE,\n FIXED_VALUE_LESS, OPR_TYPE_MAP, MONITOR_TYPE_MAP\n} from \"./common\";\n\nimport './style/edit-control-win.css'\n\nconst PERSON_OBJ = {\n decorate: '',\n related_field: '',\n user_type: ''\n}\n\nconst DAY = 'day'\n\nexport default class EditControlWin extends React.Component {\n\n state = {\n formData:{\n alarm_rule_name: '', // 规则名称\n module: '', //所属模块\n label: '', //标签\n relatedIndicators: [], //关联指标\n jump_url:\"\",//跳转链接\n alarm_title: '', // 标题\n alarm_content: '', // 推送文案\n fk_id: '', // 数据源\n alarm_field: '', // 预警字段\n target_name_ch: '', // 字段转义\n date_field: '', // 时间字段\n filter_str: '', // 过滤条件\n exec_cycle: '', // 监控频率\n monitor_freq_unit: DAY,\n show_time:\"\",//时间跨度\n show_time_unit: DAY,\n recently_monitor: '', // 监控最近\n recently_monitor_unit: DAY,\n push_limit_time: '', // 告警频率\n alert_freq_unit: DAY,\n push_limit_plot: '', // 告警频率--每策略\n enable: 0, // 是否可用\n is_task: 0, // 创建任务\n\n send_type: '', // 推送方式\n monitor_type: '', // 监控类型\n dimension_field: '', // 预警维度\n dimension_value: '', // 维度值\n dimension_value_name: '', // 维度转义\n comment: '', // 备注\n start_time: '%Y年%m月%d日 %H:%M:%S',\n end_time: '%Y年%m月%d日 %H:%M:%S',\n schedule_time: '', // 起始时间\n delay_time: '', // 延迟时间\n delay_time_unit: ''\n },\n currentAlarmData: {},\n warnStrategyList: [\n [DEFAULT_ITEM_OBJ]\n ],\n handlerList: [\n PERSON_OBJ\n ],\n copyMenList: [\n PERSON_OBJ\n ],\n\n tablecfgFields: [],\n allMembers: [],\n sholdCheckValidate: false,\n dataSourceOptions: [],\n alarmItemSelection: {},\n alarmBusinessItems: [],\n channelSelection: []\n }\n\n componentDidMount() {\n this.initData()\n this.setState({\n dataSourceOptions: this.props.dataSourceOptions\n })\n }\n\n componentDidUpdate (prevProps, prevState) {\n\n if (!_.isEqual(prevState.formData.fk_id, this.state.formData.fk_id)) {\n this.onGetTablecfgFields()\n }\n\n if (!_.isEqual(prevState.formData.owner_business, this.state.formData.owner_business)) {\n this.getAlarmBusinessItemSelects(this.state.formData.owner_business)\n }\n }\n\n initData = () => {\n\n if (this.props.isEdit && !_.isEqual(this.props.currentAlarmID, '')) {\n this.getAlarmCfgList(this.props.currentAlarmID)\n }\n\n getStaffs().then(res => {\n if (res && res.data && res.data.code === 0) {\n let list = _.isArray(res.data.data) ? res.data.data : []\n this.setState({\n allMembers: list\n })\n }\n })\n\n // 获取所属业务下拉选项\n getAlarmItemSelects().then(res => {\n let code = _.get(res, 'data.code')\n let data = _.get(res, 'data.data')\n if (code === 0) {\n this.setState({\n alarmItemSelection: data\n })\n }\n })\n\n // 获取所属聚到\n channelItemSelects().then(res => {\n let code = _.get(res, 'data.code')\n if (code === 0) {\n let data = _.get(res, 'data.data.channel')\n if (_.isArray(data)) {\n data = data.map(i =>({\n id: i.value,\n text: i.name\n }))\n }\n // console.log('channelSelection: ', data);\n this.setState({\n channelSelection: data\n })\n }\n })\n }\n\n // 获取分支业务\n getAlarmBusinessItemSelects = val => {\n alarmBusinessItemSelects({\n type: val == 'other' ? '' : val\n }).then(res => {\n let code = _.get(res, 'data.code')\n let data = _.get(res, 'data.data')\n if (code === 0) {\n let op = []\n if (_.isArray(data)) {\n op = data.map(i => ({\n ...i,\n id: i.service_name,\n text: i.service_name\n }))\n }\n this.setState({\n alarmBusinessItems: op\n })\n }\n })\n }\n\n onGetTablecfgFields = () => {\n getTablecfgFields({\n id: this.state.formData.fk_id\n })\n .then(res => {\n if (res && res.data && res.data.code === 0) {\n let list = _.isArray(res.data.data) ? res.data.data : []\n this.setState({\n tablecfgFields: list\n })\n }\n })\n }\n\n initFormData = (record,execCycleArr,gettimer,show_time_range,pushLimitTimeArr,delay_timeArr) => {\n let formatJson = formatJsonParse(record.format_json, {})\n delete(record[\"modify_time\"])\n delete(record[\"modify_user\"])\n console.log(\"====init,formatJson\", record)\n let isCopyOprType = this.props.oprType === OPR_TYPE_MAP.copy\n\n let obj = {\n ...record,\n exec_cycle: execCycleArr[0] || '', // 监控频率\n monitor_freq_unit: execCycleArr[1] || '',\n recently_monitor: gettimer[0], // 监控最近\n recently_monitor_unit: gettimer[1],\n show_time: show_time_range[0], // 时间跨度\n show_time_unit: show_time_range[1],\n push_limit_time: pushLimitTimeArr[0] || '', // 告警频率\n alert_freq_unit: pushLimitTimeArr[1] || '',\n delay_time: delay_timeArr[0] || '', // 延迟时间\n delay_time_unit: delay_timeArr[1] || '',\n start_time: formatJson.start_time || '',\n end_time: formatJson.end_time || '',\n enable: isCopyOprType ? 0 : record.enable,\n is_task: isCopyOprType ? 0 : record.is_task\n }\n\n return obj\n }\n getAlarmCfgList = id => {\n getAlarmCfgList({\n search: JSON.stringify({\n id: {\n value: id,\n operator: '='\n }\n })\n })\n .then(res => {\n if (res && res.data && res.data.code === 0) {\n let record = _.isArray(res.data.data && res.data.data.items) ? res.data.data.items[0] : {}\n let handlerList = formatJsonParse(record.deal_users, [PERSON_OBJ])\n let copyMenList = formatJsonParse(record.duplicate_users, [PERSON_OBJ])\n let warnStrategyList = formatJsonParse(record.alarm_rules_json, [])\n let execCycleArr = !!record.exec_cycle ? record.exec_cycle.split('/') : []\n let pushLimitTimeArr = !!record.push_limit_time ? record.push_limit_time.split('/') : []\n let delay_timeArr = !!record.delay_time ? record.delay_time.split('/') : []\n let gettimer = !!record.gettimer ? record.gettimer.split('/') : []\n let show_time_range = !!record.show_time_range ? record.show_time_range.split('/') : []\n\n let newWarnStrategyList = warnStrategyList.reduce((prev, arr) => {\n if (_.isArray(arr)) {\n arr = arr.map(i => {\n if (i.rule_name === FIXED_VALUE && i.operator === 'lt') {\n return _.assign({}, i, {\n rule_name: FIXED_VALUE_LESS\n })\n } else {\n return i\n }\n })\n prev.push(arr)\n }\n\n return prev\n }, [])\n\n let formData = this.initFormData(record,execCycleArr,gettimer,show_time_range,pushLimitTimeArr,delay_timeArr)\n\n this.setState({\n formData,\n currentAlarmData: record,\n warnStrategyList: newWarnStrategyList, // 预警策略\n handlerList: handlerList.map(i => {\n return {\n decorate: i.decorate,\n related_field: i.related_field,\n user_type: i.user_type\n }\n }), // 处理人\n copyMenList: copyMenList.map(i => {\n return {\n decorate: i.decorate,\n related_field: i.related_field,\n user_type: i.user_type\n }\n }), // 抄送人\n })\n }\n })\n }\n\n validateFun = val => {\n if (!!val) {\n return true\n }\n return '该输入项不能为空'\n }\n validateIntegerFun = val => {\n if(/-/.test(val)){\n return '请输入正数'\n }\n if (!!val) {\n return true\n }\n return '该输入项不能为空'\n }\n validateWarnFieldFun = val => {\n if (Array.isArray(val.ids) && val.ids.length === 2) {\n return true\n }\n return '该输入项不能为空'\n }\n\n addStrategy = () => {\n this.setState({\n sholdCheckValidate: false,\n warnStrategyList: [...this.state.warnStrategyList, [DEFAULT_ITEM_OBJ]]\n })\n }\n\n removeStrategy = index => {\n let arr = _.cloneDeep(this.state.warnStrategyList)\n arr.splice(index, 1)\n\n this.setState({\n warnStrategyList: arr\n })\n }\n\n updateWarnStrategyList = (firstIndex, type, secondIndex, obj) => {\n\n // 手动触发check检查,置为false\n this.resetCheckValidate()\n\n let { warnStrategyList } = this.state\n\n // check\n if (!warnStrategyList[firstIndex]) return\n\n let curWarnStrategy = _.cloneDeep(warnStrategyList)\n\n // add\n if (type === STRATEGY_TYPE_MAP.add) {\n curWarnStrategy[firstIndex].push(DEFAULT_ITEM_OBJ)\n this.setState({\n warnStrategyList: curWarnStrategy\n })\n return\n }\n\n // del\n if (type === STRATEGY_TYPE_MAP.del) {\n curWarnStrategy[firstIndex].splice(secondIndex, 1)\n this.setState({\n warnStrategyList: curWarnStrategy\n })\n return\n }\n\n // update\n if (type === STRATEGY_TYPE_MAP.update && !_.isEmpty(obj)) {\n curWarnStrategy[firstIndex].splice(secondIndex, 1, obj)\n this.setState({\n warnStrategyList: curWarnStrategy\n })\n }\n }\n\n updateHanderList = (index, type, obj) => {\n\n // 手动触发check检查,置为false\n this.resetCheckValidate()\n\n let { handlerList } = this.state\n let arr = _.cloneDeep(handlerList)\n\n // add\n if (type === STRATEGY_TYPE_MAP.add) {\n arr.push(PERSON_OBJ)\n this.setState({\n handlerList: arr\n })\n return\n }\n\n // del\n if (type === STRATEGY_TYPE_MAP.del) {\n arr.splice(index, 1)\n this.setState({\n handlerList: arr\n })\n return\n }\n\n // update\n if (type === STRATEGY_TYPE_MAP.update && !_.isEmpty(obj)) {\n arr.splice(index, 1, obj)\n this.setState({\n handlerList: arr\n })\n }\n }\n\n updateCopyMenList = (index, type, obj) => {\n let { copyMenList } = this.state\n let arr = _.cloneDeep(copyMenList)\n\n // add\n if (type === STRATEGY_TYPE_MAP.add) {\n arr.push(PERSON_OBJ)\n this.setState({\n copyMenList: arr\n })\n return\n }\n\n // del\n if (type === STRATEGY_TYPE_MAP.del) {\n arr.splice(index, 1)\n this.setState({\n copyMenList: arr\n })\n return\n }\n\n // update\n if (type === STRATEGY_TYPE_MAP.update && !_.isEmpty(obj)) {\n arr.splice(index, 1, obj)\n this.setState({\n copyMenList: arr\n })\n }\n }\n\n resetCheckValidate = (flag = false) => {\n this.setState({\n sholdCheckValidate: flag\n })\n }\n checkIsPassValidate = (formData ,warnStrategyList, handlerList) => {\n let notNull = [ val => val !== '' ]\n let notEmptyRule = [ val => _.isString(val) && !!val.trim()]\n let monitorTypeValidate = [ val => !!val ] // 接口的0也标识空\n let isPostiveNumberRule = [ val => _.isString(val) && !!val.trim() && !/-/.test(val) ]\n let isNumberRule = [ val => _.isNumber(val) ]\n let rulers = {\n alarm_rule_name: notEmptyRule, // 规则名称\n module: notEmptyRule, //所属模块\n dimension_field: notEmptyRule, // 预警维度\n\n ...formData.module == '6' ? {\n tendency: notEmptyRule, // 时序指标\n recover_point: notNull, // 恢复点\n alarm_repeat_point: notNull, // 二次预警\n } : {},\n\n alarm_title: notEmptyRule, // 标题\n alarm_content: notEmptyRule, // 标题\n fk_id: isNumberRule, // 数据源\n alarm_field: notEmptyRule, // 预警字段\n date_field: notEmptyRule, // 时间字段\n exec_cycle: isPostiveNumberRule, // 监控频率\n monitor_freq_unit: notEmptyRule,\n show_time: notEmptyRule, // 时间跨度\n show_time_unit: notEmptyRule,\n recently_monitor: notEmptyRule, // 监控最近\n recently_monitor_unit: notEmptyRule,\n push_limit_time: isPostiveNumberRule, // 告警频率\n alert_freq_unit: notEmptyRule,\n push_limit_plot: isPostiveNumberRule, // 告警频率--每策略\n enable: isNumberRule, // 是否可用\n send_type: notEmptyRule, // 推送方式\n monitor_type: monitorTypeValidate, // 监控类型\n }\n // 处理人是一维数组,进行pass判断\n let handlerListPass = !handlerList.some(i => {\n return i.user_type === 'input' ? !i.related_field : (!i.related_field || !i.decorate)\n })\n // 预警策略是二维数组,进行pass判断\n let warnStrategyListPass = !warnStrategyList.some(list => list.some(i => {\n if (i.rule_name === FIXED_VALUE) {\n\n // 固定值只需要有最小值\n return !i.left_value || !i.data_cycle\n } else if (i.rule_name === FIXED_VALUE_LESS) {\n\n // 固定值只需要有最大值\n return !i.right_value || !i.data_cycle\n } else {\n if( /-/.test(i.data_cycle)) return true\n // 突增突降需要填写后面的两项\n return !i.data_cycle || !i.operator\n }\n }))\n return isCheck(rulers, formData) && handlerListPass && warnStrategyListPass\n }\n setErrorMsg = (errName, val) => {\n this.setState({[errName]:val})\n }\n dealBeforeRequetParam = (formData,warnStrategyList,handlerList,duplicateUsers) => {\n let newWarnStrategyList = warnStrategyList.reduce((prev, arr) => {\n if (_.isArray(arr)) {\n arr = arr.map(i => {\n let name = i.rule_name\n if (name === FIXED_VALUE) {\n return _.assign({}, i, {\n operator: 'gt'\n })\n } else if (name === FIXED_VALUE_LESS) {\n return _.assign({}, i, {\n rule_name: FIXED_VALUE,\n operator: 'lt'\n })\n } else {\n return i\n }\n })\n prev.push(arr)\n }\n\n return prev\n }, [])\n formData.alarm_rules_json = JSON.stringify(newWarnStrategyList)\n formData.exec_cycle = `${formData.exec_cycle}/${formData.monitor_freq_unit}`\n formData.gettimer = `${formData.recently_monitor}/${formData.recently_monitor_unit}`\n formData.show_time_range = `${formData.show_time}/${formData.show_time_unit}`\n formData.push_limit_time = `${formData.push_limit_time}/${formData.alert_freq_unit}`\n formData.delay_time = `${formData.delay_time}/${formData.delay_time_unit}`\n formData.deal_users = JSON.stringify(handlerList)\n formData.duplicate_users = duplicateUsers\n\n // // 固定参数:schedule_time、format_json\n // let nextMin = formatTime(+new Date() + 60 * 1000, 0) // 该字段为时间字段,内容为用户提交时间+1分钟\n // formData.schedule_time = nextMin\n formData.format_json = JSON.stringify({\n start_time: formData.start_time,\n end_time: formData.end_time\n })\n\n // 如果是复制按钮逻辑:不需要下发id\n if (this.props.oprType === OPR_TYPE_MAP.copy) delete formData.id\n return formData\n }\n handleSubmit = () => {\n\n let {formData, copyMenList ,warnStrategyList, handlerList, } = this.state\n let { isEdit, currentAlarmID, oprType } = this.props\n\n console.log('---formData: ', formData);\n\n // 复制按钮,逻辑走新增接口\n let isUpdate = (isEdit && oprType === OPR_TYPE_MAP.edit)\n\n let isValidatePass = this.checkIsPassValidate(formData ,warnStrategyList, handlerList)\n if (!isValidatePass) {\n // 手动触发check检查\n this.resetCheckValidate(true)\n return\n }\n\n let duplicateUsers = (copyMenList[0] && !!copyMenList[0].user_type) ? JSON.stringify(copyMenList) : null\n let params = this.dealBeforeRequetParam(formData,warnStrategyList,handlerList,duplicateUsers)\n console.log(\"====\", params)\n console.log(\"====\", params.target_name_ch)\n let api = isUpdate ? updateAlarmConf : insertAlarmConf\n api({\n ...isUpdate ? {\n id: currentAlarmID\n } : {},\n field: params\n }).then(res => {\n\n if (res && res.data && res.data.code === 0) {\n let msg = isEdit ? '编辑规则成功' : '新增规则成功'\n SdwMessage.success(msg)\n this.props.changeVisibleFun(false)\n this.props.getAlarmCfgList()\n } else {\n let msg = isEdit ? '编辑规则失败' : '新增规则失败'\n SdwMessage.error(msg)\n }\n })\n .catch(() => SdwMessage.error(\"接口异常\"))\n }\n\n setFormDataProp = (name,value) => {\n\n if (name === 'schedule_time') {\n value = formatTime(+new Date(value), 0)\n }\n\n this.setState({\n formData: {\n ...this.state.formData,\n [name]: value\n }\n })\n }\n\n render() {\n let {\n warnStrategyList,\n handlerList,\n copyMenList,\n sholdCheckValidate,\n tablecfgFields,\n allMembers,\n dataSourceOptions,\n formData,\n alarmItemSelection,\n alarmBusinessItems,\n channelSelection\n } = this.state\n\n let hasnoFkId = !formData.fk_id\n\n let warnDementionOptions = tablecfgFields.map(i => {\n return {\n id: i.field_name,\n text: !!i.field_name_ch ? `${i.field_name}(${i.field_name_ch})` : i.field_name\n }\n })\n\n // 嘉濠定的规则:只展示 2160 的项\n let relatedOption = tablecfgFields.filter(j => j.field_ref_standard == 2160).map(i => {\n return {\n id: i.field_name,\n text: !!i.field_name_ch ? `${i.field_name}(${i.field_name_ch})` : i.field_name\n }\n })\n\n let businessOption = _.isArray(alarmItemSelection.bussiness) ? alarmItemSelection.bussiness.map(i => {\n return {\n id: i.value,\n text: i.name\n }\n }) : []\n\n return (\n
\n
\n 规则名称\n this.setFormDataProp('alarm_rule_name' , val)} />\n
\n\n
\n 推送文案\n this.setFormDataProp('alarm_content' , val)} />\n
\n\n
\n 展示标题\n this.setFormDataProp('alarm_title' , val)} />\n
\n\n
\n
\n 所属模块\n this.setFormDataProp('module' , val)}\n />\n
\n
\n 推送方式\n this.setFormDataProp('send_type' , val)} />\n
\n
\n\n
\n
\n 所属业务\n {\n this.setState({\n formData: {\n ...this.state.formData,\n owner_business: val,\n branch_business: ''\n }\n })\n this.getAlarmBusinessItemSelects(val)\n }} />\n
\n
\n 分支业务\n this.setFormDataProp('branch_business' , val)} />\n
\n
\n\n
\n
\n 监控类型\n this.setFormDataProp('monitor_type' , val)} />\n
\n
\n 所属渠道\n this.setFormDataProp('channel' , val)} />\n
\n
\n\n
\n 标签\n this.setFormDataProp('label' , val)} />\n
\n\n
\n 数据源\n this.setState({\n formData: {\n ...this.state.formData,\n fk_id: val,\n alarm_field: '',\n dimension_field: '',\n date_field: ''\n }\n })} />\n
\n
\n
\n 预警字段\n this.setState({\n formData: {\n ...this.state.formData,\n alarm_field: val\n }\n })} />\n
\n
\n 字段转义\n this.setFormDataProp('target_name_ch' , val)} />\n
\n
\n
\n
\n 预警维度\n this.setFormDataProp('dimension_field' , val)} />\n
\n
\n 时间字段\n k.field_type === 'date').map(i => {\n return {\n id: i.field_name,\n text: !!i.field_name_ch ? `${i.field_name}(${i.field_name_ch})` : i.field_name\n }\n })}\n onChange={val => this.setFormDataProp('date_field' , val)} />\n
\n
\n\n
\n
\n 维度值\n this.setFormDataProp('dimension_value' , val)} />\n
\n
\n 维度转义\n this.setFormDataProp('dimension_value_name' , val)} />\n
\n
\n\n
\n
\n 维度单位\n this.setFormDataProp('dimension_value_unit' , val)} />\n
\n
\n\n
\n 过滤条件\n this.setFormDataProp('filter_str' , val)} />\n
\n\n {/*
\n 关联指标\n this.setFormDataProp('relatedIndicators' , val)}\n />\n
*/}\n\n {\n warnStrategyList.map((strategy, index) => (\n
\n \n {\n !!index > 0 &&\n this.removeStrategy(index)} className=\"el-icon-minus\">\n }\n {`预警策略${index + 1}`}\n \n \n
\n ))\n }\n\n
\n 添加策略\n
\n\n {/* 模块选择时序算法 */}\n {\n formData.module == '6' &&\n <>\n
\n 时序指标\n this.setFormDataProp('tendency' , val)}\n />\n
\n
\n
\n 恢复点\n \n val !== '' || '该输入项不能为空'}\n sholdCheckValidate={sholdCheckValidate}\n onChange={val => this.setFormDataProp('recover_point' , val)}\n />\n \n \n
\n\n
\n 二次预警\n \n val !== '' || '该输入项不能为空'}\n sholdCheckValidate={sholdCheckValidate}\n onChange={val => this.setFormDataProp('alarm_repeat_point' , val)}\n />\n \n \n
\n
\n \n }\n\n
\n 起始时间\n this.setFormDataProp('schedule_time' , date)}\n />\n
\n\n
\n\n
\n 监控频率\n this.setFormDataProp('exec_cycle' , val)}\n />\n \n this.setFormDataProp('monitor_freq_unit' , val)}\n />\n \n
\n\n
\n 监控周期\n this.setFormDataProp('recently_monitor' , val)}\n />\n \n this.setFormDataProp('recently_monitor_unit' , val)}\n />\n \n
\n
\n\n
\n
\n 延迟时间\n this.setFormDataProp('delay_time' , val)}\n />\n \n this.setFormDataProp('delay_time_unit' , val)}\n />\n \n
\n\n
\n 展示时间跨度\n this.setFormDataProp('show_time' , val)}\n />\n \n this.setFormDataProp('show_time_unit' , val)}\n />\n \n
\n\n
\n
\n 展示时间格式\n this.setFormDataProp('start_time' , val)}\n />\n -\n this.setFormDataProp('end_time' , val)}\n />\n
\n
\n 告警频率\n this.setFormDataProp('push_limit_time' , val)}\n />\n \n this.setFormDataProp('alert_freq_unit' , val)}\n />\n \n\n \n this.setFormDataProp('push_limit_plot' , val)}\n />\n \n \n
\n
\n 跳转链接\n this.setFormDataProp('jump_url' , val)} />\n
\n\n\n
\n 处理人\n \n
\n\n
\n 抄送人\n \n
\n\n
\n 备注\n this.setFormDataProp('comment' , val)} />\n
\n\n
\n 是否可用\n this.setFormDataProp('enable' , val)}\n />\n
\n\n
\n 创建任务\n this.setFormDataProp('is_task' , val)}\n />\n
\n
\n )\n }\n}\n","import { useState, useEffect } from 'react'\nimport SdwDialog from '@common/Dialog'\nimport SdwLayout from '@common/Layout'\nimport SdwTable from '@common/Table'\nimport { DatePicker } from 'element-react'\nimport { formatTime } from '@utils/formatTime'\n\nimport './style/over-view.css'\n\nexport default function OverViewWin(props) {\n\n const [visibal, setVisibal] = useState(props.showOverViewWin)\n const [datePicker, setDatePicker] = useState(new Date())\n const [dataList, setDataList] = useState([\n {\n \"date\": \"161.57\",\n \"value\": \"18.8\"\n }\n ])\n const [dataList2, setDataList2] = useState([\n {\n \"date\": \"2021-01-14 15:15:00\",\n \"value\": \"66\"\n }, {\n \"date\": \"2021-01-14 15:15:00\",\n \"value\": \"77\"\n }\n ])\n\n useEffect(() => {\n props.changeVisible(visibal)\n }, [visibal])\n \n useEffect(() => {\n console.log('currentAlarmID: ', props.currentAlarmID);\n }, [props.currentAlarmID])\n \n useEffect(() => {\n let time = formatTime(+new Date(datePicker), 0)\n console.log('time: ', time);\n }, [datePicker])\n\n function getcolumns() {\n return [\n {\n title: \"均值\",\n dataIndex: \"date\",\n }, {\n title: \"3倍标准差\",\n dataIndex: \"value\",\n }\n ]\n }\n\n function getcolumns2() {\n return [\n {\n title: \"日期\",\n dataIndex: \"date\",\n }, {\n title: \"数据值\",\n dataIndex: \"value\",\n }\n ]\n }\n\n return (\n setVisibal(false)}\n onSureClick={() => setVisibal(false)}\n >\n
\n time.getTime() > Date.now()}\n onChange={setDatePicker}\n />\n
\n\n
\n \n \n 标题\n xxx\n \n \n 标签\n xxx\n \n \n\n \n \n 当前值\n xxx\n \n \n 异动情况\n xxx\n \n \n\n \n \n 预警时间\n xxx\n \n \n 目标值\n xxx\n \n \n
\n\n
\n \n
\n\n
\n \n
\n \n )\n}","import React, { PureComponent } from 'react'\nimport _ from 'lodash'\nimport { Button } from 'element-react'\nimport SdwTable from '@common/Table'\nimport SdwPagenation from '@common/Pagenation'\nimport SdwInput from '@common/Input'\nimport SdwBreadCrumbs from '@common/BreadCrumbs'\nimport SdwSelect from '@common/Select'\nimport SdwDrawer from '@common/Drawer'\nimport EditControlWin from './EditControlWin'\nimport OverViewWin from './OverViewWin'\nimport { getAlarmCfgList, getAllTablecfg } from '@services/alertRules'\nimport { MODULE_ID_OPTIONS, OPR_TYPE_MAP } from \"./common\";\n\nimport './style/index.css'\n\nclass MonitorControl extends PureComponent {\n editControlWinRef = React.createRef()\n\n state = {\n oprType: OPR_TYPE_MAP.edit,\n alarm_rule_name: '',\n module_id: '',\n ruleID: '',\n dataSource: '',\n enableValue: '',\n ruleName: '',\n alarmField: '',\n tableData: {},\n curPage: 1,\n curLimit: 10,\n enableOptios: [{\n value: 1,\n label: '是'\n }, {\n value: 0,\n label: '否'\n }],\n dataSourceOptions: [],\n showEditControlWin: false,\n currentAlarmID: '',\n isEdit: false,\n showOverViewWin: false\n }\n\n componentDidMount () {\n this.getAlarmCfgList()\n this.getAllTablecfg()\n }\n\n componentDidUpdate (prevProps, prevState) {\n\n if (\n !_.isEqual(prevState.curPage, this.state.curPage) ||\n !_.isEqual(prevState.curLimit, this.state.curLimit)\n ) {\n this.getAlarmCfgList()\n }\n }\n\n getAllTablecfg = () => {\n getAllTablecfg().then(res => {\n if (res && res.data && res.data.code === 0) {\n let list = _.isArray(res.data.data) ? res.data.data : []\n this.setState({\n dataSourceOptions: list.map(i => {\n return {\n id: i.id,\n text: `${i.database_name}(${i.data_set_chinese})`\n }\n })\n })\n }\n })\n }\n\n getAlarmCfgList = () => {\n let { curPage, curLimit, ruleID, ruleName, dataSource, alarmField, enableValue, module_id, alarm_rule_name } = this.state\n\n let searchParams = JSON.stringify({\n ...module_id ? {\n module: {\n value: module_id,\n operator: '='\n }\n } : {},\n ...alarm_rule_name ? {\n alarm_rule_name: {\n value: `%${alarm_rule_name}%`,\n operator: 'like'\n }\n } : {},\n ...ruleID ? {\n id: {\n value: ruleID,\n operator: '='\n }\n } : {},\n ...ruleName ? {\n alarm_title: {\n value: `%${ruleName}%`,\n operator: 'like'\n }\n } : {},\n ...dataSource ? {\n fk_id: {\n value: dataSource,\n operator: '='\n }\n } : {},\n ...alarmField ? {\n alarm_field: {\n value: `%${alarmField}%`,\n operator: 'like'\n }\n } : {},\n ...!_.isEqual(enableValue, '') ? {\n enable: {\n value: enableValue,\n operator: '='\n }\n } : {}\n })\n\n getAlarmCfgList({\n page: curPage,\n limit: curLimit,\n search: searchParams\n })\n .then(res => {\n if (res && res.data && res.data.code === 0) {\n this.setState({\n tableData: res.data.data || {}\n })\n }\n })\n }\n\n getColumns = () => {\n let { dataSourceOptions } = this.state\n let self = this\n return [\n {\n title: \"ID\",\n width: 36,\n dataIndex: \"id\"\n },\n {\n width: 318,\n title: \"规则名称\",\n render: data => (\n { data.alarm_rule_name }\n )\n },\n {\n width: 70,\n title: \"所属模块\",\n render: data => {\n let text = _.get(MODULE_ID_OPTIONS.filter(i => i.id === data.module), '[0].text')\n return (\n { !!text ? text : '-' }\n )\n }\n },\n {\n width: 96,\n title: \"预警数据源\",\n render: data => (\n { _.isArray(dataSourceOptions) ? (\n _.get(dataSourceOptions.filter(i =>i.id === data.fk_id)[0], 'text') || '-'\n ) : data.dimension_field }\n )\n },\n {\n width: 96,\n title: \"预警字段\",\n dataIndex: \"alarm_field\"\n },\n {\n width: 70,\n title: \"维度转义\",\n dataIndex: \"dimension_value_name\"\n },\n {\n width: 56,\n title: \"创建任务\",\n render: data => (\n { !data.is_task ? '否' : '是' }\n )\n },\n {\n title: \"是否有效\",\n width: 56,\n render: function (data, record) {\n return (\n <>\n {\n _.isEqual(typeof data.enable, 'number') && \n }\n {_.isEqual(typeof data.enable, 'number') ?\n (data.enable ? '有效' : '无效') : '-'}\n \n )\n }\n },\n {\n title: \"修改人\",\n width: 58,\n dataIndex: \"modify_user\"\n },\n {\n width: 106,\n title: \"修改时间\",\n dataIndex: \"modify_time\"\n },\n {\n width: 68,\n title: \"操作\",\n render: function (data, record) {\n return (\n \n self.handleEdit(data, OPR_TYPE_MAP.edit) }\n >编辑\n self.handleEdit(data, OPR_TYPE_MAP.copy) }\n >复制\n {/* 这期暂时不做,下个版本做 */}\n {/* self.handleOverView(data) }\n >预警预览 */}\n \n )\n }\n }\n ]\n }\n\n handleEdit = (data, oprType = OPR_TYPE_MAP.edit) => {\n this.setState({\n currentAlarmID: data.id,\n showEditControlWin: true,\n isEdit: true,\n oprType\n })\n }\n\n handleOverView = data => {\n this.setState({\n currentAlarmID: data.id,\n showOverViewWin: true\n })\n }\n\n render () {\n\n let {\n enableOptios,\n dataSourceOptions,\n ruleID,\n dataSource,\n enableValue,\n alarmField,\n tableData,\n ruleName,\n showEditControlWin,\n isEdit,\n currentAlarmID,\n module_id,\n alarm_rule_name,\n oprType,\n showOverViewWin\n } = this.state\n\n return (\n
\n \n\n
\n
\n \n this.setState({curPage: 1, ruleID: val})}\n onBlur={this.getAlarmCfgList}\n />\n \n \n this.setState({curPage: 1, alarm_rule_name: val})}\n onBlur={this.getAlarmCfgList}\n />\n \n\n \n {/* this.setState({ruleID: val})}\n onBlur={this.getAlarmCfgList}\n onEnterKeyDown={this.getAlarmCfgList}\n /> */}\n this.setState({curPage: 1, module_id: val}, this.getAlarmCfgList)}\n />\n \n\n \n {/* this.setState({ruleName: val})}\n onBlur={this.getAlarmCfgList}\n onEnterKeyDown={this.getAlarmCfgList}\n /> */}\n console.log(val)}\n />\n \n\n \n this.setState({curPage: 1, dataSource: val}, this.getAlarmCfgList)}\n />\n \n\n {/* \n this.setState({alarmField: val})}\n onBlur={this.getAlarmCfgList}\n onEnterKeyDown={this.getAlarmCfgList}\n />\n */}\n\n \n {\n return {\n id: el.value,\n text: el.label\n }\n })}\n onChange={val => this.setState({curPage: 1, enableValue: val}, this.getAlarmCfgList)}\n />\n \n\n \n this.setState({\n showEditControlWin: true,\n isEdit: false\n })}\n >添加规则\n \n
\n\n \n\n
\n {\n this.setState({\n curPage: page\n })\n } }\n pageCountChange={ limit => {\n this.setState({\n curLimit: limit\n })\n } }\n />\n
\n
\n\n this.setState({ showEditControlWin: false })}\n onCancelClick={() => this.setState({ showEditControlWin: false })}\n onSureClick={() => this.editControlWinRef.current.handleSubmit()}\n >\n \n this.setState({ showEditControlWin: flag })}\n getAlarmCfgList={this.getAlarmCfgList}\n />\n \n \n\n {\n showOverViewWin &&\n this.setState({showOverViewWin: bool})}\n />\n }\n
\n )\n }\n}\n\nexport default MonitorControl\n","// true则通过 false则错误提示\nimport _ from \"lodash\";\n\nexport const notEmpty = (val) => {\n return !!val.trim()\n}\n\nexport const genLesslength = (len) => {\n return (val) => val.trim().length > len\n}\n\nexport const genGreaterlength = (len) => {\n return (val) => val.trim().length < len\n}\n\nexport const isInteger = (val) => {\n if(val !== '') val = Number(val)\n return _.isInteger(val)\n}","export const TIME_CYCLE_OPTIONS = [\n {\n id: '1d',\n text: '最近1天'\n },\n {\n id: '7d',\n text: '最近7天'\n },\n {\n id: '1m',\n text: '最近1个月'\n },\n {\n id: '30d',\n text: '最近30天'\n },\n {\n id: '1h',\n text: '最近1小时'\n },\n {\n id: 'mtd',\n text: '月初截止到当天'\n },\n {\n id: 'b2d',\n text: '2天前'\n },\n {\n id: 'b5d',\n text: '5天前'\n },\n {\n id: 'b7d',\n text: '7天前'\n },\n {\n id: 'b29d',\n text: '29天前'\n },\n {\n id: 'dth',\n text: '零点截止到当前小时'\n },\n {\n id: 'ytm',\n text: '年初截止到当月'\n },\n {\n id: 'asm',\n text: '考核月截止至当天'\n }\n]","import React, { Component } from 'react'\nimport _ from \"lodash\";\n\nimport SdwSelect from '@common/Select'\nimport SdwInput from '@common/Input'\nimport SdwMessage from '@common/Message'\nimport Form from \"@common/Form_D\";\n\nimport { notEmpty,isInteger } from \"@utils/validateFun\";\n\nimport { insertIndicatorConf,updateIndicatorConf,deleteTarget } from \"@services/operationConfiguration\";\n\nimport \"../style/EditBusinessIndicaWin.css\";\nimport { TIME_CYCLE_OPTIONS } from \"../utils/const\";\n\n\nconst Target_VALUE_ITEM = {\n target_id: '', //指标\n target_name: '', //指标英文名\n target_rule: { //目标值范围\n left_value: '',\n operator: 'AND',\n right_value: ''\n },\n alarm_rule: { //预警值范围\n left_value: '',\n operator: 'AND',\n right_value: ''\n }\n}\nconst OPRATOR_OPTION = [\n {\n id: 'AND',\n text: '且'\n },\n {\n id: 'OR',\n text: '或'\n }\n]\n\nexport default class EditBusinessIndicaWin extends Component {\n form = React.createRef()\n state = {\n formData: {\n dimension_value: '',\n dimension_id: '',\n dimension_name: '',\n time_cycle: '',\n\n target_value_configuration: [\n Target_VALUE_ITEM\n ]\n },\n rules: {\n dimension_id: [{ func: isInteger, message: '请选择指标维度' }],\n time_cycle: [{ func: notEmpty, message: '请选择统计周期' }],\n dimension_value: [{ func: notEmpty, message: '请输入纬度值' }],\n target_value_configuration: [{ func: (val) => {\n if (val[0].target_id === '') {\n return false\n }\n return true \n }, message: '请选择指标' }],\n },\n deleteTargetList:[],\n }\n componentDidMount(){\n let {currentConf,isEdit} = this.props\n if(isEdit) {\n currentConf = _.cloneDeep(currentConf)\n this.initTargetValueConfig(currentConf)\n this.setState({\n formData: currentConf\n })\n }\n }\n initTargetValueConfig = (currentConf) => {\n let {target_value_configuration} = currentConf\n if ( Array.isArray(target_value_configuration) ) {\n currentConf.target_value_configuration = target_value_configuration.map(i => {\n let {alarm_rule,target_rule} = i\n alarm_rule = this.processTargetRule(alarm_rule)\n target_rule = this.processTargetRule(target_rule)\n return {\n ...i,\n alarm_rule,\n target_rule\n }\n })\n }\n }\n processTargetRule = (rule) => {\n if(rule) {\n let tempArr = rule.replace(/[><]/g,'').split(' ')\n return {\n left_value: Number(tempArr[0]),\n operator: tempArr[1],\n right_value: Number(tempArr[2])\n }\n }else{\n return {\n left_value: '',\n operator: 'AND',\n right_value: ''\n }\n }\n }\n setFormDataProps = (name, value,item) => {\n if(name === 'dimension_id') {\n this.setState({\n formData: {\n ...this.state.formData,\n [name]: value,\n dimension_name: item.field_name\n }\n })\n }else{\n this.setState({\n formData: {\n ...this.state.formData,\n [name]: value\n }\n })\n }\n }\n processTargetValueConf = (params) => {\n let {dimension_value,dimension_id,dimension_name,time_cycle, target_value_configuration} = params\n params.target_value_configuration = target_value_configuration.map(item => {\n let target_rule = `>${item.target_rule.left_value} ${item.target_rule.operator} <${item.target_rule.right_value}`\n let alarm_rule = `>${item.alarm_rule.left_value} ${item.alarm_rule.operator} <${item.alarm_rule.right_value}`\n return {\n ...item,\n dimension_value,\n dimension_id,\n dimension_name,\n time_cycle,\n target_rule: target_rule,\n alarm_rule: alarm_rule\n }\n })\n }\n handleSubmit = () => {\n let {isEdit,currentConf} = this.props\n let api = isEdit ? updateIndicatorConf : insertIndicatorConf\n this.form.current.validate(valid => {\n if (valid) {\n let {formData} = this.state\n let params = _.cloneDeep(formData)\n this.processTargetValueConf(params)\n let target_value_configuration= params.target_value_configuration\n api({ \n ...isEdit ? {\n id: currentConf.id\n } : {},\n field: params,\n target_value_configuration\n }).then(res => {\n if (res && res.data && res.data.code === 0) {\n this.onDeleteTarget()\n let msg = isEdit ? '编辑配置成功' : '添加配置成功'\n SdwMessage.success(msg)\n this.props.changeVisibleFun(false)\n this.props.getBusinessIndicatorsCfgListBySearch()\n } else {\n let msg = isEdit ? '编辑配置失败' : '添加配置失败'\n SdwMessage.error(msg)\n }\n }).catch(() => SdwMessage.error(\"接口异常\"))\n }\n })\n }\n addTargetConfig = () => {\n let { target_value_configuration } = this.state.formData\n target_value_configuration = _.cloneDeep(target_value_configuration)\n target_value_configuration.push(Target_VALUE_ITEM)\n this.setState({\n formData: {\n ...this.state.formData,\n target_value_configuration\n }\n })\n }\n removeTargetConfig = (index) => {\n let { target_value_configuration } = this.state.formData\n let delObj = target_value_configuration.splice(index, 1)[0]\n if(delObj && delObj.id) {\n this.state.deleteTargetList.push(delObj.id)\n }\n this.setState({\n formData: {\n ...this.state.formData\n }\n })\n }\n setTargetValueConfItemValue = (name, value, index, prop) => {\n let { target_value_configuration } = this.state.formData\n target_value_configuration = _.cloneDeep(target_value_configuration)\n if( name === 'target_rule' || name === 'alarm_rule') {\n target_value_configuration[index][name][prop] = value\n }else if(name === 'target_id') {\n target_value_configuration[index][name] = value.id\n target_value_configuration[index].target_name = value.target_name\n }\n else{\n target_value_configuration[index][name] = value\n }\n this.setState({\n formData: {\n ...this.state.formData,\n target_value_configuration\n }\n })\n }\n onDeleteTarget = () => {\n if(this.state.deleteTargetList.length > 0){\n deleteTarget({\n ids:this.state.deleteTargetList\n })\n }\n }\n render() {\n let { formData, rules } = this.state\n let {indicatorsDimentionList,targetList} = this.props\n let target_value_configuration = formData.target_value_configuration\n return (\n
\n
\n
\n \n this.setFormDataProps('dimension_id', val,item)}\n />\n \n
\n
\n \n ({id: item.id, text: `${item.id}(${item.text})`}))}\n onChange={val => this.setFormDataProps('time_cycle', val)}\n />\n \n
\n
\n \n this.setFormDataProps('dimension_value', val)}\n />\n \n \n 添加\n \n {\n Array.isArray(target_value_configuration) &&\n target_value_configuration.map((item, index) => {\n let {target_rule, alarm_rule,target_id} = item\n return (\n
\n \n i.target_id),\n key: 'id',\n tip: '同一配置下,每个指标只能配置1次,请勿重复配置'\n }}\n data={targetList}\n onChange={(val,item) => this.setTargetValueConfItemValue('target_id', item, index)}\n />\n \n
\n
\n 目标值范围\n
\n this.setTargetValueConfItemValue('target_rule', val, index, 'left_value')}\n />\n
\n
\n this.setTargetValueConfItemValue('target_rule', val, index, 'operator')}\n />\n
\n
\n this.setTargetValueConfItemValue('target_rule', val, index, 'right_value')}\n />\n
\n
\n
\n 预警值范围\n
\n this.setTargetValueConfItemValue('alarm_rule', val, index, 'left_value')}\n />\n
\n
\n this.setTargetValueConfItemValue('alarm_rule', val, index, 'operator')}\n />\n
\n
\n this.setTargetValueConfItemValue('alarm_rule', val, index, 'right_value')}\n />\n
\n
\n
\n { index > 0 &&
this.removeTargetConfig(index)} className=\"target_value_configuration-close iconfont icon-close\">
}\n
\n )})\n }\n
\n )\n }\n}","import React, { Component } from 'react'\n\nimport SdwSelect from '@common/Select'\nimport SdwTable from '@common/Table'\nimport SdwPagenation from '@common/Pagenation'\nimport SdwDrawer from '@common/Drawer'\nimport { Button } from 'element-react'\nimport EditBusinessIndicaWin from \"./EditBusinessIndicaWin\";\n\nimport { getIndicatorConfItems,getIndicators,getTargets } from \"@services/operationConfiguration\";\n\nimport _ from 'lodash'\nimport '../style/BusinessIndicatorsOperation.css'\nimport { TIME_CYCLE_OPTIONS } from \"../utils/const\";\nimport { hasPriv } from '@components/FrontendAuth/AuthMap'\n\n\nexport default class BusinessIndicatorsOperation extends Component {\n editBusinessIndicaRef = React.createRef()\n state = {\n dimension_id: '', //指标维度\n time_cycle: '', //统计周期\n\n tableData: {},\n showEditBusinessIndicaWin: false,\n isEdit: false,\n currentConf: '',\n indicatorsDimentionList: [],\n targetList:[],\n\n curPage: 1,\n curLimit: 10,\n }\n componentDidMount () {\n this.getBusinessIndicatorsCfgListBySearch()\n this.getIndicatorsDimensionOptions()\n this.onGetTargets()\n }\n\n componentDidUpdate (prevProps, prevState) {\n if (\n !_.isEqual(prevState.curPage, this.state.curPage) ||\n !_.isEqual(prevState.curLimit, this.state.curLimit)\n ) {\n this.getBusinessIndicatorsCfgListBySearch()\n }\n }\n\n onGetTargets = () => {\n getTargets().then(res => {\n if (res && res.data && res.data.code === 0) {\n let targetList = res.data.data || []\n targetList = targetList.map(i => ({\n id: i.id,\n text: i.target_name_cn + '(' + i.target_name + ')',\n target_name: i.target_name\n }))\n this.setState({\n targetList\n })\n }\n })\n }\n\n getIndicatorsDimensionOptions = () => {\n getIndicators().then(res => {\n if (res && res.data && res.data.code === 0) {\n let indicatorsDimentionList = res.data.data || []\n indicatorsDimentionList = indicatorsDimentionList.map(i => ({\n id: i.id,\n text: i.field_name_ch + '(' + i.field_name + ')',\n field_name: i.field_name\n }))\n this.setState({\n indicatorsDimentionList\n })\n }\n })\n }\n\n getBusinessIndicatorsCfgListBySearch = () => {\n let { curPage, curLimit, dimension_id, time_cycle } = this.state\n let searchParams = JSON.stringify({\n ...dimension_id ? {\n dimension_id: {\n value: dimension_id,\n operator: '='\n }\n } : {},\n ...time_cycle ? {\n time_cycle: {\n value: time_cycle,\n operator: '='\n }\n } : {}\n })\n\n getIndicatorConfItems({\n page: curPage,\n limit: curLimit,\n search: searchParams\n })\n .then(res => {\n if (res && res.data && res.data.code === 0) {\n this.setState({\n tableData: res.data.data || {}\n })\n }\n })\n }\n\n getColumns = () => {\n let self = this\n return [\n {\n title: \"ID\",\n width: 80,\n dataIndex: \"id\"\n },\n {\n title: \"指标维度名称\",\n dataIndex: \"dimension_name\"\n },\n {\n title: \"统计周期\",\n dataIndex: \"time_cycle\"\n },\n {\n title: \"维度值\",\n dataIndex: \"dimension_value\"\n },\n {\n title: \"已配置指标数\",\n render: function (data) {\n return (\n {data.target_value_configuration? data.target_value_configuration.length : '-'}\n )\n }\n },\n {\n title: \"修改人\",\n dataIndex: \"modify_user\"\n },\n {\n title: \"更新时间\",\n dataIndex: \"modify_time\"\n },\n ...hasPriv('updateIndicatorConf') ?\n [{\n title: \"操作\",\n width: 80,\n render: function (data) {\n return (\n \n self.handleEdit(data) }\n >编辑\n \n )\n }\n }] : []\n ]\n }\n handleEdit = (data) => {\n this.setState({\n currentConf: data,\n showEditBusinessIndicaWin: true,\n isEdit: true\n })\n }\n render(){\n let { dimension_id, time_cycle, tableData, showEditBusinessIndicaWin, isEdit, currentConf, indicatorsDimentionList} = this.state\n return (\n
\n
\n
\n \n this.setState({curPage: 1, dimension_id: val},this.getBusinessIndicatorsCfgListBySearch)}\n />\n \n \n ({id: item.id, text: `${item.id}(${item.text})`}))}\n onChange={val => this.setState({curPage: 1, time_cycle: val}, this.getBusinessIndicatorsCfgListBySearch)}\n />\n \n\n \n {\n hasPriv('insertIndicatorConf') &&\n this.setState({\n showEditBusinessIndicaWin: true,\n isEdit: false\n })}\n >添加配置\n }\n \n
\n\n \n\n
\n { this.setState({ curPage: page }) }}\n pageCountChange={ limit => { this.setState({ curLimit: limit }) }}\n />\n
\n
\n\n\n this.setState({ showEditBusinessIndicaWin: false })}\n onCancelClick={() => this.setState({ showEditBusinessIndicaWin: false })}\n onSureClick={() => this.editBusinessIndicaRef.current.handleSubmit()}\n >\n \n this.setState({ showEditBusinessIndicaWin: flag })}\n isEdit={isEdit}\n getBusinessIndicatorsCfgListBySearch={this.getBusinessIndicatorsCfgListBySearch}\n />\n \n \n
\n )\n }\n}\n","import React, { Component } from 'react'\nimport _ from 'lodash'\nimport SdwInput from '@common/Input'\nimport './index.css'\n\nclass InputTip extends Component {\n\n inputRef = React.createRef()\n\n static defaultProps = {\n onClick: _.noop,\n options: []\n }\n\n state = {\n showOptions: false\n }\n\n componentDidMount() {\n document.addEventListener('click', this.onDocClick)\n }\n\n componentWillUnmount() {\n document.removeEventListener('click', this.onDocClick)\n }\n\n onDocClick = () => {\n if (!this.state.showOptions) return\n this.inputRef.current.handleChange({target: {value: ''}})\n this.setState({ showOptions: false })\n }\n\n handleFocus = () => {\n this.setState({ showOptions: true })\n }\n\n handleClick = item => {\n this.props.onClick(item)\n this.setState({ showOptions: false })\n }\n\n render() {\n const { options, value } = this.props\n const { showOptions } = this.state\n\n return (\n
e.stopPropagation()}\n >\n \n {\n showOptions &&\n <>\n {\n _.isArray(options) &&\n options.length > 0 ?\n
\n {\n options.map(item => (\n this.handleClick(item)} \n >{item.text}
\n ))\n }\n
:\n
\n
暂无匹配项
\n
\n }\n \n }\n \n )\n }\n}\n\nexport default InputTip","import { useRef, useState, useEffect, useMemo } from 'react'\nimport _ from 'lodash'\nimport SdwDrawer from '@common/Drawer'\nimport SdwInput from '@common/Input'\nimport SdwSwitch from '@common/Switch'\nimport Form from '@common/Form_D'\nimport SdwMessage from '@common/Message'\nimport InputTip from '@common/InputTip'\nimport { insertArchiveCodeConf, updateArchiveCodeConf, getArchiveCodeArchivesSelect, getArchiveCodeL4Query } from '@services/operationConfiguration'\n\nfunction notEmpty(val) {\n return !!val\n}\n\nconst rules = {\n archive_name: [\n { func: notEmpty, message: '请填写归档项' }\n ],\n ai_code: [\n { func: notEmpty, message: '请填写L4' }\n ]\n}\n\nfunction getVal(str, s) {\n if (!!str && !!s && str.indexOf(s) === -1) return ''\n return str.split(s)[0] || ''\n}\n\nexport default function EditWin(props) {\n const formRef = useRef(null)\n const { isEdit, data, showEditWin, setShowEditWin, updatePage } = props\n\n const [formData, setFormData] = useState({})\n const [searchData, setSearchData] = useState({})\n const [timer, setTimer] = useState(null)\n const [archiveOption, setArchiveOption] = useState([])\n const [l4Option, setL4Option] = useState([])\n\n useEffect(() => {\n let record = isEdit ? _.cloneDeep(data) : {enable: 0}\n setFormData(record)\n if (isEdit) {\n if (!!data.archive_name) onArchiveChange(data.archive_name)\n if (!!data.service_id && !!data.ai_code) onL4Change(data.service_id, data.ai_name)\n }\n }, [data, isEdit])\n\n function setFormDataProps(key, val) {\n let cloneFormData = _.cloneDeep(formData)\n cloneFormData[key] = val\n setFormData(cloneFormData)\n }\n\n function handleSubmit() {\n let api = isEdit ? updateArchiveCodeConf : insertArchiveCodeConf\n formRef.current.validate(valid => {\n if (valid) {\n // console.log('*******isEdit: ', isEdit, formData);\n api({\n field: _.assign({}, formData, {\n ai_level: 'L4'\n })\n }).then(res => {\n const code = _.get(res, 'data.code')\n if (code === 0) {\n let msg = isEdit ? '编辑配置成功' : '添加配置成功'\n SdwMessage.success(msg)\n setShowEditWin(false)\n updatePage()\n } else {\n let msg = isEdit ? '编辑配置失败' : '添加配置失败'\n SdwMessage.error(msg)\n }\n }).catch(() => SdwMessage.error(\"接口异常\"))\n }\n })\n }\n\n function onArchiveChange(val) {\n setSearchData(r => _.assign({}, r, {'archive_name': val}))\n\n // 查询候选项\n if (timer) clearTimeout(timer)\n let t = setTimeout(() => {\n getArchiveCodeArchivesSelect({\n query: val\n }).then(res => {\n const code = _.get(res, 'data.code')\n if (code === 0) {\n const list = _.get(res, 'data.data')\n if (_.isArray(list)) setArchiveOption(list)\n } else {\n const msg = _.get(res, 'data.msg') || '请求数据失败!'\n SdwMessage.error(msg)\n }\n }).catch(() => SdwMessage.error('请求异常!'))\n\n clearTimeout(timer)\n }, 500)\n setTimer(t)\n }\n \n function onArchiveClick(item) {\n const { id, text, parentCodeList } = item\n const service_id = getVal(parentCodeList, '->')\n\n if (service_id) onL4Change(service_id)\n\n setSearchData(r => _.assign({}, r, {'archive_name': text}))\n setFormData(r => _.assign({}, r, {\n archive_name: text,\n archive_code: id,\n service_id,\n service_name: getVal(text, '->')\n }))\n }\n\n function onl4Click(item) {\n const { id, text, codeName } = item\n\n setSearchData(r => _.assign({}, r, {'L4': text}))\n setFormData(r => _.assign({}, r, {\n 'ai_name': codeName,\n 'ai_code': id\n }))\n }\n\n // 查询候L4选项\n function onL4Change(service_id, query = '') {\n setSearchData(r => _.assign({}, r, {'L4': query}))\n if (!service_id) return\n if (timer) clearTimeout(timer)\n let t = setTimeout(() => {\n getArchiveCodeL4Query({\n service_id,\n query\n }).then(res => {\n const code = _.get(res, 'data.code')\n if (code === 0) {\n const data = _.get(res, 'data.data') || []\n setL4Option(data)\n } else {\n const msg = _.get(res, 'data.msg') || '请求数据失败!'\n SdwMessage.error(msg)\n }\n }).catch(() => SdwMessage.error('请求异常!'))\n\n clearTimeout(timer)\n }, 500)\n setTimer(t)\n }\n\n const arOptions = useMemo(() => {\n return archiveOption.map(i => ({\n id: i.code_id,\n text: i.parent_name_list,\n parentCodeList: i.parent_code_list\n }))\n }, [archiveOption])\n\n const L4Options = useMemo(() => {\n return l4Option.map(i => ({\n id: i.codeId,\n text: `${i.codeName}(${i.codeId})`,\n codeName: i.codeName\n }))\n }, [l4Option])\n\n return (\n <>\n setShowEditWin(false)}\n onCancelClick={() => setShowEditWin(false)}\n onSureClick={handleSubmit}\n >\n \n
\n \n onArchiveChange(val)}\n onClick={item => onArchiveClick(item)}\n onClear={() => setFormDataProps('archive_name', '')}\n options={arOptions}\n />\n \n \n onL4Change(formData.service_id, val)}\n onClick={item => onl4Click(item)}\n onClear={() => setFormDataProps('archive_name', '')}\n options={L4Options}\n />\n \n \n setFormDataProps('service_id', val)}\n />\n \n \n setFormDataProps('service_name', val)}\n />\n \n \n setFormDataProps('enable', val)}\n />\n \n
\n
\n \n \n )\n}","import { useState, useEffect, useMemo } from 'react'\nimport _ from 'lodash'\nimport SdwSelect from '@common/Select'\nimport SdwTable from '@common/Table'\nimport SdwButton from '@common/Button'\nimport SdwEnable from '@common/Enable'\nimport SdwPagenation from '@common/Pagenation'\nimport EditWin from './EditWin'\nimport { getArchiveCodeConfItems, getArchiveCodeSelect } from '@services/operationConfiguration'\nimport '../style/BusinessIndicatorsOperation.css'\nimport SdwMessage from '@common/Message/index'\nimport { hasPriv } from '@components/FrontendAuth/AuthMap'\n\n// 1:归档项,2:产品,3:l4\nconst TYPE_MAP = {\n archive_name: 1,\n service_id: 2,\n ai_code: 3\n}\n\nexport default function ArchiveL4(props) {\n\n const [timer, setTimer] = useState(null)\n const [showEditWin, setShowEditWin] = useState(false)\n const [isEdit, setIsEdit] = useState(false)\n const [params, setParams] = useState({\n page: 1,\n limit: 10\n })\n const [curItem, setCurItem] = useState({})\n const [tableData, setTableData] = useState({})\n const [archiveMap, setArchiveMap] = useState([])\n const [productMap, setProductMap] = useState([])\n const [l4Map, setL4Map] = useState([])\n\n useEffect(onGetArchiveCodeConfItems, [])\n\n useEffect(() => {\n onGetArchiveCodeConfItems(params)\n }, [params])\n\n function onGetArchiveCodeConfItems(params = {}) {\n if (!_.isEmpty(params)) {\n params = {\n ...params.page ? {\n page: params.page\n } : {},\n ...params.limit ? {\n limit: params.limit\n } : {},\n search: JSON.stringify({\n ...params.service_id ? {\n service_id: {\n value: params.service_id,\n operator: '='\n }\n } : {},\n ...params.archive_name ? {\n archive_code: {\n value: params.archive_name,\n operator: '='\n }\n } : {},\n ...params.ai_code ? {\n ai_code: {\n value: params.ai_code,\n operator: '='\n }\n } : {}\n })\n }\n }\n getArchiveCodeConfItems(params).then(res => {\n const code = _.get(res, 'data.code')\n const msg = _.get(res, 'data.msg')\n if (code === 0) {\n const jasonData = _.get(res, 'data.data')\n setTableData(jasonData)\n } else {\n SdwMessage.error('接口请求异常: ' + msg)\n }\n })\n }\n\n function getColumns() {\n return [\n {\n title: \"ID\",\n width: 80,\n dataIndex: \"id\"\n }, {\n title: \"归档项\",\n width: 160,\n dataIndex: \"archive_name\"\n }, {\n title: \"L4id\",\n width: 80,\n dataIndex: \"ai_code\"\n }, {\n title: \"L4名称\",\n width: 100,\n dataIndex: \"ai_name\"\n }, {\n title: \"产品id\",\n width: 80,\n dataIndex: \"service_id\"\n }, {\n title: \"产品名称\",\n width: 100,\n dataIndex: \"service_name\"\n }, {\n title: \"状态\",\n width: 100,\n render: data => (\n \n )\n }, {\n title: \"修改人\",\n width: 100,\n dataIndex: \"modify_user\"\n }, {\n title: \"修改时间\",\n width: 100,\n dataIndex: \"modify_time\"\n },\n ...hasPriv('updateArchiveCodeConf') ? [{\n title: \"操作\",\n width: 80,\n render: data => (\n <>\n {\n setShowEditWin(true)\n setIsEdit(true)\n setCurItem(data)\n }}\n />\n \n )\n }] : []\n ]\n }\n\n function updateParams(type, val) {\n let cloneParams = _.cloneDeep(params)\n cloneParams[type] = val\n if (type != 'page') {\n cloneParams['page'] = 1\n }\n setParams(cloneParams)\n }\n\n function onUpdatePage() {\n onGetArchiveCodeConfItems(params)\n }\n\n function onSearch(type, val) {\n\n if (timer) clearTimeout(timer)\n let t = setTimeout(() => {\n getArchiveCodeSelect({\n type,\n query: val\n }).then(res => {\n let code = _.get(res, 'data.code')\n if (code === 0) {\n let data = _.get(res, 'data.data')\n data = _.isArray(data) ? data : []\n formatSelectOptions(type, data)\n }\n })\n\n clearTimeout(timer)\n }, 500)\n setTimer(t)\n }\n\n function formatSelectOptions(type, data) {\n const list = _.isArray(data) ? data.map(i => {\n return {\n id: i.code,\n text: i.name\n }\n }) : []\n switch (type) {\n case TYPE_MAP.archive_name:\n setArchiveMap(list)\n break;\n\n case TYPE_MAP.service_id:\n setProductMap(list)\n break;\n\n case TYPE_MAP.ai_code:\n setL4Map(list)\n break;\n\n default:\n break;\n }\n }\n\n function handleOnFocus(type, val) {\n if (!val) onSearch(type, '')\n }\n\n return (\n
\n
\n
\n \n onSearch(TYPE_MAP.archive_name, val)}\n onFocus={val => handleOnFocus(TYPE_MAP.archive_name, val)} // 首次点击下拉框,触发搜索接口\n data={archiveMap}\n onChange={val => updateParams('archive_name', val)}\n />\n \n \n onSearch(TYPE_MAP.ai_code, val)}\n onFocus={val => handleOnFocus(TYPE_MAP.ai_code, val)} // 首次点击下拉框,触发搜索接口\n onChange={val => updateParams('ai_code', val)}\n />\n \n \n onSearch(TYPE_MAP.service_id, val)}\n onFocus={val => handleOnFocus(TYPE_MAP.service_id, val)} // 首次点击下拉框,触发搜索接口\n onChange={val => updateParams('service_id', val)}\n />\n \n\n \n {\n hasPriv('insertArchiveCodeConf') &&\n {\n setShowEditWin(true)\n setIsEdit(false)\n setCurItem({})\n }}\n >添加配置\n }\n \n
\n\n \n\n
\n updateParams('page', page) }\n pageCountChange={ limit => updateParams('limit', limit) }\n />\n
\n
\n\n {\n showEditWin &&\n setShowEditWin(bool)}\n updatePage={onUpdatePage}\n />\n }\n\n
\n )\n}\n","import React, { useRef, useState, useEffect, useMemo } from 'react'\nimport _ from 'lodash'\nimport SdwDrawer from '@common/Drawer'\nimport SdwInput from '@common/Input'\nimport SdwSwitch from '@common/Switch'\nimport Form from '@common/Form_D'\nimport SdwMessage from '@common/Message'\nimport InputTip from '@common/InputTip'\nimport { getFormById, getItemsSelect, saveFormConf } from '@services/operationConfiguration'\nimport SdwSelect from '@common/Select'\n\nfunction notEmpty(val) {\n return !!val\n}\n\nconst rules = {\n form_id: [\n { func: notEmpty, message: '请填写表单ID' }\n ],\n form_name: [\n { func: notEmpty, message: '请填写表单名称' }\n ]\n}\n\nexport default function EditWin(props) {\n const formRef = useRef(null)\n const { isEdit, data, showEditWin, setShowEditWin, updatePage } = props\n\n const [formData, setFormData] = useState({})\n const [searchData, setSearchData] = useState({})\n const [timer, setTimer] = useState(null)\n const [formConfigOption, setFormConfigOption] = useState([])\n const [formTypeData, setFormTypeData] = useState([])\n\n useEffect(() => {\n let record = isEdit ? _.cloneDeep(data) : {}\n setFormData(record)\n if (isEdit) {\n if (!!data.form_id) onFormConfigChange(data.form_id)\n }\n }, [data, isEdit])\n //获取表单类型\n useEffect(() => {\n getItemsSelect({}).then(res => {\n let code = _.get(res, 'data.code')\n if (code === 0) {\n let ret = _.get(res, 'data.data')\n let data = ret.form_business\n data = _.isArray(data) ? data : []\n formatSelectOptions(data)\n }\n })\n }, [])\n function formatSelectOptions(data) {\n data.unshift({\n value:\"\",\n name:\"无业务类型\"\n })\n const list = _.isArray(data) ? data.map(i => {\n return {\n id: i.value.toString(),\n text: i.name\n }\n }) : []\n setFormTypeData(list)\n }\n function setFormDataProps(key, val) {\n let cloneFormData = _.cloneDeep(formData)\n cloneFormData[key] = val\n setFormData(cloneFormData)\n }\n\n function handleSubmit() {\n let api = saveFormConf\n let param = {field:formData}\n if (isEdit) {\n param.id = data.id\n }\n formRef.current.validate(valid => {\n if (valid) {\n // console.log('*******isEdit: ', isEdit, formData);\n api(param).then(res => {\n const code = _.get(res, 'data.code')\n if (code === 0) {\n let msg = isEdit ? '编辑配置成功' : '添加配置成功'\n SdwMessage.success(msg)\n setShowEditWin(false)\n updatePage()\n } else {\n let msg = isEdit ? '编辑配置失败' : '添加配置失败'\n SdwMessage.error(msg)\n }\n }).catch(() => SdwMessage.error(\"接口异常\"))\n }\n })\n }\n //表单ID修改\n function onFormConfigChange(val) {\n setSearchData(r => _.assign({}, r, {'source_id': val}))\n // 查询候选项\n if (timer) clearTimeout(timer)\n let t = setTimeout(() => {\n getFormById({form_id: val}).then(res => {\n const code = _.get(res, 'data.code')\n if (code === 0) {\n const list = _.get(res, 'data.data')\n let data = []\n if (list) {\n data = list.items\n }\n if (_.isArray(data)) setFormConfigOption(data)\n } else {\n const msg = _.get(res, 'data.msg') || '请求数据失败!'\n SdwMessage.error(msg)\n }\n }).catch(() => SdwMessage.error('请求异常!'))\n\n clearTimeout(timer)\n }, 500)\n setTimer(t)\n }\n\n function onFormConfigClick(item) {\n const { id, text } = item\n setSearchData(r => _.assign({}, r, {'source_id': id, \"name\": text}))\n setFormData(r => _.assign({}, r, {\n form_id: id,\n form_name: text,\n }))\n }\n\n\n const arOptions = useMemo(() => {\n return formConfigOption.map(i => {\n if (isEdit && i.source_id == searchData.source_id) {\n let item = {\n id: i.source_id,\n text: i.name\n }\n onFormConfigClick(item)\n }\n return {\n id: i.source_id,\n text: i.name\n }\n })\n }, [formConfigOption])\n return (\n <>\n setShowEditWin(false)}\n onCancelClick={() => setShowEditWin(false)}\n onSureClick={handleSubmit}\n >\n \n
\n \n onFormConfigChange(val)}\n onClick={item => onFormConfigClick(item)}\n onClear={() => setFormDataProps('source_id', '')}\n options={arOptions}\n />\n \n \n \n \n \n {\n let cloneFormData = _.cloneDeep(formData)\n cloneFormData[\"form_type\"] = val\n setFormData(cloneFormData)\n }}\n />\n \n {/**/}\n {/* setFormDataProps('enable', val)}*/}\n {/* />*/}\n {/**/}\n
\n
\n \n \n )\n}\n","import React, { useState, useEffect, useMemo } from 'react'\nimport _ from 'lodash'\nimport SdwSelect from '@common/Select'\nimport SdwTable from '@common/Table'\nimport SdwButton from '@common/Button'\nimport SdwEnable from '@common/Enable'\nimport SdwPagenation from '@common/Pagenation'\nimport EditWin from './EditWin'\nimport { getItemsSelect, queryFormsConfPage } from '@services/operationConfiguration'\nimport '../style/BusinessIndicatorsOperation.css'\nimport SdwMessage from '@common/Message/index'\nimport { hasPriv } from '@components/FrontendAuth/AuthMap'\nimport SdwInput from '@common/Input'\n\n// 1:归档项,2:产品,3:l4\nconst TYPE_MAP = {\n no_config_task: 1,\n aio_server: 2,\n ai_code: 3\n}\n\nexport default function FormConfig(props) {\n\n const [timer, setTimer] = useState(null)\n const [showEditWin, setShowEditWin] = useState(false)\n const [isEdit, setIsEdit] = useState(false)\n const [params, setParams] = useState({\n page: 1,\n limit: 10\n })\n const [curItem, setCurItem] = useState({})\n const [tableData, setTableData] = useState({})\n const [formTypeData, setFormTypeData] = useState([])\n //const [searchParams, setSearchParams] = useState({\"create_user\":\"\", \"form_id\":\"\", \"form_type\":\"\"})\n\n useEffect(onQueryFormsConfPage, [])\n\n useEffect(() => {\n onQueryFormsConfPage(params)\n }, [params])\n\n useEffect(() => {\n getItemsSelect({}).then(res => {\n let code = _.get(res, 'data.code')\n if (code === 0) {\n let ret = _.get(res, 'data.data')\n let data = ret.form_business\n data = _.isArray(data) ? data : []\n formatSelectOptions(data)\n }\n })\n }, [])\n\n function onQueryFormsConfPage(params = {}) {\n if (!_.isEmpty(params)) {\n params = {\n ...params.page ? {\n page: params.page\n } : {},\n ...params.limit ? {\n limit: params.limit\n } : {},\n search: JSON.stringify({\n ...params.form_id ? {\n form_id: {\n value: params.form_id,\n operator: '='\n }\n } : {},\n ...params.create_user ? {\n create_user: {\n value: params.create_user,\n operator: '='\n }\n } : {},\n ...params.hasOwnProperty(\"form_type\") && params.form_type !== \"\" ? {\n form_type: {\n value: params.form_type,\n operator: '='\n }\n } : {}\n })\n }\n }\n console.log(\"=========\", params)\n queryFormsConfPage(params).then(res => {\n const code = _.get(res, 'data.code')\n const msg = _.get(res, 'data.msg')\n if (code === 0) {\n const jasonData = _.get(res, 'data.data')\n setTableData(jasonData)\n } else {\n SdwMessage.error('接口请求异常: ' + msg)\n }\n })\n }\n\n function getColumns() {\n return [\n {\n title: \"ID\",\n width: 80,\n dataIndex: \"id\"\n }, {\n title: \"表单ID\",\n width: 160,\n dataIndex: \"form_id\"\n }, {\n title: \"表单类型\",\n width: 80,\n render:function(data) {\n if (data.form_type === null || data.form_type === \"\") {\n return \"无业务类型\"\n } else {\n return formTypeData.map(i => {\n if (i.id === data.form_type) {\n return i.text\n }\n })\n }\n }\n }, {\n title: \"配置人\",\n width: 80,\n dataIndex: \"create_user\"\n }, {\n title: \"创建时间\",\n width: 100,\n dataIndex: \"create_time\"\n }, {\n title: \"修改人\",\n width: 80,\n dataIndex: \"update_user\"\n }, {\n title: \"创建时间\",\n width: 100,\n dataIndex: \"update_time\"\n },\n {\n title: \"操作\",\n width: 80,\n render: data => (\n <>\n {\n setShowEditWin(true)\n setIsEdit(true)\n setCurItem(data)\n }}\n />\n \n )\n }\n ]\n }\n\n function updateParams(type, val) {\n console.log(\"====\", params)\n console.log(\"====\", type, '===', val)\n let cloneParams = _.cloneDeep(params)\n cloneParams[type] = val\n if (type != 'page') {\n cloneParams['page'] = 1\n }\n setParams(cloneParams)\n }\n\n function onUpdatePage() {\n onQueryFormsConfPage(params)\n }\n\n function onSearch(type, val) {\n onQueryFormsConfPage(params)\n }\n\n function formatSelectOptions(data) {\n data.unshift({\n value:\"\",\n name:\"全部\"\n })\n const list = _.isArray(data) ? data.map(i => {\n return {\n id: i.value.toString(),\n text: i.name\n }\n }) : []\n\n setFormTypeData(list)\n }\n\n function handleOnFocus(type, val) {\n if (!val) onSearch(type, '')\n }\n\n return (\n
\n
\n
\n\n \n updateParams('form_id', val)}\n onEnterKeyDown={() => ({})} // enter或触发onblur事件,所以这里传空func\n onChange={val => updateParams('form_id', val)}\n />\n \n\n \n onSearch('form_type', val)}\n // onFocus={val => handleOnFocus(TYPE_MAP.service_id, val)} // 首次点击下拉框,触发搜索接口\n onChange={val => updateParams('form_type', val)}\n />\n \n\n \n updateParams('create_user', val)}\n onEnterKeyDown={() => ({})} // enter或触发onblur事件,所以这里传空func\n onChange={val => updateParams('create_user', val)}\n />\n \n\n \n {\n hasPriv('insertArchiveCodeConf') &&\n {\n setShowEditWin(true)\n setIsEdit(false)\n setCurItem({})\n }}\n >添加配置\n }\n \n
\n\n \n\n
\n updateParams('page', page) }\n pageCountChange={ limit => updateParams('limit', limit) }\n />\n
\n
\n\n {\n showEditWin &&\n setShowEditWin(bool)}\n updatePage={onUpdatePage}\n />\n }\n\n
\n )\n}\n","import React, { Component } from 'react'\n\nimport SdwBreadCrumbs from '@common/BreadCrumbs'\nimport BusinessIndicatorsOperation from \"./IndicatorOperationConfiguration/BusinessIndicatorsOperation\";\nimport ArchiveL4 from './ArchiveL4'\nimport FormConfig from './FormConfig'\n\nimport \"./style/index.css\";\nimport _ from 'lodash';\nimport { hasPriv } from '@components/FrontendAuth/AuthMap'\n\nconst MENU_MAP = {\n IOC: 'IOC',\n ARCHIVE: 'ARCHIVE',\n FORM: 'FORM',\n}\n\nconst MENU_TEXT_MAP = {\n IOC: '指标运营配置',\n ARCHIVE: '归档项L4配置',\n FORM: '表单业务类型配置',\n}\n\nexport default class OperationConfiguration extends Component {\n state = {\n checkItem: hasPriv('getIndicatorConfItems') ? MENU_MAP.IOC : MENU_MAP.ARCHIVE\n }\n switchItem = (name) => {\n if (name === this.state.checkItem) return\n this.setState({\n checkItem: name\n })\n }\n render() {\n let { checkItem } = this.state\n return (\n
\n \n
\n
\n
\n {\n _.keys(MENU_MAP).map(menuKey => {\n let isShow = false\n if (menuKey === MENU_MAP.IOC) isShow = hasPriv('getIndicatorConfItems')\n if (menuKey === MENU_MAP.ARCHIVE) isShow = hasPriv('getArchiveCodeConfItems')\n if (menuKey === MENU_MAP.FORM) isShow = hasPriv('queryFormsConfPage')\n\n return isShow ? (\n this.switchItem(menuKey)}\n >\n {MENU_TEXT_MAP[menuKey]}\n
\n ) : null\n })\n }\n
\n
\n
\n { !!checkItem && checkItem === MENU_MAP.IOC && hasPriv('getIndicatorConfItems') && }\n { !!checkItem && checkItem === MENU_MAP.ARCHIVE && hasPriv('getArchiveCodeConfItems') && }\n { !!checkItem && checkItem === MENU_MAP.FORM && hasPriv('queryFormsConfPage') && }\n
\n
\n \n )\n }\n}\n","export const MONITOR_TYPE = {\n 1: '基础服务监控',\n 2: '服务风险监控'\n}","import { useState, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport Select from '@common/Select'\nimport _ from 'lodash'\nimport { getStaffs } from '@services/metaData'\nimport './index.css'\n\nfunction SelectUser(props) {\n const { value, onChange, placeholder, width, oriAllMembers, maxOptionsLength } = props\n\n const [allMembers, setAllMembers] = useState([])\n const [multipleValue, setMultipleValue] = useState([])\n\n useEffect(() => {\n // 如果外部传入了下拉选项,则不需再次请求接口数据\n if (_.isArray(oriAllMembers) && oriAllMembers.length) {\n setAllMembers(oriAllMembers)\n return\n }\n \n getStaffs().then(res => {\n const code = _.get(res, 'data.code')\n if (code === 0) {\n const data = _.get(res, 'data.data')\n let list = _.isArray(data) ? data : []\n const Options = list.map(i => ({\n id: i.value,\n text: i.name\n }))\n setAllMembers(Options)\n }\n })\n }, [oriAllMembers])\n\n useEffect(() => {\n if (_.isArray(value)) {\n setMultipleValue(value)\n }\n }, [value])\n\n return (\n
\n {\n setMultipleValue(val)\n onChange(val)\n }}\n data={allMembers}\n />\n
\n )\n}\n\nSelectUser.propTypes = {\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n placeholder: PropTypes.string,\n value: PropTypes.array,\n onChange: PropTypes.func, // 最大展示候选项数量(接口数据过多,用于优化使用),避免界面卡顿\n maxOptionsLength: PropTypes.number\n}\n\nSelectUser.defaultProps = {\n width: '100%',\n placeholder: '',\n value: [],\n onChange: _.noop,\n maxOptionsLength: 200\n}\n\nexport default SelectUser","import { useRef, useState, useEffect, useMemo } from 'react'\nimport _ from 'lodash'\nimport Drawer from '@common/Drawer'\nimport Input from '@common/Input'\nimport Select from '@common/Select'\nimport Switch from '@common/Switch'\nimport Form from '@common/Form_D'\nimport Message from '@common/Message'\nimport SelectUsers from '@components/SelectUsers'\nimport DateTimePicker from '@common/DateTimePicker'\nimport { setMonitorSetting, getMonitorCfg, getMonitorSubscribe } from '@services/monitorSetting'\n\nfunction notEmpty(val) {\n return !!val\n}\n\nfunction maxLength(val) {\n return String(val).length <= 20\n}\n\nconst rules = {\n monitor_type: [\n { func: notEmpty, message: '请选择类型' }\n ],\n template_id: [\n { func: notEmpty, message: '请输入模版ID' }\n ],\n title: [\n { func: maxLength, message: '允许输入最大长度20' },\n { func: notEmpty, message: '请输入标题' }\n ],\n schedule_time: [\n { func: notEmpty, message: '请选择推送开始时间' }\n ],\n repeat_cycle: [\n { func: notEmpty, message: '请选择重复频率' }\n ],\n period_format: [\n { func: notEmpty, message: '请输入报告日期格式' }\n ]\n}\n\nexport default function EditWin(props) {\n const formRef = useRef(null)\n const { data, showWin, setShowWin, updatePage, allMembers } = props\n const CurID = data.id\n\n const [formData, setFormData] = useState({})\n const [repeatCycleMap, setRepeatCycleMap] = useState([])\n const [cycleArr, setCycleArr] = useState([]) \n\n useEffect(() => {\n getMonitorCfg().then(res => {\n const code = _.get(res, 'data.code')\n if (code === 0) {\n const repeatCycleMap = _.get(res, 'data.data.repeatCycleMap')\n if (_.isArray(repeatCycleMap)) setRepeatCycleMap(repeatCycleMap)\n }\n })\n }, [])\n\n useEffect(() => {\n let templateID = _.get(data, 'template_id')\n let record = !!templateID ? _.cloneDeep(data) : {enable: 0}\n setFormData(record)\n\n // 数据回显,需要查询的接口\n if (!!templateID) {\n getMonitorSubscribe({\n templateID\n }).then(res => {\n const code = _.get(res, 'data.code')\n if (code === 0) {\n\n const memberKey = {} // 存放下拉数组的(重复频率3个选人的key)\n const repeatCycleMap = _.get(res, 'data.data.data.source_list.repeatCycleMap') || _.get(res, 'data.data.repeatCycleMap')\n const repeat_cycle = _.get(res, 'data.data.job.repeat_cycle')\n if (!_.isEmpty(repeatCycleMap) && _.isArray(repeatCycleMap) && !!repeat_cycle) {\n const arr = repeatCycleMap.filter(i => i.value === repeat_cycle)\n const children = _.get(arr, '[0].children')\n if (_.isArray(children) && children.length) {\n setCycleArr(children)\n children.forEach(i => {\n if (!memberKey.hasOwnProperty(i.send_cycle)) memberKey[i.send_cycle] = []\n })\n }\n }\n\n const job = _.get(res, 'data.data.job')\n if (!_.isEmpty(job)) {\n let cloneJob = _.cloneDeep(job)\n cloneJob = _.assign({}, cloneJob, memberKey)\n\n const info_list = _.get(res, 'data.data.data.info_list')\n if (_.isArray(info_list)) {\n info_list.forEach(i => {\n const key = i.send_cycle\n if (cloneJob.hasOwnProperty(key)) {\n cloneJob[key].push({\n id: i.rtx_name,\n text: i.rtx_name\n })\n }\n })\n }\n\n setFormData(cloneJob)\n }\n } else {\n const msg = _.get(res, 'data.msg') || '数据详情获取失败!'\n Message.error(msg)\n }\n }).catch(err => Message.error('数据详情接口异常' + err))\n }\n }, [data])\n\n function setFormDataProps(key, val) {\n let cloneFormData = _.cloneDeep(formData)\n cloneFormData[key] = val\n setFormData(cloneFormData)\n }\n\n function delOldParams(old, val) {\n let cloneFormData = _.cloneDeep(formData)\n cloneFormData['repeat_cycle'] = val\n _.isArray(old) && old.forEach(i => {\n const key = i.send_cycle\n if (cloneFormData.hasOwnProperty(key)) delete cloneFormData[key]\n })\n setFormData(cloneFormData)\n }\n \n function handleOnChange(val, item) {\n setCycleArr(r => {\n delOldParams(r, val)\n return item && item.children || []\n })\n }\n\n function handleSubmit() {\n formRef.current.validate(valid => {\n // console.log('*******CurID: ', CurID, formData);\n if (valid) {\n setMonitorSetting({\n data: _.assign({}, formData, {\n ...CurID ? {\n id: CurID\n } : {}\n })\n }).then(res => {\n const code = _.get(res, 'data.code')\n if (code === 0) {\n let msg = CurID ? '编辑配置成功' : '添加配置成功'\n Message.success(msg)\n setShowWin(false)\n updatePage()\n } else {\n let msg = CurID ? '编辑配置失败' : '添加配置失败'\n Message.error(msg)\n }\n }).catch(() => Message.error(\"接口异常\"))\n }\n })\n }\n\n // 这里已经选择过的人需要过滤掉,不允许重复选择\n const curAllMembers = useMemo(() => {\n let arr = allMembers\n let selectedMember = [] // 存储已选用户id(英文名)\n\n if (_.isArray(cycleArr) && cycleArr.length) {\n cycleArr.forEach(item => {\n const key = item.send_cycle\n if (_.isArray(formData[key])) {\n selectedMember = selectedMember.concat(formData[key].map(i => i.id))\n }\n })\n }\n arr = arr.filter(i => !selectedMember.includes(i.id))\n return arr\n }, [allMembers, formData])\n\n return (\n setShowWin(false)}\n onCancelClick={() => setShowWin(false)}\n onSureClick={handleSubmit}\n >\n \n
\n \n setFormDataProps('monitor_type', val)}\n data={[{\n id: 1,\n text: '基础服务监控'\n }, {\n id: 2,\n text: '服务风险监控'\n }]}\n />\n \n \n setFormDataProps('template_id', val)}\n />\n \n \n setFormDataProps('title', val)}\n />\n \n
\n
\n \n setFormDataProps('schedule_time', val)}\n />\n \n
\n
\n \n ({\n id: i.value,\n text: i.label,\n children: i.children\n })) : []}\n />\n \n
\n
\n \n setFormDataProps('period_format', val)}\n />\n \n {\n _.isArray(cycleArr) &&\n cycleArr.length > 0 &&\n cycleArr.map(item => (\n \n setFormDataProps(item.send_cycle, val)}\n />\n \n ))\n }\n \n setFormDataProps('enable', val)}\n />\n \n
\n
\n \n )\n}","import { request } from '../utils/request'\n\nexport function getPushLogList (params) {\n return request({ url: '/monitor/api/getPushLogList', method: 'get', params: params })\n}\n\nexport function getMonitorSettingList (params) {\n return request({ url: '/monitor/api/getMonitorSettingList', method: 'get', params: params })\n}\n\nexport function getMonitorCfg (params) {\n return request({ url: '/monitor/api/getMonitorCfg', method: 'get', params: params })\n}\n\nexport function getMonitorSubscribe (params) {\n return request({ url: '/monitor/api/getMonitorSubscribe', method: 'get', params: params })\n}\n\nexport function setMonitorSetting (params) {\n return request({ url: '/monitor/api/setMonitorSetting', method: 'post', data: params })\n}\n\nexport function setPushLog (params) {\n return request({ url: '/monitor/api/setPushLog', method: 'post', data: params })\n}","import SdwBreadCrumbs from '@common/BreadCrumbs'\nimport SdwTabs from '@common/Tabs'\nimport SecdRecord from './SendRecord'\nimport MonitorConfig from './MonitorConfig'\nimport { hasPriv } from '@components/FrontendAuth/AuthMap'\n\nconst menu = [\n {\n title: '推送记录',\n path: '/secdrecord',\n component: SecdRecord,\n priv: 'getPushLogList'\n }, {\n title: '监控配置',\n path: '/monitorconfig',\n component: MonitorConfig,\n priv: 'getMonitorSettingList'\n }\n]\n\nexport default function MonitorManagement(props) {\n\n const hasPrivMenu = menu.filter(i => hasPriv(i.priv))\n\n return (\n <>\n \n\n
\n \n
\n \n )\n}","import { useState, useEffect, useMemo } from 'react'\nimport _ from 'lodash'\nimport Input from '@common/Input'\nimport Table from '@common/Table'\nimport Button from '@common/Button'\nimport Enable from '@common/Enable'\nimport Pagenation from '@common/Pagenation'\nimport Drawer from '@common/Drawer'\nimport Switch from '@common/Switch'\nimport { getPushLogList, setPushLog } from '@services/monitorSetting'\nimport SdwMessage from '@common/Message/index'\nimport { MONITOR_TYPE } from '@utils/monitor'\nimport './index.css'\n\nexport default function SecdRecord(props) {\n\n const [tableData, setTableData] = useState({})\n const [searchParams, setSearchParams] = useState({\n page: 1,\n limit: 10\n })\n const [showWin, setShowWin] = useState(false)\n const [curRecord, setCurRecord] = useState({})\n const [title, setTitle] = useState('')\n const [status, setStatus] = useState(0)\n\n useEffect(() => {\n initData()\n }, [searchParams])\n\n function initData() {\n getPushLogList({\n ...searchParams,\n search: JSON.stringify({\n ...title ? {\n push_title: {\n value: title,\n operator: 'like',\n type: 'both'\n }\n } : {}\n })\n }).then(res => {\n const code = _.get(res, 'data.code')\n if (code === 0) {\n const data = _.get(res, 'data.data')\n if (!_.isEmpty(data)) setTableData(data)\n } else {\n const msg = _.get(res, 'data.msg') || '获取数据失败!'\n SdwMessage.error(msg)\n }\n }).catch(err => SdwMessage.error('接口异常' + err))\n }\n\n function getcolumns() {\n return [\n {\n title: \"类型\",\n render: data => {!!data.job_monitor_type ? MONITOR_TYPE[data.job_monitor_type] : '-'}\n },{\n title: \"标题\",\n dataIndex: \"push_title\",\n },{\n title: \"期数\",\n dataIndex: \"period\",\n },{\n title: \"推送时间\",\n dataIndex: \"send_time\",\n },{\n title: \"推送情况\",\n render: data => {\n const sendList = _.isArray(data.sendList) ? data.sendList: []\n const total = sendList.length\n const success = sendList.filter(i => i.status == 2).length // 状态为2表示成功,其他的都是失败的\n return {`${success}人成功/${total - success}人失败`}\n }\n },{\n title: \"状态\",\n render: data => \n },{\n title: \"操作\",\n render: data => (\n onOpenDetail(data)}\n />\n )\n },\n ]\n }\n\n function onOpenDetail(data) {\n setStatus(data.enable)\n setCurRecord(data)\n setShowWin(true)\n }\n\n function handleSureClick () {\n console.log(status);\n\n setPushLog({\n data: {\n id: curRecord.id,\n enable: status\n }\n }).then(res => {\n const code = _.get(res, 'data.code')\n const msg = _.get(res, 'data.msg')\n if (code === 0) {\n SdwMessage.success(msg || '编辑成功!')\n setShowWin(false)\n initData()\n } else {\n SdwMessage.error(msg || '编辑失败!')\n }\n }).catch(err => SdwMessage.error('接口异常' + err))\n }\n\n const successMember = useMemo(() => {\n // 状态为2表示成功,其他的都是失败的\n return _.isArray(curRecord && curRecord.sendList) ? curRecord.sendList.filter(i => i.status == 2).map(j => j.send_user).join(';') : ''\n }, [curRecord])\n\n const failMember = useMemo(() => {\n // 状态为2表示成功,其他的都是失败的\n return _.isArray(curRecord && curRecord.sendList) ? curRecord.sendList.filter(i => i.status != 2).map(j => j.send_user).join(';') : ''\n }, [curRecord])\n\n return (\n
\n
\n {\n setSearchParams(r => _.assign({}, r, {page: 1}))\n setTitle(val)\n }}\n onBlur={initData}\n />\n
\n
\n \n\n setSearchParams(r => _.assign({}, r, {page: page})) }\n pageCountChange={ limit => setSearchParams(r => _.assign({}, r, {limit: limit})) }\n />\n
\n\n {\n showWin &&\n setShowWin(false)}\n onCancelClick={() => setShowWin(false)}\n onSureClick={handleSureClick}\n >\n \n
\n
推送成功用户
\n
\n
\n {successMember}\n
\n
\n
\n
\n
推送失败用户
\n
\n
\n {failMember}\n
\n
\n
\n
\n
是有有效
\n
\n setStatus(val)}\n />\n
\n
\n
\n \n }\n
\n )\n}\n","import { useState, useEffect } from 'react'\nimport _ from 'lodash'\nimport Input from '@common/Input'\nimport Table from '@common/Table'\nimport Button from '@common/Button'\nimport Enable from '@common/Enable'\nimport Pagenation from '@common/Pagenation'\nimport SdwMessage from '@common/Message'\nimport EditWin from './EditWin'\nimport { getMonitorSettingList } from '@services/monitorSetting'\nimport { getStaffs } from '@services/metaData'\nimport { MONITOR_TYPE } from '@utils/monitor'\n\nexport default function MonitorConfig(props) {\n\n const [tableData, setTableData] = useState({})\n const [searchParams, setSearchParams] = useState({\n page: 1,\n limit: 10\n })\n const [showWin, setShowWin] = useState(false)\n const [curRecord, setCurRecord] = useState({})\n const [title, setTitle] = useState('')\n const [allMembers, setAllMembers] = useState([])\n\n useEffect(() => {\n getStaffs().then(res => {\n const code = _.get(res, 'data.code')\n if (code === 0) {\n const data = _.get(res, 'data.data')\n let list = _.isArray(data) ? data : []\n const Options = list.map(i => ({\n id: i.value,\n text: i.name\n }))\n setAllMembers(Options)\n }\n })\n }, [])\n\n useEffect(() => {\n initData()\n }, [searchParams])\n\n function getcolumns() {\n return [\n {\n title: 'ID',\n dataIndex: 'id',\n width: 50\n },{\n title: \"类型\",\n render: data => {!!data.monitor_type ? MONITOR_TYPE[data.monitor_type] : '-'},\n width: 100\n },{\n title: \"标题\",\n dataIndex: \"title\",\n width: 180\n },{\n title: \"推送频率\",\n dataIndex: \"repeat_cycle\",\n width: 100\n },{\n title: \"更新人\",\n dataIndex: \"modify_user\",\n width: 100\n },{\n title: \"更新时间\",\n dataIndex: \"modify_time\",\n width: 140\n },{\n title: \"状态\",\n render: data => ,\n width: 100\n },{\n title: \"操作\",\n width: 100,\n render: data => (\n {\n setShowWin(true)\n setCurRecord(data)\n }}\n />\n )\n },\n ]\n }\n\n function initData() {\n getMonitorSettingList({\n ...searchParams,\n search: JSON.stringify({\n ...title ? {\n title: {\n value: title,\n operator: 'like'\n }\n } : {}\n })\n }).then(res => {\n const code = _.get(res, 'data.code')\n if (code === 0) {\n const data = _.get(res, 'data.data')\n if (!_.isEmpty(data)) setTableData(data)\n } else {\n const msg = _.get(res, 'data.msg') || '获取数据失败!'\n SdwMessage.error(msg)\n }\n }).catch(err => SdwMessage.error('接口异常' + err))\n }\n\n return (\n
\n
\n {\n setSearchParams(r => _.assign({}, r, {page: 1}))\n setTitle(val)\n }}\n onBlur={initData}\n />\n\n \n {\n setShowWin(true)\n setCurRecord({})\n }}\n />\n \n
\n
\n \n\n setSearchParams(r => _.assign({}, r, {page})) }\n pageCountChange={ limit => setSearchParams(r => _.assign({}, r, {limit})) }\n />\n
\n\n {\n showWin &&\n \n }\n
\n )\n}\n","import {request} from '../utils/request'\n\n// 关键指标分页列表\nexport function pageTargetsGroup(params) {\n return request({url: '/statistics/masterTarget/pageTargetsGroup', method: 'post', data: params})\n}\n\n// 新增、修改关键指标配置\nexport function saveTargetsGroup(params) {\n return request({url: '/statistics/masterTarget/saveTargetsGroup', method: 'post', data: params})\n}\n\n// 关联指标api模块\nexport function relateApiTarget(params) {\n return request({url: '/statistics/masterTarget/relateApiTarget', method: 'post', data: params})\n}\n\n// 获取关键指标详情信息\nexport const getTargetGroupDetail = params => {\n return request({url: '/statistics/masterTarget/getTargetGroupDetail', method: 'get', params: params})\n}\n\n// 获取关注人列表\nexport function getPageFocus(params) {\n return request({url: '/statistics/masterTarget/getPageFocus', method: 'post', data: params})\n}\n\n// 保存关注人信息\nexport function saveFocusUser(params) {\n return request({url: '/statistics/masterTarget/saveFocusUser', method: 'post', data: params})\n}\n","import React, { PureComponent } from 'react'\nimport Dialog from \"@common/Dialog\";\nimport Select from \"@common/Select\";\nimport { relateApiTarget } from \"@services/keyIndicatorAllocation\";\nimport './index.css'\nimport SdwSelect from '@common/Select'\nimport { getTemplateConfList } from '@api/api'\nimport SdwMessage from '@common/Message'\n\nclass RelateWin extends PureComponent {\n\n state = {\n id: '',\n api_id: '',\n template_id: '',\n allModules:[]\n }\n\n componentDidMount() {\n this.iniData()\n }\n\n iniData = () => {\n let {record} = this.props\n this.setState({\n id:record.id,\n api_id:record.api_id,\n template_id:record.template_id,\n })\n this.getTemplateConfList(record.api_id)\n }\n\n getTemplateConfList = (id) => {\n getTemplateConfList({\n api_id:id\n })\n .then(res => {\n if (res && res.data && res.data.code === 0) {\n let targetData = res.data.data || []\n let allModules = []\n if (targetData.length > 0) {\n targetData.forEach(item => {\n item.children.forEach(i => {\n allModules.push({id:i.id, text:i.template_name, item:i})\n })\n })\n }\n this.setState({\n allModules: allModules\n })\n }\n }, () => SdwMessage.error(\"接口异常\"))\n }\n\n onSubmit = () => {\n let { api_id,template_id } = this.state\n let {record} = this.props\n const requestData = {\n id: record.id,\n api_id: api_id,\n template_id: template_id\n }\n relateApiTarget(requestData)\n .then(res => {\n if (res && res.data && res.data.code === 0) {\n SdwMessage.success(\"关联成功\")\n this.props.setShowRelateWin(false)\n } else {\n SdwMessage.error(res.data.msg)\n }\n }, () => SdwMessage.error(\"接口异常\"))\n }\n\n render() {\n\n let {\n api_id,\n template_id,\n allModules\n } = this.state\n let {\n apiList,\n showRelateWin, setShowRelateWin\n } = this.props\n\n return (\n setShowRelateWin(false)}\n onSureClick={this.onSubmit}\n >\n
\n 选择接口\n \n {\n console.log(\"val\", val)\n console.log(\"item\", item)\n this.setState({\n api_id:val,\n template_id:\"\",\n })\n this.getTemplateConfList(val)\n }}\n />\n \n \n this.setState({\n template_id: val\n })}\n />\n \n
\n \n )\n }\n}\n\nexport default RelateWin\n","import React, {PureComponent} from 'react'\nimport {connect} from 'react-redux'\nimport _ from 'lodash'\nimport Input from '@common/Input'\nimport './index.css'\n\nclass BasicConfiguration extends PureComponent {\n\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n }\n\n setFormValue = (type, val) => {\n let formData = this.props.formData\n let formDataClone = _.cloneDeep(formData)\n switch (type) {\n case \"group_name\":\n formDataClone.group_name = val\n break\n case \"remark\":\n formDataClone.remark = val\n break\n }\n this.props.updateFormData(formDataClone)\n }\n\n render() {\n\n let {\n sholdCheckValidate,\n formData\n } = this.props\n\n\n console.log(\"BasicC=====formData\", formData)\n\n return (\n
\n
\n
\n 指标组名:\n this.setFormValue('group_name', val)}\n sholdCheckValidate={sholdCheckValidate}\n validateFun={val => {\n if (!val) {\n return '请输入分组名称(12个字内)'\n }\n if (val.length > 12) {\n return '输入最大长度为12'\n }\n return true\n }}\n width={610}\n />\n
\n
\n 备注:\n this.setFormValue('remark', val)}\n width={610}\n />\n
\n
\n
\n )\n }\n}\n\nconst mapState = state => ({\n formData: state.keyIndicatorAllocation.formData\n})\n\nconst mapDispatch = dispatch => ({\n updateFormData: dispatch.keyIndicatorAllocation.updateFormData,\n})\n\nexport default connect(mapState, mapDispatch)(BasicConfiguration)\n","import Select from '@common/Select'\nimport Input from '@common/Input'\nimport React from 'react'\n\nexport default props => {\n return (\n <>\n \n props.changeConfigGroup(props.index + 1, 'queue', val, props.group_type)}\n width={150}\n />\n \n \n props.changeConfigGroup(props.index + 1, 'name', val, props.group_type)}\n sholdCheckValidate={props.sholdCheckValidate}\n validateFun={val => {\n if (!val) {\n return \"分组名称不能为空\"\n }\n if (props.group_type == \"twoGroup\" && val.length > 8) {\n return '输入最大长度为8'\n } else if (props.group_type == \"threeGroup\" && val.length > 4) {\n return '输入最大长度为4'\n }\n return true\n }}\n />\n \n\n {props.dataList.length == (props.index + 1) && (\n props.addConfigRules(props.group_type)} className=\"el-icon-plus\">)}\n props.onDelConfigRule(props.index, props.group_type)} className=\"el-icon-minus\">\n \n )\n}\n","import React, { PureComponent } from 'react'\nimport { connect } from 'react-redux'\nimport _ from 'lodash'\nimport Select from '@common/Select'\nimport './index.css'\nimport ConfigGroup from '@pages/Monitor/KeyIndicatorAllocation/IndexGroupConfiguration/StepWin/ConfigGroup'\n\nclass GroupingConfiguration extends PureComponent {\n\n state = {\n twoGroup: [],\n threeGroup: [],\n relateModule: [],\n }\n componentDidUpdate(prevProps, prevState, snapshot) {\n if (prevProps.formData != this.props.formData) {\n this.initData()\n }\n }\n\n initData = () => {\n let {formData} = this.props\n\n let two_group_obj = []\n let three_group_obj = []\n let relateModule = []\n let twoGroup = []\n let threeGroup = []\n\n if (formData.two_group) {\n two_group_obj = JSON.parse(formData.two_group)\n twoGroup = two_group_obj.map((i, k) => {\n return {queue: k+1, name: i.name, item : i}\n })\n }\n if (formData.three_group) {\n three_group_obj = JSON.parse(formData.three_group)\n threeGroup = three_group_obj.map((i, k) => {\n return {queue: k+1, name: i.name, item : i}\n })\n }\n if (formData.relate_module) {\n relateModule = JSON.parse(formData.relate_module)\n }\n this.setState({\n twoGroup: twoGroup,\n threeGroup: threeGroup,\n relateModule: relateModule,\n })\n }\n\n setFormValue = (type, val) => {\n let formData = this.props.formData\n let formDataClone = _.cloneDeep(formData)\n switch (type) {\n case \"two_group\":\n formDataClone.two_group = val\n break\n case \"three_group_obj\":\n formDataClone.three_group_obj = val\n break\n case \"relate_module_obj\":\n formDataClone.relate_module_obj = val\n break\n }\n this.props.updateFormData(formDataClone)\n }\n\n //修改分组的下拉值\n changeConfigGroup = (index, type, val, group_type) => {\n let group = []\n let { twoGroup, threeGroup} = this.state\n let { formData} = this.props\n if (group_type == \"twoGroup\") {\n group = twoGroup\n } else if (group_type == \"threeGroup\") {\n group = threeGroup\n }\n let formDataClone = _.cloneDeep(formData)\n let curArr = _.cloneDeep(group)\n if (type === 'queue') {\n let beforeVal = Number(index - 1)\n let currentVal = Number(val - 1)\n\n if (beforeVal < currentVal) {\n for (let j = beforeVal + 1; j <= currentVal; j++) {\n curArr[j]['queue'] = curArr[j]['queue'] - 1\n }\n } else if (beforeVal > currentVal) {\n for (let j = beforeVal - 1; j >= currentVal; j--) {\n curArr[j]['queue'] = curArr[j]['queue'] + 1\n }\n }\n }\n curArr[index - 1][type] = val\n if (group_type == \"twoGroup\") {\n if (curArr.length == 0) {\n formDataClone.two_group = \"\"\n } else {\n formDataClone.two_group = JSON.stringify(curArr.sort((a,b)=>a.queue - b.queue).map(i=>{\n return {name:i.name}\n }))\n }\n this.setState({ twoGroup: curArr })\n } else if (group_type == \"threeGroup\") {\n if (curArr.length == 0) {\n formDataClone.three_group = \"\"\n } else {\n formDataClone.three_group = JSON.stringify(curArr.sort((a,b)=>a.queue - b.queue).map(i=>{\n return {name:i.name}\n }))\n }\n this.setState({ threeGroup: curArr })\n }\n this.props.updateFormData(formDataClone)\n }\n //删除分组\n onDelConfigRule = (index, group_type) => {\n let group = []\n let { twoGroup, threeGroup} = this.state\n let { formData} = this.props\n if (group_type == \"twoGroup\") {\n group = twoGroup\n } else if (group_type == \"threeGroup\") {\n group = threeGroup\n }\n let formDataClone = _.cloneDeep(formData)\n let curArr = _.cloneDeep(group)\n let lastIndex = curArr.length - 1\n curArr.splice(index, 1)\n // 删除的不是最后一项,需要更新删除下面的序号\n if (lastIndex !== index) {\n curArr = curArr.map((item, k) => {\n if (k < index) {\n return item\n } else {\n return _.assign({}, item, {\n queue: item.queue - 1\n })\n }\n })\n }\n if (group_type == \"twoGroup\") {\n if (curArr.length == 0) {\n formDataClone.two_group = \"\"\n } else {\n formDataClone.two_group = JSON.stringify(curArr.sort((a,b)=>a.queue - b.queue).map(i=>{\n return {name:i.name}\n }))\n }\n this.setState({ twoGroup: curArr })\n } else if (group_type == \"threeGroup\") {\n if (curArr.length == 0) {\n formDataClone.three_group = \"\"\n } else {\n formDataClone.three_group = JSON.stringify(curArr.sort((a,b)=>a.queue - b.queue).map(i=>{\n return {name:i.name}\n }))\n }\n this.setState({ threeGroup: curArr })\n }\n this.props.updateFormData(formDataClone)\n }\n //添加分组\n addConfigRules = (group_type) => {\n let group = []\n let { twoGroup, threeGroup} = this.state\n let { formData} = this.props\n if (group_type == \"twoGroup\") {\n group = twoGroup\n } else if (group_type == \"threeGroup\") {\n group = threeGroup\n }\n let formDataClone = _.cloneDeep(formData)\n let curArr = _.cloneDeep(group)\n curArr.push(_.assign({}, {queue: 0, name: \"\", item : {}}, {\n queue: group.length + 1\n }))\n if (group_type == \"twoGroup\") {\n if (curArr.length == 0) {\n formDataClone.two_group = \"\"\n } else {\n formDataClone.two_group = JSON.stringify(curArr.sort((a,b)=>a.queue - b.queue).map(i=>{\n return {name:i.name}\n }))\n }\n this.setState({ twoGroup: curArr })\n } else if (group_type == \"threeGroup\") {\n if (curArr.length == 0) {\n formDataClone.three_group = \"\"\n } else {\n formDataClone.three_group = JSON.stringify(curArr.sort((a,b)=>a.queue - b.queue).map(i=>{\n return {name:i.name}\n }))\n }\n this.setState({ threeGroup: curArr })\n }\n this.props.updateFormData(formDataClone)\n }\n //删除关联模块\n onRelationModule = (index) => {\n let { relateModule} = this.state\n let {formData} = this.props\n\n let curArr = _.cloneDeep(relateModule)\n let formDataClone = _.cloneDeep(formData)\n\n curArr.splice(index, 1)\n this.setState({\n relateModule:curArr\n })\n formDataClone.relate_module = JSON.stringify(curArr)\n this.props.updateFormData(formDataClone)\n }\n //添加关联模块\n addRelationModule = () => {\n let { relateModule} = this.state\n let {formData} = this.props\n let curArr = _.cloneDeep(relateModule)\n let formDataClone = _.cloneDeep(formData)\n curArr.push({id: 1, type: 1})\n this.setState({ relateModule: curArr })\n formDataClone.relate_module = JSON.stringify(curArr)\n this.props.updateFormData(formDataClone)\n }\n setRelationModule = (k, type, val) => {\n let { relateModule} = this.state\n let { formData} = this.props\n let relateModuleClone = _.cloneDeep(relateModule)\n let formDataClone = _.cloneDeep(formData)\n switch (type) {\n case \"id\":\n relateModuleClone[k].id = val\n break\n case \"type\":\n relateModuleClone[k].type = val\n break\n }\n this.setState({\n relateModule:relateModuleClone\n })\n formDataClone.relate_module = JSON.stringify(relateModuleClone)\n this.props.updateFormData(formDataClone)\n }\n render() {\n let {\n twoGroup,\n threeGroup,\n relateModule,\n } = this.state\n let {\n sholdCheckValidate,\n formData\n } = this.props\n return (\n
\n 二级分组\n (选填)用于顶部筛选\n
\n
\n\n \n {twoGroup.length ==0 && this.addConfigRules(\"twoGroup\")}\n >添加分组}\n {twoGroup.length >0 && twoGroup.sort((a, b)=>a.queue - b.queue).map((row, k) => {\n let dataList = twoGroup.map((i, index) => {\n return {\n id: index+1,\n text: index + 1\n }\n })\n console.log(\"dataList\", dataList)\n return (\n
\n \n
\n )\n })}\n \n
\n
\n\n 三级分组\n (选填)用于同组指标区分\n
\n
\n \n {threeGroup.length ==0 && this.addConfigRules(\"threeGroup\")}\n >添加分组}\n {threeGroup.length >0 && threeGroup.sort((a, b)=>a.queue - b.queue).map((row, k) => {\n let dataList = threeGroup.map((i, index) => {\n return {\n id: index+1,\n text: index + 1\n }\n })\n console.log(\"dataList\", dataList)\n return (\n
\n \n
\n )\n })}\n \n
\n
\n\n 关联模块\n (选填)用于底部关联,最多2个\n
\n
\n \n {relateModule.length ==0 && this.addRelationModule()}\n >添加模块}\n {relateModule.length > 0 && relateModule.map((row, k) => {\n return (\n
\n \n !!val?true:\"模块不能为空\"}\n onChange={val => this.setRelationModule(k, 'id', val)}\n data={[{\n id: 1,\n text: '经营分析入口'\n }, {\n id: 2,\n text: '帐号专区入口'\n }, {\n id: 3,\n text: '400专区入口'\n }\n ]}\n width={300}\n />\n \n \n !!val?true:\"模块不能为空\"}\n placeholder='请选择'\n onChange={val => this.setRelationModule(k, 'type', val)}\n value={row.type}\n data={[{\n id: 1,\n text: '独立入口样式'\n }, {\n id: 2,\n text: '1/2行样式'\n }\n ]}\n width={300}\n />\n \n {relateModule.length == 1 && this.addRelationModule()} className=\"el-icon-plus\">}\n this.onRelationModule(k)} className=\"el-icon-minus\">\n
\n )\n })}\n \n
\n
\n
\n )\n }\n}\n\nconst mapState = state => ({\n formData: state.keyIndicatorAllocation.formData\n})\n\nconst mapDispatch = dispatch => ({\n updateFormData: dispatch.keyIndicatorAllocation.updateFormData,\n})\n\nexport default connect(mapState, mapDispatch)(GroupingConfiguration)\n","import React, { PureComponent } from 'react'\nimport { connect } from 'react-redux'\nimport Switch from '@common/Switch'\nimport Button from '@common/Button'\nimport './index.css'\nimport SdwInput from '@common/Input'\nimport _ from 'lodash'\nimport { channelItemSelects, getAlarmItemSelects, getStaffs } from '@api/alertRules'\n\nclass Staffing extends PureComponent {\n state = {\n allMembers:[],\n visible_list:\"\",\n subscribe_ing:\"\",\n real_time_change:\"\",\n sholdCheckValidate:true,\n usedStaff : [],\n }\n componentDidMount() {\n this.initData()\n }\n componentDidUpdate(prevProps, prevState, snapshot) {\n if (prevProps.formData != this.props.formData) {\n let formData = this.props.formData\n let subscribe_info_dict = formData.subscribe_info_dict\n let usedStaff = []\n if (subscribe_info_dict.real_time_change.length > 0) {\n usedStaff = usedStaff.concat(subscribe_info_dict.real_time_change)\n }\n if (subscribe_info_dict.change_day.length > 0) {\n usedStaff = usedStaff.concat(subscribe_info_dict.change_day)\n }\n if (subscribe_info_dict.once_day.length > 0) {\n usedStaff = usedStaff.concat(subscribe_info_dict.once_day)\n }\n if (subscribe_info_dict.change_week.length > 0) {\n usedStaff = usedStaff.concat(subscribe_info_dict.change_week)\n }\n if (subscribe_info_dict.once_week.length > 0) {\n usedStaff = usedStaff.concat(subscribe_info_dict.once_week)\n }\n if (subscribe_info_dict.change_month.length > 0) {\n usedStaff = usedStaff.concat(subscribe_info_dict.change_month)\n }\n if (subscribe_info_dict.once_month.length > 0) {\n usedStaff = usedStaff.concat(subscribe_info_dict.once_month)\n }\n console.log(\"Staffing====usedStaff\", usedStaff)\n this.setState({\n usedStaff:usedStaff\n })\n }\n }\n\n initData = () => {\n getStaffs().then(res => {\n if (res && res.data && res.data.code === 0) {\n let list = _.isArray(res.data.data) ? res.data.data : []\n list.push({name:\"default_focus\", value:\"default_focus\"})\n this.setState({\n allMembers: list\n })\n }\n })\n }\n setFormValue = (type, val) => {\n let formData = this.props.formData\n let formDataClone = _.cloneDeep(formData)\n switch (type) {\n case \"enabled\":\n formDataClone.enabled = val\n break\n case \"visible_list\":\n formDataClone.visible_list = val\n break\n case \"focused_list\":\n formDataClone.focused_list = val\n break\n case \"real_time_change\":\n formDataClone.subscribe_info_dict.real_time_change = val\n break\n case \"change_day\":\n formDataClone.subscribe_info_dict.change_day = val\n break\n case \"once_day\":\n formDataClone.subscribe_info_dict.once_day = val\n break\n case \"change_week\":\n formDataClone.subscribe_info_dict.change_week = val\n break\n case \"once_week\":\n formDataClone.subscribe_info_dict.once_week = val\n break\n case \"change_month\":\n formDataClone.subscribe_info_dict.change_month = val\n break\n case \"once_month\":\n formDataClone.subscribe_info_dict.once_month = val\n break\n }\n this.props.updateFormData(formDataClone)\n }\n\n render() {\n let {\n allMembers,\n usedStaff\n } = this.state\n\n let {\n formData,\n saveSubmit,\n } = this.props\n console.log(\"staffing=======formData\", formData)\n console.log(\"staffing=======usedStaff\", usedStaff)\n let focused_list_members = allMembers.filter(i => formData.visible_list.indexOf(i.value) != -1)\n //let subscribe_info_members = formData.focused_list\n // let subscribe_info_members = focused_list_members.map(i => {\n // if (usedStaff.indexOf(i.value) != -1) {\n // return {name:i.name, value:i.value, disabled:true}\n // }\n // return {name:i.name, value:i.value, disabled:false}\n // })\n let subscribe_info_members = []\n for (let k in focused_list_members) {\n let i = focused_list_members[k]\n if (formData.focused_list.indexOf(i.value) != -1) {\n if (usedStaff.indexOf(i.value) != -1) {\n subscribe_info_members.push({name:i.name, value:i.value, disabled:true})\n } else {\n subscribe_info_members.push({name:i.name, value:i.value, disabled:false})\n }\n }\n }\n console.log(\"staffing=======formData\", formData)\n console.log(\"staffing=======focused_list_members\", focused_list_members)\n console.log(\"staffing=======subscribe_info_members\", subscribe_info_members)\n return (\n
\n\n 权限管理\n 用于控制指标组的可见范围\n
\n
\n 可见范围:\n this.setFormValue(\"visible_list\", [])} // 这里的onClear只是清除所有时才触发\n changeMultipleValue={list => this.setFormValue(\"visible_list\", list)}\n />\n
\n
\n 正在关注:\n
\n this.setFormValue(\"focused_list\", [])} // 这里的onClear只是清除所有时才触发\n changeMultipleValue={list => this.setFormValue(\"focused_list\", list)}\n />\n
\n
\n
如需调整关注人看到的列表顺序,请前往关注人管理设置
\n
\n\n 订阅管理\n 用于对指标组订阅进行管理(人员不可重复出现在多个维度)\n
\n\n
\n
\n
\n
\n
\n 实时数据(每日最多推送一次)\n
\n
\n
\n
\n 异动提醒:\n this.setFormValue(\"real_time_change\", [])} // 这里的onClear只是清除所有时才触发\n changeMultipleValue={list => this.setFormValue(\"real_time_change\", list)}\n />\n
\n
\n
\n
\n
\n\n
\n
\n
\n
\n
\n 日视图数据\n
\n
\n
\n
\n 异动提醒:\n this.setFormValue(\"change_day\", [])} // 这里的onClear只是清除所有时才触发\n changeMultipleValue={list => this.setFormValue(\"change_day\", list)}\n />\n 每日一次:\n this.setFormValue(\"once_day\", [])} // 这里的onClear只是清除所有时才触发\n changeMultipleValue={list => this.setFormValue(\"once_day\", list)}\n />\n
\n
\n
\n
\n
\n\n
\n
\n
\n
\n
\n 周视图数据\n
\n
\n
\n
\n 异动提醒:\n this.setFormValue(\"change_week\", [])} // 这里的onClear只是清除所有时才触发\n changeMultipleValue={list => this.setFormValue(\"change_week\", list)}\n />\n 每周一次:\n this.setFormValue(\"once_week\", [])} // 这里的onClear只是清除所有时才触发\n changeMultipleValue={list => this.setFormValue(\"once_week\", list)}\n />\n
\n
\n
\n
\n
\n\n
\n
\n
\n
\n
\n 月视图数据\n
\n
\n
\n
\n 异动提醒:\n this.setFormValue(\"change_month\", [])} // 这里的onClear只是清除所有时才触发\n changeMultipleValue={list => this.setFormValue(\"change_month\", list)}\n />\n 每月一次:\n this.setFormValue(\"once_month\", [])} // 这里的onClear只是清除所有时才触发\n changeMultipleValue={list => this.setFormValue(\"once_month\", list)}\n />\n
\n
\n
\n
\n
\n\n
\n 是否启用\n this.setFormValue(\"enabled\", val)}\n />\n
\n\n
\n \n
\n\n
\n
\n )\n }\n}\n\nconst mapState = state => ({\n formData: state.keyIndicatorAllocation.formData\n})\n\nconst mapDispatch = dispatch => ({\n updateFormData: dispatch.keyIndicatorAllocation.updateFormData,\n})\n\nexport default connect(mapState, mapDispatch)(Staffing)\n","import { useEffect, useState } from 'react'\nimport { connect } from 'react-redux'\nimport Steps from '@common/Steps'\nimport BasicConfiguration from './BasicConfiguration'\nimport GroupingConfiguration from './GroupingConfiguration'\nimport Staffing from './Staffing'\nimport { getTargetGroupDetail, saveTargetsGroup } from '@services/keyIndicatorAllocation'\nimport SdwMessage from '@common/Message'\n\nfunction StepWin(props) {\n const [sholdCheckValidate, setSholdCheckValidate] = useState(false)\n useEffect(() => {\n if (props.isEdit) {\n getTargetGroupDetail({\n id:props.record.id\n })\n .then(res => {\n if (res && res.data && res.data.code === 0) {\n let record = res.data.data || {}\n let subscribe_info_dict = record.subscribe_info_dict || {}\n let item = {\n \"group_name\": record.group_name,\n \"remark\": record.remark,\n \"two_group\": record.two_group,\n \"three_group\": record.three_group,\n \"relate_module\": record.relate_module ,\n \"enabled\": record.enabled,\n \"visible_list\": record.visible_list || [],\n \"focused_list\": record.focused_list || [],\n \"subscribe_info_dict\": {\n \"real_time_change\": subscribe_info_dict.real_time_change || [],\n \"change_day\": subscribe_info_dict.change_day || [],\n \"once_day\": subscribe_info_dict.once_day || [],\n \"change_week\": subscribe_info_dict.change_week || [],\n \"once_week\": subscribe_info_dict.once_week || [],\n \"change_month\": subscribe_info_dict.change_month || [],\n \"once_month\": subscribe_info_dict.once_month || []\n }\n }\n props.updateFormData(item)\n }\n })\n } else {\n let item = {\n group_name: \"\",\n remark: \"\",\n two_group: \"\",\n three_group: \"\",\n relate_module: \"\",\n enabled: 1,\n visible_list: [],\n focused_list: [],\n subscribe_info_dict: {\n real_time_change: [],\n change_day: [],\n once_day: [],\n change_week: [],\n once_week: [],\n change_month: [],\n once_month: []\n },\n }\n setSholdCheckValidate(false)\n props.updateFormData(item)\n }\n }, props.record)\n const {\n showSteps, isEdit, hideStepsFunc, record, updatePage,\n formData\n } = props\n\n function saveSubmit() {\n let {formData} = props\n let flag = ruleFormData(formData)\n console.log(\"saveSubmit============formData\", formData)\n console.log(\"saveSubmit============flag\", flag)\n if (!flag) {\n setSholdCheckValidate(true)\n return\n }\n let params = {\n data:{...formData}\n }\n let msg = \"新增成功\"\n if (props.isEdit) {\n params.id = props.record.id\n msg = \"编辑成功\"\n }\n saveTargetsGroup({\n ...params\n })\n .then(res => {\n if (res && res.data && res.data.code === 0) {\n props.updatePage()\n props.hideStepsFunc(false)\n SdwMessage.success(msg)\n } else {\n SdwMessage.error(res.data.msg)\n }\n })\n }\n\n function ruleFormData (formData) {\n if (!formData.group_name || formData.group_name.length > 12) {\n return false\n }\n if (formData.two_group) {\n let num = JSON.parse(formData.two_group).filter(i => (i.name == \"\" || i.name.length > 8)).length\n console.log(\"JSON.parse(formData.two_group)\", JSON.parse(formData.two_group))\n if (num > 0) {\n return false\n }\n }\n if (formData.three_group) {\n let num = JSON.parse(formData.three_group).filter(i => i.name == \"\" || i.name.length > 4).length\n if (num > 0) {\n return false\n }\n }\n if (formData.three_group) {\n let num = JSON.parse(formData.three_group).filter(i => i.name == \"\" || i.name.length > 4).length\n if (num > 0) {\n return false\n }\n }\n return true\n }\n\n\n const stepMenu = [\n [\n {\n stepNumber: 'one',\n title: '基础配置',\n component: ,\n },\n {\n stepNumber: 'two',\n title: '分组配置',\n component: ,\n },\n {\n stepNumber: 'three',\n title: '人员配置',\n component: ,\n }\n ]\n ]\n\n return (\n <>\n {\n showSteps &&\n \n }\n \n )\n}\n\nconst mapState = state => ({\n formData: state.keyIndicatorAllocation.formData\n})\n\nconst mapDispatch = dispatch => ({\n updateFormData: dispatch.keyIndicatorAllocation.updateFormData,\n})\n\nexport default connect(mapState, mapDispatch)(StepWin)\n","import React, {PureComponent} from 'react'\nimport _ from 'lodash'\nimport Drawer from '@common/Drawer'\nimport Input from '@common/Input'\nimport Switch from '@common/Switch'\nimport Select from '@common/Select'\nimport './EditWin.css'\nimport { getStaffs } from '@api/alertRules'\nimport SdwInput from '@common/Input'\nimport SdwSelect from '@common/Select'\nimport ConfigRule from '@pages/Knowledge/DataManagement/ConfigRule'\nimport { pageTargetsGroup, saveFocusUser } from '@api/keyIndicatorAllocation'\nimport SdwMessage from '@common/Message'\n\nclass EditWin extends PureComponent {\n\n state = {\n focusedList: [],\n allMembers:[],\n formData: {\n \"rtx_name\": \"\",\n \"enabled\": 0\n },\n targetsGroupList:[],\n sholdCheckValidate:false,\n }\n\n componentDidMount() {\n this.getStaffs()\n this.iniData()\n this.pageTargetsGroup()\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n if (prevProps.record != this.props.record) {\n }\n }\n\n iniData = () => {\n let {record, isEdit} = this.props\n console.log(\"iniData=====record\", record)\n if (isEdit) {\n let focused_list = []\n let n = 0\n record.user_focused_list.forEach(i => {\n n = n + 1\n focused_list.push({queue: n, name: parseInt(i)})\n })\n this.setState({\n formData:{\n \"rtx_name\": record.rtx_name,\n \"enabled\": record.enabled\n },\n focusedList:focused_list\n })\n }\n }\n\n getStaffs = () => {\n getStaffs().then(res => {\n if (res && res.data && res.data.code === 0) {\n let list = _.isArray(res.data.data) ? res.data.data : []\n list.push({name:\"default_focus\", value:\"default_focus\"})\n let allMembers = list.map(i => {\n return {id:i.value, text:i.name, item:i}\n })\n this.setState({\n allMembers: allMembers\n })\n }\n })\n }\n\n pageTargetsGroup = () => {\n let params = {\n limit : 1000\n }\n pageTargetsGroup (params).then(res => {\n if (res && res.data && res.data.code === 0) {\n let list = _.isArray(res.data.data.items) ? res.data.data.items : []\n console.log(\"==targetsGroupList\", res.data.data)\n console.log(\"==targetsGroupList\", res.data.data.items)\n console.log(\"==targetsGroupList\", list)\n this.setState({\n targetsGroupList:list.map(i => {\n return {id:i.id, text:i.group_name}\n })\n })\n }\n })\n }\n\n\n //删除分组\n removeFocusedList = (index) => {\n let { focusedList } = this.state\n let curArr = _.cloneDeep(focusedList)\n let lastIndex = curArr.length - 1\n curArr.splice(index, 1)\n\n // 删除的不是最后一项,需要更新删除下面的序号\n if (lastIndex !== index) {\n curArr = curArr.map((item, k) => {\n if (k < index) {\n return item\n } else {\n return _.assign({}, item, {\n queue: item.queue - 1\n })\n }\n })\n }\n\n this.setState({ focusedList: curArr })\n }\n //添加分组\n addFocusedList = () => {\n let { focusedList } = this.state\n let curArr = _.cloneDeep(focusedList)\n curArr.push(_.assign({}, {queue: 0, name: \"\"}, {\n queue: focusedList.length + 1\n }))\n this.setState({ focusedList: curArr })\n }\n\n changeFocusedList = (index, type, val) => {\n let { focusedList } = this.state\n let curArr = _.cloneDeep(focusedList)\n\n if (type === 'queue') {\n let beforeVal = Number(index - 1)\n let currentVal = Number(val - 1)\n\n if (beforeVal < currentVal) {\n for (let j = beforeVal + 1; j <= currentVal; j++) {\n curArr[j]['queue'] = curArr[j]['queue'] - 1\n }\n } else if (beforeVal > currentVal) {\n for (let j = beforeVal - 1; j >= currentVal; j--) {\n curArr[j]['queue'] = curArr[j]['queue'] + 1\n }\n }\n }\n\n curArr[index - 1][type] = val\n\n this.setState({ focusedList: curArr })\n }\n\n setFormValue = (type, val) => {\n let {formData} = this.state\n let obj = {}\n switch (type) {\n case \"rtx_name\":\n obj = {rtx_name:val}\n break\n case \"enabled\":\n obj = {enabled:val}\n break\n\n }\n this.setState({\n formData : _.assign({}, formData, {\n ...obj\n })\n })\n }\n\n onSubmit = () => {\n let {formData, focusedList} = this.state\n let {isEdit} = this.props\n if (!formData.rtx_name || focusedList.length == 0) {\n this.setState({\n sholdCheckValidate:true\n })\n return\n }\n let params = {\n \"rtx_name\": formData.rtx_name,\n \"user_focused_list\": focusedList.map(i => {\n return i.name\n }), // 指标组id数组\n \"enabled\": formData.enabled\n }\n saveFocusUser (params).then(res => {\n if (res && res.data && res.data.code === 0) {\n let msg = \"新增成功\"\n if (isEdit) {\n msg = \"编辑成功\"\n }\n SdwMessage.success(msg)\n this.props.updatePage()\n this.props.setShowEditWin(false)\n } else {\n SdwMessage.error(\"接口调用失败\")\n }\n })\n }\n\n render() {\n\n let {\n focusedList,\n formData,\n allMembers,\n targetsGroupList,\n sholdCheckValidate\n } = this.state\n\n let {\n isEdit, showEditWin, setShowEditWin, updatePage, record\n } = this.props\n\n console.log(\"--------targetsGroupList\", targetsGroupList)\n console.log(\"--------focusedList\", focusedList)\n let targetsGroupListClone = targetsGroupList.map(i => {\n for (let j in focusedList) {\n if (focusedList[j].name == i.id) {\n return {id:i.id, text:i.text, disabled:true}\n }\n }\n return {id:i.id, text:i.text, disabled:false}\n })\n\n return (\n setShowEditWin(false)}\n onCancelClick={() => setShowEditWin(false)}\n onSureClick={this.onSubmit}\n >\n \n
\n\n
\n 姓名\n
\n {\n if (!val) {\n return '姓名不能为空!'\n }\n return true\n }}\n data={allMembers}\n onChange={val => this.setFormValue(\"rtx_name\", val)}\n />\n
\n
\n\n
\n 当前关注\n
\n
\n \n {\n focusedList.length == 0 && this.addFocusedList()}\n >添加模块\n }\n {\n !!focusedList.length &&\n focusedList.sort((a, b) => a.queue - b.queue).map((item, index) => {\n let dataList = focusedList.map((i, index1) => {\n return {\n id: index1 + 1,\n text: index1 + 1\n }\n })\n\n return (\n
\n \n this.changeFocusedList(index + 1, 'queue', val)}\n width='18%'\n />\n \n \n !value ? \"指标组不能为空\" : true}\n sholdCheckValidate={sholdCheckValidate}\n onChange={val => this.changeFocusedList(index + 1, 'name', val)}\n data={targetsGroupListClone}\n />\n \n\n {(index+1) == focusedList.length && ( this.addFocusedList(index)}\n className='el-icon-plus'>)}\n this.removeFocusedList(index)}\n className='el-icon-minus'>\n
\n )\n })\n }\n \n
\n
\n
\n\n
\n 是否启用\n this.setFormValue(\"enabled\", val)}\n />\n
\n\n
\n
\n \n )\n }\n}\n\nexport default EditWin\n","import BreadCrumbs from '@common/BreadCrumbs'\nimport Tabs from '@common/Tabs'\nimport IndexGroupConfiguration from './IndexGroupConfiguration'\nimport IndexConcernManagement from './IndexConcernManagement'\nimport { hasPriv } from '@components/FrontendAuth/AuthMap'\n\nconst menu = [\n {\n title: '指标组配置',\n path: '/IndexGroupConfiguration',\n component: IndexGroupConfiguration,\n }, {\n title: '关注人管理',\n path: '/IndexConcernManagement',\n component: IndexConcernManagement,\n }\n]\n\nexport default function KeyIndicatorAllocation(props) {\n\n const hasPrivMenu = menu.filter(i => hasPriv(i.priv))\n\n return (\n <>\n \n\n
\n \n
\n \n )\n}\n","import { useState, useEffect, useCallback } from 'react'\nimport _ from 'lodash'\nimport Select from '@common/Select'\nimport Input from '@common/Input'\nimport Button from '@common/Button'\nimport Table from '@common/Table'\nimport Enable from '@common/Enable'\nimport Pagenation from '@common/Pagenation'\nimport BreadCrumbsAndTablde from '@components/BreadCrumbsAndTablde'\nimport { pageTargetsGroup } from '@services/keyIndicatorAllocation'\nimport Message from '@common/Message/index'\nimport { commonApi } from '@utils/request'\nimport RelateWin from './RelateWin'\nimport StepWin from './StepWin'\nimport { getSearchParams } from '@utils/submit'\nimport { pageAppTables } from '@api/api'\nimport SdwMessage from '@common/Message/index'\n\nexport default function IndexGroupConfiguration() {\n\n const [curRecord, setCurRecord] = useState({})\n const [showRelateWin, setShowRelateWin] = useState(false)\n const [curEditItem, setCurEditItem] = useState({})\n const [isEdit, setIsEdit] = useState(false)\n const [showSteps, setShowSteps] = useState(false)\n const [pageConfig, setPageConfig] = useState({})\n const [searchParams, setSearchParams] = useState({})\n const [apiList, setApiList] = useState([])\n\n useEffect(() => {\n initData()\n }, [pageConfig, searchParams])\n\n useEffect(() => {\n getApi()\n }, [])\n\n function initData() {\n commonApi(pageTargetsGroup, {\n ...pageConfig,\n search: getSearchParams(searchParams, ['group_name'])\n }).then(data => {\n setCurRecord(data)\n }).catch(err => Message.error(err))\n }\n\n function getApi() {\n let params = {\n limit: 1000,\n page: 1,\n // search: {\n // table_name: {\n // value: `%${apiName}%`,\n // operator: 'like'\n // }\n // },\n // orSearch: {\n // table_name_cn: {\n // value: `%${apiName}%`,\n // operator: 'like'\n // }\n // },\n }\n pageAppTables(params).then(res => {\n let jsonData = res && res.data || {}\n if (jsonData && jsonData.code === 0 && jsonData.data) {\n setApiList(jsonData.data.items.map(i => {\n return {\n id:i.id,\n text:i.table_name_cn+\"(\"+i.table_name+\")\",\n item:i\n }\n }))\n }\n }, () => SdwMessage.error(\"接口异常\"))\n }\n\n const getcolumns = useCallback(\n () => {\n return [\n {\n title: \"ID\",\n dataIndex: 'id',\n width: 30\n }, {\n title: '指标组',\n dataIndex: 'group_name',\n width: 90\n }, {\n title: '二级分类',\n width: 120,\n render: data => {\n let str = \"\"\n if (data.two_group != \"\") {\n let two_group = JSON.parse(data.two_group)\n for (let i in two_group) {\n if (str == \"\") {\n str = two_group[i].name\n } else {\n str += \"/\" + two_group[i].name\n }\n }\n }\n return (\n {str}\n )\n }\n }, {\n title: '三级分类',\n width: 120,\n render: data => {\n let str = \"\"\n if (data.three_group != \"\") {\n let three_group = JSON.parse(data.three_group)\n for (let i in three_group) {\n if (str == \"\") {\n str = three_group[i].name\n } else {\n str += \"/\" + three_group[i].name\n }\n }\n }\n return (\n {str}\n )\n }\n }, {\n title: '备注',\n dataIndex: 'remark',\n width: 60\n }, {\n title: '状态',\n render: data => ,\n width: 50,\n }, {\n title: '可见范围',\n width: 50,\n render: data => {data.visible_count || 0 }人\n }, {\n title: '关注人',\n width: 50,\n render: data => {data.indicator_focus_count || 0 }人\n }, {\n title: '订阅人',\n width: 50,\n render: data => {data.indicator_subscribe_count || 0 }人\n }, {\n title: '修改人',\n dataIndex: 'update_user',\n width: 60\n }, {\n title: '修改时间',\n dataIndex: 'update_time',\n width: 120\n }, {\n title: '操作',\n width: 90,\n render: data => (\n <>\n onEdit(data)}\n />\n onRelate(data)}\n />\n \n )\n }\n ]\n },\n )\n\n function onCreate() {\n setIsEdit(false)\n setCurEditItem({})\n setShowSteps(true)\n }\n\n function onEdit(item) {\n setIsEdit(true)\n setCurEditItem(item)\n setShowSteps(true)\n }\n\n function onRelate(item) {\n setIsEdit(true)\n setCurEditItem(item)\n setShowRelateWin(true)\n }\n\n function updateParams(key, val) {\n let cloneParams = _.cloneDeep(searchParams)\n cloneParams[key] = val\n setSearchParams(cloneParams)\n }\n return (\n <>\n \n \n {\n setPageConfig(r => _.assign({}, r, {\n page: 1\n }))\n updateParams('group_name', val)\n }}\n width={260}\n />\n {\n setPageConfig(r => _.assign({}, r, {\n page: 1\n }))\n updateParams('enabled', val)\n }}\n width={200}\n />\n \n\n \n \n \n\n \n \n\n setPageConfig(r => _.assign({}, r, {\n page\n }))}\n pageCountChange={limit => setPageConfig(r => _.assign({}, r, {\n limit\n }))}\n />\n \n \n\n {/* 关联接口弹窗 */}\n {\n showRelateWin&&\n }\n\n {/* 新增 */}\n {\n showSteps&&\n }\n \n )\n}\n","import {useState, useEffect, useCallback} from 'react'\nimport _ from 'lodash'\nimport Input from '@common/Input'\nimport Button from '@common/Button'\nimport Table from '@common/Table'\nimport Message from '@common/Message'\nimport Pagenation from '@common/Pagenation'\nimport BreadCrumbsAndTablde from '@components/BreadCrumbsAndTablde'\nimport {pageTargetsGroup, getPageFocus} from '@services/keyIndicatorAllocation'\nimport EditWin from './EditWin'\nimport {getSearchParams} from '@utils/submit'\nimport {commonApi} from '@utils/request'\n\nexport default function IndexConcernManagement() {\n\n const [showEditWin, setShowEditWin] = useState(false)\n const [curEditItem, setCurEditItem] = useState({})\n const [isEdit, setIsEdit] = useState(false)\n const [searchParams, setSearchParams] = useState({})\n const [pageConfig, setPageConfig] = useState({pageNum:0, pageSize:10})\n const [focusList, setFocusList] = useState([])\n const [name, setName] = useState(\"\")\n\n\n useEffect(() => {\n initData()\n }, [name, pageConfig])\n\n function initData() {\n commonApi(getPageFocus, {\n ...pageConfig,\n name:name\n }).then(data => {\n setFocusList(data)\n }).catch(err => Message.error(err))\n }\n\n const getcolumns = useCallback(\n () => {\n return [\n {\n title: '关注人',\n dataIndex: 'rtx_name',\n width: 50\n }, {\n title: '指标组',\n showTip: true,\n width: 150,\n render: data => {\n let focused_list = data.user_focused_list || []\n let group_list = data.group_list || []\n let str = \"\"\n focused_list.forEach(i => {\n for (let j in group_list) {\n if (group_list[j].id == i) {\n if (str == \"\") {\n str = group_list[j].group_name\n } else {\n str += \"/\" + group_list[j].group_name\n }\n }\n }\n })\n return (\n {str}\n )\n }\n }, {\n title: '关注中',\n width: 20,\n render: data => {_.isArray(data.user_focused_list) ? data.user_focused_list.length : 0 }\n }, {\n title: '修改人',\n dataIndex: 'modified_user',\n width: 50\n }, {\n title: '修改时间',\n dataIndex: 'modified_time',\n width: 80\n }, {\n title: '操作',\n width: 30,\n render: data => (\n onEdit(data)}\n />\n )\n }\n ]\n }\n )\n\n function onCreate() {\n setIsEdit(false)\n setCurEditItem({})\n setShowEditWin(true)\n }\n\n function onEdit(item) {\n setIsEdit(true)\n setCurEditItem(item)\n setShowEditWin(true)\n }\n\n function updateParams(key, val) {\n let cloneParams = _.cloneDeep(searchParams)\n cloneParams[key] = val\n setSearchParams(cloneParams)\n }\n\n return (\n <>\n \n \n {\n setPageConfig(r => _.assign({}, r, {\n pageNum: 0\n }))\n setName(val)\n }}\n />\n \n\n \n \n \n\n \n \n\n {\n pageNum = pageNum - 1\n //console.log(\"=====pageNum\", pageNum)\n setPageConfig(r => _.assign({}, r, {\n pageNum\n }))\n }}\n pageCountChange={pageSize => setPageConfig(r => _.assign({}, r, {\n pageSize\n }))}\n />\n \n \n\n {\n showEditWin &&\n \n }\n \n )\n}\n","import _ from 'lodash'\nimport switchRoutes from './switchRoutes'\nimport MonitoringEye from '@pages/Monitor/MonitoringEye'\nimport MonitoringEyeDetail from '@pages/Monitor/MonitoringEye/MonitoringEyeDetail'\nimport QualityControl from '@pages/Monitor/QualityControl'\nimport EarlyWarningRules from '@pages/Monitor/QualityControl/EarlyWarningRules'\nimport BusinessIndicatorsOperation from '@pages/Monitor/BusinessIndicatorsOperation'\nimport MonitorManagement from '@pages/Monitor/MonitorManagement'\nimport KeyIndicatorAllocation from '@pages/Monitor/KeyIndicatorAllocation'\n\nexport const routerPath = '/admin/monitor'\n\nexport const bar = {\n rootUrl: routerPath,\n activeClassName: 'current',\n className: 'sdw-nav-item',\n name: '智慧运营台',\n children: [\n {\n icon: '',\n title: '分析监控眼',\n path: `${routerPath}/monitorManagement`,\n }, {\n icon: '',\n title: '热词监控眼',\n path: `${routerPath}/monitoringEye`,\n }, {\n icon: '',\n title: '预警监控眼',\n path: `${routerPath}/qualityControl`,\n }, {\n icon: '',\n title: '关键指标配置',\n path: `${routerPath}/keyIndicatorAllocation`,\n }, {\n icon: '',\n title: '运营配置',\n path: `${routerPath}/operationConfiguration`,\n }\n // 暂时隐藏\n // , {\n // icon: '',\n // title: '规则引擎',\n // path: `http://kfrule.woa.com`,\n // gotoPathState: 1,\n // }\n ],\n order: 5\n}\n\nconst pages = {\n monitorManagement: {\n icon: 'icon-278',\n title: '分析监控眼',\n path: `${routerPath}/monitorManagement`,\n component: MonitorManagement,\n },\n MonitoringEye: {\n icon: 'icon-278',\n title: '热词监控眼',\n path: `${routerPath}/monitoringEye`,\n component: MonitoringEye,\n },\n MonitoringEyeDetail: {\n icon: 'icon-278',\n title: '热词监控眼详情',\n path: `${routerPath}/monitoringEyeDetail/:id`,\n component: MonitoringEyeDetail,\n },\n QualityControl: {\n icon: 'icon-278',\n title: '预警监控眼',\n path: `${routerPath}/qualityControl`,\n component: QualityControl\n },\n EarlyWarningRules: {\n icon: 'icon-278',\n title: '预警规则管理',\n path: `${routerPath}/earlyWarningRules`,\n component: EarlyWarningRules\n },\n KeyIndicatorAllocation: {\n icon: 'icon-278',\n title: '关键指标配置',\n path: `${routerPath}/keyIndicatorAllocation`,\n component: KeyIndicatorAllocation\n },\n BusinessIndicators: {\n icon: 'icon-278',\n title: '运营配置',\n path: `${routerPath}/operationConfiguration`,\n component: BusinessIndicatorsOperation\n }\n}\n\n// export const menus = [pages['home'], pages['voice'], pages['history'], pages['customer'], pages['worker']]\n\nexport const Router = switchRoutes({ routes: _.values(pages) })\n","// @file 数据查询接口\nimport { request } from '../utils/request'\n\nexport const getTablecfgList = params => {\n return request({ url: '/metadata/tableApi/getTablecfgList', method: 'get', params: params })\n}\n\n// 获取 元数据 表信息 下拉选项\nexport function getAllTablecfg (params) {\n return request({ url: '/metadata/tableApi/getAllTablecfg', method: 'get', params: params })\n}\n\nexport function getMysqlTables (params) {\n return request({ url: '/metadata/tableApi/getMysqlTables', method: 'get', params: params })\n}\n\nexport function getEsIndex (params) {\n return request({ url: '/metadata/tableApi/getEsIndex', method: 'get', params: params })\n}\n\nexport function getTables (params) {\n return request({ url: '/metadata/tableApi/getTableName', method: 'get', params: params })\n}\n\nexport function getItems (params) {\n return request({ url: '/metadata/tableApi/getItems', method: 'get', params: params })\n}\n\nexport function getItemsNew (params, headers = {}) {\n return request({ url: '/metadata/tableApi/getItemsNew', method: 'get', params: params , headers:headers})\n}\n\nexport const getTablecfgFieldsNew = (params = {}) => {\n return request({ url: 'metadata/tableApi/getTablecfgFieldsNew', method: 'get', params: params })\n}\n\nexport const getTablecfgFieldsAndStandardList = (params = {}) => {\n return request({ url: '/metadata/tableApi/getTablecfgFieldsAndStandardList', method: 'get', params: params })\n}\n\nexport const exportItemsData = (params = {}, headers = {}) => {\n return request({ url: '/metadata/tableApi/exportItemsData', method: 'get', params: params , headers:headers})\n}\n\nexport const exportTaskItems = (params = {}) => {\n return request({ url: '/metadata/tableApi/exportTaskItems', method: 'get', params: params })\n}\n","// @file 获取表名称自定义kook\nimport { useState, useEffect } from 'react'\nimport _ from 'lodash'\nimport { getAllTablecfg } from '@services/dataSearch'\nimport { commonApi } from '@utils/request'\n\nexport default function useAllTablecfg() {\n\n const [record, setRecord] = useState([])\n\n useEffect(() => {\n commonApi(getAllTablecfg).then(data => {\n if (_.isArray(data) && data.length) {\n setRecord(data.map(i => ({\n ...i,\n text: `${i.database_name}.${i.table_name}(${i.data_set_chinese})`\n })))\n }\n })\n }, [])\n\n return record\n}","// @file 数据列表\nimport {useState, useEffect, useMemo} from 'react'\nimport {connect} from 'react-redux'\nimport {withRouter} from 'react-router-dom'\nimport _ from 'lodash'\nimport Select from '@common/Select'\nimport Table from '@common/Table'\nimport Pagenation from '@common/Pagenation'\nimport Button from '@common/Button'\nimport Message from '@common/Message'\nimport {getTablecfgList} from '@services/dataSearch'\nimport {commonApi} from '@utils/request'\nimport {LEVEL_TYPE_MAP, LEVEL_TEXT_MAP} from '@pages/common'\nimport useAllTablecfg from '@pages/common/useAllTablecfg'\nimport UseGetTopic from '@customHooks/UseGetTopic'\nimport './index.css'\n\nconst BASE_LEVEL_MAP = _.keys(LEVEL_TYPE_MAP).map(key => ({\n id: key,\n text: LEVEL_TEXT_MAP[key]\n}))\n\nfunction DataList(props) {\n\n const tableArr = useAllTablecfg()\n const topicAndBusinessRecord = UseGetTopic()\n\n const [topicID, setTopicID] = useState('')\n\n const curTopicList = useMemo(() => {\n return _.isArray(_.get(topicAndBusinessRecord, 'topic')) ? _.get(topicAndBusinessRecord, 'topic').map(i => ({\n ...i,\n id: i.topic_name,\n text: i.topic_name,\n topic_id: i.id\n })) : []\n }, [topicAndBusinessRecord])\n\n const curBusinessList = useMemo(() => {\n return _.isArray(_.get(topicAndBusinessRecord, 'business')) ? _.get(topicAndBusinessRecord, 'business').filter(j => j.topic_id == topicID).map(i => ({\n ...i,\n id: i.business_name,\n text: i.business_name\n })) : []\n }, [topicAndBusinessRecord, topicID])\n\n const allBusinessList = useMemo(() => {\n return _.isArray(_.get(topicAndBusinessRecord, 'business')) ? _.get(topicAndBusinessRecord, 'business').map(i => ({\n ...i,\n id: i.business_name,\n text: i.business_name\n })) : []\n }, [topicAndBusinessRecord])\n\n const [curRecord, setCurRecord] = useState({})\n const [searchParams, setSearchParams] = useState({\n limit: 10,\n page: props.pageInfo || 1\n })\n const [search, setSearch] = useState({})\n const [curTabID, setCurTabID] = useState('')\n\n useEffect(() => {\n // 处理一下search中的空值\n const curSearch = _.keys(search).reduce((prev, key) => {\n if (search[key] !== '') {\n prev[key] = {\n value: search[key],\n operator: '='\n }\n }\n return prev\n }, {})\n\n commonApi(getTablecfgList, _.assign({}, searchParams, {\n search: JSON.stringify(curSearch)\n })).then(data => {\n if (!_.isEmpty(data)) setCurRecord(data)\n }).catch(msg => {\n Message.error(msg)\n })\n }, [searchParams, search])\n\n function getColumns() {\n return [\n {\n title: 'ID',\n dataIndex: 'id',\n width: 50\n }, {\n title: '主题域',\n dataIndex: 'topic',\n width: 100\n }, {\n title: '业务',\n dataIndex: 'business',\n width: 100\n }, {\n title: '数据源类型',\n dataIndex: 'data_set_type',\n width: 100\n }, {\n title: '表英文名',\n width: 300,\n render: data =>\n {!!(data.database_name) ? `${data.database_name}.${data.table_name}` : !!(data.table_name) ? data.table_name : '-'}\n }, {\n title: '表中文名',\n dataIndex: 'data_set_chinese',\n width: 250\n }, {\n title: '备注',\n dataIndex: 'comments',\n width: 150\n }, {\n title: '操作',\n width: 100,\n render: data => (\n jumpToSearchEport(data)}\n />\n )\n },\n ]\n }\n\n function jumpToSearchEport(data) {\n props.history.push({\n pathname: `/admin/dataGasStation/searchEport/${data.id}`,\n state: {\n curMenuIndex: 0\n }\n })\n }\n\n function updateSearchParams(type, val) {\n setSearchParams(r => _.assign({}, r, {\n [type]: val\n }))\n }\n\n function onSearch(type, val) {\n setSearch(r => _.assign({}, r, {\n [type]: val\n }))\n }\n\n return (\n
\n
\n
\n {\n updateSearchParams('page', 1)\n onSearch('topic', val)\n setTopicID(item.topic_id)\n }}\n data={curTopicList}\n readOnly={false}\n />\n
\n
\n {\n updateSearchParams('page', 1)\n onSearch('business', val)\n }}\n data={search.topic ? curBusinessList : allBusinessList}\n readOnly={false}\n />\n
\n
\n {\n updateSearchParams('page', 1)\n setSearch(r => _.assign({}, r, {\n 'database_name': item.database_name || '',\n 'table_name': item.table_name || ''\n }))\n setCurTabID(id)\n }}\n data={tableArr}\n listWidth={400}\n readOnly={false}\n />\n
\n
\n {\n updateSearchParams('page', 1)\n onSearch('warehouse_level', val)\n }}\n data={BASE_LEVEL_MAP}\n />\n
\n
\n {\n updateSearchParams('page', 1)\n onSearch('data_set_type', val)\n }}\n data={[{\n id: 'mysql',\n text: 'mysql'\n }, {\n id: 'es',\n text: 'es'\n }]}\n />\n
\n
\n\n
\n \n\n updateSearchParams('page', val)}\n pageCountChange={val => updateSearchParams('limit', val)}\n />\n
\n
\n )\n}\n\nconst mapState = state => ({\n pageInfo: state.page.pageInfo\n})\n\nexport default withRouter(connect(mapState)(DataList))","// 对应接口字段\nexport const TYPE_MAP = {\n new: '0',\n start: '1',\n done: '2',\n notEffect: '3',\n error: '4',\n run:\"200\",\n stop:\"201\"\n}\n\nexport const TYPE_TEXT_MAP = {\n [TYPE_MAP.new]: '未开始',\n [TYPE_MAP.start]: '进行中',\n [TYPE_MAP.done]: '已完成',\n [TYPE_MAP.notEffect]: '文件已过期',\n [TYPE_MAP.error]: '异常'\n}\n\nexport const TYPE_CLASS_NAEM_MAP = {\n [TYPE_MAP.new]: 'is_new',\n [TYPE_MAP.start]: 'is_doing',\n [TYPE_MAP.done]: 'is_done',\n [TYPE_MAP.notEffect]: 'is_doing',\n [TYPE_MAP.error]: 'is_error'\n}\n\nexport const STATUS_MAP = {\n [TYPE_MAP.run]: '服务正在运行',\n [TYPE_MAP.stop]: '服务已停止',\n}\n","// @file 导出记录\nimport { useState, useEffect, useMemo } from 'react'\nimport {connect} from 'react-redux'\nimport {withRouter} from 'react-router-dom'\nimport _ from 'lodash'\nimport Input from '@common/Input'\nimport Select from '@common/Select'\nimport Table from '@common/Table'\nimport Message from '@common/Message'\nimport Pagenation from '@common/Pagenation'\nimport Button from '@common/Button'\nimport DatePicker from '@common/DatePicker'\nimport { exportTaskItems } from '@services/dataSearch'\nimport { commonApi, fileDownload } from '@utils/request'\nimport { getRangeDateTime } from '@utils/formatTime'\nimport { TYPE_MAP, TYPE_TEXT_MAP, TYPE_CLASS_NAEM_MAP } from '../common'\nimport { debounce } from '@utils/common'\n\nimport useAllTablecfg from '@pages/common/useAllTablecfg'\nimport './index.css'\n\nfunction ExportRecord(props) {\n\n const tableArr = useAllTablecfg()\n\n const [curRecord, setCurRecord] = useState({})\n const [apiParams, setApiParams] = useState({\n page: props.pageInfo || 1,\n limit: 10\n })\n const [searchParams, setSearchParams] = useState({})\n const [curTabID, setCurTabID] = useState('')\n const [createUser, setCreateUser] = useState('')\n\n useEffect(() => {\n setApiParams(r => _.assign({}, r, {\n page: 1\n }))\n onSetSearchParams('create_user', createUser)\n }, [createUser])\n\n useEffect(() => {\n const curSearchParams = _.keys(searchParams).reduce((prev, key) => {\n if (searchParams[key] === '') return prev\n\n // 时间用 range\n if (key === 'create_time') {\n prev[key] = {\n value: _.isArray(searchParams[key]) ? getRangeDateTime(searchParams[key]) : '',\n operator: 'range'\n }\n } else {\n const isLikeType = ['table_name', 'create_user'].includes(key)\n prev[key] = {\n value: isLikeType ? `%${searchParams[key]}%` : searchParams[key],\n operator: isLikeType ? 'like' : '='\n }\n }\n\n return prev\n }, {})\n\n commonApi(exportTaskItems, _.assign({}, apiParams, {\n search: JSON.stringify(curSearchParams)\n })).then(data => {\n if (!_.isEmpty(data)) setCurRecord(data)\n }).catch(msg => Message.error(msg || '获取数据失败!'))\n }, [apiParams, searchParams])\n\n function getcolumns() {\n return [\n {\n width: 20,\n title: 'ID',\n dataIndex: 'id',\n }, {\n title: '表英文名',\n width: 200,\n render: data => { !!(data.database_name) ? `${data.database_name}.${data.table_name}` : !!(data.table_name) ? data.table_name : '-'}\n }, {\n title: '表中文名',\n width: 140,\n render: data => { tableArr.find(i => i.id === data.table_id) && tableArr.find(i => i.id === data.table_id).data_set_chinese || '-' }\n }, {\n title: '查询条件',\n dataIndex: 'search',\n width: 300,\n }, {\n title: '数据量',\n width: 80,\n dataIndex: 'data_total',\n }, {\n title: '发起时间',\n dataIndex: 'create_time',\n width: 140\n }, {\n title: '任务状态',\n render: data => (\n {TYPE_TEXT_MAP[data.status]}\n )\n }, {\n title: '导出人',\n dataIndex: 'create_user',\n }, {\n title: '操作',\n width: 180,\n render: data => {\n return <>\n fileDownload(`/metadata/tableApi/download?id=${data.id}`)}\n />\n {\n console.log(\"----data\", data)\n props.history.push({\n pathname: '/admin/dataGasStation/searchEport/'+data.table_id,\n state: {\n data: data,\n curMenuIndex: 1\n }\n })\n }}\n />\n \n }\n },\n ]\n }\n\n const onSetSearchParams = debounce((key, val) => {\n setSearchParams(r => _.assign({}, r, {\n [key]: val\n }))\n })\n\n function disabledDateFun(time) {\n return time.getTime() > Date.now()\n }\n\n const stateMap = useMemo(() => {\n return _.keys(TYPE_TEXT_MAP).map(key => ({\n id: key,\n text: TYPE_TEXT_MAP[key]\n }))\n }, [TYPE_TEXT_MAP])\n\n return (\n
\n
\n\n
\n onSetSearchParams('create_time', val)} // 改变value的函数\n />\n
\n\n {\n setApiParams(r => _.assign({}, r, {\n page: 1\n }))\n onSetSearchParams('table_name', item && item.table_name || '')\n setCurTabID(val)\n }}\n data={tableArr}\n readOnly={false}\n />\n {\n setApiParams(r => _.assign({}, r, {\n page: 1\n }))\n onSetSearchParams('status', val)\n }}\n data={stateMap}\n />\n \n
\n\n
\n \n\n setApiParams(r => _.assign({}, r, {\n page: val\n }))}\n pageCountChange={val => setApiParams(r => _.assign({}, r, {\n limit: val\n }))}\n />\n
\n
\n )\n}\n\nconst mapState = state => ({\n pageInfo: state.page.pageInfo\n})\n\nexport default withRouter(connect(mapState)(ExportRecord))","// @file 数据查询\nimport React from 'react'\nimport BreadCrumbs from '@common/BreadCrumbs'\nimport Tabs from '@common/Tabs'\nimport {hasPriv} from '@components/FrontendAuth/AuthMap'\nimport DataList from './DataList'\nimport ExportRecord from './ExportRecord'\nimport _ from \"lodash\";\n\nconst menu = [\n {\n title: '数据列表',\n path: '/datalist',\n component: DataList,\n priv: 'getTablecfgList',\n }, {\n title: '导出记录',\n path: '/exportrecord',\n component: ExportRecord,\n priv: 'exportTaskItems'\n }\n]\n\nclass DataSearch extends React.PureComponent {\n\n state = {\n curMenuIndex: 0\n }\n\n componentDidMount() {\n const search = _.get(this, 'props.location.search')\n // 回到导出记录tab\n if (!!search && search.indexOf('tab=Record')) this.setState({curMenuIndex: 1})\n }\n\n render() {\n\n let {curMenuIndex} = this.state\n const hasPrivMenu = menu.filter(i => hasPriv(i.priv))\n\n return (\n <>\n
\n \n
\n
\n \n
\n \n\n )\n }\n}\n\nexport default DataSearch\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport './index.css'\n\nclass DropDown extends React.PureComponent {\n\n static defaultProps = {\n menu: [],\n value: '',\n changeValue: () => ({}),\n showTitle: false, // 该值设置为 true 时,所有的选择项都有悬浮提示\n showTitleMaxNumber: 20\n }\n\n state = {\n showMenuList: false\n }\n\n render () {\n\n let { menu, value, changeValue, listMaxWidth, showTitle, showTitleMaxNumber } = this.props\n let { showMenuList } = this.state\n\n let titleClassName = 'sdw__drop-down__menu-title ellipsis'\n if (showMenuList) titleClassName += ' show_menu_list'\n\n return (\n
this.setState({ showMenuList: true })}\n onMouseLeave={() => this.setState({ showMenuList: false })}\n >\n {value || menu[0]}\n {\n showMenuList &&\n
this.setState({ showMenuList: true })}\n >\n {\n Array.isArray(menu) &&\n !!menu.length &&\n menu.map(item => (\n showTitleMaxNumber) ? item : ''}\n className={value === item ? 'current ellipsis' : 'ellipsis'}\n style={{ ...(!!listMaxWidth ? {maxWidth: listMaxWidth} : {}) }}\n onClick={() => {\n this.setState({ showMenuList: false })\n if (typeof changeValue === 'function') {\n changeValue(item)\n }\n }}\n >{item}
\n ))\n }\n
\n }\n \n )\n }\n}\n\nDropDown.propTypes = {\n menu: PropTypes.array,\n value: PropTypes.string,\n changeValue: PropTypes.func,\n listMaxWidth: PropTypes.number,\n showTitle: PropTypes.bool, // 该值设置为 true 时,所有的选择项都有悬浮提示\n showTitleMaxNumber: PropTypes.number, // 转为字符串后长度大于 showTitleMaxNumber 的时候,显示悬浮提示 \n}\n\nexport default DropDown","// @file 查询导出模块\nimport { useState, useEffect, useMemo, useCallback } from 'react'\nimport _ from 'lodash'\nimport BreadCrumbs from '@common/BreadCrumbs'\nimport Message from '@common/Message'\nimport DropDown from '@common/DropDown'\nimport Table from '@common/Table'\nimport Input from '@common/Input'\nimport Button from '@common/Button'\nimport Loadding from '@common/Loadding'\nimport Select from '@common/Select'\nimport Dialog from '@common/Dialog'\nimport {\n getMysqlTables,\n getEsIndex,\n getTables,\n getTablecfgList,\n getItemsNew,\n getTablecfgFieldsNew,\n getTablecfgFieldsAndStandardList,\n exportItemsData\n} from '@services/dataSearch'\nimport { commonApi } from '@utils/request'\nimport { getRangeDateTime } from '@utils/formatTime'\n\nimport './index.css'\nimport { getTablecfgDetailPermission, getTablecfgDetailAuth, getMetaDataInfo } from '@api/metaData'\nimport SdwMessage from '@common/Message'\nimport Empty from '@common/Empty'\nimport AuthText from '@pages/Market/Metadata/TableDetails/common/AuthText'\nimport AuthApply from '@pages/Market/Metadata/TableDetails/common/AuthApply'\nimport { connect } from 'react-redux'\nimport { hasPriv } from '@components/FrontendAuth/AuthMap'\nimport delImg from '../../../../img/icon_16_sc@2x.png'\nimport DateTimePicker from '@common/DateTimePicker'\n\nconst dataSetTypeMap = {\n es: 'es',\n mysql: 'mysql'\n}\n\nconst TIME_ARR = ['date', 'datetime', 'timestamp', 'date(7)','esdate']\n\nconst ZERO_NUMBER = 0\n\nlet timer = null\n\nfunction SearchEport(props) {\n const curID = _.get(props, 'match.params.id')\n var isLocation = false\n if (props.location.state && props.location.state.data) {\n isLocation = true\n }\n var functionName = \"\"\n const [curRecord, setCurRecord] = useState({}) // 当前数据项\n const [dropMenu, setDropMenu] = useState([])\n const [curDropDownItem, setCurDropDownItem] = useState('')\n const [tableRecord, setTableRecord] = useState({}) // 右侧table数据\n const [allCheckList, setAllCheckList] = useState([]) // 会跟着过滤选项改变\n const [checkedArr, setCheckedArr] = useState([]) // 左侧已选中的勾选项数组\n const [fieldArr, setFieldArr] = useState([]) // 已选的字段列表\n const [isLoadding, setIsLoadding] = useState(false)\n const [selectMethod, setSelectMethod] = useState(\"condition\")\n const [clickButtonMap, setClickButtonMap] = useState([])\n const [fieldName, setFieldName] = useState(\"\")\n const [searchList, setSearchList] = useState([ // 搜索查询条件,默认第一个一定是时间过滤条件\n {\n indexID: ZERO_NUMBER // 前端标识\n }\n ])\n const [searchCustomList, setSearchCustomList] = useState({\n data_time: \"\",\n field: {},\n selectValue: \"\",\n })\n const [visible, setVisible] = useState(false)\n const [dialogConfig, setDialogConfig] = useState({\n title: '',\n msg: ''\n })\n const [allFiledArr, setAllFiledArr] = useState([])\n const [code, setCode] = useState(\"\")\n const [isApplyAuth, showAuthApply] = useState(false)\n // 查询到的总条数\n const tableRecordTotal = useMemo(() => {\n return _.get(tableRecord, 'total') || 0\n }, [tableRecord])\n\n // 单次导出不能超过10万条\n const isTotalHeigh = useMemo(() => {\n return tableRecordTotal > 100000\n }, [tableRecordTotal])\n useEffect(() => {\n let clickButtonMapTmp = [\n {text:\"按条件查询\", type:\"condition\", className:\"opr-right-wrap-li\"},\n {text:\"自定义查询\", type:\"custom\", className: \"opr-right-wrap-li\"}\n ]\n if (curRecord.data_set_type == \"mysql\") {\n clickButtonMapTmp[1].className = \"opr-right-wrap-li disable-clicked\"\n }\n setClickButtonMap(clickButtonMapTmp)\n }, [curRecord])\n\n useEffect(() => {\n if (!curID) return\n let auth = hasPriv('getTablecfgDetailPermission')\n if (auth == false) {\n getTablecfgDetailAuth({id:curID}).then(res => {\n if (res && res.data ) {\n setCode(res.data.code)\n } else {\n let msg = res.data.msg || '请求失败'\n SdwMessage.error(msg)\n }\n }).catch(error => SdwMessage.error('请求失败 ' + error))\n } else {\n setCode(0)\n }\n }, [isApplyAuth])\n\n //下拉的过滤字段列表\n useEffect(() => {\n if (!curID) return\n commonApi(getTablecfgFieldsAndStandardList, {\n id: curID\n }).then(data => {\n const field = _.get(data, 'field') || []\n if (!_.isArray(field)) return\n\n let searchListClone = []\n let searchCustomListClone = {\n data_time: \"\",\n field: {},\n selectValue: \"\",\n }\n let search = {}\n let selectMethod = \"\"\n if (isLocation == true) {\n let propsData = props.location.state.data\n selectMethod = propsData.type || \"condition\"\n setSelectMethod(selectMethod)\n search = JSON.parse(propsData.search)\n }\n let allFilterArray = field.map(i => {\n\n if (isLocation == true) {\n\n for (let key in search) {\n if (key == i.field_name) {\n console.log(\"=====search[key]\", search[key])\n if (selectMethod == \"condition\") { //条件查询\n let selectItem = {}\n selectItem = {\n equal: search[key].type,\n field_name: i.field_name,\n field_type: i.field_type,\n indexID: searchListClone.length,\n key: i.id,\n }\n if (i.field_type == \"date\") {\n selectItem[\"date\"] = [search[key].value[\"gte\"], search[key].value[\"lt\"]]\n } else {\n selectItem[\"value\"] = search[key].value\n }\n searchListClone.push(selectItem)\n } else {//自定义查询\n console.log(\"----------search\", search)\n searchCustomListClone.field = i\n if (search[\"\"]) {\n searchCustomListClone.selectValue = search[\"\"].value\n }\n searchCustomListClone.data_time = [search[key].value[\"gte\"], search[key].value[\"lt\"]]\n }\n }\n }\n }\n i.text = `${i.field_name}(${i.field_name_ch || '-'})`\n return i\n })\n if (isLocation == true) {\n if (selectMethod == \"condition\") {\n console.log(\"---------------searchListClone\", searchListClone)\n setSearchList(searchListClone)\n } else {\n setSearchCustomList(searchCustomListClone)\n }\n }\n setAllFiledArr(allFilterArray)\n })\n }, [curID])\n\n useEffect(() => {\n if (!curID) return\n commonApi(getTablecfgList, {\n limit: 10,\n page: 1,\n search: JSON.stringify({\n id: {\n value: curID,\n operator: '='\n },\n })\n }).then(data => {\n const record = _.get(data, 'items.[0]')\n if (_.isEmpty(record)) return\n setCurRecord(record)\n }).catch(err => Message.error(err))\n }, [curID])\n\n useEffect(() => {\n if (!curID) return\n let params = {\n data_set_id: {\n value: curID,\n operator: '='\n }\n }\n let fieldsArray = []\n if (isLocation == true) {\n let propsData = props.location.state.data\n fieldsArray = propsData.fields.split(\",\")\n console.log(\"-----propsData\", propsData)\n params[\"field_name\"] = {\"operator\": \"in\", \"value\": fieldsArray}\n }\n commonApi(getTablecfgFieldsNew, {\n search: JSON.stringify(params)\n }).then(data => {\n const items = _.get(data, 'items')\n if (!_.isArray(items)) return\n\n let fieldNum = 0\n console.log(\"-----fieldsArray\", fieldsArray)\n let fieldArrTmp = []\n const arr = items.map(i => {\n i.text = `${i.field_name}(${i.field_name_ch || '-'})`\n if (isLocation == true) {\n if (fieldsArray.indexOf(i.field_name) >= 0) {\n i.isSelected = 1\n fieldArrTmp.push(i)\n }\n } else if (fieldNum < 5){\n i.isSelected = 1\n fieldArrTmp.push(i)\n fieldNum ++\n }\n return i\n })\n setFieldArr(fieldArrTmp)\n setAllCheckList(arr)\n //setCheckedArr(arr.slice(0, 5)) // 需求:进来默认选中前5个\n }).catch(err => Message.error(err))\n }, [curID])\n\n useEffect(() => {\n const dataSetType = curRecord.data_set_type\n if (!curID || !dataSetTypeMap[dataSetType]) return\n\n switch (dataSetTypeMap[dataSetType]) {\n case dataSetTypeMap.es:\n commonApi(getTables, {\n id: curID\n }).then(data => {\n if (_.isEmpty(data) || !_.isArray(data)) return\n const arr = data.filter(i => i.indexOf(curRecord.database_name) !== -1).sort().reverse()\n setDropMenu(arr) // es 取 database_name\n if (isLocation == true) {\n let propsData = props.location.state.data\n setCurDropDownItem(propsData.database_name)\n } else {\n if (arr.length > 1) {\n setCurDropDownItem(arr[1] || '')\n } else {\n setCurDropDownItem(arr[0] || '')\n }\n }\n }).catch(err => Message.error(err))\n break;\n\n case dataSetTypeMap.mysql:\n commonApi(getTables, {\n id: curID\n }).then(data => {\n if (_.isEmpty(data) || !_.isArray(data)) return\n const arr = data.filter(i => i.indexOf(curRecord.table_name) !== -1).sort().reverse()\n setDropMenu(arr) // mysql 取 table_name\n if (isLocation == true) {\n let propsData = props.location.state.data\n setCurDropDownItem(propsData.database_name)\n } else {\n setCurDropDownItem(arr[1] || '')\n }\n }).catch(err => Message.error(err))\n break;\n\n default:\n break;\n }\n }, [curID, curRecord.data_set_type])\n\n const getColumns = useCallback(() => {\n if (!fieldArr.length) return\n\n const arr = fieldArr.map(i => ({\n title: <>\n
{i.field_name}
\n
{i.field_name_ch}
\n ,\n dataIndex: i.field_name\n }))\n\n return arr\n }, [fieldArr])\n\n\n function getTableCfgFieldsNew() {\n if (!curID) return\n commonApi(getTablecfgFieldsNew, {\n search: JSON.stringify({\n data_set_id: {\n value: curID,\n operator: '='\n },\n ...fieldName?{\n field_name: {\n value: fieldName,\n operator: \"like\",\n type: \"both\"\n }\n }:{}\n })\n }).then(data => {\n const items = _.get(data, 'items')\n if (!_.isArray(items)) return\n const arr = items.map(i => {\n i.text = `${i.field_name}(${i.field_name_ch || '-'})`\n if (fieldArr.some(fieldItemI => fieldItemI.field_name == i.field_name)) {\n i.isSelected = 1\n }\n return i\n })\n setAllCheckList(arr)\n //setCheckedArr(arr.slice(0, 5)) // 需求:进来默认选中前5个\n }).catch(err => Message.error(err))\n }\n\n function onDropMenuChange(val) {\n isLocation = false\n setCheckedArr([])\n setCurDropDownItem(val)\n setCheckedArr(checkedArr) // 需求:切换menu默认选中已勾选的选项\n }\n\n // 给个最小高度:盛满屏幕\n const minHeight = useMemo(() => window.innerHeight - 200, [window.innerHeight])\n\n function onAddItem() {\n const maxIndexID = Math.max(...searchList.map(i => i.indexID))\n setSearchList(r => _.assign([...r, {\n indexID: maxIndexID + 1,\n }]))\n }\n\n function onDelItem(item) {\n let curArr = _.cloneDeep(searchList)\n curArr = curArr.filter(i => i.indexID !== item.indexID)\n setSearchList(curArr)\n }\n\n function updateSearchList(item ={}, val = '', indexID, key = 'value') {\n let cloneSearchList = _.cloneDeep(searchList)\n const index = cloneSearchList.findIndex(i => i.indexID === indexID)\n\n if (index === -1) return\n let keyValue = {[key]: val}\n if (item.field_type != \"date\" && key != \"value\" && !item[\"value\"]) {\n keyValue = {\n [key]: val,\n value :[],\n }\n }\n cloneSearchList.splice(index, 1, _.assign({}, {\n ...key === 'key' ? { // 当key切换的时候,只保留indexID(专门用于前端key的)\n indexID,\n field_type: item.field_type,\n equal: item.equal || 'must'\n } : {\n ...item,\n indexID\n },\n // [key]: val,\n ...keyValue,\n field_name: item.field_name\n }))\n setSearchList(cloneSearchList)\n }\n\n const getJsonSearch = useMemo(() => {\n let searchObj = {}\n console.log(\"====searchList\", searchList)\n searchList.forEach(i => {\n const fieldName = i.field_name\n const fieldType = i.field_type\n\n if (!fieldName) return\n\n // 时间格式\n if (TIME_ARR.includes(fieldType)) {\n //const curDate = getRangeDateTime(i.date)\n const curDate = i.date\n if (!_.isArray(curDate) || curDate.length !== 2) return\n searchObj[fieldName] = {\n operator: 'range',\n type: 'must',\n value: {\n gte: curDate[0],\n lt: curDate[1]\n }\n }\n } else if (i.equal == \"range\") {\n if (!_.isArray(i.value) || i.value.length !== 2) return\n searchObj[fieldName] = {\n operator: 'range',\n type: 'must',\n value: {\n gte: i.value[0],\n lt: i.value[1]\n }\n }\n } else {\n const curEqual = i.equal\n searchObj[fieldName] = {\n operator: 'term',\n type: curEqual,\n value: i.value\n }\n }\n })\n\n return JSON.stringify(searchObj)\n }, [searchList])\n\n const getCustomJsonSearch = useMemo(() => {\n let searchObj = {}\n if (_.isArray(searchCustomList.data_time) && searchCustomList[\"data_time\"].length == 2 && !!searchCustomList.field.field_name) {\n searchObj[searchCustomList.field.field_name] = {\n operator: 'range',\n type: 'must',\n value: {\n gte: searchCustomList[\"data_time\"][0],\n lt: searchCustomList[\"data_time\"][1]\n }\n }\n }\n if (!!searchCustomList.selectValue) {\n searchObj[\"\"] = {\n operator: 'query_string',\n type: \"must\",\n value: searchCustomList.selectValue\n }\n }\n\n return searchObj\n }, [searchCustomList])\n\n const fieldIDs = useMemo(() => {\n return fieldArr.map(i => i.field_name).join(',')\n }, [fieldArr])\n\n // 这里触发查询逻辑\n function handleOnSearch(headers = {}) {\n // console.log('handleOnSearch: ', searchList, checkedArr);\n setIsLoadding(true)\n let params = {\n id: curID,\n t: curDropDownItem,\n field_ids: fieldIDs\n }\n if ( selectMethod == \"condition\") {\n params[\"search\"] = getJsonSearch\n } else {\n if (!(_.isArray(searchCustomList.data_time) && searchCustomList[\"data_time\"].length == 2 && !!searchCustomList.field.text)) {\n setIsLoadding(false)\n SdwMessage.error(\"查询范围不能为空\")\n return\n }\n params[\"search\"] = getCustomJsonSearch\n }\n let header = {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': 'application/json',\n ...headers\n }\n getItemsNew(params, header)\n .then(res => {\n setIsLoadding(false)\n if (res && res.data && res.data.code === 0) {\n setTableRecord(res.data.data || {})\n } else if (res.data.code == 4005){\n functionName = \"handleOnSearch\"\n createCaptcha()\n } else {\n Message.error(res.data.msg)\n }\n })\n .catch(() => {\n setIsLoadding(false)\n SdwMessage.error('请求失败')\n })\n }\n\n function onExportFile() {\n let config = {\n title: '导出明细',\n msg: (\n
\n
{ `共${tableRecordTotal}条数据,确认导出?` }
\n {/*
注:任务完成后将通过邮件通知
*/}\n
\n )\n }\n\n if (isTotalHeigh) {\n config.msg = '单次导出不能超过10万条。'\n }\n\n setDialogConfig(config)\n setVisible(true)\n }\n\n function changeDialogVisible(bool) {\n setVisible(bool)\n }\n // 确认导出\n function onSureClick(headers = {}) {\n let params = {\n id: curID,\n field_ids: fieldIDs,\n type: selectMethod,\n t: curDropDownItem\n }\n if ( selectMethod == \"condition\") {\n params.search = getJsonSearch\n } else {\n params.search = getCustomJsonSearch\n }\n let header = {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': 'application/json',\n ...headers\n }\n exportItemsData(params, header)\n .then(res => {\n if (res && res.data && res.data.code === 0) {\n Message.success('任务创建成功')\n changeDialogVisible(false)\n } else if (res.data.code == 4005){\n functionName = \"onSureClick\"\n createCaptcha()\n } else {\n Message.error(res.data.msg)\n }\n })\n .catch(() => SdwMessage.error('请求失败'))\n }\n // 验证码js加载错误处理\n function loadErrorCallback() {\n var appid = ''\n // 生成票据或自行做其它处理\n var ticket = 'terror_1001_2025699866' + Math.floor(new Date().getTime() / 1000);\n callback({\n ret: 0,\n randstr: '@'+ Math.random().toString(36).substr(2),\n ticket,\n errorCode: 1001,\n errorMessage: 'jsload_error',\n });\n }\n function callback(res) {\n console.log(\"callback\",res.ticket)\n console.log(res.randstr)\n let headers = {\n \"x-au-code\":res.ticket,\n \"x-au-rand\":res.randstr,\n }\n console.log(\"====functionName\", functionName)\n if (functionName == \"onSureClick\") {\n onSureClick(headers)\n } else if (functionName == \"handleOnSearch\"){\n handleOnSearch(headers)\n }\n }\n function createCaptcha() {\n // 生成一个验证码对象\n try {\n var captcha = new window.TencentCaptcha('2025699866', // 验证码appid\n callback, // 验证码回调函数\n { // 验证码options配置参数\n ready: function(){},\n needFeedBack: true\n }\n );\n // 显示验证码\n captcha.show();\n } catch (error) {\n console.log(\"--====error\", error)\n loadErrorCallback();\n }\n }\n\n function changeFieldList(id) {\n let fieldArrTmp = _.cloneDeep(fieldArr)\n let allCheckListTmp = _.cloneDeep(allCheckList)\n let item = {}\n for (let i in allCheckListTmp) {\n if (allCheckListTmp[i].id == id) {\n if (allCheckListTmp[i].isSelected == 1) {\n allCheckListTmp[i].isSelected = 0\n } else {\n allCheckListTmp[i].isSelected = 1\n item = allCheckListTmp[i]\n }\n break\n }\n }\n let num = fieldArrTmp.length\n for (let j in fieldArrTmp) {\n if (fieldArrTmp[j].id == id) {\n fieldArrTmp.splice(j, 1)\n break\n }\n num --\n }\n if (num == 0) {\n fieldArrTmp.push(item)\n }\n setFieldArr(fieldArrTmp)\n setAllCheckList(allCheckListTmp)\n }\n\n function clickButton(item) {\n //isLocation = false\n if (curRecord.data_set_type == \"mysql\") {\n SdwMessage.error(\"mysql数据源暂不支持自定义查询\")\n return\n }\n setSelectMethod(item.type)\n }\n\n // 过滤出type为date的选项\n const dateTypeMap = useMemo(() => {\n return allFiledArr.filter(i => TIME_ARR.includes(i.field_type))\n }, [allFiledArr])\n\n // 禁用条件:左侧需要选至少一个展示字段、右上侧必须选时间范围\n const searchBtnDisabled = useMemo(() => {\n return !(fieldArr.length > 0)\n }, [fieldArr])\n function changeSearch(type, value) {\n let searchCustomListClone = _.cloneDeep(searchCustomList)\n searchCustomListClone[type] = value\n setSearchCustomList(searchCustomListClone)\n }\n console.log(\"=====searchList\", searchList)\n console.log(\"=====allCheckList\", allCheckList)\n\n const curMenuIndex = props.location.state.curMenuIndex\n\n return (\n <>\n
\n \n
\n\n {\n code !== \"\" ? (\n isApplyAuth === false ?\n (\n code === 0 ?\n \n
\n {/* 左侧 */}\n \n
\n
\n 选择查询字段\n (默认选择5个)\n
\n
\n\n
\n {\n if (value.length > 0) {\n setFieldName(value)\n getTableCfgFieldsNew()\n }\n }}\n isMultipleChoice={true}\n readOnly={false}\n data={allCheckList}\n onChange={item => {\n changeFieldList(item[0].id)\n }}\n />\n
\n\n
\n {\n _.isArray(fieldArr) &&\n fieldArr.length > 0 ?\n <>\n {\n fieldArr.map(i => (\n
\n
\n {i.text}\n
\n
\n changeFieldList(i.id)}\n />\n
\n
\n ))\n }\n : <>\n
\n {allCheckList.length === 0 ? \"暂无数据\" : \"请选择查询字段\"}\n
\n \n }\n
\n
\n\n {/* 右侧 */}\n \n
\n
\n
\n onDropMenuChange(val)}\n />\n
\n
\n
\n {\n clickButtonMap.map(i => {\n return
clickButton(i)} className={selectMethod == i.type ? i.className + \" selected-clicked\" :i.className}>\n {i.text}\n
\n })\n }\n
\n
\n
\n
\n {\n selectMethod == \"condition\" ?\n // selectMethod == \"1111\" ?\n // 搜索查询条件,默认有一个时间过滤条件\n (_.isArray(searchList) &&\n searchList.length > 0 &&\n searchList.map((item, index) => {\n console.log(\"======item\", item)\n return <>\n
\n
\n updateSearchList(obj, val, item.indexID, 'key')}\n />\n {\n item.key &&\n <>\n {\n TIME_ARR.includes(item.field_type) ?\n <>\n {/* date类型 */}\n updateSearchList(item, val, item.indexID, 'date')} // 改变value的函数\n />\n :\n <>\n {/* 非date类型 */}\n updateSearchList(item, val, item.indexID, 'equal')}\n />\n {\n item.equal == \"range\" ?\n <>\n 0) ? item.value[0] : \"\"}\n width={240}\n placeholder='最小值'\n onChange={val => {\n let value = [\"\", \"\"]\n if (_.isArray(item.value)) {\n value = item.value\n }\n value[0] = val\n updateSearchList(item, value, item.indexID)\n }}\n />\n {\n let value = [\"\", \"\"]\n if (_.isArray(item.value)) {\n value = item.value\n }\n value[1] = val\n updateSearchList(item, value, item.indexID)\n }}\n />\n \n :\n <>\n {\n updateSearchList(item, val.split(\";\"), item.indexID)\n }}\n />\n \n }\n \n }\n \n }\n
\n \n {\n item.indexID !== 0 &&\n onDelItem(item)}\n />\n }\n
\n \n })\n ):\n <>\n
\n
\n 查询范围\n
\n {\n changeSearch(\"field\", obj)\n }}\n />\n changeSearch(\"data_time\", val)} // 改变value的函数\n />\n
\n
\n
\n 查询语句\n
\n changeSearch(\"selectValue\", val)}\n />\n
\n \n }\n
\n
\n \n
\n
\n\n
\n {`共${tableRecordTotal}条,展示前200条`}\n \n \n \n
\n
\n \n
\n \n \n \n :\n <>\n {\n setCode(\"\")\n showAuthApply(bool)\n }} code={code}/>}/>\n \n ) :\n <>\n
\n {\n setCode(\"\")\n showAuthApply(bool)\n }} id={curID} />\n
\n \n ) : \"\"\n }\n\n\n changeDialogVisible(false)}\n onSureClick={()=>onSureClick()}\n sureBtnDisabled={isTotalHeigh}\n hideCancelButton={true}\n >\n
\n {dialogConfig.msg}\n
\n \n \n )\n}\n\nconst mapState = state => ({\n userInfo: state.user.userInfo,\n})\n\nexport default connect(mapState, function() {\n\n})(SearchEport)\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAACjSURBVHgB7ZbBDYAgDEW/xgF0CadyCScQd3EqT24gC5iqJxO1QAkJJvYlXKDA728PBf5OIQluu9UcVwZ3FI3z1BgEUkKE7/PQmIsKEcxT/epc21mCEKED6XlkEpOFhLt72R1gOZ1I4YbvnewOqACxAK6msT2jJVABKkAFqIDsAsQzITcPcvs+tASf7gF7rDrJlExYuCPWASqod10UYDeUBgrDDuGgMe++p373AAAAAElFTkSuQmCC\"","export default __webpack_public_path__ + \"static/media/searchImg.c1089a16.svg\";","export default __webpack_public_path__ + \"static/media/defaultUser.b89d2151.svg\";","export default __webpack_public_path__ + \"static/media/user.160493d5.png\";","import { request } from '../utils/request'\n\nexport function getUserTraceItem (params) {\n return request({ url: '/usertrace/userTrace/item', method: 'get', params: params })\n}\n\nexport function relationAccount (params) {\n return request({ url: '/usertrace/userTrace/relationAccount', method: 'get', params: params })\n}\n\nexport function historyOrder (params) {\n return request({ url: '/usertrace/userTrace/historyOrder', method: 'get', params: params })\n}\n\nexport function getUserLabelHbase (params) {\n return request({ url: '/usertrace/userTrace/getUserLabelHbase', method: 'get', params: params })\n}\n","// 类型\nexport const accountType = {\n openId: '0',\n qq: '1',\n phone: '2'\n}\n\nexport const accountMap = [\n {\n id: accountType.phone,\n text: '手机号'\n }, {\n id: accountType.qq,\n text: 'QQ号'\n }, {\n id: accountType.openId,\n text: 'OpenId'\n }\n]\n\n// 用户标签显示的字段:有key值,需要显示对应的字段,有value值,需要显示对应的前缀\nexport const USER_LABELS = {\n user_gender: '性别',\n user_age: '年龄',\n user_hometown: '地区分布',\n generation: '', // 老年人\n // xxx: '', // 未成年人\n}","import Tabs from '@common/Tabs'\nimport Button from '@common/Button'\n\nimport BaseInfo from './BaseInfo'\nimport LinkAccount from './LinkAccount'\n\nconst menu = [\n {\n title: '基本信息',\n path: '/baseInfo',\n component: BaseInfo\n }, {\n title: '关联帐号',\n path: '/linkAccount',\n component: LinkAccount\n }\n]\n\nexport default function Base(props) {\n\n\n return (\n <>\n \n \n )\n}","import { useMemo, useEffect, useState } from 'react'\nimport _ from 'lodash'\nimport Layout from '@common/Layout'\nimport Message from '@common/Message'\nimport defaultUserImg from '../img/defaultUser.svg'\nimport userImg from '../img/user.png'\nimport { getUserLabelHbase } from '@services/userSearch'\nimport { commonApi } from '@utils/request'\nimport { USER_LABELS } from '../common'\nimport './index.css'\n\nexport default function BaseInfo(props) {\n\n const {\n userTranceItem = {}\n } = props\n\n const [userLabels, setUserLabels] = useState([])\n\n const formData = useMemo(() => {\n return userTranceItem.basicInfo || {}\n }, [userTranceItem.basicInfo])\n\n useEffect(() => {\n if (_.isEmpty(userTranceItem.basicInfo)) return\n const OPENID = _.get(userTranceItem, 'basicInfo.OPENID') || ''\n\n // 当前仅支持openid进行查询用户标签,故 accountType:0\n commonApi(getUserLabelHbase, {\n account: OPENID,\n accountType: '0',\n }).then(data => {\n let labels = _.isArray(_.get(data, 'labels')) ? _.get(data, 'labels') : []\n labels = labels.filter(i => !!i.tag_name && USER_LABELS.hasOwnProperty([i.tag_name]))\n setUserLabels(labels)\n }).catch(err => Message.error('用户标签查询失败 ' + err))\n }, [userTranceItem.basicInfo])\n\n return (\n
\n
\n \n
\n \n \n OPENID\n { formData.OPENID || '-' }\n \n \n 手机号码\n { formData.PHONE || '-' }\n \n \n QQ账号\n { formData.QQ || '-' }\n \n \n\n \n \n 微信账号\n { formData.WX || '-' }\n \n \n 用户姓名\n { formData.NAME || '-' }\n \n \n 身份证号\n { formData.USERID || '-' }\n \n \n
\n
\n
\n 用户标签\n {\n (\n _.isArray(userLabels) &&\n userLabels.length > 0\n ) ?\n <>\n {\n userLabels.map((item) => (\n { `${!!USER_LABELS[item.tag_name] ? (USER_LABELS[item.tag_name] + '-') : ''}${item.tag_value}` }\n ))\n }\n : \n -\n }\n
\n
\n )\n}","import { useState, useEffect } from 'react'\nimport Table from '@common/Table'\nimport Message from '@common/Message'\nimport Loadding from '@common/Loadding'\nimport { relationAccount } from '@services/userSearch'\nimport './index.css'\nimport { commonApi } from '@utils/request'\nimport _ from 'lodash'\n\nfunction getcolumns() {\n return [\n {\n title: \"帐号\",\n dataIndex: \"account\",\n }, {\n title: \"帐号类型\",\n dataIndex: \"account_type\",\n }, {\n title: \"关系来源\",\n dataIndex: \"relation\",\n }, {\n title: \"关系类型\",\n dataIndex: \"relation_type\",\n }, {\n title: \"入库时间\",\n dataIndex: \"date\",\n }\n ]\n}\n\nexport default function LinkAccount(props) {\n\n const {\n userTranceItem = {}\n } = props\n\n const [dataSource, setDataSource] = useState([])\n const [isLoadding, setIsLoadding] = useState(false)\n\n const basicInfo = _.get(userTranceItem, 'basicInfo') || {}\n \n useEffect(() => {\n if (_.isEmpty(basicInfo)) return\n setIsLoadding(true)\n commonApi(relationAccount, {\n qq: basicInfo.QQ,\n phone: basicInfo.PHONE,\n openid: basicInfo.OPENID,\n is_detail: 1\n }).then(data => {\n const arr = _.values(data) || []\n setDataSource(arr)\n }).catch(err => Message.error(err))\n .finally(() => setIsLoadding(false))\n }, [basicInfo])\n\n return (\n \n
\n \n
\n
\n )\n}","export default __webpack_public_path__ + \"static/media/call.941480b7.svg\";","import { useState, useEffect, useMemo, Fragment } from \"react\";\nimport PropTypes from 'prop-types'\nimport { isArray, isEmpty } from 'lodash'\nimport { openNewWin } from \"@utils/request\";\nimport CopyText from '@common/CopyText'\nimport callImg from '../img/call.svg'\nimport './index.css'\n\nconst aiBuleOperType = ['4', '5', '7', '8','9']\nconst ivrBuleOperType = ['4', '21', '22']\nconst imcBuleOperType = ['2']\n\nfunction isBuleBackground(type = '', item = {}) {\n if (!type || isEmpty(item)) return false\n\n // 当type为AI,operType为4时,即显示来源时,底色为蓝色\n // 当type为AI,operType为5时,即显示为进入风险看板时,底色为蓝色\n if (type === 'AI' && aiBuleOperType.includes(item['operType'])) {\n return true\n }\n\n // IVR模块: 当oper_type为22、21、4时,底色显示为蓝色\n if (type === 'IVR' && ivrBuleOperType.includes(item['oper_type'])) {\n return true\n }\n\n // ASYNC模块: 异步模块都使用蓝色底色\n if (type === 'ASYNC') {\n return true\n }\n\n // IMC模块: 当event为2时,状态为接入人工,底色为蓝色\n if (type === 'IMC' && imcBuleOperType.includes(item['event'])) {\n return true\n }\n\n return false\n}\n\nfunction Collapse(props) {\n const {\n list = [],\n config = {\n keys: [], // 显示字段,从左到右\n widths: [], // 显示字段对应的width\n contextKey: '', // context 对应字段\n contextKeys: [], // 每一行展示字段\n contextwidths: [], // 每一行展示字段对应width\n }\n } = props\n\n const [isActive, setIsActive] = useState(false)\n\n useEffect(() => {\n setIsActive(false)\n }, [list])\n\n const conKeys = useMemo(() => {\n return isArray(config.keys) ? config.keys : []\n }, [config.keys])\n\n const conWidths = useMemo(() => {\n return isArray(config.widths) ? config.widths : []\n }, [config.widths])\n\n const contextKeys = useMemo(() => {\n return isArray(config.contextKeys) ? config.contextKeys : []\n }, [config.contextKeys])\n\n const contextwidths = useMemo(() => {\n return isArray(config.contextwidths) ? config.contextwidths : []\n }, [config.contextwidths])\n\n\n return (\n isArray(list) &&\n list.map((item, firstIndex) => {\n const contextArr = []\n if (!isEmpty(item[config.contextKey])) {\n for (const key in item[config.contextKey]) {\n if (Object.hasOwnProperty.call(item[config.contextKey], key)) {\n const value = item[config.contextKey][key];\n if (!isEmpty(value)) contextArr.push(value)\n }\n }\n }\n\n const itemType = item.type\n const itemTaskID = item.task_id\n // console.log('---------contextArr: ', itemType, contextArr);\n\n return (\n
\n setIsActive(r => !r)}\n >\n
\n {\n isArray(conKeys) &&\n conKeys.map((key, keyIndex) => {\n const archivepathNameHasTaskID = key === 'archivepath_name' && !!item.task_id\n\n return (\n {\n if (archivepathNameHasTaskID) {\n e.stopPropagation()\n openNewWin(`https://cd.cm.com/web/kfwp/indexNew?&hash=/taskDetail/${item.task_id}`)\n }\n }}\n >{ item[key] || '' }\n )\n })\n }\n \n
\n
\n\n
\n {\n isArray(contextArr) &&\n contextArr.map((item, index) => (\n
\n {\n isArray(contextKeys) &&\n contextKeys.map((key, keyIndex) => (\n\n !contextwidths[keyIndex] ?\n \n \n {\n itemType === 'IVR' && !!item.imc_num && item.imc_num != \"0\" &&\n \n \n { `${item.imc_num} - ` }\n \n }\n \n {\n itemType !== 'ASYNC' && !!itemTaskID &&\n (\n (itemType === 'IVR' && item.oper_type == '7') ||\n (itemType === 'ALLINONE')\n ) &&\n \n }\n
\n :\n \n \n { item[key] }\n
\n \n ))\n }\n \n ))\n }\n \n \n )\n })\n )\n}\n\nCollapse.propTypes = {\n list: PropTypes.array.isRequired,\n config: PropTypes.object.isRequired,\n}\n\nexport default Collapse\n","import PropTypes from 'prop-types'\nimport { isEmpty, keys, isArray } from 'lodash'\nimport Collapse from \"./Collapse\";\nimport './index.css'\n\nfunction CollapseWithTime(props) {\n const { \n search = {},\n info = {},\n config = {\n keys: ['traceTime', 'type', 'archivepath_name', 'desc'], // 显示字段,从左到右\n widths: [180, 200], // 显示字段对应的width\n contextKey: 'info', // context 对应字段\n contextKeys: ['time', 'content'], // 每一行展示字段\n contextwidths: [180], // 每一行展示字段对应width\n }\n } = props\n \n\n return (\n !isEmpty(info) &&\n keys(info).map((key, index) => (\n
\n
{ key }
\n
\n {\n isArray(info[key]) &&\n info[key].map((keyInfo, keyIndex) => (\n \n ))\n }\n
\n
\n ))\n )\n}\n\nCollapseWithTime.propTypes = {\n info: PropTypes.object.isRequired,\n config: PropTypes.object.isRequired,\n}\n\nexport default CollapseWithTime","import { formatJsonParse } from \"@utils/formatJson\"\nimport _ from \"lodash\"\nimport { Fragment, useMemo } from \"react\"\nimport './index.css'\n\nconst trajectMap = {\n ALLINONE: [\n 'aio_open_num', // 打开台本【x】次\n 'aio_create_num', // 提单【x】次\n 'aio_reject1_num', // 资料驳回【x】次\n 'aio_reject2_num', // 坐实驳回【x】次\n 'aio_release1_num', // 客服解除【x】次\n 'aio_release2_num', // 客服解封【x】次\n ],\n IVR: [\n // 'ivr_request_skill_num', // 请求【x】技能组【x】次\n // 'ivr_service_skill_num', // 接入【x】技能组【x】次\n 'ivr_re_se_skill_num', // 【x技能组】 请求【x】次 接入【x】次\n 'ivr_tool_num', // 下发工具【x】次\n ],\n AI: [\n 'ai_l4_num', // 命中【x】【x】次\n 'ai_risk_num', // 进入风险看板【x】次\n ],\n FAQ: [\n 'faq_service_num', // 访问【x】【x】次\n ],\n WSS: [\n 'wss_service_num', // 访问【x】【x】次\n ],\n ASYNC: [\n 'async_risk_num', // 访问【x】【x】次\n ]\n}\n\n// 不为0或Nan的数字类型: 返回bool值\nfunction isEffectNumber(num) {\n return !!num && typeof Number(num) === 'number' && !isNaN(Number(num)) && Number(num) !==0\n}\n\nfunction getText(key, p1, p2) {\n if (!key) return ''\n let res = ''\n switch (key) {\n case 'aio_open_num':\n res = 打开台本 {p1} \n break;\n\n case 'aio_create_num':\n res = 提单 {p1} \n break;\n\n case 'aio_reject1_num':\n res = 资料驳回 {p1} \n break;\n\n case 'aio_reject2_num':\n res = 坐实驳回 {p1} \n break;\n\n case 'aio_release1_num':\n res = 客服解除 {p1} \n break;\n\n case 'aio_release2_num':\n res = 客服解封 {p1} \n break;\n\n // case 'ivr_request_skill_num':\n // res = 请求{p1} {p2} \n // break;\n\n // case 'ivr_service_skill_num':\n // res = 接入{p1} {p2} \n // break;\n // 'ivr_re_se_skill_num', // 【x技能组】 请求【x】次 接入【x】次\n case 'ivr_re_se_skill_num':\n // console.log('---------------------p2: ', p2);\n const arr = String(p2).split(',')\n // console.log('---------------------arr: ',arr);\n res = {p1}{\n isEffectNumber(arr[0]) && <> 请求{+arr[0]} 次\n }{\n isEffectNumber(arr[1]) && <> 接入{+arr[1]} 次\n }\n break;\n\n case 'ivr_tool_num':\n res = 下发工具 {p1} \n break;\n\n case 'ai_l4_num':\n res = 命中{p1} {p2} \n break;\n\n case 'ai_risk_num':\n res = 进入风险看板 {p1} \n break;\n\n case 'faq_service_num':\n res = 访问{p1} {p2} \n break;\n\n case 'wss_service_num':\n res = 访问{p1} {p2} \n break;\n case 'async_risk_num':\n res = 访问{p1} {p2} \n break;\n default:\n break;\n }\n\n return res\n}\n\nconst ALL = 'all'\n\nexport default function TrajectInfo(props) {\n const {\n callInfo = {},\n channelValue = ALL\n } = props\n\n const curRecord = useMemo(() => {\n return _.keys(callInfo).reduce((prev, key) => {\n const curItem = callInfo[key]\n if (typeof curItem === 'number' && curItem !== 0) {\n prev[key] = curItem\n } else if (typeof curItem === 'string') {\n const jsonparseItem = formatJsonParse(curItem, {})\n\n if (!_.isEmpty(jsonparseItem)) {\n prev[key] = jsonparseItem\n }\n }\n return prev\n }, {})\n }, [callInfo])\n\n // console.log('-------curRecord: ', curRecord);\n return (\n <>\n
近30天轨迹
\n
\n {\n _.keys(trajectMap).map((key, index) => {\n const curTraject = channelValue === ALL ? trajectMap : {\n [channelValue]: trajectMap[channelValue]\n }\n\n return (\n
\n {\n _.isArray(curTraject[key]) && curTraject[key].some(tjkey => !!curRecord[tjkey]) &&\n
{ key }
\n }\n
\n {\n _.isArray(curTraject[key]) &&\n curTraject[key].map(childKey => {\n const childRecord = curRecord[childKey]\n let childTextArr = []\n if (typeof childRecord === 'number') {\n childTextArr = [getText(childKey, childRecord)]\n } else if (!_.isEmpty(childRecord)) {\n childTextArr = _.keys(childRecord).reduce((prev, crkey) => {\n prev = prev.concat([getText(childKey, crkey, childRecord[crkey])])\n return prev\n }, [])\n }\n return (\n _.isArray(childTextArr) &&\n childTextArr.length > 0 &&\n childTextArr.map((text, j) => (\n \n { text }\n \n \n ))\n )\n })\n }\n
\n
\n )\n })\n }\n
\n \n )\n}\n","import { useState, useEffect } from 'react'\nimport _ from 'lodash'\nimport MulRadiobox from '@common/MulRadiobox'\nimport CollapseWithTime from '@components/CollapseWithTime'\nimport TrajectInfo from './TrajectInfo'\nimport { commonApi } from \"@utils/request\"\nimport Message from '@common/Message'\nimport Loadding from '@common/Loadding'\nimport { relationAccount, getUserTraceItem } from '@services/userSearch'\nimport './index.css'\n\nconst ALL = 'all'\n\nexport default function Trajectory(props) {\n\n const [oriCurRelativeVal, setOriCurRelativeVal] = useState('')\n const [relativeVal, setRelativeVal] = useState('')\n const [channelValue, setChannelValue] = useState(ALL)\n const [relativeOptions, setRelativeOptions] = useState([\n {\n text: '当前帐号',\n value: ''\n }\n ])\n const [channelOptions, setChannelOptions] = useState([\n {\n text: '全部',\n value: ALL\n }\n ])\n const [traceInfo, setTraceInfo] = useState({})\n const [isLoadding, setIsLoadding] = useState(false)\n const [relationAccountMap, setRelationAccountMap] = useState({})\n const [callInfo, setCallInfo] = useState({})\n const [proTmp, setProTmp] = useState({})\n\n const basicInfo = _.get(props, 'userTranceItem.basicInfo') || {}\n const search = _.get(props, 'search') || {}\n\n useEffect(() => {\n const callInfo = _.get(props, 'userTranceItem.callInfo') || {}\n setCallInfo(callInfo)\n\n const proTmp = _.get(props, 'userTranceItem.pro_tmp') || {}\n setProTmp(proTmp)\n }, [props])\n\n useEffect(() => {\n // 给当前帐号一个标识\n const oriCurID = basicInfo.OPENID || basicInfo.PHONE || basicInfo.QQ\n if (!oriCurID) return\n setRelativeVal(oriCurID)\n setOriCurRelativeVal(oriCurID)\n setChannelValue(ALL)\n }, [basicInfo])\n\n useEffect(() => {\n if (!relativeVal) return\n\n if (!oriCurRelativeVal) return\n\n let params = {}\n if (oriCurRelativeVal === relativeVal) {\n params = search\n } else {\n const curRecord = relationAccountMap[relativeVal] || {}\n params = {\n account: curRecord.account,\n accountType: curRecord.type_id\n }\n }\n\n setIsLoadding(true)\n commonApi(getUserTraceItem, params).then(data => {\n const traceInfo = _.get(data, 'traceInfo') || {}\n setTraceInfo(traceInfo)\n\n const callInfo = _.get(data, 'callInfo') || {}\n setCallInfo(callInfo)\n\n const proTmp = _.get(data, 'pro_tmp') || {}\n setProTmp(proTmp)\n }).catch(err => Message.error(err))\n .finally(() => setIsLoadding(false))\n }, [relativeVal])\n\n useEffect(() => {\n if (_.isEmpty(basicInfo)) return\n commonApi(relationAccount, {\n qq: basicInfo.QQ,\n phone: basicInfo.PHONE,\n openid: basicInfo.OPENID,\n is_detail: 0\n }).then(data => {\n setRelationAccountMap(data)\n const keys = _.keys(data).map(key => key) || []\n let arr = []\n if (_.isArray(keys) && keys.length) {\n arr = keys.reduce((prev, key) => {\n prev.push({\n text: `${key}(${_.get(data[key], 'account_type') || '-'})`,\n value: key\n })\n return prev\n }, [])\n }\n setRelativeOptions([{\n text: '当前帐号',\n value: basicInfo.OPENID || basicInfo.PHONE || basicInfo.QQ\n }, ...arr])\n }).catch(err => Message.error(err))\n }, [basicInfo])\n\n useEffect(() => {\n // 数据从总接口来,首次不用额外请求\n if (props.isLoadding) {\n return\n }\n\n if (!oriCurRelativeVal) return\n\n let params = {}\n if (\n (!relativeVal && !_.isEmpty(search)) ||\n oriCurRelativeVal === relativeVal\n ) {\n params = search\n } else {\n const curRecord = relationAccountMap[relativeVal] || {}\n params = {\n account: curRecord.account,\n accountType: curRecord.type_id\n }\n }\n\n setIsLoadding(true)\n commonApi(getUserTraceItem, {\n ...params,\n ...ALL !== channelValue ? {\n product_set: channelValue\n } : {}\n }).then(data => {\n const record = _.get(data, 'traceInfo')\n setTraceInfo(record)\n }).catch(err => {\n Message.error(err)\n }).finally(() => setIsLoadding(false))\n }, [channelValue])\n\n useEffect(() => {\n if (!props.isLoadding) return\n const traceInfo = _.get(props, 'userTranceItem.traceInfo')\n // 首次使用外面的请求\n setTraceInfo(traceInfo)\n }, [props])\n\n useEffect(() => {\n let sum = 0\n let options = _.keys(proTmp).reduce((prev, key) => {\n if (!isNaN(+(proTmp[key])) && +proTmp[key] !== 0) {\n sum += +(proTmp[key])\n prev.push({\n text: `${key}(${proTmp[key]})`,\n value: key\n })\n }\n return prev\n }, [])\n setChannelOptions([{\n text: `全部(${sum})`,\n value: ALL\n }, ...options])\n }, [proTmp])\n\n return (\n \n
\n
\n
关联帐号
\n {\n setRelativeVal(val)\n setChannelValue(ALL)\n }}\n />\n
\n
\n
渠道选择
\n \n
\n
\n \n
\n \n
\n
\n )\n}\n","import Tabs from '@common/Tabs'\nimport Trajectory from './Trajectory'\nimport WorkOrder from './WorkOrder'\n\nconst menu = [\n {\n title: '服务轨迹',\n path: '/trajectory',\n component: Trajectory\n }, {\n title: '历史工单',\n path: '/workOrdert',\n component: WorkOrder\n }\n]\n\nexport default function Service(props) {\n\n\n return (\n <>\n \n \n )\n}","import { useState, useEffect, Fragment, useMemo } from 'react'\nimport _ from 'lodash'\nimport MulRadiobox from '@common/MulRadiobox'\nimport Table from '@common/Table'\nimport { commonApi } from '@utils/request'\nimport Message from '@common/Message/index'\nimport Loadding from '@common/Loadding'\nimport Pagenation from '@common/Pagenation'\nimport { historyOrder, relationAccount, getUserTraceItem } from '@services/userSearch'\nimport './index.css'\n\nconst getcolumns = () => {\n return [\n {\n title: \"工单号\",\n width: 80,\n render: data => (\n { data.task_id }\n )\n }, {\n title: \"渠道\",\n dataIndex: \"service_channel\",\n width: 50\n }, {\n title: \"标题\",\n dataIndex: \"title\",\n width: 80\n }, {\n title: \"建单时间\",\n dataIndex: \"create_time\",\n width: 80\n }, {\n title: \"归档路径\",\n dataIndex: \"archivepath_name\",\n width: 120\n }, {\n title: \"工单状态\",\n dataIndex: \"is_handled\",\n width: 30\n }, {\n title: \"满意度\",\n dataIndex: \"satis_level\",\n width: 30\n }\n ]\n}\n\nexport default function WorkOrder(props) {\n\n const {\n userTranceItem = {},\n search = {}\n } = props\n\n const [oriCurRelativeVal, setOriCurRelativeVal] = useState('')\n const [relativeVal, setRelativeVal] = useState('current')\n const [isAll, setIsAll] = useState(false)\n const [relativeOptions, setRelativeOptions] = useState([\n {\n text: '当前帐号',\n value: 'current'\n }\n ])\n const [dataList, setDataList] = useState([])\n const [isLoadding, setIsLoadding] = useState(false)\n const [relationAccountMap, setRelationAccountMap] = useState({})\n const [descobj, setDescobj] = useState({})\n const [curBaseInfo, setCurBaseInfo] = useState({})\n const [searchParams, setSearchParams] = useState({\n page: 1,\n limit: 50\n })\n\n const basicInfo = _.get(userTranceItem, 'basicInfo') || {}\n\n useEffect(() => {\n if (_.isEmpty(basicInfo)) return\n setCurBaseInfo(basicInfo)\n }, [basicInfo])\n\n useEffect(() => {\n if (_.isEmpty(basicInfo)) return\n commonApi(relationAccount, {\n qq: basicInfo.QQ,\n phone: basicInfo.PHONE,\n openid: basicInfo.OPENID,\n is_detail: 0\n }).then(data => {\n setRelationAccountMap(data)\n const keys = _.keys(data).map(key => key) || []\n let arr = []\n if (_.isArray(keys) && keys.length) {\n arr = keys.reduce((prev, key) => {\n prev.push({\n text: `${key}(${_.get(data[key], 'account_type') || '-'})`,\n value: key\n })\n return prev\n }, [])\n }\n\n // 给当前帐号一个标识\n const oriCurID = basicInfo.OPENID || basicInfo.PHONE || basicInfo.QQ\n setRelativeVal(oriCurID)\n setOriCurRelativeVal(oriCurID)\n setRelativeOptions([{\n text: '当前帐号',\n value: oriCurID\n }, ...arr])\n }).catch(err => Message.error(err))\n }, [basicInfo])\n\n useEffect(() => {\n if (!relativeVal || !oriCurRelativeVal) return\n\n let params = {}\n if (oriCurRelativeVal === relativeVal) {\n params = search\n } else {\n if (_.isEmpty(relationAccountMap)) return\n const curRecord = relationAccountMap[relativeVal] || {}\n params = {\n account: curRecord.account,\n accountType: curRecord.type_id\n }\n }\n\n setIsLoadding(true)\n commonApi(getUserTraceItem, params).then(data => {\n\n // 当前点击帐号的基本信息\n const basicInfo = _.get(data, 'basicInfo') || {}\n setCurBaseInfo(basicInfo)\n getTableInfo(basicInfo)\n }).catch(err => Message.error(err))\n .finally(() => setIsLoadding(false))\n }, [relativeVal])\n\n useEffect(() => {\n if (_.isEmpty(basicInfo)) return\n getTableInfo(basicInfo, isAll)\n }, [basicInfo])\n\n function getTableInfo(basicInfo = {}, isAll = false) {\n setIsLoadding(true)\n commonApi(historyOrder, {\n is_all: Number(isAll),\n phone: basicInfo.PHONE,\n openid: basicInfo.OPENID\n }).then(data => {\n const tasks = _.get(data, 'tasks') || []\n const orderStatus = _.get(data, 'orderStatus') || {}\n setDescobj(orderStatus)\n setDataList(tasks)\n }).catch(err => {\n Message.error(err)\n setDescobj({})\n setDataList([])\n }).finally(() => setIsLoadding(false))\n }\n\n const curDataList = useMemo(() => {\n if (!_.isArray(dataList) || !dataList.length) return []\n\n // 没有展开,不做分页\n if (!isAll) return dataList\n\n const {\n page = 1,\n limit = 50\n } = searchParams\n\n const startNum = (page - 1) * limit\n const endNum = page * limit\n\n return dataList.slice(startNum, endNum)\n\n }, [dataList, searchParams, isAll])\n\n return (\n \n
\n
\n
关联帐号
\n {\n setRelativeVal(val)\n setIsAll(false)\n }}\n />\n
\n
\n
{ isAll ? '历史工单' : '近30天工单' }
\n
\n {\n !_.isEmpty(descobj) &&\n _.keys(descobj).map((key, index) => (\n \n { key } \n { descobj[key] }\n 个;\n \n ))\n }\n
\n
\n\n\n \n\n {\n !isAll &&\n \n {\n getTableInfo(curBaseInfo, true)\n _.debounce(setIsAll, 500)(r => !r)\n }}\n >已展示30天内的工单,点击查看更多\n \n
\n }\n\n {\n isAll &&\n setSearchParams(r => _.assign({}, r, {\n page: val\n }))}\n pageCountChange={val => setSearchParams(r => _.assign({}, r, {\n limit: val\n }))}\n />\n }\n \n
\n )\n}\n","import React, { PureComponent } from 'react'\nimport _ from 'lodash'\nimport SdwDrawer from '@common/Drawer'\nimport ReactJson from 'react-json-view'\n\nimport 'element-theme-default'\nimport './style/index.css'\nimport { getTargetResults } from '@api/Derived'\nimport SdwMessage from '@common/Message'\nimport { getUserTraceDetail } from '@customHooks/api'\nimport SdwLayout from '@common/Layout'\nimport SdwInput from '@common/Input'\nimport Select from '@common/Select'\nimport { accountMap } from '@pages/Monitor/UserSearch/common'\nimport Input from '@common/Input'\nimport Button from '@common/Button'\n\n\nclass DisplayTraceDetail extends PureComponent {\n\n state = {\n jsonData:{},\n jsonDataStr:\"\",\n account:\"\",\n accountType:\"\",\n }\n\n componentDidMount() {\n this.getUserTraceDetail()\n\n }\n\n\n getUserTraceDetail = () => {\n let {account, accountType} = this.props\n let params = {\n account:account,\n accountType:accountType\n }\n console.log(\"---------\", params)\n getUserTraceDetail(params).then(res => {\n if (res.data.code === 0) {\n let jsonData = res.data.data || \"\"\n let jsonDataStr = JSON.stringify(jsonData)\n console.log(\"----res---jsonDataStr\", jsonDataStr)\n this.setState({\n jsonData:jsonData,\n jsonDataStr:jsonDataStr,\n })\n } else {\n SdwMessage.error(\"查询异常:\" + (res.data.msg || \"请求超时\"))\n }\n })\n }\n render () {\n let {jsonData, jsonDataStr, accountType, account} = this.state\n //jsonData = {}\n let {visible} = this.props\n //console.log(\"-----jsonDataStr\", jsonDataStr)\n return (\n
\n \n \n
\n
数据量较大,请耐心等待加载完成
\n
\n \n
\n
\n
\n \n
\n\n )\n }\n}\n\nexport default DisplayTraceDetail\n","import { useState, useEffect } from 'react'\nimport _ from 'lodash'\nimport BreadCrumbs from '@common/BreadCrumbs'\nimport Select from '@common/Select'\nimport Input from '@common/Input'\nimport Button from '@common/Button'\nimport Loadding from '@common/Loadding'\nimport searchImg from '../img/searchImg.svg'\nimport Base from './Base'\nimport Service from './Service'\nimport { accountMap, accountType } from './common'\nimport UseGetUserTraceItem from '@customHooks/UseGetUserTraceItem'\nimport DisplayTraceDetail from '@pages/Monitor/UserSearch/DisplayTraceDetail'\nimport './index.css'\nimport __canvasWM from '@common/Water'\nimport { withRouter } from 'react-router-dom'\nimport { connect } from 'react-redux'\nimport { hasPriv } from '@components/FrontendAuth/AuthMap'\n\nfunction UserSearch(props) {\n\n const [search, setSearch] = useState(GetRequest())\n const [doSearch, setDoSearch] = useState(GetRequest().account || '')\n const [showSearchImg, setShowSearchImg] = useState(GetRequest().account ? false : true)\n const [isLoadding, setIsLoadding] = useState(false)\n const [displayTraceDetail, setDisplayTraceDetail] = useState(false)\n const userTranceItem = UseGetUserTraceItem(search, doSearch, setIsLoadding)\n //const traceDetailJson = UseGetUserTraceDetail(search, doSearch, setIsLoadding)\n\n useEffect(()=>{\n let userInfo = props.userInfo\n let content = userInfo ? (userInfo.name ? userInfo.nick : userInfo.FullName) : \"未登录-请勿外传\"\n\n __canvasWM({\n content: content,\n container: document.getElementById(\"userTrace\"),\n })\n }, [])\n\n function GetRequest() {\n var url = window.location.search; //获取url中\"?\"符后的字串\n if (!url) return {\n accountType: '2', // 2: 默认手机号\n account: '' // 15991901381 15810802587 15907325909 13690868030\n }\n var theRequest = new Object();\n if (url.indexOf(\"?\") != -1) {\n var str = url.substr(1);\n var strs = str.split(\"&\");\n for(var i = 0; i < strs.length; i ++) {\n theRequest[strs[i].split(\"=\")[0]]=unescape(strs[i].split(\"=\")[1]);\n }\n }\n return theRequest;\n }\n\n const updateSearch = (key = '', val = '') => {\n if (!key) return\n let cloneSearch = _.cloneDeep(search)\n cloneSearch[key] = val\n setSearch(cloneSearch)\n }\n\n const onSearch = () => {\n props.history.push({pathname: '/admin/dataGasStation/userSearch', search: `?account=${search.account}&accountType=${search.accountType}`})\n setDoSearch(Date.now())\n if (showSearchImg) setShowSearchImg(false)\n }\n return (\n
\n \n\n
\n setSearch({\n accountType: val,\n account: ''\n })}\n />\n updateSearch('account', val)}\n onEnterKeyDown={_.debounce(onSearch, 500)}\n />\n\n
\n \n
\n {\n hasPriv('userTraceDetail')&&(search.accountType && search.account) &&
\n {\n // let obj = {\n // accountType:search.accountType,\n // account:search.account,\n // }\n // props.history.push({\n // pathname: '/admin/dataGasStation/userSearchDetail',\n // state: obj\n // })\n setDisplayTraceDetail(true)\n }}\n />\n
\n }\n\n
\n\n {\n showSearchImg ?\n :\n \n
\n \n
\n\n
\n \n
\n
\n }\n {\n displayTraceDetail && setDisplayTraceDetail(false)}\n />\n }\n
\n )\n}\nconst mapState = state => ({\n userInfo: state.user.userInfo,\n})\n\nconst mapDispatch = dispatch => ({\n updateUserInfo: dispatch.user.updateUserInfo\n})\n\nexport default withRouter(connect(mapState, mapDispatch)(UserSearch))\n","import { useState, useEffect } from \"react\"\nimport { commonApi } from \"@utils/request\"\nimport Message from '@common/Message'\nimport { getUserTraceItem } from '@customHooks/api'\n\nexport default function UseGetUserTraceItem(search, doSearch, setIsLoadding) {\n\n const [userTraceItem, setUserTraceItem] = useState({})\n \n useEffect(() => {\n if (!doSearch || !search.account || !search.accountType) return\n\n setIsLoadding(true)\n commonApi(getUserTraceItem, search).then(data => {\n setUserTraceItem(data)\n }).catch(err => Message.error(err))\n .finally(() => setIsLoadding(false))\n }, [doSearch])\n\n return userTraceItem\n}","import React, {PureComponent} from 'react'\nimport SdwInput from '@common/Input'\nimport SdwSelect from '@common/Select'\nimport SdwDialog from '@common/Dialog'\nimport SdwSwitch from '@common/Switch'\nimport './index.css'\n\nclass CatalogueWin extends PureComponent {\n\n validateFun = val => {\n if (!val) {\n return '该输入项不能为空'\n }\n return true\n }\n\n closeDialog = () => {\n this.props.closeDialog()\n }\n\n render() {\n let {item, staffUserList, dialogVisible, title, handleSubmit, setPathTreeData, staffItems} = this.props\n let curPermissionsObj = item.data.permissions || []\n\n return (\n
\n this.closeDialog()}\n lockScroll={false}\n >\n
\n 分类名称\n setPathTreeData('path_name', val)}\n sholdCheckValidate={item.sholdCheckValidate}\n validateFun={this.validateFun}\n />\n
\n
\n 权限控制\n {\n return {\n id: i.LoginName,\n text: i.FullName\n }\n })}\n value={curPermissionsObj}\n getCurrentVal={val => staffItems(val)}\n onChange={val => setPathTreeData('permissions', val)}\n />\n
\n
\n 备注\n setPathTreeData('remark', val)}\n />\n
\n
\n 是否有效\n setPathTreeData('enabled', val)}\n />\n
\n \n
\n )\n }\n}\n\nexport default CatalogueWin\n","import React, {PureComponent} from 'react'\nimport SdwInput from '@common/Input'\nimport SdwSelect from '@common/Select'\nimport SdwDialog from '@common/Dialog'\nimport SdwSwitch from '@common/Switch'\nimport './index.css'\n\nclass ReportWin extends PureComponent {\n\n validateFun = val => {\n if (!val) {\n return '该输入项不能为空'\n }\n return true\n }\n\n closeDialog = () => {\n this.props.closeDialog()\n }\n\n render() {\n let {\n item,\n staffUserList,\n reportDialogVisible,\n title,\n handleSubmit,\n setPathTreeData,\n staffItems,\n treeData\n } = this.props\n\n let curPermissionsObj = item.data.permissions || []\n\n return (\n
\n this.closeDialog()}\n lockScroll={false}\n >\n
\n 报表名称\n setPathTreeData('path_name', val)}\n sholdCheckValidate={item.sholdCheckValidate}\n validateFun={this.validateFun}\n />\n
\n
\n 报表地址\n setPathTreeData('uri', val)}\n sholdCheckValidate={item.sholdCheckValidate}\n validateFun={this.validateFun}\n />\n
\n
\n 所有人可见\n setPathTreeData('is_white_node', val)}\n />\n
\n {!item.data.is_white_node &&\n
\n 权限控制\n {\n return {\n id: i.LoginName,\n text: i.FullName\n }\n })}\n value={curPermissionsObj}\n getCurrentVal={val => staffItems(val)}\n onChange={val => setPathTreeData('permissions', val)}\n />\n
\n }\n
\n 移动目录\n {\n return {\n id: i.id,\n text: i.path_name\n }\n })}\n value={item.data.pid}\n onChange={val => setPathTreeData('pid', val)}\n />\n
\n
\n 备注\n setPathTreeData('remark', val)}\n />\n
\n
\n 是否有效\n setPathTreeData('enabled', val)}\n />\n
\n \n
\n )\n }\n}\n\nexport default ReportWin\n","import React, {PureComponent} from 'react'\nimport _ from 'lodash'\nimport SdwDialog from '@common/Dialog'\nimport SdwSelect from '@common/Select'\nimport SdwInput from '@common/Input'\nimport SdwMessage from '@common/Message'\nimport {Dropdown, Tabs} from 'element-react'\nimport {getPathTree, setNodesSort} from '@services/dataVisualization'\nimport './index.css'\n\nclass SortWin extends PureComponent {\n\n state = {\n treeList: [],\n childrenObj: {},\n curChildrenList:[],\n treeListId: '', // 当前子节点对应的父级id\n treeListName: '', // 当前子节点对应的父级名字\n onTabClickName: 1, // 当前点击的Tab\n }\n\n componentDidMount() {\n this.getPathTree()\n }\n\n // 获取父节点\n getPathTree = () => {\n getPathTree().then((res) => {\n if (res && res.data && res.data.code === 0) {\n let items = res.data.data || []\n // console.log(\"items==========================\", items)\n let tree_list = []\n let n = 0\n items.forEach(i => {\n n = n + 1\n tree_list.push({\n queue: n, name: i.path_name, id: i.id\n })\n })\n const childrenObj = {};\n items.forEach(item => {\n childrenObj[item.id] = item.children;\n })\n // console.log('tree_list==========', tree_list)\n // console.log('childrenObj==========', childrenObj)\n this.setState({\n treeList: tree_list,\n childrenObj,\n // treeListName: tree_list[0]?.name,\n }, ()=>{\n this.handleSelectChange(this.state.treeList[0])\n })\n }\n }).catch(error => {\n SdwMessage.error('接口异常' + error)\n })\n }\n\n // 父节点排序\n changeTreeList = (index, type, val) => {\n let {treeList} = this.state\n let treeListClone = _.clone(treeList)\n if (type === 'queue') {\n let beforeVal = Number(index - 1)\n let currentVal = Number(val - 1)\n if (beforeVal < currentVal) {\n for (let j = beforeVal + 1; j <= currentVal; j++) {\n treeListClone[j]['queue'] = treeListClone[j]['queue'] - 1\n }\n } else if (beforeVal > currentVal) {\n for (let j = beforeVal - 1; j >= currentVal; j--) {\n treeListClone[j]['queue'] = treeListClone[j]['queue'] + 1\n }\n }\n }\n treeListClone[index - 1][type] = val\n this.setState({treeList: treeListClone})\n }\n\n // 子节点排序\n changeTreeChildrenList = (index, type, val) => {\n let {curChildrenList} = this.state\n let curChildrenListClone = _.clone(curChildrenList)\n if (type === 'queue') {\n let beforeVal = Number(index - 1)\n let currentVal = Number(val - 1)\n if (beforeVal < currentVal) {\n for (let j = beforeVal + 1; j <= currentVal; j++) {\n curChildrenListClone[j]['queue'] = curChildrenListClone[j]['queue'] - 1\n }\n } else if (beforeVal > currentVal) {\n for (let j = beforeVal - 1; j >= currentVal; j--) {\n curChildrenListClone[j]['queue'] = curChildrenListClone[j]['queue'] + 1\n }\n }\n }\n curChildrenListClone[index - 1][type] = val\n this.setState({curChildrenList: curChildrenListClone})\n }\n\n // 获取当前父级下面的子节点\n handleSelectChange = (val) => {\n // console.log('handleSelectChange----id===', val)\n this.setState({\n treeListId: val.id,\n treeListName: val.name\n })\n\n let {childrenObj} = this.state\n if (childrenObj[val.id] != null) {\n const items = childrenObj[val.id].map(i => ({\n ...i,\n id: i.id,\n text: i.path_name,\n }))\n let curList = []\n let n = 0\n items.forEach(j => {\n n = n + 1\n curList.push({\n queue: n, name: j.path_name, id: j.id\n })\n })\n this.setState({\n curChildrenList: curList\n })\n }\n }\n\n closeDialog = () => {\n this.props.closeDialog()\n }\n\n // 获取当前Tab\n onTabClick = (item) => {\n this.setState({\n onTabClickName: item.props.name\n })\n }\n\n // 保存排序\n setNodesSort = () => {\n let {treeList, curChildrenList, onTabClickName, treeListId} = this.state\n\n let params = {\n 'pid': onTabClickName === 1 ? 0 : treeListId,\n 'sorts': onTabClickName === 1 ? treeList.map(i => {return i.id}) : curChildrenList.map(i => {return i.id})\n }\n\n setNodesSort(params).then(res => {\n if (res && res.data && res.data.code === 0) {\n let msg = '排序成功'\n SdwMessage.success(msg)\n this.closeDialog(false)\n this.props.getPathTree()\n } else {\n SdwMessage.error('排序失败')\n }\n })\n }\n\n render() {\n\n let {sortDialogVisible} = this.props\n\n let {treeList, curChildrenList, treeListName} = this.state\n\n return (\n
\n this.closeDialog()}\n >\n
\n \n \n
\n {\n !!treeList.length &&\n treeList.sort((a, b) => a.queue - b.queue).map((item, index) => {\n let dataList = treeList.map((i, index1) => {\n return {\n id: index1 + 1,\n text: index1 + 1\n }\n })\n return (\n
\n \n this.changeTreeList(index + 1, 'queue', val)}\n />\n \n \n this.changeTreeList(index + 1, 'name', val)}\n />\n \n
\n )\n })\n }\n
\n
\n \n
\n \n {\n treeList.map(menu => (\n {menu.name || ''}\n ))\n }\n \n )}\n onCommand = {command => this.handleSelectChange(command)}\n >\n \n {treeListName}\n \n \n \n
\n
\n {\n !!curChildrenList.length &&\n curChildrenList.sort((a, b) => a.queue - b.queue).map((item, index) => {\n let dataList = curChildrenList.map((i, index1) => {\n return {\n id: index1 + 1,\n text: index1 + 1\n }\n })\n return (\n
\n \n this.changeTreeChildrenList(index + 1, 'queue', val)}\n />\n \n \n this.changeTreeChildrenList(index + 1, 'name', val)}\n />\n \n
\n )\n })\n }\n
\n
\n
\n
\n
\n
\n \n
\n )\n }\n}\n\nexport default SortWin\n","import React, {Component} from 'react'\nimport _ from 'lodash'\nimport SdwBreadCrumbs from '@common/BreadCrumbs'\nimport SdwTreeNew from '@common/TreeNew'\nimport SdwMessage from '@common/Message'\nimport SdwSwitch from '@common/Switch'\nimport CatalogueWin from './win/CatalogueWin'\nimport ReportWin from './win/ReportWin'\nimport SortWin from './win/SortWin'\nimport {hasPriv} from '@components/FrontendAuth/AuthMap'\nimport {requestOptions} from '@config/config'\nimport {getPathTree, getPathTreeAuth, insertPath, updatePath, getPathInfo, record, getHomePath, setHomePath, staffItems} from '@services/dataVisualization'\nimport sortImg from './img/sort_img@2x.png'\nimport openImg from './img/open_tree@2x.png'\nimport closeImg from './img/close_tree@2x.png'\nimport './index.css'\n\nconst baseURL = requestOptions.basename\n\nclass DataVisualization extends Component {\n\n state = {\n curClickTreeValue: {}, // 存储二级节点点击的节点对象\n curClickTreeRecord: {}, // 存储所有节点点击的节点对象\n treeData: [],\n treeOptions: {\n children: 'children',\n label: 'path_name',\n },\n isEdit: false,\n dialogVisible: false, // 目录弹窗\n reportDialogVisible: false, // 报表弹窗\n sortDialogVisible: false, // 排序弹窗\n pathTreeData: {\n \"sholdCheckValidate\": false,\n \"id\": 0,\n \"data\": {\n \"pid\": 0,\n \"path_name\": \"\",\n \"permissions\": \"\",\n \"uri\": \"\",\n \"remark\": \"\",\n \"enabled\": 0,\n \"is_white_node\": 0, // 是否白名单 1是 0否\n }\n },\n staffUserList: [],\n layoutSpan: 0, // 左边选择框 0打开状态 1关闭状态\n homePath: {}, // 默认主页\n homePathId: 0, // 默认主页id\n flag: 0, // 1设置用户主页 0取消设置用户主页\n }\n\n componentDidMount() {\n this.iniData()\n this.getPathTree()\n this.getHomePath()\n this.staffItems()\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n //console.log(\"componentDidUpdate-----props\", this.props)\n if (prevProps.match.params.id != this.props.match.params.id) {\n // console.log(\"componentDidUpdate-----props\", this.props)\n this.iniData()\n }\n }\n\n iniData = () => {\n // console.log(\"-------------------props\", this.props)\n let id = this.props.match.params.id\n if (!!id && id != \"0\") {\n getPathInfo({id: id}).then((res) => {\n if (res && res.data && res.data.code === 0) {\n let pathInfo = res.data.data || []\n // console.log(\"pathInfo----111-------\", pathInfo)\n if (pathInfo.pid != 0) {\n this.setState({\n curClickTreeValue: pathInfo\n })\n }\n }\n }).catch(error => {\n SdwMessage.error('接口异常' + error)\n })\n }\n }\n\n getPathTree = () => {\n let api = hasPriv('getPathTree') ? getPathTree : getPathTreeAuth\n api().then((res) => {\n if (res && res.data && res.data.code === 0) {\n let items = res.data.data || []\n // console.log(\"treeData----------------------\", items)\n items.map(i => {\n if (hasPriv('insertPath')) {\n i.isAddIconShow = true\n }\n if (hasPriv('updatePath')) {\n i.isEditIconShow = true\n }\n if (i.children != null) {\n i.children.map(j => {\n if (hasPriv('insertPath')) {\n j.isAddIconShow = true\n }\n if (hasPriv('updatePath')) {\n j.isEditIconShow = true\n }\n return j\n })\n }\n return i\n })\n // console.log(\"items==========================\", items)\n this.setState({\n treeData: items\n })\n }\n }).catch(error => {\n SdwMessage.error('接口异常' + error)\n })\n }\n\n // 获取用户主页\n getHomePath = () => {\n getHomePath().then((res) => {\n if (res && res.data && res.data.code === 0) {\n let record = res.data.data || {}\n // console.log('homePath==========', record)\n this.setState({\n homePath: record,\n homePathId: record.id\n })\n }\n })\n }\n\n // 设置用户主页\n setHomePath = (value) => {\n let id = this.props.match.params.id\n let params = {\n id: id,\n flag: value\n }\n setHomePath(params).then((res) => {\n if (res && res.data && res.data.code === 0) {\n this.getHomePath()\n if (params.flag == 1) {\n SdwMessage.success('已成功自定义默认报表')\n } else {\n SdwMessage.success('已取消自定义默认报表')\n }\n } else {\n SdwMessage.error('自定义默认报表失败')\n }\n })\n }\n\n // 获取公司人员名单\n staffItems = (value = '') => {\n let params = {\n page: 1,\n limit: 20,\n search: {\n FullName: {\n value: value,\n operator: 'like'\n }\n }\n }\n staffItems(params).then((res) => {\n if (res && res.data && res.data.code === 0) {\n let record = res.data.data.items || []\n this.setState({\n staffUserList: record\n })\n }\n })\n }\n\n operateFun = (type, item) => {\n console.log(\"---type=====item\", type, item)\n let staffUserList = this.state.staffUserList\n console.log(\"---staffUserList\", staffUserList)\n let obj = {}\n let permissions = []\n if (!!item.permissions && typeof (item.permissions) == 'string') {\n permissions = item.permissions.split(',').map(i => {\n let obj = {id: i, text: i}\n // staffUserList.forEach(item => {\n // // {value:'rtx' , name:'名字'}\n // if (item.LoginName == i) {\n // obj['text'] = item.FullName\n // }\n // })\n return obj\n })\n // console.log(\"permissions-=-=-=-=-=-=-=-=-=-=\", permissions)\n }\n let pathTreeData = {\n \"sholdCheckValidate\": false,\n \"id\": 0,\n \"data\": {\n \"pid\": item.pid,\n \"path_name\": item.path_name,\n \"permissions\": permissions,\n \"uri\": item.uri,\n \"remark\": item.remark,\n \"enabled\": item.enabled,\n \"is_white_node\": item.is_white_node,\n }\n }\n let isEdit = false\n switch (type) {\n case \"add\":\n pathTreeData.data = {\n \"pid\": 0,\n \"path_name\": \"\",\n \"permissions\": [],\n \"uri\": \"\",\n \"remark\": \"\",\n \"enabled\": 0,\n \"is_white_node\": 0,\n }\n if (item.tree_level == 0) {\n obj = {dialogVisible: true}\n } else {\n pathTreeData.data.pid = item.pid\n obj = {reportDialogVisible: true}\n }\n break\n case \"edit\":\n pathTreeData.id = item.id\n if (item.tree_level == 0) {\n obj = {dialogVisible: true}\n } else {\n obj = {reportDialogVisible: true}\n }\n isEdit = true\n break\n default:\n break\n }\n this.setState({\n ...obj,\n isEdit: isEdit,\n pathTreeData: pathTreeData,\n })\n }\n\n savePath = () => {\n let {pathTreeData, isEdit} = this.state\n if (!pathTreeData.data.path_name) {\n let pathTreeDataClone = _.cloneDeep(pathTreeData)\n pathTreeDataClone.sholdCheckValidate = true\n this.setState({\n pathTreeData: pathTreeDataClone\n })\n return\n }\n // console.log(\"isEdit---------------------\", isEdit)\n // console.log(\"pathTreeData---------------------\", pathTreeData)\n let api = isEdit ? updatePath : insertPath\n // console.log(\"isEdit---------------------\", isEdit)\n // console.log(\"pathTreeData---------------------\", pathTreeData)\n let permissions = \"\"\n if (pathTreeData.data.permissions.length > 0) {\n permissions = pathTreeData.data.permissions.map(i => {\n return i.id\n }).join(\",\")\n // console.log(\"permissions-=-=-=-=-=-=-=-=-=-=\", permissions)\n }\n api({\n ...!!pathTreeData.id ? {\n id: pathTreeData.id\n } : {},\n \"data\": {\n \"pid\": pathTreeData.data.pid,\n \"path_name\": pathTreeData.data.path_name,\n \"uri\": pathTreeData.data.uri,\n \"permissions\": permissions,\n \"remark\": pathTreeData.data.remark,\n \"enabled\": pathTreeData.data.enabled,\n \"is_white_node\": pathTreeData.data.is_white_node,\n }\n }).then(res => {\n if (res && res.data && res.data.code === 0) {\n let msg = isEdit ? '编辑成功' : '新增成功'\n SdwMessage.success(msg)\n this.getPathTree()\n this.addOrEdit(false)\n this.reportAddOrEdit(false)\n } else {\n let msg = isEdit ? '编辑失败' : '新增失败'\n SdwMessage.error(msg + \":\" + res.data.msg)\n }\n }).catch(error => {\n SdwMessage.error('接口异常' + error)\n })\n }\n\n setPathTreeData = (type, value) => {\n let {pathTreeData, flag} = this.state\n let pathTreeDataClone = _.cloneDeep(pathTreeData)\n let flagClone = _.cloneDeep(flag)\n // console.log(\"-----=type\", type)\n // console.log(\"-----=value\", value)\n switch (type) {\n case 'pid':\n pathTreeDataClone.data.pid = value\n break\n case 'path_name':\n pathTreeDataClone.data.path_name = value\n break\n case 'uri':\n pathTreeDataClone.data.uri = value\n break\n case 'permissions':\n pathTreeDataClone.data.permissions = value\n break\n case 'remark':\n pathTreeDataClone.data.remark = value\n break\n case 'enabled':\n pathTreeDataClone.data.enabled = value\n break\n case 'is_white_node':\n pathTreeDataClone.data.is_white_node = value\n break\n case 'flag':\n flagClone = value\n this.setHomePath(value)\n break\n }\n this.setState({\n pathTreeData: pathTreeDataClone,\n flag: flag\n })\n }\n\n // 绑定点击的节点对象\n changeCurClickTreeValue = val => {\n\n let {curClickTreeRecord} = this.state\n // console.log(\"------=上一个元素\", curClickTreeRecord)\n // console.log(\"------=目前点击的元素\", val)\n\n if (!!curClickTreeRecord.id && parseInt(curClickTreeRecord.id) != 0) {\n let params = {\n \"log_url\": baseURL + \"/statistics/page/record?key=\" + curClickTreeRecord.id,\n \"log_type\": \"leave\"\n }\n //埋点leave\n record({\n params\n }).then()\n }\n //埋点点击\n let params = {\n \"log_url\": baseURL + \"/statistics/page/record?key=\" + val.id,\n \"log_type\": \"enter\"\n }\n record({\n params\n }).then()\n\n let obj = {\n curClickTreeRecord: val\n }\n if (val.tree_level == 1) {\n obj[\"curClickTreeValue\"] = val\n // console.log(\"curClickTreeValue-val--------------\", val)\n }\n this.setState({\n ...obj\n })\n this.props.history.push({\n pathname: `/admin/dataGasStation/dataVisualization/${val.id}`,\n })\n }\n\n // 新增或编辑目录\n addOrEdit = val => {\n this.setState({\n dialogVisible: val\n })\n }\n\n // 新增或编辑报表\n reportAddOrEdit = val => {\n this.setState({\n reportDialogVisible: val\n })\n }\n\n // 打开排序弹窗\n openSortWin = val => {\n this.setState({\n sortDialogVisible: val\n })\n }\n\n // 打开或关闭左侧选择框\n changeLayoutSpan = () => {\n if (this.state.layoutSpan === 0) {\n this.setState({\n layoutSpan: 1\n })\n } else if (this.state.layoutSpan === 1) {\n this.setState({\n layoutSpan: 0\n })\n }\n }\n\n render() {\n\n let {\n treeData,\n treeOptions,\n curClickTreeValue,\n curClickTreeRecord,\n isEdit,\n dialogVisible,\n reportDialogVisible,\n sortDialogVisible,\n pathTreeData,\n staffUserList,\n layoutSpan,\n homePath,\n homePathId,\n } = this.state\n\n return (\n
\n \n\n
\n
\n
\n {curClickTreeRecord.pid === 0 || curClickTreeRecord.pid === undefined ?\n
选择报表
:\n
\n this.setPathTreeData('flag', val)}\n />\n 当前报表设为默认报表\n
\n }\n {\n hasPriv('getPathTree') &&\n this.openSortWin(true)}\n />\n }\n
\n {\n hasPriv('getPathTree') && treeData.length === 0 ?\n {\n this.addOrEdit(true)\n }}\n >添加 :\n \n }\n
\n\n
\n
\n {\n layoutSpan === 1 ?\n <>\n \n \n :\n <>\n \n \n }\n
\n
\n \n
\n
\n\n {/* 新增或编辑目录弹窗 */}\n {\n dialogVisible &&\n {\n this.addOrEdit(false)\n }}\n />\n }\n\n {/* 新增或编辑报表弹窗 */}\n {\n reportDialogVisible &&\n {\n this.reportAddOrEdit(false)\n }}\n />\n }\n\n {/* 排序弹窗 */}\n {\n sortDialogVisible &&\n {\n this.openSortWin(false)\n }}\n />\n }\n\n
\n
\n )\n }\n}\n\nexport default DataVisualization\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAEpSURBVHgB7ZbBbYMwFIZ/EIIr3SAbNJmgM2SDcgLEoe0ESSZIekCIYydou0G6QTeoR+CKhKC/pSBhq1EpVM4h/iTz9GQ/vx/0/DBgsVw7ztDJ83zpuu4SE2FsFcfxm7ZflaapOBfjKY7nvdIsMAMmXWVZ9jnYL+S4wRgBXdcdaCZ/AYl844G7+G29IiBJkmcYxsWFsQKsAOUUlGX5yKN4i4k4jlP5vr+LoqgaG+Np/oabhJhBXddHmvex6xUBbduu2EjuMBGKF2zFH3+JUQSceraAQYwWoawxOXAJAUy8pdlzPMC0gKIo7mk2J3cL0wJY2Ps+OYv0RZmDGeTRPjD5Tp/QG9EX5l1IRNM06/5C0sPmduSv/umnAA//S6hdSIR8BEGwhsViOcM3rsVOljVa0UIAAAAASUVORK5CYII=\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAACQCAYAAABpsGmBAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAGWSURBVHgB7dxBToNAFMbxh9aYmBhduegBXLTsegL2noNDseIQ7rkEcIWmOxdao4nReZUFYTXDPDox/l/y0gUl34+hDDRtJhORnSxfR9fvrveuP8YbLl2vZfm6cn3j+sH1yvWb62/dcCHnL0U8yu/BJwFo6WisUwK0dCRuUwK07lID7lMDrlMDBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDfAXRdV2qLca183lTX9W6z2ZQDRLbbbSVGlYnnr+dt25Yu+ITo+76yQnifgjzPK3f0p1AdDavTEfQhXAIRfBVYI2ZdhpaI2fOAFSJqIrJARM+EsQiTqTgGYXYvmCKapnny2c/0ZpRlmYSWGUCHfXS/qIqiePbZzwQwDdfT4btvNCAmPBoQGx4FsAifDbAKnwWwDA8GWIcHAZYI9wZMHkrNwrWCHkr11TI8CLBU8dUMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQGrA8d8D9ikBB9efqQC6OI4ujOP3h0bjOgzhX+cE6BJAL0O/jjf8AP1exVbDPhK0AAAAAElFTkSuQmCC\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAACQCAYAAABpsGmBAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAGVSURBVHgB7dxBSoRQHMfxZ00EQdTGFrNz00LczQk8QNfwULPyCEIH8ATt9AwyuxY1URD1/qUgbXr6/vqgvn/4g6Dy+/gc5r3BwcgYszPL19H2i+3O9ut4x6ntrVm+zmxf2L6xvbH9bPtDdpyY9UsQt+b74oMApGQ0tiEBUjISlyEBUlehAdehAeehAQYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADA3wO0bVtIux6v+uxYgtM0LeI43iVJ8lBVVffbOZFReno+hPfb+yzL9i7nqdyCueEqAJ9wb4BvuBdAI3w2QCt8FkAzfDJAO3wSYIlwZ0Bd13dLhDsDxhVFkdEsJ0Ce5/dy5bItIzFlslEBSMmwL4GYdAuWQEz+DGgjZn0TaiJmzwVaCK/ZUAPhvR7wRaisiHwQaqvin4iyLJ3WmmqL0qGapikGkMvx6oCpxU8zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKEBx38P6EICDrbfQgHk5Thf/zXcmPXr0Ie/rwmQVwA99v003vEJH37HQLM2TmEAAAAASUVORK5CYII=\"","import _ from 'lodash'\nimport switchRoutes from './switchRoutes'\nimport DataSearch from '@pages/DataGasStation/DataSearch'\nimport SearchEport from '@pages/DataGasStation/DataSearch/SearchEport'\nimport UserSearch from '@pages/Monitor/UserSearch'\nimport DisplayTraceDetail from '@pages/Monitor/UserSearch/DisplayTraceDetail'\nimport DataVisualization from '@pages/DataGasStation/DataVisualization'\n\nexport const routerPath = '/admin/dataGasStation'\n\nexport const bar = {\n rootUrl: routerPath,\n activeClassName: 'current',\n className: 'yzf-nav-item',\n name: '数据加油站',\n children: [\n {\n icon: '',\n title: '明细查询',\n path: `${routerPath}/dataSearch`\n },\n // {\n // icon: '',\n // title: '数据导出',\n // path: `/html/metadata/exportList`,\n // gotoPathState: 1,\n // },\n // {\n // icon: '',\n // title: '工单查询',\n // path: `https://samquery.cm.com/yzf/task/home`,\n // gotoPathState: 1,\n // }, {\n // icon: '',\n // title: '工单统计',\n // path: `http://kfdata.oa.com/#/web/archiveStats`,\n // gotoPathState: 1,\n // },\n {\n icon: '',\n title: '用户查询',\n path: `${routerPath}/userSearch`,\n }, {\n icon: '',\n title: '数据可视化',\n path: `${routerPath}/dataVisualization/${0}`,\n }\n ],\n order: 4\n}\n\nconst pages = {\n datasearch: {\n icon: '',\n title: '明细查询',\n path: `${routerPath}/datasearch`,\n component: DataSearch,\n },\n searchEport: {\n icon: '',\n title: '明细查询界面',\n path: `${routerPath}/searchEport/:id`,\n component: SearchEport,\n },\n // Map: {\n // icon: 'icon-278',\n // title: '数据导出',\n // path: `${routerPath}/portal`,\n // component: Map,\n // },\n UserSearch: {\n icon: 'icon-278',\n title: '用户查询',\n path: `${routerPath}/userSearch`,\n component: UserSearch\n },\n UserSearchDetail: {\n icon: 'icon-278',\n title: '用户查询详情',\n path: `${routerPath}/userSearchDetail`,\n component: DisplayTraceDetail\n },\n DataVisual: {\n icon: 'icon-278',\n title: '数据可视化',\n path: `${routerPath}/dataVisualization/:id`,\n component: DataVisualization\n }\n}\n\nexport const menus = [\n // {\n // icon: 'icon-64',\n // title: '知识菜单',\n // path: `${routerPath}/monitor`,\n // children: [pages.knowledgeLearning, pages.learningGroup],\n // },\n // {\n // icon: 'icon-132',\n // title: '考试菜单',\n // path: `${routerPath}/dialogue`,\n // children: [pages.orderShare, pages.testList],\n // },\n]\n\nexport const Router = switchRoutes({ routes: _.values(pages) })\n","import React, { PureComponent } from 'react'\nimport _ from 'lodash'\nimport iconOrder01 from './img/icon-order-01.png'\nimport iconOrder02 from './img/icon-order-02.png'\nimport iconOrder03 from './img/icon-order-03.png'\nimport icon01 from './img/icon-01.png'\nimport icon02 from './img/icon-02.png'\nimport icon03 from './img/icon-03.png'\nimport icon04 from './img/icon-04.png'\nimport icon12 from './img/icon_12_right@2x.png'\nimport { getCommonTopics, getCountedFields } from '@services/dictionary'\nimport * as echarts from 'echarts'\nimport SdwBreadCrumbs from '@common/BreadCrumbs'\nimport SdwEmpty from '@common/Empty'\n\nimport './style/dictionary.css'\nimport { hasPriv } from '@components/FrontendAuth/AuthMap'\n\nconst ICON_MAP = {\n 1: icon03,\n 2: icon02,\n 3: icon01,\n 4: icon04,\n}\n\nfunction getPathName(id) {\n let pathName = ''\n\n switch (id) {\n case 1:\n pathName = '/admin/dataMarket/standard'\n break;\n\n case 2:\n pathName = '/admin/factory/atom'\n break;\n\n case 3:\n pathName = '/admin/factory/derived'\n break;\n\n default:\n break;\n }\n\n return pathName\n}\n\nclass Dictionary extends PureComponent {\n\n state = {\n comonDomain: [],\n countedFields: [],\n reloadState: 0\n }\n\n async componentDidMount() {\n await getCommonTopics()\n .then(res => {\n if (res && res.data && res.data.code === 0) {\n this.setState({\n comonDomain: res.data.data || []\n })\n }\n }).catch(res => {\n Window.location.reload();\n })\n \n await getCountedFields()\n .then(res => {\n if (res && res.data && res.data.code === 0) {\n this.setState({\n countedFields: res.data.data || []\n })\n }\n })\n \n this.initPieData()\n }\n\n initPieData = () => {\n let { countedFields } = this.state\n\n if (countedFields.length) {\n countedFields.forEach((record, index) => {\n echarts.init(document.querySelector(`#m-chart__content${++index}`))\n .setOption({\n color: record.colors,\n tooltip: {\n trigger: 'item',\n formatter: '{b}: {c} ({d}%)'\n },\n legend: {\n icon: \"circle\",\n itemWidth: 8, // 设置宽度\n itemHeight: 8, // 设置高度\n orient: 'horizontal',\n bottom: 0,\n data: record.data,\n textStyle: {\n fontSize: 14\n }\n },\n series: [\n {\n name: '',\n type: 'pie',\n radius: ['40%', '70%'],\n avoidLabelOverlap: false,\n label: {\n show: true,\n position: 'center',\n fontSize: '30',\n fontWeight: 'bold',\n formatter: () => record.total\n },\n emphasis: {\n label: {\n show: true,\n formatter: () => record.total\n }\n },\n labelLine: {\n show: false\n },\n data: record.data\n }\n ]\n })\n })\n }\n }\n\n jumpToDomainDetail = domain => {\n if (!hasPriv('getTopicInfoById')) return\n this.props.history.push({\n pathname: '/admin/dataMarket/domaindetail',\n state: {\n topicid: domain.topic_id,\n seclevel: 'dictionary'\n }\n })\n }\n\n jumpToDataStandard = id => {\n let pathName = getPathName(id)\n\n if (!pathName) return\n this.props.history.push({\n pathname: pathName,\n state: {\n typeID: id\n }\n })\n }\n\n goToDataStandard = (item, domain) => {\n const standardType = item.standard_type\n let pathName = getPathName(standardType)\n\n if (!pathName) return\n this.props.history.push({\n pathname: pathName,\n state: {\n typeID: item.standard_type,\n topicID: domain.topic_id\n }\n })\n }\n\n render() {\n let { comonDomain, countedFields } = this.state\n\n return (\n <>\n \n
\n {\n _.isArray(countedFields) && countedFields.length ?\n
\n
\n
\n
\n
\n
this.jumpToDataStandard(1)}>原生字段
\n
原油
\n
\n
\n
this.jumpToDataStandard(1)}\n className=\"m-chart-sector__canvas-wrap\"\n id=\"m-chart__content1\" >\n
\n
\n\n
\n
\n
\n
\n
this.jumpToDataStandard(2)}>原子指标
\n
半成品
\n
\n
\n
this.jumpToDataStandard(2)}\n className=\"m-chart-sector__canvas-wrap\"\n id=\"m-chart__content2\" >\n
\n \n
\n
\n
\n
\n
\n
this.jumpToDataStandard(3)}>派生指标
\n
成品油
\n
\n
\n this.jumpToDataStandard(3)}\n className=\"m-chart-sector__canvas-wrap\"\n id=\"m-chart__content3\" >\n
\n \n
\n
: \n \n }\n \n
\n
\n
常见主题域
\n {\n hasPriv('/admin/dataMarket/management') &&\n this.props.history.push('/admin/dataMarket/management')}\n >\n 更多\n \n
\n }\n
\n
\n {\n _.isArray(comonDomain) && comonDomain.length ?\n comonDomain.map(domain => (\n
\n
\n
\n this.jumpToDomainDetail(domain)}\n >\n \n {domain.title}\n \n
\n
\n
\n {\n domain.data.map(item => (\n
this.goToDataStandard(item, domain)}>\n
{item.value}
\n
{item.name}
\n
\n ))\n }\n
\n
\n
\n
\n
\n
\n
字段名
\n
类型
\n
\n
\n
\n {\n domain.list.map((item, index) => (\n
{\n if (!hasPriv('getFieldById')) return\n this.props.history.push({\n pathname: '/admin/dataMarket/standardinfo',\n state: {\n id: item.id\n }\n })\n }}>\n
{item.field_name_ch}
\n
{item.standard_type}
\n
\n ))\n }\n
\n
\n
\n
\n )) : \n \n }\n \n \n \n )\n }\n}\n\nexport default Dictionary\n","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAMAAAANIilAAAABgFBMVEUAAAAAAP8A//8AgP8AVf9VVf9AQP8zM/8zZv8qVf8kSf8kbdtJbf8gYN8gYP8cVf85VeMaTf8zTf8zZuYzZv8uXeguXf8qVeoqVf8nTusnYusnYv8kW+03W/8iVe4iZu4zVe4zVf8gUO8gYO8wYO8wYP8eWvAtWvArVfEoXvImWfIkVfMjXfMWWfQsWfQqVfQpXPUcVfYcXvYbW+0hWvcgWPcdV/AdX/AcXPEiV/IiXvIfV/MeW/MeWe0eWvAjWvAjWvUiWPAhWvEgWPEhXPIiWvAgXPIfXu8iXPAhW/AhXvMhXPAgW/AgXfEgXPEhXPEgXPMhXfMjXPEiW/AgXPEhW+8hW/EhXfEgXPIiXPEgXfEhXPAiW/EjXfEiXvAiXPIiW/AgXPAhXfAhXPEhXfEhXO8iXO8hXfAhXPEiXPAhXPEhXPEhXPIhXPAiXO8hXPAiXPAhXPEgW/EiXPAgXPAgXPEhXPAhXfEhXPAgXPAhXPAhXPAhXPAhXPAhXPAhXPDQzzqlAAAAf3RSTlMAAQECAwMEBQUGBwcHCAgJCQoKCgoLCwwMDQ0NDg4PDw8PEBAQEBEREhMUFRYXFxgZGxscHyAjIyQmJikqKzMzMzQ2Nz1EUFFTVFRWV1hZXmdrbHl/g4ODiI6Pm5+hpqyutcDCw8TFycrKy87R0tXb293h4eTl6Onq9Pr7/P3+3zDjsgAAAq9JREFUSMetl+lf00AQhtPWFiKFUqkUSkyrLZLNZE3F+8b7Fu9bPPDGW/EgafZfNym2ZjabkBDeD/z40Ccz++7s7KwkCZUvViZaGtF1orUmKsW8FFu50foMAOj/5P47Ux/NxSEzskJ8ZJ8nipxZi5VVnQP7H9BVORLN18LQVbwWsfghEoF2cTIUgmara6BdvJoVOtWIwbr0NoFvuelYrEtPB3YtE5f1aC52thGbdenteN3VBKznmp8d1hNq2FcbJClM/ldLDZLCUOvXs74O9epcFQc2TAPA/SMOrUYFBqoOllWlJDfNqNCKKDDVBo/N33/86M61QwNEFByUrtWiz9Kt+x7+YJ6cr/dmJ6noN57hYyBiT31gjm3ZttVx2NLJcQENYy5cD8DQrp75zexONzKzLfb9+GQwc6i7WWu8yYY2susds1lfNnvZFpSRlpeKXGBjprT/0lPWYcxP35KDiUNRqmDYUGbv/mKO42fdL33cq5n88qAiTQFmDy8yB8dl3rcuFMoat26Yklq44Nsv2AoO26XZt2c3d1e51FsS8ovKt/1OYf7N6XEcW5P8NsLOA5/4lHtsx2KfjzbRGomEA5/jvfJphT0ZwYkj2CxcZ1YY66a0PIeLBaVNB29EwC59GW03QYaZA1fD/PJksfmCiQzzb5UxObccYtjqbp9HkVu4SGhpwfUlNOsvR1QDFQkqT1BO/AxN3GIPNlNcnvhg0NLFP6xji9Rhr/dogA8GdyTplrNLzBFW2PODqsEdSb4ZGFU6v7D49j2nVwtXdmDWawaBNkRJeZPS5tUslMEItqFgA6QmEF4Q7N/5kNYLQYlb7/pum/59o0JytHfdpLvoUl2x6S73VGNFuoEm4SjVyG7cEJdufIw/uDYyGz0ypxvWUz4T0j1QUj6N0j3KkjwH/wIPX2kRNYHbpAAAAABJRU5ErkJggg==\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAMAAAANIilAAAABRFBMVEUAAAAA//8A/4AA//8A/6pV/6oA/78A/8wq1aok27Yg378A48Yc48YA5swa5rMA6LkA6NEA6r8V6r8U68QS7bYS7cgA3bsA7rsA378A778A4cMA47gA48YA5LwA5r8A58IA6LkA6MUA6bwA6r8A4MIA68IA4roA67oA470J470J5L8J5bkI5rsI5r0H5b4G57wM4bwG574M4b4G48EG6MEG47wF5L4A5bsF4b4F5r4F5LsJ5bkH4bwH5bwH5roH5r0F47wH4LwH4rwI4rwK4bwG4r0H47wH47wH4bsH47wH4rwH4rsI4rsI47wH47sH5LwH47wI47sH47sH47sH47oH47sH4roH4roH4rsH4roJ47sI4roI4roH47oG4roG4roG4roG4roG4roG47oH4roH4roH4roH4roH4roH4roH4roH4rrtcD21AAAAa3RSTlMAAQICAwMEBQYHCAkJCgoLCwwMDQ4ODw8QEBESEhMUFRYWFxgZGRoaGxscHR4fJyoqKystLS4vMTMzODpFRUZGZmtrfYGDiZGSlJWWl5m5utDS2tzd3ePk5OXr7O3u8fT19vf3+Pn6+/z9/g61SdYAAALTSURBVEjHrZdpQ9NAEIZTKNIArdKUNmx3szGI1jbWGxU8UA5PFC8QEEwlBZL5/9/dlILNHiEQ3i9NmzyZ3em7s7OaJlVeL5VNTCyLYLNc0vNaag1PVBGl1OqLXaLqxHAaMleokAHylCeVQu4stlCzOPD0BVatkIjmDRV6jBsJk9dJAtrDia6abfkMtIeXpTPP1VKwjJ6S0EPTqVhGTw8JcdOyEZ270Jj7dC1Ol8/BRlkbZMdkj9g2QYjYtuze2IA3iOTtdvGac7vpXC3aklGR/24xqMQOxRfv17e31z88L9Ylt41TP0uGjGbX9qGn/bVZUzL0E5+Lmab12S9w1A0Agu4RfL4lxqY1deDiRzhkaNcPITiET0Vl6IrwWmf81T4E8O31k/bidwhC/+W4I4SuROyIJPDkWziAHw+vIDz6+Cf48G5SEnqEwSUxl8RZZ4HfjN6k9MboIrv86oh/Ji0xuCrCuLkN4D9C7A7F7d9//V9NLMJVZpC6+DNyPQCviY6/ukwy99bzmi7+CzZ2OwAdF9s0EsY4Kqbic7pkyghNNaLIjSmMIuGIZpJMWrSme6fRjiK3G25MEouafNzWjv/Hi3zpxeTvtPjYpoYlyQpBUAiei7hBYo3wcMtjnuo9H0TeDsKeAvBaPEw0Kylyt5sU2UqCD1bn5lYPkmCigo9gRUNIW2EXCpgoExbC3oIxM2Ms7PW/yhJmKuHdecNxjPldJWzyJhkc9rJGqbasHDYzSYmqE7Z0nS6pE8bsqSvhADbv3d1kHypY55dkDN54cH9DDbMlyRWDeOR2Wx05KgbcpGPw1tNnW2q4JBTAmD3DTidU23NEKL39hdEXg0LFwjguvfGin35JFiTbTVQMPIm4YnCy3fD7jauQfKPjLIoUkm+x3OZOFVJs7vK2Ikljl9XQZGulMjVx2drH9I1rLXfZLXO2Zj3jMSHbASXj0Sjboew8x8F//+7cVREFhZkAAAAASUVORK5CYII=\"","export default \"data:image/png;base64,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\"","import { request } from '../utils/request'\n\n// 获取数据字典页面常见主题域和改主题拥有的字段列表\nexport const getCommonTopics = () => {\n return request({ url: '/statistics/dataMarket/getCommonTopics', method: 'get' })\n}\n\nexport const getCountedFields = () => {\n return request({ url: '/statistics/dataMarket/getCountedFields', method: 'get' })\n}\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAABrVBMVEUAAAAAAP8A//8AAP+AgP8AVf9VVf8AQP9AQP9AgP8zM/8zZv8qVf8kSdskSf9Jbf8gYP9AYP8cVf85VeMaTf8zTf8zZuYzZv8uXeguXf8qVeoqauonTuskW+0kW/8iVe4iVf8zVf8gYO8wYO8eWvAtWvArVfEoXvImWfIkVfMjXfMWWfQsWfQVVfQqVfQpXPUbW/YaXfchWvcgWO8gYO8fXfAeWvAeWvggWfIeW/MkX/MjXfMhXu4kXPUgXfEkW/EfWfIkXvIjWu8jXfAkW/QcXPQiXfEgXu8gXPImW/IfXPMfXvEiXPEiXvIgXPMhW/EgXfEhXPIhXPIiW/AiXfAhXPAkXPAfXfEjXPEgXPEkXPEkXfEgXPIhXPAhXfMhXPAgXPAgXfAiXPAhXPIjW/EiXfEgXfEhXvEiXPAhXfEgXPEiXPEhXPEiXPIhXPAfXPEgXO8hXPAhXfAiXPAiXPEgXPEhXPIhXfAhXPAiXPEiXPEhXPAiXPAiXPAhXPAhXPEhXPEhW/EgXfEhXPAhXPAhXPAhXPAhXPEhXPAhXPAhXPAhXPAhXPAhXPAhXPB8R4h4AAAAjnRSTlMAAQECAgMDBAQEBQUGBwcHCAgJCQoKCgoLCwwMDQ4ODw8PEBARERITFBUWFxcYGBkcHh8gICEiIigqKywuMjc4OTlBQkZISk9QUVNaW2Jma250dXh5enp8fX+AgYiLkpWWnZ6goqWoqa6ztba8vcDExcfJzc3P0NPa29zd4ePo6err7PHy8/f4+fr7/P3+LVHWTAAAAoRJREFUSMelVvd7EkEQ3TQEE5ILiYRLICeQu2X3FHuJJXaNvcbee41dY69R74D5mx2acjsL+dD5+IFv772b93ZmZ48xNcIDZtrhuRx30uZAmC0Q3UMWF0LkKoF/uDXU3QIeGuN1cD2QMxZqAu8Y4Qq6xuEjHdrXZ4UWX86S1SSJ8ibwapKoio+1gFcosSDeWACPDCOgh+KFW46GddGgKsIJXgqjHBMNSzxSx3dm1QSuXLL04JlTMzNbMn8fiWxnjRBXi+WOmnse+lACb1uqUVS8VgCuwDPG9js+FHwP3q9wGh/xajkSMiDeNiavfIeSX4IiPFKMJSoJgmujq899hpJXAoACXE0qakOqA2nufodID/yn8+DBsT43KLfswgoQklMfAV8/t38aikXYpxIsUgN30XmArxfWsxPwCz5NJWVQEg+zwaBKYa97fmOz4UxcQ0WvVjnqjg8yUy2a2GCmXCGeIOFB3zL1ocnSpI1sKXLOyi+4SZd78iohzWzadvhL7fCw0EdjkryNcV0vy+HDiC/sSpL0nGmb3+29iIq+rbVp2+sJ+Z676PmF1KTXShLcfYaEWxZNwDWm0UJq6wes21nDzVHTac1pdo29RfDhUC8h4LaaOsLiI6hofucwJZhqa9R69hIqmtuYIWXA1ojoXDv3kDA7TkchNh/TbIWz/A1auNmVJwkszQjA5czkTzyfp/uphTg5otVjOl0+oQcSxELliDKy7vafxAQ/NmXU3NUhoI4ZbIyu6+j5bd4hlkPaQSbk+CyW4T7XOtCMSmGvuf3y8evjKfV4/hmVpBZCYtC+izQf9xyDCIr+z4XS/pXV/qXY/rXb/sXe/qfDP3ycVKvY+vPnN/OQVt20z6bAAAAAAElFTkSuQmCC\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAABtlBMVEUAAAAAAP8A//8AAP8AgP+AgP8AVf9VVf9AQP9AgP8zZv8qVf8kSdskSf9Jbf8gYP9AYP8cVf85VeMaTf8zZuYzZv8uXeguXf8qVeoqVf8qauonTuskW+0iVe4zVf8gYO8wYO8eWvAtWvAtWv8rVfEoXvImWfIkVfMjXfMWWfQqVfQqYPQpXPUdWPUcXvYfXfAhXPIgWfIfXfMeW/MeWfMhWfQhXu4hXvQfWO8eWvAiXfAgXfEjXPIhX/MkXfMlXPQjW/EiWvEmXfEfXPEeXvIeXe4gWvIhWvAeXPAhXPAgWvEgXPEiXPEhW/EhXPAhXPIgXPAjXvEhXPAhXPIiXPAiXfAhXPAiW/EiXfEgXPEhXPEhXfAhXPIhXPEgXfEgXPEgW/EhW+8iW/EiXfAgW/AiXPAjXPIiXPIiXfIjW/EiXPEgXPAgXe4hXPEhW/AfXvEhXPAhXPEhXPEgXfEgXfEhW/AgXfEgXPAhXfAgXfIhXfAgXfEiXfEhXPAhXPEhXPAgXPAiXPAiXfAiXfAgXPEgXfAhXPAhXPAhXPAhXPAhXPAhXPAiXPEhXPAhXPAhXPAhXPAhXPBuvHZeAAAAkXRSTlMAAQECAgIDAwQEBQYHBwcICAkJCgoKCwsMDAwNDg8PEBARERESExQVFhcYGBkaGyEnKCkqKy4uLjEzNDc6Pj9FSUpKS0xNT1VWVlhZW1xkZGdtdHR3eXp+fn+ChIWNj5CRlJeXnaaqq62wsrW4ubu8wcLDxcbGyMzO0NLU1NjZ3uDh4eLl7fL29/j5+vr7/P3+Q49fwQAAAsFJREFUSMelVvd70kAYDq2VlEADDQVsCSDmkjsU96yj7lH3wN3WPequ1r2tCwzJ/cceI8ndkdAHfX/K8+R98433u+8iCDzEoXROA7oOtFx6SBQWwcCwCgzD0JsgD0AdHuhCD48Ch+yAaEbDAfTQCODYbQ0YCfl+vmD48htRCj5BoiCA3goS5fmJLvSmJMHy5UX4RCEz+dB8A1EoIeeVQWU1CGh+MSa7iImy7ijAoMPvK1ABYHbrpcr5NipnTu5ZmXV8LPS1BUk6ISTvt7GNXdSfbsk7imTbADohHaobPuBf1RZ+m2YdT0eQk1TLjhRkXVoxh+tehBqeXVJyPpZqBuD6B5UTN6amG5i5/hhjE9/rL7kvw3wFzRiKGGlCCmkLRHBTdAXNKtQOz6DjAVzzHVv4rIxcgcp5wIUa22VibB/MeEUCUYgHDwVUTpEG/1yX9yhGXEgHC8riFCnhI6JyMNJCzl8AEdTHpDnS1fsanWVOKPolj5AqLUM7btskwlWF9qkodNaMdFVKbD567X0d23UTH5YQ9RIIPkclv63y4Bsx2a7WLfyszB7FDoGRPfTkT2MkzMZgfLm1lvOJTwmmL5JWmjVCNt/OTK6PLWcmjaTEFo2UnT+waWPr8+y57TAjqYhrYpFrK5Qv4JqNHx3ZGJOyoNFbLuEcbxx4SFo/DyIqQn4GEePY0dDKC+QwXF66OminxbkFoI5XSbnHUjBgWsjwMeMNleOEXx0vItgGG6kx3swBQtIVktFXTcm4YAVJ7oiW+u+Qml/v3e1iAjJGhdklQGLNkwiWixq+m6ebnuLWDMxu+oRNy3ZgWXgyRo1ee814VSB5n8UsMfxqFTV6ziLzViWSD7x7/tLDizenqQDeqqS8MNx+tpqqUS30ljG97gELim9E/+dC6f3K6v1S7P3a7f1i7/3X4R9+Tloudv/9+QsdSWtrW2AMAwAAAABJRU5ErkJggg==\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAB0VBMVEUAAAAAAP8A//8AAP+AgP8AVf9VVf9AQP9AgP8zZv8qVf8kSdskSf9Jbf8gYP9AYP8cVf85VeMaTf8zTeYzTf8zZuYzZv8uXeguXf8qVeoqVf8qauonTuskW+0iVe4zVf8gYO8wYO8eWvAtWvArVfEoXvImWfIkVfMjXfMWWfQsWfQqVfQpXPUcVfYaWO0gWO8fXfAeWvAdV/AgWfIfXfMeW/MkWfMiW/QgWu8fWO8fWPUfWfIkWfIhXO4lXPAcXPEjW/EiXe4eW/IdXPIgWu8fW/IhXfAfWvQhXO8gW+8gXPIhXfIhXPAgXPAjXfEiXPEiXO8iXPIjXfAiWvAiXPAiXfAhXPAjXfEjXO8jXPEgXPEkXPEgXfEkXfEfWu8hW/EgXfAgXPIhXPAhW/AhXfAiXfEhXfEiXPEiXPIgXPEgXfIiXPAiXfAhXPAgXPEgXvEjXO8gXPEgXPAiXPEgXPAhXO8gW+8gW/AgXfEgXfEhXfAgXPEiW/EgXfIhXPAhXPIhXPAiW/EhXfEhXPAiXPAgXPEiXO8hXPAhXPAgXPAiXPEhXPAhXfEhXPAhXPAgXPAhXPAhXPAhXPAhXfEhXPAhXPAhXPAhXPAhXPAhXPAhXPB0qxVSAAAAmnRSTlMAAQECAgMDBAQFBgcHBwgICQkKCgoKCgsLDAwMDQ4PDxAQERESExQVFhcXGBkbHSAhIiMoKSorLTAxMTk5PUVISUpMTk9RVVteX2FjZGdub3Jydnd3eXp8fX1/gIGBgoOHiIuMjI+SlZigoaenqrGxsbK3vL/ExcbGyMnMzdHR0dPU1t7j5ubq6+zv8fHy8/T19/j4+fr7/P3+KJ0F3gAAAsJJREFUSMelVvdb01AUDcMGQwgFCwQpKSV5eYmgoIK4NyqCe2/EvfceuPfErty/1pekad57aeGrnp/yNef0jnPffREEHmKTmjKQaSIjpTaJwhyob9EQxtj0QB6Q1lI/Cz3WhQJyAKLpilWg17Qjjl3UoPaasn+fxmX5bpR0mSCNqALdD9LI8+Oz0D1JnOUrc/CJQmHyofl2CX22RSmorBoQxTeUImRJlDQ7fIEaAn5tOgyA9aFDh30c2Dc+OhI3wlfp2qKgjUoIayN/oATn/QU6qbaiAXRCJrLfQCbrYSbrOHBSCrNCvh0dFtMO4w4UShEy8MAI/bQ6vABc+/RNR/cfdHHiVgHy8HKgl8o4xlXgISnJLhRRfQhZeLaYGgGvCo0XWIEL5m3IwP2FdNka54HJlj9NItyo66N/E4XmikNhDH4l5U9SXSIhmgU1KsCWi/7kBgcc2L6AbiJWhVREgJPxRCKhKnVXIAdfluk0AacEPcLvXj+xY2xs5+6bGdLVSZV1SRciNfeJlwnRsw1+XVpksBkgIVKBreyBXD6fz2Xhw/g8g884KrA6Nwajkf12vDciiNpgDEyen5o6d/G5O1NbFJtLSS9jgEqQlFe8hRk4xgn0Mm31fbCNpa/JZJxJMF0ibVUrOG11rvlIBLvmMxGIcZVGw5ZGoVCArRIraK44fLa8lwT4tLaTSYkMHzfeOIDdfY3M6qtBpq/ueLMHyOgpQheHP5NRuiuzGbVxRxQtGV7uYWjVtqfgFOA0W7N3RKklYEsT8OO3h4wDxLfvK3vo+P4SoNaMLW92j4CHQjaXh1NxtuQYt8is7tXvSjvGgZ9nNROb0UUWrkqM+q++ePzExaN714+sa2X5pVVJeYH842lZ2OyRW9mzEy5jet2jACa22Qbhxv+5UKq/sqq/FKu/dqu/2Kv/dPiHjxPfxdk/f/4CfmFqPl5w0YQAAAAASUVORK5CYII=\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAACSElEQVRYR+2WPasTURCGZ3aN26dQ0NbCP3DRRrCwE200qYQYvMluJwoWeoXN4kchWCdnlxRJcdWN2vgj/MIfYCeChU3KawJmRw5k4LBm98yJ4G1uys2zM++8MzvnIBzyDw85PxwJqHWAiBARydYmKbcpTqUAHVS/YBMg5aqKsM6ANIGUKwv5S0Acx16SJMVwOLzo+/7tRqNxp9vtfuPnHEDK2dpX6YBSKgeAFiJ+QsSrvV7vZ57nfrvdXplBpZy4BVzZeDw+tVqt3hLROUT8EATB9U6n84P/l3JbOcBTPZlMTi+XyzdrEZ8R8YrphJSrE1HZArY7y7KTRPSOiHYQ8WMQBNdMJ6ScuAUmyDbbnJByTnuAYVuF3AYpZ/0MN6ksVfiaiM4j4hdEvKxnojyYa8cqOTOHdRGVnZhOpycWi4UOfsHzvPdFUVwKw/Cg7ISN47hiATrBYDDwkyT5nabpcyK6CwC/AOBsGIbfWYCUcxKgg85mM08vodFo9BQR7+vkRHQriqIX3AIp59QCc8dnWfa4KIo9AFgi4s1+v/+Sh0/KOQ2hWZFS6gkAPFjbvhuG4X4cx8d0S3RQFmLjxAIqKlogYldXzsmlnNMi+h+VVw6hebtJ0/QRET0EgI2V82WljnM+jFiAUuoZANwDgAMA6JV7LuX+RcAAAPaI6EYURa/MgdNBDQG1nLMAY/Mdn8/nZ5rN5tdWq1VU3Q3zPBdxTkNoVli+ipUDsRM2bisBvP3qbDS/GJvdWx3H2wR1eUd8GLkEdWGPBPwBR/PEPwZzpVEAAAAASUVORK5CYII=\"","// 公共常量\n\nexport const EXTRA_MAP = {\n primordial: 1,\n atom: 2,\n derive: 3\n}\n\nexport const EXTRA_MAP_TEXT = {\n [EXTRA_MAP.primordial]: \"原生字段数\",\n [EXTRA_MAP.atom]: \"原子指标数\",\n [EXTRA_MAP.derive]: \"派生指标数\"\n}\n\nexport const TABLE_EXTRA_MAP_TEXT = {\n [EXTRA_MAP.primordial]: \"原生字段\",\n [EXTRA_MAP.atom]: \"原子指标\",\n [EXTRA_MAP.derive]: \"派生指标\"\n}\n","import React, { PureComponent } from 'react'\nimport _ from 'lodash'\nimport SdwDrawer from '@common/Drawer'\nimport SdwInput from '@common/Input'\nimport SdwSelect from '@common/Select'\nimport SdwSwitch from '@common/Switch'\nimport { storeNewField, getBusinessStatisticByTopic } from '@services/dataStandars'\nimport SdwMessage from '@common/Message'\n\nimport 'element-theme-default'\nimport './style/editDataStandardWin.css'\n\nclass DataStandardWin extends PureComponent {\n\n state = {\n standard_type: '',\n topic: '',\n business_id: '',\n field_name: '',\n field_name_ch: '',\n field_define: '',\n label: '',\n field_format: '',\n field_type: '',\n owner: '',\n field_range: '',\n secret_level_id: 0,\n is_valid: 0,\n is_dim: 0,\n sholdCheckValidate: false,\n businessData: [],\n }\n\n componentDidMount () {\n this.initData()\n }\n\n componentDidUpdate (prevProps, prevState) {\n if (\n prevProps.record.id !== this.props.record.id ||\n !this.props.visible && prevProps.visible !== this.props.visible\n ) {\n this.initData()\n }\n\n let { topic } = this.state\n\n if (prevState.topic !== topic && !!topic) {\n getBusinessStatisticByTopic({\n id: topic\n })\n .then(res => {\n if (res && res.data && res.data.code === 0) {\n let topicArr = res.data.data && res.data.data.list.map(i => {\n return {\n id: i.business_id,\n text: i.business_name\n }\n }) || []\n this.setState({\n businessData: topicArr\n })\n }\n })\n }\n }\n\n initData = () => {\n this.setState({\n standard_type: this.props.record.standard_type,\n topic: this.props.record.topic,\n business_id: this.props.record.business_id,\n field_name: this.props.record.field_name,\n field_name_ch: this.props.record.field_name_ch,\n field_define: this.props.record.field_define,\n label: this.props.record.label,\n field_format: this.props.record.field_format,\n field_type: this.props.record.field_type,\n owner: this.props.record.owner,\n field_range: this.props.record.field_range,\n sholdCheckValidate: false,\n is_valid: this.props.record.enable || Number(!!this.props.record.id),\n secret_level_id: this.props.record.is_sensitive,\n is_dim: this.props.record.is_dim\n })\n }\n\n validateFun = (curValue, label = '') => {\n if (typeof curValue === 'number' || !!curValue.trim()) {\n return true\n }\n return `${label}不能为空`\n }\n\n handleSureClick = () => {\n let {\n standard_type,\n topic,\n field_name,\n field_name_ch,\n field_define,\n owner,\n field_range,\n field_format,\n label,\n field_type,\n business_id,\n secret_level_id,\n is_valid,\n is_dim,\n } = this.state\n\n let isValidatePass =\n typeof standard_type === 'number' &&\n typeof topic === 'number' &&\n !!field_name &&\n !!field_name_ch &&\n !!field_define &&\n !!owner\n\n if (!isValidatePass) {\n\n // 手动触发必填项的检查\n this.setState({\n sholdCheckValidate: true\n })\n return\n }\n\n let id = this.props.record.id || 0\n\n // ajax\n storeNewField({\n field_name,\n field_name_ch,\n field_define,\n field_range,\n field_type,\n field_format,\n topic,\n owner,\n label,\n business_id,\n standard_type,\n id,\n is_sensitive: secret_level_id,\n enable: is_valid,\n is_dim\n })\n .then(res => {\n if (res && res.data && res.data.code === 0) {\n let msg = id === 0 ? '新建成功' : '编辑成功'\n SdwMessage.success(msg)\n\n // 通知父级重新拉数据\n if (typeof this.props.handleRefresh === 'function') {\n this.props.handleRefresh()\n }\n } else {\n SdwMessage.error(res.data.msg);\n }\n })\n\n // 告诉父级点击了确定按钮\n this.props.onSureClick()\n }\n\n render () {\n let {\n standard_type,\n topic,\n business_id,\n field_name,\n field_name_ch,\n field_define,\n label,\n field_format,\n field_type,\n owner,\n field_range,\n secret_level_id,\n is_valid,\n is_dim,\n sholdCheckValidate,\n businessData,\n } = this.state\n\n let typeData = this.props.standardOption.map(i => {\n return {\n id: i.id,\n text: i.standard_type\n }\n })\n let topicData = this.props.topicOption.map(i => {\n return {\n id: i.id,\n text: i.topic_name\n }\n })\n\n return (\n \n \n
\n
\n 标准类型\n this.validateFun(value, '类型')}\n sholdCheckValidate={sholdCheckValidate}\n onChange={val => this.setState({standard_type: val})}\n />\n
\n
\n 字段英文名\n this.validateFun(value, '英文名')}\n sholdCheckValidate={sholdCheckValidate}\n onChange={val => this.setState({field_name: val})}\n />\n
\n
\n 字段中文名\n this.validateFun(value, '中文名')}\n sholdCheckValidate={sholdCheckValidate}\n onChange={val => this.setState({field_name_ch: val})}\n />\n
\n
\n 定义\n this.validateFun(value, '定义')}\n sholdCheckValidate={sholdCheckValidate}\n onChange={val => this.setState({field_define: val})}\n />\n
\n
\n 主题\n this.validateFun(value, '主题')}\n sholdCheckValidate={sholdCheckValidate}\n onChange={val => this.setState({topic: val})}\n />\n
\n
\n 业务\n this.setState({business_id: val})}\n />\n
\n
\n 标签\n this.setState({label: val})}\n />\n
\n
\n 格式\n this.setState({field_format: val})}\n />\n
\n
\n 数据类型\n this.setState({field_type: val})}\n />\n
\n
\n 负责人\n this.validateFun(value, '负责人')}\n sholdCheckValidate={sholdCheckValidate}\n onChange={val => this.setState({owner: val})}\n />\n
\n
\n 值约束\n this.setState({field_range: val})}\n />\n
\n
\n 敏感级别\n this.setState({secret_level_id: val})}\n />\n
\n
\n 有效性\n this.setState({is_valid: val})}\n />\n
\n
\n 是否作为维度\n this.setState({is_dim: +val})}\n />\n
\n
启用后,该标准对应的字段可作为指标加工的维度
\n
\n
\n \n )\n }\n}\n\nexport default DataStandardWin\n","import React, { PureComponent } from 'react'\nimport {connect} from 'react-redux'\nimport {withRouter} from 'react-router-dom'\nimport _ from 'lodash'\nimport { Button } from 'element-react'\nimport { getItermSelects, searchFields, searchFieldsForAll, getFieldById, getBusinessStatisticByTopic } from '@services/dataStandars'\nimport { TABLE_EXTRA_MAP_TEXT } from '../common'\nimport SdwTable from '@common/Table'\nimport SdwPagenation from '@common/Pagenation'\nimport SdwSelect from '@common/Select'\nimport SdwInput from '@common/Input'\nimport SdwBreadCrumbs from '@common/BreadCrumbs'\nimport EditDataStandardWin from '../components/EditDataStandardWin'\nimport { hasPriv } from '@components/FrontendAuth/AuthMap'\n\nimport 'element-theme-default'\nimport './index.css'\n\nclass DataStandard extends PureComponent {\n constructor(props) {\n super(props);\n\n this.state = {\n curTitle: '',\n curRecord: {},\n visible: false,\n curPage: this.props.pageInfo || 0,\n curLimit: 10,\n tableData: {},\n subjectMap: {}, // 主题topic对应的map\n standardOption: [],\n topicOption: [], // 全部主题域\n businessOption: [], // 全部业务\n businessList: [], // 已选主题域对应的业务\n standardValue: '',\n subjectValue: '',\n businessValue: '',\n searchValue: '',\n enableValue: 1,\n hideSearchField: true,\n searchFieldsArr: [], // 用于模糊搜索的\n }\n }\n\n componentDidMount () {\n this.onGetItermSelects()\n this.onSearchFieldsForAll()\n\n // 路由跳转携带参数进行过滤\n let query = this.props.location.state || {}\n if (query.typeID) {\n this.setState({\n standardValue: query.typeID\n })\n }\n if (query.topicID) {\n this.setState({\n subjectValue: query.topicID\n })\n }\n\n if (!query.typeID && !query.topicID) {\n this.onSearchFields()\n }\n }\n\n onSearchFieldsForAll = () => {\n searchFieldsForAll().then(res => {\n if (res && res.data && res.data.code === 0) {\n let list = _.isArray(res.data.data) ? res.data.data : []\n this.setState({\n searchFieldsArr: list\n })\n }\n })\n }\n\n componentDidUpdate (prevProps, prevState, snapshot) {\n if (\n prevState.standardValue !== this.state.standardValue ||\n prevState.subjectValue !== this.state.subjectValue ||\n prevState.businessValue !== this.state.businessValue ||\n prevState.enableValue !== this.state.enableValue\n ) {\n if (prevState.subjectValue !== this.state.subjectValue) {\n this.onGetBusinessByTopic()\n }\n this.onSearchFields()\n }\n }\n\n getColumns = () => {\n let self = this\n return [\n {\n title: \"ID\",\n dataIndex: \"id\",\n width: 80,\n },\n {\n title: \"中文名称\",\n dataIndex: \"field_name_ch\",\n width: 100,\n },\n {\n title: \"英文名称\",\n dataIndex: \"field_name\",\n width: 150,\n },\n {\n title: \"类型\",\n dataIndex: \"standard_type\",\n width: 120,\n render: (data, item) => {\n return (\n \n { TABLE_EXTRA_MAP_TEXT[item.standard_type] || '-' }\n \n )\n }\n },\n {\n title: \"主题\",\n dataIndex: \"topic\",\n width: 120,\n render: (data, item) => {\n return (\n \n { this.state.subjectMap[item.topic] || '-' }\n \n )\n }\n },\n {\n title: \"描述\",\n dataIndex: \"field_define\",\n showTip: true\n },\n {\n title: \"修改时间\",\n dataIndex: \"modify_time\",\n width: 180,\n },\n {\n title: \"操作\",\n width: 120,\n render: function (data, record) {\n return (\n \n {\n hasPriv('getFieldById') &&\n self.jumpToDetail(data) }\n style={{\"fontSize\": \"14px\"}}\n >详情\n }\n self.addOrEditStandard({\n title: '编辑数据标准',\n ...data,\n }) }\n style={{\"fontSize\": \"14px\"}}\n >编辑\n \n )\n }\n }\n ]\n }\n\n jumpToDetail = record => {\n this.props.history.push({\n pathname: '/admin/dataMarket/standardinfo',\n state: {\n id: record.id\n }\n })\n }\n\n onGetItermSelects = () => {\n getItermSelects()\n .then(res => {\n if (res && res.data && _.isEqual(res.data.code, 0)) {\n let dataObj = res.data.data || {}\n if (Array.isArray(dataObj.standard_type) && dataObj.standard_type.length) {\n this.setState({\n standardOption: dataObj.standard_type\n })\n }\n if (Array.isArray(dataObj.topic) && dataObj.topic.length) {\n let subMap = {}\n dataObj.topic.forEach(item => {\n subMap[item.id] = item.topic_name\n });\n this.setState({\n topicOption: dataObj.topic,\n subjectMap: subMap\n })\n }\n if (Array.isArray(dataObj.business) && dataObj.business.length) {\n this.setState({\n businessOption: dataObj.business\n })\n }\n }\n })\n }\n\n // 根据主题域ID请求对应的业务\n onGetBusinessByTopic = () => {\n let { subjectValue } = this.state\n getBusinessStatisticByTopic({id: subjectValue}).then(res => {\n if (res && res.data && res.data.code === 0) {\n let topicArr = res.data.data && res.data.data.list.map(i => {\n return {\n id: i.business_id,\n text: i.business_name\n }\n }) || []\n this.setState({\n businessList: topicArr\n })\n }\n })\n }\n\n onSearchFields = (params = {}) => {\n let {\n curPage,\n curLimit,\n standardValue,\n subjectValue,\n businessValue,\n searchValue,\n enableValue,\n } = this.state\n\n let paramsData = {\n page: params.page || curPage,\n limit: params.limit || curLimit,\n search: JSON.stringify({\n ...(params.standard_type || standardValue) ? {\n standard_type: {value: (params.standard_type || standardValue), operator: '='}\n } : {},\n ...(params.topic || subjectValue) ? {\n topic: {value: (params.topic || subjectValue), operator: '='}\n } : {},\n ...(params.business_id || businessValue) ? {\n business_id: {value: (params.business_id || businessValue), operator: '='}\n } : {},\n ...(params.field_name || searchValue) ? {\n field_name: {value: (params.field_name || searchValue), operator: 'like', type: 'both'}\n } : {},\n ...(params.enable || typeof enableValue === 'number') ? {\n enable: {value: (params.enable || enableValue), operator: '='}\n } : {},\n })\n }\n\n searchFields(paramsData)\n .then(res => {\n if (res && res.data && _.isEqual(res.data.code, 0)) {\n this.setState({\n tableData: res.data.data || {}\n })\n }\n })\n }\n\n addOrEditStandard = (record = {}) => {\n if(record.title == \"编辑数据标准\"){\n getFieldById({id: record.id}).then(res => {\n if(res.data.code === 0) {\n this.setState({\n visible: true,\n curTitle: record.title,\n curRecord: res.data.data,\n })\n }\n })\n }else{\n this.setState({\n visible: true,\n curTitle: record.title,\n curRecord: record,\n })\n }\n }\n\n changeSearch = (type, value) => {\n this.setState({\n curPage: 1,\n [type]:value\n })\n }\n\n render() {\n\n let {\n tableData,\n standardValue,\n standardOption,\n subjectValue,\n topicOption,\n businessValue,\n businessOption,\n businessList, // 主题域对应的业务\n searchValue,\n visible,\n curTitle,\n curRecord,\n enableValue,\n hideSearchField,\n } = this.state\n\n let searchFieldsArr = this.state.searchFieldsArr.map(i => {\n return {\n id: i.field_name_ch+'',\n name: \"【\" + i.id + \"】\" + i.field_name_ch + \"(\" + i.field_name + \")\"\n }\n })\n let filterSearchFieldsArr = searchFieldsArr.filter(i => i.name.indexOf(searchValue) !== -1)\n\n return (\n <>\n \n\n
\n
\n
\n
\n {\n return {\n id: el.id,\n text: el.standard_type\n }\n })}\n onChange={val => this.changeSearch(\"standardValue\", val)}\n />\n
\n
\n {\n return {\n id: el.id,\n text: el.topic_name\n }\n })}\n onChange={val => this.changeSearch(\"subjectValue\", val)}\n />\n
\n
\n {\n return {\n id: el.id,\n text: el.business_name\n }\n })}\n onChange={val => this.changeSearch(\"businessValue\", val)}\n />\n
\n
\n this.changeSearch(\"enableValue\", val)}\n />\n
\n
\n ({})} // enter或触发onblur事件,所以这里传空func\n onFocus={() => this.setState({\n curPage: 1,\n hideSearchField: false\n })}\n onBlur={val => {\n this.onSearchFields({\n field_name: val\n })\n setTimeout(() => {\n this.setState({\n hideSearchField: true\n })\n }, 500);\n }}\n onChange={val => this.setState({searchValue: val})}\n />\n {\n _.isArray(filterSearchFieldsArr) &&\n !!filterSearchFieldsArr.length &&\n !hideSearchField &&\n
\n {\n filterSearchFieldsArr.map(item => (\n {\n this.onSearchFields({\n field_name: item.id\n })\n this.setState({\n hideSearchField: true,\n searchValue: item.id\n })\n }}>{item.name}
\n ))\n }\n
\n }\n
\n
\n this.addOrEditStandard({ title: '新增数据标准' }) }\n >新增\n
\n
\n
\n
\n \n {\n _.isArray(tableData.items) && tableData.items.length &&\n
\n
{ tableData.statistic }
\n {\n this.setState({\n curPage: page\n })\n this.onSearchFields({page})\n } }\n pageCountChange={ limit => {\n this.setState({\n curLimit: limit\n })\n this.onSearchFields({limit})\n } }\n />\n
\n }\n
\n \n\n this.setState({ visible: false })}\n onCancelClick={() => this.setState({ visible: false })}\n onSureClick={() => {\n this.setState({ visible: false })\n this.onSearchFields()\n }}\n />\n \n )\n }\n}\n\nconst mapState = state => ({\n pageInfo: state.page.pageInfo\n})\n\nexport default withRouter(connect(mapState)(DataStandard))\n","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","import React, { PureComponent } from 'react'\nimport { Dialog, Form, Input } from 'element-react'\nimport SdwSwitch from '@common/Switch'\nimport SdwMessage from '@common/Message'\nimport { getManageTopics, storeTopic, getTopicInfoById } from '@services/management'\nimport editImg from '../../../img/icon_16_bj@2x.png'\nimport addNewImg from '../../../img/icon_56_xz@2x.png'\nimport addNewHoverImg from '../../../img/icon_56_xz_hover@2x.png'\nimport SdwBreadCrumbs from '@common/BreadCrumbs'\nimport SdwLoading from '@common/Loadding'\nimport { hasPriv } from '@components/FrontendAuth/AuthMap'\n\nimport 'element-theme-default'\nimport './index.css'\n\nconst DEFAULT_FORM = {\n topic_name: '',\n introduct: '',\n system: '',\n development_heads: '',\n product_heads: '',\n enable: true,\n // icon: '',\n}\n\nclass DomainManagement extends PureComponent {\n formRef = React.createRef()\n\n state = {\n showData: false,\n listData: [],\n form: DEFAULT_FORM,\n dialogTitle: '',\n dialogVisible: false,\n addImgSrc: addNewImg,\n rules: {\n topic_name: [\n { required: true, message: '主题域名称不能为空', trigger: 'blur' }\n ],\n introduct: [\n { required: true, message: '主题域简介不能为空', trigger: 'blur' }\n ],\n system: [\n { required: true, message: '相关系统不能为空', trigger: 'blur' }\n ],\n development_heads: [\n { required: true, message: '开发负责人不能为空', trigger: 'blur' }\n ],\n product_heads: [\n { required: true, message: '产品负责人不能为空', trigger: 'blur' }\n ],\n icon: [\n { required: true, message: '主题图标不能为空', trigger: 'blur' }\n ],\n }\n }\n\n componentDidMount () {\n this.initData()\n }\n\n initData = () => {\n getManageTopics().then(res => {\n this.setState({\n showData: true\n })\n let jsonData = res && res.data || {}\n if (jsonData && jsonData.code === 0 && Array.isArray(jsonData.data)) {\n this.setState({\n listData: jsonData.data\n })\n }\n })\n .catch(() => {\n this.setState({\n showData: true\n })\n })\n }\n\n editManagement = async record => {\n this.formRef.current.resetFields()\n let res = await getTopicInfoById({ id: record.topic_id })\n let formData = {}\n if (res && res.data && res.data.code === 0) {\n formData = res.data.data || {}\n }\n this.setState({\n form: Object.assign({}, formData, {\n enable: Boolean(formData.enable)\n }),\n dialogTitle: '编辑主题域',\n dialogVisible: true,\n })\n }\n\n goTopicInfo = item => {\n\n // 注:使用 this.props.location.state 接受query参数\n this.props.history.push({\n pathname: '/admin/dataMarket/domaindetail',\n state: {\n topicid: item.topic_id,\n seclevel: 'management'\n }\n })\n }\n\n handleLink = (item, id) => {\n let pathName = ''\n\n switch (id) {\n case 1:\n pathName = '/admin/dataMarket/standard'\n break;\n\n case 2:\n pathName = '/admin/factory/atom'\n break;\n\n case 3:\n pathName = '/admin/factory/derived'\n break;\n\n default:\n break;\n }\n\n if (!pathName) return\n this.props.history.push({\n pathname: pathName,\n state: {\n typeID: id,\n topicID: item.topic_id\n }\n })\n }\n\n onMouseenter = () => {\n this.setState({\n addImgSrc: addNewHoverImg\n })\n }\n\n onMouseleave = () => {\n this.setState({\n addImgSrc: addNewImg\n })\n }\n\n handleCancel = () => {\n this.setState({\n dialogVisible: false,\n form: Object.assign({}, this.state.form, { enable: true }),\n })\n }\n\n addSubjectDomain = () => {\n this.formRef.current.resetFields()\n this.setState({\n form: DEFAULT_FORM,\n dialogTitle: '新增主题域',\n dialogVisible: true,\n })\n }\n\n handleSubmit = () => {\n this.formRef.current.validate((valid) => {\n if (valid) {\n let { form } = this.state\n storeTopic({\n ...form.id ? {\n id: form.id\n } : {},\n topic_name: form.topic_name,\n introduct: form.introduct,\n system: form.system,\n development_heads: form.development_heads,\n product_heads: form.product_heads,\n enable: +form.enable\n })\n .then( res => {\n if(res && res.data.code === 0) {\n let msg = form.id ? '编辑成功' : '创建成功'\n SdwMessage.success(msg)\n this.setState({\n dialogVisible: false\n })\n this.initData()\n } else {\n SdwMessage.error(res && res.data && res.data.msg)\n }\n })\n } else {\n SdwMessage.error('表单未校验通过!')\n return false\n }\n })\n }\n\n render () {\n let {\n listData,\n showData,\n addImgSrc,\n dialogTitle,\n dialogVisible,\n rules,\n form,\n } = this.state\n\n return (\n \n \n\n
\n {\n i.enable)}\n handleLink={this.handleLink}\n goTopicInfo={this.goTopicInfo}\n editManagement={this.editManagement} />\n }\n {\n showData &&\n \n
\n
\n \"\"\n
\n
\n 添加主题域\n
\n
\n
\n }\n \n {\n !!listData.filter(i => !i.enable).length &&\n
无效主题域
\n }\n
\n {\n !i.enable)}\n handleLink={this.handleLink}\n goTopicInfo={this.goTopicInfo}\n editManagement={this.editManagement} />\n }\n
\n\n \n \n \n \n this.setState({\n form: { ...form, topic_name: value }\n }) }>\n \n\n \n this.setState({\n form: { ...form, introduct: value }\n }) }>\n \n\n \n this.setState({\n form: { ...form, system: value }\n }) }>\n \n\n \n this.setState({\n form: { ...form, development_heads: value }\n }) }>\n \n\n \n this.setState({\n form: { ...form, product_heads: value }\n }) }>\n \n\n
\n \n this.setState({\n form: { ...form, enable: value }\n })}\n />\n
启用后,配置标准时可选择该主题域
\n
\n
\n \n
\n \n
\n 取 消\n 确 定\n
\n
\n \n
\n )\n }\n}\n\nexport default DomainManagement\n\nfunction DomainItem (props) {\n return (\n props.data.map(item => (\n
\n
\n
\n
\n {\n if (!hasPriv('getTopicInfoById')) return\n props.goTopicInfo(item)\n } }\n >\n {item.topic_name}\n \n props.editManagement(item) }\n />\n
\n\n {/* icon 暂时隐藏\n
\n \n
*/}\n
\n
\n {\n item.data.map((item1, index1) => (\n {\n if (!hasPriv('searchFields')) return\n props.handleLink(item, item1.standard_type)\n } }\n >\n
\n {item1.num}\n
\n
{item1.name}
\n
\n ))\n }\n
\n
\n
\n
\n
\n
\n {item.introduct}\n
\n
\n
\n
\n \n ))\n )\n}\n","import { request } from '../utils/request'\n\nexport function getAllTopics (params) {\n return request({ url: '/statistics/dataMarket/getAllTopics', method: 'get', params: params })\n}\n\nexport function getBusinessStatisticByTopic (params) {\n return request({ url: '/statistics/dataMarket/getBusinessStatisticByTopic', method: 'get', params: params })\n}\n\nexport function getTopicInfoById (params) {\n return request({ url: '/statistics/dataMarket/getTopicInfoById', method: 'get', params: params })\n}\n\nexport function searchFields (params) {\n return request({ url: '/statistics/dataMarket/searchFields', method: 'get', params: params })\n}\n\nexport function storeNewBusiness (params) {\n return request({ url: '/statistics/dataMarket/storeNewBusiness', method: 'post', data: params })\n}\n","import React, { PureComponent } from 'react'\nimport { Button, Dialog, Form, Input } from 'element-react'\nimport SdwMessage from '../../../common/Message'\nimport { storeNewBusiness } from '../../../services/subjectDomainDetail'\nimport { EXTRA_MAP, EXTRA_MAP_TEXT } from './../common'\nimport SdwTable from '../../../common/Table'\nimport { hasPriv } from '@components/FrontendAuth/AuthMap'\n\nimport 'element-theme-default'\nimport './style/standardDistribution.css'\n\nclass StandardDistribution extends PureComponent {\n formRef = React.createRef()\n \n state = {\n dialogVisible: false,\n dialogTitle: '',\n form: {},\n rules: {\n name: [\n { required: true, message: '请输入分类名称', trigger: 'blur' }\n ]\n },\n curStandardItem: {},\n }\n\n getColumns = () => {\n let self = this\n return [\n {\n title: \"分类\",\n dataIndex: \"name\"\n },\n // {\n // title: \"数据标准\",\n // dataIndex: \"total\"\n // },\n {\n title: EXTRA_MAP_TEXT[EXTRA_MAP.primordial],\n dataIndex: \"primordial\"\n },\n {\n title: EXTRA_MAP_TEXT[EXTRA_MAP.atom],\n dataIndex: \"atom\"\n },\n {\n title: EXTRA_MAP_TEXT[EXTRA_MAP.derive],\n dataIndex: \"derive\"\n },\n {\n title: \"操作\",\n width: 80,\n render: function (data, record) {\n return (\n (data.business_id === 0 || !hasPriv('storeNewBusiness')) ? \n - : \n \n \n \n )\n }\n }\n ]\n }\n\n handleAdd = () => {\n this.formRef.current.resetFields()\n this.setState({\n dialogTitle: '新增分类',\n dialogVisible: true,\n form: {},\n curStandardItem: {},\n })\n }\n\n handleEdit = item => {\n this.formRef.current.resetFields()\n this.setState({\n dialogTitle: '编辑分类',\n dialogVisible: true,\n form: {\n name: item.name\n },\n curStandardItem: item,\n })\n }\n\n onSubmit = () => {\n this.formRef.current.validate((valid) => {\n if (valid) {\n let { curStandardItem, form } = this.state\n let { topic_id, topic_name } = this.props\n storeNewBusiness({\n ...curStandardItem.business_id ? {\n id: curStandardItem.business_id\n } : {},\n business_name: form.name,\n topic_id: topic_id,\n topic_name: topic_name,\n })\n .then(res => {\n if(res && res.data.code === 0) {\n let msg = curStandardItem.business_id ? '编辑成功' : '创建成功'\n SdwMessage.success(msg)\n this.setState({\n dialogVisible: false\n })\n this.props.onBusinessStatisticByTopic()\n } else {\n SdwMessage.error(res && res.data && res.data.msg)\n }\n })\n } else {\n SdwMessage.error('表单未校验通过!')\n return false\n }\n })\n }\n\n render () {\n let tableData = this.props.data.filter(i => i.type !== 'all')\n return (\n
\n
\n 数据标准分布\n {\n hasPriv('storeNewBusiness') &&\n 添加分类\n }\n
\n\n
\n \n
\n\n this.setState({ dialogVisible: false }) }\n lockScroll={ false }\n >\n \n
\n \n \n \n \n this.setState({\n form: { ...this.state.form, name: value }\n }) } />\n \n
\n
\n \n \n \n \n \n
\n )\n }\n}\n\nexport default StandardDistribution\n","import React, { useState, useEffect } from 'react'\nimport { Dropdown, Radio, Collapse, Button, Layout, Pagination } from 'element-react'\nimport { searchFields } from '../../../services/subjectDomainDetail'\nimport { EXTRA_MAP, EXTRA_MAP_TEXT } from './../common'\nimport SdwEmpty from '../../../common/Empty'\nimport { hasPriv } from '@components/FrontendAuth/AuthMap'\n\nimport 'element-theme-default'\nimport './style/topicAllClass.css'\n\nexport default props => {\n\n const [dropdownMenu, setDropdownMenu] = useState([{\n id: '',\n name: '全部'\n }])\n \n const [curTitle, setCurTitle] = useState('全部')\n\n const [radioVal, setRadioVal] = useState('全部(0)')\n\n const [allData, setAllData] = useState({})\n\n const [fieldsData, setFieldsData] = useState({})\n\n const [paginationData, setPaginationData] = useState({})\n\n const [curStandardType, setCurStandardType] = useState('')\n\n const [currentChange, setCurrentChange] = useState(1)\n\n useEffect(() => {\n let allRecord = props.data.filter(i => i.type === 'all')[0] || {\n total: 0,\n primordial: 0,\n atom: 0,\n derive: 0,\n }\n let dropdownMenu = props.data.length ? props.data : [{\n id: '',\n name: '全部'\n }]\n\n setAllData(allRecord)\n setRadioVal(`全部(${allRecord.total})`)\n setDropdownMenu(dropdownMenu)\n onSearchFields()\n }, [props.data])\n\n useEffect(() => {\n onSearchFields()\n }, [curStandardType])\n \n useEffect(() => {\n onSearchFields()\n }, [currentChange])\n \n useEffect(() => {\n onSearchFields()\n }, [props.curTopicID])\n \n function handleCurStandardType (radioVal = '') {\n let standardType = ''\n if (new RegExp('原生字段').test(radioVal)) {\n standardType = 1\n } else if (new RegExp('原子指标').test(radioVal)) {\n standardType = 2\n } else if (new RegExp('派生指标').test(radioVal)) {\n standardType = 3\n }\n\n setCurStandardType(standardType)\n }\n\n function onSearchFields () {\n if (!props.curTopicID) return // id都没有,无效查询\n searchFields({\n limit: 10,\n page: currentChange,\n search: JSON.stringify({\n topic: {value: props.curTopicID, operator: '='},\n ...curStandardType ? {\n standard_type: {value: curStandardType, operator: '='}\n } : {}\n })\n })\n .then(res => {\n if (res && res.data && res.data.code === 0) {\n let jsonData = res.data.data || {}\n let fieldsData = jsonData.items || []\n setFieldsData(fieldsData)\n setPaginationData({\n pages: jsonData.pages,\n total: jsonData.total,\n currentPage: jsonData.current_page,\n })\n }\n })\n }\n\n return (\n
\n
\n {\n setAllData(command)\n setRadioVal(`全部(${command.total})`)\n setCurTitle(command.name)\n }}\n menu={(\n \n {\n dropdownMenu.map(menu => (\n {menu.name || ''}\n ))\n }\n \n )}\n >\n \n {\n curTitle\n }\n \n \n
\n \n
\n {\n setRadioVal(value)\n handleCurStandardType(value)\n }}>\n \n \n \n \n \n
\n\n
\n {\n !!(fieldsData.length) ?\n \n { \n fieldsData.map((field, index) => (\n \n \n {\n hasPriv('getFieldById') &&\n
\n \n
\n }\n
\n ))\n }\n
\n setCurrentChange(page)}\n />\n
\n
:\n \n }\n
\n
\n )\n}\n\nfunction FieldItem (props) {\n return (\n <>\n \n \n 定义\n { props.field.field_define || '-' }\n \n \n \n \n 字段类型\n { EXTRA_MAP_TEXT[props.field.standard_type] || '-' }\n \n \n 所属业务\n { props.field.business_name || '-' }\n \n \n \n \n 数据类型\n { props.field.field_type || '-' }\n \n \n 数据格式\n { props.field.field_format || '-' }\n \n \n \n \n 创建时间\n { props.field.create_time || '-' }\n \n \n 接入时间\n { props.field.modify_time || '-' }\n \n \n \n )\n}\n","import React, { useEffect, useState } from 'react'\nimport { Card, Layout } from 'element-react'\nimport { getTopicInfoById } from '../../../services/subjectDomainDetail'\n\nconst KEY_MAP = {\n createTime: 'create_time',\n introduct: 'introduct',\n system: 'system',\n businesses: 'businesses',\n developmentHeads: 'development_heads',\n productHeads: 'product_heads',\n}\n\nconst KEY_TEXT_MAP = {\n [KEY_MAP.createTime]: '创建时间',\n [KEY_MAP.introduct]: '业务简介',\n [KEY_MAP.system]: '相关系统',\n [KEY_MAP.businesses]: '相关业务',\n [KEY_MAP.developmentHeads]: '开发负责人',\n [KEY_MAP.productHeads]: '产品负责人',\n}\n\nexport default props => {\n\n const [record, setRecord] = useState({})\n\n useEffect(() => {\n getTopicInfoById({\n id: props.id\n })\n .then(res => {\n if (res && res.data && res.data.code === 0) {\n setRecord(res.data.data || {})\n }\n })\n }, [props.id])\n\n return (\n \n 基本信息\n \n }\n >\n
\n {\n Object.values(KEY_MAP).map(key => (\n
\n \n \n
{ KEY_TEXT_MAP[key] }
\n
\n \n
{ record[key] || '-' }
\n
\n
\n
\n ))\n }\n
\n \n )\n}\n","import React, { PureComponent } from 'react'\nimport { Dropdown, Layout } from 'element-react'\nimport { getAllTopics, getBusinessStatisticByTopic } from '../../../services/subjectDomainDetail'\n\nimport StandardDistribution from '../components/StandardDistribution'\nimport TopicAllClass from '../components/TopicAllClass'\nimport BaseInfo from '../components/BaseInfo'\nimport SdwBreadCrumbs from '@common/BreadCrumbs'\nimport SdwLoading from '@common/Loadding'\n\nimport 'element-theme-default'\nimport './index.css'\n\nconst DEFAULT_DATA = {\n topicid: '',\n seclevel: 'management', // 默认从 主题域管理 跳转\n}\n\nconst EXTRA_MAP = {\n primordial: 1,\n atom: 2,\n derive: 3\n}\n\nclass SubjectDomainDetail extends PureComponent {\n state = {\n curTopicID: '', // 当前详情页的id\n curSecLevel: '', // 当前二级目录(数据字典 / 主题域管理)\n showData: false,\n dropdownMenu: [],\n curTitle: '',\n topicData: [],\n curSecLevelData: {\n text: '主题域管理',\n path: '/admin/dataMarket/management'\n }\n }\n\n componentDidMount () {\n let query = this.props.location.state || DEFAULT_DATA\n\n // 从数据字典跳转过来的\n if (query.seclevel === 'dictionary') {\n this.setState({\n curSecLevelData: {\n text: '数据字典',\n path: '/admin/dataMarket/dictionary'\n }\n })\n }\n \n this.setState({\n curTopicID: query.topicid,\n curSecLevel: query.seclevel,\n })\n\n this.initData()\n }\n\n componentDidUpdate (prevProps, prevState) {\n if (prevState.curTopicID !== this.state.curTopicID) {\n this.onBusinessStatisticByTopic()\n }\n }\n\n onBusinessStatisticByTopic = () => {\n getBusinessStatisticByTopic({\n id: this.state.curTopicID\n })\n .then(res => {\n if (res && res.data && res.data.code === 0) {\n this.formatTopicData(res.data.data || {})\n }\n })\n }\n\n formatTopicData = resData => {\n let list = resData.list || []\n let formatData = list.map(item => {\n let extraList = item.data || []\n let extraMap = {}\n extraList.forEach(i => {\n extraMap[i.standard_type] = i.value\n })\n\n return {\n name: item.business_name,\n total: item.total || 0,\n primordial: extraMap[EXTRA_MAP.primordial] || 0,\n atom: extraMap[EXTRA_MAP.atom] || 0,\n derive: extraMap[EXTRA_MAP.derive] || 0,\n business_id: item.business_id\n }\n })\n \n let total = resData.total || []\n let totalFormat = {\n type: 'all',\n name: '全部',\n business_id: null,\n total: 0,\n primordial: 0,\n atom: 0,\n derive: 0,\n }\n total.forEach(j => {\n switch (j.standard_type) {\n case EXTRA_MAP.primordial:\n totalFormat.primordial = j.total\n break;\n \n case EXTRA_MAP.atom:\n totalFormat.atom = j.total\n break;\n \n case EXTRA_MAP.derive:\n totalFormat.derive = j.total\n break;\n \n default:\n totalFormat.total = j.total\n break;\n }\n })\n\n this.setState({\n topicData: [\n totalFormat,\n ...formatData,\n ]\n })\n }\n\n initData = () => {\n getAllTopics().then(res => {\n this.setState({\n showData: true\n })\n if (res && res.data && res.data.code === 0) {\n let resData = res.data.data || []\n let title = ''\n if (resData.length) {\n let record = resData.filter(i => i.id === this.state.curTopicID)[0] || []\n title = record && record.topic_name || ''\n }\n this.setState({\n curTitle: title,\n dropdownMenu: res.data.data || []\n })\n }\n })\n .catch(() => {\n this.setState({\n showData: true\n })\n })\n }\n\n changeTitle = command => {\n this.setState({\n curTopicID: command.id,\n curTitle: command.topic_name,\n })\n }\n\n jumpToDetail = id => {\n this.props.history.push({\n pathname: '/admin/dataMarket/standardinfo',\n state: { id }\n })\n }\n\n render () {\n let { \n showData,\n dropdownMenu,\n curTopicID,\n curTitle,\n topicData,\n curSecLevelData,\n } = this.state\n\n return (\n \n \n\n
\n this.changeTitle(command)}\n menu={(\n \n {\n dropdownMenu.map(menu => (\n {menu.topic_name || ''}\n ))\n }\n \n )}\n >\n \n {\n curTitle\n }\n \n \n
\n\n \n \n \n \n \n \n \n \n \n \n\n
\n )\n }\n}\n\nexport default SubjectDomainDetail\n","import React, { PureComponent } from 'react'\nimport _ from 'lodash'\nimport { Layout, Tabs } from 'element-react'\nimport { getFieldById, getFieldUpdateHistory, getItermSelects, getFieldRelativeTableInfo } from '@services/dataStandars'\nimport { TABLE_EXTRA_MAP_TEXT } from '../common'\nimport SdwTable from '@common/Table'\nimport SdwPagenation from '@common/Pagenation'\nimport SdwBreadCrumbs from '@common/BreadCrumbs'\nimport SdwPopover from '@common/Popover'\nimport EditDataStandardWin from '../components/EditDataStandardWin'\nimport SdwEmpty from '@common/Empty'\n\nimport editImg from '../../../img/icon_16_bj@2x.png'\n\nimport 'element-theme-default'\nimport './index.css'\n\nconst LABEL_MAP = { \n field_name: '字段名称', \n field_name_ch: '字段中文名', \n field_type: '字段类型', \n field_define: '字段定义', \n unit: '单位', \n topic_name: '所属主题域', \n business_name: '所属业务', \n label: '标签', \n field_format: '字段格式', \n field_range: '值域', \n owner: '负责人', \n enable: '标准是否有效' \n}\n\nclass DataStandardDetail extends PureComponent {\n\n state = {\n baseInfo: {},\n curID: '',\n historyData: [],\n visible: false,\n standardOption: [],\n topicOption: [],\n fieldRelativeTableInfo: {},\n fieldUpdateHistoryDate: {},\n curHistoryPage: 1,\n curHistoryLimit: 10,\n curRelativePage: 1,\n curRelativeLimit: 10,\n }\n\n getcolumns = () => {\n let self = this\n return [\n {\n title: \"数据库\",\n dataIndex: \"database_name\"\n },\n {\n title: \"表英文名\",\n dataIndex: \"table_name\",\n },\n {\n title: \"表中文名\",\n dataIndex: \"data_set_chinese\",\n },\n {\n title: \"数据层级\",\n dataIndex: \"warehouse_level\",\n },\n {\n title: \"关联字段数\",\n // dataIndex: \"field_num\",\n render: (data, record) => {\n return (\n \n \n {data.field_num}\n \n \n )\n },\n },\n { \n title: \"操作\",\n width: 80,\n render: (data, record) => {\n return (\n
{ self.onClickToTableInfo(data, self) } }>详情
\n )\n },\n }\n ]\n }\n\n handleMouseEnter = (data) => {\n let str = data && data.fields != null && data.fields.map(i => `${i.field_name}(${i.field_name_ch || '-'})`).join(',')\n return str\n }\n\n // 跳转到表信息详情页\n onClickToTableInfo = (data, e) => {\n let tableId = data.id\n if(tableId && tableId > 0) {\n let url = \"/html/metadata/tableDetail/\" + tableId\n window.open(url)\n }\n }\n \n getLogColumns = () => {\n return [\n {\n title: \"修改时间\",\n dataIndex: \"modify_time\"\n },\n {\n title: \"修改人\",\n dataIndex: \"modify_user\",\n },\n {\n title: \"修改字段\",\n dataIndex: \"label\",\n },\n {\n title: \"旧值\",\n dataIndex: \"old\",\n },\n {\n title: \"新值\",\n dataIndex: \"new\",\n }\n ]\n }\n\n componentDidMount() {\n\n let id = this.props.location.state && this.props.location.state.id || ''\n if (id) {\n this.initBaseData(id)\n this.getHistory(id)\n this.getFieldTableInfo(id)\n this.setState({\n curID: id\n })\n }\n\n this.onGetItermSelects()\n }\n\n componentDidUpdate (prevProps, prevState) {\n if (\n !_.isEqual(prevState.curHistoryPage, this.state.curHistoryPage) ||\n !_.isEqual(prevState.curHistoryLimit, this.state.curHistoryLimit)\n ) {\n this.getHistory(this.state.curID)\n }\n\n if (\n !_.isEqual(prevState.curRelativePage, this.state.curRelativePage) ||\n !_.isEqual(prevState.curRelativeLimit, this.state.curRelativeLimit)\n ) {\n this.getFieldTableInfo(this.state.curID)\n }\n }\n\n handleRefresh = () => {\n this.setState({\n curHistoryPage: 1,\n curRelativePage: 1\n }, () => {\n this.initBaseData(this.state.curID)\n this.getHistory(this.state.curID)\n this.getFieldTableInfo(this.state.curID)\n })\n }\n\n getFieldTableInfo = id => {\n let { curRelativePage, curRelativeLimit} = this.state\n getFieldRelativeTableInfo({\n id,\n page: curRelativePage,\n limit: curRelativeLimit,\n })\n .then(res => {\n if (res && res.data && res.data.code === 0) {\n this.setState({\n fieldRelativeTableInfo: res.data.data || {} // 暂时是数组形式,后面看接口是否去掉最外层的[]\n })\n }\n })\n }\n\n onGetItermSelects = () => {\n getItermSelects()\n .then(res => {\n if (res && res.data && res.data.code === 0) {\n let dataObj = res.data.data || {}\n if (Array.isArray(dataObj.standard_type) && dataObj.standard_type.length) {\n this.setState({\n standardOption: dataObj.standard_type\n })\n }\n if (Array.isArray(dataObj.topic) && dataObj.topic.length) {\n this.setState({\n topicOption: dataObj.topic\n })\n }\n }\n })\n }\n\n initBaseData = id => {\n getFieldById({ id }).then(res => {\n if (res && res.data && res.data.code === 0) {\n this.setState({\n baseInfo: res.data.data || {}\n })\n }\n })\n }\n\n getHistory = (id) => {\n if (!id) return\n\n let { curHistoryPage, curHistoryLimit } = this.state\n getFieldUpdateHistory({\n id,\n page: curHistoryPage,\n limit: curHistoryLimit\n })\n .then(res => {\n if (res && res.data && res.data.code === 0) {\n let record = res.data.data || {}\n\n this.setState({\n // 这里主要是取分页数据\n fieldUpdateHistoryDate: record\n })\n\n if (_.isArray(record.items) && record.items.length > 0) {\n let list = []\n for (let item of record.items) {\n for (let editItem in item) {\n if (editItem !== 'modify_time' && editItem !== 'modify_user' && editItem !== 'create_user') {\n let modify_user = ''\n if (typeof item.modify_user === 'object' && item.modify_user !== null) {\n modify_user = item.modify_user.new\n } else {\n modify_user = item.modify_user || ''\n }\n let label_cn = ''\n label_cn = LABEL_MAP[editItem]\n list.push({\n modify_time: item.modify_time.new || '-',\n modify_user: modify_user || '-',\n new: item[editItem].new || '-',\n old: item[editItem].old || '-',\n label: label_cn || '-'\n })\n }\n }\n }\n this.setState({\n historyData: list\n })\n }\n }\n })\n }\n\n render() {\n\n let { \n baseInfo, \n historyData,\n visible,\n standardOption,\n topicOption,\n fieldRelativeTableInfo,\n fieldUpdateHistoryDate,\n } = this.state\n\n return (\n <>\n \n\n
\n
\n
\n 基本信息\n this.setState({ visible: true })}\n >\n
\n
\n \n
\n 英文名{baseInfo.field_name || '-'}\n
\n
\n 中文名{baseInfo.field_name_ch || '-'}\n
\n
\n \n
\n 定义{baseInfo.field_define || '-'}\n
\n
\n \n
\n 标签{baseInfo.label || '-'}\n
\n
\n 类型{TABLE_EXTRA_MAP_TEXT[baseInfo.standard_type] || '-'}\n
\n
\n \n
\n 主题{baseInfo.topic_name || '-'}\n
\n
\n 业务{baseInfo.business_name || '-'}\n
\n
\n \n
\n 数据类型{baseInfo.field_type || '-'}\n
\n
\n 格式{baseInfo.field_format || '-'}\n
\n
\n \n
\n 负责人{baseInfo.owner || '-'}\n
\n
\n
\n
\n\n
\n {}}>\n \n
\n \n
\n this.setState({ curRelativePage: page })}\n pageCountChange={limit => this.setState({ curRelativeLimit: limit })}\n />\n
\n \n \n \n
\n
\n\n
\n
\n 修改日志\n
\n
\n \n
\n this.setState({ curHistoryPage: page })}\n pageCountChange={limit => this.setState({ curHistoryLimit: limit })}\n />\n
\n this.setState({ visible: false })}\n onCancelClick={() => this.setState({ visible: false })}\n onSureClick={() => {\n this.setState({ visible: false })\n }}\n />\n
\n \n )\n }\n}\n\nexport default DataStandardDetail\n","// 创建 or 编辑 表配置\n\nimport React from 'react'\nimport _ from 'lodash'\nimport { connect } from 'react-redux'\nimport SdwDrawer from '@common/Drawer'\nimport SdwInput from '@common/Input'\nimport SdwSelect from '@common/Select'\nimport SdwSwitch from '@common/Switch'\nimport SdwMulRadiobox from '@common/MulRadiobox'\nimport SdwMessage from '@common/Message/index'\nimport { getTablecfgById, getBusinessStatisticByTopic, updateTablecfg, storeTablecfg } from '@services/metaData'\nimport { LEVEL_TEXT_MAP } from './common'\nimport { validateFun, getFormDataParams } from '@utils/submit'\n\nimport './style/editMetadataWin.css'\n\nclass EditMetadataWin extends React.PureComponent {\n\n state ={\n curDbData: {\n enable: 0,\n pattern: '_no_pattern',\n warehouse_level: 'DIM'\n }, // 当前弹窗数据\n businessList: [],\n sholdCheckValidate: false\n }\n\n componentDidMount() {\n let { curData } = this.props\n let dbID = curData.id\n\n if (!!dbID) {\n this.initData(dbID)\n }\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevState.curDbData.topic !== this.state.curDbData.topic) {\n let { topic } = this.props.topicInfo\n let topicData = topic.filter(i => i.topic_name == this.state.curDbData.topic)[0] || {}\n let topicID = topicData.id\n\n // 根据topicID请求对应的 业务\n getBusinessStatisticByTopic({\n id: topicID\n })\n .then(res => {\n if (res && res.data && res.data.code === 0) {\n let record = res.data.data || {}\n let list = Array.isArray(record.list) ? record.list : []\n this.setState({ businessList: list })\n } else {\n SdwMessage.error('获取业务信息失败')\n }\n })\n }\n }\n\n initData = id => {\n getTablecfgById({id}).then(res => {\n if (res && res.data && res.data.code === 0) {\n let record = res.data.data || {}\n this.setState({ curDbData: record })\n } else {\n let msg = res.data.msg || '请求失败'\n SdwMessage.error(msg)\n }\n })\n .catch(msg => {\n SdwMessage.error('请求失败 ' + msg)\n })\n }\n\n updateCurDbData = (key, val) => {\n let obj = _.cloneDeep(this.state.curDbData)\n\n if (key === 'owner') {\n val = val.map(i => i.id).join(';')\n }\n obj[key] = val\n\n // 新建表\n if (key === 'add_type') {\n obj.data_set_type = val === 1 ? 'es' : ''\n obj.table_name = val === 1 ? '_doc' : ''\n obj.address = val === 1 ? '9.138.64.12:8081,9.138.70.60:9400,9.138.70.65:9400' : ''\n }\n\n this.setState({ curDbData: obj })\n }\n\n onSubmit = () => {\n let { curDbData } = this.state\n\n // 校验\n let validataList = ['data_set_type', 'database_name', 'table_name', 'warehouse_level',\n 'address', 'topic', 'business', 'owner', 'deadline', 'data_set_chinese']\n\n // 下发字段\n let paramsList = ['data_set_type', 'data_set_chinese', 'database_name', 'table_name', 'warehouse_level', 'pattern',\n 'address', 'topic', 'business', 'username', 'password', 'owner', 'deadline', 'comments', 'time_field',\n 'sec_id', 'enable']\n\n if (!curDbData.id) {\n // 新增字段\n validataList.push('add_type')\n paramsList.push('add_type')\n } else {\n // 编辑字段\n paramsList.push('id')\n }\n\n let isValidatePass = validataList.every(i => !!curDbData[i])\n\n if (!isValidatePass) {\n this.setState({ sholdCheckValidate: true })\n return\n }\n\n let formData = getFormDataParams(curDbData, paramsList)\n\n let api = !!curDbData.id ? updateTablecfg : storeTablecfg\n\n api(formData).then(res => {\n let oprText = !!curDbData.id ? '编辑' : '创建'\n if (res && res.data && res.data.code === 0) {\n SdwMessage.success(`${oprText}成功`)\n this.props.changeVisible(false)\n this.props.freshTableData() // 重新获取表数据\n } else {\n let msg = res.data.msg || `${oprText}失败`\n SdwMessage.error(msg)\n }\n })\n .catch(msg => {\n SdwMessage.error('请求失败 ' + msg)\n })\n }\n\n render () {\n let {\n curTitle, visible, changeVisible, topicInfo, staffUserList\n } = this.props\n\n let { curDbData, businessList, sholdCheckValidate } = this.state\n\n // 是否是编辑界面\n const isEdit = !!curDbData.id\n\n // 是否是es\n const isEs = curDbData.data_set_type === 'es'\n const isMysql = curDbData.data_set_type === 'mysql'\n\n // 新建表\n const isCreateTable = curDbData.add_type === 1\n let topicOptions = Array.isArray(topicInfo.topic) ? topicInfo.topic.map(i => {\n return {\n text: i.topic_name,\n id: i.topic_name,\n topicID: i.id\n }\n }) : []\n\n let owner = curDbData.owner || ''\n let curOwner = owner.split(';').filter(i => !!i)\n let curOwnerObj = staffUserList.filter(i => curOwner.includes(i.value))\n\n return (\n changeVisible(false)}\n onCancelClick={() => changeVisible(false)}\n onSureClick={this.onSubmit}\n sureText={isCreateTable ? '新增并接入' : '确定'}\n >\n \n {\n !isEdit &&\n
\n 新增方式\n validateFun(val, '请选择新增方式')}\n value={curDbData.add_type}\n clearable={false}\n data={[{\n id: 1,\n text: '新建表'\n }, {\n id: 2,\n text: '接入表'\n }]}\n onChange={val => this.updateCurDbData('add_type', val)}\n />\n
\n }\n
\n 表中文名\n validateFun(val, '请输入表中文名')}\n onChange={val => this.updateCurDbData('data_set_chinese', val)}\n />\n
\n
\n 仓库类型\n validateFun(val, '请选择仓库类型')}\n value={curDbData.data_set_type}\n clearable={false}\n data={[{\n id: 'es',\n text: 'es'\n }, {\n id: 'mysql',\n text: 'mysql'\n }]}\n onChange={val => {\n this.updateCurDbData('data_set_type', val)\n }}\n />\n
\n
\n {isEs ? '索引(index)' : '数据库名'}\n validateFun(val, '请输入' + isEs ? '索引(index)' : '数据库名')}\n onChange={val => this.updateCurDbData('database_name', val)}\n />\n {\n this.updateCurDbData('pattern', val)}\n />\n }\n
\n
\n {isEs ? '类型(type)' : '表名'}\n validateFun(val, '请输入' + isEs ? '类型(type)' : '表名')}\n onChange={val => this.updateCurDbData('table_name', val)}\n />\n
\n
\n 仓库层级\n {\n return {\n value: key,\n text: LEVEL_TEXT_MAP[key]\n }\n })}\n value={curDbData.warehouse_level}\n changeCheckedFun={val => this.updateCurDbData('warehouse_level', val)}\n />\n
\n
\n 访问IP地址\n validateFun(val, '请输入IP地址')}\n onChange={val => this.updateCurDbData('address', val)}\n />\n
\n
\n 用户名\n this.updateCurDbData('username', val)}\n />\n
\n
\n 密码\n this.updateCurDbData('password', val)}\n />\n
\n
\n 主题\n validateFun(val, '请选择主题')}\n data={topicOptions}\n value={curDbData.topic}\n clearable={false}\n onChange={val => this.updateCurDbData('topic', val)}\n />\n
\n
\n 业务\n validateFun(val, '请选择业务')}\n data={businessList.map(i => {\n return {\n id: i.business_name,\n text: i.business_name\n }\n })}\n value={curDbData.business}\n clearable={false}\n onChange={val => this.updateCurDbData('business', val)}\n />\n
\n
\n 负责人\n validateFun(val, '请选择负责人')}\n isMultipleChoice={true}\n data={staffUserList.map(i => {\n return {\n id: i.value,\n text: i.name\n }\n })}\n value={curOwnerObj.map(i => {\n return {\n id: i.value,\n text: i.name\n }\n })}\n onChange={val => this.updateCurDbData('owner', val)}\n />\n
\n
\n 生命周期\n validateFun(val, '请输入生命周期')}\n onChange={val => this.updateCurDbData('deadline', val)}\n />\n
\n
\n 表描述\n this.updateCurDbData('comments', val)}\n />\n
\n
\n 校验时间字段\n this.updateCurDbData('time_field', val)}\n />\n
\n
\n 敏感权限ID\n this.updateCurDbData('sec_id', val)}\n />\n
\n
\n 是否有效\n this.updateCurDbData('enable', bool) }\n />\n
\n\n {/*\n
\n 校验时间字段\n validateFun(val, '请输入校验时间字段') : _.noop}\n onChange={val => this.updateCurDbData('time_field', val)}\n />\n
*/}\n
\n \n )\n }\n}\n\nconst mapState = state => ({\n topicInfo: state.topic.topicInfo,\n staffUserList: state.user.staffUserList,\n})\n\nexport default connect(mapState)(EditMetadataWin)\n","import React, { PureComponent } from 'react'\nimport _ from 'lodash'\nimport { connect } from 'react-redux'\nimport { withRouter } from 'react-router-dom'\nimport SdwTable from '@common/Table'\nimport SdwPagenation from '@common/Pagenation'\nimport SdwSelect from '@common/Select'\nimport SdwBreadCrumbs from '@common/BreadCrumbs'\nimport SdwButton from '@common/Button'\nimport { getMetaDataInfo, getAllTablecfg, getItermSelects, getBusinessStatisticByTopic, getStaffs } from '@services/metaData'\nimport SdwMessage from '@common/Message/index'\nimport EditMetadataWin from './EditMetadataWin'\nimport SdwInput from '@common/Input/index'\nimport { LEVEL_TEXT_MAP } from './common'\nimport { hasPriv } from '@components/FrontendAuth/AuthMap'\n\nimport './style/index.css'\n\nconst TYPE_DATA = [\n { id: \"es\", text: \"es\" },\n { id: \"mysql\", text: \"mysql\" },\n { id: \"oracle\", text: \"oracle\" }\n]\n\nconst LEVEL_DATA = _.keys(LEVEL_TEXT_MAP).map(key => {\n return {\n id: key,\n text: LEVEL_TEXT_MAP[key]\n }\n})\n\nclass Metadata extends PureComponent {\n\n state = {\n curPage: this.props.pageInfo || 1,\n curLimit: 10,\n tableValue: '',\n idValue: '',\n topicValue: '', // 主题域id\n topicName: '', // 主题域名称\n businessValue: '', // 业务id\n businessName: '', // 业务名称\n typeValue: '',\n levelValue: '',\n enable: 1,\n curTitle: '',\n visible: false,\n tableData: {},\n curData: {},\n tableList: [],\n topicData: [], // 主题域\n businessData: [], // 业务\n businessList: [] // 已选主题域对应的业务\n }\n\n componentDidMount () {\n this.initData()\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n if (\n prevState.curPage !== this.state.curPage ||\n prevState.curLimit !== this.state.curLimit ||\n prevState.tableValue !== this.state.tableValue ||\n prevState.typeValue !== this.state.typeValue ||\n prevState.enable !== this.state.enable ||\n prevState.topicValue !== this.state.topicValue ||\n prevState.businessValue !== this.state.businessValue ||\n prevState.levelValue !== this.state.levelValue\n ) {\n if (prevState.topicValue !== this.state.topicValue) {\n this.onGetBusinessByTopic()\n }\n this.handleSearch()\n }\n }\n\n initData = () => {\n this.handleSearch()\n\n // 更新 topicInfo\n getItermSelects().then(res => {\n if (res && res.data && res.data.code === 0) {\n let record = res.data.data || {}\n this.setState({\n topicData: record.topic,\n businessData: record.business\n })\n this.props.updateTopicInfo(record)\n }\n })\n\n // 更新部门人员名单\n getStaffs().then(res => {\n if (res && res.data && res.data.code === 0) {\n let record = res.data.data || []\n this.props.updateStaffUserList(record)\n }\n })\n\n // 获取表名称\n getAllTablecfg().then(res => {\n if (res && res.data && res.data.code === 0) {\n let record = res.data.data || []\n this.setState({\n tableList: record\n })\n } else {\n let msg = res.data.msg || '请求失败'\n SdwMessage.error(msg)\n }\n })\n }\n\n // 根据主题域ID请求对应的业务\n onGetBusinessByTopic = () => {\n let { topicValue } = this.state\n getBusinessStatisticByTopic({id: topicValue}).then(res => {\n if (res && res.data && res.data.code === 0) {\n let topicArr = res.data.data && res.data.data.list.map(i => {\n return {\n id: i.business_id,\n text: i.business_name\n }\n }) || []\n this.setState({\n businessList: topicArr\n })\n }\n })\n }\n\n handleSearch = () => {\n let { curPage, curLimit, tableValue, idValue, typeValue, levelValue, topicValue, topicName, businessValue, businessName, enable } = this.state\n\n getMetaDataInfo({\n page: curPage,\n limit: curLimit,\n order: '', // 老平台这里传了一个空串\n search: JSON.stringify({\n ...(!!tableValue ? {\n id: {\n value: tableValue,\n operator: '='\n }\n } : {}),\n ...(!!typeValue ? {\n data_set_type: {\n value: typeValue,\n operator: '='\n }\n } : {}),\n ...(!!idValue ? {\n id: {\n value: idValue,\n operator: '='\n }\n } : {}),\n ...(!!levelValue ? {\n warehouse_level: {\n value: levelValue,\n operator: '='\n }\n } : {}),\n ...(!!topicValue ? {\n topic: {\n value: topicName,\n operator: '='\n }\n } : {}),\n ...(!!businessValue ? {\n business: {\n value: businessName,\n operator: '='\n }\n } : {}),\n ...(enable !== '' ? {\n enable: {\n value: enable,\n operator: '='\n }\n } : {})\n })\n })\n .then(res => {\n if (res && res.data && res.data.code === 0) {\n let record = res.data.data || {}\n console.log(\"tableList-----------------\", record)\n this.setState({\n tableData: record\n })\n } else {\n let msg = res.data.msg || '请求失败'\n SdwMessage.error(msg)\n }\n })\n .catch(() => SdwMessage.error('请求失败'))\n }\n\n getColumns = () => {\n return [\n {\n title: \"ID\",\n width: 50,\n render: data => (\n {`${data.id}`}\n )\n },{\n title: \"表/索引名称\",\n width: 180,\n render: data => (\n {`${data.database_name}.${data.table_name}`}\n )\n }, {\n title: \"表中文名\",\n width: 140,\n dataIndex: \"data_set_chinese\",\n }, {\n title: \"主题域/业务\",\n width: 120,\n render: data => (\n {`${data.topic}/${data.business}`}\n )\n }, {\n title: \"有效性\",\n width: 50,\n render: data => (\n {`${data.enable == 0 ? \"无效\" : (data.enable == 1? \"有效\":\"全部\")}`}\n )\n }, {\n title: \"仓库类型\",\n width: 50,\n dataIndex: \"data_set_type\"\n }, {\n title: \"数据层级\",\n width: 50,\n dataIndex: \"warehouse_level\",\n // }, {\n // title: \"是否有效\",\n // render: function (data, record) {\n // return (\n // <>\n // {\n // _.isEqual(typeof data.enable, 'number') && \n // }\n // {_.isEqual(typeof data.enable, 'number') ?\n // (data.enable ? '有效' : '无效') : '-'}\n // \n // )\n // }\n }, {\n title: \"负责人\",\n dataIndex: \"owner\"\n },{\n title: \"备注\",\n width: 180,\n dataIndex: \"comments\"\n }, {\n title: \"操作\",\n width: 100,\n fiexd: true,\n render: (data, record) => (\n <>\n this.jumpToDetails(data) }\n />\n {\n hasPriv('updateTablecfg') &&\n this.setState({\n visible: true,\n curTitle: `编辑表配置(${data.id})`,\n curData: data\n }) }\n />\n }\n \n )\n }\n ]\n }\n\n jumpToDetails = record => {\n this.props.history.push(`/admin/dataMarket/baseInfo/${record.id}`)\n }\n\n render() {\n\n let {\n tableData,\n tableValue,\n idValue,\n topicValue, // 主题域id\n businessValue, // 业务id\n typeValue,\n levelValue,\n enable,\n tableList,\n curTitle,\n visible,\n curData,\n topicData, // 主题域\n businessData, // 业务\n businessList // 主题域对应的业务\n } = this.state\n\n return (\n <>\n \n\n
\n
\n
\n
\n this.setState({\n curPage: 1,\n idValue: val\n })}\n />\n
\n
\n {\n return {\n id: el.id,\n text: (el.database_name ? el.database_name + '.' : '') + el.table_name + '(' + el.data_set_chinese + ')'\n }\n })}\n onChange={val => this.setState({\n curPage: 1,\n tableValue: val\n })}\n />\n
\n
\n {\n return {\n id: el.id,\n text: el.topic_name\n }\n })}\n onChange={(val, item) => {\n this.setState({\n curPage: 1,\n topicValue: val,\n topicName: item.text\n })\n }}\n />\n
\n
\n {\n return {\n id: el.id,\n text: el.business_name\n }\n })}\n onChange={(val, item) => {\n this.setState({\n curPage: 1,\n businessValue: val,\n businessName: item.text\n })\n }}\n />\n
\n
\n this.setState({\n curPage: 1,\n typeValue: val\n })}\n />\n
\n
\n this.setState({\n curPage: 1,\n levelValue: val\n })}\n />\n
\n
\n this.setState({\n curPage: 1,\n enable: val\n })}\n />\n
\n\n
\n {\n hasPriv('storeTablecfg') &&\n this.setState({\n visible: true,\n curTitle: '创建表配置',\n curData: {}\n }) }\n />\n }\n
\n
\n
\n
\n \n {\n _.isArray(tableData.items) && !!tableData.items.length &&\n this.setState({ curPage: page }) }\n pageCountChange={ limit => this.setState({ curLimit: limit }) }\n />\n }\n
\n
\n\n {\n visible &&\n this.setState({ visible: bool }) }\n />\n }\n \n )\n }\n}\n\nconst mapState = state => ({\n pageInfo: state.page.pageInfo\n})\n\nconst mapDispatch = dispatch => ({\n updateTopicInfo: dispatch.topic.updateTopicInfo,\n updateStaffUserList: dispatch.user.updateStaffUserList,\n})\n\nexport default withRouter(connect(mapState, mapDispatch)(Metadata))\n","import React from 'react'\nimport SdwEmpty from '@common/Empty'\n\nclass Alert extends React.PureComponent {\n\n render () {\n\n return (\n <>\n \n \n )\n }\n}\n\nexport default Alert","import React, { Component } from 'react'\nimport PropTypes from 'prop-types'\n\nimport './index.css'\n\nclass SdwInput extends Component {\n inputRef = React.createRef()\n\n static defaultProps = {\n width: '100%',\n height: 40,\n placeholder: '请输入',\n clearable: true,\n value: '',\n label: '',\n type: 'text',\n disabled: false,\n error: {\n isError: false,\n msg: ''\n },\n\n onChange: () => {},\n onBlur: () => {},\n }\n\n state = {\n inputValue: this.props.value || '',\n showClearIcon: false,\n isOnFocus: false,\n inputValueIsChange: false,\n }\n\n // componentDidUpdate(prevProps, prevState) {\n // if (this.props.value !== this.state.inputValue) {\n // this.setState({\n // inputValue: this.props.value\n // })\n // }\n // }\n\n handleChange = e => {\n if (this.props.disabled) return\n let value = e.target.value\n this.setState({\n inputValue: value,\n inputValueIsChange: true\n })\n this.props.onChange(value)\n }\n \n handleBlur = e => {\n this.setState({\n isOnFocus: false,\n inputValueIsChange: false\n })\n this.props.onBlur(e.target.value)\n }\n\n handleClearInput = e => {\n e.preventDefault()\n this.setState({ inputValue: '' })\n this.props.onChange('')\n this.props.onBlur('')\n }\n\n handleKeyDown = e => {\n if (e.keyCode === 13) {\n this.inputRef.current.blur()\n }\n }\n\n render() {\n let { type, placeholder, disabled, width, height, label, clearable, error } = this.props\n let { inputValue, showClearIcon, isOnFocus, inputValueIsChange } = this.state\n let inputClassName = !error.isError ? 'sdw-input3__wrap' : 'sdw-input3__wrap sdw-input3-error'\n\n let outDivClassName = 'sdw-input3__outer-div-warp'\n if (isOnFocus) outDivClassName += ' sdw-input3__on-focus'\n if (error.isError) outDivClassName += ' sdw-input3-error__wrap'\n \n return (\n
\n {\n !!label &&
{label}
\n }\n this.setState({ showClearIcon: true })}\n onMouseLeave={() => this.setState({ showClearIcon: false })}\n >\n this.handleKeyDown(e)}\n onChange={e => this.handleChange(e)}\n onFocus={() => this.setState({ isOnFocus: true })}\n onBlur={e => {\n this.handleBlur(e)\n \n }}\n />\n {\n !disabled && clearable && showClearIcon && !!inputValue && \n \n }\n {\n !inputValueIsChange && error.isError &&
{error.msg}
\n }\n
\n \n )\n }\n}\n\nSdwInput.propTypes = {\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n height: PropTypes.number,\n placeholder: PropTypes.string,\n clearable: PropTypes.bool,\n value: PropTypes.string,\n type: PropTypes.string,\n label: PropTypes.string,\n disabled: PropTypes.bool,\n onChange: PropTypes.func,\n onBlur: PropTypes.func, // 按下enter键触发也会触发blur事件(看 handleKeyDown 函数)\n error: PropTypes.object, // 错误校验对象\n}\n\nexport default SdwInput\n","// 表基本信息\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport './index.css'\n\nclass Card extends React.PureComponent {\n\n render () {\n let { columns, data, headerTitle, lableWidth } = this.props\n\n return (\n
\n
{ headerTitle }
\n\n {\n Array.isArray(columns) &&\n columns.map(item => (\n
\n {item.title}:\n {\n item.render ?\n <>\n {item.render(data)}\n :\n {data[item.dataIndex] || '-'}\n }\n
\n ))\n }\n \n
\n )\n }\n}\n\nCard.propTypes = {\n headerTitle: PropTypes.string, // 卡片头部title\n columns: PropTypes.array, // 配置展示的行信息\n data: PropTypes.object, // 需要展示的对象\n lableWidth: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), // 默认值是 78px\n}\n\nexport default Card","// 表基本信息\nimport React from 'react'\nimport SdwCard from '@common/Card'\nimport { LEVEL_TEXT_MAP } from '../../common'\n\nexport default props => {\n\n const columns = [{\n title: '数据库/索引',\n dataIndex: 'database_name'\n }, {\n title: '表名/类型后缀',\n dataIndex: 'pattern'\n }, {\n title: '中文名称',\n dataIndex: 'data_set_chinese'\n }, {\n title: '仓库类型',\n dataIndex: 'data_set_type'\n }, {\n title: '仓库层级',\n render: data => (\n {LEVEL_TEXT_MAP[data.warehouse_level]}\n )\n // }, {\n // title: 'IP地址',\n // dataIndex: 'address'\n }, {\n title: '主题/业务',\n render: data => (\n {`${data.topic}/${data.business}`}\n )\n }, {\n title: '负责人',\n dataIndex: 'owner'\n }\n // , {\n // title: '修改人',\n // dataIndex: 'modify_user'\n // }, {\n // title: '修改时间',\n // dataIndex: 'modify_time'\n // }\n]\n\n return (\n <>\n \n \n )\n}","import React from 'react'\nimport _ from 'lodash'\nimport SdwDrawer from '@common/Drawer'\nimport SdwInput from '@common/Input'\nimport SdwSelect from '@common/Select'\nimport SdwSwitch from '@common/Switch'\nimport SdwCascader from '@common/Cascader'\nimport SdwMessage from '@common/Message'\nimport { getTablecfgFieldById, updateTableField } from '@services/metaData'\nimport { validateFun, getFormDataParams } from '@utils/submit'\n\nimport '../../style/editBaseDbWin.css'\n\nconst DATA_SET_TYPE_MAP = {\n es: [{\n id: 'ES',\n text: 'ES',\n disabled: true\n }, {\n id: 'keyword',\n text: 'keyword'\n }, {\n id: 'esdate',\n text: 'date'\n }, {\n id: 'double',\n text: 'double'\n }],\n mysql: [{\n id: 'Mysql',\n text: 'Mysql',\n disabled: true\n }, {\n id: 'varchar',\n text: 'varchar'\n }, {\n id: 'int',\n text: 'int'\n }, {\n id: 'tinyint',\n text: 'tinyint'\n }, {\n id: 'datetime',\n text: 'datetime'\n }, {\n id: 'date',\n text: 'date'\n }, {\n id: 'timestamp',\n text: 'timestamp'\n }]\n}\n\nclass EditBaseDbWin extends React.PureComponent {\n state = {\n curDbData: {\n enable: 1\n },\n justInOnce: true, // 仅仅编辑的时候进入一次赋值操作,之后不再进入\n topicInputValue: {},\n dataSetType: '', // 仓库类型\n sholdCheckValidate: false,\n }\n\n componentDidMount() {\n let { curClickData, baseDetail } = this.props\n let ID = curClickData.id\n let dataSetType = baseDetail.data_set_type\n\n this.setState({ dataSetType: dataSetType })\n\n if (!!ID) {\n this.initData(ID)\n }\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (\n !!this.state.curDbData.field_ref_standard &&\n !_.isEmpty(this.props.standardSelctDataDic) &&\n this.state.justInOnce\n ) {\n let { curDbData } = this.state\n let { standardSelctDataDic } = this.props\n let standardObj = standardSelctDataDic[curDbData.field_ref_standard]\n\n if (!(standardObj && !!standardObj.selectList)) return\n\n this.setState({\n justInOnce: false, // 仅仅编辑的时候进入一次赋值操作,之后不再进入\n topicInputValue: {\n id: standardObj.selectList,\n texts: [standardObj.content]\n }\n })\n }\n }\n\n initData = id => {\n getTablecfgFieldById({id}).then(res => {\n if (res && res.data && res.data.code === 0) {\n let record = res.data.data\n this.setState({ curDbData: record })\n }\n })\n }\n\n updateCurDbData = (key, val) => {\n let record = _.cloneDeep(this.state.curDbData)\n record[key] = val\n this.setState({ curDbData: record })\n }\n\n handleTopicInputValue = val => {\n let IDlist = val.ids || []\n let ID = IDlist[IDlist.length - 1] || ''\n this.updateCurDbData('field_ref_standard', ID)\n this.setState({topicInputValue: val})\n }\n\n onSubmit = () => {\n let { curDbData } = this.state\n\n // 校验\n let validataList = ['field_name', 'field_type', 'field_ref_standard']\n let isValidatePass = validataList.every(i => !!curDbData[i])\n\n if (!isValidatePass) {\n this.setState({ sholdCheckValidate: true })\n return\n }\n\n // 下发字段\n let paramsList = ['id', 'data_set_id', 'field_name', 'field_type', 'field_name_ch',\n 'is_sensitive', 'enable','comments', 'field_ref_directory', 'field_ref_standard']\n\n let formData = getFormDataParams(curDbData, paramsList)\n\n updateTableField(formData).then(res => {\n let oprText = !!curDbData.id ? '编辑' : '创建'\n if (res && res.data && res.data.code === 0) {\n SdwMessage.success(`${oprText}成功`)\n this.props.changeVisible(false)\n this.props.freshTableData() // 重新获取表数据\n } else {\n let msg = res.data.msg || `${oprText}失败`\n SdwMessage.error(msg)\n }\n })\n .catch(msg => {\n SdwMessage.error('请求失败 ' + msg)\n })\n }\n\n render () {\n let { visible, curTitle, changeVisible, standardSelectsOptions, standardSelctDataDic, curClickData } = this.props\n let { curDbData, sholdCheckValidate, dataSetType, topicInputValue } = this.state\n\n let standardOptions = []\n if (!_.isEmpty(standardSelctDataDic)) {\n standardOptions = _.values(standardSelctDataDic).map(i => ({\n id: i.id,\n text: i.content\n }))\n }\n\n return (\n <>\n changeVisible(false)}\n onCancelClick={() => changeVisible(false)}\n onSureClick={this.onSubmit}\n >\n \n
\n 字段名\n validateFun(val, '请输入字段名')}\n onChange={val => this.updateCurDbData('field_name', val)}\n />\n
\n
\n 字段中文名\n this.updateCurDbData('field_name_ch', val)}\n />\n
\n
\n 字段类型\n validateFun(val, '请选则字段类型')}\n value={curDbData.field_type}\n clearable={false}\n data={DATA_SET_TYPE_MAP[dataSetType]}\n onChange={val => this.updateCurDbData('field_type', val)}\n />\n
\n
\n 关联标准\n {/* validateFun(curRecord, '请选择关联标准', 'cascader')}\n data={standardSelectsOptions}\n onChange={val => this.handleTopicInputValue(val)}\n /> */}\n validateFun(val, '请选择关联标准')}\n value={curDbData.field_ref_standard}\n readOnly={false}\n data={standardOptions}\n onChange={val => this.updateCurDbData('field_ref_standard', val)}\n />\n
\n
\n 通用配置目录分类\n this.updateCurDbData('field_ref_directory', val)}\n />\n
\n
\n 备注\n this.updateCurDbData('comments', val)}\n />\n
\n
\n 是否敏感\n this.updateCurDbData('is_sensitive', bool) }\n />\n
\n
\n 是否可用\n this.updateCurDbData('enable', bool) }\n />\n
\n
\n \n \n )\n }\n}\n\nexport default EditBaseDbWin","\nimport { getStandardSelects } from '@services/metaData'\n\n// 获取所有的字段标准数据选项列表\nexport const getTopic = async () => {\n let obj = {\n standardSelctDataDic: {},\n topicDataList: []\n }\n\n await getStandardSelects().then(res => {\n if (res && res.data && res.data.code === 0) {\n let data = res.data.data\n \n // 字段标准解析\n let standardData = data.standard\n let standardDataDic = {}\n let topicHasOtherDic = {}\n for(let i=0; i {\n let { standardSelctDataDic } = this.state\n return [{\n title: \"字段ID\",\n width: 120,\n dataIndex: \"field_name\",\n }, {\n title: \"数据格式\",\n width: 100,\n // dataIndex: \"field_type\",\n render: data => {\n const DATA_SET_TYPE = _.get(this.props, 'databaseInfo.data_set_type')\n return (\n this.onSubmit('field_type', val, data)}\n />\n )\n }\n }, {\n title: \"字段中文名\",\n // dataIndex: \"field_name_ch\",\n render: data => (\n this.onSubmit('field_name_ch', val, data)}\n />\n )\n }, {\n title: \"数据标准\",\n width: 150,\n tip: data => {\n let fieldStandard = !_.isEmpty(standardSelctDataDic) ? standardSelctDataDic[data.field_ref_standard] : {}\n if (!!_.isEmpty(fieldStandard)) {\n return ''\n }\n let { content, id, field_define } = fieldStandard\n\n return (\n <>\n {`[${id}] ${content}`}
\n {field_define}\n \n )\n },\n // render: data => {\n // let fieldStandard = !_.isEmpty(standardSelctDataDic) ? standardSelctDataDic[data.field_ref_standard] : {}\n // let text = '-'\n // if (!_.isEmpty(fieldStandard) && !!fieldStandard.content) {\n // text = fieldStandard.content\n // }\n // return (\n // {text}\n // )\n // }\n render: data => (\n this.onSubmit('field_ref_standard', val, data)}\n />\n )\n }, {\n title: \"是否敏感\",\n // dataIndex: \"is_sensitive\",\n render: data => (\n this.onSubmit('is_sensitive', val, data)}\n />\n )\n }, {\n title: \"是否有效\",\n // dataIndex: \"enable\",\n render: data => (\n this.onSubmit('enable', val, data)}\n />\n )\n }, {\n title: \"备注\",\n // dataIndex: \"comments\",\n render: data => (\n this.onSubmit('comments', val, data)}\n />\n )\n // }, {\n // title: \"操作\",\n // width: 50,\n // fiexd: true,\n // render: (data, record) => (\n // <>\n // this.setState({\n // visible: true,\n // curTitle: `编辑字段(${data.id})`,\n // curClickData: data\n // }) }\n // />\n // \n // )\n }]\n }\n\n componentDidMount() {\n this.initData()\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevProps.databaseInfo.id !== this.props.databaseInfo.id) {\n let ID = this.props.databaseInfo.id\n if (!!ID) {\n this.initData()\n }\n }\n }\n\n initData = async () => {\n this.onGetTablecfgDetail()\n\n let topicData = await getTopic()\n let standardOptions = []\n\n if (topicData && !_.isEmpty(topicData.standardSelctDataDic)) {\n standardOptions = _.values(topicData.standardSelctDataDic).map(i => ({\n id: i.id,\n text: i.content\n }))\n }\n\n if (_.isEmpty(topicData)) return\n this.setState({\n standardSelectsOptions: topicData.topicDataList,\n standardSelctDataDic: topicData.standardSelctDataDic,\n standardOptions\n })\n }\n\n onGetTablecfgDetail = () => {\n let id = this.props.databaseInfo.id\n\n if (!id) return\n getTablecfgDetail({id}).then(res => {\n if (res && res.data && res.data.code === 0) {\n let record = res.data.data || {}\n this.setState({ baseData: record })\n } else {\n let msg = res.data.msg || '请求失败'\n SdwMessage.error(msg)\n }\n }).catch(error => SdwMessage.error('请求失败 ' + error))\n }\n\n onSubmit = (key, val, data) => {\n\n // 该字段没有修改,不下发请求\n if (data[key] == val) return\n\n // 下发字段\n let paramsList = ['id', 'data_set_id', 'field_name', 'field_type', 'field_name_ch',\n 'is_sensitive', 'enable','comments', 'field_ref_directory', 'field_ref_standard']\n\n let formData = getFormDataParams(_.assign({}, data, {\n [key]: val\n }), paramsList)\n\n updateTableField(formData).then(res => {\n const code = _.get(res, 'data.code')\n if (code === 0) {\n SdwMessage.success('编辑成功')\n this.onGetTablecfgDetail() // 重新获取表数据\n } else {\n let msg = _.get(res, 'data.msg') || '编辑成功失败'\n SdwMessage.error(msg)\n }\n })\n .catch(msg => {\n SdwMessage.error('请求失败 ' + msg)\n })\n }\n\n jumpToSearchEport = () => {\n let id = this.props.databaseInfo.id\n this.props.history.push({\n pathname: `/admin/dataGasStation/searchEport/${id}`,\n state: {curMenuIndex: 0}\n })\n }\n\n render () {\n let { keyWord, baseData, visible, curTitle, curClickData, standardSelctDataDic, standardSelectsOptions, enable } = this.state\n let { curEnabled } = this.props\n\n let feilds = _.cloneDeep(baseData.fields)\n let dataSource = _.isArray(feilds) ? feilds : []\n if (enable !== '') {\n dataSource = dataSource.filter(i => i.enable == enable)\n } else {\n dataSource = _.isArray(feilds) ? feilds : []\n }\n dataSource = dataSource.filter(i => i.field_name.indexOf(keyWord) !== -1).slice(0, 500)\n\n return (\n <>\n \n
\n \n
\n \n {\n !curEnabled ?\n :\n <>\n
\n this.setState({keyWord: val})}\n />\n\n \n this.setState({enable: val})}\n />\n \n\n \n this.jumpToSearchEport()}\n />\n \n\n {/* \n this.setState({\n visible: true,\n curTitle: `新增字段`,\n curClickData: {}\n }) }\n />\n */}\n
\n
\n
\n \n
\n
\n \n }\n
\n
\n\n {\n visible &&\n this.setState({ visible: bool })}\n curClickData={curClickData}\n baseDetail={baseData.detail}\n freshTableData={this.onGetTablecfgDetail}\n standardSelctDataDic={standardSelctDataDic}\n standardSelectsOptions={standardSelectsOptions}\n />\n }\n \n )\n }\n}\n\nconst mapState = state => ({\n databaseInfo: state.database.databaseInfo\n})\n\nexport default connect(mapState)(BaseInfo)\n","import React from 'react'\nimport SdwEmpty from '@common/Empty'\n\nclass Blood extends React.PureComponent {\n\n render () {\n\n return (\n <>\n \n \n )\n }\n}\n\nexport default Blood","import React from 'react'\nimport _ from 'lodash'\nimport { connect } from 'react-redux'\nimport { getItems } from '@services/metaData'\nimport SdwTable from '@common/Table'\nimport SdwLoading from '@common/Loadding'\nimport SdwEmpty from '@common/Empty'\n\nclass Review extends React.PureComponent {\n\n state = {\n tableList: [],\n isLoading: true\n }\n\n componentDidMount() {\n console.log(\"==-===\", this.props)\n let curEnabled = this.props.curEnabled\n if (curEnabled) {\n getItems({\n id: this.props.databaseInfo.id,\n limit: 50\n }).then(res => {\n if (res && res.data && res.data.code === 0) {\n let record = res.data.data || {}\n let tableList = Array.isArray(record.items) ? record.items : []\n this.setState({\n tableList: tableList,\n isLoading: false\n })\n }\n })\n }\n }\n\n getcolumns = () => {\n let { tableList } = this.state\n if (!tableList.length) return []\n\n let record = tableList[0]\n return _.keys(record).map(key => {\n return {\n title: key,\n dataIndex: key\n }\n })\n }\n\n render () {\n let { tableList, isLoading } = this.state\n let { curEnabled } = this.props\n return (\n !curEnabled ?\n :\n \n \n \n )\n }\n}\n\nconst mapState = state => ({\n databaseInfo: state.database.databaseInfo\n})\n\nexport default connect(mapState)(Review)\n","import React from 'react'\nimport _ from 'lodash'\nimport { connect } from 'react-redux'\nimport SdwBreadCrumbs from '@common/BreadCrumbs'\nimport Empty from '@common/Empty'\nimport Button from '@common/Button'\nimport SdwTabs from '@common/Tabs'\nimport Alert from './Alert'\nimport Base from './Base'\nimport Blood from './Blood'\nimport AuthText from \"./common/AuthText\"\nimport Review from './Review'\nimport { getPublicCfg } from '@services/Derived'\nimport { getMetaDataDetailInfo } from '../common'\nimport '../style/detail.css'\nimport AuthApply from './common/AuthApply'\nimport {getTablecfgDetailPermission, getTablecfgDetailAuth} from '@api/metaData'\nimport SdwMessage from '@common/Message'\nimport { hasPriv } from '@components/FrontendAuth/AuthMap'\n\nconst MENU = [\n {\n title: '基本信息',\n path: '/baseInfo',\n component: Base\n },\n // {\n // title: '数据血缘',\n // path: '/blood',\n // component: Blood\n // },\n {\n title: '数据预览',\n path: '/reviewData',\n component: Review\n },\n // {\n // title: '数据告警',\n // path: '/alert',\n // component: Alert\n // }\n]\n\nclass DetailIndex extends React.PureComponent {\n\n state = {\n curData: {},\n code:\"\",\n isApplyAuth:false\n }\n componentDidMount() {\n let ID = this.props.match.params.id\n if (!!ID) this.initData(ID)\n }\n\n // 更新一些公共的数据,写入redux备用\n initData = async (ID = '') => {\n await this.onGetTablecfgDetailPermission(ID)\n // 获取时间周期+更新频率\n getPublicCfg().then(res => {\n if (res && res.data && res.data.code === 0) {\n let record = res.data.data || {}\n this.props.updatePublicCfgInfo(record)\n }\n })\n\n // 获取表头详情信息\n let record = await getMetaDataDetailInfo(ID)\n this.setState({ curData: record })\n this.props.updateDatabaseInfo(record)\n }\n onGetTablecfgDetailPermission = async (id) => {\n if (!id) return\n let auth = hasPriv('getTablecfgDetailPermission')\n if (auth == false) {\n let res = await getTablecfgDetailAuth ({id:id})\n if (res && res.data ) {\n this.setState({ code: res.data.code })\n } else {\n let msg = res.data.msg || '请求失败'\n SdwMessage.error(msg)\n }\n } else {\n this.setState({ code: 0 })\n }\n }\n showAuthApply = (isApplyAuth = true) => {\n this.setState({\"isApplyAuth\":isApplyAuth})\n }\n render () {\n let { curData ,code, isApplyAuth} = this.state\n const curEnabled = (curData || {}).enable || 0\n let id = this.props.match.params.id\n return (\n <>\n \n\n
\n {\n !curEnabled ?\n 无效 :\n {curData.warehouse_level}\n }\n {`${curData.database_name}.${curData.table_name}(${curData.data_set_chinese})`}\n
\n\n
\n {\n code !== \"\" ?\n (\n isApplyAuth === false ?\n (\n (code === 0) ?\n \n : (}/>)\n )\n : ({\n this.onGetTablecfgDetailPermission(id)\n this.showAuthApply(bool)\n }} id={curData.id} />)\n )\n :\"\"\n }\n
\n \n )\n }\n}\nconst mapState = state => ({\n userInfo: state.user.userInfo,\n})\n\nconst mapDispatch = dispath => ({\n updateDatabaseInfo: dispath.database.updateDatabaseInfo,\n updatePublicCfgInfo: dispath.database.updatePublicCfgInfo,\n})\n\nexport default connect(mapState, mapDispatch)(DetailIndex)\n","import _ from 'lodash'\nimport Dictionary from '@pages/Market/Dictionary'\nimport DataStandard from '@pages/Market/DataStandard'\nimport DomainManagement from '@pages/Market/DomainManagement'\nimport SubjectDomainDetail from '@pages/Market/SubjectDomainDetail'\nimport DataStandardDetail from '@pages/Market/DataStandardDetail'\nimport Metadata from '@pages/Market/Metadata/index'\nimport BaseInfo from '@pages/Market/Metadata/TableDetails/index'\nimport switchRoutes from './switchRoutes'\n\nexport const routerPath = '/admin/dataMarket'\n\nexport const bar = {\n rootUrl: routerPath,\n activeClassName: 'current',\n className: 'sdw-nav-item',\n name: '数据集市',\n children: [\n {\n icon: '',\n title: '数据字典',\n path: `${routerPath}/dictionary`,\n },\n {\n icon: '',\n title: '数据标准',\n path: `${routerPath}/standard`,\n },\n {\n icon: '',\n title: '主题域管理',\n path: `${routerPath}/management`,\n },\n // {\n // icon: '',\n // title: '元数据管理(旧)',\n // path: `/html/metadata/tableList`,\n // gotoPathState: 1,\n // },\n {\n icon: '',\n title: '元数据管理',\n path: `${routerPath}/metadatas`,\n }\n ],\n order: 0\n}\n\nconst pages = {\n Dictionary: {\n icon: 'icon-278',\n title: '数据字典',\n path: `${routerPath}/dictionary`,\n component: Dictionary,\n },\n DataStandard: {\n icon: 'icon-278',\n title: '数据标准',\n path: `${routerPath}/standard`,\n component: DataStandard,\n },\n DomainManagement: {\n icon: 'icon-278',\n title: '主题域管理',\n path: `${routerPath}/management`,\n component: DomainManagement,\n },\n SubjectDomainDetail: {\n icon: 'icon-278',\n title: '主题域管理详情',\n path: `${routerPath}/domaindetail`,\n component: SubjectDomainDetail,\n },\n DataStandardDetail: {\n icon: 'icon-278',\n title: '标准详情',\n path: `${routerPath}/standardinfo`,\n component: DataStandardDetail,\n },\n Metadata: {\n icon: 'icon-278',\n title: '元数据管理',\n path: `${routerPath}/metadatas`,\n component: Metadata,\n },\n BaseInfo: {\n icon: 'icon-278',\n title: '元数据管理',\n path: `${routerPath}/baseInfo/:id`,\n component: BaseInfo,\n }\n}\n\nexport const menus = [\n // {\n // icon: 'icon-64',\n // title: '知识菜单',\n // path: `${routerPath}/monitor`,\n // children: [pages.knowledgeLearning, pages.learningGroup],\n // },\n // {\n // icon: 'icon-132',\n // title: '考试菜单',\n // path: `${routerPath}/dialogue`,\n // children: [pages.orderShare, pages.testList],\n // },\n]\n\nexport const Router = switchRoutes({ routes: _.values(pages) })\n","import { request } from '../utils/request'\n\nexport function insertStandardManage (params) {\n return request({ url: '/tagmanage/standardManage/insertStandardManage', method: 'post', data: params })\n}\n\nexport function updateStandardManage (params) {\n return request({ url: '/tagmanage/standardManage/updateStandardManage ', method: 'post', data: params })\n}\n\nexport function getStandardManageItems (params) {\n return request({ url: '/tagmanage/standardManage/items', method: 'get', params: params })\n}\n\nexport function insertOrderRule (params) {\n return request({ url: '/tagmanage/orderRule/insertOrderRule', method: 'post', data: params })\n}\n\nexport function updateOrderRule (params) {\n return request({ url: '/tagmanage/orderRule/updateOrderRule', method: 'post', data: params })\n}\n\nexport function getOrderRuleItems (params) {\n return request({ url: '/tagmanage/orderRule/items', method: 'get', params: params })\n}\n\nexport function testOrderRule (params) {\n return request({ url: '/tagmanage/orderRule/testOrderRule', method: 'post', data: params })\n}\n\nexport function submitTask (params) {\n return request({ url: '/tagmanage/orderRule/submitTask', method: 'post', data: params })\n}\n\nexport function getMethods (params) {\n return request({ url: '/tagmanage/orderRule/getMethods', method: 'get', params: params })\n}\n\nexport function getTaskFlowItems (params) {\n return request({ url: '/tagmanage/taskFlow/items', method: 'get', params: params })\n}\n\nexport function elementLabels (params) {\n return request({ url: '/tagmanage/standardManage/elementLabels', method: 'get', params: params })\n}","import { useRef, useState, useMemo, useEffect } from 'react'\nimport _ from 'lodash'\nimport Drawer from \"@common/Drawer\"\nimport Form from \"@common/Form_D\"\nimport Select from '@common/Select'\nimport Input from '@common/Input'\nimport Message from '@common/Message'\nimport Switch from '@common/Switch'\nimport { insertStandardManage, updateStandardManage, elementLabels } from '@services/labelManagement'\nimport { commonApi } from '@utils/request'\n\nfunction notEmpty(val) {\n return !!val\n}\n\nconst rules = {\n label_name: [\n { func: notEmpty, message: '请选择标签名称' }\n ],\n task_label_id: [\n { func: notEmpty, message: '请输入标签ID' }\n ],\n // label_field: [\n // { func: notEmpty, message: '请输入标签英文名' }\n // ],\n label_type: [\n { func: notEmpty, message: '请选择标签类型' }\n ],\n standard_id: [\n { func: notEmpty, message: '请选择数据标准' }\n ],\n topic: [\n { func: notEmpty, message: '请选择所属主题域' }\n ],\n service: [\n { func: notEmpty, message: '请选择所属业务' }\n ],\n}\n\nexport default function EditWin(props) {\n const {\n isEdit, record, showEditWin, setShowEditWin, updatePage, getTopicRecord, labelTypeArr\n } = props\n\n const formRef = useRef(null)\n const [formData, setFormData] = useState({\n is_display: 0\n })\n const [labelList, setLabelList] = useState([])\n\n useEffect(() => {\n if (_.isEmpty(record)) return\n setFormData(record)\n }, [record])\n\n useEffect(() => {\n commonApi(elementLabels).then(data => {\n const items = _.isArray(_.get(data, 'items')) ? _.get(data, 'items') : []\n console.log(\"==========label\", items)\n if (items.length) setLabelList(items.map(i => ({\n ...i,\n text: `${i.label_name}(${i.label_field})`\n })))\n }).catch(err => Message.error(err))\n }, [])\n\n const topicArr = useMemo(() => {\n return _.isArray(_.get(getTopicRecord, 'topic')) ? _.get(getTopicRecord, 'topic').map(i => ({\n ...i,\n text: i.topic_name\n })) : []\n }, [getTopicRecord])\n\n const businessArr = useMemo(() => {\n return _.isArray(_.get(getTopicRecord, 'business')) ? _.get(getTopicRecord, 'business').filter(j => j.topic_id == formData.topic).map(i => ({\n ...i,\n text: i.business_name\n })) : []\n }, [getTopicRecord, formData.topic])\n\n const standardArr = useMemo(() => {\n return _.isArray(_.get(getTopicRecord, 'standard')) ? _.get(getTopicRecord, 'standard').map(i => ({\n ...i,\n text: `${i.field_name_ch}(${i.field_name})`\n })) : []\n }, [getTopicRecord])\n\n function updateFormData(key, val) {\n let cloneFormDate = _.cloneDeep(formData)\n cloneFormDate[key] = val\n setFormData(cloneFormDate)\n }\n\n function onSubmit() {\n formRef.current.validate(valid => {\n // console.log('*******valid, isEdit, formData: ', valid, isEdit, formData);\n const api = isEdit ? updateStandardManage : insertStandardManage\n if (valid) {\n api({\n field: formData,\n ...isEdit ? {\n id: record.id\n } : {}\n }).then(res => {\n const code = _.get(res, 'data.code')\n if (code === 0) {\n let msg = isEdit ? '编辑管理标签成功' : '添加管理标签成功'\n Message.success(msg)\n setShowEditWin(false)\n updatePage()\n } else {\n let tip = isEdit ? '编辑管理标签失败' : '添加管理标签失败'\n const msg = _.get(res, 'data.msg') || tip\n Message.error(msg)\n }\n }).catch(() => Message.error(\"接口异常\"))\n }\n })\n }\n\n function handleLabelNameChange(val, item) {\n console.log('-----item: ', item);\n let cloneFormDate = _.cloneDeep(formData)\n //cloneFormDate['label_name'] = `${item.label_name}(${item.label_field})`\n cloneFormDate['label_name'] = item.label_name\n cloneFormDate['task_label_id'] = item.id\n cloneFormDate['label_field'] = item.label_field\n setFormData(cloneFormDate)\n }\n\n return (\n setShowEditWin(false)}\n onCancelClick={() => setShowEditWin(false)}\n onSureClick={onSubmit}\n >\n \n
\n \n handleLabelNameChange(val, item)}\n />\n \n \n \n \n \n updateFormData('standard_id', val)}\n />\n \n \n updateFormData('label_type', val)}\n />\n \n \n updateFormData('topic', val)}\n />\n \n \n updateFormData('service', val)}\n />\n \n \n updateFormData('is_display', val)}\n />\n \n
\n
\n \n )\n}\n","import { useState, useEffect } from \"react\"\nimport _ from 'lodash'\nimport Message from '@common/Message'\nimport { commonApi } from '@utils/request'\nimport { getStandardManageItems } from '@services/labelManagement'\nimport { getSearchParams } from \"@utils/submit\"\n\nexport default function UseLabelName(labelName = '', idIsLabelLable = false) {\n const [standardManageItems, setStandardManageItems] = useState([])\n\n useEffect(() => {\n commonApi(getStandardManageItems, {\n limit: 100,\n search: getSearchParams({\n 'a.label_field': labelName\n }, ['a.label_field'])\n }).then(data => {\n const items = _.get(data, 'items') || []\n setStandardManageItems(items.map(i => ({\n ...i,\n ...idIsLabelLable ? {\n id: i.label_name\n } : {},\n text: `${i.label_field}(${i.label_name})`\n })))\n }).catch(err => Message.error(err))\n }, [labelName])\n\n return standardManageItems\n}\n","import { useState, useEffect } from \"react\"\nimport { standardItemSelects } from './api'\nimport { commonApi } from \"@utils/request\"\nimport Message from '@common/Message'\n\nexport default function UseStandardItemSelects(props) {\n\n const [record, setRecord] = useState({})\n \n useEffect(() => {\n commonApi(standardItemSelects, {}).then(data => {\n setRecord(data)\n }).catch(err => Message.error(err))\n }, [])\n\n return record\n}","import { useRef, useState, useEffect } from 'react'\nimport _ from 'lodash'\nimport Dialog from \"@common/Dialog\"\nimport DatePicker from '@common/DatePicker'\nimport Radiobox from '@common/Radiobox'\nimport Message from '@common/Message'\nimport { submitTask } from '@services/labelManagement'\nimport { commonApi } from '@utils/request'\nimport '../style/index.css'\n\nconst TASK_TYPE = {\n online: 1,\n offline: 2\n}\n\nexport default function EditWin(props) {\n const { record, showEditWin, setShowEditWin, updatePage } = props\n\n const [dateTimeRangeValue, setDateTimeRangeValue] = useState('')\n const [taskType, setTaskType] = useState(1)\n \n function onSubmit() {\n commonApi(submitTask, {\n id: record.id,\n field: {\n type: taskType,\n ...taskType === TASK_TYPE.offline ? {\n start_time: `${dateTimeRangeValue} 00:00:00`,\n end_time: `${dateTimeRangeValue} 23:59:59`\n } : {}\n }\n }).then(data => {\n Message.success('提交任务成功')\n updatePage()\n setShowEditWin(false)\n }).catch(err => Message.error(err || '提交任务失败'))\n }\n\n return (\n setShowEditWin(false)}\n onSureClick={onSubmit}\n sureBtnDisabled={taskType === TASK_TYPE.offline ? !dateTimeRangeValue : false}\n cusWrapClass='label-management__ticket-label-rules__editwin'\n >\n
\n 任务类型\n \n
\n {\n taskType === TASK_TYPE.online ?\n
\n 确认后将开始执行标签采集\n
:\n
\n 时间范围\n \n
\n }\n \n )\n}\n","import { useState } from 'react'\nimport { connect } from 'react-redux'\nimport _ from 'lodash'\nimport Button from '@common/Button'\nimport Table from '@common/Table'\nimport Message from '@common/Message'\nimport { testOrderRule } from '@services/labelManagement'\nimport { commonApi } from '@utils/request'\nimport './index.css'\n\nfunction LabelTest(props) {\n const { labelRuleConfigID, example, updatePage } = props\n\n const [showTest, setShowTest] = useState(false)\n const [isTestSuccess, setIsTestSuccess] = useState(false)\n const [curRecord, setCurRecord] = useState({})\n \n function getcolumns () {\n return [\n {\n title: '工单号',\n dataIndex: 'task_id_field',\n }, {\n title: '标签',\n dataIndex: 'label',\n }\n ]\n }\n\n function onTest() {\n commonApi(testOrderRule, {\n id: labelRuleConfigID,\n example\n }).then(data => {\n Message.success('测试成功')\n setIsTestSuccess(true)\n setCurRecord([data])\n }).catch(err => Message.error(err || '测试失败'))\n .finally(() => {\n setShowTest(true)\n updatePage()\n })\n }\n\n return (\n
\n
标签加工测试
\n
\n
测试案例
\n
{ example }
\n
\n
\n \n
\n {\n showTest &&\n <>\n
测试结果:\n {\n isTestSuccess ?\n 成功 :\n 失败\n }\n
\n {\n isTestSuccess &&\n
\n \n
\n }\n \n }\n
\n )\n}\n\nconst mapState = state => ({\n labelRuleConfigID: state.labelManagement.labelRuleConfigID,\n example: state.labelManagement.example\n})\n\nexport default connect(mapState)(LabelTest)","import { useState, useEffect, useMemo } from 'react'\nimport { connect } from 'react-redux'\nimport _ from 'lodash'\nimport Form from \"@common/Form_D\"\nimport Select from '@common/Select'\nimport Input from '@common/Input'\nimport Textarea from '@common/Textarea'\nimport Message from '@common/Message'\nimport { commonApi } from '@utils/request'\nimport { getCollectConfigList, getLogCollectConfigDetail } from '@services/dataAccess'\nimport { getMethods } from '@services/labelManagement'\nimport UseStandardItemSelects from '@customHooks/UseStandardItemSelects'\nimport UseLabelName from '../../common/UseLabelName'\nimport './index.css'\n\nfunction notEmpty(val) {\n return _.trim(val) !== ''\n}\n\nconst rules = {\n label_standard_id: [\n { func: notEmpty, message: '请选择标签名称' }\n ],\n rule_name: [\n { func: notEmpty, message: '请输入规则名称' }\n ],\n rule_type: [\n { func: notEmpty, message: '请选择规则类型' }\n ],\n process_way: [\n { func: notEmpty, message: '请选择加工方式' }\n ],\n log_id: [\n { func: notEmpty, message: '请选择关联日志' }\n ],\n task_id_field: [\n { func: notEmpty, message: '请选择匹配字段' }\n ],\n extract_field: [\n { func: notEmpty, message: '请选择提取字段' }\n ]\n}\n\nconst validateFun = val => {\n if (!!val) {\n return true\n }\n return '该输入项不能为空'\n}\n\nconst LogIdMap = {\n 'localhost': 20049, // 本地 20049\n 'sdwtest.yzfchat.com/public': 20049, // 测试环境用 20049\n 'sdw.oa.com': 20058, // 现网用 20058\n 'sdw.yzfchat.com': 20058, // 现网用 20058\n}\n\nfunction LabelRuleConfig(props) {\n const standardItemSelects = UseStandardItemSelects()\n\n const { labelRuleConfig, updateLabelRuleConfig, updateExample } = props\n const formRef = props.formRef\n const [logArr, setLogArr] = useState([])\n const [taskIDFieldArr, setTaskIDFieldArr] = useState([])\n const [ruleTypeArr, setRuleTypeArr] = useState([])\n const [processWayArr, setProcessWayArr] = useState([])\n const [labelName, setLabelName] = useState('')\n const standardManageItems = UseLabelName(labelName)\n const [functionNameArr, setFunctionNameArr] = useState([])\n\n useEffect(() => {\n commonApi(getMethods, {}).then(data => {\n if (!_.isArray(data)) return\n setFunctionNameArr(data.map(i => ({\n id: i.name,\n text: `${i.name}(${i.value.name})`\n })))\n }).catch(err => Message.error(err))\n }, [])\n\n useEffect(() => {\n const ruleType = _.get(standardItemSelects, 'rule_type') || []\n const processWay = _.get(standardItemSelects, 'process_way') || []\n setRuleTypeArr(ruleType.map(i => ({\n id: String(i.value),\n text: i.name\n })))\n setProcessWayArr(processWay.map(i => ({\n id: String(i.value),\n text: i.name\n })))\n }, [standardItemSelects])\n\n useEffect(() => {\n commonApi(getCollectConfigList, {\n limit: 200\n }).then(data => {\n const items = _.get(data, 'items') || []\n setLogArr(items.map(i => ({\n ...i,\n text: `${i.store_table_name_ch}(${i.store_table_name_en})(${i.id})`\n })))\n }).catch(err => Message.error(err))\n }, [])\n\n useEffect(() => {\n if (!labelRuleConfig.log_id) return\n commonApi(getLogCollectConfigDetail, {\n id: labelRuleConfig.log_id\n }).then(data => {\n const list = _.get(data, 'tableColumnList') || []\n const example = _.get(data, 'configInfo.example') || ''\n updateExample(example)\n setTaskIDFieldArr(list.map(i => ({\n id: i.column_name,\n text: i.column_name\n })))\n }).catch(err => Message.error(err))\n }, [labelRuleConfig.log_id])\n\n useEffect(() => {\n const isTypeOne = labelRuleConfig.rule_type == 1\n\n // 如果选中轨迹加工,关联日志、匹配字段 选中固定值\n if (!isTypeOne) return\n\n const logID = LogIdMap[_.get(window, 'location.hostname')] || LogIdMap['localhost']\n\n if (logArr.length && labelRuleConfig.log_id != logID) {\n setFormDataProps('log_id', logID)\n }\n\n if (taskIDFieldArr.length && labelRuleConfig.log_id == logID && labelRuleConfig.task_id_field != 'taskid') {\n setFormDataProps('task_id_field', 'taskid')\n }\n\n }, [labelRuleConfig.rule_type, logArr, taskIDFieldArr])\n\n function setFormDataProps(key, val) {\n let cloneFormData = _.cloneDeep(labelRuleConfig)\n cloneFormData[key] = val\n updateLabelRuleConfig(cloneFormData)\n }\n\n return (\n
\n \n
规则类型配置
\n\n \n setFormDataProps('label_standard_id', val)}\n />\n \n \n setFormDataProps('rule_name', val)}\n />\n \n \n setFormDataProps('rule_type', val)}\n />\n \n \n setFormDataProps('process_way', val)}\n />\n \n\n {/* labelRuleConfig.rule_type == '加工日志' ---> 0 ;'轨迹加工' ---> 1*/}\n {\n labelRuleConfig.rule_type !== '' &&\n <>\n
规则详情配置
\n\n \n setFormDataProps('log_id', val)}\n />\n \n \n setFormDataProps('task_id_field', val)}\n />\n \n \n setFormDataProps('extract_field', val)}\n />\n \n {\n labelRuleConfig.rule_type == 0 &&\n \n setFormDataProps('filter', val)}\n />\n \n }\n \n }\n\n
加工清洗规则
\n\n
\n setFormDataProps('function_name', val)}\n />\n
\n setFormDataProps('function_handle', val)}\n />\n
\n
\n \n
\n )\n}\n\nconst mapState = state => ({\n labelRuleConfig: state.labelManagement.labelRuleConfig\n})\n\nconst mapDispatch = dispatch => ({\n updateExample: dispatch.labelManagement.updateExample,\n updateLabelRuleConfig: dispatch.labelManagement.updateLabelRuleConfig\n})\n\nexport default connect(mapState, mapDispatch)(LabelRuleConfig)\n","import { useRef, useEffect, useState } from 'react'\nimport { connect } from 'react-redux'\nimport Steps from '@common/Steps'\nimport LabelTest from './LabelTest'\nimport LabelRuleConfig from './LabelRuleConfig'\nimport Message from '@common/Message'\nimport Dialog from '@common/Dialog'\nimport { commonApi } from '@utils/request'\nimport { insertOrderRule, updateOrderRule } from '@services/labelManagement'\nimport _ from 'lodash'\n\nlet curNext = _.noop\n\nfunction StepWin(props) {\n const {\n showSteps, isEdit, hideStepsFunc, labelRuleConfig, record, updateLabelRuleConfig, updatePage, updateLabelRuleConfigID, labelRuleConfigID\n } = props\n\n const formRef = useRef(null)\n const [visible, setVisible] = useState(false)\n const [curIsEdit, setCurIsEdit] = useState(false)\n\n useEffect(() => {\n if (!isEdit || _.isEmpty(record)) {\n updateLabelRuleConfig({})\n } else {\n updateLabelRuleConfig(record)\n }\n }, [record, isEdit])\n\n const stepMenu = [\n [\n {\n stepNumber: 'one',\n title: '标签规则配置',\n component: ,\n nextBtn: '保存&下一步'\n }\n ],\n [\n {\n stepNumber: 'two',\n title: '标签测试',\n component: ,\n prevBtn: '上一步',\n nextBtn: '完成'\n }\n ]\n ]\n\n // 上一步\n function handlePrevBtn(curIndex, next) {\n // console.log('handlePrevBtn: ', curIndex);\n // 如果回到上一步,保存走编辑逻辑\n setCurIsEdit(true)\n next()\n }\n\n function handleSure() {\n setVisible(false)\n onSumit()\n }\n\n function onSumit() {\n const api = (isEdit || curIsEdit) ? updateOrderRule : insertOrderRule\n commonApi(api, {\n field: labelRuleConfig,\n ...isEdit ? {\n id: record.id\n } : {},\n ...curIsEdit ? {\n id: labelRuleConfigID\n } : {}\n }).then(data => {\n updateLabelRuleConfigID(data.id || '')\n updatePage()\n curNext()\n }).catch(err => Message.error(err))\n }\n\n // 下一步\n function handleNextBtn(curIndex, next) {\n curNext = next\n\n switch (curIndex) {\n\n // 标签规则配置,点击保存&下一步按钮触发逻辑\n case 0:\n formRef.current.validate(valid => {\n const { function_name, function_handle } = labelRuleConfig\n const isPass = valid && (!!function_name ? !!function_handle : true)\n if (isPass) { // 校验成功进入下一步\n\n if (isEdit || curIsEdit) {\n setVisible(true)\n } else {\n onSumit()\n }\n }\n })\n break;\n\n // 标签测试后,点击完成按钮触发逻辑\n case 1:\n hideStepsFunc(false) // 关闭步骤弹窗\n break;\n\n default:\n break;\n }\n }\n\n return (\n <>\n {\n showSteps &&\n \n }\n {\n visible &&\n setVisible(false)}\n onSureClick={handleSure}\n >\n
将暂停该标签规则,确认保存?
\n \n }\n \n )\n}\n\nconst mapState = state => ({\n labelRuleConfig: state.labelManagement.labelRuleConfig,\n labelRuleConfigID: state.labelManagement.labelRuleConfigID\n})\n\nconst mapDispatch = dispatch => ({\n updateLabelRuleConfig: dispatch.labelManagement.updateLabelRuleConfig,\n updateLabelRuleConfigID: dispatch.labelManagement.updateLabelRuleConfigID\n})\n\nexport default connect(mapState, mapDispatch)(StepWin)\n","import { useRef, useState, useEffect, useReducer } from 'react'\nimport _ from 'lodash'\nimport Drawer from \"@common/Drawer\"\nimport Form from \"@common/Form_D\"\nimport Select from '@common/Select'\nimport DateTimePicker from '@common/DateTimePicker'\nimport Message from '@common/Message'\n\nfunction notEmpty(val) {\n return !!val\n}\n\nconst rules = {\n standard: [\n { func: notEmpty, message: '请选择标签名称' }\n ],\n rule: [\n { func: notEmpty, message: '请选择标签规则' }\n ],\n range_time: [\n { func: notEmpty, message: '请选择时间范围' }\n ]\n}\n\nconst initForm = {\n standard: '',\n rule: '',\n range_time: '',\n}\n\nexport default function EditWin(props) {\n const { showEditWin, setShowEditWin, updatePage } = props\n \n const formRef = useRef(null)\n const [formData, setFormData] = useState(initForm)\n\n function updateFormData(key, val) {\n console.log('=-=-=-=-=-=-=-=-updateFormData: ', key, val);\n let cloneFormData = _.cloneDeep(formData)\n cloneFormData[key] = val\n setFormData(cloneFormData)\n }\n\n function onSubmit() {\n formRef.current.validate(valid => {\n console.log('*******valid, formData: ', valid, formData);\n // if (valid) {\n // const params = {\n // ...formData\n // }\n // api({\n // data: params\n // }).then(res => {\n // const code = _.get(res, 'data.code')\n // if (code === 0) {\n // let msg = '添加配置成功'\n // Message.success(msg)\n // setShowEditWin(false)\n // updatePage()\n // } else {\n // let tip = ='添加配置失败'\n // const msg = _.get(res, 'data.msg') || tip\n // Message.error(msg)\n // }\n // }).catch(() => Message.error(\"接口异常\"))\n // }\n })\n }\n\n return (\n setShowEditWin(false)}\n onCancelClick={() => setShowEditWin(false)}\n onSureClick={onSubmit}\n >\n \n
\n \n updateFormData(r => _.assign({}, r, {\n // standard: val,\n // topic: item.text\n // }))}\n />\n \n \n updateFormData(r => _.assign({}, r, {\n // rule: val,\n // topic: item.text\n // }))}\n />\n \n \n updateFormData('range_time', val)}\n />\n \n
\n
\n \n )\n}","import SdwBreadCrumbs from '@common/BreadCrumbs'\nimport SdwTabs from '@common/Tabs'\nimport LabelStandardManagement from './LabelStandardManagement'\nimport TicketLabelRules from './TicketLabelRules'\nimport UserLabelRules from './UserLabelRules'\nimport OfflineTaskManagement from './OfflineTaskManagement'\nimport { hasPriv } from '@components/FrontendAuth/AuthMap'\n\nconst menu = [\n {\n title: '标签标准管理',\n path: '/labelStandardManagement',\n component: LabelStandardManagement,\n priv: 'standardManage'\n }, {\n title: '工单标签规则',\n path: '/ticketLabelRules',\n component: TicketLabelRules,\n priv: 'orderRule'\n }\n // 一期暂时隐藏\n // , {\n // title: '用户标签规则',\n // path: '/userLabelRules',\n // component: UserLabelRules,\n // }\n , {\n title: '离线任务管理',\n path: '/offlineTaskManagement',\n component: OfflineTaskManagement,\n priv: 'taskFlow'\n }\n]\n\nexport default function LabelManagement(props) {\n\n const hasPrivMenu = menu.filter(i => hasPriv(i.priv))\n\n return (\n <>\n \n\n
\n \n
\n \n )\n}\n","import { useState, useEffect, useCallback, useMemo } from 'react'\nimport Select from '@common/Select'\nimport Input from '@common/Input'\nimport Button from '@common/Button'\nimport Table from '@common/Table'\nimport Message from '@common/Message'\nimport Pagenation from '@common/Pagenation'\nimport BreadCrumbsAndTablde from '@components/BreadCrumbsAndTablde'\nimport _ from 'lodash'\nimport EditWin from './EditWin'\nimport { getStandardManageItems } from '@services/labelManagement'\nimport UseGetTopic from '@customHooks/UseGetTopic'\nimport { getSearchParams } from '@utils/submit'\nimport { commonApi } from '@utils/request'\nimport UseLabelName from '../common/UseLabelName'\nimport UseStandardItemSelects from '@customHooks/UseStandardItemSelects'\n\nexport default function LabelStandardManagement() {\n const getTopicRecord = UseGetTopic()\n const standardItemSelects = UseStandardItemSelects()\n\n const [curRecord, setCurRecord] = useState({})\n const [showEditWin, setShowEditWin] = useState(false)\n const [curEditItem, setCurEditItem] = useState({})\n const [isEdit, setIsEdit] = useState(false)\n const [searchParams, setSearchParams] = useState({})\n const [pageConfig, setPageConfig] = useState({})\n const [labelName, setLabelName] = useState('')\n const standardManageItems = UseLabelName(labelName, true)\n const [labelTypeArr, setLabelTypeArr] = useState([])\n\n const topicArr = useMemo(() => {\n return _.isArray(_.get(getTopicRecord, 'topic')) ? _.get(getTopicRecord, 'topic') : []\n }, [getTopicRecord])\n\n const businessArr = useMemo(() => {\n return _.isArray(_.get(getTopicRecord, 'business')) ? _.get(getTopicRecord, 'business') : []\n }, [getTopicRecord])\n\n const curBusinessList = useMemo(() => {\n return _.isArray(_.get(getTopicRecord, 'business')) ? _.get(getTopicRecord, 'business').filter(j => j.topic_id == searchParams.topic).map(i => ({\n ...i,\n id: i.id,\n text: i.business_name\n })) : []\n }, [getTopicRecord, searchParams.topic])\n\n useEffect(() => {\n const labelType = _.get(standardItemSelects, 'label_type') || []\n setLabelTypeArr(labelType.map(i => ({\n id: String(i.value),\n text: i.name\n })))\n }, [standardItemSelects])\n\n useEffect(() => {\n initData()\n }, [searchParams, pageConfig])\n\n function initData() {\n const params = _.assign({}, searchParams, {\n 'a.create_user': searchParams.create_user,\n create_user: '',\n 'a.topic': searchParams.topic,\n topic: ''\n })\n commonApi(getStandardManageItems, {\n ...pageConfig,\n search: getSearchParams(params, ['a.create_user', 'label_name'])\n }).then(data => {\n setCurRecord(data)\n }).catch(err => Message.error(err))\n }\n\n const getcolumns = useCallback(\n () => {\n return [\n {\n title: 'ID',\n dataIndex: 'id',\n width: 20\n }, {\n title: '标签名称',\n dataIndex: 'label_name',\n }, {\n title: '标签ID',\n dataIndex: 'task_label_id',\n }, {\n title: '数据标准',\n dataIndex: 'field_name_ch',\n }, {\n title: '标签类型',\n render: data => {\n if (_.isEmpty(labelTypeArr) || !_.isArray(labelTypeArr)) return\n const record = labelTypeArr.find(i => i.id == data.label_type) || {}\n return (\n { record['text'] || '-' }\n )\n }\n }, {\n title: '所属主题域',\n render: data => {\n if (_.isEmpty(topicArr) || !_.isArray(topicArr)) return\n const topicRecord = topicArr.find(i => i.id == data.topic) || {}\n return (\n { topicRecord['topic_name'] || '-' }\n )\n }\n }, {\n title: '所属业务',\n render: data => {\n if (_.isEmpty(businessArr) || !_.isArray(businessArr)) return\n const businessRecord = businessArr.find(i => i.id == data.service) || {}\n return (\n { businessRecord['business_name'] || '-' }\n )\n }\n }, {\n title: '加工规则数',\n dataIndex: 'rule_num',\n }, {\n title: '创建人',\n dataIndex: 'create_user',\n }, {\n title: '修改时间',\n dataIndex: 'update_time',\n }, {\n title: '操作',\n render: data => (\n onEdit(data)}\n />\n )\n }\n ]\n },\n [topicArr, businessArr, labelTypeArr],\n )\n\n function onCreate() {\n setIsEdit(false)\n setCurEditItem({})\n setShowEditWin(true)\n }\n\n function onEdit(item) {\n setIsEdit(true)\n setCurEditItem(item)\n setShowEditWin(true)\n }\n\n function updateParams(key, val) {\n let cloneParams = _.cloneDeep(searchParams)\n cloneParams[key] = val\n setSearchParams(cloneParams)\n }\n\n const topicList = useMemo(() => {\n return topicArr.map(i => ({\n id: i.id,\n text: i.topic_name\n }))\n }, [topicArr])\n\n const businessList = useMemo(() => {\n return businessArr.map(i => ({\n id: i.id,\n text: i.business_name\n }))\n }, [businessArr])\n\n return (\n
\n \n \n {\n setPageConfig(r => _.assign({}, r, {\n page: 1\n }))\n updateParams('label_name', val)\n }}\n />\n\n {\n setPageConfig(r => _.assign({}, r, {\n page: 1\n }))\n updateParams('label_type', val)\n }}\n />\n\n {\n setPageConfig(r => _.assign({}, r, {\n page: 1\n }))\n updateParams('topic', val)\n }}\n />\n\n {\n setPageConfig(r => _.assign({}, r, {\n page: 1\n }))\n updateParams('service', val)\n }}\n />\n\n {\n setPageConfig(r => _.assign({}, r, {\n page: 1\n }))\n updateParams('create_user', val)\n }}\n />\n \n \n \n \n \n \n\n setPageConfig(r => _.assign({}, r, {\n page\n })) }\n pageCountChange={ limit => setPageConfig(r => _.assign({}, r, {\n limit\n })) }\n />\n \n \n\n {\n showEditWin &&\n \n }\n\n
\n )\n}\n","import { useState, useEffect, useCallback } from 'react'\nimport _ from 'lodash'\nimport Select from '@common/Select'\nimport Input from '@common/Input'\nimport Button from '@common/Button'\nimport Table from '@common/Table'\nimport Pagenation from '@common/Pagenation'\nimport BreadCrumbsAndTablde from '@components/BreadCrumbsAndTablde'\nimport { getOrderRuleItems } from '@services/labelManagement'\nimport Message from '@common/Message/index'\nimport { commonApi } from '@utils/request'\nimport EditWin from './EditWin'\nimport StepWin from './StepWin'\nimport UseStandardItemSelects from '@customHooks/UseStandardItemSelects'\nimport { getSearchParams } from '@utils/submit'\nimport UseLabelName from '../common/UseLabelName'\nimport './index.css'\n\nexport default function TicketLabelRules() {\n const standardItemSelects = UseStandardItemSelects()\n\n const [curRecord, setCurRecord] = useState({})\n const [showEditWin, setShowEditWin] = useState(false)\n const [curEditItem, setCurEditItem] = useState({})\n const [isEdit, setIsEdit] = useState(false)\n const [showSteps, setShowSteps] = useState(false)\n const [statusArr, setStatusArr] = useState([])\n const [ruleTypeArr, setRuleTypeArr] = useState([])\n const [pageConfig, setPageConfig] = useState({})\n const [searchParams, setSearchParams] = useState({})\n const [labelName, setLabelName] = useState('')\n const standardManageItems = UseLabelName(labelName, true)\n\n useEffect(() => {\n initData()\n }, [pageConfig, searchParams])\n\n useEffect(() => {\n const ruleConfigStatus = _.get(standardItemSelects, 'rule_config_status') || []\n const ruleType = _.get(standardItemSelects, 'rule_type') || []\n setStatusArr(ruleConfigStatus.map(i => ({\n id: String(i.value),\n text: i.name\n })))\n setRuleTypeArr(ruleType.map(i => ({\n id: String(i.value),\n text: i.name\n })))\n }, [standardItemSelects])\n\n function initData() {\n const params = _.assign({}, searchParams, {\n 'a.create_user': searchParams.create_user,\n create_user: ''\n })\n commonApi(getOrderRuleItems, {\n ...pageConfig,\n search: getSearchParams(params, ['a.create_user'])\n }).then(data => {\n setCurRecord(data)\n }).catch(err => Message.error(err))\n }\n\n const getcolumns = useCallback(\n () => {\n return [\n {\n title: 'ID',\n dataIndex: 'id',\n width: 20\n }, {\n title: '标签名称',\n dataIndex: 'label_name',\n }, {\n title: '规则名称',\n dataIndex: 'rule_name',\n }, {\n title: '规则类型',\n dataIndex: 'rule_type_ch',\n }, {\n title: '加工方式',\n dataIndex: 'process_way_ch',\n }, {\n title: '状态',\n // dataIndex: 'status_ch',\n render: data => { data.status_ch }\n }, {\n title: '创建人',\n dataIndex: 'create_user',\n }, {\n title: '修改时间',\n dataIndex: 'update_time',\n }, {\n title: '操作',\n render: data => (\n <>\n onEdit(data)}\n />\n onSubmitTask(data)}\n />\n \n )\n }\n ]\n },\n [],\n )\n\n function onCreate() {\n setIsEdit(false)\n setCurEditItem({})\n setShowSteps(true)\n }\n\n function onEdit(item) {\n setIsEdit(true)\n setCurEditItem(item)\n setShowSteps(true)\n }\n\n function onSubmitTask(item) {\n // console.log('-----onSubmitTask: ', item);\n setCurEditItem(item)\n setShowEditWin(true)\n }\n\n function updateParams(key, val) {\n let cloneParams = _.cloneDeep(searchParams)\n cloneParams[key] = val\n setSearchParams(cloneParams)\n }\n\n return (\n <>\n \n \n {\n setPageConfig(r => _.assign({}, r, {\n page: 1\n }))\n updateParams('label_name', val)\n }}\n />\n\n {\n setPageConfig(r => _.assign({}, r, {\n page: 1\n }))\n updateParams('rule_type', val)\n }}\n />\n\n {\n setPageConfig(r => _.assign({}, r, {\n page: 1\n }))\n updateParams('status', val)\n }}\n />\n\n {\n setPageConfig(r => _.assign({}, r, {\n page: 1\n }))\n updateParams('create_user', val)\n }}\n />\n \n \n \n \n \n \n\n setPageConfig(r => _.assign({}, r, {\n page\n })) }\n pageCountChange={ limit => setPageConfig(r => _.assign({}, r, {\n limit\n })) }\n />\n \n \n\n {/* 提交任务弹窗 */}\n \n\n {/* 新增任务 */}\n \n \n )\n}\n","import { useState, useEffect, useCallback } from 'react'\nimport Select from '@common/Select'\nimport Input from '@common/Input'\nimport Button from '@common/Button'\nimport Message from '@common/Message'\nimport Table from '@common/Table'\nimport Pagenation from '@common/Pagenation'\nimport BreadCrumbsAndTablde from '@components/BreadCrumbsAndTablde'\nimport _ from 'lodash'\nimport EditWin from './EditWin'\nimport UseLabelName from '../common/UseLabelName'\nimport { getTaskFlowItems } from '@services/labelManagement'\nimport { commonApi } from '@utils/request'\nimport { getSearchParams } from '@utils/submit'\nimport UseStandardItemSelects from '@customHooks/UseStandardItemSelects'\n\nexport default function OfflineTaskManagement() {\n const standardItemSelects = UseStandardItemSelects()\n\n const [curRecord, setCurRecord] = useState({})\n const [showEditWin, setShowEditWin] = useState(false)\n const [pageConfig, setPageConfig] = useState({})\n const [labelName, setLabelName] = useState('')\n const [searchParams, setSearchParams] = useState({})\n const [statusArr, setStatusArr] = useState([])\n const standardManageItems = UseLabelName(labelName, true)\n\n useEffect(() => {\n initData()\n }, [pageConfig, searchParams])\n\n useEffect(() => {\n const taskFlowStatus = _.get(standardItemSelects, 'task_flow_status') || []\n setStatusArr(taskFlowStatus.map(i => ({\n id: String(i.value),\n text: i.name\n })))\n }, [standardItemSelects])\n\n function initData() {\n const params = _.assign({}, searchParams, {\n 'c.label_name': searchParams.label_name,\n label_name: '',\n 'a.status': searchParams.status,\n status: '',\n 'a.create_user': searchParams.create_user,\n create_user: '',\n })\n commonApi(getTaskFlowItems, {\n ...pageConfig,\n search: getSearchParams(params, ['a.create_user'])\n }).then(data => {\n setCurRecord(data)\n }).catch(err => Message.error(err))\n }\n\n function updateParams(key, val) {\n let cloneParams = _.cloneDeep(searchParams)\n cloneParams[key] = val\n setSearchParams(cloneParams)\n }\n\n const getcolumns = useCallback(\n () => {\n return [\n {\n title: 'ID',\n dataIndex: 'id',\n width: 20\n }, {\n title: '标签标准ID',\n dataIndex: 'standard_id',\n width: 40\n }, {\n title: '关联标准',\n dataIndex: 'label_name',\n }, {\n title: '标签类型',\n dataIndex: 'label_type_ch',\n }, {\n title: '标签规则ID',\n dataIndex: 'rule_id',\n width: 40\n }, {\n title: '标签规则',\n dataIndex: 'rule_name',\n }, {\n title: '重跑范围开始时间',\n dataIndex: 'start_time',\n }, {\n title: '重跑范围结束时间',\n dataIndex: 'end_time',\n }, {\n title: '任务创建时间',\n dataIndex: 'create_time',\n }, {\n title: '创建人',\n dataIndex: 'create_user',\n }, {\n title: '任务完成时间',\n dataIndex: 'finish_time',\n }, {\n title: '状态',\n dataIndex: 'status_ch',\n }\n ]\n },\n [],\n )\n\n return (\n <>\n \n \n {\n setPageConfig(r => _.assign({}, r, {\n page: 1\n }))\n updateParams('label_name', val)\n }}\n />\n\n {\n setPageConfig(r => _.assign({}, r, {\n page: 1\n }))\n updateParams('status', val)\n }}\n />\n\n {\n setPageConfig(r => _.assign({}, r, {\n page: 1\n }))\n updateParams('create_user', val)\n }}\n />\n \n {/* \n setShowEditWin(true)}\n />\n */}\n \n \n\n setPageConfig(r => _.assign({}, r, {\n page\n })) }\n pageCountChange={ limit => setPageConfig(r => _.assign({}, r, {\n limit\n })) }\n />\n \n \n\n {\n showEditWin &&\n \n }\n \n )\n}\n","import {request} from '../utils/request'\n\n//标签分页\nexport function getItems(params) {\n return request({url: '/tagmanage/userManager/items', method: 'post', data: params})\n}\n\n//保存标签\nexport function saveConfig(params) {\n return request({url: '/tagmanage/userManager/saveConfig', method: 'post', data: params})\n}\n\n//保存标签规则\nexport function saveRuleConfig(params) {\n return request({url: '/tagmanage/userManager/saveRuleConfig', method: 'post', data: params})\n}\n\n//查看标签详情\nexport const searchDetail = params => {\n return request({url: '/tagmanage/userManager/searchDetail', method: 'get', params: params})\n}\n\n//标签启用停用\nexport function switchStatus(params) {\n return request({url: '/tagmanage/userManager/switchStatus', method: 'post', data: params})\n}\n\n//查询变动日志\nexport function searchChangeLogs(params) {\n return request({url: '/tagmanage/userManager/searchChangeLogs', method: 'post', data: params})\n}\n\n//标签测试接口\nexport function labelTest(params) {\n return request({url: '/tagmanage/userManager/labelTest', method: 'post', data: params})\n}\n\n//获取数据源\nexport function getRuleDataSource(params) {\n return request({url: '/tagmanage/userManager/getRuleDataSource', method: 'get', params: params})\n}\n\n//获取数据源\nexport function getTablecfgList(params) {\n return request({ url: '/metadata/tableApi/getTablecfgList', method: 'get', params: params })\n}\n\n//获取运行日志详情\nexport function searchLogs(params) {\n return request({url: '/tagmanage/userManager/searchLogs', method: 'post', data: params})\n}\n","import React from 'react'\nimport _ from 'lodash'\nimport {Button} from 'element-react'\nimport SdwInput from '@common/Input'\nimport SdwSelect from '@common/Select'\nimport SdwButton from '@common/Button'\nimport Table from '@common/Table'\nimport Pagenation from '@common/Pagenation'\nimport BreadCrumbsAndTablde from '@components/BreadCrumbsAndTablde'\nimport BreadCrumbs from '@common/BreadCrumbs'\nimport Message from '@common/Message'\nimport {hasPriv} from '@components/FrontendAuth/AuthMap'\nimport {getItems, getRuleDataSource} from '@services/labelProcess'\nimport {getTopicBusiness} from '@services/Derived'\nimport {withRouter} from 'react-router-dom'\nimport './index.css'\n\nclass UserLabel extends React.PureComponent {\n\n state = {\n searchData: {\n page: 1,\n limit: 10\n },\n tableData: {},\n search: {\n \"a.id\": {\"operator\": \"in\", \"value\": \"\"}, // 标签ID\n \"a.tag_name_ch\": {\"operator\": \"like\", \"value\": \"\"}, // 标签名称\n \"a.topic\": {\"operator\": \"=\", \"value\": \"\"}, // 主题域\n \"a.enable\": {\"operator\": \"=\", \"value\": \"\"}, // 状态查询\n \"b.data_source\": {\"operator\": \"=\", \"value\": \"\"}, // 数据源\n },\n topicData: [],\n topicDic: {},\n ruleDataSourceList: [],\n }\n\n componentDidMount() {\n this.getTopicBusiness()\n this.getItems()\n this.getRuleDataSource()\n }\n\n getRuleDataSource = () => {\n let params = {\n limit: 2000\n }\n getRuleDataSource(params).then(res => {\n if (res && res.data && res.data.code === 0) {\n let record = res.data.data || []\n let dataSource = record.map(item => {\n return {\n id: item.id,\n text: `${item.data_set_chinese}(${item.database_name})`,\n item: item\n }\n })\n let newArr = {}\n let list = dataSource.reduce((arr, current) => {\n if (!newArr[current.id]) {\n newArr[current.id] = current.id\n arr.push(current)\n }\n return arr\n }, [])\n this.setState({\n ruleDataSourceList: list\n })\n }\n })\n }\n\n // 获取主题列表\n getTopicBusiness = () => {\n getTopicBusiness().then((res) => {\n if (res && res.data && res.data.code === 0) {\n this.setState({topicData: res.data.data || []})\n let topicDic = {}\n for (let i = 0; i < res.data.data.length; i++) {\n let topicId = res.data.data[i].value\n if (!topicDic.hasOwnProperty(topicId)) {\n topicDic[topicId] = res.data.data[i]\n }\n }\n this.setState({topicDic: topicDic})\n }\n })\n }\n\n getItems = () => {\n const {searchData} = this.state\n let params = {\n \"search\": {},\n ...searchData\n }\n for (const i in this.state.search) {\n const dval = this.state.search[i]\n if (dval.value) {\n if (i != \"id\") {\n params.search[i] = dval\n }\n }\n }\n getItems(params).then((res) => {\n if (res && res.data && res.data.code === 0) {\n let items = res.data.data || {}\n this.setState({\n tableData: items\n })\n }\n }).catch(error => {\n Message.error('接口异常:' + error)\n })\n }\n\n getColumns = () => {\n let self = this\n return [\n {\n title: 'ID',\n dataIndex: 'id',\n width: 38\n },\n {\n title: '标签名称',\n width: 140,\n render: data => (\n {`${data.tag_name_ch}(${data.label_name})`}\n )\n },\n {\n title: '主题域/业务',\n width: 120,\n render: data => {\n let {topicDic} = self.state\n let {topic, business} = data\n let topicRecord = topicDic[topic]\n let topicName = '-'\n let children = []\n let businessName = '-'\n if (!!topicRecord) {\n topicName = topicDic[topic].label\n children = topicDic[topic].children || []\n businessName = children.filter(i => i.value == business)[0] && children.filter(i => i.value == business)[0].label || ''\n }\n return (\n {`${topicName}/${businessName}`}\n )\n }\n },\n {\n title: '标签介绍',\n dataIndex: 'intro',\n width: 158\n },\n {\n title: '数据源',\n width: 240,\n render: data => (\n {\n data.data_source.data_set_chinese && data.data_source.database_name ?\n `${data.data_source.data_set_chinese}(${data.data_source.database_name})` : '-'\n }\n )\n },\n {\n title: '状态',\n width: 54,\n render: data => (\n \n {Boolean(+data.enable) ? '已启用' : '未启用'}\n \n )\n },\n {\n title: '修改人',\n dataIndex: 'modify_user',\n width: 88\n },\n {\n title: '修改时间',\n dataIndex: 'modify_time',\n width: 144\n },\n {\n title: '操作',\n width: 68,\n render: data => (\n <>\n {\n hasPriv(\"saveUserLabel\") &&\n self.addOrEdit(data.id)}\n style={{\"fontSize\": \"14px\"}}\n >编辑\n }\n {\n hasPriv(\"userLabelDetail\") &&\n self.jumpToDetail(data)}\n style={{\"fontSize\": \"14px\"}}\n >详情\n }\n \n )\n },\n ]\n }\n\n addOrEdit = id => {\n this.props.history.push(`/admin/labelProcess/userLabelWin/${id}`)\n }\n\n jumpToDetail = record => {\n this.props.history.push(`/admin/labelProcess/userLabelDetail/${record.id}`)\n }\n\n render() {\n let {\n searchData,\n tableData,\n topicData,\n search,\n ruleDataSourceList,\n } = this.state\n\n // console.log(\"-------search\", search)\n\n return (\n <>\n \n\n
\n \n \n {\n this.setState({\n searchData: Object.assign({}, searchData, {\n page: 1\n }),\n search: Object.assign({}, search, {\n 'a.id': Object.assign({}, search['a.id'], {\n value: val\n })\n })\n }, this.getItems)\n }}\n />\n {\n this.setState({\n searchData: Object.assign({}, searchData, {\n page: 1\n }),\n search: Object.assign({}, search, {\n 'a.tag_name_ch': Object.assign({}, search['a.tag_name_ch'], {\n value: val\n })\n })\n }, this.getItems)\n }}\n />\n {\n return {\n id: el.value,\n text: el.label\n }\n })}\n onChange={val => {\n this.setState({\n searchData: Object.assign({}, searchData, {\n page: 1\n }),\n search: Object.assign({}, search, {\n \"a.topic\": Object.assign({}, search[\"a.topic\"], {\n value: val\n })\n })\n }, this.getItems)\n }}\n />\n {\n this.setState({\n searchData: Object.assign({}, searchData, {\n page: 1\n }),\n search: Object.assign({}, search, {\n \"b.data_source\": Object.assign({}, search[\"b.data_source\"], {\n value: val\n })\n })\n }, this.getItems)\n }}\n />\n {\n this.setState({\n searchData: Object.assign({}, searchData, {\n page: 1\n }),\n search: Object.assign({}, search, {\n \"a.enable\": Object.assign({}, search[\"a.enable\"], {\n value: val\n })\n })\n }, this.getItems)\n }}\n />\n \n\n \n {\n hasPriv(\"saveUserLabel\") &&\n this.addOrEdit(0)}\n />\n }\n \n\n \n \n {\n this.setState({\n searchData: _.assign({}, searchData, {page})\n }, this.getItems)\n }}\n pageCountChange={limit => {\n this.setState({\n searchData: _.assign({}, searchData, {limit})\n }, this.getItems)\n }}\n />\n \n \n
\n \n )\n }\n}\n\nexport default withRouter(UserLabel)\n","import {useEffect, useState, useMemo} from 'react'\nimport _ from 'lodash'\nimport Layout from '@common/Layout'\nimport {getPublicCfg} from '@services/Derived'\nimport UseGetTopic from '@customHooks/UseGetTopic'\nimport '../index.css'\n\nfunction BasicPage(prop) {\n\n const getTopicRecord = UseGetTopic()\n const [cfgData, setCfgData,] = useState({})\n // console.log('cfgData======', cfgData)\n\n useEffect(() => {\n getPublicCfg().then(res => {\n if (res.data.code === 0 && res.data.data) {\n let cfgData = {}\n for (let i in res.data.data) {\n cfgData[i] = res.data.data[i]\n }\n setCfgData(cfgData)\n }\n })\n }, [])\n\n let labelDetail = prop.labelDetail\n // console.log('labelDetail======', labelDetail)\n\n // 主题域\n const topicArr = useMemo(() => {\n return _.isArray(_.get(getTopicRecord, 'topic')) ? _.get(getTopicRecord, 'topic') : []\n }, [getTopicRecord])\n const topicValue = topicArr.find(i => i.id == labelDetail.topic) || {}\n\n // 业务\n const businessArr = useMemo(() => {\n return _.isArray(_.get(getTopicRecord, 'business')) ? _.get(getTopicRecord, 'business') : []\n }, [getTopicRecord])\n const businessValue = businessArr.find(i => i.id == labelDetail.business) || {}\n\n // 敏感等级\n let sensitivityList = {'1': 'L1', '2': 'L2', '3': 'L3', '4': 'L4', '5': 'L5'}\n let sensitivityValue = sensitivityList[labelDetail.sensitivity]\n\n // 标签值类型\n if (cfgData.hasOwnProperty('label_value_type')) {\n cfgData['label_value_type'].forEach(element => {\n if (element.value == labelDetail.label_value_type) {\n labelDetail.label_value_type_ch = element.name\n }\n })\n }\n\n // 有效期\n if (cfgData.hasOwnProperty('label_validate_select')) {\n cfgData['label_validate_select'].forEach(element => {\n if (element.value == labelDetail.life_cycle) {\n labelDetail.life_cycle_ch = element.name\n }\n })\n }\n\n return (\n
\n
\n \n \n
\n 标签负责人\n {labelDetail.onwer || '-'}\n
\n
\n \n
\n 标签需求方\n {labelDetail.require_rtx || '-'}\n
\n
\n
\n \n \n
\n 一级分类\n {labelDetail.first_classify || '-'}\n
\n
\n \n
\n 二级分类\n {labelDetail.second_classify || '-'}\n
\n
\n
\n \n \n
\n 所属主题域\n {topicValue['topic_name'] || '-'}\n
\n
\n \n
\n 所属业务\n {businessValue['business_name'] || '-'}\n
\n
\n
\n \n \n
\n 敏感等级\n {sensitivityValue || '-'}\n
\n
\n \n
\n 标签值类型\n {labelDetail.label_value_type_ch || '-'}\n
\n
\n
\n \n \n
\n 标签备注\n {labelDetail.remark || '-'}\n
\n
\n \n
\n 有效期\n {labelDetail.life_cycle_ch || '-'}\n
\n
\n
\n \n \n
\n 标签值示例\n {labelDetail.value_mapping || '-'}\n
\n
\n
\n
\n
\n )\n}\n\nexport default BasicPage","import {useEffect, useState} from 'react'\nimport _ from 'lodash'\nimport Layout from '@common/Layout'\nimport {getPublicCfg} from '@services/Derived'\n\nimport '../index.css'\n\nfunction InfoPage(prop) {\n\n const [cfgData, setCfgData,] = useState({})\n\n useEffect(() => {\n getPublicCfg().then(res => {\n if (res.data.code === 0 && res.data.data) {\n let cfgData = {}\n for (let i in res.data.data) {\n cfgData[i] = res.data.data[i]\n }\n setCfgData(cfgData)\n }\n })\n }, [])\n\n\n let labelDetail = prop.labelDetail\n let ruleData = labelDetail.rule_data\n let dataSource = labelDetail.data_source\n\n if (cfgData.hasOwnProperty(\"label_process_type\")) {\n cfgData[\"label_process_type\"].forEach(element => {\n if (element.value == ruleData.deal_type) {\n ruleData.deal_type_ch = element.name\n }\n });\n }\n\n // console.log(\"ruleData=================\", ruleData.handle)\n\n if (cfgData.hasOwnProperty(\"label_schedule_type\")) {\n cfgData[\"label_schedule_type\"].forEach(element => {\n if (element.value == ruleData.run_cycle) {\n ruleData.run_cycle_ch = element.name\n }\n });\n }\n\n if (cfgData.hasOwnProperty(\"label_multi_value\")) {\n cfgData[\"label_multi_value\"].forEach(element => {\n if (element.value == ruleData.multi_type) {\n ruleData.multi_type_ch = element.name\n }\n });\n }\n\n if (cfgData.hasOwnProperty(\"label_time_range\")) {\n cfgData[\"label_time_range\"].forEach(element => {\n if (element.value == ruleData.time_cycle) {\n ruleData.time_cycle_ch = element.name\n }\n });\n }\n\n\n return (\n
\n
\n {\n _.isEmpty(dataSource) && _.isEmpty(ruleData) ?\n \"-\" : `${dataSource.data_set_chinese}(${dataSource.database_name})|${ruleData.deal_type_ch}`\n }\n
\n\n
\n \n \n
\n 调度周期\n {ruleData.run_cycle_ch || \"-\"}\n
\n
\n \n
\n 关联字段\n {ruleData.user_fields || \"-\"}\n
\n
\n
\n \n \n
\n 提取字段\n {ruleData.label_field || \"-\"}\n
\n
\n \n
\n 时间范围\n {\n ruleData.time_field && ruleData.time_cycle_ch ?\n `${ruleData.time_field}(${ruleData.time_cycle_ch})` : \"-\"\n }\n
\n
\n
\n \n \n
\n 过滤条件\n {ruleData.filter || \"-\"}\n
\n
\n \n
\n 多值处理\n {ruleData.multi_type_ch || \"-\"}\n
\n
\n
\n \n \n
\n 加工规则\n {ruleData.handle || \"-\"}\n
\n
\n
\n
\n
\n )\n}\n\nexport default InfoPage\n","import React, {useEffect, useState} from 'react'\nimport _ from 'lodash'\nimport Table from '@common/Table'\nimport Pagenation from '@common/Pagenation'\nimport {searchLogs} from '@api/labelProcess'\n\nimport '../index.css'\n\nfunction DetailPage(prop) {\n\n let labelDetail = prop.labelDetail\n console.log(\"labelDetail===========\", labelDetail)\n\n const [logDetail, setLogDetail] = useState({})\n const [searchParams, setSearchParams] = useState({\n limit: 10,\n page: 1\n })\n\n useEffect(() => {\n let params = {\n \"id\": labelDetail.id, // 标签id\n ...searchParams,\n }\n searchLogs(params).then(res => {\n if (res && res.data && res.data.code === 0) {\n let logDetail = res.data.data || {}\n console.log(\"logDetail------------------------\", logDetail)\n setLogDetail(logDetail)\n }\n })\n }, [searchParams])\n\n function getColumns() {\n return [\n {\n title: 'ID',\n dataIndex: 'id',\n width: 18\n },\n {\n title: '标签名称',\n dataIndex: 'label_name',\n width: 100\n },\n {\n title: '入库量',\n dataIndex: 'write_count',\n width: 30\n },\n {\n title: '入库时间',\n dataIndex: 'create_time',\n width: 80\n },\n {\n title: '入库结果',\n width: 30,\n render: data => {\n let arr = {\n \"0\": \"未开始\",\n \"1\": \"进行中\",\n \"2\": \"已完成\",\n \"3\": \"失败\",\n \"4\": \"已取消\",\n }\n let msg = arr[data.status]\n return {msg}\n }\n },\n {\n title: '入库日志',\n dataIndex: 'log_detail',\n width: 300\n }\n ]\n }\n\n function updateSearchParams(type, val) {\n setSearchParams(r => _.assign({}, r, {\n [type]: val\n }))\n }\n\n return (\n
\n
\n 入库总量:{labelDetail.result_user_total}\n \n \n {labelDetail.enable ? '开始启用' : '暂未启用'} {labelDetail.import_first_time ? '首次入库时间' : ''} {labelDetail.import_first_time}\n \n \n {labelDetail.import_last_time ? '|' : ''}\n \n \n {labelDetail.import_last_time ? '最近更新' : ''} {labelDetail.import_last_time}\n \n
\n \n updateSearchParams('page', val)}\n pageCountChange={val => updateSearchParams('limit', val)}\n />\n
\n )\n}\n\nexport default DetailPage\n","import Table from '@common/Table'\nimport Pagenation from '@common/Pagenation'\nimport { useEffect, useState } from 'react'\n\nimport {searchChangeLogs} from '@services/labelProcess'\nimport _ from 'lodash'\n\nconst OPERATE_MAP = {\n \"add\":\"新增规则\",\n \"edit\":\"编辑规则\"\n}\n\n\nfunction LogPage(prop) {\n let labelDetail = prop.labelDetail\n\n const [dataSource, setDataSource] = useState({})\n const [searchParams, setSearchParams] = useState({\n limit: 10,\n page: 1\n })\n\n useEffect(()=>{\n let params = {\n \"id\":labelDetail.id, // 标签id\n ...searchParams,\n \"search\":{}\n }\n searchChangeLogs(params).then(res => {\n if (res && res.data && res.data.code === 0) {\n let dataSource = res.data.data || {}\n setDataSource(dataSource)\n }\n })\n\n }, [searchParams])\n\n function updateSearchParams(type, val) {\n setSearchParams(r => _.assign({}, r, {\n [type]: val\n }))\n }\n\n function getColumns() {\n return [\n {\n title: '操作',\n render:(data)=>{\n return (\n {OPERATE_MAP[data.oper]}\n )\n },\n width:20,\n },\n {\n title: '变更时间',\n dataIndex: 'addtime',\n width:60,\n },\n {\n title: '处理人',\n dataIndex: 'username',\n width:20,\n },\n {\n title: '变更日志',\n dataIndex: 'newinfo',\n width:500,\n }\n ]\n }\n\n return (\n
\n \n updateSearchParams('page', val)}\n pageCountChange={val => updateSearchParams('limit', val)}\n />\n
\n )\n}\n\nexport default LogPage\n","import React from 'react'\nimport Tabs from '@common/Tabs'\nimport Button from '@common/Button'\nimport Dialog from '@common/Dialog'\nimport BreadCrumbs from '@common/BreadCrumbs'\nimport BreadCrumbsAndTablde from '@components/BreadCrumbsAndTablde'\nimport BasicPage from '@pages/LabelProcess/UserLabel/UserLabelDetail/Basic'\nimport InfoPage from '@pages/LabelProcess/UserLabel/UserLabelDetail/Info'\nimport DetailPage from '@pages/LabelProcess/UserLabel/UserLabelDetail/Detail'\nimport LogPage from '@pages/LabelProcess/UserLabel/UserLabelDetail/Log'\nimport {searchDetail, switchStatus} from '@services/labelProcess'\nimport {getPublicCfg} from '@services/Derived'\nimport {hasPriv} from '@components/FrontendAuth/AuthMap'\n\nimport './index.css'\nimport editImg from '../img/icon_16_bj@2x.png'\n\nconst Menu = [\n {\n title: '基础信息',\n path: '/BasicPage',\n component: BasicPage,\n }, {\n title: '加工信息',\n path: '/InfoPage',\n component: InfoPage,\n }, {\n title: '运行详情',\n path: '/DetailPage',\n component: DetailPage\n }, {\n title: '变更记录',\n path: '/LogPage',\n component: LogPage\n }\n]\n\nclass UserLabelDetail extends React.PureComponent {\n\n state = {\n visible: false,\n labelVisible: false,\n labelStopVisible: false,\n labelDetail: {\n rule_data: {}\n },\n cfgData: {},\n }\n\n componentDidMount() {\n this.initData()\n this.getPublicCfg()\n }\n\n initData = () => {\n let ID = this.props.match.params.id\n if (!!ID) this.searchDetail(ID)\n }\n\n getPublicCfg = () => {\n getPublicCfg().then(res => {\n if (res.data.code === 0 && res.data.data) {\n let cfgData = {}\n for (let i in res.data.data) {\n cfgData[i] = res.data.data[i]\n }\n this.setState({cfgData: cfgData})\n }\n })\n }\n\n searchDetail = id => {\n let params = {\n id: id\n }\n searchDetail(params).then(res => {\n if (res && res.data && res.data.code === 0) {\n let labelDetail = res.data.data || {}\n // console.log(\"searchDetail----labelDetail\", labelDetail)\n this.setState({\n labelDetail: labelDetail\n })\n }\n })\n }\n\n submitTask = () => {\n let labelDetail = this.state.labelDetail\n if (labelDetail.is_test_pass === 0) { //测试未通过\n this.setState({\n visible: true\n })\n } else { //测试已通过\n this.setState({\n labelVisible: true\n })\n }\n }\n\n changeDialogVisible = (type, bool) => {\n let obj = {}\n switch (type) {\n case \"visible\":\n obj = {visible: bool}\n break\n case \"labelVisible\":\n obj = {labelVisible: bool}\n break\n case \"labelStopVisible\":\n obj = {labelStopVisible: bool}\n break\n }\n this.setState({\n ...obj\n })\n }\n\n jumpToEdit = id => {\n this.props.history.push()\n this.props.history.push({\n pathname: `/admin/labelProcess/userLabelWin/${id}`,\n state: {\n backPath: \"detail\"\n }\n })\n }\n\n useLabel = (type, status) => {\n let {labelDetail} = this.state\n let params = {\n id: labelDetail.id,\n status: status\n }\n switchStatus(params).then(res => {\n if (res && res.data && res.data.code === 0) {\n this.searchDetail(labelDetail.id)\n this.changeDialogVisible(type, false)\n }\n })\n }\n\n render() {\n let {\n labelDetail,\n visible,\n labelVisible,\n labelStopVisible,\n cfgData\n } = this.state\n // console.log(\"-----------cfgData\", cfgData)\n if (cfgData.hasOwnProperty(\"label_type\")) {\n cfgData[\"label_type\"].forEach(element => {\n if (element.value == labelDetail.label_type) {\n labelDetail.label_type_ch = element.name\n }\n });\n }\n // console.log(\"-=-----labelDetail\", labelDetail)\n // console.log(\"-=-----cfgData\", cfgData)\n\n return (\n
\n \n\n
\n \n \n
\n \n {`${labelDetail.tag_name_ch}(${labelDetail.label_name})`}\n \n this.jumpToEdit(labelDetail.id)}\n >\n this.jumpToEdit(labelDetail.id)}\n >\n\n
\n {labelDetail.intro || '-'}\n
\n\n
\n 实体:用户\n 加工类型:{labelDetail.label_type_ch || '-'}\n
\n
\n
\n\n \n
\n {\n labelDetail.enable == 1 ?\n {\n this.changeDialogVisible(\"labelStopVisible\", !labelStopVisible)\n }}\n />\n :\n \n }\n\n
\n
\n
\n
\n\n
\n \n
\n\n this.changeDialogVisible(\"visible\", !visible)}\n onSureClick={() => this.changeDialogVisible(\"visible\", !visible)}\n >\n
暂未测试通过,请先完成调试
\n \n\n\n this.changeDialogVisible(\"labelVisible\", !labelVisible)}\n onSureClick={() => {\n this.useLabel(\"labelVisible\", true)\n }}\n >\n
确认后标签将进行例行采样,是否确认?
\n \n\n this.changeDialogVisible(\"labelStopVisible\", !labelStopVisible)}\n onSureClick={() => this.useLabel(\"labelStopVisible\", false)}\n >\n
确认后标签将停止例行采样,是否确认?
\n \n\n
\n )\n }\n}\n\nexport default UserLabelDetail\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAADYklEQVRYR8WXSUwTYRiG3+//pyylBSxBDaJR0MRE44YHb/RkQmJcKR4U3BJcEu/e1CMHTx5MjCuVU2NM9OKakCguBy/GEAO4G1SQpSCUxZnP/NOFLlM6xQpzaZOZzP+877cOYYEvWuDzkUMAJoAYYMJZEM6TYUdcjgDCh3u9rJWXgwMB0k0QE2j2698BfCwRIH3DgYHKUZJtAE0IEo3v/e4+RO7NhvBvAGdZKKurGgdXgMUdBraYhxG9KJRyb+cN1w9EnkkHMXeAiLrKpvFlDmPqHoDNIHoKZgeAbQpCamJXz3V3/2xOzA0gTjmzuA1gK0AvSzSjztC1vFHWHwDYBFBHUYHc9/aK62c6J7IHsFIOelZUIOvNgwCokMTABL2UUuw0nbAIR3YAFsoZ9FxziN0xqxXBTFLeVaEhUIeLxN43KjGTqsM+QCbl8eoiz648PLIWf4xnBJSRQMuH1tIzqlTb2+lPNCntAdhRbtY+ELW5ppkdg6HhC2A6DaJBMO3+eKv4aXIYMgNkozyuC1YfCl4ydD7BwJAD2N99q/RR9jkwB+U+H8vXBcGLzDgJ0JAmuKG7tfRxulJM70Aulc/SEa0Bcqg8OemSO2IqwDwpt66CeVSeCjDPypMAwrM7voWmdLikOk+X7ZlinpoDEdvXHxlYPjYt1VTbiPjentC/Z7Ydyzq3Mf/TJuGqg8Nqgm1XE0w6xJ6UMRoByZXyhBBUNPc688edvwBoyOc1H68u+pzYtXKvPAGg0ve10JHvHlS7jJsmyt74l47FrPpPyq0cUACQrC/uafOM1jRDc3eB22thqLUrIeZCa+hudT0OJxzCQyira2ZZNRtRJAQmwKRz3NN7uWI8OrfT9vYMu55dnngAlQOqHI8DYoKEoemgkGRjBzOOAhh2sFbf1eZ6svpg8JwBVBNRiNkQdg4jgBmQAIVCpLd893u+qDyLALAzLzTSR8xFANQuH23R5n8CBYXkhp6bpQ/XHQt6QpP8hM2dz7Rf2gGIe+8kE9V+8pe8UhMyNguqmoKn2OBaJvwWDDIIHP2VQlx7f7O4Q4XF64X8tnyoTiexRICnwTa/rgjMBAGIqTym++9aiwfU+zIvJFF5OYp5+mnoY+ntt1YTrYSE0uy0qdwqPgEY0c82+w7YDHS2j/0FOnG/FkDSfMIAAAAASUVORK5CYII=\"","import React from 'react'\nimport {connect} from 'react-redux'\nimport {withRouter} from 'react-router-dom'\nimport _ from 'lodash'\nimport Select from '@common/Select'\nimport Input from '@common/Input'\nimport Radiobox from '@common/Radiobox'\nimport Button from '@common/Button'\nimport BreadCrumbs from '@common/BreadCrumbs'\nimport SdwMessage from '@common/Message'\nimport {searchDetail, saveConfig} from '@services/labelProcess'\nimport {getPublicCfg, getStandardSelects} from '@services/Derived'\nimport {getStaffs} from '@api/alertRules'\nimport {hasPriv} from '@components/FrontendAuth/AuthMap'\nimport './index.css'\n\nclass UserLabelWin extends React.PureComponent {\n\n state = {\n labelDetail: {},\n breadCrumbsTitle: \"新增用户标签\", // 面包屑标题\n buttonPrevTitle: \"创建标签并返回列表页\", // 按钮文案\n buttonNextTitle: \"创建标签并进入下一步\", // 按钮文案\n paramsData: {\n label_type: \"fact\",\n label_name: \"\", // 标签名称(英文)\n tag_name_ch: \"\", // 标签名称(中文)\n onwer: \"\", // 标签负责人\n require_rtx: \"\", // 标签需求方\n intro: \"\", // 标签介绍\n remark: \"\", // 标签备注\n topic: \"\", // 所属主题域id(字典)\n business: \"\", // 所属业务id(字典)\n first_classify: \"\", // 一级分类\n second_classify: \"\", // 二级分类\n sensitivity: \"1\", // 敏感等级(字典label_sensitivity)\n enable: \"0\",\n label_value_type: \"string\", // 标签规则类型(字典label_value_type)\n life_cycle: \"\", // 有效期(字典label_validate_select)\n value_mapping: \"\", // 标签值示例\n },\n sholdCheckValidate: false,\n topicData: [],\n businessData: [],\n backPath: \"\",\n cfgData: \"\",\n allMembers: [],\n principal: [], // 标签负责人\n demandSide: [], // 标签需求方\n }\n\n componentDidMount() {\n this.getStandardSelects()\n this.getPublicCfg()\n this.getStaff()\n\n if (this.props.location.state && this.props.location.state.backPath == \"detail\") {\n this.setState({\n backPath: \"detail\"\n })\n }\n let ID = this.props.match.params.id\n if (!!ID && ID != 0) {\n this.onSearchDetail(ID)\n }\n }\n\n getPublicCfg = () => {\n getPublicCfg().then(res => {\n if (res.data.code === 0 && res.data.data) {\n let cfgData = {}\n for (let i in res.data.data) {\n cfgData[i] = res.data.data[i]\n }\n this.setState({cfgData: cfgData})\n }\n })\n }\n\n // 获取主题列表\n getStandardSelects = () => {\n let that = this\n getStandardSelects().then((res) => {\n let userLabelTopicRecord = res.data.data\n that.setState({\n topicData: userLabelTopicRecord.topic,\n businessData: userLabelTopicRecord.business,\n })\n })\n }\n\n // 获取rtx\n getStaff = () => {\n getStaffs().then(res => {\n if (res && res.data && res.data.code === 0) {\n let list = _.isArray(res.data.data) ? res.data.data : []\n this.setState({\n allMembers: list\n })\n }\n })\n }\n\n onSearchDetail = id => {\n let params = {\n id: id\n }\n searchDetail(params).then(res => {\n if (res && res.data && res.data.code === 0) {\n let record = res.data.data || {}\n this.setState({\n breadCrumbsTitle: \"编辑用户标签\",\n buttonPrevTitle: \"保存&返回列表页\",\n buttonNextTitle: \"保存&下一步\",\n labelDetail: record,\n paramsData: {\n label_type: record.label_type, // 标签规则类型(字典label_type)\n label_name: record.label_name, //标签名称(英文)\n tag_name_ch: record.tag_name_ch, // 标签名称(中文)\n intro: record.intro, // 标签介绍\n remark: record.remark, // 标签备注\n topic: record.topic, // 所属主题域id(字典)\n business: record.business, // 所属业务id(字典)\n first_classify: record.first_classify, // 一级分类\n second_classify: record.second_classify, // 二级分类\n sensitivity: record.sensitivity, // 敏感等级(字典label_sensitivity)\n enable: record.enable,\n label_value_type: record.label_value_type, // 标签规则类型\n life_cycle: record.life_cycle + \"\", // 有效期\n value_mapping: record.value_mapping, // 标签值示例\n },\n principal: record.onwer ? record.onwer.split(\",\") : [],\n demandSide: record.require_rtx ? record.require_rtx.split(\",\") : [],\n })\n }\n })\n }\n\n saveConfig = (val) => {\n let {paramsData, breadCrumbsTitle, backPath, principal, demandSide} = this.state\n\n if (this.ruleFormData(\"tag_name_ch\", paramsData.tag_name_ch) !== true ||\n this.ruleFormData(\"label_name\", paramsData.label_name) !== true ||\n this.ruleFormData(\"first_classify\", paramsData.first_classify) !== true ||\n this.ruleFormData(\"second_classify\", paramsData.second_classify) !== true ||\n this.ruleFormData(\"intro\", paramsData.intro) !== true ||\n this.ruleFormData(\"life_cycle\", paramsData.life_cycle) !== true ||\n this.ruleFormData(\"topic\", paramsData.topic) !== true ||\n this.ruleFormData(\"business\", paramsData.business) !== true ||\n this.ruleFormData(\"principal\", principal) !== true ||\n this.ruleFormData(\"demandSide\", demandSide) !== true) {\n this.setState({\n sholdCheckValidate: true\n })\n return\n }\n\n let params = {\n data: {...paramsData},\n }\n let ID = this.props.match.params.id\n if (!!ID && ID != \"0\") {\n params[\"id\"] = ID\n }\n params.data.onwer = principal.join(\",\")\n params.data.require_rtx = demandSide.join(\",\")\n\n saveConfig(params).then(res => {\n if (res.data.code === 0 && res.data.data) {\n this.props.updatePageInfo(\"\")\n this.props.history.push({\n pathname: val == \"prev\" ? '/admin/labelProcess/userLabel' : '/admin/labelProcess/setupTwo',\n state: {\n id: res.data.data,\n backPath: backPath,\n breadCrumbsTitle: breadCrumbsTitle,\n }\n })\n } else {\n SdwMessage.error(res.data.data || \"请求超时\")\n }\n })\n }\n\n ruleFormData = (type, val) => {\n switch (type) {\n case \"tag_name_ch\":\n if (!val) {\n return '标签名称不能为空'\n }\n if (val.length > 50) {\n return '输入最大长度为50'\n }\n break\n case \"label_name\":\n if (!val) {\n return '标签英文名不能为空'\n }\n if (val.length > 100) {\n return '输入最大长度为100'\n }\n break\n case \"first_classify\":\n if (!val) {\n return \"请选择一级分类\"\n }\n break\n case \"second_classify\":\n if (!val) {\n return \"请填写二级分类\"\n }\n break\n case \"intro\":\n if (val.length > 500) {\n return '输入最大长度为500'\n }\n break\n case \"topic\":\n if (!val) {\n return \"请选择主题域\"\n }\n break\n case \"business\":\n if (!val) {\n return \"请选择所属业务\"\n }\n break\n case \"life_cycle\":\n if (!val) {\n return \"有效期不能为空\"\n }\n break\n case \"principal\":\n if (val.length == 0) {\n return \"标签负责人不能为空\"\n }\n break\n case \"demandSide\":\n if (val.length == 0) {\n return \"标签需求方不能为空\"\n }\n break\n default:\n break\n }\n return true\n }\n\n changeParamsValue = (type, val) => {\n let {paramsData} = this.state\n let obj = {}\n if (type == \"topic\") {\n obj = {\n topic: val,\n business: \"\",\n }\n } else {\n obj[type] = val\n }\n this.setState({\n paramsData: _.assign({}, paramsData, obj)\n })\n }\n\n render() {\n let {\n paramsData,\n breadCrumbsTitle,\n buttonPrevTitle,\n buttonNextTitle,\n sholdCheckValidate,\n topicData,\n businessData,\n cfgData,\n allMembers,\n principal,\n demandSide\n } = this.state\n\n return (\n <>\n \n\n
\n\n {/* 步骤条 */}\n
\n
    \n
  1. \n
    \n \n 标签信息配置\n
    \n
  2. \n
  3. \n
    \n \n 标签规则配置\n
    \n
  4. \n
\n
\n\n
\n
\n 基本信息\n 用于编辑标签基础信息\n
\n
\n 标签名称\n this.changeParamsValue(\"tag_name_ch\", val)}\n validateFun={val => this.ruleFormData(\"tag_name_ch\", val)}\n />\n
\n
\n 标签英文名\n this.changeParamsValue(\"label_name\", val)}\n validateFun={val => this.ruleFormData(\"label_name\", val)}\n />\n
\n
\n 标签介绍\n this.changeParamsValue(\"intro\", val)}\n validateFun={val => this.ruleFormData(\"intro\", val)}\n />\n
\n
\n 标签负责人\n this.ruleFormData(\"principal\", val)}\n onClear={() => this.setState({principal: []})}\n changeMultipleValue={val => this.setState({principal: val})}\n />\n
\n
\n 标签需求方\n this.ruleFormData(\"demandSide\", val)}\n onClear={() => this.setState({demandSide: []})}\n changeMultipleValue={val => this.setState({demandSide: val})}\n />\n
\n
\n 标签备注\n this.changeParamsValue(\"remark\", val)}\n />\n
\n\n
\n 属性信息\n 用于编辑标签属性信息\n
\n
\n 一级分类\n this.changeParamsValue(\"first_classify\", val)}\n sholdCheckValidate={sholdCheckValidate}\n validateFun={val => this.ruleFormData(\"first_classify\", val)}\n />\n
\n
\n 二级分类\n this.changeParamsValue(\"second_classify\", val)}\n sholdCheckValidate={sholdCheckValidate}\n validateFun={val => this.ruleFormData(\"second_classify\", val)}\n />\n
\n
\n 所属主题域\n {\n return {id: el.id + \"\", text: el.topic_name}\n })}\n onChange={val => {\n this.changeParamsValue(\"topic\", val)\n }}\n sholdCheckValidate={sholdCheckValidate}\n validateFun={val => this.ruleFormData(\"topic\", val)}\n width={560}\n value={paramsData.topic}\n />\n
\n
\n 所属业务\n i.topic_id == paramsData.topic).map(el => {\n return {id: el.id + \"\", text: el.business_name}\n })}\n onChange={val => this.changeParamsValue(\"business\", val)}\n sholdCheckValidate={sholdCheckValidate}\n validateFun={val => this.ruleFormData(\"business\", val)}\n value={paramsData.business}\n />\n
\n
\n 敏感等级\n this.changeParamsValue(\"sensitivity\", val)}\n />\n
\n
\n 标签规则类型\n {\n return {value: item.value, text: item.name}\n }) : []}\n value={paramsData.label_type}\n changeCheckedFun={val => this.changeParamsValue(\"label_type\", val)}\n />\n
\n
\n 标签值类型\n {\n return {value: item.value, text: item.name}\n }) : []}\n value={paramsData.label_value_type}\n changeCheckedFun={val => this.changeParamsValue(\"label_value_type\", val)}\n />\n
\n
\n 有效期\n {\n return {id: el.value, text: el.name}\n }) : []}\n onChange={val => this.changeParamsValue(\"life_cycle\", val)}\n sholdCheckValidate={sholdCheckValidate}\n validateFun={val => this.ruleFormData(\"life_cycle\", val)}\n />\n
\n
\n 标签值示例\n this.changeParamsValue(\"value_mapping\", val)}\n />\n
\n\n
\n this.saveConfig(\"prev\")}\n />\n \n \n
\n
\n
\n \n )\n }\n}\n\nconst mapState = state => ({\n pageInfo: state.page.pageInfo\n})\n\nconst mapDispatch = dispatch => ({\n updatePageInfo: dispatch.page.updatePageInfo\n})\n\nexport default withRouter(connect(mapState, mapDispatch)(UserLabelWin))\n","import React from 'react'\nimport _ from 'lodash'\nimport Select from '@common/Select'\nimport Input from '@common/Input'\nimport Radiobox from '@common/Radiobox'\nimport Button from '@common/Button'\nimport Table from '@common/Table'\nimport SdwMessage from '@common/Message'\nimport BreadCrumbs from '@common/BreadCrumbs'\nimport {searchDetail, getTablecfgList, labelTest, saveRuleConfig} from '@services/labelProcess'\nimport {getPublicCfg} from '@services/Derived'\nimport {getTablecfgFields} from '@services/atom'\nimport testImg from '../img/icon_test-img@2x.png'\nimport './index.css'\n\nclass setupTwo extends React.PureComponent {\n\n state = {\n breadCrumbsTitle: \"\",\n labelDetail: {},\n ruleData: {},\n paramsData: {\n data_source_type: \"table\", // 数据源类型(字典label_data_source_type)\n data_source: \"\", // 数据源id\n deal_type: \"\", // 加工类型(字典label_process_type)\n run_cycle: \"1d\", // 调度周期(字典label_schedule_type)\n time_field: \"\", // 时间设定--取数时间字段\n time_cycle: \"\", // 时间设定-取数范围(字典label_time_range)\n user_fields: \"\", // 关联用户账号字段\n label_field: \"\", // 提取字段\n filter: \"\", // 过滤条件\n multi_type: \"last\", // 多值处理(字典label_multi_value)\n handle: \"\", // 加工规则(中间表字段配置)\n user_field_type: \"open_id\", // 关联账号类型,读public配置里面的\n is_sec: \"0\", // 1加密、0非加密\n enable: \"1\"\n },\n ruleDataSourceList: [],\n tableFields: [],\n sholdCheckValidate: false,\n testStatus: 0, // 0 -1未测试 1成功 2失败\n testWaringText: \"\", // 0 -1未测试 1成功 2失败\n relationFieldValue: \"\",\n userLabelList: [\n {\n account: '-',\n tagValue: '-'\n },\n ],\n scrpt: \"\",\n dicts: \"\",\n ruleNamePlaceholder: \"请输入规则名称\",\n backPath: \"\",\n cfgData: \"\",\n }\n\n componentDidMount() {\n this.iniData()\n this.getPublicCfg()\n this.getTablecfgList()\n }\n\n getPublicCfg = () => {\n getPublicCfg().then(res => {\n if (res.data.code === 0 && res.data.data) {\n let cfgData = {}\n for (let i in res.data.data) {\n cfgData[i] = res.data.data[i]\n }\n this.setState({cfgData: cfgData})\n }\n })\n }\n\n iniData = () => {\n // console.log(\"==============props\", this.props)\n if (this.props.location.state) {\n let ID = this.props.location.state.id\n let backPath = this.props.location.state.backPath\n // console.log(\"-----------------------ID\",ID)\n // console.log(\"-----------------------backPath\",backPath)\n if (backPath == \"detail\") {\n this.setState({\n backPath: backPath\n })\n }\n if (!ID) {\n SdwMessage.error(\"页面异常\")\n }\n this.searchDetail(ID)\n } else {\n SdwMessage.error(\"页面异常\")\n this.props.history.push(`/admin/labelProcess/userLabel`)\n }\n }\n\n getTablecfgList = () => {\n let params = {limit: 20000, page: 0, search: {enable: {value: '1', operator: \"=\"}}}\n getTablecfgList(params).then(res => {\n if (res && res.data && res.data.code === 0) {\n let ruleDataSourceList = res.data.data.items || []\n this.setState({\n ruleDataSourceList: ruleDataSourceList.map(item => {\n return {\n id: item.id + \"\",\n text: item.data_set_chinese + \"(\" + item.database_name + \")\" + (item.table_name ? \".\" + item.table_name : \"\"),\n item: item\n }\n }),\n })\n }\n })\n }\n\n getColumns = () => {\n return [\n {\n title: '用户账号',\n dataIndex: 'account',\n },\n {\n title: '标签',\n dataIndex: 'tagValue',\n }\n ]\n }\n\n searchDetail = id => {\n let params = {\n id: id\n }\n searchDetail(params).then(res => {\n if (res && res.data && res.data.code === 0) {\n let labelDetail = res.data.data || {}\n let ruleData = labelDetail.rule_data || {}\n let data_source = labelDetail.data_source || {}\n let scrpt = \"\"\n let dicts = \"\"\n let handle = {}\n if (!!ruleData.handle) {\n handle = JSON.parse(ruleData.handle)\n scrpt = handle.scrpt || \"\"\n dicts = handle.dicts || \"\"\n }\n // console.log(\"ruleData=================\", ruleData.handle)\n let stateParams = {\n labelDetail: labelDetail,\n ruleData: ruleData,\n handle: handle,\n data_source: data_source,\n breadCrumbsTitle: this.props.location.state.breadCrumbsTitle\n }\n if (JSON.stringify(ruleData) != \"{}\") {\n stateParams[\"paramsData\"] = {\n data_source_type: ruleData[\"data_source_type\"], // 数据源类型(字典label_data_source_type)\n data_source: ruleData[\"data_source\"], // 数据源id\n deal_type: ruleData[\"deal_type\"], // 加工类型 (字典label_process_type)\n run_cycle: ruleData[\"run_cycle\"], // 调度周期 (字典label_schedule_type)\n time_field: ruleData[\"time_field\"], // 时间设定--取数时间字段\n time_cycle: ruleData[\"time_cycle\"], // 时间设定-取数范围(字典label_time_range)\n user_fields: ruleData[\"user_fields\"], // 关联用户账号字段\n label_field: ruleData[\"label_field\"], // 提取字段\n filter: ruleData[\"filter\"], // 过滤条件\n multi_type: ruleData[\"multi_type\"], // 多值处理(字典label_multi_value)\n user_field_type: ruleData[\"user_field_type\"],\n is_sec: ruleData[\"is_sec\"],\n handle: ruleData[\"handle\"], // 加工规则(中间表字段配置)\n enable: ruleData[\"enable\"]\n }\n }\n this.setState({\n scrpt: scrpt,\n dicts: dicts,\n ...stateParams\n }, () => {\n this.getTablecfgFields(ruleData[\"data_source\"])\n })\n }\n })\n }\n\n // 获取指定的表的字段\n getTablecfgFields = (related_table_id) => {\n if (related_table_id == \"\") {\n return\n }\n this.changeParamsValue(\"data_source\", related_table_id)\n let that = this\n let parame = {}\n parame.id = related_table_id\n getTablecfgFields(parame).then(res => {\n let tableFields = res.data.data || []\n that.setState({tableFields: tableFields})\n })\n }\n\n changeParamsValue = (type, val) => {\n let {paramsData} = this.state\n let obj = {}\n obj[type] = val\n this.setState({\n paramsData: _.assign({}, paramsData, obj)\n })\n }\n\n ruleFormData = (type, val) => {\n switch (type) {\n case \"data_source_type\":\n if (!val) {\n return '数据源类型不能为空'\n }\n break\n case \"data_source\":\n if (!val) {\n return '数据源不能为空'\n }\n break\n case \"deal_type\":\n if (!val) {\n return '加工类型不能为空'\n }\n break\n case \"run_cycle\":\n if (!val) {\n return \"调度周期不能为空\"\n }\n break\n case \"time_field\":\n if (!val) {\n return \"取数时间字段不能为空\"\n }\n break\n case \"time_cycle\":\n if (!val) {\n return \"取数范围不能为空\"\n }\n break\n case \"user_fields\":\n if (!val) {\n return \"关联字段不能为空\"\n }\n break\n case \"label_field\":\n if (!val) {\n return \"提取字段不能为空\"\n }\n break\n case \"filter\":\n if (val.length > 10000) {\n return '过滤条件输入最大长度为10000'\n }\n break\n default:\n break\n }\n return true\n }\n\n labelTest = () => {\n // let {relationFieldValue, labelDetail} = this.state\n let {paramsData, labelDetail, scrpt, dicts} = this.state\n if (this.ruleFormData(\"data_source_type\", paramsData.data_source_type) !== true ||\n this.ruleFormData(\"data_source\", paramsData.data_source) !== true ||\n this.ruleFormData(\"deal_type\", paramsData.deal_type) !== true ||\n this.ruleFormData(\"time_field\", paramsData.time_field) !== true ||\n this.ruleFormData(\"time_cycle\", paramsData.time_cycle) !== true ||\n this.ruleFormData(\"user_fields\", paramsData.user_fields) !== true ||\n this.ruleFormData(\"label_field\", paramsData.label_field) !== true ||\n this.ruleFormData(\"filter\", paramsData.filter) !== true) {\n this.setState({\n sholdCheckValidate: true\n })\n return\n }\n // console.log(\"save----paramsData\", paramsData)\n // console.log(\"save----labelDetail\", labelDetail)\n let handle = {}\n if (!!scrpt) {\n handle.scrpt = scrpt\n }\n if (!!dicts) {\n handle.dicts = dicts\n }\n paramsData.handle = JSON.stringify(handle)\n let params = {\n id: labelDetail.id,\n data: paramsData\n }\n labelTest(params).then(res => {\n if (res && res.data && res.data.code === 0) {\n this.setState({\n testStatus: 1,\n testWaringText: \"成功\",\n userLabelList: res.data.data.list || []\n })\n } else {\n this.setState({\n testStatus: 2,\n testWaringText: res.data.data,\n userLabelList: [{account: '-', tagValue: '-'}]\n })\n }\n })\n }\n\n saveRuleConfig = () => {\n let {paramsData, backPath, labelDetail, scrpt, dicts} = this.state\n if (this.ruleFormData(\"data_source_type\", paramsData.data_source_type) !== true ||\n this.ruleFormData(\"data_source\", paramsData.data_source) !== true ||\n this.ruleFormData(\"deal_type\", paramsData.deal_type) !== true ||\n this.ruleFormData(\"time_field\", paramsData.time_field) !== true ||\n this.ruleFormData(\"time_cycle\", paramsData.time_cycle) !== true ||\n this.ruleFormData(\"user_fields\", paramsData.user_fields) !== true ||\n this.ruleFormData(\"label_field\", paramsData.label_field) !== true ||\n this.ruleFormData(\"filter\", paramsData.filter) !== true) {\n this.setState({\n sholdCheckValidate: true\n })\n return\n }\n // console.log(\"save----paramsData\", paramsData)\n let handle = {}\n if (!!scrpt) {\n handle.scrpt = scrpt\n }\n if (!!dicts) {\n handle.dicts = dicts\n }\n paramsData.handle = JSON.stringify(handle)\n let params = {\n id: labelDetail.id,\n data: paramsData\n }\n saveRuleConfig(params).then(res => {\n if (res.data.code === 0) {\n SdwMessage.success({message: \"标签编辑成功\", duration: 2000})\n if (backPath == \"detail\") {\n this.props.history.push(`/admin/labelProcess/userLabelDetail/${labelDetail.id}`)\n } else {\n this.props.history.push(`/admin/labelProcess/userLabel`)\n }\n } else {\n SdwMessage.error(\"接口异常\" + res.data.msg)\n }\n })\n }\n\n jumpToOne = id => {\n this.props.history.push(`/admin/labelProcess/userLabelWin/${id}`)\n }\n\n render() {\n let {\n breadCrumbsTitle,\n labelDetail,\n paramsData,\n sholdCheckValidate,\n ruleDataSourceList,\n testStatus,\n testWaringText,\n userLabelList,\n scrpt,\n dicts,\n ruleNamePlaceholder,\n cfgData,\n } = this.state\n\n //console.log(\"handle=============\", handle)\n // console.log(\"--------------------labelDetail.is_test_pass\", labelDetail.is_test_pass)\n\n let testClassName = \"\"\n if (testStatus === 0) {\n if (labelDetail.is_test_pass === -1) {\n testWaringText = \"未测试\"\n testClassName = \"label-info__label\"\n } else if (labelDetail.is_test_pass === 1) {\n testWaringText = \"成功\"\n testClassName = \"label-info__success_label\"\n } else if (labelDetail.is_test_pass === 0) {\n testWaringText = \"未能获取数据\"\n testClassName = \"label-info__error_label\"\n }\n } else {\n if (testStatus === 1) {\n testClassName = \"label-info__success_label\"\n } else if (testStatus === 2) {\n testClassName = \"label-info__error_label\"\n }\n }\n\n let tableTimeFields = []\n let tableListFields = []\n for (let si = 0; si < this.state.tableFields.length; si++) {\n let i = this.state.tableFields[si]\n tableListFields.push({\n id: i.field_name,\n text: i.field_name\n })\n if (i.field_type == 'date' || i.field_type == 'datetime' || i.field_type == 'timestamp' || i.field_type == 'esdate') {\n tableTimeFields.push({\n id: i.field_name,\n text: i.field_name\n })\n }\n }\n\n // console.log(\"-----------paramsData\", paramsData)\n\n return (\n <>\n \n\n
\n\n {/* 步骤条 */}\n
\n
    \n
  1. \n
    \n \n 标签信息配置\n
    \n
  2. \n
  3. \n
    \n \n 标签规则配置\n
    \n
  4. \n
\n
\n\n
\n
\n 规则配置\n 用于编辑数据源及加工类型\n
\n
\n 数据源类型\n {\n return {id: el.value, text: el.name}\n }) : []}\n onChange={val => this.changeParamsValue(\"data_source_type\", val)}\n sholdCheckValidate={sholdCheckValidate}\n validateFun={val => this.ruleFormData(\"data_source_type\", val)}\n />\n
\n
\n 数据源\n this.getTablecfgFields(val)}\n sholdCheckValidate={sholdCheckValidate}\n validateFun={val => this.ruleFormData(\"data_source\", val)}\n />\n
\n
\n 加工类型\n {\n return {id: el.value, text: el.name}\n }) : []}\n onChange={val => this.changeParamsValue(\"deal_type\", val)}\n sholdCheckValidate={sholdCheckValidate}\n validateFun={val => this.ruleFormData(\"deal_type\", val)}\n />\n
\n\n
\n 规则详情\n 用于编辑标签具体采集规则\n
\n
\n 调度周期\n {\n return {value: item.value, text: item.name}\n }) : []}\n value={paramsData.run_cycle}\n changeCheckedFun={val => this.changeParamsValue(\"run_cycle\", val)}\n />\n
\n\n
\n 时间设定\n {\n return {id: el.value, text: el.name}\n }) : []}\n onChange={val => this.changeParamsValue(\"time_cycle\", val)}\n sholdCheckValidate={sholdCheckValidate}\n validateFun={val => this.ruleFormData(\"time_cycle\", val)}\n />\n \n this.changeParamsValue(\"time_field\", val)}\n sholdCheckValidate={sholdCheckValidate}\n validateFun={val => this.ruleFormData(\"time_field\", val)}\n />\n
\n
\n 关联字段\n {\n return {id: el.value, text: el.name}\n }) : []}\n onChange={val => this.changeParamsValue(\"user_field_type\", val)}\n />\n this.changeParamsValue(\"user_fields\", val)}\n sholdCheckValidate={sholdCheckValidate}\n validateFun={val => this.ruleFormData(\"user_fields\", val)}\n />\n \n this.changeParamsValue(\"is_sec\", val)}\n />\n
\n
\n 提取字段\n this.changeParamsValue(\"label_field\", val)}\n sholdCheckValidate={sholdCheckValidate}\n validateFun={val => this.ruleFormData(\"label_field\", val)}\n />\n
\n
\n 过滤条件\n this.changeParamsValue(\"filter\", val)}\n validateFun={val => this.ruleFormData(\"filter\", val)}\n />\n
\n
\n 多值处理\n {\n return {id: el.value, text: el.name}\n }) : []}\n onChange={val => this.changeParamsValue(\"multi_type\", val)}\n sholdCheckValidate={sholdCheckValidate}\n validateFun={val => this.ruleFormData(\"multi_type\", val)}\n />\n
\n
\n 加工规则\n
\n {\n return {id: el.name, text: el.value.name, item: el}\n }) : []}\n onChange={(val, el) => {\n if (val == \"\") {\n this.setState({\n scrpt: val,\n ruleNamePlaceholder: \"请输入规则名称\"\n })\n } else {\n this.setState({\n scrpt: val,\n ruleNamePlaceholder: el.item.value.placeholder\n })\n }\n }}\n />\n \n {\n // console.log(\"====\", val)\n this.setState({\n dicts: val\n }, () => {\n console.log(\"----\", this.state.dicts)\n })\n }}\n />\n
\n
\n\n
\n 标签加工测试\n 用于测试标签采集配置\n
\n\n
\n \n \n {testWaringText}\n
\n\n
\n \n \n \n
\n\n
\n this.jumpToOne(labelDetail.id)}\n />\n \n \n
\n
\n\n
\n\n \n\n )\n }\n}\n\nexport default setupTwo\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAALjSURBVHgB7ZhNchJBFIDfazGVjSGcAKwKiCvJCcQTkKWlJOAR3LoJbHTtDUAg5c7kBCEn0GwsA1Q5nmAgblI6dPve/BCSSjM0mZGU8lVBoDs9fPTr129ogBW3A2EBMlV7c92BgsmYiwRYViNlgSHGgvmqnZFj/AwKNk3GKYDh74R6SJJDk3GhgvmyXZQgnk6NyIBSVVgApbCBCNZlizzttVOHsKhgrmw36F8quv43L9fhcfrerEvA1x9jeNe50PazdL+TfKXrF6CX25kl54Ju6GY+wkBU1S2Kkq4/oR8qngQfQc9dBOz6UpMQv23rZ+YmpkOsQBXp+xXdT/KWUBfMBC9huV47WefXnMFrDtLsmiUJcJKMZd366GVyrjxizWLYoLkEp+EszD+3t537ibTJOOenc2odmmUwYyzIfPNmwYK/gIA7TqSCvD7pkYEIWSjEN5Gt2gUc47HyEj8FERHJDAZyXP4UYgMixEiQ63CuPPyUfWEXdHKDVvI1RIhRiJUjSvS8AwKLJPkM1miPnJLrt7yS5d5QOEJbhX4lZBMcmAsjwbN28j2VwG3auCtK4DGO2fqqHOPJqZruOrTRcwS+QNSCDN19VEmSq0uFa+B1OUY4sikT+tWjpDxCgSWIQzCQzO6ObMrYIa25+vV+fyOvz7oGlbr4BJl+xMmg4/+qJHHwbwlmd23K4KGiLK4Fbfzabds7r0AMmCUJ73vuV8J93mo8cH/SFwNGgv2DVGOrPEoLdxP2xQgJWBt0NprB+6VVEmZAt/7Z8nDye4J/rwzaV/fCpVYSf/0Vg/csym20edeCtqVVEk4Sqm1uaDmsrowfbkqS770PXpiXV0n8JHHXnB9WWpOe5F1JEvrTmG7zResQE6tKclvmCjEfU3gnAdHhH32EohWUIE+Ef/jl7XnhxxQmTMuhRO2eqA3xoJ3qklQTYobvyM8ONo50/aGz/GjvvKSkMjrunReJojtoPTiBFTHyB3LeQSN+palqAAAAAElFTkSuQmCC\"","import _ from 'lodash'\nimport switchRoutes from './switchRoutes'\nimport LabelManagement from '@pages/LabelProcess/LabelManagement'\nimport UserLabel from '@pages/LabelProcess/UserLabel'\nimport UserLabelDetail from '@pages/LabelProcess/UserLabel/UserLabelDetail'\nimport UserLabelWin from '@pages/LabelProcess/UserLabel/UserLabelWin'\nimport SetupTwo from '@pages/LabelProcess/UserLabel/UserLabelWin/setupTwo'\n\nexport const routerPath = '/admin/labelProcess'\n\nexport const bar = {\n rootUrl: routerPath,\n activeClassName: 'current',\n className: 'sdw-nav-item',\n name: '标签加工厂',\n children: [\n {\n icon: '',\n title: '工单标签',\n path: `${routerPath}/labelManagement`,\n },\n {\n icon: '',\n title: '用户标签',\n path: `${routerPath}/userLabel`,\n }\n ],\n order: 3\n}\n\nconst pages = {\n LabelManagement: {\n icon: 'icon-278',\n title: '标签管理',\n path: `${routerPath}/labelManagement`,\n component: LabelManagement\n },\n UserLabel: {\n icon: '',\n title: '用户标签',\n path: `${routerPath}/userLabel`,\n component: UserLabel,\n },\n UserLabelDetail: {\n icon: '',\n title: '标签详情',\n path: `${routerPath}/userLabelDetail/:id`,\n component: UserLabelDetail,\n },\n UserLabelWin: {\n icon: '',\n title: '标签新增或编辑',\n path: `${routerPath}/userLabelWin/:id`,\n component: UserLabelWin,\n },\n SetupTwo: {\n icon: '',\n title: '标签规则配置',\n path: `${routerPath}/setupTwo`,\n component: SetupTwo,\n }\n}\n\nexport const Router = switchRoutes({routes: _.values(pages)})\n","import React from 'react'\n\n\nfunction UILayout(props) {\n let top = null, sidebar = null, content = null\n\n props.children.forEach(child => {\n if (child.type === UILayout.Top) {\n top = child\n } else if (child.type === UILayout.Sidebar) {\n sidebar = child\n } else if (child.type === UILayout.Content) {\n content = child\n }\n })\n\n return (\n
\n
{top}
\n
\n {/*
{sidebar}
*/}\n
\n {content}\n
\n
\n
\n
{`Copyright © 1998-${new Date().getFullYear()} Tencent Inc. All Rights Reserved 腾讯公司 客户服务部`}
\n
\n
\n
\n
\n )\n}\n\nUILayout.Top = ({ children }) => children\n// UILayout.Sidebar = ({ children }) => children\nUILayout.Content = ({ children }) => children\n\nexport default UILayout\n ","export default __webpack_public_path__ + \"static/media/logo.ceb8c490.svg\";","// @file 审计组件\nimport React, { useState, useEffect, useMemo } from \"react\"\nimport Empty from \"@common/Empty\"\nimport Tabs from \"@common/Tabs\"\nimport Button from \"@common/Button\"\nimport Message from \"@common/Message\"\nimport '../style/auditInfo.css'\nimport { getMessage, applyApproval, getProcessApproval } from '@services/auditInfoPage'\nimport { commonApi } from \"@utils/request\"\nimport _ from \"lodash\"\nimport { formatJsonParse } from \"@utils/formatJson\"\nimport { hasPriv } from \"@components/FrontendAuth/AuthMap\"\nimport Popover from \"@common/Popover\"\nimport {\n ALL, PENDING, STATE_MAP, MSG_TYPE_MAP\n} from '@pages/common/index'\nimport Loadding from \"@common/Loadding\"\n\nexport default function AuditInfo (props) {\n\n const [showDialog, setShowDialog] = useState(false)\n const [messageArr, setMessageArr] = useState([]);\n const [processApproval, setProcessApproval] = useState([]);\n const [approvalTotal, setApprovalTotal] = useState(0);\n const [curStatus, setCurStatus] = useState(ALL);\n const [isLoading, setIsLoading] = useState(false);\n const [isImgEnter, setIsImgEnter] = useState(false);\n const [isImgEnterHelp, setIsImgEnterHelp] = useState(false);\n\n useEffect(() => {\n document.addEventListener('click', docClick)\n return () => {\n document.removeEventListener('click', docClick)\n }\n }, [])\n\n // 初始化\n useEffect(() => {\n onInit({})\n }, [])\n\n // 定时刷新: 1分钟刷新一次\n useEffect(() => {\n let timer = setInterval(() => {\n onInit({})\n }, 60 * 1000)\n\n return () => {\n clearInterval(timer)\n };\n }, []);\n\n function onInit({\n search = {}\n }) {\n setIsLoading(true)\n Promise.all([commonApi(getMessage, {\n limit: 10,\n page: 1,\n search: JSON.stringify({})\n }), commonApi(getProcessApproval, {\n limit: 10,\n page: 1,\n search: JSON.stringify(search)\n })]).then(([r1 = {}, r2 = {}]) => {\n let arr = _.get(r1, 'items')\n arr = _.isArray(arr) ? arr : []\n setMessageArr(arr)\n\n let arr2 = _.get(r2, 'items')\n arr2 = _.isArray(arr2) ? arr2 : []\n setProcessApproval(arr2)\n let total = _.get(r2, 'total')\n setApprovalTotal(total)\n }).catch(err => Message.error(err))\n .finally(() => setIsLoading(false))\n }\n\n function docClick() {\n setShowDialog(false)\n }\n\n function handleChange(item) {\n const curStatus = _.get(item, 'path') || ALL\n setCurStatus(curStatus)\n // console.log('curStatus: ', curStatus);\n\n if (curStatus === ALL) {\n setIsLoading(true)\n commonApi(getMessage, {\n limit: 10,\n page: 1,\n search: JSON.stringify({})\n }).then(r1 => {\n let arr = _.get(r1, 'items')\n arr = _.isArray(arr) ? arr : []\n setMessageArr(arr)\n }).catch(err => Message.error(err))\n .finally(() => setIsLoading(false))\n } else {\n\n setIsLoading(true)\n commonApi(getProcessApproval, {\n limit: 10,\n page: 1,\n search: JSON.stringify({})\n }).then(r2 => {\n let arr2 = _.get(r2, 'items')\n arr2 = _.isArray(arr2) ? arr2 : []\n setProcessApproval(arr2)\n let total = _.get(r2, 'total')\n setApprovalTotal(total)\n }).catch(err => Message.error(err))\n .finally(() => setIsLoading(false))\n }\n }\n\n function jumpToDetail() {\n props.history.push('/admin/factory/auditInfoPage')\n docClick()\n }\n\n function onapplyApproval(params) {\n commonApi(applyApproval, params).then(data => {\n Message.success('审批成功')\n onInit({})\n }).catch(err => Message.error('审批失败 ' + err))\n }\n\n function onShowDialog() {\n setShowDialog(r => !r)\n onInit({})\n }\n\n const curMessageList = useMemo(() => {\n return curStatus === ALL ? messageArr : processApproval\n }, [curStatus, messageArr, processApproval]);\n\n\n return (\n
e.stopPropagation()}>\n\n
{\n window.open(\"https://doc.weixin.qq.com/doc/w3_AFwAxgbdAFwzNzdDMPaSxu2QJeJVA?scode=AJEAIQdfAAoBbEdbnqAFwAxgbdAFw\", \"_blank\")\n }} onMouseEnter={() => {\n setIsImgEnterHelp(true)\n }} onMouseLeave={() => {\n setIsImgEnterHelp(false)\n }}>\n\n \n 帮助中心\n
\n {/**/}\n
\n
\n
\n
\n
\n\n
{\n setIsImgEnter(true)\n }} onMouseLeave={() => {\n setIsImgEnter(false)\n }}>\n \n 消息中心\n
\n
\n
\n {\n hasPriv('applyApproval') &&\n processApproval.length > 0 &&\n \n }\n
\n
\n \n {\n showDialog &&\n
\n \n {\n (curStatus === ALL && (!_.isArray(messageArr) || messageArr.length === 0)) ?\n :\n
\n
\n \n
\n\n
\n {\n curMessageList.length > 0 ?\n curMessageList.map((item, index) => {\n const messageContext = formatJsonParse(item.message_context) || {}\n // console.log('messageContext: ', messageContext);\n const comment = _.get(messageContext, 'comment') || '-'\n const isReRun = item.msg_type == '3'\n\n return
\n
\n {/* 1:指标审批 2:指标重跑 */}\n
{MSG_TYPE_MAP[item.msg_type] || '-'}
\n
{item.message_title || '-'}
\n
\n {\n isReRun &&\n
\n
{'指标ID:'}
\n
{messageContext.id || '-'}
\n
\n }\n
\n
{isReRun ? '提交人:' : '修改人:'}
\n
{item.send_user || '-'}
\n
\n {\n isReRun &&\n <>\n
\n
{'重跑时间:'}
\n
{`${messageContext.start_time} - ${messageContext.end_time}` || '-'}
\n
\n
\n
{'提交时间:'}
\n
{item.update_time || '-'}
\n
\n \n }\n {\n !isReRun &&\n
\n
{'修改原因:'}
\n
{comment}
\n
\n }\n {\n item.task_status != '0' &&\n <>\n
\n
{'审批人:'}
\n
{item.approval_user || '-'}
\n
\n
\n
{'审批时间:'}
\n
{item.update_time || '-'}
\n
\n \n }\n
\n
{'审批情况:'}
\n {/* 0: 审批中 1:通过 2:驳回 */}\n
{STATE_MAP[item.task_status] || '-'}
\n
\n
\n
{item.send_time || '-'}
\n
\n {\n (\n item.task_status == '0' &&\n hasPriv('applyApproval')\n ) &&\n <>\n \n
\n }) :\n \n }\n
\n\n
\n 查看全部消息\n \n
\n
\n }\n
\n
\n }\n \n )\n}\n","import React, { PureComponent } from 'react'\nimport logoImg from '../img/logo.svg'\nimport { NavLink, withRouter, Link } from 'react-router-dom'\nimport { connect } from 'react-redux'\nimport { hasPriv } from '@components/FrontendAuth/AuthMap'\nimport AuditInfo from './AuditInfo'\n\nimport '../style/navBar.css'\n\nclass UILayoutNavbar extends PureComponent {\n\n state = {\n showMenuList: false\n }\n\n componentDidMount() {\n }\n\n gotoPath = (path) => {\n window.open(path, \"_new\"); \n }\n\n render() {\n\n let { showMenuList } = this.state\n\n const bars = this.props.bars\n const match = this.props.location.pathname\n\n // console.info(match, match.path)\n // console.log(bars)\n return (\n
\n
\n
\n
{ window.location.href = '/admin/dataMarket/dictionary' }}>
\n
    \n {\n bars.sort((a, b) => a.order - b.order).map((bar, index) => {\n\n // bar.children.some(child => hasPriv(child.path)):意思是:它下面的所有子节点,至少有一个拥有查看的权限,否则禁用掉\n let childHasPriv = bar.children.some(child => hasPriv(child.path))\n return (\n
  • 0 && childHasPriv ? '' : ' disabled')\n } \n key={index}\n onMouseEnter={() => {\n if (!childHasPriv) return\n this.setState({ showMenuList: true })\n }}\n onMouseLeave={() => this.setState({ showMenuList: false })}\n >\n {\n bar.children && bar.children.length > 0 && childHasPriv ?\n this.setState({ showMenuList: false })} to={bar.rootUrl} className=\"menu__txt\" style={{ display: 'inline-block' }}>{bar.name} 0 ? 'show-down-icon' : '')}> : \n {bar.name}\n }\n {\n bar.children && bar.children.length > 0 &&\n showMenuList &&\n
    \n
      \n {\n bar.children.map((child, i) => {\n let gotoPathState = child.gotoPathState ? child.gotoPathState : 0\n\n // 权限校验:导航显示与否\n let curPathHasPriv = hasPriv(child.path)\n if (!curPathHasPriv) return null\n\n if(gotoPathState === 0) {\n return (\n {\n this.props.updatePageInfo(\"\")\n this.props.updateTabsInfo(\"\")\n this.setState({showMenuList: false})\n }} to={child.path} className={\"m-select-menu__item\" + (this.props.location.pathname === child.path ? ' current' : '')} key={i} style={{ display: 'inline-block' }}>\n {child.title}\n \n )\n }\n if(gotoPathState === 1) {\n return (\n {this.gotoPath(child.path)}} className={\"m-select-menu__item\" + (this.props.location.pathname === child.path ? ' current' : '')} key={i} style={{ display: 'inline-block' }}>\n {child.title}\n \n )\n } \n })\n }\n
    \n
    \n }\n
  • \n )\n })\n }\n
\n
\n \n
\n \n
\n

{this.props.userInfo.FullName || ''}

\n
\n
\n
\n
\n )\n }\n}\n\nconst mapState = state => ({\n userInfo: state.user.userInfo,\n pageInfo: state.page.pageInfo,\n tabsInfo: state.page.tabsInfo\n})\n\nconst mapDispatch = dispatch => ({\n updateUserInfo: dispatch.user.updateUserInfo,\n updatePageInfo: dispatch.page.updatePageInfo,\n updateTabsInfo: dispatch.page.updateTabsInfo\n})\n\nexport default withRouter(connect(mapState, mapDispatch)(UILayoutNavbar))\n","import _ from \"lodash\"\nimport { Redirect, Route, Switch } from 'react-router-dom'\nimport { authMap } from '@components/FrontendAuth/AuthMap'\nimport NoRight from '@pages/NoRight'\n\n// 路由守卫:判断当前路由是否能访问\nfunction FrontendAuth(props) {\n let pathname = _.get(props, 'location.pathname')\n let permissions = sessionStorage.getItem('permissions')\n let permissionsIsEmpty = !permissions\n\n // 没有任何权限,直接空状态界面\n if (permissionsIsEmpty) return \n\n try {\n permissions = JSON.parse(permissions)\n } catch (error) {\n console.log(error);\n }\n\n // 路由存在,就需要校验权限\n let noRight = pathname && _.isArray(authMap[pathname]) && authMap[pathname].length && !authMap[pathname].some(key => permissions[key])\n if (noRight) {\n return \n }\n\n if (_.isArray(props.Routers) && props.Routers.length) {\n return (\n \n {props.Routers.map(router => )}\n \n \n )\n }\n\n return \n}\n\nexport default FrontendAuth","import UILayout from '@components/Layout/UILayout'\nimport UILayoutNavbar from '@components/Layout/UILayoutNavbar'\n// import UILayoutSidebar from '@components/Layout/UILayoutSidebar'\nimport FrontendAuth from '@components/FrontendAuth'\n//import CountPage from '@pages/Count/CountPage'\nimport NoRight from '@pages/NoRight'\nimport React, { PureComponent } from 'react'\nimport _ from 'lodash'\nimport { connect } from 'react-redux'\nimport { Redirect, Route, Switch, useLocation } from 'react-router-dom'\nimport { login } from '@services/userService'\nimport { getItermSelects } from '@services/dataStandars'\nimport { record } from '@services/dataVisualization'\n\n// 获取routers下所有的xxxxxRouter.js\nconst modules = require.context('./', true, /Router\\.js$/)\nconst Routers = modules.keys().map(key => modules(key))\n\n// 顶部导航栏\nconst bars = Routers.map(router => {\n return router.bar\n})\n\nclass Admin extends PureComponent {\n\n state = {\n showComponets: false\n }\n\n // 跳转无权限页面\n jumpToNoRightPage = () => {\n this.props.history && this.props.history.push('/noright')\n }\n\n componentDidMount() {\n // 登录逻辑\n login().then(response => {\n let baseURL = response.config.baseURL\n if (response.data.code === 1005) {\n window.location.href = baseURL + '/auth/login/index?url=' + encodeURIComponent(window.location.href)\n return\n } else if (response.data.code === 0) {\n // 将权限存入storage\n let permissions = _.get(response, 'data.data.permissions')\n sessionStorage.setItem('permissions', permissions)\n\n // 已登录 | 登录成功 把userInfo存起来\n this.props.updateUserInfo(response.data.data)\n\n this.setState({\n showComponets: true\n })\n\n // 登录成功后,将topic、busines存入redux,很多地方使用的\n setTimeout(this.onGetItermSelects, 0);\n\n // // 登陆成功后,接入h5的自动化埋点\n // if (window.__app_env__.NODE_ENV === 'production') {\n // const script = document.createElement(\"script\")\n\n // if (window.__app_env__.REACT_APP_DOMAIN.indexOf('test') !== -1) {\n // script.src = \"https://kftest.qq.com/touch/js/module/page_log.js\" // 测试环境先用kftest\n // } else {\n // script.src = \"https://kf.qq.com/touch/js/module/page_log.js\" // 现网\n // }\n // script.async = true\n // document.body.appendChild(script)\n // }\n } else {\n this.jumpToNoRightPage()\n }\n })\n .catch((error) => {\n // 定义code=500时表示异常返回\n // 跳转无权限页面\n this.jumpToNoRightPage()\n });\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n this.onRecord()\n }\n\n onRecord = () => {\n let url = this.props.history.location.pathname\n let params = {\n 'log_url': url,\n 'log_type': 'enter'\n }\n record({params}).then()\n }\n\n onGetItermSelects = () => {\n const { updateTopic, updateBusiness, updateStandardType } = this.props\n getItermSelects().then(res => {\n const code = _.get(res, 'data.code')\n if (code === 0) {\n const topic = _.get(res, 'data.data.topic')\n const business = _.get(res, 'data.data.business')\n const standardType = _.get(res, 'data.data.standard_type')\n\n if (!_.isEmpty(topic)) updateTopic(topic)\n if (!_.isEmpty(business)) updateBusiness(business)\n if (!_.isEmpty(standardType)) updateStandardType(standardType)\n }\n })\n }\n\n render() {\n // const location = useLocation()\n\n // let menus = []\n // for (const router of Routers) {\n // if (location.pathname.slice(0, router.routerPath.length) === router.routerPath) {\n // menus = router.menus\n // }\n // }\n return (\n this.state.showComponets &&\n \n \n \n \n \n \n {/* {Routers.map(router => )}\n */}\n \n \n \n \n )\n }\n}\n\nconst mapState = state => ({\n user: state.user,\n})\n\nconst mapDispatch = dispatch => ({\n updateUserInfo: dispatch.user.updateUserInfo,\n updateTopic: dispatch.topic.updateTopic,\n updateBusiness: dispatch.topic.updateBusiness,\n updateStandardType: dispatch.topic.updateStandardType,\n})\n\nconst AdminRouter = connect(mapState, mapDispatch)(Admin)\n\nconst RootRouter = () => (\n \n \n {/* \n */}\n \n \n \n)\n\nexport default RootRouter\n","import { request } from '../utils/request'\n\nexport const login = (params = {}) =>\n request({ url: '/auth/login/check', method: 'post', data: params })\n\nexport const logout = (params = {}) =>\n request({ url: '/UserManage/logout', method: 'post', data: params })\n\nexport const getUserInfo = (params = {}) => {\n // return request({ url: '/UserManage/getUserInfo', method: 'post', data: params })\n // return Promise.resolve({ username: 'username', age: 18 })\n}\n\n\n","import React from 'react'\nimport { BrowserRouter } from 'react-router-dom'\nimport { routerOptions } from './config/config'\nimport RootRouter from './routers'\n\nconst AppRouter = props => (\n \n \n \n)\n\nexport default AppRouter\n","import { init } from '@rematch/core'\n\nconst models = {}\n\n// 获取models下所有的xxxxxModel.js\nconst modelFiles = require.context('./redux', false, /Model\\.js$/)\nmodelFiles.keys().forEach(key => {\n const modelName = key.slice('./'.length, -'Model.js'.length)\n models[modelName] = modelFiles(key).default\n})\n\nconst store = init({\n models,\n})\n\nexport default store\n","const reportWebVitals = onPerfEntry => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React from 'react'\nimport ReactDOM from 'react-dom'\nimport { Provider } from 'react-redux'\nimport './stylesheets/index.css'\nimport './stylesheets/style-index.css'\nimport AppRouter from './AppRouter'\nimport store from './store'\nimport reportWebVitals from './reportWebVitals'\n\n// 引入图标库,以后只需要直接更新src下的iconfont文件即可\nimport './iconfont/iconfont.css'\n\nfunction render(props = {}) {\n const { container } = props\n ReactDOM.render(\n \n \n \n \n ,\n container ? document.querySelector(container) : document.getElementById('root'),\n )\n}\n\nrender()\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals()\n"],"sourceRoot":""}