{"version":3,"sources":["i18n/index.ts","Utils/scrollToTop.ts","Styles/colors.tsx","Utils/common.tsx","Styles/textStyles.tsx","Styles/theme.tsx","Resources/images/logo.svg","Components/general/Navbar.tsx","Components/general/Footer.tsx","Resources/images/about_banner.png","Resources/images/about_icon.svg","Pages/AboutPage.tsx","Components/upload/ProgressBar.tsx","Components/upload/UploadSection.tsx","Resources/images/verify_success.svg","Resources/images/verify_expired.svg","Resources/images/verify_fail.svg","Resources/images/upload.svg","Resources/images/pdf.svg","Resources/images/upload_success.svg","Resources/images/upload_failure.svg","Resources/images/step1.svg","Resources/images/step2.svg","Resources/images/step3.svg","Components/upload/Help.tsx","Resources/images/iconCert.svg","Pages/UploadPage.tsx","Resources/partnership/partners.tsx","Components/partner/PartnerPanel.tsx","Resources/images/partners_banner.svg","Resources/images/partners_icon.svg","Pages/PartnerPage.tsx","Resources/images/faq_banner.svg","Resources/images/faq_icon.svg","Pages/FAQPage.tsx","Resources/images/privacy_banner.svg","Resources/images/privacy_icon.svg","Pages/PrivacyPage.tsx","App.tsx","index.tsx"],"names":["dictionary","en","translation","zh","i18n","use","initReactI18next","init","resources","lng","returnObjects","interpolation","escapeValue","ScrollToTop","pathname","useLocation","useEffect","window","focus","scrollTo","console","log","screenX","screenY","Estatus","EstatusType","colors","white","gray","selected","text","main","link","grey","light","dark","info","warning","success","critical","textStyles","baseStyle","color","fontWeight","fontSize","lineHeight","letterSpacing","lg_bold","lg_semibold","lg_normal","md_semibold","md_normal","sm_bold","sm_semibold","sm_normal","xs_normal","extendTheme","Navbar","location","history","useHistory","position","w","h","px","justify","align","borderBottom","borderColor","theme","backgroundColor","cursor","src","logo","onClick","push","exact","to","TabText","styled","Text","props","Footer","useDisclosure","isOpen","onOpen","onClose","modal","size","isCentered","py","borderRadius","pt","p","borderTop","spacing","style","linkStyle","alignSelf","textDecoration","AboutPage","direction","objectFit","aboutBanner","m","aboutIcon","mr","textStyle","href","mt","mb","marginBottom","ProgressBar","status","flexGrow","Flow","Line","Circle","done","Flex","Eresult","readfile","file","setWrongFormat","setStatus","setUploadFile","setStatusType","splitFileName","name","split","length","exceedFileSize","failure","getToken","setToken","a","fetch","baseURL","then","res","catch","err","submitFile","token","setResult","setLoading","upload","formData","FormData","append","body","method","json","result2num","error_msg","indexOf","result","UploadSection","useState","null","statusType","wrongFormat","uploadFile","loading","resultImage","expired","fail","btnHandler","e","preventDefault","stopPropagation","target","files","bgColor","onDrop","dataTransfer","onDragOver","onDragEnter","wrong","StyleBtn","type","accept","onChange","display","uploadSuccess","btnStyle","border","uploadFailure","map","padding","FormLabel","Help","pb","step1","step2","step3","UploadPage","minH","iconCert","partners","chinese_name","PartnerPanel","flexWrap","partner","cardStyle","pr","PartnerLink","textAlign","width","minWidth","height","margin","alignItems","boxShadow","PartnerPage","partnersBanner","partnersIcon","FAQPage","t","useTranslation","faqBanner","faqIcon","content","index","ans","idx","keyword","toLocaleLowerCase","includes","substr","PrivacyPage","contents","banner","icon","iconStyle","pl","marginRight","App","from","path","component","ReactDOM","render","StrictMode","document","getElementById"],"mappings":"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","file":"static/js/main.de73a704.chunk.js","sourcesContent":["import i18n from 'i18next';\r\nimport { initReactI18next } from 'react-i18next';\r\nimport zh from './zh-TW.json';\r\nimport en from './en-US.json';\r\n\r\nconst dictionary = {\r\n en: { translation: en },\r\n zh: { translation: zh },\r\n};\r\n\r\ni18n.use(initReactI18next).init({\r\n resources: dictionary,\r\n lng: 'zh',\r\n returnObjects: true,\r\n interpolation: {\r\n escapeValue: false,\r\n },\r\n});\r\n\r\nexport default dictionary;\r\n","import { useEffect } from \"react\";\r\nimport { useLocation } from \"react-router-dom\";\r\n\r\nexport default function ScrollToTop() {\r\n const { pathname } = useLocation();\r\n\r\n useEffect(() => {\r\n window.focus();\r\n window.scrollTo(0, 0);\r\n\r\n console.log(window.screenX, window.screenY)\r\n }, [pathname]);\r\n\r\n return null;\r\n}","const colors = {\r\n white: \"#fff\",\r\n gray: \"#DADADA\",\r\n selected: '#ECA601',\r\n text: {\r\n main: '#00292B',\r\n link: '#1B1301',\r\n },\r\n grey: {\r\n light: '#e0e0e0',\r\n dark: '#6c6c6c',\r\n 50: '#fafafa',\r\n 100: '#f5f5f5',\r\n 200: '#eeeeee',\r\n 300: '#e0e0e0',\r\n 400: '#bdbdbd',\r\n 500: '#9e9e9e',\r\n 600: '#757575',\r\n 700: '#616161',\r\n 800: '#424242',\r\n 900: '#212121',\r\n },\r\n info: {\r\n 50: '#E8F4FD',\r\n 100: '#D0E9FB',\r\n 200: '#B4DBF8',\r\n 300: '#0172CB',\r\n 400: '#005AA3',\r\n 500: '#01508E',\r\n },\r\n warning: {\r\n 50: '#FDF0E3',\r\n 100: '#FAE2C7',\r\n 200: '#E98305',\r\n 300: '#DC7C05',\r\n 400: '#CD7304',\r\n 500: '#AE5700',\r\n },\r\n success: {\r\n 50: '#EBF4EC',\r\n 100: '#D7EAD9',\r\n 200: '#C3DFC7',\r\n 300: '#28A138',\r\n 400: '#1D7228',\r\n 500: '#2D7738',\r\n },\r\n critical: {\r\n 50: '#fbcdd1',\r\n 100: '#f79997',\r\n 200: '#f0716e',\r\n 300: '#d21c1b',\r\n 400: '#c4040b',\r\n 500: '#9d1615',\r\n },\r\n};\r\n\r\nexport default colors;","enum Estatus {\r\n upload = 0,\r\n status,\r\n result\r\n}\r\n\r\nenum EstatusType {\r\n null = -1,\r\n success = 0,\r\n exceedFileSize,\r\n failure\r\n}\r\n\r\nconst baseURL = process.env.REACT_APP_BACKEND_BASEURL || '';\r\n\r\nexport const readfile = (\r\n file: File,\r\n setWrongFormat: (wrong: boolean) => void,\r\n setStatus: (status: Estatus) => void,\r\n setUploadFile: (file: File) => void,\r\n setStatusType: (statusType: EstatusType) => void,\r\n) => {\r\n setWrongFormat(false)\r\n const splitFileName = file.name.split('.');\r\n // const allowedExtensions = /(\\.pdf)$/i;\r\n // Old code from MOE-cert platform\r\n // if (file && allowedExtensions.exec(file.name) && splitFileName.length === 2) {\r\n // setUploadFile(file)\r\n // setStatus(Estatus.status)\r\n // } else {\r\n // setWrongFormat(true)\r\n // }\r\n if (file) {\r\n // is a PDF file\r\n if ((splitFileName[splitFileName.length - 1] === \"pdf\") && splitFileName.length >= 2) {\r\n // if (allowedExtensions.exec(file.name) && splitFileName.length === 2) {\r\n setStatus(Estatus.status)\r\n if (file.size / 1048576 > 1.5) { // exceed file size limit\r\n setStatusType(EstatusType.exceedFileSize)\r\n }\r\n else { // valid file\r\n setStatusType(EstatusType.success)\r\n setUploadFile(file)\r\n }\r\n }\r\n else { // is not a PDF file\r\n setWrongFormat(true)\r\n }\r\n }\r\n else { // cannot read file\r\n setStatus(Estatus.status)\r\n setStatusType(EstatusType.failure)\r\n setUploadFile(file)\r\n }\r\n}\r\n\r\nexport const getToken = async (\r\n setToken: (token: string) => void\r\n) => {\r\n await fetch(baseURL + '/api/token')\r\n .then(res => res.text())\r\n .then(res => setToken(res))\r\n .catch(err => console.log(err))\r\n}\r\n\r\nexport const submitFile = async (\r\n file: File | undefined,\r\n token: string,\r\n setStatus: (status: Estatus) => void,\r\n setResult: (result: number) => void,\r\n setLoading: (result: boolean) => void,\r\n) => {\r\n if (!file) {\r\n setStatus(Estatus.upload)\r\n setLoading(false)\r\n return\r\n }\r\n\r\n const formData = new FormData();\r\n formData.append('file', file);\r\n const res = await fetch('https://mcert.credit.csie.ncku.edu.tw/students/validate/', {\r\n body: formData,\r\n method: 'POST'\r\n }).then(res => res.json())\r\n .catch(err => console.log(err))\r\n\r\n const result2num = [\r\n 'success',\r\n 'expired',\r\n 'failure'\r\n ]\r\n\r\n if (!res || !res.error_msg) {\r\n setStatus(Estatus.upload)\r\n setLoading(false)\r\n return\r\n }\r\n\r\n setResult(result2num.indexOf(res.error_msg))\r\n setStatus(Estatus.result)\r\n setLoading(false)\r\n}\r\n","const textStyles = {\r\n baseStyle: {\r\n color: 'text.main',\r\n fontWeight: 400,\r\n fontSize: '14px',\r\n lineHeight: '150%',\r\n letterSpacing: '0.01em',\r\n },\r\n lg_bold: {\r\n fontWeight: 700,\r\n fontSize: '20px',\r\n lineHeight: '120%',\r\n },\r\n lg_semibold: {\r\n fontWeight: 600,\r\n fontSize: '20px',\r\n lineHeight: '120%',\r\n },\r\n lg_normal: {\r\n fontWeight: 400,\r\n fontSize: '20px',\r\n lineHeight: '150%',\r\n },\r\n md_semibold: {\r\n fontWeight: 600,\r\n fontSize: '16px',\r\n lineHeight: '120%',\r\n },\r\n md_normal: {\r\n fontWeight: 400,\r\n fontSize: '16px',\r\n lineHeight: '150%',\r\n },\r\n sm_bold: {\r\n fontWeight: 700,\r\n fontSize: '14px',\r\n lineHeight: '120%',\r\n },\r\n sm_semibold: {\r\n fontWeight: 600,\r\n fontSize: '14px',\r\n lineHeight: '150%',\r\n },\r\n sm_normal: {\r\n fontWeight: 400,\r\n fontSize: '14px',\r\n lineHeight: '150%',\r\n },\r\n xs_normal: {\r\n fontWeight: 400,\r\n fontSize: '12px',\r\n lineHeight: '150%',\r\n }\r\n};\r\n \r\nexport default textStyles;","import { extendTheme } from '@chakra-ui/react';\r\n\r\nimport colors from './colors';\r\nimport textStyles from './textStyles';\r\n\r\nexport default extendTheme({\r\n colors,\r\n textStyles,\r\n})","export default __webpack_public_path__ + \"static/media/logo.4653ff80.svg\";","import React from 'react';\r\nimport { Flex, Image, Text } from '@chakra-ui/react';\r\nimport { NavLink, useLocation, useHistory } from 'react-router-dom';\r\nimport styled from 'styled-components';\r\n\r\nimport theme from '../../Styles/theme';\r\nimport logo from '../../Resources/images/logo.svg';\r\n\r\nconst Navbar: React.FC = () => {\r\n const location = useLocation();\r\n const history = useHistory();\r\n\r\n return (\r\n \r\n history.push('/upload')}\r\n />\r\n \r\n \r\n \r\n 關於\r\n \r\n \r\n \r\n \r\n 醫療數位文件驗證\r\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 Navbar;\r\n\r\nconst TabText = styled(Text)`\r\n :hover{\r\n color: ${theme.colors.selected};\r\n }\r\n margin-right: 30px;\r\n color: ${props => props.selected === true ? theme.colors.selected : theme.colors.text.link};\r\n font-weight: ${props => props.selected === true ? 500 : 'normal'};\r\n text-align: center;\r\n`\r\n","import React from 'react';\r\nimport { Flex, Text, Stack, HStack,\r\n Modal, ModalOverlay, ModalContent, ModalHeader, ModalCloseButton,\r\n ModalBody, useDisclosure } from '@chakra-ui/react';\r\nimport { NavLink } from 'react-router-dom';\r\n\r\nimport theme from '../../Styles/theme';\r\n\r\nconst Footer: React.FC = () => {\r\n const { isOpen, onOpen, onClose } = useDisclosure();\r\n const modal = \r\n \r\n \r\n 聯絡我們\r\n \r\n \r\n 葉博士\r\n cyyeh@netdb.csie.ncku.edu.tw\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 {modal}\r\n \r\n \r\n \r\n \r\n 國立成功大學數位認證平台 醫療數位文件驗證系統 版權所有\r\n \r\n \r\n 維護單位/ 國立成功大學\r\n \r\n \r\n 建議以電腦瀏覽(螢幕解析度 1024 x 768 以上)\r\n \r\n \r\n \r\n 更新日期:2023/06/02\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default Footer;\r\n\r\nconst linkStyle = {\r\n color: '#001415',\r\n fontWeight: 'normal' as 'normal',\r\n fontSize: '14px',\r\n textDecoration: 'none'\r\n}","export default __webpack_public_path__ + \"static/media/about_banner.e5a1565e.png\";","export default __webpack_public_path__ + \"static/media/about_icon.381ed9fa.svg\";","import React from 'react';\r\nimport { Flex, Image, Text, Box, Link } from '@chakra-ui/react';\r\n\r\nimport aboutBanner from '../Resources/images/about_banner.png';\r\nimport aboutIcon from '../Resources/images/about_icon.svg';\r\n\r\nconst AboutPage: React.FC = () => {\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 ),於2022年開放使用,並蒐集各界意見持續完善功能。未來朝協助各醫療院所、第三方單位建置符合規範之醫療數位文件發證系統發展,以提供新型態服務模式,以科技創新打造民眾服務全新體驗。\r\n \r\n \r\n 醫療數位文件之特點:\r\n - 數位文件為等同紙本文件效力的官方合法電子文件。\r\n - 數位文件是一份全彩高解析度文件,可快速辨識真偽。\r\n - 數位文件提供民眾可以更方便、更安全地使用。\r\n \r\n \r\n 聯絡我們!\r\n 請洽:\r\n 葉博士\r\n cyyeh@netdb.csie.ncku.edu.tw\r\n \r\n
\r\n
\r\n
\r\n )\r\n};\r\n\r\nexport default AboutPage;\r\n\r\n// const iconStyle = {\r\n// fontSize: '30px',\r\n// marginLeft: '-40px',\r\n// }\r\n\r\nconst linkStyle = {\r\n color: '#27496d',\r\n fontWeight: 'bold' as 'bold',\r\n marginBottom: '10px 0'\r\n}\r\n","import React from 'react';\r\nimport { Flex, Text } from '@chakra-ui/react';\r\nimport styled from 'styled-components';\r\n\r\nconst ProgressBar: React.FC<{\r\n status: number\r\n}> = ({ status }) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n = 0} />\r\n 0 && \"#FFB813\"} />\r\n \r\n 選擇檔案\r\n \r\n \r\n \r\n 0 && \"#FFB813\"} />\r\n = 1} />\r\n 1 && \"#FFB813\"} />\r\n \r\n 上傳狀態\r\n \r\n \r\n \r\n 1 && \"#FFB813\"} />\r\n = 2} />\r\n \r\n \r\n 驗證結果\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ProgressBar;\r\n\r\nconst Circle = styled(Flex)`\r\n width: 20px;\r\n height: 20px;\r\n align-items: center;\r\n border-radius: 50%;\r\n background: ${props => (props.done ? \"#FFB813\" : \"#DCE3E9\")}\r\n`;\r\n\r\nconst Flow = styled(Flex)`\r\n width: 100%;\r\n margin-top: 10px;\r\n justify-content: center;\r\n align-items: center;\r\n`\r\nconst Line = styled(Flex)`\r\n width: 50%;\r\n height: 2px;\r\n background: ${props => props.color || \"#DCE3E9\"};\r\n`","import React, { useState, useEffect } from 'react'\r\nimport { Flex, Image, Text, Button, FormLabel, Input } from '@chakra-ui/react';\r\nimport styled from 'styled-components';\r\nimport Spinner from 'react-spinners/MoonLoader';\r\n\r\nimport { readfile, getToken, submitFile } from '../../Utils/common';\r\nimport success from '../../Resources/images/verify_success.svg';\r\nimport expired from '../../Resources/images/verify_expired.svg';\r\nimport fail from '../../Resources/images/verify_fail.svg';\r\nimport upload from '../../Resources/images/upload.svg';\r\nimport wrong from '../../Resources/images/pdf.svg';\r\nimport uploadSuccess from '../../Resources/images/upload_success.svg';\r\nimport uploadFailure from '../../Resources/images/upload_failure.svg';\r\n\r\nenum Estatus {\r\n upload = 0,\r\n status,\r\n result\r\n}\r\n\r\nenum Eresult {\r\n null = -1,\r\n success = 0,\r\n expired,\r\n failure,\r\n}\r\n\r\nenum EstatusType {\r\n null = -1,\r\n success = 0,\r\n exceedFileSize,\r\n failure\r\n}\r\n\r\nconst UploadSection: React.FC<{\r\n status: Estatus;\r\n setStatus: (status: Estatus) => void;\r\n}> = ({ status, setStatus }) => {\r\n const [statusType, setStatusType] = useState(EstatusType.null);\r\n // const [allowOnDrop, setAllowOnDrop] = useState(true);\r\n const [wrongFormat, setWrongFormat] = useState(false);\r\n const [uploadFile, setUploadFile] = useState();\r\n const [token, setToken] = useState('');\r\n const [loading, setLoading] = useState(false);\r\n const [result, setResult] = useState(Eresult.null); // success | expired | failure\r\n const resultImage = [success, expired, fail]\r\n const resultTitle = [\r\n '文件驗證成功', \r\n '文件驗證失效,已有更新檔案',\r\n '文件驗證失敗\\n(文件不存在或已被修改)'\r\n ]\r\n const resultTitleColor = ['#1D7228', '#AE5700', '#9D1615']\r\n const resultText = [\r\n '此文件已受國立成功大學數位認證平台認證',\r\n '請上傳新版數位文件,並重新進行文件驗證',\r\n '此文件未受國立成功大學數位認證平台認證\\n請確認您上傳的檔案是否為醫院官方提供之醫療數位文件',\r\n ]\r\n\r\n useEffect(() => {\r\n getToken(setToken);\r\n }, []);\r\n\r\n const onDropHandler = (e: React.DragEvent) => {\r\n e.preventDefault()\r\n e.stopPropagation()\r\n // if (allowOnDrop !== true) return\r\n // if (status !== Estatus.upload) return\r\n if ((status === Estatus.status && statusType === EstatusType.success) ||\r\n status === Estatus.result) return\r\n // if (status === Estatus.result) return\r\n setLoading(true)\r\n const file = e.dataTransfer.files[0];\r\n readfile(file, setWrongFormat, setStatus, setUploadFile, setStatusType)\r\n setLoading(false)\r\n }\r\n\r\n const btnHandler = (e: any) => {\r\n setLoading(true)\r\n e.preventDefault();\r\n e.stopPropagation();\r\n const file = e.target.files[0];\r\n readfile(file, setWrongFormat, setStatus, setUploadFile, setStatusType)\r\n setLoading(false)\r\n };\r\n\r\n return (\r\n e.preventDefault()}\r\n onDragEnter={e => e.preventDefault()}\r\n >\r\n \r\n {loading &&\r\n \r\n \r\n 驗證中\r\n \r\n }\r\n {status === Estatus.upload && !loading &&\r\n <>\r\n \r\n {wrongFormat && \r\n \r\n 只允許 PDF 檔案,請重新上傳\r\n \r\n }\r\n \r\n \r\n 拖放檔案或\r\n \r\n 上傳檔案\r\n \r\n \r\n \r\n \r\n \r\n }\r\n {status === Estatus.status && statusType === EstatusType.success && !loading &&\r\n <>\r\n \r\n \r\n 上傳成功\r\n \r\n {uploadFile ? uploadFile.name : ''}\r\n \r\n \r\n \r\n \r\n \r\n }\r\n {status === Estatus.status && statusType !== EstatusType.success && !loading &&\r\n <>\r\n \r\n \r\n 上傳失敗,請重新上傳\r\n \r\n {statusType === EstatusType.exceedFileSize ? '檔案超過 1.5MB' : ''}\r\n \r\n \r\n 拖放檔案或\r\n \r\n 上傳檔案\r\n \r\n \r\n \r\n \r\n \r\n }\r\n {status === Estatus.result && !loading &&\r\n <>\r\n \r\n \r\n {resultTitle[result].split('\\n').map(text =>\r\n {text}\r\n )}\r\n \r\n \r\n {resultText[result].split('\\n').map(text =>\r\n {text}\r\n )}\r\n \r\n setStatus(Estatus.upload)}\r\n >\r\n 上傳其他檔案\r\n \r\n \r\n }\r\n \r\n \r\n );\r\n};\r\n\r\nexport default UploadSection;\r\n\r\nconst btnStyle = {\r\n padding: '8px 12px',\r\n borderRadius: '4px',\r\n}\r\n\r\nconst StyleBtn = styled(FormLabel)`\r\n padding: 8px 12px;\r\n border-radius: 4px;\r\n color: #ffffff;\r\n background-color: #ECA601;\r\n :hover {\r\n cursor: pointer;\r\n }\r\n :active {\r\n background-color: rgba(39, 73, 109, 0.8);\r\n }\r\n`","export default __webpack_public_path__ + \"static/media/verify_success.2a1993d8.svg\";","export default __webpack_public_path__ + \"static/media/verify_expired.de3a0e9d.svg\";","export default __webpack_public_path__ + \"static/media/verify_fail.65d6fb34.svg\";","export default __webpack_public_path__ + \"static/media/upload.1d516dc1.svg\";","export default __webpack_public_path__ + \"static/media/pdf.1041d32b.svg\";","export default __webpack_public_path__ + \"static/media/upload_success.c1f7197b.svg\";","export default __webpack_public_path__ + \"static/media/upload_failure.3f0a97e1.svg\";","export default __webpack_public_path__ + \"static/media/step1.1e36aaad.svg\";","export default __webpack_public_path__ + \"static/media/step2.a5434ed9.svg\";","export default __webpack_public_path__ + \"static/media/step3.5d566f90.svg\";","import React from 'react';\r\nimport { Flex, Text, Image } from '@chakra-ui/react';\r\n\r\nimport step1 from '../../Resources/images/step1.svg';\r\nimport step2 from '../../Resources/images/step2.svg';\r\nimport step3 from '../../Resources/images/step3.svg';\r\n\r\nconst Help: React.FC = () => {\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\nexport default Help;\r\n","export default __webpack_public_path__ + \"static/media/iconCert.bcffb147.svg\";","import React, { useState } from 'react';\r\nimport { Flex, Image, Text } from '@chakra-ui/react';\r\n\r\nimport ProgressBar from '../Components/upload/ProgressBar';\r\nimport UploadSection from '../Components/upload/UploadSection';\r\nimport Help from '../Components/upload/Help';\r\nimport iconCert from '../Resources/images/iconCert.svg';\r\n\r\nconst UploadPage: React.FC = () => {\r\n const [status, setStatus] = useState(0);\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\nexport default UploadPage;","export const partners = [\r\n {\r\n chinese_name: '中國人壽',\r\n logo: 'chinatrust.svg',\r\n link: 'http://www.chinalife.com.tw/'\r\n },\r\n {\r\n chinese_name: '奇美醫院',\r\n logo: 'chimei.svg',\r\n link: 'https://www.chimei.org.tw/'\r\n }\r\n]","import React from 'react';\r\nimport { Flex, Text, Image } from '@chakra-ui/react';\r\nimport styled from 'styled-components';\r\n\r\nimport { partners } from '../../Resources/partnership/partners';\r\nimport theme from '../../Styles/theme';\r\n\r\nconst PartnerPanel: React.FC = () => {\r\n return (\r\n <>\r\n \r\n {partners.map(partner =>\r\n \r\n \r\n {partner.chinese_name}\r\n \r\n )}\r\n \r\n 持續新增中\r\n \r\n );\r\n};\r\n\r\nexport default PartnerPanel;\r\n\r\nconst cardStyle = {\r\n width: '50%',\r\n minWidth: '400px',\r\n height: '88px',\r\n padding: '16px 24px',\r\n margin: '15px 0px',\r\n alignItems: 'center',\r\n boxShadow: '4px 8px 10px 0 rgba(194, 211, 220, 0.15), -4px -2px 6px 0 rgba(194, 211, 220, 0.25)',\r\n borderRadius: '10px'\r\n}\r\n\r\nconst PartnerLink = styled.a`\r\n :hover{\r\n color: ${theme.colors.selected};\r\n cursor: pointer;\r\n }\r\n font-weight: 600;\r\n`","export default __webpack_public_path__ + \"static/media/partners_banner.e0a0faae.svg\";","export default __webpack_public_path__ + \"static/media/partners_icon.100d24e1.svg\";","import React from 'react';\r\nimport { Flex, Image, Text } from '@chakra-ui/react';\r\nimport PartnerPanel from '../Components/partner/PartnerPanel';\r\n\r\nimport partnersBanner from '../Resources/images/partners_banner.svg';\r\nimport partnersIcon from '../Resources/images/partners_icon.svg';\r\n\r\nconst PartnerPage: React.FC = () => {\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\nexport default PartnerPage;","export default __webpack_public_path__ + \"static/media/faq_banner.b0a843ff.svg\";","export default __webpack_public_path__ + \"static/media/faq_icon.a6e09b2a.svg\";","import React from 'react';\r\nimport { Flex, Image, Text, Stack, Link } from '@chakra-ui/react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport faqBanner from '../Resources/images/faq_banner.svg';\r\nimport faqIcon from '../Resources/images/faq_icon.svg';\r\n\r\nconst FAQPage: React.FC = () => {\r\n const { t } = useTranslation();\r\n const contents: any[] = [\r\n [\r\n \"醫療數位文件要怎麼使用?\",\r\n \"電子收據為等同紙本效力的醫院官方合法醫療數位文件。\"\r\n ],\r\n [\r\n \"民眾要如何擁有醫療數位文件?\",\r\n \"於醫院完成批價後,即可於「合作醫院的數位證明下載系統」登入下載。\"\r\n ],\r\n [\r\n \"有了醫療數位文件,醫院還會發紙本收據給民眾嗎?\",\r\n \"啟動發放電子收據後,民眾仍可向醫院額外付費申請紙本複印版收據,作為後續利用。\"\r\n ],\r\n [\r\n \"如果醫療數位文件遺失了怎麼辦?\",\r\n \"每份電子收據僅提供一次性下載,如檔案遺失,民眾可前往醫院批價櫃檯辦理申請重新下載。\"\r\n ],\r\n [\r\n \"資料上傳失敗,可能原因如下:\",\r\n \"1. 本驗證系統僅提供上傳PDF檔案。\\n2. 上傳檔案超過1.5MB,請確認後再重新上傳。\"\r\n ],\r\n [\r\n \"文件驗證失敗或失效,可能原因如下:\",\r\n \"1. 該文件不存在或曾經被修改,請確認您上傳的檔案是否為醫院官方提供之醫療數位文件。\\n2. 該文件非最新版本,請使用最新版醫療數位文件上傳驗證。\"\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 {contents.map((content: string, index: number) => \r\n {content[0]}\r\n {content[1].split('\\n').map((ans: string, idx: number) => {\r\n const keyword = t('navbar.school').toLocaleLowerCase();\r\n if (ans.includes(keyword)) {\r\n const substr = ans.split(keyword)\r\n return \r\n {substr[0]} \r\n \r\n {keyword}\r\n \r\n  {substr[1]}\r\n \r\n }\r\n return {ans};\r\n })\r\n }\r\n )}\r\n \r\n \r\n )\r\n};\r\n\r\nexport default FAQPage;\r\n\r\n// const iconStyle = {\r\n// fontSize: '30px',\r\n// marginLeft: '-30px',\r\n// }\r\n","export default __webpack_public_path__ + \"static/media/privacy_banner.89d66eef.svg\";","export default __webpack_public_path__ + \"static/media/privacy_icon.cf9a3516.svg\";","import React from 'react';\r\nimport { Flex, Text, Stack, Image } from '@chakra-ui/react';\r\n\r\nimport banner from '../Resources/images/privacy_banner.svg';\r\nimport icon from '../Resources/images/privacy_icon.svg';\r\n\r\nconst PrivacyPage: React.FC = () => {\r\n const contents: string[] = [\r\n \"歡迎蒞臨本網站,本網站尊重並保護您在使用國立成功大學數位認證中心-醫療數位文件驗證系統時的安全及隱私保護權利,為了幫助您瞭解本網站如何保護您在使用本網站服務的安全、及如何保護您所提供的資訊,特於此說明本網站的資通安全及隱私政策。\",\r\n \"一、適用範圍\",\r\n \"本資通安全及隱私政策適用於您在本網站的個人資料之蒐集、運用與保護。但不適用於您經由本網站連結至其他網站後所進行之活動,關於其他網站的個人資料之保護,適用其各自之隱私權保護政策,本網站不負任何連帶責任。\",\r\n \"二、個人資料之蒐集及運用\",\r\n \"1.當您在瀏覽本網站時,不會蒐集任何您的個人身分有關之資訊。\",\r\n \"2.當您參與本網站之驗證服務時,將請您提供相關之醫療數位文件資料。對於您所提供之個人資料,我們將會遵循「個人資料保護法」及相關法令規定,在本計畫所提供之業務範圍內使用,不會將其應用於蒐集特定目的以外之用途。\",\r\n \"3.本網站將在特定目的或法令許可範圍內,對取得之醫療數位文件資料進行驗證。\",\r\n \"4.本網站有義務保護您的個人隱私,不會任意修改或刪除您的個人資料及檔案。除非經過您同意或符合以下情況:\",\r\n \"(1)依法配合相關權責機關之要求。\\n(2)保護或防衛相關網路民眾的權利。\\n(3)為保護本網站各相關單位之權益。\",\r\n \"5.本網站絕不會任意存取、出售、交換或出租任何您的個人資料給其他團體、個人或私人企業。除非經過您同意或符合以下情況:\",\r\n \"(1)配合司法單位合法的調查。\\n(2)依法配合相關權責機關職務需要之調查或使用。\",\r\n \"6.本網站在您瀏覽時,伺服器會自動產生並儲存相關使用紀錄,包括您使用連線設備的IP位址、使用時間、瀏覽網頁及點擊資料等紀錄,這些資料將僅作為本網站網路流量和行為的統計分析,以利於改進系統效能與提升服務品質。絕不會涉及使用者個人資料與行為之對應或分析。\",\r\n \"三、資通安全機制\",\r\n \"本網站為確保各項服務之正常運作,以及維護醫療數位文件之安全,防範未經授權之變造竄改,或企圖入侵伺服器主機等惡意行為,提供了以下的安全保護措施:\",\r\n \"(1)裝設防火牆及入侵偵測防禦系統IDP (Intrusion Detection Prevention)防止非法入侵,避免非法存取使用。\\n(2)建置網路流量管理系統,有效管制異常網路流量。\\n(3)建立資通安全事件監控、通報與應變處理機制。\\n(4)網站資料定期備份,並備份到備援主機。\\n(5)網站主機不定期進行弱點掃描與系統漏洞修補。\",\r\n \"四、使用者條款\",\r\n \"1.使用者之義務及承諾\\n使用者須恪遵『臺灣學術網路管理規範』及相關法令等規定,承諾絕不為任何非法目的或以任何非法方式使用本服務。您同意並保證不得利用本網站從事侵害他人權益或違法之行為,任何危害本網站資通安全之行為人,視情節輕重追究其法律責任。\",\r\n \"2.個人自我保護措施\\n請妥善保管您的個人醫療數位文件,切勿將資料提供給特定使用目的以外的單位。若您使用共用或公共電腦(如:圖書館、辦公室等),提醒您於本網站瀏覽驗證服務之後,切記要妥善管理個人醫療數位文件,以防止他人取用您的個人資料並保障您的權益。\",\r\n \"五、資通安全及隱私權政策修訂\",\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 {contents[0]}\r\n {contents[1]}\r\n {contents[2]}\r\n {contents[3]}\r\n {contents[4]}\r\n {contents[5]}\r\n {contents[6]}\r\n {contents[7]}\r\n \r\n {contents[8].split('\\n').map(content =>\r\n {content}\r\n )}\r\n \r\n {contents[9]}\r\n \r\n {contents[10].split('\\n').map(content =>\r\n {content}\r\n )}\r\n \r\n {contents[11]}\r\n {contents[12]}\r\n {contents[13]}\r\n \r\n {contents[14].split('\\n').map(content =>\r\n {content}\r\n )}\r\n \r\n {contents[15]}\r\n \r\n {contents[16].split('\\n').map(content =>\r\n {content}\r\n )}\r\n \r\n \r\n {contents[17].split('\\n').map(content =>\r\n {content}\r\n )}\r\n \r\n {contents[18]}\r\n {contents[19]}\r\n \r\n \r\n \r\n )\r\n};\r\n\r\nexport default PrivacyPage;\r\n\r\nconst iconStyle = {\r\n fontSize: '32px',\r\n marginRight: '10px'\r\n}\r\n","import { ChakraProvider, CSSReset, Flex } from '@chakra-ui/react';\r\nimport { BrowserRouter, Redirect, Route, Switch } from 'react-router-dom';\r\n\r\nimport './i18n';\r\nimport ScrollToTop from './Utils/scrollToTop';\r\nimport theme from './Styles/theme';\r\nimport Navbar from './Components/general/Navbar';\r\nimport Footer from './Components/general/Footer';\r\nimport AboutPage from './Pages/AboutPage';\r\nimport UploadPage from './Pages/UploadPage';\r\nimport PartnerPage from './Pages/PartnerPage';\r\nimport FAQPage from './Pages/FAQPage';\r\nimport PrivacyPage from './Pages/PrivacyPage';\r\n\r\nfunction App() {\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