{"version":3,"sources":["Assets/icon.png","Assets/DownIOS.png","Assets/DownAndroid.png","Assets/BgTrongDongNew.png","Assets/notEye.png","Assets/eye.png","Redux/Type.js","Containers/setup.js","Redux/Reducer/Search.js","Components/Drawing/Mode.js","Redux/Reducer/Drawing.js","Redux/Reducer/HienTrang.js","Redux/Reducer/GiaDat.js","Redux/Reducer/QuyHoach.js","Redux/Reducer/RightPanel.js","Redux/Reducer/MapView.js","Redux/Reducer/Reducer.js","Redux/Store.js","Styles/Colors.js","Components/Accessary.js","Containers/RightPanelAction.js","Components/Menu/HeaderBar.js","Containers/MainController.js","Containers/Converter.js","Containers/WKT.js","Assets/LabelQuyHoach.js","Containers/QuyHoach.js","Containers/quyhoachCofigEnter.js","Containers/MapView.js","Components/Main/MapView.js","Components/QuyHoach/LopQuyHoach.js","Containers/Search.js","Components/HienTrang/LopHienTrang.js","Components/Drawing/index.js","Components/ModalView.js","Components/Search/Search.js","Components/QuyHoach/Layer.js","Components/Menu/MapMode.js","Components/Menu/Menu.js","Components/Menu/Location.js","Components/Menu/LocationEnter.js","Components/QuyHoach/ZonePanel.js","Styles/Layout.js","Components/Trichdo/Polygon.js","Components/Search/PanelInfo.js","Components/Search/Result.js","Components/HienTrang/Info.js","Components/Profile/Account.js","Components/Main/ContentRightPanel.js","Components/Main/RightPanel.js","Components/QuyHoach/PanelQuyHoachInfo.js","Components/Main/Container.js","Components/Drawing/ControlBar.js","Components/Drawing/Statistical.js","Containers/KinhTuyenTruc.js","Containers/LocationDefault.js","Containers/APIQuyHoachTinh.js","Containers/LoginEnter.js","Components/Profile/LoginNew.js","Components/Profile/PageLoading.js","Components/Main/Main.js","Components/QuanLyGhiChu/HeaderBar.js","Components/QuanLyGhiChu/MenuSide.js","Components/QuanLyGhiChu/DanhMucQuanLy.js","App.js","serviceWorker.js","index.js"],"names":["module","exports","Type","TNH_SETUP","title","googleMapURL","defaultZoom","huyenId","iddvhc","tinhId","distanceLoad","ktt","dXSDefult","dYSDefult","initSearchState","listDistrict","districtSelected","key","setup","districtSelectedLocation","districtSelectedLocationXa","listWard","wardSelected","showErrorWard","modeSearch","searchText","listResult","listDistrictEnter","districtSelectedEnter","listWardEnter","wardSelectedEnter","Search","state","type","route","value","SET_SEARCH","DrawingMode","initDrawingState","showTool","drawingMode","STOP","evtPath","Drawing","evt","SHOW_ON_DRAWING","SHOW_OFF_DRAWING","STOP_DRAWING","START_DRAWING","POLYGON","CLEAR_PATH_DRAWING","setMap","SET_EVT_DRAWING","initState","listPolygon","showThuaDat","shapePolygon","lastCoordinate","makerPosition","pickedPolygon","showOnZoom","dataThuaDatPicked","dataThuaDatPickedKhongThuocTinh","giadat","dataTrichDoPicked","danhSachHuyen","danhSachXa","menuQuyHoach","HienTrang","SET_STATE_HIEN_TRANG","CLEAR_MAKER","GiaDat","SET_STATE_GIA_DAT","menu","showQuyHoach","typeActive","isLoading","errorMessage","labelActive","listLabel","polygons","polyline","points","selected","isLoadingQH","quyHoachThuaDat","QuyHoachReducer","SET_STATE_QUY_HOACH","SELECTED_QUYHOACH","isShow","className","routeContent","routeFrom","RightPanelReducer","SET_STATE_RIGHT_PANEL","refMapView","currentZoom","showModal","typeMapId","MapViewReducer","REF_MAP_VIEW","SET_CURRENT_ZOOM_SCALE","SET_SHOW_MAIN_MODAL","SET_TYPE_MAP","combineReducers","UserInfoEnter","action","SET_USER_INFO_ENTER","userInfo","signOut","signOutAction","token","SET_TOKEN","TokenEnter","SET_TOKEN_ENTER","searchState","quyHoachInfo","add","SET_QUY_HOACH_ON_THUA_DAT","SoTo","SoThua","MaDvhc","drawingTool","hienTrang","quyHoach","mainAlertMessage","message","SET_MAIN_MESSAGE","rightPanel","mapView","store","createStore","Reducer","COLOR","whiteGray","darkGray","black","brown","grey","gray100","darkBlue","blue","whiteBlue","blueBackground","white","red","redPink","border","orange","yellow","orangeBackground","greenBackground","green","opacityBackground","grayBackground","transparent","fillColorQuyHoach","deepOrange","gray","pink","purple","deepGreen","strokeColor","colorMapping","getQuyHoachColor","strType","mapping","fillColor","getUsedShapeColor","theme","getTheme","BaseButton","props","TooltipHost","content","tooltip","styles","root","display","directionalHint","DirectionalHint","bottomCenter","PrimaryButton","text","allowDisabledFocus","addButton","split","CommandButton","CommandBarButton","onClick","iconProps","iconName","processButton","AppButton","Stack","style","flexDirection","IconButton","iconButtonViTri","active","window","innerWidth","Icon","color","fontSize","marginTop","iconButton","HorizontalDivider","horizontalDivider","VerticalDivider","verticalDivider","MenuItem","menuItem","checked","Loading","loadingContainer","Spinner","label","Error","errorIcon","Text","variant","menuIcon","height","backgroundColor","marginRight","width","textAlign","icon","iscircle","borderRadius","rootHovered","rootPressed","iconHovered","iconPressed","opacity","marginLeft","palette","themePrimary","rootChecked","themeLight","labelChecked","fontWeight","rootCheckedHovered","iconChecked","flex","justifyContent","alignItems","padding","loadingSpin","NeutralColors","gray90","e","titleHeader","onOpenRightPanel","getState","dispatch","onCloseRightPanel","setTimeout","appButtonEnter","HeaderBar","userInfoEnter","useSelector","useDispatch","onButtonPress","topBar","horizontal","verticalAlign","Image","src","require","imageFit","ImageFit","contain","APILink","map","item","accountBtn","Persona","hidePersonaDetails","initialsColor","size","PersonaSize","size32","appName","FontSizes","size14","cursor","paddingLeft","apiLinkEnterpriseBody","secretKey","URL","getMenuQuyHoach","getQuyHoachInfo","getKhaoSatQuyHoach","getPolygonQuyHoach","loginEnterPrise","ForgetPassWordEnter","getPolygonByDistanceEnter","X","Y","khoangCach","getPolygonByDistanceNew","lat","lng","getPolygonByToThuaEnter","getDVHCEnterprise","id","searchSoToDVHC","soTo","dvhc","searchSoThuaDVHC","soThua","idBanDo","searchByNameEnter","name","tokenEnterPrise","getInfo","getProvice","getToaDo","maXa","urlDownloadIOS","urlDownloadAndroid","isObject","obj","constructor","Object","onPostRequest","url","onSuccess","payload","dataHeader","dataResponse","statusCode","response","rawDataHeader","rawToken","decodeResponse","JSON","parse","Username","Token","encodeResponse","Axios","post","encodeURI","headers","Data","then","res","status","data","catch","error","handlerError","onRequestEnterPrise","onGetRequestEnterPriseBody","get","onSignOut","localStorage","removeItem","body","stringify","CryptoJS","enc","Utf8","MD5","words","push","options","mode","ECB","textWordArray","TripleDES","encrypt","toString","encryptedText","decrypt","ciphertext","Base64","callBack","request","formatNumber","number","replace","QD_GiaDat","conPi","Math","PI","convertXYToLatLon","pointXY","dXS","dYS","m_dLongitudeOrigin","m_a","m_dSemiMajorAxis","m_b","m_dSemiMinorAxis","m_e2","m_N","m_pow2N","m_pow3N","northing","x","easting","y","phi","phi1","M","sin","cos","v","sqrt","pow","rho","n2","VII","tan","VIII","IX","Et","latitude","XI","XII","XIIA","longitude","getDistance","p1","p2","p","c","a","asin","toFixed","convertXYPolygon","dataPoint","xArray","yArray","xMin","min","xMax","max","yMin","yMax","dx","dy","len","length","dataText","svgHeight","distance","i","pointStart","pointEnd","from","to","flagDown","angle","atan","middlePoint","abs","rotate","join","circle","labelQuyHoachChiTiet","polygon","StringShape","includes","stt","arr","filter","QuyHoachName","onPostRequestBodyQuyHoach","LinkAPI","QuyHoach","MucDichSuDung","MDSD","onShowOffQuyHoachInfoPanel","panel","document","querySelector","setProperty","mapGeoType","sortListObject","b","nameA","toUpperCase","nameB","dataConfig","idbando","idThuaDat","config","method","onPostRequestEnterPriseBody","responseThua","forEach","idthuadat","processPolygon","geojson","center","getCenterPoint","centerPoint","onMoveToMap","strPoly","geoType","isConvert","trim","coordinateArray","_p","_list","isNaN","parseFloat","coordinate","processPolygonEnter","panTo","MapView","withScriptjs","withGoogleMap","refMap","useRef","ref","defaultCenter","featureType","stylers","visibility","mapTypeControl","streetViewControl","zoomControl","onTilesLoaded","current","getCenter","topRightPoint","getBounds","getNorthEast","bottomLeftPoint","getSouthWest","zoom","getZoom","colorThuaDat","loaidat","ID","objectid","SOTO","soto","SOTHUA","sothua","LOAIDAT","DIENTICH","dientich","StokeColor","FillColor","WeightLine","weightLine","console","log","getPolygonByDistance2Enter","defaultMapTypeId","mapTypeId","children","LopQuyHoach","onPolygonPress","onShowQuyHoachInfoPanel","index","paths","defaultPath","strokeWeight","zIndex","visible","path","averageCenter","enableRetinaIcons","gridSize","position","LINESTRING","POINT","getListXaEnter","maxa","tendvhc","searchID","getSearchListEnter","TenChu","count","items","unescape","nguoiLienQuan","Nguoilienquan","Dangkymdng","nguonGocSDD","mucDichSDD","Nguongoc","Tennguongoc","Loaidat","Tendaydu","Dientich","Iddvhc","Idthuadat","Soto","Sothututhua","Khuvuc","Diachithua","Tendvhc","Tenhuyen","Tentinh","Hinhthucsd","Tentrangthai","Sovaoso","getListMDSD","Hoten","Gioitinh","Ngaysinh","Sodinhdanh","Diachi","getThuaByName","getThuaByToThu","idtobando","strMDSD","result","slice","listMDSD","formatListMDSD","indexOf","LopHienTrang","shape","latLng","point","madvhc","getInfoByThuaDatEnter","defaultPaths","defaultOptions","drawingControl","polygonOptions","fillOpacity","clickable","editable","draggable","onPolygonComplete","event","ModalView","Modal","isOpen","isBlocking","onDismiss","dragOptions","modal","containter","titleIcon","mess","button","marginBottom","main","minHeight","minWidth","justifycontent","fontFamily","paddingRight","useState","setIsOpen","setLoading","isDidMount","setDidMount","setErrorMessage","warningMessage","setWarningMessage","disabled","optionModeSearch","useEffect","onCallAPISearchEnter","onSearchPress","arraySearchText","MADVHC","SearchBox","placeholder","onChange","_","onClear","onSearch","MessageBar","messageBarType","MessageBarType","warning","isMultiline","subTitleRow","Label","required","labelTitle","ChoiceGroup","chosenGroup","selectedKey","optionChoose","Dropdown","dropdownMenu","districtSelectedTempt","temp","mahuyen","xaDefault","severeWarning","labelPosition","hidden","Layer","msg","setMsg","tokens","childrenGap","Checkbox","MaTinh","matinh","horizontalAlign","labelLayerQuyHoach","DataQuyHoachTTTC","geoList","labelList","sort","onLoadQHChiTietTanChau","keyType","ApiLink","labelObj","kyhieu","nextLabel","element","nextItem","onLoadQuyHoachPolygon","DefaultButton","MapMode","option","Menu","inline","href","Location","routeKey","setRouteKey","container","location","paddingBottom","overflowY","maxHeight","ZonePanel","React","showPhotoViewer","setShowPhotoViewer","showInitIndex","setShowInitIndex","ScrollablePane","Link","layer","onRenderLabel","CheckLabel","onClose","images","imageTest","noToolbar","zoomSpeed","showTotal","activeIndex","alt","thumbnail","Polygon","dataTrichDo","polygonContainer","line","cx","cy","r","fill","transform","stroke","strokeWidth","widthLine","bottom","PanelInfo","forwardRef","setData","showIndex","setShowIndex","setClassName","useImperativeHandle","onShowCardInfo","dataFromParent","onShowOffCardInfo","CardInfo1","CardInfo2","CardInfo","infoView","infoHeader","infoTitle","closeInfo","infoContainer","DienTich","Array","isArray","MucDichSDD","squareIcon","undefined","DiaChiThuaDat","TrangThaiThuaDat","Ten1","infoAccount","infoName","NamSinh1","DiaChi1","Ten2","NamSinh2","DiaChi2","paddingTop","gender","CardItemPerson","Card","childrenMargin","cardContainer","Item","footerCardSectionStyles","accountIcon","GioiTinh1","margin","GioiTinh2","titleFooter","onCardItemPress","contentFooter","Result","cardInfoLayout","resultStack","FocusZone","direction","FocusZoneDirection","vertical","List","onRenderCell","Layout","maxWidth","overflow","left","right","top","borderBottom","isFemale","Info","dataKhongThuocTinh","strongContent","squareContent","PersonaInitialsColor","size24","personName","Color","LoaiDat","verifyIcon","teal","contentGia","open","GiaTri","titleGia","MaLoaiDat","KhuVuc","TenViTri","TenDoanDuong","TenDuong","Account","hideDialog","setHideDialog","user","onHideDialog","FullName","size72","presence","PersonaPresence","online","PhoneNumber","Dialog","dialogContentProps","DialogType","normal","closeButtonAriaLabel","subText","modalProps","DialogFooter","ContentRightPanel","LocationEnter","RightPanel","closeButtonView","closeButton","PanelQuyHoachInfo","headerBar","headerTitle","boxShadow","SharedColors","cyanBlue10","cyanBlue20","typeTitle","Container","mapContainer","loadingElement","containerElement","mapElement","latDefault","lngDefault","ControlBar","ActionButton","gray30","gray40","Statistical","isMount","setMount","totalField","setTotalField","totalArea","setTotalArea","totalMdsd","setTotalMdsd","detail","setDetail","detailMode","setDetailMode","coords","getPath","getArray","KTT","K","sinphi","cosphi","tanphi","pow2sinphi","pow2cosphi","pow3cosphi","pow5cosphi","pow2tanphi","pow4tanphi","P","pow2P","pow4P","v1","convertLatLonToXY","polygonStr","DTKhaoSat","tile","round","areaTotal","fieldTotal","keyMDSD","areaMDSD","nameMDSD","Ten","mdsdTotal","area","onLoadStatistical","onLoadSuccess","onLoadInMount","_renderHeaderColumn","detailsHeaderProps","defaultRender","Sticky","onModeChange","headerView","generalView","generalTitle","generalContent","Toggle","onText","offText","DetailsList","columns","column","setKey","layoutMode","DetailsListLayoutMode","justified","selectionMode","SelectionMode","none","onRenderDetailsHeader","columnMDSD","fieldName","greenCyan10","mediumPlus","FontWeights","bold","green20","smallPlus","semibold","medium","KinhTuyenTruc","LocationDefault","maHuyen","DSAPIQuyHoach","onAuthenticationEnterPrise","access_token","setItem","onInfoByToken","URLSearchParams","append","Expired","Organization","Password","phone_number","onGetRequestEnterPriseBodyProvince","idDVHC","parseInt","getListHuyenEnter","arrXa","lengthArr","arrHuyen","tempt","onSuccessLoadXa","statusCodeToaDo","arrTempt","locationDefault","maHuyenTempt","maHuyenDefault","maXaDefault","onGetDVHCHuyenXa","onGetProvince","LoginEnterPrise","contentDialog","rememberLogin","usernameEnter","passwordEnter","lastPasswordEnter","confirmPasswordEnter","isLogin","isChangePasswordSuccess","closeAndBack","mailXacThuc","isEye","onCallLoginAPI","setState","onForgetPassWord","onOpenDialog","onCloseDialog","onChangeUsername","onChangePassword","onChangeEmail","onChangeLastPassword","onChangeConfirmPassword","onLoginPress","handleEnterPress","ent","this","containerLogin","cardInput","target","inputTDN","onKeyDown","PureComponent","backgroundPosition","backgroundRepeat","backgroundImage","BgTrongDongNew","matKhau","boderWidth","borderWidth","PageLoading","containerHeader","headerModal","headerRow","spinner","borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius","connect","isLoadding","setIslodding","getItem","onSetLoginStateAtStart","blocked","truncated","dismissButtonAriaLabel","messageBar","LoginNew","modalContainer","HeaderBarGhiChu","onBackPress","newValue","searchBox","menuBar","splitButtonMenuButton","splitButtonMenuIcon","splitButtonDivider","splitButtonContainer","selectors","HighContrastSelector","borderColor","divider","MenuSide","navStyles","QuanLyGhiChu","Component","RouteMain","exact","DanhMucQuanLy","initializeIcons","App","Boolean","hostname","match","history","createBrowserHistory","ReactDOM","render","getElementById","navigator","serviceWorker","ready","registration","unregister"],"mappings":"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AM,qBACN5K,IAAK,OAET,CACIM,IAAK,GACLsK,KAAM,kBACN5K,IAAK,OAET,CACIM,IAAK,GACLsK,KAAM,eACN5K,IAAK,KAET,CACIM,IAAK,GACLsK,KAAM,eACN5K,IAAK,KAET,CACIM,IAAK,GACLsK,KAAM,eACN5K,IAAK,QAET,CACIM,IAAK,GACLsK,KAAM,kBACN5K,IAAK,OAET,CACIM,IAAK,GACLsK,KAAM,qBACN5K,IAAK,KAET,CACIM,IAAK,GACLsK,KAAM,sBACN5K,IAAK,QAET,CACIM,IAAK,GACLsK,KAAM,8BACN5K,IAAK,KAET,CACIM,IAAK,GACLsK,KAAM,2BACN5K,IAAK,QAET,CACIM,IAAK,GACLsK,KAAM,iBACN5K,IAAK,QAET,CACIM,IAAK,GACLsK,KAAM,qBACN5K,IAAK,KAET,CACIM,IAAK,GACLsK,KAAM,yBACN5K,IAAK,QAET,CACIM,IAAK,GACLsK,KAAM,UACN5K,IAAK,OAET,CACIM,IAAK,GACLsK,KAAM,UACN5K,IAAK,OAET,CACIM,IAAK,GACLsK,KAAM,yBACN5K,IAAK,OAET,CACIM,IAAK,GACLsK,KAAM,wBACN5K,IAAK,OAET,CACIM,IAAK,GACLsK,KAAM,gBACN5K,IAAK,OAET,CACIM,IAAK,GACLsK,KAAM,kBACN5K,IAAK,QAET,CACIM,IAAK,GACLsK,KAAM,kBACN5K,IAAK,QAET,CACIM,IAAK,GACLsK,KAAM,qBACN5K,IAAK,OAET,CACIM,IAAK,GACLsK,KAAM,wBACN5K,IAAK,QAET,CACIM,IAAK,GACLsK,KAAM,0BACN5K,IAAK,QAET,CACIM,IAAK,GACLsK,KAAM,0BACN5K,IAAK,QAET,CACIM,IAAK,GACLsK,KAAM,qBACN5K,IAAK,QAET,CACIM,IAAK,GACLsK,KAAM,kCACN5K,IAAK,QAET,CACIM,IAAK,GACLsK,KAAM,cACN5K,IAAK,OAET,CACIM,IAAK,GACLsK,KAAM,UACN5K,IAAK,QAET,CACIM,IAAK,GACLsK,KAAM,kBACN5K,IAAK,QAET,CACIM,IAAK,GACLsK,KAAM,eACN5K,IAAK,QAE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","file":"static/js/main.e6182383.chunk.js","sourcesContent":["module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALgAAAA8CAYAAADVEnAJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjU4NjZBRkVCNzJBOTExRTg5MjZDQUI1RDI0RUVEMDUzIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjU4NjZBRkVDNzJBOTExRTg5MjZDQUI1RDI0RUVEMDUzIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NTg2NkFGRTk3MkE5MTFFODkyNkNBQjVEMjRFRUQwNTMiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NTg2NkFGRUE3MkE5MTFFODkyNkNBQjVEMjRFRUQwNTMiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7eFJMmAAAOFUlEQVR42uxd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\"","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/BgTrongDongNew.d8df190e.png\";","module.exports = __webpack_public_path__ + \"static/media/notEye.0efe36fe.png\";","module.exports = __webpack_public_path__ + \"static/media/eye.9a3c0788.png\";","const Type = {\r\n // 'SET_USER_INFO': 'SET_USER_INFO',\r\n // 'SET_TOKEN': 'SET_TOKEN',\r\n 'SET_USER_INFO_ENTER': 'SET_USER_INFO_ENTER',\r\n 'SET_TOKEN_ENTER': 'SET_TOKEN_ENTER',\r\n 'SET_SEARCH': 'SET_SEARCH',\r\n 'SET_QUY_HOACH_ON_THUA_DAT': 'SET_QUY_HOACH_ON_THUA_DAT',\r\n 'SHOW_ON_DRAWING': 'SHOW_ON_DRAWING',\r\n 'SHOW_OFF_DRAWING': 'SHOW_OFF_DRAWING',\r\n 'STOP_DRAWING': 'STOP_DRAWING',\r\n 'START_DRAWING': 'START_DRAWING',\r\n 'SET_EVT_DRAWING': 'SET_EVT_DRAWING',\r\n 'CLEAR_PATH_DRAWING': 'CLEAR_PATH_DRAWING',\r\n 'SET_SHOW_MAIN_MODAL': 'SET_SHOW_MAIN_MODAL',\r\n 'SET_STATE_HIEN_TRANG': 'SET_STATE_HIEN_TRANG',\r\n 'SET_STATE_GIA_DAT': 'SET_STATE_GIA_DAT',\r\n 'SET_MAIN_MESSAGE': 'SET_MAIN_MESSAGE',\r\n 'SET_TRICH_DO': 'SET_TRICH_DO',\r\n 'REF_MAP_VIEW': 'REF_MAP_VIEW',\r\n 'MOVE_MAP': 'MOVE_MAP',\r\n 'SET_CURRENT_ZOOM_SCALE': 'SET_CURRENT_ZOOM_SCALE',\r\n 'CLEAR_MAKER': 'CLEAR_MAKER',\r\n 'SET_STATE_QUY_HOACH': 'SET_STATE_QUY_HOACH',\r\n 'SET_STATE_RIGHT_PANEL': 'SET_STATE_RIGHT_PANEL',\r\n 'SET_TYPE_MAP': 'SET_TYPE_MAP',\r\n // 'SET_TYPE_SERVER': 'SET_TYPE_SERVER',\r\n 'SELECTED_QUYHOACH': \"SET_SELECTED_QUYHOACH\"\r\n}\r\n\r\nexport default Type;\r\n","const TNH_SETUP = {\r\n title: \"VNPT ILIS - Cổng thông tin địa chính\",\r\n // googleMapURL: 'https://maps.googleapis.com/maps/api/js?key=AIzaSyAlcAU-VVbfnvJMQ_CZDmIBFIQ1jGYDVvk&libraries=geometry,drawing,places',\r\n googleMapURL: 'https://maps.googleapis.com/maps/api/js?key=AIzaSyB9vaQPpsE8RxB7iG5W7oZYZtExGQTJmKk&libraries=geometry,drawing,places',\r\n defaultZoom: 18,\r\n huyenId: 706,\r\n iddvhc: '5D69DF6710A54EB89D1384CB3F18A6F0',\r\n tinhId: 72,\r\n distanceLoad: '200',\r\n ktt: 105.5,\r\n dXSDefult: 0.00101036464,\r\n dYSDefult: -0.00178137015, \r\n};\r\n\r\nexport default TNH_SETUP;\r\n","import setup from \"../../Containers/setup\";\r\nimport Type from \"../Type\";\r\n\r\n\r\nconst initSearchState = {\r\n listDistrict: [],\r\n districtSelected: { key: setup.huyenId },\r\n districtSelectedLocation: null,\r\n districtSelectedLocationXa: null,\r\n listWard: [],\r\n wardSelected: '',\r\n showErrorWard: false,\r\n modeSearch: 'byName',\r\n searchText: \"\",\r\n listResult: [],\r\n\r\n listDistrictEnter: [],\r\n districtSelectedEnter: { key: null },\r\n listWardEnter: [],\r\n wardSelectedEnter: '',\r\n}\r\n\r\nconst Search = (state = initSearchState, { type, route, value }) => {\r\n if (type === Type.SET_SEARCH) {\r\n return {\r\n ...state,\r\n [route]: value\r\n }\r\n }\r\n return state;\r\n};\r\n\r\nexport default Search\r\n","const DrawingMode = {\r\n 'STOP':null,\r\n 'POLYGON':'polygon'\r\n}\r\n\r\nexport default DrawingMode\r\n","import DrawingMode from \"../../Components/Drawing/Mode\";\r\nimport Type from \"../Type\";\r\n\r\n\r\nconst initDrawingState = {\r\n showTool:false,\r\n drawingMode:DrawingMode.STOP,\r\n evtPath:null\r\n}\r\n\r\nconst Drawing = (state = initDrawingState, {type,evt})=>\r\n{\r\n switch (type)\r\n {\r\n case Type.SHOW_ON_DRAWING: return {...state,showTool: true};\r\n case Type.SHOW_OFF_DRAWING: return initDrawingState;\r\n case Type.STOP_DRAWING: return {...state,drawingMode: DrawingMode.STOP};\r\n case Type.START_DRAWING: return {...state,drawingMode: DrawingMode.POLYGON};\r\n case Type.CLEAR_PATH_DRAWING: {\r\n if (state.evtPath)\r\n state.evtPath.setMap(null);\r\n return {...state,evtPath: null};\r\n }\r\n case Type.SET_EVT_DRAWING: return {...state,evtPath: evt}\r\n default: return state;\r\n }\r\n\r\n}\r\n\r\nexport default Drawing\r\n","import Type from \"../Type\";\r\n\r\nconst initState = {\r\n listPolygon: [],\r\n showThuaDat: false,\r\n shapePolygon: [],\r\n lastCoordinate: '',\r\n makerPosition: {},\r\n pickedPolygon: [],\r\n showOnZoom: true,\r\n dataThuaDatPicked: {},\r\n dataThuaDatPickedKhongThuocTinh: null,\r\n giadat: null,\r\n dataTrichDoPicked: null,\r\n danhSachHuyen: null,\r\n danhSachXa: null,\r\n menuQuyHoach: []\r\n}\r\n\r\nconst HienTrang = (state = initState, { type, route, value }) => {\r\n if (type === Type.SET_STATE_HIEN_TRANG)\r\n return {\r\n ...state,\r\n [route]: value\r\n }\r\n else if (type === Type.CLEAR_MAKER)\r\n return {\r\n ...state,\r\n pickedPolygon: [],\r\n makerPosition: {}\r\n }\r\n else\r\n return state;\r\n}\r\n\r\nexport default HienTrang\r\n","import Type from \"../Type\";\r\n\r\nconst initState = {\r\n // listPolygon:[],\r\n // showThuaDat:false,\r\n // shapePolygon:[],\r\n // lastCoordinate:'',\r\n // makerPosition:{},\r\n // pickedPolygon:[],\r\n // showOnZoom:true,\r\n // dataThuaDatPicked:{},\r\n giadat: null,\r\n // dataTrichDoPicked:null\r\n}\r\n\r\nconst GiaDat = (state = initState,{type,route,value})=>\r\n{\r\n if (type === Type.SET_STATE_GIA_DAT)\r\n return {\r\n ...state,\r\n [route]:value\r\n }\r\n else if (type === Type.CLEAR_MAKER)\r\n return {\r\n ...state,\r\n pickedPolygon:[],\r\n makerPosition:{}\r\n }\r\n else\r\n return state;\r\n}\r\n\r\nexport default GiaDat\r\n","import { flushSync } from \"react-dom\";\r\nimport Type from \"../Type\";\r\n\r\nconst initState = {\r\n menu: [],\r\n showQuyHoach: false,\r\n typeActive: {},\r\n isLoading: false,\r\n errorMessage: '',\r\n labelActive: [],\r\n listLabel: [],\r\n polygons: [],\r\n polyline: [],\r\n points: [],\r\n selected: {},\r\n isLoadingQH: false,\r\n quyHoachThuaDat: []\r\n}\r\n\r\nconst QuyHoachReducer = (state = initState, { type, route, value }) => {\r\n if (type === Type.SET_STATE_QUY_HOACH)\r\n return {\r\n ...state,\r\n [route]: value\r\n }\r\n else if (type === Type.SELECTED_QUYHOACH)\r\n return {\r\n ...state,\r\n selected: value || {}\r\n }\r\n return state;\r\n}\r\n\r\nexport const QuyHoachInfo = (state = [], { type, add }) => {\r\n\r\n if (type === Type.SET_QUY_HOACH_ON_THUA_DAT) {\r\n if (add.SoTo && add.SoThua && add.MaDvhc)\r\n return [...state, add]\r\n\r\n }\r\n return state;\r\n};\r\n\r\nexport default QuyHoachReducer\r\n","import Type from \"../Type\";\r\n\r\nconst initState = {\r\n isShow:false,\r\n className:'',\r\n routeContent:'',\r\n routeFrom:'',\r\n}\r\n\r\nconst RightPanelReducer = (state=initState,{type,route,value})=>\r\n{\r\n if (type === Type.SET_STATE_RIGHT_PANEL)\r\n return {\r\n ...state,\r\n [route]:value\r\n }\r\n return state;\r\n}\r\n\r\nexport default RightPanelReducer\r\n","import Type from \"../Type\";\r\nimport setup from \"../../Containers/setup\";\r\n\r\nconst initState = {\r\n refMapView: null,\r\n currentZoom: setup.defaultZoom,\r\n showModal: false,\r\n typeMapId: 'hybrid',\r\n // typeServer: 'tnh'\r\n}\r\n\r\nconst MapViewReducer = (state = initState, { type, value }) => {\r\n switch (type) {\r\n case Type.REF_MAP_VIEW:\r\n return { ...state, refMapView: value }\r\n case Type.SET_CURRENT_ZOOM_SCALE:\r\n return { ...state, currentZoom: value }\r\n case Type.SET_SHOW_MAIN_MODAL:\r\n return { ...state, showModal: !state.showModal }\r\n case Type.SET_TYPE_MAP:\r\n return { ...state, typeMapId: value }\r\n // case Type.SET_TYPE_SERVER:\r\n // return { ...state, typeServer: value }\r\n default: return state;\r\n }\r\n}\r\n\r\nexport default MapViewReducer\r\n","import { combineReducers } from \"redux\";\r\nimport Type from \"../Type\";\r\nimport Search from \"./Search\";\r\nimport Drawing from \"./Drawing\";\r\nimport HienTrang from \"./HienTrang\";\r\nimport GiaDat from \"./GiaDat\";\r\nimport QuyHoachReducer, { QuyHoachInfo } from \"./QuyHoach\";\r\nimport RightPanelReducer from \"./RightPanel\";\r\nimport MapViewReducer from \"./MapView\";\r\n\r\nexport const UserInfoEnter = (state = '', action) => {\r\n if (action.type === Type.SET_USER_INFO_ENTER) {\r\n return action.userInfo;\r\n }\r\n return state;\r\n};\r\n\r\n\r\nexport const SignOut = (state = () => { }, action) => {\r\n if (action.type === 'SET_SIGN_OUT') {\r\n return action.signOutAction;\r\n }\r\n return state;\r\n};\r\n\r\nexport const Token = (state = '', { type, token }) => {\r\n if (type === Type.SET_TOKEN) {\r\n return token;\r\n }\r\n return state;\r\n};\r\nexport const TokenEnter = (state = '', { type, token }) => {\r\n if (type === Type.SET_TOKEN_ENTER) {\r\n return token;\r\n }\r\n return state;\r\n};\r\n\r\nconst MainAlertMessage = (state = '', { type, message }) => {\r\n if (type === Type.SET_MAIN_MESSAGE)\r\n return message\r\n return state;\r\n}\r\n\r\nexport default combineReducers({\r\n UserInfoEnter: UserInfoEnter,\r\n signOut: SignOut,\r\n token: Token,\r\n TokenEnter: TokenEnter,\r\n searchState: Search,\r\n quyHoachInfo: QuyHoachInfo,\r\n drawingTool: Drawing,\r\n hienTrang: HienTrang,\r\n quyHoach: QuyHoachReducer,\r\n giadat: GiaDat,\r\n mainAlertMessage: MainAlertMessage,\r\n rightPanel: RightPanelReducer,\r\n mapView: MapViewReducer\r\n});\r\n","import {createStore} from \"redux\";\r\nimport Reducer from \"./Reducer/Reducer\"\r\n\r\n// tao ra store\r\nexport const store = createStore(Reducer);\r\n","const COLOR = {\r\n whiteGray: '#F3F2F1',\r\n darkGray: '#6B6B70',\r\n black: '#212121',\r\n brown: '#795548',\r\n grey: '#9E9E9E',\r\n gray100: '#424242',\r\n darkBlue: '#004576',\r\n blue: '#0078d4',\r\n whiteBlue: '#ABD6F5',\r\n blueBackground: '#D6EAFE',\r\n white: '#FFFFFF',\r\n red: '#d32f2f',\r\n redPink: '#fbaaa0',\r\n border: '#E0E0E0',\r\n orange: '#FB8C00',\r\n yellow: '#FAC15D',\r\n orangeBackground: '#FCF6F2',\r\n greenBackground: '#EDF6F4',\r\n green: '#4CAF50',\r\n opacityBackground: 'rgba(0,0,0,0.3)',\r\n grayBackground: '#FAF9F8',\r\n transparent: 'transparent'\r\n};\r\n\r\nexport default COLOR;\r\n\r\n\r\nconst opacityQH = 0.7;\r\nconst opacityTD = .05;\r\nconst fillColor = {\r\n yellow: `rgba(255,235,59,${opacityTD})`,\r\n red: `rgba(244,67,54,${opacityTD})`,\r\n orange: `rgba(255,152,0,${opacityTD})`,\r\n 'deepOrange': `rgba(255,87,34,${opacityTD})`,\r\n gray: `rgba(117,117,117,${opacityTD})`,\r\n pink: `rgba(236,64,122,${opacityTD})`,\r\n blue: `rgba(33,150,243,${opacityTD})`,\r\n green: `rgba(76,175,80,${opacityTD})`,\r\n brown: `rgba(121,85,72,${opacityQH})`,\r\n redPink: `#fbaaa0`,\r\n white: 'transparent'\r\n};\r\n\r\n\r\nconst fillColorQuyHoach = {\r\n yellow: `rgba(255,235,59,${opacityQH})`,\r\n red: `rgba(244,67,54,${opacityQH})`,\r\n orange: `rgba(255,152,0,${opacityQH})`,\r\n deepOrange: `rgba(255,87,34,${opacityQH})`,\r\n gray: `rgba(117,117,117,${opacityQH})`,\r\n pink: `rgba(236,64,122,${opacityQH})`,\r\n blue: `rgba(33,150,243,${opacityQH})`,\r\n green: `rgba(76,175,80,${opacityQH})`,\r\n purple: `rgba(156,39,176,${opacityQH})`,\r\n deepGreen: `rgba(0,150,136,${opacityQH})`,\r\n white: 'transparent'\r\n};\r\n\r\nconst strokeColor = {\r\n yellow: '#F57F17',\r\n red: '#f44336',\r\n orange: '#FF9800',\r\n deepOrange: '#FF5722',\r\n gray: '#757575',\r\n pink: '#EC407A',\r\n blue: '#2196F3',\r\n green: '#4CAF50',\r\n brown: '#795548',\r\n purple: '#9C27B0',\r\n deepGreen: '#009688',\r\n white: '#fff',\r\n redPink: '#c3766c',\r\n whiteBlue: '#00ACC1',\r\n};\r\n\r\nexport const polygonThuaDatStokeColor = {\r\n \"roadmap\": \"#007B72\",\r\n \"hybrid\": \"#FDD835\"\r\n};\r\n\r\nconst colorMapping = {\r\n 'BHK': 'yellow',\r\n 'BHK+CLN': 'yellow',\r\n 'BHK+LUC': 'yellow',\r\n 'BHK+LUK': 'yellow',\r\n 'BCS': 'yellow',\r\n 'CAN': 'red',\r\n 'CLN': 'orange',\r\n 'CLN+BHK': 'orange',\r\n 'CLN+BHK+LUK': 'orange',\r\n 'CLN+LUK': 'orange',\r\n 'CLN+NTS': 'orange',\r\n 'CLN+SKC': 'orange',\r\n 'COC': 'yellow',\r\n 'CQP': 'red',\r\n 'DBV': 'deepOrange',\r\n 'DCH': 'deepOrange',\r\n 'DCS': 'deepOrange',\r\n 'DGD': 'redPink',\r\n 'DGT': 'orange',\r\n 'DHT': 'green',\r\n 'DDL': 'orange',\r\n 'DKV': 'deepOrange',\r\n 'DNL': 'deepOrange',\r\n 'DLL': 'deepOrange',\r\n 'DRA': 'deepOrange',\r\n 'DSH': 'deepOrange',\r\n 'DTL': 'blue',\r\n 'DTS': 'deepOrange',\r\n 'DTT': 'deepOrange',\r\n 'DVH': 'deepOrange',\r\n 'DXH': 'deepOrange',\r\n 'DYT': 'deepOrange',\r\n 'HNK': 'yellow',\r\n 'KDT': \"deepGreen\",\r\n 'LUC': 'yellow',\r\n 'LUC+BHK': 'yellow',\r\n 'LUK': 'yellow',\r\n 'LUK+BHK': 'yellow',\r\n 'LUK+CLN': 'yellow',\r\n 'LUK+NTS': 'yellow',\r\n 'LUN': 'yellow',\r\n 'LNK': 'yellow',\r\n 'MNC': 'blue',\r\n 'NHK': 'yellow',\r\n 'NKH': 'yellow',\r\n 'NTD': 'gray',\r\n 'NTS': 'whiteBlue',\r\n 'NCS': 'brown',\r\n 'ODT': 'pink',\r\n 'ODT+BHK': 'pink',\r\n 'ODT+CLN': 'pink',\r\n 'ODT+HNK': 'pink',\r\n 'ONT': 'pink',\r\n 'ONT+': 'pink',\r\n 'ONT+BHK': 'pink',\r\n 'ONT+BHK+CLN': 'pink',\r\n 'ONT+BHK+LUK': 'pink',\r\n 'ONT+BHK+SKC': 'pink',\r\n 'ONT+CLN': 'pink',\r\n 'ONT+CLN+BHK': 'pink',\r\n 'ONT+CLN+LUK': 'pink',\r\n 'ONT+CLN+NTS': 'pink',\r\n 'ONT+LUC': 'pink',\r\n 'ONT+LUK': 'pink',\r\n 'ONT+NTS': 'pink',\r\n 'ONT+SKC': 'pink',\r\n 'ONT+LNK': 'pink',\r\n 'PNK': 'blue',\r\n 'RDD': 'green',\r\n 'RDM': 'green',\r\n 'RPH': 'green',\r\n 'RSX': 'green',\r\n 'RSN': 'green',\r\n 'SKC': 'purple',\r\n 'SKC+BHK': 'deepOrange',\r\n 'SKC+CLN': 'deepOrange',\r\n 'SKN': 'deepOrange',\r\n 'SKS': 'deepOrange',\r\n 'SKX': 'deepOrange',\r\n 'SON': 'blue',\r\n 'TMD': 'deepOrange',\r\n 'TON': 'deepOrange',\r\n 'TIN': 'deepOrange',\r\n 'TSC': 'red',\r\n 'TSN': 'whiteBlue',\r\n 'QMDTB': 'deepOrange',\r\n 'QMDTH': 'yellow',\r\n 'HMDTH': 'green',\r\n 'HMDTB': 'deepGreen',\r\n 'CAO': 'red',\r\n 'TBI': 'yellow',\r\n 'THP': 'pink',\r\n 'CAU': 'blue',\r\n 'TIM': 'green',\r\n 'D10': 'yellow',\r\n 'VIAHE': 'gray'\r\n};\r\n\r\nconst lineColorMapping = {\r\n 'CHI': 'green',\r\n 'PHU': 'yellow',\r\n 'CAU': 'blue',\r\n 'TIM': 'green',\r\n 'D10': 'yellow',\r\n 'VIAHE': 'gray'\r\n}\r\n\r\nconst lineWeightMapping = {\r\n 'CHI': 5,\r\n 'PHU': 2,\r\n 'CAU': 5,\r\n 'TIM': 5,\r\n 'D10': 2,\r\n 'VIAHE': 1\r\n}\r\n\r\nexport function getShapeColor(strType) {\r\n let mapping = \"gray\";\r\n if (strType && colorMapping[strType])\r\n mapping = colorMapping[strType];\r\n return { strokeColor: strokeColor[mapping], fillColor: fillColor[mapping] }\r\n}\r\n\r\nexport function getQuyHoachColor(strType) {\r\n let mapping = \"gray\";\r\n if (strType && colorMapping[strType])\r\n mapping = colorMapping[strType];\r\n return { strokeColor: strokeColor[mapping], fillColor: fillColorQuyHoach[mapping] }\r\n}\r\n\r\nexport function getUsedShapeColor(strType) {\r\n let mapping = \"gray\";\r\n if (strType && colorMapping[strType])\r\n mapping = colorMapping[strType];\r\n return strokeColor[mapping]\r\n}\r\n\r\nexport const getLineColor = (label) => {\r\n return {\r\n strokeColor: strokeColor[lineColorMapping[label]],\r\n strokeWeight: lineWeightMapping[label]\r\n }\r\n}\r\n","import React, { } from 'react';\r\nimport COLOR from \"../Styles/Colors\";\r\nimport { NeutralColors } from '@uifabric/fluent-theme/lib/fluent/FluentColors';\r\nimport { TooltipHost, IconButton, PrimaryButton, CommandBarButton, DirectionalHint, getTheme, Stack, Spinner, Icon, Text } from '@fluentui/react';\r\nconst theme = getTheme();\r\n\r\nexport const BaseButton = props => {\r\n return (\r\n \r\n \r\n \r\n )\r\n};\r\n\r\nexport const CommandButton = props => {\r\n return (\r\n \r\n \r\n \r\n )\r\n};\r\n\r\nexport const AppButton = props => {\r\n if (props.iconName === 'ServerProcesses') {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {/* {typeServer === 'tnh' ? 'TNH' : 'Enterprise'} */}\r\n \r\n \r\n \r\n \r\n )\r\n\r\n } else {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n};\r\n\r\nexport const HorizontalDivider = () => {\r\n return (\r\n
\r\n )\r\n};\r\n\r\nexport const VerticalDivider = () => {\r\n return (\r\n
\r\n )\r\n};\r\n\r\nexport const MenuItem = props => {\r\n return (\r\n \r\n )\r\n};\r\n\r\nexport const Loading = () => {\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport const Error = ({ message }) => {\r\n return (\r\n \r\n \r\n {message}\r\n \r\n )\r\n}\r\n\r\n\r\nconst styles = {\r\n addButton: {\r\n menuIcon: {\r\n\r\n },\r\n label: {\r\n fontSize: 12\r\n }\r\n },\r\n processButton: {\r\n root: {\r\n height: 32,\r\n backgroundColor: COLOR.transparent,\r\n marginRight: 3,\r\n width: '100%',\r\n marginTop: -50\r\n },\r\n label: {\r\n fontSize: 12,\r\n color: COLOR.blue,\r\n textAlign: 'left'\r\n },\r\n icon: {\r\n fontSize: 16\r\n }\r\n },\r\n iconButton: (active, iscircle) => ({\r\n root: {\r\n height: 48,\r\n width: 48,\r\n backgroundColor: active ? COLOR.darkBlue : 'transparent',\r\n borderRadius: 0\r\n },\r\n rootHovered: {\r\n backgroundColor: COLOR.darkBlue\r\n },\r\n rootPressed: {\r\n backgroundColor: COLOR.darkBlue\r\n },\r\n icon: {\r\n color: COLOR.white,\r\n fontSize: 16\r\n },\r\n iconHovered: {\r\n color: active ? COLOR.blue : COLOR.white,\r\n },\r\n iconPressed: {\r\n opacity: .6\r\n }\r\n }),\r\n horizontalDivider: {\r\n height: 1,\r\n width: '100%',\r\n backgroundColor: COLOR.border\r\n },\r\n verticalDivider: {\r\n width: 1,\r\n height: '100%',\r\n backgroundColor: COLOR.border\r\n },\r\n menuItem: {\r\n root: {\r\n height: 36,\r\n backgroundColor: COLOR.transparent,\r\n width: '100%'\r\n },\r\n label: {\r\n textAlign: 'left',\r\n marginLeft: 10,\r\n fontSize: 12\r\n },\r\n icon: {\r\n textAlign: 'center',\r\n color: theme.palette.themePrimary\r\n },\r\n rootChecked: {\r\n backgroundColor: theme.palette.themeLight\r\n },\r\n labelChecked: {\r\n color: theme.palette.themePrimary,\r\n fontWeight: '600'\r\n },\r\n rootCheckedHovered: {\r\n backgroundColor: theme.palette.themeLight\r\n },\r\n iconChecked: {\r\n color: theme.palette.themePrimary\r\n }\r\n },\r\n loadingContainer: {\r\n root: {\r\n flex: 1,\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n padding: '10px 30px'\r\n }\r\n },\r\n loadingSpin: {\r\n root: {\r\n padding: '10px 20px',\r\n border: '1px solid #eee'\r\n }\r\n },\r\n errorIcon: {\r\n root: {\r\n fontSize: 80,\r\n color: NeutralColors.gray90\r\n }\r\n },\r\n iconButtonViTri: (active, e) => ({\r\n root: {\r\n height: 48,\r\n width: e < 400 ? 50 : 65,\r\n backgroundColor: active ? COLOR.darkBlue : 'transparent',\r\n borderRadius: 0,\r\n },\r\n rootHovered: {\r\n backgroundColor: COLOR.darkBlue\r\n },\r\n rootPressed: {\r\n backgroundColor: COLOR.darkBlue\r\n },\r\n iconHovered: {\r\n color: active ? COLOR.blue : COLOR.white,\r\n },\r\n iconPressed: {\r\n opacity: .6\r\n }\r\n }),\r\n titleHeader: (e) => ({\r\n fontSize: e < 400 ? 7 : 8,\r\n color: \"white\",\r\n fontWeight: 'bold'\r\n }),\r\n};\r\n","import {store} from \"../Redux/Store\";\r\nimport Type from \"../Redux/Type\";\r\n\r\nexport const onOpenRightPanel = (route)=>\r\n{\r\n let {routeContent} = store.getState().rightPanel;\r\n if (routeContent !== route)\r\n {\r\n store.dispatch({type:Type.SET_STATE_RIGHT_PANEL,route:'isShow',value:true});\r\n store.dispatch({type:Type.SET_STATE_RIGHT_PANEL,route:'className',value:'modal-custom-on'});\r\n store.dispatch({type:Type.SET_STATE_RIGHT_PANEL,route:'routeContent',value:route});\r\n }\r\n}\r\n\r\nexport const onCloseRightPanel = () =>\r\n{\r\n let {routeFrom,routeContent} = store.getState().rightPanel;\r\n store.dispatch({type:Type.CLEAR_MAKER})\r\n if (routeFrom) {\r\n switch (routeFrom) {\r\n case \"result\": {\r\n store.dispatch({type:Type.SET_STATE_RIGHT_PANEL,route:'routeContent',value:'result'});\r\n store.dispatch({type:Type.SET_STATE_RIGHT_PANEL,route:'routeFrom',value:'search'});\r\n break;\r\n }\r\n case \"search\": {\r\n store.dispatch({type:Type.SET_STATE_RIGHT_PANEL,route:'routeContent',value:'search'});\r\n store.dispatch({type:Type.SET_STATE_RIGHT_PANEL,route:'routeFrom',value:''});\r\n break;\r\n }\r\n default:\r\n break;\r\n }\r\n } else {\r\n if (routeContent === 'zone')\r\n {\r\n store.dispatch({type:Type.SET_STATE_QUY_HOACH,route:'listLabel',value:[]});\r\n store.dispatch({type:Type.SET_STATE_QUY_HOACH,route:'labelActive',value:[]});\r\n store.dispatch({type:Type.SET_STATE_QUY_HOACH,route:'geoList',value:[]});\r\n }\r\n\r\n store.dispatch({type:Type.SET_STATE_RIGHT_PANEL,route:'className',value:'modal-custom-off'});\r\n store.dispatch({type:Type.SET_MAIN_MESSAGE,message:''})\r\n setTimeout(() => {\r\n store.dispatch({type:Type.SET_STATE_RIGHT_PANEL,route:'routeFrom',value:''});\r\n store.dispatch({type:Type.SET_STATE_RIGHT_PANEL,route:'isShow',value:false});\r\n store.dispatch({type:Type.SET_STATE_HIEN_TRANG,route:'dataThuaDatPicked',value:{}});\r\n store.dispatch({type:Type.SET_STATE_RIGHT_PANEL,route:'routeContent',value:''});\r\n }, 100)\r\n }\r\n}\r\n","import React from 'react';\r\nimport COLOR from \"../../Styles/Colors\";\r\nimport { TooltipHost, Persona, PersonaSize, Stack, Image, ImageFit } from '@fluentui/react';\r\nimport { FontSizes } from '@uifabric/fluent-theme/lib/fluent/FluentType';\r\nimport { AppButton } from \"../Accessary\";\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport Type from \"../../Redux/Type\";\r\nimport { onOpenRightPanel } from \"../../Containers/RightPanelAction\";\r\n\r\nconst HeaderBar = () => {\r\n const userInfoEnter = useSelector(state => state.UserInfoEnter);\r\n\r\n const { showTool } = useSelector(state => state.drawingTool);\r\n const { routeContent } = useSelector(state => state.rightPanel);\r\n\r\n const dispatch = useDispatch();\r\n\r\n\r\n const onButtonPress = (route) => () => onOpenRightPanel(route)\r\n const onDrawingPress = () => {\r\n if (showTool) {\r\n dispatch({ type: Type.CLEAR_PATH_DRAWING });\r\n dispatch({ type: Type.SHOW_OFF_DRAWING });\r\n }\r\n else {\r\n dispatch({ type: Type.SHOW_ON_DRAWING });\r\n dispatch({ type: Type.START_DRAWING })\r\n }\r\n }\r\n if (window.innerWidth < 1000) {\r\n return (\r\n
\r\n \r\n \r\n \r\n Cổng thông tin VNPT iLIS\r\n \r\n \r\n\r\n
\r\n \r\n
\r\n )\r\n }\r\n else {\r\n return (\r\n
\r\n \r\n \r\n \r\n Cổng thông tin VNPT iLIS\r\n \r\n \r\n\r\n
\r\n {(userInfoEnter && userInfoEnter.APILink) ?\r\n \r\n : null\r\n }\r\n {\r\n appButtonEnter.map(item => (\r\n \r\n ))\r\n }\r\n\r\n
\r\n \r\n \r\n {userInfoEnter ?\r\n \r\n
\r\n \r\n
\r\n \r\n :\r\n \r\n }\r\n
\r\n
\r\n )\r\n }\r\n\r\n};\r\n\r\nconst appButtonEnter = [\r\n { key: 'search', iconName: 'Search', tooltip: 'Tìm kiếm' },\r\n { key: 'layer', iconName: 'MapLayers', tooltip: 'Quy hoạch' }, //layer\r\n { key: 'satellite', iconName: 'Nav2DMapView', tooltip: 'Chế độ xem' },\r\n { key: 'locationEnter', iconName: 'MapPin', tooltip: 'Chuyển vị trí' },\r\n // {key:'help',iconName:'Help',tooltip:'Hướng dẫn'}\r\n];\r\n\r\n\r\nexport default HeaderBar;\r\n\r\nconst styles = {\r\n topBar: (e) => ({\r\n backgroundColor: COLOR.blue,\r\n marginTop: -10\r\n }),\r\n appName: {\r\n fontSize: FontSizes.size14,\r\n fontWeight: 600,\r\n color: COLOR.blue,\r\n marginLeft: 10\r\n },\r\n accountBtn: {\r\n height: 48,\r\n width: 48,\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n cursor: 'pointer'\r\n },\r\n title: {\r\n fontSize: 14,\r\n color: COLOR.white,\r\n paddingLeft: 10,\r\n fontWeight: 700,\r\n cursor: 'pointer'\r\n }\r\n};\r\n\r\n\r\n","import Axios from 'axios';\r\nimport CryptoJS from 'crypto-js';\r\nimport { store } from '../Redux/Store';\r\nimport Type from \"../Redux/Type\";\r\nimport { onCloseRightPanel } from \"../Containers/RightPanelAction\";\r\n\r\nconst apiLinkEnterprise = 'https://ilis-sso.vnpt.vn/'\r\nconst apiLinkEnterpriseBody = 'https://ilis-cadas-api.vnpt.vn/'\r\nconst secretKey = '123456qwertyasdfghzxcvbn!@#$%^';\r\n\r\n\r\nconst URL = {\r\n getMenuQuyHoach: `QuyHoach/GetMenuQuyHoach`,\r\n getQuyHoachInfo: `QuyHoach/GetThongTinQuyHoach_v2`,\r\n getKhaoSatQuyHoach: `QuyHoach/GetThongKeKhaoSatQuyHoach`,\r\n getPolygonQuyHoach: key => `QuyHoach/GetPolygonQuyHoach?type=${key}`,\r\n //getQuyHoachLayer: `${apiLink}ilis/wsilis_getDSPolygonQHTheoKhoangCach`,\r\n\r\n loginEnterPrise: `${apiLinkEnterprise}connect/token`,\r\n ForgetPassWordEnter: `${apiLinkEnterprise}Account/ForgotPassword`,\r\n getPolygonByDistanceEnter: (X, Y, khoangCach) => `${apiLinkEnterpriseBody}api/ThuaDat/GetThuaDatAndPolygonByDistanceAsync?pointX=${Y}&pointY=${X}&size=${khoangCach}`,\r\n getPolygonByDistanceNew: (lat, lng, khoangCach) => `${apiLinkEnterpriseBody}api/ThuaDat/GetThuaDatAndPolygonByLatLon?lat=${lat}&lon=${lng}&size=${khoangCach}`,\r\n getPolygonByToThuaEnter: `${apiLinkEnterpriseBody}api/ThuaDat/GetByDSThuaDat`,\r\n getDVHCEnterprise: (id) => `${apiLinkEnterpriseBody}api/Authorize/parent/${id}`,\r\n searchSoToDVHC: (soTo, dvhc) => `${apiLinkEnterpriseBody}api/ToBanDo/SoTo/${soTo}/${dvhc}`,\r\n searchSoThuaDVHC: (soThua, idBanDo) => `${apiLinkEnterpriseBody}api/DangKyQSDD/SearchViewDangKyDemo?PageSize=1000&CurentPage=1&tukhoa=${soThua}&searchExactly=true&idtobando=${idBanDo}`,\r\n searchByNameEnter: (name, iddvhc) => `${apiLinkEnterpriseBody}api/DangKyQSDD/SearchViewDangKyDemo?PageSize=1000&CurentPage=1&iddvhc=${iddvhc}&tukhoa=${name}`,\r\n tokenEnterPrise: '@DataUserEnterprise',\r\n getInfo: `${apiLinkEnterprise}connect/userinfo`,\r\n getProvice: `https://ilis-cadas-api.vnpt.vn/api/Authorize/Province`,\r\n getToaDo: (maXa) => `https://ilis-cadas-api.vnpt.vn/thuadat/publish/communeCenter/${maXa}`,\r\n\r\n\r\n urlDownloadIOS: 'itms-services://vienthongtayninh.vn/?action=download-manifest&url=https://dl.dropboxusercontent.com/s/ku8k2i9igdkgrkl/manifest.plist',\r\n urlDownloadAndroid: 'https://dl.dropboxusercontent.com/s/8ybcoom5zrjyy5l/app-release.apk?dl=0',\r\n\r\n};\r\n\r\nexport default URL;\r\n\r\nexport const isObject = obj => obj && obj.constructor && obj.constructor === Object;\r\n\r\nexport function onPostRequest(url, onSuccess, payload) {\r\n let dataResponse = {\r\n statusCode: null,\r\n response: null,\r\n },\r\n rawDataHeader = payload,\r\n token = store.getState().token,\r\n dataHeader = '';\r\n if (isObject(payload)) {\r\n let rawToken = token;\r\n if (token) {\r\n token = decodeResponse(token);\r\n token = JSON.parse(token);\r\n }\r\n payload = {\r\n Username: token.Username || '',\r\n Token: rawToken || '',\r\n ...payload,\r\n };\r\n }\r\n\r\n dataHeader = encodeResponse(payload);\r\n Axios.post(encodeURI(url), null, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Data: dataHeader,\r\n }\r\n })\r\n .then((res) => {\r\n dataResponse.statusCode = res.status;\r\n dataResponse.response = res.data;\r\n onSuccess(dataResponse);\r\n })\r\n .catch((error) => {\r\n let callBack = () => onPostRequest(url, onSuccess, rawDataHeader);\r\n handlerError(error, onSuccess, callBack);\r\n });\r\n}\r\n\r\nexport function onPostRequestBodyQuyHoach(url, onSuccess, payload) {\r\n let dataResponse = {\r\n statusCode: null,\r\n response: null,\r\n },\r\n token = store.getState().token,\r\n dataHeader = '';\r\n if (isObject(payload)) {\r\n let rawToken = token;\r\n payload = {\r\n Username: token.Username || '',\r\n Token: rawToken || '',\r\n ...payload,\r\n };\r\n }\r\n dataHeader = payload\r\n dataHeader = encodeResponse(payload);\r\n\r\n Axios.post(encodeURI(url), payload, {\r\n headers: {\r\n Data: dataHeader,\r\n }\r\n })\r\n .then((res) => {\r\n dataResponse.statusCode = res.status;\r\n dataResponse.response = res.data;\r\n onSuccess(dataResponse);\r\n })\r\n .catch((error) => {\r\n const status = error.response ? error.response.status : 300;\r\n const res = null\r\n onSuccess({ status, res })\r\n });\r\n}\r\n\r\nexport function onRequestEnterPrise(url, onSuccess, payload, token) {\r\n let dataResponse = {\r\n statusCode: null,\r\n response: null,\r\n }\r\n // rawDataHeader = payload\r\n // token = store.getState().TokenEnter;\r\n if (isObject(payload)) {\r\n let rawToken = token;\r\n if (token) {\r\n token = decodeResponse(token);\r\n token = JSON.parse(token);\r\n }\r\n payload = {\r\n Username: token.Username || '',\r\n Token: rawToken || '',\r\n ...payload,\r\n };\r\n }\r\n Axios.post(encodeURI(url), payload\r\n )\r\n .then((res) => {\r\n dataResponse.statusCode = res.status;\r\n dataResponse.response = res.data;\r\n onSuccess(dataResponse);\r\n })\r\n .catch((error) => {\r\n const status = error.response.status;\r\n const res = null\r\n onSuccess({ status, res })\r\n // let callBack = () => onPostRequest(url, onSuccess, rawDataHeader);\r\n // handlerError(error, onSuccess, callBack);\r\n // if (error.response && error.response.status === 401) {\r\n // localStorage.removeItem('@DataUserEnterprise');\r\n // const userInfo = null;\r\n // store.dispatch({ type: Type.SET_USER_INFO_ENTER, userInfo });\r\n // store.dispatch({ type: Type.SET_TOKEN_ENTER, token: userInfo });\r\n // }\r\n });\r\n}\r\n\r\nexport function onGetRequestEnterPriseBodyProvince(url, onSuccess, token) {\r\n let dataResponse = {\r\n statusCode: null,\r\n response: null,\r\n },\r\n rawDataHeader = null\r\n Axios.get(url,\r\n {\r\n headers: {\r\n 'Authorization': 'Bearer ' + token,\r\n },\r\n }\r\n )\r\n .then((res) => {\r\n dataResponse.statusCode = res.status;\r\n dataResponse.response = res.data;\r\n onSuccess(dataResponse);\r\n\r\n })\r\n .catch((error) => {\r\n let callBack = () => onPostRequest(url, onSuccess, rawDataHeader);\r\n handlerError(error, onSuccess, callBack);\r\n if (error.response && error.response.status === 401) {\r\n onSignOut();\r\n }\r\n });\r\n\r\n}\r\n\r\n\r\nexport function onGetRequestEnterPriseBody(url, onSuccess, payload) {\r\n let dataResponse = {\r\n statusCode: null,\r\n response: null,\r\n },\r\n rawDataHeader = payload,\r\n token = store.getState().TokenEnter;\r\n if (isObject(payload)) {\r\n if (token) {\r\n token = decodeResponse(token);\r\n token = JSON.parse(token);\r\n }\r\n }\r\n Axios.get(url,\r\n {\r\n headers: {\r\n 'Authorization': 'Bearer ' + token,\r\n },\r\n }\r\n )\r\n .then((res) => {\r\n dataResponse.statusCode = res.status;\r\n dataResponse.response = res.data;\r\n onSuccess(dataResponse);\r\n\r\n })\r\n .catch((error) => {\r\n let callBack = () => onPostRequest(url, onSuccess, rawDataHeader);\r\n handlerError(error, onSuccess, callBack);\r\n if (error.response && error.response.status === 401) {\r\n onSignOut()\r\n }\r\n });\r\n\r\n}\r\n\r\nexport function onPostRequestEnterPriseBody(url, onSuccess, payload) {\r\n let dataResponse = {\r\n statusCode: null,\r\n response: null,\r\n },\r\n rawDataHeader = payload,\r\n token = store.getState().TokenEnter;\r\n const config = {\r\n method: 'post',\r\n url: url,\r\n headers: {\r\n 'Authorization': 'Bearer ' + token,\r\n 'Content-Type': 'application/json',\r\n },\r\n data: payload\r\n };\r\n Axios(config)\r\n .then((res) => {\r\n dataResponse.statusCode = res.status;\r\n dataResponse.response = res.data;\r\n onSuccess(dataResponse);\r\n })\r\n .catch((error) => {\r\n let callBack = () => onPostRequest(url, onSuccess, rawDataHeader);\r\n handlerError(error, onSuccess, callBack);\r\n if (error.response && error.response.status === 401) {\r\n onSignOut()\r\n }\r\n });\r\n}\r\n\r\nexport function onSignOut() {\r\n localStorage.removeItem(URL.tokenEnterPrise);\r\n store.dispatch({ type: Type.SET_TOKEN_ENTER, token: '' })\r\n store.dispatch({ type: Type.SET_USER_INFO_ENTER, userInfo: '' });\r\n store.dispatch({ type: Type.SET_STATE_HIEN_TRANG, route: 'showThuaDat', value: false });\r\n store.dispatch({ type: Type.SET_STATE_QUY_HOACH, route: 'showQuyHoach', value: false });\r\n store.dispatch({ type: Type.SET_TYPE_MAP, value: 'hybrid' })\r\n store.dispatch({ type: Type.CLEAR_PATH_DRAWING });\r\n store.dispatch({ type: Type.SHOW_OFF_DRAWING });\r\n store.dispatch({ type: Type.SET_STATE_QUY_HOACH, route: 'quyHoachThuaDat', value: [] });\r\n onCloseRightPanel();\r\n}\r\n\r\nexport function formatFLetter(inputString) {\r\n if (inputString) {\r\n inputString = inputString.split(' ');\r\n inputString = inputString.map(e => capitalizeFLetter(e));\r\n inputString = inputString.filter(e => !!e);\r\n return inputString.join(' ');\r\n }\r\n return \"\"\r\n}\r\n\r\nfunction capitalizeFLetter(inputStr) {\r\n if (inputStr) {\r\n inputStr = inputStr.toLowerCase();\r\n return inputStr.charAt(0).toUpperCase() +\r\n inputStr.slice(1)\r\n }\r\n return \"\"\r\n}\r\n\r\nexport const b64DecodeUnicode = (str) =>{\r\n return(\r\n decodeURIComponent(\r\n Array.prototype.map.call(atob(str), c =>\r\n '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2)\r\n ).join(''))\r\n )\r\n}\r\n \r\n\r\nexport const parseJwt = (token) =>{\r\n return(\r\n JSON.parse(\r\n b64DecodeUnicode(\r\n token.split('.')[1].replace('-', '+').replace('_', '/')\r\n )\r\n ))\r\n}\r\n \r\n\r\nexport const encodeResponse = (body) => {\r\n body = JSON.stringify(body);\r\n let key = CryptoJS.enc.Utf8.parse(secretKey);\r\n key = CryptoJS.MD5(key);\r\n key.words.push(key.words[0], key.words[1]);\r\n let options = { mode: CryptoJS.mode.ECB },\r\n textWordArray = CryptoJS.enc.Utf8.parse(body),\r\n encrypted = CryptoJS.TripleDES.encrypt(textWordArray, key, options);\r\n return encrypted.toString();\r\n};\r\n\r\nexport const decodeResponse = (encryptedText) => {\r\n let key = CryptoJS.enc.Utf8.parse(secretKey);\r\n key = CryptoJS.MD5(key);\r\n key.words.push(key.words[0], key.words[1]);\r\n let options = { mode: CryptoJS.mode.ECB },\r\n decrypted = CryptoJS.TripleDES.decrypt(\r\n // @ts-ignore\r\n {\r\n ciphertext: CryptoJS.enc.Base64.parse(encryptedText),\r\n },\r\n key,\r\n options,\r\n );\r\n return decrypted.toString(CryptoJS.enc.Utf8);\r\n};\r\n\r\nconst handlerError = (error, onSuccess, callBack) => {\r\n let payload = {\r\n statusCode: 'Error',\r\n response: '',\r\n };\r\n if (error.response) {\r\n payload.response = error.response.data;\r\n payload.statusCode = error.response.status;\r\n if (error.response.status === 401) {\r\n onSignOut()\r\n //onRefreshToken(callBack);\r\n }\r\n else\r\n onSuccess(payload);\r\n } else if (error.request) {\r\n payload.response = error.request;\r\n onSuccess(payload);\r\n } else {\r\n // Something happened in setting up the request that triggered an Error\r\n payload.response = error.message;\r\n onSuccess(payload);\r\n }\r\n};\r\n\r\nconst onRefreshToken = (onSuccess) => {\r\n let token = store.getState().token;\r\n if (token) {\r\n token = decodeResponse(token);\r\n token = JSON.parse(token);\r\n let payload = {\r\n Username: token.Username,\r\n Password: token.Password,\r\n },\r\n strPayload = encodeResponse(payload);\r\n Axios.post(encodeURI(URL.login), null, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Data: strPayload,\r\n },\r\n })\r\n .then((res) => {\r\n if (res.status === 200 && !!res.data) {\r\n localStorage.setItem(URL.token, res.data)\r\n store.dispatch({ type: Type.SET_TOKEN, token: res.data });\r\n onSuccess();\r\n }\r\n })\r\n .catch((error) => {\r\n store.getState().signOut();\r\n if (error.response) {\r\n console.log('response', error.response);\r\n } else if (error.request) {\r\n console.log('req', error.request);\r\n } else {\r\n console.log('Message', error.message);\r\n }\r\n });\r\n } else {\r\n store.getState().signOut();\r\n }\r\n};\r\n\r\n\r\nexport const formatNumber = number => {\r\n return number.toString().replace(/(\\d)(?=(\\d\\d\\d)+(?!\\d))/g, \"$1,\");\r\n}\r\n\r\nexport const QD_GiaDat = {\r\n 'QD': '(Số 35/2020/QĐ-UBND)',\r\n 'HIEULUC': '01/09/2020',\r\n}\r\n\r\n","import { store } from '../Redux/Store';\r\nconst conPi = Math.PI;\r\n\r\n\r\nexport function convertLatLonToXY(coordinate) {\r\n const userInfo = store.getState().UserInfoEnter;\r\n let ktt = 0,\r\n dXS = 0,\r\n dYS = 0;\r\n if (userInfo) {\r\n ktt = userInfo.ktt;\r\n dXS = userInfo.dXS;\r\n dYS = userInfo.dYS\r\n }\r\n coordinate.latitude = coordinate.latitude + dXS;\r\n coordinate.longitude = coordinate.longitude + dYS;\r\n coordinate.latitude = conPi * coordinate.latitude / 180;\r\n coordinate.longitude = conPi * coordinate.longitude / 180;\r\n\r\n // let KTT = setup.ktt * conPi / 180,\r\n let KTT = ktt * conPi / 180,\r\n f = 1 / 298.257223563,\r\n a = 6378137.0,\r\n b = (1 - f) * a,\r\n K = 0.9999,\r\n m_a = a * K,\r\n m_b = b * K,\r\n m_e2 = ((m_a * m_a) - (m_b * m_b)) / (m_a * m_a),\r\n m_N = (m_a - m_b) / (m_a + m_b),\r\n m_pow2N = m_N * m_N,\r\n m_pow3N = m_N * m_pow2N,\r\n sinphi = Math.sin(coordinate.latitude),\r\n cosphi = Math.cos(coordinate.latitude),\r\n tanphi = Math.tan(coordinate.latitude),\r\n pow2sinphi = sinphi * sinphi,\r\n pow2cosphi = cosphi * cosphi,\r\n pow3cosphi = pow2cosphi * cosphi,\r\n pow5cosphi = pow3cosphi * pow2cosphi,\r\n pow2tanphi = tanphi * tanphi,\r\n pow4tanphi = pow2tanphi * pow2tanphi,\r\n v = m_a / Math.sqrt(1.0 - m_e2 * (pow2sinphi)),\r\n rho = (v * (1.0 - m_e2)) / (1.0 - m_e2 * pow2sinphi),\r\n n2 = (v / rho) - 1.0,\r\n phi1 = 0,\r\n phi = coordinate.latitude,\r\n M = m_b * (((1.0 + m_N + ((m_pow2N) * 5.0 / 4.0) + ((m_pow3N) * 5.0 / 4.0)) * (phi - phi1)) - ((3.0 * m_N + 3.0 * (m_pow2N) + (m_pow3N) * 21.0 / 8.0) * Math.sin(phi - phi1) * Math.cos(phi + phi1)) + ((((m_pow2N) * 15.0 / 8.0) + ((m_pow3N) * 15.0 / 8.0)) * (Math.sin(2.0 * (phi - phi1))) * (Math.cos(2.0 * (phi + phi1)))) - (((m_pow3N) * 35.0 / 24.0) * (Math.sin(3.0 * (phi - phi1))) * (Math.cos(3.0 * (phi + phi1))))),\r\n P = (coordinate.longitude - KTT),\r\n\r\n //toi uu hoa\r\n pow2P = P * P,\r\n pow3P = pow2P * P,\r\n pow4P = pow2P * pow2P,\r\n pow5P = pow4P * P,\r\n pow6P = pow2P * pow4P,\r\n\r\n //Tinh chuyen gia tri X\r\n DolechX = 0,\r\n II = (v / 2.0) * sinphi * cosphi,\r\n III = (v / 24.0) * sinphi * (pow3cosphi) * (5.0 - (pow2tanphi) + 9.0 * n2),\r\n IIIA = (v / 720.0) * sinphi * (pow5cosphi) * (61.0 - 58.0 * (pow2tanphi) + (pow4tanphi)),\r\n X = DolechX + M + ((pow2P) * II) + ((pow4P) * III) + ((pow6P) * IIIA),\r\n\r\n // Tinh chuyen gia tri Y\r\n DolechY = 500000,\r\n IV = v * cosphi,\r\n v1 = (v / 6.0) * (pow3cosphi) * ((v / rho) - (pow2tanphi)),\r\n VI = (v1 / 120.0) * (pow5cosphi) * (5.0 - 18.0 * (pow2tanphi) + (pow4tanphi) + 14.0 * n2 - 58.0 * (pow2tanphi) * n2),\r\n Y = DolechY + (P * IV) + ((pow3P) * v1) + ((pow5P) * VI);\r\n return { x: X, y: Y };\r\n}\r\n\r\nexport function convertXYToLatLon(pointXY) {\r\n const userInfo = store.getState().UserInfoEnter;\r\n let ktt = 0,\r\n dXS = 0,\r\n dYS = 0;\r\n if (userInfo) {\r\n ktt = userInfo.ktt;\r\n dXS = userInfo.dXS;\r\n dYS = userInfo.dYS;\r\n }\r\n let m_dSemiMajorAxis = 6378137.0,\r\n fff = 1 / 298.257223563,\r\n m_dSemiMinorAxis = (1 - fff) * m_dSemiMajorAxis,\r\n m_dLatitudeOrigin = 0,\r\n m_dLongitudeOrigin = ktt,\r\n m_dFalseNorthing = 0,\r\n m_dFalseEasting = 500000,\r\n m_dScaleFactorAtOrigin = 0.9999,\r\n m_a = m_dSemiMajorAxis * m_dScaleFactorAtOrigin,\r\n m_b = m_dSemiMinorAxis * m_dScaleFactorAtOrigin,\r\n m_e2 = ((m_a * m_a) - (m_b * m_b)) / (m_a * m_a),\r\n m_N = (m_a - m_b) / (m_a + m_b),\r\n m_pow2N = m_N * m_N,\r\n m_pow3N = m_N * m_pow2N,\r\n northing = pointXY.x,\r\n easting = pointXY.y,\r\n PI = Math.PI,\r\n phiDash = ((northing - m_dFalseNorthing) / m_a) + (m_dLatitudeOrigin * PI / 180),\r\n phi = phiDash,\r\n phi1 = (m_dLatitudeOrigin * PI / 180),\r\n M = m_b * (((1 + m_N + (m_pow2N * 5 / 4) + (m_pow3N * 5 / 4)) * (phi - phi1)) - (\r\n (3 * m_N + 3 * m_pow2N + m_pow3N * 21 / 8) * Math.sin(phi - phi1) * Math.cos(phi + phi1)) + (\r\n ((m_pow2N * 15 / 8) + (m_pow3N * 15 / 8)) * (Math.sin(2 * (phi - phi1))) * (\r\n Math.cos(2 * (phi + phi1)))) - (\r\n (m_pow3N * 35 / 24) * (Math.sin(3 * (phi - phi1))) * (Math.cos(3 * (phi + phi1)))));\r\n\r\n while ((northing - m_dFalseNorthing - M) > 0.001) {\r\n phi = phi + ((northing - m_dFalseNorthing - M) / m_a);\r\n M = m_b * (((1 + m_N + (m_pow2N * 5 / 4) + (m_pow3N * 5 / 4)) * (phi - phi1)) - (\r\n (3 * m_N + 3 * m_pow2N + m_pow3N * 21 / 8) * Math.sin(phi - phi1) * Math.cos(phi + phi1)) + (\r\n ((m_pow2N * 15 / 8) + (m_pow3N * 15 / 8)) * (Math.sin(2 * (phi - phi1))) * (\r\n Math.cos(2 * (phi + phi1)))) - (\r\n (m_pow3N * 35 / 24) * (Math.sin(3 * (phi - phi1))) * (Math.cos(3 * (phi + phi1)))));\r\n }\r\n let v = m_a / Math.sqrt(1 - m_e2 * (Math.pow((Math.sin(phi)), 2))),\r\n rho = (v * (1 - m_e2)) / (1 - m_e2 * (Math.pow(Math.sin(phi), 2))),\r\n n2 = (v / rho) - 1,\r\n VII = (Math.tan(phi)) / (2 * rho * v),\r\n VIII = ((Math.tan(phi)) / (24 * rho * (Math.pow(v, 3)))) * (\r\n 5 + (3 * (Math.pow(Math.tan(phi), 2))) + n2 - (9 * n2 * (Math.pow(Math.tan(phi), 2)))),\r\n IX = (Math.tan(phi) / (720 * rho * (Math.pow(v, 5)))) * (\r\n 61 + (90 * (Math.pow(Math.tan(phi), 2))) + (45 * (Math.pow(Math.tan(phi), 4)))),\r\n Et = easting - m_dFalseEasting,\r\n latitude = (phi - ((Math.pow(Et, 2)) * VII) + ((Math.pow(Et, 4)) * VIII) - ((Math.pow(Et, 6)) * IX)) * 180 / PI,\r\n X = ((1 / Math.cos(phi)) / v),\r\n XI = ((1 / Math.cos(phi)) / (6 * (Math.pow(v, 3)))) * ((v / rho) + 2 * (Math.pow(Math.tan(phi), 2))),\r\n XII = ((1 / Math.cos(phi)) / (120 * (Math.pow(v, 5)))) * (\r\n 5 + (28 * (Math.pow(Math.tan(phi), 2))) + (24 * (Math.pow(Math.tan(phi), 4)))),\r\n XIIA = ((1 / Math.cos(phi)) / (5040 * (Math.pow(v, 7)))) * (\r\n 61 + (662 * (Math.pow(Math.tan(phi), 2))) + (1320 * (Math.pow(Math.tan(phi), 4))) + (\r\n 720 * (Math.pow(Math.tan(phi), 6)))),\r\n longitude = m_dLongitudeOrigin + ((Et * X) - ((Math.pow(Et, 3)) * XI) + ((Math.pow(Et, 5)) * XII) - (\r\n (Math.pow(Et, 7)) * XIIA)) * 180 / PI;\r\n\r\n latitude = latitude - dXS;\r\n longitude = longitude - dYS\r\n return { 'lat': latitude, 'lng': longitude };\r\n}\r\n\r\nexport function getDistance(p1, p2) {\r\n let p = 0.017453292519943295; // Math.PI / 180\r\n let c = Math.cos;\r\n let a = 0.5 - c((p1.latitude - p2.latitude) * p) / 2 + c(p2.latitude * p) * c((p1.latitude) * p) * (1 - c(((p1.longitude - p2.longitude) * p))) / 2;\r\n // 2 * R; R = 6371 km\r\n return (12742 * Math.asin(Math.sqrt(a)) * 1000).toFixed(1); //meter\r\n}\r\n\r\nexport function checkInside(point, polygon) {\r\n\r\n let x = point.lat, y = point.lng;\r\n\r\n let inside = false;\r\n let i, j;\r\n for (i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\r\n let xi = polygon[i].lat, yi = polygon[i].lng;\r\n let xj = polygon[j].lat, yj = polygon[j].lng;\r\n\r\n let intersect = ((yi > y) !== (yj > y))\r\n && (x < (xj - xi) * (y - yi) / (yj - yi) + xi);\r\n if (intersect) inside = !inside;\r\n }\r\n\r\n return inside;\r\n}\r\n\r\nexport function convertXYPolygon(data) {\r\n let widthLayout = 290,\r\n xArray = data.map(e => e.lng),\r\n yArray = data.map(e => e.lat),\r\n xMin = Math.min(...xArray),\r\n xMax = Math.max(...xArray),\r\n yMin = Math.min(...yArray),\r\n yMax = Math.max(...yArray),\r\n dx = xMax - xMin,\r\n dy = yMax - yMin,\r\n len = data.length,\r\n dataPoint,\r\n dataText = [],\r\n svgHeight = (widthLayout / (dx / dy)) + 20,\r\n distance = [];\r\n\r\n data = data.map((e, i) => {\r\n if (i !== len - 1) {\r\n let pointStart = {\r\n latitude: e.lat,\r\n longitude: e.lng\r\n },\r\n pointEnd = {\r\n latitude: data[i + 1].lat,\r\n longitude: data[i + 1].lng\r\n };\r\n distance = [...distance, getDistance(pointStart, pointEnd)]\r\n }\r\n return {\r\n x: ((e.lng - xMin) * widthLayout / dx) + 10,\r\n y: ((yMax - e.lat) * widthLayout / dx) + 10,\r\n }\r\n });\r\n\r\n dataPoint = data;\r\n\r\n dataPoint.map((e, i) => {\r\n if (i !== len - 1) {\r\n let item = {\r\n from: e,\r\n to: dataPoint[i + 1]\r\n };\r\n dataText = [...dataText, item]\r\n }\r\n return e\r\n });\r\n\r\n let flagDown = true;\r\n\r\n dataText = dataText.map((e, i) => {\r\n let from = e.from,\r\n to = e.to;\r\n if (to.x < from.x) {\r\n from = e.to;\r\n to = e.from;\r\n }\r\n let angle = Math.atan((to.y - from.y) / (to.x - from.x)),\r\n middlePoint = getMiddlePoint(from, to);\r\n angle = angle * 180 / Math.PI;\r\n let item = {\r\n x: middlePoint.x - 8,\r\n y: middlePoint.y + (flagDown ? -5 : 10),\r\n rotate: `rotate(${angle} ${middlePoint.x},${middlePoint.y})`,\r\n distance: distance[i]\r\n };\r\n\r\n flagDown = !flagDown;\r\n\r\n return item;\r\n });\r\n\r\n data = data.map(e => `${e.x},${e.y}`);\r\n data = data.join(' ');\r\n\r\n return {\r\n polyline: data,\r\n circle: dataPoint,\r\n svgHeight,\r\n dataText\r\n };\r\n}\r\n\r\nfunction getMiddlePoint(pointStart, pointEnd) {\r\n return {\r\n x: (pointStart.x < pointEnd.x ? pointStart.x : pointEnd.x) + (Math.abs(pointStart.x - pointEnd.x) / 2),\r\n y: (pointStart.y < pointEnd.y ? pointStart.y : pointEnd.y) + (Math.abs(pointStart.y - pointEnd.y) / 2),\r\n }\r\n}\r\n\r\nexport function calcPolygonArea(vertices) {\r\n let total = 0;\r\n\r\n for (let i = 0, l = vertices.length; i < l; i++) {\r\n let addX = vertices[i].lat;\r\n let addY = vertices[i === vertices.length - 1 ? 0 : i + 1].y;\r\n let subX = vertices[i === vertices.length - 1 ? 0 : i + 1].x;\r\n let subY = vertices[i].lng;\r\n\r\n total += (addX * addY * 0.5);\r\n total -= (subX * subY * 0.5);\r\n }\r\n\r\n return Math.abs(total);\r\n}\r\n\r\n\r\n","import {convertXYToLatLon} from \"./Converter\";\r\nlet numberRegexp = /[()]/;\r\n\r\nconst parse = (wkt,isConvert) => {\r\n let geoType = getGeoType(wkt);\r\n\r\n wkt = wkt.split(numberRegexp)\r\n wkt = wkt.map(e => e.trim())\r\n wkt = wkt.slice(1);\r\n wkt = wkt.slice(0, -1);\r\n wkt = wkt.filter(e => e !== ',');\r\n\r\n let limit = wkt.length,\r\n index = -1,\r\n array = [],\r\n anchor = -1,\r\n store = [],\r\n pointer = [],\r\n isMulti = false;\r\n\r\n if (!!wkt[0] && !!wkt[limit-1])\r\n wkt = [\"\",...wkt,\"\"]\r\n\r\n\r\n wkt = wkt.map((e, i) => {\r\n if (!i)\r\n return \"(\"\r\n else if (i === limit - 1)\r\n return \")\"\r\n else if (!e)\r\n {\r\n if (!!wkt[i + 1])\r\n return '('\r\n else if (!!wkt[i - 1])\r\n return ')'\r\n }\r\n return e;\r\n });\r\n\r\n while (index < wkt.length)\r\n {\r\n let element = wkt[index],\r\n next = index + 1;\r\n\r\n if (element === '(')\r\n {\r\n anchor = index;\r\n if (!index && wkt[next] === '(')\r\n isMulti = true;\r\n }\r\n\r\n else if (element === ')')\r\n {\r\n if (wkt[index - 1] !== ')')\r\n {\r\n for (let i = anchor; i < index; i++)\r\n {\r\n if (wkt[i] !== ')' && wkt[i] !== '(')\r\n {\r\n pointer = [...pointer,splitJson(wkt[i],isConvert)]\r\n }\r\n }\r\n if (isMulti)\r\n store = [...store,pointer];\r\n else\r\n array = [...array,pointer];\r\n pointer = [];\r\n }\r\n else if (isMulti)\r\n {\r\n array = [...array,store];\r\n store = [];\r\n }\r\n }\r\n index += 1;\r\n }\r\n\r\n if (isMulti)\r\n array = array[0]\r\n\r\n return {\r\n isMulti,\r\n geometry:array,\r\n geoType\r\n };\r\n};\r\n\r\nconst splitJson = (wktElem,isConvert) =>\r\n{\r\n\r\n wktElem = wktElem.split(\", \")\r\n wktElem = wktElem.map(e=>{\r\n let elem = e.split(' ');\r\n return isConvert ?\r\n convertXYToLatLon({x:parseFloat(elem[1]),y:parseFloat(elem[0])})\r\n :\r\n {\r\n lat:parseFloat(elem[1]),\r\n lng:parseFloat(elem[0])\r\n }\r\n });\r\n return wktElem\r\n}\r\n\r\nconst getGeoType = (stringGeo)=>\r\n{\r\n if (stringGeo)\r\n {\r\n let to = stringGeo.indexOf(' ')\r\n return mapGeoType[stringGeo.substring(0,to)]\r\n }\r\n return ''\r\n}\r\n\r\nconst mapGeoType = {\r\n \"POINT\":\"POINT\",\r\n \"LINESTRING\":\"LINESTRING\",\r\n \"POLYGON\":\"POLYGON\",\r\n \"MULTIPOINT\":\"POINT\",\r\n \"MULTILINESTRING\":\"LINESTRING\",\r\n \"MULTIPOLYGON\":\"POLYGON\"\r\n}\r\n\r\nconst WKT = {\r\n parse,\r\n mapGeoType\r\n}\r\n\r\nexport default WKT;\r\n","export const labelQuyHoachChiTiet = [\r\n {key:'DDL',value:'Đất có danh lam thắng cảnh'},\r\n {key:'DHT',value:'Đất phát triển hạ tầng'},\r\n {key:'DKV',value:'Đất khu vui chơi, giải trí công cộng'},\r\n {key:'DTS',value:'Đất XD trụ sở tổ chức sự nghiệp'},\r\n {key:'KDT',value:'Khu đô thị, thương mại, dịch vụ'},\r\n {key:'MNC',value:'Đất có mặt nước chuyên dùng'},\r\n {key:'ODT',value:'Đất ở đô thị'},\r\n {key:'SKC',value:'Đất có CS sản xuất phi nông nghiệp'},\r\n {key:'TSC',value:'Đất xây dựng trụ sở cơ quan'}\r\n];\r\n\r\nexport const labelQuyHoachTongThe = [\r\n {key:'DDL',value:'Đất có danh lam thắng cảnh'},\r\n {key:'DHT',value:'Đất phát triển hạ tầng'},\r\n {key:'DKV',value:'Đất khu vui chơi, giải trí công cộng'},\r\n {key:'DTS',value:'Đất XD trụ sở tổ chức sự nghiệp'},\r\n {key:'KDT',value:'Khu đô thị, thương mại, dịch vụ'},\r\n {key:'MNC',value:'Đất có mặt nước chuyên dùng'},\r\n {key:'ODT',value:'Đất ở đô thị'},\r\n {key:'SKC',value:'Đất có CS sản xuất phi nông nghiệp'},\r\n {key:'TSC',value:'Đất xây dựng trụ sở cơ quan'}\r\n];\r\n\r\nexport default labelQuyHoachChiTiet\r\n","import LinkAPI, { onPostRequest, formatNumber, onPostRequestBodyQuyHoach } from './MainController';\r\nimport { store } from \"../Redux/Store\";\r\nimport { getQuyHoachColor, getUsedShapeColor } from \"../Styles/Colors\";\r\nimport Type from \"../Redux/Type\";\r\nimport { onMoveToMap, processPolygon, processResponseGeometry } from \"./MapView\";\r\nimport DataQuyHoachTTTC from '../Assets/quyhoachTTTC.json';\r\nimport { labelQuyHoachChiTiet } from \"../Assets/LabelQuyHoach\";\r\nimport { onOpenRightPanel } from \"./RightPanelAction\";\r\n\r\nexport const onLoadMenu = (apiLink) => {\r\n let onSuccess = ({ statusCode, response }) => {\r\n if (statusCode === 200 && response.length) {\r\n store.dispatch({ type: Type.SET_STATE_QUY_HOACH, route: 'menu', value: response })\r\n }\r\n }\r\n onPostRequest(apiLink + LinkAPI.getMenuQuyHoach, onSuccess)\r\n}\r\n\r\nexport const onLoadQuyHoachPolygon = (keyType, ApiLink) => {\r\n if (store.getState()['quyHoach']['selected']['geoType'])\r\n onShowOffQuyHoachInfoPanel();\r\n\r\n store.dispatch({ type: Type.SET_STATE_QUY_HOACH, route: 'isLoading', value: true })\r\n let onSuccess = ({ statusCode, response }) => {\r\n if (statusCode === 200) {\r\n let label = [],\r\n labelObj = [],\r\n polygons = [],\r\n polyline = [],\r\n points = [],\r\n { coordinate } = store.getState()['quyHoach']['typeActive'];\r\n response.forEach(e => {\r\n let type = mapGeoType[e.geoType],\r\n item = {\r\n id: e.ID,\r\n fillColor: e.FillColor,\r\n strokeColor: e.StokeColor,\r\n weightLine: e.WeightLine,\r\n geoType: type,\r\n label: e.kyhieu,\r\n icon: e.Icon,\r\n polygon: processPolygon(e.polygon, e.geoType),\r\n name: e.name\r\n };\r\n if (item.polygon.length) {\r\n if (!label.includes(e.kyhieu)) {\r\n label = [...label, e.kyhieu]\r\n let nextLabel = {\r\n key: e.kyhieu,\r\n value: e.name,\r\n strokeColor: e.StokeColor\r\n };\r\n labelObj = [...labelObj, nextLabel]\r\n }\r\n\r\n switch (type) {\r\n case mapGeoType.POLYGON:\r\n polygons = [...polygons, item]\r\n break;\r\n case mapGeoType.LINESTRING: {\r\n let loop = item.polygon;\r\n loop.forEach((element, index) => {\r\n let nextItem = {\r\n ...item,\r\n polygon: element,\r\n id: item.id + index\r\n };\r\n polyline = [...polyline, nextItem]\r\n });\r\n break;\r\n }\r\n\r\n case mapGeoType.POINT: {\r\n let nextLabel = {\r\n ...item,\r\n polygon: item.polygon[0][0]\r\n };\r\n points = [...points, nextLabel]\r\n }\r\n break;\r\n default:\r\n break\r\n }\r\n }\r\n })\r\n store.dispatch({ type: Type.SET_STATE_QUY_HOACH, route: 'listLabel', value: labelObj });\r\n store.dispatch({ type: Type.SET_STATE_QUY_HOACH, route: 'labelActive', value: label });\r\n store.dispatch({ type: Type.SET_STATE_QUY_HOACH, route: 'polygons', value: polygons });\r\n store.dispatch({ type: Type.SET_STATE_QUY_HOACH, route: 'polyline', value: polyline });\r\n store.dispatch({ type: Type.SET_STATE_QUY_HOACH, route: 'points', value: points });\r\n onMoveToMap(coordinate);\r\n onOpenRightPanel('zone');\r\n } else\r\n store.dispatch({ type: Type.SET_STATE_QUY_HOACH, route: 'errorMessage', value: response });\r\n\r\n store.dispatch({ type: Type.SET_STATE_QUY_HOACH, route: 'isLoading', value: false })\r\n }\r\n onPostRequest(ApiLink + LinkAPI.getPolygonQuyHoach(keyType), onSuccess)\r\n}\r\n\r\nexport const onLoadQHChiTietTanChau = () => {\r\n let { coordinate } = store.getState()['quyHoach']['typeActive'],\r\n labelLayerQuyHoach = DataQuyHoachTTTC.map(e => e.MDSD),\r\n geoList = DataQuyHoachTTTC.map(e => ({\r\n label: e.MDSD,\r\n polygon: e.polygon,\r\n ...getQuyHoachColor(e.MDSD)\r\n })),\r\n labelList = labelQuyHoachChiTiet.map(e => ({\r\n key: e.key,\r\n value: e.value,\r\n ...getQuyHoachColor(e.key)\r\n }))\r\n labelList = labelList.sort((a, b) => sortListObject(a, b))\r\n store.dispatch({ type: Type.SET_STATE_QUY_HOACH, route: 'listLabel', value: labelList });\r\n store.dispatch({ type: Type.SET_STATE_QUY_HOACH, route: 'polygons', value: geoList });\r\n store.dispatch({ type: Type.SET_STATE_QUY_HOACH, route: 'labelActive', value: labelLayerQuyHoach });\r\n onMoveToMap(coordinate)\r\n}\r\n\r\nexport function getQuyHoachInfo(polygon) {\r\n if (polygon && store.getState().UserInfoEnter.APILink && store.getState()['quyHoach'].menu && store.getState()['quyHoach'].menu.length) {\r\n let StringShape = polygon.toString();\r\n if (!StringShape.includes('MULTIPOLYGON')) {\r\n StringShape = StringShape.replace('POLYGON ', 'MULTIPOLYGON(') + ')'\r\n }\r\n store.dispatch({ type: Type.SET_STATE_QUY_HOACH, route: 'isLoadingQH', value: true });\r\n store.dispatch({ type: Type.SET_STATE_QUY_HOACH, route: 'quyHoachThuaDat', value: [] });\r\n let stt = 0, arr = [];\r\n store.getState()['quyHoach'].menu.filter(e => {\r\n const QuyHoachName = e.key;\r\n let onProcess = ({ statusCode, response }) => {\r\n stt = stt + 1;\r\n if (statusCode === 200) {\r\n response = response.map(e => ({\r\n QuyHoach: e.QuyHoach,\r\n color: getUsedShapeColor(e.MucDichSuDung || e.MDSD)\r\n }));\r\n arr.push(...response)\r\n }\r\n if (stt == store.getState()['quyHoach'].menu.length) {\r\n store.dispatch({ type: Type.SET_STATE_QUY_HOACH, route: 'isLoadingQH', value: false });\r\n store.dispatch({ type: Type.SET_STATE_QUY_HOACH, route: 'quyHoachThuaDat', value: arr });\r\n }\r\n };\r\n onPostRequestBodyQuyHoach(store.getState().UserInfoEnter.APILink + LinkAPI.getQuyHoachInfo, onProcess, { StringShape, QuyHoachName })\r\n })\r\n }\r\n}\r\n\r\nexport const onShowQuyHoachInfoPanel = () => {\r\n store.dispatch({ type: Type.SET_STATE_RIGHT_PANEL, route: 'className', value: 'modal-custom-off' });\r\n setTimeout(() => {\r\n store.dispatch({ type: Type.SET_STATE_RIGHT_PANEL, route: 'isShow', value: false });\r\n store.dispatch({ type: Type.SET_STATE_RIGHT_PANEL, route: 'routeContent', value: '' });\r\n }, 100);\r\n\r\n let panel = document.querySelector('.qh-panel-info-visible');\r\n panel.style.setProperty('animation-name', 'on-show-on-from-left');\r\n panel.style.setProperty('-webkit-animation-name', 'on-show-on-from-left');\r\n panel.style.setProperty('opacity', 1);\r\n panel.style.setProperty('visibility', 'visible');\r\n}\r\n\r\nexport const onShowOffQuyHoachInfoPanel = () => {\r\n let panel = document.querySelector('.qh-panel-info-visible');\r\n panel.style.setProperty('animation-name', 'on-show-off-from-left');\r\n panel.style.setProperty('-webkit-animation-name', 'on-show-off-from-left');\r\n panel.style.setProperty('opacity', 0);\r\n panel.style.setProperty('visibility', 'hidden');\r\n store.dispatch({ type: Type.SELECTED_QUYHOACH });\r\n}\r\n\r\nexport const onLoadStatistical = (payload, onSuccess, APILink) => {\r\n let onProcess = ({ statusCode, response }) => {\r\n if (statusCode === 200) {\r\n if (statusCode === 200) {\r\n if (response.length) {\r\n response = response.filter(e => e.DTKhaoSat);\r\n response = response.map((e) => ({\r\n ...e,\r\n tile: Math.round((e.DTKhaoSat * 100 / e.DIENTICH))\r\n }))\r\n response = response.sort((a, b) => b.tile - a.tile)\r\n response = response.map((e, i) => ({\r\n ...e,\r\n key: i + 1\r\n }))\r\n let areaTotal = formatNumber(response[0]['TongDTKhaoSat']),\r\n fieldTotal = formatNumber(response.length),\r\n keyMDSD = [],\r\n areaMDSD = [],\r\n nameMDSD = []\r\n response.forEach(e => {\r\n let index = keyMDSD.indexOf(e.MDSD)\r\n if (index === -1) {\r\n keyMDSD = [...keyMDSD, e.MDSD]\r\n nameMDSD = [...nameMDSD, e.Ten]\r\n areaMDSD = [...areaMDSD, e.DTKhaoSat]\r\n } else {\r\n areaMDSD[index] = areaMDSD[index] + e.DTKhaoSat\r\n }\r\n });\r\n let mdsdTotal = keyMDSD.map((e, i) => ({\r\n label: e,\r\n name: nameMDSD[i],\r\n area: areaMDSD[i]\r\n }))\r\n mdsdTotal = mdsdTotal.sort((a, b) => b.area - a.area)\r\n mdsdTotal = mdsdTotal.map((e, i) => ({ ...e, key: i + 1, area: `${formatNumber(e.area)} m2` }))\r\n\r\n response = response.map(e => ({\r\n ...e,\r\n DTKhaoSat: `${formatNumber(e.DTKhaoSat)} m2`,\r\n tile: `${e.tile} %`\r\n }))\r\n response = {\r\n areaTotal,\r\n fieldTotal,\r\n mdsdTotal,\r\n detail: response\r\n }\r\n\r\n } else {\r\n response = {\r\n areaTotal: 0,\r\n fieldTotal: 0,\r\n mdsdTotal: [],\r\n detail: []\r\n }\r\n }\r\n }\r\n }\r\n onSuccess({ statusCode, response })\r\n }\r\n onPostRequest(APILink + LinkAPI.getKhaoSatQuyHoach, onProcess, payload)\r\n}\r\n\r\n\r\n\r\nexport const mapGeoType = {\r\n 'LINESTRING': 'polyline',\r\n 'MULTILINESTRING': 'polyline',\r\n 'POLYGON': 'polygon',\r\n \"MULTIPOLYGON\": 'polygon',\r\n 'POINT': 'point'\r\n}\r\n\r\nconst sortListObject = (a, b) => {\r\n let nameA = a.key.toUpperCase(),\r\n nameB = b.key.toUpperCase();\r\n if (nameA < nameB) {\r\n return -1;\r\n }\r\n if (nameA > nameB) {\r\n return 1;\r\n }\r\n return 0;\r\n}\r\n","export const dataConfig = {\n \"strokeColor\": {\n \"yellow\": \"#F57F17\",\n \"red\": \"#f44336\",\n \"orange\": \"#FF9800\",\n \"deepOrange\": \"#FF5722\",\n \"gray\": \"#757575\",\n \"pink\": \"#EC407A\",\n \"blue\": \"#2196F3\",\n \"green\": \"#4CAF50\",\n \"brown\": \"#795548\",\n \"purple\": \"#9C27B0\",\n \"deepGreen\": \"#009688\",\n \"white\": \"#fff\",\n \"redOrange\": \"#ee3840\",\n \"blueLight\": \"#38cdee\",\n \"greenCyan\": \"#008F8C\"\n },\n \"fillColor\": {\n \"yellow\": \"rgba(255,235,59,0.3)\",\n \"red\": \"rgba(244,67,54,0.3)\",\n \"orange\": \"rgba(255,152,0,0.3)\",\n \"deepOrange\": \"rgba(255,87,34,0.3)\",\n \"gray\": \"rgba(117,117,117,0.3)\",\n \"pink\": \"rgba(236,64,122,0.3)\",\n \"blue\": \"rgba(33,150,243,0.3)\",\n \"green\": \"rgba(76,175,80,0.3)\",\n \"purple\": \"rgba(156,39,176,0.3)\",\n \"deepGreen\": \"rgba(0,150,136,0.3)\",\n \"white\": \"transparent\"\n },\n \"mapping\": {\n \"BHK\": \"yellow\",\n \"BHK+CLN\": \"yellow\",\n \"BHK+LUC\": \"yellow\",\n \"BHK+LUK\": \"yellow\",\n \"CAN\": \"red\",\n \"CLN\": \"orange\",\n \"CLN+BHK\": \"orange\",\n \"CLN+BHK+LUK\": \"orange\",\n \"CLN+LUK\": \"orange\",\n \"CLN+NTS\": \"orange\",\n \"CLN+SKC\": \"orange\",\n \"COC\": \"yellow\",\n \"CQP\": \"red\",\n \"DBV\": \"deepOrange\",\n \"DCH\": \"deepOrange\",\n \"DCS\": \"deepOrange\",\n \"DGD\": \"purple\",\n \"DGT\": \"orange\",\n \"DHT\": \"green\",\n \"DDL\": \"orange\",\n \"DKV\": \"deepOrange\",\n \"DNL\": \"deepOrange\",\n \"DLL\": \"deepOrange\",\n \"DRA\": \"deepOrange\",\n \"DSH\": \"deepOrange\",\n \"DTL\": \"blue\",\n \"DTS\": \"deepOrange\",\n \"DTT\": \"deepOrange\",\n \"DVH\": \"deepOrange\",\n \"DXH\": \"deepOrange\",\n \"DYT\": \"deepOrange\",\n \"HNK\": \"yellow\",\n \"KDT\": \"deepGreen\",\n \"LUC\": \"yellow\",\n \"LUC+BHK\": \"yellow\",\n \"LUK\": \"yellow\",\n \"LUK+BHK\": \"yellow\",\n \"LUK+CLN\": \"yellow\",\n \"LUK+NTS\": \"yellow\",\n \"LUN\": \"yellow\",\n \"MNC\": \"blue\",\n \"NHK\": \"yellow\",\n \"NKH\": \"yellow\",\n \"NTD\": \"gray\",\n \"NTS\": \"blue\",\n \"ODT\": \"pink\",\n \"ODT+BHK\": \"pink\",\n \"ODT+CLN\": \"pink\",\n \"ODT+HNK\": \"pink\",\n \"ONT\": \"pink\",\n \"ONT+BHK\": \"pink\",\n \"ONT+BHK+CLN\": \"pink\",\n \"ONT+BHK+LUK\": \"pink\",\n \"ONT+BHK+SKC\": \"pink\",\n \"ONT+CLN\": \"pink\",\n \"ONT+CLN+BHK\": \"pink\",\n \"ONT+CLN+LUK\": \"pink\",\n \"ONT+CLN+NTS\": \"pink\",\n \"ONT+LUC\": \"pink\",\n \"ONT+LUK\": \"pink\",\n \"ONT+NTS\": \"pink\",\n \"ONT+SKC\": \"pink\",\n \"PNK\": \"blue\",\n \"RDD\": \"green\",\n \"RDM\": \"green\",\n \"RPH\": \"green\",\n \"RSX\": \"green\",\n \"SKC\": \"purple\",\n \"SKC+BHK\": \"deepOrange\",\n \"SKC+CLN\": \"deepOrange\",\n \"SKN\": \"deepOrange\",\n \"SKS\": \"deepOrange\",\n \"SKX\": \"deepOrange\",\n \"SON\": \"blue\",\n \"TMD\": \"deepOrange\",\n \"TON\": \"deepOrange\",\n \"TSC\": \"red\",\n \"QMDTB\": \"deepOrange\",\n \"QMDTH\": \"yellow\",\n \"HMDTH\": \"green\",\n \"HMDTB\": \"deepGreen\",\n \"CAO\": \"deepOrange\",\n \"TBI\": \"orange\",\n \"THP\": \"pink\",\n \"CAU\": \"blue\",\n \"TIM\": \"green\",\n \"D10\": \"yellow\",\n \"VIAHE\": \"white\",\n \"DNH\": \"green\",\n \"DNGH\": \"pink\",\n \"DNGQ\": \"orange\",\n \"DNGDQ\": \"red\",\n \"TBAH\": \"deepGreen\",\n \"TBAQ\": \"deepOrange\",\n \"CTNH\": \"blue\",\n \"CTNQ\": \"blue\",\n \"CXAH\": \"deepGreen\",\n \"GIKT\": \"purple\",\n \"LVCH\": \"deepOrange\",\n \"COPH\": \"green\",\n \"ANTEN\": \"green\",\n \"TUCACH\": \"deepOrange\",\n \"VNPT\": \"blue\",\n \"MOBIFONE\": \"red\",\n \"VIETTEL\": \"greenCyan\",\n \"GTEL\": \"yellow\",\n \"VIETNAMOBILE\": \"orange\",\n \"DOH\": \"blueLight\",\n \"DOQ\": \"purple\",\n \"HCHH\": \"red\",\n \"HVH\": \"yellow\"\n },\n \"weightLine\": {\n \"CHI\": 5,\n \"CAU\": 5,\n \"TIM\": 5,\n \"VIAHE\": 1,\n \"TBAH\": 1,\n \"TBAQ\": 1\n },\n \"icon\": {\n \"VNPT\": \"http://ilis.tayninh.gov.vn/quyhoach/icon/VNPT.png\",\n \"MOBIFONE\": \"http://ilis.tayninh.gov.vn/quyhoach/icon/MOBIFONE.png\",\n \"VIETTEL\": \"http://ilis.tayninh.gov.vn/quyhoach/icon/VIETTEL.png\",\n \"GTEL\": \"http://ilis.tayninh.gov.vn/quyhoach/icon/GTEL.png\",\n \"VIETNAMOBILE\": \"http://ilis.tayninh.gov.vn/quyhoach/icon/VIETNAMOBILE.png\"\n }\n}\n","import LinkAPI, { onGetRequestEnterPriseBody, onPostRequestEnterPriseBody } from './MainController';\r\nimport { convertXYToLatLon, convertXYPolygon, getDistance } from './Converter';\r\nimport { getShapeColor } from '../Styles/Colors';\r\nimport setup from \"./setup\";\r\nimport { store } from \"../Redux/Store\";\r\nimport Type from \"../Redux/Type\";\r\nimport WKT from \"./WKT\";\r\nimport { mapGeoType } from \"./QuyHoach\";\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { dataConfig } from \"./quyhoachCofigEnter\";\r\n\r\nexport function getPolygonByToThuaEnter({ SoTo, SoThua, idbando, idThuaDat }, ktt) {\r\n store.dispatch({ type: Type.SET_STATE_HIEN_TRANG, route: 'dataTrichDoPicked', value: null });\r\n const payload = [\r\n idThuaDat\r\n ]\r\n let onProcess = ({ statusCode, response }) => {\r\n if (statusCode === 200) {\r\n if (response.length) {\r\n let responseThua = null;\r\n response.forEach(e => {\r\n if (e.idthuadat == idThuaDat) {\r\n responseThua = e;\r\n }\r\n });\r\n if (responseThua) {\r\n let polygon = processPolygon(responseThua.geojson, \"POLYGON\", true)\r\n responseThua = {\r\n ...responseThua,\r\n polygon,\r\n center: getCenterPoint(polygon[0])\r\n };\r\n let centerPoint = getCenterPoint(responseThua.polygon[0])\r\n onMoveToMap(centerPoint)\r\n store.dispatch({ type: Type.SET_STATE_HIEN_TRANG, route: 'makerPosition', value: centerPoint });\r\n store.dispatch({ type: Type.SET_STATE_HIEN_TRANG, route: 'pickedPolygon', value: responseThua.polygon });\r\n store.dispatch({\r\n type: Type.SET_STATE_HIEN_TRANG,\r\n route: 'dataTrichDoPicked',\r\n value: convertXYPolygon(responseThua.polygon[0], ktt)\r\n });\r\n } else {\r\n store.dispatch({ type: Type.SET_MAIN_MESSAGE, message: 'Không tìm thấy dữ liệu bản đồ' })\r\n }\r\n } else\r\n store.dispatch({ type: Type.SET_MAIN_MESSAGE, message: 'Không tìm thấy dữ liệu bản đồ' })\r\n } else {\r\n store.dispatch({ type: Type.SET_MAIN_MESSAGE, message: 'Không tìm thấy dữ liệu bản đồ' })\r\n }\r\n };\r\n onPostRequestEnterPriseBody(LinkAPI.getPolygonByToThuaEnter, onProcess, payload);\r\n}\r\n\r\nexport function getPolygonByDistance2Enter({ topRightPoint, bottomLeftPoint, centerPoint, zoom, ktt }) {\r\n let onProcess = ({ statusCode, response }) => {\r\n if (statusCode === 200) {\r\n try {\r\n response = response.map(e => {\r\n const colorThuaDat = dataConfig.mapping[e.loaidat] ? dataConfig.mapping[e.loaidat] : 'gray';\r\n return {\r\n ...e,\r\n ID: e.objectid,\r\n SOTO: e.soto,\r\n SOTHUA: e.sothua,\r\n LOAIDAT: e.loaidat,\r\n DIENTICH: e.dientich,\r\n StokeColor: dataConfig.strokeColor[colorThuaDat],\r\n FillColor: dataConfig.fillColor[colorThuaDat],\r\n WeightLine: dataConfig.weightLine[colorThuaDat],\r\n Icon: dataConfig.icon[colorThuaDat],\r\n polygon: processPolygonEnter(e.polygons[0], 'MULTIPOLYGON', true),\r\n }\r\n });\r\n response = response.filter(e => !!e.polygon.length);\r\n store.dispatch({ type: Type.SET_STATE_HIEN_TRANG, route: 'listPolygon', value: response })\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n };\r\n onGetRequestEnterPriseBody(LinkAPI.getPolygonByDistanceNew(centerPoint.lat, centerPoint.lng, (getDistance(topRightPoint, bottomLeftPoint) / 2) ? (getDistance(topRightPoint, bottomLeftPoint) / 2).toFixed(0) : 0), onProcess);\r\n}\r\n\r\n\r\nexport function processPolygon(strPoly, geoType, isConvert) {\r\n let polygon = [];\r\n strPoly = strPoly.replace(geoType, \"\")\r\n strPoly = strPoly.split(\"(\");\r\n strPoly = strPoly.filter(e => e.trim())\r\n strPoly = strPoly.map(e => e.trim().replace(\"),\", \"\").replace(\"))\", \"\").trim());\r\n\r\n strPoly.forEach((e, i) => {\r\n let coordinateArray = e.split(\",\"),\r\n _p = [];\r\n coordinateArray.forEach(e => {\r\n let _e = e.trim(),\r\n _list = _e.split(\" \");\r\n\r\n if (_list.length === 2) {\r\n let x = _list[1].replace(/[()]/g, '').trim(),\r\n y = _list[0].replace(/[()]/g, '').trim();\r\n if (!isNaN(x) && !isNaN(y)) {\r\n x = parseFloat(x);\r\n y = parseFloat(y);\r\n // let coordinate ={ lat: x, lng: y }\r\n let coordinate = isConvert ?\r\n convertXYToLatLon({ x, y })\r\n :\r\n { lat: x, lng: y }\r\n _p = [..._p, coordinate]\r\n }\r\n }\r\n });\r\n if (_p.length)\r\n polygon = [...polygon, _p]\r\n });\r\n return polygon\r\n}\r\n\r\nexport function processPolygonEnter(strPoly, geoType, isConvert) {\r\n let polygon = [];\r\n strPoly = strPoly.replace(geoType, \"\")\r\n strPoly = strPoly.split(\"(\");\r\n strPoly = strPoly.filter(e => e.trim())\r\n strPoly = strPoly.map(e => e.trim().replace(\"),\", \"\").replace(\"))\", \"\").trim());\r\n\r\n strPoly.forEach((e, i) => {\r\n let coordinateArray = e.split(\",\"),\r\n _p = [];\r\n coordinateArray.forEach(e => {\r\n let _e = e.trim(),\r\n _list = _e.split(\" \");\r\n\r\n if (_list.length === 2) {\r\n let x = _list[1].replace(/[()]/g, '').trim(),\r\n y = _list[0].replace(/[()]/g, '').trim();\r\n if (!isNaN(x) && !isNaN(y)) {\r\n x = parseFloat(x);\r\n y = parseFloat(y);\r\n // let coordinate = isConvert ?\r\n // convertXYToLatLon({ x, y })\r\n // :\r\n // { lat: x, lng: y }\r\n _p = [..._p, { lat: x, lng: y }]\r\n }\r\n }\r\n });\r\n if (_p.length)\r\n polygon = [...polygon, _p]\r\n });\r\n return polygon\r\n}\r\n\r\nexport function processMultiPolygon(strPoly) {\r\n return (strPoly.replace('POLYGON ', 'MULTIPOLYGON(') + ')')\r\n}\r\n\r\n\r\nexport const processResponseGeometry = (response, isConvert) => {\r\n if (Array.isArray(response)) {\r\n let nextResponse = [],\r\n listID = [];\r\n response.forEach((e) => {\r\n let nextGeo = WKT.parse(e.polygon, isConvert),\r\n isIdInclude = listID.includes(e.ID)\r\n if (!isIdInclude)\r\n listID = [...listID, e.ID];\r\n nextGeo.geometry.forEach((elem, index) => {\r\n let item = {\r\n ...e,\r\n k: e.ID,\r\n ID: e.ID,\r\n geoType: nextGeo.geoType,\r\n polygon: elem\r\n };\r\n if (item.polygon.length) {\r\n if (nextGeo.geoType === mapGeoType.POLYGON)\r\n nextResponse = [...nextResponse, item];\r\n else {\r\n item.polygon.forEach((line) => {\r\n let itemLine = {\r\n ...item,\r\n polygon: line,\r\n ID: uuidv4()\r\n };\r\n nextResponse = [...nextResponse, itemLine];\r\n })\r\n }\r\n }\r\n })\r\n })\r\n return nextResponse\r\n }\r\n return []\r\n}\r\n\r\nfunction getCenterPoint(arr) {\r\n let x = arr.map(e => e.lat);\r\n let y = arr.map(e => e.lng);\r\n let cx = (Math.min(...x) + Math.max(...x)) / 2;\r\n let cy = (Math.min(...y) + Math.max(...y)) / 2;\r\n return { 'lat': cx, 'lng': cy };\r\n}\r\n\r\nexport const onMoveToMap = ({ lat, lng }) => {\r\n let map = store.getState()['mapView']['refMapView'];\r\n if (map) {\r\n map.panTo({ lat, lng })\r\n }\r\n}\r\n\r\n","import React, { useRef } from \"react\";\r\nimport {\r\n withScriptjs,\r\n withGoogleMap,\r\n GoogleMap,\r\n} from \"react-google-maps\";\r\nimport { useSelector, useDispatch } from \"react-redux\";\r\nimport Type from \"../../Redux/Type\";\r\nimport { getPolygonByDistance2Enter } from \"../../Containers/MapView\";\r\nimport setup from \"../../Containers/setup\";\r\n\r\nconst MapView = withScriptjs(withGoogleMap(props => {\r\n const userInfoEnter = useSelector(state => state.UserInfoEnter);\r\n const refMap = useRef();\r\n const dispatch = useDispatch();\r\n const onTilesLoaded = () => {\r\n if (!!refMap) {\r\n dispatch({ type: Type.REF_MAP_VIEW, value: refMap.current });\r\n let centerPoint = {\r\n lat: refMap.current.getCenter().lat(),\r\n lng: refMap.current.getCenter().lng(),\r\n },\r\n topRightPoint = {\r\n latitude: refMap.current.getBounds().getNorthEast().lat(),\r\n longitude: refMap.current.getBounds().getNorthEast().lng()\r\n },\r\n bottomLeftPoint = {\r\n latitude: refMap.current.getBounds().getSouthWest().lat(),\r\n longitude: refMap.current.getBounds().getSouthWest().lng()\r\n },\r\n zoom = refMap.current.getZoom();\r\n\r\n if (userInfoEnter) {\r\n const ktt = userInfoEnter.ktt;\r\n getPolygonByDistance2Enter({ topRightPoint, bottomLeftPoint, centerPoint, zoom, ktt });\r\n }\r\n\r\n }\r\n };\r\n\r\n return (\r\n \r\n {props.children}\r\n {/**/}\r\n {/*
*/}\r\n {/*

Trần Văn Trà

*/}\r\n {/*
*/}\r\n {/**/}\r\n \r\n )\r\n}\r\n));\r\n\r\n\r\nexport default MapView;\r\n\r\n","import React from 'react';\r\nimport {Polygon,Polyline,Marker} from \"react-google-maps\";\r\nimport {useDispatch, useSelector} from \"react-redux\";\r\nimport MarkerClusterer from 'react-google-maps/lib/components/addons/MarkerClusterer';\r\nimport {onShowQuyHoachInfoPanel,mapGeoType} from \"../../Containers/QuyHoach\";\r\nimport Type from \"../../Redux/Type\";\r\n\r\n\r\nconst LopQuyHoach = ()=>\r\n{\r\n const {showQuyHoach,polygons,polyline,points,labelActive,selected} = useSelector(state=>state.quyHoach);\r\n const dispatch = useDispatch();\r\n const onPolygonPress = (e)=>()=>\r\n {\r\n\r\n dispatch({type:Type.SELECTED_QUYHOACH,value:e})\r\n onShowQuyHoachInfoPanel();\r\n }\r\n\r\n return (\r\n
\r\n {showQuyHoach ?\r\n polygons.map((e, index)=>(\r\n \r\n ))\r\n :\r\n null\r\n }\r\n {showQuyHoach ?\r\n polyline.map((e)=>(\r\n \r\n ))\r\n : null\r\n }\r\n {showQuyHoach ?\r\n \r\n {points.map((e,i) => (\r\n \r\n ))}\r\n \r\n : null\r\n }\r\n {selected.geoType === mapGeoType.POLYGON ?\r\n \r\n :\r\n selected.geoType === mapGeoType.LINESTRING ?\r\n \r\n :\r\n selected.geoType === mapGeoType.POINT ?\r\n \r\n :null\r\n }\r\n
\r\n )\r\n}\r\n\r\nexport default LopQuyHoach\r\n","import LinkAPI, { onGetRequestEnterPriseBody } from './MainController';\r\nimport { getUsedShapeColor } from '../Styles/Colors';\r\nimport { store } from \"../Redux/Store\";\r\nimport Type from \"../Redux/Type\";\r\nimport { onOpenRightPanel } from \"./RightPanelAction\";\r\n\r\n\r\nexport function getListHuyenEnter(onSuccess, idDVHC) {\r\n let onProcess = ({ statusCode, response }) => {\r\n if (statusCode === 200) {\r\n response = response.map((e) => ({\r\n ...e,\r\n key: e.mahuyen ? parseInt(e.mahuyen) : '',\r\n //disabled: e.mahuyen != setup.huyenId,\r\n disabled: false,\r\n text: e.tendvhc,\r\n searchID: e.iddvhc\r\n }));\r\n statusCode = 200;\r\n }\r\n onSuccess(statusCode, response);\r\n };\r\n onGetRequestEnterPriseBody(LinkAPI.getDVHCEnterprise(idDVHC), onProcess);\r\n}\r\n\r\nexport function getListXaEnter(huyenId, onSuccess) {\r\n let onProcess = ({ statusCode, response }) => {\r\n if (statusCode === 200) {\r\n response = response.map((e) => ({\r\n ...e,\r\n key: e.maxa,\r\n text: e.tendvhc,\r\n searchID: e.iddvhc.toString(),\r\n }));\r\n // let allItem = [setup.allDistrict];\r\n // response = allItem.concat(response);\r\n }\r\n onSuccess(statusCode, response);\r\n };\r\n onGetRequestEnterPriseBody(LinkAPI.getDVHCEnterprise(huyenId), onProcess);\r\n}\r\n\r\nexport function getSearchListEnter(route, { SoTo, SoThua, MaDvhc, TenChu }, onSuccess, APILink) {\r\n if (route === 'byName') {\r\n let onProcess = ({ statusCode, response }) => {\r\n if (statusCode === 200) {\r\n if (response.count) {\r\n getThuaByName(response, onSuccess)\r\n } else {\r\n onSuccess(200, []);\r\n }\r\n } else if (statusCode === 204) {\r\n onSuccess(200, []);\r\n\r\n } else {\r\n onSuccess(statusCode, 'Đã có lỗi xãy ra vui lòng thử lại sau !');\r\n }\r\n }\r\n onGetRequestEnterPriseBody(LinkAPI.searchByNameEnter(TenChu, MaDvhc), onProcess)\r\n } else {\r\n let onProcess = ({ statusCode, response }) => {\r\n if (statusCode === 200) {\r\n getThuaByToThu(SoThua, response.idtobando, onSuccess);\r\n } else if (statusCode === 204) {\r\n onSuccess(200, []);\r\n\r\n } else {\r\n onSuccess(statusCode, 'Đã có lỗi xãy ra vui lòng thử lại sau !');\r\n }\r\n }\r\n onGetRequestEnterPriseBody(LinkAPI.searchSoToDVHC(SoTo, MaDvhc), onProcess)\r\n }\r\n}\r\n\r\nexport function getThuaByToThu(SoThua, idBanDo, onSuccess) {\r\n if (SoThua && idBanDo) {\r\n let onProcessThua = ({ statusCode, response }) => {\r\n if (statusCode === 200) {\r\n if (response.items[0]) {\r\n const arr = [];\r\n response.items = JSON.parse(unescape(response.items));\r\n response.items.forEach(e => {\r\n const nguoiLienQuan = JSON.parse(unescape(response.items[0].Nguoilienquan));\r\n // console.log('yyyy: ', response.items[0])\r\n const Dangkymdng = JSON.parse(unescape(response.items[0].Dangkymdng));\r\n let nguonGocSDD = '', mucDichSDD = '';\r\n Dangkymdng.forEach(e => {\r\n nguonGocSDD = nguonGocSDD + (e.Nguongoc + ' - ' + e.Tennguongoc) + '| ';\r\n mucDichSDD = mucDichSDD + (e.Loaidat + ' - ' + e.Tendaydu + ': ' + e.Dientich + ' m²') + '|';\r\n });\r\n arr.push({\r\n ...e,\r\n 'MaDVHC': e.Iddvhc,\r\n 'MaThuaDat': e.Idthuadat,\r\n 'SOTO': e.Soto.trim(),\r\n 'SOTHUA': e.Sothututhua,\r\n 'KhuVuc': e.Khuvuc,\r\n 'DiaChiThuaDat': e.Diachithua + ', ' + e.Tendvhc + ', ' + e.Tenhuyen + ', ' + e.Tentinh,\r\n 'DienTich': e.Dientich,\r\n \"CongKhai\": null,\r\n 'MaHinhThucSD': e.Hinhthucsd,\r\n 'TrangThaiThuaDat': e.Tentrangthai,\r\n 'SoVaoSo': e.Sovaoso,\r\n 'NguonGocSDD': nguonGocSDD,\r\n 'MucDichSDD': getListMDSD(mucDichSDD),\r\n 'Ten1': e.Hoten,\r\n 'GioiTinh1': !e.Gioitinh,\r\n 'NgaySinh1': null,\r\n 'NamSinh1': e.Ngaysinh,\r\n 'SoDinhDanh1': e.Sodinhdanh,\r\n 'DiaChi1': e.Diachi,\r\n 'Ten2': nguoiLienQuan[0] ? nguoiLienQuan[0].Hoten : null,\r\n 'GioiTinh2': nguoiLienQuan[0] ? !nguoiLienQuan[0].Gioitinh : null,\r\n 'NgaySinh2': null,\r\n 'NamSinh2': nguoiLienQuan[0] ? nguoiLienQuan[0].Ngaysinh : null,\r\n 'SoDinhDanh2': nguoiLienQuan[0] ? nguoiLienQuan[0].Sodinhdanh : null,\r\n 'DiaChi2': nguoiLienQuan[0] ? nguoiLienQuan[0].Diachi : null,\r\n 'idBanDo': idBanDo\r\n });\r\n });\r\n onSuccess(200, arr);\r\n } else {\r\n onSuccess(200, []);\r\n }\r\n } else {\r\n onSuccess(statusCode, 'Đã có lỗi xãy ra vui lòng thử lại sau !');\r\n }\r\n };\r\n console.log('LinkAPI.searchSoThuaDVHC(SoThua, idBanDo): ', LinkAPI.searchSoThuaDVHC(SoThua, idBanDo))\r\n onGetRequestEnterPriseBody(LinkAPI.searchSoThuaDVHC(SoThua, idBanDo), onProcessThua)\r\n }\r\n}\r\n\r\nexport function getThuaByName(response, onSuccess) {\r\n\r\n if (response.items[0]) {\r\n const arr = [];\r\n response.items = JSON.parse(unescape(response.items));\r\n response.items.forEach(e => {\r\n const nguoiLienQuan = JSON.parse(unescape(response.items[0].Nguoilienquan));\r\n const Dangkymdng = JSON.parse(unescape(response.items[0].Dangkymdng));\r\n let nguonGocSDD = '', mucDichSDD = '';\r\n Dangkymdng.forEach(e => {\r\n nguonGocSDD = nguonGocSDD + (e.Nguongoc + ' - ' + e.Tennguongoc) + '| ';\r\n mucDichSDD = mucDichSDD + (e.Loaidat + ' - ' + e.Tendaydu + ': ' + e.Dientich + ' m²') + '|';\r\n });\r\n arr.push({\r\n ...e,\r\n 'MaDVHC': e.Iddvhc,\r\n 'MaThuaDat': e.Idthuadat,\r\n 'SOTO': e.Soto.trim(),\r\n 'SOTHUA': e.Sothututhua,\r\n 'KhuVuc': e.Khuvuc,\r\n 'DiaChiThuaDat': e.Diachithua + ', ' + e.Tendvhc + ', ' + e.Tenhuyen + ', ' + e.Tentinh,\r\n 'DienTich': e.Dientich,\r\n \"CongKhai\": null,\r\n 'MaHinhThucSD': e.Hinhthucsd,\r\n 'TrangThaiThuaDat': e.Tentrangthai,\r\n 'SoVaoSo': e.Sovaoso,\r\n 'NguonGocSDD': nguonGocSDD,\r\n 'MucDichSDD': getListMDSD(mucDichSDD),\r\n 'Ten1': e.Hoten,\r\n 'GioiTinh1': !e.Gioitinh,\r\n 'NgaySinh1': null,\r\n 'NamSinh1': e.Ngaysinh,\r\n 'SoDinhDanh1': e.Sodinhdanh,\r\n 'DiaChi1': e.Diachi,\r\n 'Ten2': nguoiLienQuan[0] ? nguoiLienQuan[0].Hoten : null,\r\n 'GioiTinh2': nguoiLienQuan[0] ? !nguoiLienQuan[0].Gioitinh : null,\r\n 'NgaySinh2': null,\r\n 'NamSinh2': nguoiLienQuan[0] ? nguoiLienQuan[0].Ngaysinh : null,\r\n 'SoDinhDanh2': nguoiLienQuan[0] ? nguoiLienQuan[0].Sodinhdanh : null,\r\n 'DiaChi2': nguoiLienQuan[0] ? nguoiLienQuan[0].Diachi : null,\r\n });\r\n });\r\n onSuccess(200, arr);\r\n } else {\r\n onSuccess(200, []);\r\n }\r\n}\r\n\r\n\r\n// export function getListGiaDat({ SoTo, SoThua, MaDvhc, TenChu }) {\r\n// if (MaDvhc && SoThua && SoTo) {\r\n// let onProcess = ({ statusCode, response }) => {\r\n// if (statusCode === 200) {\r\n// if (response[0] && response[0].BangGiaDatId) {\r\n// response = response.map((e) => ({\r\n// GiaTri: e.GiaTri,\r\n// TenDuong: e.TENDUONG,\r\n// TenDoanDuong: e.TENDOANDUONG,\r\n// TenViTri: e.TenViTri,\r\n// KhuVuc: e.TenKhuVuc,\r\n// MaLoaiDat: e.MaLoaiDat\r\n// }));\r\n// } else {\r\n// response = null;\r\n// }\r\n// store.dispatch({ type: Type.SET_STATE_GIA_DAT, route: 'giadat', value: response });\r\n// }\r\n// };\r\n// onPostRequest(LinkAPI.getGiaDat, onProcess, { SoTo, SoThua, MaDvhc, TenChu })\r\n// }\r\n\r\n// }\r\n\r\n// export const getInfoByThuaDat = ({ SoTo, SoThua, MaDvhc, TenChu }, shape) => {\r\n// let onSuccess = (statusCode, response) => {\r\n// if (statusCode === 200 && response.length) {\r\n// response = response[0];\r\n// onOpenRightPanel('info');\r\n// store.dispatch({ type: Type.SET_STATE_RIGHT_PANEL, route: 'routeFrom', value: '' })\r\n// store.dispatch({ type: Type.SET_STATE_HIEN_TRANG, route: 'dataThuaDatPicked', value: response });\r\n// store.dispatch({ type: Type.SET_STATE_HIEN_TRANG, route: 'dataThuaDatPickedKhongThuocTinh', value: null });\r\n\r\n// // onOpenRightPanel('info');\r\n// // store.dispatch({ type: Type.SET_STATE_RIGHT_PANEL, route: 'routeFrom', value: '' })\r\n// // store.dispatch({ type: Type.SET_STATE_HIEN_TRANG, route: 'dataThuaDatPicked', value: response });\r\n// } else {\r\n// onOpenRightPanel('info');\r\n// store.dispatch({ type: Type.SET_STATE_RIGHT_PANEL, route: 'routeFrom', value: '' })\r\n// store.dispatch({\r\n// type: Type.SET_STATE_HIEN_TRANG, route: 'dataThuaDatPickedKhongThuocTinh', value: {\r\n// \"MaDVHC\": shape.madvhc,\r\n// \"SOTO\": shape.SOTO,\r\n// \"SOTHUA\": shape.SOTHUA,\r\n// \"TenChu\": '',\r\n// \"DienTich\": shape.DIENTICH,\r\n// \"LoaiDat\": shape.LOAIDAT,\r\n// \"Color\": shape.FillColor\r\n// }\r\n// });\r\n// store.dispatch({ type: Type.SET_STATE_HIEN_TRANG, route: 'dataThuaDatPicked', value: null });\r\n\r\n// // store.dispatch({ type: Type.SET_MAIN_MESSAGE, message: 'Không tìm thấy thông tin thửa đất' });\r\n// // onCloseRightPanel()\r\n// }\r\n// };\r\n// getSearchList('byToThua', { SoTo, SoThua, MaDvhc, TenChu }, onSuccess)\r\n// }\r\n\r\nexport const getInfoByThuaDatEnter = ({ SoTo, SoThua, MaDvhc, TenChu }, shape, APILink) => {\r\n let onSuccess = (statusCode, response) => {\r\n if (statusCode === 200 && response.length) {\r\n response = response[0];\r\n onOpenRightPanel('info');\r\n store.dispatch({ type: Type.SET_STATE_RIGHT_PANEL, route: 'routeFrom', value: '' })\r\n store.dispatch({ type: Type.SET_STATE_HIEN_TRANG, route: 'dataThuaDatPicked', value: response });\r\n store.dispatch({ type: Type.SET_STATE_HIEN_TRANG, route: 'dataThuaDatPickedKhongThuocTinh', value: null });\r\n } else {\r\n onOpenRightPanel('info');\r\n store.dispatch({ type: Type.SET_STATE_RIGHT_PANEL, route: 'routeFrom', value: '' })\r\n store.dispatch({\r\n type: Type.SET_STATE_HIEN_TRANG, route: 'dataThuaDatPickedKhongThuocTinh', value: {\r\n \"MaDVHC\": shape.madvhc,\r\n \"SOTO\": shape.SOTO,\r\n \"SOTHUA\": shape.SOTHUA,\r\n \"TenChu\": '',\r\n \"DienTich\": shape.DIENTICH,\r\n \"LoaiDat\": shape.LOAIDAT,\r\n \"Color\": shape.FillColor\r\n }\r\n });\r\n store.dispatch({ type: Type.SET_STATE_HIEN_TRANG, route: 'dataThuaDatPicked', value: null });\r\n }\r\n };\r\n getSearchListEnter('byToThua', { SoTo, SoThua, MaDvhc, TenChu }, onSuccess, APILink)\r\n}\r\n\r\nfunction getListMDSD(strMDSD) {\r\n let result = [];\r\n if (strMDSD) {\r\n if (strMDSD[strMDSD.length - 1] === \"|\")\r\n strMDSD = strMDSD.slice(0, -1);\r\n strMDSD = strMDSD.split('|');\r\n if (strMDSD.length) {\r\n strMDSD = strMDSD.filter(e => !!e);\r\n strMDSD = strMDSD.filter(e => e.trim());\r\n strMDSD = strMDSD.filter(e => !!e);\r\n strMDSD = strMDSD.filter(e => e.indexOf('-') !== -1);\r\n result = formatListMDSD(strMDSD);\r\n }\r\n }\r\n return result\r\n}\r\n\r\nfunction formatListMDSD(listMDSD) {\r\n if (listMDSD.length) {\r\n listMDSD = listMDSD.map(e => {\r\n let type = e.split('-')[0].trim();\r\n type = getUsedShapeColor(type);\r\n return {\r\n name: e,\r\n color: type\r\n }\r\n });\r\n return listMDSD\r\n }\r\n return []\r\n}\r\n","import React from 'react';\r\nimport { Marker, Polygon } from \"react-google-maps\";\r\nimport Type from \"../../Redux/Type\";\r\nimport { onMoveToMap } from \"../../Containers/MapView\";\r\nimport { getQuyHoachInfo } from \"../../Containers/QuyHoach\";\r\nimport { getInfoByThuaDatEnter } from \"../../Containers/Search\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { store } from '../../Redux/Store';\r\nimport { decodeResponse, encodeResponse, parseJwt } from '../../Containers/MainController';\r\nimport moment from 'moment';\r\n\r\nconst LopHienTrang = () => {\r\n const dispatch = useDispatch();\r\n const { listPolygon, showThuaDat, showOnZoom, pickedPolygon, makerPosition } = useSelector(state => state.hienTrang)\r\n const { showQuyHoach, listLabel } = useSelector(state => state.quyHoach);\r\n const userInfoEnter = useSelector(state => state.UserInfoEnter);\r\n \r\n \r\n const onPolygonPress = ({ latLng }, shape) => {\r\n dispatch({ type: Type.SET_MAIN_MESSAGE, message: '' })\r\n let point = {\r\n lat: parseFloat(latLng.lat()),\r\n lng: parseFloat(latLng.lng())\r\n }\r\n if (shape) {\r\n dispatch({ type: Type.SET_STATE_HIEN_TRANG, route: 'makerPosition', value: point });\r\n dispatch({ type: Type.SET_STATE_HIEN_TRANG, route: 'pickedPolygon', value: shape['polygon'] })\r\n let payload = {\r\n MaDvhc: shape.madvhc,\r\n SoTo: shape.SOTO,\r\n SoThua: shape.SOTHUA,\r\n TenChu: ''\r\n };\r\n getQuyHoachInfo(shape.polygons)\r\n getInfoByThuaDatEnter(payload, shape, userInfoEnter.APILink)\r\n onMoveToMap(point)\r\n }\r\n };\r\n return (\r\n
\r\n\r\n {\r\n listPolygon.map((item) => (\r\n { onPolygonPress(e, item) }}\r\n visible={showThuaDat && showOnZoom}\r\n />\r\n ))}\r\n \r\n \r\n\r\n
\r\n )\r\n}\r\nexport default LopHienTrang;\r\n","import React from \"react\";\r\nimport DrawingManager from 'react-google-maps/lib/components/drawing/DrawingManager'\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport Type from \"../../Redux/Type\";\r\n\r\n\r\nconst Drawing = props => {\r\n const { drawingMode } = useSelector(state => state.drawingTool);\r\n const dispatch = useDispatch();\r\n\r\n const onPolygonComplete = (event) => {\r\n dispatch({ type: Type.SET_EVT_DRAWING, evt: event });\r\n dispatch({ type: Type.STOP_DRAWING })\r\n };\r\n\r\n\r\n return (\r\n \r\n )\r\n}\r\n\r\nexport default Drawing\r\n","import React from 'react';\r\nimport { Text, Stack, Modal, Icon, PrimaryButton } from '@fluentui/react';\r\nimport COLOR from \"../Styles/Colors\";\r\n\r\n\r\nexport const ModalView = props => {\r\n return (\r\n { props.onDismiss() }}\r\n dragOptions={null}\r\n styles={styles.modal}\r\n >\r\n \r\n \r\n {'Thông báo'}\r\n {props.mess}\r\n { props.onDismiss() }} style={styles.button} />\r\n \r\n \r\n )\r\n};\r\n\r\n\r\nconst styles = {\r\n containter: {\r\n flex: 1,\r\n padding: 10,\r\n justifyContent: 'center',\r\n alignItems: 'center'\r\n },\r\n title: {\r\n color: '#0174DF',\r\n fontWeight: 'bold',\r\n fontSize: 20,\r\n textAlign: 'center',\r\n marginBottom: 10\r\n },\r\n titleIcon: {\r\n root: {\r\n color: COLOR.blue,\r\n fontSize: 20,\r\n }\r\n },\r\n button: {\r\n marginTop: 20,\r\n borderRadius: 10\r\n },\r\n modal: {\r\n root: {\r\n zIndex: 0,\r\n },\r\n main: {\r\n borderRadius: 5,\r\n minHeight: 200,\r\n minWidth: 200,\r\n width: 250,\r\n justifycontent: 'center',\r\n alignItems: 'center',\r\n marginTop: '-15%',\r\n }\r\n },\r\n center: {\r\n textAlign: 'center',\r\n color: COLOR.black,\r\n fontFamily: 'Open Sans',\r\n paddingLeft: 10,\r\n paddingRight: 10\r\n // marginBottom: 10\r\n },\r\n processButton: {\r\n root: {\r\n backgroundColor: COLOR.transparent,\r\n },\r\n rootHovered: {\r\n backgroundColor: COLOR.blue\r\n },\r\n iconHovered: {\r\n color: COLOR.white\r\n },\r\n label: {\r\n fontSize: 12,\r\n color: COLOR.white\r\n },\r\n icon: {\r\n fontSize: 16,\r\n color: COLOR.white\r\n }\r\n },\r\n};\r\n\r\n","import React, { useState, useEffect } from 'react';\r\nimport { Text, SearchBox, Label, ChoiceGroup, Dropdown, PrimaryButton, Spinner, MessageBar, MessageBarType } from '@fluentui/react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport Type from \"../../Redux/Type\";\r\nimport { getSearchListEnter } from '../../Containers/Search'\r\nimport { onOpenRightPanel } from \"../../Containers/RightPanelAction\";\r\nimport { ModalView } from \"../ModalView\";\r\n\r\n\r\nconst Search = () => {\r\n const dispatch = useDispatch();\r\n const {\r\n searchText,\r\n modeSearch,\r\n\r\n listDistrictEnter,\r\n districtSelectedEnter,\r\n wardSelectedEnter,\r\n listWardEnter\r\n\r\n } = useSelector(state => state.searchState);\r\n const [isOpen, setIsOpen] = useState(false);\r\n const userInfoEnter = useSelector(state => state.UserInfoEnter);\r\n\r\n const [isLoading, setLoading] = useState(false);\r\n const [isDidMount, setDidMount] = useState(false);\r\n const [errorMessage, setErrorMessage] = useState('');\r\n const [warningMessage, setWarningMessage] = useState('');\r\n const [optionModeSearch] = useState([\r\n { key: 'byName', text: 'Theo tên chủ sử dụng', disabled: !userInfoEnter },\r\n { key: 'byToThua', text: 'Theo số tờ thửa' }\r\n ])\r\n\r\n useEffect(() => {\r\n if (!isDidMount) {\r\n setDidMount(true);\r\n }\r\n }, [isDidMount, dispatch, listDistrictEnter.length, userInfoEnter]);\r\n\r\n\r\n const onCallAPISearchEnter = (route, payload) => {\r\n setErrorMessage('');\r\n setLoading(true);\r\n let onSuccess = (statusCode, response) => {\r\n setLoading(false);\r\n if (statusCode === 200) {\r\n if (response.length) {\r\n dispatch({ type: Type.SET_SEARCH, route: 'listResult', value: response });\r\n onOpenRightPanel('result')\r\n }\r\n else\r\n setWarningMessage('Không tìm thấy kết quả nào')\r\n } else {\r\n setErrorMessage(response)\r\n }\r\n };\r\n getSearchListEnter(route, payload, onSuccess, userInfoEnter.APILink);\r\n };\r\n\r\n const onClearSearchText = () => {\r\n dispatch({ type: Type.SET_SEARCH, route: 'searchText', value: '' });\r\n dispatch({ type: Type.SET_SEARCH, route: 'listResult', value: [] });\r\n }\r\n const onChangeSearchText = (_, value) => dispatch({ type: Type.SET_SEARCH, route: 'searchText', value });\r\n const onChangeModeSearch = (_, optionChoose) => dispatch({ type: Type.SET_SEARCH, route: 'modeSearch', value: optionChoose.key });\r\n\r\n const onDistrictChangeEnter = (_, districtSelectedTempt) => {\r\n const temp = listWardEnter.filter(e => (districtSelectedTempt.mahuyen + 'TK' == e.mahuyen));\r\n const xaDefault = temp ? temp[0] : null\r\n\r\n dispatch({ type: Type.SET_SEARCH, route: 'districtSelectedEnter', value: districtSelectedTempt })\r\n dispatch({ type: Type.SET_SEARCH, route: 'wardSelectedEnter', value: xaDefault })\r\n };\r\n\r\n const onWardChangeEnter = (_, wardSelectedEnter) => dispatch({ type: Type.SET_SEARCH, route: 'wardSelectedEnter', value: wardSelectedEnter });\r\n\r\n const onSearchPress = () => {\r\n if (!userInfoEnter) {\r\n setIsOpen(true)\r\n } else {\r\n setWarningMessage('');\r\n if (!searchText.trim())\r\n setErrorMessage('Vui lòng nhập từ khóa cần tìm')\r\n else if (wardSelectedEnter.searchID === \"0\") {\r\n setErrorMessage('Vui lòng chọn xã/phường/thị trấn')\r\n }\r\n else if (modeSearch === 'byToThua') {\r\n let arraySearchText = searchText.split('/');\r\n if (arraySearchText.length !== 2) {\r\n setErrorMessage('Vui lòng nhập đúng cú pháp tìm kiếm số tờ/số thửa. Ví dụ để tìm thửa 123 thuộc tờ 10, bạn hãy nhập 10/123');\r\n }\r\n else {\r\n let SOTO = arraySearchText[0].trim(),\r\n SOTHUA = arraySearchText[1].trim(),\r\n MADVHC = wardSelectedEnter.iddvhc,\r\n payload = {\r\n MaDvhc: MADVHC,\r\n SoTo: SOTO,\r\n SoThua: SOTHUA,\r\n TenChu: '',\r\n };\r\n onCallAPISearchEnter(modeSearch, payload);\r\n }\r\n }\r\n else {\r\n let payload = {\r\n TenChu: searchText,\r\n MaDvhc: wardSelectedEnter.iddvhc,\r\n SoTo: '',\r\n SoThua: '',\r\n };\r\n onCallAPISearchEnter(modeSearch, payload);\r\n }\r\n }\r\n };\r\n\r\n return (\r\n
\r\n
\r\n { setIsOpen(false) }}\r\n title={'Thông báo'}\r\n mess={'Vui lòng đăng nhập đễ thực hiện tìm kiếm'}\r\n />\r\n Tìm kiếm\r\n \r\n {warningMessage ?\r\n
\r\n \r\n {warningMessage}\r\n \r\n
\r\n : null\r\n }\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n (districtSelectedEnter.key == e.mahuyen || districtSelectedEnter.key + 'TK' == e.mahuyen))}\r\n selectedKey={wardSelectedEnter.key}\r\n onChange={onWardChangeEnter}\r\n styles={styles.dropdownMenu}\r\n disabled={isLoading}\r\n />\r\n\r\n {errorMessage ?\r\n
\r\n \r\n {errorMessage}\r\n \r\n
\r\n : null\r\n }\r\n\r\n \r\n
\r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default Search\r\n\r\n\r\nconst styles = {\r\n subTitleRow: {\r\n height: 44,\r\n marginTop: 2,\r\n display: 'flex',\r\n alignItems: 'flex-end',\r\n },\r\n labelTitle: {\r\n root: {\r\n textAlign: 'left'\r\n }\r\n },\r\n chosenGroup: {\r\n label: {\r\n textAlign: 'left'\r\n },\r\n root: {\r\n marginBottom: -5\r\n }\r\n },\r\n dropdownMenu: {\r\n root: {\r\n marginTop: 7,\r\n },\r\n title: {\r\n textAlign: 'left'\r\n },\r\n errorMessage: {\r\n textAlign: 'left'\r\n }\r\n }\r\n};\r\n","import React, { useEffect, useState } from 'react';\r\nimport { Text, Stack, Label, Checkbox, DefaultButton, Spinner, Dropdown, MessageBar, MessageBarType, PrimaryButton } from '@fluentui/react';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport Type from \"../../Redux/Type\";\r\nimport { onLoadQuyHoachPolygon, onLoadQHChiTietTanChau } from '../../Containers/QuyHoach'\r\nimport { onOpenRightPanel } from \"../../Containers/RightPanelAction\";\r\nimport { ModalView } from \"../ModalView\";\r\n\r\nconst Layer = () => {\r\n const { showThuaDat } = useSelector(state => state.hienTrang);\r\n const { showQuyHoach, typeActive, isLoading, errorMessage, listLabel, menu } = useSelector(state => state.quyHoach);\r\n const dispatch = useDispatch();\r\n const userInfoEnter = useSelector(state => state.UserInfoEnter);\r\n const [isOpen, setIsOpen] = useState(false);\r\n const [msg, setMsg] = useState('');\r\n\r\n useEffect(() => {\r\n if (!userInfoEnter) {\r\n dispatch({ type: Type.SET_STATE_HIEN_TRANG, route: 'showThuaDat', value: false });\r\n }\r\n }, [])\r\n\r\n const onChangeShowQuyHoachStatus = () => {\r\n console.log(userInfoEnter)\r\n if (userInfoEnter && userInfoEnter.APILink) {\r\n dispatch({ type: Type.SET_STATE_QUY_HOACH, route: 'showQuyHoach', value: !showQuyHoach });\r\n }\r\n else {\r\n setIsOpen(true)\r\n setMsg('Bản đồ ' + userInfoEnter.tendvhc + ' hiện chưa có lớp quy hoạch. Vui lòng thử lại sau')\r\n }\r\n };\r\n\r\n const onChangeShowThuaDatStatus = () => {\r\n if (!userInfoEnter) {\r\n setIsOpen(true)\r\n setMsg('Vui lòng đăng nhập đễ xem lớp thửa đất')\r\n dispatch({ type: Type.SET_STATE_HIEN_TRANG, route: 'showThuaDat', value: false });\r\n } else {\r\n dispatch({ type: Type.SET_STATE_HIEN_TRANG, route: 'showThuaDat', value: !showThuaDat });\r\n }\r\n\r\n };\r\n\r\n const onChangeTypeQuyHoach = (_, typeActive) => {\r\n dispatch({ type: Type.SET_STATE_QUY_HOACH, route: 'typeActive', value: typeActive });\r\n }\r\n\r\n const onLoadPress = () => {\r\n if (typeActive.key && userInfoEnter) {\r\n if (typeActive.key === 'CTSDDTTCT') {\r\n onLoadQHChiTietTanChau();\r\n onOpenRightPanel('zone')\r\n }\r\n else\r\n onLoadQuyHoachPolygon(typeActive.key, userInfoEnter.APILink);\r\n }\r\n }\r\n\r\n const onNextPress = () => {\r\n onOpenRightPanel('zone')\r\n }\r\n return (\r\n
\r\n
\r\n { setIsOpen(false) }}\r\n title={'Thông báo'}\r\n mess={msg}\r\n />\r\n Lớp bản đồ\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n (e.MaTinh == userInfoEnter.matinh))}\r\n selectedKey={typeActive.key}\r\n onChange={onChangeTypeQuyHoach}\r\n disabled={!showQuyHoach}\r\n />\r\n \r\n \r\n {showQuyHoach ?\r\n \r\n : null\r\n }\r\n {listLabel.length ?\r\n \r\n : null\r\n }\r\n \r\n {isLoading ?\r\n \r\n : null\r\n }\r\n {errorMessage ?\r\n \r\n {errorMessage}\r\n \r\n : null\r\n }\r\n \r\n
\r\n
\r\n )\r\n};\r\n\r\nexport default Layer;\r\n\r\n","import React from 'react';\r\nimport { Text, ChoiceGroup, Stack } from '@fluentui/react';\r\nimport { useSelector, useDispatch } from \"react-redux\";\r\nimport Type from \"../../Redux/Type\";\r\n\r\nconst contentExplanation =\r\n 'Khi thay đổi chế độ bản đồ, lớp bản đồ nền sẽ thay đổi, các lớp bản đồ này đều được lấy từ nguồn Google Map.';\r\nconst options = [\r\n { key: 'hybrid', text: 'Xem bằng ảnh vệ tinh' },\r\n { key: 'roadmap', text: 'Xem bằng bản đồ' }\r\n];\r\n\r\nconst MapMode = () => {\r\n\r\n const { typeMapId } = useSelector(state => state.mapView);\r\n const dispatch = useDispatch();\r\n const onChangeSatellite = (_, option) => {\r\n dispatch({ type: Type.SET_TYPE_MAP, value: option.key })\r\n };\r\n\r\n\r\n return (\r\n
\r\n
\r\n Chế độ bản đồ\r\n
\r\n {contentExplanation}\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default MapMode;\r\n\r\n","import React from 'react';\r\nimport { Text, Stack, Image, ImageFit } from '@fluentui/react';\r\nimport { useSelector, useDispatch } from \"react-redux\";\r\nimport Type from \"../../Redux/Type\";\r\nimport { CommandButton } from \"../Accessary\";\r\nimport { onOpenRightPanel, onCloseRightPanel } from \"../../Containers/RightPanelAction\";\r\nimport URL from \"../../Containers/MainController\";\r\n\r\n\r\nconst Menu = () => {\r\n const userInfoEnter = useSelector(state => state.UserInfoEnter);\r\n const dispatch = useDispatch();\r\n\r\n const onButtonPress = (route) => () => onOpenRightPanel(route)\r\n const onDrawingPress = () => {\r\n dispatch({ type: Type.SHOW_ON_DRAWING });\r\n dispatch({ type: Type.START_DRAWING })\r\n onCloseRightPanel()\r\n }\r\n return (\r\n
\r\n
\r\n Menu\r\n\r\n \r\n {\r\n userInfoEnter && userInfoEnter.APILink ?\r\n \r\n : null\r\n }\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n {/* */}\r\n\r\n {\r\n userInfoEnter ?\r\n\r\n \r\n :\r\n \r\n\r\n }\r\n\r\n\r\n \r\n Tải ứng dụng VNPT-ILIS để có trải nghiệm tốt hơn trên thiết bị di động.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default Menu;\r\n\r\nconst styles = {\r\n inline: {\r\n height: 1,\r\n backgroundColor: '#BDBDBD',\r\n width: '100%',\r\n marginTop: 30,\r\n marginBottom: 20\r\n }\r\n};\r\n\r\n","import React, { useState } from 'react';\r\nimport { Text, ChoiceGroup, Stack } from '@fluentui/react';\r\nimport { onMoveToMap } from \"../../Containers/MapView\";\r\nimport setup from '../../Containers/setup'\r\n\r\nconst contentExplanation =\r\n 'Bản đồ sẽ chuyển đến khu vực bạn chọn, chức năng này nhằm giúp bạn định hình khu vực hành chính của địa bàn.';\r\n\r\nconst Location = () => {\r\n\r\n const [routeKey, setRouteKey] = useState(1);\r\n\r\n const onChangeLocation = (_, option) => {\r\n let center = {\r\n lat: option.latitude,\r\n lng: option.longitude\r\n };\r\n onMoveToMap(center)\r\n setRouteKey(option.key)\r\n };\r\n\r\n\r\n return (\r\n
\r\n
\r\n Chuyển vị trí\r\n
\r\n {contentExplanation}\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n )\r\n};\r\n\r\nexport default Location;\r\n\r\nconst styles = {\r\n container: {\r\n root: {\r\n paddingBottom: 20,\r\n flex: 1,\r\n overflowY: 'scroll',\r\n maxHeight: 'calc(100% - 230px)',\r\n marginRight: -16,\r\n paddingRight: 16,\r\n }\r\n }\r\n};\r\n\r\n\r\n\r\n\r\n","import React from 'react';\r\nimport { Text, ChoiceGroup, Stack, Dropdown } from '@fluentui/react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport Type from \"../../Redux/Type\";\r\nimport { onMoveToMap } from \"../../Containers/MapView\";\r\nconst contentExplanation =\r\n 'Bản đồ sẽ chuyển đến khu vực bạn chọn, chức năng này nhằm giúp bạn định hình khu vực hành chính của địa bàn.';\r\n\r\nconst Location = () => {\r\n\r\n const dispatch = useDispatch();\r\n\r\n const onChangeLocation = (_, option) => {\r\n console.log('xaaaaaaaaaa: ', option)\r\n let center = {\r\n lat: option.latitude,\r\n lng: option.longitude\r\n };\r\n onMoveToMap(center)\r\n dispatch({ type: Type.SET_SEARCH, route: 'districtSelectedLocationXa', value: option.key });\r\n };\r\n const { districtSelectedLocation } = useSelector(state => state.searchState);\r\n const { districtSelectedLocationXa } = useSelector(state => state.searchState);\r\n\r\n const { listDistrictEnter, listWardEnter } = useSelector(state => state.searchState);\r\n\r\n const onDistrictChange = (_, districtSelectedTempt) => {\r\n console.log(\"districtSelectedTempt: \", districtSelectedTempt)\r\n dispatch({ type: Type.SET_SEARCH, route: 'districtSelectedLocation', value: districtSelectedTempt })\r\n };\r\n console.log(listWardEnter)\r\n return (\r\n
\r\n
\r\n Chuyển vị trí\r\n
\r\n {contentExplanation}\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n\r\n (districtSelectedLocation.key == e.mahuyen))}\r\n onChange={onChangeLocation}\r\n />\r\n \r\n
\r\n
\r\n )\r\n};\r\n\r\nexport default Location;\r\n\r\nconst styles = {\r\n container: {\r\n root: {\r\n paddingBottom: 20,\r\n flex: 1,\r\n overflowY: 'scroll',\r\n maxHeight: 'calc(100% - 230px)',\r\n marginRight: -16,\r\n paddingRight: 16,\r\n\r\n }\r\n },\r\n dropdownMenu: {\r\n root: {\r\n },\r\n title: {\r\n textAlign: 'left'\r\n },\r\n errorMessage: {\r\n textAlign: 'left'\r\n }\r\n }\r\n};\r\n\r\n","import React from 'react';\r\nimport {Text, Stack, Label, Checkbox, ScrollablePane, Link, Icon} from '@fluentui/react';\r\nimport {useDispatch,useSelector} from \"react-redux\";\r\nimport Type from \"../../Redux/Type\";\r\nimport Viewer from 'react-viewer';\r\n\r\nconst ZonePanel = () =>{\r\n const {showQuyHoach,listLabel,labelActive,typeActive} = useSelector(state=>state.quyHoach);\r\n const dispatch = useDispatch();\r\n const [showPhotoViewer,setShowPhotoViewer] = React.useState(false);\r\n const [showInitIndex,setShowInitIndex] = React.useState(0);\r\n\r\n const onChangeShowPhotoViewer =(index)=>()=>{\r\n if (!showPhotoViewer)\r\n setShowInitIndex(index);\r\n setShowPhotoViewer(!showPhotoViewer);\r\n }\r\n\r\n const onChangeLayerQuyHoachActive =(layer)=>()=>\r\n {\r\n if (!labelActive.includes(layer))\r\n dispatch({\r\n type:Type.SET_STATE_QUY_HOACH,\r\n route:'labelActive',\r\n value:[...labelActive,layer]\r\n })\r\n else\r\n dispatch({\r\n type:Type.SET_STATE_QUY_HOACH,\r\n route:'labelActive',\r\n value:labelActive.filter(e=>e !== layer)\r\n })\r\n };\r\n\r\n return(\r\n
\r\n \r\n
\r\n Thông tin quy hoạch\r\n \r\n \r\n \r\n {typeActive.text}\r\n \r\n {typeActive.document ?\r\n \r\n \r\n {typeActive.document}\r\n \r\n : null\r\n }\r\n {/**/}\r\n {/* */}\r\n {/* */}\r\n {/* {imageTest.map((e,i)=>(*/}\r\n {/* */}\r\n {/* ))}*/}\r\n {/* */}\r\n {/**/}\r\n \r\n \r\n \r\n {listLabel.map(e=>(\r\n \r\n ))}\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n )\r\n};\r\n\r\nexport default ZonePanel;\r\n\r\n// const ImageButton = ({onClick,src,alt})=>\r\n// {\r\n// return(\r\n// \r\n// \r\n// \r\n// \r\n// \r\n// )\r\n// }\r\n\r\nconst CheckLabel = ({label,color,checked})=>\r\n{\r\n return (\r\n \r\n \r\n {label}\r\n \r\n )\r\n}\r\n\r\n\r\nconst imageTest = [\r\n {\r\n src:'http://ilis.tayninh.gov.vn/quyhoach/tayninh/tptayninh/phankhu3/khungkientruc.jpg',\r\n alt:'Ảnh công bố quy hoạch',\r\n thumbnail:'https://dl.dropboxusercontent.com/s/zg3w9pnx515pl1b/Icon-57.png'\r\n }\r\n]\r\n","export default {\r\n panelWidth:340,\r\n panelWidthMobie:220, \r\n resultItem:308,\r\n warningMessage:340\r\n}\r\n","import React from 'react';\r\nimport COLOR from \"../../Styles/Colors\";\r\nimport {useSelector} from \"react-redux\";\r\n\r\nconst Polygon = ()=> {\r\n const dataTrichDo = useSelector(state=>state.hienTrang.dataTrichDoPicked);\r\n\r\n return (\r\n dataTrichDo ?\r\n
\r\n \r\n \r\n {\r\n dataTrichDo.circle.map((e, i) => (\r\n \r\n ))\r\n }\r\n {\r\n dataTrichDo.dataText.map((e, i) => (\r\n \r\n {e.distance}\r\n \r\n ))\r\n }\r\n \r\n
\r\n :\r\n null\r\n );\r\n}\r\n\r\n\r\nexport default Polygon;\r\n\r\nconst styles = {\r\n polygonContainer: {\r\n position: 'relative',\r\n marginTop: 5,\r\n width: 308,\r\n // backgroundColor:COLOR.blue\r\n },\r\n line: {\r\n fill: 'none',\r\n stroke: COLOR.white,\r\n strokeWidth: 2\r\n },\r\n widthLine: {\r\n position: 'absolute',\r\n fontSize: 9,\r\n bottom: 0\r\n }\r\n}\r\n\r\n\r\n","import React, {useState, forwardRef, useImperativeHandle} from 'react';\r\nimport {Text, Stack, Icon, IconButton} from '@fluentui/react';\r\nimport COLOR from \"../../Styles/Colors\";\r\nimport PolygonTrichDo from \"../Trichdo/Polygon\";\r\n\r\nconst PanelInfo = forwardRef((props, ref) => {\r\n const [data, setData] = useState('');\r\n const [showIndex, setShowIndex] = useState(0);\r\n const [className, setClassName] = useState('animated-panel-info-off');\r\n\r\n useImperativeHandle(ref, () => ({\r\n onShowCardInfo(dataFromParent) {\r\n setData(dataFromParent)\r\n if (!data)\r\n setClassName('animated-panel-info')\r\n else if (showIndex)\r\n setShowIndex(0)\r\n else if (!showIndex)\r\n setShowIndex(1)\r\n }\r\n }));\r\n\r\n const onShowOffCardInfo = () => {\r\n setClassName('animated-panel-info-off');\r\n setTimeout(() => setData(''), 300)\r\n }\r\n\r\n return (\r\n data ?\r\n !showIndex ?\r\n \r\n :\r\n \r\n :\r\n
\r\n )\r\n})\r\n\r\nconst CardInfo1 = props => (\r\n \r\n)\r\n\r\nconst CardInfo2 = props => (\r\n \r\n)\r\n\r\n\r\nconst CardInfo = props => {\r\n const data = props.data;\r\n\r\n return (\r\n
\r\n
\r\n Thông tin thửa đất\r\n \r\n
\r\n
\r\n \r\n \r\n Tờ thửa :\r\n {data.SOTO}/{data.SOTHUA} \r\n \r\n Diện tích :\r\n {data.DienTich} \r\n ㎡\r\n \r\n \r\n {Array.isArray(data.MucDichSDD) ?\r\n \r\n {data.MucDichSDD.map((element,i)=>(\r\n \r\n
\r\n {element.name}\r\n \r\n ))}\r\n \r\n : undefined\r\n }\r\n \r\n \r\n {data.DiaChiThuaDat}\r\n \r\n \r\n \r\n {data.TrangThaiThuaDat}\r\n \r\n {data.Ten1 ?\r\n \r\n \r\n \r\n {data.Ten1}\r\n \r\n SN {data.NamSinh1}\r\n \r\n {data.DiaChi1}\r\n \r\n \r\n \r\n : null\r\n }\r\n {data.Ten2 ?\r\n \r\n \r\n \r\n {data.Ten2}\r\n \r\n SN {data.NamSinh2}\r\n \r\n {data.DiaChi2}\r\n \r\n \r\n \r\n :undefined\r\n }\r\n \r\n {/**/}\r\n Bản đồ thửa đất\r\n \r\n \r\n \r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default PanelInfo;\r\n\r\nconst styles = {\r\n infoView: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n },\r\n infoHeader: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n paddingTop: 10,\r\n marginBottom: 5\r\n },\r\n infoContainer: {\r\n maxHeight: 300,\r\n overflowY: 'scroll',\r\n paddingBottom: 30,\r\n marginRight: -16,\r\n paddingRight: 16\r\n },\r\n closeInfo: {\r\n root: {\r\n height: 40,\r\n width: 40,\r\n borderRadius: 0,\r\n marginRight: -16\r\n },\r\n icon: {\r\n color: '#fff',\r\n fontSize: 12,\r\n opacity: .8\r\n },\r\n rootHovered: {\r\n backgroundColor: 'transparent'\r\n },\r\n iconHovered: {\r\n opacity: 1\r\n }\r\n },\r\n infoTitle: {\r\n root: {\r\n color: COLOR.white,\r\n fontWeight: 'bold',\r\n fontSize: 14,\r\n flex: 1\r\n }\r\n },\r\n squareIcon: (color) => ({\r\n height: 12,\r\n width: 12,\r\n backgroundColor: color || COLOR.white,\r\n borderRadius: 1,\r\n border: '1px solid #fff',\r\n marginRight: 5\r\n }),\r\n text: {\r\n root: {\r\n color: COLOR.white\r\n }\r\n },\r\n titleIcon: {\r\n root: {\r\n color: COLOR.white,\r\n marginRight: 5\r\n }\r\n },\r\n gender: {\r\n root: {\r\n fontSize: 11,\r\n color: COLOR.white\r\n }\r\n },\r\n infoName: {\r\n root: {\r\n fontWeight: 'bold',\r\n color: COLOR.white\r\n }\r\n },\r\n infoAccount: {\r\n root: {\r\n fontSize: 14,\r\n color: COLOR.white,\r\n marginRight: 5,\r\n }\r\n }\r\n};\r\n\r\n","import React, { useRef } from 'react';\r\nimport { Text, Stack, Icon, List, Link, FocusZone, FocusZoneDirection } from '@fluentui/react';\r\nimport { useSelector } from 'react-redux';\r\nimport { Card } from '@uifabric/react-cards';\r\nimport COLOR from \"../../Styles/Colors\";\r\nimport Layout from \"../../Styles/Layout\";\r\nimport PanelInfo from \"./PanelInfo\";\r\nimport { getPolygonByToThuaEnter } from \"../../Containers/MapView\";\r\n\r\nconst Result = () => {\r\n\r\n const cardInfoLayout = useRef(null);\r\n const { listResult } = useSelector(state => state.searchState);\r\n\r\n const _renderItem = (item, index) => {\r\n return (\r\n \r\n )\r\n };\r\n\r\n const onCardItemPress = (item) => () => {\r\n let dataLoadPolygon = {\r\n SoTo: item.SOTO,\r\n SoThua: item.SOTHUA,\r\n idBanDo: item.idBanDo,\r\n idThuaDat: item.Idthuadat\r\n };\r\n getPolygonByToThuaEnter(dataLoadPolygon)\r\n\r\n cardInfoLayout.current.onShowCardInfo(item);\r\n };\r\n\r\n return (\r\n
\r\n
\r\n Kết quả\r\n {listResult.length}\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n )\r\n};\r\n\r\nconst CardItemPerson = props => {\r\n const { item } = props;\r\n\r\n return (\r\n \r\n {item.Ten1 || item.Ten2 ?\r\n \r\n \r\n \r\n \r\n {item.Ten1}\r\n \r\n \r\n {item.NamSinh1}\r\n \r\n \r\n {item.DiaChi1}\r\n \r\n \r\n \r\n {item.Ten2 ?\r\n \r\n \r\n \r\n {item.Ten2}\r\n \r\n \r\n {item.NamSinh2}\r\n \r\n \r\n {item.DiaChi2}\r\n \r\n \r\n \r\n : undefined\r\n }\r\n \r\n : null\r\n }\r\n \r\n \r\n \r\n Bản đồ : \r\n Tờ {item.SOTO}, Thửa {item.SOTHUA}\r\n \r\n \r\n Diện tích:\r\n {item.DienTich}\r\n m2\r\n \r\n \r\n \r\n \r\n )\r\n};\r\n\r\nexport default Result;\r\n\r\nconst styles = {\r\n cardContainer: {\r\n root: {\r\n width: Layout.resultItem,\r\n maxWidth: Layout.resultItem,\r\n backgroundColor: COLOR.white,\r\n cursor: 'pointer',\r\n paddingTop: 5,\r\n marginBottom: 16\r\n }\r\n },\r\n resultStack: {\r\n root: {\r\n paddingBottom: 20,\r\n overflow: 'scroll',\r\n position: 'absolute',\r\n bottom: 0,\r\n left: 0,\r\n right: 0,\r\n top: 68,\r\n paddingLeft: 16\r\n }\r\n },\r\n footerCardSectionStyles: {\r\n root: {\r\n borderBottom: '1px solid #F3F2F1',\r\n },\r\n },\r\n titleFooter: {\r\n fontSize: 12,\r\n color: COLOR.darkGray\r\n },\r\n contentFooter: {\r\n fontSize: 13,\r\n color: COLOR.black\r\n },\r\n accountIcon: isFemale => ({\r\n root: {\r\n color: isFemale ? COLOR.blue : '#CB511B'\r\n }\r\n })\r\n};\r\n\r\n","import React from 'react';\r\nimport { Text, Stack, Icon, Persona, PersonaInitialsColor, PersonaSize, ScrollablePane, Link, Spinner, concatStyleSets } from '@fluentui/react';\r\nimport COLOR from \"../../Styles/Colors\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { QD_GiaDat, formatNumber } from \"../../Containers/MainController\";\r\n\r\n\r\nconst Info = () => {\r\n const listQuyHoach = useSelector(state => state.quyHoachInfo);\r\n const { isLoadingQH, quyHoachThuaDat } = useSelector(state => state.quyHoach);\r\n const dataKhongThuocTinh = useSelector(state => state.hienTrang.dataThuaDatPickedKhongThuocTinh);\r\n const data = useSelector(state => state.hienTrang.dataThuaDatPicked);\r\n const giadat = useSelector(state => state.giadat.giadat);\r\n\r\n //console.log('datadata: ',data)\r\n\r\n const getQuyHoachList = () => {\r\n let { SOTO, SOTHUA, MaDVHC } = data;\r\n if (SOTO && SOTHUA && MaDVHC) {\r\n let checkExist = listQuyHoach.filter(e => (\r\n e.SoTo === SOTO.trim()\r\n && e.SoThua === SOTHUA.trim()\r\n && e.MaDvhc === MaDVHC.toString().trim()\r\n ));\r\n if (checkExist.length)\r\n return checkExist[0].data;\r\n }\r\n return []\r\n };\r\n return (\r\n
\r\n \r\n {\r\n dataKhongThuocTinh ?\r\n
\r\n Thông tin\r\n \r\n \r\n \r\n \r\n Thông tin chung\r\n \r\n \r\n Tờ bản đồ số\r\n {dataKhongThuocTinh.SOTO}\r\n \r\n \r\n Thửa số\r\n {dataKhongThuocTinh.SOTHUA}\r\n \r\n \r\n Diện tích\r\n {dataKhongThuocTinh.DienTich}\r\n \r\n \r\n {\r\n !dataKhongThuocTinh.TenChu ? null :\r\n \r\n \r\n {dataKhongThuocTinh.TenChu}\r\n \r\n }\r\n\r\n \r\n \r\n \r\n Loại đất\r\n \r\n \r\n \r\n {dataKhongThuocTinh.LoaiDat}\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n {'Chưa có thông tin chi tiết thửa đất'}\r\n \r\n \r\n\r\n \r\n \r\n
\r\n :\r\n
\r\n Thông tin\r\n \r\n \r\n \r\n \r\n Thông tin chung\r\n \r\n \r\n Tờ bản đồ số\r\n {data.SOTO}\r\n \r\n \r\n Thửa số\r\n {data.SOTHUA}\r\n \r\n \r\n Diện tích\r\n {data.DienTich}\r\n \r\n \r\n \r\n {Array.isArray(data.MucDichSDD) ?\r\n \r\n \r\n \r\n Mục đích sử dụng\r\n \r\n {data.MucDichSDD.map((element, i) => (\r\n \r\n \r\n {element.name}\r\n \r\n ))}\r\n \r\n : undefined\r\n }\r\n \r\n \r\n \r\n Địa chỉ thửa đất\r\n \r\n {data.DiaChiThuaDat}\r\n \r\n \r\n \r\n \r\n Trạng thái pháp lý\r\n \r\n \r\n {data.TrangThaiThuaDat}\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Quy hoạch\r\n \r\n {\r\n isLoadingQH ?\r\n \r\n \r\n \r\n :\r\n (\r\n quyHoachThuaDat.length ?\r\n quyHoachThuaDat.map((element, i) => (\r\n \r\n \r\n {element.QuyHoach}\r\n \r\n ))\r\n :\r\n Không nằm trong quy hoạch\r\n )\r\n }\r\n\r\n \r\n {data.Ten1 || data.Ten2 ?\r\n \r\n \r\n \r\n Chủ sử dụng\r\n \r\n \r\n {data.Ten1 ?\r\n \r\n \r\n \r\n {data.Ten1}\r\n \r\n {\r\n !data.NamSinh1 ? null :\r\n \r\n \r\n \r\n {data.NamSinh1}\r\n \r\n \r\n }\r\n {\r\n !data.DiaChi1 ? null :\r\n \r\n \r\n \r\n {data.DiaChi1}\r\n \r\n \r\n }\r\n \r\n : null\r\n }\r\n\r\n {data.Ten2 ?\r\n \r\n \r\n \r\n {data.Ten2}\r\n \r\n {\r\n !data.NamSinh2 ? null :\r\n \r\n \r\n \r\n {data.NamSinh2}\r\n \r\n \r\n }\r\n {\r\n !data.DiaChi2 ? null :\r\n \r\n \r\n \r\n {data.DiaChi2}\r\n \r\n \r\n }\r\n\r\n \r\n : null\r\n }\r\n {\r\n !giadat ? null :\r\n \r\n \r\n \r\n \r\n \r\n Giá đất được tham khảo theo: \r\n \r\n \r\n { window.open(\"https://congbao.tayninh.gov.vn/Uploads/VanBan/VanBanCongBao/2020/9/35%20qppl.signed.pdf\") }}>{QD_GiaDat.QD} {QD_GiaDat.HIEULUC ? 'Hiệu lực: ' + QD_GiaDat.HIEULUC : ''}\r\n \r\n \r\n {\r\n giadat.map((item, index) => {\r\n if (item.GiaTri)\r\n return (\r\n \r\n \r\n \r\n {formatNumber(item.GiaTri)} vnđ\r\n \r\n {\r\n !(item.MaLoaiDat || item.KhuVuc || item.TenViTri) ? null :\r\n \r\n {item.MaLoaiDat ? 'Loại đất: ' + item.MaLoaiDat + ', ' : null}\r\n {item.KhuVuc ? item.KhuVuc + ', ' : null}\r\n {item.TenViTri ? item.TenViTri : null}\r\n \r\n }\r\n {\r\n !(item.TenDoanDuong || item.TenDuong) ? null :\r\n \r\n {item.TenDoanDuong ? item.TenDoanDuong + ', ' : null}\r\n {item.TenDuong ? item.TenDuong : null}\r\n \r\n }\r\n \r\n )\r\n })\r\n }\r\n \r\n }\r\n \r\n \r\n : null\r\n }\r\n \r\n
\r\n }\r\n
\r\n
\r\n )\r\n};\r\n\r\nexport default Info;\r\n\r\nconst styles = {\r\n infoView: {\r\n root: {\r\n paddingBottom: 20,\r\n flex: 1,\r\n marginRight: -16,\r\n paddingRight: 16,\r\n }\r\n },\r\n titleIcon: {\r\n root: {\r\n color: COLOR.darkGray\r\n }\r\n },\r\n titleGia: {\r\n root: {\r\n color: COLOR.orange,\r\n }\r\n },\r\n title: {\r\n root: {\r\n color: COLOR.black,\r\n fontWeight: 'bold',\r\n fontFamily: 'Open Sans'\r\n }\r\n },\r\n contentGia: {\r\n root: {\r\n color: COLOR.black,\r\n fontWeight: 'bold',\r\n fontFamily: 'Open Sans'\r\n }\r\n },\r\n content: {\r\n root: {\r\n width: 100,\r\n fontFamily: 'Open Sans'\r\n }\r\n },\r\n squareContent: {\r\n root: {\r\n // color:COLOR.black,\r\n marginLeft: 8,\r\n color: '#007B72',\r\n fontWeight: 'bold',\r\n fontFamily: 'Open Sans'\r\n }\r\n },\r\n strongContent: {\r\n root: {\r\n color: '#007B72',\r\n marginLeft: 8,\r\n fontWeight: 'bold',\r\n fontFamily: 'Open Sans'\r\n }\r\n },\r\n verifyIcon: {\r\n root: {\r\n color: '#007B72',\r\n fontSize: 12\r\n }\r\n },\r\n squareIcon: (color) => ({\r\n root: {\r\n color,\r\n fontSize: 10,\r\n marginTop: 4,\r\n }\r\n }),\r\n personName: {\r\n root: {\r\n fontWeight: 'bold',\r\n fontFamily: 'Open Sans'\r\n }\r\n }\r\n};\r\n","import React, { useState } from 'react';\r\nimport {\r\n Text, Stack, Link, PersonaSize, Persona, PersonaPresence,\r\n Dialog, DialogFooter, PrimaryButton, DefaultButton, DialogType, Icon, Image, ImageFit\r\n} from '@fluentui/react';\r\nimport { useSelector } from \"react-redux\";\r\nimport URL, { onSignOut } from \"../../Containers/MainController\";\r\nimport COLOR from \"../../Styles/Colors\";\r\n\r\nconst Account = () => {\r\n const [hideDialog, setHideDialog] = useState(true);\r\n const user = useSelector(state => state.UserInfoEnter);\r\n\r\n const onHideDialog = () => setHideDialog(true);\r\n const onShowDialog = () => setHideDialog(false);\r\n\r\n // const onChangePasswordPress = () => onOpenRightPanel('changePasswordEnter')\r\n\r\n return (\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {user.FullName}\r\n \r\n \r\n \r\n {user.PhoneNumber}\r\n \r\n \r\n \r\n {user.tendvhc}\r\n \r\n\r\n \r\n \r\n {/* Đổi mật khẩu */}\r\n Đăng xuất\r\n \r\n \r\n
\r\n
\r\n )\r\n};\r\n\r\nexport default Account;\r\n\r\nconst styles = {\r\n container: {\r\n root: {\r\n marginTop: 30,\r\n }\r\n },\r\n titleIcon: {\r\n root: {\r\n color: COLOR.darkGray,\r\n fontSize: 12,\r\n marginRight: 5,\r\n marginTop: 4\r\n }\r\n },\r\n inline: {\r\n height: 1,\r\n backgroundColor: '#BDBDBD',\r\n width: '100%',\r\n marginTop: 30,\r\n marginBottom: 20\r\n }\r\n};\r\n\r\n","import React from 'react';\r\nimport Search from \"../Search/Search\";\r\nimport Layer from \"../QuyHoach/Layer\";\r\nimport MapMode from \"../Menu/MapMode\";\r\nimport Menu from \"../Menu/Menu\";\r\nimport Location from \"../Menu/Location\";\r\nimport LocationEnter from \"../Menu/LocationEnter\";\r\nimport ZonePanel from \"../QuyHoach/ZonePanel\";\r\nimport Result from \"../Search/Result\";\r\nimport Info from \"../HienTrang/Info\";\r\nimport Account from \"../Profile/Account\";\r\n\r\nconst ContentRightPanel = ({ route }) => {\r\n switch (route) {\r\n case \"menu\":\r\n return (\r\n \r\n );\r\n case \"search\":\r\n return (\r\n \r\n );\r\n case \"layer\":\r\n return (\r\n \r\n );\r\n case \"satellite\":\r\n return (\r\n \r\n );\r\n case \"location\":\r\n return (\r\n \r\n );\r\n case \"locationEnter\":\r\n return (\r\n \r\n );\r\n case \"zone\":\r\n return (\r\n \r\n );\r\n case \"result\":\r\n return (\r\n \r\n );\r\n case \"info\":\r\n return (\r\n \r\n );\r\n case \"account\":\r\n return (\r\n \r\n );\r\n default:\r\n return null\r\n }\r\n}\r\n\r\nexport default ContentRightPanel\r\n","import React from 'react';\r\nimport { IconButton, TooltipHost, DirectionalHint } from '@fluentui/react';\r\nimport ContentRightPanel from \"./ContentRightPanel\";\r\nimport { useSelector } from \"react-redux\";\r\nimport Layout from \"../../Styles/Layout\";\r\nimport { onCloseRightPanel } from \"../../Containers/RightPanelAction\";\r\n\r\nconst RightPanel = () => {\r\n const { className, isShow, routeContent } = useSelector(state => state.rightPanel)\r\n\r\n return (\r\n isShow ?\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n : null\r\n )\r\n}\r\n\r\nexport default RightPanel\r\n\r\nconst styles = {\r\n modal: (e)=>({\r\n height: 'calc(100vh - 48px)',\r\n width: e > 1000 ? Layout.panelWidth : Layout.panelWidthMobie,\r\n position: 'relative',\r\n display: 'flex',\r\n flexDirection: 'column'\r\n }),\r\n closeButtonView: {\r\n position: 'absolute',\r\n top: 12,\r\n left: 'calc(100% - 44px)',\r\n },\r\n closeButton: {\r\n root: {\r\n height: 40,\r\n width: 40,\r\n borderRadius: 0,\r\n zIndex: 99\r\n },\r\n icon: {\r\n color: '#4C4A48',\r\n fontSize: 12\r\n },\r\n rootHovered: {\r\n backgroundColor: 'rgba(0,0,0,.1)'\r\n }\r\n }\r\n};\r\n","import React from 'react';\r\nimport {IconButton, Stack,Text,Icon,Label,ScrollablePane,Link} from \"@fluentui/react\";\r\nimport {NeutralColors,SharedColors} from \"@uifabric/fluent-theme\";\r\nimport {onShowOffQuyHoachInfoPanel} from \"../../Containers/QuyHoach\";\r\nimport {useSelector} from \"react-redux\";\r\nimport {mapGeoType} from \"../../Containers/QuyHoach\";\r\n\r\nconst PanelQuyHoachInfo = () =>\r\n{\r\n const {typeActive,selected} = useSelector(state=>state.quyHoach);\r\n // useEffect(()=>{\r\n // let elHeight = document.getElementById('panel-qh-info').clientHeight;\r\n // },[typeActive,selected])\r\n\r\n return (\r\n \r\n \r\n Thông tin quy hoạch\r\n \r\n \r\n \r\n \r\n \r\n \r\n {selected.geoType === mapGeoType.LINESTRING ?\r\n \r\n :\r\n selected.geoType === mapGeoType.POLYGON ?\r\n \r\n :\r\n \r\n }\r\n {selected.name}\r\n \r\n \r\n \r\n {typeActive.text}\r\n \r\n {typeActive.document ?\r\n \r\n \r\n {typeActive.document}\r\n \r\n : null\r\n }\r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default PanelQuyHoachInfo;\r\n\r\nconst styles = {\r\n container:{\r\n width:330,\r\n bottom:5,\r\n height:150,\r\n backgroundColor:NeutralColors.white,\r\n position:'absolute',\r\n zIndex:3000,\r\n left:5,\r\n boxShadow:'0 1px 4px rgba(0, 0, 0, 0.3)',\r\n },\r\n headerBar:{\r\n backgroundColor: SharedColors.cyanBlue10,\r\n paddingLeft:10\r\n },\r\n headerTitle:{\r\n flex:1,\r\n color:NeutralColors.white,\r\n\r\n },\r\n closeButton: {\r\n root: {\r\n color: NeutralColors.white,\r\n },\r\n rootHovered: {\r\n color: NeutralColors.white,\r\n backgroundColor: SharedColors.cyanBlue20\r\n },\r\n rootPressed: {\r\n color: SharedColors.cyanBlue10,\r\n backgroundColor: SharedColors.cyanBlue20\r\n }\r\n },\r\n typeTitle:{\r\n margin:10\r\n }\r\n}\r\n","import React from 'react';\r\nimport MapView from \"./MapView\";\r\nimport LopQuyHoach from '../QuyHoach/LopQuyHoach';\r\nimport LopHienTrang from \"../HienTrang/LopHienTrang\";\r\nimport Drawing from \"../Drawing\";\r\nimport setup from \"../../Containers/setup\";\r\nimport RightPanel from \"./RightPanel\";\r\nimport { useSelector } from \"react-redux\";\r\nimport PanelQuyHoachInfo from \"../QuyHoach/PanelQuyHoachInfo\";\r\n\r\nconst Container = () => {\r\n const { typeMapId } = useSelector(state => state.mapView)\r\n const userInfoEnter = useSelector(state => state.UserInfoEnter);\r\n return (\r\n
\r\n
\r\n {\r\n !userInfoEnter ?\r\n
\r\n :\r\n }\r\n containerElement={
}\r\n mapElement={
}\r\n zoomControl={false}\r\n defaultCenter={{ lat: userInfoEnter.latDefault, lng: userInfoEnter.lngDefault }}\r\n mapTypeId={typeMapId}\r\n >\r\n \r\n {\r\n (userInfoEnter) ? : null\r\n }\r\n \r\n \r\n }\r\n\r\n\r\n
\r\n \r\n \r\n
\r\n )\r\n}\r\n\r\nexport default Container;\r\n\r\nconst styles = {\r\n container: {\r\n position: 'fixed',\r\n top: 48,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n display: 'flex',\r\n flexDirection: 'row'\r\n },\r\n mapContainer: {\r\n flex: 1, backgroundColor: '#eee', display: 'flex', position: 'relative'\r\n },\r\n mapView: {\r\n top: 0, right: 0,\r\n bottom: 0,\r\n left: 0,\r\n position: \"absolute\"\r\n },\r\n};\r\n","import React from 'react';\r\nimport { IconButton, TooltipHost, DirectionalHint, Stack } from '@fluentui/react';\r\nimport { NeutralColors, SharedColors } from '@uifabric/fluent-theme/lib/fluent/FluentColors';\r\nimport { FontSizes } from \"@uifabric/fluent-theme\";\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport DrawingMode from \"./Mode\";\r\nimport Type from \"../../Redux/Type\";\r\n\r\nconst ControlBar = props => {\r\n const { showTool, drawingMode, evtPath } = useSelector(state => state.drawingTool);\r\n const dispatch = useDispatch();\r\n const onStopPress = () => dispatch({ type: Type.STOP_DRAWING })\r\n const onStartPress = () => dispatch({ type: Type.START_DRAWING })\r\n const onClearPress = () => dispatch({ type: Type.CLEAR_PATH_DRAWING });\r\n\r\n const onDonePress = () => {\r\n dispatch({ type: Type.SET_SHOW_MAIN_MODAL })\r\n }\r\n\r\n return (\r\n showTool ?\r\n \r\n \r\n \r\n \r\n \r\n \r\n : null\r\n )\r\n}\r\n\r\nexport default ControlBar;\r\n\r\nconst ActionButton = ({ iconName, tooltip, active, onClick, disabled }) => {\r\n return (\r\n \r\n \r\n \r\n )\r\n};\r\n\r\nconst styles = {\r\n container: {\r\n root: {\r\n position: 'absolute',\r\n top: 56,\r\n left: 10,\r\n boxShadow: '0 2px 4px rgba(0,0,0,0.2), 0 -1px 0px rgba(0,0,0,0.02)',\r\n borderRadius: 2,\r\n overflow: 'hidden'\r\n }\r\n },\r\n iconButton: (active) => ({\r\n root: {\r\n height: 30,\r\n width: 30,\r\n backgroundColor: active ? SharedColors.cyanBlue10 : NeutralColors.white,\r\n borderRadius: 0\r\n },\r\n rootHovered: {\r\n backgroundColor: active ? SharedColors.cyanBlue10 : NeutralColors.gray30\r\n },\r\n rootPressed: {\r\n backgroundColor: active ? SharedColors.cyanBlue20 : NeutralColors.gray40\r\n },\r\n icon: {\r\n color: active ? NeutralColors.white : NeutralColors.black,\r\n fontSize: FontSizes.size14,\r\n },\r\n iconHovered: {\r\n color: active ? NeutralColors.white : NeutralColors.black,\r\n },\r\n iconPressed: {\r\n opacity: .6\r\n }\r\n }),\r\n}\r\n","import React, { useState, useEffect } from \"react\";\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport {\r\n IconButton,\r\n FontWeights,\r\n FontSizes,\r\n Stack,\r\n Text,\r\n DetailsList,\r\n DetailsListLayoutMode,\r\n ScrollablePane,\r\n SelectionMode,\r\n Sticky,\r\n Toggle\r\n} from '@fluentui/react';\r\nimport { NeutralColors, SharedColors } from '@uifabric/fluent-theme/lib/fluent/FluentColors';\r\nimport Type from \"../../Redux/Type\";\r\nimport { convertLatLonToXY } from \"../../Containers/Converter\";\r\nimport { Error, Loading } from \"../Accessary\";\r\nimport { onLoadStatistical } from \"../../Containers/QuyHoach\";\r\n\r\nconst Statistical = props => {\r\n const [isMount, setMount] = useState(false);\r\n const [errorMessage, setErrorMessage] = useState('');\r\n const [totalField, setTotalField] = useState(0);\r\n const [totalArea, setTotalArea] = useState(0);\r\n const [totalMdsd, setTotalMdsd] = useState([]);\r\n const [detail, setDetail] = useState([]);\r\n const [isLoading, setLoading] = useState(false);\r\n const [detailMode, setDetailMode] = useState(true);\r\n const { evtPath } = useSelector(state => state.drawingTool);\r\n const dispatch = useDispatch();\r\n const userInfoEnter = useSelector(state => state.UserInfoEnter);\r\n\r\n useEffect(() => {\r\n\r\n if (!isMount && userInfoEnter) {\r\n const onLoadInMount = () => {\r\n setMount(false);\r\n setLoading(false);\r\n let paths = evtPath.getPath().getArray(),\r\n coords = paths.map((a) => (convertLatLonToXY({ latitude: a.lat(), longitude: a.lng() }, userInfoEnter.ktt)));\r\n coords = [...coords, coords[0]]\r\n coords = coords.map(e => `${e.y} ${e.x}`)\r\n let polygonStr = coords.join(','),\r\n payload = {\r\n Polygon: `POLYGON ((${polygonStr}))`\r\n };\r\n onLoadStatistical(payload, onLoadSuccess, userInfoEnter.APILink);\r\n }\r\n onLoadInMount()\r\n }\r\n }, [isMount, isLoading, evtPath])\r\n\r\n const onLoadSuccess = ({ statusCode, response }) => {\r\n setLoading(false);\r\n if (statusCode === 200) {\r\n setTotalArea(response.areaTotal)\r\n setTotalField(response.fieldTotal)\r\n setTotalMdsd(response.mdsdTotal)\r\n setDetail(response.detail)\r\n }\r\n else\r\n setErrorMessage(response)\r\n }\r\n\r\n const onClose = () => dispatch({ type: Type.SET_SHOW_MAIN_MODAL });\r\n\r\n const _renderHeaderColumn = (detailsHeaderProps, defaultRender) => {\r\n return (\r\n \r\n {defaultRender(detailsHeaderProps)}\r\n \r\n )\r\n };\r\n\r\n const onModeChange = () => setDetailMode(!detailMode)\r\n\r\n return (\r\n \r\n \r\n Thống kê khảo sát\r\n \r\n \r\n {isLoading ?\r\n \r\n :\r\n errorMessage ?\r\n \r\n :\r\n \r\n \r\n \r\n Tổng diện tích khảo sát\r\n {totalArea} m2\r\n \r\n \r\n Tổng thửa đất ảnh hưởng\r\n {totalField}\r\n \r\n \r\n Thống kê theo thửa\r\n \r\n \r\n \r\n Thống kê theo MDSD\r\n \r\n \r\n \r\n \r\n \r\n {detailMode ?\r\n \r\n :\r\n \r\n }\r\n \r\n \r\n \r\n }\r\n \r\n\r\n )\r\n}\r\n\r\nexport default Statistical;\r\n\r\nconst column = [\r\n { key: '1', name: 'Stt', fieldName: 'key', maxWidth: 30, minWidth: 30 },\r\n { key: '4', name: 'Xã/Phường', fieldName: 'XA' },\r\n { key: '2', name: 'Số tờ', fieldName: 'SOTO', maxWidth: 80, minWidth: 80 },\r\n { key: '3', name: 'Số thửa', fieldName: 'SOTHUA', maxWidth: 80, minWidth: 80 },\r\n { key: '5', name: 'Loại đất', fieldName: 'MDSD', maxWidth: 80, minWidth: 80 },\r\n { key: '8', name: 'D.Tích KS', fieldName: 'DTKhaoSat', maxWidth: 100, minWidth: 100 },\r\n { key: '9', name: 'Tỷ lệ', fieldName: 'tile', maxWidth: 80, minWidth: 80 },\r\n]\r\n\r\nconst columnMDSD = [\r\n { key: '1', name: 'Stt', fieldName: 'key', maxWidth: 30, minWidth: 30 },\r\n { key: '4', name: 'Ký hiệu', fieldName: 'label', maxWidth: 120, minWidth: 120 },\r\n { key: '2', name: 'Tên MDSD', fieldName: 'name' },\r\n { key: '8', name: 'Diện tích khảo sát', fieldName: 'area', maxWidth: 200, minWidth: 200 },\r\n]\r\n\r\nconst styles = {\r\n container: {\r\n root: {\r\n width: 800,\r\n height: '90vh',\r\n overflow: 'hidden'\r\n }\r\n },\r\n headerView: {\r\n paddingLeft: 16, paddingRight: 16,\r\n paddingTop: 4,\r\n paddingBottom: 8,\r\n backgroundColor: SharedColors.greenCyan10,\r\n marginBottom: 16\r\n },\r\n headerTitle: {\r\n root: {\r\n fontSize: FontSizes.mediumPlus,\r\n color: NeutralColors.white,\r\n fontWeight: FontWeights.bold\r\n }\r\n },\r\n closeButton: {\r\n root: {\r\n color: NeutralColors.white,\r\n marginLeft: 'auto',\r\n marginTop: '4px',\r\n marginRight: '2px',\r\n },\r\n rootHovered: {\r\n color: NeutralColors.white,\r\n backgroundColor: SharedColors.green20\r\n },\r\n rootPressed: {\r\n color: SharedColors.greenCyan10,\r\n backgroundColor: SharedColors.green20\r\n }\r\n },\r\n generalView: {\r\n marginLeft: 16,\r\n marginRight: 16,\r\n borderBottom: '1px solid #eee',\r\n paddingBottom: 20\r\n },\r\n generalTitle: {\r\n root: {\r\n fontSize: FontSizes.smallPlus,\r\n fontWeight: FontWeights.semibold,\r\n color: SharedColors.cyanBlue10\r\n }\r\n },\r\n generalContent: {\r\n root: {\r\n fontSize: FontSizes.medium,\r\n }\r\n }\r\n\r\n}\r\n","const KinhTuyenTruc = [\n {\n key: 12,\n text: 'Lai Châu',\n ktt: 103.00\n },\n {\n key: 11,\n text: 'Điện Biên',\n ktt: 103.00\n },\n {\n key: 14,\n text: 'Sơn La',\n ktt: 104.00\n },\n {\n key: 10,\n text: 'Lào Cai',\n ktt: 104.75\n },\n {\n key: 15,\n text: 'Yên Bái',\n ktt: 104.75\n },\n {\n key: 2,\n text: 'Hà Giang',\n ktt: 105.50\n },\n {\n key: 8,\n text: 'Tuyên Quang',\n ktt: 106.00\n },\n {\n key: 25,\n text: 'Phú Thọ',\n ktt: 104.75\n },\n {\n key: 26,\n text: 'Vĩnh Phúc',\n ktt: 105.00\n },\n {\n key: 4,\n text: 'Cao Bằng',\n ktt: 105.75\n },\n {\n key: 20,\n text: 'Lạng Sơn',\n ktt: 107.25\n },\n {\n key: 6,\n text: 'Bắc Kạn',\n ktt: 106.50\n },\n {\n key: 19,\n text: 'Thái Nguyên',\n ktt: 106.50\n },\n {\n key: 24,\n text: 'Bắc Giang',\n ktt: 107\n },\n {\n key: 27,\n text: 'Bắc Ninh',\n ktt: 105.50\n },\n {\n key: 22,\n text: 'Quảng Ninh',\n ktt: 107.75\n },\n {\n key: 31,\n text: 'TP. Hải Phòng',\n ktt: 105.75\n },\n {\n key: 30,\n text: 'Hải Dương',\n ktt: 105.50\n },\n {\n key: 33,\n text: 'Hưng Yên',\n ktt: 105.50\n },\n {\n key: 1,\n text: 'TP. Hà Nội',\n ktt: 105.00\n },\n {\n key: 17,\n text: 'Hoà Bình',\n ktt: 106.00\n },\n {\n key: 35,\n text: 'Hà Nam',\n ktt: 105.00\n },\n {\n key: 36,\n text: 'Nam Định',\n ktt: 105.50\n },\n {\n key: 34,\n text: 'Thái Bình',\n ktt: 105.50\n },\n {\n key: 37,\n text: 'Ninh Bình',\n ktt: 105.00\n },\n {\n key: 38,\n text: 'Thanh Hoá',\n ktt: 105.00\n },\n {\n key: 40,\n text: 'Nghệ An',\n ktt: 104.75\n },\n {\n key: 42,\n text: 'Hà Tĩnh',\n ktt: 105.50\n },\n {\n key: 44,\n text: 'Quảng Bình',\n ktt: 106.00\n },\n {\n key: 45,\n text: 'Quảng Trị',\n ktt: 106.25\n },\n {\n key: 46,\n text: 'Thừa Thiên Huế',\n ktt: 107.00\n },\n {\n key: 48,\n text: 'TP. Đà Nẵng',\n ktt: 107.75\n },\n {\n key: 49,\n text: 'Quảng Nam',\n ktt: 107.75\n },\n {\n key: 51,\n text: 'Quảng Ngãi',\n ktt: 108.00\n },\n {\n key: 52,\n text: 'Bình Định',\n ktt: 108.25\n },\n {\n key: 62,\n text: 'Kon Tum',\n ktt: 107.50\n },\n {\n key: 64,\n text: 'Gia Lai',\n ktt: 108.50\n },\n {\n key: 66,\n text: 'Đắk Lắk',\n ktt: 108.50\n },\n {\n key: 67,\n text: 'Đắk Nông',\n ktt: 108.50\n },\n {\n key: 54,\n text: 'Phú Yên',\n ktt: 108.50\n },\n {\n key: 56,\n text: 'Khánh Hoà',\n ktt: 108.25\n },\n {\n key: 58,\n text: 'Ninh Thuận',\n ktt: 108.25\n },\n {\n key: 60,\n text: 'Bình Thuận',\n ktt: 108.50\n },\n {\n key: 68,\n text: 'Lâm Đồng',\n ktt: 107.75\n },\n {\n key: 74,\n text: 'Bình Dương',\n ktt: 105.75\n },\n {\n key: 70,\n text: 'Bình Phước',\n ktt: 106.25\n },\n {\n key: 75,\n text: 'Đồng Nai',\n ktt: 107.75\n },\n {\n key: 77,\n text: 'Bà Rịa Vũng Tàu',\n ktt: 107.75\n },\n {\n key: 72,\n text: 'Tây Ninh',\n ktt: 105.50,\n },\n {\n key: 80,\n text: 'Long An',\n ktt: 105.75\n },\n {\n key: 82,\n text: 'Tiền Giang',\n ktt: 105.75\n },\n {\n key: 83,\n text: 'Bến Tre',\n ktt: 105.75\n },\n {\n key: 87,\n text: 'Đồng Tháp',\n ktt: 105.00\n },\n {\n key: 86,\n text: 'Vĩnh Long',\n ktt: 105.50\n },\n {\n key: 84,\n text: 'Trà Vinh',\n ktt: 105.50\n },\n {\n key: 89,\n text: 'An Giang',\n ktt: 104.75\n },\n {\n key: 91,\n text: 'Kiên Giang',\n ktt: 104.50\n },\n {\n key: 92,\n text: 'TP. Cần Thơ',\n ktt: 105.00\n },\n {\n key: 93,\n text: 'Hậu Giang',\n ktt: 105.00\n },\n {\n key: 94,\n text: 'Sóc Trăng',\n ktt: 105.50\n },\n {\n key: 95,\n text: 'Bạc Liêu',\n ktt: 105.00\n },\n {\n key: 96,\n text: 'Cà Mau',\n ktt: 104.50\n },\n {\n key: 79,\n text: 'TP. Hồ Chí Minh',\n ktt: 105.75\n },\n]\nexport { KinhTuyenTruc }","const LocationDefault = [\n {\n key: 72,\n text: 'Tây Ninh',\n maHuyen: '706',\n maXa: '25489',\n dXS: 0.00101036464,\n dYS: -0.00179737020\n },\n {\n key: 22,\n text: 'Quảng Ninh',\n maHuyen: '196',\n maXa: '06835',\n dXS: 0.00099314713,\n dYS: -0.0018854168\n },\n {\n key: 12,\n text: 'Lai Châu',\n maHuyen: '105',\n maXa: '03386'\n },\n {\n key: 93,\n text: 'Lai Châu',\n maHuyen: '930',\n maXa: '31327',\n dXS: 0.00101036464,\n dYS: -0.00178737020\n },\n {\n key: 58,\n text: 'Ninh Thuận',\n maHuyen: '584',\n maXa: '22801',\n dXS: 0.00101036464,\n dYS: -0.00178137015\n },\n]\nexport { LocationDefault }","const DSAPIQuyHoach = [\n {\n key: 72,\n text: 'Tây Ninh',\n APILink: 'https://ilis-gateway.vnpt.vn/datdaiquocgia-api/api/'\n //APILink: 'http://ilis.tayninh.gov.vn/apiv3/api/'\n },\n {\n key: 22,\n text: 'Quảng Ninh',\n APILink: 'https://ilis-gateway.vnpt.vn/datdaiquocgia-api/api/'\n //APILink: 'https://datdaiquangninhapi.vnpt.vn/api/'\n },\n {\n key: 12,\n text: 'Lai Châu',\n APILink: 'https://ilis-gateway.vnpt.vn/datdaiquocgia-api/api/'\n //APILink: 'https://datdaiquangninhapi.vnpt.vn/api/'\n },\n {\n key: 93,\n text: 'Hậu Giang',\n APILink: 'https://ilis-gateway.vnpt.vn/datdaiquocgia-api/api/'\n //APILink: 'https://datdaiquangninhapi.vnpt.vn/api/'\n },\n]\nexport { DSAPIQuyHoach }","import LinkAPI, { onRequestEnterPrise, onGetRequestEnterPriseBody, onGetRequestEnterPriseBodyProvince } from './MainController';\r\nimport { getListHuyenEnter, getListXaEnter } from './Search'\r\nimport URL from './MainController';\r\nimport { store } from '../Redux/Store';\r\nimport Type from \"../Redux/Type\";\r\nimport { KinhTuyenTruc } from \"./KinhTuyenTruc\";\r\nimport { LocationDefault } from \"./LocationDefault\";\r\nimport { DSAPIQuyHoach } from \"./APIQuyHoachTinh\";\r\nimport setup from \"./setup\";\r\n\r\nexport function onAuthenticationEnterPrise(payload, temp, onSuccess) {\r\n let onProcessLogin = ({ statusCode, response }) => {\r\n if (statusCode === 200 && response.access_token) {\r\n localStorage.setItem(URL.tokenEnterPrise, response.access_token)\r\n onInfoByToken(response.access_token, onSuccess);\r\n } else {\r\n const err = {\r\n statusCode: 400,\r\n response: 'Sai thông tin đăng nhập hoặc mật khẩu'\r\n }\r\n onSuccess(err);\r\n }\r\n };\r\n onRequestEnterPrise(LinkAPI.loginEnterPrise, onProcessLogin, payload, '');\r\n}\r\n\r\nexport function onInfoByToken(token, onSuccess) {\r\n let payload = new URLSearchParams();\r\n payload.append('access_token', token);\r\n\r\n let onProcessLogin = ({ statusCode, response }) => {\r\n if (statusCode === 200) {\r\n const userInfo = {\r\n Expired: null,\r\n FullName: response.name,\r\n Organization: null,\r\n Password: null,\r\n PhoneNumber: response.phone_number,\r\n Username: null,\r\n }\r\n store.dispatch({ type: Type.SET_TOKEN_ENTER, token: token });\r\n onGetProvince(token, userInfo, onSuccess)\r\n } else {\r\n localStorage.removeItem(URL.tokenEnterPrise);\r\n const err = {\r\n statusCode: 400,\r\n response: 'Đã có lỗi xã ra vui lòng thử lại sau'\r\n }\r\n onSuccess(err);\r\n }\r\n };\r\n onRequestEnterPrise(LinkAPI.getInfo, onProcessLogin, payload);\r\n}\r\n\r\nexport function onGetProvince(token, userInfo, onSuccess) {\r\n //Thaydoi\r\n let onGetProvince = ({ statusCode, response }) => {\r\n if (statusCode === 200) {\r\n console.log('dsAPI: ', response)\r\n const apiLink = DSAPIQuyHoach ? DSAPIQuyHoach.filter(e => (e.key == response[0].matinh)) : null;\r\n userInfo = {\r\n ...userInfo,\r\n iddvhc: response[0].iddvhc,\r\n tendvhc: response[0].tendvhc,\r\n matinh: response[0].matinh,\r\n ktt: KinhTuyenTruc ? KinhTuyenTruc.filter(e => (e.key == response[0].matinh))[0].ktt : 0,\r\n // APILink: apiLink.length ? apiLink[0].APILink : ''\r\n // APILink: 'https://datdaiquangninhapi.vnpt.vn/api/'\r\n APILink: 'https://ilis-gateway.vnpt.vn/datdaiquocgia-api/api/'\r\n }\r\n console.log('onGetProvinceonGetProvince: ', userInfo)\r\n onGetDVHCHuyenXa(response[0].iddvhc, userInfo, onSuccess)\r\n } else {\r\n localStorage.removeItem(URL.tokenEnterPrise);\r\n const err = {\r\n statusCode: 403,\r\n response: 'Đã có lỗi xã ra vui lòng thử lại sau'\r\n }\r\n onSuccess(err);\r\n }\r\n };\r\n onGetRequestEnterPriseBodyProvince(LinkAPI.getProvice, onGetProvince, token);\r\n}\r\n\r\nexport function onGetDVHCHuyenXa(iddvhc, userInfo, onSuccess) {\r\n\r\n let onSuccessHuyen = (statusCode, response) => {\r\n if (statusCode === 200 && response.length) {\r\n console.log('vaooo onGetDVHCHuyenXa: ', response)\r\n store.dispatch({ type: Type.SET_SEARCH, route: 'listDistrictEnter', value: response })\r\n\r\n const arrXa = [],\r\n lengthArr = response.length,\r\n arrHuyen = response;\r\n let tempt = 0;\r\n\r\n response.map(async (e) => {\r\n arrXa.push({\r\n key: e.mahuyen,\r\n mahuyen: e.mahuyen + 'TK',\r\n text: 'Toàn Huyện/TX/TP',\r\n latitude: null,\r\n longitude: null,\r\n iddvhc: e.iddvhc\r\n })\r\n let onSuccessLoadXa = (statusCode, response) => {\r\n tempt = tempt + 1;\r\n if (statusCode === 200) {\r\n response = response.map((e, index) => {\r\n let onProcessToaDo = (statusCodeToaDo) => {\r\n if (statusCodeToaDo.statusCode === 200) {\r\n if (statusCodeToaDo.response && statusCodeToaDo.response.includes('(') && statusCodeToaDo.response.includes(')')) {\r\n let arrTempt = statusCodeToaDo.response.split('(');\r\n arrTempt = arrTempt[1].split(')');\r\n arrTempt = arrTempt[0].split(' ');\r\n\r\n arrXa.push({\r\n ...e,\r\n key: e.key,\r\n mahuyen: e.mahuyen ? parseInt(e.mahuyen) : e.mahuyen,\r\n text: e.tendvhc,\r\n latitude: parseFloat(arrTempt[1]),\r\n longitude: parseFloat(arrTempt[0]),\r\n })\r\n if (tempt == lengthArr) {\r\n store.dispatch({ type: Type.SET_SEARCH, route: 'listWardEnter', value: arrXa });\r\n\r\n const locationDefault = LocationDefault.filter(e => (e.key == userInfo.matinh))[0];\r\n let xaDefault = null, maHuyenTempt = null;\r\n if (locationDefault && arrXa) {\r\n xaDefault = arrXa ? (arrXa.filter(e => (e.maxa == locationDefault.maXa)) ? arrXa.filter(e => (e.maxa == locationDefault.maXa))[0] : 0) : 0;\r\n maHuyenTempt = locationDefault.maHuyen;\r\n userInfo = {\r\n ...userInfo,\r\n maHuyenDefault: maHuyenTempt ? parseInt(maHuyenTempt) : 0,\r\n maXaDefault: locationDefault.maXa,\r\n latDefault: xaDefault.latitude,\r\n lngDefault: xaDefault.longitude,\r\n dXS: locationDefault.dXS ? locationDefault.dXS : setup.dXSDefult,\r\n dYS: locationDefault.dYS ? locationDefault.dYS : setup.dYSDefult\r\n }\r\n } else {\r\n maHuyenTempt = arrHuyen ? parseInt(arrHuyen[0].mahuyen) : 0;\r\n xaDefault = arrXa ? (arrXa.filter(e => (e.mahuyen == maHuyenTempt)) ? arrXa.filter(e => (e.mahuyen == maHuyenTempt))[0] : 0) : 0;\r\n userInfo = {\r\n ...userInfo,\r\n maHuyenDefault: maHuyenTempt,\r\n maXaDefault: xaDefault.maxa,\r\n latDefault: xaDefault.latitude,\r\n lngDefault: xaDefault.longitude,\r\n dXS: setup.dXSDefult,\r\n dYS: setup.dYSDefult\r\n }\r\n }\r\n store.dispatch({ type: Type.SET_SEARCH, route: 'districtSelectedLocation', value: { key: parseInt(maHuyenTempt) } });\r\n store.dispatch({ type: Type.SET_SEARCH, route: 'districtSelectedLocationXa', value: xaDefault.maxa });\r\n store.dispatch({ type: Type.SET_SEARCH, route: 'districtSelectedEnter', value: { key: parseInt(maHuyenTempt) } });\r\n store.dispatch({ type: Type.SET_SEARCH, route: 'wardSelectedEnter', value: xaDefault });\r\n store.dispatch({ type: Type.SET_USER_INFO_ENTER, userInfo });\r\n onSuccess(statusCode, response);\r\n }\r\n\r\n }\r\n }\r\n };\r\n onGetRequestEnterPriseBody(LinkAPI.getToaDo(e.maxa), onProcessToaDo);\r\n });\r\n }\r\n else {\r\n const err = {\r\n statusCode: 405,\r\n response: 'Đã có lỗi xã ra vui lòng thử lại sau'\r\n }\r\n onSuccess(err);\r\n }\r\n };\r\n getListXaEnter(e.iddvhc, onSuccessLoadXa);\r\n\r\n });\r\n }\r\n else {\r\n localStorage.removeItem(URL.tokenEnterPrise);\r\n const err = {\r\n statusCode: 403,\r\n response: 'Đã có lỗi xã ra vui lòng thử lại sau'\r\n }\r\n onSuccess(err);\r\n }\r\n };\r\n getListHuyenEnter(onSuccessHuyen, iddvhc);\r\n}\r\n","import React from 'react';\nimport { Text, Stack, Image, ImageFit, PrimaryButton, Spinner, Checkbox } from '@fluentui/react';\nimport { onAuthenticationEnterPrise } from '../../Containers/LoginEnter';\nimport { onCloseRightPanel } from \"../../Containers/RightPanelAction\";\nimport LinkAPI, { onRequestEnterPrise } from '../../Containers/MainController';\nimport { ModalView } from \"../ModalView\";\nimport BgTrongDongNew from '../../Assets/BgTrongDongNew.png'\nimport COLOR from \"../../Styles/Colors\";\nimport URL from \"../../Containers/MainController\";\n\nclass LoginEnterPrise extends React.PureComponent {\n\n state = {\n contentDialog: '',\n rememberLogin: true,\n usernameEnter: '',\n passwordEnter: '',\n lastPasswordEnter: '',\n confirmPasswordEnter: '',\n isLogin: this.props.route === 'login',\n isChangePasswordSuccess: false,\n isLoading: false,\n errorMessage: '',\n closeAndBack: false,\n mailXacThuc: '',\n isOpen: false,\n isEye: false\n };\n\n onCallLoginAPI = () => {\n let { usernameEnter, passwordEnter } = this.state;\n usernameEnter = usernameEnter.trim();\n let payload = new URLSearchParams();\n payload.append('username', usernameEnter);\n payload.append('password', passwordEnter);\n payload.append('grant_type', 'password');\n payload.append('client_id', 'vilis-mobile-client');\n payload.append('client_secret', `n\\)3b\\^Q7g]Jd6T\\&\\$\\^`);\n\n\n let onSuccess = ({ statusCode, response }) => {\n if (statusCode === 200) {\n } else {\n this.setState({ errorMessage: response, isOpen: true, isLoading: false })\n }\n };\n onAuthenticationEnterPrise(payload, { username: usernameEnter, password: passwordEnter }, onSuccess);\n };\n\n onForgetPassWord = () => {\n this.setState({ isLoading: true });\n let { mailXacThuc } = this.state;\n mailXacThuc = mailXacThuc.trim();\n let payload = new URLSearchParams();\n payload.append('email', mailXacThuc);\n\n this.setState({ isLoading: true });\n let onSuccess = ({ statusCode, response }) => {\n this.setState({ isLoading: false })\n if (statusCode === 200) {\n this.setState({ isOpen: true, mailXacThuc: '' })\n } else {\n this.setState({ errorMessage: 'Đã có lỗi xảy ra vui lòng thử lại sau.', isOpen: true })\n }\n };\n onRequestEnterPrise(LinkAPI.ForgetPassWordEnter, onSuccess, payload, '');\n };\n\n onOpenDialog = (route) => () => {\n let content;\n switch (route) {\n case \"noAccount\": {\n content = 'Thật xin lỗi vì sự bất tiện này, hiện tại do tính bảo mật của dữ liệu, hệ thống chỉ có thể cung cấp tài khoản cho cá nhân, tổ chức liên quan.';\n break;\n }\n case 'forgotPassword': {\n content = 'Để lấy lại mật khẩu, xin vui lòng liên hệ với quản trị viên.';\n break;\n }\n default:\n break\n }\n this.setState({ contentDialog: content });\n };\n\n onCloseDialog = () => {\n if (this.state.closeAndBack)\n onCloseRightPanel();\n else\n this.setState({ contentDialog: '' })\n };\n\n onChangeUsername = (usernameEnter) => { this.setState({ usernameEnter }) };\n onChangePassword = (passwordEnter) => this.setState({ passwordEnter });\n onChangeEmail = (_, mailXacThuc) => this.setState({ mailXacThuc });\n onChangeLastPassword = (_, passwordEnter) => this.setState({ lastPasswordEnter: passwordEnter });\n onChangeConfirmPassword = (_, passwordEnter) => this.setState({ confirmPasswordEnter: passwordEnter });\n\n onLoginPress = () => {\n let { usernameEnter, passwordEnter, isLogin, confirmPasswordEnter, lastPasswordEnter } = this.state;\n usernameEnter = usernameEnter ? usernameEnter.trim() : '';\n this.setState({ isLoading: true });\n if (usernameEnter && passwordEnter) {\n this.onCallLoginAPI();\n } else {\n this.setState({ errorMessage: 'Vui lòng nhập đầy đủ thông tin', isOpen: true, isLoading: false })\n }\n };\n\n handleEnterPress = (ent) => {\n if (ent.key === 'Enter')\n this.onLoginPress()\n };\n\n\n render() {\n let { isLoading } = this.state;\n return (\n \n { this.setState({ isOpen: false }) }}\n title={'Thông báo'}\n mess={this.state.errorMessage}\n />\n\n \n\n \n \n CỔNG THÔNG TIN VNPT ILIS\n \n \n \n \n { this.onChangeUsername(event.target.value) }}\n value={this.state.usernameEnter}\n type=\"text\"\n style={styles.inputTDN} />\n \n \n\n \n \n \n { this.onChangePassword(event.target.value) }}\n onKeyDown={this.handleEnterPress}\n disabled={isLoading}\n style={styles.inputTDN} />\n \n { this.setState({ isEye: !this.state.isEye }) }} >\n \n \n \n\n \n \n\n \n \n