{"version":3,"sources":["react-datasheet/lib/DataSheet.js","Signature.js","components/Grid/GridContainer.js","components/Grid/GridItem.js","i18n/index.js","i18n/en.js","i18n/zh-tw.js","i18n/zh-cn.js","i18n/ja.js","_Services/publicFunction.js","sounds/clickdown.wav","Questionaire/67th.js","Questionaire/66th.js","Questionaire/68th.js","pictures/pain.jpg","Questionaire/BackBody.js","Questionaire/69th.js","Questionaire/70th.js","Questionaire/81th.js","Questionaire/UnderConstruction.js","sounds/switchlight.wav","Questionaire/Nopaper.js","_Services/index.js","reducers/app.js","App.js","components/BackDrop/BackDrop.js","Dashboard.js","reportWebVitals.js","pictures/photo01.jpg","pictures/photo03.jpg","pictures/photo06.jpg","pictures/photo08.jpg","components/Modal/CustomModal.jsx","pictures/logo.svg","Login.js","_Services/PrivateRoute.js","Questionaire/80th.js","ShowResult/Record.js","components/LHTable/drag-drop.js","components/LHTable/CommonHTML5Backend.jsx","components/sounds/clickdown.wav","components/LHTable/VirtualSheet.jsx","components/LHTable/DataSheet_Virtual.js","components/LHTable/Example.js","components/ImgList/ImgList.js","Match.js","Test.js","components/Modal/BookingModal.js","components/Calendar/BasicCalendar.js","Layouts/WeeklyBooking.js","Layouts/LaborFormCheck.js","Layouts/Minmax.js","index.js","react-datasheet/lib/CellShape.js","react-datasheet/lib/Cell.js","react-datasheet/lib/DataEditor.js","react-datasheet/lib/ValueViewer.js","react-datasheet/lib/DataCell.js","react-datasheet/lib/Sheet.js","react-datasheet/lib/Row.js","react-datasheet/lib/keys.js","react-datasheet/lib/renderHelpers.js","react-datasheet/lib/index.js"],"names":["Object","defineProperty","exports","value","_extends","assign","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","_createClass","defineProperties","props","descriptor","enumerable","configurable","writable","Constructor","protoProps","staticProps","_react","require","_react2","_interopRequireDefault","_propTypes2","_Sheet2","_Row2","_Cell2","_DataCell2","_DataEditor2","_ValueViewer2","_keys","obj","__esModule","default","isEmpty","keys","range","start","end","array","inc","push","unshift","defaultParsePaste","str","split","map","row","DataSheet","_PureComponent","instance","TypeError","_classCallCheck","this","_this","self","ReferenceError","_possibleConstructorReturn","__proto__","getPrototypeOf","onMouseDown","bind","onMouseUp","onMouseOver","onDoubleClick","onContextMenu","handleNavigate","handleKey","handleCut","handleCopy","handlePaste","pageClick","onChange","onRevert","isSelected","isEditing","isClearing","handleComponentKey","handleKeyboardCellMovement","defaultState","selecting","forceEdit","editing","clear","state","removeAllListeners","handleIEClipboardEvents","subClass","superClass","create","constructor","setPrototypeOf","_inherits","document","removeEventListener","dgDom","addEventListener","isSelectionControlled","_ref","selected","rest","indexOf","_objectWithoutProperties","_props","onSelect","setState","e","disablePageClick","contains","preventDefault","_getState","getState","clearSelectedCells","ctrlKey","keyCode","which","_props2","dataRenderer","valueRenderer","data","_getState2","event","text","j","cell","join","window","clipboardData","setData","_getState3","Math","min","max","parse","parsePaste","changes","pasteData","getData","_props3","onCellsChanged","onPaste","additions","forEach","readOnly","col","rowData","pastedData","_setState","commit","undefined","_getState4","currentCell","hasComponent","component","TAB_KEY","shiftKey","RIGHT_KEY","LEFT_KEY","UP_KEY","DOWN_KEY","ENTER_KEY","isPropagationStopped","_getState5","noCellsSelected","ctrlKeyPressed","metaKey","deleteKeysPressed","DELETE_KEY","BACKSPACE_KEY","enterKeyPressed","numbersPressed","lettersPressed","latin1Supplement","numPadKeysPressed","equationKeysPressed","_this2","_props4","cells","getSelectedCells","filter","setTimeout","_ref2","location","offsets","_getState6","oldStartLocation","newEndLocation","isCellNavigable","jumpRow","advanceOffset","isCellDefined","_ref3","newLocation","nextRow","searchForNextSelectablePos","multiSelect","updateLocationMultipleCells","updateLocationSingleCell","_this3","ESCAPE_KEY","includes","offset","forceComponent","func","focus","evt","isNowEditingSameCell","ua","navigator","userAgent","test","onHandleCopy","_props5","prevProps","prevState","_state","prevEnd","_getState8","posX","negX","posY","negY","_this4","_props6","SheetRenderer","sheetRenderer","RowRenderer","rowRenderer","cellRenderer","dataEditor","valueViewer","attributesRenderer","className","overflow","keyFn","createElement","ref","r","tabIndex","onKeyDown","a","onNavigate","onKey","clearing","PureComponent","propTypes","isRequired","string","bool","oneOf","shape","number","defaultProps","axios","async","crossDomain","headers","useStyles","makeStyles","grid","margin","width","GridContainer","classes","children","Grid","container","padding","GridItem","item","messagesMap","R","ObjectToArray","values","ObjectToArray0","ObjectToArray1","deepClone","JSON","stringify","eitherList","reduce","either","isNil","isSameDate","datetime1","datetime2","Date","getFullYear","getMonth","getDate","publicFunction","testurl","iisurl","iisurl2","isHttps","protocol","slice","host","get_browser","tem","M","match","name","version","exec","appName","appVersion","splice","browserName","browserVersion","dateLog","toLocaleString","get_ip","method","url","then","response","ArrayToObject","ArrayObject0ToArray","arr","ArrayObject1ToArray","ArrayObjectToArray","ArrayRemoveByIndex","index","dateFormat","json","date","timeFormat","getHours","getMinutes","getSeconds","ccyFormat2","num","isNaN","Number","minimumFractionDigits","ccyFormat","decimal","NumAdd","accumulator","parseFloat","dataSheetGridFormat","rows","columns","concat","_","multiFilter","filters","filterKeys","every","returnToken","sessionStorage","token","getWorkRange","worktime","getWorkTimeStart","WorkTimeStart","getWorkTimeEnd","WorkTimeEnd","timeRange1Start","timeRange1End","RestTimeStart","timeRange2Start","RestTimeEnd","timeRange2End","calculateHours","workRange","leaveRange","today","today_timeRange1Start","today_timeRange1End","today_timeRange2Start","today_timeRange2End","setFullYear","setMonth","setDate","hoursRange1","hoursRange2","isWorkday","First","Firstday_timeRange1Start","Firstday_timeRange1End","Firstday_timeRange2Start","Firstday_timeRange2End","Last","Lastday_timeRange1Start","Lastday_timeRange1End","Lastday_timeRange2Start","Lastday_timeRange2End","FirstDayhoursRange1","FirstDayhoursRange2","FirstdayHours","LastDayhoursRange1","LastDayhoursRange2","LastdayHours","acc","shouldHours","swapArrayLocs","index1","index2","temp","BorderLinearProgress","withStyles","theme","root","height","colorPrimary","bar","backgroundColor","LinearProgress","formControl","spacing","button","color","palette","type","submitButton","background","fontWeight","root3","Questionaire67th","intl","useIntl","React","useState","numerator","setNumerator","denominator","transfer","0","1","2","3","4","transferReverse","setActiveStep","handleNext","useSound","clickdown","volume","playActive","clickup","BarCodeStr","QuestionNo","Category","titleNo","Title","SelectTitle","Answer","Other","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","uploadFormat","setUpload","done","setDone","formRef","createRef","dispatch","useDispatch","UserInfo","useSelector","app","useEffect","o","newitem","merge","handleSubmit","validator","actions","TAB_EDIT","PF","Qs","list","console","log","TotalRecord","ErrorMessage","alert","enqueueSnackbar","formatMessage","id","variant","style","whiteSpace","prevActiveStep","useSnackbar","form","current","checkValidity","element","elements","omit","tagName","willValidate","validity","valid","validationMessage","error","helperText","setObj","handleRadioChange","x","getAttribute","prev","initialRender","useRef","scores1","setScores1","scores2","setScores2","keys1","parseInt","acc1","k","round","keys2","acc2","cal_score","Paper","textAlign","onSubmit","noValidate","align","Typography","FormControl","required","FormLabel","RadioGroup","display","replaceAll","pro","FormControlLabel","control","Radio","inputProps","label","FormHelperText","marginBottom","xs","sm","md","elevation","inRange","Chip","size","flex","HorizontalBarChart","score","range1","range2","bottom","position","top","Button","onClick","memo","finColor","red","orange","yello","green","labels","datasets","s","getColor","options","indexAxis","scales","ticks","beginAtZero","stepSize","y","font","responsive","plugins","legend","Questionaire66th","forwardRef","imageURL","setImage","playOn","A4","checked","gridWid","systemLabel","B4","C4","E4","F4","G4","H4","I4","K4","L4","M4","N4","O4","P4","Q4","R4","S4","D4","T4","V4","U4","allNone","array4th","setArray4th","W6","array4thTxtObj","set4thTxtObj","handleChange4th","handleChangeTxt4th","pastHistory","conscious","array4thValidator","set4thValidator","pastHistoryRef","consciousRef","total","b","calculate_4th","w6Ref","A6","B6","C6","E6","F6","G6","H6","I6","J6","K6","L6","M6","O6","P6","Q6","R6","S6","D6","N6","T6","V6","U6","allNone6","array6th","setArray6th","handleChange6th","checked3rdRef","checkA","checkB","checked3rd","setCheck3rd","handleChangeThree","smokeA","smokeB","smokeC","type_1","name_1","label_1","text_1","suffix1","helperText_1","min_1","type_2","name_2","label_2","text_2","suffix2","helperText_2","max_2","smokeD","max_1","array5_1","setArray5_1","setArray5thCheck","smoke","array5thCheck","handleChangeChk5_1","smokeC_1","smokeC_2","smokeD_1","smokeD_2","betel","betelC_1","betelC_2","betelD_1","betelD_2","drunk","drunkC_1","drunkC_2","drunkC_3","drunkD_1","drunkD_2","sleep","sleepRef","handleChangeTxt5_1","betelA","betelB","betelC","betelD","array5_2","setArray5_2","handleChangeChk5_2","drunkA","drunkB","drunkC","name_3","type_3","label_3","suffix3","max_3","drunkD","array5_3","setArray5_3","handleChangeChk5_3","male","female","gender","setGender","moment","workExp","usedStart","z","usedEnd","rightNowStart","N","rightNowEnd","usedJob","year","month","usedPeriod_Y","usedPeriod_M","rightNowJob","rightNowPeriod_Y","rightNowPeriod_M","workhours_1","workhours_2","fourth","substring","fourthTxt","fiveth_1","fiveth_1Txt","fiveth_2","fiveth_2Txt","fiveth_3","fiveth_3Txt","Sixth","Update66th","UpdateProjectDetail","prop","Str_fiveth_1","_count_5_1","fiveth_1TxtArray","step","t","replace","Str_fiveth_2","_count_5_2","fiveth_2TxtArray","Str_fiveth_3","_count_5_3","fiveth_3TxtArray","Str_fiveth_4","Str_6th","UpdateList","ItemNo","Value","Total","personal","setPersonal","setWorkExp","workRef","scrollIntoView","behavior","personalName","personalID","birthDate","maxDate","hireDate","examinationDate","minDate","disableFuture","endAdmt","startAdmt","disabled","handleChangeTxt2nd","handleDateChange2nd","v","months","duration","diff","asMonths","RoundMonths","floor","m","calculateWorkRange","media","objectFit","lg","utils","MomentUtils","locale","i18n","ListItem","FormGroup","TextField","autoComplete","labelPlacement","format","views","autoOk","clearable","pattern","todayLabel","showTodayButton","clearLabel","inputValue","InputProps","endAdornment","InputAdornment","startAdornment","opacity","Checkbox","marginLeft","paddingLeft","fullWidth","alignItems","paddingRight","marginRight","Fragment","InputLabel","disableAnimation","shrink","Select","defaultValue","native","message","Questionaire68th","23","scores","setScores","humanbody","borderRadius","fill","svgclass","breakpoints","down","up","Body","circle","frontCircle","weight","viewBox","d","cx","cy","fill-opacity","stroke","stroke-opacity","cursor","Questionaire69th","setDenominator","scoreObj","preDone","setpreDone","BodyObj","ax","ay","setCircle","setColor","colorList","setFrontCircle","CardMedia","image","painDiagram","right","Tooltip","title","placement","Questionaire70th","Questionaire80th","isShown","Confirme","questurl","relationship","phonenum","otherRelationship","formData","setFormData","Action","parameter","PersonalId","relation","handleChange","U60","array60th","setArray60th","A7","B7","C7","L7","U7","array7th","setArray7th","A8","B8","C8","E8","F8","G8","H8","I8","K8","L8","M8","N8","O8","P8","Q8","R8","S8","D8","T8","V8","U8","array8th","setArray8th","array60thTxtObj","set60thTxtObj","array7thTxtObj","set7thTxtObj","array8thTxtObj","set8thTxtObj","handleChange60th","handleChangeTxt60th","handleChange7th","handleChangeTxt7th","handleChange8th","handleChangeTxt8th","allergy","usage","family","allergyRef","usageRef","familyRef","calculate_60th","calculate_7th","calculate_8th","X","barcodestr","UserName","UpdateRelation","HireD","Shift","YesShiftChkObj","Sixth0","Sixth0Txt","Seventh","SeventhTxt","Eighth","EighthTxt","forgot","ShiftOther","shiftChkObj","Yes","No","CustName","Update80th","string7","string8","string4","setShiftChk","YN","setYesShiftChkObjAll","setYesShiftChkObj","shiftChk","setShiftChkObj","handleShiftChk","setforgot","NoJob","setNoJob","Shift2","Shift3","Shift4","YesShiftChk","YesShiftChkObjAll","handleChangeYesShift","handleChangeYesShiftOther","maxLength","IconButton","prevstate","openTo","handleDateChange","fontSize","lineHeight","textDecoration","MenuItem","justifyContent","wrapper","buttonSuccess","fabProgress","amber","left","zIndex","buttonProgress","marginTop","NotExist","List","Fab","aria-label","CircularProgress","domToImage","half_background","NoPaper","dark","email","Email","personalId","user","setUser","minLength","settingObj","switchlight","updateUser","getElementById","toBlob","blob","FormData","append","toISOString","history","float","THEME_SET","gutterBottom","trim","NoPaperId","teal","indigo","QuestionType","components","Nopaper","66","67","68","69","70","80","TagName","tag","UnderConstruction","Component","Types","LANG_SET","BirthDate","QUESTS_SET","tab","TAB_ADD","v4","isSubmit","tabName","funcName","componentName","TAB_REMOVE","TAB_REMOVEOthers","TAB_REMOVEAll","initialState","tabList","questionaireList","isAllDone","messages","action","tabContent","appReducers","pick","homepage","App","CircularProgressWithLabel","useStylesFacebook","Backdrop","open","displayNone","invisible","Box","thickness","paddingBottom","paddingTop","ceil","grey","strokeLinecap","CircularStatic","progress","setProgress","timer","setInterval","prevProgress","clearInterval","stepper","backButton","instructions","HorizontalLabelPositionBelowStepper","classes3","useGmailListItemStyles","MornjoyQuestionaires","setQuests","completeQ","SpecialItemNo","ary","leaveApp","backdrop","setBackdrop","activeStep","steps","reverse","anchorEl","setAnchorEl","ev","returnValue","handleLogOut","removeItem","handleI18nChange","lang","AppBar","appBar","Toolbar","edge","currentTarget","Boolean","onClose","maxHeight","f","Divider","Stepper","alternativeLabel","Step","StepLabel","Card","overflowY","overflowX","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","borderRight","borderRightColor","Transition","Slide","direction","FullScreenDialog","setOpen","logo","handleTxtChange","BackDropColor","TranslateOpen","Dialog","TransitionComponent","BackdropProps","pointerEvents","PaperProps","shrinkTitle","DialogTitle","src","flexDirection","DialogContent","dividers","placeholder","cancelLabel","imeMode","DialogActions","GTranslate","MenuListProps","AutoPlaySwipeableViews","autoPlay","virtualize","SwipeableViews","transition","header","img","tutorialSteps","imgPath","photo01","photo03","photo06","photo08","SwipeableTextMobileStepper","useTheme","enableMouseEvents","interval","slideRenderer","params","mod","injectIntl","setDoor","ArrayDoor","IsShow","setIsShow","containerRef","CardActionArea","CardContent","CardActions","href","doneQ","beingQ","SpecialCheckDate","confirm","setItem","process","Swal","fire","html","icon","showCancelButton","confirmButtonText","cancelButtonText","reverseButtons","allowOutsideClick","result","isConfirmed","dismiss","DismissReason","cancel","PrivateRoute","Route","render","getItem","Redirect","to","pathname","from","table","border","borderCollapse","borderSpacing","column","td","rowSourceSpec","beginDrag","rowIndex","colDragSource","DragSource","columnIndex","connect","_monitor","connectDragSource","dragSource","colDropTarget","DropTarget","canDrop","monitor","drop","didDrop","fromIndex","toIndex","onColumnDrop","connectDropTarget","dropTarget","isOver","shallow","rowDragSource","connectDragPreview","dragPreview","isDragging","rowDropTarget","onRowDrop","DragDropContext","HTML5Backend","Header","dataKey","handleMouseMove","FrozenColumn","enableCheck","accWidth","styles","stopPropagation","isEqual","RenderHeader","onHeaderClick","ButtonToggle","OriginalColumns","setColumns","setFrozen","setOrderRows","OriginalRows","anchorRef","handleSetColumnShow","colx","cloneDeep","noshowTable","showColumns2","noshowTableForever","z2","ClickAwayListener","onClickAway","prevOpen","Popper","TransitionProps","Grow","CommonHTML5Backend","setRef","columnStart","columnEnd","rowStart","rowEnd","rowArr","colArr","CopyWithHeader","headRowArr","renderRow","onRowClick","checkSelections","RowStyleFunc","handleDoubleClick","startI","get","endI","startJ","endJ","sheetwidth","isisSelectRow","Row","handleCheckSelectionChanges","isSelect","isSelectJ","CheckSelectionAll","thead","startPosition","pageX","colName","handleMouseMoved","eventMoving","handleMouseUp","eU","isMultipleCheckSelection","setCheckSelections","rowCount","numChecked","Map","Array","chk","labelCount","pageCount","pageNo","listRef","onTotalClick","defaultWidth","indeterminate","onScroll","scrollLeft","itemCount","itemSize","itemData","Pagination","count","siblingCount","page","handlePageChange","colSpan","count2","sum","avg","ReactDataSheet","RowHeader","ChkBox","newStyle","useCallback","RowToCell","colIndex","MyCell","c","editValue","onEdit","handleEdit","InteriorTable","setSelected","setRows","orderRows","showColumns","multiChk","setPageNo","defaultFrozen","setLabelCount","frozen","abs","newArr","sum_avg","updated","tableFormat","Normalattributes","attributes","Frezzeattributes","rowNo","colNo","columnsX","fromEntries","columnNo","flexWrap","paper","imageList","titleBar","closeButton","section2","TitlebarImageList","MedirepURL","DataSource","setPicObj","ItemName","DialogImg","setDialogImg","handleClose","ImageList","rowHeight","cols","ImageListItem","loading","alt","ShowPic","ImageListItemBar","actionIcon","picNo","imgString","remove","handleDeleteImg","aria-labelledby","maxWidth","drawer","chip","PDF","createTheme","primary","pdfRef","content","jsPDF","callback","doc","save","handleDelete","noShowSelect","select","option","localizer","momentLocalizer","isSingle","DragAndDropCalendar","withDragAndDrop","Calendar","MyCalendar","viewState","setViewState","toDate","dateStart","setDateStart","departmentMap","deepPurple","deepOrange","blueGrey","setAction","roomBookingID","department","resourceId","dateCreate","myEventsList","setEvent","dateEnd","meetingRoomID","draggedEvent","setDraggedEvent","displayDragItemInCell","isSingleEvent","evnets","moveEvent","droppedOnAllDaySlot","isAllDay","allDay","OriginalStart","newEvent","startOf","endOf","toolbar","RBCToolbar","view","onView","events","startAccessor","endAccessor","selectable","resizable","onSelectEvent","onSelectSlot","eventPropGetter","borderBottom","popup","viewsList","defaultView","resources","resourceTitle","resourceIdAccessor","resourceTitleAccessor","handleDragStart","onEventDrop","dragFromOutsideItem","onDropFromOutside","onEventResize","timeStart","timeEnd","CustomEvent","class","clickable","mDate","now","setYear","newDate","ButtonGroup","borderColor","WeeklyBooking","setLoading","startDate","endDate","MornJoy","setMornJoy","SOMEDAY","orderSeq","RANGETIME","Limit","DY","CW","AMQC","PMQC","AMGC","PMGC","AMBC","PMBC","FL","Hear","Ultra","Lung","DXA","Auto","MP","VIP","VIPRest","filterOptions","createFilterOptions","matchFrom","ProjectNo","ProjectName","projectNo","Name","SpecNo66","ID","ProjectList","setProjectList","projectName","Autocomplete","getOptionLabel","renderOption","renderInput","createBrowserHistory","store","createStore","app_reducers","composeWithDevTools","applyMiddleware","thunk","logger","go","InitialSetting","notistackRef","onClickDismiss","closeSnackbar","formLabelsTheme","unstable_createMuiStrictModeTheme","overrides","MuiFormLabel","asterisk","main","blue","ThemeProvider","maxSnack","anchorOrigin","vertical","horizontal","exact","path","Login","BasicCalendar","LaborFormCheck","Test","ImgList","Dashboard","ReactDOM","Router","basename","Switch","_propTypes","CellShape","oneOfType","disableEvents","disableUpdatedFlag","rowSpan","_CellShape2","Cell","apply","onTouchEnd","object","DataEditor","_input","input","node","onCommit","ValueViewer","_renderHelpers","initialData","renderData","initialValue","renderValue","widthStyle","DataCell","handleCommit","handleRevert","handleMouseDown","handleMouseOver","handleContextMenu","reverting","committing","timeout","clearTimeout","eatKeys","Editor","Viewer","_props7","CellRenderer","onKeyUp","renderComponent","renderEditor","renderViewer","any","Sheet","arrayOf","_DataSheet2"],"mappings":"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","file":"static/js/main.c1632c40.chunk.js","sourcesContent":["'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\n\nvar _extends =\n Object.assign ||\n function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n\nvar _createClass = (function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if ('value' in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n})();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _Sheet = require('./Sheet');\n\nvar _Sheet2 = _interopRequireDefault(_Sheet);\n\nvar _Row = require('./Row');\n\nvar _Row2 = _interopRequireDefault(_Row);\n\nvar _Cell = require('./Cell');\n\nvar _Cell2 = _interopRequireDefault(_Cell);\n\nvar _DataCell = require('./DataCell');\n\nvar _DataCell2 = _interopRequireDefault(_DataCell);\n\nvar _DataEditor = require('./DataEditor');\n\nvar _DataEditor2 = _interopRequireDefault(_DataEditor);\n\nvar _ValueViewer = require('./ValueViewer');\n\nvar _ValueViewer2 = _interopRequireDefault(_ValueViewer);\n\nvar _keys = require('./keys');\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n}\n\nfunction _objectWithoutProperties(obj, keys) {\n var target = {};\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n return target;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError('Cannot call a class as a function');\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\n \"this hasn't been initialised - super() hasn't been called\",\n );\n }\n return call && (typeof call === 'object' || typeof call === 'function')\n ? call\n : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== 'function' && superClass !== null) {\n throw new TypeError(\n 'Super expression must either be null or a function, not ' +\n typeof superClass,\n );\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true,\n },\n });\n if (superClass)\n Object.setPrototypeOf\n ? Object.setPrototypeOf(subClass, superClass)\n : (subClass.__proto__ = superClass);\n}\n\nvar isEmpty = function isEmpty(obj) {\n return Object.keys(obj).length === 0;\n};\n\nvar range = function range(start, end) {\n var array = [];\n var inc = end - start > 0;\n for (var i = start; inc ? i <= end : i >= end; inc ? i++ : i--) {\n inc ? array.push(i) : array.unshift(i);\n }\n return array;\n};\n\nvar defaultParsePaste = function defaultParsePaste(str) {\n return str.split(/\\r\\n|\\n|\\r/).map(function (row) {\n return row.split('\\t');\n });\n};\n\nvar DataSheet = (function (_PureComponent) {\n _inherits(DataSheet, _PureComponent);\n\n function DataSheet(props) {\n _classCallCheck(this, DataSheet);\n\n var _this = _possibleConstructorReturn(\n this,\n (DataSheet.__proto__ || Object.getPrototypeOf(DataSheet)).call(\n this,\n props,\n ),\n );\n\n _this.onMouseDown = _this.onMouseDown.bind(_this);\n _this.onMouseUp = _this.onMouseUp.bind(_this);\n _this.onMouseOver = _this.onMouseOver.bind(_this);\n _this.onDoubleClick = _this.onDoubleClick.bind(_this);\n _this.onContextMenu = _this.onContextMenu.bind(_this);\n _this.handleNavigate = _this.handleNavigate.bind(_this);\n _this.handleKey = _this.handleKey.bind(_this).bind(_this);\n _this.handleCut = _this.handleCut.bind(_this);\n _this.handleCopy = _this.handleCopy.bind(_this);\n _this.handlePaste = _this.handlePaste.bind(_this);\n _this.pageClick = _this.pageClick.bind(_this);\n _this.onChange = _this.onChange.bind(_this);\n _this.onRevert = _this.onRevert.bind(_this);\n _this.isSelected = _this.isSelected.bind(_this);\n _this.isEditing = _this.isEditing.bind(_this);\n _this.isClearing = _this.isClearing.bind(_this);\n _this.handleComponentKey = _this.handleComponentKey.bind(_this);\n\n _this.handleKeyboardCellMovement = _this.handleKeyboardCellMovement.bind(\n _this,\n );\n\n _this.defaultState = {\n start: {},\n end: {},\n selecting: false,\n forceEdit: false,\n editing: {},\n clear: {},\n };\n _this.state = _this.defaultState;\n\n _this.removeAllListeners = _this.removeAllListeners.bind(_this);\n _this.handleIEClipboardEvents = _this.handleIEClipboardEvents.bind(_this);\n return _this;\n }\n\n _createClass(DataSheet, [\n {\n key: 'removeAllListeners',\n value: function removeAllListeners() {\n document.removeEventListener('mousedown', this.pageClick);\n document.removeEventListener('mouseup', this.onMouseUp);\n document.removeEventListener('cut', this.handleCut);\n document.removeEventListener('copy', this.handleCopy);\n document.removeEventListener('paste', this.handlePaste);\n document.removeEventListener('keydown', this.handleIEClipboardEvents);\n },\n },\n {\n key: 'componentDidMount',\n value: function componentDidMount() {\n // Add listener scoped to the DataSheet that catches otherwise unhandled\n // keyboard events when displaying components\n this.dgDom &&\n this.dgDom.addEventListener('keydown', this.handleComponentKey);\n },\n },\n {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.dgDom &&\n this.dgDom.removeEventListener('keydown', this.handleComponentKey);\n this.removeAllListeners();\n },\n },\n {\n key: 'isSelectionControlled',\n value: function isSelectionControlled() {\n return 'selected' in this.props;\n },\n },\n {\n key: 'getState',\n value: function getState() {\n var state = this.state;\n if (this.isSelectionControlled()) {\n var _ref = this.props.selected || {},\n start = _ref.start,\n end = _ref.end;\n\n start = start || this.defaultState.start;\n end = end || this.defaultState.end;\n state = _extends({}, state, { start: start, end: end });\n }\n return state;\n },\n },\n {\n key: '_setState',\n value: function _setState(state) {\n if (\n this.isSelectionControlled() &&\n ('start' in state || 'end' in state)\n ) {\n var start = state.start,\n end = state.end,\n rest = _objectWithoutProperties(state, ['start', 'end']);\n\n var _props = this.props,\n selected = _props.selected,\n onSelect = _props.onSelect;\n\n selected = selected || {};\n if (!start) {\n start =\n 'start' in selected ? selected.start : this.defaultState.start;\n }\n if (!end) {\n end = 'end' in selected ? selected.end : this.defaultState.end;\n }\n onSelect && onSelect({ start: start, end: end });\n this.setState(rest);\n } else {\n this.setState(state);\n }\n },\n },\n {\n key: 'pageClick',\n value: function pageClick(e) {\n if (this.props.disablePageClick) return;\n var element = this.dgDom;\n if (!element.contains(e.target)) {\n this.setState(this.defaultState);\n this.removeAllListeners();\n }\n },\n },\n {\n key: 'handleCut',\n value: function handleCut(e) {\n if (isEmpty(this.state.editing)) {\n e.preventDefault();\n this.handleCopy(e);\n\n var _getState = this.getState(),\n start = _getState.start,\n end = _getState.end;\n\n this.clearSelectedCells(start, end);\n }\n },\n },\n {\n key: 'handleIEClipboardEvents',\n value: function handleIEClipboardEvents(e) {\n if (e.ctrlKey) {\n if (e.keyCode === 67) {\n // C - copy\n this.handleCopy(e);\n } else if (e.keyCode === 88) {\n // X - cut\n this.handleCut(e);\n } else if (e.keyCode === 86 || e.which === 86) {\n // P - patse\n this.handlePaste(e);\n }\n }\n },\n },\n {\n key: 'handleCopy',\n value: function handleCopy(e) {\n if (isEmpty(this.state.editing)) {\n e.preventDefault();\n var _props2 = this.props,\n dataRenderer = _props2.dataRenderer,\n valueRenderer = _props2.valueRenderer,\n data = _props2.data;\n\n var _getState2 = this.getState(),\n start = _getState2.start,\n end = _getState2.end;\n\n if (this.props.handleCopy) {\n this.props.handleCopy({\n event: e,\n dataRenderer: dataRenderer,\n valueRenderer: valueRenderer,\n data: data,\n start: start,\n end: end,\n range: range,\n });\n } else {\n var text = range(start.i, end.i)\n .map(function (i) {\n return range(start.j, end.j)\n .map(function (j) {\n var cell = data[i][j];\n var value = dataRenderer ? dataRenderer(cell, i, j) : null;\n if (\n value === '' ||\n value === null ||\n typeof value === 'undefined'\n ) {\n return valueRenderer(cell, i, j);\n }\n return value;\n })\n .join('\\t');\n })\n .join('\\n');\n if (window.clipboardData && window.clipboardData.setData) {\n window.clipboardData.setData('Text', text);\n } else {\n e.clipboardData.setData('text/plain', text);\n }\n }\n }\n },\n },\n {\n key: 'handlePaste',\n value: function handlePaste(e) {\n if (isEmpty(this.state.editing)) {\n var _getState3 = this.getState(),\n start = _getState3.start,\n end = _getState3.end;\n\n start = { i: Math.min(start.i, end.i), j: Math.min(start.j, end.j) };\n end = { i: Math.max(start.i, end.i), j: Math.max(start.j, end.j) };\n\n var parse = this.props.parsePaste || defaultParsePaste;\n var changes = [];\n var pasteData = [];\n if (window.clipboardData && window.clipboardData.getData) {\n // IE\n pasteData = parse(window.clipboardData.getData('Text'));\n } else if (e.clipboardData && e.clipboardData.getData) {\n pasteData = parse(e.clipboardData.getData('text/plain'));\n }\n\n // in order of preference\n var _props3 = this.props,\n data = _props3.data,\n onCellsChanged = _props3.onCellsChanged,\n onPaste = _props3.onPaste,\n onChange = _props3.onChange;\n\n if (onCellsChanged) {\n var additions = [];\n pasteData.forEach(function (row, i) {\n row.forEach(function (value, j) {\n end = { i: start.i + i, j: start.j + j };\n var cell = data[end.i] && data[end.i][end.j];\n if (!cell) {\n additions.push({ row: end.i, col: end.j, value: value });\n } else if (!cell.readOnly) {\n changes.push({\n cell: cell,\n row: end.i,\n col: end.j,\n value: value,\n });\n }\n });\n });\n if (additions.length) {\n onCellsChanged(changes, additions);\n } else {\n onCellsChanged(changes);\n }\n } else if (onPaste) {\n pasteData.forEach(function (row, i) {\n var rowData = [];\n row.forEach(function (pastedData, j) {\n end = { i: start.i + i, j: start.j + j };\n var cell = data[end.i] && data[end.i][end.j];\n rowData.push({ cell: cell, data: pastedData });\n });\n changes.push(rowData);\n });\n onPaste(changes);\n } else if (onChange) {\n pasteData.forEach(function (row, i) {\n row.forEach(function (value, j) {\n end = { i: start.i + i, j: start.j + j };\n var cell = data[end.i] && data[end.i][end.j];\n if (cell && !cell.readOnly) {\n onChange(cell, end.i, end.j, value);\n }\n });\n });\n }\n this._setState({ end: end });\n }\n },\n },\n {\n key: 'handleKeyboardCellMovement',\n value: function handleKeyboardCellMovement(e) {\n var commit =\n arguments.length > 1 && arguments[1] !== undefined\n ? arguments[1]\n : false;\n\n var _getState4 = this.getState(),\n start = _getState4.start,\n editing = _getState4.editing;\n\n var data = this.props.data;\n\n var isEditing = editing && !isEmpty(editing);\n var currentCell = data[start.i] && data[start.i][start.j];\n\n if (isEditing && !commit) {\n return false;\n }\n var hasComponent = currentCell && currentCell.component;\n\n var keyCode = e.which || e.keyCode;\n\n if (hasComponent && isEditing) {\n e.preventDefault();\n return;\n }\n if (keyCode === _keys.TAB_KEY) {\n this.handleNavigate(e, { i: 0, j: e.shiftKey ? -1 : 1 }, true);\n } else if (keyCode === _keys.RIGHT_KEY) {\n this.handleNavigate(e, { i: 0, j: 1 });\n } else if (keyCode === _keys.LEFT_KEY) {\n this.handleNavigate(e, { i: 0, j: -1 });\n } else if (keyCode === _keys.UP_KEY) {\n this.handleNavigate(e, { i: -1, j: 0 });\n } else if (keyCode === _keys.DOWN_KEY) {\n this.handleNavigate(e, { i: 1, j: 0 });\n } else if (commit && keyCode === _keys.ENTER_KEY) {\n this.handleNavigate(e, { i: e.shiftKey ? -1 : 1, j: 0 });\n }\n },\n },\n {\n key: 'handleKey',\n value: function handleKey(e) {\n if (e.isPropagationStopped && e.isPropagationStopped()) {\n return;\n }\n var keyCode = e.which || e.keyCode;\n var _getState5 = this.getState(),\n start = _getState5.start,\n end = _getState5.end,\n editing = _getState5.editing;\n var isEditing = editing && !isEmpty(editing);\n var noCellsSelected = !start || isEmpty(start);\n var ctrlKeyPressed = e.ctrlKey || e.metaKey;\n var deleteKeysPressed =\n keyCode === _keys.DELETE_KEY || keyCode === _keys.BACKSPACE_KEY;\n var enterKeyPressed = keyCode === _keys.ENTER_KEY;\n var numbersPressed = keyCode >= 48 && keyCode <= 57;\n var lettersPressed = keyCode >= 65 && keyCode <= 90;\n var latin1Supplement = keyCode >= 160 && keyCode <= 255;\n var numPadKeysPressed = keyCode >= 96 && keyCode <= 105;\n var currentCell = !noCellsSelected && this.props.data[start.i][start.j];\n var equationKeysPressed =\n [\n 187 /* equal */,\n 189 /* substract */,\n 190 /* period */,\n 107 /* add */,\n 109 /* decimal point */,\n 110,\n ].indexOf(keyCode) > -1;\n\n if (noCellsSelected || ctrlKeyPressed) {\n return true;\n }\n\n if (!isEditing) {\n this.handleKeyboardCellMovement(e);\n\n if (deleteKeysPressed) {\n e.preventDefault();\n this.clearSelectedCells(start, end);\n } else if (currentCell && !currentCell.readOnly) {\n if (enterKeyPressed) {\n this._setState({ editing: start, clear: {}, forceEdit: true });\n e.preventDefault();\n } else if (\n numbersPressed ||\n numPadKeysPressed ||\n lettersPressed ||\n latin1Supplement ||\n equationKeysPressed\n ) {\n // empty out cell if user starts typing without pressing enter\n this._setState({\n editing: start,\n clear: start,\n forceEdit: false,\n });\n }\n }\n }\n },\n },\n {\n key: 'getSelectedCells',\n value: function getSelectedCells(data, start, end) {\n var selected = [];\n range(start.i, end.i).map(function (row) {\n range(start.j, end.j).map(function (col) {\n if (data[row] && data[row][col]) {\n selected.push({ cell: data[row][col], row: row, col: col });\n }\n });\n });\n return selected;\n },\n },\n {\n key: 'clearSelectedCells',\n value: function clearSelectedCells(start, end) {\n var _this2 = this;\n\n var _props4 = this.props,\n data = _props4.data,\n onCellsChanged = _props4.onCellsChanged,\n onChange = _props4.onChange;\n\n var cells = this.getSelectedCells(data, start, end)\n .filter(function (cell) {\n return !cell.cell.readOnly;\n })\n .map(function (cell) {\n return _extends({}, cell, { value: '' });\n });\n if (onCellsChanged) {\n onCellsChanged(cells);\n this.onRevert();\n } else if (onChange) {\n // ugly solution brought to you by https://reactjs.org/docs/react-component.html#setstate\n // setState in a loop is unreliable\n setTimeout(function () {\n cells.forEach(function (_ref2) {\n var cell = _ref2.cell,\n row = _ref2.row,\n col = _ref2.col,\n value = _ref2.value;\n\n onChange(cell, row, col, value);\n });\n _this2.onRevert();\n }, 0);\n }\n },\n },\n {\n key: 'updateLocationSingleCell',\n value: function updateLocationSingleCell(location) {\n this._setState({\n start: location,\n end: location,\n editing: {},\n });\n },\n },\n {\n key: 'updateLocationMultipleCells',\n value: function updateLocationMultipleCells(offsets) {\n var _getState6 = this.getState(),\n start = _getState6.start,\n end = _getState6.end;\n\n var data = this.props.data;\n\n var oldStartLocation = { i: start.i, j: start.j };\n var newEndLocation = {\n i: end.i + offsets.i,\n j: Math.min(data[0].length - 1, Math.max(0, end.j + offsets.j)),\n };\n this._setState({\n start: oldStartLocation,\n end: newEndLocation,\n editing: {},\n });\n },\n },\n {\n key: 'searchForNextSelectablePos',\n value: function searchForNextSelectablePos(\n isCellNavigable,\n data,\n start,\n offsets,\n jumpRow,\n ) {\n var previousRow = function previousRow(location) {\n return {\n i: location.i - 1,\n j: data[0].length - 1,\n };\n };\n var nextRow = function nextRow(location) {\n return { i: location.i + 1, j: 0 };\n };\n var advanceOffset = function advanceOffset(location) {\n return {\n i: location.i + offsets.i,\n j: location.j + offsets.j,\n };\n };\n var isCellDefined = function isCellDefined(_ref3) {\n var i = _ref3.i,\n j = _ref3.j;\n return data[i] && typeof data[i][j] !== 'undefined';\n };\n\n var newLocation = advanceOffset(start);\n\n while (\n isCellDefined(newLocation) &&\n !isCellNavigable(\n data[newLocation.i][newLocation.j],\n newLocation.i,\n newLocation.j,\n )\n ) {\n newLocation = advanceOffset(newLocation);\n }\n\n if (!isCellDefined(newLocation)) {\n if (!jumpRow) {\n return null;\n }\n if (offsets.j < 0) {\n newLocation = previousRow(newLocation);\n } else {\n newLocation = nextRow(newLocation);\n }\n }\n\n if (\n isCellDefined(newLocation) &&\n !isCellNavigable(\n data[newLocation.i][newLocation.j],\n newLocation.i,\n newLocation.j,\n )\n ) {\n return this.searchForNextSelectablePos(\n isCellNavigable,\n data,\n newLocation,\n offsets,\n jumpRow,\n );\n } else if (isCellDefined(newLocation)) {\n return newLocation;\n } else {\n return null;\n }\n },\n },\n {\n key: 'handleNavigate',\n value: function handleNavigate(e, offsets, jumpRow) {\n if (offsets && (offsets.i || offsets.j)) {\n var data = this.props.data;\n\n var _getState7 = this.getState(),\n start = _getState7.start;\n\n var multiSelect = e.shiftKey && !jumpRow;\n var isCellNavigable = this.props.isCellNavigable\n ? this.props.isCellNavigable\n : function () {\n return true;\n };\n\n if (multiSelect) {\n this.updateLocationMultipleCells(offsets);\n } else {\n var newLocation = this.searchForNextSelectablePos(\n isCellNavigable,\n data,\n start,\n offsets,\n jumpRow,\n );\n if (newLocation) {\n this.updateLocationSingleCell(newLocation);\n }\n }\n e.preventDefault();\n }\n },\n },\n {\n key: 'handleComponentKey',\n value: function handleComponentKey(e) {\n var _this3 = this;\n\n // handles keyboard events when editing components\n var keyCode = e.which || e.keyCode;\n if (\n ![_keys.ENTER_KEY, _keys.ESCAPE_KEY, _keys.TAB_KEY].includes(keyCode)\n ) {\n return;\n }\n var editing = this.state.editing;\n var data = this.props.data;\n\n var isEditing = !isEmpty(editing);\n if (isEditing) {\n var currentCell = data[editing.i][editing.j];\n var offset = e.shiftKey ? -1 : 1;\n if (\n currentCell &&\n currentCell.component &&\n !currentCell.forceComponent\n ) {\n e.preventDefault();\n var func = this.onRevert; // ESCAPE_KEY\n if (keyCode === _keys.ENTER_KEY) {\n func = function func() {\n return _this3.handleNavigate(e, { i: offset, j: 0 });\n };\n } else if (keyCode === _keys.TAB_KEY) {\n func = function func() {\n return _this3.handleNavigate(e, { i: 0, j: offset }, true);\n };\n }\n // setTimeout makes sure that component is done handling the event before we take over\n setTimeout(function () {\n func();\n _this3.dgDom && _this3.dgDom.focus();\n }, 1);\n }\n }\n },\n },\n {\n key: 'onContextMenu',\n value: function onContextMenu(evt, i, j) {\n var cell = this.props.data[i][j];\n if (this.props.onContextMenu) {\n this.props.onContextMenu(evt, cell, i, j);\n }\n },\n },\n {\n key: 'onDoubleClick',\n value: function onDoubleClick(i, j) {\n // var cell = this.props.data[i][j];\n // if (!cell.readOnly) {\n // this._setState({\n // editing: { i: i, j: j },\n // forceEdit: true,\n // clear: {},\n // });\n // }\n },\n },\n {\n key: 'onMouseDown',\n value: function onMouseDown(i, j, e) {\n var isNowEditingSameCell =\n !isEmpty(this.state.editing) &&\n this.state.editing.i === i &&\n this.state.editing.j === j;\n var editing =\n isEmpty(this.state.editing) ||\n this.state.editing.i !== i ||\n this.state.editing.j !== j\n ? {}\n : this.state.editing;\n // console.log(i)\n // console.log(j)\n\n // console.log(e.shiftKey)\n // console.log(this.state)\n var _props = this.props,\n selected = _props.selected,\n onSelect = _props.onSelect;\n\n\n \n this._setState({\n selecting: !isNowEditingSameCell,\n start: e.shiftKey ? this.state.start : { i: i, j: j },\n end: { i: i, j: j },\n editing: editing,\n forceEdit: !!isNowEditingSameCell,\n });\n //Duke修正start\n selected = selected || {};\n onSelect && onSelect({ start: e.shiftKey ? selected.start : { i: i, j: j }\n , end: { i: i, j: j } });\n //Duke修正end\n\n var ua = window.navigator.userAgent;\n var isIE = /MSIE|Trident/.test(ua);\n // Listen for Ctrl + V in case of IE\n if (isIE) {\n document.addEventListener('keydown', this.handleIEClipboardEvents);\n }\n\n // Keep listening to mouse if user releases the mouse (dragging outside)\n document.addEventListener('mouseup', this.onMouseUp);\n // Listen for any outside mouse clicks\n document.addEventListener('mousedown', this.pageClick);\n\n // Cut, copy and paste event handlers\n document.addEventListener('cut', this.handleCut);\n document.addEventListener('copy', this.onHandleCopy); //Duke變更外層方法\n document.addEventListener('paste', this.handlePaste);\n },\n },\n {\n key: 'onMouseOver',\n value: function onMouseOver(i, j) {\n // console.log(i, j);\n if (this.state.selecting && isEmpty(this.state.editing)) {\n this._setState({ end: { i: i, j: j } });\n }\n },\n },\n {\n key: 'onMouseUp',\n value: function onMouseUp() {\n this._setState({ selecting: false });\n document.removeEventListener('mouseup', this.onMouseUp);\n },\n },\n {\n key: 'onChange',\n value: function onChange(row, col, value) {\n var _props5 = this.props,\n onChange = _props5.onChange,\n onCellsChanged = _props5.onCellsChanged,\n data = _props5.data;\n\n if (onCellsChanged) {\n onCellsChanged([\n { cell: data[row][col], row: row, col: col, value: value },\n ]);\n } else if (onChange) {\n onChange(data[row][col], row, col, value);\n }\n this.onRevert();\n },\n },\n {\n key: 'onRevert',\n value: function onRevert() {\n this._setState({ editing: {} });\n this.dgDom && this.dgDom.focus();\n },\n },\n {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps, prevState) {\n var _state = this.state,\n start = _state.start,\n end = _state.end;\n\n var prevEnd = prevState.end;\n if (\n !isEmpty(end) &&\n !(end.i === prevEnd.i && end.j === prevEnd.j) &&\n !this.isSelectionControlled()\n ) {\n this.props.onSelect &&\n this.props.onSelect({ start: start, end: end });\n }\n },\n },\n {\n key: 'isSelected',\n value: function isSelected(i, j) {\n var _getState8 = this.getState(),\n start = _getState8.start,\n end = _getState8.end;\n\n var posX = j >= start.j && j <= end.j;\n var negX = j <= start.j && j >= end.j;\n var posY = i >= start.i && i <= end.i;\n var negY = i <= start.i && i >= end.i;\n\n return (\n (posX && posY) || (negX && posY) || (negX && negY) || (posX && negY)\n );\n },\n },\n {\n key: 'isEditing',\n value: function isEditing(i, j) {\n return this.state.editing.i === i && this.state.editing.j === j;\n },\n },\n {\n key: 'isClearing',\n value: function isClearing(i, j) {\n return this.state.clear.i === i && this.state.clear.j === j;\n },\n },\n {\n key: 'render',\n value: function render() {\n var _this4 = this;\n\n var _props6 = this.props,\n SheetRenderer = _props6.sheetRenderer,\n RowRenderer = _props6.rowRenderer,\n cellRenderer = _props6.cellRenderer,\n dataRenderer = _props6.dataRenderer,\n valueRenderer = _props6.valueRenderer,\n dataEditor = _props6.dataEditor,\n valueViewer = _props6.valueViewer,\n attributesRenderer = _props6.attributesRenderer,\n className = _props6.className,\n overflow = _props6.overflow,\n data = _props6.data,\n keyFn = _props6.keyFn,\n onDoubleClick=_props6.onDoubleClick, //Duke\n onHandleCopy=_props6.onHandleCopy //Duke\n\n var forceEdit = this.state.forceEdit;\n\n return _react2.default.createElement(\n 'span',\n {\n ref: function ref(r) {\n _this4.dgDom = r;\n },\n tabIndex: '0',\n className: 'data-grid-container',\n onKeyDown: this.handleKey,\n },\n _react2.default.createElement(\n SheetRenderer,\n {\n data: data,\n className: ['data-grid', className, overflow]\n .filter(function (a) {\n return a;\n })\n .join(' '),\n },\n data.map(function (row, i) {\n // console.log(row)\n return _react2.default.createElement(\n RowRenderer,\n { key: keyFn ? keyFn(i) : i, row: i, cells: row },\n row.map(function (cell, j) {\n var isEditing = _this4.isEditing(i, j);\n return _react2.default.createElement(\n _DataCell2.default,\n _extends(\n {\n key: cell.key ? cell.key : i + '-' + j,\n row: i,\n col: j,\n cell: cell,\n forceEdit: false,\n onMouseDown: _this4.onMouseDown,\n onMouseOver: _this4.onMouseOver,\n // onDoubleClick: _this4.onDoubleClick,\n onDoubleClick: onDoubleClick, //Duke\n onHandleCopy: onHandleCopy, //Duke\n onContextMenu: _this4.onContextMenu,\n onChange: _this4.onChange,\n onRevert: _this4.onRevert,\n onNavigate: _this4.handleKeyboardCellMovement,\n onKey: _this4.handleKey,\n selected: _this4.isSelected(i, j),\n editing: isEditing,\n clearing: _this4.isClearing(i, j),\n attributesRenderer: attributesRenderer,\n cellRenderer: cellRenderer,\n valueRenderer: valueRenderer,\n dataRenderer: dataRenderer,\n valueViewer: valueViewer,\n dataEditor: dataEditor,\n },\n isEditing\n ? {\n forceEdit: forceEdit,\n }\n : {},\n ),\n );\n }),\n );\n }),\n ),\n );\n },\n },\n ]);\n\n return DataSheet;\n})(_react.PureComponent);\n\nexports.default = DataSheet;\n\nDataSheet.propTypes = {\n data: _propTypes2.default.array.isRequired,\n className: _propTypes2.default.string,\n disablePageClick: _propTypes2.default.bool,\n overflow: _propTypes2.default.oneOf(['wrap', 'nowrap', 'clip']),\n onChange: _propTypes2.default.func,\n onCellsChanged: _propTypes2.default.func,\n onContextMenu: _propTypes2.default.func,\n onSelect: _propTypes2.default.func,\n isCellNavigable: _propTypes2.default.func,\n selected: _propTypes2.default.shape({\n start: _propTypes2.default.shape({\n i: _propTypes2.default.number,\n j: _propTypes2.default.number,\n }),\n end: _propTypes2.default.shape({\n i: _propTypes2.default.number,\n j: _propTypes2.default.number,\n }),\n }),\n valueRenderer: _propTypes2.default.func.isRequired,\n dataRenderer: _propTypes2.default.func,\n sheetRenderer: _propTypes2.default.func.isRequired,\n rowRenderer: _propTypes2.default.func.isRequired,\n cellRenderer: _propTypes2.default.func.isRequired,\n valueViewer: _propTypes2.default.func,\n dataEditor: _propTypes2.default.func,\n parsePaste: _propTypes2.default.func,\n attributesRenderer: _propTypes2.default.func,\n keyFn: _propTypes2.default.func,\n handleCopy: _propTypes2.default.func,\n};\n\nDataSheet.defaultProps = {\n sheetRenderer: _Sheet2.default,\n rowRenderer: _Row2.default,\n cellRenderer: _Cell2.default,\n valueViewer: _ValueViewer2.default,\n dataEditor: _DataEditor2.default,\n};\n","import React from 'react';\nimport Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogContentText from '@material-ui/core/DialogContentText';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport SignaturePad from 'react-signature-canvas'\nimport './App.css';\nimport IconButton from '@material-ui/core/IconButton';\nimport CloseIcon from '@material-ui/icons/Close';\nimport Typography from '@material-ui/core/Typography';\nimport axios from \"axios\";\nimport Qs from \"qs\";\nimport { injectIntl, intlShape, useIntl, FormattedMessage } from 'react-intl';\n\nvar instance = axios.create({\n // timeout: 1000, //暫不設置timeout\n async: true,\n crossDomain: true,\n headers: {\n \"Content-Type\": \"application/x-www-form-urlencoded;charset=utf-8\",\n \"X-Requested-With\": \"XMLHttpRequest\", //for MVC Request.IsAjaxRequest()\n }\n});\n\nexport default function SigatureDialog(props) {\n const { handleSubmit, open, setOpen, imageURL, setImage, setTime, Update66th } = props;\n\n const handleClickOpen = () => {\n setOpen(true);\n };\n\n const handleClose = () => {\n setOpen(false);\n };\n\n const handleClear = () => {\n sigPad.current.clear()\n }\n const handleSave = () => {\n if (sigPad.current.isEmpty()) {\n alert(\"請簽名\")\n } else {\n setImage(sigPad.current.getTrimmedCanvas().toDataURL('image/png'));\n // Update66th();\n // const canvas= sigPad.current.getCanvas()\n // canvas.toBlob((blob) => {\n // const fd = new window.FormData()\n // fd.append('files', blob, 'signature.png')\n\n // instance({\n // method: \"post\",\n // url: 'https://localhost:44311' + \"/Questionaire/Upload\",\n // data: fd,\n // })\n // .then(function (response) {\n // console.log(response.data)\n // })\n // // POST to server with your preferred requests library\n // })\n\n handleClose();\n\n }\n\n // console.log(dateTime)\n props.setTime(new Date().toLocaleString());\n\n }\n const sigPad = React.useRef({});\n\n\n return (\n
\n {!imageURL ? () : null}\n \n \n \n \n {/* */}\n \n \n \n \n \n \n \n \n \n \n
\n );\n}","import React from \"react\";\n// nodejs library to set properties for components\nimport PropTypes from \"prop-types\";\n// @material-ui/core components\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Grid from \"@material-ui/core/Grid\";\n\nconst styles = {\n grid: {\n margin: \"0 -15px !important\",\n width: \"unset\"\n }\n};\n\nconst useStyles = makeStyles(styles);\n\nexport default function GridContainer(props) {\n const classes = useStyles();\n const { children, ...rest } = props;\n return (\n \n {children}\n \n );\n}\n\nGridContainer.propTypes = {\n children: PropTypes.node\n};\n","import React from \"react\";\n// nodejs library to set properties for components\nimport PropTypes from \"prop-types\";\n// @material-ui/core components\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Grid from \"@material-ui/core/Grid\";\n\nconst styles = {\n grid: {\n padding: \"0 15px !important\"\n }\n};\n\nconst useStyles = makeStyles(styles);\n\nexport default function GridItem(props) {\n const classes = useStyles();\n const { children, ...rest } = props;\n return (\n \n {children}\n \n );\n}\n\nGridItem.propTypes = {\n children: PropTypes.node\n};\n","//載入相關語系檔\nimport en from \"./en\";\nimport zh_tw from \"./zh-tw\";\nimport zh_cn from \"./zh-cn\";\nimport ja from \"./ja\";\n\n//檔名匹配\nconst messagesMap = {\n \"en\": en,\n \"zh-tw\": zh_tw,\n \"zh-cn\": zh_cn,\n \"ja\": ja\n};\n\nexport default messagesMap;\n","//大小寫需一致\nconst en = {\n // 'app.learn': 'Learn {name}'\n // , \"app.Salmon\": \"{name} Salmon\"\n // , \"app.loginMessage\": \"Please enter your account and password...\"\n // //userinfo\n // , \"app.screenLockMessage\": \"Please enter your password...\"\n // , \"app.screenLock\": \"Screen Lock\"\n // , \"app.loginMessage_Error\": \"Account or Password Error\"\n // , \"app.PasswordNotMatch\": \"New Password Not Match\"\n // , \"passwordOld\": \"Old Password\"\n // , \"passwordNew\": \"New Password\"\n // , \"passwordConfirm\": \"Confirm Password\"\n // , \"app.changePw\": \"Change Your Password\"\n \"app.LoginButton\": \"Login\"\n , \"UserName\": \"Name\"\n , \"birthDate\": \"Birthday\"\n , \"personalId\": \"ID number\"\n , \"app.Clear\": \"Clear\"\n , \"請填寫這個欄位。\": \"Please fill in.\"\n , \"請符合要求的格式。\": \"Please fill with correct format.\"\n , \"app.LoginCantFound\": \"Sorry, Could not find your reservation.\\r\\nPlease contact 04-2255-2555 #168\"\n , \"app.AllQuestsDone\": \"All questionaires have done, Many thanks\"\n , \"app.FillNextTime\": \"Logout\"\n , \"app.Logout\": \"Logout\"\n , \"app.Next\": \"Next\"\n , \"app.Back\": \"Back\"\n , \"app.Done\": \"Done\"\n , \"app.QuestsNotYet\": \"This questionaire is not finish.Please submit this questionaire.\"\n , \"app.ThankWords\": \"Thanks for patience\"\n , \"app.ThankDone\": \"All is done\"\n\n , \"app.Submit\": \"Submit\"\n , \"app.Cancel\": \"X\"\n , \"尚有問題未完成\": \"Some question not be completed\"\n , \"填寫此欄位\": \"Please fill in.\"\n , \"選擇其中一個選項\": \"Please select one of them\"\n , \"勾選此註記框\": \"Please tick one of them\"\n , \"輸入數字\": \"Number only\"\n , \"app.pleaseSelect\": \"Please choose one\"\n //問卷所寫\n , \"心血管\": \"Angiocarpy\"\n , \"肌肉骨骼\": \"Musculoskeletal\"\n , \"心情量表\": \"Mental Scale\"\n , \"過勞評估\": \"Fatigue\"\n , \"勞檢問卷\": \"Labor\"\n , \"無紙化\": \"Email\"\n //70\n , \"十年心血管風險評估\": \"10 years Angiocarpy Risk Evaluation\"\n , \"填寫前說明\": \"Instructions\"\n , \"基本資料\": \"Basic Information\"\n , \"體檢後\": \"After the examination\"\n , \"你有沒有吸煙:\": \"Do you have smoking\"\n , \"你有沒有服用高血壓藥物:\": \"Do you take any Antihypertensive drug\"\n , \"你有沒有糖尿病史:\": \"Do you have diabetes\"\n , \"沒有\": \"No\"\n , \"有吸煙\": \"have smoked\"\n , \"有服用高血壓藥物\": \"Take Antihypertensive drug\"\n , \"有糖尿病史\": \"have diabetes\"\n , \"說明:本測驗不適用於已被診斷出心血管疾病者或有接受治療者。\": \"This Test is not appropriate for person who diagnosed angiocardiopathy\"\n , \"取得檢測數字[總膽固醇]-[高密度脂蛋白膽固醇]-[收縮壓],進行風險評估試算,產生[未來10年心血管疾病風險評估表]\": \"Obtain test numbers [total cholesterol]-[high-density lipoprotein cholesterol]-[systolic blood pressure], perform a risk assessment trial calculation, and produce a [10-year cardiovascular disease risk assessment table]\"\n //無紙化\n , \"app.NopaperComfirm\": \"之前已確認使用無紙化服務,感謝與您一同保護地球!\"\n , \"app.NopaperNoexit\": \"There is no customer data, please mind\"\n , \"健檢報告無紙化服務同意書\": \"Examination Report Email informed consent\"\n , \"本人\": \"My name is \"\n , \"支持 \": \"support to \"\n , \"晨悅診所響應環保、節能愛地球\": \"the Mornjoy clinic committed to environmental protection\"\n , \"之活動,\": \",\"\n , \"同意\": \" agree\"\n , \" 晨悅診所將本人健康檢查報告,\": \" the Mornjoy clinic send my Examination Report \"\n , \"完成後以email方式通知至本人指定之電子信箱\": \"by email which I assign hereby \"\n , \",資料如下\": \"as following \"\n , \"立書同意人:\": \"Consenter:\"\n , \"身分證字號:\": \"ID number:\"\n , \"E-mail: (用於通知報告完成,請您確認正確)\": \"E-mail: (In order to inform you after the Report is done, please review email)\"\n , \"簽名時間:\": \"Time:\"\n , \"Email確認正確\": \"Email Correct\"\n , \"點擊按鈕才算完成\": \"Finish when click above button\"\n , \"謝謝\": \"Many thanks! Please click Next in the top right corner to continue\"\n\n\n //sign\n , \"簽名\": \"Sign in\"\n , \"重新簽名\": \"Re-sign\"\n , \"確認\": \"comfirm\"\n , \"請簽名(行動裝置請旋轉螢幕為水平橫向)...\": \"Please Sign in(Rotate your cellphone horizontally)...\"\n\n //肌肉骨骼\n , \"肌肉骨骼症狀調查表\": \"Investigation of Musculoskeletal Symptom\"\n , \"痠痛症狀調查\": \"Investigation of Ache\"\n , \"其他症狀、病史說明\": \"Others Symptom and Medical History\"\n , \"右腳踝/右腳\": \"Right ankle/foot\"\n , \"左腳踝/左腳\": \"Left ankle/foot\"\n , \"右膝\": \"Right knee\"\n , \"左膝\": \"Left knee\"\n , \"右臀/右大腿\": \"R-Buttock/Thigh\"\n , \"左臀/左大腿\": \"L-Buttock/Thigh\"\n , \"右手/右手腕\": \"R-hand/wrist\"\n , \"左手/左手腕\": \"L-hand/wrist\"\n , \"右手肘/右前臂\": \"R-elbow/forearm\"\n , \"左手肘/左前臂\": \"L-elbow/forearm\"\n , \"右肩部\": \"Right Shoulder\"\n , \"左肩部\": \"Left Shoulder\"\n , \"下背部\": \"Lower-Back\"\n , \"上背部\": \"Upper-Back\"\n , \"頸部\": \"Neck\"\n , \"痠痛症狀調查(請對應位置,在量化後的分數欄位中點選):\": \"Investigation of Ache(According the body position, Please choose one of them):\"\n , \"0表示『不痛』;1表示『痛可忽略』;2表示『可能影響工作』;3表示『影響工作』;4表示『影響自主活動功能』;5表示『完全無法自主活動』\": \"0 means『Fine』;1 means『Mild pain』;2 means『Might Affect Jobs』;3 means『Affect Jobs』;4 means『Affect Self-activity』;5 means『Completely Affect Self-activity』\"\n , \"下表的身體部位酸痛、不適或影響關節活動之情形持續多久時間?\": \"How long is your ache?\"\n , \"您平常使用電腦、滑鼠慣用手為?\": \"According to your mouse habbit for using computer?\"\n , \" 左手\": \"Left hand\"\n , \" 右手\": \"Right hand\"\n , \"是(若是,請繼續填寫下列表格。)\": \"Yes(if so, Please continuous.)\"\n , \"否(若否,結束此調查表)\": \"No(if so, it's done)\"\n , \"1個月\": \"1 month\"\n , \"3個月\": \"3 months\"\n , \"6個月\": \"6 months\"\n , \"1年\": \"1 Year\"\n , \"3年\": \"3 Years\"\n , \"3年以上\": \">= 3 Years\"\n , \"下列任何部位請以酸痛不適與影響關節活動評斷。任選分數高者。\": \"Please see the photo below, according to self-activities of your body \"\n , \"酸痛不適程度與關節活動能力:(以肩關節為例) 請在第二部分作答\": \"capacity of activity in your Shoulder joint. Is there any Ache?(Form left to right, means more ache). Please answer in part II\"\n , \"不痛\": \"Fine\"\n , \"痛可忽略\": \"Mild pain\"\n , \"可能影響工作\": \"Might Affect Jobs\"\n , \"影響工作\": \"Affect Jobs\"\n , \"影響自主活動功能\": \"Affect Self-activity\"\n , \"完全無法自主活動\": \"Completely Affect Self-activity\"\n , \"您在過去的1年內,身體是否有長達2星期以上的疲勞、酸痛、發麻、刺痛等不舒服,或關節活動受到限制?\": \"Until recently one year, do your body have any fatigue, ache, pins/needles, pricking, limited action in joint for more than 2 weeks?\"\n\n , \"晨悅預防醫學\": \"MornJoy Preventive Healthcare\"\n , \"健康人生,攜手晨悅\": \"Health Life, MornJoy Together\"\n , \"請選取其中一個選項。\": \"Please select one at lease\"\n\n //心情量表\n , \"計分方式\": \"Scoring Formula\"\n , \"沒有或極少\": \"None or few\"\n , \"有時候\": \"Sometimes\"\n , \"時常\": \"Often\"\n , \"常常或總是\": \"Often or always\"\n , \"我常常覺得想哭\": \"I wanna cry oftenly\"\n , \"我覺得心情不好\": \"I'm feeling rather blue\"\n , \"我覺得比以前容易發脾氣\": \"I feel more irritability\"\n , \"我睡不好\": \"I could not sleep well\"\n , \"我覺得不想吃東西\": \"I don't wanna eat\"\n , \"我覺得胸口悶悶的\": \"I have a feeling of tightness in my chest\"\n , \"我覺得不輕鬆、不舒服\": \"I feel strange\"\n , \"我覺得身體疲勞虛弱無力\": \"I feel tired and weak\"\n , \"我覺得很煩\": \"I feel annoyed\"\n , \"我覺得記憶力不好\": \"I can't remember well\"\n , \"我覺得做事時無法專心\": \"I can't concentrate on something\"\n , \"我覺得想事情或做事時比平常要緩慢\": \"I feel I'm doing things more slowly than usual\"\n , \"我覺得比以前沒信心\": \"I feel no cofidence\"\n , \"我覺得比較會往壞處想\": \"I think it's often getting worst\"\n , \"我覺得想不開,甚至想死\": \"I feel gloomy, even want to die\"\n , \"我覺得對什麼事都失去興趣\": \"I am not interesting in everything\"\n , \"我覺得身體不舒服\": \"I don't feel well in body\"\n , \"我覺得自己很沒用\": \"I feel useless\"\n , \"『沒有或極少』0分;『有時候』1分;『時常』2分;『常常或總是』3分\": \"『None or few』:0;『Sometimes』:1;『Often』:2;『Often or always』:3\"\n , \"8 分以下---情緒穩定\": \"Below 8 point---Emotionally stable\"\n , \"9~14分---情緒較不穩定、多注意情緒變化,多給自己關心\": \"9~14 point---Emotional instability. Need takig attention to emotional changes and care for yourself\"\n , \"15~18分---壓力負荷已到極點,需要找朋友交談、舒緩情緒\": \"15~18 point---You need to talk to friends to relieve your stress load\"\n , \"19分以上---必須找專業醫療單位協助\": \"Above 19 point---Professional medical assistance must be sought\"\n , \"說明:本量表所列舉的問題是為協助您瞭解您的心情狀況,請您仔細回想在一星期中,這些問題發生幾天,然後圈選一個您認為最能代表您感覺的答案。『沒有或極少』1天以下/週,『有時候』1~2天/週,『時常』3~4天/週,『常常或總是』5~7天/週\":\n \"Instruction:The questions listed in this scale are designed to help you understand your mood, Please recall carefully for the period of one week. These questions occur how many days, then tick the answer that you think best represents your feelings。『None or few』:less than one day,『Sometimes』1~2 days,『Often』3~4 days,『Often or always』5~7 days\"\n\n //過勞評估量表\n , \"過勞評估量表\": \"Fatigue and Overwork Evaluation\"\n , \"個人疲勞\": \"Fatigue\"\n , \"工作疲勞\": \"Overwork\"\n , \"分數解釋\": \"Explain\"\n , \"個人相關過勞\": \"Personal Fatigue\"\n , \"50 分以下\": \"<= 50 points\"\n , \"輕微\": \"Mild\"\n , \"您的過負荷程度輕微,您並不常感到疲勞、體力透支、精疲力竭、或者虛弱好像快生病的樣子。\":\n \"Your degree of overloading is mild, and you do not often feel tired physically exhausted or weak as if you are about to get sick.\"\n , \"50-70 分\": \"50-70 points\"\n , \"中度\": \"Moderate\"\n , \"你的個人過負荷程度中等。您有時候感到疲勞、體力透支、精疲力竭、或者虛弱好像快生病的樣子。建議您找出生活的壓力源,進一步的調適自己,增加放鬆與休息的時間。\":\n \"Your personal overload degree is medium. Sometimes you feel tired, physically overdrawn, exhausted or weak as if you are about to fall ill. It is recommended that you find out the source of pressure in your life, further adjust yourself, and increase the time for relaxation and rest\"\n , \"70 分以上\": \">70 points\"\n , \"嚴重\": \"Severe\"\n , \"您的個人過負荷程度嚴重。您時常感到疲勞、體力透支、精疲力竭、或者虛弱好像快生病的樣子。建議您適度的改變生活方式,增加運動與休閒時間之外,您還需要進一步尋找專業人員諮詢。\":\n \"Your personal overload degree is serious you often feel tired physically overdrawn exhausted or weak as if you are going to get sick. It is recommended that you moderately change your lifestyle and increase your sports and leisure time. Besides, you need to seek further professional advice\"\n , \"工作相關過勞\": \"Working Fatigue\"\n , \"45 分以下\": \"< 45 points\"\n , \"您的工作相關過負荷程度輕微,您的工作並不會讓您感覺很沒力、心力交瘁、很挫折。\": \"Your work-related overload is mild, and your job doesn't make you feel drained or frustrated.\"\n , \"45-60 分\": \"45-60 points\"\n , \"您的工作相關過負荷程度中等,您有時對工作感覺沒力,沒有興趣,有點挫折。\": \"Your work-related overload is moderate, and you sometimes feel tired, uninterested, and frustrated at work.\"\n , \"60 分以上\": \"> 60 points\"\n , \"您的工作相關過負荷程度嚴重,您已經快被工作累垮了,您感覺心力交瘁,感覺挫折,而且上班時都很難熬,此外您可能缺少休閒時間,沒有時間陪伴家人朋友。建議您適度的改變生活方式,增加運動與休閒時間之外,您還需要進一步尋找專業人員諮詢。\":\n \"Your work related to degree of overload is serious, you have been working fast burned out, and you feel stressed, feel setback, and are hard at work, in addition you may lack of leisure time, no time with family and friends you are advised to moderate lifestyle changes, increase the sports and leisure time, you also need to look for professional consulting further.\"\n , \"你常覺得疲勞嗎?\": \"Do you often feel tired?\"\n , \"你常覺得身體上體力透支嗎?\": \"Do you often feel physically exhausted?\"\n , \"你常覺得情緒上心力交瘁嗎?\": \"Do you often feel emotionally drained?\"\n , \"你常會覺得,「我快要撐不下去了」嗎?\": \"Do you often think I'm about to break down and cry?\"\n , \"你常覺得精疲力竭嗎?\": \"Do you often feel exhausted?\"\n , \"你常常覺得虛弱,好像快要生病了嗎?\": \"Do you often feel weak as if you were going to be ill?\"\n , \"你的工作會令人情緒上心力交瘁嗎?\": \"Is your job emotionally draining?\"\n , \"你的工作會讓你覺得快要累垮了嗎?\": \"Are you feeling burned out at your job?\"\n , \"你的工作會讓你覺得挫折嗎?\": \"Is your job frustrating?\"\n , \"工作一整天之後,你覺得精疲力竭嗎?\": \"Do you feel exhausted after a long day's work?\"\n , \"上班之前只要想到又要工作一整天,你就覺得沒力嗎?\": \"Do you feel drained when thinking about full day work before you go to work?\"\n , \"上班時你會覺得每一刻都很難熬嗎?\": \"Do you feel every moment tough at work?\"\n , \"不工作的時候,你有足夠的精力陪朋友或家人嗎?\": \"Do you have enough energy to spend time with friends or family when you're not working?\"\n , \"總是\": \"Always\"\n , \"常常\": \"Often\"\n , \"不常\": \"Seldom\"\n , \"從未或幾乎從未\": \"Never or few\"\n , \"說明:本量表所列舉的問題是為協助您瞭解您的身心適應狀況,請您仔細回想在最近一星期中(包括今天),這些問題使您感到困擾或苦惱的程度,然後圈選一個您認為最能代表您感覺的答案。\":\n \"Note: The questions listed in this scale are to help you understand your physical and mental adaptation. Please carefully recall how much you have been troubled or distressed by these questions in the last week (including today), and then tick the answer that best represents your feelings\"\n , \"有一些\": \"Moderate\"\n , \"很嚴重\": \"Seriously\"\n , \"非常輕微\": \"Slightly\"\n //勞工體(健)檢問卷\n , \"勞工體(健)檢問卷\": \"Labor Health Examination\"\n , \"一、作業經歷:\": \"A. Work Experience:\"\n , \"1.曾經從事\": \"1.Previously job\"\n , \"起始日期:\": \"From\"\n , \"截止日期:\": \"To\"\n , \"2.目前從事\": \"2.Current job\"\n , \"3.過去 1 個月,平均每週工時為:\": \"3.How many weekly hours do you work in past month:\"\n , \"小時\": \"hr\"\n , \";過去 6 個月,平均每週工時為:\": \"; How many weekly hours do you work in past 6 months:\"\n , \"新進員工\": \"New employees\"\n , \"定期檢查\": \"Regular Examination\"\n , \"二、檢查時期(原因):\": \"B. Inspection Reason:\"\n , \"四、既往病史:\": \"D. Past Medical History:\"\n , \"您是否曾患有下列慢性疾病:(請在適當項目前打勾)\": \"Have you ever suffered from any of the following chronic diseases :(please tick the appropriate item)\"\n , \"以上皆無\": \"None of above\"\n , \"骨折\": \"fracture\"\n , \"其他慢性病\": \"Other chronic diseases\"\n , \"手術開刀\": \"Surgical operation\"\n , \"癌症\": \"cancer\"\n , \"逆流性食道炎\": \"Gastroesophageal reflux\"\n , \"消化性潰瘍、胃炎\": \"Gastritis \"\n , \"甲狀腺疾病\": \"thyroid disease\"\n , \"聽力障礙\": \"hearing disorder\"\n , \"中耳炎\": \"tympanitis\"\n , \"貧血\": \"anemia\"\n , \"肝病\": \"hepatopathy\"\n , \"腎臟病\": \"kidney disease\"\n , \"肺結核\": \"tuberculosis\"\n , \"慢性氣管炎、肺氣腫\": \"Chronic bronchitis and emphysema\"\n , \"氣喘\": \"asthma\"\n , \"癲癇\": \"epilepsy\"\n , \"中風\": \"stroke\"\n , \"白內障\": \"cataract\"\n , \"心臟病\": \"cardiopathy\"\n , \"糖尿病\": \"diabetes\"\n , \"高血壓\": \"hypertension\"\n , \"五、生活習慣:\": \"E. Living Habits:\"\n , \"1.請問您過去一個月內是否有吸菸?\": \"1.Have you smoke in the last one month?\"\n , \"從未吸菸\": \"Never\"\n , \"偶爾吸(不是天天)\": \"Sometimes\"\n , \"(幾乎)每天吸\": \"Everyday had\"\n , \"已經戒菸,戒了\": \"Quitted for\"\n , \"平均每天吸\": \"avg.\"\n , \"支\": \"pcs\"\n , \"已吸菸\": \"for\"\n , \"2.請問您最近六個月內是否有嚼食檳榔?\": \"2.Have you chew betel in the last six months?\"\n , \"從未嚼食檳榔\": \"Never\"\n , \"偶爾嚼(不是天天)\": \"Sometimes\"\n , \"(幾乎)每天嚼\": \"Everyday had\"\n , \"已經戒食,戒了\": \"Quitted for\"\n , \"平均每天嚼\": \"avg.\"\n , \"已嚼 \": \"for\"\n , \"3.請問您過去一個月內是否有喝酒?\": \"3.Have you had any alcohol in the past month?\"\n , \"從未喝酒\": \"Never\"\n , \"偶爾喝(不是天天)\": \"Sometimes\"\n , \"(幾乎)每天喝\": \"Everyday had\"\n , \"已經戒酒,戒了\": \"Quitted for\"\n , \"平均每週喝\": \"avg.\"\n , \"最常喝 \": \"favor\"\n , \"酒\": \"liquor\"\n , \"每次 \": \"Each\"\n , \"瓶\": \"bottle(s)\"\n , \"4.請問您於工作日期間,平均每天睡眠時間為:\": \"4.How many hours do your average daily sleep time during working days?\"\n , \"六、自覺症狀:\": \"F. Subjective Symptom:\"\n , \"三、關係人:\": \"C. Relevant Person:\"\n , \"您最近三個月是否常有下列症狀:(請在適當項目前打勾)\": \"Have you had the following symptoms in the last 3 months :(please check the appropriate item)\"\n , \"咳嗽\": \"cough\"\n , \"咳痰\": \"expectoration\"\n , \"呼吸困難\": \"breathing difficulties\"\n , \"胸痛\": \"chest pain\"\n , \"心悸\": \"palpitation\"\n , \"頭暈\": \"swirl\"\n , \"頭痛\": \"headache\"\n , \"耳鳴\": \"tinnitus\"\n , \"倦怠\": \"Tireness\"\n , \"噁心\": \"nausea\"\n , \"腹痛\": \"stomachache\"\n , \"便秘\": \"constipation\"\n , \"腹瀉\": \"diarrhea\"\n , \"血便\": \"bloody stools\"\n , \"上背痛\": \"Upper-Back pain\"\n , \"下背痛\": \"Lower-Back pain\"\n , \"手腳麻痛\": \"arms and legs numbness\"\n , \"關節疼痛\": \"joint pain\"\n , \"排尿不適\": \"urination difficulties\"\n , \"多尿、頻尿\": \"diuresis\"\n , \"手腳肌肉無力\": \"myasthenia\"\n , \"體重減輕 3公斤以上\": \"Weight Loss > 3kg\"\n , \"其他症狀\": \"other symptoms\"\n , \"年\": \"y\"\n , \"個月\": \"m\"\n , \"次\": \"times\"\n , \"顆\": \"pcs\"\n , \"共\": \"for\"\n , \"忘記日期\": \"Forgot\"\n , \"無工作經驗\": \"NoJob\"\n , \"update success\": \"Update Success\"\n , \"update fail\": \"Update Fail\"\n , \"如果你要繼續執行,請勾選這個核取方塊。\": \"Please select one at lease\"\n // , \"password\": \"Password\"\n // , \"app.Languages\": \"Language\"\n // , \"app.Colors\": \"Color\"\n // , \"app.pleaseSelect\": \"Please Select...\"\n // , \"app.add\": \"Add\"\n // , \"app.addPlus\": \"Add+\"\n // , \"app.sendCheck\": \"Send Check\"\n // , \"app.delete\": \"Delete\"\n // , \"app.Edit\": \"Edit\"\n // , \"app.Undelete\": \"UnDelete\"\n // , \"app.Audit\": \"Audit\"\n // , \"app.UnAudit\": \"UnAudit\"\n // , \"app.Submit\": \"Submit\"\n // , \"app.isDelete\": \"Please confirm Delete or not\"\n // , \"app.UploadYourFile\": \"Please Upload file...\"\n // , \"app.administrator\": \"Administrator can't be modified\"\n // , \"app.haveData\": \"There are details can't be deleted\"\n // , \"app.Query\": \"Query\"\n // , \"app.CloseAll\": \"Close All\"\n // , \"app.CloseOthers\": \"Close Others\"\n\n // // helperText for Validator\n // , \"noRepeat\": \"Can't Repeat\"\n // , \"required\": \"Required\"\n // , \"minLength\": \"Min Length\"\n // , \"maxLength\": \"Max Length\"\n // //EmployeeTable\n // , \"EmployeeTable\": \"Employee Table\"\n // , \"empName\": \"Name\"\n // , \"empAddress\": \"Address\"\n // , \"pensionRate\": \"Pension Rate\"\n // , \"seniorityY\": \"seniority(Y)\"\n // , \"seniorityM\": \"seniority(M)\"\n // , \"seniorityMTotal\": \"seniority(M) Total\"\n // , \"empPhone\": \"Phone\"\n // , \"companyId\": \"Company\"\n // , \"companyName\": \"Company\"\n // , \"empSID\": \"SID\"\n // , \"empAccount\": \"Account\"\n // , \"email\": \"email\"\n // , \"gender\": \"Gender\"\n // , \"genderText\": \"Gender\"\n // , \"dateBirth\": \"Birthday\"\n // , \"dateQuit\": \"Quit date\"\n // , \"dateHire\": \"Hire date\"\n // , \"dateCreate\": \"Create date\"\n // , \"ExemptClock\": \"Need Clock Card\"\n // , \"ExemptClockText\": \"Need Clock Card\"\n // //CompanyTable\n // , \"CompanyTable\": \"Company Table\"\n // , \"companyName\": \"Company Name\"\n // , \"taxNumber\": \"Tax Number\"\n // , \"address\": \"Address\"\n // , \"prefixTitle\": \"Prefix\"\n // , \"ZipCode\": \"Zip Code\"\n // ////ShiftsTable\n // , \"ShiftsTable\": \"Shifts Table\"\n // , \"sqShift\": \"Shifts Name\"\n // , \"shiftsName\": \"shifts Name\"\n // , \"WorkTimeStart\": \"WorkTime Start\"\n // , \"WorkTimeEnd\": \"WorkTime End\"\n // , \"RestTimeStart\": \"RestTime Start\"\n // , \"RestTimeEnd\": \"RestTime End\"\n // , \"workhours\": \"workhours\"\n // //WageTypeTable\n // , \"WageTypeTable\": \"Wage Type Table\"\n // , \"name\": \"Name\"\n // , \"kind\": \"Kind\"\n // , \"DateAdd\": \"Date Add\"\n // , \"currencyId\": \"Currency\"\n // , \"amount\": \"Amount\"\n // , \"wageStructure\": \"Wage Structure\"\n // , \"wageHistory\": \"Wage History\"\n\n // //empInsurance\n // , \"subSq\": \"No.\"\n // , \"salaryRank\": \"Salary\"\n // , \"labourInsurance\": \"labourInsurance(P.)\"\n // , \"labourInsuranceEntity\": \"lobour Insurnce(Com.)\"\n // , \"healthCare\": \"health Care(P.)\"\n // , \"healthCareEntity\": \"health Care(Com.)\"\n // , \"year\": \"Year\"\n // , \"DateFrom\": \"Date From\"\n // , \"DateTo\": \"Date To\"\n // , \"local\": \"local\"\n // //LeaveTypeContainer\n // , \"LeaveTypeContainer\": \"LeaveTypeContainer\"\n // , \"sqLeaveType\": \"SQ\"\n // , \"LeaveTypeName\": \"Leave Type\"\n // , \"empId_applicant\": \"Applicant ID\"\n // , \"LeaveApplicantName\": \"Applicant\"\n // , \"empId_substitute\": \"Substitute ID\"\n // , \"LeaveSubstituteName\": \"Substitute\"\n // , \"dateFrom\": \"start date\"\n // , \"dateTo\": \"end date\"\n // , \"hours\": \"Hours\"\n // , \"checkType\": \"Check Type ID\"\n // , \"CheckTypeName\": \"Check Type\"\n // , \"leaveDescription\": \"Description\"\n\n // //roles\n // , \"RolesSetting\": \"Roles Setting\"\n // , \"rolesName\": \"Role Name\"\n // //Attendance\n // , \"AttendanceUploadTitle\": \"Attendance Upload\"\n // , \"isUpload\": \"Upload or not\"\n // , \"AttendanceRecordTitle\": \"Attendance Record\"\n // , \"everyday\": \"Date\"\n // , \"AttendanceStatus\": \"Attendance Status\"\n // , \"isWorkday\": \"Workday\"\n // , \"clockDate\": \"clockDate\"\n // , \"startTime\": \"Check-in time\"\n // , \"endTime\": \"Check-out time\"\n // , \"manualStartTime\": \"Manual Check-in\"\n // , \"manualEndTime\": \"Manual Check-out\"\n // //AttendanceAdjust\n // , \"AttendanceAdjustEmpTitle\": \"出勤人員\"\n // , \"PersonalAttendanceAdjustTitle\": \"出勤時數\"\n // , \"WorkOwedHours\": \"積欠小時\"\n // , \"WorkOverTime\": \"加班小時\"\n // , \"manualWorkOwedHours\": \"修正請假時數\"\n // , \"manualWorkOverTime\": \"修正加班時數\"\n // , \"AdjustConfirm\": \"調整確認\"\n // , \"AdjustDelete\": \"刪除調整\"\n // , \"AdjustTextNotConfirm\": \"未確認調整\"\n // , \"AdjustTextConfirmed\": \"確認調整時間:\"\n // //WageCalculatorTable\n // , \"WageCalculatorTitle\": \"薪資計算表\"\n // , \"BasicAmt\": \"薪資\"\n // , \"workOverTime133\": \"加班時數(一皆)\"\n // , \"workOverTime166\": \"加班時數(二皆)\"\n // , \"overtimeExpenses\": \"加班費\"\n // , \"workOwedTime\": \"請假/遲到時數\"\n // , \"owedExpenses\": \"請假/遲到扣薪\"\n // , \"totalSalary\": \"總薪資\"\n // , \"levelRank\": \"投保級距\"\n // , \"selfSaving\": \"員工自提\"\n // , \"pensionEntity\": \"退休金\"\n // , \"actualSalary\": \"實付薪資\"\n // , \"actualSalaryWithBonus\": \"實付薪資(含獎金)\"\n // , \"manualBonus01\": \"獎金(一)\"\n // , \"manualBonus02\": \"獎金(二)\"\n // , \"manualBonus03\": \"獎金(三)\"\n // , \"setAllmanualBonus01\": \"設定全獎金(一)\"\n // , \"setAllmanualBonus02\": \"設定全獎金(二)\"\n // , \"setAllmanualBonus03\": \"設定全獎金(三)\"\n // //JobsType\n // , \"sqJobsType\": \"NO.\"\n // , \"JobsTypeName\": \"JobsType Name\"\n // //CalendarTable\n // , \"holidayDescription\": \"Description\"\n // , \"multiplierRate\": \"Rate\"\n // , \"DateRest\": \"Date\"\n\n};\nexport default en;","//大小寫需一致\nconst zh_TW = {\n // 'app.learn': '學習 {name}'\n // , \"app.Salmon\": \"{name} 鮭魚\"\n // , \"app.loginMessage\": \"請輸入您的帳號、密碼\"\n // , \"app.screenLockMessage\": \"請輸入您的密碼\"\n // //UserInfo\n // , \"app.screenLock\": \"螢幕鎖定\"\n // , \"app.loginMessage_Error\": \"帳號或密碼錯誤\"\n // , \"app.PasswordNotMatch\": \"新密碼不一致\"\n // , \"passwordOld\": \"舊密碼\"\n // , \"passwordNew\": \"新密碼\"\n // , \"passwordConfirm\": \"新密碼確認\"\n // , \"app.changePw\": \"變更密碼\"\n \"app.LoginButton\": \"登 錄\"\n , \"UserName\": \"姓名\"\n , \"birthDate\": \"出生日期\"\n , \"personalId\": \"身分證字號\"\n , \"app.Clear\": \"清除\"\n , \"請填寫這個欄位。\": \"請填寫這個欄位。\"\n , \"請符合要求的格式。\": \"請符合要求的格式。\"\n , \"app.LoginCantFound\": \"抱歉,查無您的預約資料\\r\\n請致電 04-2255-2555 #168 企業健檢預約查詢\"\n , \"app.AllQuestsDone\": \"您所需要填寫的問卷均已提交,謝謝\"\n , \"app.FillNextTime\": \"重新填寫\"\n , \"app.Logout\": \"登出\"\n , \"app.Next\": \"下一份\"\n , \"app.Back\": \"上一份\"\n , \"app.Done\": \"完成\"\n , \"app.QuestsNotYet\": \"當前問卷尚未完成,請先提交當前問卷\"\n , \"app.ThankWords\": \"感謝您的耐心填寫\"\n , \"app.ThankDone\": \"全部已完成\"\n , \"app.Submit\": \"提 交\"\n , \"app.Cancel\": \"關閉\"\n , \"尚有問題未完成\": \"尚有問題未完成\"\n , \"填寫此欄位\": \"填寫此欄位\"\n , \"選擇其中一個選項\": \"選擇其中一個選項\"\n , \"勾選此註記框\": \"勾選此註記框\"\n , \"輸入數字\": \"輸入數字\"\n , \"app.pleaseSelect\": \"請選擇...\"\n\n //問卷所寫\n , \"心血管\": \"心血管\"\n , \"肌肉骨骼\": \"肌肉骨骼\"\n , \"心情量表\": \"心情量表\"\n , \"過勞評估\": \"過勞評估\"\n , \"勞檢問卷\": \"勞檢問卷\"\n , \"無紙化\": \"無紙化\"\n //70\n , \"十年心血管風險評估\": \"十年心血管風險評估\"\n , \"填寫前說明\": \"填寫前說明\"\n , \"基本資料\": \"基本資料\"\n , \"體檢後\": \"體檢後\"\n , \"你有沒有吸煙\": \"你有沒有吸煙\"\n , \"你有沒有服用高血壓藥物\": \"你有沒有服用高血壓藥物\"\n , \"你有沒有糖尿病史\": \"你有沒有糖尿病史\"\n , \"沒有\": \"沒有\"\n , \"有吸煙\": \"有吸煙\"\n , \"有服用高血壓藥物\": \"有服用高血壓藥物\"\n , \"有糖尿病史\": \"有糖尿病史\"\n , \"說明:本測驗不適用於已被診斷出心血管疾病者或有接受治療者。\": \"說明:本測驗不適用於已被診斷出心血管疾病者或有接受治療者。\"\n , \"取得檢測數字[總膽固醇]-[高密度脂蛋白膽固醇]-[收縮壓],進行風險評估試算,產生[未來10年心血管疾病風險評估表]\": \"取得檢測數字[總膽固醇]-[高密度脂蛋白膽固醇]-[收縮壓],進行風險評估試算,產生[未來10年心血管疾病風險評估表]\"\n\n //無紙化\n , \"app.NopaperComfirm\": \"之前已確認使用無紙化服務,感謝與您一同保護地球!\"\n , \"app.NopaperNoexit\": \"查無客戶資料,請確認\"\n , \"健檢報告無紙化服務同意書\": \"健檢報告無紙化服務同意書\"\n , \"支持 \": \"支持 \"\n , \"晨悅診所響應環保、節能愛地球\": \"晨悅診所響應環保、節能愛地球\"\n , \"之活動,\": \"之活動,\"\n , \"同意\": \"同意\"\n , \" 晨悅診所將本人健康檢查報告,\": \" 晨悅診所將本人健康檢查報告,\"\n , \"完成後以email方式通知至本人指定之電子信箱\": \"完成後以email方式通知至本人指定之電子信箱\"\n , \",資料如下\": \",資料如下\"\n , \"立書同意人:\": \"立書同意人:\"\n , \"身分證字號:\": \"身分證字號:\"\n , \"E-mail: (用於通知報告完成,請您確認正確)\": \"E-mail: (用於通知報告完成,請您確認正確)\"\n , \"立書同意人:\": \"立書同意人:\"\n , \"簽名時間:\": \"簽名時間:\"\n , \"Email確認正確\": \"Email確認正確\"\n , \"點擊按鈕才算完成\": \"點擊按鈕才算完成\"\n , \"謝謝\": \"謝謝!請按右上角的下一份繼續\"\n\n //sign\n , \"簽名\": \"簽名\"\n , \"重新簽名\": \"重新簽名\"\n , \"確認\": \"確認\"\n , \"請簽名(行動裝置請旋轉螢幕為水平橫向)...\": \"請簽名(行動裝置請旋轉螢幕為水平橫向)...\"\n //肌肉骨骼\n , \"肌肉骨骼症狀調查表\": \"肌肉骨骼症狀調查表\"\n , \"痠痛症狀調查\": \"痠痛症狀調查\"\n , \"其他症狀、病史說明\": \"其他症狀、病史說明\"\n , \"右腳踝/右腳\": \"右腳踝/右腳\"\n , \"左腳踝/左腳\": \"左腳踝/左腳\"\n , \"右膝\": \"右膝\"\n , \"左膝\": \"左膝\"\n , \"右臀/右大腿\": \"右臀/右大腿\"\n , \"左臀/左大腿\": \"左臀/左大腿\"\n , \"右手/右手腕\": \"右手/右手腕\"\n , \"左手/左手腕\": \"左手/左手腕\"\n , \"右手肘/右前臂\": \"右手肘/右前臂\"\n , \"左手肘/左前臂\": \"左手肘/左前臂\"\n , \"右肩部\": \"右肩部\"\n , \"左肩部\": \"左肩部\"\n , \"下背部\": \"下背部\"\n , \"上背部\": \"上背部\"\n , \"頸部\": \"頸部\"\n , \"痠痛症狀調查(請對應位置,在量化後的分數欄位中點選):0表示『不痛』;1表示『痛可忽略』;2表示『可能影響工作』;3表示『影響工作』;4表示『影響自主活動功能』;5表示『完全無法自主活動』\": \"痠痛症狀調查(請對應位置,在量化後的分數欄位中點選):0表示『不痛』;1表示『痛可忽略』;2表示『可能影響工作』;3表示『影響工作』;4表示『影響自主活動功能』;5表示『完全無法自主活動』\"\n , \"下表的身體部位酸痛、不適或影響關節活動之情形持續多久時間?\": \"下表的身體部位酸痛、不適或影響關節活動之情形持續多久時間?\"\n , \"您平常使用電腦、滑鼠慣用手為?\": \"您平常使用電腦、滑鼠慣用手為?\"\n , \" 左手\": \" 左手\"\n , \" 右手\": \" 右手\"\n , \"是(若是,請繼續填寫下列表格。)\": \"是(若是,請繼續填寫下列表格。)\"\n , \"否(若否,結束此調查表)\": \"否(若否,結束此調查表)\"\n , \"1個月\": \"1個月\"\n , \"3個月\": \"3個月\"\n , \"6個月\": \"6個月\"\n , \"1年\": \"1年\"\n , \"3年\": \"3年\"\n , \"3年以上\": \"3年以上\"\n , \"下列任何部位請以酸痛不適與影響關節活動評斷。任選分數高者。\": \"下列任何部位請以酸痛不適與影響關節活動評斷。任選分數高者。\"\n , \"酸痛不適程度與關節活動能力:(以肩關節為例) 請在第二部分作答\": \"酸痛不適程度與關節活動能力:(以肩關節為例) 請在第二部分作答\"\n , \"不痛\": \"不痛\"\n , \"痛可忽略\": \"痛可忽略\"\n , \"可能影響工作\": \"可能影響工作\"\n , \"影響工作\": \"影響工作\"\n , \"影響自主活動功能\": \"影響自主活動功能\"\n , \"完全無法自主活動\": \"完全無法自主活動\"\n , \"您在過去的1年內,身體是否有長達2星期以上的疲勞、酸痛、發麻、刺痛等不舒服,或關節活動受到限制?\": \"您在過去的1年內,身體是否有長達2星期以上的疲勞、酸痛、發麻、刺痛等不舒服,或關節活動受到限制?\"\n\n\n\n\n\n , \"晨悅預防醫學\": \"晨悅預防醫學\"\n , \"健康人生,攜手晨悅\": \"健康人生,攜手晨悅\"\n , \"請選取其中一個選項。\": \"請選取其中一個選項。\"\n\n //心情量表\n , \"計分方式\": \"計分方式\"\n , \"沒有或極少\": \"沒有或極少\"\n , \"有時候\": \"有時候\"\n , \"時常\": \"時常\"\n , \"常常或總是\": \"常常或總是\"\n , \"我常常覺得想哭\": \"我常常覺得想哭\"\n , \"我覺得心情不好\": \"我覺得心情不好\"\n , \"我覺得比以前容易發脾氣\": \"我覺得比以前容易發脾氣\"\n , \"我睡不好\": \"我睡不好\"\n , \"我覺得不想吃東西\": \"我覺得不想吃東西\"\n , \"我覺得胸口悶悶的\": \"我覺得胸口悶悶的\"\n , \"我覺得不輕鬆、不舒服\": \"我覺得不輕鬆、不舒服\"\n , \"我覺得身體疲勞虛弱無力\": \"我覺得身體疲勞虛弱無力\"\n , \"我覺得很煩\": \"我覺得很煩\"\n , \"我覺得記憶力不好\": \"我覺得記憶力不好\"\n , \"我覺得做事時無法專心\": \"我覺得做事時無法專心\"\n , \"我覺得想事情或做事時比平常要緩慢\": \"我覺得想事情或做事時比平常要緩慢\"\n , \"我覺得比以前沒信心\": \"我覺得比以前沒信心\"\n , \"我覺得比較會往壞處想\": \"我覺得比較會往壞處想\"\n , \"我覺得想不開,甚至想死\": \"我覺得想不開,甚至想死\"\n , \"我覺得對什麼事都失去興趣\": \"我覺得對什麼事都失去興趣\"\n , \"我覺得身體不舒服\": \"我覺得身體不舒服\"\n , \"我覺得自己很沒用\": \"我覺得自己很沒用\"\n , \"『沒有或極少』0分;『有時候』1分;『時常』2分;『常常或總是』3分\": \"『沒有或極少』0分;『有時候』1分;『時常』2分;『常常或總是』3分\"\n , \"8 分以下---情緒穩定\": \"8 分以下---情緒穩定\"\n , \"9~14分---情緒較不穩定、多注意情緒變化,多給自己關心\": \"9~14分---情緒較不穩定、多注意情緒變化,多給自己關心\"\n , \"15~18分---壓力負荷已到極點,需要找朋友交談、舒緩情緒\": \"15~18分---壓力負荷已到極點,需要找朋友交談、舒緩情緒\"\n , \"19分以上---必須找專業醫療單位協助\": \"19分以上---必須找專業醫療單位協助\"\n , \"說明:本量表所列舉的問題是為協助您瞭解您的心情狀況,請您仔細回想在一星期中,這些問題發生幾天,然後圈選一個您認為最能代表您感覺的答案。『沒有或極少』1天以下/週,『有時候』1~2天/週,『時常』3~4天/週,『常常或總是』5~7天/週\": \"說明:本量表所列舉的問題是為協助您瞭解您的心情狀況,請您仔細回想在一星期中,這些問題發生幾天,然後圈選一個您認為最能代表您感覺的答案。『沒有或極少』1天以下/週,『有時候』1~2天/週,『時常』3~4天/週,『常常或總是』5~7天/週\"\n\n //過勞評估量表\n , \"過勞評估量表\": \"過勞評估量表\"\n , \"個人疲勞\": \"個人疲勞\"\n , \"工作疲勞\": \"工作疲勞\"\n , \"分數解釋\": \"分數解釋\"\n , \"個人相關過勞\": \"個人相關過勞\"\n , \"50 分以下\": \"50 分以下\"\n , \"輕微\": \"輕微\"\n , \"您的過負荷程度輕微,您並不常感到疲勞、體力透支、精疲力竭、或者虛弱好像快生病的樣子。\": \"您的過負荷程度輕微,您並不常感到疲勞、體力透支、精疲力竭、或者虛弱好像快生病的樣子。\"\n , \"50-70 分\": \"50-70 分\"\n , \"中度\": \"中度\"\n , \"你的個人過負荷程度中等。您有時候感到疲勞、體力透支、精疲力竭、或者虛弱好像快生病的樣子。建議您找出生活的壓力源,進一步的調適自己,增加放鬆與休息的時間。\": \"你的個人過負荷程度中等。您有時候感到疲勞、體力透支、精疲力竭、或者虛弱好像快生病的樣子。建議您找出生活的壓力源,進一步的調適自己,增加放鬆與休息的時間。\"\n , \"70 分以上\": \"70 分以上\"\n , \"嚴重\": \"嚴重\"\n , \"您的個人過負荷程度嚴重。您時常感到疲勞、體力透支、精疲力竭、或者虛弱好像快生病的樣子。建議您適度的改變生活方式,增加運動與休閒時間之外,您還需要進一步尋找專業人員諮詢。\": \"您的個人過負荷程度嚴重。您時常感到疲勞、體力透支、精疲力竭、或者虛弱好像快生病的樣子。建議您適度的改變生活方式,增加運動與休閒時間之外,您還需要進一步尋找專業人員諮詢。\"\n , \"工作相關過勞\": \"工作相關過勞\"\n , \"45 分以下\": \"45 分以下\"\n , \"您的工作相關過負荷程度輕微,您的工作並不會讓您感覺很沒力、心力交瘁、很挫折。\": \"您的工作相關過負荷程度輕微,您的工作並不會讓您感覺很沒力、心力交瘁、很挫折。\"\n , \"45-60 分\": \"45-60 分\"\n , \"您的工作相關過負荷程度中等,您有時對工作感覺沒力,沒有興趣,有點挫折。\": \"您的工作相關過負荷程度中等,您有時對工作感覺沒力,沒有興趣,有點挫折。\"\n , \"60 分以上\": \"60 分以上\"\n , \"您的工作相關過負荷程度嚴重,您已經快被工作累垮了,您感覺心力交瘁,感覺挫折,而且上班時都很難熬,此外您可能缺少休閒時間,沒有時間陪伴家人朋友。建議您適度的改變生活方式,增加運動與休閒時間之外,您還需要進一步尋找專業人員諮詢。\": \"您的工作相關過負荷程度嚴重,您已經快被工作累垮了,您感覺心力交瘁,感覺挫折,而且上班時都很難熬,此外您可能缺少休閒時間,沒有時間陪伴家人朋友。建議您適度的改變生活方式,增加運動與休閒時間之外,您還需要進一步尋找專業人員諮詢。\"\n , \"你常覺得疲勞嗎?\": \"你常覺得疲勞嗎?\"\n , \"你常覺得身體上體力透支嗎?\": \"你常覺得身體上體力透支嗎?\"\n , \"你常覺得情緒上心力交瘁嗎?\": \"你常覺得情緒上心力交瘁嗎?\"\n , \"你常會覺得,「我快要撐不下去了」嗎?\": \"你常會覺得,「我快要撐不下去了」嗎?\"\n , \"你常覺得精疲力竭嗎?\": \"你常覺得精疲力竭嗎?\"\n , \"你常常覺得虛弱,好像快要生病了嗎?\": \"你常常覺得虛弱,好像快要生病了嗎?\"\n , \"你的工作會令人情緒上心力交瘁嗎?\": \"你的工作會令人情緒上心力交瘁嗎?\"\n , \"你的工作會讓你覺得快要累垮了嗎?\": \"你的工作會讓你覺得快要累垮了嗎?\"\n , \"你的工作會讓你覺得挫折嗎?\": \"你的工作會讓你覺得挫折嗎?\"\n , \"工作一整天之後,你覺得精疲力竭嗎?\": \"工作一整天之後,你覺得精疲力竭嗎?\"\n , \"上班之前只要想到又要工作一整天,你就覺得沒力嗎?\": \"上班之前只要想到又要工作一整天,你就覺得沒力嗎?\"\n , \"上班時你會覺得每一刻都很難熬嗎?\": \"上班時你會覺得每一刻都很難熬嗎?\"\n , \"不工作的時候,你有足夠的精力陪朋友或家人嗎?\": \"不工作的時候,你有足夠的精力陪朋友或家人嗎?\"\n , \"總是\": \"總是\"\n , \"常常\": \"常常\"\n , \"不常\": \"不常\"\n , \"從未或幾乎從未\": \"從未或幾乎從未\"\n , \"說明:本量表所列舉的問題是為協助您瞭解您的身心適應狀況,請您仔細回想在最近一星期中(包括今天),這些問題使您感到困擾或苦惱的程度,然後圈選一個您認為最能代表您感覺的答案。\": \"說明:本量表所列舉的問題是為協助您瞭解您的身心適應狀況,請您仔細回想在最近一星期中(包括今天),這些問題使您感到困擾或苦惱的程度,然後圈選一個您認為最能代表您感覺的答案。\"\n , \"有一些\": \"有一些\"\n , \"很嚴重\": \"很嚴重\"\n , \"非常輕微\": \"非常輕微\"\n //勞工體(健)檢問卷\n , \"勞工體(健)檢問卷\": \"勞工體(健)檢問卷\"\n , \"一、作業經歷:\": \"一、作業經歷:\"\n , \"1.曾經從事\": \"1.曾經從事\"\n , \"起始日期:\": \"起始日期:\"\n , \"截止日期:\": \"截止日期:\"\n , \"2.目前從事\": \"2.目前從事\"\n , \"3.過去 1 個月,平均每週工時為:\": \"3.過去 1 個月,平均每週工時為:\"\n , \"小時\": \"小時\"\n , \";過去 6 個月,平均每週工時為:\": \";過去 6 個月,平均每週工時為:\"\n , \"新進員工\": \"新進員工\"\n , \"定期檢查\": \"定期檢查\"\n , \"二、檢查時期(原因):\": \"二、檢查時期(原因):\"\n , \"四、既往病史:\": \"四、既往病史:\"\n , \"您是否曾患有下列慢性疾病:(請在適當項目前打勾)\": \"您是否曾患有下列慢性疾病:(請在適當項目前打勾)\"\n , \"以上皆無\": \"以上皆無\"\n , \"骨折\": \"骨折\"\n , \"其他慢性病\": \"其他慢性病\"\n , \"手術開刀\": \"手術開刀\"\n , \"癌症\": \"癌症\"\n , \"逆流性食道炎\": \"逆流性食道炎\"\n , \"消化性潰瘍、胃炎\": \"消化性潰瘍、胃炎\"\n , \"甲狀腺疾病\": \"甲狀腺疾病\"\n , \"聽力障礙\": \"聽力障礙\"\n , \"中耳炎\": \"中耳炎\"\n , \"貧血\": \"貧血\"\n , \"肝病\": \"肝病\"\n , \"腎臟病\": \"腎臟病\"\n , \"肺結核\": \"肺結核\"\n , \"慢性氣管炎、肺氣腫\": \"慢性氣管炎、肺氣腫\"\n , \"氣喘\": \"氣喘\"\n , \"癲癇\": \"癲癇\"\n , \"中風\": \"中風\"\n , \"白內障\": \"白內障\"\n , \"心臟病\": \"心臟病\"\n , \"糖尿病\": \"糖尿病\"\n , \"高血壓\": \"高血壓\"\n , \"五、生活習慣:\": \"五、生活習慣:\"\n , \"1.請問您過去一個月內是否有吸菸?\": \"1.請問您過去一個月內是否有吸菸?\"\n , \"從未吸菸\": \"從未吸菸\"\n , \"偶爾吸(不是天天)\": \"偶爾吸(不是天天)\"\n , \"幾乎)每天吸\": \"幾乎)每天吸\"\n , \"已經戒菸,戒了\": \"已經戒菸,戒了\"\n , \"平均每天吸\": \"平均每天吸\"\n , \"支\": \"支\"\n , \"已吸菸\": \"已吸菸\"\n , \"2.請問您最近六個月內是否有嚼食檳榔?\": \"2.請問您最近六個月內是否有嚼食檳榔?\"\n , \"從未嚼食檳榔\": \"從未嚼食檳榔\"\n , \"偶爾嚼(不是天天)\": \"偶爾嚼(不是天天)\"\n , \"(幾乎)每天嚼\": \"(幾乎)每天嚼\"\n , \"已經戒食,戒了\": \"已經戒食,戒了\"\n , \"平均每天嚼\": \"平均每天嚼\"\n , \"已嚼 \": \"已嚼 \"\n , \"3.請問您過去一個月內是否有喝酒?\": \"3.請問您過去一個月內是否有喝酒?\"\n , \"從未喝酒\": \"從未喝酒\"\n , \"偶爾喝(不是天天)\": \"偶爾喝(不是天天)\"\n , \"(幾乎)每天喝\": \"(幾乎)每天喝\"\n , \"已經戒酒,戒了\": \"已經戒酒,戒了\"\n , \"平均每週喝\": \"平均每週喝\"\n , \"最常喝 \": \"最常喝 \"\n , \"酒\": \"酒\"\n , \"每次 \": \"每次\"\n , \"瓶\": \"瓶\"\n , \"4.請問您於工作日期間,平均每天睡眠時間為:\": \"4.請問您於工作日期間,平均每天睡眠時間為:\"\n , \"六、自覺症狀:\": \"六、自覺症狀:\"\n , \"三、關係人\": \"三、關係人\"\n , \"您最近三個月是否常有下列症狀:(請在適當項目前打勾)\": \"您最近三個月是否常有下列症狀:(請在適當項目前打勾)\"\n , \"咳嗽\": \"咳嗽\"\n , \"咳痰\": \"咳痰\"\n , \"呼吸困難\": \"呼吸困難\"\n , \"胸痛\": \"胸痛\"\n , \"心悸\": \"心悸\"\n , \"頭暈\": \"頭暈\"\n , \"頭痛\": \"頭痛\"\n , \"耳鳴\": \"耳鳴\"\n , \"倦怠\": \"倦怠\"\n , \"噁心\": \"噁心\"\n , \"腹痛\": \"腹痛\"\n , \"便秘\": \"便秘\"\n , \"腹瀉\": \"腹瀉\"\n , \"血便\": \"血便\"\n , \"上背痛\": \"上背痛\"\n , \"下背痛\": \"下背痛\"\n , \"手腳麻痛\": \"手腳麻痛\"\n , \"關節疼痛\": \"關節疼痛\"\n , \"排尿不適\": \"排尿不適\"\n , \"多尿、頻尿\": \"多尿、頻尿\"\n , \"手腳肌肉無力\": \"手腳肌肉無力\"\n , \"體重減輕 3公斤以上\": \"體重減輕 3公斤以上\"\n , \"其他症狀\": \"其他症狀\"\n , \"年\": \"年\"\n , \"個月\": \"個月\"\n , \"次\": \"次\"\n , \"顆\": \"顆\"\n , \"共\": \"共\"\n\n , \"update success\": \"更新成功\"\n , \"update fail\": \"更新失敗\"\n , \"如果你要繼續執行,請勾選這個核取方塊。\": \"如果你要繼續執行,請勾選這個核取方塊。\"\n\n\n // , \"app.Languages\": \"語言\"\n // , \"app.Colors\": \"顏色\"\n // , \"app.pleaseSelect\": \"請選擇...\"\n // , \"app.add\": \"新增\"\n // , \"app.addPlus\": \"新增+\"\n // , \"app.sendCheck\": \"送審\"\n // , \"app.delete\": \"刪除\"\n // , \"app.Edit\": \"編輯\"\n // , \"app.Undelete\": \"反刪除\"\n // , \"app.Audit\": \"審核\"\n // , \"app.UnAudit\": \"反審核\"\n // , \"app.Cancel\": \"取消\"\n // , \"app.Submit\": \"上傳\"\n // , \"app.isDelete\": \"確認是否刪除?\"\n // , \"app.UploadYourFile\": \"請上傳檔案...\"\n // , \"app.administrator\": \"管理員無法被修改\"\n // , \"app.haveData\": \"尚有明細無法刪除\"\n // , \"app.Query\": \"查詢\"\n // , \"app.CloseAll\": \"關閉所有\"\n // , \"app.CloseOthers\": \"關閉其他\"\n\n // // helperText for Validator\n // , \"noRepeat\": \"不可重複\"\n // , \"required\": \"必填\"\n // , \"minLength\": \"最小長度\"\n // , \"maxLength\": \"最大長度\"\n // //EmployeeTable\n // , \"EmployeeTable\": \"員工列表\"\n // , \"empName\": \"姓名\"\n // , \"empAddress\": \"地址\"\n // , \"pensionRate\": \"退休金率\"\n // , \"seniorityY\": \"年資(Y)\"\n // , \"seniorityM\": \"年資(M)\"\n // , \"seniorityMTotal\": \"總年資(M)\"\n // , \"empPhone\": \"電話\"\n // , \"companyId\": \"公司\"\n // , \"companyName\": \"公司\"\n // , \"empSID\": \"身分證號\"\n // , \"empAccount\": \"帳號\"\n // , \"email\": \"email\"\n // , \"gender\": \"性別\"\n // , \"genderText\": \"性別\"\n // , \"dateBirth\": \"生日\"\n // , \"dateQuit\": \"離職日\"\n // , \"dateHire\": \"僱用日\"\n // , \"dateCreate\": \"資料創建日\"\n // , \"EmployeeWageStructureTable\": \"員工薪資結構表\"\n // , \"WageAmount\": \"金額\"\n // , \"DataAdd\": \"建立時間\"\n // , \"ExemptClock\": \"需要打卡\"\n // , \"ExemptClockText\": \"需要打卡\"\n // //CompanyTable\n // , \"CompanyTable\": \"公司列表\"\n // , \"companyName\": \"公司名稱\"\n // , \"taxNumber\": \"稅號\"\n // , \"address\": \"地址\"\n // , \"prefixTitle\": \"前綴\"\n // , \"ZipCode\": \"郵編\"\n // ////ShiftsTable\n // , \"ShiftsTable\": \"班別設定\"\n // , \"sqShifts\": \"班別名稱\"\n // , \"shiftsName\": \"班別名稱\"\n // , \"WorkTimeStart\": \"上班時間\"\n // , \"WorkTimeEnd\": \"下班時間\"\n // , \"RestTimeStart\": \"休息開始\"\n // , \"RestTimeEnd\": \"休息開始\"\n // , \"workhours\": \"工時\"\n // //WageTypeTable\n // , \"WageTypeTable\": \"薪資類型表\"\n // , \"name\": \"名稱\"\n // , \"kind\": \"類型\"\n // , \"DateAdd\": \"新增日期\"\n // , \"currencyId\": \"幣別\"\n // , \"amount\": \"金額\"\n // , \"wageStructure\": \"薪資結構\"\n // , \"wageHistory\": \"歷史薪資\"\n // //empInsurance\n // , \"EmpInsuranceTitle\": \"勞健保級距列表\"\n // , \"subSq\": \"No.\"\n // , \"salaryRank\": \"薪水級距\"\n // , \"labourInsurance\": \"勞保(個人)\"\n // , \"labourInsuranceEntity\": \"勞保(企業)\"\n // , \"healthCare\": \"健保(個人)\"\n // , \"healthCareEntity\": \"健保(企業)\"\n // , \"year\": \"Year\"\n // , \"DateFrom\": \"起始日\"\n // , \"DateTo\": \"結束日\"\n // , \"local\": \"區域\"\n // //LeaveTypeContainer\n // , \"LeaveTypeContainer\": \"請假類別設定\"\n // , \"payRatio\": \"支付比例\"\n // //LeaveApplicationContainer\n // , \"LeaveApplicationContainer\": \"請假類單申請\"\n // , \"sqLeaveType\": \"假別類別\"\n // , \"LeaveTypeName\": \"假別類別\"\n // , \"empId_applicant\": \"申請人\"\n // , \"LeaveApplicantName\": \"申請人\"\n // , \"empId_substitute\": \"代理人\"\n // , \"LeaveSubstituteName\": \"代理人\"\n // , \"dateFrom\": \"起始日期\"\n // , \"dateTo\": \"結束日期\"\n // , \"hours\": \"請假時數\"\n // , \"checkType\": \"簽核狀態\"\n // , \"CheckTypeName\": \"簽核狀態\"\n // , \"leaveDescription\": \"說明\"\n // //LeaveApplicationCheckContainer\n // , \"LeaveApplicationCheckContainer\": \"請假類單審核\"\n // //roles\n // , \"RolesSetting\": \"角色設定\"\n // , \"rolesName\": \"角色名稱\"\n // //Attendance\n // , \"AttendanceUploadTitle\": \"出勤上傳\"\n // , \"isUpload\": \"是否上傳\"\n // , \"AttendanceRecordTitle\": \"出勤紀錄\"\n // , \"everyday\": \"日期\"\n // , \"AttendanceStatus\": \"出勤狀況\"\n // , \"isWorkday\": \"上班日\"\n // , \"clockDate\": \"打卡日期\"\n // , \"startTime\": \"上班打卡時間\"\n // , \"endTime\": \"下班打卡時間\"\n // , \"manualStartTime\": \"手動上班時間\"\n // , \"manualEndTime\": \"手動下班時間\"\n // //AttendanceAdjust\n // , \"AttendanceAdjustEmpTitle\": \"出勤人員\"\n // , \"PersonalAttendanceAdjustTitle\": \"出勤時數\"\n // , \"WorkOwedHours\": \"積欠小時\"\n // , \"WorkOverTime\": \"加班小時\"\n // , \"manualWorkOwedHours\": \"修正請假時數\"\n // , \"manualWorkOverTime\": \"修正加班時數\"\n // , \"AdjustConfirm\": \"調整確認\"\n // , \"AdjustDelete\": \"刪除調整\"\n // , \"AdjustTextNotConfirm\": \"未確認調整\"\n // , \"AdjustTextConfirmed\": \"確認調整時間:\"\n // //WageCalculatorTable\n // , \"WageCalculatorTitle\": \"薪資計算表\"\n // , \"BasicAmt\": \"薪資\"\n // , \"workOverTime133\": \"加班時數(一皆)\"\n // , \"workOverTime166\": \"加班時數(二皆)\"\n // , \"overtimeExpenses\": \"加班費\"\n // , \"workOwedTime\": \"請假/遲到時數\"\n // , \"owedExpenses\": \"請假/遲到扣薪\"\n // , \"totalSalary\": \"總薪資\"\n // , \"levelRank\": \"投保級距\"\n // , \"selfSaving\": \"員工自提\"\n // , \"pensionEntity\": \"退休金\"\n // , \"actualSalary\": \"實付薪資\"\n // , \"actualSalaryWithBonus\": \"實付薪資(含獎金)\"\n // , \"manualBonus01\": \"獎金(一)\"\n // , \"manualBonus02\": \"獎金(二)\"\n // , \"manualBonus03\": \"獎金(三)\"\n // , \"setAllmanualBonus01\": \"設定全獎金(一)\"\n // , \"setAllmanualBonus02\": \"設定全獎金(二)\"\n // , \"setAllmanualBonus03\": \"設定全獎金(三)\"\n // //JobsType\n // , \"sqJobsType\": \"NO.\"\n // , \"JobsTypeName\": \"工作性質\"\n // //CalendarTable\n // , \"holidayDescription\": \"描述\"\n // , \"multiplierRate\": \"係數\"\n // , \"DateRest\": \"日期\"\n\n , \"UserName\": \"姓名\"\n , \"checkdate\": \"體檢日期\"\n , \"barcode\": \"條碼號\"\n , \"PersonalId\": \"身分證號\"\n , \"UpdateCount\": \"更新次數\"\n , \"app.FrozenColumn\": \"凍結欄位\"\n , \"app.ColumnCount\": \"欄位數\"\n , \"app.ShowColumn\": \"顯示欄位\"\n\n //BigCalendar\n , \"start\": \"起始時間\"\n , \"end\": \"結束時間\"\n , \"resourceId\": \"會議室\"\n , \"title\": \"會議內容\"\n , \"department\": \"部門\"\n , \"app.CancelBooking\": \"取消預約\"\n\n //WeeklyBooking\n , \"SOMEDAY\": \"預約日期\"\n , \"RANGETIME\": \"時段\"\n , \"Limit\": \"限額\"\n , \"DY\": \"到院\"\n , \"CW\": \"腸胃\"\n , \"AMQC\": \"AM企檢\"\n , \"PMQC\": \"PM企檢\"\n , \"AMGC\": \"AM個檢\"\n , \"PMGC\": \"PM個檢\"\n , \"AMBC\": \"AM補檢\"\n , \"PMBC\": \"PM補檢\"\n , \"FL\": \"防老\"\n , \"Hear\": \"聽力全頻\"\n , \"Ultra\": \"心超\"\n , \"Lung\": \"肺功能\"\n , \"Auto\": \"全自動\"\n , \"DXA\": \"DXA\"\n , \"MP\": \"抹片\"\n , \"VIP\": \"VIP\"\n , \"VIPRest\": \"VIP餐廳\"\n\n //WeeklyBooking\n , \"BarCodeStr\": \"BarCodeStr\"\n , \"Name\": \"Name\"\n , \"ID\": \"ID\"\n , \"SpecNo66\": \"更新66\"\n\n //80\n , \"是否需要輪班?\": \"是否需要輪班?\"\n , \"Shift2\": \"兩班制\"\n , \"Shift3\": \"三班制\"\n , \"Shift4\": \"四班制\"\n , \"ShiftOther\": \"其他:\"\n , \"Yes\": \"是\"\n , \"No\": \"否\"\n , \"Forgot\": \"忘記日期\"\n , \"NoJob\": \"無工作經驗\"\n , \"新勞檢測試\": \"勞檢\"\n\n};\nexport default zh_TW;","//大小寫需一致\nconst zh_cn = {\n 'app.learn': '学习 {name}'\n , \"app.Salmon\": \"{name} 三文鱼\"\n , \"app.loginMessage\": \"请输入您的帐号、密码\"\n //UserInfo\n , \"app.screenLockMessage\": \"请输入您的密码\"\n , \"app.screenLock\": \"屏幕锁定\"\n , \"app.loginMessage_Error\": \"帐号或密码错误\"\n , \"app.PasswordNotMatch\": \"新密码不一致\"\n , \"passwordOld\": \"旧密码\"\n , \"passwordNew\": \"新密码\"\n , \"passwordConfirm\": \"新密码确认\"\n , \"app.changePw\": \"变更密码\"\n\n , \"username\": \"帐号\"\n , \"password\": \"密码\"\n , \"app.Languages\": \"语言\"\n , \"app.Colors\": \"颜色\"\n , \"app.pleaseSelect\": \"请选择...\"\n , \"app.add\": \"新增\"\n , \"app.addPlus\": \"新增+\"\n , \"app.sendCheck\": \"送审\"\n , \"app.delete\": \"删除\"\n , \"app.Edit\": \"编辑\"\n , \"app.Undelete\": \"反删除\"\n , \"app.Audit\": \"审核\"\n , \"app.UnAudit\": \"反审核\"\n , \"app.Cancel\": \"取消\"\n , \"app.UploadYourFile\": \"请上传档案...\"\n , \"app.Submit\": \"上传\"\n , \"app.isDelete\": \"确认是否删除?\"\n , \"app.UploadYourFile\": \"请上传档案...\"\n , \"app.administrator\": \"管理员无法被修改\"\n , \"app.haveData\": \"尚有明细无法删除\"\n , \"app.Query\": \"查询\"\n , \"app.CloseAll\": \"关闭所有\"\n , \"app.CloseOthers\": \"关闭其他\"\n // helperText for Validator\n , \"noRepeat\": \"不可重复\"\n , \"required\": \"必填\"\n , \"minLength\": \"最小长度\"\n , \"maxLength\": \"最大长度\"\n //EmployeeTable\n , \"EmployeeTable\": \"员工列表\"\n , \"empName\": \"姓名\"\n , \"empAddress\": \"地址\"\n , \"pensionRate\": \"退休金率\"\n , \"seniorityY\": \"年资(Y)\"\n , \"seniorityM\": \"年资(M)\"\n , \"seniorityMTotal\": \"总年资(M)\"\n , \"empPhone\": \"电话\"\n , \"companyId\": \"公司\"\n , \"companyName\": \"公司\"\n , \"empSID\": \"身分证号\"\n , \"empAccount\": \"帐号\"\n , \"email\": \"email\"\n , \"gender\": \"性别\"\n , \"genderText\": \"性别\"\n , \"dateBirth\": \"生日\"\n , \"dateQuit\": \"离职日\"\n , \"dateHire\": \"雇用日\"\n , \"dateCreate\": \"资料创建日\"\n , \"ExemptClock\": \"需要打卡\"\n , \"ExemptClockText\": \"需要打卡\"\n\n //CompanyTable\n , \"CompanyTable\": \"公司列表\"\n , \"companyName\": \"公司名称\"\n , \"taxNumber\": \"税号\"\n , \"address\": \"地址\"\n , \"prefixTitle\": \"前缀\"\n , \"ZipCode\": \"邮编\"\n ////ShiftsTable\n , \"ShiftsTable\": \"班别设定\"\n , \"sqShift\": \"班别\"\n , \"shiftsName\": \"班别名称\"\n , \"WorkTimeStart\": \"上班时间\"\n , \"WorkTimeEnd\": \"下班时间\"\n , \"RestTimeStart\": \"休息开始\"\n , \"RestTimeEnd\": \"休息结束\"\n , \"workhours\": \"工时\"\n //WageTypeTable\n , \"WageTypeTable\": \"薪资类型表\"\n , \"name\": \"名称\"\n , \"kind\": \"类型\"\n , \"DateAdd\": \"新增日期\"\n , \"currencyId\": \"币别\"\n , \"amount\": \"金额\"\n , \"wageStructure\": \"薪资结构\"\n , \"wageHistory\": \"历史薪资\"\n //empInsurance\n , \"subSq\": \"No.\"\n , \"salaryRank\": \"薪水级距\"\n , \"labourInsurance\": \"劳保(个人)\"\n , \"labourInsuranceEntity\": \"劳保(企业)\"\n , \"healthCare\": \"健保(个人)\"\n , \"healthCareEntity\": \"健保(企业)\"\n , \"year\": \"Year\"\n , \"DateFrom\": \"起始日\"\n , \"DateTo\": \"结束日\"\n , \"local\": \"区域\"\n //LeaveTypeContainer\n , \"LeaveTypeContainer\": \"LeaveTypeContainer\"\n , \"sqLeaveType\": \"假别类别\"\n , \"LeaveTypeName\": \"假别类别\"\n , \"empId_applicant\": \"申请人\"\n , \"LeaveApplicantName\": \"申请人\"\n , \"empId_substitute\": \"代理人\"\n , \"LeaveSubstituteName\": \"代理人\"\n , \"dateFrom\": \"起始日期\"\n , \"dateTo\": \"结束日期\"\n , \"hours\": \"请假时数\"\n , \"checkType\": \"签核状态\"\n , \"CheckTypeName\": \"签核状态\"\n , \"leaveDescription\": \"说明\"\n\n //roles\n ,\"RolesSetting\":\"角色设定\"\n ,\"rolesName\":\"角色名称\"\n //Attendance\n ,\"AttendanceUploadTitle\":\"出勤上传\"\n ,\"isUpload\":\"是否上传\"\n ,\"AttendanceRecordTitle\":\"出勤纪录\"\n ,\"everyday\":\"日期\"\n ,\"AttendanceStatus\":\"出勤状况\"\n ,\"isWorkday\":\"上班日\"\n ,\"clockDate\":\"打卡日期\"\n ,\"startTime\":\"上班打卡时间\"\n ,\"endTime\":\"下班打卡时间\"\n ,\"manualStartTime\":\"手动上班时间\"\n ,\"manualEndTime\":\"手动下班时间\"\n //AttendanceAdjust\n , \"AttendanceAdjustEmpTitle\": \"出勤人员\"\n , \"PersonalAttendanceAdjustTitle\": \"出勤时数\"\n , \"WorkOwedHours\": \"积欠小时\"\n , \"WorkOverTime\": \"加班小时\"\n , \"manualWorkOwedHours\": \"修正请假时数\"\n , \"manualWorkOverTime\": \"修正加班时数\"\n , \"AdjustConfirm\": \"调整确认\"\n , \"AdjustDelete\": \"删除调整\"\n , \"AdjustTextNotConfirm\": \"未确认调整\"\n , \"AdjustTextConfirmed\": \"确认调整时间:\"\n //WageCalculatorTable\n , \"WageCalculatorTitle\": \"薪资计算表\"\n , \"BasicAmt\": \"薪资\"\n , \"workOverTime133\": \"加班时数(一皆)\"\n , \"workOverTime166\": \"加班时数(二皆)\"\n , \"overtimeExpenses\": \"加班费\"\n , \"workOwedTime\": \"请假/迟到时数\"\n , \"owedExpenses\": \"请假/迟到扣薪\"\n , \"totalSalary\": \"总薪资\"\n , \"levelRank\": \"投保级距\"\n , \"selfSaving\": \"员工自提\"\n , \"pensionEntity\": \"退休金\"\n , \"actualSalary\": \"实付薪资\"\n , \"actualSalaryWithBonus\": \"实付薪资(含奖金)\"\n , \"manualBonus01\": \"奖金(一)\"\n , \"manualBonus02\": \"奖金(二)\"\n , \"manualBonus03\": \"奖金(三)\"\n , \"setAllmanualBonus01\": \"设定全奖金(一)\"\n , \"setAllmanualBonus02\": \"设定全奖金(二)\"\n , \"setAllmanualBonus03\": \"设定全奖金(三)\"\n\n //JobsType\n ,\"sqJobsType\":\"NO.\"\n ,\"JobsTypeName\":\"工作性质\"\n //CalendarTable\n ,\"holidayDescription\":\"描述\"\n ,\"multiplierRate\":\"系数\"\n ,\"DateRest\":\"日期\"\n\n};\nexport default zh_cn;","//大小寫需一致\nconst ja_JP = { 'app.learn': '学び {name}',\n\"app.Salmon\":\"{name} イカ\" ,\n\"app.loginMessage\":\"アカウントとパスワードを入力してください\",\n\"username\":\"アカウント\",\n\"password\":\"パスワード\"\n,\"app.Languages\": \"言語\"\n,\"app.Colors\": \"色\"\n};\nexport default ja_JP;","import axios from \"axios\";\nimport _ from 'lodash';\n\nconst R = require(\"ramda\");\n\nconst ArrayToObject = props => {\n return { ...props };\n};\n\n//const ObjectToArray = obj => Object.keys(obj).map(k => obj[k]);\nconst ObjectToArray = obj => R.values(obj);\n\nconst ObjectToArray0 = obj => obj[Object.keys(obj)[0]];\nconst ObjectToArray1 = obj => obj[Object.keys(obj)[1]];\nconst ArrayObject0ToArray = arr => {\n return R.map(ObjectToArray0, arr);\n};\nconst ArrayObject1ToArray = arr => {\n return R.map(ObjectToArray1, arr);\n};\nconst ArrayObjectToArray = arr => {\n return R.map(ObjectToArray, arr);\n};\nconst ArrayRemoveByIndex = (arr, index) => {\n return [...arr.slice(0, index), ...arr.slice(index + 1)];\n};\n\nlet testurl = \"https://localhost:44311\"; //測試用1\n\nconst envPublicUrl = process.env.PUBLIC_URL;\n// let iisurl = envPublicUrl.replace(\"/react\", \"/LH\");\n\nlet iisurl2 = \"https://localhost:80/questionaire\"; //測試用2\nconst iisurl = \"https://mj.mornjoy.com.tw/exportexcel\";\n\nfunction ccyFormat2(num) {\n if (isNaN(num)) {\n //非數字的話,則直接返回\n return num;\n } else {\n //若為數字則保留兩位\n return `${Number(num).toLocaleString(undefined, {\n minimumFractionDigits: 2\n })}`;\n }\n}\n//顯示千分位\nfunction ccyFormat(num, decimal) {\n if (isNaN(num)) {\n //非數字的話,則直接返回\n return num;\n } else {\n //若為數字則保留兩位\n return `${Number(num).toLocaleString(undefined, {\n minimumFractionDigits: decimal\n })}`;\n }\n}\nfunction dateFormat(json) {\n if (json === undefined) {\n return \"\";\n } else if (json === null) {\n return \"\";\n } else {\n let date = new Date(json);\n return [date.getFullYear(), date.getMonth() + 1, date.getDate()].join(\"-\");\n }\n}\n\nfunction timeFormat(json) {\n if (json === undefined) {\n return \"\";\n } else if (json === null) {\n return \"\";\n } else {\n let date = new Date(json);\n return [date.getHours(), date.getMinutes(), date.getSeconds()].join(\":\");\n }\n}\n\nfunction NumAdd(accumulator, a) {\n if (!isNaN(a)) {\n //先檢查是否為數字\n return accumulator + parseFloat(a); //將字串轉換為數字\n } else {\n return accumulator;\n }\n}\n//\nfunction returnToken() {\n return sessionStorage.token;\n}\nvar instance = axios.create({\n // timeout: 1000, //暫不設置timeout\n async: true,\n crossDomain: true,\n headers: {\n //\"Access-Control-Allow-Origin\": \"*\",\n \"Content-Type\": \"application/x-www-form-urlencoded;charset=utf-8\",\n \"X-Requested-With\": \"XMLHttpRequest\", //for MVC Request.IsAjaxRequest()\n //\"Access-Control-Expose-Headers\":\"token\",\n //\"Content-Type\": \"text/plain;charset=utf-8\",\n // token: () => {\n // return sessionStorage.token;\n // } //夾帶token\n }\n});\nfunction get_browser() {\n var ua = navigator.userAgent, tem,\n M = ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i) || [];\n\n if (/trident/i.test(M[1])) {\n tem = /\\brv[ :]+(\\d+)/g.exec(ua) || [];\n return { name: 'IE', version: (tem[1] || '') };\n }\n if (M[1] === 'Chrome') {\n tem = ua.match(/\\bOPR\\/(\\d+)/)\n\n if (tem != null) {\n return { name: 'Opera', version: tem[1] };\n }\n }\n\n M = M[2] ? [M[1], M[2]] : [navigator.appName, navigator.appVersion, '-?'];\n if ((tem = ua.match(/version\\/(\\d+)/i)) != null) {\n M.splice(1, 1, tem[1]);\n }\n\n return {\n browserName: M[0],\n browserVersion: M[1],\n dateLog: new Date().toLocaleString()\n };\n}\nfunction get_ip() {\n //var self=this;\n return axios({\n method: \"get\",\n url: \"https://ipapi.co/json/\"\n //data: Qs.stringify(user)\n })\n .then(response => {\n return response.data;\n })\n}\n//react-datasheet的資料格式每一個cell={value: 內容}\n//react-datasheet的資料格式每一個cell={value: 內容}\nlet dataSheetGridFormat = (rows, columns) => {\n\n return [].concat(rows).map(obj => {\n\n return columns.map(key => {\n\n if (!_.isNil(obj[key]))\n\n\n return { value: obj[key] };\n }\n )\n });\n};\n//多條件,多值篩選,不支援like\n//filters為一個物件\n//Example\n// var filters = {\n// name:['Leila', 'Jay'],\n// age:[]\n// }\nlet multiFilter = (array, filters) => {\n const filterKeys = Object.keys(filters);\n // filters all elements passing the criteria\n return array.filter(item => {\n // dynamically validate all filter criteria\n return filterKeys.every(key => {\n //ignore when the filter is empty Anne\n if (!filters[key].length) return true;\n return !!~filters[key].indexOf(item[key]);\n // return ~filters[key].indexOf(item[key]);\n });\n });\n};\nlet deepClone = obj => {\n return JSON.parse(JSON.stringify(obj));\n};\nlet eitherList = R.reduce(R.either, R.isNil);\nfunction swapArrayLocs(arr, index1, index2) {\n // console.log(arr)\n var temp = arr[index1];\n arr[index1] = arr[index2];\n arr[index2] = temp;\n return arr;\n}\n\nfunction dataFactory() {\n const rows = [];\n for (let i = 0; i < 10000; i++) {\n rows.push([]);\n for (let j = 0; j < 6; j++) {\n rows[i].push({\n value: `${i} - ${j}`\n });\n }\n }\n return rows;\n}\n\nlet getWorkRange = (worktime) => {\n // console.log(worktime);\n let getWorkTimeStart = new Date(\"2020/1/1 \" + worktime[0].WorkTimeStart);\n let getWorkTimeEnd = new Date(\"2020/1/1 \" + worktime[0].WorkTimeEnd);\n let getRestTimeStart = new Date(\"2020/1/1 \" + worktime[0].RestTimeStart);\n let getRestTimeEnd = new Date(\"2020/1/1 \" + worktime[0].RestTimeEnd);\n\n //let isSameTime=+getRestTimeStart===+getRestTimeEnd //若相等,只有時段一\n // if(isSameTime){\n // //時段一開始\n // let timeRange1Start = getWorkTimeStart;\n // let timeRange1End = getWorkTimeEnd;\n // return ({\n // timeRange1Start,\n // timeRange1End\n // });\n // }else{\n //若不相等\n //時段一開始\n let timeRange1Start = getWorkTimeStart\n let timeRange1End = getRestTimeStart\n //時段二開始\n let timeRange2Start = getRestTimeEnd\n let timeRange2End = getWorkTimeEnd\n return ({\n timeRange1Start,\n timeRange1End,\n timeRange2Start,\n timeRange2End\n });\n // }\n}\nlet isSameDate = (datetime1, datetime2) => {\n //判斷是否為同一天\n let date1Today = new Date(datetime1.getFullYear(), datetime1.getMonth(), datetime1.getDate())\n let date2Today = new Date(datetime2.getFullYear(), datetime2.getMonth(), datetime2.getDate())\n\n return +date1Today === +date2Today;\n}\n\nconst calculateHours = (datetime1, datetime2, workRange, worktime, leaveRange) => {\n let hours = 0;\n // console.log(leaveRange);\n // console.log(leaveRange[0].isWorkday);\n\n if (isSameDate(datetime1, datetime2)) {\n //若同一天\n //前提:休息時間一定要落在工作時間內\n //08:00-14:00\n //11:00-18:00\n //改成今日\n let today = deepClone(workRange);\n // console.log(today)\n let { today_timeRange1Start = new Date(today.timeRange1Start),\n today_timeRange1End = new Date(today.timeRange1End),\n today_timeRange2Start = new Date(today.timeRange2Start),\n today_timeRange2End = new Date(today.timeRange2End) } = { ...today }\n //設定日期-Year\n today_timeRange1Start.setFullYear(datetime1.getFullYear());\n today_timeRange1End.setFullYear(datetime1.getFullYear());\n today_timeRange2Start.setFullYear(datetime1.getFullYear());\n today_timeRange2End.setFullYear(datetime1.getFullYear());\n //設定日期-Month\n today_timeRange1Start.setMonth(datetime1.getMonth());\n today_timeRange1End.setMonth(datetime1.getMonth());\n today_timeRange2Start.setMonth(datetime1.getMonth());\n today_timeRange2End.setMonth(datetime1.getMonth());\n //設定日期-Date\n today_timeRange1Start.setDate(datetime1.getDate());\n today_timeRange1End.setDate(datetime1.getDate());\n today_timeRange2Start.setDate(datetime1.getDate());\n today_timeRange2End.setDate(datetime1.getDate());\n\n ////輸入參數,workrange、 datetime1、 datetime2\n //let {timeRange1Start,timeRange1End,timeRange2Start,timeRange2End} = workRange\n\n //時間比較\n if (datetime1 <= today_timeRange1Start) {\n\n //若過早,重設早上起始時間為datetime1\n datetime1 = today_timeRange1Start;\n } else if (datetime1 >= today_timeRange2Start) {\n //若起始是在下午,重設時間下午起始時段為datetime1\n today_timeRange2Start = datetime1;\n }\n\n if (datetime2 >= today_timeRange2End) {\n //重設時間,若過晚\n datetime2 = today_timeRange2End\n } else if (datetime2 <= today_timeRange1End) {\n //重設時間,若結束是在早上\n today_timeRange1End = datetime2\n }\n\n\n\n\n let hoursRange1 = (today_timeRange1End - datetime1) / 3.6e6\n let hoursRange2 = (datetime2 - today_timeRange2Start) / 3.6e6\n // console.log(hoursRange1<0?0:hoursRange1);\n // console.log(hoursRange2<0?0:hoursRange2);\n hours = ((hoursRange1 < 0 ? 0 : hoursRange1) + (hoursRange2 < 0 ? 0 : hoursRange2)) * leaveRange[0].isWorkday;\n // console.log(hours);\n //如果 datetime1<=timeRange1Start且datetime2>=timeRange2End ,則計算 timeRange1Start~timeRange1End+timeRange2Start~timeRange2End\n //如果 datetime1<=timeRange1Start且timeRange1End<=datetime2<=timeRange2End ,則計算 timeRange1Start~timeRange1End+timeRange2Start~timeRange2End\n //如果 timeRange1Start <= datetime1<= timeRange1End ,則datetime1起始,timeRange1End結束 加上 timeRange2Start起始,比較datetime2結束\n //如果 timeRange1End<=datetime1<=timeRange2Start ,則改為 timeRange2Start\n //如果 timeRange2Start<=datetime1<=timeRange2End ,則改為 datetime1~timeRange2End或datetime1\n return hours;\n } else {\n //不同天\n let date1Today = new Date(datetime1.getFullYear(), datetime1.getMonth(), datetime1.getDate())\n let date2Today = new Date(datetime2.getFullYear(), datetime2.getMonth(), datetime2.getDate())\n // let days =Math.ceil((date2Today - date1Today) / (3.6e6*24)); //總小時\n // console.log(days);\n //取得time\n //let Firstday_timeRange1Start;\n\n const First = deepClone(workRange);\n let { Firstday_timeRange1Start = new Date(First.timeRange1Start),\n Firstday_timeRange1End = new Date(First.timeRange1End),\n Firstday_timeRange2Start = new Date(First.timeRange2Start),\n Firstday_timeRange2End = new Date(First.timeRange2End)\n } = { ...First };\n // const {Firstday_timeRange1Start,Firstday_timeRange1End,Firstday_timeRange2Start,Firstday_timeRange2End} =First\n // let Firstday_timeRange1Start=workRange.timeRange1Start;\n // let Firstday_timeRange1End=workRange.timeRange1End;\n // let Firstday_timeRange2Start=workRange.timeRange2Start;\n // let Firstday_timeRange2End=workRange.timeRange2End;\n //設定日期-Year\n Firstday_timeRange1Start.setFullYear(datetime1.getFullYear());\n Firstday_timeRange1End.setFullYear(datetime1.getFullYear());\n Firstday_timeRange2Start.setFullYear(datetime1.getFullYear());\n Firstday_timeRange2End.setFullYear(datetime1.getFullYear());\n //設定日期-Month\n Firstday_timeRange1Start.setMonth(datetime1.getMonth());\n Firstday_timeRange1End.setMonth(datetime1.getMonth());\n Firstday_timeRange2Start.setMonth(datetime1.getMonth());\n Firstday_timeRange2End.setMonth(datetime1.getMonth());\n //設定日期-Date\n Firstday_timeRange1Start.setDate(datetime1.getDate());\n Firstday_timeRange1End.setDate(datetime1.getDate());\n Firstday_timeRange2Start.setDate(datetime1.getDate());\n Firstday_timeRange2End.setDate(datetime1.getDate());\n\n //取得time\n const Last = deepClone(workRange);\n // console.log(Last);\n let { Lastday_timeRange1Start = new Date(Last.timeRange1Start),\n Lastday_timeRange1End = new Date(Last.timeRange1End),\n Lastday_timeRange2Start = new Date(Last.timeRange2Start),\n Lastday_timeRange2End = new Date(Last.timeRange2End)\n } = Last;\n\n // let Lastday_timeRange1Start=workRange.timeRange1Start;\n // let Lastday_timeRange1End=workRange.timeRange1End;\n // let Lastday_timeRange2Start=workRange.timeRange2Start;\n // let Lastday_timeRange2End=workRange.timeRange2End;\n //設定日期\n Lastday_timeRange1Start.setFullYear(datetime2.getFullYear());\n Lastday_timeRange1End.setFullYear(datetime2.getFullYear());\n Lastday_timeRange2Start.setFullYear(datetime2.getFullYear());\n Lastday_timeRange2End.setFullYear(datetime2.getFullYear());\n\n Lastday_timeRange1Start.setMonth(datetime2.getMonth());\n Lastday_timeRange1End.setMonth(datetime2.getMonth());\n Lastday_timeRange2Start.setMonth(datetime2.getMonth());\n Lastday_timeRange2End.setMonth(datetime2.getMonth());\n\n Lastday_timeRange1Start.setDate(datetime2.getDate());\n Lastday_timeRange1End.setDate(datetime2.getDate());\n Lastday_timeRange2Start.setDate(datetime2.getDate());\n Lastday_timeRange2End.setDate(datetime2.getDate());\n\n // console.log(datetime1,\"datetime1\")\n // console.log(Firstday_timeRange1Start,\"Firstday_timeRange1Start\")\n if (datetime1 <= Firstday_timeRange1Start) {\n //重設時間,若過早\n datetime1 = Firstday_timeRange1Start;\n } else if (datetime1 >= Firstday_timeRange2Start) {\n //重設時間,若起始是在下午 \n Firstday_timeRange2Start = datetime1\n }\n\n if (datetime2 >= Lastday_timeRange2End) {\n //重設時間,若過晚\n datetime2 = Lastday_timeRange2End\n } else if (datetime2 <= Lastday_timeRange1End) {\n //重設時間,若結束是在早上 \n Lastday_timeRange1End = datetime2\n }\n\n // console.log(datetime1,\"datetime1\")\n let FirstDayhoursRange1 = (Firstday_timeRange1End - datetime1) / 3.6e6\n // console.log(FirstDayhoursRange1,\"FirstDayhoursRange1\");\n let FirstDayhoursRange2 = (Firstday_timeRange2End - Firstday_timeRange2Start) / 3.6e6\n let FirstdayHours = ((FirstDayhoursRange1 < 0 ? 0 : FirstDayhoursRange1) + (FirstDayhoursRange2 < 0 ? 0 : FirstDayhoursRange2)) * leaveRange[0].isWorkday;\n // console.log(FirstdayHours);\n let LastDayhoursRange1 = (Lastday_timeRange1End - Lastday_timeRange1Start) / 3.6e6\n let LastDayhoursRange2 = (datetime2 - Lastday_timeRange2Start) / 3.6e6\n let LastdayHours = ((LastDayhoursRange1 < 0 ? 0 : LastDayhoursRange1) + (LastDayhoursRange2 < 0 ? 0 : LastDayhoursRange2)) * leaveRange[leaveRange.length - 1].isWorkday;\n // console.log(LastdayHours);\n // console.log((days-1)*worktime[0].workhours);\n leaveRange.splice(0, 1) //去頭\n leaveRange.splice(leaveRange.length - 1, 1) //去尾\n let intermediateHours = leaveRange.reduce(function (acc, obj) { return acc + obj.shouldHours; }, 0); //中間工作小時加總\n\n hours = intermediateHours + FirstdayHours + LastdayHours;\n // console.log(hours);\n\n return hours;\n //相差天數<=1\n //8*相差天數-1+第一天+最後一天\n //相差天數>=2\n //8*相差天數-1+第一天+最後一天\n\n }\n}\n\n\n\nconst publicFunction = {\n //attribute\n testurl: testurl, //VS2015直接建置\n iisurl: iisurl, // 晨悅https\n iisurl2: iisurl2, //IIS-開發\n //統一變動窗口\n get url() {\n let isHttps = window.location.protocol.slice(0, -1)\n // console.log(isHttps)\n // console.log(window.location.host)\n\n if (window.location.host === 'localhost:3000') {\n return this.testurl\n } else {\n return isHttps === 'https' ? \"https://mj.mornjoy.com.tw/exportexcel\" : \"http://mj.mornjoy.com.tw/exportexcel\";\n\n }\n },\n instance: instance,\n get_browser: get_browser,\n get_ip: get_ip,\n //function\n ArrayToObject: ArrayToObject,\n ObjectToArray: ObjectToArray,\n ObjectToArray0: ObjectToArray0,\n ArrayObject0ToArray: ArrayObject0ToArray,\n ArrayObject1ToArray: ArrayObject1ToArray,\n ArrayObjectToArray: ArrayObjectToArray,\n ArrayRemoveByIndex: ArrayRemoveByIndex,\n dateFormat: dateFormat,\n timeFormat: timeFormat,\n ccyFormat2: ccyFormat2,\n ccyFormat: ccyFormat,\n NumAdd: NumAdd,\n dataSheetGridFormat: dataSheetGridFormat,\n multiFilter: multiFilter,\n deepClone: deepClone,\n eitherList: eitherList,\n returnToken: returnToken,\n getWorkRange: getWorkRange,\n isSameDate: isSameDate,\n calculateHours: calculateHours,\n swapArrayLocs: swapArrayLocs,\n};\n\nexport default publicFunction;\n","export default __webpack_public_path__ + \"static/media/clickdown.4efde20a.wav\";","import React from 'react';\nimport Button from '@material-ui/core/Button';\nimport GridContainer from \"../components/Grid/GridContainer\";\nimport GridItem from \"../components/Grid/GridItem\";\nimport ListItem from \"@material-ui/core/ListItem\";\nimport _, { omit, pick, round, slice } from 'lodash';\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\nimport { FormControl, FormLabel, FormHelperText, Paper, Chip, Card, CardHeader, CardMedia, CardContent, CardActions, Avatar } from '@material-ui/core';\nimport { actions } from \"../reducers/app\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport PF from \"../_Services/publicFunction\";\nimport Radio from '@material-ui/core/Radio';\nimport RadioGroup from '@material-ui/core/RadioGroup';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport Typography from '@material-ui/core/Typography';\nimport Qs from \"qs\";\nimport { makeStyles, withStyles } from '@material-ui/core/styles';\nimport LinearProgress from '@material-ui/core/LinearProgress';\nimport { Bar } from 'react-chartjs-2';\nimport Divider from '@material-ui/core/Divider';\nimport useSound from 'use-sound';\nimport clickdown from '../sounds/clickdown.wav';\nimport clickup from '../sounds/clickdown.wav';\nimport { injectIntl, intlShape, useIntl, FormattedMessage } from 'react-intl';\nimport { useSnackbar } from \"notistack\";\n\nconst BorderLinearProgress = withStyles((theme) => ({\n root: {\n height: 8,\n // borderRadius: 5,\n },\n colorPrimary: {\n //backgroundColor: theme.palette.grey[theme.palette.type === 'light' ? 200 : 700],\n },\n bar: {\n // borderRadius: 5,\n backgroundColor: '#1a90ff',\n },\n}))(LinearProgress);\n\nconst useStyles = makeStyles((theme) => ({\n formControl: {\n margin: theme.spacing(3),\n },\n button: {\n margin: theme.spacing(1, 1, 0, 0),\n },\n root: {\n color: theme.palette.type === \"dark\" ? \"#1a90ff\" : \"#3f51b5\"\n },\n submitButton: {\n width: \"100%\", background: '#2E3B55', fontWeight: \"bold\",\n \"&:hover\": {\n background: '#fffff',\n // color:'#2E3B55'\n }\n },\n root3: {\n // display: 'flex',\n // flexWrap: 'wrap',\n '& > *': {\n margin: theme.spacing(1),\n // width: theme.spacing(16),\n // height: theme.spacing(16),\n },\n },\n\n}));\n\nconst Questionaire67th = props => {\n const intl = useIntl();\n\n const [numerator, setNumerator] = React.useState(0) //ProgressBar分子\n const [denominator, setDenominator] = React.useState(13)//ProgressBar分母\n const transfer = {\n 0: 100,\n 1: 75,\n 2: 50,\n 3: 25,\n 4: 0,\n }\n const transferReverse = {\n 0: 0,\n 1: 25,\n 2: 50,\n 3: 75,\n 4: 100,\n }\n const { handleNext, setActiveStep } = props;\n const classes = useStyles();\n const [playActive] = useSound(\n clickdown,\n { volume: 0.25 }\n );\n const [playOn] = useSound(\n clickup,\n { volume: 0.25 }\n );\n const [uploadFormat, setUpload] = React.useState({\n 0: { BarCodeStr: \"\", QuestionNo: 67, Category: \"填寫前說明\", titleNo: \"\", Title: \"說明:本量表所列舉的問題是為協助您瞭解您的身心適應狀況,請您仔細回想在最近一星期中(包括今天),這些問題使您感到困擾或苦惱的程度,然後圈選一個您認為最能代表您感覺的答案。\", SelectTitle: \"\", Answer: \"\", Other: \"\" },\n 1: { BarCodeStr: \"\", QuestionNo: 67, Category: \"一、個人疲勞\", titleNo: 1, Title: \"你常覺得疲勞嗎?\", SelectTitle: \"○總是 ○常常 ○有時候 ○不常 ○從未或幾乎從未\", Answer: \"\", Other: \"\" },\n 2: { BarCodeStr: \"\", QuestionNo: 67, Category: \"一、個人疲勞\", titleNo: 2, Title: \"你常覺得身體上體力透支嗎?\", SelectTitle: \"○總是 ○常常 ○有時候 ○不常 ○從未或幾乎從未\", Answer: \"\", Other: \"\" },\n 3: { BarCodeStr: \"\", QuestionNo: 67, Category: \"一、個人疲勞\", titleNo: 3, Title: \"你常覺得情緒上心力交瘁嗎?\", SelectTitle: \"○總是 ○常常 ○有時候 ○不常 ○從未或幾乎從未\", Answer: \"\", Other: \"\" },\n 4: { BarCodeStr: \"\", QuestionNo: 67, Category: \"一、個人疲勞\", titleNo: 4, Title: \"你常會覺得,「我快要撐不下去了」嗎?\", SelectTitle: \"○總是 ○常常 ○有時候 ○不常 ○從未或幾乎從未\", Answer: \"\", Other: \"\" },\n 5: { BarCodeStr: \"\", QuestionNo: 67, Category: \"一、個人疲勞\", titleNo: 5, Title: \"你常覺得精疲力竭嗎?\", SelectTitle: \"○總是 ○常常 ○有時候 ○不常 ○從未或幾乎從未\", Answer: \"\", Other: \"\" },\n 6: { BarCodeStr: \"\", QuestionNo: 67, Category: \"一、個人疲勞\", titleNo: 6, Title: \"你常常覺得虛弱,好像快要生病了嗎?\", SelectTitle: \"○總是 ○常常 ○有時候 ○不常 ○從未或幾乎從未\", Answer: \"\", Other: \"\" },\n 7: { BarCodeStr: \"\", QuestionNo: 67, Category: \"二、工作疲勞\", titleNo: 1, Title: \"你的工作會令人情緒上心力交瘁嗎?\", SelectTitle: \"○很嚴重 ○嚴重 ○有一些 ○輕微 ○非常輕微\", Answer: \"\", Other: \"\" },\n 8: { BarCodeStr: \"\", QuestionNo: 67, Category: \"二、工作疲勞\", titleNo: 2, Title: \"你的工作會讓你覺得快要累垮了嗎?\", SelectTitle: \"○很嚴重 ○嚴重 ○有一些 ○輕微 ○非常輕微\", Answer: \"\", Other: \"\" },\n 9: { BarCodeStr: \"\", QuestionNo: 67, Category: \"二、工作疲勞\", titleNo: 3, Title: \"你的工作會讓你覺得挫折嗎?\", SelectTitle: \"○很嚴重 ○嚴重 ○有一些 ○輕微 ○非常輕微\", Answer: \"\", Other: \"\" },\n 10: { BarCodeStr: \"\", QuestionNo: 67, Category: \"二、工作疲勞\", titleNo: 4, Title: \"工作一整天之後,你覺得精疲力竭嗎?\", SelectTitle: \"○總是 ○常常 ○有時候 ○不常 ○從未或幾乎從未\", Answer: \"\", Other: \"\" },\n 11: { BarCodeStr: \"\", QuestionNo: 67, Category: \"二、工作疲勞\", titleNo: 5, Title: \"上班之前只要想到又要工作一整天,你就覺得沒力嗎?\", SelectTitle: \"○總是 ○常常 ○有時候 ○不常 ○從未或幾乎從未\", Answer: \"\", Other: \"\" },\n 12: { BarCodeStr: \"\", QuestionNo: 67, Category: \"二、工作疲勞\", titleNo: 6, Title: \"上班時你會覺得每一刻都很難熬嗎?\", SelectTitle: \"○總是 ○常常 ○有時候 ○不常 ○從未或幾乎從未\", Answer: \"\", Other: \"\" },\n 13: { BarCodeStr: \"\", QuestionNo: 67, Category: \"二、工作疲勞\", titleNo: 7, Title: \"不工作的時候,你有足夠的精力陪朋友或家人嗎?\", SelectTitle: \"○總是 ○常常 ○有時候 ○不常 ○從未或幾乎從未\", Answer: \"\", Other: \"\" },\n 14: { BarCodeStr: \"\", QuestionNo: 67, Category: \"三、計分方式\", titleNo: 1, Title: \"『總是』表示100分 ;『常常』表示75分 ;『有時候』表示50分 ;『不常』表示25分;『幾乎從未』表示0分\", SelectTitle: \"\", Answer: \"\", Other: \"\" },\n 15: { BarCodeStr: \"\", QuestionNo: 67, Category: \"三、計分方式\", titleNo: 2, Title: \"個人相關過勞分數,將第 1~6 題的得分相加,除以 6,可得個人相關過勞分數:\", SelectTitle: \"_分\", Answer: \"\", Other: \"\" },\n 16: { BarCodeStr: \"\", QuestionNo: 67, Category: \"三、計分方式\", titleNo: 3, Title: \"工作相關過勞分數,將第 1~6 題的得分與題7分數轉換相加,除以7,可得工作相關過勞分數:\", SelectTitle: \"_分\", Answer: \"\", Other: \"\" },\n 17: { BarCodeStr: \"\", QuestionNo: 67, Category: \"四、分數解釋\", titleNo: 1, Title: \"個人相關過勞分數50 分以下,等級:輕微\", SelectTitle: \"您的過勞程度輕微,您並不常感到疲勞、體力透支、精疲力竭、或者虛弱好像快生病的樣子。\", Answer: \"\", Other: \"\" },\n 18: { BarCodeStr: \"\", QuestionNo: 67, Category: \"四、分數解釋\", titleNo: 2, Title: \"個人相關過勞分數50 -70分,等級:中度\", SelectTitle: \"你的個人過勞程度中等。您有時候感到疲勞、體力透支、精疲力竭、或者虛弱好像快生病的樣子。建議您找出生活的壓力源,進一步的調適自己,增加放鬆與休息的時間。\", Answer: \"\", Other: \"\" },\n 19: { BarCodeStr: \"\", QuestionNo: 67, Category: \"四、分數解釋\", titleNo: 3, Title: \"個人相關過勞分數70 分以上,等級:嚴重\", SelectTitle: \"您的個人過勞程度嚴重。您時常感到疲勞、體力透支、精疲力竭、或者虛弱好像快生病的樣子。建議您適度的改變生活方式,增加運動與休閒時間之外,您還需要進一步尋找專業人員諮詢。\", Answer: \"\", Other: \"\" },\n 20: { BarCodeStr: \"\", QuestionNo: 67, Category: \"四、分數解釋\", titleNo: 4, Title: \"工作相關過勞分數45 分以下,等級:輕微\", SelectTitle: \"您的工作相關過勞程度輕微,您的工作並不會讓您感覺很沒力、心力交瘁、很挫折。\", Answer: \"\", Other: \"\" },\n 21: { BarCodeStr: \"\", QuestionNo: 67, Category: \"四、分數解釋\", titleNo: 5, Title: \"工作相關過勞分數45 -60分,等級:中度\", SelectTitle: \"您的工作相關過勞程度中等,您有時對工作感覺沒力,沒有興趣,有點挫折。\", Answer: \"\", Other: \"\" },\n 22: { BarCodeStr: \"\", QuestionNo: 67, Category: \"四、分數解釋\", titleNo: 6, Title: \"工作相關過勞分數60 分以上,等級:嚴重\", SelectTitle: \"您的工作相關過勞程度嚴重,您已經快被工作累垮了,您感覺心力交瘁,感覺挫折,而且上班時都很難熬,此外您可能缺少休閒時間,沒有時間陪伴家人朋友。建議您適度的改變生活方式,增加運動與休閒時間之外,您還需要進一步尋找專業人員諮詢。\", Answer: \"\", Other: \"\" },\n });\n const [done, setDone] = React.useState(false);\n const formRef = React.createRef();\n const dispatch = useDispatch();\n const { UserInfo } = useSelector(state => ({\n UserInfo: state.app.UserInfo,\n }));\n React.useEffect(() => {\n //寫入BarCodeStr\n let obj = Object.values(uploadFormat).reduce((o, { }, index) => {\n o[index] = { BarCodeStr: UserInfo.BarCodeStr }\n return o\n }, {})\n let newitem = _.merge(uploadFormat, obj);\n // console.log(newitem)\n setUpload(prevState => newitem);\n }, [])\n const handleSubmit = e => {\n e.preventDefault();\n //寫上分數\n\n //setError(!error);\n if (validator()) {\n\n\n dispatch(actions.TAB_EDIT({ editing: true, key: 67 }))\n PF.instance({\n method: \"post\",\n url: PF.url + \"/Questionaire/Insert\",\n data: Qs.stringify({ list: Object.values(uploadFormat) }),\n headers: { token: sessionStorage.token }\n })\n .then(function (response) {\n console.log(response.data)\n const { TotalRecord, ErrorMessage } = response.data\n if (TotalRecord <= 0) {\n alert(\"問卷提交出錯\\r\\n\" + ErrorMessage + \"請致電 04-2255-2555 #168 企業健檢\")\n enqueueSnackbar(intl.formatMessage({ id: \"update fail\" }), { variant: \"error\", style: { whiteSpace: 'pre-line' } });\n } else {\n setActiveStep((prevActiveStep) => prevActiveStep + 1);\n setDone(true);\n enqueueSnackbar(intl.formatMessage({ id: \"update success\" }), { variant: \"success\", style: { whiteSpace: 'pre-line' } });\n }\n })\n }\n }\n const { enqueueSnackbar } = useSnackbar();\n\n const validator = () => {\n const form = formRef.current; //參數1\n if (form.checkValidity()) {\n // console.log(\"全部通過\")\n //若驗證通過,刪除錯誤提示\n for (let i = 0; i < form.elements.length; i++) {\n const element = form.elements[i];\n\n if (Object.keys(uploadFormat).includes(element.name)) {\n setUpload(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\", \"helperText\"])\n }));\n }\n\n }\n return true;\n } else {\n // const form = formRef.current;\n // console.log(\"還沒通過\")\n alert(intl.formatMessage({ id: \"尚有問題未完成\" }));\n for (let i = 0; i < form.elements.length; i++) {\n const element = form.elements[i];\n if (element.tagName !== 'button' && element.willValidate && !element.validity.valid) { //提交按鈕不用驗證\n console.log(element.validationMessage, element.name);\n console.log(element.value)\n // console.log(element.value, element.validationMessage, element.name, element.tagName)\n if (Object.keys(uploadFormat).includes(element.name)) {\n setUpload(prevState => ({\n ...prevState,\n [element.name]: { ...prevState[element.name], error: true, helperText: element.validationMessage }\n }));\n }\n\n\n } else {//驗證通過,自訂訊息\n //有在settingObj的\n console.log(\"Pass\", element.value, element.validationMessage, element.name, element.tagName)\n if (Object.keys(uploadFormat).includes(element.name)) {\n setUpload(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\", \"helperText\"])\n }));\n }\n\n }\n }\n return false;\n }\n }\n let [obj, setObj] = React.useState({});\n\n const handleRadioChange = e => {\n // e.prevetDefault();\n // console.log(uploadFormat)\n if (!done) {\n const { name, value } = e.target;\n\n let x = e.target.getAttribute(\"data\")\n //分數轉換\n setObj(prev => ({\n ...prev,\n [name]: name >= 13 ? transferReverse[x] : transfer[x]\n }))\n setUpload(prevState => ({\n ...prevState,\n [name]: { ...prevState[name], Answer: value }\n }))\n if (uploadFormat[name].Answer === \"\") {\n // setProgress(prev => prev < 99.97 ? (prev + 7.69) : prev)\n setNumerator(prev => prev + 1)\n }\n }\n }\n const initialRender = React.useRef(true);\n const [scores1, setScores1] = React.useState(0);\n const [scores2, setScores2] = React.useState(0);\n const cal_score = () => {\n //let y = Object.values(obj).slice(1, 6).map((a, b) => (transfer[a.Answer]));\n //let x = Object.values(obj).slice(6, 13).map((a, b) => (transfer[a.Answer]));\n const keys1 = Object.keys(obj).filter(num => parseInt(num) <= 6)\n // console.log(Object.keys(obj))\n\n let acc1 = 0\n keys1.map(k => {\n // console.log(k);\n acc1 += obj[k]\n })\n // console.log(keys1)\n // console.log(acc1/keys1.length)\n setScores1(isNaN(acc1 / keys1.length) ? 0 : Math.round(acc1 / keys1.length));\n\n const keys2 = Object.keys(obj).filter(num => num > 6)\n let acc2 = 0\n keys2.map(k => {\n acc2 += obj[k]\n })\n // console.log(keys2)\n // console.log(acc2/keys2.length)\n setScores2(isNaN(acc2 / keys2.length) ? 0 : Math.round(acc2 / keys2.length));\n // let z = y.reduce((a, b) => a + (b === undefined ? 0 : b), 0);\n // // console.log(z)\n // setScores1(z)\n setUpload(prevState => ({\n ...prevState,\n 15: { ...prevState[15], Other: isNaN(acc1 / keys1.length) ? 0 : Math.round(acc1 / keys1.length) },\n 16: { ...prevState[16], Other: isNaN(acc2 / keys2.length) ? 0 : Math.round(acc2 / keys2.length) },\n }));\n\n\n }\n React.useEffect(() => {\n if (initialRender.current) {\n initialRender.current = false\n } else {\n\n cal_score();\n\n }\n // console.log(\"?\");\n }, [obj])\n\n\n return (\n \n

\n
\n
\n \n \n
\n
\n \n {Object.values(uploadFormat).slice(1, 7).map((item, index) => {\n return (\n \n {item.titleNo + \".\"}\n \n {item.SelectTitle.replaceAll(\"○\", \"\").split(\" \").map((pro, index) => {\n\n return (\n }\n label={}\n onMouseDown={() => { playActive() }}\n />)\n })}\n \n {item.error ? : null}\n )\n })}\n
\n
\n \n {Object.values(uploadFormat).slice(7, 14).map((item, index) => {\n return (\n \n {item.titleNo + \".\"}\n \n {item.SelectTitle.replaceAll(\"○\", \"\").split(\" \").map((pro, index) => {\n return (\n } label={} onMouseDown={() => { playActive() }} />)\n })}\n \n {item.error ? : null}\n )\n })}\n
\n
\n \n \n \n {\"1. \"}\n \n \n
\n \n \n \n } style={{ backgroundColor: _.inRange(scores1, 0, 50) ? \"rgba(75, 192, 192)\" : \"\" }} />\n \n \n \n \n\n \n \n } style={{ backgroundColor: _.inRange(scores1, 50, 70) ? \"rgba(255, 206, 86)\" : \"\" }} />\n \n \n \n \n \n \n } style={{ backgroundColor: _.inRange(scores1, 70, 100.1) ? \"rgba(255, 99, 132)\" : \"\" }} />\n \n \n \n
\n
\n \n \n \n \n \n \n {\"2. \"}\n \n \n
\n \n \n \n } style={{ backgroundColor: _.inRange(scores2, 0, 45) ? \"rgba(75, 192, 192)\" : \"\" }} />\n \n \n \n \n \n \n } style={{ backgroundColor: _.inRange(scores2, 45, 60) ? \"rgba(255, 206, 86)\" : \"\" }} />\n \n \n \n \n \n \n } style={{ backgroundColor: _.inRange(scores2, 60, 100.1) ? \"rgba(255, 99, 132)\" : \"\" }} />\n \n \n \n
\n
\n \n \n \n \n \n
\n
\n
\n \n
\n {!done ? (
\n \n
) : null}\n
\n
\n )\n\n\n\n}\n\nexport default Questionaire67th\n\n\nconst HorizontalBarChart = React.memo((props) => {\n const { score, label, range1, range2 } = props;\n // console.log(\"rerender\")\n const getColor = s => {\n switch (true) {\n case (s < range1):\n return finColor[\"green\"]\n case (s < range2):\n return finColor[\"yello\"]\n case (s <= 100):\n return finColor[\"red\"]\n default:\n console.log(\"none\");\n break;\n }\n }\n const color = {\n red: \"rgba(255, 99, 132,0.2)\",\n orange: \"rgba(255, 159, 64,0.2)\",\n yello: \"rgba(255, 206, 86,0.2)\",\n green: \"rgba(75, 192, 192,0.2)\"\n }\n const finColor = {\n red: \"rgba(255, 99, 132)\",\n orange: \"rgba(255, 159, 64)\",\n yello: \"rgba(255, 206, 86)\",\n green: \"rgba(75, 192, 192)\"\n }\n\n let data = {\n labels: [score],\n datasets: [\n {\n label: label,\n data: [score],\n backgroundColor: [\n getColor(score)\n ],\n\n }\n ],\n };\n\n const options = {\n indexAxis: 'y',\n // Elements options apply to all of the options unless overridden in a dataset\n // In this case, we are setting the border of each horizontal bar to be 2px wide\n elements: {\n bar: {\n // borderWidth: 2,\n },\n },\n scales: {\n x: {\n max: 100,\n min: 0,\n ticks: {\n beginAtZero: true, //整數\n stepSize: 20,\n\n },\n\n },\n y: {\n\n ticks: {\n font: {\n size: 20,\n }\n }\n\n }\n },\n responsive: false,\n plugins: {\n legend: {\n position: 'top',\n },\n // title: {\n // display: true,\n // text: '累計得分',\n // },\n },\n };\n\n\n return (\n \n )\n})\n\n\n","\nimport React, { useRef } from 'react';\n// import './App.css';\n// import Signature from './Signature';\nimport TextField from '@material-ui/core/TextField';\nimport { makeStyles, withStyles } from '@material-ui/core/styles';\nimport Button from '@material-ui/core/Button';\nimport GridContainer from \"../components/Grid/GridContainer\";\nimport GridItem from \"../components/Grid/GridItem\";\nimport FormGroup from '@material-ui/core/FormGroup';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport List from \"@material-ui/core/List\";\nimport ListItem from \"@material-ui/core/ListItem\";\nimport _, { omit, pick, round, slice } from 'lodash';\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\nimport { FormControl, FormLabel, FormHelperText, Paper, useForkRef, Select, InputLabel } from '@material-ui/core';\nimport { MuiPickersUtilsProvider, KeyboardDatePicker, DatePicker, KeyboardDateTimePicker, KeyboardTimePicker } from \"@material-ui/pickers\";\nimport MomentUtils from \"@date-io/moment\";\nimport TodayIcon from \"@material-ui/icons/UpdateOutlined\";\nimport moment from \"moment\";\nimport Typography from '@material-ui/core/Typography';\n// import { PDFDownloadLink, Document, Page,PDFViewer } from '@react-pdf/renderer'\n// import axios from \"axios\";\nimport Qs from \"qs\";\n// import jsPDF from 'jspdf';\n// import html2canvas from \"html2canvas\";\nimport { actions } from \"../reducers/app\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport PF from \"../_Services/publicFunction\";\nimport LinearProgress from '@material-ui/core/LinearProgress';\nimport useSound from 'use-sound';\nimport clickdown from '../sounds/clickdown.wav';\nimport clickup from '../sounds/clickdown.wav';\nimport { useReactToPrint } from 'react-to-print';\nimport ReactToPrint from 'react-to-print';\nimport Questionaire67th from './67th';\nimport { props } from 'ramda';\nimport { injectIntl, intlShape, useIntl, FormattedMessage } from 'react-intl';\nimport { useSnackbar } from \"notistack\";\n\n// import { ComponentToPrint } from './ComponentToPrint';\n\n// var domToPdf = require('dom-to-pdf');\n// const domToImage = require('dom-to-image');\n\n// var instance = axios.create({\n// // timeout: 1000, //暫不設置timeout\n// async: true,\n// crossDomain: true,\n// headers: {\n// \"Content-Type\": \"application/x-www-form-urlencoded;charset=utf-8\",\n// \"X-Requested-With\": \"XMLHttpRequest\", //for MVC Request.IsAjaxRequest()\n// }\n// });\n\nconst ref = React.createRef();\nconst BorderLinearProgress = withStyles((theme) => ({\n root: {\n height: 8,\n // borderRadius: 5,\n },\n colorPrimary: {\n //backgroundColor: theme.palette.grey[theme.palette.type === 'light' ? 200 : 700],\n },\n bar: {\n // borderRadius: 5,\n backgroundColor: '#1a90ff',\n },\n}))(LinearProgress);\n\n\nconst Questionaire66th = React.forwardRef((props, ref) => {\n // const { tabList } = useSelector(state => ({\n // tabList: state.app.tabList,\n // }));\n const intl = useIntl();\n\n const [numerator, setNumerator] = React.useState(0);\n const [denominator, setDenominator] = React.useState(11);\n React.useEffect(() => {\n console.log(\"分子\", numerator);\n }, [numerator])\n React.useEffect(() => {\n console.log(\"分母\", denominator);\n }, [denominator])\n\n\n const dispatch = useDispatch();\n\n const { handleNext, setActiveStep } = props;\n\n const initialRender = React.useRef(true);\n const [imageURL, setImage] = React.useState(null); //提交=>簽名檔img\n // const [open, setOpen] = React.useState(false);\n const [playActive] = useSound(\n clickdown,\n { volume: 0.25 }\n );\n const [playOn] = useSound(\n clickup,\n { volume: 0.25 }\n );\n const [uploadFormat, setUpload] = React.useState({\n 0: { BarCodeStr: \"\", QuestionNo: 66, Category: \"作業經歷\", titleNo: 1, Title: \"\", SelectTitle: \"曾經從事_,起始日期:_年_月,截止日期:_年_月,共_年_月\", Answer: \"\", Other: \"\" },\n 1: { BarCodeStr: \"\", QuestionNo: 66, Category: \"作業經歷\", titleNo: 2, Title: \"\", SelectTitle: \"目前從事_,起始日期:_年_月,截止日期:_年_月,共_年_月\", Answer: \"\", Other: \"\" },\n 2: { BarCodeStr: \"\", QuestionNo: 66, Category: \"作業經歷\", titleNo: 3, Title: \"\", SelectTitle: \"過去1個月,平均每週工時為:_小時;過去6個月,平均每週工時為:_小時\", Answer: \"\", Other: \"\" },\n 3: { BarCodeStr: \"\", QuestionNo: 66, Category: \"作業檢查時期\", titleNo: 1, Title: \"檢查時期(原因)\", SelectTitle: \"□新進員工(受僱時) □定期檢查\", Answer: \"\", Other: \"\" },\n 4: { BarCodeStr: \"\", QuestionNo: 66, Category: \"既往病史\", titleNo: 1, Title: \"您是否曾患有下列慢性疾病:(請在適當項目前打勾)\", SelectTitle: \"□高血壓 □糖尿病 □心臟病 □癌症_ □白內障 □中風 □癲癇 □氣喘 □慢性氣管炎、肺氣腫 □肺結核 □腎臟病 □肝病 □貧血 □中耳炎 □聽力障礙 □甲狀腺疾病 □消化性潰瘍、胃炎 □逆流性食道炎 □骨折_ □手術開刀_ □其他慢性病_ □以上皆無\", Answer: \"\", Other: \"\" },\n 5: { BarCodeStr: \"\", QuestionNo: 66, Category: \"生活習慣\", titleNo: 1, Title: \"請問您過去一個月內是否有吸菸?\", SelectTitle: \"□從未吸菸 □偶爾吸(不是天天) □(幾乎)每天吸,平均每天吸_支,已吸菸_年 □已經戒菸,戒了_年_個月。\", Answer: \"\", Other: \"\" },\n 6: { BarCodeStr: \"\", QuestionNo: 66, Category: \"生活習慣\", titleNo: 2, Title: \"請問您最近六個月內是否有嚼食檳榔?\", SelectTitle: \"□從未嚼食檳榔 □偶爾嚼(不是天天) □(幾乎)每天嚼,平均每天嚼_顆,已嚼_年 □已經戒食,戒了_年_個月。\", Answer: \"\", Other: \"\" },\n 7: { BarCodeStr: \"\", QuestionNo: 66, Category: \"生活習慣\", titleNo: 3, Title: \"請問您過去一個月內是否有喝酒?\", SelectTitle: \"□從未喝酒 □偶爾喝(不是天天) □(幾乎)每天喝,平均每週喝_次,最常喝_酒,每次_瓶 □已經戒酒,戒了_年_個月。\", Answer: \"\", Other: \"\" },\n 8: { BarCodeStr: \"\", QuestionNo: 66, Category: \"生活習慣\", titleNo: 4, Title: \"請問您於工作日期間\", SelectTitle: \"平均每天睡眠時間為:_小時。\", Answer: \"\", Other: \"\" },\n 9: { BarCodeStr: \"\", QuestionNo: 66, Category: \"自覺症狀\", titleNo: 1, Title: \"您最近三個月是否常有下列症狀:(請在適當項目前打勾)\", SelectTitle: \"□咳嗽□咳痰□呼吸困難□胸痛□心悸□頭暈□頭痛 □耳鳴 □倦怠 □噁心 □腹痛 □便秘 □腹瀉 □血便 □上背痛 □下背痛 □手腳麻痛 □關節疼痛 □排尿不適 □多尿、頻尿 □手腳肌肉無力 □體重減輕3公斤以上 □其他症狀_ □以上皆無\", Answer: \"\", Other: \"\" },\n 10: { BarCodeStr: \"\", QuestionNo: 66, Category: \"填表說明\", titleNo: 1, Title: \"請受檢員工於勞工健檢前,填妥基本資料、作業經歷、檢查時期、既往病史、生活習慣及自覺症狀六大項,再交由醫護人員作確認,以有效篩檢出疾病;若事業單位已提供受檢員工基本資料及作業經歷電子檔給指定醫療機構,可不必請受檢員工重複填寫。\", SelectTitle: \"\", Answer: \"\", Other: \"\" },\n 11: { BarCodeStr: \"\", QuestionNo: 66, Category: \"填表說明\", titleNo: 2, Title: \"自覺症狀乙項,請受檢者依自身實際症狀勾選。\", SelectTitle: \"\", Answer: \"\", Other: \"\" },\n });\n // const dispatch = useDispatch();\n const { UserInfo } = useSelector(state => ({\n UserInfo: state.app.UserInfo,\n }));\n const Update66th = () => {\n //section 2 到3\n let y = moment(workExp.usedStart.value + '01日', 'YYYY年MM月DD日')\n let z = moment(workExp.usedEnd.value + '01日', 'YYYY年MM月DD日')\n let M = moment(workExp.rightNowStart.value + '01日', 'YYYY年MM月DD日')\n let N = moment(workExp.rightNowEnd.value + '01日', 'YYYY年MM月DD日')\n\n // console.log(y.year);\n setUpload(prevState => ({\n ...prevState,\n 0: { ...prevState[0], BarCodeStr: UserInfo.BarCodeStr, Other: (workExp.usedJob.value === null ? '' : workExp.usedJob.value) + \"||\" + (workExp.usedStart.value === null ? '' : (y.year() - 1911)) + \"||\" + (workExp.usedStart.value === null ? '' : (y.month() + 1)) + \"||\" + (workExp.usedEnd.value === null ? '' : (z.year() - 1911)) + \"||\" + (workExp.usedEnd.value === null ? '' : (z.month() + 1)) + \"||\" + (workExp.usedPeriod_Y.value === null ? '' : workExp.usedPeriod_Y.value) + \"||\" + (workExp.usedPeriod_M.value === null ? '' : workExp.usedPeriod_M.value) },\n 1: { ...prevState[1], BarCodeStr: UserInfo.BarCodeStr, Other: workExp.rightNowJob.value + \"||\" + (M.year() - 1911) + \"||\" + (M.month() + 1) + \"||\" + (workExp.rightNowEnd.value === null ? '' : (N.year() - 1911)) + \"||\" + (workExp.rightNowEnd.value === null ? '' : (N.month() + 1)) + \"||\" + (workExp.rightNowPeriod_Y.value === null ? '' : workExp.rightNowPeriod_Y.value) + \"||\" + (workExp.rightNowPeriod_M.value === null ? '' : workExp.rightNowPeriod_M.value) },\n 2: { ...prevState[2], BarCodeStr: UserInfo.BarCodeStr, Other: workExp.workhours_1.value + \"||\" + workExp.workhours_2.value },\n 3: { ...prevState[3], BarCodeStr: UserInfo.BarCodeStr, Answer: checked3rd.checkA ? \"新進員工(受僱時) \" : \"定期檢查\" },\n 4: { ...prevState[4], BarCodeStr: UserInfo.BarCodeStr, Answer: fourth.substring(2, 999), Other: fourthTxt.substring(2, 999) },\n 5: { ...prevState[5], BarCodeStr: UserInfo.BarCodeStr, Answer: fiveth_1.substring(2, 999), Other: fiveth_1Txt.substring(2, 999) },\n 6: { ...prevState[6], BarCodeStr: UserInfo.BarCodeStr, Answer: fiveth_2.substring(2, 999), Other: fiveth_2Txt.substring(2, 999) },\n 7: { ...prevState[7], BarCodeStr: UserInfo.BarCodeStr, Answer: fiveth_3.substring(2, 999), Other: fiveth_3Txt.substring(2, 999) },\n 8: { ...prevState[8], BarCodeStr: UserInfo.BarCodeStr, Other: array5thCheck.sleep.value },\n 9: { ...prevState[9], BarCodeStr: UserInfo.BarCodeStr, Answer: Sixth.substring(2, 999), Other: array4thTxtObj.W6.text },\n 10: { ...prevState[10], BarCodeStr: UserInfo.BarCodeStr },\n 11: { ...prevState[11], BarCodeStr: UserInfo.BarCodeStr, },\n }));\n //console.log(uploadFormat);\n //section 4\n let fourth = Object.values(array4th).reduce((a, b) => a + (b.checked ? \"||\" + b.systemLabel : \"\"), \"\");\n let fourthTxt = Object.values(array4thTxtObj).reduce((a, b) => a + (\"||\" + b.text), \"\");\n //section 5\n let fiveth_1 = Object.values(array5_1).reduce((a, b) => a + (b.checked ? \"||\" + b.systemLabel : \"\"), \"\");\n let fiveth_1Txt = Object.values(array5thCheck).slice(1, 5).reduce((a, b) => a + \"||\" + b.value, \"\")\n let fiveth_2 = Object.values(array5_2).reduce((a, b) => a + (b.checked ? \"||\" + b.systemLabel : \"\"), \"\");\n let fiveth_2Txt = Object.values(array5thCheck).slice(6, 10).reduce((a, b) => a + \"||\" + b.value, \"\")\n let fiveth_3 = Object.values(array5_3).reduce((a, b) => a + (b.checked ? \"||\" + b.systemLabel : \"\"), \"\");\n let fiveth_3Txt = Object.values(array5thCheck).slice(11, 16).reduce((a, b) => a + \"||\" + b.value, \"\")\n //setction 6\n let Sixth = Object.values(array6th).reduce((a, b) => a + (b.checked ? \"||\" + b.systemLabel : \"\"), \"\");\n //列印\n // })\n // var doc = new jsPDF();\n // //return pdf; //Duke\n // //var doc = new jsPDF(pdf2);\n // //console.log(pdf);\n // //pdf.name = 'test.pdf'\n\n //var pdf = pdf2.output('blob');\n //pdf.name = 'test.pdf'\n //console.log(pdf);\n // var doc = pdf.output('blob')\n // let data = new FormData();\n // data.append('files', imageURL.getCanvas());\n // //console.log(data);\n // //var doc = btoa(pdf);\n // instance({\n // method: \"post\",\n // url: 'https://localhost:44311' + \"/Questionaire/Upload\",\n // data: data,\n // })\n // .then(function (response) {\n // console.log(response.data)\n // })\n }\n\n React.useEffect(() => {\n if (!initialRender.current) {\n\n PF.instance({\n method: \"post\",\n url: PF.url + \"/Questionaire/Insert\",\n data: Qs.stringify({ list: Object.values(uploadFormat) }),\n headers: { token: sessionStorage.token }\n })\n .then(function (response) {\n // console.log(response.data)\n const { TotalRecord, ErrorMessage } = response.data\n if (TotalRecord <= 0) {\n // alert(\"問卷提交出錯\\r\\n\" + ErrorMessage + \"請致電 04-2255-2555 #168 企業健檢\")\n enqueueSnackbar(intl.formatMessage({ id: \"update fail\" }), { variant: \"error\", style: { whiteSpace: 'pre-line' } });\n } else {\n setActiveStep((prevActiveStep) => prevActiveStep + 1);\n setImage(\"Image\");\n enqueueSnackbar(intl.formatMessage({ id: \"update success\" }), { variant: \"success\", style: { whiteSpace: 'pre-line' } });\n }\n })\n\n }\n }, [uploadFormat]); //避免循環\n\n // React.useEffect(() => {\n // if (initialRender.current) {\n // initialRender.current = false;\n // } else {\n\n // var element = document.getElementById('signature');\n // var options = {\n // filename: uploadFormat[0].BarCodeStr + '.pdf',\n // };\n // // var pdf = new jsPDF();\n\n // domToImage.toBlob(element).then((blob) => {\n // // var image = canvas.toDataURL(\"image/png\");\n // // pdf.addImage(image, 'JPEG', 0, 0);\n // // document.body.appendChild(image)\n // // var pdf2 = pdf.output('blob');\n // let data = new FormData();\n // data.append('files', blob, uploadFormat[0].BarCodeStr + \"-\" + new Date().toISOString().split('T')[0] + '.png')\n // PF.instance({\n // method: \"post\",\n // url: PF.url + \"/Questionaire/Upload\",\n // data: data,\n // headers: { token: sessionStorage.token }\n // })\n // .then(function (response) {\n // // alert(\"完成\")\n // //console.log(response.data)\n // })\n\n // })\n // }\n // }, [imageURL]); //避免循環\n\n\n // const handleChange = e => {\n // if (!_.isNil(imageURL)) {//已提交不得修改\n\n // }\n // }\n // const [recordObj, setObj] = React.useState({\n // name: \"\",\n // id: \"\"\n // });\n\n\n const [array4th, setArray4th] = React.useState({\n A4: { name: \"A4\", label: \"高血壓\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"高血壓 \" }\n , B4: { label: \"糖尿病\", name: \"B4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"糖尿病 \" }\n , C4: { label: \"心臟病\", name: \"C4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"心臟病 \" }\n , E4: { label: \"白內障\", name: \"E4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"白內障 \" }\n , F4: { label: \"中風\", name: \"F4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"中風 \" }\n , G4: { label: \"癲癇\", name: \"G4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"癲癇 \" }\n , H4: { label: \"氣喘\", name: \"H4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"氣喘 \" }\n , I4: { label: \"慢性氣管炎、肺氣腫\", name: \"I4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"慢性氣管炎、肺氣腫 \" }\n // , J4: { label: \"肺氣腫\", name: \"J4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"肺氣腫 \" }\n , K4: { label: \"肺結核\", name: \"K4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"肺結核 \" }\n , L4: { label: \"腎臟病\", name: \"L4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"腎臟病 \" }\n , M4: { label: \"肝病\", name: \"M4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"肝病 \" }\n , N4: { label: \"貧血\", name: \"N4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"貧血 \" }\n , O4: { label: \"中耳炎\", name: \"O4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"中耳炎 \" }\n , P4: { label: \"聽力障礙\", name: \"P4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"聽力障礙 \" }\n , Q4: { label: \"甲狀腺疾病\", name: \"Q4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"甲狀腺疾病 \" }\n , R4: { label: \"消化性潰瘍、胃炎\", name: \"R4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"消化性潰瘍、胃炎 \" }\n , S4: { label: \"逆流性食道炎\", name: \"S4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"逆流性食道炎\" }\n , D4: { label: \"癌症\", name: \"D4\", type: \"chkBoxTxT\", checked: false, gridWid: 6, systemLabel: \"癌症\" }\n , T4: { label: \"骨折\", name: \"T4\", type: \"chkBoxTxT\", checked: false, gridWid: 6, systemLabel: \"骨折\" }\n , V4: { label: \"手術開刀\", name: \"V4\", type: \"chkBoxTxT\", checked: false, gridWid: 6, systemLabel: \"手術開刀\" }\n , U4: { label: \"其他慢性病\", name: \"U4\", type: \"chkBoxTxT\", checked: false, checked: false, gridWid: 6, systemLabel: \"其他慢性病\" }\n , allNone: { label: \"以上皆無\", name: \"allNone\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"以上皆無\" }\n });\n\n const [array4thTxtObj, set4thTxtObj] = React.useState({\n D4: { label: \"癌症\", name: \"D4\", type: \"chkBoxTxT\", checked: false, gridWid: 6, text: \"\" },\n // N4: { label: \"貧血\", name: \"N4\", type: \"chkBoxTxT\", checked: false, gridWid: 6, text: \"\" },\n T4: { label: \"骨折\", name: \"T4\", type: \"chkBoxTxT\", checked: false, gridWid: 6, text: \"\" },\n V4: { label: \"手術開刀\", name: \"V4\", type: \"chkBoxTxT\", checked: false, gridWid: 6, text: \"\" },\n U4: { label: \"其他慢性病\", name: \"U4\", type: \"chkBoxTxT\", checked: false, checked: false, gridWid: 6, text: \"\" },\n W6: { label: \"其他症狀\", name: \"W6\", type: \"chkBoxTxT\", checked: false, checked: false, gridWid: 6, text: \"\" },\n })\n\n const handleChange4th = e => {\n if (_.isNil(imageURL)) { //已提交不得修改\n const { name, checked } = e.target;\n // console.log(e.target);\n if (name === \"allNone\") {\n if (array4th.allNone.checked === false) {\n //其他: 不能勾選,除非allnone不勾\n //移除所以勾勾 \n _.forEach(array4th, function (value, key) {\n setArray4th(prevState => ({\n ...prevState,\n [key]: omit(value, [\"checked\", \"error\"]),\n }));\n });\n //移除所有文字\n _.forEach(array4thTxtObj, function (value, key) {\n if (key !== \"W6\") {\n set4thTxtObj(prevState => ({\n ...prevState,\n [key]: { ...value, text: \"\" }\n }));\n }\n\n });\n\n //自己勾上\n setArray4th(prevState => ({\n ...prevState,\n allNone: { ...prevState[name], checked: checked }\n }));\n } else {\n //自己取消,讓其他可以勾\n setArray4th(prevState => ({\n ...prevState,\n allNone: { ...prevState[name], checked: checked }\n }));\n }\n\n\n } else {\n //其他:不能勾選,除非allnone不勾\n if (array4th.allNone.checked === false) {\n setArray4th(prevState => ({\n ...prevState,\n [name]: {\n ...array4th[name], checked: checked,\n error: checked === false ? false : (prevState[name].error || false)\n }\n }))\n if (Object.keys(array4thTxtObj).includes(name)) {\n if (name !== \"W6\") {\n set4thTxtObj(prevState => ({\n ...prevState,\n [name]: {\n ...prevState[name],\n checked: checked, //也要更新 for資料庫導入格式\n text: checked === false ? \"\" : (prevState[name].text || \"\")\n }\n }))\n }\n\n }\n }\n }\n }\n }\n const handleChangeTxt4th = e => { //第四區塊文字,抽取出來,改動文字不去觸發calculate_4th\n if (_.isNil(imageURL)) { //已提交不得修改\n const { name, value } = e.target;\n set4thTxtObj({\n ...array4thTxtObj,\n [name]: { ...array4thTxtObj[name], text: value }\n })\n }\n }\n const [array4thValidator, set4thValidator] = React.useState({\n pastHistory: { name: \"pastHistory\", checked: false },\n conscious: { name: \"conscious\", checked: false }\n })\n const pastHistoryRef = useRef(null)\n const consciousRef = useRef(null)\n\n\n const calculate_4th = () => {\n const total = Object.values(array4th).reduce((a, b) => a + (b.checked ? 1 : 0), 0)\n\n set4thValidator(prevState => ({\n ...prevState,\n pastHistory: { ...prevState.pastHistory, checked: total >= 1 ? true : false }\n }));\n if (total >= 1 && !array4thValidator.pastHistory.checked) {\n setNumerator(prev => prev + 1)\n } else if (total === 0 && array4thValidator.pastHistory.checked) {\n setNumerator(prev => prev - 1)\n }\n }\n React.useEffect(() => {\n if (!initialRender.current) {\n calculate_4th();\n }\n }, [array4th]); //避免循環\n const w6Ref = useRef(null)\n const [array6th, setArray6th] = React.useState({\n A6: { label: \"咳嗽\", name: \"A6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"咳嗽\" }\n , B6: { label: \"咳痰\", name: \"B6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"咳痰\" }\n , C6: { label: \"呼吸困難\", name: \"C6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"呼吸困難\" }\n , E6: { label: \"胸痛\", name: \"E6\", type: \"chkBox\", gridWid: 3, systemLabel: \"胸痛\" }\n , F6: { label: \"心悸\", name: \"F6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"心悸\" }\n , G6: { label: \"頭暈\", name: \"G6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"頭暈\" }\n , H6: { label: \"頭痛\", name: \"H6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"頭痛 \" }\n , I6: { label: \"耳鳴\", name: \"I6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"耳鳴 \" }\n , J6: { label: \"倦怠\", name: \"J6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"倦怠 \" }\n , K6: { label: \"噁心\", name: \"K6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"噁心 \" }\n , L6: { label: \"腹痛\", name: \"L6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"腹痛 \" }\n , M6: { label: \"便秘\", name: \"M6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"便秘 \" }\n , O6: { label: \"腹瀉\", name: \"O6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"腹瀉 \" }\n , P6: { label: \"血便\", name: \"P6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"血便 \" }\n , Q6: { label: \"上背痛\", name: \"Q6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"上背痛 \" }\n , R6: { label: \"下背痛\", name: \"R6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"下背痛 \" }\n , S6: { label: \"手腳麻痛\", name: \"S6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"手腳麻痛 \" }\n , D6: { label: \"關節疼痛\", name: \"D6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"關節疼痛 \" }\n , N6: { label: \"排尿不適\", name: \"N6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"排尿不適 \" }\n , T6: { label: \"多尿、頻尿\", name: \"T6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"多尿、頻尿 \" }\n , V6: { label: \"手腳肌肉無力\", name: \"V6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"手腳肌肉無力 \" }\n , U6: { label: \"體重減輕 3公斤以上\", name: \"U6\", type: \"chkBox\", checked: false, checked: false, gridWid: 6, systemLabel: \"體重減輕3公斤以上\" }\n , W6: { label: \"其他症狀\", name: \"W6\", type: \"chkBoxTxT\", checked: false, checked: false, gridWid: 6, systemLabel: \"其他症狀\" }\n , allNone6: { label: \"以上皆無\", name: \"allNone6\", type: \"chkBox\", checked: false, gridWid: 12, systemLabel: \"以上皆無\" }\n });\n\n\n React.useEffect(() => {\n if (!initialRender.current) {\n const total = Object.values(array6th).reduce((a, b) => a + (b.checked ? 1 : 0), 0)\n set4thValidator(prevState => ({\n ...prevState,\n conscious: { ...prevState.conscious, checked: total >= 1 ? true : false }\n }));\n\n if (total >= 1 && !array4thValidator.conscious.checked) {\n setNumerator(prev => prev + 1)\n } else if (total === 0 && array4thValidator.conscious.checked) {\n setNumerator(prev => prev - 1)\n }\n }\n\n }, [array6th]); //避免循環\n\n const handleChange6th = e => {\n if (_.isNil(imageURL)) { //已提交不得修改\n const { name, checked } = e.target;\n // console.log(name, checked);\n if (name === \"allNone6\") {\n if (checked === true) { //之前沒溝\n // console.log(\"allNon6自己溝上\");\n //其他: 不能勾選,除非allnone不勾\n //移除所以勾勾 \n _.forEach(array6th, function (value, key) {\n setArray6th(prevState => ({\n ...prevState,\n [key]: omit(value, [\"checked\", \"error\"]),\n }));\n });\n //移除所有文字\n _.forEach(array4thTxtObj, function (value, key) {\n set4thTxtObj(prevState => ({\n ...prevState,\n W6: { ...value, text: \"\" }\n }));\n });\n\n //自己勾上\n setArray6th(prevState => ({\n ...prevState,\n allNone6: { ...prevState[name], checked: checked }\n }));\n } else {\n // console.log(\"allNon6自己取消\");\n\n //自己取消,讓其他可以勾\n setArray6th(prevState => ({\n ...prevState,\n [name]: { ...prevState[name], checked: false }\n }));\n }\n\n\n } else {\n //其他:不能勾選,除非allnone不勾\n if (array6th.allNone6.checked === false) {\n setArray6th(prevState => ({\n ...prevState,\n [name]: {\n ...prevState[name], checked: checked,\n error: checked === false ? false : (prevState[name].error || false)\n }\n }))\n if (Object.keys(array4thTxtObj).includes(name)) {\n set4thTxtObj(prevState => ({\n ...prevState,\n [name]: {\n ...prevState[name],\n text: checked === false ? \"\" : (prevState[name].text || \"\")\n }\n }))\n }\n }\n }\n }\n }\n const checked3rdRef = useRef(null);\n const [checked3rd, setCheck3rd] = React.useState({\n checkA: null,\n checkB: null,\n error: false\n });\n\n const handleChangeThree = e => {\n if (_.isNil(imageURL)) { //已提交不得修改\n const { name, checked } = e.target;\n if (name === \"checkA\") {\n setCheck3rd(prevState => ({\n ...prevState,\n checkB: !checked,\n checkA: checked\n }))\n if (checked3rd.checkA === null) {\n setNumerator(prev => prev + 1);\n }\n if (checked) {\n //取消曾經\n // setWorkExp(prevState => ({\n // ...prevState,\n // usedJob: { ...prevState.usedJob, required: false },\n // usedStart: { ...prevState.usedStart, required: false },\n // usedEnd: { ...prevState.usedEnd, required: false }\n // }))\n // setDenominator(11);\n // //之前填過,若有數值,需-1\n // let ary = [\"usedJob\", \"usedStart\", \"usedEnd\"];\n // ary.map(item => {\n // if (workExp[item].value !== \"\" && workExp[item].value !== null) {\n // setNumerator(prev => prev - 1)\n // }\n // })\n\n } else {\n // setWorkExp(prevState => ({\n // ...prevState,\n // usedJob: { ...prevState.usedJob, required: true },\n // usedStart: { ...prevState.usedStart, required: true },\n // usedEnd: { ...prevState.usedEnd, required: true }\n // }))\n //之前填過,若有數值,需+1\n // setDenominator(15);\n // let ary = [\"usedJob\", \"usedStart\", \"usedEnd\"];\n // ary.map(item => {\n // if (workExp[item].value !== \"\" && workExp[item].value !== null && workExp[item].required !== true) {\n // setNumerator(prev => prev + 1)\n // }\n // })\n }\n } else { //checkB定期檢查\n setCheck3rd(prevState => ({\n ...prevState,\n checkB: checked,\n checkA: !checked\n }))\n if (checked3rd.checkB === null) {\n setNumerator(prev => prev + 1);\n }\n if (checked) {\n //取消曾經\n // setWorkExp(prevState => ({\n // ...prevState,\n // usedJob: { ...prevState.usedJob, required: true },\n // usedStart: { ...prevState.usedStart, required: true },\n // usedEnd: { ...prevState.usedEnd, required: true }\n // }))\n // setDenominator(15);\n // let ary = [\"usedJob\", \"usedStart\", \"usedEnd\"];\n // ary.map(item => {\n // if (workExp[item].value !== \"\" && workExp[item].value !== null && workExp[item].required !== true) {\n // setNumerator(prev => prev + 1)\n // }\n // })\n } else {\n // setWorkExp(prevState => ({\n // ...prevState,\n // usedJob: { ...prevState.usedJob, required: false },\n // usedStart: { ...prevState.usedStart, required: false },\n // usedEnd: { ...prevState.usedEnd, required: false }\n // }))\n // setDenominator(11);\n // let ary = [\"usedJob\", \"usedStart\", \"usedEnd\"];\n // ary.map(item => {\n // if (workExp[item].value !== \"\" && workExp[item].value !== null) {\n // setNumerator(prev => prev - 1)\n // }\n // })\n }\n\n }\n }\n }\n\n\n const [array5_1, setArray5_1] = React.useState({\n smokeA: { name: \"smokeA\", label: \"從未吸菸\", type: \"chkBox\", checked: false, gridWid: 2, systemLabel: \"從未吸菸 \" }\n , smokeB: { name: \"smokeB\", label: \"偶爾吸(不是天天)\", type: \"chkBox\", checked: false, gridWid: 2, systemLabel: \"偶爾吸(不是天天) \" }\n , smokeC: {\n systemLabel: \"(幾乎)每天吸,平均每天吸_支,已吸菸_年\",\n label: \"(幾乎)每天吸\", name: \"smokeC\", type: \"chkBoxTxT\", checked: false, gridWid: 8\n , type_1: \"number\", name_1: \"smokeC_1\", label_1: \"平均每天吸\", text_1: \"\", suffix1: \"支\", helperText_1: \"\", min_1: 1, ref: useRef(null)\n , type_2: \"number\", name_2: \"smokeC_2\", label_2: \"已吸菸\", text_2: \"\", suffix2: \"年\", helperText_2: \"\", max_2: 100, ref: useRef(null)\n }\n , smokeD: {\n systemLabel: \"已經戒菸,戒了_年_個月。\",\n label: \"已經戒菸,戒了\", name: \"smokeD\", type: \"chkBoxTxT\", checked: false, gridWid: 8\n , name_1: \"smokeD_1\", type_1: \"number\", label_1: \" \", text_1: \"\", suffix1: \"年\", helperText_1: \"\", max_1: 100, ref: useRef(null)\n , name_2: \"smokeD_2\", type_2: \"number\", label_2: \" \", text_2: \"\", suffix2: \"個月\", helperText_2: \"\", max_2: 12, ref: useRef(null) //label需有空格\n }\n });\n React.useEffect(() => {\n if (!initialRender.current) {\n const total = Object.values(array5_1).reduce((a, b) => a + (b.checked ? 1 : 0), 0)\n setArray5thCheck(prevState => ({\n ...prevState,\n smoke: { ...prevState.smoke, checked: total >= 1 ? true : false } //只更新這個\n }));\n if (total >= 1 && !array5thCheck.smoke.checked) {\n setNumerator(prev => prev + 1)\n } else if (total === 0) {\n setNumerator(prev => prev - 1)\n }\n }\n }, [array5_1]); //避免循環\n\n const handleChangeChk5_1 = e => {\n if (_.isNil(imageURL)) { //已提交不得修改\n const { name, checked } = e.target;\n //先移除所有checked\n const keys = Object.keys(array5_1);\n keys.map(item => {\n // console.log(item)\n delete array5_1[item].checked\n })\n //set\n setArray5_1({\n ...array5_1,\n [name]: { ...array5_1[name], checked: checked }\n });\n setArray5thCheck(prevState => ({\n ...prevState,\n smokeC_1: { ...prevState.smokeC_1, value: \"\", error: false },\n smokeC_2: { ...prevState.smokeC_2, value: \"\", error: false },\n smokeD_1: { ...prevState.smokeD_1, value: \"\", error: false },\n smokeD_2: { ...prevState.smokeD_2, value: \"\", error: false },\n }));\n\n }\n }\n // const smokeRef = useRef(null)\n // const betelRef = useRef(null)\n // const drunkRef = useRef(null)\n const [array5thCheck, setArray5thCheck] = React.useState({\n smoke: { name: \"smoke\", checked: false },\n smokeC_1: { name: \"smokeC_1\", value: \"\" },\n smokeC_2: { name: \"smokeC_2\", value: \"\" },\n smokeD_1: { name: \"smokeD_1\", value: \"\" },\n smokeD_2: { name: \"smokeD_2\", value: \"\" },\n betel: { name: \"betel\", checked: false },\n betelC_1: { name: \"betelC_1\", value: \"\" },\n betelC_2: { name: \"betelC_2\", value: \"\" },\n betelD_1: { name: \"betelD_1\", value: \"\" },\n betelD_2: { name: \"betelD_2\", value: \"\" },\n drunk: { name: \"drunk\", checked: false },\n drunkC_1: { name: \"drunkC_1\", value: \"\" },\n drunkC_2: { name: \"drunkC_2\", value: \"\" },\n drunkC_3: { name: \"drunkC_3\", value: \"\" },\n drunkD_1: { name: \"drunkD_1\", value: \"\" },\n drunkD_2: { name: \"drunkD_2\", value: \"\" },\n sleep: { name: \"sleep\", checked: false, value: \"\" },\n\n });\n const sleepRef = { smoke: useRef(), sleep: useRef(), drunk: useRef(), betel: useRef() }\n const handleChangeTxt5_4 = e => { //目前只5-4使用\n if (_.isNil(imageURL)) { //已提交不得修改\n const { name, value } = e.target;\n setArray5thCheck(prevState => ({\n ...prevState,\n [name]: { ...prevState[name], value: value }\n }));\n if (array5thCheck.sleep.value === \"\" && value !== \"\") {\n setNumerator(prev => prev + 1)\n } else if (value === \"\") {\n setNumerator(prev => prev - 1)\n }\n // console.log(array5thCheck)\n }\n }\n\n const handleChangeTxt5_1 = e => {\n if (_.isNil(imageURL)) { //已提交不得修改\n const { name, value } = e.target;\n setArray5thCheck(prevState => ({\n ...prevState,\n [name]: { ...prevState[name], value: value }\n }));\n }\n }\n\n\n\n const [array5_2, setArray5_2] = React.useState({\n betelA: { name: \"betelA\", label: \"從未嚼食檳榔\", type: \"chkBox\", checked: false, gridWid: 2, systemLabel: \"從未嚼食檳榔 \" }\n , betelB: { name: \"betelB\", label: \"偶爾嚼(不是天天)\", type: \"chkBox\", checked: false, gridWid: 2, systemLabel: \"偶爾嚼(不是天天) \" }\n , betelC: {\n systemLabel: \"(幾乎)每天嚼,平均每天嚼_顆,已嚼_年\",\n label: \"(幾乎)每天嚼\", name: \"betelC\", type: \"chkBoxTxT\", checked: false, gridWid: 8\n , name_1: \"betelC_1\", type_1: \"number\", label_1: \"平均每天嚼\", text_1: \"\", suffix1: \"顆\", helperText_1: \"\", max_1: 100\n , name_2: \"betelC_2\", type_2: \"number\", label_2: \"已嚼 \", text_2: \"\", suffix2: \"年\", helperText_2: \"\", max_2: 100\n }\n , betelD: {\n systemLabel: \"已經戒食,戒了_年_個月。\",\n label: \"已經戒食,戒了\", name: \"betelD\", type: \"chkBoxTxT\", checked: false, gridWid: 12\n , name_1: \"betelD_1\", type_1: \"number\", label_1: \" \", text_1: \"\", suffix1: \"年\", helperText_1: \"\", max_1: 100\n , name_2: \"betelD_2\", type_2: \"number\", label_2: \" \", text_2: \"\", suffix2: \"個月\", helperText_2: \"\", max_2: 12 //label需有空格\n }\n });\n\n React.useEffect(() => {\n if (!initialRender.current) {\n const total = Object.values(array5_2).reduce((a, b) => a + (b.checked ? 1 : 0), 0)\n setArray5thCheck(prevState => ({\n ...prevState,\n betel: { ...prevState.betel, checked: total >= 1 ? true : false } //只更新這個\n }))\n if (total >= 1 && !array5thCheck.betel.checked) {\n setNumerator(prev => prev + 1)\n } else if (total === 0) {\n setNumerator(prev => prev - 1)\n }\n }\n }, [array5_2]); //避免循環\n\n const handleChangeChk5_2 = e => {\n if (_.isNil(imageURL)) { //已提交不得修改\n const { name, checked } = e.target;\n //先移除所有checked\n const keys = Object.keys(array5_2);\n keys.map(item => {\n delete array5_2[item].checked\n }\n )\n //set\n setArray5_2({\n ...array5_2,\n [name]: {\n ...array5_2[name], checked: checked\n }\n })\n setArray5thCheck(prevState => ({\n ...prevState,\n betelC_1: { ...prevState.betelC_1, value: \"\", error: false },\n betelC_2: { ...prevState.betelC_2, value: \"\", error: false },\n betelD_1: { ...prevState.betelD_1, value: \"\", error: false },\n betelD_2: { ...prevState.betelD_2, value: \"\", error: false },\n }));\n }\n }\n\n // const handleChangeTxt5_2 = e => {\n // if (_.isNil(imageURL)) { //已提交不得修改\n // const { name, value } = e.target;\n // setArray5_2({\n // ...array5_2,\n // [name]: { ...array5_2[name], text_1: value }\n // });\n // }\n // }\n\n\n\n const [array5_3, setArray5_3] = React.useState({\n drunkA: { name: \"drunkA\", label: \"從未喝酒\", type: \"chkBox\", checked: false, gridWid: 2, systemLabel: \"從未喝酒 \" }\n , drunkB: { name: \"drunkB\", label: \"偶爾喝(不是天天)\", type: \"chkBox\", checked: false, gridWid: 2, systemLabel: \"偶爾喝(不是天天) \" }\n , drunkC: {\n systemLabel: \"(幾乎)每天喝,平均每週喝_次,最常喝_酒,每次_瓶\",\n label: \"(幾乎)每天喝\", name: \"drunkC\", type: \"chkBoxTxT\", checked: false, gridWid: 8\n , name_1: \"drunkC_1\", type_1: \"number\", label_1: \"平均每週喝\", suffix1: \"次\", max_1: 28\n , name_2: \"drunkC_2\", type_2: \"text\", label_2: \"最常喝 \", suffix2: \"酒\"\n , name_3: \"drunkC_3\", type_3: \"number\", label_3: \"每次 \", suffix3: \"瓶\", max_3: 100\n }\n , drunkD: {\n systemLabel: \"已經戒酒,戒了_年_個月。\",\n label: \"已經戒酒,戒了\", name: \"drunkD\", type: \"chkBoxTxT\", checked: false, gridWid: 12\n , name_1: \"drunkD_1\", type_1: \"number\", label_1: \" \", suffix1: \"年\", max_1: 100\n , name_2: \"drunkD_2\", type_2: \"number\", label_2: \" \", suffix2: \"個月\", max_2: 12//label需有空格\n }\n });\n React.useEffect(() => {\n if (!initialRender.current) {\n const total = Object.values(array5_3).reduce((a, b) => a + (b.checked ? 1 : 0), 0)\n setArray5thCheck(prevState => ({\n ...prevState,\n drunk: { ...prevState.drunk, checked: total >= 1 ? true : false } //只更新這個\n }));\n //ProgressBar\n if (total >= 1 && !array5thCheck.drunk.checked) {\n setNumerator(prev => prev + 1)\n } else if (total === 0) {\n setNumerator(prev => prev - 1)\n }\n }\n }, [array5_3]); //避免循環\n\n const handleChangeChk5_3 = e => {\n if (_.isNil(imageURL)) { //已提交不得修改\n const { name, checked } = e.target;\n //先移除所有checked\n const keys = Object.keys(array5_3);\n keys.map(item => {\n // console.log(item)\n delete array5_3[item].checked\n })\n //set\n setArray5_3(prevState => ({\n ...prevState,\n [name]: { ...prevState[name], checked: checked }\n }))\n setArray5thCheck(prevState => ({\n ...prevState,\n drunkC_1: { ...prevState.drunkC_1, value: \"\", error: false },\n drunkC_2: { ...prevState.drunkC_2, value: \"\", error: false },\n drunkC_3: { ...prevState.drunkC_3, value: \"\", error: false },\n drunkD_1: { ...prevState.drunkD_1, value: \"\", error: false },\n drunkD_2: { ...prevState.drunkD_2, value: \"\", error: false },\n }));\n\n }\n }\n\n const [gender, setGender] = React.useState({\n male: false,\n female: false,\n helperText: \"請至少選取一個。\"\n })\n const handleChangeChkGender = e => {\n if (_.isNil(imageURL)) { //已提交不得修改\n const { name, checked } = e.target;\n if (name === \"male\") {\n setGender({\n ...gender,\n female: !checked,\n male: checked\n })\n } else {\n setGender({\n ...gender,\n female: checked,\n male: !checked\n })\n }\n }\n }\n const { enqueueSnackbar } = useSnackbar();\n\n const formRef = React.createRef();\n const handleSubmit = (e) => {\n e.preventDefault();\n if (validator()) {\n //清除\n dispatch(actions.TAB_EDIT({ editing: true, key: 66 }))\n Update66th();\n //更新部分資料至CheckProjectDetail\n UpdateProjectDetail();\n\n // handleNext(\"\",66);\n }\n\n }\n const UpdateProjectDetail = prop => {\n //section 5\n //抽菸\n let fiveth_1 = Object.values(array5_1).reduce((a, b) => a + (b.checked ? \"||\" + b.systemLabel : \"\"), \"\");\n let Str_fiveth_1 = fiveth_1.substring(2, 999);\n let _count_5_1 = (fiveth_1.substring(2, 999).match(/_/g) || []).length\n let fiveth_1Txt = Object.values(array5thCheck).slice(1, 5).reduce((a, b) => a + (b.value !== \"\" ? \"||\" + b.value : \"\"), \"\");\n let fiveth_1TxtArray = fiveth_1Txt.substring(2, 999).split(\"||\");\n for (let step = 0; step < _count_5_1; step++) {\n let t = 0;\n Str_fiveth_1 = Str_fiveth_1.replace(/_/g, match => ++t === 1 ? fiveth_1TxtArray[step] : match)\n }\n // console.log(Str_fiveth_1);\n\n //檳榔\n let fiveth_2 = Object.values(array5_2).reduce((a, b) => a + (b.checked ? \"||\" + b.systemLabel : \"\"), \"\");\n let Str_fiveth_2 = fiveth_2.substring(2, 999);\n let _count_5_2 = (fiveth_2.substring(2, 999).match(/_/g) || []).length\n let fiveth_2Txt = Object.values(array5thCheck).slice(6, 10).reduce((a, b) => a + (b.value !== \"\" ? \"||\" + b.value : \"\"), \"\");\n let fiveth_2TxtArray = fiveth_2Txt.substring(2, 999).split(\"||\");\n for (let step = 0; step < _count_5_2; step++) {\n let t = 0;\n Str_fiveth_2 = Str_fiveth_2.replace(/_/g, match => ++t === 1 ? fiveth_2TxtArray[step] : match)\n }\n // console.log(Str_fiveth_2);\n\n //喝酒\n let fiveth_3 = Object.values(array5_3).reduce((a, b) => a + (b.checked ? \"||\" + b.systemLabel : \"\"), \"\");\n let Str_fiveth_3 = fiveth_3.substring(2, 999);\n let _count_5_3 = (fiveth_3.substring(2, 999).match(/_/g) || []).length\n let fiveth_3Txt = Object.values(array5thCheck).slice(11, 16).reduce((a, b) => a + (b.value !== \"\" ? \"||\" + b.value : \"\"), \"\");\n let fiveth_3TxtArray = fiveth_3Txt.substring(2, 999).split(\"||\");\n for (let step = 0; step < _count_5_3; step++) {\n let t = 0;\n Str_fiveth_3 = Str_fiveth_3.replace(/_/g, match => ++t === 1 ? fiveth_3TxtArray[step] : match)\n }\n //console.log(Str_fiveth_3);\n //睡眠2043\n let Str_fiveth_4 = \"平均每天睡眠時間為:_小時。\".replace(/_/g, array5thCheck.sleep.value)\n // console.log(Str_fiveth_4);\n\n //自覺症狀2008\n let Sixth = Object.values(array6th).reduce((a, b) => a + (b.checked ? \"、\" + b.systemLabel : \"\"), \"\");\n let Str_6th = Sixth.substring(1, 999).replace(/以上皆無/g, \"無\");\n Str_6th = Str_6th.replace(/其他症狀/g, \"其他症狀:\" + array4thTxtObj.W6.text);\n // console.log(Str_6th.replace(/ /g, \"\"));\n\n let UpdateList = [\n { BarCodeStr: UserInfo.BarCodeStr, ItemNo: \"2008\", Value: Str_6th.replace(/ /g, \"\") },\n { BarCodeStr: UserInfo.BarCodeStr, ItemNo: \"2043\", Value: Str_fiveth_4 },\n { BarCodeStr: UserInfo.BarCodeStr, ItemNo: \"2031\", Value: Str_fiveth_1.replace(/ /g, \"\") + '、' + Str_fiveth_2.replace(/ /g, \"\") + '、' + Str_fiveth_3.replace(/ /g, \"\") + '。' }]\n\n\n PF.instance({\n method: \"post\",\n url: PF.url + \"/Questionaire/Update\",\n data: Qs.stringify({ list: UpdateList }),\n headers: { token: sessionStorage.token }\n })\n .then(function (response) {\n // console.log(response.data)\n const { Total, rows, error } = response.data;\n console.log(Total, rows)\n // if (TotalRecord <= 0) {\n // // alert(\"問卷提交出錯\\r\\n\" + ErrorMessage + \"請致電 04-2255-2555 #168 企業健檢\")\n // enqueueSnackbar(intl.formatMessage({ id: \"update fail\" }), { variant: \"error\", style: { whiteSpace: 'pre-line' } });\n // } else {\n // setActiveStep((prevActiveStep) => prevActiveStep + 1);\n // setImage(\"Image\");\n // enqueueSnackbar(intl.formatMessage({ id: \"update success\" }), { variant: \"success\", style: { whiteSpace: 'pre-line' } });\n // }\n })\n\n }\n\n const validator = () => {\n const form = formRef.current; //參數1\n if (form.checkValidity()) {\n console.log(\"全部通過\")\n //若驗證通過,刪除錯誤提示\n for (let i = 0; i < form.elements.length; i++) {\n const element = form.elements[i];\n if (element.name === \"gender\") {\n setGender(omit(gender, [\"error\"]));\n }\n if (Object.keys(personal).includes(element.name)) {\n setPersonal(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\"])\n }));\n }\n if (Object.keys(workExp).includes(element.name)) {\n setWorkExp(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\"])\n }))\n }\n if (element.name === \"checked3rd\") {\n setCheck3rd(prevState => (omit(prevState, [\"error\"])))\n }\n if (element.name === \"pastHistory\") {\n set4thValidator(prevState => ({\n ...prevState,\n pastHistory: (omit(prevState.pastHistory, [\"error\"]))\n }))\n }\n if (Object.keys(array4th).includes(element.name)) {\n setArray4th(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\"])\n }))\n }\n if (Object.keys(array5thCheck).includes(element.name)) {\n setArray5thCheck(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\"])\n }));\n }\n if (element.name === \"conscious\") {\n set4thValidator(prevState => ({\n ...prevState,\n conscious: (omit(prevState.conscious, [\"error\"]))\n }))\n }\n if (Object.keys(array6th).includes(element.name)) {\n setArray6th(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\"])\n }))\n }\n }\n return true;\n } else {\n // const form = formRef.current;\n // console.log(\"還沒通過\")\n // alert(\"尚有問題未完成\");\n alert(intl.formatMessage({ id: \"尚有問題未完成\" }));\n for (let i = 0; i < form.elements.length; i++) {\n const element = form.elements[i];\n if (element.tagName !== 'button' && element.willValidate && !element.validity.valid) { //提交按鈕不用驗證\n // console.log(element.validationMessage, element.name);\n // console.log(element.value)\n // console.log(element.value, element.validationMessage, element.name, element.tagName)\n if (element.name === \"gender\") {\n setGender({ ...gender, error: true, helperText: element.validationMessage })\n\n }\n if (Object.keys(personal).includes(element.name)) {\n // console.log(element.name);\n setPersonal(prevState => ({\n ...prevState,\n [element.name]: { ...prevState[element.name], error: true, helperText: element.validationMessage }\n }))\n }\n if (Object.keys(workExp).includes(element.name)) {\n setWorkExp(prevState => ({\n ...prevState,\n [element.name]: { ...prevState[element.name], error: true, helperText: element.validationMessage }\n }))\n workRef.current.scrollIntoView({ behavior: 'smooth' });\n }\n if (element.name === \"checked3rd\") {\n setCheck3rd(prevState => ({\n ...prevState,\n error: true, helperText: element.validationMessage\n }));\n checked3rdRef.current.scrollIntoView({ behavior: 'smooth' });\n }\n if (element.name === \"pastHistory\") {\n set4thValidator(prevState => ({\n ...prevState,\n [element.name]: { ...prevState[element.name], error: true, helperText: element.validationMessage }\n }));\n pastHistoryRef.current.scrollIntoView();\n }\n if (Object.keys(array4th).includes(element.name)) {\n setArray4th(prevState => ({\n ...prevState,\n [element.name]: { ...prevState[element.name], error: true, helperText: element.validationMessage }\n }))\n }\n if (Object.keys(array5thCheck).includes(element.name)) {\n setArray5thCheck(prevState => ({\n ...prevState,\n [element.name]: { ...prevState[element.name], error: true, helperText: element.validationMessage }\n }));\n if ([\"smoke\", \"sleep\", \"drunk\", \"betel\"].includes(element.name)) {\n sleepRef[element.name].current.scrollIntoView({ behavior: 'smooth' })\n }\n // console.log(element.name);\n }\n if (element.name === \"conscious\") {\n set4thValidator(prevState => ({\n ...prevState,\n [element.name]: { ...prevState[element.name], error: true, helperText: element.validationMessage }\n }));\n consciousRef.current.scrollIntoView({ behavior: 'smooth' })\n }\n if (Object.keys(array6th).includes(element.name)) {\n setArray6th(prevState => ({\n ...prevState,\n [element.name]: { ...prevState[element.name], error: true, helperText: element.validationMessage }\n }))\n console.log(element.name)\n if (element.name === \"W6\") {\n w6Ref.current.scrollIntoView()\n }\n }\n\n } else {//驗證通過,自訂訊息\n //有在settingObj的\n // console.log(\"Pass\", element.value, element.validationMessage, element.name, element.tagName)\n\n if (element.name === \"gender\") {\n setGender(omit(gender, [\"error\"]));\n }\n if (Object.keys(personal).includes(element.name)) {\n setPersonal(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\"])\n }));\n }\n if (Object.keys(workExp).includes(element.name)) {\n setWorkExp(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\"])\n }))\n }\n if (element.name === \"checked3rd\") {\n setCheck3rd(prevState => (omit(prevState, [\"error\"])))\n }\n if (element.name === \"pastHistory\") {\n set4thValidator(prevState => ({\n ...prevState,\n pastHistory: (omit(prevState.pastHistory, [\"error\"]))\n }))\n }\n if (Object.keys(array4th).includes(element.name)) {\n setArray4th(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\"])\n }))\n }\n if (Object.keys(array5thCheck).includes(element.name)) {\n setArray5thCheck(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\"])\n }));\n }\n if (element.name === \"conscious\") {\n set4thValidator(prevState => ({\n ...prevState,\n conscious: (omit(prevState.conscious, [\"error\"]))\n }))\n\n }\n if (Object.keys(array6th).includes(element.name)) {\n setArray6th(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\"])\n }))\n }\n\n }\n }\n return false;\n }\n }\n const [personal, setPersonal] = React.useState({\n personalName: { name: \"personalName\", value: \"\" },\n personalID: { name: \"personalID\", value: \"\" },\n birthDate: { name: \"birthDate\", label: \"4.出生日期\", required: true, value: null, maxDate: new Date() },\n hireDate: { name: \"hireDate\", label: \"5.受僱日期\", required: true, value: null },\n examinationDate: { name: \"examinationDate\", label: \"6. 體檢日期\", required: true, value: null, minDate: new Date() }\n })\n const handleDateChange = (name, e, v) => {\n if (_.isNil(imageURL)) { //已提交不得修改\n setPersonal(prevState => ({\n ...prevState,\n [name]: {\n ...prevState[name],\n value: v\n }\n }));\n }\n }\n const handleChangeTxt1st = e => {\n if (_.isNil(imageURL)) { //已提交不得修改\n const { name, value } = e.target;\n setPersonal(prevState => ({\n ...prevState,\n [name]: { ...prevState[name], value: value }\n }))\n }\n }\n\n const [workExp, setWorkExp] = React.useState({\n usedJob: { name: \"usedJob\", label: \"1.曾經從事\", type: \"text\", value: null, required: false },\n usedStart: { name: \"usedStart\", label: \" \", type: \"date\", value: null, required: false, disableFuture: true },\n usedEnd: { name: \"usedEnd\", label: \" \", type: \"date\", value: null, required: false, disableFuture: true },\n usedPeriod_Y: { name: \"usedPeriod_Y\", label: \" \", value: null, min: 0, type: \"number\", endAdmt: \"年\", startAdmt: \"共\" },\n usedPeriod_M: { name: \"usedPeriod_M\", label: \" \", value: null, min: 0, max: 12, type: \"number\", endAdmt: \"個月\", startAdmt: \" \" },\n rightNowJob: { name: \"rightNowJob\", label: \"2.目前從事\", type: \"text\", value: null, required: true },\n rightNowStart: { name: \"rightNowStart\", label: \" \", type: \"date\", value: null, required: true, disableFuture: true },\n rightNowEnd: { name: \"rightNowEnd\", label: \" \", type: \"date\", value: null, disableFuture: true, disabled: true },\n rightNowPeriod_Y: { name: \"rightNowPeriod_Y\", label: \" \", value: null, min: 0, type: \"number\", endAdmt: \"年\", startAdmt: \"共\" },\n rightNowPeriod_M: { name: \"rightNowPeriod_M\", label: \" \", value: null, min: 0, max: 12, type: \"number\", endAdmt: \"個月\" },\n workhours_1: { name: \"workhours_1\", type: \"number\", value: null, min: 0, step: 0.5, max: 168, endAdmt: \"小時\", required: true },\n workhours_2: { name: \"workhours_2\", type: \"number\", value: null, min: 0, step: 0.5, max: 168, endAdmt: \"小時\", required: true },\n })\n const workRef = useRef(null);\n const handleChangeTxt2nd = e => {\n if (_.isNil(imageURL)) { //已提交不得修改\n // console.log(\"?!\")\n const { name, value } = e.target;\n if (name === \"usedJob\" || name === \"rightNowJob\" || name === \"workhours_1\" || name === \"workhours_2\") {\n setWorkExp(prevState => ({\n ...prevState,\n [name]: { ...prevState[name], value: value }\n }))\n // console.log(workExp[name].value)\n\n if ((workExp[name].value === \"\" || workExp[name].value === null) && value !== \"\" && workExp[name].required === true) {\n setNumerator(prev => prev + 1)\n } else if (value === \"\" && workExp[name].required === true) {\n setNumerator(prev => prev - 1)\n }\n }\n }\n\n }\n const handleDateChange2nd = (name, e, v) => {\n if (_.isNil(imageURL)) { //已提交不得修改\n console.log(name, v)\n console.log(workExp[name].value)\n setWorkExp(prevState => ({\n ...prevState,\n [name]: { ...prevState[name], value: v }\n }));\n if ((workExp[name].value === \"\" || workExp[name].value === null) && (v === \"\" || v === null)) {\n return\n }\n if ((workExp[name].value === \"\" || workExp[name].value === null) && (v !== null || v !== \"\") && workExp[name].required === true) {\n setNumerator(prev => prev + 1)\n } else if ((v === \"\" || v === null) && workExp[name].required === true) {\n setNumerator(prev => prev - 1)\n }\n }\n }\n const calculateWorkRange = () => {\n // console.log(workExp.usedStart.value)\n // console.log(workExp.usedEnd.value)\n if (!_.isNil(workExp.usedStart.value) && !_.isNil(workExp.usedEnd.value)) {\n let start = moment(workExp.usedStart.value + '01日', 'YYYY年MM月DD日')\n let end = moment(workExp.usedEnd.value + '01日', 'YYYY年MM月DD日')\n let months = moment.duration(end.diff(start)).asMonths();//總月份數\n let RoundMonths = Math.round(months)\n // console.log(RoundMonths)\n let y = Math.floor(RoundMonths / 12)\n let m = Math.round(RoundMonths % 12)\n // console.log(y, m)\n setWorkExp(prevState => ({\n ...prevState,\n usedPeriod_Y: { ...prevState.usedPeriod_Y, value: y },\n usedPeriod_M: { ...prevState.usedPeriod_M, value: m }\n }))\n }\n if (!_.isNil(workExp.rightNowStart.value) && !_.isNil(workExp.rightNowEnd.value)) {\n let start = moment(workExp.rightNowStart.value + '01日', 'YYYY年MM月DD日')\n let end = moment(workExp.rightNowEnd.value + '01日', 'YYYY年MM月DD日')\n let months = moment.duration(end.diff(start)).asMonths();//總月份數\n let RoundMonths = Math.round(months)\n // console.log(RoundMonths)\n\n let y = Math.floor(RoundMonths / 12)\n let m = Math.round(RoundMonths % 12)\n // console.log(y, m)\n setWorkExp(prevState => ({\n ...prevState,\n rightNowPeriod_Y: { ...prevState.rightNowPeriod_Y, value: y },\n rightNowPeriod_M: { ...prevState.rightNowPeriod_M, value: m }\n }))\n }\n }\n\n React.useEffect(() => {\n calculateWorkRange();\n }, [workExp.usedStart, workExp.usedEnd, workExp.rightNowEnd, workExp.rightNowStart]); //避免循環\n const useStyles = makeStyles({\n submitButton: {\n width: \"100%\", background: '#2E3B55', fontWeight: \"bold\",\n \"&:hover\": {\n background: '#fffff',\n // color:'#2E3B55'\n }\n },\n media: {\n height: 620,\n width: \"100%\",\n objectFit: 'cover',\n\n },\n\n });\n const { app } = useSelector(state => ({\n app: state.app,\n }));\n const classes = useStyles();\n React.useEffect(() => {\n if (initialRender.current) { //初始載入\n initialRender.current = false\n }\n }, []); //避免循環\n return (\n \n \n \n

\n
\n \n {/*
\n 一、基本資料:\n \n \n \n \n \n \n 2.性別:\n \n \n }\n label=\"男\"\n />\n }\n label=\"女\"\n />\n \n {gender.error ? ({gender.helperText}) : null}\n \n \n \n \n \n {Object.values(personal).map((item, key) => {\n if (key >= 2) { //前兩個無視\n return (\n \n }\n showTodayButton\n minDate={item.minDate || new Date(\"1900-01-01\")}\n maxDate={item.maxDate || new Date(\"2100-01-01\")}\n clearLabel={\"X\"}\n label={item.label}\n value={item.value}\n inputValue={item.value}\n onChange={(event, value) =>\n handleDateChange(item.name, event, value)\n }\n />\n \n )\n }\n })\n }\n \n
*/}\n
\n \n \n {Object.values(workExp).slice(0, 1).map((item, key) => {\n if (key === 0) {\n return (\n \n \n : null} onChange={handleChangeTxt2nd} />} labelPlacement={\"start\"} label={} />\n \n \n )\n } else if (key === 1 || key === 2) {\n return (\n <>\n \n moment(date).format(\"YYYY年MM月\")}\n key={key}\n views={[\"year\", \"month\"]}\n autoOk\n autoComplete=\"off\"\n clearable\n type=\"datetime\"\n inputProps={{\n // ...prop //像是minLength、pattern\n pattern: \"[0-9]{4}年(0[1-9]|1[012])月\"\n }}\n style={{ width: 150 }}\n name={item.name}\n required={item.required || false}\n disableFuture={item.disableFuture || false}\n error={item.error || false}\n helperText={\n item.error ? (\n \n ) : null}\n todayLabel={}\n showTodayButton\n minDate={item.minDate || new Date(\"1900-01-01\")}\n maxDate={item.maxDate || new Date(\"2100-01-01\")}\n clearLabel={\"X\"}\n label={item.label}\n value={item.value}\n inputValue={item.value}\n onChange={(event, value) =>\n handleDateChange2nd(item.name, event, value)\n }\n />\n \n )\n } else {\n return (\n ,\n startAdornment: ,\n }}\n autoComplete=\"off\"\n helperText={item.error ? : null}\n inputProps={{ ...item, style: { textAlign: 'center' } }}\n />\n )\n\n }\n\n })}\n {Object.values(workExp).slice(1, 5).map((item, key) => {\n if (key === 0 || key === 1) {\n return (\n \n \n ) : null}\n todayLabel={}\n showTodayButton\n minDate={item.minDate || new Date(\"1900-01-01\")}\n maxDate={item.maxDate || new Date(\"2100-01-01\")}\n clearLabel={\"X\"}\n label={item.label}\n value={item.value}\n inputValue={item.value}\n onChange={(event, value) =>\n handleDateChange2nd(item.name, event, value)\n }\n />\n }\n />\n \n )\n } else {\n return (\n \n ,\n startAdornment: ,\n }}\n autoComplete=\"off\"\n helperText={item.error ? : null}\n inputProps={{ ...item, style: { textAlign: 'center' } }}\n />\n }\n />\n \n )\n\n }\n\n })}\n\n {Object.values(workExp).slice(5, 6).map((item, key) => {\n if (key === 0) {\n return (\n \n \n : null} onChange={handleChangeTxt2nd} />}\n labelPlacement={\"start\"}\n label={} />\n \n \n )\n } else if (key === 1 || key === 2) {\n return (\n \n \n ) : null}\n todayLabel={}\n showTodayButton\n minDate={item.minDate || new Date(\"1900-01-01\")}\n maxDate={item.maxDate || new Date(\"2100-01-01\")}\n clearLabel={\"X\"}\n label={item.label}\n value={item.value}\n inputValue={item.value}\n onChange={(event, value) =>\n handleDateChange2nd(item.name, event, value)\n }\n />\n }\n />\n \n )\n } else {\n return (\n \n ,\n startAdornment: ,\n }}\n autoComplete=\"off\"\n helperText={item.error ? : null}\n inputProps={{ ...item, style: { textAlign: 'center' } }}\n />\n }\n />\n \n )\n }\n })}\n {Object.values(workExp).slice(6, 10).map((item, key) => {\n if (key === 0 || key === 1) {\n return (\n \n \n ) : null}\n todayLabel={}\n showTodayButton\n minDate={item.minDate || new Date(\"1900-01-01\")}\n maxDate={item.maxDate || new Date(\"2100-01-01\")}\n clearLabel={\"X\"}\n label={item.label}\n value={item.value}\n inputValue={item.value}\n onChange={(event, value) =>\n handleDateChange2nd(item.name, event, value)\n }\n />\n }\n />\n )\n } else {\n return (\n \n {intl.formatMessage({ id: item.endAdmt })},\n startAdornment: ,\n }}\n autoComplete=\"off\"\n helperText={item.error ? : null}\n inputProps={{ ...item, style: { textAlign: 'center' } }}\n />\n }\n />\n \n )\n }\n })}\n {Object.values(workExp).slice(10, 11).map((item, key) => {\n return (\n \n \n ,\n }}\n inputProps={{\n ...item,\n style: { textAlign: \"center\" }\n }}\n value={item.value || \"\"}\n helperText={item.error ? : null}\n onChange={handleChangeTxt2nd}\n />\n } labelPlacement={\"start\"}\n label={} />\n \n \n )\n })}\n {Object.values(workExp).slice(11, 12).map((item, key) => {\n return (\n \n ,\n }}\n inputProps={{\n ...item,\n style: { textAlign: \"center\" }\n }}\n value={item.value || \"\"}\n helperText={item.error ? : null}\n onChange={handleChangeTxt2nd}\n />\n }\n labelPlacement={\"start\"}\n label={} />\n \n )\n })}\n \n
\n
\n \n \n \n \n \n \n \n \n }\n label={}\n onMouseDown={() => { checked3rd.checkA ? playActive() : playOn(); }}\n />\n \n }\n label={}\n onMouseDown={() => { checked3rd.checkB ? playActive() : playOn(); }}\n />\n \n {checked3rd.error ? () : null}\n \n\n \n\n \n
\n
\n \n \n \n \n \n \n \n {array4thValidator.pastHistory.error ? () : null}\n \n \n \n {Object.values(array4th).map((item, key) => {\n //console.log(item);\n if (item.type === \"chkBox\") {\n return (\n \n \n }\n label={}\n onMouseDown={() => { item.checked || false ? playActive() : playOn(); }}\n />\n )\n } else {\n return (\n \n \n { item.checked || false ? playActive() : playOn(); }}\n />\n }\n name={item.name}\n autoComplete=\"off\"\n onChange={handleChangeTxt4th}\n // inputProps={{\n // type2:item.type\n // }}\n helperText={item.error ? : null}\n />\n \n )\n }\n\n })}\n \n
\n
\n \n \n \n \n \n \n \n {array5thCheck.smoke.error ? () : null}\n \n \n \n {Object.values(array5_1).map((item, key) => {\n if (item.type === \"chkBox\") {\n return (\n \n \n }\n label={}\n onMouseDown={() => { item.checked || false ? playActive() : playOn(); }}\n />\n )\n } else {\n return (\n
\n \n \n \n }\n label={}\n onMouseDown={() => { item.checked || false ? playActive() : playOn(); }}\n />\n \n \n }\n name={item.name_1}\n type={item.type_1}\n style={{ width: 120 }}\n autoComplete=\"off\"\n onChange={handleChangeTxt5_1}\n helperText={array5thCheck[item.name_1].error ? : null}\n InputProps={{\n endAdornment: ,\n }}\n inputProps={{\n min: item.min_1,\n step: 1, style: { textAlign: 'center' },\n max: item.max_1 || null\n }}\n\n />}\n />\n \n \n \n {item.label_2 ? (\n }\n name={item.name_2}\n type={item.type_2}\n style={{ width: 120 }}\n autoComplete=\"off\"\n onChange={handleChangeTxt5_1}\n helperText={array5thCheck[item.name_2].error ? : null}\n InputProps={{\n endAdornment: ,\n }}\n inputProps={{ min: 0, step: 1, style: { textAlign: 'center' }, max: item.max_2 || null }}\n />}\n />\n\n ) : null}\n \n
\n )\n }\n })}\n
\n \n \n \n \n \n \n {array5thCheck.betel.error ? () : null}\n \n \n \n {Object.values(array5_2).map((item, key) => {\n if (item.type === \"chkBox\") {\n return (\n \n \n }\n label={}\n onMouseDown={() => { item.checked || false ? playActive() : playOn(); }}\n />\n )\n } else {\n return (\n
\n \n \n \n }\n label={}\n onMouseDown={() => { item.checked || false ? playActive() : playOn(); }}\n />\n \n \n }\n name={item.name_1}\n type={item.type_1}\n style={{ width: 120 }}\n autoComplete=\"off\"\n onChange={handleChangeTxt5_1}\n error={array5thCheck[item.name_1].error || false}\n helperText={array5thCheck[item.name_1].error ? : null}\n InputProps={{\n endAdornment: ,\n }}\n inputProps={{\n min: 0,\n step: 1, style: { textAlign: 'center' },\n max: item.max_1 || null\n }}\n />}\n />\n \n \n \n {item.label_2 ? (}\n name={item.name_2}\n type={item.type_2}\n style={{ width: 120 }}\n autoComplete=\"off\"\n onChange={handleChangeTxt5_1}\n error={array5thCheck[item.name_2].error || false}\n helperText={array5thCheck[item.name_2].error ? : null}\n InputProps={{\n endAdornment: ,\n }}\n inputProps={{\n min: 0, step: 1, style: { textAlign: 'center' }, max: item.max_2 || null\n }}\n />}\n />) : null}\n \n
)\n }\n })}\n
\n \n \n \n \n \n \n {array5thCheck.drunk.error ? () : null}\n \n \n \n {Object.values(array5_3).map((item, key) => {\n //console.log(item);\n if (item.type === \"chkBox\") {\n return (\n \n \n }\n label={}\n onMouseDown={() => { item.checked || false ? playActive() : playOn(); }}\n />\n )\n } else {\n return (\n \n
\n \n \n }\n label={}\n onMouseDown={() => { item.checked || false ? playActive() : playOn(); }}\n />\n \n \n }\n name={item.name_1}\n type={item.type_1}\n style={{ width: 120 }}\n autoComplete=\"off\"\n onChange={handleChangeTxt5_1}\n error={array5thCheck[item.name_1].error || false}\n helperText={array5thCheck[item.name_1].error ? : null}\n InputProps={{\n endAdornment: {},\n }}\n inputProps={{\n min: 0, style: { textAlign: 'center' }, max: item.max_1 || null\n }}\n />}\n />\n \n \n
\n\n \n {item.label_2 ? (\n }\n name={item.name_2}\n type={item.type_2}\n style={{ width: 120 }}\n autoComplete=\"off\"\n onChange={handleChangeTxt5_1}\n error={array5thCheck[item.name_2].error || false}\n helperText={array5thCheck[item.name_2].error ? : null}\n InputProps={{\n endAdornment: ,\n }}\n inputProps={{\n style: { textAlign: 'center' }, min: 0, max: item.max_2 || null\n }}\n />}\n />) : null}\n \n \n {item.label_3 ? (}\n name={item.name_3}\n type={item.type_3}\n style={{ width: 120 }}\n autoComplete=\"off\"\n onChange={handleChangeTxt5_1}\n error={array5thCheck[item.name_3].error || false}\n helperText={array5thCheck[item.name_3].error ? : null}\n InputProps={{\n endAdornment: ,\n }}\n inputProps={{\n min: 0.1, step: 0.1, style: { textAlign: 'center' }, max: item.max_3 || null\n }}\n />}\n />) : null}\n\n
\n )\n }\n })}\n
\n
\n {/* \n ,\n }}\n helperText={array5thCheck.sleep.error ? : null}\n /> */}\n \n \n \n \n \n \n {(message) => }\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n {array5thCheck.sleep.error ? (\n \n ) : null\n }\n \n\n
\n
\n
\n \n \n \n \n \n \n \n {array4thValidator.conscious.error ? () : null}\n \n \n \n {Object.values(array6th).map((item, key) => {\n //console.log(item);\n if (item.type === \"chkBox\") {\n return (\n \n \n }\n label={}\n onMouseDown={() => { item.checked || false ? playActive() : playOn(); }}\n />\n )\n } else {\n return (\n \n \n { item.checked || false ? playActive() : playOn(); }}\n />\n }\n name={item.name}\n autoComplete=\"off\"\n onChange={handleChangeTxt4th}\n error={item.error || false}\n helperText={item.error ? : null}\n />\n \n )\n }\n\n })}\n \n
\n
\n \n
\n {/* */}\n {!imageURL ? (
\n \n
) : null}\n\n
\n
\n {/* {imageURL ?\n (
\n
\n \n
\n
\n \n
\n
\n )\n : null\n } */}\n\n
\n\n
\n {/*
\n {imageURL ? : null}\n
*/}\n
\n );\n})\n\nexport default Questionaire66th;\n\n// const MultipleComponet = React.forwardRef((props,ref)=>{\n\n\n// return(\n//
\n// \n// \n//
\n// )\n// })\n\n// const Example = () => {\n// const componentRef = useRef();\n// const handlePrint = useReactToPrint({\n// content: () => componentRef.current,\n// });\n\n// return (\n//
\n// \n// \n//
\n// );\n// };\n\n\n// export default Example;\n","import React from 'react';\nimport Button from '@material-ui/core/Button';\nimport GridContainer from \"../components/Grid/GridContainer\";\nimport GridItem from \"../components/Grid/GridItem\";\nimport ListItem from \"@material-ui/core/ListItem\";\nimport _, { omit, pick, round, slice } from 'lodash';\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\nimport { FormControl, FormLabel, FormHelperText, Paper, Chip, Card, CardHeader, CardMedia, CardContent, CardActions, Avatar } from '@material-ui/core';\nimport { actions } from \"../reducers/app\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport PF from \"../_Services/publicFunction\";\nimport Radio from '@material-ui/core/Radio';\nimport RadioGroup from '@material-ui/core/RadioGroup';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport Typography from '@material-ui/core/Typography';\nimport Qs from \"qs\";\nimport LinearProgress from '@material-ui/core/LinearProgress';\nimport { makeStyles, withStyles } from '@material-ui/core/styles';\nimport { Bar } from 'react-chartjs-2';\nimport FavoriteIcon from '@material-ui/icons/Favorite';\nimport { VolumeUp } from '@material-ui/icons';\nimport useSound from 'use-sound';\nimport clickdown from '../sounds/clickdown.wav';\nimport clickup from '../sounds/clickdown.wav';\nimport { injectIntl, intlShape, useIntl, FormattedMessage } from 'react-intl';\nimport { useSnackbar } from \"notistack\";\n\nconst BorderLinearProgress = withStyles((theme) => ({\n root: {\n height: 8,\n // borderRadius: 5,\n },\n colorPrimary: {\n //backgroundColor: theme.palette.grey[theme.palette.type === 'light' ? 200 : 700],\n },\n bar: {\n // borderRadius: 5,\n backgroundColor: '#1a90ff',\n },\n}))(LinearProgress);\n\nconst useStyles = makeStyles((theme) => ({\n formControl: {\n margin: theme.spacing(3),\n },\n button: {\n margin: theme.spacing(1, 1, 0, 0),\n },\n root: {\n color: theme.palette.type === \"dark\" ? \"#1a90ff\" : \"#3f51b5\"\n },\n submitButton: {\n width: \"100%\", background: '#2E3B55', fontWeight: \"bold\",\n \"&:hover\": {\n background: '#fffff',\n // color:'#2E3B55'\n }\n },\n\n}));\n\nconst Questionaire68th = props => {\n // const [progress, setProgress] = React.useState(0);\n const [numerator, setNumerator] = React.useState(0)\n const [denominator, setDenominator] = React.useState(18)\n const intl = useIntl();\n\n const initialRender = React.useRef(true);\n\n const { handleNext, setActiveStep } = props;\n const dispatch = useDispatch();\n const { UserInfo } = useSelector(state => ({\n UserInfo: state.app.UserInfo,\n }));\n const [playActive] = useSound(\n clickdown,\n { volume: 0.25 }\n );\n const [playOn] = useSound(\n clickup,\n { volume: 0.25 }\n );\n const classes = useStyles();\n const [uploadFormat, setUpload] = React.useState({\n 0: { BarCodeStr: \"\", QuestionNo: 68, Category: \"填寫前說明\", titleNo: \"\", Title: \"說明:本量表所列舉的問題是為協助您瞭解您的心情狀況,請您仔細回想在一星期中,這些問題發生幾天,然後圈選一個您認為最能代表您感覺的答案。『沒有或極少』1天以下/週,『有時候』1~2天/週,『時常』3~4天/週,『常常或總是』5~7天/週\", SelectTitle: \"\", Answer: \"\", Other: \"\" },\n 1: { BarCodeStr: \"\", QuestionNo: 68, Category: \"一、心情評量\", titleNo: 1, Title: \"我常常覺得想哭\", SelectTitle: \"○沒有或極少 ○有時候 ○時常 ○常常或總是\", Answer: \"\", Other: \"\" },\n 2: { BarCodeStr: \"\", QuestionNo: 68, Category: \"一、心情評量\", titleNo: 2, Title: \"我覺得心情不好\", SelectTitle: \"○沒有或極少 ○有時候 ○時常 ○常常或總是\", Answer: \"\", Other: \"\" },\n 3: { BarCodeStr: \"\", QuestionNo: 68, Category: \"一、心情評量\", titleNo: 3, Title: \"我覺得比以前容易發脾氣\", SelectTitle: \"○沒有或極少 ○有時候 ○時常 ○常常或總是\", Answer: \"\", Other: \"\" },\n 4: { BarCodeStr: \"\", QuestionNo: 68, Category: \"一、心情評量\", titleNo: 4, Title: \"我睡不好\", SelectTitle: \"○沒有或極少 ○有時候 ○時常 ○常常或總是\", Answer: \"\", Other: \"\" },\n 5: { BarCodeStr: \"\", QuestionNo: 68, Category: \"一、心情評量\", titleNo: 5, Title: \"我覺得不想吃東西\", SelectTitle: \"○沒有或極少 ○有時候 ○時常 ○常常或總是\", Answer: \"\", Other: \"\" },\n 6: { BarCodeStr: \"\", QuestionNo: 68, Category: \"一、心情評量\", titleNo: 6, Title: \"我覺得胸口悶悶的\", SelectTitle: \"○沒有或極少 ○有時候 ○時常 ○常常或總是\", Answer: \"\", Other: \"\" },\n 7: { BarCodeStr: \"\", QuestionNo: 68, Category: \"一、心情評量\", titleNo: 7, Title: \"我覺得不輕鬆、不舒服\", SelectTitle: \"○沒有或極少 ○有時候 ○時常 ○常常或總是\", Answer: \"\", Other: \"\" },\n 8: { BarCodeStr: \"\", QuestionNo: 68, Category: \"一、心情評量\", titleNo: 8, Title: \"我覺得身體疲勞虛弱無力\", SelectTitle: \"○沒有或極少 ○有時候 ○時常 ○常常或總是\", Answer: \"\", Other: \"\" },\n 9: { BarCodeStr: \"\", QuestionNo: 68, Category: \"一、心情評量\", titleNo: 9, Title: \"我覺得很煩\", SelectTitle: \"○沒有或極少 ○有時候 ○時常 ○常常或總是\", Answer: \"\", Other: \"\" },\n 10: { BarCodeStr: \"\", QuestionNo: 68, Category: \"一、心情評量\", titleNo: 10, Title: \"我覺得記憶力不好\", SelectTitle: \"○沒有或極少 ○有時候 ○時常 ○常常或總是\", Answer: \"\", Other: \"\" },\n 11: { BarCodeStr: \"\", QuestionNo: 68, Category: \"一、心情評量\", titleNo: 11, Title: \"我覺得做事時無法專心\", SelectTitle: \"○沒有或極少 ○有時候 ○時常 ○常常或總是\", Answer: \"\", Other: \"\" },\n 12: { BarCodeStr: \"\", QuestionNo: 68, Category: \"一、心情評量\", titleNo: 12, Title: \"我覺得想事情或做事時比平常要緩慢\", SelectTitle: \"○沒有或極少 ○有時候 ○時常 ○常常或總是\", Answer: \"\", Other: \"\" },\n 13: { BarCodeStr: \"\", QuestionNo: 68, Category: \"一、心情評量\", titleNo: 13, Title: \"我覺得比以前沒信心\", SelectTitle: \"○沒有或極少 ○有時候 ○時常 ○常常或總是\", Answer: \"\", Other: \"\" },\n 14: { BarCodeStr: \"\", QuestionNo: 68, Category: \"一、心情評量\", titleNo: 14, Title: \"我覺得比較會往壞處想\", SelectTitle: \"○沒有或極少 ○有時候 ○時常 ○常常或總是\", Answer: \"\", Other: \"\" },\n 15: { BarCodeStr: \"\", QuestionNo: 68, Category: \"一、心情評量\", titleNo: 15, Title: \"我覺得想不開,甚至想死\", SelectTitle: \"○沒有或極少 ○有時候 ○時常 ○常常或總是\", Answer: \"\", Other: \"\" },\n 16: { BarCodeStr: \"\", QuestionNo: 68, Category: \"一、心情評量\", titleNo: 16, Title: \"我覺得對什麼事都失去興趣\", SelectTitle: \"○沒有或極少 ○有時候 ○時常 ○常常或總是\", Answer: \"\", Other: \"\" },\n 17: { BarCodeStr: \"\", QuestionNo: 68, Category: \"一、心情評量\", titleNo: 17, Title: \"我覺得身體不舒服\", SelectTitle: \"○沒有或極少 ○有時候 ○時常 ○常常或總是\", Answer: \"\", Other: \"\" },\n 18: { BarCodeStr: \"\", QuestionNo: 68, Category: \"一、心情評量\", titleNo: 18, Title: \"我覺得自己很沒用\", SelectTitle: \"○沒有或極少 ○有時候 ○時常 ○常常或總是\", Answer: \"\", Other: \"\" },\n 19: { BarCodeStr: \"\", QuestionNo: 68, Category: \"二、計分方式\", titleNo: 1, Title: \"『沒有或極少』0分;『有時候』1分;『時常』2分;『常常或總是』3分\", SelectTitle: \"您的分數:_分\", Answer: \"\", Other: \"\" },\n 20: { BarCodeStr: \"\", QuestionNo: 68, Category: \"二、計分方式\", titleNo: 2, Title: \"8 分以下---情緒穩定\", SelectTitle: \"\", Answer: \"\", Other: \"\" },\n 21: { BarCodeStr: \"\", QuestionNo: 68, Category: \"二、計分方式\", titleNo: 3, Title: \"9~14分---情緒較不穩定、多注意情緒變化,多給自己關心\", SelectTitle: \"\", Answer: \"\", Other: \"\" },\n 22: { BarCodeStr: \"\", QuestionNo: 68, Category: \"二、計分方式\", titleNo: 4, Title: \"15~18分---壓力負荷已到極點,需要找朋友交談、舒緩情緒\", SelectTitle: \"\", Answer: \"\", Other: \"\" },\n 23: { BarCodeStr: \"\", QuestionNo: 68, Category: \"二、計分方式\", titleNo: 5, Title: \"19分以上---必須找專業醫療單位協助\", SelectTitle: \"\", Answer: \"\", Other: \"\" },\n });\n const [scores, setScores] = React.useState(0);\n const [done, setDone] = React.useState(false);\n React.useEffect(() => {\n //寫入BarCodeStr\n let obj = Object.values(uploadFormat).reduce((o, { }, index) => {\n o[index] = { BarCodeStr: UserInfo.BarCodeStr }\n return o\n }, {})\n let newitem = _.merge(uploadFormat, obj);\n // console.log(newitem)\n setUpload(prevState => newitem);\n\n }, [])\n const { enqueueSnackbar } = useSnackbar();\n\n\n\n const validator = () => {\n const form = formRef.current; //參數1\n if (form.checkValidity()) {\n // console.log(\"全部通過\")\n //若驗證通過,刪除錯誤提示\n for (let i = 0; i < form.elements.length; i++) {\n const element = form.elements[i];\n if (Object.keys(uploadFormat).includes(element.name)) {\n setUpload(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\", \"helperText\"])\n }));\n }\n\n }\n return true;\n } else {\n // const form = formRef.current;\n // console.log(\"還沒通過\")\n alert(intl.formatMessage({ id: \"尚有問題未完成\" }));\n for (let i = 0; i < form.elements.length; i++) {\n const element = form.elements[i];\n if (element.tagName !== 'button' && element.willValidate && !element.validity.valid) { //提交按鈕不用驗證\n console.log(element.validationMessage, element.name);\n console.log(element.value)\n // console.log(element.value, element.validationMessage, element.name, element.tagName)\n if (Object.keys(uploadFormat).includes(element.name)) {\n setUpload(prevState => ({\n ...prevState,\n [element.name]: { ...prevState[element.name], error: true, helperText: element.validationMessage }\n }));\n }\n\n\n } else {//驗證通過,自訂訊息\n //有在settingObj的\n console.log(\"Pass\", element.value, element.validationMessage, element.name, element.tagName)\n if (Object.keys(uploadFormat).includes(element.name)) {\n setUpload(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\", \"helperText\"])\n }));\n }\n\n }\n }\n return false;\n }\n }\n const handleSubmit = e => {\n e.preventDefault();\n //setError(!error);\n if (validator()) {\n dispatch(actions.TAB_EDIT({ editing: true, key: 68 }))\n PF.instance({\n method: \"post\",\n url: PF.url + \"/Questionaire/Insert\",\n data: Qs.stringify({ list: Object.values(uploadFormat) }),\n headers: { token: sessionStorage.token }\n })\n .then(function (response) {\n console.log(response.data)\n const { TotalRecord, ErrorMessage } = response.data\n if (TotalRecord <= 0) {\n // alert(\"問卷提交出錯\\r\\n\" + ErrorMessage + \"請致電 04-2255-2555 #168 企業健檢\")\n enqueueSnackbar(intl.formatMessage({ id: \"update fail\" }), { variant: \"error\", style: { whiteSpace: 'pre-line' } });\n } else {\n setActiveStep((prevActiveStep) => prevActiveStep + 1);\n setDone(true);\n enqueueSnackbar(intl.formatMessage({ id: \"update success\" }), { variant: \"success\", style: { whiteSpace: 'pre-line' } });\n }\n })\n\n }\n }\n const [obj, setObj] = React.useState({});\n const handleRadioChange = e => {\n // e.prevetDefault();\n if (!done) {\n let transfer = {\n \"沒有或極少\": 0,\n \"有時候\": 1,\n \"時常\": 2,\n \"常常或總是\": 3,\n }\n const { name, value } = e.target;\n // console.log(name, value)\n // setValue(value);\n setUpload(prevState => ({\n ...prevState,\n [name]: { ...prevState[name], BarCodeStr: UserInfo.BarCodeStr, Answer: value }\n }))\n //ProgressBar\n\n setObj(prev => ({\n ...prev,\n [name]: transfer[value]\n }))\n if (uploadFormat[name].Answer === \"\") {\n // setProgress(prev => prev < 99.9 ? (prev + 5.55) : prev)\n setNumerator(prev => prev + 1)\n }\n }\n }\n const formRef = React.createRef();\n React.useEffect(() => {\n if (initialRender.current) {\n initialRender.current = false\n } else {\n //let x = Object.values(uploadFormat).slice(1,19).reduce((a,{Answer})=>a+ (transfer[Answer]),0);\n let y = Object.values(obj);\n //console.log(x)\n // console.log(y)\n let z = y.reduce((a, b) => a + (b === undefined ? 0 : b), 0);\n // console.log(z)\n setScores(z)\n //寫入分數\n setUpload(prevState => ({\n ...prevState,\n 19: { ...prevState[19], Other: z },\n }));\n }\n\n }, [obj])\n\n return (\n \n

\n
\n
\n \n \n
\n
\n \n {Object.values(uploadFormat).slice(1, 19).map((item, index) => {\n return (\n \n {item.titleNo + \".\"}\n \n {item.SelectTitle.replaceAll(\"○\", \"\").split(\" \").map(pro => {\n return (\n } label={} onMouseDown={() => { playActive() }} />)\n })}\n \n {item.error ? : null}\n )\n })}\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n \n
\n {!done ? (
\n \n
) : null}\n
\n
\n )\n\n\n\n}\n\nexport default Questionaire68th\n\n\n\nconst HorizontalBarChart = React.memo((props) => {\n const { score, label } = props;\n console.log(\"render\")\n const getColor = s => {\n switch (true) {\n case (s <= 8):\n return finColor[\"green\"]\n case (s <= 14):\n return finColor[\"yello\"]\n case (s <= 18):\n return finColor[\"orange\"]\n case (s >= 19):\n return finColor[\"red\"]\n default:\n console.log(\"none\");\n break;\n }\n }\n const color = {\n red: \"rgba(255, 99, 132,0.2)\",\n orange: \"rgba(255, 159, 64,0.2)\",\n yello: \"rgba(255, 206, 86,0.2)\",\n green: \"rgba(75, 192, 192,0.2)\"\n }\n const finColor = {\n red: \"rgba(255, 99, 132)\",\n orange: \"rgba(255, 159, 64)\",\n yello: \"rgba(255, 206, 86)\",\n green: \"rgba(75, 192, 192)\"\n }\n\n let data = {\n labels: [score],\n datasets: [\n {\n label: label,\n data: [score],\n backgroundColor: [\n getColor(score)\n ],\n\n },\n ],\n };\n\n const options = {\n indexAxis: 'y',\n // Elements options apply to all of the options unless overridden in a dataset\n // In this case, we are setting the border of each horizontal bar to be 2px wide\n elements: {\n bar: {\n // borderWidth: 2,\n },\n },\n scales: {\n\n x: {\n max: 55,\n min: 0,\n ticks: {\n beginAtZero: true, //整數\n stepSize: 5,\n\n },\n\n },\n y: {\n\n ticks: {\n font: {\n size: 40,\n }\n }\n\n }\n },\n responsive: false,\n plugins: {\n legend: {\n position: 'top',\n },\n // title: {\n // display: true,\n // text: '累計得分',\n // },\n },\n };\n\n\n return (\n \n )\n});\n","export default __webpack_public_path__ + \"static/media/pain.ccb73f24.jpg\";","import React from 'react';\n\n\nimport { makeStyles } from '@material-ui/core/styles';\nconst useStyles = makeStyles((theme) => ({\n\n humanbody: {\n backgroundColor: theme.palette.type === \"dark\" ? \"gray\" : {},\n borderRadius: \"5%\",\n \"& svg \": {\n \"& path\": {\n \"&:hover\": {\n fill: '#2E3B55',\n }\n }\n },\n },\n svgclass: {\n [theme.breakpoints.down('sm')]: {\n width: \"100px\",\n height: \"150px\",\n },\n [theme.breakpoints.up('md')]: {\n width: \"200px\",\n height: \"350px\",\n\n },\n // [theme.breakpoints.up('lg')]: {\n // width: \"200px\",\n // height: \"300px\",\n // },\n }\n\n\n}));\n\nconst Body = (props) => {\n const { circle, color, frontCircle } = props;\n // console.log(\"render\")\n const classes = useStyles();\n return (\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n\n \n
\n\n )\n}\n\nexport default Body","import React from 'react';\nimport Button from '@material-ui/core/Button';\nimport GridContainer from \"../components/Grid/GridContainer\";\nimport GridItem from \"../components/Grid/GridItem\";\nimport ListItem from \"@material-ui/core/ListItem\";\nimport _, { omit, pick, round, slice } from 'lodash';\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\nimport { FormControl, FormLabel, FormHelperText, Paper } from '@material-ui/core';\nimport { actions } from \"../reducers/app\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport PF from \"../_Services/publicFunction\";\nimport Radio from '@material-ui/core/Radio';\nimport RadioGroup from '@material-ui/core/RadioGroup';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport Typography from '@material-ui/core/Typography';\nimport Qs from \"qs\";\nimport Tooltip from '@material-ui/core/Tooltip';\nimport TextField from '@material-ui/core/TextField';\nimport painDiagram from \"../pictures/pain.jpg\"\nimport CardMedia from '@material-ui/core/CardMedia';\n\nimport Body from './BackBody';\nimport LinearProgress from '@material-ui/core/LinearProgress';\nimport { makeStyles, withStyles } from '@material-ui/core/styles';\nimport useSound from 'use-sound';\nimport clickdown from '../sounds/clickdown.wav';\nimport clickup from '../sounds/clickdown.wav';\nimport { injectIntl, intlShape, useIntl, FormattedMessage } from 'react-intl';\nimport { useSnackbar } from \"notistack\";\n\nconst BorderLinearProgress = withStyles((theme) => ({\n root: {\n height: 8,\n // borderRadius: 5,\n },\n colorPrimary: {\n //backgroundColor: theme.palette.grey[theme.palette.type === 'light' ? 200 : 700],\n },\n bar: {\n // borderRadius: 5,\n backgroundColor: '#1a90ff',\n },\n}))(LinearProgress);\n\nconst useStyles = makeStyles((theme) => ({\n formControl: {\n margin: theme.spacing(3),\n },\n button: {\n margin: theme.spacing(1, 1, 0, 0),\n },\n root: {\n color: theme.palette.type === \"dark\" ? \"#1a90ff\" : \"#3f51b5\"\n },\n media: {\n height: 350,\n width: 550,\n // objectFit: 'cover'\n },\n submitButton: {\n width: \"100%\", background: '#2E3B55', fontWeight: \"bold\",\n \"&:hover\": {\n background: '#fffff',\n // color:'#2E3B55'\n }\n },\n\n}));\n\nconst Questionaire69th = props => {\n // const [progress, setProgress] = React.useState(0);\n const [numerator, setNumerator] = React.useState(0)\n const [denominator, setDenominator] = React.useState(18)\n const { handleNext, setActiveStep } = props;\n const dispatch = useDispatch();\n const { UserInfo } = useSelector(state => ({\n UserInfo: state.app.UserInfo,\n }));\n const scoreObj = {\n 0: \"不痛\",\n 1: \"痛可忽略\",\n 2: \"可能影響工作\",\n 3: \"影響工作\",\n 4: \"影響自主活動功能\",\n 5: \"完全無法自主活動\",\n }\n const classes = useStyles();\n const [playActive] = useSound(\n clickdown,\n { volume: 0.25 }\n );\n const [playOn] = useSound(\n clickup,\n { volume: 0.25 }\n );\n const [uploadFormat, setUpload] = React.useState({\n 0: { BarCodeStr: \"\", QuestionNo: 69, Category: \"填寫前說明\", titleNo: \"\", Title: \"下列任何部位請以酸痛不適與影響關節活動評斷。任選分數高者。酸痛不適程度與關節活動能力:(以肩關節為例)\", SelectTitle: \"\", Answer: \"\", Other: \"\" },\n 1: { BarCodeStr: \"\", QuestionNo: 69, Category: \"一、基本資料\", titleNo: 1, Title: \"您平常使用電腦、滑鼠慣用手為?\", SelectTitle: \"○左手 ○右手\", Answer: \"\", Other: \"\" },\n 2: { BarCodeStr: \"\", QuestionNo: 69, Category: \"一、基本資料\", titleNo: 2, Title: \"您在過去的1年內,身體是否有長達2星期以上的疲勞、酸痛、發麻、刺痛等不舒服,或關節活動受到限制?\", SelectTitle: \"○否(若否,結束此調查表) ○是(若是,請繼續填寫下列表格。)\", Answer: \"\", Other: \"\" },\n 3: { BarCodeStr: \"\", QuestionNo: 69, Category: \"一、基本資料\", titleNo: 3, Title: \"下表的身體部位酸痛、不適或影響關節活動之情形持續多久時間?\", SelectTitle: \"○1個月 ○3個月 ○6個月 ○1年 ○3年 ○3年以上\", Answer: \"\", Other: \"\" },\n 4: { BarCodeStr: \"\", QuestionNo: 69, Category: \"二、痠痛症狀調查\", titleNo: \"\", Title: \"痠痛症狀調查(請對應位置,在量化後的分數欄位中點選):0表示『不痛』;1表示『痛可忽略』;2表示『可能影響工作』;3表示『影響工作』;4表示『影響自主活動功能』;5表示『完全無法自主活動』\", SelectTitle: \"\", Answer: \"\", Other: \"\" },\n 5: { BarCodeStr: \"\", QuestionNo: 69, Category: \"二、痠痛症狀調查\", titleNo: \"01\", Title: \"頸部\", SelectTitle: \"○0 ○1 ○2 ○3 ○4 ○5\", Answer: \"\", Other: \"\" },\n 6: { BarCodeStr: \"\", QuestionNo: 69, Category: \"二、痠痛症狀調查\", titleNo: \"02\", Title: \"上背部\", SelectTitle: \"○0 ○1 ○2 ○3 ○4 ○5\", Answer: \"\", Other: \"\" },\n 7: { BarCodeStr: \"\", QuestionNo: 69, Category: \"二、痠痛症狀調查\", titleNo: \"03\", Title: \"下背部\", SelectTitle: \"○0 ○1 ○2 ○3 ○4 ○5\", Answer: \"\", Other: \"\" },\n 8: { BarCodeStr: \"\", QuestionNo: 69, Category: \"二、痠痛症狀調查\", titleNo: \"04\", Title: \"左肩部\", SelectTitle: \"○0 ○1 ○2 ○3 ○4 ○5\", Answer: \"\", Other: \"\" },\n 9: { BarCodeStr: \"\", QuestionNo: 69, Category: \"二、痠痛症狀調查\", titleNo: \"05\", Title: \"右肩部\", SelectTitle: \"○0 ○1 ○2 ○3 ○4 ○5\", Answer: \"\", Other: \"\" },\n 10: { BarCodeStr: \"\", QuestionNo: 69, Category: \"二、痠痛症狀調查\", titleNo: \"06\", Title: \"左手肘/左前臂\", SelectTitle: \"○0 ○1 ○2 ○3 ○4 ○5\", Answer: \"\", Other: \"\" },\n 11: { BarCodeStr: \"\", QuestionNo: 69, Category: \"二、痠痛症狀調查\", titleNo: \"07\", Title: \"右手肘/右前臂\", SelectTitle: \"○0 ○1 ○2 ○3 ○4 ○5\", Answer: \"\", Other: \"\" },\n 12: { BarCodeStr: \"\", QuestionNo: 69, Category: \"二、痠痛症狀調查\", titleNo: \"08\", Title: \"左手/左手腕\", SelectTitle: \"○0 ○1 ○2 ○3 ○4 ○5\", Answer: \"\", Other: \"\" },\n 13: { BarCodeStr: \"\", QuestionNo: 69, Category: \"二、痠痛症狀調查\", titleNo: \"09\", Title: \"右手/右手腕\", SelectTitle: \"○0 ○1 ○2 ○3 ○4 ○5\", Answer: \"\", Other: \"\" },\n 14: { BarCodeStr: \"\", QuestionNo: 69, Category: \"二、痠痛症狀調查\", titleNo: \"10\", Title: \"左臀/左大腿\", SelectTitle: \"○0 ○1 ○2 ○3 ○4 ○5\", Answer: \"\", Other: \"\" },\n 15: { BarCodeStr: \"\", QuestionNo: 69, Category: \"二、痠痛症狀調查\", titleNo: \"11\", Title: \"右臀/右大腿\", SelectTitle: \"○0 ○1 ○2 ○3 ○4 ○5\", Answer: \"\", Other: \"\" },\n 16: { BarCodeStr: \"\", QuestionNo: 69, Category: \"二、痠痛症狀調查\", titleNo: \"12\", Title: \"左膝\", SelectTitle: \"○0 ○1 ○2 ○3 ○4 ○5\", Answer: \"\", Other: \"\" },\n 17: { BarCodeStr: \"\", QuestionNo: 69, Category: \"二、痠痛症狀調查\", titleNo: \"13\", Title: \"右膝\", SelectTitle: \"○0 ○1 ○2 ○3 ○4 ○5\", Answer: \"\", Other: \"\" },\n 18: { BarCodeStr: \"\", QuestionNo: 69, Category: \"二、痠痛症狀調查\", titleNo: \"14\", Title: \"左腳踝/左腳\", SelectTitle: \"○0 ○1 ○2 ○3 ○4 ○5\", Answer: \"\", Other: \"\" },\n 19: { BarCodeStr: \"\", QuestionNo: 69, Category: \"二、痠痛症狀調查\", titleNo: \"15\", Title: \"右腳踝/右腳\", SelectTitle: \"○0 ○1 ○2 ○3 ○4 ○5\", Answer: \"\", Other: \"\" },\n 20: { BarCodeStr: \"\", QuestionNo: 69, Category: \"二、痠痛症狀調查\", titleNo: \"16\", Title: \"其他症狀、病史說明\", SelectTitle: \"_\", Answer: \"\", Other: \"\" },\n });\n const [done, setDone] = React.useState(false);\n const [preDone, setpreDone] = React.useState(false);\n const intl = useIntl();\n React.useEffect(() => {\n //寫入BarCodeStr\n let obj = Object.values(uploadFormat).reduce((o, { }, index) => {\n o[index] = { BarCodeStr: UserInfo.BarCodeStr }\n return o\n }, {})\n let newitem = _.merge(uploadFormat, obj);\n // console.log(newitem)\n setUpload(prevState => newitem);\n\n }, [])\n const { enqueueSnackbar } = useSnackbar();\n\n // React.useEffect(() => {\n // console.log(numerator, denominator)\n // console.log((numerator / denominator) * 100)\n // }, [uploadFormat])\n const validator = () => {\n const form = formRef.current; //參數1\n if (form.checkValidity()) {\n // console.log(\"全部通過\")\n //若驗證通過,刪除錯誤提示\n for (let i = 0; i < form.elements.length; i++) {\n const element = form.elements[i];\n\n if (Object.keys(uploadFormat).includes(element.name)) {\n setUpload(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\", \"helperText\"])\n }));\n }\n\n }\n return true;\n } else {\n // const form = formRef.current;\n // console.log(\"還沒通過\")\n alert(intl.formatMessage({ id: \"尚有問題未完成\" }));\n for (let i = 0; i < form.elements.length; i++) {\n const element = form.elements[i];\n if (element.tagName !== 'button' && element.willValidate && !element.validity.valid) { //提交按鈕不用驗證\n console.log(element.validationMessage, element.name);\n console.log(element.value)\n // console.log(element.value, element.validationMessage, element.name, element.tagName)\n if (Object.keys(uploadFormat).includes(element.name)) {\n setUpload(prevState => ({\n ...prevState,\n [element.name]: { ...prevState[element.name], error: true, helperText: element.validationMessage }\n }));\n }\n\n\n } else {//驗證通過,自訂訊息\n //有在settingObj的\n console.log(\"Pass\", element.value, element.validationMessage, element.name, element.tagName)\n if (Object.keys(uploadFormat).includes(element.name)) {\n setUpload(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\", \"helperText\"])\n }));\n }\n\n }\n }\n return false;\n }\n }\n\n const handleSubmit = e => {\n e.preventDefault();\n // console.log(uploadFormat)\n //setError(!error);\n if (validator()) {\n\n dispatch(actions.TAB_EDIT({ editing: true, key: 69 }))\n\n PF.instance({\n method: \"post\",\n url: PF.url + \"/Questionaire/Insert\",\n data: Qs.stringify({ list: Object.values(uploadFormat) }),\n headers: { token: sessionStorage.token }\n })\n .then(function (response) {\n console.log(response.data)\n const { TotalRecord, ErrorMessage } = response.data\n if (TotalRecord <= 0) {\n // alert(\"問卷提交出錯\\r\\n\" + ErrorMessage + \"請致電 04-2255-2555 #169 企業健檢\")\n enqueueSnackbar(intl.formatMessage({ id: \"update fail\" }), { variant: \"error\", style: { whiteSpace: 'pre-line' } });\n } else {\n setActiveStep((prevActiveStep) => prevActiveStep + 1);\n setDone(true);\n enqueueSnackbar(intl.formatMessage({ id: \"update success\" }), { variant: \"success\", style: { whiteSpace: 'pre-line' } });\n }\n })\n }\n }\n const BodyObj = {\n 5: { cx: 52.5, cy: 10 },//OK\"頸部\"\n 6: { cx: 52.5, cy: 20 },//OK\"上背部\"\n 7: { cx: 52.5, cy: 37.5 },//OK\"下背部\"\n 8: { cx: 45, cy: 15, ax: 25, ay: 15 },//OK\"左肩部\"\n 9: { cx: 60, cy: 15, ax: 7.5, ay: 15 },//OK\"右肩部\"\n 10: { cx: 40, cy: 30, ax: 27.5, ay: 30 },//OK\"左手肘/左前臂\"\n 11: { cx: 65, cy: 30, ax: 5, ay: 30 },//OK\"右手肘/右前臂\"\n 12: { cx: 40, cy: 42.5, ax: 28, ay: 42.5 },//OK\"左手/左手腕\"\n 13: { cx: 65, cy: 42.5, ax: 4, ay: 42.5 },//OK\"右手/右手腕\"\n 14: { cx: 47.5, cy: 52, ax: 22.5, ay: 52 },//OK\"左臀/左大腿\"\n 15: { cx: 57.5, cy: 52, ax: 10, ay: 52 },//OK\"右臀/右大腿\"\n 16: { cx: 47.5, cy: 67.5, ax: 22.5, ay: 67.5 },//OK\"左膝\"\n 17: { cx: 57.5, cy: 67.5, ax: 10, ay: 67.5 },//OK\"右膝\"\n 18: { cx: 47.5, cy: 90, ax: 20, ay: 90 },//OK\"左腳踝/左腳\"\n 19: { cx: 57.5, cy: 90, ax: 12, ay: 90 },//OK\"右腳踝/右腳\"\n }\n const handleRadioChange = e => {\n // e.prevetDefault();\n if (!done) {\n const { name, value } = e.target;\n // console.log(name, value)\n // setValue(value);\n if (name === \"2\" && value.includes(\"否\")) { //選2結束\n // console.log(\"predone\");\n setpreDone(true);\n setDenominator(2);\n //清除Answer\n Object.keys(uploadFormat).forEach(k => {\n if (k > 2) {\n uploadFormat[k].Answer = \"\"\n }\n })\n setUpload(prevState => ({\n ...prevState,\n [name]: { ...prevState[name], BarCodeStr: UserInfo.BarCodeStr, Answer: value }\n }))\n\n if (uploadFormat[1].Answer !== \"\") {\n setNumerator(prev => 2)\n } else {\n setNumerator(prev => 1)\n }\n\n } else if (name === \"2\") { //選2繼續,且是\n setpreDone(false);\n setDenominator(18);\n // console.log(\"繼續\");\n //console.log(uploadFormat)\n setUpload(prevState => ({\n ...prevState,\n [name]: { ...prevState[name], BarCodeStr: UserInfo.BarCodeStr, Answer: value }\n }))\n if (uploadFormat[name].Answer == \"\") {\n setNumerator(prev => prev + 1)\n }\n\n } else if (name === \"1\") {\n setUpload(prevState => ({\n ...prevState,\n [name]: { ...prevState[name], BarCodeStr: UserInfo.BarCodeStr, Answer: value }\n }))\n if (uploadFormat[name].Answer == \"\") {\n setNumerator(prev => prev + 1)\n }\n }\n else {\n if (!preDone) {\n setUpload(prevState => ({\n ...prevState,\n [name]: { ...prevState[name], BarCodeStr: UserInfo.BarCodeStr, Answer: value }\n }))\n if (uploadFormat[name].Answer == \"\") {\n setNumerator(prev => prev + 1)\n }\n }\n\n }\n //console.log(uploadFormat)\n\n if (name >= 5) {\n setCircle(prevState => ({\n r: 5,\n cx: BodyObj[name].cx,\n cy: BodyObj[name].cy\n }));\n setColor(colorList[value]);\n }\n if (name >= 5) {\n setFrontCircle(prevState => ({\n r: name >= 8 ? 5 : 0,\n cx: BodyObj[name].ax || 5,\n cy: BodyObj[name].ay || 5\n }));\n }\n\n }\n }\n const handleTxtChange = e => {\n if (!done) {\n if (!preDone) {\n const { name, value } = e.target;\n setUpload(prevState => ({\n ...prevState,\n [name]: { ...prevState[name], BarCodeStr: UserInfo.BarCodeStr, Answer: value }\n }))\n setCircle(prevState => ({\n r: 0,\n cx: 5,\n cy: 5,\n }))\n setFrontCircle(prevState => ({\n r: 0,\n cx: 5,\n cy: 5,\n }))\n }\n\n }\n }\n const colorList = {\n 0: \"#1976d2\", 1: \"#4caf50\", 2: \"#ffea00\", 3: \"#ff9100\", 4: \"#FF0000\", 5: \"#ab003c\"\n }\n const [color, setColor] = React.useState(\"#FF0000\")\n const formRef = React.createRef();\n const [circle, setCircle] = React.useState({\n cx: 5, cy: 5, r: 0\n })\n const [frontCircle, setFrontCircle] = React.useState({\n cx: 5, cy: 5, r: 0\n })\n return (\n \n

\n
\n
\n \n \n \n \n
\n
\n \n {Object.values(uploadFormat).slice(1, 4).map((item, index) => {\n return (\n \n {item.titleNo + \".\"}\n \n {item.SelectTitle.replaceAll(\"○\", \"\").split(\" \").map(pro => {\n return (\n } label={} onMouseDown={() => { playActive() }} />)\n })}\n \n {item.error ? : null}\n )\n })}\n
\n
\n \n
\n
\n \n \n \n {Object.values(uploadFormat).slice(5, 20).map((item, index) => {\n return (\n \n {item.titleNo + \".\"}\n \n {item.SelectTitle.replaceAll(\"○\", \"\").split(\" \").map((pro, id) => {\n return (\n \n } label={<>{}{\".\"}{intl.formatMessage({ id: scoreObj[id] })}} onMouseDown={() => { playActive() }} />\n )\n })}\n \n {item.error ? : null}\n )\n })}\n
\n \n {/* 最後一題 */}\n \n \n
\n
\n
\n \n
\n {!done ? (
\n \n
) : null}\n
\n
\n )\n\n\n\n}\n\nexport default Questionaire69th\n","import React from 'react';\nimport Button from '@material-ui/core/Button';\nimport GridContainer from \"../components/Grid/GridContainer\";\nimport GridItem from \"../components/Grid/GridItem\";\nimport ListItem from \"@material-ui/core/ListItem\";\nimport _, { omit, pick, round, slice } from 'lodash';\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\nimport { FormControl, FormLabel, FormHelperText } from '@material-ui/core';\nimport { actions } from \"../reducers/app\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport PF from \"../_Services/publicFunction\";\nimport { Radio, Paper } from '@material-ui/core';\nimport RadioGroup from '@material-ui/core/RadioGroup';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport Typography from '@material-ui/core/Typography';\nimport Qs from \"qs\";\nimport LinearProgress from '@material-ui/core/LinearProgress';\nimport { makeStyles, withStyles } from '@material-ui/core/styles';\nimport useSound from 'use-sound';\nimport clickdown from '../sounds/clickdown.wav';\nimport clickup from '../sounds/clickdown.wav';\nimport { injectIntl, intlShape, useIntl, FormattedMessage } from 'react-intl';\nimport { useSnackbar } from \"notistack\";\n\n\nconst BorderLinearProgress = withStyles((theme) => ({\n root: {\n height: 8,\n // borderRadius: 5,\n },\n colorPrimary: {\n //backgroundColor: theme.palette.grey[theme.palette.type === 'light' ? 200 : 700],\n },\n bar: {\n // borderRadius: 5,\n backgroundColor: '#1a90ff',\n },\n}))(LinearProgress);\n\nconst useStyles = makeStyles((theme) => ({\n formControl: {\n margin: theme.spacing(3),\n },\n button: {\n margin: theme.spacing(1, 1, 0, 0),\n },\n root: {\n color: theme.palette.type === \"dark\" ? \"#1a90ff\" : \"#3f51b5\"\n },\n submitButton: {\n width: \"100%\", background: '#2E3B55', fontWeight: \"bold\",\n \"&:hover\": {\n background: '#fffff',\n // color:'#2E3B55'\n }\n },\n\n}));\n\nconst Questionaire70th = props => {\n const [progress, setProgress] = React.useState(0);\n const [numerator, setNumerator] = React.useState(0)\n const [denominator, setDenominator] = React.useState(3)\n const intl = useIntl();\n\n const initialRender = React.useRef(true);\n\n const { handleNext, setActiveStep } = props;\n const dispatch = useDispatch();\n const { UserInfo } = useSelector(state => ({\n UserInfo: state.app.UserInfo,\n }));\n const [playActive] = useSound(\n clickdown,\n { volume: 0.25 }\n );\n const [playOn] = useSound(\n clickup,\n { volume: 0.25 }\n );\n const classes = useStyles();\n const [uploadFormat, setUpload] = React.useState({\n 0: { BarCodeStr: \"\", QuestionNo: 70, Category: \"填寫前說明\", titleNo: \"\", Title: \"說明:本測驗不適用於已被診斷出心血管疾病者或有接受治療者。\", SelectTitle: \"\", Answer: \"\", Other: \"\" },\n 1: { BarCodeStr: \"\", QuestionNo: 70, Category: \"一、基本資料\", titleNo: 1, Title: \"你有沒有吸煙:\", SelectTitle: \"○沒有 ○有吸煙\", Answer: \"\", Other: \"\" },\n 2: { BarCodeStr: \"\", QuestionNo: 70, Category: \"一、基本資料\", titleNo: 2, Title: \"你有沒有服用高血壓藥物:\", SelectTitle: \"○沒有 ○有服用高血壓藥物\", Answer: \"\", Other: \"\" },\n 3: { BarCodeStr: \"\", QuestionNo: 70, Category: \"一、基本資料\", titleNo: 3, Title: \"你有沒有糖尿病史:\", SelectTitle: \"○沒有 ○有糖尿病史\", Answer: \"\", Other: \"\" },\n 4: { BarCodeStr: \"\", QuestionNo: 70, Category: \"體檢後\", titleNo: \"\", Title: \"取得檢測數字[總膽固醇]-[高密度脂蛋白膽固醇]-[收縮壓],進行風險評估試算,產生[未來10年心血管疾病風險評估表]\", SelectTitle: \"\", Answer: \"\", Other: \"\" },\n });\n const [value, setValue] = React.useState('');\n const [done, setDone] = React.useState(false);\n\n React.useEffect(() => {\n //寫入BarCodeStr\n let obj = Object.values(uploadFormat).reduce((o, { }, index) => {\n o[index] = { BarCodeStr: UserInfo.BarCodeStr }\n return o\n }, {})\n let newitem = _.merge(uploadFormat, obj);\n // console.log(newitem)\n setUpload(prevState => newitem);\n\n }, []);\n const { enqueueSnackbar } = useSnackbar();\n\n // React.useEffect(() => {\n // if (initialRender.current) {\n // initialRender.current = false;\n // } else {\n\n // setProgress(prev=>prev<99.99?(prev+33.33):prev)\n // }\n\n // }, [uploadFormat])\n const validator = () => {\n const form = formRef.current; //參數1\n if (form.checkValidity()) {\n // console.log(\"全部通過\")\n //若驗證通過,刪除錯誤提示\n for (let i = 0; i < form.elements.length; i++) {\n const element = form.elements[i];\n\n if (Object.keys(uploadFormat).includes(element.name)) {\n setUpload(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\", \"helperText\"])\n }));\n }\n\n }\n return true;\n } else {\n // const form = formRef.current;\n // console.log(\"還沒通過\")\n alert(intl.formatMessage({ id: \"尚有問題未完成\" }));\n for (let i = 0; i < form.elements.length; i++) {\n const element = form.elements[i];\n if (element.tagName !== 'button' && element.willValidate && !element.validity.valid) { //提交按鈕不用驗證\n console.log(element.validationMessage, element.name);\n console.log(element.value)\n // console.log(element.value, element.validationMessage, element.name, element.tagName)\n if (Object.keys(uploadFormat).includes(element.name)) {\n setUpload(prevState => ({\n ...prevState,\n [element.name]: { ...prevState[element.name], error: true, helperText: element.validationMessage }\n }));\n }\n\n\n } else {//驗證通過,自訂訊息\n //有在settingObj的\n console.log(\"Pass\", element.value, element.validationMessage, element.name, element.tagName)\n if (Object.keys(uploadFormat).includes(element.name)) {\n setUpload(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\", \"helperText\"])\n }));\n }\n\n }\n }\n return false;\n }\n }\n const handleSubmit = e => {\n e.preventDefault();\n //setError(!error);\n if (validator()) {\n\n dispatch(actions.TAB_EDIT({ editing: true, key: 70 }))\n\n PF.instance({\n method: \"post\",\n url: PF.url + \"/Questionaire/Insert\",\n data: Qs.stringify({ list: Object.values(uploadFormat) }),\n headers: { token: sessionStorage.token }\n })\n .then(function (response) {\n console.log(response.data)\n const { TotalRecord, ErrorMessage } = response.data\n if (TotalRecord <= 0) {\n // alert(\"問卷提交出錯\\r\\n\" + ErrorMessage + \"請致電 04-2255-2555 #170 企業健檢\")\n enqueueSnackbar(intl.formatMessage({ id: \"update fail\" }), { variant: \"error\", style: { whiteSpace: 'pre-line' } });\n } else {\n setActiveStep((prevActiveStep) => prevActiveStep + 1);\n setDone(true);\n enqueueSnackbar(intl.formatMessage({ id: \"update success\" }), { variant: \"success\", style: { whiteSpace: 'pre-line' } });\n }\n })\n }\n }\n\n const handleRadioChange = e => {\n // e.prevetDefault();\n if (!done) {\n const { name, value } = e.target;\n\n // console.log(name, value)\n // setValue(value);\n setUpload(prevState => ({\n ...prevState,\n [name]: { ...prevState[name], BarCodeStr: UserInfo.BarCodeStr, Answer: value }\n }))\n if (uploadFormat[name].Answer === \"\") {\n //setProgress(prev => prev < 99.99 ? (prev + 33.33) : prev)\n setNumerator(prev => prev + 1)\n }\n }\n }\n const formRef = React.createRef();\n\n\n return (\n \n

\n
\n
\n \n \n
\n
\n \n {Object.values(uploadFormat).slice(1, 4).map((item, index) => {\n return (\n \n {item.titleNo + \".\"}\n \n {item.SelectTitle.replaceAll(\"○\", \"\").split(\" \").map(pro => {\n return (\n } label={} onMouseDown={() => { playActive() }} />)\n })}\n \n {item.error ? : null}\n )\n })}\n
\n
\n \n \n
\n
\n \n
\n {!done ? (
\n \n
) : null}\n
\n
\n )\n\n\n\n}\n\nexport default Questionaire70th\n","// 2022/12新增\n// 過敏史\n// 用藥史\n// 家族病史\n\n\nimport React, { useRef } from 'react';\n// import './App.css';\n// import Signature from './Signature';\nimport TextField from '@material-ui/core/TextField';\nimport { makeStyles, withStyles } from '@material-ui/core/styles';\nimport Button from '@material-ui/core/Button';\nimport GridContainer from \"../components/Grid/GridContainer\";\nimport GridItem from \"../components/Grid/GridItem\";\nimport FormGroup from '@material-ui/core/FormGroup';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport List from \"@material-ui/core/List\";\nimport ListItem from \"@material-ui/core/ListItem\";\nimport _, { omit, pick, round, slice } from 'lodash';\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\nimport { FormControl, FormLabel, FormHelperText, Paper, MenuItem, useForkRef, Select, InputLabel, IconButton, Grid } from '@material-ui/core';\nimport { MuiPickersUtilsProvider, KeyboardDatePicker, DatePicker, KeyboardDateTimePicker, KeyboardTimePicker } from \"@material-ui/pickers\";\nimport MomentUtils from \"@date-io/moment\";\nimport TodayIcon from \"@material-ui/icons/UpdateOutlined\";\nimport moment from \"moment\";\nimport Typography from '@material-ui/core/Typography';\n// import { PDFDownloadLink, Document, Page,PDFViewer } from '@react-pdf/renderer'\n// import axios from \"axios\";\nimport Qs from \"qs\";\n// import jsPDF from 'jspdf';\n// import html2canvas from \"html2canvas\";\nimport { actions } from \"../reducers/app\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport PF from \"../_Services/publicFunction\";\nimport LinearProgress from '@material-ui/core/LinearProgress';\nimport useSound from 'use-sound';\nimport clickdown from '../sounds/clickdown.wav';\nimport clickup from '../sounds/clickdown.wav';\nimport { useReactToPrint } from 'react-to-print';\nimport ReactToPrint from 'react-to-print';\nimport Questionaire67th from './67th';\nimport { props } from 'ramda';\nimport { injectIntl, intlShape, useIntl, FormattedMessage } from 'react-intl';\nimport { useSnackbar } from \"notistack\";\nimport CancelIcon from '@material-ui/icons/Cancel';\n\n// import { ComponentToPrint } from './ComponentToPrint';\n\n// var domToPdf = require('dom-to-pdf');\n// const domToImage = require('dom-to-image');\n\n// var instance = axios.create({\n// // timeout: 1000, //暫不設置timeout\n// async: true,\n// crossDomain: true,\n// headers: {\n// \"Content-Type\": \"application/x-www-form-urlencoded;charset=utf-8\",\n// \"X-Requested-With\": \"XMLHttpRequest\", //for MVC Request.IsAjaxRequest()\n// }\n// });\n\nconst ref = React.createRef();\nconst BorderLinearProgress = withStyles((theme) => ({\n root: {\n height: 8,\n // borderRadius: 5,\n },\n colorPrimary: {\n //backgroundColor: theme.palette.grey[theme.palette.type === 'light' ? 200 : 700],\n },\n bar: {\n // borderRadius: 5,\n backgroundColor: '#1a90ff',\n },\n}))(LinearProgress);\n\n\nconst Questionaire80th = React.forwardRef((props, ref) => {\n // const { tabList } = useSelector(state => ({\n // tabList: state.app.tabList,\n // }));\n const intl = useIntl();\n\n const [numerator, setNumerator] = React.useState(0);\n const [denominator, setDenominator] = React.useState(17);\n React.useEffect(() => {\n console.log(\"分子\", numerator);\n }, [numerator])\n React.useEffect(() => {\n console.log(\"分母\", denominator);\n }, [denominator])\n\n\n const dispatch = useDispatch();\n\n const { handleNext, setActiveStep } = props;\n\n const initialRender = React.useRef(true);\n const [imageURL, setImage] = React.useState(null); //提交=>簽名檔img\n // const [open, setOpen] = React.useState(false);\n const [playActive] = useSound(\n clickdown,\n { volume: 0.25 }\n );\n const [playOn] = useSound(\n clickup,\n { volume: 0.25 }\n );\n const [uploadFormat, setUpload] = React.useState({\n 0: { BarCodeStr: \"\", QuestionNo: 80, Category: \"作業經歷\", titleNo: 1, Title: \"\", SelectTitle: \"曾經從事_,起始日期:_年_月,截止日期:_年_月,共_年_月\", Answer: \"\", Other: \"\" },\n 1: { BarCodeStr: \"\", QuestionNo: 80, Category: \"作業經歷\", titleNo: 2, Title: \"\", SelectTitle: \"目前從事_,起始日期:_年_月,截止日期:_年_月,共_年_月,是否需輪班 □是(□兩班制 □三班制 □四班制 □其他:_) □否\", Answer: \"\", Other: \"\" },\n 2: { BarCodeStr: \"\", QuestionNo: 80, Category: \"作業經歷\", titleNo: 3, Title: \"\", SelectTitle: \"過去1個月,平均每週工時為:_小時(請以檢查日前1個月填寫);過去6個月,平均每週工時為:_小時(請以檢查日前6個月填寫)\", Answer: \"\", Other: \"\" },\n 3: { BarCodeStr: \"\", QuestionNo: 80, Category: \"作業檢查時期\", titleNo: 1, Title: \"檢查時期(原因)\", SelectTitle: \"□新進員工(受僱時) □定期檢查\", Answer: \"\", Other: \"\" },\n 4: { BarCodeStr: \"\", QuestionNo: 80, Category: \"既往病史\", titleNo: 1, Title: \"您是否曾患有下列慢性疾病:(請在適當項目前打勾)\", SelectTitle: \"□高血壓 □糖尿病 □心臟病 □癌症_ □白內障 □中風 □癲癇 □氣喘 □慢性氣管炎、肺氣腫 □肺結核 □腎臟病 □肝病 □貧血 □中耳炎 □聽力障礙 □甲狀腺疾病 □消化性潰瘍、胃炎 □逆流性食道炎 □骨折_ □手術開刀_ □其他慢性病_ □以上皆無\", Answer: \"\", Other: \"\" },\n 5: { BarCodeStr: \"\", QuestionNo: 80, Category: \"生活習慣\", titleNo: 1, Title: \"請問您過去一個月內是否有吸菸?\", SelectTitle: \"□從未吸菸 □偶爾吸(不是天天) □(幾乎)每天吸,平均每天吸_支,已吸菸_年 □已經戒菸,戒了_年_個月。\", Answer: \"\", Other: \"\" },\n 6: { BarCodeStr: \"\", QuestionNo: 80, Category: \"生活習慣\", titleNo: 2, Title: \"請問您最近六個月內是否有嚼食檳榔?\", SelectTitle: \"□從未嚼食檳榔 □偶爾嚼(不是天天) □(幾乎)每天嚼,平均每天嚼_顆,已嚼_年 □已經戒食,戒了_年_個月。\", Answer: \"\", Other: \"\" },\n 7: { BarCodeStr: \"\", QuestionNo: 80, Category: \"生活習慣\", titleNo: 3, Title: \"請問您過去一個月內是否有喝酒?\", SelectTitle: \"□從未喝酒 □偶爾喝(不是天天) □(幾乎)每天喝,平均每週喝_次,最常喝_酒,每次_瓶 □已經戒酒,戒了_年_個月。\", Answer: \"\", Other: \"\" },\n 8: { BarCodeStr: \"\", QuestionNo: 80, Category: \"生活習慣\", titleNo: 4, Title: \"請問您於工作日期間\", SelectTitle: \"平均每天睡眠時間為:_小時。\", Answer: \"\", Other: \"\" },\n 9: { BarCodeStr: \"\", QuestionNo: 80, Category: \"自覺症狀\", titleNo: 1, Title: \"您最近三個月是否常有下列症狀:(請在適當項目前打勾)\", SelectTitle: \"□咳嗽□咳痰□呼吸困難□胸痛□心悸□頭暈□頭痛 □耳鳴 □倦怠 □噁心 □腹痛 □便秘 □腹瀉 □血便 □上背痛 □下背痛 □手腳麻痛 □關節疼痛 □排尿不適 □多尿、頻尿 □手腳肌肉無力 □體重減輕3公斤以上 □其他症狀_ □以上皆無\", Answer: \"\", Other: \"\" },\n 10: { BarCodeStr: \"\", QuestionNo: 80, Category: \"填表說明\", titleNo: 1, Title: \"請受檢員工於勞工健檢前,填妥基本資料、作業經歷、檢查時期、既往病史、生活習慣及自覺症狀六大項,再交由醫護人員作確認,以有效篩檢出疾病;若事業單位已提供受檢員工基本資料及作業經歷電子檔給指定醫療機構,可不必請受檢員工重複填寫。\", SelectTitle: \"\", Answer: \"\", Other: \"\" },\n 11: { BarCodeStr: \"\", QuestionNo: 80, Category: \"填表說明\", titleNo: 2, Title: \"自覺症狀乙項,請受檢者依自身實際症狀勾選。\", SelectTitle: \"\", Answer: \"\", Other: \"\" },\n 12: { BarCodeStr: \"\", QuestionNo: 80, Category: \"基本資料\", titleNo: 1, Title: \"\", SelectTitle: \"事業單位名稱:_\", Answer: \"\", Other: \"\" },\n 13: { BarCodeStr: \"\", QuestionNo: 80, Category: \"基本資料\", titleNo: 2, Title: \"\", SelectTitle: \"受雇日期:_\", Answer: \"\", Other: \"\" },\n 14: { BarCodeStr: \"\", QuestionNo: 80, Category: \"過敏史\", titleNo: 1, Title: \"過敏史:(請在適當項目前打勾)\", SelectTitle: \"□有_ □無\", Answer: \"\", Other: \"\" },\n 15: { BarCodeStr: \"\", QuestionNo: 80, Category: \"用藥史\", titleNo: 1, Title: \"用藥史:(請在適當項目前打勾)\", SelectTitle: \"□糖尿病 □高血壓 □心臟病 □腎臟病 □其他_□以上皆無\", Answer: \"\", Other: \"\" },\n 16: { BarCodeStr: \"\", QuestionNo: 80, Category: \"家族病史\", titleNo: 1, Title: \"請問您的父母是否曾患有下列慢性疾病:(請在適當項目前打勾)\", SelectTitle: \"□高血壓 □糖尿病 □心臟病 □癌症_ □白內障 □中風 □癲癇 □氣喘 □慢性氣管炎、肺氣腫 □肺結核 □腎臟病 □肝病 □貧血 □中耳炎 □聽力障礙 □甲狀腺疾病 □消化性潰瘍、胃炎 □逆流性食道炎\", Answer: \"\", Other: \"\" },\n });\n // const dispatch = useDispatch();\n const { UserInfo } = useSelector(state => ({\n UserInfo: state.app.UserInfo,\n }));\n\n const { Confirme } = useSelector(state => ({\n Confirme: state.app.Confirme,\n }));\n const isShown = Confirme;\n // console.log(isShown)\n\n //判斷API\n const questurl = window.location.protocol.slice(0, -1) === 'https' ? \"https://mj.mornjoy.com.tw/labourapi/LabourCheck\" : \"http://mj.mornjoy.com.tw/labourapi/LabourCheck\"\n\n const [formData, setFormData] = React.useState({\n relationship: '',\n name: '',\n phonenum: '',\n otherRelationship: ''\n });\n React.useEffect(() => {\n PF.instance({\n method: \"POST\",\n url: questurl + \"/GetLabourRelation\",\n data: Qs.stringify({ Action: \"GET\", parameter: { id: UserInfo.PersonalId } }),\n\n })\n\n .then(function (response) {\n const { TotalRecord, rows } = response.data;\n // let obj = rows\n\n if (rows[0]) {\n // console.log(rows[0])\n // console.log(rows)\n console.log(rows[0].relation)\n if (rows[0].relation == '父母' || rows[0].relation == '兄弟姊妹'\n || rows[0].relation == '配偶' || rows[0].relation == '親屬') {\n setFormData({\n relationship: rows[0].relation,\n name: rows[0].name,\n phonenum: rows[0].phonenum\n });\n } else {\n setFormData({\n relationship: '其他',\n otherRelationship: rows[0].relation,\n name: rows[0].name,\n phonenum: rows[0].phonenum\n });\n }\n }\n\n })\n\n }, [])\n\n const UpdateRelation = () => {\n\n\n\n let X = {\n Action: \"GET\",\n parameter: {\n BarCodeStr: UserInfo.BarCodeStr,\n id: UserInfo.PersonalId,\n relation: formData.relationship,\n UserName: formData.name,\n phonenum: formData.phonenum,\n }\n }\n if (formData.relationship === '其他') {\n X.parameter.relation = formData.otherRelationship; // 赋值\n }\n PF.instance({\n method: \"post\",\n url: questurl + \"/LabourRelationInsert\",\n data: Qs.stringify(X),\n })\n }\n\n const handleChange = (event) => {\n const { name, value } = event.target;\n\n // 更新狀態\n setFormData(prevState => ({\n ...prevState,\n [name]: value\n }));\n\n };\n\n\n const Update80th = () => {\n //section 2 到3\n let y = moment(workExp.usedStart.value + '01日', 'YYYY年MM月DD日')\n let z = moment(workExp.usedEnd.value + '01日', 'YYYY年MM月DD日')\n let M = moment(workExp.rightNowStart.value + '01日', 'YYYY年MM月DD日')\n let N = moment(workExp.rightNowEnd.value + '01日', 'YYYY年MM月DD日')\n\n let HireD = moment(personal.hireDate.value, 'YYYY年MM月DD日')\n\n let fourth = Object.values(array4th).reduce((a, b) => a + (b.checked ? \"||\" + b.systemLabel : \"\"), \"\");\n let fourthTxt = Object.values(array4thTxtObj).reduce((a, b) => a + (\"||\" + b.text), \"\");\n //section 5\n let fiveth_1 = Object.values(array5_1).reduce((a, b) => a + (b.checked ? \"||\" + b.systemLabel : \"\"), \"\");\n let fiveth_1Txt = Object.values(array5thCheck).slice(1, 5).reduce((a, b) => a + \"||\" + b.value, \"\")\n let fiveth_2 = Object.values(array5_2).reduce((a, b) => a + (b.checked ? \"||\" + b.systemLabel : \"\"), \"\");\n let fiveth_2Txt = Object.values(array5thCheck).slice(6, 10).reduce((a, b) => a + \"||\" + b.value, \"\")\n let fiveth_3 = Object.values(array5_3).reduce((a, b) => a + (b.checked ? \"||\" + b.systemLabel : \"\"), \"\");\n let fiveth_3Txt = Object.values(array5thCheck).slice(11, 16).reduce((a, b) => a + \"||\" + b.value, \"\")\n //setction 6\n let Sixth = Object.values(array6th).reduce((a, b) => a + (b.checked ? \"||\" + b.systemLabel : \"\"), \"\");\n //輪班\n let Shift = Object.values(YesShiftChkObj).reduce((a, b) => a + (b.checked ? \"||\" + b.systemLabel : \"\"), \"\");\n // console.log(y.year);\n let Sixth0 = Object.values(array60th).reduce((a, b) => a + (b.checked ? \"||\" + b.systemLabel : \"\"), \"\");\n let Sixth0Txt = Object.values(array60thTxtObj).reduce((a, b) => a + (\"||\" + b.text), \"\");\n\n let Seventh = Object.values(array7th).reduce((a, b) => a + (b.checked ? \"||\" + b.systemLabel : \"\"), \"\");\n let SeventhTxt = Object.values(array7thTxtObj).reduce((a, b) => a + (\"||\" + b.text), \"\");\n\n let Eighth = Object.values(array8th).reduce((a, b) => a + (b.checked ? \"||\" + b.systemLabel : \"\"), \"\");\n let EighthTxt = Object.values(array8thTxtObj).reduce((a, b) => a + (\"||\" + b.text), \"\");\n\n\n // console.log(HireD.year());\n\n setUpload(prevState => ({\n ...prevState,\n 0: { ...prevState[0], BarCodeStr: UserInfo.BarCodeStr, Other: ((workExp.usedJob.value === null || workExp.usedJob.value.length === 0) ? '無' : (forgot ? workExp.usedJob.value + '(忘記日期)' : workExp.usedJob.value)) + \"||\" + (workExp.usedStart.value === null ? '--' : (y.year() - 1911)) + \"||\" + (workExp.usedStart.value === null ? '--' : (y.month() + 1)) + \"||\" + (workExp.usedEnd.value === null ? '--' : (z.year() - 1911)) + \"||\" + (workExp.usedEnd.value === null ? '--' : (z.month() + 1)) + \"||\" + (workExp.usedPeriod_Y.value === null ? '--' : workExp.usedPeriod_Y.value) + \"||\" + (workExp.usedPeriod_M.value === null ? '--' : workExp.usedPeriod_M.value) },\n 1: {\n ...prevState[1], BarCodeStr: UserInfo.BarCodeStr, Other: ((workExp.rightNowJob.value === null || workExp.rightNowJob.value.length === 0) ? '無' : workExp.rightNowJob.value) + \"||\" + (workExp.rightNowJob.value === null ? '--' : (M.year() - 1911)) + \"||\" + (workExp.rightNowJob.value === null ? '--' : (M.month() + 1)) + \"||\" + (workExp.rightNowEnd.value === null ? '--' : (N.year() - 1911)) + \"||\" + (workExp.rightNowEnd.value === null ? '--' : (N.month() + 1)) + \"||\" + (workExp.rightNowPeriod_Y.value === null ? '--' : workExp.rightNowPeriod_Y.value) + \"||\" + (workExp.rightNowPeriod_M.value === null ? '--' : workExp.rightNowPeriod_M.value)\n + \"||\" + (YesShiftChkObj.ShiftOther.value || \"\")\n , Answer: !shiftChkObj.Yes ? (shiftChkObj.No ? \"否\" : \"\") : '是(' + \"||\" + Shift.substring(2, 999)\n },\n\n\n\n\n 2: { ...prevState[2], BarCodeStr: UserInfo.BarCodeStr, Other: (workExp.workhours_1.value === null ? '--' : workExp.workhours_1.value) + \"||\" + (workExp.workhours_2.value === null ? '--' : workExp.workhours_2.value) },\n 3: { ...prevState[3], BarCodeStr: UserInfo.BarCodeStr, Answer: checked3rd.checkA ? \"新進員工(受僱時) \" : \"定期檢查\" },\n 4: { ...prevState[4], BarCodeStr: UserInfo.BarCodeStr, Answer: fourth.substring(2, 999), Other: fourthTxt.substring(2, 999) },\n 5: { ...prevState[5], BarCodeStr: UserInfo.BarCodeStr, Answer: fiveth_1.substring(2, 999), Other: fiveth_1Txt.substring(2, 999) },\n 6: { ...prevState[6], BarCodeStr: UserInfo.BarCodeStr, Answer: fiveth_2.substring(2, 999), Other: fiveth_2Txt.substring(2, 999) },\n 7: { ...prevState[7], BarCodeStr: UserInfo.BarCodeStr, Answer: fiveth_3.substring(2, 999), Other: fiveth_3Txt.substring(2, 999) },\n 8: { ...prevState[8], BarCodeStr: UserInfo.BarCodeStr, Other: array5thCheck.sleep.value },\n 9: { ...prevState[9], BarCodeStr: UserInfo.BarCodeStr, Answer: Sixth.substring(2, 999), Other: array4thTxtObj.W6.text },\n 10: { ...prevState[10], BarCodeStr: UserInfo.BarCodeStr },\n 11: { ...prevState[11], BarCodeStr: UserInfo.BarCodeStr, },\n 12: { ...prevState[12], BarCodeStr: UserInfo.BarCodeStr, Other: personal.CustName.value },\n 13: { ...prevState[13], BarCodeStr: UserInfo.BarCodeStr, Other: (HireD.year() === null || isNaN(HireD.year()) ? '--' : HireD.year() - 1911) + '/' + (HireD.month() === null || isNaN(HireD.month()) ? '--' : HireD.month() + 1) + '/' + (HireD.date() === null || isNaN(HireD.date()) ? '--' : HireD.date()) },\n 14: { ...prevState[14], BarCodeStr: UserInfo.BarCodeStr, Answer: Sixth0.substring(2, 999), Other: Sixth0Txt.substring(2, 999) }, //2049\n 15: { ...prevState[15], BarCodeStr: UserInfo.BarCodeStr, Answer: Seventh.substring(2, 999), Other: SeventhTxt.substring(2, 999) }, //2050\n 16: { ...prevState[16], BarCodeStr: UserInfo.BarCodeStr, Answer: Eighth.substring(2, 999), Other: EighthTxt.substring(2, 999) }, //2051\n\n }));\n\n // console.log(\"||\" + Shift.substring(2, 999));\n // console.log(\"||\" + (YesShiftChkObj.ShiftOther.value || \"\"));\n // console.log(\"||\" + !shiftChkObj.No ? 'false' : 'true');\n\n //列印\n // })\n // var doc = new jsPDF();\n // //return pdf; //Duke\n // //var doc = new jsPDF(pdf2);\n // //console.log(pdf);\n // //pdf.name = 'test.pdf'\n\n //var pdf = pdf2.output('blob');\n //pdf.name = 'test.pdf'\n //console.log(pdf);\n // var doc = pdf.output('blob')\n // let data = new FormData();\n // data.append('files', imageURL.getCanvas());\n // //console.log(data);\n // //var doc = btoa(pdf);\n // instance({\n // method: \"post\",\n // url: 'https://localhost:44311' + \"/Questionaire/Upload\",\n // data: data,\n // })\n // .then(function (response) {\n // console.log(response.data)\n // })\n }\n\n React.useEffect(() => {\n if (!initialRender.current) {\n\n PF.instance({\n method: \"post\",\n url: PF.url + \"/Questionaire/Insert\",\n data: Qs.stringify({ list: Object.values(uploadFormat) }),\n headers: { token: sessionStorage.token }\n })\n .then(function (response) {\n // console.log(response.data)\n const { TotalRecord, ErrorMessage } = response.data\n if (TotalRecord <= 0) {\n // alert(\"問卷提交出錯\\r\\n\" + ErrorMessage + \"請致電 04-2255-2555 #168 企業健檢\")\n enqueueSnackbar(intl.formatMessage({ id: \"update fail\" }), { variant: \"error\", style: { whiteSpace: 'pre-line' } });\n } else {\n setActiveStep((prevActiveStep) => prevActiveStep + 1);\n setImage(\"Image\");\n enqueueSnackbar(intl.formatMessage({ id: \"update success\" }), { variant: \"success\", style: { whiteSpace: 'pre-line' } });\n }\n })\n\n }\n }, [uploadFormat]); //避免循環\n\n // React.useEffect(() => {\n // if (initialRender.current) {\n // initialRender.current = false;\n // } else {\n\n // var element = document.getElementById('signature');\n // var options = {\n // filename: uploadFormat[0].BarCodeStr + '.pdf',\n // };\n // // var pdf = new jsPDF();\n\n // domToImage.toBlob(element).then((blob) => {\n // // var image = canvas.toDataURL(\"image/png\");\n // // pdf.addImage(image, 'JPEG', 0, 0);\n // // document.body.appendChild(image)\n // // var pdf2 = pdf.output('blob');\n // let data = new FormData();\n // data.append('files', blob, uploadFormat[0].BarCodeStr + \"-\" + new Date().toISOString().split('T')[0] + '.png')\n // PF.instance({\n // method: \"post\",\n // url: PF.url + \"/Questionaire/Upload\",\n // data: data,\n // headers: { token: sessionStorage.token }\n // })\n // .then(function (response) {\n // // alert(\"完成\")\n // //console.log(response.data)\n // })\n\n // })\n // }\n // }, [imageURL]); //避免循環\n\n\n // const handleChange = e => {\n // if (!_.isNil(imageURL)) {//已提交不得修改\n\n // }\n // }\n // const [recordObj, setObj] = React.useState({\n // name: \"\",\n // id: \"\"\n // });\n\n\n const [array4th, setArray4th] = React.useState({\n A4: { name: \"A4\", label: \"高血壓\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"高血壓 \" }\n , B4: { label: \"糖尿病\", name: \"B4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"糖尿病 \" }\n , C4: { label: \"心臟病\", name: \"C4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"心臟病 \" }\n , E4: { label: \"白內障\", name: \"E4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"白內障 \" }\n , F4: { label: \"中風\", name: \"F4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"中風 \" }\n , G4: { label: \"癲癇\", name: \"G4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"癲癇 \" }\n , H4: { label: \"氣喘\", name: \"H4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"氣喘 \" }\n , I4: { label: \"慢性氣管炎、肺氣腫\", name: \"I4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"慢性氣管炎、肺氣腫 \" }\n // , J4: { label: \"肺氣腫\", name: \"J4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"肺氣腫 \" }\n , K4: { label: \"肺結核\", name: \"K4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"肺結核 \" }\n , L4: { label: \"腎臟病\", name: \"L4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"腎臟病 \" }\n , M4: { label: \"肝病\", name: \"M4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"肝病 \" }\n , N4: { label: \"貧血\", name: \"N4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"貧血 \" }\n , O4: { label: \"中耳炎\", name: \"O4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"中耳炎 \" }\n , P4: { label: \"聽力障礙\", name: \"P4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"聽力障礙 \" }\n , Q4: { label: \"甲狀腺疾病\", name: \"Q4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"甲狀腺疾病 \" }\n , R4: { label: \"消化性潰瘍、胃炎\", name: \"R4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"消化性潰瘍、胃炎 \" }\n , S4: { label: \"逆流性食道炎\", name: \"S4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"逆流性食道炎\" }\n , D4: { label: \"癌症\", name: \"D4\", type: \"chkBoxTxT\", checked: false, gridWid: 6, systemLabel: \"癌症\" }\n , T4: { label: \"骨折\", name: \"T4\", type: \"chkBoxTxT\", checked: false, gridWid: 6, systemLabel: \"骨折\" }\n , V4: { label: \"手術開刀\", name: \"V4\", type: \"chkBoxTxT\", checked: false, gridWid: 6, systemLabel: \"手術開刀\" }\n , U4: { label: \"其他慢性病\", name: \"U4\", type: \"chkBoxTxT\", checked: false, gridWid: 6, systemLabel: \"其他慢性病\" }\n , allNone: { label: \"以上皆無\", name: \"allNone\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"以上皆無\" }\n });\n const [array60th, setArray60th] = React.useState({\n U60: { label: \"有\", name: \"U60\", type: \"chkBoxTxT\", checked: false, checked: false, gridWid: 6, systemLabel: \"有\" },\n allNone: { label: \"無\", name: \"allNone\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"無\" }\n });\n const [array7th, setArray7th] = React.useState({\n A7: { name: \"A7\", label: \"高血壓\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"高血壓 \" }\n , B7: { label: \"糖尿病\", name: \"B7\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"糖尿病 \" }\n , C7: { label: \"心臟病\", name: \"C7\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"心臟病 \" }\n // , E4: { label: \"白內障\", name: \"E4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"白內障 \" }\n // , F4: { label: \"中風\", name: \"F4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"中風 \" }\n // , G4: { label: \"癲癇\", name: \"G4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"癲癇 \" }\n // , H4: { label: \"氣喘\", name: \"H4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"氣喘 \" }\n // , I4: { label: \"慢性氣管炎、肺氣腫\", name: \"I4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"慢性氣管炎、肺氣腫 \" }\n // , J4: { label: \"肺氣腫\", name: \"J4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"肺氣腫 \" }\n // , K4: { label: \"肺結核\", name: \"K4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"肺結核 \" }\n , L7: { label: \"腎臟病\", name: \"L7\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"腎臟病 \" }\n // , M4: { label: \"肝病\", name: \"M4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"肝病 \" }\n // , N4: { label: \"貧血\", name: \"N4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"貧血 \" }\n // , O4: { label: \"中耳炎\", name: \"O4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"中耳炎 \" }\n // , P4: { label: \"聽力障礙\", name: \"P4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"聽力障礙 \" }\n // , Q4: { label: \"甲狀腺疾病\", name: \"Q4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"甲狀腺疾病 \" }\n // , R4: { label: \"消化性潰瘍、胃炎\", name: \"R4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"消化性潰瘍、胃炎 \" }\n // , S4: { label: \"逆流性食道炎\", name: \"S4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"逆流性食道炎\" }\n // , D4: { label: \"癌症\", name: \"D4\", type: \"chkBoxTxT\", checked: false, gridWid: 6, systemLabel: \"癌症\" }\n // , T4: { label: \"骨折\", name: \"T4\", type: \"chkBoxTxT\", checked: false, gridWid: 6, systemLabel: \"骨折\" }\n // , V4: { label: \"手術開刀\", name: \"V4\", type: \"chkBoxTxT\", checked: false, gridWid: 6, systemLabel: \"手術開刀\" }\n , U7: { label: \"其他\", name: \"U7\", type: \"chkBoxTxT\", checked: false, checked: false, gridWid: 6, systemLabel: \"其他\" }\n , allNone: { label: \"以上皆無\", name: \"allNone\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"以上皆無\" }\n });\n\n const [array8th, setArray8th] = React.useState({\n A8: { name: \"A8\", label: \"高血壓\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"高血壓 \" }\n , B8: { label: \"糖尿病\", name: \"B8\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"糖尿病 \" }\n , C8: { label: \"心臟病\", name: \"C8\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"心臟病 \" }\n , E8: { label: \"白內障\", name: \"E8\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"白內障 \" }\n , F8: { label: \"中風\", name: \"F8\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"中風 \" }\n , G8: { label: \"癲癇\", name: \"G8\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"癲癇 \" }\n , H8: { label: \"氣喘\", name: \"H8\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"氣喘 \" }\n , I8: { label: \"慢性氣管炎、肺氣腫\", name: \"I8\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"慢性氣管炎、肺氣腫 \" }\n // , J4: { label: \"肺氣腫\", name: \"J4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"肺氣腫 \" }\n , K8: { label: \"肺結核\", name: \"K8\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"肺結核 \" }\n , L8: { label: \"腎臟病\", name: \"L8\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"腎臟病 \" }\n , M8: { label: \"肝病\", name: \"M8\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"肝病 \" }\n , N8: { label: \"貧血\", name: \"N8\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"貧血 \" }\n , O8: { label: \"中耳炎\", name: \"O8\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"中耳炎 \" }\n , P8: { label: \"聽力障礙\", name: \"P8\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"聽力障礙 \" }\n , Q8: { label: \"甲狀腺疾病\", name: \"Q8\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"甲狀腺疾病 \" }\n , R8: { label: \"消化性潰瘍、胃炎\", name: \"R8\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"消化性潰瘍、胃炎 \" }\n , S8: { label: \"逆流性食道炎\", name: \"S8\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"逆流性食道炎\" }\n , D8: { label: \"癌症\", name: \"D8\", type: \"chkBoxTxT\", checked: false, gridWid: 6, systemLabel: \"癌症\" }\n , T8: { label: \"骨折\", name: \"T8\", type: \"chkBoxTxT\", checked: false, gridWid: 6, systemLabel: \"骨折\" }\n , V8: { label: \"手術開刀\", name: \"V8\", type: \"chkBoxTxT\", checked: false, gridWid: 6, systemLabel: \"手術開刀\" }\n , U8: { label: \"其他慢性病\", name: \"U8\", type: \"chkBoxTxT\", checked: false, gridWid: 6, systemLabel: \"其他慢性病\" }\n , allNone: { label: \"以上皆無\", name: \"allNone\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"以上皆無\" }\n });\n\n\n //既往病史\n const [array4thTxtObj, set4thTxtObj] = React.useState({\n D4: { label: \"癌症\", name: \"D4\", type: \"chkBoxTxT\", checked: false, gridWid: 6, text: \"\" },\n // N4: { label: \"貧血\", name: \"N4\", type: \"chkBoxTxT\", checked: false, gridWid: 6, text: \"\" },\n T4: { label: \"骨折\", name: \"T4\", type: \"chkBoxTxT\", checked: false, gridWid: 6, text: \"\" },\n V4: { label: \"手術開刀\", name: \"V4\", type: \"chkBoxTxT\", checked: false, gridWid: 6, text: \"\" },\n U4: { label: \"其他慢性病\", name: \"U4\", type: \"chkBoxTxT\", checked: false, checked: false, gridWid: 6, text: \"\" },\n W6: { label: \"其他症狀\", name: \"W6\", type: \"chkBoxTxT\", checked: false, checked: false, gridWid: 6, text: \"\" }, //自覺症狀 偷渡紀錄在此\n })\n //用藥史\n const [array60thTxtObj, set60thTxtObj] = React.useState({\n // D4: { label: \"癌症\", name: \"D4\", type: \"chkBoxTxT\", checked: false, gridWid: 6, text: \"\" },\n // N4: { label: \"貧血\", name: \"N4\", type: \"chkBoxTxT\", checked: false, gridWid: 6, text: \"\" },\n // T4: { label: \"骨折\", name: \"T4\", type: \"chkBoxTxT\", checked: false, gridWid: 6, text: \"\" },\n // V4: { label: \"手術開刀\", name: \"V4\", type: \"chkBoxTxT\", checked: false, gridWid: 6, text: \"\" },\n U60: { label: \"有\", name: \"U60\", type: \"chkBoxTxT\", checked: false, checked: false, gridWid: 6, text: \"\" },\n // W6: { label: \"其他症狀\", name: \"W6\", type: \"chkBoxTxT\", checked: false, checked: false, gridWid: 6, text: \"\" },\n })\n //用藥史\n const [array7thTxtObj, set7thTxtObj] = React.useState({\n // D4: { label: \"癌症\", name: \"D4\", type: \"chkBoxTxT\", checked: false, gridWid: 6, text: \"\" },\n // N4: { label: \"貧血\", name: \"N4\", type: \"chkBoxTxT\", checked: false, gridWid: 6, text: \"\" },\n // T4: { label: \"骨折\", name: \"T4\", type: \"chkBoxTxT\", checked: false, gridWid: 6, text: \"\" },\n // V4: { label: \"手術開刀\", name: \"V4\", type: \"chkBoxTxT\", checked: false, gridWid: 6, text: \"\" },\n U7: { label: \"其他\", name: \"U7\", type: \"chkBoxTxT\", checked: false, checked: false, gridWid: 6, text: \"\" },\n // W6: { label: \"其他症狀\", name: \"W6\", type: \"chkBoxTxT\", checked: false, checked: false, gridWid: 6, text: \"\" },\n })\n //家族病史\n const [array8thTxtObj, set8thTxtObj] = React.useState({\n D8: { label: \"癌症\", name: \"D8\", type: \"chkBoxTxT\", checked: false, gridWid: 6, text: \"\" },\n // N4: { label: \"貧血\", name: \"N4\", type: \"chkBoxTxT\", checked: false, gridWid: 6, text: \"\" },\n T8: { label: \"骨折\", name: \"T8\", type: \"chkBoxTxT\", checked: false, gridWid: 6, text: \"\" },\n V8: { label: \"手術開刀\", name: \"V8\", type: \"chkBoxTxT\", checked: false, gridWid: 6, text: \"\" },\n U8: { label: \"其他慢性病\", name: \"U8\", type: \"chkBoxTxT\", checked: false, checked: false, gridWid: 6, text: \"\" },\n })\n\n const handleChange4th = e => {\n if (_.isNil(imageURL)) { //已提交不得修改\n const { name, checked } = e.target;\n // console.log(e.target);\n if (name === \"allNone\") {\n if (array4th.allNone.checked === false) {\n //其他: 不能勾選,除非allnone不勾\n //移除所以勾勾 \n _.forEach(array4th, function (value, key) {\n setArray4th(prevState => ({\n ...prevState,\n [key]: omit(value, [\"checked\", \"error\"]),\n }));\n });\n //移除所有文字\n _.forEach(array4thTxtObj, function (value, key) {\n if (key !== \"W6\") {\n set4thTxtObj(prevState => ({\n ...prevState,\n [key]: { ...value, text: \"\" }\n }));\n }\n\n });\n\n //自己勾上\n setArray4th(prevState => ({\n ...prevState,\n allNone: { ...prevState[name], checked: checked }\n }));\n } else {\n //自己取消,讓其他可以勾\n setArray4th(prevState => ({\n ...prevState,\n allNone: { ...prevState[name], checked: checked }\n }));\n }\n\n\n } else {\n //其他:不能勾選,除非allnone不勾\n if (array4th.allNone.checked === false) {\n setArray4th(prevState => ({\n ...prevState,\n [name]: {\n ...array4th[name], checked: checked,\n error: checked === false ? false : (prevState[name].error || false)\n }\n }))\n if (Object.keys(array4thTxtObj).includes(name)) {\n if (name !== \"W6\") {\n set4thTxtObj(prevState => ({\n ...prevState,\n [name]: {\n ...prevState[name],\n checked: checked, //也要更新 for資料庫導入格式\n text: checked === false ? \"\" : (prevState[name].text || \"\")\n }\n }))\n }\n\n }\n }\n }\n }\n }\n const handleChangeTxt4th = e => { //第四區塊文字,抽取出來,改動文字不去觸發calculate_4th\n if (_.isNil(imageURL)) { //已提交不得修改\n const { name, value } = e.target;\n set4thTxtObj({\n ...array4thTxtObj,\n [name]: { ...array4thTxtObj[name], text: value }\n })\n }\n }\n //過敏史,打勾部分\n const handleChange60th = e => {\n if (_.isNil(imageURL)) { //已提交不得修改\n const { name, checked } = e.target;\n // console.log(e.target);\n if (name === \"allNone\") {\n if (array60th.allNone.checked === false) {\n //其他: 不能勾選,除非allnone不勾\n //移除所以勾勾 \n _.forEach(array60th, function (value, key) {\n setArray60th(prevState => ({\n ...prevState,\n [key]: omit(value, [\"checked\", \"error\"]),\n }));\n });\n //移除所有文字\n _.forEach(array60thTxtObj, function (value, key) {\n if (key !== \"W6\") {\n set60thTxtObj(prevState => ({\n ...prevState,\n [key]: { ...value, text: \"\" }\n }));\n }\n\n });\n\n //自己勾上\n setArray60th(prevState => ({\n ...prevState,\n allNone: { ...prevState[name], checked: checked }\n }));\n } else {\n //自己取消,讓其他可以勾\n setArray60th(prevState => ({\n ...prevState,\n allNone: { ...prevState[name], checked: checked }\n }));\n }\n\n\n } else {\n //其他:不能勾選,除非allnone不勾\n if (array60th.allNone.checked === false) {\n setArray60th(prevState => ({\n ...prevState,\n [name]: {\n ...array60th[name], checked: checked,\n error: checked === false ? false : (prevState[name].error || false)\n }\n }))\n if (Object.keys(array60thTxtObj).includes(name)) {\n if (name !== \"W4\") {\n set60thTxtObj(prevState => ({\n ...prevState,\n [name]: {\n ...prevState[name],\n checked: checked, //也要更新 for資料庫導入格式\n text: checked === false ? \"\" : (prevState[name].text || \"\")\n }\n }))\n }\n\n }\n }\n }\n }\n }\n\n const handleChangeTxt60th = e => { //第四區塊文字,抽取出來,改動文字不去觸發calculate_4th\n if (_.isNil(imageURL)) { //已提交不得修改\n const { name, value } = e.target;\n set60thTxtObj({\n ...array60thTxtObj,\n [name]: { ...array60thTxtObj[name], text: value }\n })\n }\n }\n //家族病史,打勾部分\n const handleChange7th = e => {\n if (_.isNil(imageURL)) { //已提交不得修改\n const { name, checked } = e.target;\n // console.log(e.target);\n if (name === \"allNone\") {\n if (array7th.allNone.checked === false) {\n //其他: 不能勾選,除非allnone不勾\n //移除所以勾勾 \n _.forEach(array7th, function (value, key) {\n setArray7th(prevState => ({\n ...prevState,\n [key]: omit(value, [\"checked\", \"error\"]),\n }));\n });\n //移除所有文字\n _.forEach(array7thTxtObj, function (value, key) {\n if (key !== \"W6\") {\n set7thTxtObj(prevState => ({\n ...prevState,\n [key]: { ...value, text: \"\" }\n }));\n }\n\n });\n\n //自己勾上\n setArray7th(prevState => ({\n ...prevState,\n allNone: { ...prevState[name], checked: checked }\n }));\n } else {\n //自己取消,讓其他可以勾\n setArray7th(prevState => ({\n ...prevState,\n allNone: { ...prevState[name], checked: checked }\n }));\n }\n\n\n } else {\n //其他:不能勾選,除非allnone不勾\n if (array7th.allNone.checked === false) {\n setArray7th(prevState => ({\n ...prevState,\n [name]: {\n ...array7th[name], checked: checked,\n error: checked === false ? false : (prevState[name].error || false)\n }\n }))\n if (Object.keys(array7thTxtObj).includes(name)) {\n if (name !== \"W6\") {\n set7thTxtObj(prevState => ({\n ...prevState,\n [name]: {\n ...prevState[name],\n checked: checked, //也要更新 for資料庫導入格式\n text: checked === false ? \"\" : (prevState[name].text || \"\")\n }\n }))\n }\n\n }\n }\n }\n }\n }\n\n const handleChangeTxt7th = e => { //第四區塊文字,抽取出來,改動文字不去觸發calculate_4th\n if (_.isNil(imageURL)) { //已提交不得修改\n const { name, value } = e.target;\n set7thTxtObj({\n ...array7thTxtObj,\n [name]: { ...array7thTxtObj[name], text: value }\n })\n }\n }\n //家族病史,打勾部分\n const handleChange8th = e => {\n if (_.isNil(imageURL)) { //已提交不得修改\n const { name, checked } = e.target;\n // console.log(e.target);\n if (name === \"allNone\") {\n if (array8th.allNone.checked === false) {\n //其他: 不能勾選,除非allnone不勾\n //移除所以勾勾 \n _.forEach(array8th, function (value, key) {\n setArray8th(prevState => ({\n ...prevState,\n [key]: omit(value, [\"checked\", \"error\"]),\n }));\n });\n //移除所有文字\n _.forEach(array8thTxtObj, function (value, key) {\n if (key !== \"W6\") {\n set8thTxtObj(prevState => ({\n ...prevState,\n [key]: { ...value, text: \"\" }\n }));\n }\n\n });\n\n //自己勾上\n setArray8th(prevState => ({\n ...prevState,\n allNone: { ...prevState[name], checked: checked }\n }));\n } else {\n //自己取消,讓其他可以勾\n setArray8th(prevState => ({\n ...prevState,\n allNone: { ...prevState[name], checked: checked }\n }));\n }\n\n\n } else {\n //其他:不能勾選,除非allnone不勾\n if (array8th.allNone.checked === false) {\n setArray8th(prevState => ({\n ...prevState,\n [name]: {\n ...array8th[name], checked: checked,\n error: checked === false ? false : (prevState[name].error || false)\n }\n }))\n if (Object.keys(array8thTxtObj).includes(name)) {\n if (name !== \"W6\") {\n set8thTxtObj(prevState => ({\n ...prevState,\n [name]: {\n ...prevState[name],\n checked: checked, //也要更新 for資料庫導入格式\n text: checked === false ? \"\" : (prevState[name].text || \"\")\n }\n }))\n }\n\n }\n }\n }\n }\n }\n const handleChangeTxt8th = e => { //第四區塊文字,抽取出來,改動文字不去觸發calculate_4th\n if (_.isNil(imageURL)) { //已提交不得修改\n const { name, value } = e.target;\n set8thTxtObj({\n ...array8thTxtObj,\n [name]: { ...array8thTxtObj[name], text: value }\n })\n }\n }\n\n\n\n const [array4thValidator, set4thValidator] = React.useState({\n pastHistory: { name: \"pastHistory\", checked: false },\n conscious: { name: \"conscious\", checked: false },\n allergy: { name: \"allergy\", checked: false },\n usage: { name: \"usage\", checked: false },\n family: { name: \"family\", checked: false },\n })\n const pastHistoryRef = useRef(null)\n const consciousRef = useRef(null)\n const allergyRef = useRef(null)\n const usageRef = useRef(null)\n const familyRef = useRef(null)\n\n\n const calculate_4th = () => {\n const total = Object.values(array4th).reduce((a, b) => a + (b.checked ? 1 : 0), 0)\n\n set4thValidator(prevState => ({\n ...prevState,\n pastHistory: { ...prevState.pastHistory, checked: total >= 1 ? true : false }\n }));\n if (total >= 1 && !array4thValidator.pastHistory.checked) {\n setNumerator(prev => prev + 1)\n } else if (total === 0 && array4thValidator.pastHistory.checked) {\n setNumerator(prev => prev - 1)\n }\n }\n React.useEffect(() => {\n if (!initialRender.current) {\n calculate_4th();\n }\n }, [array4th]); //避免循環\n\n //家族史的進度條\n const calculate_60th = () => {\n const total = Object.values(array60th).reduce((a, b) => a + (b.checked ? 1 : 0), 0)\n\n set4thValidator(prevState => ({\n ...prevState,\n allergy: { ...prevState.allergy, checked: total >= 1 ? true : false }\n }));\n if (total >= 1 && !array4thValidator.allergy.checked) {\n setNumerator(prev => prev + 1)\n } else if (total === 0 && array4thValidator.allergy.checked) {\n setNumerator(prev => prev - 1)\n }\n }\n React.useEffect(() => {\n if (!initialRender.current) {\n calculate_60th();\n }\n }, [array60th]); //避免循環\n\n\n //用藥史的進度條\n const calculate_7th = () => {\n const total = Object.values(array7th).reduce((a, b) => a + (b.checked ? 1 : 0), 0)\n\n set4thValidator(prevState => ({\n ...prevState,\n usage: { ...prevState.usage, checked: total >= 1 ? true : false }\n }));\n if (total >= 1 && !array4thValidator.usage.checked) {\n setNumerator(prev => prev + 1)\n } else if (total === 0 && array4thValidator.usage.checked) {\n setNumerator(prev => prev - 1)\n }\n }\n React.useEffect(() => {\n if (!initialRender.current) {\n calculate_7th();\n }\n }, [array7th]); //避免循環\n\n //家族史的進度條\n const calculate_8th = () => {\n const total = Object.values(array8th).reduce((a, b) => a + (b.checked ? 1 : 0), 0)\n\n set4thValidator(prevState => ({\n ...prevState,\n family: { ...prevState.family, checked: total >= 1 ? true : false }\n }));\n if (total >= 1 && !array4thValidator.family.checked) {\n setNumerator(prev => prev + 1)\n } else if (total === 0 && array4thValidator.family.checked) {\n setNumerator(prev => prev - 1)\n }\n }\n React.useEffect(() => {\n if (!initialRender.current) {\n calculate_8th();\n }\n }, [array8th]); //避免循環\n\n\n const w6Ref = useRef(null)\n const [array6th, setArray6th] = React.useState({\n A6: { label: \"咳嗽\", name: \"A6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"咳嗽\" }\n , B6: { label: \"咳痰\", name: \"B6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"咳痰\" }\n , C6: { label: \"呼吸困難\", name: \"C6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"呼吸困難\" }\n , E6: { label: \"胸痛\", name: \"E6\", type: \"chkBox\", gridWid: 3, systemLabel: \"胸痛\" }\n , F6: { label: \"心悸\", name: \"F6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"心悸\" }\n , G6: { label: \"頭暈\", name: \"G6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"頭暈\" }\n , H6: { label: \"頭痛\", name: \"H6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"頭痛 \" }\n , I6: { label: \"耳鳴\", name: \"I6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"耳鳴 \" }\n , J6: { label: \"倦怠\", name: \"J6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"倦怠 \" }\n , K6: { label: \"噁心\", name: \"K6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"噁心 \" }\n , L6: { label: \"腹痛\", name: \"L6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"腹痛 \" }\n , M6: { label: \"便秘\", name: \"M6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"便秘 \" }\n , O6: { label: \"腹瀉\", name: \"O6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"腹瀉 \" }\n , P6: { label: \"血便\", name: \"P6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"血便 \" }\n , Q6: { label: \"上背痛\", name: \"Q6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"上背痛 \" }\n , R6: { label: \"下背痛\", name: \"R6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"下背痛 \" }\n , S6: { label: \"手腳麻痛\", name: \"S6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"手腳麻痛 \" }\n , D6: { label: \"關節疼痛\", name: \"D6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"關節疼痛 \" }\n , N6: { label: \"排尿不適\", name: \"N6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"排尿不適 \" }\n , T6: { label: \"多尿、頻尿\", name: \"T6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"多尿、頻尿 \" }\n , V6: { label: \"手腳肌肉無力\", name: \"V6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"手腳肌肉無力 \" }\n , U6: { label: \"體重減輕 3公斤以上\", name: \"U6\", type: \"chkBox\", checked: false, checked: false, gridWid: 6, systemLabel: \"體重減輕3公斤以上\" }\n , W6: { label: \"其他症狀\", name: \"W6\", type: \"chkBoxTxT\", checked: false, checked: false, gridWid: 6, systemLabel: \"其他症狀\" }\n , allNone6: { label: \"以上皆無\", name: \"allNone6\", type: \"chkBox\", checked: false, gridWid: 12, systemLabel: \"以上皆無\" }\n });\n\n\n React.useEffect(() => {\n if (!initialRender.current) {\n const total = Object.values(array6th).reduce((a, b) => a + (b.checked ? 1 : 0), 0)\n set4thValidator(prevState => ({\n ...prevState,\n conscious: { ...prevState.conscious, checked: total >= 1 ? true : false }\n }));\n\n if (total >= 1 && !array4thValidator.conscious.checked) {\n setNumerator(prev => prev + 1)\n } else if (total === 0 && array4thValidator.conscious.checked) {\n setNumerator(prev => prev - 1)\n }\n }\n\n }, [array6th]); //避免循環\n\n const handleChange6th = e => {\n if (_.isNil(imageURL)) { //已提交不得修改\n const { name, checked } = e.target;\n // console.log(name, checked);\n if (name === \"allNone6\") {\n if (checked === true) { //之前沒溝\n // console.log(\"allNon6自己溝上\");\n //其他: 不能勾選,除非allnone不勾\n //移除所以勾勾 \n _.forEach(array6th, function (value, key) {\n setArray6th(prevState => ({\n ...prevState,\n [key]: omit(value, [\"checked\", \"error\"]),\n }));\n });\n //移除所有文字\n _.forEach(array4thTxtObj, function (value, key) {\n set4thTxtObj(prevState => ({\n ...prevState,\n W6: { ...value, text: \"\" }\n }));\n });\n\n //自己勾上\n setArray6th(prevState => ({\n ...prevState,\n allNone6: { ...prevState[name], checked: checked }\n }));\n } else {\n // console.log(\"allNon6自己取消\");\n\n //自己取消,讓其他可以勾\n setArray6th(prevState => ({\n ...prevState,\n [name]: { ...prevState[name], checked: false }\n }));\n }\n\n\n } else {\n //其他:不能勾選,除非allnone不勾\n if (array6th.allNone6.checked === false) {\n setArray6th(prevState => ({\n ...prevState,\n [name]: {\n ...prevState[name], checked: checked,\n error: checked === false ? false : (prevState[name].error || false)\n }\n }))\n if (Object.keys(array4thTxtObj).includes(name)) {\n set4thTxtObj(prevState => ({\n ...prevState,\n [name]: {\n ...prevState[name],\n text: checked === false ? \"\" : (prevState[name].text || \"\")\n }\n }))\n }\n }\n }\n }\n }\n const checked3rdRef = useRef(null);\n const [checked3rd, setCheck3rd] = React.useState({\n checkA: null,\n checkB: null,\n error: false\n });\n\n const handleChangeThree = e => {\n if (_.isNil(imageURL)) { //已提交不得修改\n const { name, checked } = e.target;\n if (name === \"checkA\") {\n setCheck3rd(prevState => ({\n ...prevState,\n checkB: !checked,\n checkA: checked\n }))\n if (checked3rd.checkA === null) {\n setNumerator(prev => prev + 1);\n }\n if (checked) {\n //取消曾經\n // setWorkExp(prevState => ({\n // ...prevState,\n // usedJob: { ...prevState.usedJob, required: false },\n // usedStart: { ...prevState.usedStart, required: false },\n // usedEnd: { ...prevState.usedEnd, required: false }\n // }))\n // setDenominator(11);\n // //之前填過,若有數值,需-1\n // let ary = [\"usedJob\", \"usedStart\", \"usedEnd\"];\n // ary.map(item => {\n // if (workExp[item].value !== \"\" && workExp[item].value !== null) {\n // setNumerator(prev => prev - 1)\n // }\n // })\n\n } else {\n // setWorkExp(prevState => ({\n // ...prevState,\n // usedJob: { ...prevState.usedJob, required: true },\n // usedStart: { ...prevState.usedStart, required: true },\n // usedEnd: { ...prevState.usedEnd, required: true }\n // }))\n //之前填過,若有數值,需+1\n // setDenominator(15);\n // let ary = [\"usedJob\", \"usedStart\", \"usedEnd\"];\n // ary.map(item => {\n // if (workExp[item].value !== \"\" && workExp[item].value !== null && workExp[item].required !== true) {\n // setNumerator(prev => prev + 1)\n // }\n // })\n }\n } else { //checkB定期檢查\n setCheck3rd(prevState => ({\n ...prevState,\n checkB: checked,\n checkA: !checked\n }))\n if (checked3rd.checkB === null) {\n setNumerator(prev => prev + 1);\n }\n if (checked) {\n //取消曾經\n // setWorkExp(prevState => ({\n // ...prevState,\n // usedJob: { ...prevState.usedJob, required: true },\n // usedStart: { ...prevState.usedStart, required: true },\n // usedEnd: { ...prevState.usedEnd, required: true }\n // }))\n // setDenominator(15);\n // let ary = [\"usedJob\", \"usedStart\", \"usedEnd\"];\n // ary.map(item => {\n // if (workExp[item].value !== \"\" && workExp[item].value !== null && workExp[item].required !== true) {\n // setNumerator(prev => prev + 1)\n // }\n // })\n } else {\n // setWorkExp(prevState => ({\n // ...prevState,\n // usedJob: { ...prevState.usedJob, required: false },\n // usedStart: { ...prevState.usedStart, required: false },\n // usedEnd: { ...prevState.usedEnd, required: false }\n // }))\n // setDenominator(11);\n // let ary = [\"usedJob\", \"usedStart\", \"usedEnd\"];\n // ary.map(item => {\n // if (workExp[item].value !== \"\" && workExp[item].value !== null) {\n // setNumerator(prev => prev - 1)\n // }\n // })\n }\n\n }\n }\n }\n\n\n const [array5_1, setArray5_1] = React.useState({\n smokeA: { name: \"smokeA\", label: \"從未吸菸\", type: \"chkBox\", checked: false, gridWid: 2, systemLabel: \"從未吸菸 \" }\n , smokeB: { name: \"smokeB\", label: \"偶爾吸(不是天天)\", type: \"chkBox\", checked: false, gridWid: 2, systemLabel: \"偶爾吸(不是天天) \" }\n , smokeC: {\n systemLabel: \"(幾乎)每天吸,平均每天吸_支,已吸菸_年\",\n label: \"(幾乎)每天吸\", name: \"smokeC\", type: \"chkBoxTxT\", checked: false, gridWid: 8\n , type_1: \"number\", name_1: \"smokeC_1\", label_1: \"平均每天吸\", text_1: \"\", suffix1: \"支\", helperText_1: \"\", min_1: 1, ref: useRef(null)\n , type_2: \"number\", name_2: \"smokeC_2\", label_2: \"已吸菸\", text_2: \"\", suffix2: \"年\", helperText_2: \"\", max_2: 100, ref: useRef(null)\n }\n , smokeD: {\n systemLabel: \"已經戒菸,戒了_年_個月。\",\n label: \"已經戒菸,戒了\", name: \"smokeD\", type: \"chkBoxTxT\", checked: false, gridWid: 8\n , name_1: \"smokeD_1\", type_1: \"number\", label_1: \" \", text_1: \"\", suffix1: \"年\", helperText_1: \"\", max_1: 100, ref: useRef(null)\n , name_2: \"smokeD_2\", type_2: \"number\", label_2: \" \", text_2: \"\", suffix2: \"個月\", helperText_2: \"\", max_2: 12, ref: useRef(null) //label需有空格\n }\n });\n React.useEffect(() => {\n if (!initialRender.current) {\n const total = Object.values(array5_1).reduce((a, b) => a + (b.checked ? 1 : 0), 0)\n setArray5thCheck(prevState => ({\n ...prevState,\n smoke: { ...prevState.smoke, checked: total >= 1 ? true : false } //只更新這個\n }));\n if (total >= 1 && !array5thCheck.smoke.checked) {\n setNumerator(prev => prev + 1)\n } else if (total === 0) {\n setNumerator(prev => prev - 1)\n }\n }\n }, [array5_1]); //避免循環\n\n const handleChangeChk5_1 = e => {\n if (_.isNil(imageURL)) { //已提交不得修改\n const { name, checked } = e.target;\n //先移除所有checked\n const keys = Object.keys(array5_1);\n keys.map(item => {\n // console.log(item)\n delete array5_1[item].checked\n })\n //set\n setArray5_1({\n ...array5_1,\n [name]: { ...array5_1[name], checked: checked }\n });\n setArray5thCheck(prevState => ({\n ...prevState,\n smokeC_1: { ...prevState.smokeC_1, value: \"\", error: false },\n smokeC_2: { ...prevState.smokeC_2, value: \"\", error: false },\n smokeD_1: { ...prevState.smokeD_1, value: \"\", error: false },\n smokeD_2: { ...prevState.smokeD_2, value: \"\", error: false },\n }));\n\n }\n }\n // const smokeRef = useRef(null)\n // const betelRef = useRef(null)\n // const drunkRef = useRef(null)\n const [array5thCheck, setArray5thCheck] = React.useState({\n smoke: { name: \"smoke\", checked: false },\n smokeC_1: { name: \"smokeC_1\", value: \"\" },\n smokeC_2: { name: \"smokeC_2\", value: \"\" },\n smokeD_1: { name: \"smokeD_1\", value: \"\" },\n smokeD_2: { name: \"smokeD_2\", value: \"\" },\n betel: { name: \"betel\", checked: false },\n betelC_1: { name: \"betelC_1\", value: \"\" },\n betelC_2: { name: \"betelC_2\", value: \"\" },\n betelD_1: { name: \"betelD_1\", value: \"\" },\n betelD_2: { name: \"betelD_2\", value: \"\" },\n drunk: { name: \"drunk\", checked: false },\n drunkC_1: { name: \"drunkC_1\", value: \"\" },\n drunkC_2: { name: \"drunkC_2\", value: \"\" },\n drunkC_3: { name: \"drunkC_3\", value: \"\" },\n drunkD_1: { name: \"drunkD_1\", value: \"\" },\n drunkD_2: { name: \"drunkD_2\", value: \"\" },\n sleep: { name: \"sleep\", checked: false, value: \"\" },\n\n });\n const sleepRef = { smoke: useRef(), sleep: useRef(), drunk: useRef(), betel: useRef() }\n const handleChangeTxt5_4 = e => { //目前只5-4使用\n if (_.isNil(imageURL)) { //已提交不得修改\n const { name, value } = e.target;\n setArray5thCheck(prevState => ({\n ...prevState,\n [name]: { ...prevState[name], value: value }\n }));\n if (array5thCheck.sleep.value === \"\" && value !== \"\") {\n setNumerator(prev => prev + 1)\n } else if (value === \"\") {\n setNumerator(prev => prev - 1)\n }\n // console.log(array5thCheck)\n }\n }\n\n const handleChangeTxt5_1 = e => {\n if (_.isNil(imageURL)) { //已提交不得修改\n const { name, value } = e.target;\n setArray5thCheck(prevState => ({\n ...prevState,\n [name]: { ...prevState[name], value: value }\n }));\n }\n }\n\n\n\n const [array5_2, setArray5_2] = React.useState({\n betelA: { name: \"betelA\", label: \"從未嚼食檳榔\", type: \"chkBox\", checked: false, gridWid: 2, systemLabel: \"從未嚼食檳榔 \" }\n , betelB: { name: \"betelB\", label: \"偶爾嚼(不是天天)\", type: \"chkBox\", checked: false, gridWid: 2, systemLabel: \"偶爾嚼(不是天天) \" }\n , betelC: {\n systemLabel: \"(幾乎)每天嚼,平均每天嚼_顆,已嚼_年\",\n label: \"(幾乎)每天嚼\", name: \"betelC\", type: \"chkBoxTxT\", checked: false, gridWid: 8\n , name_1: \"betelC_1\", type_1: \"number\", label_1: \"平均每天嚼\", text_1: \"\", suffix1: \"顆\", helperText_1: \"\", max_1: 100\n , name_2: \"betelC_2\", type_2: \"number\", label_2: \"已嚼 \", text_2: \"\", suffix2: \"年\", helperText_2: \"\", max_2: 100\n }\n , betelD: {\n systemLabel: \"已經戒食,戒了_年_個月。\",\n label: \"已經戒食,戒了\", name: \"betelD\", type: \"chkBoxTxT\", checked: false, gridWid: 12\n , name_1: \"betelD_1\", type_1: \"number\", label_1: \" \", text_1: \"\", suffix1: \"年\", helperText_1: \"\", max_1: 100\n , name_2: \"betelD_2\", type_2: \"number\", label_2: \" \", text_2: \"\", suffix2: \"個月\", helperText_2: \"\", max_2: 12 //label需有空格\n }\n });\n\n React.useEffect(() => {\n if (!initialRender.current) {\n const total = Object.values(array5_2).reduce((a, b) => a + (b.checked ? 1 : 0), 0)\n setArray5thCheck(prevState => ({\n ...prevState,\n betel: { ...prevState.betel, checked: total >= 1 ? true : false } //只更新這個\n }))\n if (total >= 1 && !array5thCheck.betel.checked) {\n setNumerator(prev => prev + 1)\n } else if (total === 0) {\n setNumerator(prev => prev - 1)\n }\n }\n }, [array5_2]); //避免循環\n\n const handleChangeChk5_2 = e => {\n if (_.isNil(imageURL)) { //已提交不得修改\n const { name, checked } = e.target;\n //先移除所有checked\n const keys = Object.keys(array5_2);\n keys.map(item => {\n delete array5_2[item].checked\n }\n )\n //set\n setArray5_2({\n ...array5_2,\n [name]: {\n ...array5_2[name], checked: checked\n }\n })\n setArray5thCheck(prevState => ({\n ...prevState,\n betelC_1: { ...prevState.betelC_1, value: \"\", error: false },\n betelC_2: { ...prevState.betelC_2, value: \"\", error: false },\n betelD_1: { ...prevState.betelD_1, value: \"\", error: false },\n betelD_2: { ...prevState.betelD_2, value: \"\", error: false },\n }));\n }\n }\n\n // const handleChangeTxt5_2 = e => {\n // if (_.isNil(imageURL)) { //已提交不得修改\n // const { name, value } = e.target;\n // setArray5_2({\n // ...array5_2,\n // [name]: { ...array5_2[name], text_1: value }\n // });\n // }\n // }\n\n\n\n const [array5_3, setArray5_3] = React.useState({\n drunkA: { name: \"drunkA\", label: \"從未喝酒\", type: \"chkBox\", checked: false, gridWid: 2, systemLabel: \"從未喝酒 \" }\n , drunkB: { name: \"drunkB\", label: \"偶爾喝(不是天天)\", type: \"chkBox\", checked: false, gridWid: 2, systemLabel: \"偶爾喝(不是天天) \" }\n , drunkC: {\n systemLabel: \"(幾乎)每天喝,平均每週喝_次,最常喝_酒,每次_瓶\",\n label: \"(幾乎)每天喝\", name: \"drunkC\", type: \"chkBoxTxT\", checked: false, gridWid: 8\n , name_1: \"drunkC_1\", type_1: \"number\", label_1: \"平均每週喝\", suffix1: \"次\", max_1: 28\n , name_2: \"drunkC_2\", type_2: \"text\", label_2: \"最常喝 \", suffix2: \"酒\"\n , name_3: \"drunkC_3\", type_3: \"number\", label_3: \"每次 \", suffix3: \"瓶\", max_3: 100\n }\n , drunkD: {\n systemLabel: \"已經戒酒,戒了_年_個月。\",\n label: \"已經戒酒,戒了\", name: \"drunkD\", type: \"chkBoxTxT\", checked: false, gridWid: 12\n , name_1: \"drunkD_1\", type_1: \"number\", label_1: \" \", suffix1: \"年\", max_1: 100\n , name_2: \"drunkD_2\", type_2: \"number\", label_2: \" \", suffix2: \"個月\", max_2: 12//label需有空格\n }\n });\n React.useEffect(() => {\n if (!initialRender.current) {\n const total = Object.values(array5_3).reduce((a, b) => a + (b.checked ? 1 : 0), 0)\n setArray5thCheck(prevState => ({\n ...prevState,\n drunk: { ...prevState.drunk, checked: total >= 1 ? true : false } //只更新這個\n }));\n //ProgressBar\n if (total >= 1 && !array5thCheck.drunk.checked) {\n setNumerator(prev => prev + 1)\n } else if (total === 0) {\n setNumerator(prev => prev - 1)\n }\n }\n }, [array5_3]); //避免循環\n\n const handleChangeChk5_3 = e => {\n if (_.isNil(imageURL)) { //已提交不得修改\n const { name, checked } = e.target;\n //先移除所有checked\n const keys = Object.keys(array5_3);\n keys.map(item => {\n // console.log(item)\n delete array5_3[item].checked\n })\n //set\n setArray5_3(prevState => ({\n ...prevState,\n [name]: { ...prevState[name], checked: checked }\n }))\n setArray5thCheck(prevState => ({\n ...prevState,\n drunkC_1: { ...prevState.drunkC_1, value: \"\", error: false },\n drunkC_2: { ...prevState.drunkC_2, value: \"\", error: false },\n drunkC_3: { ...prevState.drunkC_3, value: \"\", error: false },\n drunkD_1: { ...prevState.drunkD_1, value: \"\", error: false },\n drunkD_2: { ...prevState.drunkD_2, value: \"\", error: false },\n }));\n\n }\n }\n // console.log(UserInfo.BarCodeStr)\n const [gender, setGender] = React.useState({\n male: false,\n female: false,\n helperText: \"請至少選取一個。\"\n })\n const handleChangeChkGender = e => {\n if (_.isNil(imageURL)) { //已提交不得修改\n const { name, checked } = e.target;\n if (name === \"male\") {\n setGender({\n ...gender,\n female: !checked,\n male: checked\n })\n } else {\n setGender({\n ...gender,\n female: checked,\n male: !checked\n })\n }\n }\n }\n const { enqueueSnackbar } = useSnackbar();\n\n\n\n\n const formRef = React.createRef();\n const handleSubmit = (e) => {\n e.preventDefault();\n if (validator()) {\n\n if (isShown) {\n let X = {\n Action: \"GET\",\n parameter: {\n barcodestr: UserInfo.BarCodeStr\n }\n }\n PF.instance({\n method: \"post\",\n url: questurl + \"/QuestionRecord\",\n data: Qs.stringify(X),\n })\n .then(function (response) {\n const { TotalRecord, rows } = response.data;\n })\n }\n\n UpdateRelation()\n\n //清除\n dispatch(actions.TAB_EDIT({ editing: true, key: 80 }))\n Update80th();\n //更新部分資料至CheckProjectDetail\n UpdateProjectDetail();\n\n // handleNext(\"\",80);\n }\n\n }\n const UpdateProjectDetail = prop => {\n //section 5\n //抽菸\n let fiveth_1 = Object.values(array5_1).reduce((a, b) => a + (b.checked ? \"||\" + b.systemLabel : \"\"), \"\");\n let Str_fiveth_1 = fiveth_1.substring(2, 999);\n let _count_5_1 = (fiveth_1.substring(2, 999).match(/_/g) || []).length\n let fiveth_1Txt = Object.values(array5thCheck).slice(1, 5).reduce((a, b) => a + (b.value !== \"\" ? \"||\" + b.value : \"\"), \"\");\n let fiveth_1TxtArray = fiveth_1Txt.substring(2, 999).split(\"||\");\n for (let step = 0; step < _count_5_1; step++) {\n let t = 0;\n Str_fiveth_1 = Str_fiveth_1.replace(/_/g, match => ++t === 1 ? fiveth_1TxtArray[step] : match)\n }\n // console.log(Str_fiveth_1);\n\n //檳榔\n let fiveth_2 = Object.values(array5_2).reduce((a, b) => a + (b.checked ? \"||\" + b.systemLabel : \"\"), \"\");\n let Str_fiveth_2 = fiveth_2.substring(2, 999);\n let _count_5_2 = (fiveth_2.substring(2, 999).match(/_/g) || []).length\n let fiveth_2Txt = Object.values(array5thCheck).slice(6, 10).reduce((a, b) => a + (b.value !== \"\" ? \"||\" + b.value : \"\"), \"\");\n let fiveth_2TxtArray = fiveth_2Txt.substring(2, 999).split(\"||\");\n for (let step = 0; step < _count_5_2; step++) {\n let t = 0;\n Str_fiveth_2 = Str_fiveth_2.replace(/_/g, match => ++t === 1 ? fiveth_2TxtArray[step] : match)\n }\n // console.log(Str_fiveth_2);\n\n //喝酒\n let fiveth_3 = Object.values(array5_3).reduce((a, b) => a + (b.checked ? \"||\" + b.systemLabel : \"\"), \"\");\n let Str_fiveth_3 = fiveth_3.substring(2, 999);\n let _count_5_3 = (fiveth_3.substring(2, 999).match(/_/g) || []).length\n let fiveth_3Txt = Object.values(array5thCheck).slice(11, 16).reduce((a, b) => a + (b.value !== \"\" ? \"||\" + b.value : \"\"), \"\");\n let fiveth_3TxtArray = fiveth_3Txt.substring(2, 999).split(\"||\");\n for (let step = 0; step < _count_5_3; step++) {\n let t = 0;\n Str_fiveth_3 = Str_fiveth_3.replace(/_/g, match => ++t === 1 ? fiveth_3TxtArray[step] : match)\n }\n //console.log(Str_fiveth_3);\n //睡眠2043\n let Str_fiveth_4 = \"平均每天睡眠時間為:_小時。\".replace(/_/g, array5thCheck.sleep.value)\n // console.log(Str_fiveth_4);\n\n //自覺症狀2008\n let Sixth = Object.values(array6th).reduce((a, b) => a + (b.checked ? \"、\" + b.systemLabel : \"\"), \"\");\n let Str_6th = Sixth.substring(1, 999).replace(/以上皆無/g, \"無\");\n Str_6th = Str_6th.replace(/其他症狀/g, \"其他症狀:\" + array4thTxtObj.W6.text);\n // console.log(Str_6th.replace(/ /g, \"\"));\n\n let Sixth0 = Object.values(array60th).reduce((a, b) => a + (b.checked ? \"\" + b.systemLabel : \"\"), \"\");\n let Sixth0Txt = Object.values(array60thTxtObj).reduce((a, b) => a + (\"\" + b.text), \"\");\n // console.log(Sixth0 + \" \" + Sixth0Txt)\n\n // let Seventh = Object.values(array7th).reduce((a, b) => a + (b.checked ? \"||\" + b.type == 'chkBoxTxT' ? '其他:' + array7thTxtObj.U4.text : b.systemLabel : \"\"), \"\");\n let string7 = ''\n let Seventh = Object.values(array7th).forEach(item => {\n string7 += item.checked ? item.name === 'U7' ? \"其他:\" + array7thTxtObj.U7.text + '||' : item.systemLabel + '||' : ''\n })\n // console.log(string7.replace(/ /g, \"\").replaceAll(\"||\", \"、\").slice(0, -1))\n\n let string8 = ''\n let Eighth = Object.values(array8th).forEach(item => {\n string8 += item.checked ? Object.keys(array8thTxtObj).includes(item.name) ? item.systemLabel + \":\" + array8thTxtObj[item.name].text + '||' : item.systemLabel + '||' : ''\n })\n // console.log(string8.replace(/ /g, \"\").replaceAll(\"||\", \"、\").slice(0, -1))\n let string4 = ''\n let Four = Object.values(array4th).forEach(item => {\n string4 += item.checked ? Object.keys(array4thTxtObj).includes(item.name) ? item.systemLabel + \":\" + array4thTxtObj[item.name].text + '||' : item.systemLabel + '||' : ''\n })\n\n\n let UpdateList = [\n { BarCodeStr: UserInfo.BarCodeStr, ItemNo: \"2008\", Value: Str_6th.replace(/ /g, \"\") },\n { BarCodeStr: UserInfo.BarCodeStr, ItemNo: \"2043\", Value: Str_fiveth_4 },\n { BarCodeStr: UserInfo.BarCodeStr, ItemNo: \"2031\", Value: Str_fiveth_1.replace(/ /g, \"\") + '、' + Str_fiveth_2.replace(/ /g, \"\") + '、' + Str_fiveth_3.replace(/ /g, \"\") + '。' },\n { BarCodeStr: UserInfo.BarCodeStr, ItemNo: \"2049\", Value: Sixth0 + \" \" + Sixth0Txt },\n { BarCodeStr: UserInfo.BarCodeStr, ItemNo: \"2050\", Value: string7.replace(/ /g, \"\").replaceAll(\"||\", \"、\").slice(0, -1) },\n { BarCodeStr: UserInfo.BarCodeStr, ItemNo: \"2051\", Value: string8.replace(/ /g, \"\").replaceAll(\"||\", \"、\").slice(0, -1) },\n { BarCodeStr: UserInfo.BarCodeStr, ItemNo: \"2013\", Value: string4.replace(/ /g, \"\").replaceAll(\"||\", \"、\").slice(0, -1) },\n\n ]\n //更新醫生問診\n PF.instance({\n method: \"post\",\n url: PF.url + \"/Questionaire/Update\",\n data: Qs.stringify({ list: UpdateList }),\n headers: { token: sessionStorage.token }\n })\n .then(function (response) {\n // console.log(response.data)\n const { Total, rows, error } = response.data;\n console.log(Total, rows)\n // if (TotalRecord <= 0) {\n // // alert(\"問卷提交出錯\\r\\n\" + ErrorMessage + \"請致電 04-2255-2555 #168 企業健檢\")\n // enqueueSnackbar(intl.formatMessage({ id: \"update fail\" }), { variant: \"error\", style: { whiteSpace: 'pre-line' } });\n // } else {\n // setActiveStep((prevActiveStep) => prevActiveStep + 1);\n // setImage(\"Image\");\n // enqueueSnackbar(intl.formatMessage({ id: \"update success\" }), { variant: \"success\", style: { whiteSpace: 'pre-line' } });\n // }\n })\n\n }\n\n const validator = () => {\n const form = formRef.current; //參數1\n if (form.checkValidity()) {\n console.log(\"全部通過\")\n //若驗證通過,刪除錯誤提示\n for (let i = 0; i < form.elements.length; i++) {\n const element = form.elements[i];\n if (element.name === \"gender\") {\n setGender(omit(gender, [\"error\"]));\n }\n if (Object.keys(personal).includes(element.name)) {\n setPersonal(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\"])\n }));\n }\n if (element.name === \"YN\") {\n setShiftChk(prev => ({\n ...prev,\n [element.name]: omit(prev.YN, [\"error\"])\n }))\n }\n if (element.name === \"YesShiftChkObjAll\") {\n setYesShiftChkObjAll(prev => (\n { ...prev, error: false }\n ))\n }\n if (element.name === \"ShiftOther\") {\n setYesShiftChkObj(prev => ({\n ...prev,\n [element.name]: omit(prev[element.name], [\"error\"])\n }))\n }\n if (Object.keys(workExp).includes(element.name)) {\n setWorkExp(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\"])\n }))\n }\n if (element.name === \"checked3rd\") {\n setCheck3rd(prevState => (omit(prevState, [\"error\"])))\n }\n if (element.name === \"pastHistory\") {\n set4thValidator(prevState => ({\n ...prevState,\n pastHistory: (omit(prevState.pastHistory, [\"error\"]))\n }))\n }\n if (Object.keys(array4th).includes(element.name)) {\n setArray4th(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\"])\n }))\n }\n if (Object.keys(array5thCheck).includes(element.name)) {\n setArray5thCheck(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\"])\n }));\n }\n if (element.name === \"conscious\") {\n set4thValidator(prevState => ({\n ...prevState,\n conscious: (omit(prevState.conscious, [\"error\"]))\n }))\n }\n if (Object.keys(array6th).includes(element.name)) {\n setArray6th(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\"])\n }))\n }\n if (Object.keys(array60th).includes(element.name)) {\n setArray60th(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\"])\n }))\n }\n if (element.name === \"allergy\") {\n set4thValidator(prevState => ({\n ...prevState,\n allergy: (omit(prevState.allergy, [\"error\"]))\n }))\n }\n\n if (Object.keys(array7th).includes(element.name)) {\n setArray7th(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\"])\n }))\n }\n if (element.name === \"usage\") {\n set4thValidator(prevState => ({\n ...prevState,\n usage: (omit(prevState.usage, [\"error\"]))\n }))\n }\n if (Object.keys(array8th).includes(element.name)) {\n setArray8th(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\"])\n }))\n }\n if (element.name === \"family\") {\n set4thValidator(prevState => ({\n ...prevState,\n family: (omit(prevState.family, [\"error\"]))\n }))\n }\n }\n return true;\n } else {\n // const form = formRef.current;\n // console.log(\"還沒通過\")\n // alert(\"尚有問題未完成\");\n alert(intl.formatMessage({ id: \"尚有問題未完成\" }));\n for (let i = 0; i < form.elements.length; i++) {\n const element = form.elements[i];\n if (element.tagName !== 'button' && element.willValidate && !element.validity.valid) { //提交按鈕不用驗證\n // console.log(element.validationMessage, element.name);\n // console.log(element.value)\n // console.log(element.value, element.validationMessage, element.name, element.tagName)\n if (element.name === \"gender\") {\n setGender({ ...gender, error: true, helperText: element.validationMessage })\n }\n if (element.name === \"YN\") {\n setShiftChk(prev => ({\n ...prev,\n [element.name]: { ...prev[element.name], error: true, helperText: element.validationMessage }\n }))\n }\n if (element.name === \"YesShiftChkObjAll\") {\n setYesShiftChkObjAll(prev => (\n { ...prev[element.name], error: true, helperText: element.validationMessage }\n ))\n }\n if (element.name === \"ShiftOther\") {\n setYesShiftChkObj(prev => ({\n ...prev,\n [element.name]: { ...prev[element.name], error: true, helperText: element.validationMessage }\n }))\n }\n\n if (Object.keys(personal).includes(element.name)) {\n // console.log(element.name);\n setPersonal(prevState => ({\n ...prevState,\n [element.name]: { ...prevState[element.name], error: true, helperText: element.validationMessage }\n }))\n }\n if (Object.keys(workExp).includes(element.name)) {\n setWorkExp(prevState => ({\n ...prevState,\n [element.name]: { ...prevState[element.name], error: true, helperText: element.validationMessage }\n }))\n workRef.current.scrollIntoView({ behavior: 'smooth' });\n }\n if (element.name === \"checked3rd\") {\n setCheck3rd(prevState => ({\n ...prevState,\n error: true, helperText: element.validationMessage\n }));\n checked3rdRef.current.scrollIntoView({ behavior: 'smooth' });\n }\n if (element.name === \"pastHistory\") {\n set4thValidator(prevState => ({\n ...prevState,\n [element.name]: { ...prevState[element.name], error: true, helperText: element.validationMessage }\n }));\n pastHistoryRef.current.scrollIntoView();\n }\n if (Object.keys(array4th).includes(element.name)) {\n setArray4th(prevState => ({\n ...prevState,\n [element.name]: { ...prevState[element.name], error: true, helperText: element.validationMessage }\n }))\n }\n if (Object.keys(array5thCheck).includes(element.name)) {\n setArray5thCheck(prevState => ({\n ...prevState,\n [element.name]: { ...prevState[element.name], error: true, helperText: element.validationMessage }\n }));\n if ([\"smoke\", \"sleep\", \"drunk\", \"betel\"].includes(element.name)) {\n sleepRef[element.name].current.scrollIntoView({ behavior: 'smooth' })\n }\n // console.log(element.name);\n }\n if (element.name === \"conscious\") {\n set4thValidator(prevState => ({\n ...prevState,\n [element.name]: { ...prevState[element.name], error: true, helperText: element.validationMessage }\n }));\n consciousRef.current.scrollIntoView({ behavior: 'smooth' })\n }\n if (Object.keys(array6th).includes(element.name)) {\n setArray6th(prevState => ({\n ...prevState,\n [element.name]: { ...prevState[element.name], error: true, helperText: element.validationMessage }\n }))\n console.log(element.name)\n if (element.name === \"W6\") {\n w6Ref.current.scrollIntoView()\n }\n }\n if (Object.keys(array60th).includes(element.name)) {\n setArray60th(prevState => ({\n ...prevState,\n [element.name]: { ...prevState[element.name], error: true, helperText: element.validationMessage }\n }))\n }\n if (Object.keys(array7th).includes(element.name)) {\n setArray7th(prevState => ({\n ...prevState,\n [element.name]: { ...prevState[element.name], error: true, helperText: element.validationMessage }\n }))\n }\n if (Object.keys(array8th).includes(element.name)) {\n setArray8th(prevState => ({\n ...prevState,\n [element.name]: { ...prevState[element.name], error: true, helperText: element.validationMessage }\n }))\n }\n if (element.name === \"allergy\") {\n set4thValidator(prevState => ({\n ...prevState,\n [element.name]: { ...prevState[element.name], error: true, helperText: element.validationMessage }\n }));\n allergyRef.current.scrollIntoView({ behavior: 'smooth' })\n }\n if (element.name === \"usage\") {\n set4thValidator(prevState => ({\n ...prevState,\n [element.name]: { ...prevState[element.name], error: true, helperText: element.validationMessage }\n }));\n usageRef.current.scrollIntoView({ behavior: 'smooth' })\n }\n if (element.name === \"family\") {\n set4thValidator(prevState => ({\n ...prevState,\n [element.name]: { ...prevState[element.name], error: true, helperText: element.validationMessage }\n }));\n familyRef.current.scrollIntoView({ behavior: 'smooth' })\n }\n\n } else {//驗證通過,自訂訊息\n //有在settingObj的\n // console.log(\"Pass\", element.value, element.validationMessage, element.name, element.tagName)\n if (element.name === \"gender\") {\n setGender(omit(gender, [\"error\"]));\n }\n if (element.name === \"YN\") {\n setShiftChk(prev => ({\n ...prev,\n [element.name]: omit(prev.YN, [\"error\"])\n }))\n }\n\n if (element.name === \"YesShiftChkObjAll\") {\n setYesShiftChkObjAll(prev => (\n { ...prev, error: false }\n ))\n }\n if (element.name === \"ShiftOther\") {\n setYesShiftChkObj(prev => ({\n ...prev,\n [element.name]: omit(prev[element.name], [\"error\"])\n }))\n }\n if (Object.keys(personal).includes(element.name)) {\n setPersonal(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\"])\n }));\n }\n if (Object.keys(workExp).includes(element.name)) {\n setWorkExp(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\"])\n }))\n }\n if (element.name === \"checked3rd\") {\n setCheck3rd(prevState => (omit(prevState, [\"error\"])))\n }\n if (element.name === \"pastHistory\") {\n set4thValidator(prevState => ({\n ...prevState,\n pastHistory: (omit(prevState.pastHistory, [\"error\"]))\n }))\n }\n if (Object.keys(array4th).includes(element.name)) {\n setArray4th(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\"])\n }))\n }\n if (Object.keys(array60th).includes(element.name)) {\n setArray60th(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\"])\n }))\n }\n if (Object.keys(array7th).includes(element.name)) {\n setArray7th(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\"])\n }))\n }\n if (Object.keys(array8th).includes(element.name)) {\n setArray8th(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\"])\n }))\n }\n if (Object.keys(array5thCheck).includes(element.name)) {\n setArray5thCheck(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\"])\n }));\n }\n if (element.name === \"conscious\") {\n set4thValidator(prevState => ({\n ...prevState,\n conscious: (omit(prevState.conscious, [\"error\"]))\n }))\n\n }\n if (Object.keys(array6th).includes(element.name)) {\n setArray6th(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\"])\n }))\n }\n if (element.name === \"allergy\") {\n set4thValidator(prevState => ({\n ...prevState,\n allergy: (omit(prevState.allergy, [\"error\"]))\n }))\n }\n if (element.name === \"usage\") {\n set4thValidator(prevState => ({\n ...prevState,\n usage: (omit(prevState.usage, [\"error\"]))\n }))\n }\n if (element.name === \"family\") {\n set4thValidator(prevState => ({\n ...prevState,\n family: (omit(prevState.family, [\"error\"]))\n }))\n }\n\n }\n }\n return false;\n }\n }\n const [personal, setPersonal] = React.useState({\n CustName: { name: \"CustName\", value: UserInfo.CustName },\n // personalID: { name: \"personalID\", value: \"\" },\n // birthDate: { name: \"birthDate\", label: \"4.出生日期\", required: true, value: null, maxDate: new Date() },\n hireDate: { name: \"hireDate\", label: \"2.受僱日期\", required: true, value: null },\n // examinationDate: { name: \"examinationDate\", label: \"6. 體檢日期\", required: true, value: null, minDate: new Date() }\n name: {},\n relationship: {},\n phonenum: {},\n otherRelationship: {},\n })\n const handleDateChange = (name, e, v) => {\n if (_.isNil(imageURL)) { //已提交不得修改\n setPersonal(prevState => ({\n ...prevState,\n [name]: {\n ...prevState[name],\n value: v\n }\n }));\n if ((personal.hireDate.value === \"\" || personal.hireDate.value === null) && (v === \"\" || v === null)) {\n return\n }\n if ((personal.hireDate.value === \"\" || personal.hireDate.value === null) && (v !== null || v !== \"\") && personal.hireDate.required === true) {\n setNumerator(prev => prev + 1)\n } else if ((v === \"\" || v === null) && personal.hireDate.required === true) {\n setNumerator(prev => prev - 1)\n }\n }\n }\n const handleChangeTxt1st = e => {\n if (_.isNil(imageURL)) { //已提交不得修改\n const { name, value } = e.target;\n setPersonal(prevState => ({\n ...prevState,\n [name]: { ...prevState[name], value: value }\n }))\n if (_.isEmpty(personal.CustName.value) && value !== \"\") {\n setNumerator(prev => prev + 1)\n } else if (!_.isEmpty(personal.CustName.value) && value === \"\") { //清空\n setNumerator(prev => prev - 1)\n }\n }\n }\n\n const [workExp, setWorkExp] = React.useState({\n usedJob: { name: \"usedJob\", label: \"1.曾經從事\", type: \"text\", value: null, required: true, disabled: false },\n usedStart: { name: \"usedStart\", label: \" \", type: \"date\", value: null, required: true, disableFuture: true, disabled: false },\n usedEnd: { name: \"usedEnd\", label: \" \", type: \"date\", value: null, required: true, disableFuture: true, disabled: false },\n usedPeriod_Y: { name: \"usedPeriod_Y\", label: \" \", value: null, min: 0, type: \"number\", endAdmt: \"年\", startAdmt: \"共\", disabled: true },\n usedPeriod_M: { name: \"usedPeriod_M\", label: \" \", value: null, min: 0, max: 12, type: \"number\", endAdmt: \"個月\", startAdmt: \" \", disabled: true },\n\n\n\n rightNowJob: { name: \"rightNowJob\", label: \"2.目前從事\", type: \"text\", value: null, required: true },\n rightNowStart: { name: \"rightNowStart\", label: \" \", type: \"date\", value: null, required: true, disableFuture: true },\n rightNowEnd: { name: \"rightNowEnd\", label: \" \", type: \"date\", value: null, disableFuture: true, disabled: true },\n rightNowPeriod_Y: { name: \"rightNowPeriod_Y\", label: \" \", value: null, min: 0, type: \"number\", endAdmt: \"年\", startAdmt: \"共\" },\n rightNowPeriod_M: { name: \"rightNowPeriod_M\", label: \" \", value: null, min: 0, max: 12, type: \"number\", endAdmt: \"個月\" },\n workhours_1: { name: \"workhours_1\", type: \"number\", value: null, min: 0, step: 0.5, max: 168, endAdmt: \"小時\", required: true },\n workhours_2: { name: \"workhours_2\", type: \"number\", value: null, min: 0, step: 0.5, max: 168, endAdmt: \"小時\", required: true },\n })\n const workRef = useRef(null);\n const handleChangeTxt2nd = e => {\n if (_.isNil(imageURL)) { //已提交不得修改\n // console.log(\"?!\")\n const { name, value } = e.target;\n if (name === \"usedJob\" || name === \"rightNowJob\" || name === \"workhours_1\" || name === \"workhours_2\") {\n setWorkExp(prevState => ({\n ...prevState,\n [name]: { ...prevState[name], value: value }\n }))\n // console.log(workExp[name].value)\n\n if ((workExp[name].value === \"\" || workExp[name].value === null) && value !== \"\" && workExp[name].required === true) {\n setNumerator(prev => prev + 1)\n } else if (value === \"\" && workExp[name].required === true) {\n setNumerator(prev => prev - 1)\n }\n }\n }\n\n }\n const handleDateChange2nd = (name, e, v) => {\n if (_.isNil(imageURL)) { //已提交不得修改\n // console.log(name, v)\n // console.log(workExp[name].value)\n setWorkExp(prevState => ({\n ...prevState,\n [name]: { ...prevState[name], value: v }\n }));\n if ((workExp[name].value === \"\" || workExp[name].value === null) && (v === \"\" || v === null)) {\n return\n }\n if ((workExp[name].value === \"\" || workExp[name].value === null) && (v !== null || v !== \"\") && workExp[name].required === true) {\n setNumerator(prev => prev + 1)\n } else if ((v === \"\" || v === null) && workExp[name].required === true) {\n setNumerator(prev => prev - 1)\n }\n }\n }\n const calculateWorkRange = () => {\n // console.log(workExp.usedStart.value)\n // console.log(workExp.usedEnd.value)\n if (!_.isNil(workExp.usedStart.value) && !_.isNil(workExp.usedEnd.value)) {\n let start = moment(workExp.usedStart.value + '01日', 'YYYY年MM月DD日')\n let end = moment(workExp.usedEnd.value + '01日', 'YYYY年MM月DD日')\n let months = moment.duration(end.diff(start)).asMonths();//總月份數\n let RoundMonths = Math.round(months)\n // console.log(RoundMonths)\n let y = Math.floor(RoundMonths / 12)\n let m = Math.round(RoundMonths % 12)\n // console.log(y, m)\n setWorkExp(prevState => ({\n ...prevState,\n usedPeriod_Y: { ...prevState.usedPeriod_Y, value: y },\n usedPeriod_M: { ...prevState.usedPeriod_M, value: m }\n }))\n }\n if (!_.isNil(workExp.rightNowStart.value) && !_.isNil(workExp.rightNowEnd.value)) {\n let start = moment(workExp.rightNowStart.value + '01日', 'YYYY年MM月DD日')\n let end = moment(workExp.rightNowEnd.value + '01日', 'YYYY年MM月DD日')\n let months = moment.duration(end.diff(start)).asMonths();//總月份數\n let RoundMonths = Math.round(months)\n // console.log(RoundMonths)\n\n let y = Math.floor(RoundMonths / 12)\n let m = Math.round(RoundMonths % 12)\n // console.log(y, m)\n setWorkExp(prevState => ({\n ...prevState,\n rightNowPeriod_Y: { ...prevState.rightNowPeriod_Y, value: y },\n rightNowPeriod_M: { ...prevState.rightNowPeriod_M, value: m }\n }))\n }\n }\n\n React.useEffect(() => {\n calculateWorkRange();\n }, [workExp.usedStart, workExp.usedEnd, workExp.rightNowEnd, workExp.rightNowStart]); //避免循環\n const useStyles = makeStyles({\n submitButton: {\n width: \"100%\", background: '#2E3B55', fontWeight: \"bold\",\n \"&:hover\": {\n background: '#fffff',\n // color:'#2E3B55'\n }\n },\n media: {\n height: 620,\n width: \"100%\",\n objectFit: 'cover',\n\n },\n\n });\n const { app } = useSelector(state => ({\n app: state.app,\n }));\n const classes = useStyles();\n React.useEffect(() => {\n if (initialRender.current) { //初始載入\n initialRender.current = false\n //初始若登入者有公司名稱訊息\n if (UserInfo.CustName?.length > 0) {\n setNumerator(prev => prev + 1)\n }\n }\n }, []); //避免循環\n const handleClear = () => {\n if (_.isNil(imageURL)) {\n setPersonal(prevstate => ({\n ...prevstate,\n CustName: { ...prevstate.CustName, value: \"\" }\n }));\n if (personal.CustName.value !== \"\") {\n setNumerator(prev => prev - 1)\n }\n }\n }\n //是否需要輪班\n const [shiftChk, setShiftChk] = React.useState({\n YN: { checked: false, name: \"YN\" },\n Yes: null,\n No: null,\n })\n //是否需要輪班,紀錄OBJ\n const [shiftChkObj, setShiftChkObj] = React.useState({\n YN: { checked: false },\n Yes: null,\n No: null,\n })\n // React.useEffect(() => {\n // console.log(!shiftChkObj.Yes ? 'X' : shiftChkObj.Yes.toString())\n // }, [shiftChkObj])\n const handleShiftChk = e => {\n if (_.isNil(imageURL)) { //已提交不得修改\n const { name, checked } = e.target;\n // console.log(name, checked)\n if (name === \"Yes\") {\n setShiftChkObj(prev => ({\n YN: { ...prev.YN, checked: true },\n Yes: checked,\n No: !checked\n }));\n if (shiftChkObj.Yes === null) {\n setNumerator(prev => prev + 1);\n }\n if (checked === false) {\n //先移除所有checked\n const keys = Object.keys(YesShiftChkObj);\n keys.map(item => {\n delete YesShiftChkObj[item].checked;\n delete YesShiftChkObj[item].value;\n })\n setDenominator(prev => prev - 1);\n }\n else {//YES + checked\n setDenominator(prev => prev + 1);\n }\n }\n else if (name === \"No\") {\n setShiftChkObj(prev => ({\n YN: { ...prev.YN, checked: true },\n Yes: !checked,\n No: checked\n }))\n\n if (shiftChkObj.No === null) {\n setNumerator(prev => prev + 1);\n }\n\n if (checked === true) {\n //先移除所有checked\n const keys = Object.keys(YesShiftChkObj);\n keys.map(item => {\n delete YesShiftChkObj[item].checked;\n delete YesShiftChkObj[item].value;\n })\n if (shiftChkObj.No !== null) {\n setDenominator(prev => prev - 1);\n }\n }\n else {//YES + checked\n setDenominator(prev => prev + 1);\n }\n }\n }\n }\n\n\n\n const [CChkObj, setCChkObj] = React.useState({\n YN: { checked: false },\n Yes: null,\n No: null,\n })\n\n //忘記日期勾選\n const [forgot, setforgot] = React.useState(false)\n const handleforgotChk = e => {\n\n setWorkExp(prevState => ({\n ...prevState,\n\n usedStart: {\n ...prevState.usedStart,\n disabled: false,\n value: null\n },\n usedEnd: {\n ...prevState.usedEnd,\n disabled: false,\n value: null\n },\n usedPeriod_Y: { ...prevState.usedPeriod_Y, value: '' },\n usedPeriod_M: { ...prevState.usedPeriod_M, value: '' },\n }));\n\n setforgot(!forgot);\n\n if (NoJob) {\n setWorkExp(prevState => ({\n ...prevState,\n usedJob: {\n ...prevState.usedJob,\n disabled: false,\n value: null\n },\n }));\n setNoJob(false);\n }\n\n if (_.isNil(imageURL)) { //已提交不得修改\n const { name, checked } = e.target;\n // console.log(name, checked)\n if (!forgot) {\n setWorkExp(prevState => ({\n ...prevState,\n usedStart: {\n ...prevState.usedStart,\n disabled: true,\n value: null\n },\n usedEnd: {\n ...prevState.usedEnd,\n disabled: true,\n value: null\n }\n }));\n setforgot(true)\n }\n else if (forgot) {\n\n\n setforgot(false)\n }\n }\n }\n\n //無工作經歷勾選\n const [NoJob, setNoJob] = React.useState(false)\n const handlenojobChk = e => {\n\n setWorkExp(prevState => ({\n ...prevState,\n usedJob: {\n ...prevState.usedJob,\n disabled: false,\n value: null\n },\n usedStart: {\n ...prevState.usedStart,\n disabled: false,\n value: null\n },\n usedEnd: {\n ...prevState.usedEnd,\n disabled: false,\n },\n usedPeriod_Y: { ...prevState.usedPeriod_Y, value: '' },\n usedPeriod_M: { ...prevState.usedPeriod_M, value: '' },\n }));\n\n setNoJob(!NoJob);\n if (forgot) {\n setforgot(false);\n }\n\n if (_.isNil(imageURL)) { //已提交不得修改\n const { name, checked } = e.target;\n // console.log(name, checked)\n if (!NoJob) {\n setWorkExp(prevState => ({\n ...prevState,\n usedJob: {\n ...prevState.usedJob,\n disabled: true,\n value: '無'\n },\n usedStart: {\n ...prevState.usedStart,\n disabled: true,\n value: null\n },\n usedEnd: {\n ...prevState.usedEnd,\n disabled: true,\n value: null\n },\n\n }));\n setNoJob(true)\n }\n else if (NoJob) {\n\n\n setNoJob(false)\n }\n }\n }\n\n\n //輪班勾是的進階List\n const [YesShiftChk, setYesShiftChk] = React.useState({\n Shift2: { name: \"Shift2\", checked: null, type: \"chkBox\", gridWid: 2 },\n Shift3: { name: \"Shift3\", checked: null, type: \"chkBox\", gridWid: 2 },\n Shift4: { name: \"Shift4\", checked: null, type: \"chkBox\", gridWid: 2 },\n ShiftOther: { name: \"ShiftOther\", checked: null, value: \"\", gridWid: 2 }\n });\n //輪班勾是的進階List,紀錄OBJ\n const [YesShiftChkObj, setYesShiftChkObj] = React.useState({\n Shift2: { checked: null, systemLabel: \"兩班制 \" },\n Shift3: { checked: null, systemLabel: \"三班制 \" },\n Shift4: { checked: null, systemLabel: \"四班制 \" },\n ShiftOther: { checked: null, value: \"\", systemLabel: \"其他:\" }\n });\n const [YesShiftChkObjAll, setYesShiftChkObjAll] = React.useState({\n checked: null, name: \"YesShiftChkObjAll\"\n });\n React.useEffect(() => {\n if (!initialRender.current) {\n const total = Object.values(YesShiftChkObj).reduce((a, b) => a + (b.checked ? 1 : 0), 0);\n // console.log(total)\n // console.log(YesShiftChkObjAll)\n if (total >= 1) {\n setYesShiftChkObjAll(prev => ({\n ...prev, checked: true\n }))\n if (!YesShiftChkObjAll.checked || YesShiftChkObjAll.checked === null) {\n setNumerator(prev => prev + 1);\n }\n } else if (total === 0) {\n setYesShiftChkObjAll(prev => ({\n ...prev, checked: false\n }))\n if (YesShiftChkObjAll.checked) {\n setNumerator(prev => prev - 1);\n }\n }\n // let Shift = Object.values(YesShiftChkObj).reduce((a, b) => a + (b.checked ? \"||\" + b.systemLabel : \"\"), \"\");\n // console.log(Shift)\n // console.log(\"||\" + (YesShiftChkObj.ShiftOther.value || \"\"))\n }\n }, [YesShiftChkObj])\n const handleChangeYesShift = e => {\n if (_.isNil(imageURL)) { //已提交不得修改\n const { name, checked } = e.target;\n //先移除所有checked\n const keys = Object.keys(YesShiftChkObj);\n keys.map(item => {\n delete YesShiftChkObj[item].checked\n delete YesShiftChkObj[item].value\n })\n //選中那個勾選\n setYesShiftChkObj(prev => ({\n ...prev,\n [name]: { ...prev[name], checked }\n }));\n }\n }\n\n const handleChangeYesShiftOther = e => {\n if (_.isNil(imageURL)) { //已提交不得修改\n const { name, value } = e.target;\n setYesShiftChkObj(prev => ({\n ...prev,\n [name]: { ...prev[name], value }\n }));\n }\n }\n\n\n return (\n \n \n \n

\n
\n \n {isShown && (\n
\n \n \n \n \n \n \n \n \n ,\n }}\n />\n \n \n {/* \n \n 2.性別:\n \n \n }\n label=\"男\"\n />\n }\n label=\"女\"\n />\n \n {gender.error ? ({gender.helperText}) : null}\n \n */}\n {/* \n \n */}\n \n \n }\n showTodayButton\n minDate={personal.hireDate.minDate || new Date(\"1900-01-01\")}\n maxDate={personal.hireDate.maxDate || new Date(\"2100-01-01\")}\n clearLabel={\"X\"}\n openTo={\"year\"}\n label={personal.hireDate.label}\n value={personal.hireDate.value}\n inputValue={personal.hireDate.value}\n onChange={(event, value) =>\n handleDateChange(personal.hireDate.name, event, value)\n }\n />\n \n \n \n
\n )}\n {isShown && (\n
\n \n\n *注意事項
  曾經從事:現任工作之前一個任職公司,起始日及截止日必須如實填寫。
\n   目前從事:現任工作起始日為受雇到職日,在職中則不需填截止日。
  從未有工作經驗則選:無
\n   工時為\"每週\"計算,如:一天工作8小時一週5天為40小時。\n
\n\n \n {Object.values(workExp).slice(0, 1).map((item, key) => {\n\n if (key === 0) {\n return (\n \n \n : null} onChange={handleChangeTxt2nd} />} labelPlacement={\"start\"} label={} />\n \n \n )\n } else if (key === 1 || key === 2) {\n return (\n <>\n \n moment(date).format(\"YYYY年MM月\")}\n key={key}\n views={[\"year\", \"month\"]}\n autoOk\n autoComplete=\"off\"\n clearable\n type=\"datetime\"\n inputProps={{\n // ...prop //像是minLength、pattern\n pattern: \"[0-9]{4}年(0[1-9]|1[012])月\"\n }}\n style={{ width: 150 }}\n name={item.name}\n required={item.required || false}\n\n disableFuture={item.disableFuture || false}\n error={item.error || false}\n helperText={\n item.error ? (\n \n ) : null}\n todayLabel={}\n showTodayButton\n minDate={item.minDate || new Date(\"1900-01-01\")}\n maxDate={item.maxDate || new Date(\"2100-01-01\")}\n clearLabel={\"X\"}\n label={item.label}\n value={item.value}\n inputValue={item.value}\n onChange={(event, value) =>\n handleDateChange2nd(item.name, event, value)\n }\n />\n \n )\n } else {\n return (\n ,\n startAdornment: ,\n }}\n autoComplete=\"off\"\n helperText={item.error ? : null}\n inputProps={{ ...item, style: { textAlign: 'center' } }}\n />\n )\n\n }\n\n })}\n {Object.values(workExp).slice(1, 5).map((item, key) => { //曾經從事\n if (key === 0 || key === 1) {\n return (\n \n \n ) : null}\n todayLabel={}\n showTodayButton\n minDate={item.minDate || new Date(\"1900-01-01\")}\n maxDate={item.maxDate || new Date(\"2100-01-01\")}\n clearLabel={\"X\"}\n label={item.label}\n value={item.value}\n inputValue={item.value}\n onChange={(event, value) =>\n handleDateChange2nd(item.name, event, value)\n }\n />\n }\n />\n \n )\n } else {\n return (\n \n ,\n startAdornment: ,\n }}\n autoComplete=\"off\"\n helperText={item.error ? : null}\n inputProps={{ ...item, style: { textAlign: 'center' } }}\n />\n }\n />\n \n )\n\n }\n\n })}\n\n \n \n }\n label={}\n />\n \n\n \n \n }\n label={}\n\n />\n \n {Object.values(workExp).slice(5, 6).map((item, key) => { //目前從事\n if (key === 0) {\n return (\n \n \n : null} onChange={handleChangeTxt2nd} />}\n labelPlacement={\"start\"}\n label={} />\n \n \n )\n } else if (key === 1 || key === 2) {\n return (\n \n \n ) : null}\n todayLabel={}\n showTodayButton\n minDate={item.minDate || new Date(\"1900-01-01\")}\n maxDate={item.maxDate || new Date(\"2100-01-01\")}\n clearLabel={\"X\"}\n label={item.label}\n value={item.value}\n inputValue={item.value}\n onChange={(event, value) =>\n handleDateChange2nd(item.name, event, value)\n }\n />\n }\n />\n \n )\n } else {\n return (\n \n ,\n startAdornment: ,\n }}\n autoComplete=\"off\"\n helperText={item.error ? : null}\n inputProps={{ ...item, style: { textAlign: 'center' } }}\n />\n }\n />\n \n )\n }\n })}\n {Object.values(workExp).slice(6, 10).map((item, key) => {\n if (key === 0 || key === 1) {\n return (\n \n \n ) : null}\n todayLabel={}\n showTodayButton\n minDate={item.minDate || new Date(\"1900-01-01\")}\n maxDate={item.maxDate || new Date(\"2100-01-01\")}\n clearLabel={\"X\"}\n label={item.label}\n value={item.value}\n inputValue={item.value}\n onChange={(event, value) =>\n handleDateChange2nd(item.name, event, value)\n }\n />\n }\n />\n )\n } else {\n return (\n \n {intl.formatMessage({ id: item.endAdmt })},\n startAdornment: ,\n }}\n autoComplete=\"off\"\n helperText={item.error ? : null}\n inputProps={{ ...item, style: { textAlign: 'center' } }}\n />\n }\n />\n \n )\n }\n })}\n \n
\n \n \n \n \n {shiftChk.YN.error ? () : null}\n \n \n
\n
\n\n \n \n }\n label={}\n onMouseDown={() => { shiftChkObj.Yes || false ? playActive() : playOn(); }}\n />(\n\n {Object.values(YesShiftChk).map((item, key) => {\n if (item.type === \"chkBox\") {\n return (\n \n }\n disabled={!shiftChkObj.Yes || false}\n key={key}\n label={}\n onMouseDown={() => { YesShiftChkObj[item.name].checked || false ? playActive() : playOn(); }}\n />\n )\n } else {\n return (\n\n <>\n { YesShiftChkObj[item.name].checked || false ? playActive() : playOn(); }}\n />\n }\n name={item.name}\n autoComplete=\"off\"\n onChange={handleChangeYesShiftOther}\n error={item.error || false}\n helperText={item.error ? : null}\n />\n \n )\n }\n })}\n )\n \n \n \n \n {shiftChkObj.Yes && YesShiftChkObjAll.error ? () : null}\n \n \n \n \n \n }\n label={}\n onMouseDown={() => { shiftChkObj.No || false ? playActive() : playOn(); }}\n />\n \n {Object.values(workExp).slice(10, 11).map((item, key) => {\n return (\n \n \n ,\n }}\n inputProps={{\n ...item,\n style: { textAlign: \"center\" }\n }}\n value={item.value || \"\"}\n helperText={item.error ? : null}\n onChange={handleChangeTxt2nd}\n />\n } labelPlacement={\"start\"}\n label={\n \n \n 平均每週工時\n 為:\n \n } />\n \n \n )\n })}\n {Object.values(workExp).slice(11, 12).map((item, key) => {\n return (\n \n ,\n }}\n inputProps={{\n ...item,\n style: { textAlign: \"center\" }\n }}\n value={item.value || \"\"}\n helperText={item.error ? : null}\n onChange={handleChangeTxt2nd}\n />\n }\n labelPlacement={\"start\"}\n label={\n \n \n 平均每週工時\n 為:\n \n } />\n \n )\n })}\n
\n
\n )}\n {isShown && (\n
\n \n \n \n \n \n \n \n \n }\n label={}\n onMouseDown={() => { checked3rd.checkA ? playActive() : playOn(); }}\n />\n \n }\n label={}\n onMouseDown={() => { checked3rd.checkB ? playActive() : playOn(); }}\n />\n \n {checked3rd.error ? () : null}\n \n\n \n\n \n
\n )}\n
\n \n \n \n \n\n 緊急連絡人
\n\n\n \n {/* 關係輸入框及標題 */}\n \n \n\n \n \n 關係:\n \n \n \n \n \n 父母\n 兄弟姊妹\n 配偶\n 親屬\n 其他\n \n {personal.relationship.error && (\n {personal.relationship.helperText}\n )}\n {formData.relationship === '其他' && (\n\n setFormData({ ...formData, otherRelationship: e.target.value })}\n error={personal.otherRelationship.error || false}\n\n required\n label=\"請輸入其他關係\"\n />\n )}\n {personal.otherRelationship.error && (\n {personal.otherRelationship.helperText}\n )}\n \n \n \n\n\n \n \n \n\n \n \n \n \n \n {/* */}\n
\n
\n\n
\n
\n
\n \n \n \n \n \n \n \n {array4thValidator.pastHistory.error ? () : null}\n \n \n \n {Object.values(array4th).map((item, key) => {\n //console.log(item);\n if (item.type === \"chkBox\") {\n return (\n \n \n }\n label={}\n onMouseDown={() => { item.checked || false ? playActive() : playOn(); }}\n />\n )\n } else {\n return (\n \n \n { item.checked || false ? playActive() : playOn(); }}\n />\n }\n name={item.name}\n autoComplete=\"off\"\n onChange={handleChangeTxt4th}\n // inputProps={{\n // type2:item.type\n // }}\n helperText={item.error ? : null}\n />\n \n )\n }\n\n })}\n \n
\n
\n \n \n \n \n \n \n \n {array5thCheck.smoke.error ? () : null}\n \n \n \n {Object.values(array5_1).map((item, key) => {\n if (item.type === \"chkBox\") {\n return (\n \n \n }\n label={}\n onMouseDown={() => { item.checked || false ? playActive() : playOn(); }}\n />\n )\n } else {\n return (\n
\n \n \n \n }\n label={}\n onMouseDown={() => { item.checked || false ? playActive() : playOn(); }}\n />\n \n \n }\n name={item.name_1}\n type={item.type_1}\n style={{ width: 120 }}\n autoComplete=\"off\"\n onChange={handleChangeTxt5_1}\n helperText={array5thCheck[item.name_1].error ? : null}\n InputProps={{\n endAdornment: ,\n }}\n inputProps={{\n min: item.min_1,\n step: 1, style: { textAlign: 'center' },\n max: item.max_1 || null\n }}\n\n />}\n />\n \n \n \n {item.label_2 ? (\n }\n name={item.name_2}\n type={item.type_2}\n style={{ width: 120 }}\n autoComplete=\"off\"\n onChange={handleChangeTxt5_1}\n helperText={array5thCheck[item.name_2].error ? : null}\n InputProps={{\n endAdornment: ,\n }}\n inputProps={{ min: 0, step: 1, style: { textAlign: 'center' }, max: item.max_2 || null }}\n />}\n />\n\n ) : null}\n \n
\n )\n }\n })}\n
\n \n \n \n \n \n \n {array5thCheck.betel.error ? () : null}\n \n \n \n {Object.values(array5_2).map((item, key) => {\n if (item.type === \"chkBox\") {\n return (\n \n \n }\n label={}\n onMouseDown={() => { item.checked || false ? playActive() : playOn(); }}\n />\n )\n } else {\n return (\n
\n \n \n \n }\n label={}\n onMouseDown={() => { item.checked || false ? playActive() : playOn(); }}\n />\n \n \n }\n name={item.name_1}\n type={item.type_1}\n style={{ width: 120 }}\n autoComplete=\"off\"\n onChange={handleChangeTxt5_1}\n error={array5thCheck[item.name_1].error || false}\n helperText={array5thCheck[item.name_1].error ? : null}\n InputProps={{\n endAdornment: ,\n }}\n inputProps={{\n min: 0,\n step: 1, style: { textAlign: 'center' },\n max: item.max_1 || null\n }}\n />}\n />\n \n \n \n {item.label_2 ? (}\n name={item.name_2}\n type={item.type_2}\n style={{ width: 120 }}\n autoComplete=\"off\"\n onChange={handleChangeTxt5_1}\n error={array5thCheck[item.name_2].error || false}\n helperText={array5thCheck[item.name_2].error ? : null}\n InputProps={{\n endAdornment: ,\n }}\n inputProps={{\n min: 0, step: 1, style: { textAlign: 'center' }, max: item.max_2 || null\n }}\n />}\n />) : null}\n \n
)\n }\n })}\n
\n \n \n \n \n \n \n {array5thCheck.drunk.error ? () : null}\n \n \n \n {Object.values(array5_3).map((item, key) => {\n //console.log(item);\n if (item.type === \"chkBox\") {\n return (\n \n \n }\n label={}\n onMouseDown={() => { item.checked || false ? playActive() : playOn(); }}\n />\n )\n } else {\n return (\n \n
\n \n \n }\n label={}\n onMouseDown={() => { item.checked || false ? playActive() : playOn(); }}\n />\n \n \n }\n name={item.name_1}\n type={item.type_1}\n style={{ width: 120 }}\n autoComplete=\"off\"\n onChange={handleChangeTxt5_1}\n error={array5thCheck[item.name_1].error || false}\n helperText={array5thCheck[item.name_1].error ? : null}\n InputProps={{\n endAdornment: {},\n }}\n inputProps={{\n min: 0, style: { textAlign: 'center' }, max: item.max_1 || null\n }}\n />}\n />\n \n \n
\n\n \n {item.label_2 ? (\n }\n name={item.name_2}\n type={item.type_2}\n style={{ width: 120 }}\n autoComplete=\"off\"\n onChange={handleChangeTxt5_1}\n error={array5thCheck[item.name_2].error || false}\n helperText={array5thCheck[item.name_2].error ? : null}\n InputProps={{\n endAdornment: ,\n }}\n inputProps={{\n style: { textAlign: 'center' }, min: 0, max: item.max_2 || null\n }}\n />}\n />) : null}\n \n \n {item.label_3 ? (}\n name={item.name_3}\n type={item.type_3}\n style={{ width: 120 }}\n autoComplete=\"off\"\n onChange={handleChangeTxt5_1}\n error={array5thCheck[item.name_3].error || false}\n helperText={array5thCheck[item.name_3].error ? : null}\n InputProps={{\n endAdornment: ,\n }}\n inputProps={{\n min: 0.1, step: 0.1, style: { textAlign: 'center' }, max: item.max_3 || null\n }}\n />}\n />) : null}\n\n
\n )\n }\n })}\n


\n
\n\n {/* \n ,\n }}\n helperText={array5thCheck.sleep.error ? : null}\n /> */}\n \n \n \n

\n \n \n {(message) => }\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n {array5thCheck.sleep.error ? (\n \n ) : null\n }\n \n


\n
\n
\n \n \n \n \n \n \n \n {array4thValidator.conscious.error ? () : null}\n \n \n \n {Object.values(array6th).map((item, key) => {\n //console.log(item);\n if (item.type === \"chkBox\") {\n return (\n \n \n }\n label={}\n onMouseDown={() => { item.checked || false ? playActive() : playOn(); }}\n />\n )\n } else {\n return (\n \n \n { item.checked || false ? playActive() : playOn(); }}\n />\n }\n name={item.name}\n autoComplete=\"off\"\n onChange={handleChangeTxt4th}\n error={item.error || false}\n helperText={item.error ? : null}\n />\n \n )\n }\n\n })}\n \n
\n
\n \n \n \n \n \n \n \n {array4thValidator.allergy.error ? () : null}\n \n \n \n {Object.values(array60th).map((item, key) => {\n //console.log(item);\n if (item.type === \"chkBox\") {\n return (\n \n \n }\n label={}\n onMouseDown={() => { item.checked || false ? playActive() : playOn(); }}\n />\n )\n } else {\n return (\n \n \n { item.checked || false ? playActive() : playOn(); }}\n />\n }\n name={item.name}\n autoComplete=\"off\"\n onChange={handleChangeTxt60th}\n // inputProps={{\n // type2:item.type\n // }}\n helperText={item.error ? : null}\n />\n \n )\n }\n\n })}\n \n
\n\n
\n \n \n \n \n \n \n \n {array4thValidator.usage.error ? () : null}\n \n \n \n {Object.values(array7th).map((item, key) => {\n //console.log(item);\n if (item.type === \"chkBox\") {\n return (\n \n \n }\n label={}\n onMouseDown={() => { item.checked || false ? playActive() : playOn(); }}\n />\n )\n } else {\n return (\n \n \n { item.checked || false ? playActive() : playOn(); }}\n />\n }\n name={item.name}\n autoComplete=\"off\"\n onChange={handleChangeTxt7th}\n // inputProps={{\n // type2:item.type\n // }}\n helperText={item.error ? : null}\n />\n \n )\n }\n\n })}\n \n
\n
\n \n \n \n \n \n \n \n {array4thValidator.family.error ? () : null}\n \n \n \n {Object.values(array8th).map((item, key) => {\n //console.log(item);\n if (item.type === \"chkBox\") {\n return (\n \n \n }\n label={}\n onMouseDown={() => { item.checked || false ? playActive() : playOn(); }}\n />\n )\n } else {\n return (\n \n \n { item.checked || false ? playActive() : playOn(); }}\n />\n }\n name={item.name}\n autoComplete=\"off\"\n onChange={handleChangeTxt8th}\n // inputProps={{\n // type2:item.type\n // }}\n helperText={item.error ? : null}\n />\n \n )\n }\n\n })}\n \n
\n\n





\n
\n \n
\n {/* */}\n {!imageURL ? (
\n \n
) : null}\n\n
\n
\n {/* {imageURL ?\n (
\n
\n \n
\n
\n \n
\n
\n )\n : null\n } */}\n\n
\n\n
\n {/*
\n {imageURL ? : null}\n
*/}\n
\n );\n})\n\nexport default Questionaire80th;\n\n// const MultipleComponet = React.forwardRef((props,ref)=>{\n\n\n// return(\n//
\n// \n// \n//
\n// )\n// })\n\n// const Example = () => {\n// const componentRef = useRef();\n// const handlePrint = useReactToPrint({\n// content: () => componentRef.current,\n// });\n\n// return (\n//
\n// \n// \n//
\n// );\n// };\n\n\n// export default Example;\n","import React, { Component } from \"react\";\nimport BuildRoundedIcon from '@material-ui/icons/BuildRounded';\nimport Fab from '@material-ui/core/Fab';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport { green } from '@material-ui/core/colors';\nimport { amber } from '@material-ui/core/colors';\nimport GridContainer from \"../components/Grid/GridContainer\";\nimport GridItem from \"../components/Grid/GridItem\";\nimport List from '@material-ui/core/List';\nimport ListItem from '@material-ui/core/ListItem';\n\nimport { makeStyles } from '@material-ui/core/styles';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n textAlign: \"center\",\n },\n wrapper: {\n margin: theme.spacing(1),\n position: 'relative',\n },\n buttonSuccess: {\n backgroundColor: green[500],\n '&:hover': {\n backgroundColor: green[700],\n },\n },\n fabProgress: {\n color: amber[500],\n position: 'absolute',\n top: -6,\n left: -6,\n zIndex: 1,\n '&:hover': {\n color: green[500],\n },\n },\n buttonProgress: {\n color: green[500],\n position: 'absolute',\n top: '50%',\n left: '50%',\n marginTop: -12,\n marginLeft: -12,\n },\n}));\nconst NotExist = () => {\n const classes = useStyles();\n return (\n \n \n
\n \n \n \n \n\n
\n\n
\n
該問卷尚未設置完成,請致電 04-2255-2555 #168 企業健檢人員
\n
\n )\n};\n\n\nexport default NotExist","export default __webpack_public_path__ + \"static/media/switchlight.91c368d5.wav\";","import React from 'react';\nimport { FormControl, FormLabel, FormHelperText, Paper, useForkRef, Typography, TextField, IconButton, InputAdornment, Button } from '@material-ui/core';\nimport Signature from '../Signature';\nimport _, { omit, pick, round, slice } from 'lodash';\nimport PF from \"../_Services/publicFunction\";\nimport Qs from \"qs\";\nimport { DarkModeSwitch } from 'react-toggle-dark-mode';\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { actions } from \"../reducers/app\";\nimport useSound from 'use-sound';\nimport switchlight from '../sounds/switchlight.wav';\nimport { makeStyles, withStyles } from '@material-ui/core/styles';\nimport CancelIcon from '@material-ui/icons/Cancel';\nimport { injectIntl, intlShape, useIntl, FormattedMessage } from 'react-intl';\nimport { useSnackbar } from \"notistack\";\nimport { indigo, teal, deepPurple } from '@material-ui/core/colors'\n\nconst domToImage = require('dom-to-image');\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n width: '100%',\n },\n\n half_background: {\n background: \"linear-gradient(to top, yellow 50%, transparent 50%)\"\n },\n}));\n\nconst NoPaper = props => {\n const dispatch = useDispatch();\n const classes = useStyles();\n const initialRender = React.useRef(true);\n const intl = useIntl();\n const { setActiveStep } = props;\n const { dark } = useSelector(state => ({\n dark: state.app.dark,\n }));\n const { UserInfo } = useSelector(state => ({\n UserInfo: state.app.UserInfo,\n }));\n const [imageURL, setImage] = React.useState(null); //提交=>簽名檔img\n const [timestamp, setTime] = React.useState(null);\n const [open, setOpen] = React.useState(false);\n const [user, setUser] = React.useState({\n email: UserInfo.Email,\n personalId: UserInfo.PersonalId,\n UserName: UserInfo.UserName,\n })\n const [settingObj, setObj] = React.useState({\n UserName: { label: \"姓名\", name: \"UserName\", type: \"text\", required: true, helperText: \"required\", xs: 12, sm: 12, md: 12, lg: 12, minLength: 2, maxLength: 30, pattern: \"^[^0-9]+$\" },\n email: { label: \"出生日期\", name: \"email\", type: \"email\", required: true, helperText: \"required\", xs: 12, sm: 12, md: 12, lg: 12 },\n personalId: { label: \"身分證字號\", name: \"personalId\", type: \"text\", required: true, helperText: \"required\", xs: 12, sm: 12, md: 12, lg: 12, minLength: 10, maxLength: 10 }\n })\n const [playActive] = useSound(\n switchlight,\n { volume: 0.5 }\n );\n const handleLogOut = () => {\n const { history } = props\n // setTimeout(() => {\n // sessionStorage.removeItem('token');\n // history.push(\"LOGIN\")\n // }, 5400);\n\n\n };\n const handleSubmit = e => {\n e.preventDefault();\n if (validator()) {\n //清除\n // handleNext(\"\",66);\n PF.instance({\n method: \"post\",\n url: PF.url + \"/Nopaper/getdata\",\n data: Qs.stringify({ parameter: user }),\n })\n .then(function (response) {\n const { TotalRecord, rows, token, UserInfo } = response.data;\n if (TotalRecord > 0) {\n if (rows[0].NoPaperId === null) {\n // console.log(\"繼續簽名\")\n // setOpen(true);\n // setUser(prevstate => ({\n // ...prevstate,\n // BarcodeStr: rows[0]\n // }));\n // console.log(rows[0]);\n let newitem = _.merge(user, rows[0]);\n updateUser(newitem)\n setImage(\"OK\");\n setActiveStep((prevActiveStep) => prevActiveStep + 1);\n\n } else {\n // alert(\"之前已確認使用無紙化服務,感謝與您一同保護地球!\");\n alert(intl.formatMessage({ id: \"app.NopaperComfirm\" }))\n }\n } else {\n // alert(\"查無客戶資料,請確認\")\n alert(intl.formatMessage({ id: \"app.NopaperNoexit\" }))\n }\n\n })\n }\n }\n const { enqueueSnackbar } = useSnackbar();\n\n const updateUser = (prop) => {\n // const {user,...rest}=prop\n //u.BarcodeStr = prop;\n PF.instance({\n method: \"post\",\n url: PF.url + \"/Nopaper/Update\",\n data: Qs.stringify({ parameter: prop }),\n })\n .then(function (response) {\n const { TotalRecord, rows, token, UserInfo } = response.data;\n console.log(response.data);\n if (TotalRecord <= 0) {\n enqueueSnackbar(intl.formatMessage({ id: \"update fail\" }), { variant: \"error\", style: { whiteSpace: 'pre-line' } });\n } else {\n enqueueSnackbar(intl.formatMessage({ id: \"update success\" }), { variant: \"success\", style: { whiteSpace: 'pre-line' } });\n }\n // alert(\"感謝與您一同保護地球!\")\n })\n\n }\n React.useEffect(() => {\n if (initialRender.current) {\n initialRender.current = false;\n } else {\n\n var element = document.getElementById('signature');\n // var options = {\n // filename: sessionStorage.getItem('BarCodeStr') + '.pdf',\n // };\n // var pdf = new jsPDF();\n\n domToImage.toBlob(element).then((blob) => {\n // var image = canvas.toDataURL(\"image/png\");\n // pdf.addImage(image, 'JPEG', 0, 0);\n // document.body.appendChild(image)\n // var pdf2 = pdf.output('blob');\n let data = new FormData();\n data.append('files', blob, user.personalId + \"-\" + new Date().toISOString().split('T')[0] + '.png')\n PF.instance({\n method: \"post\",\n url: PF.url + \"/Questionaire/Upload\",\n data: data,\n headers: { token: sessionStorage.token }\n })\n .then(function (response) {\n // alert(\"完成\")\n //console.log(response.data)\n })\n\n })\n handleLogOut();\n }\n }, [imageURL]); //避免循環\n\n const validator = () => {\n const form = formRef.current; //參數1\n\n if (form.checkValidity()) {\n console.log(\"全部通過\");\n for (let i = 0; i < form.elements.length; i++) {\n const element = form.elements[i];\n if (Object.keys(settingObj).includes(element.name)) {\n setObj(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\"])\n }))\n }\n }\n return true;\n } else {\n for (let i = 0; i < form.elements.length; i++) {\n const element = form.elements[i];\n if (element.tagName !== 'button' && element.willValidate && !element.validity.valid) { //提交按鈕不用驗證\n if (Object.keys(settingObj).includes(element.name)) {\n setObj(prevState => ({\n ...prevState,\n [element.name]: { ...prevState[element.name], error: true, helperText: element.validationMessage }\n }))\n }\n\n } else {//驗證通過,自訂訊息\n //有在settingObj的\n if (Object.keys(settingObj).includes(element.name)) {\n setObj(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\"])\n }))\n }\n\n }\n }\n return false;\n }\n }\n\n const handleTxtChange = e => {\n if (_.isNil(imageURL)) {\n const { name, value } = e.target;\n setUser(prevstate => ({\n ...prevstate,\n [name]: value.trim()\n }));\n }\n\n }\n const formRef = React.createRef();\n const handleClear = () => {\n if (_.isNil(imageURL)) {\n\n setUser(prevstate => ({\n ...prevstate,\n email: \"\"\n }));\n }\n\n }\n\n return \n dispatch(actions.THEME_SET({ theme: !dark }))}\n onMouseDown={() => playActive()}\n size={20} />\n \n\n
\n \n \n \n
\n \n\n \n \n \n \n \n \n \n \n \n \n ,\n }}\n />\n \n
\n
\n {_.isNil(imageURL) ? (\n <>\n \n \n\n \n ) : \n }\n {/* \n {imageURL ?\n (\n
\n \n
\n
\n \n
\n
\n )\n : null\n } */}\n
\n}\n\n\nexport default NoPaper","import React, { Component } from \"react\";\nimport BuildRoundedIcon from '@material-ui/icons/BuildRounded';\n\n// import App from \"../App\";\n// import Login from \"../Login\";\nimport Questionaire66th from \"../Questionaire/66th\";\nimport Questionaire67th from \"../Questionaire/67th\";\nimport Questionaire68th from \"../Questionaire/68th\";\nimport Questionaire69th from \"../Questionaire/69th\";\nimport Questionaire70th from \"../Questionaire/70th\";\nimport Questionaire80th from \"../Questionaire/81th\";\nimport UnderConstruction from \"../Questionaire/UnderConstruction\";\nimport Nopaper from \"../Questionaire/Nopaper\";\n\n\nclass QuestionType extends Component {\n components = {\n Nopaper: Nopaper,\n 66: Questionaire66th,\n 67: Questionaire67th,\n 68: Questionaire68th,\n 69: Questionaire69th,\n 70: Questionaire70th,\n 80: Questionaire80th,\n // 93:Login,\n };\n render() {\n //預設UserProfile\n const TagName = this.components[this.props.tag] || UnderConstruction;\n return ;\n }\n}\n//若出現名字不一樣的Component時(EX:大小寫不一致)\nconst notExist = () => {\n\n\n return (\n <>\n \n
該問卷尚未設置完成,請致電 04-2255-2555 #168 企業健檢人員
\n \n )\n};\nexport default QuestionType;\n","//語系檔\nimport React from \"react\";\nimport messagesMap from \"../i18n/index\";\nimport { v4 } from \"uuid\";\nimport ComponentType from \"../_Services/index\";\n// import PF from \"/_Services/publicFunction\";\nimport { omit, pick } from 'lodash'\nexport const APP_types = {\n token: \"APP/token\",\n language: \"APP/language\",\n userInfo: \"APP/userInfo\"\n};\n\nconst Types = {\n LANG_SET: \"LANG_SET\",\n THEME_SET: \"THEME_SET\",\n USER_SET: \"USER_SET\",\n QUESTS_SET: \"QUESTS_SET\",\n TAB_ADD: \"TAB_ADD\",\n TAB_REMOVE: \"TAB_REMOVE\",\n TAB_REMOVEAll: \"TAB_REMOVEAll\",\n TAB_REMOVEOthers: \"TAB_REMOVEOthers\",\n TAB_EDIT: \"TAB_EDIT\",\n TABLIST_SET: \"TABLIST_SET\",\n TOKEN_SET: \"TOKEN_SET\",\n Confirme: \"Confirme\"\n};\n\n//action\nexport const actions = {\n token: token => ({ type: Types.TOKEN_SET, token }),\n LANG_SET: locale => {\n return {\n type: Types.LANG_SET,\n locale: locale\n }\n },\n THEME_SET: theme => {\n return {\n type: Types.THEME_SET,\n theme: theme.theme\n }\n },\n UserInfo: user => ({\n type: Types.USER_SET,\n UserName: user.UserName,\n CustName: user.CustName,\n PersonalId: user.PersonalId,\n BirthDate: user.BirthDate,\n BarCodeStr: user.BarCodeStr,\n Email: user.Email,\n\n }),\n QUESTS_SET: rows => ({\n type: Types.QUESTS_SET, rows\n }),\n TAB_EDIT: tab => ({\n type: Types.TAB_EDIT,\n key: tab.key,\n isEditing: tab.editing,\n }),\n TAB_ADD: tab => ({\n type: Types.TAB_ADD,\n key: v4(),\n isEditing: false, //\n done: false,\n isSubmit: false,\n tabName: tab.funcName || \"unknow\",\n componentName: tab.componentName,\n // tabContent: (\n // \n // )\n }),\n TAB_REMOVE: key => ({\n type: Types.TAB_REMOVE,\n key\n }),\n TAB_REMOVEOthers: key => ({\n type: Types.TAB_REMOVEOthers,\n key\n }),\n TAB_REMOVEAll: key => ({\n type: Types.TAB_REMOVEAll,\n }),\n Confirme: Confirme => ({\n type: Types.Confirme,\n Confirme\n })\n};\n//暫時沒有initialState\n//reducers\n// const appReducers = (state = {}, action) => {\n// switch (action.type) {\n// case APP_types.token:\n// return { state };\n// case APP_types.language:\n// return { state };\n// default:\n// return state;\n// }\n// };\nconst initialState = {\n token: \"\",\n UserInfo: {},\n tabList: {},\n dark: false,\n questionaireList: [],\n isAllDone: false,\n Confirme: false,\n i18n: { locale: \"zh-tw\", messages: messagesMap[\"zh-tw\"] } //預設語系\n};\nconst appReducers = (state = initialState, action) => {\n switch (action.type) {\n //app.i18n\n case Types.LANG_SET:\n return {\n ...state,\n i18n: {\n locale: action.locale,\n messages: messagesMap[action.locale],\n }\n };\n case Types.THEME_SET:\n return {\n ...state,\n dark: action.theme\n };\n //app.UserInfo\n case Types.USER_SET:\n return {\n ...state,\n UserInfo: {\n UserName: action.UserName,\n CustName: action.CustName,\n PersonalId: action.PersonalId,\n BirthDate: action.BirthDate,\n BarCodeStr: action.BarCodeStr,\n Email: action.Email,\n }\n };\n //app.token\n case Types.TOKEN_SET:\n return {\n ...state,\n token: action.token\n };\n case Types.QUESTS_SET:\n return {\n ...state,\n questionaireList: action.rows\n };\n case Types.Confirme:\n return {\n ...state,\n Confirme: action.Confirme\n };\n\n //app.tabList\n case Types.TAB_ADD:\n return {\n ...state,\n tabList: { ...state.tabList, [action.componentName]: tab({}, action) }\n };\n case Types.TAB_EDIT:\n return {\n ...state,\n tabList: {\n ...state.tabList,\n [action.key]: { ...state.tabList[action.key], isEditing: action.isEditing }\n }\n };\n case Types.TAB_REMOVE:\n return {\n ...state,\n tabList: omit(state.tabList, action.key)\n } //default\n case Types.TAB_REMOVEOthers:\n // let cloneState = PF.deepClone(state);\n // console.log(_.pick(obj, ['x', 'y']));\n // Object.keys(cloneState.tabList).forEach((item)=>{ delete cloneState.tabList[action.key] })\n return {\n ...state,\n tabList: pick(state.tabList, [action.key, \"homepage\"])\n }\n case Types.TAB_REMOVEAll:\n // let cloneState = PF.deepClone(state);\n // console.log(_.pick(obj, ['x', 'y']));\n // Object.keys(cloneState.tabList).forEach((item)=>{ delete cloneState.tabList[action.key] })\n return {\n ...state,\n tabList: { ...state.tabList.homepage }\n }\n default:\n return state;\n }\n};\n\nexport const tab = (state, action) => {\n switch (action.type) {\n case Types.TAB_ADD:\n return {\n key: action.key,\n isEditing: action.isEditing,\n tabName: action.tabName,\n componentName: action.componentName,\n tabContent: action.tabContent\n };\n case Types.TAB_EDIT:\n return state.key !== action.key\n ? state\n : {\n ...state,\n editing: action.editing\n };\n default:\n return state;\n }\n};\n\n// export const tabList = (state, action) => {\n// switch (action.type) {\n// case Types.TAB_ADD:\n// return [...state, action[key]:{tab({}, action)}];\n\n// case Types.TAB_EDIT:\n// return state.map(item => {\n// return tab(item, action);\n// });\n// case Types.TAB_REMOVE:\n// return state.filter(item => item.id !== action.id);\n// default:\n// return state;\n// }\n// };\n\nexport default appReducers;\n","\nimport React from 'react';\nimport './App.css';\nimport Signature from './Signature';\nimport TextField from '@material-ui/core/TextField';\nimport { makeStyles, withStyles } from '@material-ui/core/styles';\nimport Button from '@material-ui/core/Button';\nimport GridContainer from \"./components/Grid/GridContainer\";\nimport GridItem from \"./components/Grid/GridItem\";\nimport FormGroup from '@material-ui/core/FormGroup';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport List from \"@material-ui/core/List\";\nimport ListItem from \"@material-ui/core/ListItem\";\nimport _, { omit, pick, round, slice } from 'lodash';\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\nimport { FormControl, FormLabel, FormHelperText, Paper } from '@material-ui/core';\nimport { MuiPickersUtilsProvider, KeyboardDatePicker, DatePicker, KeyboardDateTimePicker, KeyboardTimePicker } from \"@material-ui/pickers\";\nimport MomentUtils from \"@date-io/moment\";\nimport TodayIcon from \"@material-ui/icons/UpdateOutlined\";\nimport moment from \"moment\";\nimport Typography from '@material-ui/core/Typography';\n// import { PDFDownloadLink, Document, Page,PDFViewer } from '@react-pdf/renderer'\nimport axios from \"axios\";\nimport Qs from \"qs\";\nimport jsPDF from 'jspdf';\nimport html2canvas from \"html2canvas\";\nimport { actions } from \"./reducers/app\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport PF from \"./_Services/publicFunction\";\nimport LinearProgress from '@material-ui/core/LinearProgress';\nimport useSound from 'use-sound';\nimport clickdown from './sounds/clickdown.wav';\nimport clickup from './sounds/clickdown.wav';\n\n// var domToPdf = require('dom-to-pdf');\n// const domToImage = require('dom-to-image');\n\n// var instance = axios.create({\n// // timeout: 1000, //暫不設置timeout\n// async: true,\n// crossDomain: true,\n// headers: {\n// \"Content-Type\": \"application/x-www-form-urlencoded;charset=utf-8\",\n// \"X-Requested-With\": \"XMLHttpRequest\", //for MVC Request.IsAjaxRequest()\n// }\n// });\n\nconst ref = React.createRef();\nconst BorderLinearProgress = withStyles((theme) => ({\n root: {\n height: 8,\n // borderRadius: 5,\n },\n colorPrimary: {\n //backgroundColor: theme.palette.grey[theme.palette.type === 'light' ? 200 : 700],\n },\n bar: {\n // borderRadius: 5,\n backgroundColor: '#1a90ff',\n },\n}))(LinearProgress);\nfunction App(props) {\n const { tabList } = useSelector(state => ({\n tabList: state.app.tabList,\n }));\n const [numerator, setNumerator] = React.useState(0);\n const [denominator, setDenominator] = React.useState(15);\n React.useEffect(() => {\n console.log(\"分子\", numerator);\n }, [numerator])\n React.useEffect(() => {\n console.log(\"分母\", denominator);\n }, [denominator])\n\n\n const dispatch = useDispatch();\n\n const { handleNext, setActiveStep } = props;\n\n const initialRender = React.useRef(true);\n const [imageURL, setImage] = React.useState(null); //提交=>簽名檔img\n // const [open, setOpen] = React.useState(false);\n const [playActive] = useSound(\n clickdown,\n { volume: 0.25 }\n );\n const [playOn] = useSound(\n clickup,\n { volume: 0.25 }\n );\n const [uploadFormat, setUpload] = React.useState({\n 0: { BarCodeStr: \"\", QuestionNo: 66, Category: \"作業經歷\", titleNo: 1, Title: \"\", SelectTitle: \"曾經從事_,起始日期:_年_月,截止日期:_年_月,共_年_月\", Answer: \"\", Other: \"\" },\n 1: { BarCodeStr: \"\", QuestionNo: 66, Category: \"作業經歷\", titleNo: 2, Title: \"\", SelectTitle: \"目前從事_,起始日期:_年_月,截止日期:_年_月,共_年_月\", Answer: \"\", Other: \"\" },\n 2: { BarCodeStr: \"\", QuestionNo: 66, Category: \"作業經歷\", titleNo: 3, Title: \"\", SelectTitle: \"過去1個月,平均每週工時為:_小時;過去6個月,平均每週工時為:_小時\", Answer: \"\", Other: \"\" },\n 3: { BarCodeStr: \"\", QuestionNo: 66, Category: \"作業檢查時期\", titleNo: 1, Title: \"檢查時期(原因)\", SelectTitle: \"□新進員工(受僱時) □定期檢查\", Answer: \"\", Other: \"\" },\n 4: { BarCodeStr: \"\", QuestionNo: 66, Category: \"既往病史\", titleNo: 1, Title: \"您是否曾患有下列慢性疾病:(請在適當項目前打勾)\", SelectTitle: \"□高血壓 □糖尿病 □心臟病 □癌症_ □白內障 □中風 □癲癇 □氣喘 □慢性氣管炎、肺氣腫 □肺結核 □腎臟病 □肝病 □貧血 □中耳炎 □聽力障礙 □甲狀腺疾病 □消化性潰瘍、胃炎 □逆流性食道炎 □骨折_ □手術開刀_ □其他慢性病_ □以上皆無\", Answer: \"\", Other: \"\" },\n 5: { BarCodeStr: \"\", QuestionNo: 66, Category: \"生活習慣\", titleNo: 1, Title: \"請問您過去一個月內是否有吸菸?\", SelectTitle: \"□從未吸菸 □偶爾吸(不是天天) □(幾乎)每天吸,平均每天吸_支,已吸菸_年 □已經戒菸,戒了_年_個月。\", Answer: \"\", Other: \"\" },\n 6: { BarCodeStr: \"\", QuestionNo: 66, Category: \"生活習慣\", titleNo: 2, Title: \"請問您最近六個月內是否有嚼食檳榔?\", SelectTitle: \"□從未嚼食檳榔 □偶爾嚼(不是天天) □(幾乎)每天嚼,平均每天嚼_顆,已嚼_年 □已經戒食,戒了_年_個月。\", Answer: \"\", Other: \"\" },\n 7: { BarCodeStr: \"\", QuestionNo: 66, Category: \"生活習慣\", titleNo: 3, Title: \"請問您過去一個月內是否有喝酒?\", SelectTitle: \"□從未喝酒 □偶爾喝(不是天天) □(幾乎)每天喝,平均每週喝_次,最常喝_酒,每次_瓶 □已經戒酒,戒了_年_個月。\", Answer: \"\", Other: \"\" },\n 8: { BarCodeStr: \"\", QuestionNo: 66, Category: \"生活習慣\", titleNo: 4, Title: \"請問您於工作日期間\", SelectTitle: \"平均每天睡眠時間為:_小時。\", Answer: \"\", Other: \"\" },\n 9: { BarCodeStr: \"\", QuestionNo: 66, Category: \"自覺症狀\", titleNo: 1, Title: \"您最近三個月是否常有下列症狀:(請在適當項目前打勾)\", SelectTitle: \"□咳嗽□咳痰□呼吸困難□胸痛□心悸□頭暈□頭痛 □耳鳴 □倦怠 □噁心 □腹痛 □便秘 □腹瀉 □血便 □上背痛 □下背痛 □手腳麻痛 □關節疼痛 □排尿不適 □多尿、頻尿 □手腳肌肉無力 □體重減輕3公斤以上 □其他症狀_ □以上皆無\", Answer: \"\", Other: \"\" },\n 10: { BarCodeStr: \"\", QuestionNo: 66, Category: \"填表說明\", titleNo: 1, Title: \"請受檢員工於勞工健檢前,填妥基本資料、作業經歷、檢查時期、既往病史、生活習慣及自覺症狀六大項,再交由醫護人員作確認,以有效篩檢出疾病;若事業單位已提供受檢員工基本資料及作業經歷電子檔給指定醫療機構,可不必請受檢員工重複填寫。\", SelectTitle: \"目前從事_,起始日期:_年_月,截止日期:_年_月,共_年_月\", Answer: \"\", Other: \"\" },\n 11: { BarCodeStr: \"\", QuestionNo: 66, Category: \"填表說明\", titleNo: 2, Title: \"自覺症狀乙項,請受檢者依自身實際症狀勾選。\", SelectTitle: \"目前從事_,起始日期:_年_月,截止日期:_年_月,共_年_月\", Answer: \"\", Other: \"\" },\n });\n // const dispatch = useDispatch();\n const { UserInfo } = useSelector(state => ({\n UserInfo: state.app.UserInfo,\n }));\n const Update66th = () => {\n //section 2 到3\n let y = moment(workExp.usedStart.value + '01日', 'YYYY年MM月DD日')\n let z = moment(workExp.usedEnd.value + '01日', 'YYYY年MM月DD日')\n let M = moment(workExp.rightNowStart.value + '01日', 'YYYY年MM月DD日')\n let N = moment(workExp.rightNowEnd.value + '01日', 'YYYY年MM月DD日')\n\n\n setUpload(prevState => ({\n ...prevState,\n 0: { ...prevState[0], BarCodeStr: UserInfo.BarCodeStr, Other: workExp.usedJob.value + \"||\" + (y.year() - 1911) + \"||\" + (y.month() + 1) + \"||\" + (z.year() - 1911) + \"||\" + (z.month() + 1) + \"||\" + workExp.usedPeriod_Y.value + \"||\" + workExp.usedPeriod_M.value },\n 1: { ...prevState[1], BarCodeStr: UserInfo.BarCodeStr, Other: workExp.rightNowJob.value + \"||\" + (M.year() - 1911) + \"||\" + (M.month() + 1) + \"||\" + (N.year() - 1911) + \"||\" + (N.month() + 1) + \"||\" + workExp.rightNowPeriod_Y.value + \"||\" + workExp.rightNowPeriod_M.value },\n 2: { ...prevState[2], BarCodeStr: UserInfo.BarCodeStr, Other: workExp.workhours_1.value + \"||\" + workExp.workhours_2.value },\n 3: { ...prevState[3], BarCodeStr: UserInfo.BarCodeStr, Answer: checked3rd.checkA ? \"新進員工(受僱時) \" : \"定期檢查\" },\n 4: { ...prevState[4], BarCodeStr: UserInfo.BarCodeStr, Answer: fourth.substring(2, 999), Other: fourthTxt.substring(2, 999) },\n 5: { ...prevState[5], BarCodeStr: UserInfo.BarCodeStr, Answer: fiveth_1.substring(2, 999), Other: fiveth_1Txt.substring(2, 999) },\n 6: { ...prevState[6], BarCodeStr: UserInfo.BarCodeStr, Answer: fiveth_2.substring(2, 999), Other: fiveth_2Txt.substring(2, 999) },\n 7: { ...prevState[7], BarCodeStr: UserInfo.BarCodeStr, Answer: fiveth_3.substring(2, 999), Other: fiveth_3Txt.substring(2, 999) },\n 8: { ...prevState[8], BarCodeStr: UserInfo.BarCodeStr, Other: array5thCheck.sleep.value },\n 9: { ...prevState[9], BarCodeStr: UserInfo.BarCodeStr, Answer: Sixth.substring(2, 999), Other: array4thTxtObj.W6.text },\n 10: { ...prevState[10], BarCodeStr: UserInfo.BarCodeStr },\n 11: { ...prevState[11], BarCodeStr: UserInfo.BarCodeStr, },\n }));\n //console.log(uploadFormat);\n //section 4\n let fourth = Object.values(array4th).reduce((a, b) => a + (b.checked ? \"||\" + b.systemLabel : \"\"), \"\");\n let fourthTxt = Object.values(array4thTxtObj).reduce((a, b) => a + (\"||\" + b.text), \"\");\n //section 5\n let fiveth_1 = Object.values(array5_1).reduce((a, b) => a + (b.checked ? \"||\" + b.systemLabel : \"\"), \"\");\n let fiveth_1Txt = Object.values(array5thCheck).slice(1, 5).reduce((a, b) => a + \"||\" + b.value, \"\")\n let fiveth_2 = Object.values(array5_2).reduce((a, b) => a + (b.checked ? \"||\" + b.systemLabel : \"\"), \"\");\n let fiveth_2Txt = Object.values(array5thCheck).slice(6, 10).reduce((a, b) => a + \"||\" + b.value, \"\")\n let fiveth_3 = Object.values(array5_3).reduce((a, b) => a + (b.checked ? \"||\" + b.systemLabel : \"\"), \"\");\n let fiveth_3Txt = Object.values(array5thCheck).slice(11, 16).reduce((a, b) => a + \"||\" + b.value, \"\")\n //setction 6\n let Sixth = Object.values(array6th).reduce((a, b) => a + (b.checked ? \"||\" + b.systemLabel : \"\"), \"\");\n //列印\n // })\n // var doc = new jsPDF();\n // //return pdf; //Duke\n // //var doc = new jsPDF(pdf2);\n // //console.log(pdf);\n // //pdf.name = 'test.pdf'\n\n //var pdf = pdf2.output('blob');\n //pdf.name = 'test.pdf'\n //console.log(pdf);\n // var doc = pdf.output('blob')\n // let data = new FormData();\n // data.append('files', imageURL.getCanvas());\n // //console.log(data);\n // //var doc = btoa(pdf);\n // instance({\n // method: \"post\",\n // url: 'https://localhost:44311' + \"/Questionaire/Upload\",\n // data: data,\n // })\n // .then(function (response) {\n // console.log(response.data)\n // })\n }\n\n React.useEffect(() => {\n if (!initialRender.current) {\n\n PF.instance({\n method: \"post\",\n url: PF.url + \"/Questionaire/Insert\",\n data: Qs.stringify({ list: Object.values(uploadFormat) }),\n headers: { token: sessionStorage.token }\n })\n .then(function (response) {\n // console.log(response.data)\n const { TotalRecord, ErrorMessage } = response.data\n if (TotalRecord <= 0) {\n alert(\"問卷提交出錯\\r\\n\" + ErrorMessage + \"請致電 04-2255-2555 #168 企業健檢\")\n\n } else {\n setActiveStep((prevActiveStep) => prevActiveStep + 1);\n setImage(\"Image\");\n }\n })\n\n }\n }, [uploadFormat]); //避免循環\n\n // React.useEffect(() => {\n // if (initialRender.current) {\n // initialRender.current = false;\n // } else {\n\n // var element = document.getElementById('signature');\n // var options = {\n // filename: uploadFormat[0].BarCodeStr + '.pdf',\n // };\n // // var pdf = new jsPDF();\n\n // domToImage.toBlob(element).then((blob) => {\n // // var image = canvas.toDataURL(\"image/png\");\n // // pdf.addImage(image, 'JPEG', 0, 0);\n // // document.body.appendChild(image)\n // // var pdf2 = pdf.output('blob');\n // let data = new FormData();\n // data.append('files', blob, uploadFormat[0].BarCodeStr + \"-\" + new Date().toISOString().split('T')[0] + '.png')\n // PF.instance({\n // method: \"post\",\n // url: PF.url + \"/Questionaire/Upload\",\n // data: data,\n // headers: { token: sessionStorage.token }\n // })\n // .then(function (response) {\n // // alert(\"完成\")\n // //console.log(response.data)\n // })\n\n // })\n // }\n // }, [imageURL]); //避免循環\n\n\n const handleChange = e => {\n if (!_.isNil(imageURL)) {//已提交不得修改\n\n }\n }\n const [recordObj, setObj] = React.useState({\n name: \"\",\n id: \"\"\n });\n\n\n const [array4th, setArray4th] = React.useState({\n A4: { name: \"A4\", label: \"高血壓\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"高血壓 \" }\n , B4: { label: \"糖尿病\", name: \"B4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"糖尿病 \" }\n , C4: { label: \"心臟病\", name: \"C4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"心臟病 \" }\n , E4: { label: \"白內障\", name: \"E4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"白內障 \" }\n , F4: { label: \"中風\", name: \"F4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"中風 \" }\n , G4: { label: \"癲癇\", name: \"G4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"癲癇 \" }\n , H4: { label: \"氣喘\", name: \"H4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"氣喘 \" }\n , I4: { label: \"慢性氣管炎、肺氣腫\", name: \"I4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"慢性氣管炎、肺氣腫 \" }\n // , J4: { label: \"肺氣腫\", name: \"J4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"肺氣腫 \" }\n , K4: { label: \"肺結核\", name: \"K4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"肺結核 \" }\n , L4: { label: \"腎臟病\", name: \"L4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"腎臟病 \" }\n , M4: { label: \"肝病\", name: \"M4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"肝病 \" }\n , N4: { label: \"貧血\", name: \"N4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"貧血 \" }\n , O4: { label: \"中耳炎\", name: \"O4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"中耳炎 \" }\n , P4: { label: \"聽力障礙\", name: \"P4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"聽力障礙 \" }\n , Q4: { label: \"甲狀腺疾病\", name: \"Q4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"甲狀腺疾病 \" }\n , R4: { label: \"消化性潰瘍、胃炎\", name: \"R4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"消化性潰瘍、胃炎 \" }\n , S4: { label: \"逆流性食道炎\", name: \"S4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"逆流性食道炎\" }\n , D4: { label: \"癌症\", name: \"D4\", type: \"chkBoxTxT\", checked: false, gridWid: 6, systemLabel: \"癌症\" }\n , T4: { label: \"骨折\", name: \"T4\", type: \"chkBoxTxT\", checked: false, gridWid: 6, systemLabel: \"骨折\" }\n , V4: { label: \"手術開刀\", name: \"V4\", type: \"chkBoxTxT\", checked: false, gridWid: 6, systemLabel: \"手術開刀\" }\n , U4: { label: \"其他慢性病\", name: \"U4\", type: \"chkBoxTxT\", checked: false, checked: false, gridWid: 6, systemLabel: \"其他慢性病\" }\n , allNone: { label: \"以上皆無\", name: \"allNone\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"以上皆無\" }\n });\n\n const [array4thTxtObj, set4thTxtObj] = React.useState({\n D4: { label: \"癌症\", name: \"D4\", type: \"chkBoxTxT\", checked: false, gridWid: 6, text: \"\" },\n // N4: { label: \"貧血\", name: \"N4\", type: \"chkBoxTxT\", checked: false, gridWid: 6, text: \"\" },\n T4: { label: \"骨折\", name: \"T4\", type: \"chkBoxTxT\", checked: false, gridWid: 6, text: \"\" },\n V4: { label: \"手術開刀\", name: \"V4\", type: \"chkBoxTxT\", checked: false, gridWid: 6, text: \"\" },\n U4: { label: \"其他慢性病\", name: \"U4\", type: \"chkBoxTxT\", checked: false, checked: false, gridWid: 6, text: \"\" },\n W6: { label: \"其他症狀\", name: \"W6\", type: \"chkBoxTxT\", checked: false, checked: false, gridWid: 6, text: \"\" },\n })\n\n const handleChange4th = e => {\n if (_.isNil(imageURL)) { //已提交不得修改\n const { name, checked } = e.target;\n // console.log(e.target);\n if (name === \"allNone\") {\n if (array4th.allNone.checked === false) {\n //其他: 不能勾選,除非allnone不勾\n //移除所以勾勾 \n _.forEach(array4th, function (value, key) {\n setArray4th(prevState => ({\n ...prevState,\n [key]: omit(value, [\"checked\", \"error\"]),\n }));\n });\n //移除所有文字\n _.forEach(array4thTxtObj, function (value, key) {\n if (key !== \"W6\") {\n set4thTxtObj(prevState => ({\n ...prevState,\n [key]: { ...value, text: \"\" }\n }));\n }\n\n });\n\n //自己勾上\n setArray4th(prevState => ({\n ...prevState,\n allNone: { ...prevState[name], checked: checked }\n }));\n } else {\n //自己取消,讓其他可以勾\n setArray4th(prevState => ({\n ...prevState,\n allNone: { ...prevState[name], checked: checked }\n }));\n }\n\n\n } else {\n //其他:不能勾選,除非allnone不勾\n if (array4th.allNone.checked === false) {\n setArray4th(prevState => ({\n ...prevState,\n [name]: {\n ...array4th[name], checked: checked,\n error: checked === false ? false : (prevState[name].error || false)\n }\n }))\n if (Object.keys(array4thTxtObj).includes(name)) {\n if (name !== \"W6\") {\n set4thTxtObj(prevState => ({\n ...prevState,\n [name]: {\n ...prevState[name],\n checked: checked, //也要更新 for資料庫導入格式\n text: checked === false ? \"\" : (prevState[name].text || \"\")\n }\n }))\n }\n\n }\n }\n }\n }\n }\n const handleChangeTxt4th = e => { //第四區塊文字,抽取出來,改動文字不去觸發calculate_4th\n if (_.isNil(imageURL)) { //已提交不得修改\n const { name, value } = e.target;\n set4thTxtObj({\n ...array4thTxtObj,\n [name]: { ...array4thTxtObj[name], text: value }\n })\n }\n }\n const [array4thValidator, set4thValidator] = React.useState({\n pastHistory: { name: \"pastHistory\", checked: false },\n conscious: { name: \"conscious\", checked: false }\n })\n\n\n const calculate_4th = () => {\n const total = Object.values(array4th).reduce((a, b) => a + (b.checked ? 1 : 0), 0)\n\n set4thValidator(prevState => ({\n ...prevState,\n pastHistory: { ...prevState.pastHistory, checked: total >= 1 ? true : false }\n }));\n if (total >= 1 && !array4thValidator.pastHistory.checked) {\n setNumerator(prev => prev + 1)\n } else if (total === 0 && array4thValidator.pastHistory.checked) {\n setNumerator(prev => prev - 1)\n }\n }\n React.useEffect(() => {\n if (!initialRender.current) {\n calculate_4th();\n }\n }, [array4th]); //避免循環\n\n const [array6th, setArray6th] = React.useState({\n A6: { label: \"咳嗽\", name: \"A6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"咳嗽\" }\n , B6: { label: \"咳痰\", name: \"B6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"咳痰\" }\n , C6: { label: \"呼吸困難\", name: \"C6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"呼吸困難\" }\n , E6: { label: \"胸痛\", name: \"E6\", type: \"chkBox\", gridWid: 3, systemLabel: \"胸痛\" }\n , F6: { label: \"心悸\", name: \"F6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"心悸\" }\n , G6: { label: \"頭暈\", name: \"G6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"頭暈\" }\n , H6: { label: \"頭痛\", name: \"H6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"頭痛 \" }\n , I6: { label: \"耳鳴\", name: \"I6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"耳鳴 \" }\n , J6: { label: \"倦怠\", name: \"J6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"倦怠 \" }\n , K6: { label: \"噁心\", name: \"K6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"噁心 \" }\n , L6: { label: \"腹痛\", name: \"L6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"腹痛 \" }\n , M6: { label: \"便秘\", name: \"M6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"便秘 \" }\n , O6: { label: \"腹瀉\", name: \"O6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"腹瀉 \" }\n , P6: { label: \"血便\", name: \"P6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"血便 \" }\n , Q6: { label: \"上背痛\", name: \"Q6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"上背痛 \" }\n , R6: { label: \"下背痛\", name: \"R6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"下背痛 \" }\n , S6: { label: \"手腳麻痛\", name: \"S6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"手腳麻痛 \" }\n , D6: { label: \"關節疼痛\", name: \"D6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"關節疼痛 \" }\n , N6: { label: \"排尿不適\", name: \"N6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"排尿不適 \" }\n , T6: { label: \"多尿、頻尿\", name: \"T6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"多尿、頻尿 \" }\n , V6: { label: \"手腳肌肉無力\", name: \"V6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"手腳肌肉無力 \" }\n , U6: { label: \"體重減輕 3公斤以上\", name: \"U6\", type: \"chkBox\", checked: false, checked: false, gridWid: 6, systemLabel: \"體重減輕3公斤以上\" }\n , W6: { label: \"其他症狀\", name: \"W6\", type: \"chkBoxTxT\", checked: false, checked: false, gridWid: 6, systemLabel: \"其他症狀\" }\n , allNone6: { label: \"以上皆無\", name: \"allNone6\", type: \"chkBox\", checked: false, gridWid: 12, systemLabel: \"以上皆無\" }\n });\n\n\n React.useEffect(() => {\n if (!initialRender.current) {\n const total = Object.values(array6th).reduce((a, b) => a + (b.checked ? 1 : 0), 0)\n set4thValidator(prevState => ({\n ...prevState,\n conscious: { ...prevState.conscious, checked: total >= 1 ? true : false }\n }));\n\n if (total >= 1 && !array4thValidator.conscious.checked) {\n setNumerator(prev => prev + 1)\n } else if (total === 0 && array4thValidator.conscious.checked) {\n setNumerator(prev => prev - 1)\n }\n }\n\n }, [array6th]); //避免循環\n\n const handleChange6th = e => {\n if (_.isNil(imageURL)) { //已提交不得修改\n const { name, checked } = e.target;\n // console.log(name, checked);\n if (name === \"allNone6\") {\n if (checked === true) { //之前沒溝\n // console.log(\"allNon6自己溝上\");\n //其他: 不能勾選,除非allnone不勾\n //移除所以勾勾 \n _.forEach(array6th, function (value, key) {\n setArray6th(prevState => ({\n ...prevState,\n [key]: omit(value, [\"checked\", \"error\"]),\n }));\n });\n //移除所有文字\n _.forEach(array4thTxtObj, function (value, key) {\n set4thTxtObj(prevState => ({\n ...prevState,\n W6: { ...value, text: \"\" }\n }));\n });\n\n //自己勾上\n setArray6th(prevState => ({\n ...prevState,\n allNone6: { ...prevState[name], checked: checked }\n }));\n } else {\n // console.log(\"allNon6自己取消\");\n\n //自己取消,讓其他可以勾\n setArray6th(prevState => ({\n ...prevState,\n [name]: { ...prevState[name], checked: false }\n }));\n }\n\n\n } else {\n //其他:不能勾選,除非allnone不勾\n if (array6th.allNone6.checked === false) {\n setArray6th(prevState => ({\n ...prevState,\n [name]: {\n ...prevState[name], checked: checked,\n error: checked === false ? false : (prevState[name].error || false)\n }\n }))\n if (Object.keys(array4thTxtObj).includes(name)) {\n set4thTxtObj(prevState => ({\n ...prevState,\n [name]: {\n ...prevState[name],\n text: checked === false ? \"\" : (prevState[name].text || \"\")\n }\n }))\n }\n }\n }\n }\n }\n\n const [checked3rd, setCheck3rd] = React.useState({\n checkA: null,\n checkB: null,\n error: false\n });\n const handleChangeThree = e => {\n if (_.isNil(imageURL)) { //已提交不得修改\n const { name, checked } = e.target;\n if (name === \"checkA\") {\n setCheck3rd(prevState => ({\n ...prevState,\n checkB: !checked,\n checkA: checked\n }))\n if (checked3rd.checkA === null) {\n setNumerator(prev => prev + 1);\n }\n if (checked) {\n //取消曾經\n setWorkExp(prevState => ({\n ...prevState,\n usedJob: { ...prevState.usedJob, required: false },\n usedStart: { ...prevState.usedStart, required: false },\n usedEnd: { ...prevState.usedEnd, required: false }\n }))\n setDenominator(12);\n //之前填過,若有數值,需-1\n let ary = [\"usedJob\", \"usedStart\", \"usedEnd\"];\n ary.map(item => {\n if (workExp[item].value !== \"\" && workExp[item].value !== null) {\n setNumerator(prev => prev - 1)\n }\n })\n\n } else {\n setWorkExp(prevState => ({\n ...prevState,\n usedJob: { ...prevState.usedJob, required: true },\n usedStart: { ...prevState.usedStart, required: true },\n usedEnd: { ...prevState.usedEnd, required: true }\n }))\n //之前填過,若有數值,需+1\n setDenominator(15);\n let ary = [\"usedJob\", \"usedStart\", \"usedEnd\"];\n ary.map(item => {\n if (workExp[item].value !== \"\" && workExp[item].value !== null && workExp[item].required !== true) {\n setNumerator(prev => prev + 1)\n }\n })\n }\n } else { //checkB定期檢查\n setCheck3rd(prevState => ({\n ...prevState,\n checkB: checked,\n checkA: !checked\n }))\n if (checked3rd.checkB === null) {\n setNumerator(prev => prev + 1);\n }\n if (checked) {\n //取消曾經\n setWorkExp(prevState => ({\n ...prevState,\n usedJob: { ...prevState.usedJob, required: true },\n usedStart: { ...prevState.usedStart, required: true },\n usedEnd: { ...prevState.usedEnd, required: true }\n }))\n setDenominator(15);\n let ary = [\"usedJob\", \"usedStart\", \"usedEnd\"];\n ary.map(item => {\n if (workExp[item].value !== \"\" && workExp[item].value !== null && workExp[item].required !== true) {\n setNumerator(prev => prev + 1)\n }\n })\n } else {\n setWorkExp(prevState => ({\n ...prevState,\n usedJob: { ...prevState.usedJob, required: false },\n usedStart: { ...prevState.usedStart, required: false },\n usedEnd: { ...prevState.usedEnd, required: false }\n }))\n setDenominator(12);\n let ary = [\"usedJob\", \"usedStart\", \"usedEnd\"];\n ary.map(item => {\n if (workExp[item].value !== \"\" && workExp[item].value !== null) {\n setNumerator(prev => prev - 1)\n }\n })\n }\n\n }\n }\n }\n\n\n const [array5_1, setArray5_1] = React.useState({\n smokeA: { name: \"smokeA\", label: \"從未吸菸\", type: \"chkBox\", checked: false, gridWid: 2, systemLabel: \"從未吸菸 \" }\n , smokeB: { name: \"smokeB\", label: \"偶爾吸(不是天天)\", type: \"chkBox\", checked: false, gridWid: 2, systemLabel: \"偶爾吸(不是天天) \" }\n , smokeC: {\n systemLabel: \"(幾乎)每天吸,平均每天吸_支,已吸菸_年\",\n label: \"(幾乎)每天吸\", name: \"smokeC\", type: \"chkBoxTxT\", checked: false, gridWid: 8\n , type_1: \"number\", name_1: \"smokeC_1\", label_1: \"平均每天吸\", text_1: \"\", suffix1: \"支\", helperText_1: \"\", min_1: 1\n , type_2: \"number\", name_2: \"smokeC_2\", label_2: \"已吸菸\", text_2: \"\", suffix2: \"年\", helperText_2: \"\", max_2: 100\n }\n , smokeD: {\n systemLabel: \"已經戒菸,戒了_年_個月。\",\n label: \"已經戒菸,戒了\", name: \"smokeD\", type: \"chkBoxTxT\", checked: false, gridWid: 8\n , name_1: \"smokeD_1\", type_1: \"number\", label_1: \" \", text_1: \"\", suffix1: \"年\", helperText_1: \"\", max_1: 100\n , name_2: \"smokeD_2\", type_2: \"number\", label_2: \" \", text_2: \"\", suffix2: \"個月\", helperText_2: \"\", max_2: 12 //label需有空格\n }\n });\n React.useEffect(() => {\n if (!initialRender.current) {\n const total = Object.values(array5_1).reduce((a, b) => a + (b.checked ? 1 : 0), 0)\n setArray5thCheck(prevState => ({\n ...prevState,\n smoke: { ...prevState.smoke, checked: total >= 1 ? true : false } //只更新這個\n }));\n if (total >= 1 && !array5thCheck.smoke.checked) {\n setNumerator(prev => prev + 1)\n } else if (total === 0) {\n setNumerator(prev => prev - 1)\n }\n }\n }, [array5_1]); //避免循環\n\n const handleChangeChk5_1 = e => {\n if (_.isNil(imageURL)) { //已提交不得修改\n const { name, checked } = e.target;\n //先移除所有checked\n const keys = Object.keys(array5_1);\n keys.map(item => {\n // console.log(item)\n delete array5_1[item].checked\n })\n //set\n setArray5_1({\n ...array5_1,\n [name]: { ...array5_1[name], checked: checked }\n });\n setArray5thCheck(prevState => ({\n ...prevState,\n smokeC_1: { ...prevState.smokeC_1, value: \"\", error: false },\n smokeC_2: { ...prevState.smokeC_2, value: \"\", error: false },\n smokeD_1: { ...prevState.smokeD_1, value: \"\", error: false },\n smokeD_2: { ...prevState.smokeD_2, value: \"\", error: false },\n }));\n\n }\n }\n const [array5thCheck, setArray5thCheck] = React.useState({\n smoke: { name: \"smoke\", checked: false },\n smokeC_1: { name: \"smokeC_1\", value: \"\" },\n smokeC_2: { name: \"smokeC_2\", value: \"\" },\n smokeD_1: { name: \"smokeD_1\", value: \"\" },\n smokeD_2: { name: \"smokeD_2\", value: \"\" },\n betel: { name: \"betel\", checked: false },\n betelC_1: { name: \"betelC_1\", value: \"\" },\n betelC_2: { name: \"betelC_2\", value: \"\" },\n betelD_1: { name: \"betelD_1\", value: \"\" },\n betelD_2: { name: \"betelD_2\", value: \"\" },\n drunk: { name: \"drunk\", checked: false },\n drunkC_1: { name: \"drunkC_1\", value: \"\" },\n drunkC_2: { name: \"drunkC_2\", value: \"\" },\n drunkC_3: { name: \"drunkC_3\", value: \"\" },\n drunkD_1: { name: \"drunkD_1\", value: \"\" },\n drunkD_2: { name: \"drunkD_2\", value: \"\" },\n sleep: { name: \"sleep\", checked: false, value: \"\" },\n\n });\n const handleChangeTxt5_4 = e => { //目前只5-4使用\n if (_.isNil(imageURL)) { //已提交不得修改\n const { name, value } = e.target;\n setArray5thCheck(prevState => ({\n ...prevState,\n [name]: { ...prevState[name], value: value }\n }));\n if (array5thCheck.sleep.value === \"\" && value !== \"\") {\n setNumerator(prev => prev + 1)\n } else if (value === \"\") {\n setNumerator(prev => prev - 1)\n }\n // console.log(array5thCheck)\n }\n }\n\n const handleChangeTxt5_1 = e => {\n if (_.isNil(imageURL)) { //已提交不得修改\n const { name, value } = e.target;\n setArray5thCheck(prevState => ({\n ...prevState,\n [name]: { ...prevState[name], value: value }\n }));\n }\n }\n\n\n\n const [array5_2, setArray5_2] = React.useState({\n betelA: { name: \"betelA\", label: \"從未嚼食檳榔\", type: \"chkBox\", checked: false, gridWid: 2, systemLabel: \"從未嚼食檳榔 \" }\n , betelB: { name: \"betelB\", label: \"偶爾嚼(不是天天)\", type: \"chkBox\", checked: false, gridWid: 2, systemLabel: \"偶爾嚼(不是天天) \" }\n , betelC: {\n systemLabel: \"(幾乎)每天嚼,平均每天嚼_顆,已嚼_年\",\n label: \"(幾乎)每天嚼\", name: \"betelC\", type: \"chkBoxTxT\", checked: false, gridWid: 8\n , name_1: \"betelC_1\", type_1: \"number\", label_1: \"平均每天嚼\", text_1: \"\", suffix1: \"顆\", helperText_1: \"\", max_1: 100\n , name_2: \"betelC_2\", type_2: \"number\", label_2: \"已嚼 \", text_2: \"\", suffix2: \"年\", helperText_2: \"\", max_2: 100\n }\n , betelD: {\n systemLabel: \"已經戒食,戒了_年_個月。\",\n label: \"已經戒食,戒了\", name: \"betelD\", type: \"chkBoxTxT\", checked: false, gridWid: 12\n , name_1: \"betelD_1\", type_1: \"number\", label_1: \" \", text_1: \"\", suffix1: \"年\", helperText_1: \"\", max_1: 100\n , name_2: \"betelD_2\", type_2: \"number\", label_2: \" \", text_2: \"\", suffix2: \"個月\", helperText_2: \"\", max_2: 12 //label需有空格\n }\n });\n\n React.useEffect(() => {\n if (!initialRender.current) {\n const total = Object.values(array5_2).reduce((a, b) => a + (b.checked ? 1 : 0), 0)\n setArray5thCheck(prevState => ({\n ...prevState,\n betel: { ...prevState.betel, checked: total >= 1 ? true : false } //只更新這個\n }))\n if (total >= 1 && !array5thCheck.betel.checked) {\n setNumerator(prev => prev + 1)\n } else if (total === 0) {\n setNumerator(prev => prev - 1)\n }\n }\n }, [array5_2]); //避免循環\n\n const handleChangeChk5_2 = e => {\n if (_.isNil(imageURL)) { //已提交不得修改\n const { name, checked } = e.target;\n //先移除所有checked\n const keys = Object.keys(array5_2);\n keys.map(item => {\n delete array5_2[item].checked\n }\n )\n //set\n setArray5_2({\n ...array5_2,\n [name]: {\n ...array5_2[name], checked: checked\n }\n })\n setArray5thCheck(prevState => ({\n ...prevState,\n betelC_1: { ...prevState.betelC_1, value: \"\", error: false },\n betelC_2: { ...prevState.betelC_2, value: \"\", error: false },\n betelD_1: { ...prevState.betelD_1, value: \"\", error: false },\n betelD_2: { ...prevState.betelD_2, value: \"\", error: false },\n }));\n }\n }\n\n // const handleChangeTxt5_2 = e => {\n // if (_.isNil(imageURL)) { //已提交不得修改\n // const { name, value } = e.target;\n // setArray5_2({\n // ...array5_2,\n // [name]: { ...array5_2[name], text_1: value }\n // });\n // }\n // }\n\n\n\n const [array5_3, setArray5_3] = React.useState({\n drunkA: { name: \"drunkA\", label: \"從未喝酒\", type: \"chkBox\", checked: false, gridWid: 2, systemLabel: \"從未喝酒 \" }\n , drunkB: { name: \"drunkB\", label: \"偶爾喝(不是天天)\", type: \"chkBox\", checked: false, gridWid: 2, systemLabel: \"偶爾喝(不是天天) \" }\n , drunkC: {\n systemLabel: \"(幾乎)每天喝,平均每週喝_次,最常喝_酒,每次_瓶\",\n label: \"(幾乎)每天喝\", name: \"drunkC\", type: \"chkBoxTxT\", checked: false, gridWid: 8\n , name_1: \"drunkC_1\", type_1: \"number\", label_1: \"平均每週喝\", suffix1: \"次\", max_1: 28\n , name_2: \"drunkC_2\", type_2: \"text\", label_2: \"最常喝 \", suffix2: \"酒\"\n , name_3: \"drunkC_3\", type_3: \"number\", label_3: \"每次 \", suffix3: \"瓶\", max_3: 100\n }\n , drunkD: {\n systemLabel: \"已經戒酒,戒了_年_個月。\",\n label: \"已經戒酒,戒了\", name: \"drunkD\", type: \"chkBoxTxT\", checked: false, gridWid: 12\n , name_1: \"drunkD_1\", type_1: \"number\", label_1: \" \", suffix1: \"年\", max_1: 100\n , name_2: \"drunkD_2\", type_2: \"number\", label_2: \" \", suffix2: \"個月\", max_2: 12//label需有空格\n }\n });\n React.useEffect(() => {\n if (!initialRender.current) {\n const total = Object.values(array5_3).reduce((a, b) => a + (b.checked ? 1 : 0), 0)\n setArray5thCheck(prevState => ({\n ...prevState,\n drunk: { ...prevState.drunk, checked: total >= 1 ? true : false } //只更新這個\n }));\n //ProgressBar\n if (total >= 1 && !array5thCheck.drunk.checked) {\n setNumerator(prev => prev + 1)\n } else if (total === 0) {\n setNumerator(prev => prev - 1)\n }\n }\n }, [array5_3]); //避免循環\n\n const handleChangeChk5_3 = e => {\n if (_.isNil(imageURL)) { //已提交不得修改\n const { name, checked } = e.target;\n //先移除所有checked\n const keys = Object.keys(array5_3);\n keys.map(item => {\n // console.log(item)\n delete array5_3[item].checked\n })\n //set\n setArray5_3(prevState => ({\n ...prevState,\n [name]: { ...prevState[name], checked: checked }\n }))\n setArray5thCheck(prevState => ({\n ...prevState,\n drunkC_1: { ...prevState.drunkC_1, value: \"\", error: false },\n drunkC_2: { ...prevState.drunkC_2, value: \"\", error: false },\n drunkC_3: { ...prevState.drunkC_3, value: \"\", error: false },\n drunkD_1: { ...prevState.drunkD_1, value: \"\", error: false },\n drunkD_2: { ...prevState.drunkD_2, value: \"\", error: false },\n }));\n\n }\n }\n\n const [gender, setGender] = React.useState({\n male: false,\n female: false,\n helperText: \"請至少選取一個。\"\n })\n const handleChangeChkGender = e => {\n if (_.isNil(imageURL)) { //已提交不得修改\n const { name, checked } = e.target;\n if (name === \"male\") {\n setGender({\n ...gender,\n female: !checked,\n male: checked\n })\n } else {\n setGender({\n ...gender,\n female: checked,\n male: !checked\n })\n }\n }\n }\n const formRef = React.createRef();\n const handleSubmit = (e) => {\n e.preventDefault();\n if (validator()) {\n //清除\n dispatch(actions.TAB_EDIT({ editing: true, key: 66 }))\n Update66th();\n\n // handleNext(\"\",66);\n }\n }\n\n const validator = () => {\n const form = formRef.current; //參數1\n if (form.checkValidity()) {\n console.log(\"全部通過\")\n //若驗證通過,刪除錯誤提示\n for (let i = 0; i < form.elements.length; i++) {\n const element = form.elements[i];\n if (element.name === \"gender\") {\n setGender(omit(gender, [\"error\"]));\n }\n if (Object.keys(personal).includes(element.name)) {\n setPersonal(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\"])\n }));\n }\n if (Object.keys(workExp).includes(element.name)) {\n setWorkExp(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\"])\n }))\n }\n if (element.name === \"checked3rd\") {\n setCheck3rd(prevState => (omit(prevState, [\"error\"])))\n }\n if (element.name === \"pastHistory\") {\n set4thValidator(prevState => ({\n ...prevState,\n pastHistory: (omit(prevState.pastHistory, [\"error\"]))\n }))\n }\n if (Object.keys(array4th).includes(element.name)) {\n setArray4th(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\"])\n }))\n }\n if (Object.keys(array5thCheck).includes(element.name)) {\n setArray5thCheck(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\"])\n }));\n }\n if (element.name === \"conscious\") {\n set4thValidator(prevState => ({\n ...prevState,\n conscious: (omit(prevState.conscious, [\"error\"]))\n }))\n }\n if (Object.keys(array6th).includes(element.name)) {\n setArray6th(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\"])\n }))\n }\n }\n return true;\n } else {\n // const form = formRef.current;\n // console.log(\"還沒通過\")\n alert(\"尚有問題未完成\")\n for (let i = 0; i < form.elements.length; i++) {\n const element = form.elements[i];\n if (element.tagName !== 'button' && element.willValidate && !element.validity.valid) { //提交按鈕不用驗證\n // console.log(element.validationMessage, element.name);\n // console.log(element.value)\n // console.log(element.value, element.validationMessage, element.name, element.tagName)\n if (element.name === \"gender\") {\n setGender({ ...gender, error: true, helperText: element.validationMessage })\n }\n if (Object.keys(personal).includes(element.name)) {\n // console.log(element.name);\n setPersonal(prevState => ({\n ...prevState,\n [element.name]: { ...prevState[element.name], error: true, helperText: element.validationMessage }\n }))\n }\n if (Object.keys(workExp).includes(element.name)) {\n setWorkExp(prevState => ({\n ...prevState,\n [element.name]: { ...prevState[element.name], error: true, helperText: element.validationMessage }\n }))\n }\n if (element.name === \"checked3rd\") {\n setCheck3rd(prevState => ({\n ...prevState,\n error: true, helperText: element.validationMessage\n }));\n }\n if (element.name === \"pastHistory\") {\n set4thValidator(prevState => ({\n ...prevState,\n [element.name]: { ...prevState[element.name], error: true, helperText: element.validationMessage }\n }));\n }\n if (Object.keys(array4th).includes(element.name)) {\n setArray4th(prevState => ({\n ...prevState,\n [element.name]: { ...prevState[element.name], error: true, helperText: element.validationMessage }\n }))\n }\n if (Object.keys(array5thCheck).includes(element.name)) {\n setArray5thCheck(prevState => ({\n ...prevState,\n [element.name]: { ...prevState[element.name], error: true, helperText: element.validationMessage }\n }));\n // console.log(array5thCheck);\n }\n if (element.name === \"conscious\") {\n set4thValidator(prevState => ({\n ...prevState,\n [element.name]: { ...prevState[element.name], error: true, helperText: element.validationMessage }\n }));\n }\n if (Object.keys(array6th).includes(element.name)) {\n setArray6th(prevState => ({\n ...prevState,\n [element.name]: { ...prevState[element.name], error: true, helperText: element.validationMessage }\n }))\n }\n\n } else {//驗證通過,自訂訊息\n //有在settingObj的\n // console.log(\"Pass\", element.value, element.validationMessage, element.name, element.tagName)\n\n if (element.name === \"gender\") {\n setGender(omit(gender, [\"error\"]));\n }\n if (Object.keys(personal).includes(element.name)) {\n setPersonal(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\"])\n }));\n }\n if (Object.keys(workExp).includes(element.name)) {\n setWorkExp(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\"])\n }))\n }\n if (element.name === \"checked3rd\") {\n setCheck3rd(prevState => (omit(prevState, [\"error\"])))\n }\n if (element.name === \"pastHistory\") {\n set4thValidator(prevState => ({\n ...prevState,\n pastHistory: (omit(prevState.pastHistory, [\"error\"]))\n }))\n }\n if (Object.keys(array4th).includes(element.name)) {\n setArray4th(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\"])\n }))\n }\n if (Object.keys(array5thCheck).includes(element.name)) {\n setArray5thCheck(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\"])\n }));\n }\n if (element.name === \"conscious\") {\n set4thValidator(prevState => ({\n ...prevState,\n conscious: (omit(prevState.conscious, [\"error\"]))\n }))\n }\n if (Object.keys(array6th).includes(element.name)) {\n setArray6th(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\"])\n }))\n }\n\n }\n }\n return false;\n }\n }\n const [personal, setPersonal] = React.useState({\n personalName: { name: \"personalName\", value: \"\" },\n personalID: { name: \"personalID\", value: \"\" },\n birthDate: { name: \"birthDate\", label: \"4.出生日期\", required: true, value: null, maxDate: new Date() },\n hireDate: { name: \"hireDate\", label: \"5.受僱日期\", required: true, value: null },\n examinationDate: { name: \"examinationDate\", label: \"6. 體檢日期\", required: true, value: null, minDate: new Date() }\n })\n const handleDateChange = (name, e, v) => {\n if (_.isNil(imageURL)) { //已提交不得修改\n setPersonal(prevState => ({\n ...prevState,\n [name]: {\n ...prevState[name],\n value: v\n }\n }));\n }\n }\n const handleChangeTxt1st = e => {\n if (_.isNil(imageURL)) { //已提交不得修改\n const { name, value } = e.target;\n setPersonal(prevState => ({\n ...prevState,\n [name]: { ...prevState[name], value: value }\n }))\n }\n }\n\n const [workExp, setWorkExp] = React.useState({\n usedJob: { name: \"usedJob\", label: \"1.曾經從事\", type: \"text\", value: null, required: true },\n usedStart: { name: \"usedStart\", label: \" \", type: \"date\", value: null, required: true, disableFuture: true },\n usedEnd: { name: \"usedEnd\", label: \" \", type: \"date\", value: null, required: true, disableFuture: true },\n usedPeriod_Y: { name: \"usedPeriod_Y\", label: \" \", value: null, min: 0, type: \"number\", endAdmt: \"年\", startAdmt: \"共\" },\n usedPeriod_M: { name: \"usedPeriod_M\", label: \" \", value: null, min: 0, max: 12, type: \"number\", endAdmt: \"個月\" },\n rightNowJob: { name: \"rightNowJob\", label: \"2.目前從事\", type: \"text\", value: null, required: true },\n rightNowStart: { name: \"rightNowStart\", label: \" \", type: \"date\", value: null, required: true, disableFuture: true },\n rightNowEnd: { name: \"rightNowEnd\", label: \" \", type: \"date\", value: null, required: true, disableFuture: true },\n rightNowPeriod_Y: { name: \"rightNowPeriod_Y\", label: \" \", value: null, min: 0, type: \"number\", endAdmt: \"年\", startAdmt: \"共\" },\n rightNowPeriod_M: { name: \"rightNowPeriod_M\", label: \" \", value: null, min: 0, max: 12, type: \"number\", endAdmt: \"個月\" },\n workhours_1: { name: \"workhours_1\", type: \"number\", value: null, min: 0, step: 0.5, max: 168, endAdmt: \"小時\", required: true },\n workhours_2: { name: \"workhours_2\", type: \"number\", value: null, min: 0, step: 0.5, max: 168, endAdmt: \"小時\", required: true },\n })\n\n const handleChangeTxt2nd = e => {\n if (_.isNil(imageURL)) { //已提交不得修改\n // console.log(\"?!\")\n const { name, value } = e.target;\n if (name === \"usedJob\" || name === \"rightNowJob\" || name === \"workhours_1\" || name === \"workhours_2\") {\n setWorkExp(prevState => ({\n ...prevState,\n [name]: { ...prevState[name], value: value }\n }))\n // console.log(workExp[name].value)\n\n if ((workExp[name].value === \"\" || workExp[name].value === null) && value !== \"\" && workExp[name].required === true) {\n setNumerator(prev => prev + 1)\n } else if (value === \"\" && workExp[name].required === true) {\n setNumerator(prev => prev - 1)\n }\n }\n }\n\n }\n const handleDateChange2nd = (name, e, v) => {\n if (_.isNil(imageURL)) { //已提交不得修改\n console.log(name, v)\n console.log(workExp[name].value)\n setWorkExp(prevState => ({\n ...prevState,\n [name]: { ...prevState[name], value: v }\n }));\n if ((workExp[name].value === \"\" || workExp[name].value === null) && (v === \"\" || v === null)) {\n return\n }\n if ((workExp[name].value === \"\" || workExp[name].value === null) && (v !== null || v !== \"\") && workExp[name].required === true) {\n setNumerator(prev => prev + 1)\n } else if ((v === \"\" || v === null) && workExp[name].required === true) {\n setNumerator(prev => prev - 1)\n }\n }\n }\n const calculateWorkRange = () => {\n // console.log(workExp.usedStart.value)\n // console.log(workExp.usedEnd.value)\n if (!_.isNil(workExp.usedStart.value) && !_.isNil(workExp.usedEnd.value)) {\n let start = moment(workExp.usedStart.value + '01日', 'YYYY年MM月DD日')\n let end = moment(workExp.usedEnd.value + '01日', 'YYYY年MM月DD日')\n let months = moment.duration(end.diff(start)).asMonths();//總月份數\n let RoundMonths = Math.round(months)\n // console.log(RoundMonths)\n let y = Math.floor(RoundMonths / 12)\n let m = Math.round(RoundMonths % 12)\n // console.log(y, m)\n setWorkExp(prevState => ({\n ...prevState,\n usedPeriod_Y: { ...prevState.usedPeriod_Y, value: y },\n usedPeriod_M: { ...prevState.usedPeriod_M, value: m }\n }))\n }\n if (!_.isNil(workExp.rightNowStart.value) && !_.isNil(workExp.rightNowEnd.value)) {\n let start = moment(workExp.rightNowStart.value + '01日', 'YYYY年MM月DD日')\n let end = moment(workExp.rightNowEnd.value + '01日', 'YYYY年MM月DD日')\n let months = moment.duration(end.diff(start)).asMonths();//總月份數\n let RoundMonths = Math.round(months)\n // console.log(RoundMonths)\n\n let y = Math.floor(RoundMonths / 12)\n let m = Math.round(RoundMonths % 12)\n // console.log(y, m)\n setWorkExp(prevState => ({\n ...prevState,\n rightNowPeriod_Y: { ...prevState.rightNowPeriod_Y, value: y },\n rightNowPeriod_M: { ...prevState.rightNowPeriod_M, value: m }\n }))\n }\n }\n\n React.useEffect(() => {\n calculateWorkRange();\n }, [workExp.usedStart, workExp.usedEnd, workExp.rightNowEnd, workExp.rightNowStart]); //避免循環\n const useStyles = makeStyles({\n submitButton: {\n width: \"100%\", background: '#2E3B55', fontWeight: \"bold\",\n \"&:hover\": {\n background: '#fffff',\n // color:'#2E3B55'\n }\n },\n media: {\n height: 620,\n width: \"100%\",\n objectFit: 'cover',\n\n },\n\n });\n\n const classes = useStyles();\n React.useEffect(() => {\n if (initialRender.current) { //初始載入\n initialRender.current = false\n }\n }, []); //避免循環\n return (\n \n \n \n

勞工體(健)檢問卷

\n
\n \n {/*
\n 一、基本資料:\n \n \n \n \n \n \n 2.性別:\n \n \n }\n label=\"男\"\n />\n }\n label=\"女\"\n />\n \n {gender.error ? ({gender.helperText}) : null}\n \n \n \n \n \n {Object.values(personal).map((item, key) => {\n if (key >= 2) { //前兩個無視\n return (\n \n }\n showTodayButton\n minDate={item.minDate || new Date(\"1900-01-01\")}\n maxDate={item.maxDate || new Date(\"2100-01-01\")}\n clearLabel={\"X\"}\n label={item.label}\n value={item.value}\n inputValue={item.value}\n onChange={(event, value) =>\n handleDateChange(item.name, event, value)\n }\n />\n \n )\n }\n })\n }\n \n
*/}\n
\n 一、作業經歷:\n \n {Object.values(workExp).slice(0, 1).map((item, key) => {\n if (key === 0) {\n return (\n \n \n } labelPlacement={\"start\"} label={\"1.曾經從事\"} />\n \n \n )\n } else if (key === 1 || key === 2) {\n return (\n <>\n \n moment(date).format(\"YYYY年MM月\")}\n key={key}\n views={[\"year\", \"month\"]}\n autoOk\n autoComplete=\"off\"\n clearable\n type=\"datetime\"\n inputProps={{\n // ...prop //像是minLength、pattern\n pattern: \"[0-9]{4}年(0[1-9]|1[012])月\"\n }}\n style={{ width: 150 }}\n name={item.name}\n required={item.required || false}\n disableFuture={item.disableFuture || false}\n error={item.error || false}\n helperText={\n item.error ? (\n item.helperText\n ) : null}\n todayLabel={}\n showTodayButton\n minDate={item.minDate || new Date(\"1900-01-01\")}\n maxDate={item.maxDate || new Date(\"2100-01-01\")}\n clearLabel={\"X\"}\n label={item.label}\n value={item.value}\n inputValue={item.value}\n onChange={(event, value) =>\n handleDateChange2nd(item.name, event, value)\n }\n />\n \n )\n } else {\n return (\n {item.endAdmt},\n startAdornment: {item.startAdmt},\n }}\n autoComplete=\"off\"\n helperText={item.error ? item.helperText : null}\n inputProps={{ ...item, style: { textAlign: 'center' } }}\n />\n )\n\n }\n\n })}\n {Object.values(workExp).slice(1, 5).map((item, key) => {\n if (key === 0 || key === 1) {\n return (\n \n }\n showTodayButton\n minDate={item.minDate || new Date(\"1900-01-01\")}\n maxDate={item.maxDate || new Date(\"2100-01-01\")}\n clearLabel={\"X\"}\n label={item.label}\n value={item.value}\n inputValue={item.value}\n onChange={(event, value) =>\n handleDateChange2nd(item.name, event, value)\n }\n />\n }\n />\n \n )\n } else {\n return (\n \n {item.endAdmt},\n startAdornment: {item.startAdmt},\n }}\n autoComplete=\"off\"\n helperText={item.error ? item.helperText : null}\n inputProps={{ ...item, style: { textAlign: 'center' } }}\n />\n }\n />\n \n )\n\n }\n\n })}\n\n {Object.values(workExp).slice(5, 6).map((item, key) => {\n if (key === 0) {\n return (\n \n \n }\n labelPlacement={\"start\"}\n label={\"2.目前從事\"} />\n \n \n )\n } else if (key === 1 || key === 2) {\n return (\n \n }\n showTodayButton\n minDate={item.minDate || new Date(\"1900-01-01\")}\n maxDate={item.maxDate || new Date(\"2100-01-01\")}\n clearLabel={\"X\"}\n label={item.label}\n value={item.value}\n inputValue={item.value}\n onChange={(event, value) =>\n handleDateChange2nd(item.name, event, value)\n }\n />\n }\n />\n \n )\n } else {\n return (\n \n {item.endAdmt},\n startAdornment: {item.startAdmt},\n }}\n autoComplete=\"off\"\n helperText={item.error ? item.helperText : null}\n inputProps={{ ...item, style: { textAlign: 'center' } }}\n />\n }\n />\n \n )\n }\n })}\n {Object.values(workExp).slice(6, 10).map((item, key) => {\n if (key === 0 || key === 1) {\n return (\n \n }\n showTodayButton\n minDate={item.minDate || new Date(\"1900-01-01\")}\n maxDate={item.maxDate || new Date(\"2100-01-01\")}\n clearLabel={\"X\"}\n label={item.label}\n value={item.value}\n inputValue={item.value}\n onChange={(event, value) =>\n handleDateChange2nd(item.name, event, value)\n }\n />\n }\n />\n )\n } else {\n return (\n \n {item.endAdmt},\n startAdornment: {item.startAdmt},\n }}\n autoComplete=\"off\"\n helperText={item.error ? item.helperText : null}\n inputProps={{ ...item, style: { textAlign: 'center' } }}\n />\n }\n />\n \n )\n }\n })}\n {Object.values(workExp).slice(10, 11).map((item, key) => {\n return (\n \n \n 小時,\n }}\n inputProps={{\n ...item,\n style: { textAlign: \"center\" }\n }}\n value={item.value || \"\"}\n helperText={item.error ? item.helperText : null}\n onChange={handleChangeTxt2nd}\n />\n } labelPlacement={\"start\"}\n label={\"3.過去 1 個月,平均每週工時為:\"} />\n \n \n )\n })}\n {Object.values(workExp).slice(11, 12).map((item, key) => {\n return (\n \n 小時,\n }}\n inputProps={{\n ...item,\n style: { textAlign: \"center\" }\n }}\n value={item.value || \"\"}\n helperText={item.error ? item.helperText : null}\n onChange={handleChangeTxt2nd}\n />\n }\n labelPlacement={\"start\"}\n label={\";過去 6 個月,平均每週工時為:\"} />\n \n )\n })}\n \n
\n
\n 二、檢查時期(原因):\n \n \n \n \n \n \n \n }\n label={\"新進員工\"}\n onMouseDown={() => { checked3rd.checkA ? playActive() : playOn(); }}\n />\n \n }\n label={\"定期檢查\"}\n onMouseDown={() => { checked3rd.checkB ? playActive() : playOn(); }}\n />\n \n {checked3rd.error ? ({checked3rd.helperText}) : null}\n \n\n \n\n \n
\n
\n 三、既往病史:\n \n \n \n \n 您是否曾患有下列慢性疾病:(請在適當項目前打勾)\n \n {array4thValidator.pastHistory.error ? ({array4thValidator.pastHistory.helperText}) : null}\n \n \n \n {Object.values(array4th).map((item, key) => {\n //console.log(item);\n if (item.type === \"chkBox\") {\n return (\n \n \n }\n label={item.label}\n onMouseDown={() => { item.checked || false ? playActive() : playOn(); }}\n />\n )\n } else {\n return (\n \n \n { item.checked || false ? playActive() : playOn(); }}\n />\n \n \n )\n }\n\n })}\n \n
\n
\n 四、生活習慣:\n \n \n \n \n 1.請問您過去一個月內是否有吸菸?\n \n {array5thCheck.smoke.error ? ({array5thCheck.smoke.helperText}) : null}\n \n \n \n {Object.values(array5_1).map((item, key) => {\n if (item.type === \"chkBox\") {\n return (\n \n \n }\n label={item.label}\n onMouseDown={() => { item.checked || false ? playActive() : playOn(); }}\n />\n )\n } else {\n return (\n
\n \n \n \n }\n label={item.label}\n onMouseDown={() => { item.checked || false ? playActive() : playOn(); }}\n />\n \n \n {item.suffix1},\n }}\n inputProps={{\n min: item.min_1,\n step: 1, style: { textAlign: 'center' },\n max: item.max_1 || null\n }}\n\n />}\n />\n \n \n \n {item.label_2 ? (\n {item.suffix2},\n }}\n inputProps={{ min: 0, step: 1, style: { textAlign: 'center' }, max: item.max_2 || null }}\n />}\n />\n\n ) : null}\n \n
\n )\n }\n })}\n
\n \n \n \n \n 2.請問您最近六個月內是否有嚼食檳榔?\n \n {array5thCheck.betel.error ? ({array5thCheck.betel.helperText}) : null}\n \n \n \n {Object.values(array5_2).map((item, key) => {\n if (item.type === \"chkBox\") {\n return (\n \n \n }\n label={item.label}\n onMouseDown={() => { item.checked || false ? playActive() : playOn(); }}\n />\n )\n } else {\n return (\n
\n \n \n \n }\n label={item.label}\n onMouseDown={() => { item.checked || false ? playActive() : playOn(); }}\n />\n \n \n {item.suffix1},\n }}\n inputProps={{\n min: 0,\n step: 1, style: { textAlign: 'center' },\n max: item.max_1 || null\n }}\n />}\n />\n \n \n \n {item.label_2 ? ({item.suffix2},\n }}\n inputProps={{\n min: 0, step: 1, style: { textAlign: 'center' }, max: item.max_2 || null\n }}\n />}\n />) : null}\n \n
)\n }\n })}\n
\n \n \n \n \n 3.請問您過去一個月內是否有喝酒?\n \n {array5thCheck.drunk.error ? ({array5thCheck.drunk.helperText}) : null}\n \n \n \n {Object.values(array5_3).map((item, key) => {\n //console.log(item);\n if (item.type === \"chkBox\") {\n return (\n \n \n }\n label={item.label}\n onMouseDown={() => { item.checked || false ? playActive() : playOn(); }}\n />\n )\n } else {\n return (\n \n
\n \n \n }\n label={item.label}\n onMouseDown={() => { item.checked || false ? playActive() : playOn(); }}\n />\n \n \n {item.suffix1},\n }}\n inputProps={{\n min: 0, style: { textAlign: 'center' }, max: item.max_1 || null\n }}\n />}\n />\n \n \n
\n\n \n {item.label_2 ? (\n {item.suffix2},\n }}\n inputProps={{\n style: { textAlign: 'center' }\n }}\n />}\n />) : null}\n \n \n {item.label_3 ? ({item.suffix3},\n }}\n inputProps={{\n min: 0.1, step: 0.1, style: { textAlign: 'center' }, max: item.max_3 || null\n }}\n />}\n />) : null}\n\n
\n )\n }\n })}\n
\n
\n \n 小時,\n }}\n helperText={array5thCheck.sleep.error ? array5thCheck.sleep.helperText : null}\n />\n
\n
\n
\n 五、自覺症狀:\n \n \n \n \n 您最近三個月是否常有下列症狀:(請在適當項目前打勾)\n \n {array4thValidator.conscious.error ? ({array4thValidator.conscious.helperText}) : null}\n \n \n \n {Object.values(array6th).map((item, key) => {\n //console.log(item);\n if (item.type === \"chkBox\") {\n return (\n \n \n }\n label={item.label}\n onMouseDown={() => { item.checked || false ? playActive() : playOn(); }}\n />\n )\n } else {\n return (\n \n \n { item.checked || false ? playActive() : playOn(); }}\n />\n \n \n )\n }\n\n })}\n \n
\n
\n \n
\n {/* */}\n {!imageURL ? (
\n \n
) : null}\n\n
\n
\n {/* {imageURL ?\n (
\n
\n \n
\n
\n \n
\n
\n )\n : null\n } */}\n\n
\n\n
\n {/*
\n {imageURL ? : null}\n
*/}\n
\n );\n}\n\nexport default App;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\nimport Typography from \"@material-ui/core/Typography\";\nimport Box from \"@material-ui/core/Box\";\nimport { makeStyles, withStyles } from \"@material-ui/core/styles\";\nimport Backdrop from \"@material-ui/core/Backdrop\";\nimport FavoriteIcon from '@material-ui/icons/Favorite';\nimport { injectIntl, intlShape, useIntl, FormattedMessage } from 'react-intl';\n\nfunction CircularProgressWithLabel(props) {\n const classes = useStylesFacebook();\n const intl = useIntl();\n\n return (\n \n \n \n \n \n\n\n \n \n {/* {\"全部已完成\"} */}\n

\n {/* {\"感謝您的耐心填寫\"} */}\n \n \n\n \n {`${Math.ceil((100 - props.value) / 20)}`}\n \n
\n \n
\n );\n}\nconst useStylesFacebook = makeStyles((theme) => ({\n root: {\n position: \"relative\"\n },\n bottom: {\n color: theme.palette.grey[theme.palette.type === \"light\" ? 200 : 700]\n },\n displayNone: {\n zIndex: \"2\",\n backgroundColor: \"white\" //白底\n },\n colorPrimary: {\n // color: theme.palette.red[theme.palette.type === 'light' ? 200 : 700],\n },\n top: {\n // color: \"#1a90ff\",\n // animationDuration: \"0ms\",\n position: \"absolute\",\n // transitionDuration:\"0ms\",\n // transitionDelay:\"0ms\",\n // transform:\"0s\",\n // left: 0\n },\n circle: {\n strokeLinecap: 'round', //圓弧進度\n }\n}));\nCircularProgressWithLabel.propTypes = {\n /**\n * The value of the progress indicator for the determinate variant.\n * Value between 0 and 100.\n */\n value: PropTypes.number.isRequired\n};\n\nexport default function CircularStatic(props) {\n const [progress, setProgress] = React.useState(0);\n // const [open, setOpen] = React.useState(true);\n const initialRender = React.useRef(true);\n\n const { open } = props;\n // let open = props.backdrop;\n // const setOpen = props.setOpen;\n // console.log(open)\n React.useEffect(() => {\n let timer;\n // console.log(\"start\")\n // console.log(open)\n\n\n if (open) {\n timer = setInterval(() => {\n setProgress((prevProgress) =>\n prevProgress >= 100 ? 100 : prevProgress + 2\n );\n }, 100);\n }\n\n // clearInterval(timer);\n\n\n // console.log(setOpen)\n\n return () => {\n clearInterval(timer);\n // setOpen(false);\n // console.log(\"end\")\n };\n }, [open]);\n\n return ;\n}\n","import React, { useEffect } from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Stepper from '@material-ui/core/Stepper';\nimport Step from '@material-ui/core/Step';\nimport StepLabel from '@material-ui/core/StepLabel';\nimport Button from '@material-ui/core/Button';\nimport Typography from '@material-ui/core/Typography';\nimport Card from '@material-ui/core/Card';\nimport App from './App';\n// import customTabsStyle from \"./assets/jss/material-dashboard-react/components/customTabsStyle\";\n// import withStyles from \"@material-ui/core/styles/withStyles\";\nimport AppBar from '@material-ui/core/AppBar';\nimport Toolbar from '@material-ui/core/Toolbar';\nimport MenuIcon from '@material-ui/icons/Menu';\nimport IconButton from '@material-ui/core/IconButton';\nimport Menu from '@material-ui/core/Menu';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport Divider from \"@material-ui/core/Divider\";\nimport ComponentType from \"./_Services/index\";\nimport { actions } from \"./reducers/app\";\nimport { useDispatch, useSelector } from \"react-redux\";\n// import { act } from '@testing-library/react';\nimport Signature from './Signature';\nimport axios from \"axios\";\nimport Qs from \"qs\";\nimport PF from \"./_Services/publicFunction\";\nimport MyBackdrop from './components/BackDrop/BackDrop';\nimport useSound from 'use-sound';\nimport switchlight from './sounds/switchlight.wav';\nimport Brightness2Icon from \"@material-ui/icons/Brightness2\";\nimport Brightness7Icon from \"@material-ui/icons/Brightness7\";\nimport { DarkModeSwitch } from 'react-toggle-dark-mode';\nimport { injectIntl, intlShape, useIntl, FormattedMessage } from 'react-intl';\nimport moment from \"moment\";\nimport { useGmailListItemStyles } from '@mui-treasury/styles/listItem/gmail';\nimport { indigo, teal, deepPurple } from '@material-ui/core/colors'\n\n// import Backdrop from \"@material-ui/core/Backdrop\";\n\nconst domToImage = require('dom-to-image');\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n width: '100%',\n },\n stepper: {\n padding: 0,\n width: '80%',\n },\n backButton: {\n marginRight: theme.spacing(1),\n },\n instructions: {\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1),\n },\n displayNone: {\n display: \"none !important\"\n },\n}));\n\n\n// const Questionaires = [66,67,68]\n\n\nfunction getStepContent(stepIndex) {\n switch (stepIndex) {\n case 0:\n return '已經完成,是否修改';\n case 1:\n return 'What is an ad group anyways?';\n case 2:\n return 'This is the bit I really care about!';\n default:\n return 'Unknown stepIndex';\n }\n}\n\nfunction HorizontalLabelPositionBelowStepper(props) {\n const dispatch = useDispatch();\n const initialRender = React.useRef(true);\n const classes3 = useGmailListItemStyles({ color: teal[900] });\n\n const [MornjoyQuestionaires, setQuests] = React.useState({\n // 66: \"勞檢問卷\",\n // 67: \"過勞評估量表\",\n // 68: \"心情量表\",\n })\n\n const { tabList } = useSelector(state => ({\n tabList: state.app.tabList,\n }));\n\n const { questionaireList } = useSelector(state => ({\n questionaireList: state.app.questionaireList,\n }));\n const { UserInfo } = useSelector(state => ({\n UserInfo: state.app.UserInfo,\n }));\n const { dark } = useSelector(state => ({\n dark: state.app.dark,\n }));\n //初始\n React.useEffect(() => {\n const completeQ = ['66', '67', '68', '69', '70', '80']; //已設計問卷(有對應component)\n console.log(questionaireList);\n let obj = questionaireList.reduce((o, { SpecialItemNo, Title }) => {\n o[SpecialItemNo] = Title\n return o\n }, {})\n\n console.log(obj);\n setQuests(obj);\n let ary = Object.values(obj);\n Object.keys(obj).map((prop, key) => {\n let tab = {\n funcName: ary[key],\n componentName: prop //作為KEY\n }\n dispatch(actions.TAB_ADD(tab));\n });\n //若有未設計到的component\n questionaireList.map(item => {\n if (!completeQ.includes(item.SpecialItemNo)) {\n dispatch(actions.TAB_EDIT({ editing: true, key: item.SpecialItemNo })) //不須提交直接下一頁\n }\n })\n\n window.addEventListener(\"beforeunload\", leaveApp);\n\n return () => window.removeEventListener(\"beforeunload\", leaveApp) //離開註銷\n }, []); //避免循環\n const intl = useIntl();\n\n const [imageURL, setImage] = React.useState(null); //提交=>簽名檔img\n const [open, setOpen] = React.useState(false);\n const [backdrop, setBackdrop] = React.useState(false);\n const icon = !dark ? : ;\n const [playActive] = useSound(\n switchlight,\n { volume: 0.5 }\n );\n const [timestamp, setTime] = React.useState(null);\n\n const classes = useStyles();\n const [activeStep, setActiveStep] = React.useState(0);\n const steps = Object.values(MornjoyQuestionaires).reverse();\n\n const handleNext = (e, key) => {\n // setBackdrop(prevstate => (true));\n // console.log(\"NEXT\")\n const finish = tabList[key].isEditing;\n //console.log(finish);\n if (!finish) {\n // alert(\"當前問卷尚未完成,請先提交當前問卷\")\n alert(intl.formatMessage({ id: \"app.QuestsNotYet\" }))\n } else {\n setActiveStep((prevActiveStep) => prevActiveStep + 1);\n }\n\n };\n\n const handleBack = () => {\n setActiveStep((prevActiveStep) => prevActiveStep - 1);\n };\n\n const handleReset = () => {\n const { history } = props\n\n // setActiveStep(0);\n setOpen(true)\n // setBackdrop(prevstate => (true));\n // setTimeout(() => {\n // sessionStorage.removeItem('token');\n // history.push(\"LOGIN\")\n // }, 5000);\n\n };\n const [anchorEl, setAnchorEl] = React.useState(null);\n\n const handleClick = (event) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n const leaveApp = ev => {\n ev.preventDefault();\n return ev.returnValue = 'Are you sure you want to close?';\n }\n const handleLogOut = () => {\n const { history } = props\n setAnchorEl(null);\n setBackdrop(prevstate => (true));\n setTimeout(() => {\n sessionStorage.removeItem('token');\n history.push(\"LOGIN\")\n }, 5400);\n\n // history.replace(\"\", null); //清空紀錄\n // window.history.replaceState(null, null, \"/\");\n // dispat\n };\n const handleLogOutDirect = () => {\n const { history } = props\n setAnchorEl(null);\n sessionStorage.removeItem('token');\n history.push(\"LOGIN\")\n\n // history.replace(\"\", null); //清空紀錄\n // window.history.replaceState(null, null, \"/\");\n // dispat\n };\n React.useEffect(() => {\n if (initialRender.current) {\n initialRender.current = false;\n } else {\n\n var element = document.getElementById('signature');\n // var options = {\n // filename: sessionStorage.getItem('BarCodeStr') + '.pdf',\n // };\n // var pdf = new jsPDF();\n\n domToImage.toBlob(element).then((blob) => {\n // var image = canvas.toDataURL(\"image/png\");\n // pdf.addImage(image, 'JPEG', 0, 0);\n // document.body.appendChild(image)\n // var pdf2 = pdf.output('blob');\n let data = new FormData();\n data.append('files', blob, UserInfo.BarCodeStr + \"-\" + new Date().toISOString().split('T')[0] + '.png')\n PF.instance({\n method: \"post\",\n url: PF.url + \"/Questionaire/Upload\",\n data: data,\n headers: { token: sessionStorage.token }\n })\n .then(function (response) {\n // alert(\"完成\")\n //console.log(response.data)\n })\n\n })\n handleLogOut();\n }\n }, [imageURL]); //避免循環\n useEffect(() => {\n if (!initialRender.current) {\n // console.log(activeStep)\n // console.log(steps.length)\n if (activeStep !== 0 && activeStep === steps.length) {\n setTimeout(() => {\n handleLogOut()\n }, 1000)\n }\n }\n\n }, [activeStep])\n const handleI18nChange = (event, lang) => {\n moment.locale(lang);\n dispatch(actions.LANG_SET(lang));\n setAnchorEl(null);\n };\n const { app } = useSelector(state => ({\n app: state.app,\n }));\n return (\n <>\n
\n \n \n \n \n \n \n \n {UserInfo.UserName}\n {\n dispatch(actions.THEME_SET({ theme: !dark }))\n }}\n onMouseDown={() => playActive()}\n style={{ display: \"block\", textAlign: \"center\", maxHeight: \"36px\" }}\n >\n f}\n size={20} />\n \n handleI18nChange(e, \"zh-tw\")}>繁體中文\n handleI18nChange(e, \"en\")}>English\n \n \n \n \n {steps.map((label) => (\n \n {intl.formatMessage({ id: label })}\n \n ))}\n \n
\n {activeStep === steps.length ? (\n
\n \n {!imageURL ?\n // () :\n () : \"\"\n\n }\n
\n ) : (\n
\n {/* {getStepContent(activeStep)} */}\n
\n \n \n \n \n
\n
\n )}\n
\n
\n
\n \n {Object.keys(MornjoyQuestionaires).reverse().map((prop, key) => {\n return (\n \n \n
\n );\n })}\n \n {/* \n {imageURL ?\n (
\n
\n \n
\n
\n \n
\n
\n )\n : null\n } */}\n \n \n \n );\n}\n\n\n\n\nexport default HorizontalLabelPositionBelowStepper;\n","const reportWebVitals = onPerfEntry => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","export default __webpack_public_path__ + \"static/media/photo01.a7846d5c.jpg\";","export default __webpack_public_path__ + \"static/media/photo03.0dffa8b9.jpg\";","export default __webpack_public_path__ + \"static/media/photo06.f3ecc162.jpg\";","export default __webpack_public_path__ + \"static/media/photo08.9a16a2ab.jpg\";","import React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport ListItem from '@material-ui/core/ListItem';\nimport List from '@material-ui/core/List';\nimport Divider from '@material-ui/core/Divider';\nimport AppBar from '@material-ui/core/AppBar';\nimport Toolbar from '@material-ui/core/Toolbar';\nimport IconButton from '@material-ui/core/IconButton';\nimport Typography from '@material-ui/core/Typography';\nimport CloseIcon from '@material-ui/icons/Close';\nimport Slide from '@material-ui/core/Slide';\nimport DialogActions from \"@material-ui/core/DialogActions\";\nimport DialogContent from \"@material-ui/core/DialogContent\";\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\nimport DialogContentText from \"@material-ui/core/DialogContentText\";\nimport GridContainer from \"../Grid/GridContainer\";\nimport GridItem from \"../Grid/GridItem\";\nimport { TextField, Menu, MenuItem } from '@material-ui/core';\nimport AccountCircle from '@material-ui/icons/AccountCircle';\nimport { MuiPickersUtilsProvider, KeyboardDatePicker, KeyboardDateTimePicker, KeyboardTimePicker, DatePicker } from \"@material-ui/pickers\";\nimport MomentUtils from \"@date-io/moment\";\nimport TodayIcon from \"@material-ui/icons/UpdateOutlined\";\nimport \"moment/locale/zh-tw\"// import { es, ru } from \"@date-io/locale\";\nimport moment from \"moment\";\nimport Grid from '@material-ui/core/Grid';\nimport CakeIcon from '@material-ui/icons/Cake';\nimport CakeOutlinedIcon from '@material-ui/icons/CakeOutlined';\nimport CreditCardIcon from '@material-ui/icons/CreditCard';\nimport Brightness2Icon from \"@material-ui/icons/Brightness2\";\nimport Brightness7Icon from \"@material-ui/icons/Brightness7\";\nimport useSound from 'use-sound';\nimport switchlight from '../../sounds/switchlight.wav';\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { actions } from \"../../reducers/app\";\nimport { indigo, teal, deepPurple } from '@material-ui/core/colors'\nimport { DarkModeSwitch } from 'react-toggle-dark-mode';\nimport _ from \"lodash\";\nimport { GTranslate } from '@material-ui/icons';\nimport { FormattedMessage } from \"react-intl\";\nimport { injectIntl, intlShape, useIntl } from 'react-intl';\nimport { useGmailListItemStyles } from '@mui-treasury/styles/listItem/gmail';\n//設定語系\n// moment.locale(\"e\");\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n padding: 0,\n '&:first-child ': {\n padding: 0,\n }\n },\n appBar: {\n position: 'relative',\n backgroundColor: indigo[500],\n },\n title: {\n marginLeft: theme.spacing(2),\n flex: 1,\n },\n button: {\n borderRight: \"3px solid transparent\",\n \"&:hover\": {\n borderRightColor: \"blue\",\n borderRight: \"3px solid\",\n },\n \"&:focus\": {\n borderRightColor: \"blue\",\n borderRight: \"3px solid\",\n }\n }\n}));\n\nconst Transition = React.forwardRef(function Transition(props, ref) {\n return ;\n});\n\nexport default function FullScreenDialog(props) {\n const { open, setOpen, logo, settingObj, handleDateChange, handleTxtChange, formRef, data, handleSubmit, BackDropColor } = props;\n const classes = useStyles();\n const classes3 = useGmailListItemStyles({ color: teal[900] });\n const handleClickOpen = () => {\n setOpen(true);\n };\n const { dark } = useSelector(state => ({\n dark: state.app.dark,\n }));\n const { app } = useSelector(state => ({\n app: state.app,\n }));\n const handleClose = () => {\n setOpen(false);\n };\n const icon = !dark ? : ;\n const [playActive] = useSound(\n switchlight,\n { volume: 0.5 }\n );\n const dispatch = useDispatch();\n const [anchorEl, setAnchorEl] = React.useState(null);\n const TranslateOpen = Boolean(anchorEl);\n\n\n const handleTranslateClose = () => {\n setAnchorEl(null);\n };\n const handleI18nChange = (event, lang) => {\n moment.locale(lang);\n dispatch(actions.LANG_SET(lang));\n setAnchorEl(null);\n playActive();\n };\n const intl = useIntl();\n\n\n return (\n <>\n \n \n \n \n \n \n \n\n {/* playActive()}\n onClick={(e) => {\n dispatch(actions.THEME_SET({ theme: !dark }))\n }}\n >\n {icon}\n */}\n dispatch(actions.THEME_SET({ theme: !dark }))}\n onMouseDown={(e) => {\n e.preventDefault();\n // e.stopPropagation();\n playActive()\n }}\n // style={{ width: \"50px\" }}\n size={20} />\n \n \n\n \n
\n \n \n \n \n {settingObj.map((item, key) => {\n if (item.type === \"date\") {\n return (\n \n \n \n \n \n \n \n }\n // showTodayButton\n minDate={item.minDate || new Date(\"1900-01-01\")}\n maxDate={item.maxDate || new Date(\"2100-01-01\")}\n openTo={item.openTo || \"\"}\n disableFuture={item.disableFuture || false}\n clearLabel={}\n cancelLabel={\"X\"}\n label={}\n // value={item.value || null}\n // inputValue={item.value}\n onChange={(event, value) =>\n handleDateChange(item.name, event, value)\n }\n value={data[item.name] || null}\n style={{ imeMode: \"disabled\" }}\n />\n \n \n\n \n \n )\n } else {\n return (\n \n \n \n {\n key === 0 ? : \n }\n \n \n }\n placeholder={item.placeholder || \"\"}\n value={_.isEmpty(data[item.name]) ? \"\" : data[item.name]}\n onChange={handleTxtChange}\n inputProps={{\n ...item //像是minLength、pattern\n // pattern: \"[0-9]{4}/(0[1-9]|1[012])/(0[1-9]|1[0-9]|2[0-9]|3[01])\"\n }} />\n \n \n\n \n \n )\n }\n\n })}\n \n \n \n \n \n \n \n handleI18nChange(e, \"zh-tw\")}>繁體中文\n handleI18nChange(e, \"en\")}>English\n \n \n \n
\n \n \n );\n}","export default __webpack_public_path__ + \"static/media/logo.ae7ca485.svg\";","import React, { useState, useRef } from 'react';\nimport { makeStyles, useTheme } from '@material-ui/core/styles';\nimport Card from '@material-ui/core/Card';\nimport CardActionArea from '@material-ui/core/CardActionArea';\nimport CardActions from '@material-ui/core/CardActions';\nimport CardContent from '@material-ui/core/CardContent';\nimport CardMedia from '@material-ui/core/CardMedia';\nimport { Button, Paper, MobileStepper } from '@material-ui/core';\nimport Typography from '@material-ui/core/Typography';\nimport photo01 from \"./pictures/photo01.jpg\";\n// import photo02 from \"./pictures/photo02.jpg\";\nimport photo03 from \"./pictures/photo03.jpg\";\n// import photo04 from \"./pictures/photo04.jpg\";\nimport photo06 from \"./pictures/photo06.jpg\";\nimport photo08 from \"./pictures/photo08.jpg\";\nimport Slide from '@material-ui/core/Slide';\nimport CustomModal from \"./components/Modal/CustomModal\";\n// import { FormattedMessage } from \"react-intl\";\nimport logo from './pictures/logo.svg';\n\nimport _, { omit, pick, round, slice } from 'lodash';\nimport axios from \"axios\";\nimport Qs from \"qs\";\nimport { actions } from \"./reducers/app\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport PF from \"./_Services/publicFunction\";\nimport MyBackdrop from './components/BackDrop/BackDrop';\nimport Backdrop from \"@material-ui/core/Backdrop\";\nimport { indigo, green, red } from '@material-ui/core/colors';\n// import GTranslateIcon from '@mui/icons-material/GTranslate';\nimport { FormattedMessage, injectIntl, intlShape, useIntl } from 'react-intl';\nimport SwipeableViews from 'react-swipeable-views';\nimport { autoPlay, virtualize } from 'react-swipeable-views-utils';\nimport Swal from 'sweetalert2';\nimport KeyboardArrowLeft from '@material-ui/icons/KeyboardArrowLeft';\nimport KeyboardArrowRight from '@material-ui/icons/KeyboardArrowRight';\n// import virtualize from 'react-swipeable-views/lib/virtualize';\nimport { mod } from 'react-swipeable-views-core';\nimport AddIcCallIcon from '@material-ui/icons/AddIcCall';\nimport RoomIcon from '@material-ui/icons/Room';\nconst AutoPlaySwipeableViews = autoPlay(virtualize(SwipeableViews));\n\nconst useStyles = makeStyles(theme => ({\n root: {\n // maxWidth: 600,\n flex: 1\n },\n media: {\n height: 620,\n width: \"100%\",\n objectFit: 'cover',\n // \"-o-transition\": \"opacity 1s ease-in-out\",\n transition: \"opacity 2s ease-in-out\"\n // paddingTop: '56.25%', // 16:9,\"\n },\n header: {\n display: 'flex',\n alignItems: 'center',\n height: 50,\n paddingLeft: theme.spacing(4),\n backgroundColor: theme.palette.background.default,\n },\n img: {\n height: 620,\n // display: 'block',\n // maxWidth: 400,\n overflow: 'hidden',\n objectFit: 'cover',\n\n width: '100%',\n },\n\n}));\n\nfunction Login(props) {\n const { history } = props;\n const { i18n } = useSelector(state => ({\n i18n: state.app.i18n,\n }));\n\n const dispatch = useDispatch();\n const intl = useIntl();\n const formRef = React.createRef();\n const classes = useStyles();\n const [open, setOpen] = React.useState(false)\n const [settingObj, setObj] = React.useState({\n UserName: { label: \"姓名\", name: \"UserName\", type: \"text\", required: true, helperText: \"required\", xs: 12, sm: 12, md: 12, lg: 12, minLength: 2, maxLength: 50, pattern: \"^[^0-9]+$\", placeholder: \"王小明\" },\n birthDate: { label: \"出生日期\", name: \"birthDate\", type: \"date\", required: true, helperText: \"required\", xs: 12, sm: 12, md: 12, lg: 12, disableFuture: true, openTo: \"year\", placeholder: \"2000/01/01\" },\n personalId: { label: \"身分證字號\", name: \"personalId\", type: \"text\", required: true, helperText: \"required\", xs: 12, sm: 12, md: 12, lg: 12, minLength: 8, maxLength: 10, placeholder: \"A123456789\" }\n })\n\n const handleTxtChange = e => {\n const { name, value } = e.target;\n setUser(prevstate => ({\n ...prevstate,\n [name]: value.trim()\n }));\n }\n React.useEffect(() => {\n //載入彈窗\n let timer;\n\n\n if (true) {\n timer = setInterval(() => {\n setDoor((prevProgress) =>\n prevProgress >= ArrayDoor.length - 1 ? 0 : prevProgress + 1\n );\n }, 5000);\n }\n\n return () => {\n clearInterval(timer);\n };\n }, [])\n const handleDateChange = (name, e, value) => {\n // console.log(e);\n console.log(value);\n setUser(prevstate => ({\n ...prevstate,\n [name]: value\n }));\n }\n const [user, setUser] = React.useState({\n birthDate: null\n })\n const [Bopen, setBOpen] = React.useState(false);\n const [IsShow, setIsShow] = React.useState(true);\n const handleToggle = () => {\n setBOpen(!Bopen);\n };\n const containerRef = useRef(null);\n const handleSubmit = e => {\n e.preventDefault();\n // if (user.UserName.toLowerCase() === \"nopaper\") {\n // history.push(`${process.env.PUBLIC_URL}/NoPaper`);\n // return\n // }\n if (validator()) {\n PF.instance({\n method: \"post\",\n url: PF.url + \"/Login/Check\",\n data: Qs.stringify({ parameter: user }),\n })\n .then(function (response) {\n const { TotalRecord, rows, token, UserInfo } = response.data;\n // console.log(UserInfo);\n const doneQ = rows.reduce((a, b) => (b.QuestionNo !== null ? a + 1 : a), 0)\n const beingQ = rows.filter(item => { return item.QuestionNo === null ? true : false })\n\n\n // console.log(beingQ);\n // console.log(TotalRecord);\n if (TotalRecord === 0) {\n // alert(\"抱歉,查無您的預約資料\\r\\n請致電 04-2255-2555 #168 企業健檢預約查詢\")\n alert(intl.formatMessage({ id: \"app.LoginCantFound\" }));\n setUser({\n UserName: null, birthDate: null, personalId: null, BarCodeStr: '',\n });\n\n } else if (TotalRecord === doneQ && rows[0].SpecialCheckDate !== null) {\n // alert(\"您所需要填寫的問卷均已提交,謝謝\")\n alert(intl.formatMessage({ id: \"app.AllQuestsDone\" }))\n\n } else if (TotalRecord === doneQ && rows[0].SpecialCheckDate === null) {\n let isconfirm = window.confirm(\"您所需要填寫的問卷均已完成,使否需要修改?\");\n if (isconfirm) {\n\n sessionStorage.setItem(\"token\", JSON.stringify(token));\n dispatch(actions.token(token));\n dispatch(actions.UserInfo(UserInfo));\n history.push(`${process.env.PUBLIC_URL}/Admin`);\n }\n } else if (TotalRecord > doneQ) { //尚有未完成問卷\n sessionStorage.setItem(\"token\", JSON.stringify(token));\n dispatch(actions.token(token));\n dispatch(actions.UserInfo(UserInfo));\n dispatch(actions.QUESTS_SET(beingQ));\n setIsShow(!IsShow)\n Swal.fire({\n title: '勞檢表',\n html:\n // '需要勞檢表,請選需要
(企業員工團體健檢必選或需提供勞工體檢表給公司)
' +\n // '不需勞檢表,請選不需要
(不需要提供勞檢表給公司)

' +\n // '公司員工眷屬個人健檢需要勞檢表,填寫完請告知櫃台人員
'+\n\n '1.企業合作方案,請務必選擇需要,診所將統一提供給企業承辦。
2.個人健檢、企業合作員工方案眷屬,需提供勞檢表給公司請選擇需要

無申請勞檢表需求可填不需要,即可減少填寫時間。'\n\n ,\n\n icon: 'info',\n showCancelButton: true,\n confirmButtonText: '需要',//相反\n cancelButtonText: '不需要',\n reverseButtons: true,\n allowOutsideClick: false,\n\n }).then((result) => {\n if (result.isConfirmed) {\n const confirmed = (true)\n dispatch(actions.Confirme(confirmed));\n history.push(`${process.env.PUBLIC_URL}/Admin`);\n\n } else if (result.dismiss === Swal.DismissReason.cancel) {\n const confirmed = (false)\n dispatch(actions.Confirme(confirmed));\n history.push(`${process.env.PUBLIC_URL}/Admin`);\n\n }\n });\n setUser({\n UserName: null, birthDate: null, personalId: null, BarCodeStr: '',\n });\n }\n })\n }\n\n }\n const validator = () => {\n const form = formRef.current; //參數1\n\n if (form.checkValidity()) {\n console.log(\"全部通過\");\n for (let i = 0; i < form.elements.length; i++) {\n const element = form.elements[i];\n if (Object.keys(settingObj).includes(element.name)) {\n setObj(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\"])\n }))\n }\n }\n return true;\n } else {\n for (let i = 0; i < form.elements.length; i++) {\n const element = form.elements[i];\n if (element.tagName !== 'button' && element.willValidate && !element.validity.valid) { //提交按鈕不用驗證\n if (Object.keys(settingObj).includes(element.name)) {\n setObj(prevState => ({\n ...prevState,\n [element.name]: { ...prevState[element.name], error: true, helperText: intl.formatMessage({ id: element.validationMessage }) }\n }))\n }\n // console.log(element.validationMessage)\n\n } else {//驗證通過,自訂訊息\n //有在settingObj的\n if (Object.keys(settingObj).includes(element.name)) {\n setObj(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\"])\n }))\n }\n\n }\n }\n return false;\n }\n }\n const ArrayDoor = [photo01, photo06, photo03, photo08]\n const [door, setDoor] = React.useState(0);\n\n\n return (\n \n \n { setOpen(true); }}>\n {/* */}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n {IsShow && (\n \n )}\n
\n );\n}\n\nconst tutorialSteps = [\n {\n imgPath: photo01,\n },\n {\n imgPath:\n photo03,\n },\n {\n imgPath:\n photo06,\n },\n {\n imgPath:\n photo08,\n },\n\n];\n\nconst styles = {\n slide: {\n padding: 15,\n minHeight: 100,\n color: '#fff',\n },\n img: {\n height: 620,\n // display: 'block',\n // maxWidth: 400,\n overflow: 'hidden',\n objectFit: 'cover',\n\n width: '100%',\n },\n}\n\n\nfunction SwipeableTextMobileStepper() {\n const classes = useStyles();\n const theme = useTheme();\n const [activeStep, setActiveStep] = React.useState(0);\n const maxSteps = tutorialSteps.length;\n\n const handleNext = () => {\n setActiveStep((prevActiveStep) => prevActiveStep + 1);\n };\n\n const handleBack = () => {\n setActiveStep((prevActiveStep) => prevActiveStep - 1);\n };\n\n const handleStepChange = (step) => {\n setActiveStep(step);\n };\n const SlideRenderer = params => {\n // const classes = useStyles();\n const { index, key } = params;\n\n switch (mod(index, 4)) {\n case 0:\n return ();\n case 1:\n return ();\n case 2:\n return ();\n case 3:\n return ();\n default:\n return null;\n }\n }\n\n\n return (\n
\n \n\n \n {/* \n Next\n {theme.direction === 'rtl' ? : }\n \n }\n backButton={\n \n }\n /> */}\n
\n );\n}\n\nexport default injectIntl(Login);","import React from 'react';\nimport { Route, Redirect } from 'react-router-dom'\n\n// import _, { omit, pick, round, slice } from 'lodash';\nimport { useDispatch, useSelector } from \"react-redux\";\n\n\n\n\n\nconst PrivateRoute = ({ component: Component, ...rest }) => {\n const { UserInfo } = useSelector(state => ({\n UserInfo: state.app.UserInfo,\n }));\n return (\n (\n sessionStorage.getItem('token')//!_.isEmpty(token)\n ? \n : \n )} />)\n}\n\nexport default PrivateRoute;","\nimport React, { useRef } from 'react';\n// import './App.css';\n// import Signature from './Signature';\nimport TextField from '@material-ui/core/TextField';\nimport { makeStyles, withStyles } from '@material-ui/core/styles';\nimport Button from '@material-ui/core/Button';\nimport GridContainer from \"../components/Grid/GridContainer\";\nimport GridItem from \"../components/Grid/GridItem\";\nimport FormGroup from '@material-ui/core/FormGroup';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport List from \"@material-ui/core/List\";\nimport ListItem from \"@material-ui/core/ListItem\";\nimport _, { omit, pick, round, slice } from 'lodash';\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\nimport { FormControl, FormLabel, FormHelperText, Paper, useForkRef, Select, InputLabel, IconButton } from '@material-ui/core';\nimport { MuiPickersUtilsProvider, KeyboardDatePicker, DatePicker, KeyboardDateTimePicker, KeyboardTimePicker } from \"@material-ui/pickers\";\nimport MomentUtils from \"@date-io/moment\";\nimport TodayIcon from \"@material-ui/icons/UpdateOutlined\";\nimport moment from \"moment\";\nimport Typography from '@material-ui/core/Typography';\n// import { PDFDownloadLink, Document, Page,PDFViewer } from '@react-pdf/renderer'\n// import axios from \"axios\";\nimport Qs from \"qs\";\n// import jsPDF from 'jspdf';\n// import html2canvas from \"html2canvas\";\nimport { actions } from \"../reducers/app\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport PF from \"../_Services/publicFunction\";\nimport LinearProgress from '@material-ui/core/LinearProgress';\nimport useSound from 'use-sound';\nimport clickdown from '../sounds/clickdown.wav';\nimport clickup from '../sounds/clickdown.wav';\nimport { useReactToPrint } from 'react-to-print';\nimport ReactToPrint from 'react-to-print';\nimport Questionaire67th from './67th';\nimport { props } from 'ramda';\nimport { injectIntl, intlShape, useIntl, FormattedMessage } from 'react-intl';\nimport { useSnackbar } from \"notistack\";\nimport CancelIcon from '@material-ui/icons/Cancel';\n\n// import { ComponentToPrint } from './ComponentToPrint';\n\n// var domToPdf = require('dom-to-pdf');\n// const domToImage = require('dom-to-image');\n\n// var instance = axios.create({\n// // timeout: 1000, //暫不設置timeout\n// async: true,\n// crossDomain: true,\n// headers: {\n// \"Content-Type\": \"application/x-www-form-urlencoded;charset=utf-8\",\n// \"X-Requested-With\": \"XMLHttpRequest\", //for MVC Request.IsAjaxRequest()\n// }\n// });\n\nconst ref = React.createRef();\nconst BorderLinearProgress = withStyles((theme) => ({\n root: {\n height: 8,\n // borderRadius: 5,\n },\n colorPrimary: {\n //backgroundColor: theme.palette.grey[theme.palette.type === 'light' ? 200 : 700],\n },\n bar: {\n // borderRadius: 5,\n backgroundColor: '#1a90ff',\n },\n}))(LinearProgress);\n\n\nconst Questionaire80th = React.forwardRef((props, ref) => {\n // const { tabList } = useSelector(state => ({\n // tabList: state.app.tabList,\n // }));\n const intl = useIntl();\n\n const [numerator, setNumerator] = React.useState(0);\n const [denominator, setDenominator] = React.useState(14);\n React.useEffect(() => {\n console.log(\"分子\", numerator);\n }, [numerator])\n React.useEffect(() => {\n console.log(\"分母\", denominator);\n }, [denominator])\n\n\n const dispatch = useDispatch();\n\n const { handleNext, setActiveStep } = props;\n\n const initialRender = React.useRef(true);\n const [imageURL, setImage] = React.useState(null); //提交=>簽名檔img\n // const [open, setOpen] = React.useState(false);\n const [playActive] = useSound(\n clickdown,\n { volume: 0.25 }\n );\n const [playOn] = useSound(\n clickup,\n { volume: 0.25 }\n );\n const [uploadFormat, setUpload] = React.useState({\n 0: { BarCodeStr: \"\", QuestionNo: 80, Category: \"作業經歷\", titleNo: 1, Title: \"\", SelectTitle: \"曾經從事_,起始日期:_年_月,截止日期:_年_月,共_年_月\", Answer: \"\", Other: \"\" },\n 1: { BarCodeStr: \"\", QuestionNo: 80, Category: \"作業經歷\", titleNo: 2, Title: \"\", SelectTitle: \"目前從事_,起始日期:_年_月,截止日期:_年_月,共_年_月,是否需輪班 □是(□兩班制 □三班制 □四班制 □其他:_) □否\", Answer: \"\", Other: \"\" },\n 2: { BarCodeStr: \"\", QuestionNo: 80, Category: \"作業經歷\", titleNo: 3, Title: \"\", SelectTitle: \"過去1個月,平均每週工時為:_小時(請以檢查日前1個月填寫);過去6個月,平均每週工時為:_小時(請以檢查日前6個月填寫)\", Answer: \"\", Other: \"\" },\n 3: { BarCodeStr: \"\", QuestionNo: 80, Category: \"作業檢查時期\", titleNo: 1, Title: \"檢查時期(原因)\", SelectTitle: \"□新進員工(受僱時) □定期檢查\", Answer: \"\", Other: \"\" },\n 4: { BarCodeStr: \"\", QuestionNo: 80, Category: \"既往病史\", titleNo: 1, Title: \"您是否曾患有下列慢性疾病:(請在適當項目前打勾)\", SelectTitle: \"□高血壓 □糖尿病 □心臟病 □癌症_ □白內障 □中風 □癲癇 □氣喘 □慢性氣管炎、肺氣腫 □肺結核 □腎臟病 □肝病 □貧血 □中耳炎 □聽力障礙 □甲狀腺疾病 □消化性潰瘍、胃炎 □逆流性食道炎 □骨折_ □手術開刀_ □其他慢性病_ □以上皆無\", Answer: \"\", Other: \"\" },\n 5: { BarCodeStr: \"\", QuestionNo: 80, Category: \"生活習慣\", titleNo: 1, Title: \"請問您過去一個月內是否有吸菸?\", SelectTitle: \"□從未吸菸 □偶爾吸(不是天天) □(幾乎)每天吸,平均每天吸_支,已吸菸_年 □已經戒菸,戒了_年_個月。\", Answer: \"\", Other: \"\" },\n 6: { BarCodeStr: \"\", QuestionNo: 80, Category: \"生活習慣\", titleNo: 2, Title: \"請問您最近六個月內是否有嚼食檳榔?\", SelectTitle: \"□從未嚼食檳榔 □偶爾嚼(不是天天) □(幾乎)每天嚼,平均每天嚼_顆,已嚼_年 □已經戒食,戒了_年_個月。\", Answer: \"\", Other: \"\" },\n 7: { BarCodeStr: \"\", QuestionNo: 80, Category: \"生活習慣\", titleNo: 3, Title: \"請問您過去一個月內是否有喝酒?\", SelectTitle: \"□從未喝酒 □偶爾喝(不是天天) □(幾乎)每天喝,平均每週喝_次,最常喝_酒,每次_瓶 □已經戒酒,戒了_年_個月。\", Answer: \"\", Other: \"\" },\n 8: { BarCodeStr: \"\", QuestionNo: 80, Category: \"生活習慣\", titleNo: 4, Title: \"請問您於工作日期間\", SelectTitle: \"平均每天睡眠時間為:_小時。\", Answer: \"\", Other: \"\" },\n 9: { BarCodeStr: \"\", QuestionNo: 80, Category: \"自覺症狀\", titleNo: 1, Title: \"您最近三個月是否常有下列症狀:(請在適當項目前打勾)\", SelectTitle: \"□咳嗽□咳痰□呼吸困難□胸痛□心悸□頭暈□頭痛 □耳鳴 □倦怠 □噁心 □腹痛 □便秘 □腹瀉 □血便 □上背痛 □下背痛 □手腳麻痛 □關節疼痛 □排尿不適 □多尿、頻尿 □手腳肌肉無力 □體重減輕3公斤以上 □其他症狀_ □以上皆無\", Answer: \"\", Other: \"\" },\n 10: { BarCodeStr: \"\", QuestionNo: 80, Category: \"填表說明\", titleNo: 1, Title: \"請受檢員工於勞工健檢前,填妥基本資料、作業經歷、檢查時期、既往病史、生活習慣及自覺症狀六大項,再交由醫護人員作確認,以有效篩檢出疾病;若事業單位已提供受檢員工基本資料及作業經歷電子檔給指定醫療機構,可不必請受檢員工重複填寫。\", SelectTitle: \"\", Answer: \"\", Other: \"\" },\n 11: { BarCodeStr: \"\", QuestionNo: 80, Category: \"填表說明\", titleNo: 2, Title: \"自覺症狀乙項,請受檢者依自身實際症狀勾選。\", SelectTitle: \"\", Answer: \"\", Other: \"\" },\n 12: { BarCodeStr: \"\", QuestionNo: 80, Category: \"基本資料\", titleNo: 1, Title: \"\", SelectTitle: \"事業單位名稱:_\", Answer: \"\", Other: \"\" },\n 13: { BarCodeStr: \"\", QuestionNo: 80, Category: \"基本資料\", titleNo: 2, Title: \"\", SelectTitle: \"受雇日期:_\", Answer: \"\", Other: \"\" },\n });\n // const dispatch = useDispatch();\n const { UserInfo } = useSelector(state => ({\n UserInfo: state.app.UserInfo,\n }));\n const Update80th = () => {\n //section 2 到3\n let y = moment(workExp.usedStart.value + '01日', 'YYYY年MM月DD日')\n let z = moment(workExp.usedEnd.value + '01日', 'YYYY年MM月DD日')\n let M = moment(workExp.rightNowStart.value + '01日', 'YYYY年MM月DD日')\n let N = moment(workExp.rightNowEnd.value + '01日', 'YYYY年MM月DD日')\n\n let HireD = moment(personal.hireDate.value, 'YYYY年MM月DD日')\n\n let fourth = Object.values(array4th).reduce((a, b) => a + (b.checked ? \"||\" + b.systemLabel : \"\"), \"\");\n let fourthTxt = Object.values(array4thTxtObj).reduce((a, b) => a + (\"||\" + b.text), \"\");\n //section 5\n let fiveth_1 = Object.values(array5_1).reduce((a, b) => a + (b.checked ? \"||\" + b.systemLabel : \"\"), \"\");\n let fiveth_1Txt = Object.values(array5thCheck).slice(1, 5).reduce((a, b) => a + \"||\" + b.value, \"\")\n let fiveth_2 = Object.values(array5_2).reduce((a, b) => a + (b.checked ? \"||\" + b.systemLabel : \"\"), \"\");\n let fiveth_2Txt = Object.values(array5thCheck).slice(6, 10).reduce((a, b) => a + \"||\" + b.value, \"\")\n let fiveth_3 = Object.values(array5_3).reduce((a, b) => a + (b.checked ? \"||\" + b.systemLabel : \"\"), \"\");\n let fiveth_3Txt = Object.values(array5thCheck).slice(11, 16).reduce((a, b) => a + \"||\" + b.value, \"\")\n //setction 6\n let Sixth = Object.values(array6th).reduce((a, b) => a + (b.checked ? \"||\" + b.systemLabel : \"\"), \"\");\n //輪班\n let Shift = Object.values(YesShiftChkObj).reduce((a, b) => a + (b.checked ? \"||\" + b.systemLabel : \"\"), \"\");\n // console.log(y.year);\n setUpload(prevState => ({\n ...prevState,\n 0: { ...prevState[0], BarCodeStr: UserInfo.BarCodeStr, Other: (workExp.usedJob.value === null ? '' : workExp.usedJob.value) + \"||\" + (workExp.usedStart.value === null ? '' : (y.year() - 1911)) + \"||\" + (workExp.usedStart.value === null ? '' : (y.month() + 1)) + \"||\" + (workExp.usedEnd.value === null ? '' : (z.year() - 1911)) + \"||\" + (workExp.usedEnd.value === null ? '' : (z.month() + 1)) + \"||\" + (workExp.usedPeriod_Y.value === null ? '' : workExp.usedPeriod_Y.value) + \"||\" + (workExp.usedPeriod_M.value === null ? '' : workExp.usedPeriod_M.value) },\n 1: {\n ...prevState[1], BarCodeStr: UserInfo.BarCodeStr, Other: workExp.rightNowJob.value + \"||\" + (M.year() - 1911) + \"||\" + (M.month() + 1) + \"||\" + (workExp.rightNowEnd.value === null ? '' : (N.year() - 1911)) + \"||\" + (workExp.rightNowEnd.value === null ? '' : (N.month() + 1)) + \"||\" + (workExp.rightNowPeriod_Y.value === null ? '' : workExp.rightNowPeriod_Y.value) + \"||\" + (workExp.rightNowPeriod_M.value === null ? '' : workExp.rightNowPeriod_M.value)\n + \"||\" + (YesShiftChkObj.ShiftOther.value || \"\")\n , Answer: !shiftChkObj.Yes ? (shiftChkObj.No ? \"否\" : \"\") : '是(' + \"||\" + Shift.substring(2, 999)\n },\n 2: { ...prevState[2], BarCodeStr: UserInfo.BarCodeStr, Other: workExp.workhours_1.value + \"||\" + workExp.workhours_2.value },\n 3: { ...prevState[3], BarCodeStr: UserInfo.BarCodeStr, Answer: checked3rd.checkA ? \"新進員工(受僱時) \" : \"定期檢查\" },\n 4: { ...prevState[4], BarCodeStr: UserInfo.BarCodeStr, Answer: fourth.substring(2, 999), Other: fourthTxt.substring(2, 999) },\n 5: { ...prevState[5], BarCodeStr: UserInfo.BarCodeStr, Answer: fiveth_1.substring(2, 999), Other: fiveth_1Txt.substring(2, 999) },\n 6: { ...prevState[6], BarCodeStr: UserInfo.BarCodeStr, Answer: fiveth_2.substring(2, 999), Other: fiveth_2Txt.substring(2, 999) },\n 7: { ...prevState[7], BarCodeStr: UserInfo.BarCodeStr, Answer: fiveth_3.substring(2, 999), Other: fiveth_3Txt.substring(2, 999) },\n 8: { ...prevState[8], BarCodeStr: UserInfo.BarCodeStr, Other: array5thCheck.sleep.value },\n 9: { ...prevState[9], BarCodeStr: UserInfo.BarCodeStr, Answer: Sixth.substring(2, 999), Other: array4thTxtObj.W6.text },\n 10: { ...prevState[10], BarCodeStr: UserInfo.BarCodeStr },\n 11: { ...prevState[11], BarCodeStr: UserInfo.BarCodeStr, },\n 12: { ...prevState[12], BarCodeStr: UserInfo.BarCodeStr, Other: personal.CustName.value },\n 13: { ...prevState[13], BarCodeStr: UserInfo.BarCodeStr, Other: (HireD.year() - 1911) + '/' + (HireD.month() + 1) + '/' + HireD.date() },\n }));\n // console.log(\"||\" + !shiftChkObj.Yes ? 'false' : 'true');\n // console.log(\"||\" + Shift.substring(2, 999));\n // console.log(\"||\" + (YesShiftChkObj.ShiftOther.value || \"\"));\n // console.log(\"||\" + !shiftChkObj.No ? 'false' : 'true');\n\n //列印\n // })\n // var doc = new jsPDF();\n // //return pdf; //Duke\n // //var doc = new jsPDF(pdf2);\n // //console.log(pdf);\n // //pdf.name = 'test.pdf'\n\n //var pdf = pdf2.output('blob');\n //pdf.name = 'test.pdf'\n //console.log(pdf);\n // var doc = pdf.output('blob')\n // let data = new FormData();\n // data.append('files', imageURL.getCanvas());\n // //console.log(data);\n // //var doc = btoa(pdf);\n // instance({\n // method: \"post\",\n // url: 'https://localhost:44311' + \"/Questionaire/Upload\",\n // data: data,\n // })\n // .then(function (response) {\n // console.log(response.data)\n // })\n }\n\n React.useEffect(() => {\n if (!initialRender.current) {\n\n PF.instance({\n method: \"post\",\n url: PF.url + \"/Questionaire/Insert\",\n data: Qs.stringify({ list: Object.values(uploadFormat) }),\n headers: { token: sessionStorage.token }\n })\n .then(function (response) {\n // console.log(response.data)\n const { TotalRecord, ErrorMessage } = response.data\n if (TotalRecord <= 0) {\n // alert(\"問卷提交出錯\\r\\n\" + ErrorMessage + \"請致電 04-2255-2555 #168 企業健檢\")\n enqueueSnackbar(intl.formatMessage({ id: \"update fail\" }), { variant: \"error\", style: { whiteSpace: 'pre-line' } });\n } else {\n setActiveStep((prevActiveStep) => prevActiveStep + 1);\n setImage(\"Image\");\n enqueueSnackbar(intl.formatMessage({ id: \"update success\" }), { variant: \"success\", style: { whiteSpace: 'pre-line' } });\n }\n })\n\n }\n }, [uploadFormat]); //避免循環\n\n // React.useEffect(() => {\n // if (initialRender.current) {\n // initialRender.current = false;\n // } else {\n\n // var element = document.getElementById('signature');\n // var options = {\n // filename: uploadFormat[0].BarCodeStr + '.pdf',\n // };\n // // var pdf = new jsPDF();\n\n // domToImage.toBlob(element).then((blob) => {\n // // var image = canvas.toDataURL(\"image/png\");\n // // pdf.addImage(image, 'JPEG', 0, 0);\n // // document.body.appendChild(image)\n // // var pdf2 = pdf.output('blob');\n // let data = new FormData();\n // data.append('files', blob, uploadFormat[0].BarCodeStr + \"-\" + new Date().toISOString().split('T')[0] + '.png')\n // PF.instance({\n // method: \"post\",\n // url: PF.url + \"/Questionaire/Upload\",\n // data: data,\n // headers: { token: sessionStorage.token }\n // })\n // .then(function (response) {\n // // alert(\"完成\")\n // //console.log(response.data)\n // })\n\n // })\n // }\n // }, [imageURL]); //避免循環\n\n\n // const handleChange = e => {\n // if (!_.isNil(imageURL)) {//已提交不得修改\n\n // }\n // }\n // const [recordObj, setObj] = React.useState({\n // name: \"\",\n // id: \"\"\n // });\n\n\n const [array4th, setArray4th] = React.useState({\n A4: { name: \"A4\", label: \"高血壓\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"高血壓 \" }\n , B4: { label: \"糖尿病\", name: \"B4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"糖尿病 \" }\n , C4: { label: \"心臟病\", name: \"C4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"心臟病 \" }\n , E4: { label: \"白內障\", name: \"E4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"白內障 \" }\n , F4: { label: \"中風\", name: \"F4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"中風 \" }\n , G4: { label: \"癲癇\", name: \"G4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"癲癇 \" }\n , H4: { label: \"氣喘\", name: \"H4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"氣喘 \" }\n , I4: { label: \"慢性氣管炎、肺氣腫\", name: \"I4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"慢性氣管炎、肺氣腫 \" }\n // , J4: { label: \"肺氣腫\", name: \"J4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"肺氣腫 \" }\n , K4: { label: \"肺結核\", name: \"K4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"肺結核 \" }\n , L4: { label: \"腎臟病\", name: \"L4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"腎臟病 \" }\n , M4: { label: \"肝病\", name: \"M4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"肝病 \" }\n , N4: { label: \"貧血\", name: \"N4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"貧血 \" }\n , O4: { label: \"中耳炎\", name: \"O4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"中耳炎 \" }\n , P4: { label: \"聽力障礙\", name: \"P4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"聽力障礙 \" }\n , Q4: { label: \"甲狀腺疾病\", name: \"Q4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"甲狀腺疾病 \" }\n , R4: { label: \"消化性潰瘍、胃炎\", name: \"R4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"消化性潰瘍、胃炎 \" }\n , S4: { label: \"逆流性食道炎\", name: \"S4\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"逆流性食道炎\" }\n , D4: { label: \"癌症\", name: \"D4\", type: \"chkBoxTxT\", checked: false, gridWid: 6, systemLabel: \"癌症\" }\n , T4: { label: \"骨折\", name: \"T4\", type: \"chkBoxTxT\", checked: false, gridWid: 6, systemLabel: \"骨折\" }\n , V4: { label: \"手術開刀\", name: \"V4\", type: \"chkBoxTxT\", checked: false, gridWid: 6, systemLabel: \"手術開刀\" }\n , U4: { label: \"其他慢性病\", name: \"U4\", type: \"chkBoxTxT\", checked: false, checked: false, gridWid: 6, systemLabel: \"其他慢性病\" }\n , allNone: { label: \"以上皆無\", name: \"allNone\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"以上皆無\" }\n });\n\n const [array4thTxtObj, set4thTxtObj] = React.useState({\n D4: { label: \"癌症\", name: \"D4\", type: \"chkBoxTxT\", checked: false, gridWid: 6, text: \"\" },\n // N4: { label: \"貧血\", name: \"N4\", type: \"chkBoxTxT\", checked: false, gridWid: 6, text: \"\" },\n T4: { label: \"骨折\", name: \"T4\", type: \"chkBoxTxT\", checked: false, gridWid: 6, text: \"\" },\n V4: { label: \"手術開刀\", name: \"V4\", type: \"chkBoxTxT\", checked: false, gridWid: 6, text: \"\" },\n U4: { label: \"其他慢性病\", name: \"U4\", type: \"chkBoxTxT\", checked: false, checked: false, gridWid: 6, text: \"\" },\n W6: { label: \"其他症狀\", name: \"W6\", type: \"chkBoxTxT\", checked: false, checked: false, gridWid: 6, text: \"\" },\n })\n\n const handleChange4th = e => {\n if (_.isNil(imageURL)) { //已提交不得修改\n const { name, checked } = e.target;\n // console.log(e.target);\n if (name === \"allNone\") {\n if (array4th.allNone.checked === false) {\n //其他: 不能勾選,除非allnone不勾\n //移除所以勾勾 \n _.forEach(array4th, function (value, key) {\n setArray4th(prevState => ({\n ...prevState,\n [key]: omit(value, [\"checked\", \"error\"]),\n }));\n });\n //移除所有文字\n _.forEach(array4thTxtObj, function (value, key) {\n if (key !== \"W6\") {\n set4thTxtObj(prevState => ({\n ...prevState,\n [key]: { ...value, text: \"\" }\n }));\n }\n\n });\n\n //自己勾上\n setArray4th(prevState => ({\n ...prevState,\n allNone: { ...prevState[name], checked: checked }\n }));\n } else {\n //自己取消,讓其他可以勾\n setArray4th(prevState => ({\n ...prevState,\n allNone: { ...prevState[name], checked: checked }\n }));\n }\n\n\n } else {\n //其他:不能勾選,除非allnone不勾\n if (array4th.allNone.checked === false) {\n setArray4th(prevState => ({\n ...prevState,\n [name]: {\n ...array4th[name], checked: checked,\n error: checked === false ? false : (prevState[name].error || false)\n }\n }))\n if (Object.keys(array4thTxtObj).includes(name)) {\n if (name !== \"W6\") {\n set4thTxtObj(prevState => ({\n ...prevState,\n [name]: {\n ...prevState[name],\n checked: checked, //也要更新 for資料庫導入格式\n text: checked === false ? \"\" : (prevState[name].text || \"\")\n }\n }))\n }\n\n }\n }\n }\n }\n }\n const handleChangeTxt4th = e => { //第四區塊文字,抽取出來,改動文字不去觸發calculate_4th\n if (_.isNil(imageURL)) { //已提交不得修改\n const { name, value } = e.target;\n set4thTxtObj({\n ...array4thTxtObj,\n [name]: { ...array4thTxtObj[name], text: value }\n })\n }\n }\n const [array4thValidator, set4thValidator] = React.useState({\n pastHistory: { name: \"pastHistory\", checked: false },\n conscious: { name: \"conscious\", checked: false }\n })\n const pastHistoryRef = useRef(null)\n const consciousRef = useRef(null)\n\n\n const calculate_4th = () => {\n const total = Object.values(array4th).reduce((a, b) => a + (b.checked ? 1 : 0), 0)\n\n set4thValidator(prevState => ({\n ...prevState,\n pastHistory: { ...prevState.pastHistory, checked: total >= 1 ? true : false }\n }));\n if (total >= 1 && !array4thValidator.pastHistory.checked) {\n setNumerator(prev => prev + 1)\n } else if (total === 0 && array4thValidator.pastHistory.checked) {\n setNumerator(prev => prev - 1)\n }\n }\n React.useEffect(() => {\n if (!initialRender.current) {\n calculate_4th();\n }\n }, [array4th]); //避免循環\n const w6Ref = useRef(null)\n const [array6th, setArray6th] = React.useState({\n A6: { label: \"咳嗽\", name: \"A6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"咳嗽\" }\n , B6: { label: \"咳痰\", name: \"B6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"咳痰\" }\n , C6: { label: \"呼吸困難\", name: \"C6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"呼吸困難\" }\n , E6: { label: \"胸痛\", name: \"E6\", type: \"chkBox\", gridWid: 3, systemLabel: \"胸痛\" }\n , F6: { label: \"心悸\", name: \"F6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"心悸\" }\n , G6: { label: \"頭暈\", name: \"G6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"頭暈\" }\n , H6: { label: \"頭痛\", name: \"H6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"頭痛 \" }\n , I6: { label: \"耳鳴\", name: \"I6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"耳鳴 \" }\n , J6: { label: \"倦怠\", name: \"J6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"倦怠 \" }\n , K6: { label: \"噁心\", name: \"K6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"噁心 \" }\n , L6: { label: \"腹痛\", name: \"L6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"腹痛 \" }\n , M6: { label: \"便秘\", name: \"M6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"便秘 \" }\n , O6: { label: \"腹瀉\", name: \"O6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"腹瀉 \" }\n , P6: { label: \"血便\", name: \"P6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"血便 \" }\n , Q6: { label: \"上背痛\", name: \"Q6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"上背痛 \" }\n , R6: { label: \"下背痛\", name: \"R6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"下背痛 \" }\n , S6: { label: \"手腳麻痛\", name: \"S6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"手腳麻痛 \" }\n , D6: { label: \"關節疼痛\", name: \"D6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"關節疼痛 \" }\n , N6: { label: \"排尿不適\", name: \"N6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"排尿不適 \" }\n , T6: { label: \"多尿、頻尿\", name: \"T6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"多尿、頻尿 \" }\n , V6: { label: \"手腳肌肉無力\", name: \"V6\", type: \"chkBox\", checked: false, gridWid: 3, systemLabel: \"手腳肌肉無力 \" }\n , U6: { label: \"體重減輕 3公斤以上\", name: \"U6\", type: \"chkBox\", checked: false, checked: false, gridWid: 6, systemLabel: \"體重減輕3公斤以上\" }\n , W6: { label: \"其他症狀\", name: \"W6\", type: \"chkBoxTxT\", checked: false, checked: false, gridWid: 6, systemLabel: \"其他症狀\" }\n , allNone6: { label: \"以上皆無\", name: \"allNone6\", type: \"chkBox\", checked: false, gridWid: 12, systemLabel: \"以上皆無\" }\n });\n\n\n React.useEffect(() => {\n if (!initialRender.current) {\n const total = Object.values(array6th).reduce((a, b) => a + (b.checked ? 1 : 0), 0)\n set4thValidator(prevState => ({\n ...prevState,\n conscious: { ...prevState.conscious, checked: total >= 1 ? true : false }\n }));\n\n if (total >= 1 && !array4thValidator.conscious.checked) {\n setNumerator(prev => prev + 1)\n } else if (total === 0 && array4thValidator.conscious.checked) {\n setNumerator(prev => prev - 1)\n }\n }\n\n }, [array6th]); //避免循環\n\n const handleChange6th = e => {\n if (_.isNil(imageURL)) { //已提交不得修改\n const { name, checked } = e.target;\n // console.log(name, checked);\n if (name === \"allNone6\") {\n if (checked === true) { //之前沒溝\n // console.log(\"allNon6自己溝上\");\n //其他: 不能勾選,除非allnone不勾\n //移除所以勾勾 \n _.forEach(array6th, function (value, key) {\n setArray6th(prevState => ({\n ...prevState,\n [key]: omit(value, [\"checked\", \"error\"]),\n }));\n });\n //移除所有文字\n _.forEach(array4thTxtObj, function (value, key) {\n set4thTxtObj(prevState => ({\n ...prevState,\n W6: { ...value, text: \"\" }\n }));\n });\n\n //自己勾上\n setArray6th(prevState => ({\n ...prevState,\n allNone6: { ...prevState[name], checked: checked }\n }));\n } else {\n // console.log(\"allNon6自己取消\");\n\n //自己取消,讓其他可以勾\n setArray6th(prevState => ({\n ...prevState,\n [name]: { ...prevState[name], checked: false }\n }));\n }\n\n\n } else {\n //其他:不能勾選,除非allnone不勾\n if (array6th.allNone6.checked === false) {\n setArray6th(prevState => ({\n ...prevState,\n [name]: {\n ...prevState[name], checked: checked,\n error: checked === false ? false : (prevState[name].error || false)\n }\n }))\n if (Object.keys(array4thTxtObj).includes(name)) {\n set4thTxtObj(prevState => ({\n ...prevState,\n [name]: {\n ...prevState[name],\n text: checked === false ? \"\" : (prevState[name].text || \"\")\n }\n }))\n }\n }\n }\n }\n }\n const checked3rdRef = useRef(null);\n const [checked3rd, setCheck3rd] = React.useState({\n checkA: null,\n checkB: null,\n error: false\n });\n\n const handleChangeThree = e => {\n if (_.isNil(imageURL)) { //已提交不得修改\n const { name, checked } = e.target;\n if (name === \"checkA\") {\n setCheck3rd(prevState => ({\n ...prevState,\n checkB: !checked,\n checkA: checked\n }))\n if (checked3rd.checkA === null) {\n setNumerator(prev => prev + 1);\n }\n if (checked) {\n //取消曾經\n // setWorkExp(prevState => ({\n // ...prevState,\n // usedJob: { ...prevState.usedJob, required: false },\n // usedStart: { ...prevState.usedStart, required: false },\n // usedEnd: { ...prevState.usedEnd, required: false }\n // }))\n // setDenominator(11);\n // //之前填過,若有數值,需-1\n // let ary = [\"usedJob\", \"usedStart\", \"usedEnd\"];\n // ary.map(item => {\n // if (workExp[item].value !== \"\" && workExp[item].value !== null) {\n // setNumerator(prev => prev - 1)\n // }\n // })\n\n } else {\n // setWorkExp(prevState => ({\n // ...prevState,\n // usedJob: { ...prevState.usedJob, required: true },\n // usedStart: { ...prevState.usedStart, required: true },\n // usedEnd: { ...prevState.usedEnd, required: true }\n // }))\n //之前填過,若有數值,需+1\n // setDenominator(15);\n // let ary = [\"usedJob\", \"usedStart\", \"usedEnd\"];\n // ary.map(item => {\n // if (workExp[item].value !== \"\" && workExp[item].value !== null && workExp[item].required !== true) {\n // setNumerator(prev => prev + 1)\n // }\n // })\n }\n } else { //checkB定期檢查\n setCheck3rd(prevState => ({\n ...prevState,\n checkB: checked,\n checkA: !checked\n }))\n if (checked3rd.checkB === null) {\n setNumerator(prev => prev + 1);\n }\n if (checked) {\n //取消曾經\n // setWorkExp(prevState => ({\n // ...prevState,\n // usedJob: { ...prevState.usedJob, required: true },\n // usedStart: { ...prevState.usedStart, required: true },\n // usedEnd: { ...prevState.usedEnd, required: true }\n // }))\n // setDenominator(15);\n // let ary = [\"usedJob\", \"usedStart\", \"usedEnd\"];\n // ary.map(item => {\n // if (workExp[item].value !== \"\" && workExp[item].value !== null && workExp[item].required !== true) {\n // setNumerator(prev => prev + 1)\n // }\n // })\n } else {\n // setWorkExp(prevState => ({\n // ...prevState,\n // usedJob: { ...prevState.usedJob, required: false },\n // usedStart: { ...prevState.usedStart, required: false },\n // usedEnd: { ...prevState.usedEnd, required: false }\n // }))\n // setDenominator(11);\n // let ary = [\"usedJob\", \"usedStart\", \"usedEnd\"];\n // ary.map(item => {\n // if (workExp[item].value !== \"\" && workExp[item].value !== null) {\n // setNumerator(prev => prev - 1)\n // }\n // })\n }\n\n }\n }\n }\n\n\n const [array5_1, setArray5_1] = React.useState({\n smokeA: { name: \"smokeA\", label: \"從未吸菸\", type: \"chkBox\", checked: false, gridWid: 2, systemLabel: \"從未吸菸 \" }\n , smokeB: { name: \"smokeB\", label: \"偶爾吸(不是天天)\", type: \"chkBox\", checked: false, gridWid: 2, systemLabel: \"偶爾吸(不是天天) \" }\n , smokeC: {\n systemLabel: \"(幾乎)每天吸,平均每天吸_支,已吸菸_年\",\n label: \"(幾乎)每天吸\", name: \"smokeC\", type: \"chkBoxTxT\", checked: false, gridWid: 8\n , type_1: \"number\", name_1: \"smokeC_1\", label_1: \"平均每天吸\", text_1: \"\", suffix1: \"支\", helperText_1: \"\", min_1: 1, ref: useRef(null)\n , type_2: \"number\", name_2: \"smokeC_2\", label_2: \"已吸菸\", text_2: \"\", suffix2: \"年\", helperText_2: \"\", max_2: 100, ref: useRef(null)\n }\n , smokeD: {\n systemLabel: \"已經戒菸,戒了_年_個月。\",\n label: \"已經戒菸,戒了\", name: \"smokeD\", type: \"chkBoxTxT\", checked: false, gridWid: 8\n , name_1: \"smokeD_1\", type_1: \"number\", label_1: \" \", text_1: \"\", suffix1: \"年\", helperText_1: \"\", max_1: 100, ref: useRef(null)\n , name_2: \"smokeD_2\", type_2: \"number\", label_2: \" \", text_2: \"\", suffix2: \"個月\", helperText_2: \"\", max_2: 12, ref: useRef(null) //label需有空格\n }\n });\n React.useEffect(() => {\n if (!initialRender.current) {\n const total = Object.values(array5_1).reduce((a, b) => a + (b.checked ? 1 : 0), 0)\n setArray5thCheck(prevState => ({\n ...prevState,\n smoke: { ...prevState.smoke, checked: total >= 1 ? true : false } //只更新這個\n }));\n if (total >= 1 && !array5thCheck.smoke.checked) {\n setNumerator(prev => prev + 1)\n } else if (total === 0) {\n setNumerator(prev => prev - 1)\n }\n }\n }, [array5_1]); //避免循環\n\n const handleChangeChk5_1 = e => {\n if (_.isNil(imageURL)) { //已提交不得修改\n const { name, checked } = e.target;\n //先移除所有checked\n const keys = Object.keys(array5_1);\n keys.map(item => {\n // console.log(item)\n delete array5_1[item].checked\n })\n //set\n setArray5_1({\n ...array5_1,\n [name]: { ...array5_1[name], checked: checked }\n });\n setArray5thCheck(prevState => ({\n ...prevState,\n smokeC_1: { ...prevState.smokeC_1, value: \"\", error: false },\n smokeC_2: { ...prevState.smokeC_2, value: \"\", error: false },\n smokeD_1: { ...prevState.smokeD_1, value: \"\", error: false },\n smokeD_2: { ...prevState.smokeD_2, value: \"\", error: false },\n }));\n\n }\n }\n // const smokeRef = useRef(null)\n // const betelRef = useRef(null)\n // const drunkRef = useRef(null)\n const [array5thCheck, setArray5thCheck] = React.useState({\n smoke: { name: \"smoke\", checked: false },\n smokeC_1: { name: \"smokeC_1\", value: \"\" },\n smokeC_2: { name: \"smokeC_2\", value: \"\" },\n smokeD_1: { name: \"smokeD_1\", value: \"\" },\n smokeD_2: { name: \"smokeD_2\", value: \"\" },\n betel: { name: \"betel\", checked: false },\n betelC_1: { name: \"betelC_1\", value: \"\" },\n betelC_2: { name: \"betelC_2\", value: \"\" },\n betelD_1: { name: \"betelD_1\", value: \"\" },\n betelD_2: { name: \"betelD_2\", value: \"\" },\n drunk: { name: \"drunk\", checked: false },\n drunkC_1: { name: \"drunkC_1\", value: \"\" },\n drunkC_2: { name: \"drunkC_2\", value: \"\" },\n drunkC_3: { name: \"drunkC_3\", value: \"\" },\n drunkD_1: { name: \"drunkD_1\", value: \"\" },\n drunkD_2: { name: \"drunkD_2\", value: \"\" },\n sleep: { name: \"sleep\", checked: false, value: \"\" },\n\n });\n const sleepRef = { smoke: useRef(), sleep: useRef(), drunk: useRef(), betel: useRef() }\n const handleChangeTxt5_4 = e => { //目前只5-4使用\n if (_.isNil(imageURL)) { //已提交不得修改\n const { name, value } = e.target;\n setArray5thCheck(prevState => ({\n ...prevState,\n [name]: { ...prevState[name], value: value }\n }));\n if (array5thCheck.sleep.value === \"\" && value !== \"\") {\n setNumerator(prev => prev + 1)\n } else if (value === \"\") {\n setNumerator(prev => prev - 1)\n }\n // console.log(array5thCheck)\n }\n }\n\n const handleChangeTxt5_1 = e => {\n if (_.isNil(imageURL)) { //已提交不得修改\n const { name, value } = e.target;\n setArray5thCheck(prevState => ({\n ...prevState,\n [name]: { ...prevState[name], value: value }\n }));\n }\n }\n\n\n\n const [array5_2, setArray5_2] = React.useState({\n betelA: { name: \"betelA\", label: \"從未嚼食檳榔\", type: \"chkBox\", checked: false, gridWid: 2, systemLabel: \"從未嚼食檳榔 \" }\n , betelB: { name: \"betelB\", label: \"偶爾嚼(不是天天)\", type: \"chkBox\", checked: false, gridWid: 2, systemLabel: \"偶爾嚼(不是天天) \" }\n , betelC: {\n systemLabel: \"(幾乎)每天嚼,平均每天嚼_顆,已嚼_年\",\n label: \"(幾乎)每天嚼\", name: \"betelC\", type: \"chkBoxTxT\", checked: false, gridWid: 8\n , name_1: \"betelC_1\", type_1: \"number\", label_1: \"平均每天嚼\", text_1: \"\", suffix1: \"顆\", helperText_1: \"\", max_1: 100\n , name_2: \"betelC_2\", type_2: \"number\", label_2: \"已嚼 \", text_2: \"\", suffix2: \"年\", helperText_2: \"\", max_2: 100\n }\n , betelD: {\n systemLabel: \"已經戒食,戒了_年_個月。\",\n label: \"已經戒食,戒了\", name: \"betelD\", type: \"chkBoxTxT\", checked: false, gridWid: 12\n , name_1: \"betelD_1\", type_1: \"number\", label_1: \" \", text_1: \"\", suffix1: \"年\", helperText_1: \"\", max_1: 100\n , name_2: \"betelD_2\", type_2: \"number\", label_2: \" \", text_2: \"\", suffix2: \"個月\", helperText_2: \"\", max_2: 12 //label需有空格\n }\n });\n\n React.useEffect(() => {\n if (!initialRender.current) {\n const total = Object.values(array5_2).reduce((a, b) => a + (b.checked ? 1 : 0), 0)\n setArray5thCheck(prevState => ({\n ...prevState,\n betel: { ...prevState.betel, checked: total >= 1 ? true : false } //只更新這個\n }))\n if (total >= 1 && !array5thCheck.betel.checked) {\n setNumerator(prev => prev + 1)\n } else if (total === 0) {\n setNumerator(prev => prev - 1)\n }\n }\n }, [array5_2]); //避免循環\n\n const handleChangeChk5_2 = e => {\n if (_.isNil(imageURL)) { //已提交不得修改\n const { name, checked } = e.target;\n //先移除所有checked\n const keys = Object.keys(array5_2);\n keys.map(item => {\n delete array5_2[item].checked\n }\n )\n //set\n setArray5_2({\n ...array5_2,\n [name]: {\n ...array5_2[name], checked: checked\n }\n })\n setArray5thCheck(prevState => ({\n ...prevState,\n betelC_1: { ...prevState.betelC_1, value: \"\", error: false },\n betelC_2: { ...prevState.betelC_2, value: \"\", error: false },\n betelD_1: { ...prevState.betelD_1, value: \"\", error: false },\n betelD_2: { ...prevState.betelD_2, value: \"\", error: false },\n }));\n }\n }\n\n // const handleChangeTxt5_2 = e => {\n // if (_.isNil(imageURL)) { //已提交不得修改\n // const { name, value } = e.target;\n // setArray5_2({\n // ...array5_2,\n // [name]: { ...array5_2[name], text_1: value }\n // });\n // }\n // }\n\n\n\n const [array5_3, setArray5_3] = React.useState({\n drunkA: { name: \"drunkA\", label: \"從未喝酒\", type: \"chkBox\", checked: false, gridWid: 2, systemLabel: \"從未喝酒 \" }\n , drunkB: { name: \"drunkB\", label: \"偶爾喝(不是天天)\", type: \"chkBox\", checked: false, gridWid: 2, systemLabel: \"偶爾喝(不是天天) \" }\n , drunkC: {\n systemLabel: \"(幾乎)每天喝,平均每週喝_次,最常喝_酒,每次_瓶\",\n label: \"(幾乎)每天喝\", name: \"drunkC\", type: \"chkBoxTxT\", checked: false, gridWid: 8\n , name_1: \"drunkC_1\", type_1: \"number\", label_1: \"平均每週喝\", suffix1: \"次\", max_1: 28\n , name_2: \"drunkC_2\", type_2: \"text\", label_2: \"最常喝 \", suffix2: \"酒\"\n , name_3: \"drunkC_3\", type_3: \"number\", label_3: \"每次 \", suffix3: \"瓶\", max_3: 100\n }\n , drunkD: {\n systemLabel: \"已經戒酒,戒了_年_個月。\",\n label: \"已經戒酒,戒了\", name: \"drunkD\", type: \"chkBoxTxT\", checked: false, gridWid: 12\n , name_1: \"drunkD_1\", type_1: \"number\", label_1: \" \", suffix1: \"年\", max_1: 100\n , name_2: \"drunkD_2\", type_2: \"number\", label_2: \" \", suffix2: \"個月\", max_2: 12//label需有空格\n }\n });\n React.useEffect(() => {\n if (!initialRender.current) {\n const total = Object.values(array5_3).reduce((a, b) => a + (b.checked ? 1 : 0), 0)\n setArray5thCheck(prevState => ({\n ...prevState,\n drunk: { ...prevState.drunk, checked: total >= 1 ? true : false } //只更新這個\n }));\n //ProgressBar\n if (total >= 1 && !array5thCheck.drunk.checked) {\n setNumerator(prev => prev + 1)\n } else if (total === 0) {\n setNumerator(prev => prev - 1)\n }\n }\n }, [array5_3]); //避免循環\n\n const handleChangeChk5_3 = e => {\n if (_.isNil(imageURL)) { //已提交不得修改\n const { name, checked } = e.target;\n //先移除所有checked\n const keys = Object.keys(array5_3);\n keys.map(item => {\n // console.log(item)\n delete array5_3[item].checked\n })\n //set\n setArray5_3(prevState => ({\n ...prevState,\n [name]: { ...prevState[name], checked: checked }\n }))\n setArray5thCheck(prevState => ({\n ...prevState,\n drunkC_1: { ...prevState.drunkC_1, value: \"\", error: false },\n drunkC_2: { ...prevState.drunkC_2, value: \"\", error: false },\n drunkC_3: { ...prevState.drunkC_3, value: \"\", error: false },\n drunkD_1: { ...prevState.drunkD_1, value: \"\", error: false },\n drunkD_2: { ...prevState.drunkD_2, value: \"\", error: false },\n }));\n\n }\n }\n\n const [gender, setGender] = React.useState({\n male: false,\n female: false,\n helperText: \"請至少選取一個。\"\n })\n const handleChangeChkGender = e => {\n if (_.isNil(imageURL)) { //已提交不得修改\n const { name, checked } = e.target;\n if (name === \"male\") {\n setGender({\n ...gender,\n female: !checked,\n male: checked\n })\n } else {\n setGender({\n ...gender,\n female: checked,\n male: !checked\n })\n }\n }\n }\n const { enqueueSnackbar } = useSnackbar();\n\n const formRef = React.createRef();\n const handleSubmit = (e) => {\n e.preventDefault();\n if (validator()) {\n //清除\n dispatch(actions.TAB_EDIT({ editing: true, key: 80 }))\n Update80th();\n //更新部分資料至CheckProjectDetail\n UpdateProjectDetail();\n\n // handleNext(\"\",80);\n }\n\n }\n const UpdateProjectDetail = prop => {\n //section 5\n //抽菸\n let fiveth_1 = Object.values(array5_1).reduce((a, b) => a + (b.checked ? \"||\" + b.systemLabel : \"\"), \"\");\n let Str_fiveth_1 = fiveth_1.substring(2, 999);\n let _count_5_1 = (fiveth_1.substring(2, 999).match(/_/g) || []).length\n let fiveth_1Txt = Object.values(array5thCheck).slice(1, 5).reduce((a, b) => a + (b.value !== \"\" ? \"||\" + b.value : \"\"), \"\");\n let fiveth_1TxtArray = fiveth_1Txt.substring(2, 999).split(\"||\");\n for (let step = 0; step < _count_5_1; step++) {\n let t = 0;\n Str_fiveth_1 = Str_fiveth_1.replace(/_/g, match => ++t === 1 ? fiveth_1TxtArray[step] : match)\n }\n // console.log(Str_fiveth_1);\n\n //檳榔\n let fiveth_2 = Object.values(array5_2).reduce((a, b) => a + (b.checked ? \"||\" + b.systemLabel : \"\"), \"\");\n let Str_fiveth_2 = fiveth_2.substring(2, 999);\n let _count_5_2 = (fiveth_2.substring(2, 999).match(/_/g) || []).length\n let fiveth_2Txt = Object.values(array5thCheck).slice(6, 10).reduce((a, b) => a + (b.value !== \"\" ? \"||\" + b.value : \"\"), \"\");\n let fiveth_2TxtArray = fiveth_2Txt.substring(2, 999).split(\"||\");\n for (let step = 0; step < _count_5_2; step++) {\n let t = 0;\n Str_fiveth_2 = Str_fiveth_2.replace(/_/g, match => ++t === 1 ? fiveth_2TxtArray[step] : match)\n }\n // console.log(Str_fiveth_2);\n\n //喝酒\n let fiveth_3 = Object.values(array5_3).reduce((a, b) => a + (b.checked ? \"||\" + b.systemLabel : \"\"), \"\");\n let Str_fiveth_3 = fiveth_3.substring(2, 999);\n let _count_5_3 = (fiveth_3.substring(2, 999).match(/_/g) || []).length\n let fiveth_3Txt = Object.values(array5thCheck).slice(11, 16).reduce((a, b) => a + (b.value !== \"\" ? \"||\" + b.value : \"\"), \"\");\n let fiveth_3TxtArray = fiveth_3Txt.substring(2, 999).split(\"||\");\n for (let step = 0; step < _count_5_3; step++) {\n let t = 0;\n Str_fiveth_3 = Str_fiveth_3.replace(/_/g, match => ++t === 1 ? fiveth_3TxtArray[step] : match)\n }\n //console.log(Str_fiveth_3);\n //睡眠2043\n let Str_fiveth_4 = \"平均每天睡眠時間為:_小時。\".replace(/_/g, array5thCheck.sleep.value)\n // console.log(Str_fiveth_4);\n\n //自覺症狀2008\n let Sixth = Object.values(array6th).reduce((a, b) => a + (b.checked ? \"、\" + b.systemLabel : \"\"), \"\");\n let Str_6th = Sixth.substring(1, 999).replace(/以上皆無/g, \"無\");\n Str_6th = Str_6th.replace(/其他症狀/g, \"其他症狀:\" + array4thTxtObj.W6.text);\n // console.log(Str_6th.replace(/ /g, \"\"));\n\n let UpdateList = [\n { BarCodeStr: UserInfo.BarCodeStr, ItemNo: \"2008\", Value: Str_6th.replace(/ /g, \"\") },\n { BarCodeStr: UserInfo.BarCodeStr, ItemNo: \"2043\", Value: Str_fiveth_4 },\n { BarCodeStr: UserInfo.BarCodeStr, ItemNo: \"2031\", Value: Str_fiveth_1.replace(/ /g, \"\") + '、' + Str_fiveth_2.replace(/ /g, \"\") + '、' + Str_fiveth_3.replace(/ /g, \"\") + '。' }]\n\n //更新醫生問診\n PF.instance({\n method: \"post\",\n url: PF.url + \"/Questionaire/Update\",\n data: Qs.stringify({ list: UpdateList }),\n headers: { token: sessionStorage.token }\n })\n .then(function (response) {\n // console.log(response.data)\n const { Total, rows, error } = response.data;\n console.log(Total, rows)\n // if (TotalRecord <= 0) {\n // // alert(\"問卷提交出錯\\r\\n\" + ErrorMessage + \"請致電 04-2255-2555 #168 企業健檢\")\n // enqueueSnackbar(intl.formatMessage({ id: \"update fail\" }), { variant: \"error\", style: { whiteSpace: 'pre-line' } });\n // } else {\n // setActiveStep((prevActiveStep) => prevActiveStep + 1);\n // setImage(\"Image\");\n // enqueueSnackbar(intl.formatMessage({ id: \"update success\" }), { variant: \"success\", style: { whiteSpace: 'pre-line' } });\n // }\n })\n\n }\n\n const validator = () => {\n const form = formRef.current; //參數1\n if (form.checkValidity()) {\n console.log(\"全部通過\")\n //若驗證通過,刪除錯誤提示\n for (let i = 0; i < form.elements.length; i++) {\n const element = form.elements[i];\n if (element.name === \"gender\") {\n setGender(omit(gender, [\"error\"]));\n }\n if (Object.keys(personal).includes(element.name)) {\n setPersonal(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\"])\n }));\n }\n if (element.name === \"YN\") {\n setShiftChk(prev => ({\n ...prev,\n [element.name]: omit(prev.YN, [\"error\"])\n }))\n }\n if (element.name === \"YesShiftChkObjAll\") {\n setYesShiftChkObjAll(prev => (\n { ...prev, error: false }\n ))\n }\n if (element.name === \"ShiftOther\") {\n setYesShiftChkObj(prev => ({\n ...prev,\n [element.name]: omit(prev[element.name], [\"error\"])\n }))\n }\n if (Object.keys(workExp).includes(element.name)) {\n setWorkExp(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\"])\n }))\n }\n if (element.name === \"checked3rd\") {\n setCheck3rd(prevState => (omit(prevState, [\"error\"])))\n }\n if (element.name === \"pastHistory\") {\n set4thValidator(prevState => ({\n ...prevState,\n pastHistory: (omit(prevState.pastHistory, [\"error\"]))\n }))\n }\n if (Object.keys(array4th).includes(element.name)) {\n setArray4th(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\"])\n }))\n }\n if (Object.keys(array5thCheck).includes(element.name)) {\n setArray5thCheck(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\"])\n }));\n }\n if (element.name === \"conscious\") {\n set4thValidator(prevState => ({\n ...prevState,\n conscious: (omit(prevState.conscious, [\"error\"]))\n }))\n }\n if (Object.keys(array6th).includes(element.name)) {\n setArray6th(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\"])\n }))\n }\n }\n return true;\n } else {\n // const form = formRef.current;\n // console.log(\"還沒通過\")\n // alert(\"尚有問題未完成\");\n alert(intl.formatMessage({ id: \"尚有問題未完成\" }));\n for (let i = 0; i < form.elements.length; i++) {\n const element = form.elements[i];\n if (element.tagName !== 'button' && element.willValidate && !element.validity.valid) { //提交按鈕不用驗證\n // console.log(element.validationMessage, element.name);\n // console.log(element.value)\n // console.log(element.value, element.validationMessage, element.name, element.tagName)\n if (element.name === \"gender\") {\n setGender({ ...gender, error: true, helperText: element.validationMessage })\n }\n if (element.name === \"YN\") {\n setShiftChk(prev => ({\n ...prev,\n [element.name]: { ...prev[element.name], error: true, helperText: element.validationMessage }\n }))\n }\n if (element.name === \"YesShiftChkObjAll\") {\n setYesShiftChkObjAll(prev => (\n { ...prev[element.name], error: true, helperText: element.validationMessage }\n ))\n }\n if (element.name === \"ShiftOther\") {\n setYesShiftChkObj(prev => ({\n ...prev,\n [element.name]: { ...prev[element.name], error: true, helperText: element.validationMessage }\n }))\n }\n\n if (Object.keys(personal).includes(element.name)) {\n // console.log(element.name);\n setPersonal(prevState => ({\n ...prevState,\n [element.name]: { ...prevState[element.name], error: true, helperText: element.validationMessage }\n }))\n }\n if (Object.keys(workExp).includes(element.name)) {\n setWorkExp(prevState => ({\n ...prevState,\n [element.name]: { ...prevState[element.name], error: true, helperText: element.validationMessage }\n }))\n workRef.current.scrollIntoView({ behavior: 'smooth' });\n }\n if (element.name === \"checked3rd\") {\n setCheck3rd(prevState => ({\n ...prevState,\n error: true, helperText: element.validationMessage\n }));\n checked3rdRef.current.scrollIntoView({ behavior: 'smooth' });\n }\n if (element.name === \"pastHistory\") {\n set4thValidator(prevState => ({\n ...prevState,\n [element.name]: { ...prevState[element.name], error: true, helperText: element.validationMessage }\n }));\n pastHistoryRef.current.scrollIntoView();\n }\n if (Object.keys(array4th).includes(element.name)) {\n setArray4th(prevState => ({\n ...prevState,\n [element.name]: { ...prevState[element.name], error: true, helperText: element.validationMessage }\n }))\n }\n if (Object.keys(array5thCheck).includes(element.name)) {\n setArray5thCheck(prevState => ({\n ...prevState,\n [element.name]: { ...prevState[element.name], error: true, helperText: element.validationMessage }\n }));\n if ([\"smoke\", \"sleep\", \"drunk\", \"betel\"].includes(element.name)) {\n sleepRef[element.name].current.scrollIntoView({ behavior: 'smooth' })\n }\n // console.log(element.name);\n }\n if (element.name === \"conscious\") {\n set4thValidator(prevState => ({\n ...prevState,\n [element.name]: { ...prevState[element.name], error: true, helperText: element.validationMessage }\n }));\n consciousRef.current.scrollIntoView({ behavior: 'smooth' })\n }\n if (Object.keys(array6th).includes(element.name)) {\n setArray6th(prevState => ({\n ...prevState,\n [element.name]: { ...prevState[element.name], error: true, helperText: element.validationMessage }\n }))\n console.log(element.name)\n if (element.name === \"W6\") {\n w6Ref.current.scrollIntoView()\n }\n }\n\n } else {//驗證通過,自訂訊息\n //有在settingObj的\n // console.log(\"Pass\", element.value, element.validationMessage, element.name, element.tagName)\n if (element.name === \"gender\") {\n setGender(omit(gender, [\"error\"]));\n }\n if (element.name === \"YN\") {\n setShiftChk(prev => ({\n ...prev,\n [element.name]: omit(prev.YN, [\"error\"])\n }))\n }\n\n if (element.name === \"YesShiftChkObjAll\") {\n setYesShiftChkObjAll(prev => (\n { ...prev, error: false }\n ))\n }\n if (element.name === \"ShiftOther\") {\n setYesShiftChkObj(prev => ({\n ...prev,\n [element.name]: omit(prev[element.name], [\"error\"])\n }))\n }\n if (Object.keys(personal).includes(element.name)) {\n setPersonal(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\"])\n }));\n }\n if (Object.keys(workExp).includes(element.name)) {\n setWorkExp(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\"])\n }))\n }\n if (element.name === \"checked3rd\") {\n setCheck3rd(prevState => (omit(prevState, [\"error\"])))\n }\n if (element.name === \"pastHistory\") {\n set4thValidator(prevState => ({\n ...prevState,\n pastHistory: (omit(prevState.pastHistory, [\"error\"]))\n }))\n }\n if (Object.keys(array4th).includes(element.name)) {\n setArray4th(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\"])\n }))\n }\n if (Object.keys(array5thCheck).includes(element.name)) {\n setArray5thCheck(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\"])\n }));\n }\n if (element.name === \"conscious\") {\n set4thValidator(prevState => ({\n ...prevState,\n conscious: (omit(prevState.conscious, [\"error\"]))\n }))\n\n }\n if (Object.keys(array6th).includes(element.name)) {\n setArray6th(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\"])\n }))\n }\n\n }\n }\n return false;\n }\n }\n const [personal, setPersonal] = React.useState({\n CustName: { name: \"CustName\", value: UserInfo.CustName },\n // personalID: { name: \"personalID\", value: \"\" },\n // birthDate: { name: \"birthDate\", label: \"4.出生日期\", required: true, value: null, maxDate: new Date() },\n hireDate: { name: \"hireDate\", label: \"2.受僱日期\", required: true, value: null },\n // examinationDate: { name: \"examinationDate\", label: \"6. 體檢日期\", required: true, value: null, minDate: new Date() }\n })\n const handleDateChange = (name, e, v) => {\n if (_.isNil(imageURL)) { //已提交不得修改\n setPersonal(prevState => ({\n ...prevState,\n [name]: {\n ...prevState[name],\n value: v\n }\n }));\n if ((personal.hireDate.value === \"\" || personal.hireDate.value === null) && (v === \"\" || v === null)) {\n return\n }\n if ((personal.hireDate.value === \"\" || personal.hireDate.value === null) && (v !== null || v !== \"\") && personal.hireDate.required === true) {\n setNumerator(prev => prev + 1)\n } else if ((v === \"\" || v === null) && personal.hireDate.required === true) {\n setNumerator(prev => prev - 1)\n }\n }\n }\n const handleChangeTxt1st = e => {\n if (_.isNil(imageURL)) { //已提交不得修改\n const { name, value } = e.target;\n setPersonal(prevState => ({\n ...prevState,\n [name]: { ...prevState[name], value: value }\n }))\n if (_.isEmpty(personal.CustName.value) && value !== \"\") {\n setNumerator(prev => prev + 1)\n } else if (!_.isEmpty(personal.CustName.value) && value === \"\") { //清空\n setNumerator(prev => prev - 1)\n }\n }\n }\n\n const [workExp, setWorkExp] = React.useState({\n usedJob: { name: \"usedJob\", label: \"1.曾經從事\", type: \"text\", value: null, required: false },\n usedStart: { name: \"usedStart\", label: \" \", type: \"date\", value: null, required: false, disableFuture: true },\n usedEnd: { name: \"usedEnd\", label: \" \", type: \"date\", value: null, required: false, disableFuture: true },\n usedPeriod_Y: { name: \"usedPeriod_Y\", label: \" \", value: null, min: 0, type: \"number\", endAdmt: \"年\", startAdmt: \"共\" },\n usedPeriod_M: { name: \"usedPeriod_M\", label: \" \", value: null, min: 0, max: 12, type: \"number\", endAdmt: \"個月\", startAdmt: \" \" },\n rightNowJob: { name: \"rightNowJob\", label: \"2.目前從事\", type: \"text\", value: null, required: true },\n rightNowStart: { name: \"rightNowStart\", label: \" \", type: \"date\", value: null, required: true, disableFuture: true },\n rightNowEnd: { name: \"rightNowEnd\", label: \" \", type: \"date\", value: null, disableFuture: true, disabled: true },\n rightNowPeriod_Y: { name: \"rightNowPeriod_Y\", label: \" \", value: null, min: 0, type: \"number\", endAdmt: \"年\", startAdmt: \"共\" },\n rightNowPeriod_M: { name: \"rightNowPeriod_M\", label: \" \", value: null, min: 0, max: 12, type: \"number\", endAdmt: \"個月\" },\n workhours_1: { name: \"workhours_1\", type: \"number\", value: null, min: 0, step: 0.5, max: 168, endAdmt: \"小時\", required: true },\n workhours_2: { name: \"workhours_2\", type: \"number\", value: null, min: 0, step: 0.5, max: 168, endAdmt: \"小時\", required: true },\n })\n const workRef = useRef(null);\n const handleChangeTxt2nd = e => {\n if (_.isNil(imageURL)) { //已提交不得修改\n // console.log(\"?!\")\n const { name, value } = e.target;\n if (name === \"usedJob\" || name === \"rightNowJob\" || name === \"workhours_1\" || name === \"workhours_2\") {\n setWorkExp(prevState => ({\n ...prevState,\n [name]: { ...prevState[name], value: value }\n }))\n // console.log(workExp[name].value)\n\n if ((workExp[name].value === \"\" || workExp[name].value === null) && value !== \"\" && workExp[name].required === true) {\n setNumerator(prev => prev + 1)\n } else if (value === \"\" && workExp[name].required === true) {\n setNumerator(prev => prev - 1)\n }\n }\n }\n\n }\n const handleDateChange2nd = (name, e, v) => {\n if (_.isNil(imageURL)) { //已提交不得修改\n // console.log(name, v)\n // console.log(workExp[name].value)\n setWorkExp(prevState => ({\n ...prevState,\n [name]: { ...prevState[name], value: v }\n }));\n if ((workExp[name].value === \"\" || workExp[name].value === null) && (v === \"\" || v === null)) {\n return\n }\n if ((workExp[name].value === \"\" || workExp[name].value === null) && (v !== null || v !== \"\") && workExp[name].required === true) {\n setNumerator(prev => prev + 1)\n } else if ((v === \"\" || v === null) && workExp[name].required === true) {\n setNumerator(prev => prev - 1)\n }\n }\n }\n const calculateWorkRange = () => {\n // console.log(workExp.usedStart.value)\n // console.log(workExp.usedEnd.value)\n if (!_.isNil(workExp.usedStart.value) && !_.isNil(workExp.usedEnd.value)) {\n let start = moment(workExp.usedStart.value + '01日', 'YYYY年MM月DD日')\n let end = moment(workExp.usedEnd.value + '01日', 'YYYY年MM月DD日')\n let months = moment.duration(end.diff(start)).asMonths();//總月份數\n let RoundMonths = Math.round(months)\n // console.log(RoundMonths)\n let y = Math.floor(RoundMonths / 12)\n let m = Math.round(RoundMonths % 12)\n // console.log(y, m)\n setWorkExp(prevState => ({\n ...prevState,\n usedPeriod_Y: { ...prevState.usedPeriod_Y, value: y },\n usedPeriod_M: { ...prevState.usedPeriod_M, value: m }\n }))\n }\n if (!_.isNil(workExp.rightNowStart.value) && !_.isNil(workExp.rightNowEnd.value)) {\n let start = moment(workExp.rightNowStart.value + '01日', 'YYYY年MM月DD日')\n let end = moment(workExp.rightNowEnd.value + '01日', 'YYYY年MM月DD日')\n let months = moment.duration(end.diff(start)).asMonths();//總月份數\n let RoundMonths = Math.round(months)\n // console.log(RoundMonths)\n\n let y = Math.floor(RoundMonths / 12)\n let m = Math.round(RoundMonths % 12)\n // console.log(y, m)\n setWorkExp(prevState => ({\n ...prevState,\n rightNowPeriod_Y: { ...prevState.rightNowPeriod_Y, value: y },\n rightNowPeriod_M: { ...prevState.rightNowPeriod_M, value: m }\n }))\n }\n }\n\n React.useEffect(() => {\n calculateWorkRange();\n }, [workExp.usedStart, workExp.usedEnd, workExp.rightNowEnd, workExp.rightNowStart]); //避免循環\n const useStyles = makeStyles({\n submitButton: {\n width: \"100%\", background: '#2E3B55', fontWeight: \"bold\",\n \"&:hover\": {\n background: '#fffff',\n // color:'#2E3B55'\n }\n },\n media: {\n height: 620,\n width: \"100%\",\n objectFit: 'cover',\n\n },\n\n });\n const { app } = useSelector(state => ({\n app: state.app,\n }));\n const classes = useStyles();\n React.useEffect(() => {\n if (initialRender.current) { //初始載入\n initialRender.current = false\n //初始若登入者有公司名稱訊息\n if (UserInfo.CustName?.length > 0) {\n setNumerator(prev => prev + 1)\n }\n }\n }, []); //避免循環\n const handleClear = () => {\n if (_.isNil(imageURL)) {\n setPersonal(prevstate => ({\n ...prevstate,\n CustName: { ...prevstate.CustName, value: \"\" }\n }));\n if (personal.CustName.value !== \"\") {\n setNumerator(prev => prev - 1)\n }\n }\n }\n //是否需要輪班\n const [shiftChk, setShiftChk] = React.useState({\n YN: { checked: false, name: \"YN\" },\n Yes: null,\n No: null,\n })\n //是否需要輪班,紀錄OBJ\n const [shiftChkObj, setShiftChkObj] = React.useState({\n YN: { checked: false },\n Yes: null,\n No: null,\n })\n // React.useEffect(() => {\n // console.log(!shiftChkObj.Yes ? 'X' : shiftChkObj.Yes.toString())\n // }, [shiftChkObj])\n const handleShiftChk = e => {\n if (_.isNil(imageURL)) { //已提交不得修改\n const { name, checked } = e.target;\n // console.log(name, checked)\n if (name === \"Yes\") {\n setShiftChkObj(prev => ({\n YN: { ...prev.YN, checked: true },\n Yes: checked,\n No: !checked\n }));\n if (shiftChkObj.Yes === null) {\n setNumerator(prev => prev + 1);\n }\n if (checked === false) {\n //先移除所有checked\n const keys = Object.keys(YesShiftChkObj);\n keys.map(item => {\n delete YesShiftChkObj[item].checked;\n delete YesShiftChkObj[item].value;\n })\n setDenominator(prev => prev - 1);\n }\n else {//YES + checked\n setDenominator(prev => prev + 1);\n }\n }\n else if (name === \"No\") {\n setShiftChkObj(prev => ({\n YN: { ...prev.YN, checked: true },\n Yes: !checked,\n No: checked\n }))\n\n if (shiftChkObj.No === null) {\n setNumerator(prev => prev + 1);\n }\n\n if (checked === true) {\n //先移除所有checked\n const keys = Object.keys(YesShiftChkObj);\n keys.map(item => {\n delete YesShiftChkObj[item].checked;\n delete YesShiftChkObj[item].value;\n })\n if (shiftChkObj.No !== null) {\n setDenominator(prev => prev - 1);\n }\n }\n else {//YES + checked\n setDenominator(prev => prev + 1);\n }\n }\n }\n }\n //輪班勾是的進階List\n const [YesShiftChk, setYesShiftChk] = React.useState({\n Shift2: { name: \"Shift2\", checked: null, type: \"chkBox\", gridWid: 2 },\n Shift3: { name: \"Shift3\", checked: null, type: \"chkBox\", gridWid: 2 },\n Shift4: { name: \"Shift4\", checked: null, type: \"chkBox\", gridWid: 2 },\n ShiftOther: { name: \"ShiftOther\", checked: null, value: \"\", gridWid: 2 }\n });\n //輪班勾是的進階List,紀錄OBJ\n const [YesShiftChkObj, setYesShiftChkObj] = React.useState({\n Shift2: { checked: null, systemLabel: \"兩班制 \" },\n Shift3: { checked: null, systemLabel: \"三班制 \" },\n Shift4: { checked: null, systemLabel: \"四班制 \" },\n ShiftOther: { checked: null, value: \"\", systemLabel: \"其他:\" }\n });\n const [YesShiftChkObjAll, setYesShiftChkObjAll] = React.useState({\n checked: null, name: \"YesShiftChkObjAll\"\n });\n React.useEffect(() => {\n if (!initialRender.current) {\n const total = Object.values(YesShiftChkObj).reduce((a, b) => a + (b.checked ? 1 : 0), 0);\n // console.log(total)\n // console.log(YesShiftChkObjAll)\n if (total >= 1) {\n setYesShiftChkObjAll(prev => ({\n ...prev, checked: true\n }))\n if (!YesShiftChkObjAll.checked || YesShiftChkObjAll.checked === null) {\n setNumerator(prev => prev + 1);\n }\n } else if (total === 0) {\n setYesShiftChkObjAll(prev => ({\n ...prev, checked: false\n }))\n if (YesShiftChkObjAll.checked) {\n setNumerator(prev => prev - 1);\n }\n }\n // let Shift = Object.values(YesShiftChkObj).reduce((a, b) => a + (b.checked ? \"||\" + b.systemLabel : \"\"), \"\");\n // console.log(Shift)\n // console.log(\"||\" + (YesShiftChkObj.ShiftOther.value || \"\"))\n }\n }, [YesShiftChkObj])\n const handleChangeYesShift = e => {\n if (_.isNil(imageURL)) { //已提交不得修改\n const { name, checked } = e.target;\n //先移除所有checked\n const keys = Object.keys(YesShiftChkObj);\n keys.map(item => {\n delete YesShiftChkObj[item].checked\n delete YesShiftChkObj[item].value\n })\n //選中那個勾選\n setYesShiftChkObj(prev => ({\n ...prev,\n [name]: { ...prev[name], checked }\n }));\n }\n }\n\n const handleChangeYesShiftOther = e => {\n if (_.isNil(imageURL)) { //已提交不得修改\n const { name, value } = e.target;\n setYesShiftChkObj(prev => ({\n ...prev,\n [name]: { ...prev[name], value }\n }));\n }\n }\n\n\n return (\n \n \n \n

\n
\n \n
\n \n \n \n \n \n \n \n \n ,\n }}\n />\n \n \n {/* \n \n 2.性別:\n \n \n }\n label=\"男\"\n />\n }\n label=\"女\"\n />\n \n {gender.error ? ({gender.helperText}) : null}\n \n */}\n {/* \n \n */}\n \n \n }\n showTodayButton\n minDate={personal.hireDate.minDate || new Date(\"1900-01-01\")}\n maxDate={personal.hireDate.maxDate || new Date(\"2100-01-01\")}\n clearLabel={\"X\"}\n openTo={\"year\"}\n label={personal.hireDate.label}\n value={personal.hireDate.value}\n inputValue={personal.hireDate.value}\n onChange={(event, value) =>\n handleDateChange(personal.hireDate.name, event, value)\n }\n />\n \n \n\n \n
\n
\n \n \n {Object.values(workExp).slice(0, 1).map((item, key) => {\n if (key === 0) {\n return (\n \n \n : null} onChange={handleChangeTxt2nd} />} labelPlacement={\"start\"} label={} />\n \n \n )\n } else if (key === 1 || key === 2) {\n return (\n <>\n \n moment(date).format(\"YYYY年MM月\")}\n key={key}\n views={[\"year\", \"month\"]}\n autoOk\n autoComplete=\"off\"\n clearable\n type=\"datetime\"\n inputProps={{\n // ...prop //像是minLength、pattern\n pattern: \"[0-9]{4}年(0[1-9]|1[012])月\"\n }}\n style={{ width: 150 }}\n name={item.name}\n required={item.required || false}\n disableFuture={item.disableFuture || false}\n error={item.error || false}\n helperText={\n item.error ? (\n \n ) : null}\n todayLabel={}\n showTodayButton\n minDate={item.minDate || new Date(\"1900-01-01\")}\n maxDate={item.maxDate || new Date(\"2100-01-01\")}\n clearLabel={\"X\"}\n label={item.label}\n value={item.value}\n inputValue={item.value}\n onChange={(event, value) =>\n handleDateChange2nd(item.name, event, value)\n }\n />\n \n )\n } else {\n return (\n ,\n startAdornment: ,\n }}\n autoComplete=\"off\"\n helperText={item.error ? : null}\n inputProps={{ ...item, style: { textAlign: 'center' } }}\n />\n )\n\n }\n\n })}\n {Object.values(workExp).slice(1, 5).map((item, key) => { //曾經從事\n if (key === 0 || key === 1) {\n return (\n \n \n ) : null}\n todayLabel={}\n showTodayButton\n minDate={item.minDate || new Date(\"1900-01-01\")}\n maxDate={item.maxDate || new Date(\"2100-01-01\")}\n clearLabel={\"X\"}\n label={item.label}\n value={item.value}\n inputValue={item.value}\n onChange={(event, value) =>\n handleDateChange2nd(item.name, event, value)\n }\n />\n }\n />\n \n )\n } else {\n return (\n \n ,\n startAdornment: ,\n }}\n autoComplete=\"off\"\n helperText={item.error ? : null}\n inputProps={{ ...item, style: { textAlign: 'center' } }}\n />\n }\n />\n \n )\n\n }\n\n })}\n\n {Object.values(workExp).slice(5, 6).map((item, key) => { //目前從事\n if (key === 0) {\n return (\n \n \n : null} onChange={handleChangeTxt2nd} />}\n labelPlacement={\"start\"}\n label={} />\n \n \n )\n } else if (key === 1 || key === 2) {\n return (\n \n \n ) : null}\n todayLabel={}\n showTodayButton\n minDate={item.minDate || new Date(\"1900-01-01\")}\n maxDate={item.maxDate || new Date(\"2100-01-01\")}\n clearLabel={\"X\"}\n label={item.label}\n value={item.value}\n inputValue={item.value}\n onChange={(event, value) =>\n handleDateChange2nd(item.name, event, value)\n }\n />\n }\n />\n \n )\n } else {\n return (\n \n ,\n startAdornment: ,\n }}\n autoComplete=\"off\"\n helperText={item.error ? : null}\n inputProps={{ ...item, style: { textAlign: 'center' } }}\n />\n }\n />\n \n )\n }\n })}\n {Object.values(workExp).slice(6, 10).map((item, key) => {\n if (key === 0 || key === 1) {\n return (\n \n \n ) : null}\n todayLabel={}\n showTodayButton\n minDate={item.minDate || new Date(\"1900-01-01\")}\n maxDate={item.maxDate || new Date(\"2100-01-01\")}\n clearLabel={\"X\"}\n label={item.label}\n value={item.value}\n inputValue={item.value}\n onChange={(event, value) =>\n handleDateChange2nd(item.name, event, value)\n }\n />\n }\n />\n )\n } else {\n return (\n \n {intl.formatMessage({ id: item.endAdmt })},\n startAdornment: ,\n }}\n autoComplete=\"off\"\n helperText={item.error ? : null}\n inputProps={{ ...item, style: { textAlign: 'center' } }}\n />\n }\n />\n \n )\n }\n })}\n \n
\n \n \n \n \n {shiftChk.YN.error ? () : null}\n \n \n
\n
\n\n \n \n }\n label={}\n onMouseDown={() => { shiftChkObj.Yes || false ? playActive() : playOn(); }}\n />(\n\n {Object.values(YesShiftChk).map((item, key) => {\n if (item.type === \"chkBox\") {\n return (\n \n }\n disabled={!shiftChkObj.Yes || false}\n key={key}\n label={}\n onMouseDown={() => { YesShiftChkObj[item.name].checked || false ? playActive() : playOn(); }}\n />\n )\n } else {\n return (\n\n <>\n { YesShiftChkObj[item.name].checked || false ? playActive() : playOn(); }}\n />\n }\n name={item.name}\n autoComplete=\"off\"\n onChange={handleChangeYesShiftOther}\n error={item.error || false}\n helperText={item.error ? : null}\n />\n \n )\n }\n })}\n )\n \n \n \n \n {shiftChkObj.Yes && YesShiftChkObjAll.error ? () : null}\n \n \n \n \n \n }\n label={}\n onMouseDown={() => { shiftChkObj.No || false ? playActive() : playOn(); }}\n />\n \n {Object.values(workExp).slice(10, 11).map((item, key) => {\n return (\n \n \n ,\n }}\n inputProps={{\n ...item,\n style: { textAlign: \"center\" }\n }}\n value={item.value || \"\"}\n helperText={item.error ? : null}\n onChange={handleChangeTxt2nd}\n />\n } labelPlacement={\"start\"}\n label={} />\n \n \n )\n })}\n {Object.values(workExp).slice(11, 12).map((item, key) => {\n return (\n \n ,\n }}\n inputProps={{\n ...item,\n style: { textAlign: \"center\" }\n }}\n value={item.value || \"\"}\n helperText={item.error ? : null}\n onChange={handleChangeTxt2nd}\n />\n }\n labelPlacement={\"start\"}\n label={} />\n \n )\n })}\n
\n
\n
\n \n \n \n \n \n \n \n \n }\n label={}\n onMouseDown={() => { checked3rd.checkA ? playActive() : playOn(); }}\n />\n \n }\n label={}\n onMouseDown={() => { checked3rd.checkB ? playActive() : playOn(); }}\n />\n \n {checked3rd.error ? () : null}\n \n\n \n\n \n
\n
\n \n \n \n \n \n \n \n {array4thValidator.pastHistory.error ? () : null}\n \n \n \n {Object.values(array4th).map((item, key) => {\n //console.log(item);\n if (item.type === \"chkBox\") {\n return (\n \n \n }\n label={}\n onMouseDown={() => { item.checked || false ? playActive() : playOn(); }}\n />\n )\n } else {\n return (\n \n \n { item.checked || false ? playActive() : playOn(); }}\n />\n }\n name={item.name}\n autoComplete=\"off\"\n onChange={handleChangeTxt4th}\n // inputProps={{\n // type2:item.type\n // }}\n helperText={item.error ? : null}\n />\n \n )\n }\n\n })}\n \n
\n
\n \n \n \n \n \n \n \n {array5thCheck.smoke.error ? () : null}\n \n \n \n {Object.values(array5_1).map((item, key) => {\n if (item.type === \"chkBox\") {\n return (\n \n \n }\n label={}\n onMouseDown={() => { item.checked || false ? playActive() : playOn(); }}\n />\n )\n } else {\n return (\n
\n \n \n \n }\n label={}\n onMouseDown={() => { item.checked || false ? playActive() : playOn(); }}\n />\n \n \n }\n name={item.name_1}\n type={item.type_1}\n style={{ width: 120 }}\n autoComplete=\"off\"\n onChange={handleChangeTxt5_1}\n helperText={array5thCheck[item.name_1].error ? : null}\n InputProps={{\n endAdornment: ,\n }}\n inputProps={{\n min: item.min_1,\n step: 1, style: { textAlign: 'center' },\n max: item.max_1 || null\n }}\n\n />}\n />\n \n \n \n {item.label_2 ? (\n }\n name={item.name_2}\n type={item.type_2}\n style={{ width: 120 }}\n autoComplete=\"off\"\n onChange={handleChangeTxt5_1}\n helperText={array5thCheck[item.name_2].error ? : null}\n InputProps={{\n endAdornment: ,\n }}\n inputProps={{ min: 0, step: 1, style: { textAlign: 'center' }, max: item.max_2 || null }}\n />}\n />\n\n ) : null}\n \n
\n )\n }\n })}\n
\n \n \n \n \n \n \n {array5thCheck.betel.error ? () : null}\n \n \n \n {Object.values(array5_2).map((item, key) => {\n if (item.type === \"chkBox\") {\n return (\n \n \n }\n label={}\n onMouseDown={() => { item.checked || false ? playActive() : playOn(); }}\n />\n )\n } else {\n return (\n
\n \n \n \n }\n label={}\n onMouseDown={() => { item.checked || false ? playActive() : playOn(); }}\n />\n \n \n }\n name={item.name_1}\n type={item.type_1}\n style={{ width: 120 }}\n autoComplete=\"off\"\n onChange={handleChangeTxt5_1}\n error={array5thCheck[item.name_1].error || false}\n helperText={array5thCheck[item.name_1].error ? : null}\n InputProps={{\n endAdornment: ,\n }}\n inputProps={{\n min: 0,\n step: 1, style: { textAlign: 'center' },\n max: item.max_1 || null\n }}\n />}\n />\n \n \n \n {item.label_2 ? (}\n name={item.name_2}\n type={item.type_2}\n style={{ width: 120 }}\n autoComplete=\"off\"\n onChange={handleChangeTxt5_1}\n error={array5thCheck[item.name_2].error || false}\n helperText={array5thCheck[item.name_2].error ? : null}\n InputProps={{\n endAdornment: ,\n }}\n inputProps={{\n min: 0, step: 1, style: { textAlign: 'center' }, max: item.max_2 || null\n }}\n />}\n />) : null}\n \n
)\n }\n })}\n
\n \n \n \n \n \n \n {array5thCheck.drunk.error ? () : null}\n \n \n \n {Object.values(array5_3).map((item, key) => {\n //console.log(item);\n if (item.type === \"chkBox\") {\n return (\n \n \n }\n label={}\n onMouseDown={() => { item.checked || false ? playActive() : playOn(); }}\n />\n )\n } else {\n return (\n \n
\n \n \n }\n label={}\n onMouseDown={() => { item.checked || false ? playActive() : playOn(); }}\n />\n \n \n }\n name={item.name_1}\n type={item.type_1}\n style={{ width: 120 }}\n autoComplete=\"off\"\n onChange={handleChangeTxt5_1}\n error={array5thCheck[item.name_1].error || false}\n helperText={array5thCheck[item.name_1].error ? : null}\n InputProps={{\n endAdornment: {},\n }}\n inputProps={{\n min: 0, style: { textAlign: 'center' }, max: item.max_1 || null\n }}\n />}\n />\n \n \n
\n\n \n {item.label_2 ? (\n }\n name={item.name_2}\n type={item.type_2}\n style={{ width: 120 }}\n autoComplete=\"off\"\n onChange={handleChangeTxt5_1}\n error={array5thCheck[item.name_2].error || false}\n helperText={array5thCheck[item.name_2].error ? : null}\n InputProps={{\n endAdornment: ,\n }}\n inputProps={{\n style: { textAlign: 'center' }, min: 0, max: item.max_2 || null\n }}\n />}\n />) : null}\n \n \n {item.label_3 ? (}\n name={item.name_3}\n type={item.type_3}\n style={{ width: 120 }}\n autoComplete=\"off\"\n onChange={handleChangeTxt5_1}\n error={array5thCheck[item.name_3].error || false}\n helperText={array5thCheck[item.name_3].error ? : null}\n InputProps={{\n endAdornment: ,\n }}\n inputProps={{\n min: 0.1, step: 0.1, style: { textAlign: 'center' }, max: item.max_3 || null\n }}\n />}\n />) : null}\n\n
\n )\n }\n })}\n
\n
\n {/* \n ,\n }}\n helperText={array5thCheck.sleep.error ? : null}\n /> */}\n \n \n \n \n \n \n {(message) => }\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n {array5thCheck.sleep.error ? (\n \n ) : null\n }\n \n\n
\n
\n
\n \n \n \n \n \n \n \n {array4thValidator.conscious.error ? () : null}\n \n \n \n {Object.values(array6th).map((item, key) => {\n //console.log(item);\n if (item.type === \"chkBox\") {\n return (\n \n \n }\n label={}\n onMouseDown={() => { item.checked || false ? playActive() : playOn(); }}\n />\n )\n } else {\n return (\n \n \n { item.checked || false ? playActive() : playOn(); }}\n />\n }\n name={item.name}\n autoComplete=\"off\"\n onChange={handleChangeTxt4th}\n error={item.error || false}\n helperText={item.error ? : null}\n />\n \n )\n }\n\n })}\n \n
\n
\n \n
\n {/* */}\n {!imageURL ? (
\n \n
) : null}\n\n
\n
\n {/* {imageURL ?\n (
\n
\n \n
\n
\n \n
\n
\n )\n : null\n } */}\n\n
\n\n
\n {/*
\n {imageURL ? : null}\n
*/}\n
\n );\n})\n\nexport default Questionaire80th;\n\n// const MultipleComponet = React.forwardRef((props,ref)=>{\n\n\n// return(\n//
\n// \n// \n//
\n// )\n// })\n\n// const Example = () => {\n// const componentRef = useRef();\n// const handlePrint = useReactToPrint({\n// content: () => componentRef.current,\n// });\n\n// return (\n//
\n// \n// \n//
\n// );\n// };\n\n\n// export default Example;\n","import React, { useRef, forwardRef } from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport './Record.css'\nimport { useReactToPrint } from 'react-to-print';\nimport { FormControl, FormLabel, FormHelperText, Paper, useForkRef } from '@material-ui/core';\nimport ReactHTMLTableToExcel from 'react-html-table-to-excel';\n// import 'paper-css'\n\nconst useStyles = makeStyles({\n table: {\n border: \"1px double\",\n borderCollapse: \"collapse\",\n borderSpacing: 0,\n padding: \"20px\",\n margin: \"20px\",\n },\n column: {\n },\n td: {\n border: \"1px double\",\n\n }\n});\n\n\nconst Results = forwardRef((props, ref) => {\n const classes = useStyles();\n\n\n return (\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
專案名稱2021寵愛-特1姓名陳宜琳檢查年月日2021/06/06
廠別生日1996/10/13受雇年月日
部門工號電話
性別地址身分證號N123123123
現在從事XXXX檢查時期



作業經歷
既往病史


頭頸部
呼吸
心臟
消化
神經
肌肉骨骼
皮膚
醫師問診
身高體重
腰圍視力
辨色力聽力
血壓
尿蛋白尿淺血
血色素白血球
血糖
血清
肌酸酐
膽固醇
三酸甘油酯
高密度低密度
胸部X無明顯異常
應注意及
處理事項
檢查機構健檢醫師
\n
\n )\n})\n\n// export default Results;\n\n\nconst MultipleComponet = React.forwardRef((props, ref) => {\n\n\n return (\n
\n \n
\n )\n})\n\nconst Example = () => {\n const componentRef = useRef();\n const handlePrint = useReactToPrint({\n content: () => componentRef.current,\n });\n\n return (\n
\n \n \n
\n );\n};\n\n\nexport default Example;\n","import { DragSource, DropTarget } from 'react-dnd'\n\n/**\n * Specifies which props to inject into your component.\n */\nfunction rowSourceCollect(connect, _monitor) {\n return {\n // Call this function inside render()\n // to let React DnD handle the drag events:\n connectDragSource: connect.dragSource(),\n connectDragPreview: connect.dragPreview(),\n isDragging: _monitor.isDragging()\n\n //id: _monitor.getItem()\n }\n}\n\n/**\n * Specifies the drag source contract.\n * Only `beginDrag` function is required.\n */\nconst rowSourceSpec = {\n beginDrag(props) {\n console.log('beginDrag', props.rowIndex, props)\n return {\n rowIndex: props.rowIndex\n }\n }\n}\n\nfunction rowTargetCollect(connect, monitor) {\n return {\n connectDropTarget: connect.dropTarget(),\n isOver: monitor.isOver() && monitor.canDrop()\n }\n}\n//目標\nconst rowTargetSpec = {\n //判斷是否可以拖拉的目的\n canDrop(props, monitor) {\n const item = monitor.getItem()\n return props.rowIndex !== item.rowIndex //要不等於本來那一個rowIndex才可以\n },\n\n drop(props, monitor, component) {\n if (monitor.didDrop()) {\n return\n }\n // Obtain the dragged item\n const { rowIndex: fromIndex } = monitor.getItem()\n const { rowIndex: toIndex, onRowDrop } = props;\n onRowDrop(fromIndex, toIndex);\n }\n}\n\nfunction colSourceCollect(connect, _monitor) {\n return {\n // Call this function inside render()\n // to let React DnD handle the drag events:\n connectDragSource: connect.dragSource()\n }\n}\n\nconst colSourceSpec = {\n beginDrag(props) {\n return {\n columnIndex: props.columnIndex\n }\n }\n}\n\nfunction colTargetCollect(connect, monitor) {\n return {\n connectDropTarget: connect.dropTarget(),\n isOver: monitor.isOver({ shallow: true }) && monitor.canDrop()\n }\n}\n\nconst colTargetSpec = {\n canDrop(props, monitor) {\n const item = monitor.getItem()\n // return item.row !== props.row\n return props.columnIndex !== item.columnIndex\n },\n\n drop(props, monitor, component) {\n if (monitor.didDrop()) {\n return\n }\n\n // Obtain the dragged item\n const { columnIndex: fromIndex } = monitor.getItem()\n const { columnIndex: toIndex, onColumnDrop } = props\n onColumnDrop(fromIndex, toIndex)\n }\n}\n\nexport const colDragSource = DragSource('col', colSourceSpec, colSourceCollect)\nexport const colDropTarget = DropTarget('col', colTargetSpec, colTargetCollect)\nexport const rowDragSource = DragSource('row', rowSourceSpec, rowSourceCollect)\nexport const rowDropTarget = DropTarget('row', rowTargetSpec, rowTargetCollect)","import { DragDropContext } from 'react-dnd';\nimport HTML5Backend from 'react-dnd-html5-backend';\n\nexport default DragDropContext(HTML5Backend);","export default __webpack_public_path__ + \"static/media/clickdown.4efde20a.wav\";","import React, { memo, useMemo, useCallback } from \"react\";\nimport _, { isEqual } from 'lodash';\nimport { FormattedMessage, useIntl } from \"react-intl\";\nimport Pagination from '@material-ui/lab/Pagination';\nimport BallotOutlinedIcon from '@material-ui/icons/BallotOutlined';\n// import memoizeOne from 'memoize-one';\nimport AutoSizer from \"react-virtualized-auto-sizer\";\nimport { FixedSizeList as List, areEqual } from \"react-window\";\nimport ReactDataSheet from \"../../react-datasheet/lib/index\";\n// import Cell from \"./Cell\";\nimport DataCell from \"../../react-datasheet/lib/DataCell\";\nimport '../../react-datasheet/lib/react-datasheet.css';\n// import '../index.css';\nimport {\n colDragSource, colDropTarget,\n rowDragSource, rowDropTarget\n} from './drag-drop.js'\nimport CommonHTML5Backend from \"./CommonHTML5Backend\";\nimport { Button, TextField, Checkbox, ClickAwayListener, Popper, Paper, Grow, InputAdornment, FormGroup, FormLabel, FormControlLabel, Switch } from '@material-ui/core';\nimport { props } from \"ramda\";\nimport PF from '../../_Services/publicFunction';\nimport useSound from 'use-sound';\nimport clickdown from '../sounds/clickdown.wav';\nimport clickup from '../sounds/clickdown.wav';\n\nconst Header = React.memo(colDropTarget(colDragSource((props) => {\n const { col, connectDragSource, connectDropTarget, isOver, onClick, dataKey, handleMouseMove, columns, columnIndex, FrozenColumn, enableCheck } = props\n const className = isOver ? 'drop-target shadow' : 'shadow'\n let accWidth = 0;\n // console.log(props);\n let styles = {};\n if (columnIndex + 1 <= FrozenColumn) {\n accWidth = columns.slice(0, columnIndex).reduce((a, b) => a + b.width, 0)\n styles = {\n left: enableCheck ? 85 + accWidth : 30 + accWidth,\n position: \"sticky\",\n zIndex: \"100\",\n // width:\"500px\",\n // background: \"rgb(255,255,125)\",\n border: \"1px solid #a2a2a2\",\n }\n }\n return connectDropTarget(\n connectDragSource(\n \n \n \n \n {\n e.preventDefault();\n e.stopPropagation();\n // console.log(e);\n handleMouseMove(e, dataKey)\n }}>\n \n\n ))\n})), isEqual);\n\nconst RenderHeader = React.memo((props) => {\n const { columns, FrozenColumn, onHeaderClick, onColumnDrop, handleMouseMove, enableCheck } = props;\n // console.log(props)\n return (\n columns.map((col, index) => (\n
onHeaderClick(index)} key={col.label} col={col} columnIndex={index} columns={columns}\n onColumnDrop={onColumnDrop} dataKey={index} handleMouseMove={handleMouseMove} className={\"tableStickyHeaderCell\"} enableCheck={enableCheck} />\n ))\n )\n}, isEqual)\n//const anchorRef = React.useRef(null);\nconst ButtonToggle = React.memo((props) => {\n const { OriginalColumns, setColumns, FrozenColumn, setFrozen, setOrderRows, OriginalRows } = props\n const [open, setOpen] = React.useState(false);\n const anchorRef = React.useRef(null);\n const handleToggle = () => {\n setOpen((prevOpen) => !prevOpen);\n };\n\n // console.log(OriginalColumns)\n const handleSetColumnShow = (event) => {\n const { name, checked } = event.target;\n // console.log(name, checked)\n let colx = _.cloneDeep(OriginalColumns);\n colx[name].noshowTable = !checked\n setColumns(colx);\n\n let noshowTable = [];\n Object.values(colx).map(item => {\n if (item.noshowTable === true) {\n // console.log(item.name)\n noshowTable.push(item.name)\n }\n })\n let showColumns2 = _.omit(colx, noshowTable); //過濾不顯示的\n\n setOrderRows(prev => PF.dataSheetGridFormat(OriginalRows, Object.keys(showColumns2)))\n };\n //用於顯示開關\n let z = [];\n // console.log(props)\n Object.values(OriginalColumns).map(item => {\n if (item.noshowTableForever === true) {\n z.push(item.name)\n }\n })\n let z2 = _.omit(OriginalColumns, z); //過濾不顯示的\n return (\n setOpen(false)} >\n \n \n \n {({ TransitionProps, placement }) => (\n \n \n \n \n {Object.values(z2).map((item, index) => {\n return (\n \n }\n label={}\n labelPlacement=\"start\"\n style={{ marginRight: 0 }}\n />\n )\n })}\n \n ,\n }}\n onChange={e => setFrozen(e.target.value)}\n inputProps={{ min: 0, step: 1, style: { textAlign: 'center' }, max: Object.keys(z2).length }} />\n \n \n \n )}\n \n \n \n )\n}, isEqual);\n\n\n// const enableCheck = true;\nclass VirtualSheet extends ReactDataSheet {\n constructor(props) {\n super(props)\n this.handleCheckSelectionChanges = this.handleCheckSelectionChanges.bind(this);\n this.CheckSelectionAll = this.CheckSelectionAll.bind(this);\n this.handleMouseMove = this.handleMouseMove.bind(this);\n this.onHandleCopy = this.onHandleCopy.bind(this);\n // this.handleDoubleClick = this.props.handleDoubleClick.bind(this);\n this.thead = React.createRef();\n }\n handleMouseMove(event, dataKey) {\n const minWidth = 30; //最小寬度\n let startPosition = event.pageX || 0;\n\n const { columns, setColumns, OriginalColumns } = this.props;\n //console.log(columns[dataKey].name);\n let colName = columns[dataKey].name;\n setColumns(prevState => ({\n ...prevState,\n [colName]: { ...prevState[colName], width: OriginalColumns[colName].width }\n }))\n // console.log(startPosition);\n // this.setState(prevState => {\n // return {\n // columns: prevState.columns.map((item, index) => {\n // const newItem = _.cloneDeep(item);\n // if (index === dataKey) {\n // newItem.width = columns[dataKey].width;\n // }\n // return newItem;\n // })\n // };\n // });\n const handleMouseMoved = eventMoving => {\n // console.log(eventMoving,\"MOVE\")\n let diff = eventMoving.pageX - startPosition;\n // console.log(diff);\n // if (OriginalColumns[colName].width + diff >= minWidth) {\n setColumns(prevState => ({\n ...prevState,\n [colName]: { ...prevState[colName], width: OriginalColumns[colName].width + diff >= minWidth ? OriginalColumns[colName].width + diff : minWidth }\n }))\n // this.setState(prevState => {\n // return {\n // columns: prevState.columns.map((item, index) => {\n // // console.log(item.width);\n // const newItem = _.cloneDeep(item);\n // if (index === dataKey) {\n // newItem.width = columns[dataKey].width + diff;\n // }\n // return newItem\n // })\n // };\n // });\n // }\n }\n const handleMouseUp = eU => {\n // console.log(eU,\"UP\")\n window.removeEventListener('mouseup', handleMouseUp);\n window.removeEventListener('mousemove', handleMouseMoved);\n }\n window.addEventListener('mouseup', handleMouseUp);\n window.addEventListener('mousemove', handleMouseMoved);\n\n }\n CheckSelectionAll(e) { //最上方的checkbox\n //const { checkSelections, grid } = this.state;\n const { data, rows, isMultipleCheckSelection, checkSelections, setCheckSelections } = this.props;\n if (!isMultipleCheckSelection) {\n //const numChecked = Object.values(checkSelections).length;\n const numChecked = checkSelections.size;\n if (numChecked > 0) {\n //setCheckSelections({});\n setCheckSelections(prev => {\n return new Map(prev.clear())\n });\n }\n } else {\n //const { checked } = e.target;\n const rowCount = data.length;\n const numChecked = new Map([...checkSelections].filter(([k, v]) => v === true)).size\n //console.log(numChecked);\n if (numChecked < rowCount) {\n // console.log(\"應該全選\")\n // rows.map((item, key) => {\n // setCheckSelections(prevState => ({\n // ...prevState,\n // [key]: true\n // }))\n // })\n let y = Array.from(Array(rowCount).keys()).map(item => [item, true])\n setCheckSelections(prev => {\n return new Map(y)\n });\n } else if (numChecked === rowCount) {\n //setCheckSelections({})\n\n setCheckSelections(prev => {\n return new Map(prev.clear())\n });\n }\n }\n\n\n }\n handleCheckSelectionChanges(e, rowIndex) {\n // console.log(this.props)\n //const { checkSelections } = this.props;\n const { checkSelections, setCheckSelections, isMultipleCheckSelection } = this.props;\n // console.log(checkSelections,rowIndex);\n\n let chk = checkSelections.get(rowIndex) || false;\n //let result = e.target.checked;\n if (isMultipleCheckSelection === true) { //多選\n\n // setCheckSelections(prevState => ({\n // ...prevState,\n // [rowIndex]: !chk\n // }))\n\n setCheckSelections(prev => new Map([...prev, [rowIndex, !chk]]))\n } else {\n\n // setCheckSelections(prevState => ({\n // //...prevState,\n // [rowIndex]: !chk\n // }))\n\n setCheckSelections(prev => {\n prev.clear();\n return new Map([...prev, [rowIndex, !chk]])\n });\n }\n }\n setRef = ref => {\n this.dgDom = ref;\n };\n // onSelect(selected) {\n // this.setState({ selected });\n\n // console.log(selected)\n // }\n // shouldComponentUpdate(nextProps, nextState) {\n // // console.log(this.props.selected)\n // // console.log(nextProps.selected)\n // return nextProps.selected.start !== this.props.selected.start || nextProps.selected.end !== this.props.selected.end\n // }\n onHandleCopy = e => {\n // const intl = useIntl();\n\n e.preventDefault();\n const { selected, columns, data } = this.props\n const { start, end } = selected;\n\n let columnStart = start.j <= end.j ? start.j : end.j;\n let columnEnd = start.j <= end.j ? end.j : start.j;\n let rowStart = start.i <= end.i ? start.i : end.i;\n let rowEnd = start.i <= end.i ? end.i : start.i;\n\n let rowArr = [];\n\n for (let i = rowStart; i <= rowEnd; i++) {\n let colArr = [];\n\n for (let j = columnStart; j <= columnEnd; j++) {\n\n colArr.push(data[i][j].value)\n }\n rowArr.push(colArr.join('\\t'));\n\n }\n let header = [];\n if (this.props.CopyWithHeader) { //是否複製有表頭\n header = columns.filter((obj, index) => columnStart <= index && index <= columnEnd)\n .map(obj => this.props.i18n ? this.props.i18n.messages[obj.name] : obj.name).join('\\t');\n }\n\n let headRowArr = this.props.CopyWithHeader ? [header, ...rowArr] : rowArr;\n\n e.clipboardData.setData('text/plain', headRowArr.join('\\n'));\n\n }\n // componentDidMount() {\n // // console.log(`CowshedManagement componentDidMount`);\n // // console.log(this.scrollItem);\n // // this.scrollItem.addEventListener(‘scroll’, this.onListScroll);\n // this.thead.addEventListener(\"scroll\", console.log(\"X\"));\n // }\n render() {\n const { data, OriginalRows, FrozenColumn, labelCount, setFrozen, OriginalColumns, setColumns, columns, pageCount, pageNo, listRef\n , checkSelections, onTotalClick, onHeaderClick, onColumnDrop, className, enableCheck, setOrderRows, defaultWidth\n } = this.props;\n const sheetwidth = columns.reduce((a, b) => a + b.width, 0)\n const numChecked = new Map([...checkSelections].filter(([k, v]) => v === true)).size\n //const numChecked = Object.values(checkSelections).reduce((a, b) => a + (b ? 1 : 0), 0);\n const rowCount = data.length;\n return (\n
\n \n \n \n {\n e.preventDefault();\n e.stopPropagation();\n onTotalClick()\n }}\n onDoubleClick={e => { }}\n />\n {enableCheck === true ? () : null}\n \n \n \n {\n // console.log(e.target)\n //解讀向左滾動距離\n const { scrollLeft } = e.target;\n // thead要先設定為可滾動\n // 才能調整thead滾動距離\n this.thead.current.scrollLeft = scrollLeft;\n\n }}\n >\n \n {size => {\n const { height, width } = size;\n return (\n \n {this.renderRow}\n )\n }}\n \n \n \n \n \n \n \n\n \n \n\n
\n 0 && numChecked < rowCount}\n checked={numChecked === rowCount || false}\n color={\"primary\"}\n onChange={this.CheckSelectionAll}\n />\n
\n Count: {labelCount.count.toLocaleString(undefined, {\n minimumFractionDigits: 0\n })} \n {(labelCount.count2 === 0) ? null :\n \n Sum: {labelCount.sum.toLocaleString(undefined, {\n minimumFractionDigits: 2\n })}\n \n \n Average: {labelCount.avg.toLocaleString(undefined, {\n minimumFractionDigits: 2\n })}\n \n \n }\n
\n\n
\n );\n }\n\n renderRow = ({ index: rowIndex, style }) => {\n const { onRowClick, onRowDrop, checkSelections, columns, OriginalRows, selected, FrozenColumn, enableCheck, RowStyleFunc, handleDoubleClick } = this.props;\n const { start, end } = selected\n let startI = _.get(start, \"i\"), endI = _.get(end, \"i\")\n let startJ = _.get(start, \"j\"), endJ = _.get(end, \"j\")\n const sheetwidth = columns.reduce((a, b) => a + b.width, 0)\n const isisSelectRow = rowIndex >= startI && rowIndex <= endI || rowIndex <= startI && rowIndex >= endI\n return ;\n };\n}\nexport default CommonHTML5Backend(VirtualSheet)\n\n// VirtualSheet.defaultProps = {\n// cellRenderer: Cell\n// };\nconst RowHeader = memo(rowDropTarget(rowDragSource(props => {\n const { isOver, rowIndex, onRowClick, connectDropTarget, connectDragSource } = props;\n const className = isOver ? 'drop-target' : ''; //拖曳變色\n // console.log(props)\n return connectDropTarget(\n connectDragSource(\n //若數字為數太多,字體變小\n \n 999 ? { fontSize: \"8px\" } : null}>{rowIndex + 1}\n ))\n})), isEqual)\n\nconst ChkBox = React.memo((props) => {\n // console.log(props)\n const { rowIndex, checkSelections } = props;\n const [playActive] = useSound(\n clickdown,\n { volume: 0.25 }\n );\n const [playOn] = useSound(\n clickup,\n { volume: 0.25 }\n );\n return (\n { props.handleCheckSelectionChanges(e, rowIndex) }}\n onMouseDown={() => {\n checkSelections.get(rowIndex) ? playActive() : playOn();\n }}\n />)\n\n}) //不要isEqual,避免checkSelections無法更新\nconst Row = memo((props) => {\n const { isOver, grid, rowIndex, style, onRowClick, onRowDrop, checkSelections, handleCheckSelectionChanges, sheetwidth, columns, OriginalRows, RowStyleFunc\n , isSelect, selected, startI, startJ, endI, endJ, start, end, isSelectJ, FrozenColumn, enableCheck, handleDoubleClick } = props;\n const {\n attributesRenderer,\n cellRenderer,\n valueRenderer,\n dataRenderer,\n valueViewer,\n dataEditor,\n data,\n forceEdit\n } = grid.props;\n\n const row = data[rowIndex];\n // console.log(row);\n // console.log(data);\n // console.log(rowIndex);\n const newStyle = _.cloneDeep(style);\n newStyle.width = enableCheck ? 84 + sheetwidth + 2 : 30 + sheetwidth + 2;\n // newStyle.background = new Date(OriginalRows[rowIndex][\"SOMEDAY\"]).getDate() % 2 != 0 ? \"#e3f2fd\" : \"\"\n newStyle.background = RowStyleFunc ? RowStyleFunc(OriginalRows, rowIndex) : \"\"\n // RowStyleFunc\n return (\n
\n onRowClick(rowIndex), [])} rowIndex={rowIndex} onRowDrop={onRowDrop} />\n {enableCheck ? (\n \n [],[])}\n />\n \n ) : null}\n selected, [diffJ])}\n />\n\n
\n );\n})\n\nconst RowToCell = props => {\n\n const { row, grid, rowIndex, columns, isSelectJ } = props;\n // console.log(grid)\n const {\n attributesRenderer,\n cellRenderer,\n valueRenderer,\n dataRenderer,\n valueViewer,\n dataEditor,\n data,\n forceEdit,\n selected,\n handleDoubleClick\n } = grid.props;\n // console.log(isSelectJ)\n return (\n row.map((cell, colIndex) => {\n const isEditing = grid.isEditing(rowIndex, colIndex);\n // console.log(cell);\n return (\n { return (columns[colIndex].format || \"\") === 'Amount' ? PF.ccyFormat(c.value, 2) : c.value }}\n dataRenderer={dataRenderer}\n valueViewer={valueViewer}\n dataEditor={dataEditor}\n editValue={grid.state.editValue}\n {...(isEditing\n ? {\n onEdit: grid.handleEdit\n }\n : {})}\n />\n\n\n );\n })\n\n )\n}\n\nconst someEqual = (prevProps, nextProps) => {\n /*\n 如果把 nextProps 传入 render 方法的返回结果与\n 将 prevProps 传入 render 方法的返回结果一致则返回 true,\n 否则返回 false\n*/\n return prevProps !== nextProps\n}\n\n\nconst MyCell = memo(props => {\n\n\n const { key, row, col, cell, forceEdit,\n onMouseDown, onMouseOver, onContextMenu, onDoubleClick, onChange, onRevert, onNavigate,\n onKey, selected, editing, clearing, attributesRenderer, cellRenderer, valueRenderer, dataRenderer, valueViewer,\n dataEditor, editValue\n } = props;\n\n return (\n { return (columns[colIndex].format || \"\") === 'Amount' ? PF.ccyFormat(c.value, 2) : c.value }}\n dataRenderer={dataRenderer}\n valueViewer={valueViewer}\n dataEditor={dataEditor}\n editValue={editValue}\n {...props}\n />\n )\n}, isEqual)","\nimport React, { PureComponent, useCallback, useMemo, memo } from 'react'\n// import CustomRendererSheet from '../components/DataSheet_Duke7';\nimport PF from '../../_Services/publicFunction';\nimport _ from 'lodash';\nimport CustomRendererSheet from \"./VirtualSheet\"\nimport { isEqual } from 'lodash';\nimport { makeStyles, withStyles } from '@material-ui/core/styles';\nimport { useTheme } from '@material-ui/styles';\nimport { useDispatch, useSelector } from \"react-redux\";\n\nconst R = require('ramda');\n\n\n\nconst InteriorTable = memo(props => {\n const { selected, setSelected\n , setRows, rows, orderRows, setOrderRows\n , showColumns, setColumns, columns\n , multiChk, checkSelections, setCheckSelections, enableCheck\n , listRef\n , pageCount, pageNo, setPageNo\n , handleDoubleClick\n , defaultFrozen //預設凍結數量\n , defaultWidth //預設表格寬度\n , RowStyleFunc //一行的背景顏色\n , CopyWithHeader //複製表頭\n } = props;\n let theme = useTheme();\n const { dark } = useSelector(state => ({\n dark: state.app.dark,\n }));\n const { i18n } = useSelector(state => ({\n i18n: state.app.i18n,\n }));\n const [labelCount, setLabelCount] = React.useState({ count: 0, sum: 0, avg: 0, count2: 0 })\n const [frozen, setFrozen] = React.useState(defaultFrozen || 0) //凍結數\n\n const onSelect = (selected) => {\n if (rows.length > 0) {\n\n //解構\n const { start, end } = selected;\n const grid = [...orderRows];\n // console.log(rows)\n // console.log(orderRows)\n\n // console.log(grid)\n const height = Math.abs(start.i - end.i) + 1 //計算選取範圍height\n const width = Math.abs(start.j - end.j) + 1 //計算選取範圍width\n //\n let columnStart = start.j <= end.j ? start.j : end.j;\n let columnEnd = start.j <= end.j ? end.j : start.j;\n let rowStart = start.i <= end.i ? start.i : end.i;\n let rowEnd = start.i <= end.i ? end.i : start.i;\n\n let newArr = [];\n for (let i = rowStart; i <= rowEnd; i++) {\n for (let j = columnStart; j <= columnEnd; j++) {\n newArr.push(orderRows[i][j])\n }\n }\n\n function NumAddAverage(accumulator, a) {\n if (Object.keys(accumulator).length === 0) {\n accumulator = { sum: 0, count: 0 } //初始化用\n }\n //accumulator==={}?{accumulator.sum:0,accumulator.NumCount:0}\n if (!isNaN(a) && !_.isNil(a) && a !== \"\") {//先檢查是否為數字&&不能為空=>YES\n accumulator.sum = accumulator.sum + parseFloat(a); //轉換為數字\n accumulator.count = accumulator.count + 1; //數字的count\n return accumulator;//將字串轉換為數字\n } else {\n return accumulator\n }\n }\n\n const ArrayObjectToArray = arr => {\n return R.map(obj => obj['value'], arr);\n };\n\n\n let sum_avg = ArrayObjectToArray(newArr).reduce(NumAddAverage, {})\n // console.log(ArrayObjectToArray(newArr))\n\n // console.log(end);\n // console.log(KeepArrayReducer(grid, start.i, end.i));\n //console.log(\"個數:\"+height*width);\n //this.setState({labelCount:\"Count:\"+height*width+\" \"+(sum_avg.count===0?\"\":\" Sum:\"+ccyFormat2(sum_avg.sum)+\" Avg:\"+ccyFormat2(sum_avg.sum/sum_avg.count))});\n //this.setState(prevState => ({ labelCount: { ...prevState.labelCount, count: height * width, count2: 0 } }));\n setLabelCount(prevState => ({\n ...prevState.labelCount,\n count: height * width,\n count2: sum_avg.count > 0 ? sum_avg.count : 0,\n sum: sum_avg.count > 0 ? sum_avg.sum : 0,\n avg: sum_avg.count > 0 ? sum_avg.sum / sum_avg.count : 0,\n }))\n setSelected(selected);\n\n }\n }\n const onRowClick = (rowIndex) => {\n const grid = [...orderRows];\n const columnNo = grid[0].length\n let start = { i: rowIndex, j: 0 }\n let end = { i: rowIndex, j: columnNo - 1 }\n onSelect({ start, end })\n }\n const handleRowDrop = (from, to) => {\n // const grid = _.cloneDeep(rows);\n let j = PF.swapArrayLocs(rows, from, to);\n // console.log(showColumns)\n setRows(prev => j)\n setOrderRows(prev => PF.dataSheetGridFormat(j, Object.keys(showColumns)))\n\n //選擇框也須更著變更\n const columnNo = orderRows[0].length\n\n let start = { i: to, j: 0 }\n let end = { i: to, j: columnNo - 1 }\n\n onSelect({ start, end })\n\n setCheckSelections(prevState => new Map([\n ...prevState,\n [from, prevState.get(to)], //對調\n [to, prevState.get(from)], //對調\n ]));\n }\n const onHeaderClick = (colIndex) => {\n const rowNo = rows.length\n let start = { i: 0, j: colIndex }\n let end = { i: rowNo - 1, j: colIndex }\n // console.log(rows);\n // console.log(orderRows);\n onSelect({ start, end })\n }\n const onTotalClick = (colIndex) => {\n //若點了左上角,代表全選\n const grid = [...orderRows];\n const rowNo = grid.length\n const colNo = Object.keys(showColumns).length\n // console.log()\n let start = { i: 0, j: 0 }\n let end = { i: rowNo - 1, j: colNo - 1 }\n onSelect({ start, end })\n }\n //換欄=>調換順序\n const handleColumnDrop = (from, to) => {\n //表頭更改順序\n // const { setRows, setColumns, columns, rows, OriginalColumns, OriginalRows } = this.props;\n //const columns = [...this.props.columns];\n // console.log([...this.state.columns],\"原來的表頭\")\n // console.log(from, to)\n const columnsX = _.cloneDeep(Object.values(showColumns));\n //console.log(columnsX,\"原來的表頭\")\n //columnsX.splice(to, 0, ...columnsX.splice(from, 1))\n\n\n let x = PF.swapArrayLocs(columnsX, from, to);\n // console.log(x)\n let y = columnsX.map(item => {\n return [item.name, item]\n })\n let z = _.merge(Object.fromEntries(y), columns);\n\n\n // console.log(z, \"更新的表頭\")\n setColumns(z);\n\n let noshowTable = [];\n Object.values(z).map(item => {\n if (item.noshowTable === true) {\n // console.log(item.name)\n noshowTable.push(item.name)\n }\n })\n let showColumns2 = _.omit(z, noshowTable); //過濾不顯示的\n\n setOrderRows(prev => PF.dataSheetGridFormat(rows, Object.keys(showColumns2)))\n //表身更改順序\n\n //選擇框也須更著變更\n const rowNo = orderRows.length\n let start = { i: 0, j: to }\n let end = { i: rowNo - 1, j: to }\n onSelect({ start: start, end: end })\n\n }\n const renderCell = (prop) => {\n const { col, cells, className, cell, attributesRenderer,\n selected, editing, updated, style,\n ...rest } = prop;\n let columns = Object.values(showColumns);\n\n let accWidth = 0;\n let styles = {};\n if (col + 1 <= frozen) {\n accWidth = columns.slice(0, col).reduce((a, b) => a + b.width, 0)\n styles = {\n left: enableCheck ? 85 + accWidth : 30 + accWidth,\n position: \"sticky\",\n // \"z-index\": 100,\n // width:\"500px\",\n background: !dark ? \"#FFFF7D\" : \"#ab003c\",\n border: \"1px solid #a2a2a2\",\n textAlign: columns[col].tableFormat === \"number\" ? \"right\" : \"left\"\n }\n\n }\n const Normalattributes = _.cloneDeep(cell.attributes) || {}\n Normalattributes.title = cell.value; //hover show content\n Normalattributes.style = {\n textAlign: columns[col].tableFormat === \"number\" ? \"right\" : \"left\"\n }; //hover show content\n\n const Frezzeattributes = _.cloneDeep(cell.attributes) || {}\n Frezzeattributes.style = styles;\n Frezzeattributes.title = cell.value; //hover show content\n if (col + 1 <= frozen) { //欲凍結的窗口\n return (//NOTE:...props要先\n \n {prop.children}\n )\n } else { //NOTE:...props要先\n return \n {prop.children}\n \n }\n }\n return (\n c.value}\n onCellsChanged={f => f}\n cellRenderer={useCallback(renderCell, [columns, orderRows, frozen, theme])}\n // cellRenderer={renderCell}\n\n onSelect={onSelect}\n selected={selected}\n labelCount={labelCount}\n onTotalClick={onTotalClick}\n // onHeaderClick={useCallback(index => onHeaderClick(index), [rows])}\n onHeaderClick={onHeaderClick}\n // onColumnDrop={useCallback((f, t) => handleColumnDrop(f, t), [columns])}\n onColumnDrop={handleColumnDrop}\n onRowClick={onRowClick}\n onRowDrop={handleRowDrop}\n defaultWidth={defaultWidth}\n RowStyleFunc={RowStyleFunc}\n CopyWithHeader={CopyWithHeader}\n i18n={i18n}\n />\n )\n}, isEqual)\n\nexport default InteriorTable","import React, { PureComponent, useCallback, useMemo, memo, useEffect } from 'react'\n// import CustomRendererSheet from '../components/DataSheet_Duke7';\nimport PF from '../../_Services/publicFunction';\nimport _ from 'lodash';\nimport Button from \"@material-ui/core/Button\";\nimport { isEqual } from 'lodash';\nimport InteriorTable from \"./DataSheet_Virtual\"\n\n\nconst Table = memo(props => {\n //選中的範圍\n const [selected, setSelected] = React.useState({ start: null, end: null })\n //用於表的快速移動至某行\n const listRef = React.createRef();\n //勾選\n const [checkSelections, setCheckSelections] = React.useState(new Map());\n //允許多個勾選\n const [enableCheck, setEnableCheck] = React.useState(false);\n //允許多個勾選\n const [multiChk, setMultiChk] = React.useState(false);\n //總頁數\n const [pageCount, setPageCount] = React.useState(1)\n //第幾頁\n const [pageNo, setPageNo] = React.useState(6)\n //表頭設定\n //noshowTableForever:永不顯示\n //noshowTable:暫時隱藏,可以打開或關閉\n const [columns, setColumns] = React.useState({\n empId: { label: \"empId\", name: \"empId\", width: 100, type: \"text\", required: false, noShowSelect: true, noshowTable: true, noshowTableForever: true, orderSeq: 1 },\n empName: { label: \"姓名\", name: \"empName\", width: 100, type: \"text\", required: true, xs: 6, sm: 6, md: 3, orderSeq: 9 },\n JobsTypeName: { label: \"JobsTypeName\", width: 100, name: \"JobsTypeName\", type: \"text\", required: true, xs: 6, sm: 6, md: 3, noShowSelect: true, orderSeq: 3 },\n seniorityY: { label: \"seniorityY\", name: \"seniorityY\", width: 100, type: \"text\", required: true, noShowSelect: true, xs: 6, sm: 6, md: 3, orderSeq: 4 },\n seniorityM: { label: \"seniorityM\", name: \"seniorityM\", width: 100, type: \"text\", required: true, noShowSelect: true, xs: 6, sm: 6, md: 3, orderSeq: 5 },\n seniorityMTotal: { label: \"seniorityMTotal\", name: \"seniorityMTotal\", format: \"Amount\", width: 100, type: \"text\", required: true, noShowSelect: true, xs: 6, sm: 6, md: 3, orderSeq: 6 },\n genderText: { label: \"genderText\", name: \"genderText\", width: 100, type: \"text\", required: true, noShowSelect: true, xs: 6, sm: 6, md: 3, orderSeq: 7 },\n sqJobsType: { label: \"sqJobsType\", name: \"sqJobsType\", width: 100, type: \"text\", required: true, xs: 6, sm: 6, md: 3, noshowTable: true, noshowTableForever: true, select: true, list: [], orderSeq: 8 },\n })\n //載入資料\n const [rows, setRows] = React.useState([\n\n ])\n // React.useEffect(() => {\n // //轉換\n // console.log(columns)\n\n // let noshowTable = [];\n // Object.values(columns).map(item => {\n // if (item.noshowTable === true) {\n // // console.log(item.name)\n // noshowTable.push(item.name)\n // }\n // })\n // // let showColumns = //過濾不顯示的\n // setShowColumn(prev=>_.omit(columns, noshowTable))\n // }, [columns])\n\n\n React.useEffect(() => {\n let noshowTable = [];\n Object.values(columns).map(item => {\n if (item.noshowTable === true) {\n // console.log(item.name)\n noshowTable.push(item.name)\n }\n })\n let showColumns = _.omit(columns, noshowTable) //轉換\n setOrderRows(prev => PF.dataSheetGridFormat(rows, Object.keys(showColumns)))\n }, [columns])\n //轉換\n let noshowTable = [];\n Object.values(columns).map(item => {\n if (item.noshowTable === true) {\n // console.log(item.name)\n noshowTable.push(item.name)\n }\n })\n let showColumns = _.omit(columns, noshowTable)\n // const [showColumns, setShowColumn] = React.useState(_.omit(columns, noshowTable))\n //let z22 = _.orderBy(z2, ['orderSeq']); //排序\n //let z3 = z2.map(item=>(item.name));//只取標頭\n // console.log(z22); //依照column順序排序\n const [orderRows, setOrderRows] = React.useState(PF.dataSheetGridFormat(rows, Object.keys(showColumns)))\n //雙擊\n const handleDoubleClick = (i, j, e) => {\n console.log(rows[i]);\n }\n //其他方法\n const handleClickAdd = e => {\n const ary = [{ \"seniorityY\": 20, \"seniorityM\": 4, \"seniorityMTotal\": 244, \"empId\": \"00017\", \"empName\": \"許效舜\", \"empAddress\": \"test\", \"empPhone\": \"0912345678\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"潘冠尹\", \"empSID\": \"A123456789\", \"email\": \"test@msn.com\", \"gender\": 1, \"genderText\": \"男\", \"dateHire\": \"2001/01/01\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/11/02\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 1, \"ExemptClockText\": \"是\" }\n , { \"seniorityY\": 20, \"seniorityM\": 4, \"seniorityMTotal\": 244, \"empId\": \"00018\", \"empName\": \"張靜怡\", \"empAddress\": \"test\", \"empPhone\": \"0912345678\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"張靜怡\", \"empSID\": \"A123456789\", \"email\": \"test@123.com\", \"gender\": 0, \"genderText\": \"女\", \"dateHire\": \"2001/01/01\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/11/02\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 0, \"ExemptClockText\": \"否\" }\n , { \"seniorityY\": 20, \"seniorityM\": 4, \"seniorityMTotal\": 244, \"empId\": \"00017\", \"empName\": \"潘冠尹\", \"empAddress\": \"test\", \"empPhone\": \"0912345678\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"潘冠尹\", \"empSID\": \"A123456789\", \"email\": \"test@msn.com\", \"gender\": 1, \"genderText\": \"男\", \"dateHire\": \"2001/01/01\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/11/02\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 1, \"ExemptClockText\": \"是\" }\n , { \"seniorityY\": 20, \"seniorityM\": 4, \"seniorityMTotal\": 244, \"empId\": \"00018\", \"empName\": \"張靜怡\", \"empAddress\": \"test\", \"empPhone\": \"0912345678\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"張靜怡\", \"empSID\": \"A123456789\", \"email\": \"test@123.com\", \"gender\": 0, \"genderText\": \"女\", \"dateHire\": \"2001/01/01\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/11/02\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 0, \"ExemptClockText\": \"否\" }\n , { \"seniorityY\": 20, \"seniorityM\": 4, \"seniorityMTotal\": 244, \"empId\": \"00017\", \"empName\": \"潘冠尹\", \"empAddress\": \"test\", \"empPhone\": \"0912345678\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"潘冠尹\", \"empSID\": \"A123456789\", \"email\": \"test@msn.com\", \"gender\": 1, \"genderText\": \"男\", \"dateHire\": \"2001/01/01\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/11/02\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 1, \"ExemptClockText\": \"是\" }\n , { \"seniorityY\": 20, \"seniorityM\": 4, \"seniorityMTotal\": 244, \"empId\": \"00018\", \"empName\": \"張三豐\", \"empAddress\": \"test\", \"empPhone\": \"0912345678\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"張靜怡\", \"empSID\": \"A123456789\", \"email\": \"test@123.com\", \"gender\": 0, \"genderText\": \"女\", \"dateHire\": \"2001/01/01\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/11/02\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 0, \"ExemptClockText\": \"否\" }\n , { \"seniorityY\": 20, \"seniorityM\": 4, \"seniorityMTotal\": 244, \"empId\": \"00017\", \"empName\": \"潘冠尹\", \"empAddress\": \"test\", \"empPhone\": \"0912345678\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"潘冠尹\", \"empSID\": \"A123456789\", \"email\": \"test@msn.com\", \"gender\": 1, \"genderText\": \"男\", \"dateHire\": \"2001/01/01\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/11/02\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 1, \"ExemptClockText\": \"是\" }\n , { \"seniorityY\": 20, \"seniorityM\": 4, \"seniorityMTotal\": 244, \"empId\": \"00018\", \"empName\": \"張靜怡\", \"empAddress\": \"test\", \"empPhone\": \"0912345678\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"張靜怡\", \"empSID\": \"A123456789\", \"email\": \"test@123.com\", \"gender\": 0, \"genderText\": \"女\", \"dateHire\": \"2001/01/01\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/11/02\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 0, \"ExemptClockText\": \"否\" }\n , { \"seniorityY\": 20, \"seniorityM\": 4, \"seniorityMTotal\": 244, \"empId\": \"00017\", \"empName\": \"潘冠尹\", \"empAddress\": \"test\", \"empPhone\": \"0912345678\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"潘冠尹\", \"empSID\": \"A123456789\", \"email\": \"test@msn.com\", \"gender\": 1, \"genderText\": \"男\", \"dateHire\": \"2001/01/01\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/11/02\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 1, \"ExemptClockText\": \"是\" }\n , { \"seniorityY\": 20, \"seniorityM\": 4, \"seniorityMTotal\": 244, \"empId\": \"00018\", \"empName\": \"張靜怡\", \"empAddress\": \"test\", \"empPhone\": \"0912345678\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"張靜怡\", \"empSID\": \"A123456789\", \"email\": \"test@123.com\", \"gender\": 0, \"genderText\": \"女\", \"dateHire\": \"2001/01/01\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/11/02\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 0, \"ExemptClockText\": \"否\" }\n , { \"seniorityY\": 20, \"seniorityM\": 4, \"seniorityMTotal\": 244, \"empId\": \"00017\", \"empName\": \"潘冠尹\", \"empAddress\": \"test\", \"empPhone\": \"0912345678\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"潘冠尹\", \"empSID\": \"A123456789\", \"email\": \"test@msn.com\", \"gender\": 1, \"genderText\": \"男\", \"dateHire\": \"2001/01/01\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/11/02\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 1, \"ExemptClockText\": \"是\" }\n , { \"seniorityY\": 20, \"seniorityM\": 4, \"seniorityMTotal\": 244, \"empId\": \"00018\", \"empName\": \"張靜怡\", \"empAddress\": \"test\", \"empPhone\": \"0912345678\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"張靜怡\", \"empSID\": \"A123456789\", \"email\": \"test@123.com\", \"gender\": 0, \"genderText\": \"女\", \"dateHire\": \"2001/01/01\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/11/02\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 0, \"ExemptClockText\": \"否\" }\n , { \"seniorityY\": 20, \"seniorityM\": 4, \"seniorityMTotal\": 244, \"empId\": \"00017\", \"empName\": \"潘冠尹\", \"empAddress\": \"test\", \"empPhone\": \"0912345678\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"潘冠尹\", \"empSID\": \"A123456789\", \"email\": \"test@msn.com\", \"gender\": 1, \"genderText\": \"男\", \"dateHire\": \"2001/01/01\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/11/02\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 1, \"ExemptClockText\": \"是\" }\n , { \"seniorityY\": 20, \"seniorityM\": 4, \"seniorityMTotal\": 244, \"empId\": \"00018\", \"empName\": \"張三豐\", \"empAddress\": \"test\", \"empPhone\": \"0912345678\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"張靜怡\", \"empSID\": \"A123456789\", \"email\": \"test@123.com\", \"gender\": 0, \"genderText\": \"女\", \"dateHire\": \"2001/01/01\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/11/02\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 0, \"ExemptClockText\": \"否\" }\n , { \"seniorityY\": 20, \"seniorityM\": 4, \"seniorityMTotal\": 244, \"empId\": \"00017\", \"empName\": \"潘冠尹\", \"empAddress\": \"test\", \"empPhone\": \"0912345678\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"潘冠尹\", \"empSID\": \"A123456789\", \"email\": \"test@msn.com\", \"gender\": 1, \"genderText\": \"男\", \"dateHire\": \"2001/01/01\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/11/02\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 1, \"ExemptClockText\": \"是\" }\n , { \"seniorityY\": 20, \"seniorityM\": 4, \"seniorityMTotal\": 244, \"empId\": \"00018\", \"empName\": \"張靜怡\", \"empAddress\": \"test\", \"empPhone\": \"0912345678\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"張靜怡\", \"empSID\": \"A123456789\", \"email\": \"test@123.com\", \"gender\": 0, \"genderText\": \"女\", \"dateHire\": \"2001/01/01\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/11/02\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 0, \"ExemptClockText\": \"否\" }\n , { \"seniorityY\": 20, \"seniorityM\": 4, \"seniorityMTotal\": 244, \"empId\": \"00017\", \"empName\": \"潘冠尹\", \"empAddress\": \"test\", \"empPhone\": \"0912345678\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"潘冠尹\", \"empSID\": \"A123456789\", \"email\": \"test@msn.com\", \"gender\": 1, \"genderText\": \"男\", \"dateHire\": \"2001/01/01\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/11/02\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 1, \"ExemptClockText\": \"是\" }\n , { \"seniorityY\": 20, \"seniorityM\": 4, \"seniorityMTotal\": 244, \"empId\": \"00018\", \"empName\": \"張靜怡\", \"empAddress\": \"test\", \"empPhone\": \"0912345678\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"張靜怡\", \"empSID\": \"A123456789\", \"email\": \"test@123.com\", \"gender\": 0, \"genderText\": \"女\", \"dateHire\": \"2001/01/01\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/11/02\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 0, \"ExemptClockText\": \"否\" }\n , { \"seniorityY\": 20, \"seniorityM\": 4, \"seniorityMTotal\": 244, \"empId\": \"00017\", \"empName\": \"潘冠尹\", \"empAddress\": \"test\", \"empPhone\": \"0912345678\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"潘冠尹\", \"empSID\": \"A123456789\", \"email\": \"test@msn.com\", \"gender\": 1, \"genderText\": \"男\", \"dateHire\": \"2001/01/01\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/11/02\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 1, \"ExemptClockText\": \"是\" }\n , { \"seniorityY\": 30, \"seniorityM\": 4, \"seniorityMTotal\": 244, \"empId\": \"00018\", \"empName\": \"張靜怡\", \"empAddress\": \"test\", \"empPhone\": \"0912345678\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"張靜怡\", \"empSID\": \"A123456789\", \"email\": \"test@123.com\", \"gender\": 0, \"genderText\": \"女\", \"dateHire\": \"2001/01/01\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/11/02\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 0, \"ExemptClockText\": \"否\" }\n , { \"seniorityY\": 30, \"seniorityM\": 4, \"seniorityMTotal\": 244, \"empId\": \"00018\", \"empName\": \"許尊雄\", \"empAddress\": \"test\", \"empPhone\": \"0912345678\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"張靜怡\", \"empSID\": \"A123456789\", \"email\": \"test@123.com\", \"gender\": 0, \"genderText\": \"女\", \"dateHire\": \"2001/01/01\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/11/02\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 0, \"ExemptClockText\": \"否\" }\n , { \"seniorityY\": 30, \"seniorityM\": 4, \"seniorityMTotal\": 244, \"empId\": \"00018\", \"empName\": \"張靜怡\", \"empAddress\": \"test\", \"empPhone\": \"0912345678\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"張靜怡\", \"empSID\": \"A123456789\", \"email\": \"test@123.com\", \"gender\": 0, \"genderText\": \"女\", \"dateHire\": \"2001/01/01\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/11/02\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 0, \"ExemptClockText\": \"否\" }\n , { \"seniorityY\": 30, \"seniorityM\": 4, \"seniorityMTotal\": 244, \"empId\": \"00018\", \"empName\": \"許尊雄\", \"empAddress\": \"test\", \"empPhone\": \"0912345678\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"張靜怡\", \"empSID\": \"A123456789\", \"email\": \"test@123.com\", \"gender\": 0, \"genderText\": \"女\", \"dateHire\": \"2001/01/01\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/11/02\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 0, \"ExemptClockText\": \"否\" }\n , { \"seniorityY\": 30, \"seniorityM\": 4, \"seniorityMTotal\": 244, \"empId\": \"00018\", \"empName\": \"張靜怡\", \"empAddress\": \"test\", \"empPhone\": \"0912345678\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"張靜怡\", \"empSID\": \"A123456789\", \"email\": \"test@123.com\", \"gender\": 0, \"genderText\": \"女\", \"dateHire\": \"2001/01/01\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/11/02\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 0, \"ExemptClockText\": \"否\" }\n , { \"seniorityY\": 30, \"seniorityM\": 4, \"seniorityMTotal\": 244, \"empId\": \"00018\", \"empName\": \"吳宗憲\", \"empAddress\": \"test\", \"empPhone\": \"0912345678\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"張靜怡\", \"empSID\": \"A123456789\", \"email\": \"test@123.com\", \"gender\": 0, \"genderText\": \"女\", \"dateHire\": \"2001/01/01\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/11/02\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 0, \"ExemptClockText\": \"否\" }\n , { \"seniorityY\": 30, \"seniorityM\": 4, \"seniorityMTotal\": 244, \"empId\": \"00018\", \"empName\": \"許尊雄\", \"empAddress\": \"test\", \"empPhone\": \"0912345678\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"張靜怡\", \"empSID\": \"A123456789\", \"email\": \"test@123.com\", \"gender\": 0, \"genderText\": \"女\", \"dateHire\": \"2001/01/01\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/11/02\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 0, \"ExemptClockText\": \"否\" }\n , { \"seniorityY\": 30, \"seniorityM\": 4, \"seniorityMTotal\": 244, \"empId\": \"00018\", \"empName\": \"羅元邦\", \"empAddress\": \"test\", \"empPhone\": \"0912345678\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"張靜怡\", \"empSID\": \"A123456789\", \"email\": \"test@123.com\", \"gender\": 0, \"genderText\": \"女\", \"dateHire\": \"2001/01/01\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/11/02\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 0, \"ExemptClockText\": \"否\" }\n , { \"seniorityY\": 30, \"seniorityM\": 4, \"seniorityMTotal\": 244, \"empId\": \"00018\", \"empName\": \"張靜怡\", \"empAddress\": \"test\", \"empPhone\": \"0912345678\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"張靜怡\", \"empSID\": \"A123456789\", \"email\": \"test@123.com\", \"gender\": 0, \"genderText\": \"女\", \"dateHire\": \"2001/01/01\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/11/02\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 0, \"ExemptClockText\": \"否\" }\n , { \"seniorityY\": 30, \"seniorityM\": 4, \"seniorityMTotal\": 244, \"empId\": \"00018\", \"empName\": \"許尊雄\", \"empAddress\": \"test\", \"empPhone\": \"0912345678\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"張靜怡\", \"empSID\": \"A123456789\", \"email\": \"test@123.com\", \"gender\": 0, \"genderText\": \"女\", \"dateHire\": \"2001/01/01\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/11/02\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 0, \"ExemptClockText\": \"否\" }\n , { \"seniorityY\": 30, \"seniorityM\": 4, \"seniorityMTotal\": 244, \"empId\": \"00018\", \"empName\": \"張靜怡\", \"empAddress\": \"test\", \"empPhone\": \"0912345678\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"張靜怡\", \"empSID\": \"A123456789\", \"email\": \"test@123.com\", \"gender\": 0, \"genderText\": \"女\", \"dateHire\": \"2001/01/01\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/11/02\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 0, \"ExemptClockText\": \"否\" }\n , { \"seniorityY\": 30, \"seniorityM\": 4, \"seniorityMTotal\": 244, \"empId\": \"00018\", \"empName\": \"羅元邦\", \"empAddress\": \"test\", \"empPhone\": \"0912345678\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"張靜怡\", \"empSID\": \"A123456789\", \"email\": \"test@123.com\", \"gender\": 0, \"genderText\": \"女\", \"dateHire\": \"2001/01/01\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/11/02\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 0, \"ExemptClockText\": \"否\" }\n , { \"seniorityY\": 30, \"seniorityM\": 4, \"seniorityMTotal\": 244, \"empId\": \"00018\", \"empName\": \"張靜怡\", \"empAddress\": \"test\", \"empPhone\": \"0912345678\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"張靜怡\", \"empSID\": \"A123456789\", \"email\": \"test@123.com\", \"gender\": 0, \"genderText\": \"女\", \"dateHire\": \"2001/01/01\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/11/02\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 0, \"ExemptClockText\": \"否\" }\n , { \"seniorityY\": 30, \"seniorityM\": 4, \"seniorityMTotal\": 244, \"empId\": \"00018\", \"empName\": \"張靜怡\", \"empAddress\": \"test\", \"empPhone\": \"0912345678\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"張靜怡\", \"empSID\": \"A123456789\", \"email\": \"test@123.com\", \"gender\": 0, \"genderText\": \"女\", \"dateHire\": \"2001/01/01\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/11/02\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 0, \"ExemptClockText\": \"否\" }\n , { \"seniorityY\": 30, \"seniorityM\": 4, \"seniorityMTotal\": 244, \"empId\": \"00018\", \"empName\": \"王淑樺\", \"empAddress\": \"test\", \"empPhone\": \"0912345678\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"張靜怡\", \"empSID\": \"A123456789\", \"email\": \"test@123.com\", \"gender\": 0, \"genderText\": \"女\", \"dateHire\": \"2001/01/01\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/11/02\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 0, \"ExemptClockText\": \"否\" }\n , { \"seniorityY\": 30, \"seniorityM\": 4, \"seniorityMTotal\": 244, \"empId\": \"00018\", \"empName\": \"張靜怡\", \"empAddress\": \"test\", \"empPhone\": \"0912345678\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"張靜怡\", \"empSID\": \"A123456789\", \"email\": \"test@123.com\", \"gender\": 0, \"genderText\": \"女\", \"dateHire\": \"2001/01/01\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/11/02\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 0, \"ExemptClockText\": \"否\" }\n , { \"seniorityY\": 30, \"seniorityM\": 4, \"seniorityMTotal\": 244, \"empId\": \"00018\", \"empName\": \"劉德華\", \"empAddress\": \"test\", \"empPhone\": \"0912345678\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"張靜怡\", \"empSID\": \"A123456789\", \"email\": \"test@123.com\", \"gender\": 0, \"genderText\": \"女\", \"dateHire\": \"2001/01/01\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/11/02\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 0, \"ExemptClockText\": \"否\" }\n , { \"seniorityY\": 30, \"seniorityM\": 4, \"seniorityMTotal\": 244, \"empId\": \"00018\", \"empName\": \"郭家慶\", \"empAddress\": \"test\", \"empPhone\": \"0912345678\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"張靜怡\", \"empSID\": \"A123456789\", \"email\": \"test@123.com\", \"gender\": 0, \"genderText\": \"女\", \"dateHire\": \"2001/01/01\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/11/02\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 0, \"ExemptClockText\": \"否\" }\n , { \"seniorityY\": 30, \"seniorityM\": 4, \"seniorityMTotal\": 244, \"empId\": \"00018\", \"empName\": \"張靜怡\", \"empAddress\": \"test\", \"empPhone\": \"0912345678\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"張靜怡\", \"empSID\": \"A123456789\", \"email\": \"test@123.com\", \"gender\": 0, \"genderText\": \"女\", \"dateHire\": \"2001/01/01\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/11/02\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 0, \"ExemptClockText\": \"否\" }\n , { \"seniorityY\": 30, \"seniorityM\": 4, \"seniorityMTotal\": 244, \"empId\": \"00018\", \"empName\": \"許尊雄\", \"empAddress\": \"test\", \"empPhone\": \"0912345678\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"張靜怡\", \"empSID\": \"A123456789\", \"email\": \"test@123.com\", \"gender\": 0, \"genderText\": \"女\", \"dateHire\": \"2001/01/01\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/11/02\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 0, \"ExemptClockText\": \"否\" }\n , { \"seniorityY\": 30, \"seniorityM\": 4, \"seniorityMTotal\": 300, \"empId\": \"00018\", \"empName\": \"郭家慶\", \"empAddress\": \"test\", \"empPhone\": \"0912345678\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"張靜怡\", \"empSID\": \"A123456789\", \"email\": \"test@123.com\", \"gender\": 0, \"genderText\": \"女\", \"dateHire\": \"2001/01/01\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/11/02\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 0, \"ExemptClockText\": \"否\" }\n , { \"seniorityY\": 30, \"seniorityM\": 4, \"seniorityMTotal\": 244, \"empId\": \"00018\", \"empName\": \"簡漢仲\", \"empAddress\": \"test\", \"empPhone\": \"0912345678\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"張靜怡\", \"empSID\": \"A123456789\", \"email\": \"test@123.com\", \"gender\": 0, \"genderText\": \"女\", \"dateHire\": \"2001/01/01\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/11/02\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 0, \"ExemptClockText\": \"否\" }\n , { \"seniorityY\": 30, \"seniorityM\": 4, \"seniorityMTotal\": 244, \"empId\": \"00018\", \"empName\": \"張靜怡\", \"empAddress\": \"test\", \"empPhone\": \"0912345678\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"張靜怡\", \"empSID\": \"A123456789\", \"email\": \"test@123.com\", \"gender\": 0, \"genderText\": \"女\", \"dateHire\": \"2001/01/01\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/11/02\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 0, \"ExemptClockText\": \"否\" }\n , { \"seniorityY\": 30, \"seniorityM\": 4, \"seniorityMTotal\": 244, \"empId\": \"00018\", \"empName\": \"郭家慶\", \"empAddress\": \"test\", \"empPhone\": \"0912345678\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"張靜怡\", \"empSID\": \"A123456789\", \"email\": \"test@123.com\", \"gender\": 0, \"genderText\": \"女\", \"dateHire\": \"2001/01/01\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/11/02\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 0, \"ExemptClockText\": \"否\" }\n , { \"seniorityY\": 30, \"seniorityM\": 4, \"seniorityMTotal\": 244, \"empId\": \"00018\", \"empName\": \"張靜怡\", \"empAddress\": \"test\", \"empPhone\": \"0912345678\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"張靜怡\", \"empSID\": \"A123456789\", \"email\": \"test@123.com\", \"gender\": 0, \"genderText\": \"女\", \"dateHire\": \"2001/01/01\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/11/02\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 0, \"ExemptClockText\": \"否\" }\n , { \"seniorityY\": 30, \"seniorityM\": 4, \"seniorityMTotal\": 244, \"empId\": \"00018\", \"empName\": \"郭家慶\", \"empAddress\": \"test\", \"empPhone\": \"0912345678\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"張靜怡\", \"empSID\": \"A123456789\", \"email\": \"test@123.com\", \"gender\": 0, \"genderText\": \"女\", \"dateHire\": \"2001/01/01\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/11/02\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 0, \"ExemptClockText\": \"否\" }\n , { \"seniorityY\": 30, \"seniorityM\": 4, \"seniorityMTotal\": 244, \"empId\": \"00018\", \"empName\": \"張靜怡\", \"empAddress\": \"test\", \"empPhone\": \"0912345678\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"張靜怡\", \"empSID\": \"A123456789\", \"email\": \"test@123.com\", \"gender\": 0, \"genderText\": \"女\", \"dateHire\": \"2001/01/01\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/11/02\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 0, \"ExemptClockText\": \"否\" }\n , { \"seniorityY\": 3, \"seniorityM\": 11, \"seniorityMTotal\": 47, \"empId\": \"00003\", \"empName\": \"王淑樺\", \"empAddress\": \"台中市太平區中山路二段477巷31弄1號3F\", \"empPhone\": \"0919-085770\", \"companyId\": \"003\", \"companyName\": \"江陰宗承鋼鐵有限公司\", \"empAccount\": \"Duke\", \"empSID\": \"L123456789\", \"email\": \"redredxiii@msn.com\", \"gender\": 1, \"genderText\": \"男\", \"dateHire\": \"2016/02/27\", \"dateQuit\": \"2020/02/26\", \"dateBirth\": \"1983/10/13\", \"dateCreate\": \"2019/06/19\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 0, \"ExemptClockText\": \"否\" }\n , { \"seniorityY\": 1, \"seniorityM\": 0, \"seniorityMTotal\": 12, \"empId\": \"00006\", \"empName\": \"施佩吟\", \"empAddress\": \"3213\", \"empPhone\": \"0932673050\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"施佩吟\", \"empSID\": \"K112333444\", \"email\": \"123@yahoo.com\", \"gender\": 0, \"genderText\": \"女\", \"dateHire\": \"2020/04/11\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/04/06\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 1, \"ExemptClockText\": \"是\" }\n , { \"seniorityY\": 3, \"seniorityM\": 11, \"seniorityMTotal\": 47, \"empId\": \"00003\", \"empName\": \"張江行\", \"empAddress\": \"台中市太平區中山路二段477巷31弄1號3F\", \"empPhone\": \"0919-085770\", \"companyId\": \"003\", \"companyName\": \"江陰宗承鋼鐵有限公司\", \"empAccount\": \"Duke\", \"empSID\": \"L123456789\", \"email\": \"redredxiii@msn.com\", \"gender\": 1, \"genderText\": \"男\", \"dateHire\": \"2016/02/27\", \"dateQuit\": \"2020/02/26\", \"dateBirth\": \"1983/10/13\", \"dateCreate\": \"2019/06/19\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 0, \"ExemptClockText\": \"否\" }\n , { \"seniorityY\": 1, \"seniorityM\": 0, \"seniorityMTotal\": 12, \"empId\": \"00006\", \"empName\": \"施佩吟\", \"empAddress\": \"3213\", \"empPhone\": \"0932673050\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"施佩吟\", \"empSID\": \"K112333444\", \"email\": \"123@yahoo.com\", \"gender\": 0, \"genderText\": \"女\", \"dateHire\": \"2020/04/11\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/04/06\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 1, \"ExemptClockText\": \"是\" }\n , { \"seniorityY\": 3, \"seniorityM\": 11, \"seniorityMTotal\": 47, \"empId\": \"00003\", \"empName\": \"陳小名\", \"empAddress\": \"台中市太平區中山路二段477巷31弄1號3F\", \"empPhone\": \"0919-085770\", \"companyId\": \"003\", \"companyName\": \"江陰宗承鋼鐵有限公司\", \"empAccount\": \"Duke\", \"empSID\": \"L123456789\", \"email\": \"redredxiii@msn.com\", \"gender\": 1, \"genderText\": \"男\", \"dateHire\": \"2016/02/27\", \"dateQuit\": \"2020/02/26\", \"dateBirth\": \"1983/10/13\", \"dateCreate\": \"2019/06/19\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 0, \"ExemptClockText\": \"否\" }\n , { \"seniorityY\": 1, \"seniorityM\": 0, \"seniorityMTotal\": 12, \"empId\": \"00006\", \"empName\": \"施佩吟\", \"empAddress\": \"3213\", \"empPhone\": \"0932673050\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"施佩吟\", \"empSID\": \"K112333444\", \"email\": \"123@yahoo.com\", \"gender\": 0, \"genderText\": \"女\", \"dateHire\": \"2020/04/11\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/04/06\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 1, \"ExemptClockText\": \"是\" }\n , { \"seniorityY\": 3, \"seniorityM\": 11, \"seniorityMTotal\": 47, \"empId\": \"00003\", \"empName\": \"陳小名\", \"empAddress\": \"台中市太平區中山路二段477巷31弄1號3F\", \"empPhone\": \"0919-085770\", \"companyId\": \"003\", \"companyName\": \"江陰宗承鋼鐵有限公司\", \"empAccount\": \"Duke\", \"empSID\": \"L123456789\", \"email\": \"redredxiii@msn.com\", \"gender\": 1, \"genderText\": \"男\", \"dateHire\": \"2016/02/27\", \"dateQuit\": \"2020/02/26\", \"dateBirth\": \"1983/10/13\", \"dateCreate\": \"2019/06/19\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 0, \"ExemptClockText\": \"否\" }\n , { \"seniorityY\": 1, \"seniorityM\": 0, \"seniorityMTotal\": 12, \"empId\": \"00006\", \"empName\": \"施佩吟\", \"empAddress\": \"3213\", \"empPhone\": \"0932673050\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"施佩吟\", \"empSID\": \"K112333444\", \"email\": \"123@yahoo.com\", \"gender\": 0, \"genderText\": \"女\", \"dateHire\": \"2020/04/11\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/04/06\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 1, \"ExemptClockText\": \"是\" }\n , { \"seniorityY\": 3, \"seniorityM\": 11, \"seniorityMTotal\": 47, \"empId\": \"00003\", \"empName\": \"張江行\", \"empAddress\": \"台中市太平區中山路二段477巷31弄1號3F\", \"empPhone\": \"0919-085770\", \"companyId\": \"003\", \"companyName\": \"江陰宗承鋼鐵有限公司\", \"empAccount\": \"Duke\", \"empSID\": \"L123456789\", \"email\": \"redredxiii@msn.com\", \"gender\": 1, \"genderText\": \"男\", \"dateHire\": \"2016/02/27\", \"dateQuit\": \"2020/02/26\", \"dateBirth\": \"1983/10/13\", \"dateCreate\": \"2019/06/19\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 0, \"ExemptClockText\": \"否\" }\n , { \"seniorityY\": 1, \"seniorityM\": 0, \"seniorityMTotal\": 12, \"empId\": \"00006\", \"empName\": \"施佩吟\", \"empAddress\": \"3213\", \"empPhone\": \"0932673050\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"施佩吟\", \"empSID\": \"K112333444\", \"email\": \"123@yahoo.com\", \"gender\": 0, \"genderText\": \"女\", \"dateHire\": \"2020/04/11\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/04/06\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 1, \"ExemptClockText\": \"是\" }\n , { \"seniorityY\": 3, \"seniorityM\": 11, \"seniorityMTotal\": 47, \"empId\": \"00003\", \"empName\": \"張江行\", \"empAddress\": \"台中市太平區中山路二段477巷31弄1號3F\", \"empPhone\": \"0919-085770\", \"companyId\": \"003\", \"companyName\": \"江陰宗承鋼鐵有限公司\", \"empAccount\": \"Duke\", \"empSID\": \"L123456789\", \"email\": \"redredxiii@msn.com\", \"gender\": 1, \"genderText\": \"男\", \"dateHire\": \"2016/02/27\", \"dateQuit\": \"2020/02/26\", \"dateBirth\": \"1983/10/13\", \"dateCreate\": \"2019/06/19\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 0, \"ExemptClockText\": \"否\" }\n , { \"seniorityY\": 1, \"seniorityM\": 0, \"seniorityMTotal\": 12, \"empId\": \"00006\", \"empName\": \"施佩吟\", \"empAddress\": \"3213\", \"empPhone\": \"0932673050\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"施佩吟\", \"empSID\": \"K112333444\", \"email\": \"123@yahoo.com\", \"gender\": 0, \"genderText\": \"女\", \"dateHire\": \"2020/04/11\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/04/06\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 1, \"ExemptClockText\": \"是\" }\n , { \"seniorityY\": 3, \"seniorityM\": 11, \"seniorityMTotal\": 47, \"empId\": \"00003\", \"empName\": \"張江行\", \"empAddress\": \"台中市太平區中山路二段477巷31弄1號3F\", \"empPhone\": \"0919-085770\", \"companyId\": \"003\", \"companyName\": \"江陰宗承鋼鐵有限公司\", \"empAccount\": \"Duke\", \"empSID\": \"L123456789\", \"email\": \"redredxiii@msn.com\", \"gender\": 1, \"genderText\": \"男\", \"dateHire\": \"2016/02/27\", \"dateQuit\": \"2020/02/26\", \"dateBirth\": \"1983/10/13\", \"dateCreate\": \"2019/06/19\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 0, \"ExemptClockText\": \"否\" }\n , { \"seniorityY\": 1, \"seniorityM\": 0, \"seniorityMTotal\": 12, \"empId\": \"00006\", \"empName\": \"郭富城\", \"empAddress\": \"3213\", \"empPhone\": \"0932673050\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"施佩吟\", \"empSID\": \"K112333444\", \"email\": \"123@yahoo.com\", \"gender\": 0, \"genderText\": \"女\", \"dateHire\": \"2020/04/11\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/04/06\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 1, \"ExemptClockText\": \"是\" }\n , { \"seniorityY\": 3, \"seniorityM\": 11, \"seniorityMTotal\": 47, \"empId\": \"00003\", \"empName\": \"張江行\", \"empAddress\": \"台中市太平區中山路二段477巷31弄1號3F\", \"empPhone\": \"0919-085770\", \"companyId\": \"003\", \"companyName\": \"江陰宗承鋼鐵有限公司\", \"empAccount\": \"Duke\", \"empSID\": \"L123456789\", \"email\": \"redredxiii@msn.com\", \"gender\": 1, \"genderText\": \"男\", \"dateHire\": \"2016/02/27\", \"dateQuit\": \"2020/02/26\", \"dateBirth\": \"1983/10/13\", \"dateCreate\": \"2019/06/19\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 0, \"ExemptClockText\": \"否\" }\n , { \"seniorityY\": 1, \"seniorityM\": 0, \"seniorityMTotal\": 12, \"empId\": \"00006\", \"empName\": \"施佩吟\", \"empAddress\": \"3213\", \"empPhone\": \"0932673050\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"施佩吟\", \"empSID\": \"K112333444\", \"email\": \"123@yahoo.com\", \"gender\": 0, \"genderText\": \"女\", \"dateHire\": \"2020/04/11\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/04/06\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 1, \"ExemptClockText\": \"是\" }\n , { \"seniorityY\": 3, \"seniorityM\": 11, \"seniorityMTotal\": 47, \"empId\": \"00003\", \"empName\": \"張江行\", \"empAddress\": \"台中市太平區中山路二段477巷31弄1號3F\", \"empPhone\": \"0919-085770\", \"companyId\": \"003\", \"companyName\": \"江陰宗承鋼鐵有限公司\", \"empAccount\": \"Duke\", \"empSID\": \"L123456789\", \"email\": \"redredxiii@msn.com\", \"gender\": 1, \"genderText\": \"男\", \"dateHire\": \"2016/02/27\", \"dateQuit\": \"2020/02/26\", \"dateBirth\": \"1983/10/13\", \"dateCreate\": \"2019/06/19\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 0, \"ExemptClockText\": \"否\" }\n , { \"seniorityY\": 1, \"seniorityM\": 0, \"seniorityMTotal\": 12, \"empId\": \"00006\", \"empName\": \"施佩吟\", \"empAddress\": \"3213\", \"empPhone\": \"0932673050\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"施佩吟\", \"empSID\": \"K112333444\", \"email\": \"123@yahoo.com\", \"gender\": 0, \"genderText\": \"女\", \"dateHire\": \"2020/04/11\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/04/06\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 1, \"ExemptClockText\": \"是\" }\n , { \"seniorityY\": 3, \"seniorityM\": 11, \"seniorityMTotal\": 47, \"empId\": \"00003\", \"empName\": \"陳小名\", \"empAddress\": \"台中市太平區中山路二段477巷31弄1號3F\", \"empPhone\": \"0919-085770\", \"companyId\": \"003\", \"companyName\": \"江陰宗承鋼鐵有限公司\", \"empAccount\": \"Duke\", \"empSID\": \"L123456789\", \"email\": \"redredxiii@msn.com\", \"gender\": 1, \"genderText\": \"男\", \"dateHire\": \"2016/02/27\", \"dateQuit\": \"2020/02/26\", \"dateBirth\": \"1983/10/13\", \"dateCreate\": \"2019/06/19\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 0, \"ExemptClockText\": \"否\" }\n , { \"seniorityY\": 1, \"seniorityM\": 0, \"seniorityMTotal\": 12, \"empId\": \"00006\", \"empName\": \"施佩吟\", \"empAddress\": \"3213\", \"empPhone\": \"0932673050\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"施佩吟\", \"empSID\": \"K112333444\", \"email\": \"123@yahoo.com\", \"gender\": 0, \"genderText\": \"女\", \"dateHire\": \"2020/04/11\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/04/06\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 1, \"ExemptClockText\": \"是\" }\n , { \"seniorityY\": 3, \"seniorityM\": 11, \"seniorityMTotal\": 47, \"empId\": \"00003\", \"empName\": \"張江行\", \"empAddress\": \"台中市太平區中山路二段477巷31弄1號3F\", \"empPhone\": \"0919-085770\", \"companyId\": \"003\", \"companyName\": \"江陰宗承鋼鐵有限公司\", \"empAccount\": \"Duke\", \"empSID\": \"L123456789\", \"email\": \"redredxiii@msn.com\", \"gender\": 1, \"genderText\": \"男\", \"dateHire\": \"2016/02/27\", \"dateQuit\": \"2020/02/26\", \"dateBirth\": \"1983/10/13\", \"dateCreate\": \"2019/06/19\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 0, \"ExemptClockText\": \"否\" }\n , { \"seniorityY\": 1, \"seniorityM\": 0, \"seniorityMTotal\": 12, \"empId\": \"00006\", \"empName\": \"施佩吟\", \"empAddress\": \"3213\", \"empPhone\": \"0932673050\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"施佩吟\", \"empSID\": \"K112333444\", \"email\": \"123@yahoo.com\", \"gender\": 0, \"genderText\": \"女\", \"dateHire\": \"2020/04/11\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/04/06\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 1, \"ExemptClockText\": \"是\" }\n , { \"seniorityY\": 3, \"seniorityM\": 11, \"seniorityMTotal\": 47, \"empId\": \"00003\", \"empName\": \"風清揚\", \"empAddress\": \"台中市太平區中山路二段477巷31弄1號3F\", \"empPhone\": \"0919-085770\", \"companyId\": \"003\", \"companyName\": \"江陰宗承鋼鐵有限公司\", \"empAccount\": \"Duke\", \"empSID\": \"L123456789\", \"email\": \"redredxiii@msn.com\", \"gender\": 1, \"genderText\": \"男\", \"dateHire\": \"2016/02/27\", \"dateQuit\": \"2020/02/26\", \"dateBirth\": \"1983/10/13\", \"dateCreate\": \"2019/06/19\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 0, \"ExemptClockText\": \"否\" }\n , { \"seniorityY\": 1, \"seniorityM\": 0, \"seniorityMTotal\": 12, \"empId\": \"00006\", \"empName\": \"施佩吟\", \"empAddress\": \"3213\", \"empPhone\": \"0932673050\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"施佩吟\", \"empSID\": \"K112333444\", \"email\": \"123@yahoo.com\", \"gender\": 0, \"genderText\": \"女\", \"dateHire\": \"2020/04/11\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/04/06\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 1, \"ExemptClockText\": \"是\" }\n , { \"seniorityY\": 3, \"seniorityM\": 11, \"seniorityMTotal\": 47, \"empId\": \"00003\", \"empName\": \"張江行\", \"empAddress\": \"台中市太平區中山路二段477巷31弄1號3F\", \"empPhone\": \"0919-085770\", \"companyId\": \"003\", \"companyName\": \"江陰宗承鋼鐵有限公司\", \"empAccount\": \"Duke\", \"empSID\": \"L123456789\", \"email\": \"redredxiii@msn.com\", \"gender\": 1, \"genderText\": \"男\", \"dateHire\": \"2016/02/27\", \"dateQuit\": \"2020/02/26\", \"dateBirth\": \"1983/10/13\", \"dateCreate\": \"2019/06/19\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 0, \"ExemptClockText\": \"否\" }\n , { \"seniorityY\": 1, \"seniorityM\": 0, \"seniorityMTotal\": 12, \"empId\": \"00006\", \"empName\": \"施佩吟\", \"empAddress\": \"3213\", \"empPhone\": \"0932673050\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"施佩吟\", \"empSID\": \"K112333444\", \"email\": \"123@yahoo.com\", \"gender\": 0, \"genderText\": \"女\", \"dateHire\": \"2020/04/11\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/04/06\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 1, \"ExemptClockText\": \"是\" }\n , { \"seniorityY\": 3, \"seniorityM\": 11, \"seniorityMTotal\": 47, \"empId\": \"00003\", \"empName\": \"張江行\", \"empAddress\": \"台中市太平區中山路二段477巷31弄1號3F\", \"empPhone\": \"0919-085770\", \"companyId\": \"003\", \"companyName\": \"江陰宗承鋼鐵有限公司\", \"empAccount\": \"Duke\", \"empSID\": \"L123456789\", \"email\": \"redredxiii@msn.com\", \"gender\": 1, \"genderText\": \"男\", \"dateHire\": \"2016/02/27\", \"dateQuit\": \"2020/02/26\", \"dateBirth\": \"1983/10/13\", \"dateCreate\": \"2019/06/19\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 0, \"ExemptClockText\": \"否\" }\n , { \"seniorityY\": 1, \"seniorityM\": 0, \"seniorityMTotal\": 12, \"empId\": \"00006\", \"empName\": \"施佩吟\", \"empAddress\": \"3213\", \"empPhone\": \"0932673050\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"施佩吟\", \"empSID\": \"K112333444\", \"email\": \"123@yahoo.com\", \"gender\": 0, \"genderText\": \"女\", \"dateHire\": \"2020/04/11\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/04/06\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 1, \"ExemptClockText\": \"是\" }\n , { \"seniorityY\": 3, \"seniorityM\": 11, \"seniorityMTotal\": 47, \"empId\": \"00003\", \"empName\": \"張江行\", \"empAddress\": \"台中市太平區中山路二段477巷31弄1號3F\", \"empPhone\": \"0919-085770\", \"companyId\": \"003\", \"companyName\": \"江陰宗承鋼鐵有限公司\", \"empAccount\": \"Duke\", \"empSID\": \"L123456789\", \"email\": \"redredxiii@msn.com\", \"gender\": 1, \"genderText\": \"男\", \"dateHire\": \"2016/02/27\", \"dateQuit\": \"2020/02/26\", \"dateBirth\": \"1983/10/13\", \"dateCreate\": \"2019/06/19\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 0, \"ExemptClockText\": \"否\" }\n , { \"seniorityY\": 1, \"seniorityM\": 0, \"seniorityMTotal\": 12, \"empId\": \"00006\", \"empName\": \"施佩吟\", \"empAddress\": \"3213\", \"empPhone\": \"0932673050\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"施佩吟\", \"empSID\": \"K112333444\", \"email\": \"123@yahoo.com\", \"gender\": 0, \"genderText\": \"女\", \"dateHire\": \"2020/04/11\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/04/06\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 1, \"ExemptClockText\": \"是\" }\n , { \"seniorityY\": 3, \"seniorityM\": 11, \"seniorityMTotal\": 47, \"empId\": \"00003\", \"empName\": \"張江行\", \"empAddress\": \"台中市太平區中山路二段477巷31弄1號3F\", \"empPhone\": \"0919-085770\", \"companyId\": \"003\", \"companyName\": \"江陰宗承鋼鐵有限公司\", \"empAccount\": \"Duke\", \"empSID\": \"L123456789\", \"email\": \"redredxiii@msn.com\", \"gender\": 1, \"genderText\": \"男\", \"dateHire\": \"2016/02/27\", \"dateQuit\": \"2020/02/26\", \"dateBirth\": \"1983/10/13\", \"dateCreate\": \"2019/06/19\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 0, \"ExemptClockText\": \"否\" }\n , { \"seniorityY\": 1, \"seniorityM\": 0, \"seniorityMTotal\": 12, \"empId\": \"00006\", \"empName\": \"施佩吟\", \"empAddress\": \"3213\", \"empPhone\": \"0932673050\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"施佩吟\", \"empSID\": \"K112333444\", \"email\": \"123@yahoo.com\", \"gender\": 0, \"genderText\": \"女\", \"dateHire\": \"2020/04/11\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/04/06\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 1, \"ExemptClockText\": \"是\" }\n , { \"seniorityY\": 3, \"seniorityM\": 11, \"seniorityMTotal\": 47, \"empId\": \"00003\", \"empName\": \"張江行\", \"empAddress\": \"台中市太平區中山路二段477巷31弄1號3F\", \"empPhone\": \"0919-085770\", \"companyId\": \"003\", \"companyName\": \"江陰宗承鋼鐵有限公司\", \"empAccount\": \"Duke\", \"empSID\": \"L123456789\", \"email\": \"redredxiii@msn.com\", \"gender\": 1, \"genderText\": \"男\", \"dateHire\": \"2016/02/27\", \"dateQuit\": \"2020/02/26\", \"dateBirth\": \"1983/10/13\", \"dateCreate\": \"2019/06/19\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 0, \"ExemptClockText\": \"否\" }\n , { \"seniorityY\": 1, \"seniorityM\": 0, \"seniorityMTotal\": 12, \"empId\": \"00006\", \"empName\": \"施佩吟\", \"empAddress\": \"3213\", \"empPhone\": \"0932673050\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"施佩吟\", \"empSID\": \"K112333444\", \"email\": \"123@yahoo.com\", \"gender\": 0, \"genderText\": \"女\", \"dateHire\": \"2020/04/11\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/04/06\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 1, \"ExemptClockText\": \"是\" }\n , { \"seniorityY\": 3, \"seniorityM\": 11, \"seniorityMTotal\": 47, \"empId\": \"00003\", \"empName\": \"張江行\", \"empAddress\": \"台中市太平區中山路二段477巷31弄1號3F\", \"empPhone\": \"0919-085770\", \"companyId\": \"003\", \"companyName\": \"江陰宗承鋼鐵有限公司\", \"empAccount\": \"Duke\", \"empSID\": \"L123456789\", \"email\": \"redredxiii@msn.com\", \"gender\": 1, \"genderText\": \"男\", \"dateHire\": \"2016/02/27\", \"dateQuit\": \"2020/02/26\", \"dateBirth\": \"1983/10/13\", \"dateCreate\": \"2019/06/19\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 0, \"ExemptClockText\": \"否\" }\n , { \"seniorityY\": 1, \"seniorityM\": 0, \"seniorityMTotal\": 12, \"empId\": \"00006\", \"empName\": \"施佩吟\", \"empAddress\": \"3213\", \"empPhone\": \"0932673050\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"施佩吟\", \"empSID\": \"K112333444\", \"email\": \"123@yahoo.com\", \"gender\": 0, \"genderText\": \"女\", \"dateHire\": \"2020/04/11\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/04/06\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 1, \"ExemptClockText\": \"是\" }\n , { \"seniorityY\": 3, \"seniorityM\": 11, \"seniorityMTotal\": 47, \"empId\": \"00003\", \"empName\": \"張翠山\", \"empAddress\": \"台中市太平區中山路二段477巷31弄1號3F\", \"empPhone\": \"0919-085770\", \"companyId\": \"003\", \"companyName\": \"江陰宗承鋼鐵有限公司\", \"empAccount\": \"Duke\", \"empSID\": \"L123456789\", \"email\": \"redredxiii@msn.com\", \"gender\": 1, \"genderText\": \"男\", \"dateHire\": \"2016/02/27\", \"dateQuit\": \"2020/02/26\", \"dateBirth\": \"1983/10/13\", \"dateCreate\": \"2019/06/19\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 0, \"ExemptClockText\": \"否\" }\n , { \"seniorityY\": 1, \"seniorityM\": 0, \"seniorityMTotal\": 12, \"empId\": \"00006\", \"empName\": \"施佩吟\", \"empAddress\": \"3213\", \"empPhone\": \"0932673050\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"施佩吟\", \"empSID\": \"K112333444\", \"email\": \"123@yahoo.com\", \"gender\": 0, \"genderText\": \"女\", \"dateHire\": \"2020/04/11\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/04/06\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 1, \"ExemptClockText\": \"是\" }\n , { \"seniorityY\": 3, \"seniorityM\": 11, \"seniorityMTotal\": 47, \"empId\": \"00003\", \"empName\": \"簡漢仲\", \"empAddress\": \"台中市太平區中山路二段477巷31弄1號3F\", \"empPhone\": \"0919-085770\", \"companyId\": \"003\", \"companyName\": \"江陰宗承鋼鐵有限公司\", \"empAccount\": \"Duke\", \"empSID\": \"L123456789\", \"email\": \"redredxiii@msn.com\", \"gender\": 1, \"genderText\": \"男\", \"dateHire\": \"2016/02/27\", \"dateQuit\": \"2020/02/26\", \"dateBirth\": \"1983/10/13\", \"dateCreate\": \"2019/06/19\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 0, \"ExemptClockText\": \"否\" }\n , { \"seniorityY\": 1, \"seniorityM\": 0, \"seniorityMTotal\": 12, \"empId\": \"00006\", \"empName\": \"施佩吟\", \"empAddress\": \"3213\", \"empPhone\": \"0932673050\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"施佩吟\", \"empSID\": \"K112333444\", \"email\": \"123@yahoo.com\", \"gender\": 0, \"genderText\": \"女\", \"dateHire\": \"2020/04/11\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/04/06\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 1, \"ExemptClockText\": \"是\" }\n , { \"seniorityY\": 3, \"seniorityM\": 11, \"seniorityMTotal\": 47, \"empId\": \"00003\", \"empName\": \"張江行\", \"empAddress\": \"台中市太平區中山路二段477巷31弄1號3F\", \"empPhone\": \"0919-085770\", \"companyId\": \"003\", \"companyName\": \"江陰宗承鋼鐵有限公司\", \"empAccount\": \"Duke\", \"empSID\": \"L123456789\", \"email\": \"redredxiii@msn.com\", \"gender\": 1, \"genderText\": \"男\", \"dateHire\": \"2016/02/27\", \"dateQuit\": \"2020/02/26\", \"dateBirth\": \"1983/10/13\", \"dateCreate\": \"2019/06/19\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 0, \"ExemptClockText\": \"否\" }\n , { \"seniorityY\": 1, \"seniorityM\": 0, \"seniorityMTotal\": 12, \"empId\": \"00006\", \"empName\": \"休葛蘭\", \"empAddress\": \"3213\", \"empPhone\": \"0932673050\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"施佩吟\", \"empSID\": \"K112333444\", \"email\": \"123@yahoo.com\", \"gender\": 0, \"genderText\": \"女\", \"dateHire\": \"2020/04/11\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/04/06\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 1, \"ExemptClockText\": \"是\" }\n , { \"seniorityY\": 30, \"seniorityM\": 5, \"seniorityMTotal\": 300, \"empId\": \"00018\", \"empName\": \"陳怡靜\", \"empAddress\": \"test\", \"empPhone\": \"0912345678\", \"companyId\": \"001\", \"companyName\": \"立勳聯合會計師事務所\", \"empAccount\": \"張靜怡\", \"empSID\": \"A123456789\", \"email\": \"test@123.com\", \"gender\": 0, \"genderText\": \"女\", \"dateHire\": \"2001/01/01\", \"dateQuit\": null, \"dateBirth\": \"2001/01/01\", \"dateCreate\": \"2020/11/02\", \"pensionRate\": 0.0, \"sqShift\": 4, \"shiftsName\": \"正常班\", \"sqJobsType\": 1.0, \"JobsTypeName\": \"FT\", \"ExemptClock\": 0, \"ExemptClockText\": \"否\" }\n ]\n\n\n setRows(prevState => (ary))\n\n setOrderRows(prev => [...PF.dataSheetGridFormat(ary, Object.keys(showColumns))])\n // console.log(rows);\n\n }\n //\n\n const GOROW = () => {\n listRef.current.scrollToItem(300, \"center\");\n }\n const changeMulti = () => {\n setMultiChk(!multiChk);\n // setMultipleCheckSelection(true)\n }\n const showCheckBox = (e) => {\n console.log(checkSelections);\n }\n React.useEffect(() => {\n console.log(\"page Change:\" + pageNo)\n }, [pageNo])\n const SelectSomeCell = e => {\n setSelected({ start: { i: 0, j: 0 }, end: { i: 0, j: 0 } })\n }\n const displayChk = e => {\n setEnableCheck(prev => !prev)\n }\n return (\n \n \n \n \n \n \n \n\n \n\n \n )\n\n}, isEqual)\n\nexport default Table","import React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport ImageList from '@material-ui/core/ImageList';\nimport ImageListItem from '@material-ui/core/ImageListItem';\nimport ImageListItemBar from '@material-ui/core/ImageListItemBar';\nimport ListSubheader from '@material-ui/core/ListSubheader';\nimport IconButton from '@material-ui/core/IconButton';\nimport InfoIcon from '@material-ui/icons/Info';\nimport { Dialog, DialogContent, DialogActions, DialogTitle, Button, Typography, Divider } from '@material-ui/core';\nimport CloseIcon from '@material-ui/icons/Close';\nimport _, { omit, pick, round, slice } from 'lodash';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n flexWrap: 'wrap',\n justifyContent: 'space-around',\n overflow: 'hidden',\n backgroundColor: theme.palette.background.paper,\n },\n imageList: {\n width: 1000,\n height: \"auto\",\n },\n icon: {\n color: 'rgba(255, 255, 255, 0.54)',\n },\n titleBar: {\n background:\n 'linear-gradient(to top, rgba(0,0,0,0.7) 0%, rgba(0,0,0,0.3) 70%, rgba(0,0,0,0) 100%)',\n },\n closeButton: {\n position: 'absolute',\n right: theme.spacing(1),\n top: theme.spacing(1),\n color: theme.palette.grey[500],\n },\n section2: {\n margin: theme.spacing(3, 2),\n },\n\n}));\n\n\nexport default function TitlebarImageList(props) {\n const MedirepURL = \"http://medirep.mornjoy.com.tw\";\n // const [DataSourceObj, setDataSourceObj] = React.useState({})\n\n const { DataSource, setPicObj, ItemName, ItemNo } = props;\n const classes = useStyles();\n const ShowPic = (e, img) => {\n e.preventDefault();\n e.stopPropagation();\n // console.log(img)\n setOpen(true);\n setDialogImg(img);\n }\n const [DialogImg, setDialogImg] = React.useState(\"\")\n const [open, setOpen] = React.useState(false);\n const handleClickOpen = () => {\n setOpen(true);\n };\n\n const handleClose = (value) => {\n setOpen(false);\n // setSelectedValue(value);\n };\n const handleDeleteImg = (e, picNo, imgString) => {\n e.preventDefault();\n e.stopPropagation();\n let isconfirm = window.confirm(\"確定是否刪除該張圖片?\");\n if (isconfirm) {\n console.log(picNo, imgString);\n setPicObj(prev => ({\n ...prev,\n [picNo]: _.remove(prev[picNo], (item) => item !== imgString)\n }))\n\n }\n\n\n\n }\n\n\n return (\n\n
\n\n
\n {/*
\n {ItemName[ItemNo]}\n
*/}\n < ImageList rowHeight={180} cols={5} className={classes.imageList} >\n {\n\n DataSource[\"pic_\" + ItemNo]?.length > 0 ? (DataSource[\"pic_\" + ItemNo]).map((item, index) => {\n return (\n < ImageListItem key={index} >\n {item.title} ShowPic(e, MedirepURL + item)} />\n by: {item.author}}\n actionIcon={\n handleDeleteImg(e, \"pic_\" + ItemNo, item)}>\n \n \n }\n />\n )\n }) : null\n }\n \n \n
\n\n\n \n \n 圖片檢視\n \n \n \n \n \n \n \n {/* \n \n */}\n \n\n
\n );\n}","import React, { useState } from 'react';\nimport { FormControl, FormLabel, FormHelperText, Paper, useForkRef, Typography, TextField, Button, CircularProgress, Fade, Backdrop } from '@material-ui/core';\nimport Signature from './Signature';\nimport _, { omit, pick, round, slice } from 'lodash';\nimport PF from \"./_Services/publicFunction\";\nimport Qs from \"qs\";\nimport { DarkModeSwitch } from 'react-toggle-dark-mode';\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { actions } from \"./reducers/app\";\nimport useSound from 'use-sound';\nimport switchlight from './sounds/switchlight.wav';\nimport { makeStyles, withStyles } from '@material-ui/core/styles';\nimport { MuiPickersUtilsProvider, KeyboardDatePicker, DatePicker, KeyboardDateTimePicker, KeyboardTimePicker } from \"@material-ui/pickers\";\nimport TodayIcon from \"@material-ui/icons/UpdateOutlined\";\nimport MomentUtils from \"@date-io/moment\";\nimport moment from \"moment\";\nimport { useSnackbar } from \"notistack\";\n// import Example from \"./components/LHTable/Example\"\nimport InteriorTable from \"../src/components/LHTable/DataSheet_Virtual\"\nimport Example from '../src/components/LHTable/Example';\nimport { Dialog, DialogContent, DialogActions, DialogTitle, IconButton, Divider, Grid } from '@material-ui/core';\nimport CloseIcon from '@material-ui/icons/Close';\nimport ImgList from \"../src/components/ImgList/ImgList\"\nimport { indigo, green, red } from '@material-ui/core/colors';\nimport AssignmentTurnedInIcon from '@material-ui/icons/AssignmentTurnedIn';\n\nconst domToImage = require('dom-to-image');\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n width: '100%',\n },\n\n half_background: {\n background: \"linear-gradient(to top, yellow 50%, transparent 50%)\"\n },\n backdrop: {\n zIndex: theme.zIndex.drawer + 1,\n color: '#fff',\n },\n closeButton: {\n position: 'absolute',\n right: theme.spacing(1),\n top: theme.spacing(1),\n color: theme.palette.grey[500],\n },\n chip: {\n margin: theme.spacing(0.5),\n },\n}));\n\nconst Match = props => {\n const { enqueueSnackbar } = useSnackbar();\n const [file, setFile] = useState({});\n const [rows, setRows] = useState([]);\n\n const dispatch = useDispatch();\n const classes = useStyles();\n const initialRender = React.useRef(true);\n\n const { dark } = useSelector(state => ({\n dark: state.app.dark,\n }));\n const [imageURL, setImage] = React.useState(null); //提交=>簽名檔img\n const [timestamp, setTime] = React.useState(null);\n const [open, setOpen] = React.useState(false);\n const [openDialog, setOpenDialog] = React.useState(false);\n const [user, setUser] = React.useState({\n email: null,\n personalId: null,\n UserName: null,\n })\n const [settingObj, setObj] = React.useState({\n UserName: { label: \"姓名\", name: \"UserName\", type: \"text\", required: true, helperText: \"required\", xs: 12, sm: 12, md: 12, lg: 12, minLength: 2, maxLength: 30, pattern: \"^[^0-9]+$\" },\n email: { label: \"出生日期\", name: \"email\", type: \"email\", required: true, helperText: \"required\", xs: 12, sm: 12, md: 12, lg: 12 },\n personalId: { label: \"身分證字號\", name: \"personalId\", type: \"text\", required: true, helperText: \"required\", xs: 12, sm: 12, md: 12, lg: 12, minLength: 10, maxLength: 10 }\n })\n const [playActive] = useSound(\n switchlight,\n { volume: 0.5 }\n );\n //選中的範圍\n const [selected, setSelected] = React.useState({ start: null, end: null })\n //用於表的快速移動至某行\n const listRef = React.createRef();\n //勾選\n const [checkSelections, setCheckSelections] = React.useState(new Map());\n //允許多個勾選\n const [enableCheck, setEnableCheck] = React.useState(true);\n //允許多個勾選\n const [multiChk, setMultiChk] = React.useState(false);\n //總頁數\n const [pageCount, setPageCount] = React.useState(1)\n //第幾頁\n const [pageNo, setPageNo] = React.useState(6)\n const [columns, setColumns] = React.useState({\n qc_id: { label: \"ID\", name: \"qc_id\", width: 120, type: \"text\", required: false, noShowSelect: true, noshowTable: true, noshowTableForever: true, orderSeq: 1 },\n UserName: { label: \"姓名\", name: \"UserName\", width: 120, type: \"text\", required: true, xs: 6, sm: 6, md: 3, orderSeq: 9 },\n barcode: { label: \"barcode\", width: 120, name: \"barcode\", type: \"text\", required: true, xs: 6, sm: 6, md: 3, noShowSelect: true, orderSeq: 3 },\n PersonalId: { label: \"PersonalId\", name: \"PersonalId\", width: 120, type: \"text\", required: true, noShowSelect: true, xs: 6, sm: 6, md: 3, orderSeq: 4 },\n checkdate: { label: \"checkdate\", name: \"checkdate\", width: 120, type: \"text\", required: true, noShowSelect: true, xs: 6, sm: 6, md: 3, orderSeq: 5 },\n UpdateCount: { label: \"UpdateCount\", name: \"UpdateCount\", width: 120, type: \"text\", required: true, noShowSelect: true, xs: 6, sm: 6, md: 3, orderSeq: 6 },\n })\n React.useEffect(() => {\n let noshowTable = [];\n Object.values(columns).map(item => {\n if (item.noshowTable === true) {\n // console.log(item.name)\n noshowTable.push(item.name)\n }\n })\n let showColumns = _.omit(columns, noshowTable) //轉換\n setOrderRows(prev => PF.dataSheetGridFormat(rows, Object.keys(showColumns)))\n }, [columns])\n //轉換\n let noshowTable = [];\n Object.values(columns).map(item => {\n if (item.noshowTable === true) {\n // console.log(item.name)\n noshowTable.push(item.name)\n }\n })\n let showColumns = _.omit(columns, noshowTable)\n // const [showColumns, setShowColumn] = React.useState(_.omit(columns, noshowTable))\n //let z22 = _.orderBy(z2, ['orderSeq']); //排序\n //let z3 = z2.map(item=>(item.name));//只取標頭\n // console.log(z22); //依照column順序排序\n const [orderRows, setOrderRows] = React.useState(PF.dataSheetGridFormat(rows, Object.keys(showColumns)))\n //雙擊\n const handleDoubleClick = (i, j, e) => {\n // console.log(rows[i]);\n // setDialogObj(rows[i])\n getBarcode(rows[i][\"qc_id\"]);\n getBarcodeGaugeItem(rows[i][\"barcode\"])\n }\n const handleSubmit = e => {\n e.preventDefault();\n }\n const [DialogObj, setDialogObj] = React.useState({});\n React.useEffect(() => {\n GetItem();\n }, [])\n\n\n const getBarcode = (qc_id) => {\n PF.instance({\n method: \"post\",\n url: PF.url + \"/Match/QueryBarcode\",\n data: Qs.stringify({ parameter: { qc_id } })\n // headers: { token: sessionStorage.token }\n })\n .then(function (response) {\n // alert(\"完成\")\n const { TotalRecord, rows } = response.data;\n if (TotalRecord > 0) {\n // console.log(rows);\n //解析圖片為JSON物件\n let PicJson = JSON.parse(rows[0][\"pic\"]);\n // console.log(PicJson);\n\n Object.keys(PicJson || {}).map(pic => {\n // console.log(pic)\n setPicObj(prev => ({\n ...prev,\n [pic]: PicJson[pic]?.split(',') || []\n }))\n });\n\n setDialogObj(prev => rows[0]);\n // setDialogObj(rows[i][\"qc_id\"]);\n setOpenDialog(true);\n\n }\n else {\n }\n })\n }\n const PicCategoryArray = [\"超音波檢查\", \"數位斷層合成掃描\",\n , \"一般X光\"\n , \"三連片\"\n , \"內視鏡\"\n , \"身體組成分析\"\n , \"心電圖\"\n , \"自律神經檢查\"\n , \"眼底攝影\"]\n const [GaugeItem, setGaugeItem] = React.useState({\n\n })\n const getBarcodeGaugeItem = (BarCodeStr) => {\n PF.instance({\n method: \"post\",\n url: PF.url + \"/Match/GetGaugeData\",\n data: Qs.stringify({ parameter: { BarCodeStr } })\n // headers: { token: sessionStorage.token }\n })\n .then(function (response) {\n // alert(\"完成\")\n const { TotalRecord, rows } = response.data;\n if (TotalRecord > 0) {\n // console.log(rows);\n let ContentJson = JSON.parse(rows[0][\"content\"]);\n // console.log(ContentJson);\n\n let ItemArray = PF.multiFilter(ContentJson, { CheckCategory: PicCategoryArray });\n // console.log(ItemArray);\n let object = _.keyBy(ItemArray, 'CheckCategory');\n // console.log(object);\n let y = {}\n Object.keys(object).map(CheckCategory => {\n y[CheckCategory] = PF.multiFilter(ContentJson, { CheckCategory: CheckCategory })\n })\n console.log(y);\n setGaugeItem(y)\n }\n else {\n }\n })\n }\n\n\n\n\n\n // const handleTxtChange = e => {\n // const { name, value } = e.target;\n // setUser(prevstate => ({\n // ...prevstate,\n // [name]: value.trim()\n // }));\n\n // }\n const formRef = React.createRef();\n const specialFormat = string => {\n return encodeURI(string.replaceAll(\"\\\\\", \"/\").replace(\"//192.168.25.20\", \"/Content/Upload\"))\n }\n // let user_id = \"F127150943\";\n // React.useEffect(() => {\n // if (initialRender.current) {\n // initialRender.current = false;\n // } else {\n // const map1 = new Map(\n // [...checkSelections]\n // .filter(([k, v]) => v === true)\n // );\n // setUser(prev => ({\n // ...prev,\n // personalId: rows[[...map1.keys()][0]][\"personalId\"]\n // }))\n\n // }\n\n\n // }, [checkSelections])\n\n const handleTest = e => {\n e.preventDefault();\n let one;\n const map1 = new Map(\n [...checkSelections]\n .filter(([k, v]) => v === true)\n );\n // let index = [...checkSelections][0][0];\n if (!_.isEmpty(rows[[...map1.keys()][0]])) {\n one = rows[[...map1.keys()][0]]\n } else {\n alert(\"請選擇一筆\")\n }\n // console.log(personalId)\n // console.log(one)\n const personalId = one?.PersonalId;\n\n if (!_.isEmpty(MornJoy.CheckDate.value) && !_.isEmpty(personalId)) {\n\n let person = file[personalId];\n let one = rows.find(item => item.PersonalId === personalId)\n\n\n let bigperson = {}\n let bigpersonCount = {}\n\n if (!_.isEmpty(person)) {\n\n let pic_7010 = person.filter(function (person) { return person.FullPath.includes(\"\\\\腹部超音波Abdominal echo\\\\\"); });\n if (!_.isEmpty(pic_7010)) {\n console.log(pic_7010)\n bigperson.pic_7010 = pic_7010;\n bigpersonCount.pic_7010_alt = \"§\".repeat(pic_7010.length - 1);\n }\n\n let pic_7011 = person.filter(function (person) { return person.FullPath.includes(\"\\\\攝護腺超音波Prostate echo\\\\\"); });\n if (!_.isEmpty(pic_7011)) {\n bigperson.pic_7011 = pic_7011;\n bigpersonCount.pic_7011_alt = \"§\".repeat(pic_7011.length - 1);\n }\n\n let pic_7012 = person.filter(function (person) { return person.FullPath.includes(\"\\\\乳房超音波Breast Ultrasound\\\\\"); });\n if (!_.isEmpty(pic_7012)) {\n bigperson.pic_7012 = pic_7012;\n bigpersonCount.pic_7012_alt = \"§\".repeat(pic_7012.length - 1);\n }\n\n let pic_7013 = person.filter(function (person) { return person.FullPath.includes(\"\\\\骨盆腔婦科超音波Gynecology Ultrasound\\\\\"); });\n if (!_.isEmpty(pic_7013)) {\n bigperson.pic_7013 = pic_7013;\n bigpersonCount.pic_7013_alt = \"§\".repeat(pic_7013.length - 1);\n }\n\n\n\n let pic_7015 = person.filter(function (person) { return person.FullPath.includes(\"\\\\頸動脈超音波Carotid Duplex Ultrasound\\\\\"); });\n if (!_.isEmpty(pic_7015)) {\n bigperson.pic_7015 = pic_7015;\n bigpersonCount.pic_7015_alt = \"§\".repeat(pic_7015.length - 1);\n }\n\n let pic_7014 = person.filter(function (person) { return person.FullPath.includes(\"\\\\甲狀腺超音波Thyroid echo\\\\\"); });\n if (!_.isEmpty(pic_7014)) {\n bigperson.pic_7014 = pic_7014;\n bigpersonCount.pic_7014_alt = \"§\".repeat(pic_7014.length - 1);\n }\n\n let pic_7016 = person.filter(function (person) { return person.FullPath.includes(\"\\\\心臟超音波Cardiac echo\\\\\"); });\n if (!_.isEmpty(pic_7016)) {\n bigperson.pic_7016 = pic_7016;\n bigpersonCount.pic_7016_alt = \"§\".repeat(pic_7016.length - 1);\n }\n\n let pic_7049 = person.filter(function (person) { return person.FullPath.includes(\"\\\\胸部數位雙能量減影\\\\\"); });\n if (!_.isEmpty(pic_7049)) {\n bigperson.pic_7049 = pic_7049;\n bigpersonCount.pic_7049_alt = \"§\".repeat(pic_7049.length - 1);\n }\n\n let pic_7033 = person.filter(function (person) { return person.FullPath.includes(\"\\\\胸部CXR\\\\\"); });\n if (!_.isEmpty(pic_7033)) {\n bigperson.pic_7033 = pic_7033;\n bigpersonCount.pic_7033_alt = \"§\".repeat(pic_7033.length - 1);\n }\n let pic_7093 = person.filter(function (person) { return person.FullPath.includes(\"\\\\胸部CXR-側面\\\\\"); });\n if (!_.isEmpty(pic_7093)) {\n bigperson.pic_7093 = pic_7093;\n bigpersonCount.pic_7093_alt = \"§\".repeat(pic_7093.length - 1);\n }\n\n let pic_7034 = person.filter(function (person) { return person.FullPath.includes(\"\\\\腹部KUB\\\\\"); });\n if (!_.isEmpty(pic_7034)) {\n bigperson.pic_7034 = pic_7034;\n bigpersonCount.pic_7034_alt = \"§\".repeat(pic_7034.length - 1);\n }\n\n let pic_7035 = person.filter(function (person) { return person.FullPath.includes(\"\\\\頸椎X光-正面\\\\\"); });\n if (!_.isEmpty(pic_7035)) {\n bigperson.pic_7035 = pic_7035;\n bigpersonCount.pic_7035_alt = \"§\".repeat(pic_7035.length - 1);\n }\n\n let pic_7036 = person.filter(function (person) { return person.FullPath.includes(\"\\\\頸椎X光-側面\\\\\"); });\n if (!_.isEmpty(pic_7036)) {\n bigperson.pic_7036 = pic_7036;\n bigpersonCount.pic_7036_alt = \"§\".repeat(pic_7036.length - 1);\n }\n\n let pic_7037 = person.filter(function (person) { return person.FullPath.includes(\"\\\\胸椎X光-側面\\\\\"); });\n if (!_.isEmpty(pic_7037)) {\n bigperson.pic_7037 = pic_7037;\n bigpersonCount.pic_7037_alt = \"§\".repeat(pic_7037.length - 1);\n }\n\n let pic_7038 = person.filter(function (person) { return person.FullPath.includes(\"\\\\胸椎X光-正面\\\\\"); });\n if (!_.isEmpty(pic_7038)) {\n bigperson.pic_7038 = pic_7038;\n bigpersonCount.pic_7038_alt = \"§\".repeat(pic_7038.length - 1);\n }\n\n let pic_7039 = person.filter(function (person) { return person.FullPath.includes(\"\\\\腰椎X光-正面(L-spine AP)\\\\\"); });\n if (!_.isEmpty(pic_7039)) {\n bigperson.pic_7039 = pic_7039;\n bigpersonCount.pic_7039_alt = \"§\".repeat(pic_7039.length - 1);\n }\n\n let pic_7040 = person.filter(function (person) { return person.FullPath.includes(\"\\\\腰椎X光-側面(L-spine Lat)\\\\\"); });\n if (!_.isEmpty(pic_7040)) {\n bigperson.pic_7040 = pic_7040;\n bigpersonCount.pic_7040_alt = \"§\".repeat(pic_7040.length - 1);\n }\n\n let pic_7061 = person.filter(function (person) { return person.FullPath.includes(\"\\\\左手X光\\\\\"); });\n if (!_.isEmpty(pic_7061)) {\n bigperson.pic_7061 = pic_7061;\n bigpersonCount.pic_7061_alt = \"§\".repeat(pic_7061.length - 1);\n }\n let pic_7050 = person.filter(function (person) { return person.FullPath.includes(\"\\\\頭部數位斷層合成攝影\\\\\"); });\n if (!_.isEmpty(pic_7050)) {\n bigperson.pic_7050 = pic_7050;\n bigpersonCount.pic_7050_alt = \"§\".repeat(pic_7050.length - 1);\n\n } let pic_7051 = person.filter(function (person) { return person.FullPath.includes(\"\\\\頸部數位斷層合成攝影\\\\\"); });\n if (!_.isEmpty(pic_7051)) {\n bigperson.pic_7051 = pic_7051;\n bigpersonCount.pic_7051_alt = \"§\".repeat(pic_7051.length - 1);\n }\n\n let pic_7052 = person.filter(function (person) { return person.FullPath.includes(\"\\\\胸部數位斷層合成攝影\\\\\"); });\n if (!_.isEmpty(pic_7052)) {\n bigperson.pic_7052 = pic_7052;\n bigpersonCount.pic_7052_alt = \"§\".repeat(pic_7052.length - 1);\n }\n let pic_7053 = person.filter(function (person) { return person.FullPath.includes(\"\\\\腹部數位斷層合成攝影\\\\\"); });\n if (!_.isEmpty(pic_7053)) {\n bigperson.pic_7053 = pic_7053;\n bigpersonCount.pic_7053_alt = \"§\".repeat(pic_7053.length - 1);\n }\n\n let pic_7062 = person.filter(function (person) { return person.FullPath.includes(\"\\\\右手X光\\\\\"); });\n if (!_.isEmpty(pic_7062)) {\n bigperson.pic_7062 = pic_7062;\n bigpersonCount.pic_7062_alt = \"§\".repeat(pic_7062.length - 1);\n }\n\n let pic_8009 = person.filter(function (person) { return person.FullPath.includes(\"\\\\小腿X光(正面)\\\\\"); });\n if (!_.isEmpty(pic_8009)) {\n bigperson.pic_8009 = pic_8009;\n bigpersonCount.pic_8009_alt = \"§\".repeat(pic_8009.length - 1);\n }\n\n let pic_8010 = person.filter(function (person) { return person.FullPath.includes(\"\\\\小腿X光(左腳)\\\\\"); });\n if (!_.isEmpty(pic_8010)) {\n bigperson.pic_8010 = pic_8010;\n bigpersonCount.pic_8010_alt = \"§\".repeat(pic_8010.length - 1);\n }\n\n let pic_8011 = person.filter(function (person) { return person.FullPath.includes(\"\\\\小腿X光(右腳)\\\\\"); });\n if (!_.isEmpty(pic_8011)) {\n bigperson.pic_8011 = pic_8011;\n bigpersonCount.pic_8011_alt = \"§\".repeat(pic_8011.length - 1);\n }\n\n let pic_8012 = person.filter(function (person) { return person.FullPath.includes(\"\\\\膝蓋X光-正面\\\\\"); });\n if (!_.isEmpty(pic_8012)) {\n bigperson.pic_8012 = pic_8012;\n bigpersonCount.pic_8012_alt = \"§\".repeat(pic_8012.length - 1);\n }\n\n let pic_8013 = person.filter(function (person) { return person.FullPath.includes(\"\\\\膝蓋X光-側面(左)\\\\\"); });\n if (!_.isEmpty(pic_8013)) {\n bigperson.pic_8013 = pic_8013;\n bigpersonCount.pic_8013_alt = \"§\".repeat(pic_8013.length - 1);\n }\n\n let pic_8014 = person.filter(function (person) { return person.FullPath.includes(\"\\\\膝蓋X光-側面(右)\\\\\"); });\n if (!_.isEmpty(pic_8014)) {\n bigperson.pic_8014 = pic_8014;\n bigpersonCount.pic_8014_alt = \"§\".repeat(pic_8014.length - 1);\n }\n\n let pic_7054 = person.filter(function (person) { return person.FullPath.includes(\"\\\\全脊椎數位X光攝影\\\\\"); });\n if (!_.isEmpty(pic_7054)) {\n bigperson.pic_7054 = pic_7054;\n bigpersonCount.pic_7054_alt = \"§\".repeat(pic_7054.length - 1);\n }\n\n let pic_7055 = person.filter(function (person) { return person.FullPath.includes(\"\\\\下肢數位X光攝影\\\\\"); });\n if (!_.isEmpty(pic_7055)) {\n bigperson.pic_7055 = pic_7055;\n bigpersonCount.pic_7055_alt = \"§\".repeat(pic_7055.length - 1);\n }\n\n let pic_7045 = person.filter(function (person) { return person.FullPath.includes(\"\\\\上消化道內視鏡\\\\\"); });\n if (!_.isEmpty(pic_7045)) {\n bigperson.pic_7045 = pic_7045;\n bigpersonCount.pic_7045_alt = \"§\".repeat(pic_7045.length - 1);\n }\n\n let pic_7046 = person.filter(function (person) { return person.FullPath.includes(\"\\\\下消化道內視鏡\\\\\"); });\n if (!_.isEmpty(pic_7046)) {\n bigperson.pic_7046 = pic_7046;\n bigpersonCount.pic_7046_alt = \"§\".repeat(pic_7046.length - 1);\n }\n\n let pic_7029 = person.filter(function (person) { return person.FullPath.includes(\"\\\\無痛大腸鏡檢查\\\\\"); });\n if (!_.isEmpty(pic_7029)) {\n bigperson.pic_7029 = pic_7029;\n bigpersonCount.pic_7029_alt = \"§\".repeat(pic_7029.length - 1);\n }\n\n let pic_7030 = person.filter(function (person) { return person.FullPath.includes(\"\\\\無痛胃鏡檢查\\\\\"); });\n if (!_.isEmpty(pic_7030)) {\n bigperson.pic_7030 = pic_7030;\n bigpersonCount.pic_7030_alt = \"§\".repeat(pic_7030.length - 1);\n }\n\n let pic_7031 = person.filter(function (person) { return person.FullPath.includes(\"\\\\胃鏡檢查\\\\\"); });\n if (!_.isEmpty(pic_7031)) {\n bigperson.pic_7031 = pic_7031;\n bigpersonCount.pic_7031_alt = \"§\".repeat(pic_7031.length - 1);\n }\n\n let pic_7070 = person.filter(function (person) { return person.FullPath.includes(\"\\\\胃鏡病理報告\\\\\"); });\n if (!_.isEmpty(pic_7070)) {\n bigperson.pic_7070 = pic_7070;\n bigpersonCount.pic_7070_alt = \"§\".repeat(pic_7070.length - 1);\n }\n\n let pic_7032 = person.filter(function (person) { return person.FullPath.includes(\"\\\\大腸鏡檢查\\\\\"); });\n if (!_.isEmpty(pic_7032)) {\n bigperson.pic_7032 = pic_7032;\n bigpersonCount.pic_7032_alt = \"§\".repeat(pic_7032.length - 1);\n }\n\n let pic_7063 = person.filter(function (person) { return person.FullPath.includes(\"\\\\乙狀結腸\\\\\"); });\n if (!_.isEmpty(pic_7063)) {\n bigperson.pic_7063 = pic_7063;\n bigpersonCount.pic_7063_alt = \"§\".repeat(pic_7063.length - 1);\n }\n\n // let pic_7076 = person.filter(function (person) { return person.FullPath.includes(\"\\\\雙能量X光骨質吸收儀(DXA)-髖關節\\\\\"); });\n // if (!_.isEmpty(pic_7076)) {\n // bigperson.pic_7076 = pic_7076;\n // bigpersonCount.pic_7076_alt = \"§\".repeat(pic_7076.length - 1);\n // }\n\n let pic_7021 = person.filter(function (person) { return person.FullPath.includes(\"\\\\DXA 檢查\\\\\") || person.FullPath.includes(\"\\\\雙能量X光骨質吸收儀(DXA)\\\\\");; });\n if (!_.isEmpty(pic_7021)) {\n bigperson.pic_7021 = pic_7021;\n bigpersonCount.pic_7021_alt = \"§\".repeat(pic_7021.length - 1);\n }\n\n let pic_7075 = person.filter(function (person) { return person.FullPath.includes(\"\\\\DXA 左側股骨\\\\\") || person.FullPath.includes(\"\\\\DXA DualFemur\\\\\") || person.FullPath.includes(\"\\\\雙能量X光骨質吸收儀(DXA)-髖關節\\\\\"); });\n if (!_.isEmpty(pic_7075)) {\n bigperson.pic_7075 = pic_7075;\n bigpersonCount.pic_7075_alt = \"§\".repeat(pic_7075.length - 1);\n }\n\n let pic_7091 = person.filter(function (person) { return person.FullPath.includes(\"\\\\DXA 正面脊椎\\\\\") || person.FullPath.includes(\"\\\\雙能量X光骨質吸收儀(DXA)-腰椎\\\\\"); });\n if (!_.isEmpty(pic_7091)) {\n bigperson.pic_7091 = pic_7091;\n bigpersonCount.pic_7091_alt = \"§\".repeat(pic_7091.length - 1);\n }\n let pic_7092 = person.filter(function (person) { return person.FullPath.includes(\"\\\\全自動乳房掃描\\\\\") });\n if (!_.isEmpty(pic_7092)) {\n bigperson.pic_7092 = pic_7092;\n bigpersonCount.pic_7092_alt = \"§\".repeat(pic_7092.length - 1);\n }\n\n let pic_7020 = person.filter(function (person) { return person.FullPath.includes(\"\\\\DXA 全身\\\\\"); });\n if (!_.isEmpty(pic_7020)) {\n bigperson.pic_7020 = pic_7020;\n bigpersonCount.pic_7020_alt = \"§\".repeat(pic_7020.length - 1);\n }\n //2023/06/12改新報的夾圖\n // let pic_7060 = person.filter(function (person) { return person.FullPath.includes(one.UserName.replaceAll(\"?\", \"\") + \".jpg\"); });\n // if (!_.isEmpty(pic_7060)) {\n // bigperson.pic_7060 = pic_7060;\n // bigpersonCount.pic_7060_alt = \"§\".repeat(pic_7060.length - 1);\n // }\n\n let pic_7060 = person.filter(function (person) { return person.FullPath.includes(\"\\\\InBody體脂肪機\\\\\"); });\n if (!_.isEmpty(pic_7060)) {\n bigperson.pic_7060 = pic_7060;\n bigpersonCount.pic_7060_alt = \"§\".repeat(pic_7060.length - 1);\n }\n\n let pic_7008 = person.filter(function (person) { return person.FullPath.includes(\"\\\\靜式心電圖EKG\\\\\"); });\n if (!_.isEmpty(pic_7008)) {\n bigperson.pic_7008 = pic_7008;\n bigpersonCount.pic_7008_alt = \"§\".repeat(pic_7008.length - 1);\n }\n\n let pic_7007 = person.filter(function (person) { return person.FullPath.includes(\"\\\\運動心電圖EKG\\\\\"); });\n if (!_.isEmpty(pic_7007)) {\n bigperson.pic_7007 = pic_7007;\n bigpersonCount.pic_7007_alt = \"§\".repeat(pic_7007.length - 1);\n }\n\n let pic_7042 = person.filter(function (person) { return person.FullPath.includes(\"page-1.jpg\") || person.FullPath.includes(\"page-2.jpg\"); });\n if (!_.isEmpty(pic_7042)) {\n bigperson.pic_7042 = pic_7042;\n bigpersonCount.pic_7042_alt = \"§\".repeat(pic_7042.length - 1);\n }\n\n let pic_7041 = person.filter(function (person) { return person.FullPath.includes(\"page-3.jpg\") || person.FullPath.includes(\"page-4.jpg\"); });\n if (!_.isEmpty(pic_7041)) {\n bigperson.pic_7041 = pic_7041;\n bigpersonCount.pic_7041_alt = \"§\".repeat(pic_7041.length - 1);\n }\n\n let pic_7023 = person.filter(function (person) { return person.FullPath.includes(\"\\\\眼底攝影\\\\\"); });\n if (!_.isEmpty(pic_7023)) {\n bigperson.pic_7023 = pic_7023;\n bigpersonCount.pic_7023_alt = \"§\".repeat(pic_7023.length - 1);\n }\n\n\n // bigperson.cpic = \"\";\n // bigpersonCount.cpic_alt = \"\";\n\n // console.log(bigperson);\n // console.log(bigpersonCount);\n\n\n //格式轉換\n Object.keys(bigperson).map(item => {\n bigperson[item] = !_.isEmpty(bigperson[item]) ? bigperson[item].map(i => specialFormat(i.FullPath)).join(\",\") : null;\n })\n //變更資料源\n setRows(prevstate => (prevstate.map(item => {\n if (item.PersonalId === personalId) {\n return {\n ...item,\n pic: JSON.stringify(bigperson),\n pic_alt: JSON.stringify(bigpersonCount)\n }\n } else return item\n })\n ));\n enqueueSnackbar(\"匹配成功\", { variant: \"Success\", style: { whiteSpace: 'pre-line' } });\n one.pic = JSON.stringify(bigperson);\n one.pic_alt = JSON.stringify(bigpersonCount);\n // console.log(one)\n\n PF.instance({\n method: \"post\",\n url: PF.url + \"/Match/UPDATE\",\n data: Qs.stringify({ parameter: one })\n // headers: { token: sessionStorage.token }\n })\n .then(function (response) {\n // alert(\"完成\")\n const { TotalRecord, rows } = response.data;\n if (TotalRecord > 0) {\n enqueueSnackbar(\"圖檔更新成功\", { variant: \"success\", style: { whiteSpace: 'pre-line' } });\n }\n else {\n enqueueSnackbar(\"圖檔更新失敗\", { variant: \"warning\", style: { whiteSpace: 'pre-line' } });\n }\n GetData();\n })\n\n\n\n\n\n } else {\n enqueueSnackbar(\"匹配失敗\", { variant: \"warning\", style: { whiteSpace: 'pre-line' } });\n }\n\n } else {\n alert(\"請輸入日期與身分ID\")\n }\n\n\n\n\n }\n\n\n const handleTest2 = e => {\n e.preventDefault();\n let one;\n // const { personalId } = user;\n // const map1 = new Map(\n // [...checkSelections]\n // .filter(([k, v]) => v === true)\n // );\n // // let index = [...checkSelections][0][0];\n // if (!_.isEmpty(rows[[...map1.keys()][0]])) {\n // one = rows[[...map1.keys()][0]];\n // let personalId = one.PersonalId;\n\n\n // } else {\n // alert(\"請選擇一筆\")\n // }\n\n // console.log(checkSelections);\n // console.log(checkSelections)\n // if (!_.isEmpty(personalId)) {\n // PF.instance({\n // method: \"post\",\n // url: PF.url + \"/Match/UPDATE\",\n // data: Qs.stringify({ parameter: rows.find(item => item.PersonalId === personalId) })\n // // headers: { token: sessionStorage.token }\n // })\n // .then(function (response) {\n // // alert(\"完成\")\n // const { TotalRecord, rows } = response.data;\n // if (TotalRecord > 0) {\n // enqueueSnackbar(\"圖檔更新成功\", { variant: \"success\", style: { whiteSpace: 'pre-line' } });\n // }\n // else {\n // enqueueSnackbar(\"圖檔更新失敗\", { variant: \"warning\", style: { whiteSpace: 'pre-line' } });\n // }\n // })\n // }\n }\n\n\n const handleDateChange = (name, e, v) => {\n if (_.isNil(imageURL)) { //已提交不得修改\n setMornJoy(prevState => ({\n ...prevState,\n [name]: {\n ...prevState[name],\n value: v\n }\n }));\n }\n }\n const [loading, setLoading] = React.useState(false);\n\n const GetData = () => {\n let date = new Date(MornJoy.CheckDate.value);\n // setLoading(true);\n PF.instance({\n method: \"post\",\n url: PF.url + \"/Match/MatchQueryTable\",\n data: Qs.stringify({ parameter: { CheckDate: MornJoy.CheckDate.value, yyyym: date.getFullYear() - 1911 + \".\" + moment(date).format(\"M\"), mmdd: moment(date).format(\"MMDD\") } }),\n // headers: { token: sessionStorage.token }\n })\n .then(function (response) {\n // alert(\"完成\")\n const { TotalRecord, rows } = response.data;\n console.log(rows);\n // console.log(file);\n if (_.isEmpty(rows)) {\n enqueueSnackbar(\"查無報告書資料\", { variant: \"warning\", style: { whiteSpace: 'pre-line' } });\n } else {\n enqueueSnackbar(\"報告書資料:\" + TotalRecord + \"筆\", { variant: \"success\", style: { whiteSpace: 'pre-line' } });\n }\n // setFile(file);\n setRows(prev => rows);\n setOrderRows(prev => [...PF.dataSheetGridFormat(rows, Object.keys(showColumns))])\n })\n\n }\n const [ItemName, setItemName] = React.useState();\n const GetItem = () => {\n // setLoading(true);\n PF.instance({\n method: \"post\",\n url: PF.url + \"/Match/GetItem\",\n data: Qs.stringify({ parameter: null }),\n // headers: { token: sessionStorage.token }\n })\n .then(function (response) {\n // alert(\"完成\")\n const { TotalRecord, rows } = response.data;\n setItemName(_.chain(rows)\n .keyBy('item_no')\n .mapValues('title')\n .value());\n // console.log(ItemName);\n\n })\n\n }\n\n const GetFile = () => {\n setLoading(true);\n let date = new Date(MornJoy.CheckDate.value);\n\n PF.instance({\n method: \"post\",\n url: PF.url + \"/Match/MatchQueryFile\",\n data: Qs.stringify({ parameter: { CheckDate: MornJoy.CheckDate.value, yyyym: date.getFullYear() - 1911 + \".\" + moment(date).format(\"M\"), mmdd: moment(date).format(\"MMDD\") } }),\n // headers: { token: sessionStorage.token }\n })\n .then(function (response) {\n // alert(\"完成\")\n const { TotalRecord, file } = response.data;\n // console.log(rows);\n // console.log(file);\n\n if (_.isEmpty(file)) {\n enqueueSnackbar(\"查無圖檔資料\", { variant: \"warning\", style: { whiteSpace: 'pre-line' } });\n } else {\n enqueueSnackbar(\"圖檔資料:\" + TotalRecord + \"筆\", { variant: \"success\", style: { whiteSpace: 'pre-line' } });\n }\n setLoading(false);\n setFile(file);\n })\n\n\n }\n\n const handleQuery = e => {\n // let date = new Date(MornJoy.CheckDate.value);\n\n if (!_.isEmpty(MornJoy.CheckDate.value)) {\n setLoading(true);\n GetData();\n GetFile();\n // setLoading(false);\n\n } else {\n alert(\"請輸入日期\")\n }\n\n }\n const [MornJoy, setMornJoy] = React.useState({\n CheckDate: { name: \"CheckDate\", label: \"健檢日期\", format: \"date\", required: true, value: null },\n personalId: { name: \"personalId\", label: \"身分ID\", required: true },\n })\n const handleTest3 = e => {\n e.preventDefault();\n let one;\n // const { personalId } = user;\n const map1 = new Map(\n [...checkSelections]\n .filter(([k, v]) => v === true)\n );\n // let index = [...checkSelections][0][0];\n if (!_.isEmpty(rows[[...map1.keys()][0]])) {\n one = rows[[...map1.keys()][0]];\n let personalId = one.PersonalId;\n console.log(personalId)\n\n } else {\n alert(\"請選擇一筆\")\n }\n GetData();\n\n }\n const handleCloseDialog = (value) => {\n setOpenDialog(false);\n setDialogObj(null);\n setPicObj({});\n };\n const [PicObj, setPicObj] = React.useState({})\n React.useEffect(() => {\n console.log(PicObj)\n }, [PicObj])\n const handleSaveDialog = (value) => {\n let one = {};\n one.qc_id = DialogObj?.qc_id;\n // console.log(DialogObj.qc_id)\n\n\n // bigperson.pic_7023 = pic_7023;\n // bigpersonCount.pic_7023_alt = \"§\".repeat(pic_7023.length - 1);\n let TempPic = {}\n Object.keys(PicObj).map(item => {\n TempPic[item] = !_.isEmpty(PicObj[item]) ? PicObj[item].join(\",\") : null;\n })\n one.pic = JSON.stringify(TempPic);\n // console.log(TempPic)\n let TempPicAlt = {}\n let pic_alt = {}\n Object.keys(PicObj).map(item => {\n\n TempPicAlt[item + \"_alt\"] = !_.isEmpty(PicObj[item]) ? \"§\".repeat(PicObj[item].length - 1) : null;\n\n })\n // console.log(TempPicAlt)\n one.pic_alt = JSON.stringify(TempPicAlt);\n // one.pic_alt = JSON.stringify(bigpersonCount);\n // console.log(one)\n\n PF.instance({\n method: \"post\",\n url: PF.url + \"/Match/UPDATE\",\n data: Qs.stringify({ parameter: one })\n // headers: { token: sessionStorage.token }\n })\n .then(function (response) {\n // alert(\"完成\")\n const { TotalRecord, rows } = response.data;\n if (TotalRecord > 0) {\n enqueueSnackbar(\"圖檔更新成功\", { variant: \"success\", style: { whiteSpace: 'pre-line' } });\n }\n else {\n enqueueSnackbar(\"圖檔更新失敗\", { variant: \"warning\", style: { whiteSpace: 'pre-line' } });\n }\n GetData();\n setOpenDialog(false); //關閉彈窗\n setDialogObj(null); //刪除Dialog\n setPicObj({}); //刪除Dialog_照片\n\n })\n\n };\n\n return <>\n \n dispatch(actions.THEME_SET({ theme: !dark }))}\n onMouseDown={() => playActive()}\n size={20} />\n {/* 健檢報告夾帶檔案 */}\n\n
\n \n {Object.values(MornJoy).slice(0, 1).map((item, key) => {\n if (item.format === \"date\") {\n\n return (}\n showTodayButton\n minDate={item.minDate || new Date(\"1900-01-01\")}\n maxDate={item.maxDate || new Date(\"2100-01-01\")}\n clearLabel={\"清除\"}\n label={item.label}\n value={item.value}\n inputValue={item.value}\n onChange={(event, value) =>\n handleDateChange(item.name, event, value)\n }\n />\n )\n } else {\n // return (\n // )\n\n }\n\n })}\n \n \n\n
\n
\n {Object.values(MornJoy).slice(1, 2).map((item, key) => {\n if (item.format === \"date\") {\n return (}\n showTodayButton\n minDate={item.minDate || new Date(\"1900-01-01\")}\n maxDate={item.maxDate || new Date(\"2100-01-01\")}\n clearLabel={\"清除\"}\n label={item.label}\n value={item.value}\n inputValue={item.value}\n onChange={(event, value) =>\n handleDateChange(item.name, event, value)\n }\n />\n )\n } else {\n // return (\n // )\n\n }\n\n })}\n\n \n {/* */}\n {/* */}\n \n \n \n \n 姓名:\n {DialogObj?.UserName || \"王小明\"}\n \n 身分證:\n {DialogObj?.PersonalId || \"A123456789\"}\n \n 條碼號:\n {DialogObj?.barcode || \"20210101000\"}\n \n \n \n \n \n \n {Object.keys(GaugeItem).map(CheckCategory => {\n return (\n <>\n {CheckCategory}\n {GaugeItem[CheckCategory].map(itemNo => {\n return (\n <>\n
\n\n }\n >\n {itemNo.ItemName}\n \n {itemNo.Value}\n
\n \n\n \n )\n }\n\n )}\n\n \n )\n }\n\n )}\n {/* */}\n\n\n
\n \n \n \n
\n {/* */}\n
\n \n \n \n \n}\n\n\nexport default Match\n\n\n","import React, { Component, useRef, useState } from 'react';\nimport './App.css';\nimport { OutTable, ExcelRenderer } from 'react-excel-renderer';\nimport { Jumbotron, Col, Input, InputGroup, InputGroupAddon, FormGroup, Label, Fade, FormFeedback, Container } from 'reactstrap';\n// import { useReactToPrint, ReactToPrint } from 'react-to-print';\nimport ReactToPrint from 'react-to-print';\nimport jsPDF from 'jspdf';\n\nimport $ from \"jquery\";\nimport Qs from \"qs\";\nimport PF from \"./_Services/publicFunction\";\nimport { indigo, teal, deepPurple, deepOrange, grey, green, brown, blueGrey } from '@material-ui/core/colors';\nimport { createTheme, withStyles, makeStyles, ThemeProvider } from '@material-ui/core/styles';\nimport { Button, Paper, TextField, Card, List, ListItem } from '@material-ui/core';\nimport Questionaire80th from './Questionaire/80th';\n\n// import { ComponentToPrint } from './ComponentToPrint';\n\n// const Example = () => {\n// const componentRef = useRef();\n// const handlePrint = useReactToPrint({\n// content: () => componentRef.current,\n// });\n// // const handlePrint = () => {\n// // $('#xlsx').printThis();\n// // }\n// return (\n//
\n// \n// \n//
\n// );\n// };\n\nclass App extends Component {\n constructor(props) {\n super(props);\n this.state = {\n isOpen: false,\n dataLoaded: false,\n isFormInvalid: false,\n rows: null,\n cols: null\n }\n this.fileHandler = this.fileHandler.bind(this);\n this.toggle = this.toggle.bind(this);\n this.openFileBrowser = this.openFileBrowser.bind(this);\n this.renderFile = this.renderFile.bind(this);\n this.openNewPage = this.openNewPage.bind(this);\n this.fileInput = React.createRef();\n }\n\n renderFile = (fileObj) => {\n //just pass the fileObj as parameter\n ExcelRenderer(fileObj, (err, resp) => {\n if (err) {\n console.log(err);\n }\n else {\n this.setState({\n dataLoaded: true,\n cols: resp.cols,\n rows: resp.rows\n });\n }\n });\n }\n\n fileHandler = (event) => {\n if (event.target.files.length) {\n let fileObj = event.target.files[0];\n let fileName = fileObj.name;\n\n\n //check for file extension and pass only if it is .xlsx and display error message otherwise\n if (fileName.slice(fileName.lastIndexOf('.') + 1) === \"xlsx\") {\n this.setState({\n uploadedFileName: fileName,\n isFormInvalid: false\n });\n this.renderFile(fileObj)\n }\n else {\n this.setState({\n isFormInvalid: true,\n uploadedFileName: \"\"\n })\n }\n }\n }\n\n toggle() {\n this.setState({\n isOpen: !this.state.isOpen\n });\n }\n\n openFileBrowser = () => {\n this.fileInput.current.click();\n }\n\n openNewPage = (chosenItem) => {\n const url = chosenItem === \"github\" ? \"https://github.com/ashishd751/react-excel-renderer\" : \"https://medium.com/@ashishd751/render-and-display-excel-sheets-on-webpage-using-react-js-af785a5db6a7\";\n window.open(url, '_blank');\n }\n\n render() {\n return (\n
\n \n
\n \n \n \n \n \n \n { event.target.value = null }} style={{ \"padding\": \"10px\" }} />\n \n \n \n \n Please select a .xlsx file only !\n \n \n \n \n \n {/* */}\n
\n\n {this.state.dataLoaded &&\n
\n \n\n \n\n \n
}\n
\n
\n );\n }\n}\n\n\n// const Example = () => {\n// const componentRef = useRef();\n\n// return (\n//
\n// }\n// content={() => componentRef.current}\n// />\n// \n//
\n// );\n// };\n//連動\nconst useStyles = makeStyles((theme) => ({\n margin: {\n margin: theme.spacing(1),\n },\n}));\n\nconst theme = createTheme({\n palette: {\n primary: green,\n },\n});\nclass ExportPdfComponent extends React.Component {\n\n render() {\n return (\n
\n\n

Export HTMl Table in PDF File

\n\n (this.componentRef = response)} />\n\n this.componentRef}\n trigger={() => }\n />\n
\n );\n }\n}\nconst LINE = props => {\n const classes = useStyles();\n const [user, SetUser] = useState({\n token: \"\",\n messages: \"\"\n })\n const handleSend = e => {\n\n // let data = {\n // 'grant_type': 'authorization_code',\n // 'code': \"1GoJVEp1ePgeRevkS72zrQ\",\n // 'redirect_uri': \"https://localhost:44311/home/test\",\n // 'client_id': \"cD6fcMXzLV8GL76u2hL5xB\",\n // 'client_secret': \"XqDonAsQMnFDWXnRvez7JJSoewe2AC1ytWTKF1b6l17\"\n // }\n console.log(user)\n\n PF.instance({\n method: \"post\",\n url: PF.url + \"/HOME/Contact\",\n data: Qs.stringify(user),\n })\n .then(function (response) {\n // alert(\"完成\")\n console.log(response.data)\n })\n }\n const handleChange = e => {\n const { name, value } = e.target;\n SetUser(prev => ({\n ...prev,\n [name]: value\n }))\n }\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n \n );\n}\nconst PDF = () => {\n const pdfRef = useRef(null);\n\n const handleDownload = () => {\n const content = pdfRef.current;\n\n const doc = new jsPDF();\n doc.html(content, {\n callback: function (doc) {\n doc.save('sample.pdf');\n }\n });\n };\n\n return (\n
\n
\n
\n
\n
\n
\n \n
\n
\n );\n}\nexport default PDF;","import React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport ListItem from '@material-ui/core/ListItem';\nimport List from '@material-ui/core/List';\nimport Divider from '@material-ui/core/Divider';\nimport AppBar from '@material-ui/core/AppBar';\nimport Toolbar from '@material-ui/core/Toolbar';\nimport IconButton from '@material-ui/core/IconButton';\nimport Typography from '@material-ui/core/Typography';\nimport CloseIcon from '@material-ui/icons/Close';\nimport Slide from '@material-ui/core/Slide';\nimport DialogActions from \"@material-ui/core/DialogActions\";\nimport DialogContent from \"@material-ui/core/DialogContent\";\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\nimport DialogContentText from \"@material-ui/core/DialogContentText\";\nimport GridContainer from \"../Grid/GridContainer\";\nimport GridItem from \"../Grid/GridItem\";\nimport { TextField, Menu, MenuItem, FormControl, InputLabel, Select, FormHelperText } from '@material-ui/core';\nimport AccountCircle from '@material-ui/icons/AccountCircle';\nimport { MuiPickersUtilsProvider, KeyboardDatePicker, KeyboardDateTimePicker, KeyboardTimePicker, DatePicker } from \"@material-ui/pickers\";\nimport MomentUtils from \"@date-io/moment\";\nimport TodayIcon from \"@material-ui/icons/UpdateOutlined\";\nimport \"moment/locale/zh-tw\"// import { es, ru } from \"@date-io/locale\";\nimport moment from \"moment\";\nimport Grid from '@material-ui/core/Grid';\nimport CakeIcon from '@material-ui/icons/Cake';\nimport CakeOutlinedIcon from '@material-ui/icons/CakeOutlined';\nimport CreditCardIcon from '@material-ui/icons/CreditCard';\nimport Brightness2Icon from \"@material-ui/icons/Brightness2\";\nimport Brightness7Icon from \"@material-ui/icons/Brightness7\";\nimport useSound from 'use-sound';\nimport switchlight from '../../sounds/switchlight.wav';\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { actions } from \"../../reducers/app\";\nimport { indigo, teal, deepPurple } from '@material-ui/core/colors'\nimport { DarkModeSwitch } from 'react-toggle-dark-mode';\nimport _ from \"lodash\";\nimport { GTranslate } from '@material-ui/icons';\nimport { FormattedMessage } from \"react-intl\";\nimport { injectIntl, intlShape, useIntl } from 'react-intl';\nimport { useGmailListItemStyles } from '@mui-treasury/styles/listItem/gmail';\n\n//設定語系\n// moment.locale(\"e\");\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n padding: 0,\n '&:first-child ': {\n padding: 0,\n }\n },\n appBar: {\n position: 'relative',\n backgroundColor: indigo[500],\n },\n title: {\n marginLeft: theme.spacing(2),\n flex: 1,\n textAlign: \"center\"\n },\n button: {\n borderRight: \"3px solid transparent\",\n \"&:hover\": {\n borderRightColor: \"blue\",\n borderRight: \"3px solid\",\n },\n \"&:focus\": {\n borderRightColor: \"blue\",\n borderRight: \"3px solid\",\n }\n }\n}));\n\nconst Transition = React.forwardRef(function Transition(props, ref) {\n return ;\n});\n\nexport default function FullScreenDialog(props) {\n const { open, setOpen, logo, settingObj, handleDateChange, handleTxtChange, formRef, data, handleSubmit, BackDropColor, handleChange, handleDelete, handleClose, action } = props;\n const classes = useStyles();\n const classes3 = useGmailListItemStyles({ color: teal[900] });\n const handleClickOpen = () => {\n setOpen(true);\n };\n const { dark } = useSelector(state => ({\n dark: state.app.dark,\n }));\n const { app } = useSelector(state => ({\n app: state.app,\n }));\n\n const icon = !dark ? : ;\n const [playActive] = useSound(\n switchlight,\n { volume: 0.5 }\n );\n const dispatch = useDispatch();\n const [anchorEl, setAnchorEl] = React.useState(null);\n const TranslateOpen = Boolean(anchorEl);\n\n\n const handleTranslateClose = () => {\n setAnchorEl(null);\n };\n const handleI18nChange = (event, lang) => {\n moment.locale(lang);\n dispatch(actions.LANG_SET(lang));\n setAnchorEl(null);\n playActive();\n };\n const intl = useIntl();\n\n\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n\n \n\n \n\n \n
\n \n \n \n \n {settingObj.map((item, key) => {\n if (item.type === \"date\") {\n return (\n \n \n \n\n \n }\n // showTodayButton\n minDate={item.minDate || new Date(\"1900-01-01\")}\n maxDate={item.maxDate || new Date(\"2100-01-01\")}\n openTo={item.openTo || \"\"}\n disableFuture={item.disableFuture || false}\n clearLabel={}\n cancelLabel={\"X\"}\n label={}\n // value={item.value || null}\n // inputValue={item.value}\n onChange={(event, value) =>\n handleDateChange(item.name, event, value)\n }\n value={data[item.name] || null}\n style={{ imeMode: \"disabled\" }}\n />\n \n \n\n \n \n )\n } else if (item.noShowSelect === true) { //不顯示\n return null;\n } else if (item.select === true) {\n return (\n \n \n \n \n \n \n \n \n {(message) => }\n \n {item.list.map(option => (\n \n ))}\n \n {item.error ? (\n \n \n \n ) : null\n }\n \n \n \n );\n }\n\n else {\n return (\n \n \n }\n placeholder={item.placeholder || \"\"}\n value={_.isEmpty(data[item.name]) ? \"\" : data[item.name]}\n onChange={handleTxtChange}\n inputProps={{\n ...item //像是minLength、pattern\n // pattern: \"[0-9]{4}/(0[1-9]|1[012])/(0[1-9]|1[0-9]|2[0-9]|3[01])\"\n }} />\n\n \n \n )\n }\n\n })}\n \n \n \n \n \n {action === \"Add\" ? null : }\n \n \n
\n \n \n );\n}","import React, { useState } from 'react'\nimport { Calendar, momentLocalizer } from 'react-big-calendar'\nimport moment from 'moment'\nimport \"react-big-calendar/lib/css/react-big-calendar.css\";\nimport { FormControl, FormLabel, FormHelperText, Paper, Grid, Button, Dialog, DialogActions, DialogContent, DialogContentText, ButtonGroup } from '@material-ui/core';\nimport withDragAndDrop from 'react-big-calendar/lib/addons/dragAndDrop'\nimport 'react-big-calendar/lib/addons/dragAndDrop/styles.css'\nimport { indigo, teal, deepPurple, deepOrange, grey, green, brown, blueGrey, red } from '@material-ui/core/colors'\nimport CustomModal from \"../../components/Modal/BookingModal\";\nimport logo from '../../pictures/logo.svg';\nimport PF from \"../../_Services/publicFunction\";\nimport Qs from \"qs\";\nimport _, { omit, pick, round, slice } from 'lodash';\nimport { FormattedMessage, injectIntl, intlShape, useIntl } from 'react-intl';\nimport Chip from '@material-ui/core/Chip';\nimport { makeStyles, withStyles } from '@material-ui/core/styles';\n\nconst localizer = momentLocalizer(moment);\nconst isSingle = true;\nconst DragAndDropCalendar = withDragAndDrop(Calendar)\nconst useStyles = makeStyles((theme) => ({\n root: {\n padding: 0,\n '&:first-child ': {\n padding: 0,\n }\n },\n appBar: {\n position: 'relative',\n backgroundColor: indigo[500],\n },\n title: {\n marginLeft: theme.spacing(2),\n flex: 1,\n textAlign: \"center\"\n },\n event: {\n borderRight: \"3px solid transparent\",\n \"&:hover\": {\n borderRightColor: \"blue\",\n borderRight: \"3px solid\",\n opacity: 1,\n },\n \"&:focus\": {\n borderRightColor: \"blue\",\n borderRight: \"3px solid\",\n opacity: 1\n }\n }\n}));\n\nconst MyCalendar = props => {\n const intl = useIntl();\n const [viewState, setViewState] = useState(\"week\");\n const [dateStart, setDateStart] = useState(moment().toDate());\n\n const resourceMap = [\n { resourceId: \"1\", resourceTitle: '17-2會議室' },\n { resourceId: \"2\", resourceTitle: '17-11會議室' },\n ]\n const departmentMap = {\n //依照部門轉換背景顏色\n \"總部\": red[900],\n \"守葳醫美\": teal[500],\n \"醫美\": teal[500],\n \"資訊\": indigo[500],\n \"管理\": deepPurple[500],\n \"營銷部\": deepOrange[500],\n \"健檢部\": deepOrange[500],\n \"會計\": grey[900],\n \"人事\": grey[500],\n \"護理\": green[900],\n // \"健管部\": brown[500],\n \"報告組\": blueGrey[500]\n\n\n }\n const formRef = React.createRef();\n const [open, setOpen] = React.useState(false)\n const [action, setAction] = React.useState(\"\")\n\n const [settingObj, setObj] = React.useState({\n roomBookingID: { label: \"ID\", name: \"roomBookingID\", type: \"text\", helperText: \"required\", required: true, noShowSelect: true },\n title: { name: \"title\", type: \"text\", required: true, helperText: \"required\", xs: 12, sm: 12, md: 12, lg: 12 },\n department: {\n label: \"部門\", name: \"department\", type: \"text\", helperText: \"required\", required: true, select: true,\n list: [\n { value: \"總部\", label: \"總部\" },\n { value: \"守葳醫美\", label: \"守葳醫美\" },\n { value: \"醫美\", label: \"醫美\" },\n { value: \"資訊\", label: \"資訊\" },\n { value: \"管理\", label: \"管理\" },\n { value: \"營銷部\", label: \"營銷部\" },\n { value: \"健檢部\", label: \"健檢部\" },\n { value: \"會計\", label: \"會計\" },\n { value: \"人事\", label: \"人事\" },\n { value: \"護理\", label: \"護理\" },\n { value: \"報告組\", label: \"報告組\" },\n ]\n , xs: 12, sm: 12, md: 12, lg: 12\n },\n resourceId: { label: \"地點\", name: \"resourceId\", type: \"text\", helperText: \"required\", required: true, select: true, list: [{ value: \"1\", label: \"17-2會議室\" }, { value: \"2\", label: \"17-11會議室\" }], xs: 12, sm: 12, md: 12, lg: 12 },\n start: { label: \"起始\", name: \"start\", type: \"text\", helperText: \"required\", readOnly: true, required: true, xs: 12, sm: 12, md: 12, lg: 12 },\n end: { label: \"結束\", name: \"end\", type: \"text\", helperText: \"required\", readOnly: true, required: true, xs: 12, sm: 12, md: 12, lg: 12 },\n dateCreate: { label: \"創建日\", name: \"dateCreate\", type: \"text\", noShowSelect: true }\n })\n const [user, setUser] = React.useState({\n })\n const validator = () => {\n const form = formRef.current; //參數1\n\n if (form.checkValidity()) {\n console.log(\"全部通過\");\n for (let i = 0; i < form.elements.length; i++) {\n const element = form.elements[i];\n if (Object.keys(settingObj).includes(element.name)) {\n setObj(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\"])\n }))\n }\n }\n return true;\n } else {\n for (let i = 0; i < form.elements.length; i++) {\n const element = form.elements[i];\n if (element.tagName !== 'button' && element.willValidate && !element.validity.valid) { //提交按鈕不用驗證\n if (Object.keys(settingObj).includes(element.name)) {\n setObj(prevState => ({\n ...prevState,\n [element.name]: { ...prevState[element.name], error: true, helperText: intl.formatMessage({ id: element.validationMessage }) }\n }))\n }\n // console.log(element.validationMessage)\n\n } else {//驗證通過,自訂訊息\n //有在settingObj的\n if (Object.keys(settingObj).includes(element.name)) {\n setObj(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\"])\n }))\n }\n\n }\n }\n return false;\n }\n }\n\n const handleSubmit = e => {\n e.preventDefault();\n const { start, end, resourceId } = user;\n\n let timeStart = moment(start, \"YYYY/MM/DD HH:mm\").toDate();\n let timeEnd = moment(end, \"YYYY/MM/DD HH:mm\").toDate();\n\n if (isSingleEvent(user, { resourceId, start: timeStart, end: timeEnd }) !== isSingle) {\n // console.log(\"不繼續\")\n alert(\"時間重複\")\n return;\n }\n\n if (timeStart < new Date()) {\n alert(\"時間已過,無法修改\");\n return;\n }\n if (validator()) {\n PF.instance({\n method: \"POST\",\n url: PF.url + \"/RoomBooking/\" + action,\n data: Qs.stringify({ Action: action, parameter: user }),\n // headers: { token: sessionStorage.token }\n })\n .then(function (response) {\n const { TotalRecord, rows, ErrorMessage } = response.data;\n console.log(TotalRecord, rows, ErrorMessage)\n if (TotalRecord <= 0) {\n alert(\"錯誤\")\n\n } else {\n\n switch (viewState) {\n case 'day':\n getData(moment(dateStart).format(\"YYYY/MM/DD\"), moment(dateStart).format(\"YYYY/MM/DD\"));\n break;\n case 'week':\n getData(moment(dateStart).startOf('week').format(\"YYYY/MM/DD\"), moment(dateStart).endOf('week').format(\"YYYY/MM/DD\"));\n break;\n case 'month':\n getData(moment(dateStart).startOf('month').format(\"YYYY/MM/DD\"), moment(dateStart).endOf('month').format(\"YYYY/MM/DD\"));\n break;\n case 'agenda':\n getData(moment(dateStart).format(\"YYYY/MM/DD\"), moment(dateStart).format(\"YYYY/MM/DD\"));\n break;\n }\n setOpen(false)\n setAction(\"\")\n\n }\n })\n\n }\n }\n\n const [myEventsList, setEvent] = React.useState([\n // {\n // roomBookingID: 1,\n // start: moment().toDate(),\n // end: moment()\n // .add(1, \"days\")\n // .toDate(),\n // title: \"Birthday\",\n // color: deepPurple[500],\n // resourceId: 1\n // }\n ]);\n React.useEffect(() => {\n console.log(myEventsList)\n }, [myEventsList])\n\n const getData = (start, end) => {\n PF.instance({\n method: \"POST\",\n url: PF.url + \"/RoomBooking/GetData\",\n data: Qs.stringify({ parameter: { dateStart: start, dateEnd: end } }),\n // headers: { token: sessionStorage.token }\n })\n .then(function (response) {\n const { TotalRecord, rows, ErrorMessage } = response.data\n if (TotalRecord <= 0) {\n // alert(\"問卷提交出錯\\r\\n\" + ErrorMessage + \"請致電 04-2255-2555 #168 企業健檢\")\n\n } else {\n // setActiveStep((prevActiveStep) => prevActiveStep + 1);\n // setImage(\"Image\");\n let row = rows.map(item => {\n return { ...item, color: departmentMap[item.department], resourceId: item.meetingRoomID, start: moment(item.start, 'YYYY-MM-DDTHH:mm').toDate(), end: moment(item.end, 'YYYY-MM-DDTHH:mm').toDate() }\n })\n // console.log(row)\n\n setEvent(row)\n\n }\n })\n\n }\n React.useEffect(() => {\n console.log(user)\n }, [user])\n\n const [draggedEvent, setDraggedEvent] = React.useState({});\n const [displayDragItemInCell, setDisplayDragItemInCell] = React.useState(true);\n\n const dragFromOutsideItem = () => {\n return draggedEvent\n }\n const handleDragStart = event => {\n setDraggedEvent(event)\n }\n //滑鼠拖曳:新建事件\n const handleSelect = prop => {\n // console.log(prop)\n const { start, end, resourceId } = prop;\n // console.log(myEventsList);\n if (isSingleEvent(null, prop) !== isSingle) {\n // console.log(\"不繼續\")\n alert(\"時間重複\")\n return;\n }\n if (new Date() > start) {\n alert(\"時間已過,新預約請選擇之後時間\")\n } else {\n setOpen(true);\n setAction(\"Add\")\n setUser(prev => ({\n department: \"\",\n start: moment(start).format(\"YYYY/MM/DD HH:mm\"),\n end: moment(end).format(\"YYYY/MM/DD HH:mm\"),\n resourceId: resourceId\n }))\n }\n }\n\n const isSingleEvent = (event, prop) => {\n const { start, end, resourceId } = prop;\n let evnets = myEventsList;\n\n if (event !== null) {\n //先不算自己\n evnets = evnets.filter(item => item.roomBookingID !== event.roomBookingID)\n }\n let rows = evnets.filter(item => {\n if (item.resourceId === resourceId) {\n if ((item.start < start && item.end > start) || (item.start < end && item.end > end) || (item.start >= start && item.end <= end)) {\n return item\n }\n }\n\n })\n // console.log(myEventsList)\n // console.log(rows)\n if (rows.length > 0) {\n return false\n } else {\n return true\n }\n\n }\n const handleDelete = e => {\n e.preventDefault();\n const { start } = user;\n let timeStart = moment(start, \"YYYY/MM/DD HH:mm\").toDate();\n\n if (timeStart < new Date()) {\n alert(\"時間已過,無法刪除\");\n } else {\n PF.instance({\n method: \"POST\",\n url: PF.url + \"/RoomBooking/DELETE\",\n data: Qs.stringify({ Action: \"DELETE\", parameter: user }),\n // headers: { token: sessionStorage.token }\n })\n .then(function (response) {\n const { TotalRecord, rows, ErrorMessage } = response.data;\n console.log(TotalRecord, rows, ErrorMessage)\n if (TotalRecord <= 0) {\n alert(\"錯誤\")\n\n } else {\n\n switch (viewState) {\n case 'day':\n getData(moment(dateStart).format(\"YYYY/MM/DD\"), moment(dateStart).format(\"YYYY/MM/DD\"));\n break;\n case 'week':\n getData(moment(dateStart).startOf('week').format(\"YYYY/MM/DD\"), moment(dateStart).endOf('week').format(\"YYYY/MM/DD\"));\n break;\n case 'month':\n getData(moment(dateStart).startOf('month').format(\"YYYY/MM/DD\"), moment(dateStart).endOf('month').format(\"YYYY/MM/DD\"));\n break;\n case 'agenda':\n getData(moment(dateStart).format(\"YYYY/MM/DD\"), moment(dateStart).format(\"YYYY/MM/DD\"));\n break;\n }\n setOpen(false);\n setAction(\"\");\n\n\n }\n })\n }\n\n\n\n }\n //拖曳移動預約\n const moveEvent = (prop) => {\n const { event, start, end, isAllDay: droppedOnAllDaySlot, resourceId } = prop\n // const { events } = this.state\n // let events = myEventsList\n let allDay = event.allDay\n if (isSingleEvent(event, prop) !== isSingle) {\n // console.log(\"不繼續\")\n alert(\"時間重複\")\n return;\n }\n // console.log(start)\n const { start: OriginalStart } = event;\n let timeStart = moment(OriginalStart, \"YYYY/MM/DD HH:mm\").toDate();\n if (timeStart < new Date()) {\n alert(\"時間已過,不允許變更\")\n return;\n }\n\n if (start < new Date()) {\n alert(\"時間已過,新預約請選擇之後時間\")\n } else {\n if (!event.allDay && droppedOnAllDaySlot) {\n allDay = true\n } else if (event.allDay && !droppedOnAllDaySlot) {\n allDay = false\n }\n\n // const nextEvents = events.map(existingEvent => {\n // return existingEvent.roomBookingID == event.roomBookingID\n // ? {\n // ...existingEvent, start, end, allDay\n // , resourceId //允許變換\n // }\n // : existingEvent\n // })\n // setEvent(nextEvents);\n // const newEvent = events.find(existingEvent => {\n // return existingEvent.roomBookingID == event.roomBookingID\n // })\n // setUser(event);\n // handleSubmit()\n\n //TODO:UPDATE EVENT\n // let row = event.map(item => {\n // return { ...item, color: departmentMap[item.department], resourceId: item.meetingRoomID, start: moment(item.start).format(\"YYYY-MM-DD HH:mm\"), end: moment(item.end).format(\"YYYY-MM-DD HH:mm\") }\n // })\n // console.log(event)\n // console.log(row)\n let newEvent = {\n ...event,\n start: moment(start).format(\"YYYY-MM-DD HH:mm\"),\n end: moment(end).format(\"YYYY-MM-DD HH:mm\"),\n resourceId,\n allDay\n }\n\n PF.instance({\n method: \"POST\",\n url: PF.url + \"/RoomBooking/Update\",\n data: Qs.stringify({ Action: \"Update\", parameter: newEvent }),\n // headers: { token: sessionStorage.token }\n })\n .then(function (response) {\n const { TotalRecord, rows, ErrorMessage } = response.data;\n // console.log(TotalRecord, rows, ErrorMessage)\n if (TotalRecord <= 0) {\n alert(\"錯誤\")\n\n } else {\n\n switch (viewState) {\n case 'day':\n getData(moment(dateStart).format(\"YYYY/MM/DD\"), moment(dateStart).format(\"YYYY/MM/DD\"));\n break;\n case 'week':\n getData(moment(dateStart).startOf('week').format(\"YYYY/MM/DD\"), moment(dateStart).endOf('week').format(\"YYYY/MM/DD\"));\n break;\n case 'month':\n getData(moment(dateStart).startOf('month').format(\"YYYY/MM/DD\"), moment(dateStart).endOf('month').format(\"YYYY/MM/DD\"));\n break;\n case 'agenda':\n getData(moment(dateStart).format(\"YYYY/MM/DD\"), moment(dateStart).format(\"YYYY/MM/DD\"));\n break;\n }\n setOpen(false)\n // setAction(\"\")\n\n }\n })\n\n\n\n }\n\n\n\n // alert(`${event.title} was dropped onto ${updatedEvent.start}`)\n }\n\n const onDropFromOutside = (prop) => {\n // const { draggedEvent } = this.state\n const { start, end, allDay, resourceId } = prop;\n const event = {\n id: draggedEvent.id, //不能重複\n title: draggedEvent.title,\n start,\n end,\n allDay: allDay,\n resourceId: resourceId, //會換會議室\n }\n\n setDraggedEvent(null)\n moveEvent({ event, start, end })\n }\n const resizeEvent = (prop) => {\n const { event, start, end, resourceId } = prop;\n // console.log(start)\n // let events = myEventsList\n if (isSingleEvent(event, prop) !== isSingle) {\n // console.log(\"不繼續\")\n alert(\"時間重複\")\n return;\n }\n if (start < new Date()) {\n alert(\"時間已過,新預約請選擇之後時間\")\n } else {\n\n // const nextEvents = events.map(existingEvent => {\n // return existingEvent.id == event.id\n // ? { ...existingEvent, start, end, resourceId }\n // : existingEvent\n // })\n // setEvent(nextEvents)\n let newEvent = {\n ...event,\n start: moment(start).format(\"YYYY-MM-DD HH:mm\"),\n end: moment(end).format(\"YYYY-MM-DD HH:mm\"),\n resourceId,\n }\n\n PF.instance({\n method: \"POST\",\n url: PF.url + \"/RoomBooking/Update\",\n data: Qs.stringify({ Action: \"Update\", parameter: newEvent }),\n // headers: { token: sessionStorage.token }\n })\n .then(function (response) {\n const { TotalRecord, rows, ErrorMessage } = response.data;\n // console.log(TotalRecord, rows, ErrorMessage)\n if (TotalRecord <= 0) {\n alert(\"錯誤\")\n\n } else {\n\n switch (viewState) {\n case 'day':\n getData(moment(dateStart).format(\"YYYY/MM/DD\"), moment(dateStart).format(\"YYYY/MM/DD\"));\n break;\n case 'week':\n getData(moment(dateStart).startOf('week').format(\"YYYY/MM/DD\"), moment(dateStart).endOf('week').format(\"YYYY/MM/DD\"));\n break;\n case 'month':\n getData(moment(dateStart).startOf('month').format(\"YYYY/MM/DD\"), moment(dateStart).endOf('month').format(\"YYYY/MM/DD\"));\n break;\n case 'agenda':\n getData(moment(dateStart).format(\"YYYY/MM/DD\"), moment(dateStart).format(\"YYYY/MM/DD\"));\n break;\n }\n setOpen(false)\n setAction(\"\")\n\n }\n })\n\n }\n\n }\n const classes = useStyles();\n\n //改顏色\n const eventPropGetter = (event, start, end, isSelected) => {\n const backgroundColor = !_.isNil(event.color) ? event.color : deepPurple[500];\n return isSelected ? { style: { backgroundColor } } : {\n style: {\n backgroundColor,\n opacity: 0.80,\n // borderLeftColor: \"black\",\n borderBottom: \"3px solid\",\n },\n className: classes.event,\n }\n }\n const handleChange = event => {\n const { name, value } = event.target\n // console.log(name, value)\n setUser(prev => ({\n ...prev,\n [name]: value\n }))\n // setUser()\n }\n const handleTxtChange = event => {\n const { name, value } = event.target\n // console.log(name, value)\n setUser(prev => ({\n ...prev,\n [name]: value\n }))\n }\n const handleClose = event => {\n // const { name, value } = event.target\n // console.log(name, value)\n setOpen(false);\n setUser(prev => ({\n }));\n setAction(\"\");\n\n }\n\n return (\n \n \n ,\n event: props => \n }}\n onNavigate={(date, view) => {\n console.log('#### onNavigate');\n console.log('#### date=', date);\n console.log('#### view=', view);\n setDateStart(date)\n //this.setState({currentDate: date});\n }}\n onView={(view) => {\n setViewState(view);\n //this.setState({currentView: view});\n }}\n localizer={localizer}\n events={myEventsList}\n startAccessor=\"start\"\n endAccessor=\"end\"\n style={{ height: \"100vh\" }}\n selectable //可以拖曳選擇\n resizable //可以變更\n onSelectEvent={event => { //CLICK event一下\n setAction(\"Update\")\n setOpen(true);\n setUser({\n ...event,\n start: moment(event.start, 'YYYY-MM-DD HH:mm').format(\"YYYY-MM-DD HH:mm\"),\n end: moment(event.end, 'YYYY-MM-DD HH:mm').format(\"YYYY-MM-DD HH:mm\")\n })\n }}\n onSelectSlot={handleSelect} //拖曳新增\n eventPropGetter={eventPropGetter}\n step={15} //每隔15分\n // timeslots={2}\n popup\n views={viewsList} //決定可以看什麼,但不在裡面的defaultView要一起調整\n defaultView={\"week\"}\n resources={resourceMap}\n resourceIdAccessor=\"resourceId\"\n resourceTitleAccessor=\"resourceTitle\"\n handleDragStart={handleDragStart}\n onEventDrop={moveEvent}\n dragFromOutsideItem={\n displayDragItemInCell ? dragFromOutsideItem : null\n }\n onDropFromOutside={onDropFromOutside}\n onEventResize={resizeEvent}\n />\n \n f}\n handleTxtChange={handleTxtChange}\n formRef={formRef}\n data={user}\n handleSubmit={handleSubmit}\n handleClose={handleClose}\n handleChange={handleChange}\n handleDelete={handleDelete}\n action={action}\n />\n \n )\n}\nexport default MyCalendar;\nconst viewsList = ['week', 'day'] //要顯示的view\nconst CustomEvent = (props) => {\n // console.log(props)\n const { title, event } = props\n return (<>\n
{title}
\n \n\n \n )\n}\n//按鈕toolbar\nfunction RBCToolbar(props) {\n React.useEffect(() => {\n const { view, date: mDate, getData } = props\n switch (view) {\n case 'day':\n getData(moment(mDate).format(\"YYYY/MM/DD\"), moment(mDate).format(\"YYYY/MM/DD\"));\n break;\n case 'week':\n getData(moment(mDate).startOf('week').format(\"YYYY/MM/DD\"), moment(mDate).endOf('week').format(\"YYYY/MM/DD\"));\n break;\n case 'month':\n getData(moment(mDate).startOf('month').format(\"YYYY/MM/DD\"), moment(mDate).endOf('month').format(\"YYYY/MM/DD\"));\n break;\n case 'agenda':\n getData(moment(mDate).format(\"YYYY/MM/DD\"), moment(mDate).format(\"YYYY/MM/DD\"));\n break;\n default:\n }\n\n }, [])\n const [viewState, setViewState] = useState(props.view);\n const [StudyTimechecked, setStudyTimechecked] = useState(false)\n const getCustomToolbar = () => {\n // const toolbarDate = props.date;\n const goToDayView = () => {\n let view = viewState;\n const { getData, date: mDate } = props\n switch (view) {\n case 'day':\n getData(moment(mDate).format(\"YYYY/MM/DD\"), moment(mDate).format(\"YYYY/MM/DD\"));\n break;\n case 'week':\n getData(moment(mDate).startOf('week').format(\"YYYY/MM/DD\"), moment(mDate).endOf('week').format(\"YYYY/MM/DD\"));\n break;\n case 'month':\n getData(moment(mDate).startOf('month').format(\"YYYY/MM/DD\"), moment(mDate).endOf('month').format(\"YYYY/MM/DD\"));\n break;\n case 'agenda':\n getData(moment(mDate).format(\"YYYY/MM/DD\"), moment(mDate).format(\"YYYY/MM/DD\"));\n break;\n default:\n }\n props.onView(\"day\");\n setViewState(\"day\");\n\n\n };\n const goToWeekView = () => {\n let view = viewState;\n const { getData, date: mDate } = props\n switch (view) {\n case 'day':\n getData(moment(mDate).format(\"YYYY/MM/DD\"), moment(mDate).format(\"YYYY/MM/DD\"));\n break;\n case 'week':\n getData(moment(mDate).startOf('week').format(\"YYYY/MM/DD\"), moment(mDate).endOf('week').format(\"YYYY/MM/DD\"));\n break;\n case 'month':\n getData(moment(mDate).startOf('month').format(\"YYYY/MM/DD\"), moment(mDate).endOf('month').format(\"YYYY/MM/DD\"));\n break;\n case 'agenda':\n getData(moment(mDate).format(\"YYYY/MM/DD\"), moment(mDate).format(\"YYYY/MM/DD\"));\n break;\n default:\n }\n\n props.onView(\"week\");\n setViewState(\"week\");\n };\n const goToMonthView = () => {\n let view = viewState;\n const { getData, date: mDate } = props\n switch (view) {\n case 'day':\n getData(moment(mDate).format(\"YYYY/MM/DD\"), moment(mDate).format(\"YYYY/MM/DD\"));\n break;\n case 'week':\n getData(moment(mDate).startOf('week').format(\"YYYY/MM/DD\"), moment(mDate).endOf('week').format(\"YYYY/MM/DD\"));\n break;\n case 'month':\n getData(moment(mDate).startOf('month').format(\"YYYY/MM/DD\"), moment(mDate).endOf('month').format(\"YYYY/MM/DD\"));\n break;\n case 'agenda':\n getData(moment(mDate).format(\"YYYY/MM/DD\"), moment(mDate).format(\"YYYY/MM/DD\"));\n break;\n default:\n }\n\n props.onView(\"month\");\n setViewState(\"month\");\n };\n const goToAgendaView = () => {\n let view = viewState;\n const { getData, date: mDate } = props\n switch (view) {\n case 'day':\n getData(moment(mDate).format(\"YYYY/MM/DD\"), moment(mDate).format(\"YYYY/MM/DD\"));\n break;\n case 'week':\n getData(moment(mDate).startOf('week').format(\"YYYY/MM/DD\"), moment(mDate).endOf('week').format(\"YYYY/MM/DD\"));\n break;\n case 'month':\n getData(moment(mDate).startOf('month').format(\"YYYY/MM/DD\"), moment(mDate).endOf('month').format(\"YYYY/MM/DD\"));\n break;\n case 'agenda':\n getData(moment(mDate).format(\"YYYY/MM/DD\"), moment(mDate).format(\"YYYY/MM/DD\"));\n break;\n default:\n }\n\n props.onView(\"agenda\");\n setViewState(\"agenda\");\n };\n const goToBack = () => {\n let view = viewState;\n // let mDate = props.date;\n const { getData, date: mDate } = props\n let newDate;\n if (view === \"month\") {\n newDate = new Date(mDate.getFullYear(), mDate.getMonth() - 1, 1);\n } else if (view === \"week\") {\n newDate = new Date(\n mDate.getFullYear(),\n mDate.getMonth(),\n mDate.getDate() - 7,\n 1\n );\n } else { //date\n newDate = new Date(\n mDate.getFullYear(),\n mDate.getMonth(),\n mDate.getDate() - 1,\n 1\n );\n }\n switch (view) {\n case 'day':\n getData(moment(newDate).format(\"YYYY/MM/DD\"), moment(newDate).format(\"YYYY/MM/DD\"));\n break;\n case 'week':\n getData(moment(newDate).startOf('week').format(\"YYYY/MM/DD\"), moment(newDate).endOf('week').format(\"YYYY/MM/DD\"));\n break;\n case 'month':\n getData(moment(newDate).startOf('month').format(\"YYYY/MM/DD\"), moment(newDate).endOf('month').format(\"YYYY/MM/DD\"));\n break;\n case 'agenda':\n getData(moment(newDate).format(\"YYYY/MM/DD\"), moment(newDate).format(\"YYYY/MM/DD\"));\n break;\n default:\n }\n\n props.onNavigate(\"prev\", newDate);\n\n };\n const goToNext = () => {\n let view = viewState;\n const { getData, date: mDate } = props\n let newDate;\n if (view === \"month\") {\n newDate = new Date(mDate.getFullYear(), mDate.getMonth() + 1, 1);\n } else if (view === \"week\") {\n newDate = new Date(\n mDate.getFullYear(),\n mDate.getMonth(),\n mDate.getDate() + 7,\n 1\n );\n } else {\n newDate = new Date(\n mDate.getFullYear(),\n mDate.getMonth(),\n mDate.getDate() + 1,\n 1\n );\n }\n console.log(newDate);\n switch (view) {\n case 'day':\n getData(moment(newDate).format(\"YYYY/MM/DD\"), moment(newDate).format(\"YYYY/MM/DD\"));\n break;\n case 'week':\n getData(moment(newDate).startOf('week').format(\"YYYY/MM/DD\"), moment(newDate).endOf('week').format(\"YYYY/MM/DD\"));\n break;\n case 'month':\n getData(moment(newDate).startOf('month').format(\"YYYY/MM/DD\"), moment(newDate).endOf('month').format(\"YYYY/MM/DD\"));\n break;\n case 'agenda':\n getData(moment(newDate).format(\"YYYY/MM/DD\"), moment(newDate).format(\"YYYY/MM/DD\"));\n break;\n default:\n }\n\n props.onNavigate(\"next\", newDate);\n };\n\n const goToToday = () => {\n const now = new Date();\n props.date.setMonth(now.getMonth());\n props.date.setYear(now.getFullYear());\n props.date.setDate(now.getDate());\n props.onNavigate(\"current\");\n };\n\n const goToBackYear = () => {\n let mDate = props.date;\n let newDate = new Date(mDate.getFullYear() - 1, 1);\n props.onNavigate(\"prev\", newDate);\n };\n\n const goToNextYear = () => {\n let mDate = props.date;\n let newDate = new Date(mDate.getFullYear() + 1, 1);\n props.onNavigate(\"next\", newDate);\n };\n\n const month = () => {\n const date = moment(props.date);\n let month = date.format(\"MMMM\");\n let day = date.format(\"D\");\n\n return (\n \n {`${month} ${day}`}\n \n );\n };\n const year = () => {\n const date = moment(props.date);\n let year = date.format(\"YYYY\");\n\n return (\n \n {viewState === \"month\" && (\n \n )}\n {year}\n {viewState === \"month\" && (\n \n )}\n \n );\n };\n\n const day = () => {\n let view = viewState;\n const date = moment(props.date);\n let day;\n if (view === \"day\") {\n day = date.format(\"ddd\") + \" \" + date.format(\"Do\");\n }\n return {day};\n };\n const week = () => {\n let view = viewState;\n const date = moment(props.date);\n let month1 = date.startOf('week').format(\"MMMM\");\n let weekD1 = date.startOf('week').format(\"D\");\n\n let month2 = date.endOf('week').format(\"MMMM\");\n let weekD2 = date.endOf('week').format(\"D\");\n return {`${month1} ${weekD1} - `}{month1 === month2 ? `${weekD2}` : `${month2} ${weekD2}`};\n };\n\n return (\n
\n\n \n \n\n \n\n \n \n {/* 置中顯示日期格式 */}\n {props.label}\n \n \n {viewsList.indexOf(\"month\") >= 0 ? () : null}\n {viewsList.indexOf(\"week\") >= 0 ? () : null}\n {viewsList.indexOf(\"day\") >= 0 ? () : null}\n {viewsList.indexOf(\"agenda\") >= 0 ? () : null}\n \n \n
\n );\n };\n\n return <>{getCustomToolbar()};\n}","import React, { useState } from 'react';\nimport { FormControl, FormLabel, FormHelperText, Paper, useForkRef, Typography, TextField, Button, CircularProgress, Fade, Backdrop } from '@material-ui/core';\n// import Signature from './Signature';\nimport _, { omit, pick, round, slice } from 'lodash';\nimport PF from \"../_Services/publicFunction\";\nimport Qs from \"qs\";\nimport { DarkModeSwitch } from 'react-toggle-dark-mode';\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { actions } from \"../reducers/app\";\nimport useSound from 'use-sound';\nimport switchlight from '../sounds/switchlight.wav';\nimport { makeStyles, withStyles } from '@material-ui/core/styles';\nimport { MuiPickersUtilsProvider, KeyboardDatePicker, DatePicker, KeyboardDateTimePicker, KeyboardTimePicker } from \"@material-ui/pickers\";\nimport TodayIcon from \"@material-ui/icons/UpdateOutlined\";\nimport MomentUtils from \"@date-io/moment\";\nimport moment from \"moment\";\nimport { useSnackbar } from \"notistack\";\n// import Example from \"./components/LHTable/Example\"\nimport InteriorTable from \"../components/LHTable/DataSheet_Virtual\"\nimport Example from '../components/LHTable/Example';\nimport { indigo, teal, deepPurple } from '@material-ui/core/colors'\n\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n width: '100%',\n },\n\n half_background: {\n background: \"linear-gradient(to top, yellow 50%, transparent 50%)\"\n },\n backdrop: {\n zIndex: theme.zIndex.drawer + 1,\n color: '#fff',\n },\n \"data-grid\": {\n width: \"100%\"\n }\n}));\nconst WeeklyBooking = props => {\n const { enqueueSnackbar } = useSnackbar();\n const dispatch = useDispatch();\n const classes = useStyles();\n const initialRender = React.useRef(true);\n const { dark } = useSelector(state => ({\n dark: state.app.dark,\n }));\n const formRef = React.createRef();\n const [playActive] = useSound(\n switchlight,\n { volume: 0.5 }\n );\n const [loading, setLoading] = React.useState(false);\n\n //查詢條件\n const [MornJoy, setMornJoy] = React.useState({\n // CheckDate: { name: \"CheckDate\", label: \"預約日期\", format: \"date\", required: true, value: null },\n startDate: { name: \"startDate\", label: \"預約日期(起)\", format: \"date\", required: true, value: null },\n endDate: { name: \"endDate\", label: \"預約日期(迄)\", format: \"date\", required: true, value: null },\n personalId: { name: \"personalId\", label: \"身分ID\", required: true },\n })\n const [rows, setRows] = useState([]);\n //選中的範圍\n const [selected, setSelected] = React.useState({ start: null, end: null })\n //用於表的快速移動至某行\n const listRef = React.createRef();\n //勾選\n const [checkSelections, setCheckSelections] = React.useState(new Map());\n //允許多個勾選\n const [enableCheck, setEnableCheck] = React.useState(false);\n //允許多個勾選\n const [multiChk, setMultiChk] = React.useState(false);\n //總頁數\n const [pageCount, setPageCount] = React.useState(1)\n //第幾頁\n const [pageNo, setPageNo] = React.useState(6)\n const [columns, setColumns] = React.useState({\n SOMEDAY: { label: \"SOMEDAY\", name: \"SOMEDAY\", width: 100, type: \"text\", required: false, noShowSelect: true, orderSeq: 1 },\n RANGETIME: { label: \"RANGETIME\", name: \"RANGETIME\", width: 60, type: \"text\", required: true, xs: 6, sm: 6, md: 3, orderSeq: 2 },\n Limit: { label: \"Limit\", width: 60, name: \"Limit\", type: \"text\", required: true, xs: 6, sm: 6, md: 3, noShowSelect: true, tableFormat: \"number\", orderSeq: 3 },\n DY: { label: \"DY\", name: \"DY\", width: 60, type: \"text\", required: true, noShowSelect: true, xs: 6, sm: 6, md: 3, tableFormat: \"number\", orderSeq: 4 },\n CW: { label: \"CW\", name: \"CW\", width: 60, type: \"text\", required: true, noShowSelect: true, xs: 6, sm: 6, md: 3, tableFormat: \"number\", orderSeq: 5 },\n AMQC: { label: \"AMQC\", name: \"AMQC\", width: 70, type: \"text\", required: true, noShowSelect: true, xs: 6, sm: 6, md: 3, tableFormat: \"number\", orderSeq: 6 },\n PMQC: { label: \"PMQC\", name: \"PMQC\", width: 70, type: \"text\", required: true, noShowSelect: true, xs: 6, sm: 6, md: 3, tableFormat: \"number\", orderSeq: 7 },\n AMGC: { label: \"AMGC\", name: \"AMGC\", width: 70, type: \"text\", required: true, noShowSelect: true, xs: 6, sm: 6, md: 3, tableFormat: \"number\", orderSeq: 8 },\n PMGC: { label: \"PMGC\", name: \"PMGC\", width: 70, type: \"text\", required: true, noShowSelect: true, xs: 6, sm: 6, md: 3, tableFormat: \"number\", orderSeq: 9 },\n AMBC: { label: \"AMBC\", name: \"AMBC\", width: 70, type: \"text\", required: true, noShowSelect: true, xs: 6, sm: 6, md: 3, tableFormat: \"number\", orderSeq: 10 },\n PMBC: { label: \"PMBC\", name: \"PMBC\", width: 70, type: \"text\", required: true, noShowSelect: true, xs: 6, sm: 6, md: 3, tableFormat: \"number\", orderSeq: 11 },\n FL: { label: \"FL\", name: \"FL\", width: 60, type: \"text\", required: true, noShowSelect: true, xs: 6, sm: 6, md: 3, tableFormat: \"number\", orderSeq: 12 },\n Hear: { label: \"Hear\", name: \"Hear\", width: 70, type: \"text\", required: true, noShowSelect: true, xs: 6, sm: 6, md: 3, tableFormat: \"number\", orderSeq: 13 },\n Ultra: { label: \"Ultra\", name: \"Ultra\", width: 60, type: \"text\", required: true, noShowSelect: true, xs: 6, sm: 6, md: 3, tableFormat: \"number\", orderSeq: 14 },\n Lung: { label: \"Lung\", name: \"Lung\", width: 60, type: \"text\", required: true, noShowSelect: true, xs: 6, sm: 6, md: 3, tableFormat: \"number\", orderSeq: 15 },\n DXA: { label: \"DXA\", name: \"DXA\", width: 60, type: \"text\", required: true, noShowSelect: true, xs: 6, sm: 6, md: 3, tableFormat: \"number\", orderSeq: 16 },\n Auto: { label: \"Auto\", name: \"Auto\", width: 60, type: \"text\", required: true, noShowSelect: true, xs: 6, sm: 6, md: 3, tableFormat: \"number\", orderSeq: 17 },\n MP: { label: \"MP\", name: \"MP\", width: 60, type: \"text\", required: true, noShowSelect: true, xs: 6, sm: 6, md: 3, tableFormat: \"number\", orderSeq: 18 },\n VIP: { label: \"VIP\", name: \"VIP\", width: 60, type: \"text\", required: true, noShowSelect: true, xs: 6, sm: 6, md: 3, tableFormat: \"number\", orderSeq: 19 },\n VIPRest: { label: \"VIPRest\", name: \"VIPRest\", width: 70, type: \"text\", required: true, noShowSelect: true, xs: 6, sm: 6, md: 3, tableFormat: \"number\", orderSeq: 20 },\n })\n React.useEffect(() => {\n let noshowTable = [];\n Object.values(columns).map(item => {\n if (item.noshowTable === true) {\n // console.log(item.name)\n noshowTable.push(item.name)\n }\n })\n let showColumns = _.omit(columns, noshowTable); //轉換\n setOrderRows(prev => PF.dataSheetGridFormat(rows, Object.keys(showColumns)))\n }, [columns])\n //轉換\n let noshowTable = [];\n Object.values(columns).map(item => {\n if (item.noshowTable === true) {\n // console.log(item.name)\n noshowTable.push(item.name)\n }\n })\n let showColumns = _.omit(columns, noshowTable)\n // const [showColumns, setShowColumn] = React.useState(_.omit(columns, noshowTable))\n //let z22 = _.orderBy(z2, ['orderSeq']); //排序\n //let z3 = z2.map(item=>(item.name));//只取標頭\n // console.log(z22); //依照column順序排序\n const [orderRows, setOrderRows] = React.useState(PF.dataSheetGridFormat(rows, Object.keys(showColumns)))\n //雙擊\n const handleDoubleClick = (i, j, e) => {\n console.log(rows[i]);\n }\n const RowStyleFunc = (rows, index) => {\n\n return new Date(rows[index][\"SOMEDAY\"]).getDate() % 2 != 0 ? dark ? indigo[900] : indigo[50] : \"\";\n }\n\n const handleQuery = prop => {\n if (!_.isEmpty(MornJoy.startDate.value) && !_.isEmpty(MornJoy.endDate.value)) {\n } else {\n alert(\"請輸入日期\")\n return\n }\n\n setLoading(true);\n PF.instance({\n method: \"post\",\n url: PF.url + \"/Reservation/GetWeeklyData\",\n data: Qs.stringify({ parameter: { startDate: MornJoy.startDate.value, endDate: MornJoy.endDate.value } }),\n // headers: { token: sessionStorage.token }\n })\n .then(function (response) {\n // alert(\"完成\")\n const { TotalRecord, rows } = response.data;\n console.log(rows)\n if (TotalRecord > 0) {\n enqueueSnackbar(\"查詢成功\", { variant: \"success\", style: { whiteSpace: 'pre-line' } });\n setRows(prev => rows);\n setOrderRows(prev => [...PF.dataSheetGridFormat(rows, Object.keys(showColumns))]);\n\n }\n else {\n enqueueSnackbar(\"查無資料\", { variant: \"warning\", style: { whiteSpace: 'pre-line' } });\n }\n setLoading(false);\n })\n\n };\n const handleDateChange = (name, e, v) => {\n setMornJoy(prevState => ({\n ...prevState,\n [name]: {\n ...prevState[name],\n value: v\n }\n }));\n }\n\n\n return (\n <>\n \n dispatch(actions.THEME_SET({ theme: !dark }))}\n onMouseDown={() => playActive()}\n size={20} />\n
\n \n {Object.values(MornJoy).slice(0, 2).map((item, key) => {\n if (item.format === \"date\") {\n\n return (}\n showTodayButton\n minDate={item.minDate || new Date(\"1900-01-01\")}\n maxDate={item.maxDate || new Date(\"2100-01-01\")}\n clearLabel={\"清除\"}\n label={item.label}\n value={item.value}\n inputValue={item.value}\n onChange={(event, value) =>\n handleDateChange(item.name, event, value)\n }\n />\n )\n } else {\n // return (\n // )\n\n }\n\n })}\n \n \n\n
\n
\n \n\n\n
\n \n \n \n );\n}\nexport default WeeklyBooking;","import React, { useState } from 'react';\nimport { FormControl, FormGroup, FormControlLabel, FormLabel, FormHelperText, Paper, useForkRef, Typography, TextField, Button, CircularProgress, Fade, Backdrop } from '@material-ui/core';\n// import Signature from './Signature';\nimport _, { isEmpty, omit, pick, round, slice } from 'lodash';\nimport PF from \"../_Services/publicFunction\";\nimport Qs from \"qs\";\nimport { DarkModeSwitch } from 'react-toggle-dark-mode';\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { actions } from \"../reducers/app\";\nimport useSound from 'use-sound';\nimport switchlight from '../sounds/switchlight.wav';\nimport { makeStyles, withStyles } from '@material-ui/core/styles';\nimport { MuiPickersUtilsProvider, KeyboardDatePicker, DatePicker, KeyboardDateTimePicker, KeyboardTimePicker } from \"@material-ui/pickers\";\nimport TodayIcon from \"@material-ui/icons/UpdateOutlined\";\nimport MomentUtils from \"@date-io/moment\";\nimport moment from \"moment\";\nimport { useSnackbar } from \"notistack\";\n// import Example from \"./components/LHTable/Example\"\nimport InteriorTable from \"../components/LHTable/DataSheet_Virtual\"\nimport Example from '../components/LHTable/Example';\nimport { indigo, teal, deepPurple } from '@material-ui/core/colors'\nimport Autocomplete, { createFilterOptions } from '@material-ui/lab/Autocomplete';\nimport { FormattedMessage, injectIntl, intlShape, useIntl } from 'react-intl';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n width: '100%',\n },\n\n half_background: {\n background: \"linear-gradient(to top, yellow 50%, transparent 50%)\"\n },\n backdrop: {\n zIndex: theme.zIndex.drawer + 1,\n color: '#fff',\n },\n \"data-grid\": {\n width: \"100%\"\n }\n}));\n\nconst WeeklyBooking = props => {\n const filterOptions = createFilterOptions({\n matchFrom: 'any',\n stringify: (option) => \"[\" + option.ProjectNo + \"]\" + option.ProjectName,\n });\n const { enqueueSnackbar } = useSnackbar();\n const dispatch = useDispatch();\n const classes = useStyles();\n const initialRender = React.useRef(true);\n const { dark } = useSelector(state => ({\n dark: state.app.dark,\n }));\n const intl = useIntl();\n\n const formRef = React.createRef();\n const [playActive] = useSound(\n switchlight,\n { volume: 0.5 }\n );\n const [loading, setLoading] = React.useState(false);\n\n //查詢條件\n\n const [settingObj, setObj] = React.useState({\n startDate: { label: \"健檢日期(起)\", name: \"startDate\", format: \"date\", required: true, disableFuture: true, value: null },\n endDate: { label: \"健檢日期(迄)\", name: \"endDate\", format: \"date\", required: true, disableFuture: true, placeholder: \"2000/01/01\", value: null },\n projectNo: { label: \"專案名稱\", name: \"projectNo\", format: \"text\", required: true }\n })\n\n const [rows, setRows] = useState([]);\n //選中的範圍\n const [selected, setSelected] = React.useState({ start: null, end: null })\n //用於表的快速移動至某行\n const listRef = React.createRef();\n //勾選\n const [checkSelections, setCheckSelections] = React.useState(new Map());\n //允許多個勾選\n const [enableCheck, setEnableCheck] = React.useState(false);\n //允許多個勾選\n const [multiChk, setMultiChk] = React.useState(false);\n //總頁數\n const [pageCount, setPageCount] = React.useState(1)\n //第幾頁\n const [pageNo, setPageNo] = React.useState(6)\n const [columns, setColumns] = React.useState({\n BarCodeStr: { label: \"BarCodeStr\", name: \"BarCodeStr\", width: 100, type: \"text\", required: false, noShowSelect: true, orderSeq: 1 },\n Name: { label: \"Name\", name: \"Name\", width: 100, type: \"text\", required: true, xs: 6, sm: 6, md: 3, orderSeq: 2 },\n SpecNo66: { label: \"SpecNo66\", name: \"SpecNo66\", width: 100, type: \"text\", required: true, noShowSelect: true, xs: 6, sm: 6, md: 3, orderSeq: 4 },\n ID: { label: \"ID\", name: \"ID\", width: 100, type: \"text\", required: true, xs: 6, sm: 6, md: 3, noShowSelect: true, orderSeq: 3 },\n })\n React.useEffect(() => {\n let noshowTable = [];\n Object.values(columns).map(item => {\n if (item.noshowTable === true) {\n // console.log(item.name)\n noshowTable.push(item.name)\n }\n })\n let showColumns = _.omit(columns, noshowTable); //轉換\n setOrderRows(prev => PF.dataSheetGridFormat(rows, Object.keys(showColumns)))\n }, [columns])\n //轉換\n let noshowTable = [];\n Object.values(columns).map(item => {\n if (item.noshowTable === true) {\n // console.log(item.name)\n noshowTable.push(item.name)\n }\n })\n let showColumns = _.omit(columns, noshowTable)\n // const [showColumns, setShowColumn] = React.useState(_.omit(columns, noshowTable))\n //let z22 = _.orderBy(z2, ['orderSeq']); //排序\n //let z3 = z2.map(item=>(item.name));//只取標頭\n // console.log(z22); //依照column順序排序\n const [orderRows, setOrderRows] = React.useState(PF.dataSheetGridFormat(rows, Object.keys(showColumns)))\n //雙擊\n const handleDoubleClick = (i, j, e) => {\n console.log(rows[i]);\n }\n const RowStyleFunc = (rows, index) => {\n return \"\";\n }\n\n\n const handleQuery = prop => {\n if (validator()) {\n setLoading(true);\n PF.instance({\n method: \"post\",\n url: PF.url + \"/CheckProject/Update66\",\n data: Qs.stringify({ Action: \"Update\", parameter: { startDate: settingObj.startDate.value, endDate: settingObj.endDate.value, ProjectNo: settingObj.projectNo.value } }),\n // headers: { token: sessionStorage.token }\n })\n .then(function (response) {\n // alert(\"完成\")\n const { TotalRecord, rows } = response.data;\n console.log(rows)\n if (TotalRecord > 0) {\n enqueueSnackbar(\"更新成功\", { variant: \"success\", style: { whiteSpace: 'pre-line' } });\n setRows(prev => rows);\n setOrderRows(prev => [...PF.dataSheetGridFormat(rows, Object.keys(showColumns))]);\n\n }\n else {\n enqueueSnackbar(\"更新失敗\", { variant: \"warning\", style: { whiteSpace: 'pre-line' } });\n }\n setLoading(false);\n })\n }\n };\n const handleDateChange = (name, e, v) => {\n setObj(prevState => ({\n ...prevState,\n [name]: {\n ...prevState[name],\n value: v\n }\n }));\n }\n const handleTxtChange = e => {\n // const { name, value } = e.target;\n\n }\n const [ProjectList, setProjectList] = React.useState([]);\n\n React.useEffect(() => {\n setLoading(true)\n PF.instance({\n method: \"post\",\n url: PF.url + \"/CheckProject/GetData\",\n data: Qs.stringify({ parameter: { projectName: \"\" } }),\n // headers: { token: sessionStorage.token }\n })\n .then(function (response) {\n // alert(\"完成\")\n const { TotalRecord, rows } = response.data;\n // console.log(rows)\n if (TotalRecord > 0) {\n enqueueSnackbar(\"查詢成功\", { variant: \"success\", style: { whiteSpace: 'pre-line' } });\n setProjectList(rows)\n\n }\n else {\n enqueueSnackbar(\"查無資料\", { variant: \"warning\", style: { whiteSpace: 'pre-line' } });\n }\n setLoading(false);\n })\n\n }, []);\n const handleAutoCompleteChange = (e, v) => {\n console.log(v) //一筆資料\n setObj(prevState => ({\n ...prevState,\n projectNo: { ...prevState.projectNo, value: v === null ? null : v.ProjectNo }\n }))\n\n }\n\n const validator = () => {\n const form = formRef.current; //參數1\n if (form.checkValidity()) {\n console.log(\"全部通過\");\n for (let i = 0; i < form.elements.length; i++) {\n const element = form.elements[i];\n if (Object.keys(settingObj).includes(element.name)) {\n setObj(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\"])\n }))\n }\n }\n return true;\n } else {\n for (let i = 0; i < form.elements.length; i++) {\n const element = form.elements[i];\n if (element.tagName !== 'button' && element.willValidate && !element.validity.valid) { //提交按鈕不用驗證\n if (Object.keys(settingObj).includes(element.name)) {\n setObj(prevState => ({\n ...prevState,\n [element.name]: { ...prevState[element.name], error: true, helperText: intl.formatMessage({ id: element.validationMessage }) }\n }))\n }\n // console.log(element.validationMessage)\n\n } else {//驗證通過,自訂訊息\n //有在settingObj的\n if (Object.keys(settingObj).includes(element.name)) {\n setObj(prevState => ({\n ...prevState,\n [element.name]: omit(prevState[element.name], [\"error\"])\n }))\n }\n\n }\n }\n return false;\n }\n }\n\n\n return (\n <>\n \n dispatch(actions.THEME_SET({ theme: !dark }))}\n onMouseDown={() => playActive()}\n size={20} />\n
\n \n option.ProjectName} //大小寫須一致\n filterOptions={filterOptions}\n renderOption={(option) => (//表達格式\n \n [{option.ProjectNo}] {option.ProjectName}\n \n )}\n style={{ width: 300 }}\n renderInput={(params) =>\n }\n />\n \n\n \n {Object.values(settingObj).slice(0, 2).map((item, key) => {\n if (item.format === \"date\") {\n\n return (}\n showTodayButton\n minDate={item.minDate || new Date(\"1900-01-01\")}\n maxDate={item.maxDate || new Date(\"2100-01-01\")}\n clearLabel={\"清除\"}\n label={item.label}\n value={item.value}\n inputValue={item.value}\n onChange={(event, value) =>\n handleDateChange(item.name, event, value)\n }\n />\n )\n } else {\n return (\n )\n\n }\n\n })}\n \n \n\n
\n
\n \n\n\n
\n \n \n \n );\n}\nexport default WeeklyBooking;","import React, { Component, useRef, useState } from 'react';\n// import css from 'Minmax.css'\n// import './Minmax.css';\nimport jsPDF from 'jspdf';\nimport html2canvas from \"html2canvas\";\nimport { FormControl, FormLabel, FormControlLabel, Checkbox, FormHelperText, Paper, Chip, Card, CardHeader, CardMedia, CardContent, CardActions, Avatar } from '@material-ui/core';\n\nconst domToImage = require('dom-to-image');\nconst domToPdf = require('dom-to-pdf');\n\n\nconst Minmax = props => {\n\n const upload = e => {\n\n var element = document.getElementById('signature');\n // var options = {\n // filename: sessionStorage.getItem('BarCodeStr') + '.pdf',\n // };\n // var pdf = new jsPDF();\n var pdf = new jsPDF('p', 'pt', 'a4');\n\n\n // var element = document.getElementById('test');\n var options = {\n filename: 'test.pdf'\n };\n domToPdf(element, options, function (pdf) {\n console.log('done');\n });\n }\n\n const getPDF = (e) => {\n\n var HTML_Width = 1070;\n var HTML_Height = 4542;\n var top_left_margin = '309';\n var PDF_Width = 1070;\n var PDF_Height = 1514;\n var canvas_image_width = HTML_Width;\n var canvas_image_height = HTML_Height;\n\n var totalPDFPages = Math.ceil(HTML_Height / PDF_Height) - 1;\n var element = document.getElementById('signature');\n // console.log(totalPDFPages)\n\n // html2canvas(element, { allowTaint: true, imageTimeout: 0, }).then(function (canvas) {\n // canvas.getContext('2d');\n\n // console.log(canvas.height + \" \" + canvas.width);\n\n\n // var imgData = canvas.toDataURL(\"image/jpeg\", 1.0);\n // var pdf = new jsPDF('p', 'pt', [PDF_Width, PDF_Height]);\n // pdf.addImage(imgData, 'JPG', 0, 0, canvas_image_width, canvas_image_height);\n\n\n // for (var i = 1; i <= totalPDFPages; i++) {\n // pdf.addPage(PDF_Width, PDF_Height);\n // pdf.addImage(imgData, 'JPG', 0, -(PDF_Height * i) + (0 * 4), canvas_image_width, canvas_image_height);\n // }\n\n // pdf.save(\"HTML-Document.pdf\");\n // });\n // var scale = 2;\n domToImage.toPng(element,\n {\n scale: 5\n // width: 1070 * scale,\n // height: 4542 * scale,\n // style: {\n // transform: 'scale(' + scale + ')',\n // transformOrigin: 'top left'\n // }\n }\n ).then(pageData => {\n let contentWidth = element.clientWidth;\n let contentHeight = element.clientHeight;\n console.log(element.clientWidth)\n console.log(element.clientHeight)\n //一页pdf显示html页面生成的canvas高度;\n let pageHeight = contentWidth / 592.28 * 841.89;\n //未生成pdf的html页面高度\n let leftHeight = contentHeight;\n //页面偏移\n let position = 0;\n //a4纸的尺寸[595.28,841.89],html页面生成的canvas在pdf中图片的宽高\n let imgWidth = 595.28;\n let imgHeight = 592.28 / contentWidth * contentHeight;\n let pdf = new jsPDF('', 'pt', 'a4');\n\n //有两个高度需要区分,一个是html页面的实际高度,和生成pdf的页面高度(841.89)\n //当内容未超过pdf一页显示的范围,无需分页\n if (leftHeight < pageHeight) {\n pdf.addImage(pageData, 'JPEG', -120, 0, imgWidth, imgHeight);\n } else {\n while (leftHeight > 0) {\n pdf.addImage(pageData, 'JPEG', -120, position, imgWidth, imgHeight)\n leftHeight -= pageHeight;\n position -= 841.89;\n //避免添加空白页\n if (leftHeight > 0) {\n pdf.addPage();\n }\n }\n }\n\n pdf.save('content.pdf');\n });\n };\n\n return (\n <>\n \n
\n
\n

測試

\n }\n label=\"女\"\n />\n
\n
OOO
\n
YYY
\n
\n \n )\n}\n\nexport default Minmax;","// import 'core-js/es6/map';\n// import 'core-js/es6/set';\n// import 'core-js/fn/array/find';\n// import 'core-js/fn/array/includes';\n// import 'core-js/fn/number/is-nan';\nimport 'core-js';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { Router, Route, Switch, Redirect, HashRouter } from \"react-router-dom\";\nimport './index.css';\nimport App from './App';\nimport Dashboard from './Dashboard';\n\nimport Signature from './Signature';\nimport { PDFDownloadLink, Document, Page, PDFViewer } from '@react-pdf/renderer'\nimport { Button, IconButton } from '@material-ui/core';\nimport reportWebVitals from './reportWebVitals';\nimport jsPDF from \"jspdf\";\nimport html2canvas from \"html2canvas\";\nimport ReactDOMServer from \"react-dom/server\";\nimport domtoimage from 'dom-to-image';\nimport Login from './Login';\nimport PrivateRoute from \"./_Services/PrivateRoute\";\nimport { createBrowserHistory, createHashHistory } from \"history\";\nimport logger from \"redux-logger\";\nimport thunk from \"redux-thunk\";\nimport { Provider, useSelector, connect } from \"react-redux\";\nimport { createStore, applyMiddleware } from \"redux\";\nimport { composeWithDevTools } from \"redux-devtools-extension\";\nimport app_reducers from \"./reducers/app\";\nimport { unstable_createMuiStrictModeTheme, makeStyles, ThemeProvider } from '@material-ui/core/styles';\n// import { useDispatch, useSelector } from \"react-redux\";\nimport { blue, indigo } from '@material-ui/core/colors';\nimport MyBackdrop from './components/BackDrop/BackDrop';\n\nimport UnderConstruction from \"./Questionaire/UnderConstruction\";\nimport BackBody from \"./Questionaire/BackBody\";\nimport Questionaire66th from './Questionaire/66th';\nimport Questionaire67th from './Questionaire/67th';\nimport Questionaire69th from './Questionaire/69th';\nimport Questionaire68th from './Questionaire/68th';\nimport Questionaire70th from './Questionaire/70th';\nimport Questionaire80th from './Questionaire/80th';\nimport Questionaire81th from './Questionaire/81th';\nimport Nopaper from './Questionaire/Nopaper';\nimport { initial } from 'lodash';\n\nimport Results from './ShowResult/Record';\nimport Match from './Match';\nimport Test from './Test';\n\nimport BasicCalendar from './components/Calendar/BasicCalendar';\nimport WeeklyBooking from './Layouts/WeeklyBooking';\nimport LaborFormCheck from './Layouts/LaborFormCheck';\nimport Minmax from './Layouts/Minmax';\n\nimport { SnackbarProvider, useSnackbar } from \"notistack\";\nimport ClearIcon from \"@material-ui/icons/Clear\";\nimport { IntlProvider } from \"react-intl\";\nimport ImgList from './components/ImgList/ImgList';\n\n\n// const domToPdf = require('dom-to-pdf');\n// // const puppeteer = require(\"puppeteer\");\n\n// const ToPdf = () => {\n// var element = document.getElementById('jsx-template');\n// var options = {\n// filename: 'test.pdf',\n// };\n// domToPdf(element, options, function () {\n// //上傳\n// alert(\"問卷完成\");\n// });\n// }\nconst history = createBrowserHistory();\nconst rootReducer = (state = {}, action) => {\n return {\n app: app_reducers(state.app, action)\n };\n};\nconst store = createStore(rootReducer, composeWithDevTools(applyMiddleware(thunk, logger))); //logger要放在最後\n\n//避免用戶回到上一頁\nwindow.addEventListener(\"popstate\", () => {\n history.go(1);\n});\n\n\nconst InitialSetting = () => {\n // const [dark, setDark] = React.useState(true);\n const notistackRef = React.createRef();\n const onClickDismiss = key => () => {\n notistackRef.current.closeSnackbar(key);\n }\n\n const { dark } = useSelector(state => ({\n dark: state.app.dark,\n }));\n const { app } = useSelector(state => ({\n app: state.app\n }));\n const formLabelsTheme = unstable_createMuiStrictModeTheme({\n overrides: {\n MuiFormLabel: {\n asterisk: {\n // fontSize:\"20px\",\n color: '#db3131',\n '&$error': {\n color: '#db3131'\n },\n },\n root: {\n color: dark ? \"#1a90ff\" : \"black\",\n \"&$focused\": dark ? { color: \"#1a90ff\" } : { color: indigo[500] }\n }\n }\n },\n palette: {\n type: dark ? \"dark\" : \"light\",\n primary: {\n main: dark ? blue[500] : indigo[500]\n },\n // secondary: {\n // main: \"#FFFFFF\"\n // }\n }\n })\n\n return (\n \n \n (\n \n \n \n )}\n >\n \n \n {/* */}\n \n \n \n \n \n \n {/* \n */}\n \n \n\n \n\n )\n}\n\nReactDOM.render(\n\n <>\n \n \n \n \n \n \n \n ,\n document.getElementById('root')\n);\n\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nreadOnly Bool false Cell will never go in edit mode\nkey String undefined By default, each cell is given the key of col number and row number. This would override that key\nclassName String undefined Additional class names for cells.\ncomponent ReactElement undefined Insert a react element or JSX to this field. This will render on edit mode\nforceComponent bool false Renders what's in component at all times, even when not in edit mode\ndisableEvents bool false Makes cell unselectable and read only\ncolSpan number 1 The colSpan of the cell's td element\nrowSpan number 1 The rowSpan of the cell's td element\nwidth number or String undefined Sets the cell's td width using a style attribute. Number is interpreted as pixels, strings are used as-is. Note: This will only work if the table does not have a set width.\noverflow 'wrap'|'nowrap'| 'clip' undefined How to render overflow text. Overrides grid-level overflow option.\neditor func undefined A component used to render the cell's value when being edited\nviewer func undefined A component used to render the cell's value when not being edited\n*/\nvar CellShape = {\n readOnly: _propTypes2.default.bool,\n key: _propTypes2.default.string,\n className: _propTypes2.default.string,\n component: _propTypes2.default.oneOfType([_propTypes2.default.element, _propTypes2.default.func]),\n forceComponent: _propTypes2.default.bool,\n disableEvents: _propTypes2.default.bool,\n disableUpdatedFlag: _propTypes2.default.bool,\n colSpan: _propTypes2.default.number,\n rowSpan: _propTypes2.default.number,\n width: _propTypes2.default.oneOfType([_propTypes2.default.number, _propTypes2.default.string]),\n overflow: _propTypes2.default.oneOf(['wrap', 'nowrap', 'clip']),\n dataEditor: _propTypes2.default.func,\n valueViewer: _propTypes2.default.func\n};\n\nexports.default = CellShape;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _CellShape = require('./CellShape');\n\nvar _CellShape2 = _interopRequireDefault(_CellShape);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Cell = function (_PureComponent) {\n _inherits(Cell, _PureComponent);\n\n function Cell() {\n _classCallCheck(this, Cell);\n\n return _possibleConstructorReturn(this, (Cell.__proto__ || Object.getPrototypeOf(Cell)).apply(this, arguments));\n }\n\n _createClass(Cell, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n cell = _props.cell,\n row = _props.row,\n col = _props.col,\n attributesRenderer = _props.attributesRenderer,\n className = _props.className,\n style = _props.style,\n onMouseDown = _props.onMouseDown,\n onMouseOver = _props.onMouseOver,\n onDoubleClick = _props.onDoubleClick,\n onContextMenu = _props.onContextMenu;\n var colSpan = cell.colSpan,\n rowSpan = cell.rowSpan;\n\n var attributes = attributesRenderer ? attributesRenderer(cell, row, col) : {};\n\n return _react2.default.createElement(\n 'td',\n _extends({\n className: className,\n onMouseDown: onMouseDown,\n onMouseOver: onMouseOver,\n onDoubleClick: onDoubleClick,\n onTouchEnd: onDoubleClick,\n onContextMenu: onContextMenu,\n colSpan: colSpan,\n rowSpan: rowSpan,\n style: style\n }, attributes),\n this.props.children\n );\n }\n }]);\n\n return Cell;\n}(_react.PureComponent);\n\nexports.default = Cell;\n\n\nCell.propTypes = {\n row: _propTypes2.default.number.isRequired,\n col: _propTypes2.default.number.isRequired,\n cell: _propTypes2.default.shape(_CellShape2.default).isRequired,\n selected: _propTypes2.default.bool,\n editing: _propTypes2.default.bool,\n updated: _propTypes2.default.bool,\n attributesRenderer: _propTypes2.default.func,\n onMouseDown: _propTypes2.default.func.isRequired,\n onMouseOver: _propTypes2.default.func.isRequired,\n onDoubleClick: _propTypes2.default.func.isRequired,\n onContextMenu: _propTypes2.default.func.isRequired,\n className: _propTypes2.default.string,\n style: _propTypes2.default.object\n};\n\nCell.defaultProps = {\n selected: false,\n editing: false,\n updated: false,\n attributesRenderer: function attributesRenderer() {}\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _CellShape = require('./CellShape');\n\nvar _CellShape2 = _interopRequireDefault(_CellShape);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar DataEditor = function (_PureComponent) {\n _inherits(DataEditor, _PureComponent);\n\n function DataEditor(props) {\n _classCallCheck(this, DataEditor);\n\n var _this = _possibleConstructorReturn(this, (DataEditor.__proto__ || Object.getPrototypeOf(DataEditor)).call(this, props));\n\n _this.handleChange = _this.handleChange.bind(_this);\n return _this;\n }\n\n _createClass(DataEditor, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this._input.focus();\n }\n }, {\n key: 'handleChange',\n value: function handleChange(e) {\n this.props.onChange(e.target.value);\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _props = this.props,\n value = _props.value,\n onKeyDown = _props.onKeyDown;\n\n return _react2.default.createElement('input', {\n ref: function ref(input) {\n _this2._input = input;\n },\n className: 'data-editor',\n value: value,\n onChange: this.handleChange,\n onKeyDown: onKeyDown\n });\n }\n }]);\n\n return DataEditor;\n}(_react.PureComponent);\n\nexports.default = DataEditor;\n\n\nDataEditor.propTypes = {\n value: _propTypes2.default.node.isRequired,\n row: _propTypes2.default.number.isRequired,\n col: _propTypes2.default.number.isRequired,\n cell: _propTypes2.default.shape(_CellShape2.default),\n onChange: _propTypes2.default.func.isRequired,\n onCommit: _propTypes2.default.func.isRequired,\n onRevert: _propTypes2.default.func.isRequired,\n onKeyDown: _propTypes2.default.func.isRequired\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _CellShape = require('./CellShape');\n\nvar _CellShape2 = _interopRequireDefault(_CellShape);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ValueViewer = function (_PureComponent) {\n _inherits(ValueViewer, _PureComponent);\n\n function ValueViewer() {\n _classCallCheck(this, ValueViewer);\n\n return _possibleConstructorReturn(this, (ValueViewer.__proto__ || Object.getPrototypeOf(ValueViewer)).apply(this, arguments));\n }\n\n _createClass(ValueViewer, [{\n key: 'render',\n value: function render() {\n var value = this.props.value;\n\n return _react2.default.createElement(\n 'span',\n { className: 'value-viewer' },\n value\n );\n }\n }]);\n\n return ValueViewer;\n}(_react.PureComponent);\n\nexports.default = ValueViewer;\n\n\nValueViewer.propTypes = {\n row: _propTypes2.default.number.isRequired,\n col: _propTypes2.default.number.isRequired,\n cell: _propTypes2.default.shape(_CellShape2.default),\n value: _propTypes2.default.node.isRequired\n};","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\n\nvar _createClass = (function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if ('value' in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n})();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _keys = require('./keys');\n\nvar _Cell = require('./Cell');\n\nvar _Cell2 = _interopRequireDefault(_Cell);\n\nvar _CellShape = require('./CellShape');\n\nvar _CellShape2 = _interopRequireDefault(_CellShape);\n\nvar _DataEditor = require('./DataEditor');\n\nvar _DataEditor2 = _interopRequireDefault(_DataEditor);\n\nvar _ValueViewer = require('./ValueViewer');\n\nvar _ValueViewer2 = _interopRequireDefault(_ValueViewer);\n\nvar _renderHelpers = require('./renderHelpers');\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError('Cannot call a class as a function');\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\n \"this hasn't been initialised - super() hasn't been called\",\n );\n }\n return call && (typeof call === 'object' || typeof call === 'function')\n ? call\n : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== 'function' && superClass !== null) {\n throw new TypeError(\n 'Super expression must either be null or a function, not ' +\n typeof superClass,\n );\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true,\n },\n });\n if (superClass)\n Object.setPrototypeOf\n ? Object.setPrototypeOf(subClass, superClass)\n : (subClass.__proto__ = superClass);\n}\n\nfunction initialData(_ref) {\n var cell = _ref.cell,\n row = _ref.row,\n col = _ref.col,\n valueRenderer = _ref.valueRenderer,\n dataRenderer = _ref.dataRenderer;\n\n return (0, _renderHelpers.renderData)(\n cell,\n row,\n col,\n valueRenderer,\n dataRenderer,\n );\n}\n\nfunction initialValue(_ref2) {\n var cell = _ref2.cell,\n row = _ref2.row,\n col = _ref2.col,\n valueRenderer = _ref2.valueRenderer;\n\n return (0, _renderHelpers.renderValue)(cell, row, col, valueRenderer);\n}\n\nfunction widthStyle(cell) {\n var width = typeof cell.width === 'number' ? cell.width + 'px' : cell.width;\n return width ? { width: width } : null;\n}\n\nvar DataCell = (function (_PureComponent) {\n _inherits(DataCell, _PureComponent);\n\n function DataCell(props) {\n _classCallCheck(this, DataCell);\n\n var _this = _possibleConstructorReturn(\n this,\n (DataCell.__proto__ || Object.getPrototypeOf(DataCell)).call(this, props),\n );\n\n _this.handleChange = _this.handleChange.bind(_this);\n _this.handleCommit = _this.handleCommit.bind(_this);\n _this.handleRevert = _this.handleRevert.bind(_this);\n\n _this.handleKey = _this.handleKey.bind(_this);\n _this.handleMouseDown = _this.handleMouseDown.bind(_this);\n _this.handleMouseOver = _this.handleMouseOver.bind(_this);\n _this.handleContextMenu = _this.handleContextMenu.bind(_this);\n _this.handleDoubleClick = _this.handleDoubleClick.bind(_this);\n\n _this.state = {\n updated: false,\n reverting: false,\n committing: false,\n value: '',\n };\n return _this;\n }\n\n _createClass(DataCell, [\n {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n var _this2 = this;\n\n if (\n !this.props.cell.disableUpdatedFlag &&\n initialValue(prevProps) !== initialValue(this.props)\n ) {\n this.setState({ updated: true });\n this.timeout = setTimeout(function () {\n return _this2.setState({ updated: false });\n }, 700);\n }\n if (this.props.editing === true && prevProps.editing === false) {\n var value = this.props.clearing ? '' : initialData(this.props);\n this.setState({ value: value, reverting: false });\n }\n\n if (\n prevProps.editing === true &&\n this.props.editing === false &&\n !this.state.reverting &&\n !this.state.committing &&\n this.state.value !== initialData(this.props)\n ) {\n this.props.onChange(this.props.row, this.props.col, this.state.value);\n }\n },\n },\n {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n clearTimeout(this.timeout);\n },\n },\n {\n key: 'handleChange',\n value: function handleChange(value) {\n this.setState({ value: value, committing: false });\n },\n },\n {\n key: 'handleCommit',\n value: function handleCommit(value, e) {\n var _props = this.props,\n onChange = _props.onChange,\n onNavigate = _props.onNavigate;\n\n if (value !== initialData(this.props)) {\n this.setState({ value: value, committing: true });\n onChange(this.props.row, this.props.col, value);\n } else {\n this.handleRevert();\n }\n if (e) {\n e.preventDefault();\n onNavigate(e, true);\n }\n },\n },\n {\n key: 'handleRevert',\n value: function handleRevert() {\n this.setState({ reverting: true });\n this.props.onRevert();\n },\n },\n {\n key: 'handleMouseDown',\n value: function handleMouseDown(e) {\n var _props2 = this.props,\n row = _props2.row,\n col = _props2.col,\n onMouseDown = _props2.onMouseDown,\n cell = _props2.cell;\n\n if (!cell.disableEvents) {\n onMouseDown(row, col, e);\n }\n },\n },\n {\n key: 'handleMouseOver',\n value: function handleMouseOver(e) {\n var _props3 = this.props,\n row = _props3.row,\n col = _props3.col,\n onMouseOver = _props3.onMouseOver,\n cell = _props3.cell;\n // console.log(cell)\n if (!cell.disableEvents) {\n onMouseOver(row, col);\n }\n },\n },\n {\n key: 'handleDoubleClick',\n value: function handleDoubleClick(e) {\n var _props4 = this.props,\n row = _props4.row,\n col = _props4.col,\n onDoubleClick = _props4.onDoubleClick,\n cell = _props4.cell;\n\n if (!cell.disableEvents) {\n onDoubleClick(row, col);\n }\n },\n },\n {\n key: 'handleContextMenu',\n value: function handleContextMenu(e) {\n var _props5 = this.props,\n row = _props5.row,\n col = _props5.col,\n onContextMenu = _props5.onContextMenu,\n cell = _props5.cell;\n\n if (!cell.disableEvents) {\n onContextMenu(e, row, col);\n }\n },\n },\n {\n key: 'handleKey',\n value: function handleKey(e) {\n var keyCode = e.which || e.keyCode;\n if (keyCode === _keys.ESCAPE_KEY) {\n return this.handleRevert();\n }\n var _props6 = this.props,\n component = _props6.cell.component,\n forceEdit = _props6.forceEdit;\n\n var eatKeys = forceEdit || !!component;\n var commit =\n keyCode === _keys.ENTER_KEY ||\n keyCode === _keys.TAB_KEY ||\n (!eatKeys &&\n [\n _keys.LEFT_KEY,\n _keys.RIGHT_KEY,\n _keys.UP_KEY,\n _keys.DOWN_KEY,\n ].includes(keyCode));\n\n if (commit) {\n this.handleCommit(this.state.value, e);\n }\n },\n },\n {\n key: 'renderComponent',\n value: function renderComponent(editing, cell) {\n var component = cell.component,\n readOnly = cell.readOnly,\n forceComponent = cell.forceComponent;\n\n if ((editing && !readOnly) || forceComponent) {\n return component;\n }\n },\n },\n {\n key: 'renderEditor',\n value: function renderEditor(editing, cell, row, col, dataEditor) {\n if (editing) {\n var Editor = cell.dataEditor || dataEditor || _DataEditor2.default;\n return _react2.default.createElement(Editor, {\n cell: cell,\n row: row,\n col: col,\n value: this.state.value,\n onChange: this.handleChange,\n onCommit: this.handleCommit,\n onRevert: this.handleRevert,\n onKeyDown: this.handleKey,\n });\n }\n },\n },\n {\n key: 'renderViewer',\n value: function renderViewer(cell, row, col, valueRenderer, valueViewer) {\n var Viewer = cell.valueViewer || valueViewer || _ValueViewer2.default;\n var value = (0, _renderHelpers.renderValue)(\n cell,\n row,\n col,\n valueRenderer,\n );\n return _react2.default.createElement(Viewer, {\n cell: cell,\n row: row,\n col: col,\n value: value,\n });\n },\n },\n {\n key: 'render',\n value: function render() {\n var _props7 = this.props,\n row = _props7.row,\n col = _props7.col,\n cell = _props7.cell,\n CellRenderer = _props7.cellRenderer,\n valueRenderer = _props7.valueRenderer,\n dataEditor = _props7.dataEditor,\n valueViewer = _props7.valueViewer,\n attributesRenderer = _props7.attributesRenderer,\n selected = _props7.selected,\n editing = _props7.editing,\n onKeyUp = _props7.onKeyUp;\n var updated = this.state.updated;\n\n var content =\n this.renderComponent(editing, cell) ||\n this.renderEditor(editing, cell, row, col, dataEditor) ||\n this.renderViewer(cell, row, col, valueRenderer, valueViewer);\n\n var className = [\n cell.className,\n 'cell',\n cell.overflow,\n selected && 'selected',\n editing && 'editing',\n cell.readOnly && 'read-only',\n updated && 'updated',\n ]\n .filter(function (a) {\n return a;\n })\n .join(' ');\n\n return _react2.default.createElement(\n CellRenderer,\n {\n row: row,\n col: col,\n cell: cell,\n selected: selected,\n editing: editing,\n updated: updated,\n attributesRenderer: attributesRenderer,\n className: className,\n style: widthStyle(cell),\n onMouseDown: this.handleMouseDown,\n onMouseOver: this.handleMouseOver,\n onDoubleClick: this.handleDoubleClick,\n onContextMenu: this.handleContextMenu,\n onKeyUp: onKeyUp,\n },\n content,\n );\n },\n },\n ]);\n\n return DataCell;\n})(_react.PureComponent);\n\nexports.default = DataCell;\n\nDataCell.propTypes = {\n row: _propTypes2.default.number.isRequired,\n col: _propTypes2.default.number.isRequired,\n cell: _propTypes2.default.shape(_CellShape2.default).isRequired,\n forceEdit: _propTypes2.default.bool,\n selected: _propTypes2.default.bool,\n editing: _propTypes2.default.bool,\n editValue: _propTypes2.default.any,\n clearing: _propTypes2.default.bool,\n cellRenderer: _propTypes2.default.func,\n valueRenderer: _propTypes2.default.func.isRequired,\n dataRenderer: _propTypes2.default.func,\n valueViewer: _propTypes2.default.func,\n dataEditor: _propTypes2.default.func,\n attributesRenderer: _propTypes2.default.func,\n onNavigate: _propTypes2.default.func.isRequired,\n onMouseDown: _propTypes2.default.func.isRequired,\n onMouseOver: _propTypes2.default.func.isRequired,\n onDoubleClick: _propTypes2.default.func.isRequired,\n onContextMenu: _propTypes2.default.func.isRequired,\n onChange: _propTypes2.default.func.isRequired,\n onRevert: _propTypes2.default.func.isRequired,\n onEdit: _propTypes2.default.func,\n};\n\nDataCell.defaultProps = {\n forceEdit: false,\n selected: false,\n editing: false,\n clearing: false,\n cellRenderer: _Cell2.default,\n};\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Sheet = function (_PureComponent) {\n _inherits(Sheet, _PureComponent);\n\n function Sheet() {\n _classCallCheck(this, Sheet);\n\n return _possibleConstructorReturn(this, (Sheet.__proto__ || Object.getPrototypeOf(Sheet)).apply(this, arguments));\n }\n\n _createClass(Sheet, [{\n key: 'render',\n value: function render() {\n return _react2.default.createElement(\n 'table',\n { className: this.props.className },\n _react2.default.createElement(\n 'tbody',\n null,\n this.props.children\n )\n );\n }\n }]);\n\n return Sheet;\n}(_react.PureComponent);\n\nSheet.propTypes = {\n className: _propTypes2.default.string,\n data: _propTypes2.default.array.isRequired\n};\n\nexports.default = Sheet;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _CellShape = require('./CellShape');\n\nvar _CellShape2 = _interopRequireDefault(_CellShape);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Row = function (_PureComponent) {\n _inherits(Row, _PureComponent);\n\n function Row() {\n _classCallCheck(this, Row);\n\n return _possibleConstructorReturn(this, (Row.__proto__ || Object.getPrototypeOf(Row)).apply(this, arguments));\n }\n\n _createClass(Row, [{\n key: 'render',\n value: function render() {\n return _react2.default.createElement(\n 'tr',\n null,\n this.props.children\n );\n }\n }]);\n\n return Row;\n}(_react.PureComponent);\n\nRow.propTypes = {\n row: _propTypes2.default.number.isRequired,\n cells: _propTypes2.default.arrayOf(_propTypes2.default.shape(_CellShape2.default)).isRequired\n};\n\nexports.default = Row;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar TAB_KEY = exports.TAB_KEY = 9;\nvar ENTER_KEY = exports.ENTER_KEY = 13;\nvar ESCAPE_KEY = exports.ESCAPE_KEY = 27;\nvar LEFT_KEY = exports.LEFT_KEY = 37;\nvar UP_KEY = exports.UP_KEY = 38;\nvar RIGHT_KEY = exports.RIGHT_KEY = 39;\nvar DOWN_KEY = exports.DOWN_KEY = 40;\nvar DELETE_KEY = exports.DELETE_KEY = 46;\nvar BACKSPACE_KEY = exports.BACKSPACE_KEY = 8;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.renderValue = renderValue;\nexports.renderData = renderData;\nfunction renderValue(cell, row, col, valueRenderer) {\n var value = valueRenderer(cell, row, col);\n return value === null || typeof value === 'undefined' ? '' : value;\n}\n\nfunction renderData(cell, row, col, valueRenderer, dataRenderer) {\n var value = dataRenderer ? dataRenderer(cell, row, col) : null;\n return value === null || typeof value === 'undefined' ? renderValue(cell, row, col, valueRenderer) : value;\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.renderData = exports.renderValue = exports.ValueViewer = exports.DataEditor = exports.Cell = exports.Row = exports.Sheet = undefined;\n\nvar _DataSheet = require('./DataSheet');\n\nvar _DataSheet2 = _interopRequireDefault(_DataSheet);\n\nvar _Sheet = require('./Sheet');\n\nvar _Sheet2 = _interopRequireDefault(_Sheet);\n\nvar _Row = require('./Row');\n\nvar _Row2 = _interopRequireDefault(_Row);\n\nvar _Cell = require('./Cell');\n\nvar _Cell2 = _interopRequireDefault(_Cell);\n\nvar _DataEditor = require('./DataEditor');\n\nvar _DataEditor2 = _interopRequireDefault(_DataEditor);\n\nvar _ValueViewer = require('./ValueViewer');\n\nvar _ValueViewer2 = _interopRequireDefault(_ValueViewer);\n\nvar _renderHelpers = require('./renderHelpers');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _DataSheet2.default;\nexports.Sheet = _Sheet2.default;\nexports.Row = _Row2.default;\nexports.Cell = _Cell2.default;\nexports.DataEditor = _DataEditor2.default;\nexports.ValueViewer = _ValueViewer2.default;\nexports.renderValue = _renderHelpers.renderValue;\nexports.renderData = _renderHelpers.renderData;"],"sourceRoot":""}