From 3ecae5ba436d9454376085b522ffc64ab9bc0da3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BD=95=E7=AB=A5=E5=B4=87?= Date: Tue, 14 Dec 2021 13:27:27 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E4=B8=93=E5=AE=B6?= =?UTF-8?q?=E8=AF=84=E5=AE=A1=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.js | 8 ++ src/military/expert.js | 41 ++++++++++ src/military/expert/api.js | 0 src/military/expert/fetch.js | 10 +++ src/military/expert/index.scss | 0 src/military/expert/register/index.jsx | 65 +++++++++++++++ src/military/expert/register/index.scss | 102 ++++++++++++++++++++++++ 7 files changed, 226 insertions(+) create mode 100644 src/military/expert.js create mode 100644 src/military/expert/api.js create mode 100644 src/military/expert/fetch.js create mode 100644 src/military/expert/index.scss create mode 100644 src/military/expert/register/index.jsx create mode 100644 src/military/expert/register/index.scss diff --git a/src/App.js b/src/App.js index 263be1f76..14054d3c0 100644 --- a/src/App.js +++ b/src/App.js @@ -55,6 +55,11 @@ const Task = Loadable({ loader: () => import('./military/task'), loading: Loading, }) +// 专家 +const Expert = Loadable({ + loader: () => import('./military/expert'), + loading: Loading, +}) //403页面 const Shixunauthority = Loadable({ loader: () => import('./modules/403/Shixunauthority'), @@ -262,6 +267,9 @@ class App extends Component { {/*任务*/} + {/*专家评审*/} + + {/*403*/} diff --git a/src/military/expert.js b/src/military/expert.js new file mode 100644 index 000000000..6aa7536e5 --- /dev/null +++ b/src/military/expert.js @@ -0,0 +1,41 @@ +import React, { Component } from "react"; + +import { Route, Switch } from "react-router-dom"; +import { withRouter } from "react-router"; +import { SnackbarHOC } from "educoder"; +import { CNotificationHOC } from "../modules/courses/common/CNotificationHOC"; +import { TPMIndexHOC } from "../modules/tpm/TPMIndexHOC"; +import Loadable from "react-loadable"; +import Loading from "../Loading"; +import { ImageLayerOfCommentHOC } from "../modules/page/layers/ImageLayerOfCommentHOC"; +import './index.scss'; + +const Register = Loadable({ + loader: () => import("./expert/register"), + loading: Loading, +}); + + +class Expert extends Component { + render() { + return ( +
+ + + ( + + )} + > + +
+ ); + } +} +export default withRouter( + ImageLayerOfCommentHOC({ + imgSelector: ".imageLayerParent img, .imageLayerParent .imageTarget", + parentSelector: ".newMain", + })(CNotificationHOC()(SnackbarHOC()(TPMIndexHOC(Expert)))) +); diff --git a/src/military/expert/api.js b/src/military/expert/api.js new file mode 100644 index 000000000..e69de29bb diff --git a/src/military/expert/fetch.js b/src/military/expert/fetch.js new file mode 100644 index 000000000..38f2a078c --- /dev/null +++ b/src/military/expert/fetch.js @@ -0,0 +1,10 @@ + +import javaFetch from '../javaFetch'; + + +let settings=JSON.parse(localStorage.chromesetting); +let actionUrl = settings.api_urls? settings.api_urls.notice :'https://info.osredm.com'; + +const service = javaFetch(actionUrl); +export const httpUrl = actionUrl; +export default service; \ No newline at end of file diff --git a/src/military/expert/index.scss b/src/military/expert/index.scss new file mode 100644 index 000000000..e69de29bb diff --git a/src/military/expert/register/index.jsx b/src/military/expert/register/index.jsx new file mode 100644 index 000000000..174275c65 --- /dev/null +++ b/src/military/expert/register/index.jsx @@ -0,0 +1,65 @@ +import React, { useEffect, useState, useCallback } from 'react'; +import { Button, Icon, Form, Modal, Input } from 'antd'; +import { Link } from "react-router-dom"; +import './index.scss'; + +export default Form.create()(({ match, history, showNotification, form }) => { + const { getFieldDecorator, validateFields, setFieldsValue } = form; + + // form表单公共处理函数 + const helper = useCallback( + (label, name, rules, widget) => ( + + {getFieldDecorator(name, { rules, validateFirst: true ,getValueFromEvent: e=>e.target.value.replace(/(^\s*)|(\s*$)/g, "") })(widget)} + + ), + [] + ); + + + return ( +
+ { + helper('用户姓名', + 'readerName', + [{ required: true, message: "请输入用户姓名" }, { max: 50, message: '不能超过50字符' }], + + ) + } + + { + helper('单位名称', + 'companyName', + [{ required: true, message: "请输入公司名称" }, { max: 100, message: '不能超过100字符' }], + + ) + } + + { + helper('联系方式', + 'contactInfo', + [{ required: true, message: "请输入联系方式" }, + { max: 100, message: '不能超过100字符' }, + { validator: (rule,val,callback) =>{ + const pattern = /^((\+)?86|((\+)?86)?)0?1[3458]\d{9}$/; + if(pattern.test(val)){ + callback(); + }else { + callback('请输入正确的手机号码!'); + } + }}], + + ) + } + +
+ + ) +} +) diff --git a/src/military/expert/register/index.scss b/src/military/expert/register/index.scss new file mode 100644 index 000000000..c43c45582 --- /dev/null +++ b/src/military/expert/register/index.scss @@ -0,0 +1,102 @@ +.centerbox { + position: relative; +} +.notice-detail { + margin-top: 3.5rem; + .head-navigation { + top: -2.5rem; + } + .center-content { + overflow: auto; + border: 0; + } +} + +.notice-detail-content { + padding: 2rem 2.5rem 3rem; + + .anticon-caret-right { + color: #1890ff; + font-size: 1rem; + } +} + +.notice-title { + margin: 3rem auto 0; + text-align: center; + font-size: 1.375rem; + font-weight: bold; + line-height: 1.375rem; + color: #000000; +} + +// 内容详情 +.item-content { + padding: 10px 10px 0 30px; +} +.content-notice { + padding: 20px; +} + +.center-author { + display: flex; + flex-flow:row wrap-reverse; + justify-content: space-around; + align-items: center; + padding: .5rem; + background: #f9f9f9; + color: #333; + p { + padding: 0 .5rem; + } +} + +.content-text { + margin: 1.25rem 0; + min-height: 30vh; +} + +.content-secret{ + min-height: 2em; +} + +.notice-content-title { + margin: 0.5rem 0; + font-size: 1rem; + font-weight: bold; +} + +.notice-content-download { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 2rem !important; + padding: 0 1rem; + background: #f9f9f9; + span:hover{ + cursor: pointer; + color: #1890ff; + } +} + +.form-edit-modal { + .ant-form-item{ + display: flex; + } + .ant-form-item-label{ + min-width: 5rem; + } + .ant-form-item-control-wrapper{ + width: 75%; + display: inline-block; + } + .ant-input-number{ + width: 50%; + } + + .ant-modal-footer{ + border-top: 0; + text-align: center; + } +} + -- 2.34.1