{"version":3,"sources":["AppConfig.js","Constants/Images.js","Components/InputLogin.js","Components/LabelRound.js","Components/ButtonRound.js","https/SecureKey.js","https/Storage.js","https/RefreshToken.js","https/HTTPUtils.js","https/HTTP.js","Redux/LoadingReducer.js","Components/LoginForm.js","Pages/Login/index.js","Components/NavbarPageLabel.js","Components/NavBar2.js","Pages/Home/Components/TableHome.js","Components/SearchBar.js","Pages/Home/index.js","Routes/GeneralRoutes.js","Components/CrossLine.js","Components/ButtonSave.js","Pages/Project/Info/Components/InputRowProjectInfo.js","Pages/Project/Info/Components/DragImage.js","Components/ButtonCancel.js","Components/Map.js","Pages/Project/Info/Components/ProjectInfoForm.js","Components/VerticalLine.js","Components/HomeButton.js","Components/ButtonMenuLeftSide.js","Components/MenuStepRow.js","Components/MenuStep.js","Components/MenuStepOnlyInfo.js","Pages/Project/Info/index.js","Helpers/DownloadHelper.js","Pages/Project/Material/index.js","Constants/ColumnFormat.js","Pages/Project/PR4/Components/ButtonUpload.js","Pages/Project/PR4/Components/TableDocument.js","Pages/Project/PR4/Components/UploadDocument.js","Pages/Project/PR4/Components/ModalItem.js","Pages/Project/PR4/Components/ModalNewItem.js","Pages/Project/PR4/Components/TablePR4.js","Pages/Project/PR4/Components/ButtonSubCategory.js","Pages/Project/PR4/Components/ButtonWorkGroup.js","Pages/Project/PR4/Components/CheckBoxSubWorkGroup.js","Pages/Project/PR4/index.js","Constants/SubWorkGroupId.js","Pages/Project/PR5/Components/TablePR5.js","Pages/Project/PR5/index.js","Constants/Type.js","Pages/Project/PR6/Components/TablePR6.js","Pages/Project/PR6/index.js","Pages/Project/Category/index.js","Pages/Project/Picture/index.js","Pages/Project/Location/Components/ProjectAddressForm.js","Pages/Project/Location/index.js","Pages/Project/Info/Components/InputRowProjectInfoBK.js","Pages/Project/Info/Components/VerticalLineProjectInfo.js","Pages/Project/Info/Components/ProjectInfoFormBK.js","Pages/Project/Info/indexBk.js","Pages/Project/ConceteCost/Components/InputForm.js","Pages/Project/ConceteCost/Components/FormConceteCost.js","Pages/Project/ConceteCost/index.js","Pages/Project/PR4/indexSpecial.js","Pages/Project/SummaryPR4/Components/TableSummaryPR4.js","Pages/Project/SummaryPR4/index.js","Routes/ProjectRoutes.js","Pages/User/Components/InputRow.js","Pages/User/Components/UserInfoForm.js","Pages/User/Info.js","Pages/User/Register.js","Routes/UserRoutes.js","App.js","reportWebVitals.js","Redux/counterSlice.js","Redux/UserReducer.js","Redux/store.js","index.js"],"names":["targetEnvironment","serverUrl","local","beta","production","appPath","AppConfig","appVersion","apiUrl","imageUrl","storeKeyPrefix","gpsWebPath","Background","BackgroundLogin","LogoMain","LogoLogin","Building","WaterSystem","Dam","DevelopCity","HomeIcon","InputLogin","label","type","keyInput","style","background","width","height","borderRadius","padding","borderStyle","borderColor","borderWidth","xs","xl","className","backgroundColor","display","justifyContent","alignItems","fontWeight","fontSize","color","Item","name","bordered","LabelRound","fontColor","ButtonRound","href","onClick","labelPaddingTop","htmlType","paddingTop","Storage","prefix","get","key","localStorage","getItem","ex","console","log","set","value","setItem","clear","removeItem","clearAll","RefreshToken","a","controller","AbortController","signal","requestHeaders","Headers","refreshToken","SecureKey","append","fetch","method","headers","response","HTTPUtils","isSuccess","json","data","accessToken","toast","warn","setTimeout","window","location","replace","getHttpHeader","handleAPIResponse","baseFunction","request","abortSignal","isUnauthorized","service","urlParams","body","status","isError","isBadRequest","isInternalServerError","isInvalidVersion","invalidVersion","buildQueryString","paramString","hasOwnProperty","slice","HTTP","abort","execute","retryCount","startTime","Date","queryString","url","toUpperCase","JSON","stringify","responsedTime","LoadingReducer","createSlice","initialState","isLoading","reducers","showLoading","state","action","payload","actions","LoginForm","router","Form","useForm","form","dispatch","useDispatch","onFinish","submitData","Login","http","sessionStorage","id","error","justify","marginBottom","src","preview","span","align","alignContent","paddingLeft","componentDidMount","backgroundImage","opacity","this","props","history","Component","NavbarPageLabel","labelThai","labelEnglish","NavBar2","bgColor","zIndex","marginTop","marginLeft","NavDropdown","title","TableHome","useEffect","pagination","defaultPageSize","showSizeChanger","pageSizeOptions","columns","dataIndex","dataSource","scroll","x","onRow","record","rowIndex","event","SearchBar","Home","Tabs","TabPane","useState","projectListInProgress","setProjectListInProgress","getProjectList","statusId","typeId","projectInProgress","searchParam","Content","GeneralRoutes","exact","path","component","CrossLine","circleColor","isRemoveHorizontalLine","position","horizontalLine","ButtonSave","InputRowProjectInfo","InputComponent","isRequire","messageRequire","isDisplaySetLocationButton","onClickSetLocationButton","textAlign","paddingRight","md","rules","required","message","Dragger","Upload","DragImage","propsDragger","multiple","onChange","info","file","fileList","onDrop","e","dataTransfer","files","CameraOutlined","ButtonCancel","Map","compose","withProps","googleMapURL","loadingElement","containerElement","mapElement","withScriptjs","withGoogleMap","defaultZoom","center","latLong","lat","lng","long","radius","Option","Select","ProjectInfoForm","provinces","setProvinces","trucks","setTrucks","types","setTypes","isDisableTypeInput","setIsDisableTypeInput","isShowModalSetLocation","setIsShowModalSetLocation","setlatLong","setRadius","getMasterData","getProject","projectId","provinceResponses","truckResponses","typeResponse","map","p","t","project","responseToProjectFormData","setFieldsValue","latitude","longitude","owner","address","department","constructionNumber","date","moment","dueDate","diselB7","gasohol91","advanceMoney","interest","vat","insurance","truckId1","parseInt","truckId2","provinceId","provinceNearById1","provinceNearById2","createProject","success","updateProject","duplicateProject","onClickSaveButton","validateFields","then","values","isNaN","userId","createRequest","updateRequest","catch","errorInfo","onClickDuplicateButton","oldId","hidden","placeholder","allowClear","showSearch","options","filterOption","input","option","indexOf","toLowerCase","disabled","size","format","formatter","parser","suffix","onConfirm","okText","cancelText","visible","onCancel","footer","defaultValue","newWindow","open","opener","ev","latLng","VerticalLine","HomeButton","ButtonMenuLeftSide","buttonProp","MenuStepRow","buttonStyle","MenuStep","selectedIndex","buttonProps","setButtonprops","buttonInActive","buttonActive","rowHeigth","paddingLeftLine","changeActiveButton","buttonNewProps","index","Info","match","params","MenuStepOnlyInfo","DownloadHelper","downloadBlob","blob","filename","URL","createObjectURL","document","createElement","download","appendChild","click","removeChild","revokeObjectURL","Material","onClickDownloadButton","downloadAPI","columnBuilding","children","columnDam","columnSpecial","columnPR5Dam","columnPR6Dam","columnPR5Building","columnPR6Building","ButtonUpload","TableDocument","dataTable","onDeleteRow","column","render","text","onDownload","CloudDownloadOutlined","DeleteOutlined","projectItemId","projectSpecialItemId","UploadDocument","handleUpload","uploadImage","onSuccess","onError","onProgress","listType","customRequest","ModalItem","itemInput","formModalItem","isShowModalItem","dismissModalItem","modalItemData","customFields","optionFields","onSubmitModalItem","isDisplayUploadDocument","dataTableDocument","onDeleteRowTableDocument","length","unit","c","field","isDisable","columnRow","CustomFieldComponents","optionInput","Group","direction","o","radioSelectWageComponents","optionFieldsComponents","isPriceEditable","priceEdit","isWageEditable","wageEdit","ModalNewItem","formModalNewItem","isShowModalNewItem","dismissModalNewItem","onSubmitModalNewItem","TablePR4","selectedGroupProp","columnFormat","setIsShowModalItem","setModalItemData","setDataTable","selectedRowKeys","setSelectedRowKeys","selectedRowData","setSelectedRowData","deleteIds","setDeleteIds","setIsShowModalNewItem","modalNewItemData","setModalNewItemData","deleteSpecialIds","setDeleteSpecialIds","setCustomFields","customSubmitInfo","setCustomSubmitInfo","setOptionFields","setFileList","setIsDisplayUploadDocument","setDataTableDocument","deepSeachArray","getItems","deepSearchResultArray","k","v","rowKeys","d","amount","wage","price","columnRowValues","workGroupId","subWorkGroupId","rowSelection","onSelect","selected","selectedRows","unDeleteIds","filter","isProjectSpecialItem","isProjectAccessoryItem","differenceIds","includes","unDeleteSpecialIds","differenceSpecialIds","deleteIdsConCat","concat","deleteSpecialIdsConCat","keys","item","onSelectAll","changeRows","findIsSelected","some","isSelected","save","rowData","PrepareCreateOrUpdateRequest","deleteRemoveNull","ids","itemId","GetItemIdByKey","Object","assign","factorFTypeId","factorF","number","keySplit","split","SubItemId1","SubItemId2","SubItemId3","object","predicate","push","i","findItemByKey","isNumeric","str","parseFloat","readExcel","openModal","additionalContent","content","parse","fields","requestReadExcel","sheetName","writeSheetName","columnRows","responseRead","submitUrl","calculateSheetNames","resultSheetName","resultColumnRow","readSheetName","shouldDisplayUploadDocumnetPanel","getItemDocuments","isSubmitDataHasToReCalculate","prepareItemWhichReCalculation","isUserSelectWage","toString","convertToFloat","updateProjectSpecialItem","createOrUpdateItem","submitUploadDocument","displayCheckedItem","resetFields","formData","FormData","fileOrigins","f","originFileObj","dt","writeExcelRequest","httpWriteExcel","responseWriteExcel","calculateItemPrice","openModalNewItem","PrepareNewItemRequest","totalPrice","totalWage","finalPrice","toLocaleString","calculateFactorFAPI","dataFilter","dataInput","arr","dataLV2","dataLV2Static","arrLV2","dataLV3","dataLV3Static","j","arrLV3","dataLV4","dataLV4Static","arrLV4","indexLV4","splice","indexLV3","indexLV2","checkStrictly","expandable","expandIconColumnIndex","indentSize","y","summary","totalFinalPrice","reduce","accum","Summary","Row","Cell","ButtonSubCategory","workgroupid","subworkgroupid","selectedWorkGroupSubWorGroup","setButtonStyle","substring","ButtonWorkGroup","CheckBoxSubWorkGroup","selectedSubWorkGroups","allSubWorkGroups","onChangeCheckboxSubWorkGroup","checkedValues","subWorkGroup","PR4","isShowModalWorkGroup","setIsShowModalWorkGroup","setSelectedSubWorkGroups","setAllSubWorkGroups","workGroupModal","setWorkGroupModal","workGroupTreeMenu","setWorkGroupTreeMenu","formWorkGroup","setSelectedWorkGroupSubWorGroup","workGroupResponse","setWorkGroupResponse","getAllSubWorkGroup","getWorkGroups","renderWorkGroupMenu","typeCategories","tc","category","subWorkGroups","swg","mergedAllSubWorkGroups","apply","workGroups","getWorkGroup","workgroupMenu","forEach","workgroup","treeMain","currentTarget","getAttribute","openModalEditWorkGroup","subWorkGroupIds","onFinishModalWorkGroup","SubWorkGroupIds","createWorkGroup","updateWorkGroup","showIcon","defaultExpandAll","treeData","SelectedColumnFormat","forceRender","TablePR5","downloadSummary","PR5","tableData","setTableData","isBuildingType","setIsBuildingType","getSummaryPR5","workGroupSummaries","TablePR6","PR6","getSummaryPR6","Category","Picutre","ProjectAddressForm","gutter","isMarkerShown","Location","InputRowProjectInfoBK","VerticalLineProjectInfo","childComponent","ProjectInfoFormBK","InfoBk","InputForm","conceteName","woodName","orientation","fontStyle","borderTopLeftRadius","borderBottomLeftRadius","verticalAlign","lineHeight","borderTopRightRadius","borderBottomRightRadius","FormConeteCost","conceteCosts","concete1","concete2","concete3","concete4","concete5","concete6","concete7","wood1","woodCosts","wood2","wood3","wood4","wood5","wood6","wood7","createOrUpdateConceteAndWoodCost","ConceteCost","responseApi","setResponseApi","getConceteAndWoodCost","FormConceteCost","PR4Special","groupData","setGroupData","labelNavBar","setLabelNavbar","getProjectType","thai","english","TableSummaryPR4","onDownLoadClick","workGroupOptions","onSelectChange","SummaryPR4","setWorkGroupOptions","selectedWorkGroupId","setSelectedWorkGroupId","w","getSummaryPR4Building","getSummaryPR4Dam","ProjectRoutes","Picture","InputRow","UserInfoForm","isEdit","getUser","createUser","updateUser","Register","UserRoutes","App","stateLoading","useSelector","loading","loaderColor","autoClose","hideProgressBar","newestOnTop","pauseOnFocusLoss","draggable","pauseOnHover","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","counterSlice","increment","decrement","incrementByAmount","UserReducer","firstName","lastName","setNavBarName","configureStore","reducer","counter","counterReducer","user","ReactDOM","store","getElementById"],"mappings":"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","file":"static/js/main.1ea73090.chunk.js","sourcesContent":["const targetEnvironment = \"production\";\r\nconst appVersion = \"1.1.1\";\r\n\r\n// ตอนเปลี่ยน appPath ให้ไปเปลี่ยน homepage ที่ package.json ด้วย\r\n\r\n// endpoint config\r\nconst serverUrl = {\r\n local: \"https://localhost:44311\",\r\n beta: \"https://navyjone.com\",\r\n production: \"http://110.164.237.161/\",\r\n};\r\n\r\nconst appPath = {\r\n local: \"\",\r\n beta: \"/gov-estimate\",\r\n production: \"/estimate\",\r\n};\r\n\r\nconst apiPath = {\r\n local: serverUrl[targetEnvironment] + \"/api/\",\r\n beta: \"https://navyjone.com/gov-estimate-api/api/\",\r\n production: \"http://110.164.237.161/estimate-api/api/\",\r\n};\r\n\r\nconst gpsWebPath = {\r\n local: \"http://110.164.237.161/costgps/index.html#!/transCost\",\r\n beta: \"http://110.164.237.161/costgps/index.html#!/transCost\",\r\n production: \"http://110.164.237.161/costgps/index.html#!/transCost\",\r\n};\r\n\r\nconst AppConfig = {\r\n appVersion: appVersion,\r\n targetEnvironment: targetEnvironment,\r\n appPath: appPath[targetEnvironment],\r\n // localStorageKey: 'esky' + targetEnvironment,\r\n serverUrl: serverUrl[targetEnvironment],\r\n apiUrl: apiPath[targetEnvironment],\r\n imageUrl: appPath[targetEnvironment] + \"/Images/\",\r\n storeKeyPrefix: \"ccwKey\",\r\n gpsWebPath: gpsWebPath[targetEnvironment],\r\n};\r\n\r\nexport default AppConfig;\r\n","// export const capsule_dark = require(\"../Assets/Images/capsule_dark.png\");\r\nimport AppConfig from \"../AppConfig\";\r\nexport const Background = AppConfig.imageUrl + \"/bg.png\";\r\nexport const BackgroundLogin = AppConfig.imageUrl + \"/login_bg.png\";\r\nexport const LogoMain = AppConfig.imageUrl + \"/logoMain.png\";\r\nexport const LogoLogin = AppConfig.imageUrl + \"/logo_login.png\";\r\nexport const BackgroundDark = AppConfig.imageUrl + \"/dark_bg.png\";\r\nexport const Building = AppConfig.imageUrl + \"/Building.png\";\r\nexport const WaterSystem = AppConfig.imageUrl + \"/WaterSystem.png\";\r\nexport const Dam = AppConfig.imageUrl + \"/Dam.png\";\r\nexport const DevelopCity = AppConfig.imageUrl + \"/DevelopCity.png\";\r\nexport const HomeIcon = AppConfig.imageUrl + \"/HomeIcon.png\";\r\n","import React from \"react\";\r\nimport { Form, Input, Col, Row } from \"antd\";\r\n\r\nconst InputLogin = ({ label, type, keyInput }) => {\r\n return (\r\n \r\n \r\n \r\n {label}\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 InputLogin;\r\n","import React from \"react\";\r\n\r\nconst LabelRound = ({\r\n label,\r\n borderColor,\r\n background,\r\n fontColor,\r\n fontSize,\r\n width,\r\n height,\r\n borderWidth,\r\n}) => {\r\n return (\r\n \r\n {label}\r\n \r\n );\r\n};\r\n\r\nexport default LabelRound;\r\n","import React from \"react\";\r\n// import { toast } from 'react-toastify';\r\nimport { Button } from \"antd\";\r\n// import AuthHelper from '../../Helper/AuthHelper';\r\n\r\nconst ButtonRound = ({\r\n label,\r\n borderColor,\r\n background,\r\n fontColor,\r\n fontSize,\r\n width,\r\n height,\r\n borderWidth,\r\n href,\r\n labelPaddingTop,\r\n onClick,\r\n}) => {\r\n return (\r\n \r\n {/* \r\n {label}\r\n */}\r\n
\r\n {label}\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default ButtonRound;\r\n","export default {\r\n\taccessToken: 'xT',\r\n\trefreshToken: 'xR',\r\n\tloginType: 'lT',\r\n\tloggedInStudentId: 'std',\r\n};\r\n","import AppConfig from \"../AppConfig\";\r\n\r\nconst Storage = (function () {\r\n const prefix = AppConfig[\"storeKeyPrefix\"];\r\n\r\n const get = (key) => {\r\n try {\r\n return localStorage.getItem(`${prefix}${key}`);\r\n } catch (ex) {\r\n console.log(\"cannot get data from localStorage\", ex);\r\n return undefined;\r\n }\r\n };\r\n\r\n const set = (key, value) => {\r\n try {\r\n return localStorage.setItem(`${prefix}${key}`, value);\r\n } catch (ex) {\r\n console.log(\"cannot save data to localStorage\", ex);\r\n }\r\n };\r\n\r\n const clear = (key) => {\r\n try {\r\n return localStorage.removeItem(`${prefix}${key}`);\r\n } catch (ex) {\r\n console.log(\"cannot remove data from localStorage\", ex);\r\n }\r\n };\r\n\r\n const clearAll = () => {\r\n localStorage.clear();\r\n };\r\n\r\n return { get, set, clear, clearAll };\r\n})();\r\n\r\nexport default Storage;\r\n","// import CryptoJS from 'crypto-js';\r\nimport React from \"react\";\r\nimport AppConfig from \"../AppConfig\";\r\n\r\nimport SecureKey from \"./SecureKey\";\r\nimport Storage from \"./Storage\";\r\n\r\nimport HTTPUtils from \"./HTTPUtils\";\r\n\r\nimport { toast } from \"react-toastify\";\r\n\r\nexport default async function RefreshToken() {\r\n try {\r\n const controller = new AbortController();\r\n const signal = controller.signal;\r\n\r\n // const requestHeaders = HTTPUtils.getHttpHeader(SecureKey.refreshToken);\r\n // const response = await fetch(AppConfig.apiUrl + `user/refresh`, {\r\n // method: \"POST\",\r\n // headers: requestHeaders,\r\n // });\r\n\r\n var requestHeaders = new Headers();\r\n const refreshToken = Storage.get(SecureKey.refreshToken);\r\n requestHeaders.append(\"Authorization\", \"Bearer \" + refreshToken);\r\n requestHeaders.append(\"Content-Type\", \"application/json\");\r\n // let body = { refreshToken: refreshToken };\r\n const response = await fetch(AppConfig.apiUrl + `user/refresh`, {\r\n method: \"POST\",\r\n headers: requestHeaders,\r\n });\r\n\r\n if (HTTPUtils.isSuccess(response)) {\r\n var data = await response.json();\r\n console.log(data);\r\n Storage.set(SecureKey.accessToken, data.accessToken);\r\n Storage.set(SecureKey.refreshToken, data.refreshToken);\r\n } else {\r\n Storage.clear(SecureKey.accessToken);\r\n Storage.clear(SecureKey.refreshToken);\r\n // Storage.clear(SecureKey.loginType);\r\n toast.warn(\"Token หมดอายุกรณี Login ใหม่อีกครั้ง\");\r\n setTimeout(() => window.location.replace(AppConfig.appPath), 2000);\r\n }\r\n } catch (error) {\r\n console.log(\"error in API RefreshToken\");\r\n console.log(error);\r\n throw error;\r\n }\r\n\r\n // console.log({ status, statusText, bsRefreshToken });\r\n return null;\r\n}\r\n\r\n// const base64url = (source) => {\r\n// \t// Encode in classical base64\r\n// \tencodedSource = CryptoJS.enc.Base64.stringify(source);\r\n\r\n// \t// Remove padding equal characters\r\n// \tencodedSource = encodedSource.replace(/=+$/, '');\r\n\r\n// \t// Replace characters according to base64url specifications\r\n// \tencodedSource = encodedSource.replace(/\\+/g, '-');\r\n// \tencodedSource = encodedSource.replace(/\\//g, '_');\r\n\r\n// \treturn encodedSource;\r\n// };\r\n","// import AppConfig from \"../AppConfig\";\r\nimport RefreshToken from \"./RefreshToken\";\r\nimport Storage from \"./Storage\";\r\nimport AppConfig from \"../AppConfig\";\r\nconst HTTPUtils = (function () {\r\n const getHttpHeader = async (key) => {\r\n var requestHeaders = new Headers();\r\n try {\r\n const accessToken = Storage.get(key);\r\n if (accessToken) {\r\n requestHeaders.append(\"Authorization\", \"Bearer \" + accessToken);\r\n }\r\n } catch (ex) {\r\n console.log(\"cannot get bsRefreshToken from store\");\r\n }\r\n\r\n requestHeaders.append(\"Content-Type\", \"application/json\");\r\n // requestHeaders.append(\"X-Requested-With\", \"XMLHttpRequest\");\r\n // console.log(requestHeaders);\r\n return requestHeaders;\r\n };\r\n\r\n const handleAPIResponse = async (\r\n baseFunction,\r\n response,\r\n request,\r\n retryCount = 0,\r\n abortSignal,\r\n fetchController,\r\n isFormData\r\n ) => {\r\n try {\r\n // console.log(response);\r\n // if (AppConfig.showAPIRequestResponseLog) {\r\n // \tNVConsole.logHttp(request, response);\r\n // }\r\n\r\n if (isSuccess(response)) {\r\n return response;\r\n } else if (isUnauthorized(response)) {\r\n console.log(\"unauthroized:\");\r\n await RefreshToken();\r\n response = await baseFunction(\r\n request.method,\r\n request.service,\r\n request.urlParams,\r\n request.body,\r\n 0,\r\n // ++retryCount,\r\n abortSignal\r\n );\r\n }\r\n } catch (ex) {\r\n console.log(ex);\r\n return {\r\n status: 500,\r\n };\r\n }\r\n\r\n return response;\r\n };\r\n\r\n const buildQueryString = (urlParams) => {\r\n let paramString = \"\";\r\n if (urlParams) {\r\n paramString = \"?\";\r\n for (var key in urlParams) {\r\n if (urlParams.hasOwnProperty(key)) {\r\n paramString = paramString + key + \"=\" + urlParams[key] + \"&\";\r\n }\r\n }\r\n\r\n paramString = paramString.slice(0, -1);\r\n }\r\n\r\n return paramString;\r\n };\r\n\r\n const isSuccess = (response) => {\r\n return response.status >= 200 && response.status < 300;\r\n };\r\n\r\n const isUnauthorized = (response) => {\r\n return response.status === 401;\r\n };\r\n\r\n const isBadRequest = (response) => {\r\n return response.status === 400;\r\n };\r\n\r\n const isInternalServerError = (response) => {\r\n return response.status === 500;\r\n };\r\n\r\n // const isNotAcceptable = (response) => {\r\n // return response.status === 406 && !response.invalidVersion;\r\n // };\r\n\r\n const isInvalidVersion = (response) => {\r\n return response.status === 406 && response.invalidVersion;\r\n };\r\n\r\n const isError = (response) => {\r\n return (\r\n response.status !== 200 &&\r\n response.status !== 401 &&\r\n response.status !== 406\r\n );\r\n };\r\n\r\n return {\r\n getHttpHeader,\r\n handleAPIResponse,\r\n isSuccess,\r\n isUnauthorized,\r\n isError,\r\n isBadRequest,\r\n isInternalServerError,\r\n isInvalidVersion,\r\n buildQueryString,\r\n };\r\n})();\r\n\r\nexport default HTTPUtils;\r\n","// import * as SecureStore from 'expo-secure-store';\r\n// import NetInfo from '@react-native-community/netinfo';\r\n\r\n// import SecureKey from '../constants/SecureKey';\r\nimport SecureKey from \"./SecureKey\";\r\nimport AppConfig from \"../AppConfig\";\r\nimport HTTPUtils from \"./HTTPUtils\";\r\n\r\nconst HTTP = (method, service, urlParams, body) => {\r\n const controller = new AbortController();\r\n // const signal = controller.signal;\r\n return {\r\n abort: () => {\r\n controller.abort();\r\n },\r\n execute: async () => {\r\n return execute(method, service, urlParams, body, 0);\r\n },\r\n };\r\n};\r\n\r\nexport default HTTP;\r\n\r\nconst execute = async (method, service, urlParams, body, retryCount) => {\r\n const startTime = new Date();\r\n var data = null;\r\n var status = null;\r\n if (!urlParams) {\r\n urlParams = {};\r\n }\r\n\r\n if (!retryCount) {\r\n retryCount = 0;\r\n }\r\n\r\n if (true) {\r\n try {\r\n // const netInfo = await NetInfo.fetch();\r\n // if (netInfo.isConnected) {\r\n // const timeoutRef = setTimeout(() => {\r\n // console.log(\"timeout\");\r\n // // fetchController.abort();\r\n // // }, AppConfig.apiTimeoutInSeconds * 1000);\r\n // }, 10 * 1000);\r\n const queryString = HTTPUtils.buildQueryString(urlParams);\r\n const requestHeaders = await HTTPUtils.getHttpHeader(\r\n SecureKey.accessToken\r\n );\r\n const apiUrl = AppConfig.apiUrl;\r\n const url = apiUrl + service + queryString;\r\n // if (!isFormData) {\r\n // \tbody = JSON.stringify({\r\n // \t\tchannelName: AppConfig.apiChannelName,\r\n // \t\tshoppingChannel: AppConfig.apiChannelName,\r\n // \t\tmPayToken,\r\n // \t\tingressLang,\r\n // \t\t...body,\r\n // \t});\r\n // }\r\n\r\n // console.log(url, method.toUpperCase());\r\n // console.log(url, body);\r\n const response = await fetch(url, {\r\n method: method.toUpperCase(),\r\n headers: requestHeaders,\r\n // body: JSON.stringify(body),\r\n body: body ? JSON.stringify(body) : null,\r\n });\r\n\r\n // clearTimeout(timeoutRef);\r\n status = response.status;\r\n try {\r\n data = await response.json();\r\n // console.log(body, data);\r\n } catch (ex) {}\r\n } catch (error) {\r\n console.log(`error in API ${method} : ${service}`);\r\n // console.log(error);\r\n }\r\n }\r\n\r\n const responsedTime = new Date();\r\n return HTTPUtils.handleAPIResponse(\r\n execute,\r\n { status, data, responsedTime },\r\n { method, service, urlParams, body, startTime },\r\n retryCount\r\n // fetchController\r\n );\r\n};\r\n\r\n// const getCurrentLanguage = async () => {\r\n// \tlet userLanguage = await SecureStore.getItemAsync(SecureKey.userLanguage);\r\n// \treturn userLanguage\r\n// \t\t? userLanguage.toUpperCase()\r\n// \t\t: AppConfig.defaultLanguage;\r\n// };\r\n\r\n// const getMPayToken = async () => {\r\n// \tconst mPayToken = await SecureStore.getItemAsync(SecureKey.mpayToken);\r\n// \treturn mPayToken;\r\n// };\r\n","import { createSlice } from \"@reduxjs/toolkit\";\r\n\r\nexport const LoadingReducer = createSlice({\r\n name: \"loading\",\r\n initialState: {\r\n isLoading: false,\r\n },\r\n reducers: {\r\n showLoading: (state, action) => {\r\n // Redux Toolkit allows us to write \"mutating\" logic in reducers. It\r\n // doesn't actually mutate the state because it uses the Immer library,\r\n // which detects changes to a \"draft state\" and produces a brand new\r\n // immutable state based off those changes\r\n // console.log(action.payload);\r\n state.isLoading = action.payload;\r\n },\r\n },\r\n});\r\n\r\n// Action creators are generated for each case reducer function\r\nexport const { showLoading } = LoadingReducer.actions;\r\n\r\nexport default LoadingReducer.reducer;\r\n","import React from \"react\";\r\nimport { Form, Col, Row, Image } from \"antd\";\r\nimport { toast } from \"react-toastify\";\r\n// import AuthHelper from '../../Helper/AuthHelper';\r\nimport AppConfig from \"../AppConfig\";\r\nimport { LogoMain, LogoLogin } from \"../Constants/Images\";\r\nimport InputLogin from \"./InputLogin\";\r\nimport LabelRound from \"./LabelRound\";\r\nimport ButtonRound from \"./ButtonRound\";\r\nimport HTTP from \"../https/HTTP\";\r\nimport HTTPUtils from \"../https/HTTPUtils\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { showLoading } from \"../Redux/LoadingReducer\";\r\nimport SecureKey from \"../https/SecureKey\";\r\nimport Storage from \"../https/Storage\";\r\nconst LoginForm = ({ router }) => {\r\n const [form] = Form.useForm();\r\n const dispatch = useDispatch();\r\n\r\n const onFinish = async (submitData) => {\r\n // console.log(\"Success:\", submitData);\r\n dispatch(showLoading(true));\r\n await Login(submitData);\r\n // router.replace(AppConfig.appPath + \"/home\");\r\n dispatch(showLoading(false));\r\n };\r\n\r\n const Login = async (request) => {\r\n const http = HTTP(\"POST\", \"user/login\", null, request);\r\n const response = await http.execute();\r\n if (HTTPUtils.isSuccess(response)) {\r\n // toast.success(\"สำเร็จ\");\r\n const { accessToken, refreshToken } = response.data;\r\n Storage.set(SecureKey.accessToken, accessToken);\r\n Storage.set(SecureKey.refreshToken, refreshToken);\r\n //TODO remove this line after finish token branch\r\n window.sessionStorage.setItem(\"userId\", response.data.id);\r\n router.replace(\r\n // AppConfig.appPath + \"/project/select/category\"\r\n AppConfig.appPath + \"/home\"\r\n );\r\n } else {\r\n //show error\r\n toast.error(\"ชื่อผู้ใช้งานหรือรหัสผ่านไม่ถูกต้อง\");\r\n }\r\n };\r\n\r\n return (\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\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\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default LoginForm;\r\n","import React, { Component } from \"react\";\r\n// import { toast } from 'react-toastify';\r\n// import AuthHelper from '../../Helper/AuthHelper';\r\nimport { BackgroundLogin } from \"../../Constants/Images\";\r\nimport LoginForm from \"../../Components/LoginForm\";\r\nimport SecureKey from \"../../https/SecureKey\";\r\nimport Storage from \"../../https/Storage\";\r\nexport default class Login extends Component {\r\n componentDidMount = () => {\r\n // if (AuthHelper.isLogin()) {\r\n // \tthis.props.history.replace(AppConfig.appPath + '/dashboard');\r\n // }\r\n Storage.clear(SecureKey.accessToken);\r\n Storage.clear(SecureKey.refreshToken);\r\n window.sessionStorage.clear();\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n","import React from \"react\";\r\nimport { Col, Row } from \"antd\";\r\n\r\nconst NavbarPageLabel = ({ labelThai, labelEnglish }) => {\r\n return (\r\n \r\n \r\n \r\n {labelEnglish}\r\n \r\n \r\n \r\n \r\n {labelThai}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default NavbarPageLabel;\r\n","import React from \"react\";\r\nimport AppConfig from \"../AppConfig\";\r\nimport { Col, Row, Image } from \"antd\";\r\nimport { LogoMain } from \"../Constants/Images\";\r\nimport NavbarPageLabel from \"./NavbarPageLabel\";\r\nimport { NavDropdown } from \"react-bootstrap\";\r\nimport \"bootstrap/dist/css/bootstrap.min.css\";\r\nconst NavBar2 = ({ labelEnglish, labelThai }) => {\r\n const bgColor = \"linear-gradient(#818181, #b8b8b8)\";\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n โปรแกรมประมาณราคาภาครัฐ กองมาตรฐานราคากลาง V.\r\n {AppConfig.appVersion}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ตั้งค่า\r\n \r\n // \r\n }\r\n id=\"collasible-nav-dropdown\"\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\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default NavBar2;\r\n","import React, { useEffect } from \"react\";\r\nimport \"antd/dist/antd.css\";\r\nimport { Table } from \"antd\";\r\nimport AppConfig from \"../../../AppConfig\";\r\nconst TableHome = ({ router, data }) => {\r\n useEffect(() => {});\r\n\r\n const columns = [\r\n {\r\n title: \"ชื่อโครงการ\",\r\n dataIndex: \"name\",\r\n width: 200,\r\n align: \"center\",\r\n },\r\n {\r\n title: \"งบประมาณ\",\r\n dataIndex: \"totalAmount\",\r\n width: 80,\r\n align: \"center\",\r\n },\r\n {\r\n title: \"ประเภท\",\r\n dataIndex: \"type\",\r\n width: 120,\r\n align: \"center\",\r\n },\r\n {\r\n title: \"วันที่ประเมิน\",\r\n dataIndex: \"date\",\r\n width: 100,\r\n align: \"center\",\r\n },\r\n {\r\n title: \"จังหวัด\",\r\n dataIndex: \"province\",\r\n width: 110,\r\n align: \"center\",\r\n },\r\n ];\r\n\r\n // const data = [];\r\n // for (let i = 0; i < 30; i++) {\r\n // data.push({\r\n // key: i,\r\n // name: `ระบบแก้ปัญหาน้ำท่วมในเมือง ${i}`,\r\n // cost: 32000000 + i,\r\n // type: `ชลประทาน`,\r\n // date: \"20 May 2021\",\r\n // province: \"มหาสารคาม\",\r\n // });\r\n // }\r\n\r\n return (\r\n {\r\n return {\r\n onClick: (event) => {\r\n console.log(\"record \", record);\r\n console.log(\"rowIndex \", rowIndex);\r\n router.replace(AppConfig.appPath + `/project/${record.id}/info`);\r\n }, // click row\r\n };\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default TableHome;\r\n","import React from \"react\";\r\n// import { toast } from 'react-toastify';\r\nimport { Button, Row, Col } from \"antd\";\r\nimport InputSearchFooter from \"./InputSearchFooter\";\r\n// import AuthHelper from '../../Helper/AuthHelper';\r\n\r\nconst SearchBar = ({}) => {\r\n return null;\r\n // return (\r\n // \r\n // \r\n // \r\n // \r\n // \r\n // \r\n // \r\n // \r\n // \r\n // \r\n // PRINT\r\n // \r\n // \r\n // \r\n // \r\n // \r\n // \r\n // \r\n // );\r\n};\r\n\r\nexport default SearchBar;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport HTTP from \"../../https/HTTP\";\r\nimport HTTPUtils from \"../../https/HTTPUtils\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { showLoading } from \"../../Redux/LoadingReducer\";\r\nimport { toast } from \"react-toastify\";\r\nimport NavBar2 from \"../../Components/NavBar2\";\r\nimport TableHome from \"./Components/TableHome\";\r\nimport SearchBar from \"../../Components/SearchBar\";\r\nimport ButtonRound from \"../../Components/ButtonRound\";\r\n// import AuthHelper from '../../Helper/AuthHelper';\r\nimport AppConfig from \"../../AppConfig\";\r\nimport { Row, Layout, Col, Tabs } from \"antd\";\r\n// import moment from \"moment\";\r\nimport { Background } from \"../../Constants/Images\";\r\nimport \"../../Styles/TabCard.css\";\r\n\r\nconst { TabPane } = Tabs;\r\nconst Home = (props) => {\r\n const dispatch = useDispatch();\r\n const [projectListInProgress, setProjectListInProgress] = useState([]);\r\n\r\n useEffect(() => {\r\n (async () => {\r\n // if (!window.sessionStorage?.userId) {\r\n // toast.warn(\"กรุณา login ก่อนใช้งาน\");\r\n // props.history.replace(AppConfig.appPath);\r\n // }\r\n\r\n const projectInProgress = await getProjectList({\r\n statusId: 1,\r\n typeId: 0,\r\n });\r\n setProjectListInProgress(projectInProgress);\r\n })();\r\n }, []);\r\n\r\n const getProjectList = async (searchParam) => {\r\n dispatch(showLoading(true));\r\n const http = HTTP(\"GET\", \"project\", searchParam);\r\n const response = await http.execute();\r\n if (HTTPUtils.isSuccess(response)) {\r\n console.log(response.data);\r\n dispatch(showLoading(false));\r\n return response.data;\r\n } else {\r\n toast.error(\"ติดต่อ server ไม่ได้\");\r\n }\r\n dispatch(showLoading(false));\r\n };\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n props.history.replace(\r\n // AppConfig.appPath + \"/project/select/category\"\r\n AppConfig.appPath + \"/project/new/info\"\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\n key=\"tab1\"\r\n >\r\n \r\n \r\n \r\n เสร็จสิ้น\r\n \r\n }\r\n key=\"tab2\"\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 - ระบบประมาณราคาภาครัฐ by CCW -\r\n */}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Home;\r\n","import React, { Component } from \"react\";\r\nimport { Route } from \"react-router-dom\";\r\nimport Login from \"../Pages/Login\";\r\n// import Logout from '../Pages/Logout';\r\nimport Home from \"../Pages/Home\";\r\n\r\nimport AppConfig from \"../AppConfig\";\r\n\r\nexport default class GeneralRoutes extends Component {\r\n render() {\r\n return (\r\n \r\n \r\n {/* */}\r\n \r\n \r\n );\r\n }\r\n}\r\n","import React from \"react\";\r\nimport \"../Styles/CrossLine.css\";\r\n\r\nconst CrossLine = ({ circleColor, isRemoveHorizontalLine }) => {\r\n const horizontalLine = () => {\r\n if (!isRemoveHorizontalLine) {\r\n return (\r\n \r\n
\r\n
\r\n
\r\n \r\n );\r\n }\r\n };\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {horizontalLine()}\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 CrossLine;\r\n","import React from \"react\";\r\nimport { Button } from \"antd\";\r\n\r\nconst ButtonSave = ({ label, width, height, href, onClick }) => {\r\n return (\r\n \r\n {/* \r\n {label}\r\n */}\r\n
\r\n {label}\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default ButtonSave;\r\n","import React from \"react\";\r\nimport \"antd/dist/antd.css\";\r\nimport { Form, Row, Col } from \"antd\";\r\nimport CrossLine from \"../../../../Components/CrossLine\";\r\nimport ButtonSave from \"../../../../Components/ButtonSave\";\r\n\r\nconst InputRowProjectInfo = ({\r\n label,\r\n InputComponent,\r\n keyInput,\r\n isRequire,\r\n messageRequire,\r\n isDisplaySetLocationButton,\r\n onClickSetLocationButton,\r\n}) => {\r\n return (\r\n \r\n \r\n \r\n {label}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {InputComponent}\r\n \r\n \r\n {isDisplaySetLocationButton ? (\r\n \r\n \r\n \r\n ) : null}\r\n \r\n );\r\n};\r\n\r\nexport default InputRowProjectInfo;\r\n","import React from \"react\";\r\nimport \"antd/dist/antd.css\";\r\nimport { Upload } from \"antd\";\r\nimport { CameraOutlined } from \"@ant-design/icons\";\r\nconst { Dragger } = Upload;\r\nconst DragImage = ({}) => {\r\n const propsDragger = {\r\n name: \"file\",\r\n multiple: true,\r\n action: \"https://www.mocky.io/v2/5cc8019d300000980a055e76\",\r\n onChange(info) {\r\n const { status } = info.file;\r\n if (status !== \"uploading\") {\r\n console.log(info.file, info.fileList);\r\n }\r\n // if (status === \"done\") {\r\n // message.success(`${info.file.name} file uploaded successfully.`);\r\n // } else if (status === \"error\") {\r\n // message.error(`${info.file.name} file upload failed.`);\r\n // }\r\n },\r\n onDrop(e) {\r\n console.log(\"Dropped files\", e.dataTransfer.files);\r\n },\r\n };\r\n return (\r\n \r\n

