0172bb380235b79158d9a3920ec90260.json
29.6 KB
{"ast":null,"code":"import { jsxDEV as _jsxDEV } from \"react/jsx-dev-runtime\";\n\nvar _jsxFileName = \"C:\\\\Users\\\\kkwan_000\\\\Desktop\\\\git\\\\2017110269\\\\minsung\\\\src\\\\Container\\\\Html.js\",\n _s = $RefreshSig$();\n\nimport React, { useState, useEffect } from 'react';\nimport { Modal, Upload, message, Form, InputNumber, Button, Select, Row, Col } from 'antd';\nimport { InboxOutlined, LockOutlined, SaveTwoTone } from '@ant-design/icons';\nimport { saveFileAndQno } from 'lib/api/html';\nimport { checkQno } from '../lib/api/html';\nconst {\n Option\n} = Select; //파일 업로드\n//업로드 폼에서의 로직\n\nconst fetchSaveData = async data => {\n try {\n console.log(data);\n const result = await saveFileAndQno(data);\n\n if (result.status === 200) {\n return result.data;\n }\n } catch (e) {\n console.log(e);\n message.warn(e.message);\n }\n};\n\nconst fetchCheckQno = async qno => {\n try {\n const result = await checkQno(qno);\n\n if (result.status === 200) {\n console.log(result);\n message.info(\"사용 가능한 문항 번호 입니다.\");\n return true;\n } else {\n message.info(\"존재 하지 않는 문항 번호 입니다.\");\n return false;\n }\n } catch (e) {\n console.log(e);\n message.info(\"존재 하지 않는 문항 번호 입니다.\");\n return false;\n }\n};\n\nconst Html = ({\n visible,\n onCancel,\n callback\n}) => {\n _s();\n\n const [fields, setFields] = useState([]);\n const [qno, setQno] = useState(null);\n const [upload, setUpload] = useState(false);\n const [fileList, setFileList] = useState([]);\n const [qnoCheck, setQnoCheck] = useState(false);\n\n const changeNumber = value => {\n setQno(value);\n setFields([...fields, {\n name: ['qno'],\n value: value\n }]);\n };\n\n useEffect(() => {\n if (!visible) {\n let initFields = [{\n name: ['qno'],\n value: null\n }, {\n name: ['typeSol'],\n value: null\n }, {\n name: ['typeQue'],\n value: null\n }, {\n name: ['creator'],\n value: null\n }];\n setQno(null);\n setFields(initFields);\n setFileList([]);\n }\n }, [visible]);\n const props = {\n multiple: false,\n //data: { qno: qno },\n accept: '.html',\n onRemove: file => {\n const index = fileList.indexOf(file);\n const newFileList = fileList.slice();\n newFileList.splice(index, 1);\n return {\n fileList: newFileList\n };\n },\n beforeUpload: file => {\n console.log(file);\n\n if (file.name.indexOf('.html') > 0) {\n setFileList([file]);\n } else {\n setFileList([]);\n message.info(\"Html 형식의 파일이 아닙니다.\");\n }\n\n return false;\n }\n };\n\n const onOk = () => {\n setUpload(true);\n };\n\n const normFile = e => {\n console.log('Upload event:', e);\n\n if (Array.isArray(e)) {\n return e;\n }\n\n return e && e.fileList;\n };\n\n const onClickQno = async e => {\n e.preventDefault(); //번호가 호출 성공시 setQnoCheck(true);\n\n if (qno) {\n const _checkQno = await fetchCheckQno(qno);\n\n setQnoCheck(_checkQno);\n }\n };\n\n const onFinish = async values => {\n console.log(qnoCheck);\n\n if (!qnoCheck) {\n message.warning(\"문제 번호를 확인해 주세요.\");\n return;\n } else {\n const creator = sessionStorage.getItem('id');\n console.log('Received values of form: ', values);\n const formData = new FormData();\n formData.append('qno', values.qno);\n formData.append('typeSol', values.typeSol);\n formData.append('typeQue', values.typeQue);\n formData.append('html', values.html[0]);\n formData.append('creator', creator);\n const result = await fetchSaveData(formData);\n console.log(result);\n\n if (result) {\n message.info(result.message);\n let initFields = [{\n name: ['qno'],\n value: null\n }, {\n name: ['typeSol'],\n value: null\n }, {\n name: ['typeQue'],\n value: null\n }, {\n name: ['creator'],\n value: null\n }];\n setQno(null);\n setFields(initFields);\n setFileList([]);\n onCancel();\n callback({\n status: 'SAVE_OK'\n });\n } else {\n callback({\n status: 'SAVE_FAIL'\n });\n }\n }\n };\n\n const onChangeTypeSol = value => {\n console.log(value);\n setFields([...fields, {\n name: ['typeSol'],\n value: value\n }]);\n };\n\n const onChangeTypeQue = value => {\n console.log(value);\n setFields([...fields, {\n name: ['typeQue'],\n value: value\n }]);\n };\n\n const formItemLayout = {\n labelCol: {\n span: 6\n },\n wrapperCol: {\n span: 14\n }\n };\n return /*#__PURE__*/_jsxDEV(Modal, {\n placement: 'bottom',\n closable: true,\n height: '75%',\n visible: visible,\n okText: '저장',\n cancelText: '이전',\n onCancel: onCancel,\n footer: null,\n children: /*#__PURE__*/_jsxDEV(Form, {\n name: \"validate_other\",\n ...formItemLayout,\n onFinish: onFinish,\n fields: [{\n name: ['html'],\n value: fileList\n }, ...fields],\n children: [/*#__PURE__*/_jsxDEV(Form.Item, {\n name: \"qno\",\n label: \"\\uBB38\\uC81C \\uBC88\\uD638\",\n rules: [{\n required: true,\n message: '저장할 html의 문항번호를 입력해 주세요.'\n }],\n children: /*#__PURE__*/_jsxDEV(Row, {\n children: [/*#__PURE__*/_jsxDEV(Col, {\n children: /*#__PURE__*/_jsxDEV(InputNumber, {\n min: 0,\n max: 10000,\n value: qno,\n onChange: changeNumber\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 199,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 198,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(Col, {\n children: /*#__PURE__*/_jsxDEV(Button, {\n onClick: onClickQno,\n children: \"\\uBC88\\uD638 \\uD655\\uC778\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 207,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 206,\n columnNumber: 13\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 197,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 188,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(Form.Item, {\n name: \"typeSol\",\n label: \"\\uBB38\\uC81C \\uD0C0\\uC785\",\n rules: [{\n required: true,\n message: '저장할 html의 문제 타입을 선택해 주세요.'\n }],\n children: /*#__PURE__*/_jsxDEV(Select, {\n onChange: onChangeTypeSol,\n children: [/*#__PURE__*/_jsxDEV(Option, {\n value: \"\\uC624\\uC9C0\\uC120\\uB2E4\\uD615\",\n children: \"\\uC624\\uC9C0\\uC120\\uB2E4\\uD615\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 221,\n columnNumber: 14\n }, this), /*#__PURE__*/_jsxDEV(Option, {\n value: \"\\uB2E8\\uB2F5\\uD615\",\n children: \"\\uB2E8\\uB2F5\\uD615\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 222,\n columnNumber: 14\n }, this), /*#__PURE__*/_jsxDEV(Option, {\n value: \"\\uACC4\\uC0B0\\uC2DD\",\n children: \"\\uACC4\\uC0B0\\uC2DD\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 223,\n columnNumber: 14\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 220,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 211,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(Form.Item, {\n name: \"typeQue\",\n label: \"\\uBB38\\uC81C/\\uD480\\uC774 \\uAD6C\\uBD84\",\n rules: [{\n required: true,\n message: '저장할 html의 문제/풀이 구분을 선택해 주세요.'\n }],\n children: /*#__PURE__*/_jsxDEV(Select, {\n onChange: onChangeTypeQue,\n children: [/*#__PURE__*/_jsxDEV(Option, {\n value: \"\\uBB38\\uC81C\",\n children: \"\\uBB38\\uC81C\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 236,\n columnNumber: 14\n }, this), /*#__PURE__*/_jsxDEV(Option, {\n value: \"\\uD480\\uC774\",\n children: \"\\uD480\\uC774\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 237,\n columnNumber: 14\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 235,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 226,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(Form.Item, {\n label: \"\\uD30C\\uC77C \\uC5C5\\uB85C\\uB4DC\",\n children: /*#__PURE__*/_jsxDEV(Form.Item, {\n name: \"html\",\n valuePropName: \"fileList\",\n getValueFromEvent: normFile,\n noStyle: true,\n rules: [{\n required: true,\n message: '파일을 드래그하거나 선택해 주세요.'\n }],\n children: /*#__PURE__*/_jsxDEV(Upload.Dragger, {\n name: \"files\",\n ...props,\n children: [/*#__PURE__*/_jsxDEV(\"p\", {\n className: \"ant-upload-drag-icon\",\n children: /*#__PURE__*/_jsxDEV(InboxOutlined, {}, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 255,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 254,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"p\", {\n className: \"ant-upload-text\",\n children: \"Click or drag file to this area to upload\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 257,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"p\", {\n className: \"ant-upload-hint\",\n children: \"Support for a single or bulk upload.\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 258,\n columnNumber: 13\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 253,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 241,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 240,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(Form.Item, {\n style: {\n alignContent: 'middle'\n },\n wrapperCol: {\n span: 12,\n offset: 6\n },\n children: /*#__PURE__*/_jsxDEV(Button, {\n type: \"primary\",\n htmlType: \"submit\",\n children: \"\\uC800\\uC7A5\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 264,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 263,\n columnNumber: 7\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 183,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 173,\n columnNumber: 5\n }, this);\n};\n\n_s(Html, \"RT/1nQFqGepEy4/R5LrHcndfj5U=\");\n\n_c = Html;\nexport default Html;\n\nvar _c;\n\n$RefreshReg$(_c, \"Html\");","map":{"version":3,"sources":["C:/Users/kkwan_000/Desktop/git/2017110269/minsung/src/Container/Html.js"],"names":["React","useState","useEffect","Modal","Upload","message","Form","InputNumber","Button","Select","Row","Col","InboxOutlined","LockOutlined","SaveTwoTone","saveFileAndQno","checkQno","Option","fetchSaveData","data","console","log","result","status","e","warn","fetchCheckQno","qno","info","Html","visible","onCancel","callback","fields","setFields","setQno","upload","setUpload","fileList","setFileList","qnoCheck","setQnoCheck","changeNumber","value","name","initFields","props","multiple","accept","onRemove","file","index","indexOf","newFileList","slice","splice","beforeUpload","onOk","normFile","Array","isArray","onClickQno","preventDefault","_checkQno","onFinish","values","warning","creator","sessionStorage","getItem","formData","FormData","append","typeSol","typeQue","html","onChangeTypeSol","onChangeTypeQue","formItemLayout","labelCol","span","wrapperCol","required","alignContent","offset"],"mappings":"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","sourcesContent":["import React, { useState, useEffect } from 'react';\r\nimport { Modal, Upload, message, Form, InputNumber, Button , Select ,Row, Col} from 'antd';\r\nimport { InboxOutlined, LockOutlined, SaveTwoTone } from '@ant-design/icons';\r\nimport { saveFileAndQno } from 'lib/api/html';\r\nimport { checkQno } from '../lib/api/html';\r\n\r\nconst { Option} = Select;\r\n//파일 업로드\r\n//업로드 폼에서의 로직\r\n\r\nconst fetchSaveData = async (data) => {\r\n try{\r\n console.log(data);\r\n const result = await saveFileAndQno(data);\r\n if(result.status===200){\r\n return result.data;\r\n } \r\n }catch(e){\r\n console.log(e);\r\n message.warn(e.message);\r\n }\r\n}\r\n\r\nconst fetchCheckQno = async(qno) => {\r\n try{\r\n const result = await checkQno(qno);\r\n if(result.status===200){\r\n console.log(result);\r\n message.info(\"사용 가능한 문항 번호 입니다.\");\r\n return true;\r\n }else{ \r\n message.info(\"존재 하지 않는 문항 번호 입니다.\");\r\n return false;\r\n }\r\n }catch(e){\r\n console.log(e);\r\n message.info(\"존재 하지 않는 문항 번호 입니다.\");\r\n return false;\r\n }\r\n}\r\n\r\nconst Html = ({ visible, onCancel, callback }) => {\r\n const [fields,setFields] =useState([]);\r\n const [qno, setQno] = useState(null);\r\n const [upload,setUpload]=useState(false);\r\n const [fileList, setFileList]=useState([]);\r\n const [qnoCheck,setQnoCheck] =useState(false);\r\n\r\n\r\n const changeNumber = (value) => {\r\n setQno(value);\r\n setFields([...fields, {name:['qno'],value:value}]);\r\n };\r\n\r\n\r\n useEffect(()=>{\r\n if(!visible){\r\n let initFields = [\r\n {name:['qno'],value:null},\r\n {name:['typeSol'],value:null},\r\n {name:['typeQue'],value:null},\r\n {name:['creator'],value:null},\r\n ];\r\n setQno(null);\r\n setFields(initFields);\r\n setFileList([]);\r\n }\r\n },[visible]);\r\n\r\n const props = {\r\n multiple:false,\r\n //data: { qno: qno },\r\n accept:'.html',\r\n onRemove: file => {\r\n const index = fileList.indexOf(file);\r\n const newFileList = fileList.slice();\r\n newFileList.splice(index, 1);\r\n return {\r\n fileList: newFileList,\r\n };\r\n },\r\n\r\n beforeUpload: file => {\r\n console.log(file);\r\n if(file.name.indexOf('.html')>0)\r\n {\r\n setFileList([file]);\r\n }else {\r\n setFileList([]);\r\n message.info(\"Html 형식의 파일이 아닙니다.\");\r\n }\r\n return false;\r\n \r\n },\r\n };\r\n\r\n const onOk = () => {\r\n setUpload(true)\r\n };\r\n \r\n\r\n const normFile = e => {\r\n console.log('Upload event:', e);\r\n if (Array.isArray(e)) {\r\n return e;\r\n }\r\n return e && e.fileList;\r\n };\r\n\r\n const onClickQno = async(e)=>{\r\n e.preventDefault();\r\n //번호가 호출 성공시 setQnoCheck(true);\r\n if(qno){\r\n const _checkQno= await fetchCheckQno(qno);\r\n setQnoCheck(_checkQno);\r\n }\r\n };\r\n\r\n const onFinish = async values => {\r\n console.log(qnoCheck);\r\n if(!qnoCheck){\r\n message.warning(\"문제 번호를 확인해 주세요.\")\r\n return;\r\n }else{\r\n const creator = sessionStorage.getItem('id');\r\n console.log('Received values of form: ', values);\r\n const formData = new FormData();\r\n formData.append('qno', values.qno);\r\n formData.append('typeSol', values.typeSol);\r\n formData.append('typeQue', values.typeQue);\r\n formData.append('html', values.html[0]);\r\n formData.append('creator', creator);\r\n\r\n const result = await fetchSaveData(formData);\r\n console.log(result);\r\n if(result){\r\n message.info(result.message);\r\n let initFields = [\r\n {name:['qno'],value:null},\r\n {name:['typeSol'],value:null},\r\n {name:['typeQue'],value:null},\r\n {name:['creator'],value:null},\r\n ];\r\n setQno(null);\r\n setFields(initFields);\r\n setFileList([]);\r\n onCancel();\r\n callback({status:'SAVE_OK'});\r\n }else{\r\n callback({status:'SAVE_FAIL'})\r\n }\r\n } \r\n };\r\n\r\n const onChangeTypeSol = (value) => {\r\n console.log(value);\r\n setFields([...fields, {name:['typeSol'],value:value}]);\r\n }\r\n\r\n const onChangeTypeQue = (value) => {\r\n console.log(value);\r\n setFields([...fields, {name:['typeQue'],value:value}])\r\n }\r\n\r\n\r\n \r\n const formItemLayout = {\r\n labelCol: { span: 6 },\r\n wrapperCol: { span: 14 },\r\n };\r\n\r\n return (\r\n <Modal\r\n placement={'bottom'}\r\n closable={true}\r\n height={'75%'}\r\n visible={visible}\r\n okText={'저장'}\r\n cancelText={'이전'}\r\n onCancel={onCancel}\r\n footer={null}\r\n >\r\n <Form name=\"validate_other\"\r\n {...formItemLayout}\r\n onFinish={onFinish}\r\n fields={[{name:['html'],value:fileList},...fields]}\r\n >\r\n <Form.Item\r\n name=\"qno\"\r\n label=\"문제 번호\"\r\n rules={[\r\n {\r\n required: true,\r\n message: '저장할 html의 문항번호를 입력해 주세요.',\r\n },\r\n ]}>\r\n <Row>\r\n <Col>\r\n <InputNumber\r\n min={0}\r\n max={10000}\r\n value={qno}\r\n onChange={changeNumber}>\r\n </InputNumber>\r\n </Col>\r\n <Col>\r\n <Button onClick={onClickQno}>번호 확인</Button>\r\n </Col>\r\n </Row>\r\n </Form.Item>\r\n <Form.Item\r\n name=\"typeSol\"\r\n label=\"문제 타입\"\r\n rules={[\r\n {\r\n required: true,\r\n message: '저장할 html의 문제 타입을 선택해 주세요.',\r\n },\r\n ]}>\r\n <Select onChange={onChangeTypeSol}>\r\n <Option value=\"오지선다형\">오지선다형</Option>\r\n <Option value=\"단답형\">단답형</Option>\r\n <Option value=\"계산식\">계산식</Option>\r\n </Select>\r\n </Form.Item>\r\n <Form.Item\r\n name=\"typeQue\"\r\n label=\"문제/풀이 구분\"\r\n rules={[\r\n {\r\n required: true,\r\n message: '저장할 html의 문제/풀이 구분을 선택해 주세요.',\r\n },\r\n ]}>\r\n <Select onChange={onChangeTypeQue}>\r\n <Option value=\"문제\">문제</Option>\r\n <Option value=\"풀이\">풀이</Option>\r\n </Select>\r\n </Form.Item>\r\n <Form.Item label=\"파일 업로드\">\r\n <Form.Item \r\n name=\"html\" \r\n valuePropName=\"fileList\" \r\n getValueFromEvent={normFile} \r\n \r\n noStyle \r\n rules={[\r\n {\r\n required: true,\r\n message: '파일을 드래그하거나 선택해 주세요.',\r\n },\r\n ]}>\r\n <Upload.Dragger name=\"files\" {...props} >\r\n <p className=\"ant-upload-drag-icon\">\r\n <InboxOutlined />\r\n </p>\r\n <p className=\"ant-upload-text\">Click or drag file to this area to upload</p>\r\n <p className=\"ant-upload-hint\">Support for a single or bulk upload.</p>\r\n </Upload.Dragger>\r\n </Form.Item>\r\n </Form.Item>\r\n\r\n <Form.Item style={{alignContent:'middle'}} wrapperCol={{ span: 12, offset: 6 }}>\r\n <Button type=\"primary\" htmlType=\"submit\">\r\n 저장\r\n </Button>\r\n </Form.Item>\r\n </Form>\r\n \r\n </Modal>\r\n );\r\n};\r\n\r\nexport default Html;\r\n"]},"metadata":{},"sourceType":"module"}