\r\n \r\n

\r\n {/*

\r\n Click or drag file to this area to upload\r\n

*/}\r\n
\r\n );\r\n};\r\n\r\nexport default DragImage;\r\n","import React from \"react\";\r\nimport { Button } from \"antd\";\r\n\r\nconst ButtonCancel = ({ label, width, height, href, onClick }) => {\r\n return (\r\n \r\n
\r\n {label}\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default ButtonCancel;\r\n","import React from \"react\";\r\nimport { compose, withProps } from \"recompose\";\r\nimport {\r\n withScriptjs,\r\n withGoogleMap,\r\n GoogleMap,\r\n Marker,\r\n Circle,\r\n} from \"react-google-maps\";\r\n\r\nconst Map = compose(\r\n withProps({\r\n /**\r\n * Note: create and replace your own key in the Google console.\r\n * https://console.developers.google.com/apis/dashboard\r\n * The key \"AIzaSyBkNaAGLEVq0YLQMi-PYEMabFeREadYe1Q\" can be ONLY used in this sandbox (no forked).\r\n */\r\n googleMapURL:\r\n \"https://maps.googleapis.com/maps/api/js?key=AIzaSyABS9SF61jaE92bsqec83_yH51Ev9Lxepo&v=3.exp&libraries=geometry,drawing,places\",\r\n loadingElement:
,\r\n containerElement:
,\r\n mapElement:
,\r\n }),\r\n withScriptjs,\r\n withGoogleMap\r\n)((props) => (\r\n \r\n {props.latLong ? (\r\n
\r\n \r\n \r\n
\r\n ) : null}\r\n \r\n));\r\nexport default Map;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport moment from \"moment\";\r\nimport { toast } from \"react-toastify\";\r\nimport \"antd/dist/antd.css\";\r\nimport {\r\n Form,\r\n Row,\r\n Col,\r\n Input,\r\n InputNumber,\r\n Select,\r\n DatePicker,\r\n Popconfirm,\r\n Modal,\r\n} from \"antd\";\r\nimport InputRowProjectInfo from \"./InputRowProjectInfo\";\r\nimport DragImage from \"./DragImage\";\r\nimport ButtonSave from \"../../../../Components/ButtonSave\";\r\nimport ButtonCancel from \"../../../../Components/ButtonCancel\";\r\nimport ButtonDelete from \"../../../../Components/ButtonDelete\";\r\nimport HTTP from \"../../../../https/HTTP\";\r\nimport HTTPUtils from \"../../../../https/HTTPUtils\";\r\nimport AppConfig from \"../../../../AppConfig\";\r\nimport { showLoading } from \"../../../../Redux/LoadingReducer\";\r\nimport Map from \"../../../../Components/Map\";\r\nconst { Option } = Select;\r\n\r\nconst ProjectInfoForm = ({ urlParams, router }) => {\r\n const [form] = Form.useForm();\r\n const [provinces, setProvinces] = useState([]);\r\n const [trucks, setTrucks] = useState([]);\r\n const [types, setTypes] = useState([]);\r\n // const [project, setProject] = useState({});\r\n // const stateLoading = useSelector((state) => state.loading);\r\n const [isDisableTypeInput, setIsDisableTypeInput] = useState(false);\r\n const [isShowModalSetLocation, setIsShowModalSetLocation] = useState(false);\r\n const [latLong, setlatLong] = useState();\r\n const [radius, setRadius] = useState(100);\r\n\r\n const dispatch = useDispatch();\r\n\r\n useEffect(() => {\r\n (async () => {\r\n try {\r\n dispatch(showLoading(true));\r\n await getMasterData();\r\n await getProject(urlParams.projectId);\r\n dispatch(showLoading(false));\r\n } catch {\r\n //display error\r\n dispatch(showLoading(false));\r\n }\r\n })();\r\n }, []);\r\n\r\n const getMasterData = async () => {\r\n try {\r\n const provinceResponses = await HTTP(\"GET\", \"province\").execute();\r\n const truckResponses = await HTTP(\"GET\", \"truck\").execute();\r\n const typeResponse = await HTTP(\"GET\", \"type\").execute();\r\n let provinces = provinceResponses.data.map((p) => ({\r\n value: p.id,\r\n label: p.name,\r\n }));\r\n let trucks = truckResponses.data.map((t) => ({\r\n value: t.id,\r\n label: t.name,\r\n }));\r\n let types = typeResponse.data.map((t) => ({\r\n value: t.id,\r\n label: t.name,\r\n }));\r\n setProvinces(provinces);\r\n setTrucks(trucks);\r\n setTypes(types);\r\n } catch (ex) {\r\n console.log(ex);\r\n }\r\n };\r\n\r\n const getProject = async (projectId) => {\r\n const http = HTTP(\"GET\", \"project/\" + projectId);\r\n const response = await http.execute();\r\n if (HTTPUtils.isSuccess(response)) {\r\n const project = responseToProjectFormData(response.data);\r\n // setProject(response.data);\r\n setIsDisableTypeInput(true);\r\n // @14.9602412,101.0515142,8.18z\r\n form.setFieldsValue(project);\r\n if (project.latitude) {\r\n setlatLong({ lat: project.latitude, long: project.longitude });\r\n }\r\n\r\n if (project.radius) {\r\n setRadius(project.radius);\r\n }\r\n } else {\r\n //show error\r\n }\r\n };\r\n\r\n const responseToProjectFormData = (response) => {\r\n let project = {\r\n name: response.name,\r\n owner: response.owner,\r\n address: response.address,\r\n department: response.department,\r\n constructionNumber: response.constructionNumber,\r\n date: moment(response.date),\r\n dueDate: response.dueDate ? moment(response.dueDate) : \"\",\r\n diselB7: response.diselB7,\r\n gasohol91: response.gasohol91,\r\n advanceMoney: response.advanceMoney,\r\n interest: response.interest,\r\n vat: response.vat,\r\n insurance: response.insurance,\r\n truckId1: parseInt(response.truckId1),\r\n truckId2: parseInt(response.truckId2),\r\n provinceId: parseInt(response.provinceId),\r\n provinceNearById1: parseInt(response.provinceNearById1),\r\n provinceNearById2: parseInt(response.provinceNearById2),\r\n typeId: parseInt(response.typeId),\r\n latitude: response.latitude,\r\n longitude: response.longitude,\r\n radius: response.radius,\r\n };\r\n\r\n return project;\r\n };\r\n\r\n const createProject = async (request) => {\r\n const http = HTTP(\"POST\", \"project/create\", null, request);\r\n const response = await http.execute();\r\n if (HTTPUtils.isSuccess(response)) {\r\n router.replace(\r\n // AppConfig.appPath + \"/project/select/category\"\r\n AppConfig.appPath + `/project/${response.data.id}/info`\r\n );\r\n toast.success(\"สำเร็จ\");\r\n } else {\r\n //show error\r\n toast.error(\"ล้มเหลว\");\r\n }\r\n };\r\n\r\n const updateProject = async (request) => {\r\n const http = HTTP(\"POST\", \"project/update\", null, request);\r\n const response = await http.execute();\r\n if (HTTPUtils.isSuccess(response)) {\r\n toast.success(\"สำเร็จ\");\r\n } else {\r\n //show error\r\n toast.error(\"ล้มเหลว\");\r\n }\r\n };\r\n\r\n const duplicateProject = async (request) => {\r\n const http = HTTP(\"POST\", \"project/duplicate\", null, request);\r\n const response = await http.execute();\r\n if (HTTPUtils.isSuccess(response)) {\r\n router.replace(\r\n // AppConfig.appPath + \"/project/select/category\"\r\n AppConfig.appPath + `/project/${response.data.id}/info`\r\n );\r\n toast.success(\"สำเร็จ\");\r\n } else {\r\n //show error\r\n toast.error(\"ล้มเหลว\");\r\n }\r\n };\r\n\r\n const deleteProject = async (request) => {\r\n const http = HTTP(\"POST\", \"project/delete\", null, request);\r\n const response = await http.execute();\r\n if (HTTPUtils.isSuccess(response)) {\r\n router.replace(AppConfig.appPath + `/home`);\r\n toast.success(\"สำเร็จ\");\r\n } else {\r\n //show error\r\n toast.error(\"ล้มเหลว\");\r\n }\r\n };\r\n\r\n const onFinish = async (values) => {\r\n dispatch(showLoading(true));\r\n // const projectId = parseInt(urlParams.projectId);\r\n // if (isNaN(projectId)) {\r\n // const userId = window.sessionStorage?.userId;\r\n // if (!userId) {\r\n // toast.error(\"ไม่พบข้อมูลผู้ใช้งานโปรด login ใหม่\");\r\n // return;\r\n // }\r\n // const createRequest = { ...values, userId: userId };\r\n // await createProject(createRequest);\r\n // } else {\r\n // const updateRequest = { ...values, userId: 1, id: projectId };\r\n // await updateProject(updateRequest);\r\n // }\r\n\r\n dispatch(showLoading(false));\r\n };\r\n\r\n const onClickSaveButton = async () => {\r\n form\r\n .validateFields()\r\n .then(async (values) => {\r\n dispatch(showLoading(true));\r\n const projectId = parseInt(urlParams.projectId);\r\n if (isNaN(projectId)) {\r\n const userId = window.sessionStorage?.userId;\r\n if (!userId) {\r\n toast.error(\"ไม่พบข้อมูลผู้ใช้งานโปรด login ใหม่\");\r\n return;\r\n }\r\n const createRequest = { ...values, userId: userId, radius: radius };\r\n await createProject(createRequest);\r\n } else {\r\n const updateRequest = {\r\n ...values,\r\n userId: 1,\r\n id: projectId,\r\n radius: radius,\r\n };\r\n await updateProject(updateRequest);\r\n }\r\n\r\n dispatch(showLoading(false));\r\n })\r\n .catch((errorInfo) => {});\r\n };\r\n\r\n const onClickDuplicateButton = async () => {\r\n form\r\n .validateFields()\r\n .then(async (values) => {\r\n dispatch(showLoading(true));\r\n const projectId = parseInt(urlParams.projectId);\r\n const userId = window.sessionStorage?.userId;\r\n if (!userId) {\r\n toast.error(\"ไม่พบข้อมูลผู้ใช้งานโปรด login ใหม่\");\r\n return;\r\n }\r\n\r\n const request = { ...values, userId: userId, oldId: projectId };\r\n await duplicateProject(request);\r\n\r\n dispatch(showLoading(false));\r\n })\r\n .catch((errorInfo) => {});\r\n };\r\n\r\n const onClickDeleteButton = async () => {\r\n form\r\n .validateFields()\r\n .then(async (values) => {\r\n dispatch(showLoading(true));\r\n const projectId = parseInt(urlParams.projectId);\r\n const userId = window.sessionStorage?.userId;\r\n if (!userId) {\r\n toast.error(\"ไม่พบข้อมูลผู้ใช้งานโปรด login ใหม่\");\r\n return;\r\n }\r\n\r\n const request = { id: projectId, userId: userId };\r\n await deleteProject(request);\r\n dispatch(showLoading(false));\r\n })\r\n .catch((errorInfo) => {});\r\n };\r\n\r\n const dismissModalSetLocation = () => {\r\n setIsShowModalSetLocation(false);\r\n };\r\n\r\n const onClickSaveLocation = () => {\r\n setIsShowModalSetLocation(false);\r\n form.setFieldsValue({ latitude: latLong.lat, longitude: latLong.long });\r\n };\r\n\r\n const onClickMap = (ev) => {\r\n setlatLong({ lat: ev.latLng.lat(), long: ev.latLng.lng() });\r\n };\r\n\r\n const onChangeRadius = (value) => {\r\n setRadius(value);\r\n };\r\n\r\n const openGPSWeb = () => {\r\n const url = AppConfig.gpsWebPath;\r\n const newWindow = window.open(url, \"_blank\", \"noopener,noreferrer\");\r\n if (newWindow) newWindow.opener = null;\r\n };\r\n\r\n return (\r\n
\r\n \r\n \r\n }\r\n isRequire\r\n messageRequire=\"กรุณากรอกข้อมูล\"\r\n />\r\n \r\n option.label.indexOf(input.toLowerCase()) >= 0\r\n }\r\n disabled={isDisableTypeInput}\r\n >\r\n }\r\n isRequire\r\n messageRequire=\"กรุณากรอกข้อมูล\"\r\n />\r\n }\r\n isRequire\r\n messageRequire=\"กรุณากรอกข้อมูล\"\r\n />\r\n }\r\n // formColSpan={12}\r\n isRequire\r\n messageRequire=\"กรุณากรอกข้อมูล\"\r\n isDisplaySetLocationButton={true}\r\n onClickSetLocationButton={() => {\r\n setIsShowModalSetLocation(true);\r\n }}\r\n />\r\n\r\n \r\n option.label.indexOf(input.toLowerCase()) >= 0\r\n }\r\n >\r\n }\r\n isRequire\r\n messageRequire=\"กรุณากรอกข้อมูล\"\r\n />\r\n \r\n option.label.indexOf(input.toLowerCase()) >= 0\r\n }\r\n >\r\n }\r\n isRequire\r\n messageRequire=\"กรุณากรอกข้อมูล\"\r\n />\r\n \r\n option.label.indexOf(input.toLowerCase()) >= 0\r\n }\r\n >\r\n }\r\n isRequire\r\n messageRequire=\"กรุณากรอกข้อมูล\"\r\n />\r\n }\r\n isRequire\r\n messageRequire=\"กรุณากรอกข้อมูล\"\r\n />\r\n }\r\n isRequire\r\n messageRequire=\"กรุณากรอกข้อมูล\"\r\n />\r\n \r\n }\r\n isRequire\r\n messageRequire=\"กรุณากรอกข้อมูล\"\r\n />\r\n {/* \r\n }\r\n /> */}\r\n \r\n `${value}`.replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\")\r\n }\r\n parser={(value) => value.replace(/\\$\\s?|(,*)/g, \"\")}\r\n style={{ width: \"100%\", borderRadius: \"25px\" }}\r\n />\r\n }\r\n isRequire\r\n messageRequire=\"กรุณากรอกข้อมูล\"\r\n />\r\n \r\n `${value}`.replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\")\r\n }\r\n parser={(value) => value.replace(/\\$\\s?|(,*)/g, \"\")}\r\n style={{ width: \"100%\", borderRadius: \"25px\" }}\r\n />\r\n }\r\n isRequire\r\n messageRequire=\"กรุณากรอกข้อมูล\"\r\n />\r\n \r\n }\r\n isRequire\r\n messageRequire=\"กรุณากรอกข้อมูล\"\r\n />\r\n \r\n }\r\n isRequire\r\n messageRequire=\"กรุณากรอกข้อมูล\"\r\n />\r\n \r\n }\r\n isRequire\r\n messageRequire=\"กรุณากรอกข้อมูล\"\r\n />\r\n \r\n }\r\n isRequire\r\n messageRequire=\"กรุณากรอกข้อมูล\"\r\n />\r\n \r\n }\r\n isRequire\r\n messageRequire=\"กรุณากรอกข้อมูล\"\r\n />\r\n \r\n }\r\n isRequire\r\n messageRequire=\"กรุณากรอกข้อมูล\"\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\n \r\n \r\n \r\n {isNaN(urlParams.projectId) ? 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\n \r\n \r\n {\"ตั้งค่าพิกัดโครงการ\"}\r\n \r\n }\r\n visible={isShowModalSetLocation}\r\n onCancel={dismissModalSetLocation}\r\n footer={null}\r\n width={1000}\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\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default ProjectInfoForm;\r\n","import React from \"react\";\r\nimport \"../Styles/VerticalLine.css\";\r\n\r\nconst VerticalLine = ({}) => {\r\n return (\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\n\r\nexport default VerticalLine;\r\n","import React from \"react\";\r\nimport { Button, Image } from \"antd\";\r\nimport AppConfig from \"../AppConfig\";\r\nimport { HomeIcon } from \"../Constants/Images\";\r\n\r\nconst HomeButton = () => {\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default HomeButton;\r\n","import React, { useEffect } from \"react\";\r\n// import { toast } from 'react-toastify';\r\nimport { Button } from \"antd\";\r\n// import AuthHelper from '../../Helper/AuthHelper';\r\n\r\nconst ButtonMenuLeftSide = ({ label, href, onClick, buttonProp }) => {\r\n useEffect(() => {\r\n // if (buttonProp) {\r\n // console.log(\r\n // `ButtonMenuLeftSide borderColor = ${buttonProp.borderColor} backgroundColor = ${buttonProp.backgroundColor}`\r\n // );\r\n // }\r\n }, []);\r\n\r\n return (\r\n \r\n \r\n {label}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default ButtonMenuLeftSide;\r\n","import React, { useEffect } from \"react\";\r\nimport { Row, Col } from \"antd\";\r\nimport ButtonMenuLeftSide from \"./ButtonMenuLeftSide\";\r\nimport CrossLine from \"./CrossLine\";\r\nconst MenuStepRow = ({ label, buttonStyle, href }) => {\r\n const rowHeigth = \"47px\";\r\n const paddingLeftLine = \"13px\";\r\n const circleColor = \"black\";\r\n useEffect(() => {}, []);\r\n\r\n return (\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 MenuStepRow;\r\n","import React, { useState, useEffect } from \"react\";\r\nimport { Row, Col } from \"antd\";\r\nimport AppConfig from \"../AppConfig\";\r\nimport VerticalLine from \"./VerticalLine\";\r\nimport HomeButton from \"./HomeButton\";\r\nimport MenuStepRow from \"./MenuStepRow\";\r\nconst MenuStep = ({ urlParams, selectedIndex }) => {\r\n const [buttonProps, setButtonprops] = useState([\r\n {},\r\n {},\r\n {},\r\n {},\r\n {},\r\n {},\r\n {},\r\n {},\r\n ]);\r\n\r\n const buttonInActive = {\r\n borderColor: \"orange\",\r\n background: \"black\",\r\n fontColor: \"orange\",\r\n };\r\n\r\n const buttonActive = {\r\n borderColor: \"orange\",\r\n background: \"linear-gradient(#f07725, #ff4200)\",\r\n fontColor: \"black\",\r\n };\r\n\r\n const rowHeigth = \"47px\";\r\n const paddingLeftLine = \"13px\";\r\n const circleColor = \"black\";\r\n useEffect(() => {\r\n changeActiveButton(selectedIndex);\r\n }, []);\r\n\r\n const changeActiveButton = (selectedIndex) => {\r\n const buttonNewProps = buttonProps.map((buttonProp, index) => {\r\n if (selectedIndex == index) {\r\n return (buttonProp = buttonActive);\r\n }\r\n return (buttonProp = buttonInActive);\r\n });\r\n // console.log(buttonNewProps);\r\n setButtonprops(buttonNewProps);\r\n };\r\n\r\n return (\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\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\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\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 MenuStep;\r\n","import React, { useState, useEffect } from \"react\";\r\nimport { Row, Col } from \"antd\";\r\nimport AppConfig from \"../AppConfig\";\r\nimport VerticalLine from \"./VerticalLine\";\r\nimport HomeButton from \"./HomeButton\";\r\nimport MenuStepRow from \"./MenuStepRow\";\r\nconst MenuStep = ({ urlParams, selectedIndex }) => {\r\n const [buttonProps, setButtonprops] = useState([\r\n {},\r\n {},\r\n {},\r\n {},\r\n {},\r\n {},\r\n {},\r\n {},\r\n ]);\r\n\r\n const buttonInActive = {\r\n borderColor: \"orange\",\r\n background: \"black\",\r\n fontColor: \"orange\",\r\n };\r\n\r\n const buttonActive = {\r\n borderColor: \"orange\",\r\n background: \"linear-gradient(#f07725, #ff4200)\",\r\n fontColor: \"black\",\r\n };\r\n\r\n const rowHeigth = \"47px\";\r\n const paddingLeftLine = \"13px\";\r\n const circleColor = \"black\";\r\n useEffect(() => {\r\n changeActiveButton(selectedIndex);\r\n }, []);\r\n\r\n const changeActiveButton = (selectedIndex) => {\r\n const buttonNewProps = buttonProps.map((buttonProp, index) => {\r\n if (selectedIndex == index) {\r\n return (buttonProp = buttonActive);\r\n }\r\n return (buttonProp = buttonInActive);\r\n });\r\n // console.log(buttonNewProps);\r\n setButtonprops(buttonNewProps);\r\n };\r\n\r\n return (\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\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\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\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default MenuStep;\r\n","import React, { useEffect } from \"react\";\r\n// import { toast } from 'react-toastify';\r\nimport NavBar2 from \"../../../Components/NavBar2\";\r\nimport ProjectInfoForm from \"./Components/ProjectInfoForm\";\r\n// import AuthHelper from '../../Helper/AuthHelper';\r\nimport { Row, Layout, Col } from \"antd\";\r\nimport { Background } from \"../../../Constants/Images\";\r\nimport MenuStep from \"../../../Components/MenuStep\";\r\nimport MenuStepOnlyInfo from \"../../../Components/MenuStepOnlyInfo\";\r\nconst Info = (props) => {\r\n // const { projectId } =;\r\n\r\n useEffect(() => {\r\n (async () => {\r\n // console.log(\"p id \", projectId);\r\n // if (parseInt(projectId)) {\r\n // console.log(\"get project info\");\r\n // await getProject(projectId);\r\n // }\r\n // await getProvince();\r\n })();\r\n }, []);\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {isNaN(props.match.params.projectId) ? (\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 Info;\r\n","const DownloadHelper = (function () {\r\n function downloadBlob(blob, filename) {\r\n const url = window.URL.createObjectURL(blob);\r\n const a = document.createElement(\"a\");\r\n a.style.display = \"none\";\r\n a.href = url;\r\n // the filename you want\r\n a.download = filename;\r\n document.body.appendChild(a);\r\n a.click();\r\n document.body.removeChild(a);\r\n window.URL.revokeObjectURL(url);\r\n }\r\n\r\n return {\r\n downloadBlob,\r\n };\r\n})();\r\n\r\nexport default DownloadHelper;\r\n","import React from \"react\";\r\nimport { toast } from \"react-toastify\";\r\nimport NavBar2 from \"../../../Components/NavBar2\";\r\nimport { Row, Layout, Col } from \"antd\";\r\n// import TableProjectMaterial from \"../../../Components/TableProjectMaterial\";\r\nimport SearchBar from \"../../../Components/SearchBar\";\r\nimport { Background } from \"../../../Constants/Images\";\r\nimport MenuStep from \"../../../Components/MenuStep\";\r\nimport ButtonSave from \"../../../Components/ButtonSave\";\r\nimport AppConfig from \"../../../AppConfig\";\r\nimport DownloadHelper from \"../../../Helpers/DownloadHelper\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { showLoading } from \"../../../Redux/LoadingReducer\";\r\nconst Material = (props) => {\r\n const dispatch = useDispatch();\r\n const onClickDownloadButton = async () => {\r\n dispatch(showLoading(true));\r\n const projectId = props.match.params.projectId;\r\n downloadAPI(projectId);\r\n };\r\n\r\n const downloadAPI = async (projectId) => {\r\n const response = await fetch(\r\n `${AppConfig.apiUrl}Material/project/${projectId}/download`,\r\n {\r\n method: \"GET\",\r\n }\r\n );\r\n\r\n if (response.status != 200) {\r\n toast.error(\"download ล้มเหลว\");\r\n return;\r\n }\r\n response.blob().then((blob) => {\r\n DownloadHelper.downloadBlob(blob, \"material.xlsm\");\r\n dispatch(showLoading(false));\r\n });\r\n };\r\n return (\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\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\n - ระบบประมาณราคาภาครัฐ by CCW -\r\n */}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Material;\r\n","export const columnBuilding = [\r\n {\r\n title: \"ลำดับที่\",\r\n dataIndex: \"number\",\r\n width: 140,\r\n align: \"center\",\r\n },\r\n {\r\n title: \"รายการ\",\r\n dataIndex: \"name\",\r\n width: 300,\r\n align: \"left\",\r\n },\r\n {\r\n title: \"จำนวน\",\r\n dataIndex: \"amount\",\r\n width: 100,\r\n align: \"center\",\r\n },\r\n {\r\n title: \"หน่วย\",\r\n dataIndex: \"unit\",\r\n width: 75,\r\n align: \"center\",\r\n },\r\n {\r\n title: \"ราคาวัสดุ\",\r\n dataIndex: \"material\",\r\n // width: 150,\r\n align: \"center\",\r\n children: [\r\n {\r\n title: \"ราคาหน่วยละ\",\r\n dataIndex: \"price\",\r\n width: 140,\r\n align: \"center\",\r\n },\r\n {\r\n title: \"จำนวนเงิน\",\r\n dataIndex: \"totalPrice\",\r\n width: 150,\r\n align: \"center\",\r\n },\r\n ],\r\n },\r\n {\r\n title: \"ค่าแรงงาน\",\r\n dataIndex: \"labour\",\r\n // width: 150,\r\n align: \"center\",\r\n children: [\r\n {\r\n title: \"ราคาหน่วยละ\",\r\n dataIndex: \"wage\",\r\n width: 140,\r\n align: \"center\",\r\n },\r\n {\r\n title: \"จำนวนเงิน\",\r\n dataIndex: \"totalWage\",\r\n width: 150,\r\n align: \"center\",\r\n },\r\n ],\r\n },\r\n {\r\n title: \"รวมค่าวัสดุและค่าแรงงาน\",\r\n dataIndex: \"finalPrice\",\r\n width: 200,\r\n align: \"center\",\r\n },\r\n];\r\nexport const columnDam = [\r\n {\r\n title: \"ลำดับที่\",\r\n dataIndex: \"number\",\r\n width: 140,\r\n align: \"center\",\r\n },\r\n {\r\n title: \"รายการ\",\r\n dataIndex: \"name\",\r\n width: 300,\r\n align: \"left\",\r\n },\r\n {\r\n title: \"ปริมาณ\",\r\n dataIndex: \"amount\",\r\n width: 100,\r\n align: \"center\",\r\n },\r\n {\r\n title: \"หน่วย\",\r\n dataIndex: \"unit\",\r\n width: 100,\r\n align: \"center\",\r\n },\r\n {\r\n title: \"ค่างานต้นทุน ต่อหน่วย (บาท)\",\r\n dataIndex: \"price\",\r\n width: 120,\r\n align: \"center\",\r\n },\r\n {\r\n title: \"ค่างานต้นทุนรวม (บาท)\",\r\n dataIndex: \"totalPrice\",\r\n width: 150,\r\n align: \"center\",\r\n },\r\n\r\n {\r\n title: \"ค่า Factor F\",\r\n dataIndex: \"factorF\",\r\n width: 120,\r\n align: \"center\",\r\n },\r\n {\r\n title: \"ราคากลาง\",\r\n dataIndex: \"\",\r\n // width: 150,\r\n align: \"center\",\r\n children: [\r\n {\r\n title: \"ราคากลาง ต่อหน่วย (บาท)\",\r\n dataIndex: \"priceFactorF\",\r\n width: 100,\r\n align: \"center\",\r\n },\r\n {\r\n title: \"ราคากลางรวม (บาท) \",\r\n dataIndex: \"finalPrice\",\r\n width: 150,\r\n align: \"center\",\r\n },\r\n ],\r\n },\r\n];\r\nexport const columnSpecial = [\r\n {\r\n title: \"ลำดับที่\",\r\n dataIndex: \"number\",\r\n width: 140,\r\n align: \"center\",\r\n },\r\n {\r\n title: \"รายการ\",\r\n dataIndex: \"name\",\r\n width: 300,\r\n align: \"left\",\r\n },\r\n {\r\n title: \"จำนวน\",\r\n dataIndex: \"amount\",\r\n width: 100,\r\n align: \"center\",\r\n },\r\n {\r\n title: \"หน่วย\",\r\n dataIndex: \"unit\",\r\n width: 75,\r\n align: \"center\",\r\n },\r\n {\r\n title: \"ค่าใช้จ่ายต่อหน่วย\",\r\n dataIndex: \"price\",\r\n width: 140,\r\n align: \"center\",\r\n },\r\n {\r\n title: \"ค่าใช้จ่ายรวม\",\r\n dataIndex: \"totalPrice\",\r\n width: 150,\r\n align: \"center\",\r\n },\r\n];\r\nexport const columnBuildingBK = [\r\n {\r\n title: \"ลำดับ\",\r\n dataIndex: \"number\",\r\n width: 320,\r\n align: \"center\",\r\n },\r\n {\r\n title: \"รายการ\",\r\n dataIndex: \"name\",\r\n width: 400,\r\n align: \"left\",\r\n },\r\n {\r\n title: \"จำนวน\",\r\n dataIndex: \"amount\",\r\n width: 70,\r\n align: \"center\",\r\n },\r\n {\r\n title: \"หน่วย\",\r\n dataIndex: \"unit\",\r\n width: 50,\r\n align: \"center\",\r\n },\r\n {\r\n title: \"วัสดุ\",\r\n dataIndex: \"material\",\r\n // width: 150,\r\n align: \"center\",\r\n children: [\r\n {\r\n title: \"ราคาต่อหน่วย\",\r\n dataIndex: \"price\",\r\n width: 100,\r\n align: \"center\",\r\n },\r\n {\r\n title: \"รวม\",\r\n dataIndex: \"totalPrice\",\r\n width: 150,\r\n align: \"center\",\r\n },\r\n ],\r\n },\r\n {\r\n title: \"ค่าแรง\",\r\n dataIndex: \"labour\",\r\n // width: 150,\r\n align: \"center\",\r\n children: [\r\n {\r\n title: \"ราคาต่อหน่วย\",\r\n dataIndex: \"wage\",\r\n width: 100,\r\n align: \"center\",\r\n },\r\n {\r\n title: \"รวม\",\r\n dataIndex: \"totalWage\",\r\n width: 150,\r\n align: \"center\",\r\n },\r\n ],\r\n },\r\n {\r\n title: \"รวมทั้งหมด\",\r\n dataIndex: \"finalPrice\",\r\n width: 200,\r\n align: \"center\",\r\n },\r\n];\r\n\r\nexport const columnDamBk = [\r\n {\r\n title: \"ลำดับ\",\r\n dataIndex: \"number\",\r\n width: 320,\r\n align: \"center\",\r\n },\r\n {\r\n title: \"รายการ\",\r\n dataIndex: \"name\",\r\n width: 400,\r\n align: \"left\",\r\n },\r\n {\r\n title: \"จำนวน\",\r\n dataIndex: \"amount\",\r\n width: 70,\r\n align: \"center\",\r\n },\r\n {\r\n title: \"หน่วย\",\r\n dataIndex: \"unit\",\r\n width: 55,\r\n align: \"center\",\r\n },\r\n {\r\n title: \" ค่างานต้นทุนต่อหน่วย\",\r\n dataIndex: \"material\",\r\n // width: 150,\r\n align: \"center\",\r\n children: [\r\n {\r\n title: \"ราคาต่อหน่วย\",\r\n dataIndex: \"price\",\r\n width: 100,\r\n align: \"center\",\r\n },\r\n {\r\n title: \"รวม\",\r\n dataIndex: \"totalPrice\",\r\n width: 150,\r\n align: \"center\",\r\n },\r\n ],\r\n },\r\n {\r\n title: \"factorf\",\r\n dataIndex: \"factorF\",\r\n width: 60,\r\n align: \"center\",\r\n },\r\n {\r\n title: \"รวมทั้งหมด\",\r\n dataIndex: \"finalPrice\",\r\n width: 200,\r\n align: \"center\",\r\n },\r\n];\r\n\r\nexport const columnBlank = [\r\n {\r\n title: \"\",\r\n dataIndex: \"\",\r\n width: 100,\r\n align: \"center\",\r\n },\r\n];\r\n\r\nexport const columnPR5Dam = [\r\n {\r\n title: \"ลำดับ\",\r\n dataIndex: \"number\",\r\n width: 70,\r\n align: \"center\",\r\n },\r\n {\r\n title: \"รายการ\",\r\n dataIndex: \"name\",\r\n width: 400,\r\n align: \"center\",\r\n },\r\n {\r\n title: \"รวมเป็นเงิน (บาท)\",\r\n dataIndex: \"totalFinalPriceString\",\r\n width: 200,\r\n align: \"center\",\r\n },\r\n];\r\n\r\nexport const columnPR6Dam = [\r\n {\r\n title: \"ลำดับ\",\r\n dataIndex: \"number\",\r\n width: 70,\r\n align: \"center\",\r\n },\r\n {\r\n title: \"รายการ\",\r\n dataIndex: \"name\",\r\n width: 400,\r\n align: \"center\",\r\n },\r\n {\r\n title: \"รวมเป็นเงิน (บาท)\",\r\n dataIndex: \"totalFinalPriceString\",\r\n width: 200,\r\n align: \"center\",\r\n },\r\n];\r\n\r\nexport const columnPR5Building = [\r\n {\r\n title: \"ลำดับ\",\r\n dataIndex: \"number\",\r\n width: 70,\r\n align: \"center\",\r\n },\r\n {\r\n title: \"รายการ\",\r\n dataIndex: \"name\",\r\n width: 400,\r\n align: \"center\",\r\n },\r\n {\r\n title: \"ค่าวัสดุและค่าแรงงาน (บาท)\",\r\n dataIndex: \"totalPriceAndWageString\",\r\n width: 400,\r\n align: \"center\",\r\n },\r\n {\r\n title: \"FACTOR F\",\r\n dataIndex: \"factorF\",\r\n width: 100,\r\n align: \"center\",\r\n },\r\n {\r\n title: \"รวมเป็นเงิน (บาท)\",\r\n dataIndex: \"totalFinalPriceString\",\r\n width: 200,\r\n align: \"center\",\r\n },\r\n];\r\n\r\nexport const columnPR6Building = [\r\n {\r\n title: \"ลำดับ\",\r\n dataIndex: \"number\",\r\n width: 70,\r\n align: \"center\",\r\n },\r\n {\r\n title: \"รายการ\",\r\n dataIndex: \"name\",\r\n width: 400,\r\n align: \"center\",\r\n },\r\n {\r\n title: \"ค่าวัสดุและค่าแรงงาน (บาท)\",\r\n dataIndex: \"totalPriceAndWageString\",\r\n width: 400,\r\n align: \"center\",\r\n },\r\n {\r\n title: \"FACTOR F\",\r\n dataIndex: \"factorF\",\r\n width: 100,\r\n align: \"center\",\r\n },\r\n {\r\n title: \"รวมเป็นเงิน (บาท)\",\r\n dataIndex: \"totalFinalPriceString\",\r\n width: 200,\r\n align: \"center\",\r\n },\r\n];\r\n","import React from \"react\";\r\n// import { toast } from 'react-toastify';\r\nimport { Button } from \"antd\";\r\n// import AuthHelper from '../../Helper/AuthHelper';\r\n\r\nconst ButtonUpload = ({\r\n label,\r\n borderColor,\r\n background,\r\n fontColor,\r\n fontSize,\r\n width,\r\n height,\r\n borderWidth,\r\n labelPaddingTop,\r\n onClick,\r\n}) => {\r\n return (\r\n \r\n \r\n {label}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default ButtonUpload;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport \"antd/dist/antd.css\";\r\nimport \"../../../../Styles/Table.css\";\r\nimport { toast } from \"react-toastify\";\r\nimport { Col, Row, Input, Table, Popconfirm, Button } from \"antd\";\r\nimport { DeleteOutlined, CloudDownloadOutlined } from \"@ant-design/icons\";\r\nimport HTTP from \"../../../../https/HTTP\";\r\nimport HTTPUtils from \"../../../../https/HTTPUtils\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { showLoading } from \"../../../../Redux/LoadingReducer\";\r\nimport AppConfig from \"../../../../AppConfig\";\r\nimport DownloadHelper from \"../../../../Helpers/DownloadHelper\";\r\n\r\nconst TableDocument = ({ dataTable, onDeleteRow }) => {\r\n const column = [\r\n {\r\n title: \"รายการ\",\r\n dataIndex: \"name\",\r\n width: 800,\r\n align: \"center\",\r\n },\r\n {\r\n title: \"\",\r\n key: \"action\",\r\n align: \"center\",\r\n render: (text, record) => (\r\n \r\n ),\r\n },\r\n {\r\n title: \"\",\r\n dataIndex: \"operation\",\r\n align: \"center\",\r\n render: (text, record) => (\r\n onDeleteRow(record)}\r\n okText=\"ตกลง\"\r\n cancelText=\"ยกเลิก\"\r\n >\r\n \r\n \r\n ),\r\n },\r\n ];\r\n\r\n const downloadAPI = async (url, name) => {\r\n const response = await fetch(url, {\r\n method: \"GET\",\r\n });\r\n\r\n if (response.status != 200) {\r\n toast.error(\"download ล้มเหลว\");\r\n return;\r\n }\r\n response.blob().then((blob) => DownloadHelper.downloadBlob(blob, name));\r\n };\r\n\r\n const onDownload = async (record) => {\r\n var url = \"\";\r\n if (record.projectItemId) {\r\n url = `${AppConfig.apiUrl}projectitemdocument/download/item/${record.key}`;\r\n } else if (record.projectSpecialItemId) {\r\n url = `${AppConfig.apiUrl}projectitemdocument/download/specialItem/${record.key}`;\r\n } else {\r\n toast.error(\"ไม่พบข้อมูลการลบ\");\r\n return;\r\n }\r\n\r\n downloadAPI(url, record.name);\r\n // console.log(record);\r\n };\r\n\r\n return (\r\n {\r\n // return {\r\n // onClick: (event) => {\r\n // console.log(\"record \", record);\r\n // // console.log(\"rowIndex \", rowIndex);\r\n // // if (record.unit) {\r\n // // openModal(record);\r\n // // } else {\r\n // // openModalNewItem(record);\r\n // // }\r\n // }, // click row\r\n // };\r\n // }}\r\n />\r\n );\r\n};\r\n\r\nexport default TableDocument;\r\n","import React, { useState, useEffect } from \"react\";\r\nimport { toast } from \"react-toastify\";\r\nimport \"../../../../Styles/Upload.css\";\r\nimport { Row, Upload, Button } from \"antd\";\r\nimport ButtonUpload from \"./ButtonUpload\";\r\nimport AppConfig from \"../../../../AppConfig\";\r\n\r\nconst UploadDocument = ({ handleUpload, fileList }) => {\r\n // const [fileList, setFileList] = useState([]);\r\n\r\n // const handleUpload1 = ({ fileList }) => {\r\n // console.log(\"handle upload\");\r\n // console.log(\"fileList\", fileList);\r\n // setFileList(fileList);\r\n // };\r\n\r\n // const handlePreview = (file) => {\r\n // console.log(file.originFileObj);\r\n // DownloadHelper.downloadBlob(file.originFileObj, \"reportPR5.png\");\r\n // };\r\n\r\n const uploadImage = async (options) => {\r\n const { onSuccess, onError, file, onProgress } = options;\r\n onSuccess(\"Ok\");\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default UploadDocument;\r\n","import React, { useState, useEffect } from \"react\";\r\nimport { toast } from \"react-toastify\";\r\nimport \"../../../../Styles/Upload.css\";\r\nimport {\r\n Form,\r\n Modal,\r\n Row,\r\n Col,\r\n Input,\r\n InputNumber,\r\n Radio,\r\n Space,\r\n Button,\r\n} from \"antd\";\r\nimport ButtonSave from \"../../../../Components/ButtonSave\";\r\nimport DownloadHelper from \"../../../../Helpers/DownloadHelper\";\r\nimport ButtonUpload from \"./ButtonUpload\";\r\nimport TableDocument from \"./TableDocument\";\r\nimport AppConfig from \"../../../../AppConfig\";\r\nimport UploadDocument from \"./UploadDocument\";\r\n\r\nconst ModalItem = ({\r\n formModalItem,\r\n isShowModalItem,\r\n dismissModalItem,\r\n modalItemData,\r\n customFields,\r\n optionFields,\r\n onSubmitModalItem,\r\n handleUpload,\r\n fileList,\r\n isDisplayUploadDocument,\r\n dataTableDocument,\r\n onDeleteRowTableDocument,\r\n}) => {\r\n const radioSelectWageComponents = (option, index) => {\r\n return (\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\n\r\n const optionFieldsComponents = (optionInput) => {\r\n //longest word ปริมาณตั้งแต่ 25 - 100 ลบ.ม. หรือขุดลึก 1.00-1.50 ม.\r\n return (\r\n
\r\n {optionInput?.options?.length > 0 ? (\r\n \r\n \r\n \r\n \r\n \r\n {optionInput?.options?.map((o, index) =>\r\n radioSelectWageComponents(o, index)\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 const priceAndWageInputComponent = (itemInput) => {\r\n return (\r\n
\r\n {itemInput?.isPriceEditable ? (\r\n \r\n \r\n {\"ราคาต่อหน่วย\"}\r\n \r\n \r\n \r\n \r\n `${value}`.replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\")\r\n }\r\n parser={(value) => value.replace(/\\$\\s?|(,*)/g, \"\")}\r\n style={{ width: \"100%\", borderRadius: \"25px\" }}\r\n placeholder={\"ราคาต่อหน่วย\"}\r\n defaultValue={itemInput.priceEdit}\r\n >\r\n \r\n \r\n \r\n ) : null}\r\n {itemInput?.isWageEditable ? (\r\n \r\n \r\n {\"ค่าแรง\"}\r\n \r\n \r\n \r\n \r\n `${value}`.replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\")\r\n }\r\n parser={(value) => value.replace(/\\$\\s?|(,*)/g, \"\")}\r\n style={{ width: \"100%\", borderRadius: \"25px\" }}\r\n placeholder={\"ค่าแรง\"}\r\n defaultValue={itemInput.wageEdit}\r\n >\r\n \r\n \r\n \r\n ) : null}\r\n
\r\n );\r\n };\r\n\r\n const CustomFieldComponents = (field, index) => {\r\n return (\r\n
\r\n \r\n \r\n {field.name}\r\n \r\n \r\n \r\n field.columnRow.includes(co))\r\n // ? true\r\n // : false\r\n field?.isDisable\r\n }\r\n formatter={(value) =>\r\n `${value}`.replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\")\r\n }\r\n parser={(value) => value.replace(/\\$\\s?|(,*)/g, \"\")}\r\n style={{ width: \"100%\", borderRadius: \"25px\" }}\r\n placeholder={\"จำนวน\"}\r\n >\r\n \r\n \r\n \r\n {field.unit}\r\n \r\n \r\n
\r\n );\r\n };\r\n\r\n const uploadComponent = () => {\r\n if (isDisplayUploadDocument) {\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {dataTableDocument?.length > 0 ? (\r\n \r\n \r\n \r\n ) : null}\r\n
\r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n return (\r\n \r\n {modalItemData?.name}\r\n \r\n }\r\n visible={isShowModalItem}\r\n onCancel={dismissModalItem}\r\n footer={null}\r\n width={1000}\r\n >\r\n
\r\n \r\n 0 ? 10 : 3}\r\n style={{ paddingTop: \"3px\" }}\r\n >\r\n จำนวน\r\n \r\n\r\n \r\n \r\n \r\n `${value}`.replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\")\r\n }\r\n parser={(value) => value.replace(/\\$\\s?|(,*)/g, \"\")}\r\n style={{ width: \"100%\", borderRadius: \"25px\" }}\r\n placeholder={\"จำนวน\"}\r\n >\r\n \r\n \r\n \r\n \r\n {modalItemData?.unit}\r\n \r\n \r\n \r\n {customFields.map((c, index) => CustomFieldComponents(c, index))}\r\n {optionFieldsComponents(optionFields)}\r\n {priceAndWageInputComponent(modalItemData)}\r\n {uploadComponent()}\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 ModalItem;\r\n","import React, { useState, useEffect } from \"react\";\r\nimport { Form, Modal, Row, Col, Input, InputNumber, Select } from \"antd\";\r\nimport ButtonSave from \"../../../../Components/ButtonSave\";\r\nconst { Option } = Select;\r\nconst ModalNewItem = ({\r\n formModalNewItem,\r\n isShowModalNewItem,\r\n dismissModalNewItem,\r\n onSubmitModalNewItem,\r\n}) => {\r\n return (\r\n \r\n {\"เพิ่มรายการ\"}\r\n \r\n }\r\n visible={isShowModalNewItem}\r\n onCancel={dismissModalNewItem}\r\n footer={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\n \r\n จำนวน\r\n \r\n \r\n \r\n \r\n `${value}`.replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\")\r\n }\r\n parser={(value) => value.replace(/\\$\\s?|(,*)/g, \"\")}\r\n style={{ width: \"100%\", borderRadius: \"25px\" }}\r\n placeholder={\"จำนวน\"}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n ราคาต่อหน่วย\r\n \r\n \r\n \r\n \r\n `${value}`.replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\")\r\n }\r\n parser={(value) => value.replace(/\\$\\s?|(,*)/g, \"\")}\r\n style={{ width: \"100%\", borderRadius: \"25px\" }}\r\n placeholder={\"ราคาต่อหน่วย\"}\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\n ค่าแรง\r\n \r\n \r\n \r\n \r\n `${value}`.replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\")\r\n }\r\n parser={(value) => value.replace(/\\$\\s?|(,*)/g, \"\")}\r\n style={{ width: \"100%\", borderRadius: \"25px\" }}\r\n placeholder={\"ค่าแรง\"}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n Factor F\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\n};\r\n\r\nexport default ModalNewItem;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport \"antd/dist/antd.css\";\r\nimport \"../../../../Styles/Table.css\";\r\nimport { toast } from \"react-toastify\";\r\nimport { Col, Row, Table, Form, Select } from \"antd\";\r\n// import { DeleteOutlined } from \"@ant-design/icons\";\r\nimport HTTP from \"../../../../https/HTTP\";\r\nimport HTTPUtils from \"../../../../https/HTTPUtils\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { showLoading } from \"../../../../Redux/LoadingReducer\";\r\nimport ButtonSave from \"../../../../Components/ButtonSave\";\r\nimport { columnSpecial } from \"../../../../Constants/ColumnFormat\";\r\nimport ModalItem from \"./ModalItem\";\r\nimport ModalNewItem from \"./ModalNewItem\";\r\nimport AppConfig from \"../../../../AppConfig\";\r\n\r\nconst TablePR4 = ({ selectedGroupProp, projectId, columnFormat }) => {\r\n const dispatch = useDispatch();\r\n const [isShowModalItem, setIsShowModalItem] = useState(false);\r\n const [modalItemData, setModalItemData] = useState();\r\n const [formModalItem] = Form.useForm();\r\n const [dataTable, setDataTable] = useState([]);\r\n const [selectedRowKeys, setSelectedRowKeys] = useState([]);\r\n const [selectedRowData, setSelectedRowData] = useState([]);\r\n const [deleteIds, setDeleteIds] = useState([]);\r\n\r\n const [isShowModalNewItem, setIsShowModalNewItem] = useState();\r\n const [formModalNewItem] = Form.useForm();\r\n const [modalNewItemData, setModalNewItemData] = useState();\r\n const [deleteSpecialIds, setDeleteSpecialIds] = useState([]);\r\n\r\n const [customFields, setCustomFields] = useState([]);\r\n const [customSubmitInfo, setCustomSubmitInfo] = useState();\r\n const [optionFields, setOptionFields] = useState({});\r\n const [fileList, setFileList] = useState([]);\r\n const [isDisplayUploadDocument, setIsDisplayUploadDocument] = useState(false);\r\n const [dataTableDocument, setDataTableDocument] = useState([]);\r\n // const [columnTable, setColumnTable] = useState([]);\r\n // const [deepSearchArray, setDeepSearchArray] = useState([]);\r\n let deepSeachArray = [];\r\n useEffect(() => {\r\n (async () => {\r\n dispatch(showLoading(true));\r\n if (selectedGroupProp) {\r\n await getItems(selectedGroupProp);\r\n }\r\n dispatch(showLoading(false));\r\n })();\r\n }, [selectedGroupProp]);\r\n\r\n useEffect(() => {\r\n (async () => {})();\r\n if (dataTable) {\r\n if (dataTable.length > 0) {\r\n // setSelectedRowKeys([\"1-1\"]);\r\n deepSeachArray = [];\r\n deepSearchResultArray(dataTable, \"isSelected\", (k, v) => v === true);\r\n const rowKeys = deepSeachArray.map((d) => d.key);\r\n // console.log(rowKeys);\r\n setSelectedRowKeys(rowKeys);\r\n }\r\n }\r\n }, [dataTable]);\r\n\r\n useEffect(() => {\r\n if (isShowModalItem && modalItemData) {\r\n formModalItem.setFieldsValue({\r\n amount: modalItemData?.amount,\r\n key: modalItemData?.key,\r\n wage: optionFields?.defaultValue,\r\n unit: modalItemData?.unit,\r\n name: modalItemData?.name,\r\n priceEdit: modalItemData?.price,\r\n wageEdit: modalItemData?.wage,\r\n });\r\n }\r\n }, [isShowModalItem, modalItemData]);\r\n\r\n useEffect(() => {\r\n (async () => {\r\n dispatch(showLoading(true));\r\n if (isShowModalItem && customFields) {\r\n // console.log(\"customFields=========\");\r\n // console.log(customFields);\r\n const columnRowValues = customFields.map((c) => c.value);\r\n formModalItem.setFieldsValue({\r\n columnRowValues: columnRowValues,\r\n });\r\n }\r\n dispatch(showLoading(false));\r\n })();\r\n }, [isShowModalItem, customFields]);\r\n\r\n useEffect(() => {\r\n if (isShowModalNewItem && modalNewItemData) {\r\n formModalNewItem.setFieldsValue({ key: modalNewItemData?.key });\r\n }\r\n }, [isShowModalNewItem, modalNewItemData]);\r\n\r\n const getItems = async (selectedGroupProp) => {\r\n let workGroupId = selectedGroupProp?.workGroupId;\r\n let subWorkGroupId = selectedGroupProp?.subWorkGroupId;\r\n if (!workGroupId) {\r\n workGroupId = 0;\r\n }\r\n\r\n if (!subWorkGroupId) {\r\n subWorkGroupId = 0;\r\n }\r\n\r\n if (subWorkGroupId == 0) {\r\n //get selected item by or get all and filter selected ??\r\n }\r\n\r\n const http = HTTP(\r\n \"GET\",\r\n `projectitem/project/${projectId}/workgroup/${workGroupId}/subworkgroup/${subWorkGroupId}`\r\n );\r\n const response = await http.execute();\r\n if (HTTPUtils.isSuccess(response)) {\r\n setDataTable(response.data);\r\n } else {\r\n //show error\r\n }\r\n };\r\n\r\n const onSelectChange = (record, selected, selectedRows) => {\r\n // console.log(\"selectRows\");\r\n // console.log(selectedRows);\r\n // console.log(\"selected\");\r\n // console.log(selected);\r\n // console.log(\"record\");\r\n // console.log(record);\r\n //TODO: Know bug assume that we have projectItemId 1 and 2,3 is a child ถ้า uncheck 1 ออกจะลงว่า delete add [1,2,3]\r\n // แต่พอไปเพิ่ม 2 ก็จะลงว่า delete add [1,3] แล้วไป check 3 ก็จะเป็น [1] ซึ่งจริงๆควรจะลบ 1 ออกไปด้วยแต่ไม่เป็นไร เพราะสุดท้าย\r\n // เวลา get ค่าจาก api แล้วแสดงใน table มันจะแสดงว่า 1 , 2, 3 check\r\n if (!selected) {\r\n deepSeachArray = [];\r\n deepSearchResultArray(record, \"id\", (k, v) => v > 0);\r\n const deleteIdsConCat = [...deleteIds].concat(\r\n deepSeachArray\r\n .filter(\r\n (d) =>\r\n !isProjectSpecialItem(d.key) && !isProjectAccessoryItem(d.key)\r\n )\r\n .map((d) => d.projectItemId)\r\n );\r\n setDeleteIds(deleteIdsConCat);\r\n\r\n const deleteSpecialIdsConCat = [...deleteSpecialIds].concat(\r\n deepSeachArray\r\n .filter((d) => isProjectSpecialItem(d.key))\r\n .map((d) => d.id)\r\n );\r\n setDeleteSpecialIds(deleteSpecialIdsConCat);\r\n // if (record.projectItemId) {\r\n // const itemIds = [...deleteIds].push(record.projectItemId);\r\n // setDeleteIds(itemIds);\r\n // } else {\r\n // //special item\r\n // const itemSpecialIds = [...deleteSpecialIds].push(record.id);\r\n // setDeleteSpecialIds(itemSpecialIds);\r\n // }\r\n } else {\r\n deepSeachArray = [];\r\n deepSearchResultArray(record, \"id\", (k, v) => v > 0);\r\n const unDeleteIds = deepSeachArray\r\n .filter(\r\n (d) => !isProjectSpecialItem(d.key) && !isProjectAccessoryItem(d.key)\r\n )\r\n .map((d) => d.projectItemId);\r\n const differenceIds = [...deleteIds].filter(\r\n (d) => !unDeleteIds.includes(d)\r\n );\r\n setDeleteIds(differenceIds);\r\n const unDeleteSpecialIds = deepSeachArray\r\n .filter((d) => isProjectSpecialItem(d.key))\r\n .map((d) => d.id);\r\n const differenceSpecialIds = [...deleteSpecialIds].filter(\r\n (d) => !unDeleteSpecialIds.includes(d)\r\n );\r\n setDeleteSpecialIds(differenceSpecialIds);\r\n }\r\n\r\n let keys = selectedRows.map((item) => item.key);\r\n // console.log(keys);\r\n setSelectedRowKeys(keys);\r\n setSelectedRowData(selectedRows);\r\n // this.setState({ selectedRowKeys });\r\n };\r\n\r\n const rowSelection = {\r\n selectedRowKeys,\r\n type: \"checkbox\",\r\n // fixed: true,\r\n onSelect: onSelectChange,\r\n // columnTitle: headerCheckbox,\r\n // onSelectAll: this.handleSelectAll\r\n onSelectAll: (selected, selectedRows, changeRows) => {\r\n console.log(selected, selectedRows, changeRows);\r\n },\r\n };\r\n\r\n let findIsSelected = (data) => {\r\n return data.some(function (e) {\r\n if (e.isSelected == true) return true;\r\n else if (e.children) return findIsSelected(e.children);\r\n });\r\n };\r\n\r\n const filterSelectedData = (dataInput) => {\r\n let result = [...dataInput].filter((data) => {\r\n let arr = [];\r\n arr.push(data);\r\n if (findIsSelected(arr)) {\r\n // console.log(\"found step1\");\r\n let dataLV2 = data.children;\r\n if (dataLV2) {\r\n const dataLV2Static = [...dataLV2];\r\n for (let i = 0; i < dataLV2Static.length; i++) {\r\n let arrLV2 = [];\r\n arrLV2.push(dataLV2Static[i]);\r\n if (!findIsSelected(arrLV2)) {\r\n // console.log(\"remove lv2 i = \", i);\r\n let indexLV2 = dataLV2\r\n .map((d) => {\r\n return d.key;\r\n })\r\n .indexOf(dataLV2Static[i].key);\r\n dataLV2.splice(indexLV2, 1);\r\n // console.log(dataLV2);\r\n } else {\r\n let dataLV3 = dataLV2Static[i].children;\r\n if (!dataLV3) continue;\r\n const dataLV3Static = [...dataLV3];\r\n for (let j = 0; j < dataLV3Static.length; j++) {\r\n let arrLV3 = [];\r\n arrLV3.push(dataLV3Static[j]);\r\n if (!findIsSelected(arrLV3)) {\r\n // console.log(\"remove lv3 j = \" + j + \" i = \" + i);\r\n let indexLV3 = dataLV3\r\n .map((d) => {\r\n return d.key;\r\n })\r\n .indexOf(dataLV3Static[j].key);\r\n dataLV3.splice(indexLV3, 1);\r\n // console.log(dataLV3);\r\n } else {\r\n let dataLV4 = dataLV3Static[j].children;\r\n if (!dataLV4) continue;\r\n const dataLV4Static = [...dataLV4];\r\n for (let k = 0; k < dataLV4Static.length; k++) {\r\n let arrLV4 = [];\r\n arrLV4.push(dataLV4Static[k]);\r\n if (!findIsSelected(arrLV4)) {\r\n // console.log(\r\n // \"remove lv4 k = \" + k + \" j = \" + j + \" i = \" + i\r\n // );\r\n let indexLV4 = dataLV4\r\n .map((d) => {\r\n return d.key;\r\n })\r\n .indexOf(dataLV4Static[k].key);\r\n dataLV4.splice(indexLV4, 1);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n return data;\r\n } else {\r\n // console.log(\"not found\");\r\n }\r\n });\r\n // let result1 = data3.map((data) => data.key);\r\n // console.log(result);\r\n return result;\r\n };\r\n\r\n const save = async () => {\r\n if (\r\n (!selectedRowData || selectedRowData.length === 0) &&\r\n (!deleteIds || deleteIds.length === 0)\r\n ) {\r\n toast.error(\"ไม่มีข้อมูลให้บันทึก\");\r\n return;\r\n }\r\n\r\n dispatch(showLoading(true));\r\n var rowData = [...selectedRowData].filter(\r\n (d) => !isProjectSpecialItem(d.key) && !isProjectAccessoryItem(d.key)\r\n );\r\n let createRequest = rowData.map((d) => {\r\n return PrepareCreateOrUpdateRequest(d);\r\n });\r\n\r\n if (deleteIds.length > 0) {\r\n const deleteRemoveNull = deleteIds.filter((d) => d != null);\r\n const deleteRequest = { ids: deleteRemoveNull };\r\n // console.log(deleteRequest);\r\n const http = HTTP(\"POST\", `projectitem/delete`, null, deleteRequest);\r\n const response = await http.execute();\r\n if (HTTPUtils.isSuccess(response)) {\r\n if (createRequest.length === 0) {\r\n toast.success(\"บันทึกรายการลบสำเร็จ\");\r\n }\r\n } else {\r\n toast.error(\"บันทึกรายการลบล้มเหลว\");\r\n dispatch(showLoading(false));\r\n return;\r\n }\r\n }\r\n\r\n if (deleteSpecialIds.length > 0) {\r\n const deleteRemoveNull = deleteSpecialIds.filter((d) => d != null);\r\n const deleteRequest = { ids: deleteRemoveNull };\r\n const http = HTTP(\r\n \"POST\",\r\n `projectSpecialItem/delete`,\r\n null,\r\n deleteRequest\r\n );\r\n const response = await http.execute();\r\n if (HTTPUtils.isSuccess(response)) {\r\n if (createRequest.length === 0) {\r\n toast.success(\"บันทึกรายการพิเศษลบสำเร็จ\");\r\n }\r\n } else {\r\n toast.error(\"บันทึกรายการลบล้มเหลว\");\r\n dispatch(showLoading(false));\r\n return;\r\n }\r\n }\r\n\r\n if (createRequest.length > 0) {\r\n const http = HTTP(\r\n \"POST\",\r\n `projectitem/createOrUpdate`,\r\n null,\r\n createRequest\r\n );\r\n const response = await http.execute();\r\n if (HTTPUtils.isSuccess(response)) {\r\n toast.success(\"บันทึกสำเร็จ\");\r\n } else {\r\n toast.error(\"บันทึกล้มเหลว\");\r\n }\r\n }\r\n\r\n setSelectedRowData([]);\r\n setDeleteIds([]);\r\n setDeleteSpecialIds([]);\r\n await getItems(selectedGroupProp);\r\n dispatch(showLoading(false));\r\n };\r\n\r\n const PrepareCreateOrUpdateRequest = (d) => {\r\n let itemId = GetItemIdByKey(d);\r\n // console.log(itemId);\r\n const subWorkGroupId =\r\n selectedGroupProp?.subWorkGroupId === 0\r\n ? null\r\n : selectedGroupProp.subWorkGroupId;\r\n const workGroupId =\r\n selectedGroupProp?.workGroupId === 0\r\n ? null\r\n : selectedGroupProp.workGroupId;\r\n\r\n var obj = Object.assign(\r\n {\r\n projectId: projectId,\r\n workGroupId: workGroupId,\r\n subWorkGroupId: subWorkGroupId,\r\n factorFTypeId: d.factorFTypeId,\r\n price: d.price,\r\n factorF: d.factorF,\r\n wage: d.wage,\r\n unit: d.unit,\r\n name: d.name,\r\n amount: d.amount,\r\n id: d.projectItemId,\r\n number: d.number,\r\n },\r\n itemId\r\n );\r\n\r\n return obj;\r\n };\r\n\r\n const GetItemIdByKey = (data) => {\r\n if (data.key.includes(\"-\")) {\r\n let keySplit = data.key.split(\"-\");\r\n if (keySplit.length === 2) {\r\n return { SubItemId1: data.id };\r\n } else if (keySplit.length === 3) {\r\n return { SubItemId2: data.id };\r\n } else if (keySplit.length === 4) {\r\n return { SubItemId3: data.id };\r\n }\r\n } else {\r\n return { itemId: data.id };\r\n }\r\n };\r\n\r\n const deepSearchResultArray = (object, key, predicate) => {\r\n if (object.hasOwnProperty(key) && predicate(key, object[key]) === true) {\r\n deepSeachArray.push(object);\r\n }\r\n\r\n for (let i = 0; i < Object.keys(object).length; i++) {\r\n let value = object[Object.keys(object)[i]];\r\n if (typeof value === \"object\" && value != null) {\r\n let o = deepSearchResultArray(\r\n object[Object.keys(object)[i]],\r\n key,\r\n predicate\r\n );\r\n if (o != null) {\r\n deepSeachArray.push(o);\r\n }\r\n }\r\n }\r\n return null;\r\n };\r\n\r\n const findItemByKey = (object, key, predicate) => {\r\n if (object.hasOwnProperty(key) && predicate(key, object[key]) === true) {\r\n return object;\r\n }\r\n\r\n for (let i = 0; i < Object.keys(object).length; i++) {\r\n let value = object[Object.keys(object)[i]];\r\n if (typeof value === \"object\" && value != null) {\r\n let o = findItemByKey(object[Object.keys(object)[i]], key, predicate);\r\n if (o != null) {\r\n return o;\r\n }\r\n }\r\n }\r\n return null;\r\n };\r\n\r\n const isNumeric = (str) => {\r\n if (typeof str != \"string\") return false; // we only process strings!\r\n return (\r\n !isNaN(str) && // use type coercion to parse the _entirety_ of the string (`parseFloat` alone does not do this)...\r\n !isNaN(parseFloat(str))\r\n ); // ...and ensure strings of whitespace fail\r\n };\r\n\r\n const readExcel = async (request) => {\r\n const http = HTTP(\"POST\", `excel/read`, null, request);\r\n const response = await http.execute();\r\n if (HTTPUtils.isSuccess(response)) {\r\n // console.log(response.data);\r\n return response.data;\r\n // setDataTable(response.data);\r\n } else {\r\n //show error\r\n return null;\r\n }\r\n };\r\n\r\n const openModal = async (data) => {\r\n setModalItemData({\r\n amount: data.amount,\r\n key: data.key,\r\n isPriceEditable: data.isPriceEditable,\r\n isWageEditable: data.isWageEditable,\r\n name: data.name,\r\n unit: data.unit,\r\n price: data.price,\r\n wage: data.wage,\r\n id: data.id, // id = projectItemId or projectSpecialItemId look at data.key value\r\n projectItemId: data.projectItemId,\r\n });\r\n\r\n if (data.additionalContent) {\r\n // console.log(data.additionalContent);\r\n var content = JSON.parse(data.additionalContent);\r\n // for ระบบระบายน้ำ custom item\r\n if (content.fields?.length > 0) {\r\n if (data.isSelected) {\r\n const requestReadExcel = {\r\n projectId: projectId,\r\n sheetName: content.writeSheetName,\r\n columnRows: content.fields.map((c) => c.columnRow),\r\n };\r\n dispatch(showLoading(true));\r\n const responseRead = await readExcel(requestReadExcel);\r\n if (responseRead && responseRead.length > 0) {\r\n for (let i = 0; i < responseRead.length; i++) {\r\n content.fields[i].value = responseRead[i].value;\r\n }\r\n }\r\n dispatch(showLoading(false));\r\n }\r\n\r\n setCustomFields(content.fields);\r\n setCustomSubmitInfo({\r\n submitUrl: content.submitUrl,\r\n writeSheetName: content.writeSheetName,\r\n calculateSheetNames: content.calculateSheetNames,\r\n resultSheetName: content.resultSheetName,\r\n resultColumnRow: content.resultColumnRow,\r\n });\r\n }\r\n\r\n // for งานอาคาร which have multiple wage\r\n if (content.options?.length > 0) {\r\n const requestReadExcel = {\r\n projectId: projectId,\r\n sheetName: content.readSheetName,\r\n columnRows: content.options.map((c) => c.columnRow),\r\n };\r\n dispatch(showLoading(true));\r\n const responseRead = await readExcel(requestReadExcel);\r\n console.log(responseRead);\r\n if (responseRead && responseRead.length > 0) {\r\n for (let i = 0; i < responseRead.length; i++) {\r\n content.options[i].value = responseRead[i].value;\r\n }\r\n }\r\n dispatch(showLoading(false));\r\n setOptionFields({\r\n defaultValue: data.wage,\r\n options: content.options,\r\n });\r\n }\r\n }\r\n\r\n if (shouldDisplayUploadDocumnetPanel(data)) {\r\n setIsDisplayUploadDocument(true);\r\n getItemDocuments(data);\r\n } else {\r\n setIsDisplayUploadDocument(false);\r\n }\r\n\r\n //follow use effect show modal\r\n setIsShowModalItem(true);\r\n };\r\n\r\n const dismissModalItem = () => {\r\n formModalItem.resetFields();\r\n setModalItemData(null);\r\n setIsShowModalItem(false);\r\n setCustomFields([]);\r\n setCustomSubmitInfo({});\r\n setOptionFields();\r\n setFileList([]);\r\n };\r\n\r\n const onSubmitModalItem = async (submitData) => {\r\n // console.log(submitData);\r\n // return;\r\n setIsShowModalItem(false);\r\n dispatch(showLoading(true));\r\n let item = findItemByKey(dataTable, \"key\", (k, v) => v === submitData.key);\r\n if (isSubmitDataHasToReCalculate(submitData)) {\r\n item = await prepareItemWhichReCalculation(item, submitData);\r\n }\r\n\r\n //case อาคาร which user select price\r\n if (isUserSelectWage(submitData)) {\r\n let wage = 0;\r\n if (!isNumeric(submitData.wage?.toString())) {\r\n wage = convertToFloat(submitData.wage);\r\n } else {\r\n wage = submitData.wage;\r\n }\r\n\r\n item.wage = wage;\r\n }\r\n\r\n if (submitData.priceEdit) {\r\n item.price = convertToFloat(submitData.priceEdit.toString());\r\n }\r\n\r\n if (submitData.wageEdit) {\r\n item.wage = convertToFloat(submitData.wageEdit.toString());\r\n }\r\n\r\n item.isSelected = true;\r\n item.amount = submitData.amount;\r\n if (isProjectSpecialItem(submitData.key)) {\r\n updateProjectSpecialItem(item);\r\n } else {\r\n createOrUpdateItem(item);\r\n }\r\n\r\n await submitUploadDocument();\r\n\r\n //if dosen't delay it will not re render table after state change occur at project special item only\r\n setTimeout(displayCheckedItem, 500);\r\n formModalItem.resetFields();\r\n setModalItemData(null);\r\n setCustomFields([]);\r\n setCustomSubmitInfo();\r\n setFileList([]);\r\n setOptionFields();\r\n dispatch(showLoading(false));\r\n };\r\n\r\n const handleUpload = ({ fileList }) => {\r\n setFileList(fileList);\r\n };\r\n\r\n const submitUploadDocument = async () => {\r\n let formData = new FormData();\r\n if (fileList.length == 0) return;\r\n var fileOrigins = fileList.map((f) => f.originFileObj);\r\n for (let i = 0; i < fileOrigins.length; i++) {\r\n formData.append(\"fileList\", fileOrigins[i]);\r\n }\r\n\r\n if (modalItemData.key.includes(\"special\")) {\r\n formData.append(\"projectSpecialItemId\", modalItemData.id);\r\n } else {\r\n formData.append(\"projectItemId\", modalItemData.projectItemId);\r\n }\r\n\r\n formData.append(\"projectId\", projectId);\r\n var url = `${AppConfig.apiUrl}projectitemdocument/upload`;\r\n const response = await fetch(url, {\r\n method: \"POST\",\r\n body: formData,\r\n });\r\n\r\n if (response.status != 200) {\r\n toast.error(\"ล้มเหลว\");\r\n return;\r\n }\r\n };\r\n\r\n const shouldDisplayUploadDocumnetPanel = (data) => {\r\n if (\r\n data.isPriceEditable ||\r\n data.isWageEditable ||\r\n isProjectSpecialItem(data.key)\r\n ) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n };\r\n\r\n const getItemDocuments = async (data) => {\r\n dispatch(showLoading(true));\r\n let url = \"\";\r\n if (!isProjectSpecialItem(data.key)) {\r\n url = `projectItemDocument/item/${data.projectItemId}`;\r\n } else {\r\n url = `projectItemDocument/specialItem/${data.id}`;\r\n }\r\n\r\n const http = HTTP(\"GET\", url);\r\n const response = await http.execute();\r\n if (HTTPUtils.isSuccess(response)) {\r\n setDataTableDocument(response.data);\r\n }\r\n dispatch(showLoading(false));\r\n };\r\n\r\n const onDeleteRowTableDocument = async (record) => {\r\n console.log(\"onDeleteRowTableDocument\");\r\n dispatch(showLoading(true));\r\n let url = \"\";\r\n if (record.projectItemId) {\r\n url = `projectItemDocument/delete/item`;\r\n } else if (record.projectSpecialItemId) {\r\n url = `projectItemDocument/delete/specialItem`;\r\n } else {\r\n toast.error(\"ไม่พบข้อมูลการลบ\");\r\n return;\r\n }\r\n\r\n const http = HTTP(\"POST\", url, null, { id: record.key });\r\n const response = await http.execute();\r\n if (HTTPUtils.isSuccess(response)) {\r\n const dataTable = dataTableDocument.filter((dt) => dt.key != record.key);\r\n setDataTableDocument(dataTable);\r\n } else {\r\n toast.error(\"ล้มเหลว\");\r\n }\r\n dispatch(showLoading(false));\r\n };\r\n\r\n const isSubmitDataHasToReCalculate = (submitData) => {\r\n return submitData?.columnRowValues?.length > 0;\r\n };\r\n\r\n const isUserSelectWage = (submitData) => {\r\n return submitData?.wage;\r\n };\r\n\r\n const prepareItemWhichReCalculation = async (item, submitData) => {\r\n var writeExcelRequest = {\r\n projectId: projectId, //props\r\n writeSheetName: customSubmitInfo.writeSheetName,\r\n calculateSheetNames: customSubmitInfo.calculateSheetNames,\r\n resultSheetName: customSubmitInfo.resultSheetName,\r\n resultColumnRow: customSubmitInfo.resultColumnRow,\r\n data: [],\r\n };\r\n for (var i = 0; i < submitData.columnRowValues.length; i++) {\r\n if (customFields[i].isDisable) {\r\n continue;\r\n }\r\n\r\n writeExcelRequest.data.push({\r\n columnRow: customFields[i].columnRow,\r\n value: submitData.columnRowValues[i],\r\n });\r\n }\r\n\r\n // console.log(writeExcelRequest);\r\n const httpWriteExcel = HTTP(\r\n \"POST\",\r\n customSubmitInfo.submitUrl,\r\n null,\r\n writeExcelRequest\r\n );\r\n\r\n const responseWriteExcel = await httpWriteExcel.execute();\r\n if (HTTPUtils.isSuccess(responseWriteExcel)) {\r\n // toast.success(\"บันทึกสำเร็จ\");\r\n item.price = responseWriteExcel.data.price;\r\n if (item.name.includes(\"ลึกเฉลี่ย\")) {\r\n item.name = item.name.replace(\r\n /_.*_/,\r\n `_${writeExcelRequest.data[0].value}_`\r\n );\r\n }\r\n\r\n return item;\r\n // console.log(responseWriteExcel);\r\n } else {\r\n toast.error(\"บันทึกล้มเหลว\");\r\n return;\r\n //show error\r\n }\r\n };\r\n\r\n const isProjectSpecialItem = (key) => {\r\n return key.includes(\"special\");\r\n };\r\n\r\n const isProjectAccessoryItem = (key) => {\r\n return key.includes(\"accessory\");\r\n };\r\n\r\n const updateProjectSpecialItem = async (item) => {\r\n const request = {\r\n id: item.id,\r\n amount: item.amount,\r\n };\r\n // console.log(createRequest);\r\n const http = HTTP(\"POST\", `projectspecialitem/update`, null, request);\r\n const response = await http.execute();\r\n if (HTTPUtils.isSuccess(response)) {\r\n toast.success(\"บันทึกสำเร็จ\");\r\n calculateItemPrice(item);\r\n } else {\r\n toast.error(\"บันทึกล้มเหลว\");\r\n //show error\r\n }\r\n };\r\n\r\n const createOrUpdateItem = async (item) => {\r\n let createRequest = [];\r\n const request = PrepareCreateOrUpdateRequest(item);\r\n createRequest.push(request);\r\n // console.log(createRequest);\r\n const http = HTTP(\r\n \"POST\",\r\n `projectitem/createOrUpdate`,\r\n null,\r\n createRequest\r\n );\r\n const response = await http.execute();\r\n if (HTTPUtils.isSuccess(response)) {\r\n toast.success(\"บันทึกสำเร็จ\");\r\n calculateItemPrice(item);\r\n } else {\r\n toast.error(\"บันทึกล้มเหลว\");\r\n //show error\r\n }\r\n };\r\n\r\n const openModalNewItem = async (data) => {\r\n // console.log(\"open modal\");\r\n // console.log(data);\r\n setModalNewItemData({ key: data.key });\r\n setIsShowModalNewItem(true);\r\n };\r\n\r\n const dismissModalNewItem = () => {\r\n formModalNewItem.resetFields();\r\n setModalNewItemData(null);\r\n setIsShowModalNewItem(false);\r\n };\r\n\r\n const onSubmitModalNewItem = async (submitData) => {\r\n // console.log(dataInput);\r\n setIsShowModalNewItem(false);\r\n dispatch(showLoading(true));\r\n let item = findItemByKey(dataTable, \"key\", (k, v) => v === submitData.key);\r\n const request = PrepareNewItemRequest(item, submitData);\r\n console.log(request);\r\n const http = HTTP(\"POST\", `projectspecialitem/create`, null, request);\r\n const response = await http.execute();\r\n if (HTTPUtils.isSuccess(response)) {\r\n toast.success(\"บันทึกสำเร็จ\");\r\n await getItems(selectedGroupProp);\r\n } else {\r\n toast.error(\"บันทึกล้มเหลว\");\r\n //show error\r\n }\r\n\r\n formModalNewItem.resetFields();\r\n setModalNewItemData(null);\r\n dispatch(showLoading(false));\r\n };\r\n\r\n const PrepareNewItemRequest = (item, submitData) => {\r\n let itemId = GetItemIdByKey(item);\r\n // console.log(itemId);\r\n let subWorkGroupId;\r\n if (item.subWorkGroupId && item.subWorkGroupId > 0) {\r\n subWorkGroupId = item.subWorkGroupId;\r\n } else {\r\n subWorkGroupId =\r\n selectedGroupProp.subWorkGroupId === 0\r\n ? null\r\n : selectedGroupProp.subWorkGroupId;\r\n }\r\n\r\n var obj = Object.assign(\r\n {\r\n projectId: projectId,\r\n workGroupId: selectedGroupProp.workGroupId,\r\n subWorkGroupId: subWorkGroupId,\r\n factorFTypeId: submitData.factorFTypeId,\r\n price: submitData.price,\r\n wage: submitData.wage,\r\n unit: submitData.unit,\r\n name: submitData.name,\r\n amount: submitData.amount,\r\n },\r\n itemId\r\n );\r\n\r\n return obj;\r\n };\r\n\r\n const calculateItemPrice = (item) => {\r\n let amount = 0;\r\n let price = 0;\r\n let wage = 0;\r\n if (!isNumeric(item.amount?.toString())) {\r\n amount = convertToFloat(item.amount);\r\n } else {\r\n amount = item.amount;\r\n }\r\n\r\n if (!isNumeric(item.price?.toString())) {\r\n price = convertToFloat(item.price);\r\n } else {\r\n price = item.price;\r\n }\r\n\r\n if (item.wage && !isNumeric(item.wage?.toString())) {\r\n wage = convertToFloat(item.wage);\r\n } else {\r\n wage = item.wage;\r\n }\r\n\r\n item.totalPrice = amount * price;\r\n item.totalWage = amount * wage;\r\n item.finalPrice = item.totalPrice + item.totalWage;\r\n if (item.subWorkGroupId == 1 || item.subWorkGroupId == 2) {\r\n // dam or irrigation\r\n if (item.factorF > 0) {\r\n item.finalPrice = item.finalPrice * item.factorF;\r\n }\r\n }\r\n item.totalWage = item.totalWage.toLocaleString();\r\n item.totalPrice = item.totalPrice.toLocaleString();\r\n item.finalPrice = item.finalPrice.toLocaleString();\r\n };\r\n\r\n const convertToFloat = (number) => {\r\n number = number?.replace(/\\,/g, \"\");\r\n number = parseFloat(number);\r\n if (isNaN(number)) return 0;\r\n return number;\r\n };\r\n\r\n const calculateFactorFAPI = async () => {\r\n dispatch(showLoading(true));\r\n const http = HTTP(\"POST\", `project/update/factorf`, null, {\r\n id: projectId,\r\n });\r\n const response = await http.execute();\r\n if (HTTPUtils.isSuccess(response)) {\r\n toast.success(\"บันทึกสำเร็จ\");\r\n await getItems(selectedGroupProp);\r\n } else {\r\n toast.error(\"บันทึกล้มเหลว\");\r\n //show error\r\n }\r\n dispatch(showLoading(false));\r\n };\r\n\r\n const displayCheckedItem = () => {\r\n if (dataTable) {\r\n let dataFilter = filterSelectedData(dataTable);\r\n // console.log(\"dataFilter\");\r\n // console.log(dataFilter);\r\n setDataTable(dataFilter);\r\n }\r\n };\r\n\r\n return (\r\n
\r\n (\r\n
\r\n \r\n \r\n {\r\n // testDeepSearch(dataTestRemoveSelected);\r\n save();\r\n }}\r\n width={\"150px\"}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n {\r\n dispatch(showLoading(true));\r\n await getItems(selectedGroupProp);\r\n dispatch(showLoading(false));\r\n }}\r\n // onClick={getItems(\r\n // selectedGroupProp\r\n // )}\r\n width={\"150px\"}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n
\r\n )}\r\n pagination={{\r\n defaultPageSize: 5000,\r\n // showSizeChanger: true,\r\n // pageSizeOptions: [\"30\", \"50\", \"70\", \"100\"],\r\n }}\r\n columns={columnFormat}\r\n dataSource={[...dataTable]}\r\n bordered\r\n onRow={(record, rowIndex) => {\r\n return {\r\n onClick: (event) => {\r\n // console.log(\"record \", record);\r\n // console.log(\"rowIndex \", rowIndex);\r\n if (record.unit) {\r\n openModal(record);\r\n } else {\r\n openModalNewItem(record);\r\n }\r\n }, // click row\r\n };\r\n }}\r\n rowSelection={{ ...rowSelection, checkStrictly: false }}\r\n // rowClassName={(_r, i) => (i % 2 ? \"odd\" : \"even\")}\r\n expandable={{\r\n expandIconColumnIndex: 2,\r\n indentSize: 5,\r\n }}\r\n scroll={{ y: 440, x: 100 }}\r\n summary={() => {\r\n // summary={(pageData) => {\r\n // let totalFinalPrice = 0;\r\n deepSeachArray = [];\r\n deepSearchResultArray(dataTable, \"isSelected\", (k, v) => v === true);\r\n let totalFinalPrice = deepSeachArray.reduce(\r\n (accum, item) => accum + convertToFloat(item.finalPrice),\r\n 0\r\n );\r\n totalFinalPrice = totalFinalPrice.toLocaleString();\r\n\r\n return (\r\n <>\r\n \r\n {columnFormat != columnSpecial ? (\r\n \r\n ) : null}\r\n {columnFormat != columnSpecial ? (\r\n \r\n ) : null}\r\n {columnFormat != columnSpecial ? (\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 );\r\n }}\r\n />\r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default TablePR4;\r\n","import React, { useState, useEffect } from \"react\";\r\nimport { Button } from \"antd\";\r\n\r\nconst ButtonSubCategory = ({\r\n label,\r\n height,\r\n href,\r\n onClick,\r\n workgroupid,\r\n subworkgroupid,\r\n selectedWorkGroupSubWorGroup,\r\n}) => {\r\n const [buttonStyle, setButtonStyle] = useState({\r\n borderColor: \"orange\",\r\n background: \"black\",\r\n color: \"orange\",\r\n });\r\n\r\n const buttonInActive = {\r\n borderColor: \"orange\",\r\n background: \"black\",\r\n color: \"orange\",\r\n };\r\n\r\n const buttonActive = {\r\n borderColor: \"orange\",\r\n background: \"linear-gradient(#f07725, #ff4200)\",\r\n color: \"black\",\r\n };\r\n\r\n useEffect(() => {\r\n if (\r\n selectedWorkGroupSubWorGroup?.workGroupId == workgroupid &&\r\n selectedWorkGroupSubWorGroup?.subWorkGroupId == subworkgroupid\r\n ) {\r\n setButtonStyle(buttonActive);\r\n } else {\r\n setButtonStyle(buttonInActive);\r\n }\r\n }, [selectedWorkGroupSubWorGroup]);\r\n\r\n return (\r\n \r\n \r\n {label.length > 16 ? label.substring(0, 16) + \"...\" : label}\r\n {/*

\r\n {label} */}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default ButtonSubCategory;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { Button } from \"antd\";\r\n\r\nconst ButtonWorkGroup = ({\r\n label,\r\n width,\r\n height,\r\n href,\r\n onClick,\r\n workgroupid,\r\n selectedWorkGroupSubWorGroup,\r\n}) => {\r\n const [buttonStyle, setButtonStyle] = useState({\r\n borderColor: \"orange\",\r\n background: \"black\",\r\n color: \"white\",\r\n });\r\n\r\n const buttonInActive = {\r\n borderColor: \"orange\",\r\n background: \"black\",\r\n color: \"white\",\r\n };\r\n\r\n const buttonActive = {\r\n borderColor: \"orange\",\r\n background: \"linear-gradient(#f07725, #ff4200)\",\r\n color: \"black\",\r\n };\r\n\r\n useEffect(() => {\r\n if (\r\n selectedWorkGroupSubWorGroup?.workGroupId == workgroupid &&\r\n selectedWorkGroupSubWorGroup?.subWorkGroupId == 0\r\n ) {\r\n setButtonStyle(buttonActive);\r\n // console.log(\"true\");\r\n } else {\r\n setButtonStyle(buttonInActive);\r\n // console.log(\"false\");\r\n }\r\n }, [selectedWorkGroupSubWorGroup]);\r\n\r\n return (\r\n \r\n \r\n {label.length > 12 ? label.substring(0, 12) + \"..\" : label}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default ButtonWorkGroup;\r\n","import React, { useState } from \"react\";\r\nimport { Form, Checkbox, Row, Col, Input } from \"antd\";\r\nimport ButtonSave from \"../../../../Components/ButtonSave\";\r\n\r\nconst CheckBoxSubWorkGroup = ({\r\n selectedSubWorkGroups,\r\n allSubWorkGroups,\r\n onChangeCheckboxSubWorkGroup,\r\n}) => {\r\n function onChange(checkedValues) {\r\n onChangeCheckboxSubWorkGroup(checkedValues);\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n {allSubWorkGroups.map((subWorkGroup) => (\r\n \r\n \r\n {subWorkGroup.name}\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 CheckBoxSubWorkGroup;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { toast } from \"react-toastify\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { showLoading } from \"../../../Redux/LoadingReducer\";\r\nimport NavBar2 from \"../../../Components/NavBar2\";\r\nimport { Row, Layout, Col, Tree, Modal, Input, Form } from \"antd\";\r\nimport { Background } from \"../../../Constants/Images\";\r\nimport TablePR4 from \"./Components/TablePR4\";\r\nimport ButtonSubCategory from \"./Components/ButtonSubCategory\";\r\nimport MenuStep from \"../../../Components/MenuStep\";\r\nimport ButtonRound from \"../../../Components/ButtonRound\";\r\nimport ButtonWorkGroup from \"./Components/ButtonWorkGroup\";\r\n// import ButtonSave from \"../../../Components/ButtonSave\";\r\n// import ButtonCancel from \"../../../Components/ButtonCancel\";\r\nimport HTTP from \"../../../https/HTTP\";\r\nimport HTTPUtils from \"../../../https/HTTPUtils\";\r\nimport AppConfig from \"../../../AppConfig\";\r\nimport CheckBoxSubWorkGroup from \"./Components/CheckBoxSubWorkGroup\";\r\nimport {\r\n Irrigation,\r\n Dam,\r\n Building,\r\n Etc,\r\n Area,\r\n Special,\r\n} from \"../../../Constants/SubWorkGroupId\";\r\nimport { columnDam, columnBuilding } from \"../../../Constants/ColumnFormat\";\r\n// import { getType } from \"@reduxjs/toolkit\";\r\n// const { TabPane } = Tabs;\r\nconst PR4 = (props) => {\r\n const dispatch = useDispatch();\r\n // const [project, setProject] = useState({});\r\n const [isShowModalWorkGroup, setIsShowModalWorkGroup] = useState(false);\r\n const [selectedSubWorkGroups, setSelectedSubWorkGroups] = useState([]);\r\n const [allSubWorkGroups, setAllSubWorkGroups] = useState([]);\r\n const [workGroupModal, setWorkGroupModal] = useState(null);\r\n const [workGroupTreeMenu, setWorkGroupTreeMenu] = useState([]);\r\n const [formWorkGroup] = Form.useForm();\r\n const [selectedWorkGroupSubWorGroup, setSelectedWorkGroupSubWorGroup] =\r\n useState({});\r\n const [workGroupResponse, setWorkGroupResponse] = useState({});\r\n // const [workGroupAndSubWorkGroupId, setWorkGroupAndSubWorkGroupId] = useState(\r\n // {}\r\n // );\r\n useEffect(() => {\r\n (async () => {\r\n try {\r\n dispatch(showLoading(true));\r\n const projectId = props.match.params.projectId;\r\n await getAllSubWorkGroup(projectId);\r\n await getWorkGroups(projectId);\r\n dispatch(showLoading(false));\r\n } catch {\r\n dispatch(showLoading(false));\r\n }\r\n })();\r\n }, []);\r\n\r\n useEffect(() => {\r\n (async () => {\r\n // await getWorkGroups(props.match.params.projectId); // TODO render only\r\n renderWorkGroupMenu(workGroupResponse);\r\n })();\r\n }, [selectedWorkGroupSubWorGroup]);\r\n\r\n useEffect(() => {\r\n // (async () => {\r\n // // await getWorkGroups(props.match.params.projectId); // TODO render only\r\n // renderWorkGroupMenu(workGroupResponse);\r\n // })();\r\n if (isShowModalWorkGroup) {\r\n if (workGroupModal) {\r\n formWorkGroup.setFieldsValue({\r\n name: workGroupModal?.name,\r\n id: workGroupModal?.id,\r\n });\r\n }\r\n }\r\n }, [isShowModalWorkGroup, workGroupModal]);\r\n\r\n const getAllSubWorkGroup = async (projectId) => {\r\n const http = HTTP(\"GET\", \"project/\" + projectId);\r\n const response = await http.execute();\r\n if (HTTPUtils.isSuccess(response)) {\r\n const typeCategories = response.data.type.typeCategories;\r\n const allSubWorkGroups = typeCategories.map((tc) => {\r\n return tc.category.subWorkGroups.map((swg) => {\r\n return {\r\n value: swg.id,\r\n name: swg.name,\r\n };\r\n });\r\n });\r\n\r\n var mergedAllSubWorkGroups = [].concat.apply([], allSubWorkGroups);\r\n setAllSubWorkGroups(mergedAllSubWorkGroups);\r\n } else {\r\n //show error\r\n }\r\n };\r\n\r\n const getWorkGroups = async (projectId) => {\r\n const http = HTTP(\"GET\", \"workgroup/project/\" + projectId);\r\n const response = await http.execute();\r\n if (HTTPUtils.isSuccess(response)) {\r\n const workGroups = response.data;\r\n renderWorkGroupMenu(workGroups);\r\n setWorkGroupResponse(workGroups);\r\n } else {\r\n //show error\r\n }\r\n };\r\n\r\n const getWorkGroup = async (id) => {\r\n const http = HTTP(\"GET\", \"workgroup/\" + id);\r\n const response = await http.execute();\r\n if (HTTPUtils.isSuccess(response)) {\r\n return response.data;\r\n } else {\r\n //show error\r\n }\r\n };\r\n\r\n const renderWorkGroupMenu = (workGroups) => {\r\n let workgroupMenu = [];\r\n // console.log(workGroups);\r\n if (Object.keys(workGroups).length > 0) {\r\n workGroups.forEach((workgroup) => {\r\n if (\r\n workgroup.subWorkGroups.filter(\r\n (e) => e.id === Area || e.id === Special\r\n ).length > 0\r\n ) {\r\n return;\r\n }\r\n\r\n let treeMain = {\r\n title: (\r\n
\r\n {\r\n // const workGroupId =\r\n // e.currentTarget.getAttribute(\"workgroupid\");\r\n setSelectedWorkGroupSubWorGroup({\r\n workGroupId: workgroup.id,\r\n subWorkGroupId: 0,\r\n });\r\n }}\r\n workgroupid={workgroup.id}\r\n selectedWorkGroupSubWorGroup={selectedWorkGroupSubWorGroup}\r\n >\r\n
\r\n ),\r\n key: `workGroupId${workgroup.id}`,\r\n children: [],\r\n };\r\n\r\n let subWorkGroups = workgroup.subWorkGroups.map((swg) => {\r\n return {\r\n title: (\r\n <>\r\n {\r\n // const workGroupId =\r\n // e.currentTarget.getAttribute(\"workgroupid\");\r\n // const swgId =\r\n // e.currentTarget.getAttribute(\"subworkgroupid\");\r\n // console.log(\r\n // `workgroupId = ${workgroup.id} subWorkGroupId = ${swg.id}`\r\n // );\r\n setSelectedWorkGroupSubWorGroup({\r\n workGroupId: workgroup.id,\r\n subWorkGroupId: swg.id,\r\n });\r\n }}\r\n workgroupid={workgroup.id}\r\n subworkgroupid={swg.id}\r\n >\r\n \r\n ),\r\n key: `workGroupId${workgroup.id}_subWorkGroupId${swg.id}`,\r\n };\r\n });\r\n\r\n subWorkGroups.push({\r\n title: (\r\n <>\r\n {\r\n const workGroupId =\r\n e.currentTarget.getAttribute(\"workgroupid\");\r\n openModalEditWorkGroup(workGroupId);\r\n }}\r\n workgroupid={workgroup.id}\r\n >\r\n \r\n ),\r\n key: `workGroupId${workgroup.id}_edit`,\r\n });\r\n\r\n treeMain.children = subWorkGroups;\r\n workgroupMenu.push(treeMain);\r\n });\r\n }\r\n\r\n setWorkGroupTreeMenu(workgroupMenu);\r\n };\r\n\r\n const openModalEditWorkGroup = async (workGroupId) => {\r\n //TODO workGroupResponse dosen't set if debug mode it will set !! workaround by get from api\r\n // if (Object.keys(workGroupResponse).length > 0) {\r\n // const workGroupData = [...workGroupResponse];\r\n // const workGroups = workGroupData.filter((wg) => wg.id == workGroupId);\r\n const workGroupResponse = await getWorkGroup(workGroupId);\r\n // console.log(workGroupResponse);\r\n if (workGroupResponse) {\r\n setWorkGroupModal({ name: workGroupResponse.name, id: workGroupId });\r\n const subWorkGroupIds = workGroupResponse.subWorkGroups.map(\r\n (swg) => swg.id\r\n );\r\n setSelectedSubWorkGroups(subWorkGroupIds);\r\n // console.log(subWorkGroupIds);\r\n }\r\n\r\n setIsShowModalWorkGroup(true);\r\n };\r\n\r\n const dismissModalWorkGroup = () => {\r\n formWorkGroup.resetFields();\r\n setWorkGroupModal(null);\r\n setSelectedSubWorkGroups([]);\r\n setIsShowModalWorkGroup(false);\r\n };\r\n\r\n const onFinishModalWorkGroup = async (values) => {\r\n setIsShowModalWorkGroup(false);\r\n dispatch(showLoading(true));\r\n // console.log(\"Received values of form: \", values);\r\n // console.log(workGroupModal);\r\n const projectId = props.match.params.projectId;\r\n const workGroupId = parseInt(workGroupModal?.id);\r\n // console.log(`workGroupId=${workGroupId}`);\r\n if (isNaN(workGroupId)) {\r\n const createRequest = {\r\n ...values,\r\n projectId: projectId,\r\n SubWorkGroupIds: selectedSubWorkGroups,\r\n };\r\n await createWorkGroup(createRequest);\r\n } else {\r\n const updateRequest = {\r\n ...values,\r\n projectId: projectId,\r\n SubWorkGroupIds: selectedSubWorkGroups,\r\n id: workGroupId,\r\n };\r\n await updateWorkGroup(updateRequest);\r\n }\r\n\r\n formWorkGroup.resetFields();\r\n setWorkGroupModal(null);\r\n setSelectedSubWorkGroups([]);\r\n await getWorkGroups(projectId);\r\n dispatch(showLoading(false));\r\n };\r\n\r\n const onChangeCheckboxSubWorkGroup = (checkedValues) => {\r\n //array subworkgroup id\r\n setSelectedSubWorkGroups(checkedValues);\r\n };\r\n\r\n const createWorkGroup = async (request) => {\r\n const http = HTTP(\"POST\", \"workgroup/create\", null, request);\r\n const response = await http.execute();\r\n if (HTTPUtils.isSuccess(response)) {\r\n toast.success(\"สำเร็จ\");\r\n } else {\r\n //show error\r\n toast.error(\"ล้มเหลว\");\r\n }\r\n };\r\n\r\n const updateWorkGroup = async (request) => {\r\n const http = HTTP(\"POST\", \"workgroup/update\", null, request);\r\n const response = await http.execute();\r\n if (HTTPUtils.isSuccess(response)) {\r\n toast.success(\"สำเร็จ\");\r\n } else {\r\n //show error\r\n toast.error(\"ล้มเหลว\");\r\n }\r\n };\r\n\r\n const SelectedColumnFormat = () => {\r\n const subWorkGroupId = selectedWorkGroupSubWorGroup.subWorkGroupId;\r\n if (subWorkGroupId == Irrigation || subWorkGroupId == Dam) {\r\n return columnDam;\r\n } else if (subWorkGroupId >= Building && subWorkGroupId <= Etc) {\r\n return columnBuilding;\r\n } else {\r\n return [];\r\n }\r\n };\r\n\r\n return (\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 setIsShowModalWorkGroup(true);\r\n }}\r\n >\r\n \r\n \r\n {\r\n // setIsShowModalWorkGroup(true);\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\n \r\n \r\n\r\n \r\n กลุ่มงาน\r\n \r\n }\r\n visible={isShowModalWorkGroup}\r\n // onOk={handleOk}\r\n onCancel={dismissModalWorkGroup}\r\n footer={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\n};\r\n\r\nexport default PR4;\r\n","export const Irrigation = 1;\r\nexport const Dam = 2;\r\nexport const Building = 3;\r\nexport const Etc = 9;\r\nexport const Area = 10;\r\nexport const Special = 11;\r\n","import React from \"react\";\r\nimport { toast } from \"react-toastify\";\r\nimport \"antd/dist/antd.css\";\r\nimport { Table, Row, Col } from \"antd\";\r\nimport HTTP from \"../../../../https/HTTP\";\r\nimport HTTPUtils from \"../../../../https/HTTPUtils\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { showLoading } from \"../../../../Redux/LoadingReducer\";\r\nimport ButtonSave from \"../../../../Components/ButtonSave\";\r\nimport DownloadHelper from \"../../../../Helpers/DownloadHelper\";\r\nimport AppConfig from \"../../../../AppConfig\";\r\nimport {\r\n columnPR5Dam,\r\n columnPR5Building,\r\n} from \"../../../../Constants/ColumnFormat\";\r\nconst TablePR5 = ({ projectId, columnFormat, data }) => {\r\n const dispatch = useDispatch();\r\n\r\n const downloadSummary = async () => {\r\n dispatch(showLoading(true));\r\n let url = \"\";\r\n if (columnFormat == columnPR5Dam) {\r\n url = `${AppConfig.apiUrl}projectItem/summary/pr5/project/${projectId}/dam/download`;\r\n } else {\r\n url = `${AppConfig.apiUrl}projectItem/summary/pr5/project/${projectId}/building/download`;\r\n }\r\n\r\n await downloadAPI(url);\r\n dispatch(showLoading(false));\r\n };\r\n\r\n const downloadAPI = async (url) => {\r\n const response = await fetch(url, {\r\n method: \"GET\",\r\n });\r\n\r\n if (response.status != 200) {\r\n toast.error(\"download ล้มเหลว\");\r\n return;\r\n }\r\n response\r\n .blob()\r\n .then((blob) => DownloadHelper.downloadBlob(blob, \"reportPR5.xlsx\"));\r\n };\r\n\r\n return (\r\n (\r\n
\r\n \r\n \r\n {\r\n downloadSummary();\r\n }}\r\n width={\"150px\"}\r\n >\r\n \r\n \r\n
\r\n )}\r\n />\r\n );\r\n};\r\n\r\nexport default TablePR5;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { toast } from \"react-toastify\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { showLoading } from \"../../../Redux/LoadingReducer\";\r\nimport NavBar2 from \"../../../Components/NavBar2\";\r\nimport { Row, Layout, Col } from \"antd\";\r\nimport { Background } from \"../../../Constants/Images\";\r\nimport MenuStep from \"../../../Components/MenuStep\";\r\nimport TablePR5 from \"./Components/TablePR5\";\r\nimport {\r\n columnPR5Dam,\r\n columnPR5Building,\r\n} from \"../../../Constants/ColumnFormat\";\r\nimport { Building, DevCity } from \"../../../Constants/Type\";\r\nimport HTTP from \"../../../https/HTTP\";\r\nimport HTTPUtils from \"../../../https/HTTPUtils\";\r\n\r\nconst PR5 = (props) => {\r\n const dispatch = useDispatch();\r\n const [tableData, setTableData] = useState([]);\r\n const [isBuildingType, setIsBuildingType] = useState(false);\r\n useEffect(() => {\r\n (async () => {\r\n dispatch(showLoading(true));\r\n const projectId = props.match.params.projectId;\r\n await getProject(projectId);\r\n dispatch(showLoading(false));\r\n })();\r\n }, []);\r\n\r\n const selectedColumnFormat = () => {\r\n if (isBuildingType) {\r\n return columnPR5Building;\r\n } else {\r\n return columnPR5Dam;\r\n }\r\n };\r\n\r\n const getProject = async (projectId) => {\r\n const http = HTTP(\"GET\", `project/${projectId}`);\r\n const response = await http.execute();\r\n if (HTTPUtils.isSuccess(response)) {\r\n var typeId = response.data.typeId;\r\n if (typeId == Building || typeId == DevCity) {\r\n setIsBuildingType(true);\r\n // await getSummaryPR4Building(projectId, workGroups[0]?.value);\r\n } else {\r\n // await getSummaryPR4Dam(projectId);\r\n }\r\n\r\n await getSummaryPR5(projectId);\r\n } else {\r\n toast.error(\"ไม่พบข้อมูล\");\r\n }\r\n };\r\n\r\n const getSummaryPR5 = async (projectId) => {\r\n const http = HTTP(\"GET\", `projectItem/summary/pr5/project/${projectId}`);\r\n const response = await http.execute();\r\n if (HTTPUtils.isSuccess(response)) {\r\n setTableData(response.data?.workGroupSummaries);\r\n } else {\r\n //show error\r\n toast.error(\"ขอข้อมูลล้มเหลว\");\r\n }\r\n };\r\n\r\n return (\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\n \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default PR5;\r\n","export const Irrigation = 1;\r\nexport const Dam = 2;\r\nexport const Building = 3;\r\nexport const DevCity = 4;\r\n","import React from \"react\";\r\nimport { toast } from \"react-toastify\";\r\nimport \"antd/dist/antd.css\";\r\nimport { Table, Row, Col } from \"antd\";\r\n// import HTTP from \"../../../../https/HTTP\";\r\n// import HTTPUtils from \"../../../../https/HTTPUtils\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { showLoading } from \"../../../../Redux/LoadingReducer\";\r\nimport ButtonSave from \"../../../../Components/ButtonSave\";\r\nimport DownloadHelper from \"../../../../Helpers/DownloadHelper\";\r\nimport AppConfig from \"../../../../AppConfig\";\r\nimport {\r\n columnPR6Dam,\r\n columnPR6Building,\r\n} from \"../../../../Constants/ColumnFormat\";\r\n\r\nconst TablePR6 = ({ projectId, columnFormat, data }) => {\r\n const dispatch = useDispatch();\r\n\r\n const downloadSummary = async () => {\r\n dispatch(showLoading(true));\r\n let url = \"\";\r\n if (columnFormat == columnPR6Dam) {\r\n url = `${AppConfig.apiUrl}projectItem/summary/pr6/project/${projectId}/dam/download`;\r\n } else {\r\n url = `${AppConfig.apiUrl}projectItem/summary/pr6/project/${projectId}/building/download`;\r\n }\r\n\r\n await downloadAPI(url);\r\n dispatch(showLoading(false));\r\n };\r\n\r\n const downloadAPI = async (url) => {\r\n const response = await fetch(url, {\r\n method: \"GET\",\r\n });\r\n\r\n if (response.status != 200) {\r\n toast.error(\"download ล้มเหลว\");\r\n return;\r\n }\r\n response\r\n .blob()\r\n .then((blob) => DownloadHelper.downloadBlob(blob, \"reportPR6.xlsx\"));\r\n };\r\n\r\n return (\r\n (\r\n
\r\n \r\n \r\n {\r\n downloadSummary();\r\n }}\r\n width={\"150px\"}\r\n >\r\n \r\n \r\n
\r\n )}\r\n />\r\n );\r\n};\r\n\r\nexport default TablePR6;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { toast } from \"react-toastify\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { showLoading } from \"../../../Redux/LoadingReducer\";\r\nimport NavBar2 from \"../../../Components/NavBar2\";\r\nimport { Row, Layout, Col } from \"antd\";\r\nimport { Background } from \"../../../Constants/Images\";\r\nimport MenuStep from \"../../../Components/MenuStep\";\r\nimport TablePR6 from \"./Components/TablePR6\";\r\nimport {\r\n columnPR6Dam,\r\n columnPR6Building,\r\n} from \"../../../Constants/ColumnFormat\";\r\nimport { Building, DevCity } from \"../../../Constants/Type\";\r\nimport HTTP from \"../../../https/HTTP\";\r\nimport HTTPUtils from \"../../../https/HTTPUtils\";\r\n\r\nconst PR6 = (props) => {\r\n const dispatch = useDispatch();\r\n const [tableData, setTableData] = useState([]);\r\n const [isBuildingType, setIsBuildingType] = useState(false);\r\n useEffect(() => {\r\n (async () => {\r\n dispatch(showLoading(true));\r\n const projectId = props.match.params.projectId;\r\n await getProject(projectId);\r\n dispatch(showLoading(false));\r\n })();\r\n }, []);\r\n\r\n const selectedColumnFormat = () => {\r\n if (isBuildingType) {\r\n return columnPR6Building;\r\n } else {\r\n return columnPR6Dam;\r\n }\r\n };\r\n\r\n const getProject = async (projectId) => {\r\n const http = HTTP(\"GET\", `project/${projectId}`);\r\n const response = await http.execute();\r\n if (HTTPUtils.isSuccess(response)) {\r\n var typeId = response.data.typeId;\r\n if (typeId == Building || typeId == DevCity) {\r\n setIsBuildingType(true);\r\n // await getSummaryPR4Building(projectId, workGroups[0]?.value);\r\n } else {\r\n // await getSummaryPR4Dam(projectId);\r\n }\r\n\r\n await getSummaryPR6(projectId);\r\n } else {\r\n toast.error(\"ไม่พบข้อมูล\");\r\n }\r\n };\r\n\r\n const getSummaryPR6 = async (projectId) => {\r\n const http = HTTP(\"GET\", `projectItem/summary/pr6/project/${projectId}`);\r\n const response = await http.execute();\r\n if (HTTPUtils.isSuccess(response)) {\r\n setTableData(response.data?.workGroupSummaries);\r\n } else {\r\n //show error\r\n toast.error(\"ขอข้อมูลล้มเหลว\");\r\n }\r\n };\r\n\r\n return (\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\n \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default PR6;\r\n","import React, { Component } from \"react\";\r\n// import { toast } from 'react-toastify';\r\nimport NavBar2 from \"../../../Components/NavBar2\";\r\n// import ProjectInfoForm from \"../../../Components/ProjectInfoForm\";\r\n// import PicturesWall from \"../../../Components/PicturesWall\";\r\n// import AuthHelper from '../../Helper/AuthHelper';\r\nimport \"../../../Styles/TabCard.css\";\r\nimport AppConfig from \"../../../AppConfig\";\r\nimport { Row, Image, Layout, Col } from \"antd\";\r\nimport ButtonRound from \"../../../Components/ButtonRound\";\r\nimport {\r\n Building,\r\n WaterSystem,\r\n DevelopCity,\r\n Dam,\r\n Background,\r\n} from \"../../../Constants/Images\";\r\nexport default class Category extends Component {\r\n componentDidMount = () => {};\r\n\r\n render() {\r\n return (\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\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* \r\n - ระบบประมาณราคาภาครัฐ by CCW -\r\n */}\r\n \r\n
\r\n );\r\n }\r\n}\r\n","import React from \"react\";\r\n// import { toast } from 'react-toastify';\r\nimport NavBar2 from \"../../../Components/NavBar2\";\r\nimport { Row, Layout, Col, Image } from \"antd\";\r\nimport { Background } from \"../../../Constants/Images\";\r\nimport MenuStep from \"../../../Components/MenuStep\";\r\nconst Picutre = (props) => {\r\n // componentDidMount = () => {\r\n // const { projectId } = this.props.match.params;\r\n // };\r\n\r\n return (\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\n );\r\n};\r\n\r\nexport default Picutre;\r\n","import React from \"react\";\r\nimport \"antd/dist/antd.css\";\r\nimport { Row, Col } from \"antd\";\r\nimport ButtonSave from \"../../../../Components/ButtonSave\";\r\nimport Map from \"../../../../Components/Map\";\r\n\r\nconst ProjectAddressForm = () => {\r\n return (\r\n <>\r\n \r\n \r\n {}}\r\n label=\"บันทึก\"\r\n width=\"50%\"\r\n >\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ProjectAddressForm;\r\n","import React from \"react\";\r\n// import { toast } from 'react-toastify';\r\nimport NavBar2 from \"../../../Components/NavBar2\";\r\nimport { Row, Layout, Col } from \"antd\";\r\nimport { Background } from \"../../../Constants/Images\";\r\nimport MenuStep from \"../../../Components/MenuStep\";\r\nimport ProjectAddressForm from \"./Components/ProjectAddressForm\";\r\n\r\nconst Location = (props) => {\r\n return (\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\n );\r\n};\r\n\r\nexport default Location;\r\n","import React from \"react\";\r\nimport \"antd/dist/antd.css\";\r\nimport { Form, Row, Col } from \"antd\";\r\nimport CrossLine from \"../../../../Components/CrossLine\";\r\n\r\nconst InputRowProjectInfoBK = ({\r\n label,\r\n InputComponent,\r\n keyInput,\r\n isRequire,\r\n messageRequire,\r\n}) => {\r\n return (\r\n \r\n \r\n \r\n {label}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {InputComponent}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default InputRowProjectInfoBK;\r\n","import React from \"react\";\r\nimport \"antd/dist/antd.css\";\r\nimport { Row, Col } from \"antd\";\r\nimport VerticalLine from \"../../../../Components/VerticalLine\";\r\nconst VerticalLineProjectInfo = ({\r\n label,\r\n childComponent,\r\n keyInput,\r\n isRequire,\r\n messageRequire,\r\n}) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {childComponent}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default VerticalLineProjectInfo;\r\n","import React, { useEffect } from \"react\";\r\nimport \"antd/dist/antd.css\";\r\nimport { Form, Row, Col, Input, InputNumber, Select, DatePicker } from \"antd\";\r\nimport InputRowProjectInfoBK from \"./InputRowProjectInfoBK\";\r\nimport DragImage from \"./DragImage\";\r\nimport ButtonSave from \"../../../../Components/ButtonSave\";\r\nimport HomeButton from \"../../../../Components/HomeButton\";\r\nimport VerticalLineProjectInfo from \"./VerticalLineProjectInfo\";\r\nconst { Option } = Select;\r\n\r\nconst ProjectInfoFormBK = () => {\r\n const [form] = Form.useForm();\r\n const provinces = [\r\n { label: \"กรุงเทพ\", value: \"กรุงเทพ\" },\r\n { label: \"ชัยภูมิ\", value: \"ชัยภูมิ\" },\r\n { label: \"ขอนแก่น\", value: \"ขอนแก่น\" },\r\n ];\r\n\r\n const trucks = [\r\n { label: \"รถบรรทุก 6 ล้อ\", value: \"รถบรรทุก 6 ล้อ\" },\r\n { label: \"รถบรรทุก 10 ล้อ\", value: \"รถบรรทุก 10 ล้อ\" },\r\n { label: \"รถบรรทุก 10 ล้อพ่วง\", value: \"รถบรรทุก 10 ล้อพ่วง\" },\r\n ];\r\n\r\n useEffect(() => {});\r\n\r\n const onFinish = (values) => {\r\n console.log(\"Received values of form: \", values);\r\n };\r\n\r\n return (\r\n
\r\n }\r\n isRequire\r\n messageRequire=\"กรุณาใส่ชื่อโครงการ\"\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\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 `${value}`.replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\")\r\n }\r\n parser={(value) => value.replace(/\\$\\s?|(,*)/g, \"\")}\r\n style={{ width: \"100%\", borderRadius: \"25px\" }}\r\n />\r\n }\r\n />\r\n \r\n `${value}`.replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\")\r\n }\r\n parser={(value) => value.replace(/\\$\\s?|(,*)/g, \"\")}\r\n style={{ width: \"100%\", borderRadius: \"25px\" }}\r\n />\r\n }\r\n />\r\n \r\n }\r\n />\r\n \r\n `${value}`.replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\")\r\n }\r\n parser={(value) => value.replace(/\\$\\s?|(,*)/g, \"\")}\r\n style={{ width: \"100%\", borderRadius: \"25px\" }}\r\n />\r\n }\r\n />\r\n \r\n `${value}`.replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\")\r\n }\r\n parser={(value) => value.replace(/\\$\\s?|(,*)/g, \"\")}\r\n style={{ width: \"100%\", borderRadius: \"25px\" }}\r\n />\r\n }\r\n />\r\n \r\n `${value}`.replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\")\r\n }\r\n parser={(value) => value.replace(/\\$\\s?|(,*)/g, \"\")}\r\n style={{ width: \"100%\", borderRadius: \"25px\" }}\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\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\n );\r\n};\r\n\r\nexport default ProjectInfoFormBK;\r\n","import React, { Component } from \"react\";\r\n// import { toast } from 'react-toastify';\r\nimport NavBar2 from \"../../../Components/NavBar2\";\r\nimport ProjectInfoFormBK from \"./Components/ProjectInfoFormBK\";\r\n// import AuthHelper from '../../Helper/AuthHelper';\r\nimport \"../../../Styles/TabCard.css\";\r\nimport { Layout } from \"antd\";\r\nimport { Background } from \"../../../Constants/Images\";\r\n\r\nexport default class InfoBk extends Component {\r\n componentDidMount = () => {\r\n const { projectId } = this.props.match.params;\r\n console.log(\"Project \", projectId);\r\n };\r\n\r\n render() {\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n","import React from \"react\";\r\nimport { Form, Row, Col, InputNumber, Divider } from \"antd\";\r\n\r\nconst InputForm = ({ title, conceteName, woodName }) => {\r\n return (\r\n
\r\n \r\n \r\n {title}\r\n \r\n \r\n \r\n \r\n \r\n คอนกรีตโครงสร้างทั้งหมด\r\n

\r\n }\r\n >\r\n \r\n `${value}`.replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\")\r\n }\r\n parser={(value) => value.replace(/\\$\\s?|(,*)/g, \"\")}\r\n style={{\r\n width: \"100%\",\r\n borderTopLeftRadius: \"25px\",\r\n borderBottomLeftRadius: \"25px\",\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\n \r\n `${value}`.replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\")\r\n }\r\n parser={(value) => value.replace(/\\$\\s?|(,*)/g, \"\")}\r\n style={{\r\n width: \"100%\",\r\n borderTopLeftRadius: \"25px\",\r\n borderBottomLeftRadius: \"25px\",\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 InputForm;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { toast } from \"react-toastify\";\r\nimport \"antd/dist/antd.css\";\r\nimport { Form, Row, Col, Button } from \"antd\";\r\nimport InputForm from \"./InputForm\";\r\nimport ButtonSave from \"../../../../Components/ButtonSave\";\r\nimport HTTP from \"../../../../https/HTTP\";\r\nimport HTTPUtils from \"../../../../https/HTTPUtils\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { showLoading } from \"../../../../Redux/LoadingReducer\";\r\n\r\nconst FormConeteCost = ({ data, projectId }) => {\r\n const dispatch = useDispatch();\r\n const [form] = Form.useForm();\r\n useEffect(() => {\r\n (async () => {})();\r\n if (data && data?.conceteCosts.length === 7) {\r\n form.setFieldsValue({\r\n concete1: data?.conceteCosts[0],\r\n concete2: data?.conceteCosts[1],\r\n concete3: data?.conceteCosts[2],\r\n concete4: data?.conceteCosts[3],\r\n concete5: data?.conceteCosts[4],\r\n concete6: data?.conceteCosts[5],\r\n concete7: data?.conceteCosts[6],\r\n wood1: data?.woodCosts[0],\r\n wood2: data?.woodCosts[1],\r\n wood3: data?.woodCosts[2],\r\n wood4: data?.woodCosts[3],\r\n wood5: data?.woodCosts[4],\r\n wood6: data?.woodCosts[5],\r\n wood7: data?.woodCosts[6],\r\n });\r\n }\r\n }, [data]);\r\n\r\n const onFinish = async (values) => {\r\n // console.log(\"Received values of form: \", values);\r\n var request = {\r\n projectId: projectId,\r\n conceteCosts: [\r\n values.concete1,\r\n values.concete2,\r\n values.concete3,\r\n values.concete4,\r\n values.concete5,\r\n values.concete6,\r\n values.concete7,\r\n ],\r\n woodCosts: [\r\n values.wood1,\r\n values.wood2,\r\n values.wood3,\r\n values.wood4,\r\n values.wood5,\r\n values.wood6,\r\n values.wood7,\r\n ],\r\n };\r\n dispatch(showLoading(true));\r\n await createOrUpdateConceteAndWoodCost(request);\r\n dispatch(showLoading(false));\r\n };\r\n\r\n const createOrUpdateConceteAndWoodCost = async (request) => {\r\n const http = HTTP(\r\n \"POST\",\r\n `project/createOrUpdate/concetecost`,\r\n null,\r\n request\r\n );\r\n const response = await http.execute();\r\n if (HTTPUtils.isSuccess(response)) {\r\n toast.success(\"บันทึกสำเร็จ\");\r\n } else {\r\n //show error\r\n toast.error(\"บันทึกล้มเหลว\");\r\n }\r\n };\r\n\r\n // const layout = {\r\n // labelCol: {\r\n // span: 4,\r\n // },\r\n // wrapperCol: {\r\n // span: 24,\r\n // },\r\n // };\r\n\r\n return (\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\n );\r\n};\r\n\r\nexport default FormConeteCost;\r\n","import React, { useState, useEffect } from \"react\";\r\nimport \"../../../Styles/Divider.css\";\r\nimport NavBar2 from \"../../../Components/NavBar2\";\r\nimport { Row, Layout, Col, Divider } from \"antd\";\r\nimport { Background } from \"../../../Constants/Images\";\r\nimport MenuStep from \"../../../Components/MenuStep\";\r\nimport FormConceteCost from \"./Components/FormConceteCost\";\r\nimport HTTP from \"../../../https/HTTP\";\r\nimport HTTPUtils from \"../../../https/HTTPUtils\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { showLoading } from \"../../../Redux/LoadingReducer\";\r\n\r\nconst ConceteCost = (props) => {\r\n const dispatch = useDispatch();\r\n const [responseApi, setResponseApi] = useState();\r\n useEffect(() => {\r\n (async () => {\r\n dispatch(showLoading(true));\r\n await getConceteAndWoodCost(props.match.params.projectId);\r\n dispatch(showLoading(false));\r\n // console.log(\"p id \", projectId);\r\n // if (parseInt(projectId)) {\r\n // console.log(\"get project info\");\r\n // await getProject(projectId);\r\n // }\r\n // await getProvince();\r\n })();\r\n }, []);\r\n\r\n const getConceteAndWoodCost = async (projectId) => {\r\n const http = HTTP(\"GET\", `project/${projectId}/concetecost`);\r\n const response = await http.execute();\r\n if (HTTPUtils.isSuccess(response)) {\r\n setResponseApi(response.data);\r\n } else {\r\n //show error\r\n }\r\n };\r\n\r\n return (\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\n );\r\n};\r\n\r\nexport default ConceteCost;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { toast } from \"react-toastify\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { showLoading } from \"../../../Redux/LoadingReducer\";\r\nimport NavBar2 from \"../../../Components/NavBar2\";\r\nimport { Row, Layout, Col, Tree, Modal, Input, Form } from \"antd\";\r\nimport { Background } from \"../../../Constants/Images\";\r\nimport TablePR4 from \"./Components/TablePR4\";\r\nimport MenuStep from \"../../../Components/MenuStep\";\r\nimport { Area, Special } from \"../../../Constants/SubWorkGroupId\";\r\nimport { columnBuilding, columnSpecial } from \"../../../Constants/ColumnFormat\";\r\nimport { Irrigation, Dam } from \"../../../Constants/Type\";\r\nimport HTTP from \"../../../https/HTTP\";\r\nimport HTTPUtils from \"../../../https/HTTPUtils\";\r\n// import { getType } from \"@reduxjs/toolkit\";\r\n// const { TabPane } = Tabs;\r\nconst PR4Special = (props) => {\r\n const dispatch = useDispatch();\r\n const [groupData, setGroupData] = useState();\r\n const [labelNavBar, setLabelNavbar] = useState({});\r\n const [isBuildingType, setIsBuildingType] = useState(false);\r\n\r\n useEffect(() => {\r\n (async () => {})();\r\n // dispatch(showLoading(true));\r\n const projectId = props.match.params.projectId;\r\n const subWorkGroupId = props.match.params.subWorkGroupId;\r\n getProjectType(projectId);\r\n if (subWorkGroupId == Area) {\r\n setLabelNavbar({ thai: \"ปร.4 งานผังบริเวณ\", english: \"PR4 Area\" });\r\n } else if (subWorkGroupId == Special) {\r\n setLabelNavbar({\r\n thai: \"ปร.4 ค่าใช้จ่ายพิเศษ\",\r\n english: \"PR4 Special\",\r\n });\r\n }\r\n setGroupData({ projectId: projectId, subWorkGroupId: subWorkGroupId });\r\n // dispatch(showLoading(false));\r\n }, []);\r\n\r\n const getProjectType = async (projectId) => {\r\n // dispatch(showLoading(true));\r\n const http = HTTP(\"GET\", `project/${projectId}`);\r\n const response = await http.execute();\r\n if (HTTPUtils.isSuccess(response)) {\r\n var typeId = response.data.typeId;\r\n if (typeId == Irrigation || typeId == Dam) {\r\n setIsBuildingType(false);\r\n } else {\r\n setIsBuildingType(true);\r\n }\r\n } else {\r\n toast.error(\"ไม่พบข้อมูล\");\r\n }\r\n // dispatch(showLoading(false));\r\n };\r\n\r\n const selectedColumnFormat = () => {\r\n const subWorkGroupId = props.match.params.subWorkGroupId;\r\n if (subWorkGroupId == Special) {\r\n return columnSpecial;\r\n } else {\r\n return columnBuilding;\r\n }\r\n };\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {isBuildingType ? (\r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n โครงการที่เป็นระบบระบายน้ำท่วมหรือเขื่อนจะไม่มีงานปร.4\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 PR4Special;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport \"antd/dist/antd.css\";\r\nimport \"../../../../Styles/Table.css\";\r\nimport { toast } from \"react-toastify\";\r\nimport {\r\n Col,\r\n Row,\r\n Input,\r\n Table,\r\n Modal,\r\n Form,\r\n InputNumber,\r\n Radio,\r\n Space,\r\n Select,\r\n} from \"antd\";\r\n// import { DeleteOutlined } from \"@ant-design/icons\";\r\nimport HTTP from \"../../../../https/HTTP\";\r\nimport HTTPUtils from \"../../../../https/HTTPUtils\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { showLoading } from \"../../../../Redux/LoadingReducer\";\r\nimport ButtonSave from \"../../../../Components/ButtonSave\";\r\nimport {\r\n columnSpecial,\r\n columnBuilding,\r\n columnDam,\r\n} from \"../../../../Constants/ColumnFormat\";\r\nimport AppConfig from \"../../../../AppConfig\";\r\nimport DownloadHelper from \"../../../../Helpers/DownloadHelper\";\r\nconst { Option } = Select;\r\n\r\nconst TableSummaryPR4 = ({\r\n selectedGroupProp,\r\n projectId,\r\n columnFormat,\r\n data,\r\n onDownLoadClick,\r\n workGroupOptions,\r\n onSelectChange,\r\n}) => {\r\n const dispatch = useDispatch();\r\n const [isShowModalItem, setIsShowModalItem] = useState(false);\r\n const [modalItemData, setModalItemData] = useState();\r\n const [formModalItem] = Form.useForm();\r\n const [dataTable, setDataTable] = useState([]);\r\n const [selectedRowKeys, setSelectedRowKeys] = useState([]);\r\n const [selectedRowData, setSelectedRowData] = useState([]);\r\n const [deleteIds, setDeleteIds] = useState([]);\r\n\r\n const [isShowModalNewItem, setIsShowModalNewItem] = useState();\r\n const [formModalNewItem] = Form.useForm();\r\n const [modalNewItemData, setModalNewItemData] = useState();\r\n const [deleteSpecialIds, setDeleteSpecialIds] = useState([]);\r\n\r\n const [customFields, setCustomFields] = useState([]);\r\n const [customSubmitInfo, setCustomSubmitInfo] = useState();\r\n const [optionFields, setOptionFields] = useState({});\r\n // const [columnTable, setColumnTable] = useState([]);\r\n // const [deepSearchArray, setDeepSearchArray] = useState([]);\r\n\r\n return (\r\n
\r\n (i % 2 ? \"odd\" : \"even\")}\r\n pagination={{\r\n defaultPageSize: 5000,\r\n // showSizeChanger: true,\r\n // pageSizeOptions: [\"30\", \"50\", \"70\", \"100\"],\r\n }}\r\n scroll={{ y: 440, x: 100 }}\r\n title={() => (\r\n
\r\n \r\n \r\n \r\n \r\n {workGroupOptions?.length > 0 ? (\r\n \r\n \r\n option.label.indexOf(input.toLowerCase()) >= 0\r\n }\r\n onChange={onSelectChange}\r\n placeholder={\"กลุ่มงาน\"}\r\n >\r\n \r\n ) : null}\r\n \r\n
\r\n )}\r\n />\r\n
\r\n );\r\n};\r\n\r\nexport default TableSummaryPR4;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { toast } from \"react-toastify\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { showLoading } from \"../../../Redux/LoadingReducer\";\r\nimport NavBar2 from \"../../../Components/NavBar2\";\r\nimport { Row, Layout, Col, Tree, Modal, Input, Form } from \"antd\";\r\nimport { Background } from \"../../../Constants/Images\";\r\nimport TableSummaryPR4 from \"./Components/TableSummaryPR4\";\r\nimport MenuStep from \"../../../Components/MenuStep\";\r\n// import { Area, Special } from \"../../../Constants/SubWorkGroupId\";\r\nimport { Building, DevCity } from \"../../../Constants/Type\";\r\nimport AppConfig from \"../../../AppConfig\";\r\nimport {\r\n columnDam,\r\n columnBuilding,\r\n // columnSpecial,\r\n} from \"../../../Constants/ColumnFormat\";\r\nimport HTTP from \"../../../https/HTTP\";\r\nimport HTTPUtils from \"../../../https/HTTPUtils\";\r\nimport DownloadHelper from \"../../../Helpers/DownloadHelper\";\r\n// import { getType } from \"@reduxjs/toolkit\";\r\n// const { TabPane } = Tabs;\r\nconst SummaryPR4 = (props) => {\r\n const dispatch = useDispatch();\r\n const [tableData, setTableData] = useState([]);\r\n const [isBuildingType, setIsBuildingType] = useState(false);\r\n const [workGroupOptions, setWorkGroupOptions] = useState([]);\r\n const [selectedWorkGroupId, setSelectedWorkGroupId] = useState();\r\n useEffect(() => {\r\n (async () => {\r\n dispatch(showLoading(true));\r\n const projectId = props.match.params.projectId;\r\n // await getSummaryPR4Dam(projectId);\r\n await getProject(projectId);\r\n dispatch(showLoading(false));\r\n })();\r\n }, []);\r\n\r\n // useEffect(() => {\r\n // if (tableData) {\r\n // }\r\n // }, [tableData]);\r\n\r\n const selectedColumnFormat = () => {\r\n if (isBuildingType) {\r\n return columnBuilding;\r\n } else {\r\n return columnDam;\r\n }\r\n };\r\n\r\n const getProject = async (projectId) => {\r\n const http = HTTP(\"GET\", `project/${projectId}`);\r\n const response = await http.execute();\r\n if (HTTPUtils.isSuccess(response)) {\r\n var typeId = response.data.typeId;\r\n if (typeId == Building || typeId == DevCity) {\r\n setIsBuildingType(true);\r\n var workGroupResponse = await getWorkGroups(projectId);\r\n var workGroups = workGroupResponse.map((w) => ({\r\n value: w.id,\r\n label: w.name,\r\n }));\r\n\r\n setWorkGroupOptions(workGroups);\r\n setSelectedWorkGroupId(workGroups[0]?.value);\r\n await getSummaryPR4Building(projectId, workGroups[0]?.value);\r\n } else {\r\n await getSummaryPR4Dam(projectId);\r\n }\r\n } else {\r\n toast.error(\"ไม่พบข้อมูล\");\r\n }\r\n };\r\n\r\n const getSummaryPR4Dam = async (projectId) => {\r\n const http = HTTP(\r\n \"GET\",\r\n `projectItem/summary/project/${projectId}/workgroup/0`\r\n );\r\n const response = await http.execute();\r\n if (HTTPUtils.isSuccess(response)) {\r\n setTableData(response.data);\r\n } else {\r\n toast.error(\"ไม่พบข้อมูล\");\r\n }\r\n };\r\n\r\n const getSummaryPR4Building = async (projectId, workGroupId) => {\r\n const http = HTTP(\r\n \"GET\",\r\n `projectItem/summary/project/${projectId}/workgroup/${workGroupId}`\r\n );\r\n const response = await http.execute();\r\n if (HTTPUtils.isSuccess(response)) {\r\n setTableData(response.data);\r\n } else {\r\n toast.error(\"ไม่พบข้อมูล\");\r\n }\r\n };\r\n\r\n const getWorkGroups = async (projectId) => {\r\n const http = HTTP(\"GET\", `workGroup/project/${projectId}`);\r\n\r\n const response = await http.execute();\r\n if (HTTPUtils.isSuccess(response)) {\r\n return response.data;\r\n } else {\r\n toast.error(\"ไม่พบข้อมูล\");\r\n }\r\n };\r\n\r\n const downloadSummary = async () => {\r\n dispatch(showLoading(true));\r\n const projectId = props.match.params.projectId;\r\n let url = \"\";\r\n if (selectedWorkGroupId) {\r\n url = `${AppConfig.apiUrl}projectItem/summary/project/${projectId}/workgroup/${selectedWorkGroupId}/download`;\r\n } else {\r\n url = `${AppConfig.apiUrl}projectItem/summary/project/${projectId}/workgroup/0/download`;\r\n }\r\n\r\n const response = await fetch(url, {\r\n method: \"GET\",\r\n });\r\n if (response.status != 200) {\r\n toast.error(\"download ล้มเหลว\");\r\n return;\r\n }\r\n\r\n response\r\n .blob()\r\n .then((blob) => DownloadHelper.downloadBlob(blob, \"reportPR4.xlsx\"));\r\n dispatch(showLoading(false));\r\n };\r\n\r\n const onSelectChange = async (workGroupId) => {\r\n if (!workGroupId) return;\r\n dispatch(showLoading(true));\r\n setSelectedWorkGroupId(workGroupId);\r\n setTableData([]); // this line prevent old data merge with new data\r\n const projectId = props.match.params.projectId;\r\n await getSummaryPR4Building(projectId, workGroupId);\r\n dispatch(showLoading(false));\r\n };\r\n\r\n return (\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\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default SummaryPR4;\r\n","import React, { Component } from \"react\";\r\nimport { Route } from \"react-router-dom\";\r\nimport Info from \"../Pages/Project/Info\";\r\nimport Material from \"../Pages/Project/Material\";\r\nimport PR4 from \"../Pages/Project/PR4\";\r\nimport PR5 from \"../Pages/Project/PR5\";\r\nimport PR6 from \"../Pages/Project/PR6\";\r\nimport Category from \"../Pages/Project/Category\";\r\nimport Picture from \"../Pages/Project/Picture\";\r\nimport AppConfig from \"../AppConfig\";\r\nimport Location from \"../Pages/Project/Location\";\r\nimport InfoBk from \"../Pages/Project/Info/indexBk\";\r\nimport ConceteCost from \"../Pages/Project/ConceteCost\";\r\nimport PR4Special from \"../Pages/Project/PR4/indexSpecial\";\r\nimport SummaryPR4 from \"../Pages/Project/SummaryPR4\";\r\nexport default class ProjectRoutes extends Component {\r\n render() {\r\n return (\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\n }\r\n}\r\n","import React from \"react\";\r\nimport \"antd/dist/antd.css\";\r\nimport { Form, Row, Col } from \"antd\";\r\nimport CrossLine from \"../../../Components/CrossLine\";\r\n\r\nconst InputRow = ({\r\n label,\r\n InputComponent,\r\n keyInput,\r\n isRequire,\r\n messageRequire,\r\n}) => {\r\n return (\r\n \r\n \r\n \r\n {label}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {InputComponent}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default InputRow;\r\n","import React, { useEffect } from \"react\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { toast } from \"react-toastify\";\r\nimport \"antd/dist/antd.css\";\r\nimport { Form, Row, Col, Input } from \"antd\";\r\nimport InputRow from \"./InputRow\";\r\nimport ButtonSave from \"../../../Components/ButtonSave\";\r\nimport HTTP from \"../../../https/HTTP\";\r\nimport HTTPUtils from \"../../../https/HTTPUtils\";\r\nimport { showLoading } from \"../../../Redux/LoadingReducer\";\r\nimport AppConfig from \"../../../AppConfig\";\r\n\r\nconst UserInfoForm = ({ router, isEdit }) => {\r\n const [form] = Form.useForm();\r\n\r\n const dispatch = useDispatch();\r\n\r\n useEffect(() => {\r\n (async () => {\r\n try {\r\n const userId = window.sessionStorage?.userId;\r\n if (isEdit && userId) {\r\n dispatch(showLoading(true));\r\n await getUser(userId);\r\n dispatch(showLoading(false));\r\n }\r\n // dispatch(showLoading(false));\r\n } catch {\r\n //display error\r\n // dispatch(showLoading(false));\r\n }\r\n })();\r\n }, []);\r\n\r\n const onFinish = async (submitData) => {\r\n dispatch(showLoading(true));\r\n if (!isEdit) {\r\n await createUser(submitData);\r\n } else {\r\n // submitData.userId = userId;\r\n console.log(window.sessionStorage.userId);\r\n submitData.id = window.sessionStorage.userId;\r\n await updateUser(submitData);\r\n }\r\n // console.log(\"Received values of form: \", values);\r\n // const projectId = parseInt(urlParams.projectId);\r\n // console.log(projectId);\r\n // if (isNaN(projectId)) {\r\n // const createRequest = { ...values, userId: 1 };\r\n // await createProject(createRequest);\r\n // } else {\r\n // const updateRequest = { ...values, userId: 1, id: projectId };\r\n // await updateProject(updateRequest);\r\n // }\r\n\r\n dispatch(showLoading(false));\r\n };\r\n\r\n const createUser = async (request) => {\r\n const http = HTTP(\"POST\", \"user/create\", null, request);\r\n const response = await http.execute();\r\n if (HTTPUtils.isSuccess(response)) {\r\n toast.success(\"สำเร็จ\");\r\n router.replace(\r\n // AppConfig.appPath + \"/project/select/category\"\r\n AppConfig.appPath\r\n );\r\n } else if (response.status == 409) {\r\n //show error\r\n toast.error(\r\n \"user name ที่กรอกมีอยู่แล้วในระบบ โปรดเปลี่ยน user name ใหม่\"\r\n );\r\n } else {\r\n //show error\r\n toast.error(\"ล้มเหลว\");\r\n }\r\n };\r\n\r\n const updateUser = async (request) => {\r\n const http = HTTP(\"POST\", \"user/update\", null, request);\r\n const response = await http.execute();\r\n if (HTTPUtils.isSuccess(response)) {\r\n toast.success(\"สำเร็จ\");\r\n } else if (response.status == 409) {\r\n //show error\r\n toast.error(\r\n \"user name ที่กรอกมีอยู่แล้วในระบบ โปรดเปลี่ยน user name ใหม่\"\r\n );\r\n } else {\r\n //show error\r\n toast.error(\"ล้มเหลว\");\r\n }\r\n };\r\n\r\n const getUser = async (userId) => {\r\n const http = HTTP(\"GET\", \"user/info/\" + userId);\r\n const response = await http.execute();\r\n if (HTTPUtils.isSuccess(response)) {\r\n console.log(response.data);\r\n // const project = responseToProjectFormData(response.data);\r\n // setProject(response.data);\r\n form.setFieldsValue(response.data);\r\n } else {\r\n //show error\r\n }\r\n };\r\n\r\n return (\r\n \r\n }\r\n isRequire\r\n messageRequire=\"กรุณากรอกข้อมูล\"\r\n />\r\n {isEdit ? null : (\r\n