+ {weixinlogin === true ? "" :
- );
-});
-
-//visible, setValue, onCancel
-export default ({ setValue, ...props }) => (
-
-
-
-);
diff --git a/src/modules/recruitment/jobForm/popup/SelectClass.js b/src/modules/recruitment/jobForm/popup/SelectClass.js
deleted file mode 100644
index 3252a777..00000000
--- a/src/modules/recruitment/jobForm/popup/SelectClass.js
+++ /dev/null
@@ -1,66 +0,0 @@
-import { Row, Col } from 'antd';
-import React, { useState, useCallback, useRef, useEffect } from 'react';
-import Loading from '../../util/Loading';
-import { getJobCate } from '../../data/getJobCate';
-import Modal from '../../util/Modal';
-import { CenterBtnGrp, OkBtn, CancelBtn } from '../../util/GeneralButton';
-import FatherNav from './selectWidget/FatherNav';
-import SonArea from './selectWidget/SonArea';
-
-
-//visible, setValue, onCancel
-export default ({ setValue, ...props }) => {
- const [isloaded, setLoaded] = useState(false);
- const dataRef = useRef(null);
- useEffect(() => {
- const f = async () => {
- const map = await getJobCate();
- //const map = mock;
- dataRef.current = map;
- setLoaded(true);
- }
- f();
- return () => { setLoaded(false); };
- }, []);
- const [selectedCate, setCate] = useState(null);
- const [selectedJob, setJob] = useState(null);
- const selectCate = useCallback(text => {
- if (text === selectedCate) {
- return;
- }
- setCate(text);
- setJob(null);
- }, []);
- const selectJob = useCallback(text => {
- if (text === selectedJob) {
- return;
- }
- setJob(text);
- }, []);
- const onOk = useCallback(() => {
- if (selectedJob === null) {
- return;
- }
- props.onCancel();
- setValue({ father: selectedCate, son: selectedJob });
- }, [selectedCate, selectedJob]);
- const Content =
-
-
-
-
-
-
-
-
-
-
-
-
-
;
- return
- {!isloaded ? : Content}
- ;
-};
\ No newline at end of file
diff --git a/src/modules/recruitment/jobForm/popup/selectWidget/FatherItem.js b/src/modules/recruitment/jobForm/popup/selectWidget/FatherItem.js
deleted file mode 100644
index 3455e387..00000000
--- a/src/modules/recruitment/jobForm/popup/selectWidget/FatherItem.js
+++ /dev/null
@@ -1,29 +0,0 @@
-import styled from 'styled-components';
-import React from 'react';
-import { Icon as AdIcon } from "antd";
-import { pointerMixin, betweenMixin } from "../../../util/cssMixin";
-
-const Item = styled.div`
- height:57px;
- background:${p => p.isSelected ? "rgba(241,241,241,1)" : "transparent"};
- ${pointerMixin}
- ${betweenMixin}
-`;
-const Name = styled.div`
- color:rgba(51,51,51,1);
- font-size:16px;
- font-family:MicrosoftYaHei;
- margin-left:30px;
-`;
-const Icon = styled(AdIcon)`
- display:block;
- color:rgba(187,187,187,1);
- margin-right:20px;
-`;
-
-//onClick, isSelected
-export default ({ children, ...props }) =>
-
-
- {children}
-
-
;
\ No newline at end of file
diff --git a/src/modules/recruitment/jobForm/popup/selectWidget/FatherNav.js b/src/modules/recruitment/jobForm/popup/selectWidget/FatherNav.js
deleted file mode 100644
index 5d492d9f..00000000
--- a/src/modules/recruitment/jobForm/popup/selectWidget/FatherNav.js
+++ /dev/null
@@ -1,14 +0,0 @@
-import styled from 'styled-components';
-import React from 'react';
-import Item from './FatherItem';
-
-const Column = styled.div`
- background:rgba(250,250,250,1);
- height:100%;
- overflow:auto;
-`;
-
-export default ({ data, selectCate, selectedCate }) => //data is a map
-
- {Array.from(data.keys()).map(i => - { selectCate(i); }} isSelected={selectedCate === i}>{i}
)}
- ;
\ No newline at end of file
diff --git a/src/modules/recruitment/jobForm/popup/selectWidget/SonArea.js b/src/modules/recruitment/jobForm/popup/selectWidget/SonArea.js
deleted file mode 100644
index facb25ad..00000000
--- a/src/modules/recruitment/jobForm/popup/selectWidget/SonArea.js
+++ /dev/null
@@ -1,19 +0,0 @@
-import { Row } from "antd";
-import React from "react";
-import { JobBtn } from "../../../util/GeneralButton";
-
-export default ({ data, selectedJob, selectJob }) => (
-
- {Array.from(data.keys()).map((i) => (
- {
- selectJob(i);
- }}
- isSelected={selectedJob === i}
- >
- {i}
-
- ))}
-
-);
diff --git a/src/modules/recruitment/jobForm/widget/CateSelect.js b/src/modules/recruitment/jobForm/widget/CateSelect.js
deleted file mode 100644
index 55b8d570..00000000
--- a/src/modules/recruitment/jobForm/widget/CateSelect.js
+++ /dev/null
@@ -1,61 +0,0 @@
-import React, { forwardRef } from "react";
-import { Icon, Row } from "antd";
-import { useToggle } from "../../util/hooks";
-import styled from "styled-components";
-import { BtnBase } from "../../util/Button";
-import AddClassPopup from "../popup/AddClass";
-import SelectClassPopup from "../popup/SelectClass";
-
-const SimulateInput = styled(BtnBase)`
- border-radius: 4px;
- border: 1px solid rgba(221, 221, 221, 1);
- width: 252px;
- padding-left: 10px;
- padding-right: 10px;
- margin-bottom: 5px;
- &:hover {
- border: 1px solid #40a9ff;
- }
- &.has-error {
- border: 1px solid #f5222d;
- }
-`;
-
-const SI = ({ children }) => (
-
{children}
-);
-
-const Value = styled.span`
- font-size: 14px;
- color: rgba(51, 51, 51, 1);
- font-family: MicrosoftYaHei;
-`;
-const Placeholder = styled(Value)`
- color: rgba(187, 187, 187, 1);
-`;
-
-export default forwardRef(({ onChange, value, placeholder }, ref) => {
- const [v1, sv1] = useToggle();
- const [v2, sv2] = useToggle();
- return (
-
-
-
- {!value || !value.father || !value.son ? (
- 请选择职位类别
- ) : (
- {`${value.father}/${value.son}`}
- )}
-
-
-
-
-
-
-
- );
-});
diff --git a/src/modules/recruitment/jobForm/widget/InputWithLen.js b/src/modules/recruitment/jobForm/widget/InputWithLen.js
deleted file mode 100644
index dfa26f02..00000000
--- a/src/modules/recruitment/jobForm/widget/InputWithLen.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import React, { forwardRef } from "react";
-import { Input } from "antd";
-
-export default forwardRef(({ maxLen, ...props }, ref) => {
- const len = !props.value ? 0 : props.value.length;
- return
{`${len}/${maxLen}`}} ref={ref} />
-});
\ No newline at end of file
diff --git a/src/modules/recruitment/jobForm/widget/TextArea.js b/src/modules/recruitment/jobForm/widget/TextArea.js
deleted file mode 100644
index de4e1423..00000000
--- a/src/modules/recruitment/jobForm/widget/TextArea.js
+++ /dev/null
@@ -1,6 +0,0 @@
-import styled from 'styled-components';
-import { Input } from "antd";
-
-export default styled(Input.TextArea)`
- resize:none;
-`;
\ No newline at end of file
diff --git a/src/modules/recruitment/recrulistcss/recrulistcss.scss b/src/modules/recruitment/recrulistcss/recrulistcss.scss
deleted file mode 100644
index 8540ab4c..00000000
--- a/src/modules/recruitment/recrulistcss/recrulistcss.scss
+++ /dev/null
@@ -1,260 +0,0 @@
-
-.IntermediateCenter {
- display: flex;
- flex-direction: column;
- align-items: center;
- justify-content: center;
-
-}
-
-.JianDcentered {
- display: flex;
- align-items: center;
-}
-
-.spacearound {
- display: flex;
- justify-content: space-around;
-
-}
-
-.spacebetween {
- display: flex;
- justify-content: space-between;
-}
-
-.topcenter {
- display: -webkit-flex;
- flex-direction: column;
- align-items: center;
-
-}
-
-.sortinxdirection {
- display: flex;
- flex-direction: row;
-}
-
-.xaxisreverseorder {
- display: flex;
- flex-direction: row-reverse;
-}
-
-.verticallayout {
- display: flex;
- flex-direction: column;
-}
-
-.reversedirection {
- display: flex;
- flex-direction: column-reverse;
-}
-
-.color88 {
- color: #888888;
-}
-
-.mr7 {
- margin-right: 7px;
-}
-.ml21{
- margin-left: 21px;
-}
-
-.mt22 {
- margin-top: 22px;
-}
-
-.w50s {
- width: 50%;
-}
-.w70s {
- width: 70%;
-}
-.w80s {
- width: 80%;
-}
-
-.w20s {
- width: 20%;
-}
-
-.w83s {
- width: 83%;
-}
-
-.w17s {
- width: 17%;
-}
-
-.iconcolor {
- color: #4CADFF !important;
-}
-
-.lh45s {
- line-height: 45px;
-}
-
-.lh48s {
- line-height: 48px;
-
-}
-
-.lh40s {
- line-height: 40px;
-}
-
-.titless100 {
- max-width: 100px;
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
- cursor: default;
-}
-
-.w1199dbl {
- width: 1200px;
- min-height: 60px;
- background: rgba(255, 255, 255, 1);
- -webkit-box-shadow: 0px 6px 8px 0px rgba(0, 0, 0, 0.03);
- box-shadow: 0px 6px 8px 0px rgba(0, 0, 0, 0.03);
- border-radius: 2px;
-}
-.divgreens{
- color: #42B366;
- background: #D8F7E2 !important;
- border: 1px solid #D8F7E2 !important;
-}
-.divViolets{
- color: #5B36D1;
- border: 1px solid #E8E1FF !important;
- background: #E8E1FF !important;
-
-}
-.divoranges{
- color: #E65A18;
- border: 1px solid #FFF2EC !important;
- background: #FFF2EC!important;
-
-}
-.divreds{
- color: #F30F0F;
- border: 1px solid #FFE6E6 !important;
- background: #FFE6E6 !important;
-}
-
-.xiaoshou {
- cursor: pointer !important;
-}
-
-.xiaoshout {
- cursor: default !important;
-}
-
-.pdtop30 {
- padding-top: 30px !important;
-}
-.pd30{
- padding: 30px;
-}
-.ptabo{
- .ant-input-wrapper {
- .ant-input {
- height: 48px !important;
- line-height: 46px !important;
- }
- }
-
- .ant-input-group-addon {
- width: 48px !important;
-
- .ant-btn-lg {
- height: 46px !important;
- width: 108px;
- border-left: 1px solid #1890ff !important;
- border-bottom: 1px solid #1890ff !important;
- border-right: 1px solid #1890ff !important;
- border-top: 1px solid #1890ff !important;
- }
- }
-
- .ant-popover-inner-content {
- padding: 0px !important;
- }
-
-}
-.tabone {
- border-bottom: 1px solid #EEEEEE;
-
- .pdtab {
- padding-top: 15px;
- padding-left: 15px;
- padding-right: 30px;
-
-
- .ant-tabs {
- width: 50% !important;
-
- .ant-tabs-bar {
- border-bottom: 1px solid #ffffff;
-
- .ant-tabs-tab {
- font-size: 16px;
- }
- }
-
- }
- }
-
- .pdtabs {
-
- .searchwidth {
- width: 100%;
- }
- }
-
- .pdtabss {
- .divgreen{
- color: #42B366;
- border: 1px solid #42B366;
-
-
- }
- .divViolet{
- color: #5B36D1;
- border: 1px solid #5B36D1;
-
-
-
- }
- .divorange{
- color: #E65A18;
- border: 1px solid #E65A18;
-
-
- }
- .divred{
- color: #F30F0F;
- border: 1px solid #F30F0F;
-
-
- }
- .brodersdiv{
-
- background: #ffffff;
- border-radius:25px;
- min-width: 170px;
- text-align: center;
- height: 46px;
- line-height: 46px;
- }
-
-
- .searchwidth {
- width:347px;
- }
- }
- .pdtabsss {
- padding: 30px;
- }
-}
diff --git a/src/modules/recruitment/resumeForm/CompanyHeader.js b/src/modules/recruitment/resumeForm/CompanyHeader.js
deleted file mode 100644
index 32ed9232..00000000
--- a/src/modules/recruitment/resumeForm/CompanyHeader.js
+++ /dev/null
@@ -1,38 +0,0 @@
-import React from "react";
-import styled from "styled-components";
-import { Divider, Row } from "antd";
-
-const Header = styled.div`
- width: 1200px;
- height: 145px;
- background: rgba(255, 255, 255, 1);
- border-radius: 2px;
- padding: 40px;
- margin:0 auto;
- margin-bottom: 20px;
-`;
-const Job = styled.div`
- font-size: 20px;
- font-family: MicrosoftYaHeiSemibold;
- color: rgba(51, 51, 51, 1);
- margin-bottom:15px;
-`;
-
-const Item = styled.span`
- font-size: 14px;
- font-family: MicrosoftYaHei;
- color: rgba(51, 51, 51, 1);
-`;
-
-export default ({ jobName, company, city }) => {
- return (
-
- );
-};
diff --git a/src/modules/recruitment/resumeForm/Form.js b/src/modules/recruitment/resumeForm/Form.js
deleted file mode 100644
index f22a4a53..00000000
--- a/src/modules/recruitment/resumeForm/Form.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import React, {
- createContext,
- forwardRef,
- useImperativeHandle,
- useCallback,
- } from "react";
-export const FormCtx = createContext();
\ No newline at end of file
diff --git a/src/modules/recruitment/resumeForm/NormalForm.js b/src/modules/recruitment/resumeForm/NormalForm.js
deleted file mode 100644
index 3a4cb636..00000000
--- a/src/modules/recruitment/resumeForm/NormalForm.js
+++ /dev/null
@@ -1,240 +0,0 @@
-import _ from "lodash";
-import React, { forwardRef, useImperativeHandle, useCallback } from "react";
-import { Form, Input, Radio, Row, DatePicker, Icon } from "antd";
-import styled from "styled-components";
-import ImageUploader from "./widget/ImageUploader";
-import ResumesUploader from "./widget/ResumesUploader";
-import JobExpect from "./widget/JobExpect";
-import EduItem from "./widget/EduItem";
-import WorkItem from "./widget/WorkItem";
-import { FormCtx } from "./Form";
-import { AddButton } from "./widget/Button";
-import { useSet } from "../util/hooks";
-import { genUuid } from "../data/genUuid";
-import { mapPropsToFields } from "../data/mapResumeData";
-import moment from "moment";
-
-const Label = styled.div`
- &::before {
- content: ${(p) => (p.required ? '"*"' : '""')};
- color: ${(p) => (p.required ? "red" : "black")};
- }
- &::after {
- content: ":";
- }
- margin-bottom: 5px;
- font-size: 16px;
- font-family: MicrosoftYaHeiSemibold;
- color: rgba(51, 51, 51, 1);
-`;
-const Tip = styled.div`
- font-size: 12px;
- font-family: MicrosoftYaHei;
- color: rgba(136, 136, 136, 1);
- margin-left: 10px;
-`;
-
-export default Form.create({ mapPropsToFields })(
- forwardRef(({ form, attachment_name, logo_url, attachment_url, attachment_id }, ref) => {
- const {
- getFieldDecorator,
- validateFields,
- getFieldValue,
- setFields,
- getFieldsValue
- } = form;
- const { set: eduSet, add: eduAdd, remove: eduRm } = useSet();
- const { set: wkSet, add: wkAdd, remove: wkRm } = useSet();
- const addEdu = useCallback(() => {
- const uuid = genUuid();
- eduAdd(uuid);
- return uuid;
- }, []);
- const addWk = useCallback(() => {
- const uuid = genUuid();
- wkAdd(uuid);
- return uuid;
- }, []);
- const set = useCallback((education, experience) => {
- const object = {};
- if (experience !== undefined) {
- experience.forEach((exp) => {
- const id = addWk();
- ["company", "desc"].forEach((k) => {
- object[`experience[${id}].${k}`] = { value: exp[k] };
- });
- ["begin_on", "end_on"].forEach((k) => {
- object[`experience[${id}].${k}`] = { value: moment(exp[k]) };
- });
- });
- }
- if (education !== undefined) {
- let isFirst = true;
- education.forEach((edu) => {
- const id = isFirst ? "base" : addEdu();
- ["edu_bg", "edu_category", "major", "school"].forEach((k) => {
- object[`education[${id}].${k}`] = { value: edu[k] };
- });
- ["begin_on", "end_on"].forEach((k) => {
- object[`education[${id}].${k}`] = { value: moment(edu[k]) };
- });
- isFirst = false;
- });
- }
- setTimeout(() => {
- setFields(object);
- }, 1000);
- }, []);
- const genVerArr = useCallback(() => {
- const genWk = (key) =>
- ["begin_on", "end_on", "company", "desc"].map(
- (k) => `experience[${key}].${k}`
- );
- const genEdu = (key) =>
- ["begin_on", "end_on", "edu_bg", "edu_category", "major", "school"].map(
- (k) => `education[${key}].${k}`
- );
- const field = [
- "name",
- "sex",
- "logo",
- "birth_on",
- "mobile",
- "evaluate",
- "attachment_id",
- "job_position",
- "city",
- "salary",
- "job_category",
- "job_year",
- ];
- const baseEdu = genEdu("base");
- const wk = _.flatten(Array.from(wkSet.keys()).map(genWk));
- const edu = _.flatten(Array.from(eduSet.keys()).map(genEdu));
- return _.concat(wk, edu, field, baseEdu);
- }, []);
- useImperativeHandle(ref, () => ({
- verify: (callback) => {
- validateFields(genVerArr(), callback);
- },
- set,
- }));
- const helper = useCallback(
- (label, name, rules, widget, isRequired = true) => (
-
-
-
- {getFieldDecorator(name, { rules, validateFirst: true })(widget)}
-
-
- ),
- []
- );
- return (
-
-
-
- );
- })
-);
diff --git a/src/modules/recruitment/resumeForm/popup/CityPopup.js b/src/modules/recruitment/resumeForm/popup/CityPopup.js
deleted file mode 100644
index e5ba5983..00000000
--- a/src/modules/recruitment/resumeForm/popup/CityPopup.js
+++ /dev/null
@@ -1,51 +0,0 @@
-import React, { useEffect,useCallback } from "react";
-import {message} from 'antd';
-import Modal from "./Modal";
-import { useLoaded, useMap } from "../../util/hooks";
-import { getCurrCity } from "../../data/getCurrCity";
-import { CenterBtnGrp, OkBtn, CancelBtn } from "../../util/GeneralButton";
-import CityList from "./city/CityList";
-import SelectedCity from "./city/SelectedCity";
-import { getHotCity } from "../../data/getHotCity";
-import Loading from "../../util/Loading";
-
-//visible, setValue, onCancel
-export default ({ setValue, ...props }) => {
- const { isLoaded: isCurrCityLoaded, data: currCity } = useLoaded(
- getCurrCity,
- []
- );
- const { isLoaded: isCityLoaded, data: cityLst } = useLoaded(getHotCity, []);
- const { map, add, remove } = useMap((m) => {
- if (m.size >= 5) {
- message.error("最多选择5项");
- return false;
- }
- return true;
- });
- useEffect(() => {
- if (isCurrCityLoaded) {
- add(currCity, true);
- }
- }, [isCurrCityLoaded]);
- const onOk = useCallback(() => {
- props.onCancel();
- setValue(Array.from(map.keys()));
- }, []);
- const content =
- !isCurrCityLoaded || !isCityLoaded ? (
-
- ) : (
-
-
-
-
-
-
-
-
- );
- return
- {content}
- ;
-};
diff --git a/src/modules/recruitment/resumeForm/popup/JobPopup.js b/src/modules/recruitment/resumeForm/popup/JobPopup.js
deleted file mode 100644
index 29781b60..00000000
--- a/src/modules/recruitment/resumeForm/popup/JobPopup.js
+++ /dev/null
@@ -1,68 +0,0 @@
-import React, { useCallback, useState,useEffect } from "react";
-import { Row, Col, message } from "antd";
-import Modal from "../../util/Modal";
-import Nav from "./jobClass/FatherNav";
-import SonNav from "./jobClass/SonArea";
-import Tiltle from "./jobClass/Tiltle";
-import Loading from "../../util/Loading";
-import { useLoaded, useSet } from "../../util/hooks";
-import { CenterBtnGrp, OkBtn, CancelBtn } from "../../util/GeneralButton";
-import { getJobCate } from "../../data/getJobCate";
-
-//visible, setValue, onCancel
-export default ({ setValue, initArr, ...props }) => {
- const { isLoaded, data } = useLoaded(getJobCate, []);
- const { set, add, remove } = useSet((s) => {
- if (s.size >= 5) {
- message.error("最多选择5项");
- return false;
- }
- return true;
- });
- const [selectedCate, selectCate] = useState(null);
- const onOk = useCallback(() => {
- props.onCancel();
- setValue(Array.from(set.values()));
- }, []);
- useEffect(() => {
- if (Array.isArray(initArr)) {
- initArr.forEach((i) => add(i));
- }
- }, []);
- const content = !isLoaded ? (
-
- ) : (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- );
- return (
-
}
- {...props} getContainer={false}
- >
- {content}
-
- );
-};
diff --git a/src/modules/recruitment/resumeForm/popup/Modal.js b/src/modules/recruitment/resumeForm/popup/Modal.js
deleted file mode 100644
index da5972e2..00000000
--- a/src/modules/recruitment/resumeForm/popup/Modal.js
+++ /dev/null
@@ -1,15 +0,0 @@
-import React from "react";
-import { Modal } from 'antd';
-import styled from 'styled-components';
-
-const Box = styled.div`
- width:clac(100%+80px);
- margin:-24px -24px;
-`;
-
-//visible,title,onCancel,width
-export default ({ children, ...props }) => {
- return
- {children}
- ;
-};
diff --git a/src/modules/recruitment/resumeForm/popup/city/CityList.js b/src/modules/recruitment/resumeForm/popup/city/CityList.js
deleted file mode 100644
index c0ba7303..00000000
--- a/src/modules/recruitment/resumeForm/popup/city/CityList.js
+++ /dev/null
@@ -1,49 +0,0 @@
-import styled from "styled-components";
-import React from "react";
-import { Row } from "antd";
-
-const Button = styled.div`
- width: 100px;
- height: 46px;
- background: rgba(255, 255, 255, 1);
- border-radius: 2px;
- border: 1px solid rgba(221, 221, 221, 1);
- font-size: 14px;
- font-family: MicrosoftYaHei;
- color: rgba(51, 51, 51, 1);
- margin-left: 30px;
- margin-top: 10px;
- display: flex;
- justify-content: center;
- align-items: center;
- &:hover {
- cursor: pointer;
- }
-`;
-const Title = styled.div`
- font-size: 16px;
- font-family: Microsoft YaHei;
- color: rgba(51, 51, 51, 1);
- margin:15px 30px;
- margin-bottom:5px;
-`;
-
-export default ({ select, data }) => {
- return (
-
- 热门城市:
-
- {data.map((city) => (
-
- ))}
-
-
- );
-};
diff --git a/src/modules/recruitment/resumeForm/popup/city/SelectedCity.js b/src/modules/recruitment/resumeForm/popup/city/SelectedCity.js
deleted file mode 100644
index c12d802b..00000000
--- a/src/modules/recruitment/resumeForm/popup/city/SelectedCity.js
+++ /dev/null
@@ -1,47 +0,0 @@
-import styled from "styled-components";
-import React, { useCallback } from "react";
-import { Tag, Tooltip, Icon } from "antd";
-
-const Title = styled.div`
- font-size: 16px;
- font-family: Microsoft YaHei;
- color: rgba(51, 51, 51, 1);
- margin: 15px 30px;
- margin-top:30px;
-`;
-const Tip = styled.span`
- font-size: 12px;
-
-`;
-const tagConfig = {
- color: "blue",
- closable: true,
- style:{border:"0"},
-};
-
-export default ({ selected, remove }) => {
- return (
-
- 选择期望工作城市:
-
- {Array.from(selected.entries()).map(([key, isCurrCity]) => {
- if (isCurrCity) {
- return (
- remove(key)}>
-
- {key}
- (当前定位城市)
-
- );
- } else {
- return (
- remove(key)}>
- {key}
-
- );
- }
- })}
-
-
- );
-};
diff --git a/src/modules/recruitment/resumeForm/popup/jobClass/FatherItem.js b/src/modules/recruitment/resumeForm/popup/jobClass/FatherItem.js
deleted file mode 100644
index dcb47cc9..00000000
--- a/src/modules/recruitment/resumeForm/popup/jobClass/FatherItem.js
+++ /dev/null
@@ -1,32 +0,0 @@
-import styled from 'styled-components';
-import React from 'react';
-import { Icon as AdIcon } from "antd";
-
-const Item = styled.div`
- height:57px;
- background:${p => p.isSelected ? "rgba(241,241,241,1)" : "transparent"};
- &:hover{
- cursor:pointer;
- }
- display:flex;
- justify-content:space-between;
- align-items:center;
-`;
-const Name = styled.div`
- color:rgba(51,51,51,1);
- font-size:16px;
- font-family:MicrosoftYaHei;
- margin-left:30px;
-`;
-const Icon = styled(AdIcon)`
- display:block;
- color:rgba(187,187,187,1);
- margin-right:20px;
-`;
-
-//onClick, isSelected
-export default ({ children, ...props }) =>
-
-
- {children}
-
-
;
\ No newline at end of file
diff --git a/src/modules/recruitment/resumeForm/popup/jobClass/FatherNav.js b/src/modules/recruitment/resumeForm/popup/jobClass/FatherNav.js
deleted file mode 100644
index 5d492d9f..00000000
--- a/src/modules/recruitment/resumeForm/popup/jobClass/FatherNav.js
+++ /dev/null
@@ -1,14 +0,0 @@
-import styled from 'styled-components';
-import React from 'react';
-import Item from './FatherItem';
-
-const Column = styled.div`
- background:rgba(250,250,250,1);
- height:100%;
- overflow:auto;
-`;
-
-export default ({ data, selectCate, selectedCate }) => //data is a map
-
- {Array.from(data.keys()).map(i => - { selectCate(i); }} isSelected={selectedCate === i}>{i}
)}
- ;
\ No newline at end of file
diff --git a/src/modules/recruitment/resumeForm/popup/jobClass/SonArea.js b/src/modules/recruitment/resumeForm/popup/jobClass/SonArea.js
deleted file mode 100644
index 0ad4f99f..00000000
--- a/src/modules/recruitment/resumeForm/popup/jobClass/SonArea.js
+++ /dev/null
@@ -1,13 +0,0 @@
-import { Row } from "antd";
-import React from "react";
-import { JobBtn } from "../../../util/GeneralButton";
-
-export default ({ data, select }) => (
-
- {Array.from(data.values()).map((v) => (
- select(v)}>
- {v}
-
- ))}
-
-);
diff --git a/src/modules/recruitment/resumeForm/popup/jobClass/Tiltle.js b/src/modules/recruitment/resumeForm/popup/jobClass/Tiltle.js
deleted file mode 100644
index cff7ffca..00000000
--- a/src/modules/recruitment/resumeForm/popup/jobClass/Tiltle.js
+++ /dev/null
@@ -1,41 +0,0 @@
-import styled from "styled-components";
-import React from "react";
-import { Tag, Tooltip } from "antd";
-
-const Header = styled.div`
- display: flex;
- justify-content: space-between;
- align-items: center;
-`;
-
-const Title = styled.div`
- font-size: 16px;
- font-family: Microsoft YaHei;
- font-weight: bold;
- color: rgba(51, 51, 51, 1);
-`;
-const tagConfig = {
- color: "blue",
- closable: true,
- style:{border:"0"},
-};
-export default ({ selected, remove }) => {
- const tag = (key) => (
-
remove(key)}>
- {key.length >= 4 ? `${key.substring(0, 4)}...` : key}
-
- );
- const wrapper = (key) => {
- if (key.length >= 4) {
- return
{tag(key)};
- } else {
- return tag(key);
- }
- };
- return (
-
- );
-};
diff --git a/src/modules/recruitment/resumeForm/widget/Button.js b/src/modules/recruitment/resumeForm/widget/Button.js
deleted file mode 100644
index 89c36481..00000000
--- a/src/modules/recruitment/resumeForm/widget/Button.js
+++ /dev/null
@@ -1,37 +0,0 @@
-import styled from "styled-components";
-
-export const AddButton = styled.div`
- display:flex;
- justify-content:center;
- align-items:center;
- width:169px;
- height:40px;
- background:rgba(236,246,255,1);
- border-radius:20px;
- border:1px solid rgba(76,172,255,1);
- font-size:14px;
- font-family:MicrosoftYaHeiSemibold;
- color:rgba(76,172,255,1);
- margin-bottom:20px;
- &:hover{
- cursor:pointer;
- }
-`;
-
-export const UploadButton = styled.div`
- display:flex;
- justify-content:center;
- align-items:center;
- width:87px;
- height:40px;
- background:rgba(236,246,255,1);
- border-radius:2px;
- border:1px solid rgba(76,172,255,1);
- font-size:14px;
- font-family:MicrosoftYaHeiSemibold;
- color:rgba(76,172,255,1);
- margin-right:20px;
- &:hover{
- cursor:pointer;
- }
-`;
diff --git a/src/modules/recruitment/resumeForm/widget/EduItem.js b/src/modules/recruitment/resumeForm/widget/EduItem.js
deleted file mode 100644
index e028bbb5..00000000
--- a/src/modules/recruitment/resumeForm/widget/EduItem.js
+++ /dev/null
@@ -1,101 +0,0 @@
-import React, { useContext, useCallback } from "react";
-import { FormCtx } from "../Form";
-import { Row, Col, Form, Select, Input, Icon } from "antd";
-import MonthPicker from "./MothPicker";
-
-const edu_bg = ["本科", "硕士", "博士", "大专", "其他"];
-const edu_category = ["统招全日制", "统招非全日制", "自考", "其他"];
-
-export default ({ nameKey, onDelete }) => {
- const { getFieldDecorator, getFieldValue } = useContext(FormCtx);
- const greatValidater = useCallback((r, v, cb) => {
- if (v >= getFieldValue(`education[${nameKey}].begin_on`)) {
- cb();
- } else {
- cb("时间范围不正确");
- }
- }, []);
- return (
-
-
-
-
- {getFieldDecorator(`education[${nameKey}].begin_on`, {
- rules: [{ required: true, message: "请选择开始日期" }],
- })()}
-
-
-
-
- {getFieldDecorator(`education[${nameKey}].end_on`, {
- rules: [
- { required: true, message: "请选择结束日期" },
- { validator: greatValidater },
- ],
- validateFirst: true,
- })()}
-
-
-
- {onDelete ? (
-
- ) : null}
-
-
-
-
-
- {getFieldDecorator(`education[${nameKey}].edu_bg`, {
- rules: [{ required: true, message: "请选择学历" }],
- })(
-
- )}
-
-
-
-
- {getFieldDecorator(`education[${nameKey}].edu_category`, {
- rules: [{ required: true, message: "请选择学历类型" }],
- })(
-
- )}
-
-
-
-
- {getFieldDecorator(`education[${nameKey}].major`, {
- rules: [
- { required: true, message: "请输入专业" },
- { max: 60, message: "超过60字符" },
- { whitespace: true, message: "不能全空" },
- ],
- validateFirst: true,
- })()}
-
-
-
-
- {getFieldDecorator(`education[${nameKey}].school`, {
- rules: [
- { required: true, message: "请输入学校名称" },
- { max: 60, message: "超过60字符" },
- { whitespace: true, message: "不能全空" },
- ],
- validateFirst: true,
- })()}
-
-
- );
-};
diff --git a/src/modules/recruitment/resumeForm/widget/ImageUploader.js b/src/modules/recruitment/resumeForm/widget/ImageUploader.js
deleted file mode 100644
index eb0e6557..00000000
--- a/src/modules/recruitment/resumeForm/widget/ImageUploader.js
+++ /dev/null
@@ -1,73 +0,0 @@
-import React, { useState, useRef, useCallback } from "react";
-import { getUploadLogoActionUrl, getUrl } from "educoder";
-import { Upload, Icon, message } from "antd";
-import axios from 'axios';
-
-export default ({ logo_url, onChange }) => {
- const base64Ref = useRef(null);
- const getBase64 = useCallback((file) => {
- return new Promise((resolve) => {
- const reader = new FileReader();
- reader.addEventListener("load", () => {
- base64Ref.current = reader.result;
- resolve(reader.result);
- });
- reader.readAsDataURL(file);
- });
- }, []);
- const [isLoading, setLoading] = useState(() => {
- if (logo_url) {
- return true;
- }
- return false;
- });
- const [imageUrl, setUrl] = useState(() => {
- if (logo_url) {
- return getUrl("/"+logo_url);
- }
- return undefined;
- });
- const handleChange = useCallback(({ file }) => {
- if (file.status === "uploading") {
- setLoading(true);
- return;
- }else if (file.status === "done") {
- onChange("t");
- setLoading(false);
- setUrl(base64Ref.current);
- }else if (file.size > 2 ** 20 * 2) {
- setLoading(false);
- setUrl("");
- }
- }, []);
- const verifyFile = useCallback((f) => {
- if(imageUrl){
- axios.post('/resumes/destroy_logo.json');
- }
- const isProperSize = f.size / 1024 / 1024 < 2; //2MB
- if (!isProperSize) {
- message.error("照片超过2MB");
- }
- return isProperSize;
- },[imageUrl]);
- return (
-
-
- {imageUrl ? (
-
- ) : (
-
- )}
-
-
- );
-};
diff --git a/src/modules/recruitment/resumeForm/widget/JobExpect.js b/src/modules/recruitment/resumeForm/widget/JobExpect.js
deleted file mode 100644
index 6581db0c..00000000
--- a/src/modules/recruitment/resumeForm/widget/JobExpect.js
+++ /dev/null
@@ -1,138 +0,0 @@
-import React, { forwardRef, useContext } from "react";
-import { Row, Icon, Form, Select, Checkbox } from "antd";
-import styled from "styled-components";
-import { useToggle } from "../../util/hooks";
-import JobPopup from "../popup/JobPopup";
-import CityPopup from "../popup/CityPopup";
-import { FormCtx } from "../Form";
-
-const Input = styled.div`
- border-radius: 4px;
- border: 1px solid rgba(221, 221, 221, 1);
- width: 534px;
- height: 33px;
- padding-left: 10px;
- padding-right: 10px;
- margin-bottom: 5px;
- display: flex;
- justify-content: space-between;
- align-items: center;
- &:hover {
- cursor: pointer;
- border: 1px solid #40a9ff;
- }
- & .has-error {
- border: 1px solid #f5222d;
- }
-`;
-
-const Value = styled.div`
- font-size: 14px;
- color: rgba(51, 51, 51, 1);
- font-family: MicrosoftYaHei;
-`;
-const Placeholder = styled(Value)`
- color: rgba(187, 187, 187, 1);
-`;
-const Content = ({ placeholder, value, onClick }) => (
-
- {!value ? {placeholder} : {value}}
-
-
-);
-
-const ExpJob = forwardRef(({ onChange, value }, ref) => {
- const [jobVis, setJobVis] = useToggle();
- return (
-
-
-
-
-
-
- );
-});
-const ExpCity = forwardRef(({ onChange, value }, ref) => {
- const [cityVis, setCityVis] = useToggle();
- return (
-
-
-
-
-
-
- );
-});
-
-const salary = [
- "1000元/月以下",
- "1000—2000元/月",
- "2001—4000元/月",
- "4001—6000元/月",
- "6001—8000元/月",
- "8001—10000元/月",
- "10001—15000元/月",
- "15001—25000元/月",
- "25001—35000元/月",
- "35001—50000元/月",
- "50001—70000元/月",
- "70001—100000元/月",
- "100000元/月以上",
-];
-const job_category = ["全职", "兼职", "实习"];
-
-export default () => {
- const { getFieldDecorator } = useContext(FormCtx);
- return (
-
-
- {getFieldDecorator("job_position", {
- rules: [{ required: true, message: "请选择期望职位" }],
- })()}
-
-
- {getFieldDecorator("city", {
- rules: [{ required: true, message: "请选择期望工作城市" }],
- })()}
-
-
- {getFieldDecorator("salary", {
- rules: [{ required: true, message: "请选择期望薪资" }],
- })(
-
- )}
-
-
- {getFieldDecorator("job_category", {
- rules: [{ required: true, message: "请选择求职类型" }],
- })(
-
- {job_category.map((j) => (
-
- {j}
-
- ))}
-
- )}
-
-
- );
-};
diff --git a/src/modules/recruitment/resumeForm/widget/MothPicker.js b/src/modules/recruitment/resumeForm/widget/MothPicker.js
deleted file mode 100644
index d87144e4..00000000
--- a/src/modules/recruitment/resumeForm/widget/MothPicker.js
+++ /dev/null
@@ -1,16 +0,0 @@
-import React from "react";
-import { DatePicker } from "antd";
-import styled from "styled-components";
-
-const Box = styled.div`
- position: relative;
- z-index: 1;
-`;
-
-export default ({ ...props }) => {
- return (
-
-
-
- );
-};
diff --git a/src/modules/recruitment/resumeForm/widget/ResumesUploader.js b/src/modules/recruitment/resumeForm/widget/ResumesUploader.js
deleted file mode 100644
index 44124a6a..00000000
--- a/src/modules/recruitment/resumeForm/widget/ResumesUploader.js
+++ /dev/null
@@ -1,82 +0,0 @@
-import React, { useCallback, useState } from "react";
-import { Upload, Row, message } from "antd";
-import styled from "styled-components";
-import { UploadButton } from "./Button";
-import { getUploadActionUrl } from "educoder";
-
-const Info = styled.div`
- font-size: 14px;
- font-family: MicrosoftYaHei;
- color: rgba(231, 114, 52, 1);
- margin-top: 10px;
-`;
-
-const verifyFile = (f, fLst) => {
- if (fLst.length === 1 && fLst[0].status === "uploading") {
- message.error("请等待上传完成");
- return false;
- }
- const isProperSize = f.size / (2 ** 20 * 10);
- if (!isProperSize) {
- message.error("简历超过10MB");
- return false;
- }
- return true;
-};
-export default ({
- attachment_name,
- attachment_url,
- attachment_id,
- onChange,
-}) => {
- const [fileLst, setFlieLst] = useState(() => {
- if (attachment_name) {
- return [
- {
- uid: "-1",
- status: "done",
- name: attachment_name,
- url: attachment_url,
- },
- ];
- }
- return [];
- });
- const handleChange = useCallback(async ({ file }) => {
- if (file.status === "removed") {
- setFlieLst([]);
- const id = file.response ? file.response.id : attachment_id;
- //axios.delete(`/attachments/${id}.json`);
- onChange("");
- } else if (file.size > 2 ** 20 * 10) {
- setFlieLst([]);
- } else {
- setFlieLst([file]);
- if (file.status === "done") {
- onChange(file.response.id);
- }
- }
- }, []);
- return (
-
-
-
-
-
- {fileLst.length === 1 ? "重新上传" : "上传"}
-
-
- 提示:不超过10MB,扩展名为pdf、doc、docx、ppt、pptx、png、jpg、jpeg
-
-
-
-
-
- );
-};
diff --git a/src/modules/recruitment/resumeForm/widget/WorkItem.js b/src/modules/recruitment/resumeForm/widget/WorkItem.js
deleted file mode 100644
index 541b0ad6..00000000
--- a/src/modules/recruitment/resumeForm/widget/WorkItem.js
+++ /dev/null
@@ -1,72 +0,0 @@
-import React, { useContext, useCallback } from "react";
-import { FormCtx } from "../Form";
-import { Row, Col, Form, Input, Icon } from "antd";
-import MonthPicker from "./MothPicker";
-
-export default ({ nameKey, onDelete }) => {
- const { getFieldDecorator, getFieldValue } = useContext(FormCtx);
- const greatValidater = useCallback((r, v, cb) => {
- if (v >= getFieldValue(`experience[${nameKey}].begin_on`)) {
- cb();
- } else {
- cb("时间范围不正确");
- }
- }, []);
- return (
-
-
-
-
- {getFieldDecorator(`experience[${nameKey}].begin_on`, {
- rules: [{ required: true, message: "请选择开始日期" }],
- })()}
-
-
-
-
- {getFieldDecorator(`experience[${nameKey}].end_on`, {
- rules: [
- { required: true, message: "请选择结束日期" },
- { validator: greatValidater },
- ],
- validateFirst: true,
- })()}
-
-
-
- {onDelete ? (
-
- ) : null}
-
-
-
- {getFieldDecorator(`experience[${nameKey}].company`, {
- rules: [
- { max: 60, message: "超过60字符" },
- { required: true, message: "请输入公司名称" },
- { whitespace: true, message: "不能全空" },
- ],
- validateFirst: true,
- })()}
-
-
- {getFieldDecorator(`experience[${nameKey}].desc`, {
- rules: [
- { max: 5000, message: "超过5000字符" },
- { required: true, message: "请输入工作描述" },
- ],
- validateFirst: true,
- })(
-
- )}
-
-
- );
-};
diff --git a/src/modules/recruitment/routePage/AddJobPage.js b/src/modules/recruitment/routePage/AddJobPage.js
deleted file mode 100644
index 84209889..00000000
--- a/src/modules/recruitment/routePage/AddJobPage.js
+++ /dev/null
@@ -1,52 +0,0 @@
-import React, { useCallback } from "react";
-import FormPage from "../jobForm/FormPage";
-import { submitJobInfo } from "../data/submitData";
-import { useLoaded } from "../util/hooks";
-import { getProfileLoc } from "../data/getProfileLoc";
-import Loading from "../util/Loading";
-import styled from "styled-components";
-import { FullScreen } from "../util/Layout";
-import { notification } from "antd";
-
-const Backgroud = styled(FullScreen)`
- background: rgba(245, 246, 249, 1);
-`;
-
-export default ({ history, user }) => {
- console.log(user);
- const { isLoaded, data: city } = useLoaded(getProfileLoc, [user]);
- const submit = useCallback((v) => {
- const f = async () => {
- await submitJobInfo(v);
- notification.open({
- message: "成功",
- description: "提交职位成功,请耐心等待审核",
- });
- const wait = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
- await wait(1000);
- history.push("/recruitment?tab=1&jobstate=drafted");
- };
- f();
- }, []);
- const data = {
- education: "学历不限",
- work_year: "经验不限",
- city,
- };
- if (!isLoaded) {
- return (
-
-
-
- );
- }
- return (
-
{
- history.goBack();
- }}
- >
- );
-};
diff --git a/src/modules/recruitment/routePage/AddResumePage.js b/src/modules/recruitment/routePage/AddResumePage.js
deleted file mode 100644
index 58c2b9e0..00000000
--- a/src/modules/recruitment/routePage/AddResumePage.js
+++ /dev/null
@@ -1,63 +0,0 @@
-import React, { useRef, useCallback } from "react";
-import styled from "styled-components";
-import Form from "../resumeForm/NormalForm";
-import { CenterBtnGrp, SaveBtn, CancelBtn } from "../util/GeneralButton";
-import { sumitResume } from "../data/sumitResume";
-import Nav from "../util/Nav";
-
-const Background = styled.div`
- width: 100%;
- background: rgba(245, 246, 249, 1);
- min-height: 100vh;
- padding: 20px;
- padding-bottom: 70px;
-`;
-const Content = styled.div`
- width: 1200px;
- padding: 40px;
- background: rgba(255, 255, 255, 1);
- border-radius: 2px;
- margin: 0 auto;
- margin-bottom: 40px;
-`;
-const Margin = styled.div`
- height: 80px;
-`;
-
-export default ({ history }) => {
- console.log(history[0]);
- const validator = useRef(null);
- const submit = useCallback((v) => {
- const f = async () => {
- await sumitResume(v);
- history.goBack();
- };
- f();
- }, []);
- const onOk = useCallback(() => {
- validator.current.verify((e, v) => {
- if (e) {
- return;
- }
- submit(v);
- });
- }, []);
- return (
-
-
-
-
-
-
- {
- history.push("/recruitment");
- }}
- />
-
-
-
-
-
- );
-};
diff --git a/src/modules/recruitment/routePage/ApplierPage.js b/src/modules/recruitment/routePage/ApplierPage.js
deleted file mode 100644
index 99d18805..00000000
--- a/src/modules/recruitment/routePage/ApplierPage.js
+++ /dev/null
@@ -1,63 +0,0 @@
-import React, { useState, useCallback } from "react";
-import styled from "styled-components";
-import { Pagination } from "antd";
-import Header from "../jobAppliers/Header";
-import List from "../jobAppliers/List";
-import Loading from "../util/Loading";
-import { getAppliers } from "../data/getAppliers";
-import Nav from "../util/Nav";
-import { useLoaded } from "../util/hooks";
-import { Link } from "react-router-dom";
-
-const GreyBg = styled.div`
- width: 100%;
- background: rgba(245, 246, 249, 1);
- min-height: 100vh;
-`;
-const Paper = styled.div`
- width: 1200px;
- padding: 30px;
- background: rgba(255, 255, 255, 1);
- border-radius: 2px;
- margin: 0 auto;
- min-height:500px;
-`;
-
-export default ({ jobId, history }) => {
- console.log("render");
- const [page, setPage] = useState(1);
- const { isLoaded, data } = useLoaded(getAppliers, [jobId, page, history]);
- const back = useCallback(() => {
- history.push("/recruitment?tab=1&jobstate=published");
- }, []);
- let appliers, count;
- if (data) {
- [appliers, count] = data;
- }
- return (
-
-
-
-
- );
-};
diff --git a/src/modules/recruitment/routePage/DetailAddResumePage.js b/src/modules/recruitment/routePage/DetailAddResumePage.js
deleted file mode 100644
index 680be65e..00000000
--- a/src/modules/recruitment/routePage/DetailAddResumePage.js
+++ /dev/null
@@ -1,74 +0,0 @@
-import React, { useRef, useCallback } from "react";
-import styled from "styled-components";
-import Form from "../resumeForm/NormalForm";
-import CompanyHeader from "../resumeForm/CompanyHeader";
-import { CenterBtnGrp, SaveBtn, CancelBtn } from "../util/GeneralButton";
-import { sumitResume } from "../data/sumitResume";
-import { useLoaded } from "../util/hooks";
-import { getJobInfo } from "../data/getJobInfo";
-import Nav from "../util/Nav";
-
-const Background = styled.div`
- width: 100%;
- background: rgba(245, 246, 249, 1);
- min-height: 100vh;
- padding: 20px;
- padding-bottom: 70px;
-`;
-const Content = styled.div`
- width: 1200px;
- padding: 40px;
- background: rgba(255, 255, 255, 1);
- border-radius: 2px;
- margin: 0 auto;
- margin-bottom: 40px;
-`;
-const Margin = styled.div`
- height: 80px;
-`;
-
-export default ({ history, jobId }) => {
- const { isLoaded, data } = useLoaded(getJobInfo, [jobId]);
- const validator = useRef(null);
- const submit = useCallback((v) => {
- const f = async () => {
- await sumitResume(v);
- history.goBack();
- };
- f();
- }, []);
- const onOk = useCallback(() => {
- validator.current.verify((e, v) => {
- if (e) {
- return;
- }
- submit(v);
- });
- }, []);
- const header = isLoaded ? (
-
- ) : null;
- return (
-
-
- {header}
-
-
-
-
- {
- history.goBack();
- }}
- />
-
-
-
-
-
- );
-};
diff --git a/src/modules/recruitment/routePage/EditJobPage.js b/src/modules/recruitment/routePage/EditJobPage.js
deleted file mode 100644
index af1cc03e..00000000
--- a/src/modules/recruitment/routePage/EditJobPage.js
+++ /dev/null
@@ -1,48 +0,0 @@
-import React, { useCallback } from "react";
-import styled from "styled-components";
-import FormPage from "../jobForm/FormPage";
-import Loading from "../util/Loading";
-import { FullScreen } from "../util/Layout";
-import { updateJobInfo } from "../data/submitData";
-import { getJobPlain } from "../data/getJobInfo";
-import { useLoaded } from "../util/hooks";
-import { notification } from "antd";
-
-const Backgroud = styled(FullScreen)`
- background: rgba(245, 246, 249, 1);
-`;
-
-export default ({ jobId, history }) => {
- const submit = useCallback((v) => {
- const f = async () => {
- const changed = (await updateJobInfo(jobId, v)).changed;
- if (changed) {
- notification.open({
- message: "成功",
- description: "编辑职位成功,请耐心等待审核",
- });
- const wait = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
- await wait(1000);
- }
- history.push("/recruitment?tab=1&jobstate=drafted");
- };
- f();
- }, []);
- const { isLoaded, data } = useLoaded(getJobPlain, [jobId]);
- if (!isLoaded) {
- return (
-
-
-
- );
- }
- return (
-
{
- history.push("/recruitment?tab=1&jobstate=drafted");
- }}
- >
- );
-};
diff --git a/src/modules/recruitment/routePage/EditResumePage.js b/src/modules/recruitment/routePage/EditResumePage.js
deleted file mode 100644
index c26b2682..00000000
--- a/src/modules/recruitment/routePage/EditResumePage.js
+++ /dev/null
@@ -1,82 +0,0 @@
-import React, { useCallback, useRef, useEffect } from "react";
-import styled from "styled-components";
-import Loading from "../util/Loading";
-import { FullScreen } from "../util/Layout";
-import Form from "../resumeForm/NormalForm";
-import { CenterBtnGrp, SaveBtn, CancelBtn } from "../util/GeneralButton";
-import { useLoaded } from "../util/hooks";
-import { updateResume } from "../data/updateResume";
-import { getResume } from "../data/getResume";
-import Nav from "../util/Nav";
-
-const Backgroud = styled(FullScreen)`
- background: rgba(245, 246, 249, 1);
-`;
-
-const Background = styled.div`
- width: 100%;
- background: rgba(245, 246, 249, 1);
- min-height: 100vh;
- padding: 20px;
- padding-bottom: 70px;
-`;
-const Content = styled.div`
- width: 1200px;
- padding: 40px;
- background: rgba(255, 255, 255, 1);
- border-radius: 2px;
- margin: 0 auto;
- margin-bottom: 40px;
-`;
-const Margin = styled.div`
- height: 80px;
-`;
-
-export default ({ history }) => {
- const submit = useCallback((v) => {
- const f = async () => {
- await updateResume(v);
- history.goBack();
- };
- f();
- }, []);
- const ref = useRef(null);
- const onOk = useCallback(() => {
- ref.current.verify((e, v) => {
- if (e) {
- return;
- }
- submit(v);
- });
- }, []);
- const { isLoaded, data } = useLoaded(getResume, []);
- useEffect(() => {
- if (ref.current) {
- ref.current.set(data.education, data.experience);
- }
- }, [data]);
-
- if (!isLoaded) {
- return (
-
-
-
- );
- }
- return (
-
-
-
-
-
- {
- history.push("/recruitment/resumedetails");
- }}
- />
-
-
-
-
- );
-};
diff --git a/src/modules/recruitment/routePage/JobDetailPage.js b/src/modules/recruitment/routePage/JobDetailPage.js
deleted file mode 100644
index 58b43f8f..00000000
--- a/src/modules/recruitment/routePage/JobDetailPage.js
+++ /dev/null
@@ -1,107 +0,0 @@
-import React, { useCallback } from "react";
-import styled from "styled-components";
-import Header from "../jobDetail/Header";
-import JobInfo from "../jobDetail/JobInfo";
-import Address from "../jobDetail/Address";
-import Comp from "../jobDetail/Comp";
-import Loading from "../util/Loading";
-import Nav from "../util/Nav";
-import { FullScreen } from "../util/Layout";
-import { applyProfile } from "../data/submitData";
-import { getJobInfo } from "../data/getJobInfo";
-import { ifHaveResume } from "../data/ifHaveResume";
-import { notification } from "antd";
-import { useLoaded, useToggle } from "../util/hooks";
-import ConfirmModal from "../jobDetail/ConfirmModal";
-import { Link } from "react-router-dom";
-
-const BuleBgHeader = styled.div`
- width: 100%;
- background: rgba(245, 250, 255, 1);
-`;
-const Content = styled.div`
- width: 1200px;
- margin: 0 auto;
-`;
-const WBg = styled.div`
- width: 100%;
- background: white;
- min-height: 1000px;
-`;
-
-export default ({
- jobId,
- checkIfLogin,
- history,
- showLoginDialog,
- showProfileCompleteDialog,
- user,
-}) => {
- const { isLoaded, data } = useLoaded(getJobInfo, [jobId]);
- const [vis, setVis] = useToggle();
- const apply = useCallback(() => {
- if (checkIfLogin() === false) {
- showLoginDialog();
- return;
- } else {
- const f = async () => {
- if (user && !user.profile_completed) {
- showProfileCompleteDialog();
- } else if (await ifHaveResume()) {
- const resp = await applyProfile(jobId);
- if (resp.status === 0) {
- notification.open({
- message: "成功",
- description: "投递简历成功",
- });
- } else {
- notification.open({
- message: "失败",
- description: resp.message,
- });
- }
- } else {
- setVis();
- }
- };
- f();
- }
- }, []);
- const back = useCallback(() => {
- history.push('/recruitment');
- }, []);
- if (!isLoaded) {
- return (
-
-
-
- );
- }
- return (
-
-
-
-
-
-
-
-
- {
- setVis();
- history.push("/recruitment");
- }}
- history={history}
- jobId={jobId}
- />
-
- );
-};
diff --git a/src/modules/recruitment/tablist/RecruitList.js b/src/modules/recruitment/tablist/RecruitList.js
deleted file mode 100644
index 8e214af0..00000000
--- a/src/modules/recruitment/tablist/RecruitList.js
+++ /dev/null
@@ -1,400 +0,0 @@
-import React, { Component } from "react";
-import { Link } from "react-router-dom";
-import { getImageUrl } from "educoder";
-import Tabrecru from "./component/Tabrecru";
-import Tabhead from "./component/Tabhead";
-import TabheadSekinds from "./component/TabheadSekinds";
-import Tablereacts from "./component/Tablereacts";
-import "../recrulistcss/recrulistcss.scss";
-import { Tooltip, Button, Modal, message } from "antd";
-import axios from "axios";
-import { ThemeConsumer } from "styled-components";
-import columnsConfig from "./tableColumnsConfig";
-import qs from "qs";
-import InfoModal from "./component/InfoModal";
-
-const stateCof = {
- off: "下线",
- online: "上线",
- del: "删除",
-};
-class RecruitList extends Component {
- constructor(props) {
- super(props);
- const { tab, jobstate } = qs.parse(this.props.location.search.substr(1));
- this.state = {
- qukey: tab || "0",
- //全部表格
- dataSource: [], //数据
- page: 1, //起始页 改变页
- limit: 10, //总条数
- count: 1, //数组总长度
- loading: true, // 刷新参数
- keywords: "",
- city: "",
- jobState: jobstate || "published",
- modalVisible: false,
- stateCount: {
- published_count: 0,
- rejected_count: 0,
- drafted_count: 0,
- offline_count: 0,
- },
- };
- }
- componentDidMount() {
- // this.fetchJobsData();
- }
- fetchJobsData = () => {
- const { page, limit, qukey, keywords, city, jobState } = this.state;
- const urlcof = {
- "0": "/jobs.json",
- "1": "/users/jobs.json",
- "2": "/users/applyed_jobs.json",
- };
- const url = urlcof[qukey];
- this.setState({ loading: true });
- axios
- .get(url, {
- params: {
- q: keywords,
- per_page: limit,
- page,
- city: city === "全国" ? "" : city,
- state: jobState,
- },
- })
- .then((response) => {
- this.setState({ loading: false });
- if (response.status === 200) {
- const { state_count, data, count } = response.data;
- this.setState({
- dataSource: data,
- count,
- });
- if (state_count) {
- this.setState({ stateCount: state_count });
- }
- }
- })
- .catch((error) => {
- console.log(error);
- });
- };
-
- callbacks = (key) => {
- this.setState(
- {
- qukey: key,
- },
- this.fetchJobsData
- );
- };
- paginationonChange = (pageNumber) => {
- this.setState(
- {
- page: pageNumber,
- },
- this.fetchJobsData
- );
- };
- keywordCallback = (value) => {
- this.setState(
- {
- keywords: value,
- },
- this.fetchJobsData
- );
- };
- cityCallback = (city) => {
- if (!city) {
- this.fetchJobsData();
- message.error("获取定位城市失败!");
- } else {
- this.setState(
- {
- city,
- },
- this.fetchJobsData
- );
- }
- };
- jobStateCallback = (state) => {
- this.setState(
- {
- jobState: state,
- },
- this.fetchJobsData
- );
- };
- handleJobStateChange = (record, state) => {
- this.setState({
- record,
- changeState: state,
- modalVisible: true,
- });
- };
- handleJobStateSubmit = () => {
- const { record, changeState } = this.state;
- const url = `/jobs/${record.id}/change.json`;
- axios
- .put(url, {
- id: record.id,
- change: changeState,
- })
- .then((response) => {
- if (response.status === 200) {
- this.setState({ modalVisible: false });
- this.fetchJobsData();
- }
- })
- .catch((error) => {
- console.log(error);
- });
- };
- render() {
- let {
- qukey,
- dataSource,
- page,
- count,
- loading,
- limit,
- jobState,
- stateCount,
- modalVisible,
- changeState,
- } = this.state;
- let pages = 0;
- let limits = 0;
- let counts = 0;
- let loadings = true;
- pages = page;
- limits = limit;
- counts = count;
- loadings = loading;
-
- const DetailBtn = (record) => (
-
- );
-
- const EditBtn = (record) => (
-
- );
- const OnlineBtn = (record) => (
-
- );
-
- const OfflienBtn = (record) => (
-
- );
-
- const DeleteBtn = (record) => (
-
- );
-
- const defaultOperationProp = {
- title: "操作",
- dataIndex: "operation",
- key: "operation",
- align: "center",
- className: "edu-txt-center font-14",
- };
- const operationConf = {
- "0": {
- ...defaultOperationProp,
- render: (text, record) => DetailBtn(record),
- },
- "1": {
- drafted: {
- ...defaultOperationProp,
- render: (text, record) => (
-
- {EditBtn(record)}
- {DeleteBtn(record)}
-
- ),
- },
- published: {
- ...defaultOperationProp,
- render: (text, record) => (
-
- {EditBtn(record)}
- {OfflienBtn(record)}
-
- ),
- },
- rejected: {
- ...defaultOperationProp,
- render: (text, record) => (
-
- {EditBtn(record)}
- {DeleteBtn(record)}
-
- ),
- },
- offline: {
- ...defaultOperationProp,
- render: (text, record) => (
-
- {EditBtn(record)}
- {OnlineBtn(record)}
- {DeleteBtn(record)}
-
- ),
- },
- },
- "2": {
- ...defaultOperationProp,
- render: (text, record) =>
{DetailBtn(record)}
,
- },
- };
- let columns;
- if (qukey && qukey !== "1") {
- columns = [...columnsConfig[qukey], operationConf[qukey]];
- } else {
- columns = [
- ...columnsConfig[qukey][jobState],
- operationConf[qukey][jobState],
- ];
- }
- return (
-
-
- {this.props.mygetHelmetapi &&
- this.props.mygetHelmetapi.job_banner_url ? (
-
- ) : (
- ""
- )}
- {/*内容区*/}
-
this.callbacks(e)}
- >
-
-
-
-
-
-
-
- {/*表格*/}
-
{
- return { ...item, key: item.id };
- })} //数据
- page={pages} //起始页 改变页
- limit={limits} //总条数
- count={counts} //数组总长度
- loading={loadings} // 刷新参数
- paginationonChange={(e) => this.paginationonChange(e)}
- >
-
-
-
this.setState({ modalVisible: false })}
- content={`确定要${stateCof[changeState]}该职位?`}
- footer={
-
-
-
-
- }
- >
-
- );
- }
-}
-
-export default RecruitList;
diff --git a/src/modules/recruitment/tablist/component/InfoModal.js b/src/modules/recruitment/tablist/component/InfoModal.js
deleted file mode 100644
index d951ae83..00000000
--- a/src/modules/recruitment/tablist/component/InfoModal.js
+++ /dev/null
@@ -1,21 +0,0 @@
-import React, { Component } from "react";
-import { Modal } from "antd";
-
-class InfoModal extends Component {
- render() {
- const { title, visible, onCancel, footer, content } = this.props;
- return (
-
提示}
- onCancel={onCancel}
- footer={footer}
- >
- {content}
-
- );
- }
-}
-
-export default InfoModal;
diff --git a/src/modules/recruitment/tablist/component/Tabhead.js b/src/modules/recruitment/tablist/component/Tabhead.js
deleted file mode 100644
index e5e5e135..00000000
--- a/src/modules/recruitment/tablist/component/Tabhead.js
+++ /dev/null
@@ -1,218 +0,0 @@
-import React, { Component } from "react";
-import "../../recrulistcss/recrulistcss.scss";
-import { Tabs, Input, Modal, Button } from "antd";
-import axios from "axios";
-const Search = Input.Search;
-class Tabhead extends Component {
- constructor(props) {
- super(props);
- this.state = {
- city: "", //modal选择的高亮城市
- locationCity: "", //定位城市
- chosedCity: "", //已选择的城市
- modalVisible: false,
- hotCity: [],
- };
- }
- componentDidMount() {
- const { city, hotCity } = this.state;
- if (!city) {
- this.initUserCity();
- }
- if (!hotCity.length) {
- this.fetcHotCitys();
- }
- }
- fetcHotCitys = () => {
- const url = `/job_data/hot_city`;
- axios
- .get(url)
- .then((response) => {
- if (response.status === 200) {
- this.setState({
- hotCity: response.data.data,
- });
- }
- })
- .catch((error) => {
- console.log(error);
- });
- };
- initUserCity = () => {
- //动态script获取用户城市 腾讯地图API https://lbs.qq.com/webApi/component/componentGuide/componentGeolocation
- let script = document.createElement("script");
- const url = `https://apis.map.qq.com/tools/geolocation/min?key=RPZBZ-CJE3D-YN24W-POI53-IAHPE-5HBB4&referer=educoder`;
- script.id = url;
- script.src = url;
- script.onload = script.onreadystatechange = () => {
- if (script.ready) {
- return false;
- }
- if (
- !script.readyState || //这是FF的判断语句,因为ff下没有readyState这个值,IE的readyState肯定有值
- script.readyState === "loaded" ||
- script.readyState === "complete" // 这是IE的判断语句
- ) {
- script.ready = true;
- const geolocation = new window.qq.maps.Geolocation();
- geolocation.getIpLocation(
- (position) => {
- const city = position.city.replace("市", "");
- this.props.cityCallback(city);
- this.setState({
- city,
- locationCity: city,
- chosedCity: city,
- });
- },
- (err) =>
- this.setState({
- city: "无法获取当前位置",
- })
- );
- }
- };
- document.body.appendChild(script);
- };
- setdatafunsval = (e) => {
- this.setState({
- keyword: e.target.value,
- });
- console.log("e.target.value" + e.target.value);
- };
-
- setdatafuns = (value) => {
- this.setState({
- keyword: value,
- });
- this.props.keywordCallback(value);
- console.log("value" + value);
- };
- handleCityChange = (city) => {
- this.setState({ city });
- };
- render() {
- const {
- city,
- locationCity,
- chosedCity,
- hotCity,
- modalVisible,
- } = this.state;
- return (
-
-
-
-
-
{chosedCity}
-
this.setState({ modalVisible: true })}
- >
- [切换城市]
-
-
-
- this.setdatafunsval(e)}
- onSearch={(value) => this.setdatafuns(value)}
- />
-
-
-
选择地区}
- onCancel={() => this.setState({ modalVisible: false })}
- footer={
-
-
-
-
- }
- >
-
-
- 当前定位城市:
-
-
-
-
-
-
-
-
- 热门城市:
-
-
- {hotCity.map((item) => (
-
-
-
- ))}
-
-
-
-
- );
- }
-}
-
-export default Tabhead;
diff --git a/src/modules/recruitment/tablist/component/TabheadSekinds.js b/src/modules/recruitment/tablist/component/TabheadSekinds.js
deleted file mode 100644
index 5fb97e80..00000000
--- a/src/modules/recruitment/tablist/component/TabheadSekinds.js
+++ /dev/null
@@ -1,106 +0,0 @@
-import React, { Component } from "react";
-import "../../recrulistcss/recrulistcss.scss";
-import { Tabs, Input } from "antd";
-const Search = Input.Search;
-class TabheadSekinds extends Component {
- constructor(props) {
- super(props);
- this.state = {
- Choice: props.jobState || "published",
- };
- }
-
- setdatafunsval = (e) => {
- this.setState({
- keyword: e.target.value,
- });
- console.log("e.target.value" + e.target.value);
- };
-
- setdatafuns = (value) => {
- this.setState({
- keyword: value,
- });
- console.log("value" + value);
- this.props.keywordCallback(value);
- };
-
- setChoice = (i) => {
- this.setState({
- Choice: i,
- });
- this.props.jobStateCallback(i);
- };
-
- render() {
- let { Choice } = this.state;
- const { stateCount } = this.props;
- const {
- published_count,
- rejected_count,
- drafted_count,
- offline_count,
- } = stateCount;
- return (
-
-
-
-
this.setChoice("published")}
- >
- {`在线中的职位 ${published_count}`}
-
-
this.setChoice("offline")}
- >
- {`已下线的职位 ${offline_count}`}
-
-
this.setChoice("drafted")}
- >
- {`审核中的职位 ${drafted_count}`}
-
-
this.setChoice("rejected")}
- >
- {`未通过的职位 ${rejected_count}`}
-
-
-
- this.setdatafunsval(e)}
- onSearch={(value) => this.setdatafuns(value)}
- />
-
-
-
- );
- }
-}
-
-export default TabheadSekinds;
diff --git a/src/modules/recruitment/tablist/component/Tablereacts.js b/src/modules/recruitment/tablist/component/Tablereacts.js
deleted file mode 100644
index b0cf2854..00000000
--- a/src/modules/recruitment/tablist/component/Tablereacts.js
+++ /dev/null
@@ -1,67 +0,0 @@
-import React, { Component } from "react";
-import "../../recrulistcss/recrulistcss.scss";
-import LoadingSpin from "../../../../common/LoadingSpin";
-import NoneDatas from "../../../courses/signin/component/NoneDatas";
-
-import { Table, Pagination } from "antd";
-class Tablereacts extends Component {
- constructor(props) {
- super(props);
- this.state = {
- loading: false,
- };
- }
-
- render() {
- let {
- columns, //表格数组
- dataSource, //数据
- page, //起始页 改变页
- limit, //总条数
- count, //数组总长度
- loading, // 刷新参数
- } = this.props;
-
- return (
-
- {loading === true ? (
-
-
-
- ) : dataSource && dataSource.length === 0 ? (
-
-
-
- ) : (
-
- )}
-
-
- {dataSource && dataSource.length > 0 ? (
-
this.props.paginationonChange(e)}
- pageSize={limit}
- total={count}
- style={{ marginTop: 30, marginBottom: 20 }}
- >
- ) : (
- ""
- )}
-
-
- );
- }
-}
-
-export default Tablereacts;
diff --git a/src/modules/recruitment/tablist/component/Tabrecru.js b/src/modules/recruitment/tablist/component/Tabrecru.js
deleted file mode 100644
index f8d63dd1..00000000
--- a/src/modules/recruitment/tablist/component/Tabrecru.js
+++ /dev/null
@@ -1,199 +0,0 @@
-import React, { Component, Fragment } from "react";
-import { Link } from "react-router-dom";
-import "../../recrulistcss/recrulistcss.scss";
-import { Tabs } from "antd";
-import axios from "axios";
-import qs from "qs";
-import Certifiedprofessional from "../../../modals/Certifiedprofessional";
-const { TabPane } = Tabs;
-class Tabrecru extends Component {
- constructor(props) {
- super(props);
- const { tab } = qs.parse(this.props.location.search.substr(1));
- this.state = {
- defaultActiveKeys: tab || 0,
- certifiedprofessionalModalVisible: false,
- };
- }
- componentDidMount() {
- this.fetchResumeDetail();
- }
- callback = (key) => {
- this.setState({
- defaultActiveKeys: key + "",
- });
- this.props.callbacks(key + "");
- };
- fetchResumeDetail = () => {
- const url = `/users/resume.json`;
- axios
- .get(url)
- .then((response) => {
- if (response.data.status !== -2 && response.data) {
- this.setState({ hasResume: true });
- }
- })
- .catch((error) => {
- console.log(error);
- });
- };
- handleCertifiedprofessionalModalVisible = (flag) => {
- this.setState({ certifiedprofessionalModalVisible: flag });
- };
- render() {
- let { defaultActiveKeys } = this.state;
- let tabs = defaultActiveKeys + "";
- //发布职位权限
- let authJobs = false;
- let user = {
- admin: false,
- business: false,
- is_teacher: false,
- professional_certification: false,
- identity: "", //专业人士 identity=professional
- };
-
- const {
- admin,
- business,
- is_teacher,
- professional_certification,
- identity,
- } = this.props.user || user;
-
- authJobs = admin || business || is_teacher || identity === "professional";
-
- const GoResumeButton = () => {
- return (
-
- );
- };
- const AddJobButton = () => {
- return (
-
- );
- };
- return (
-
- {tabs === "0" ? (
-
- ) : (
-
- )}
-
-
-
- {authJobs ? : null}
-
-
-
- {tabs === "0" ? (
- authJobs ? (
-
-
-
-
- ) : (
-
- )
- ) : tabs === "1" ? (
-
- ) : (
-
- )}
-
-
-
{
- this.handleCertifiedprofessionalModalVisible(false);
- }}
- />
-
- );
- }
-}
-
-export default Tabrecru;
diff --git a/src/modules/recruitment/tablist/tableColumnsConfig.js b/src/modules/recruitment/tablist/tableColumnsConfig.js
deleted file mode 100644
index e1cd6278..00000000
--- a/src/modules/recruitment/tablist/tableColumnsConfig.js
+++ /dev/null
@@ -1,406 +0,0 @@
-import React from "react";
-import { Tooltip, Button, Modal } from "antd";
-import { Link } from "react-router-dom";
-
-const oncell = () => {
- return {
- style: {
- maxWidth: 150,
- overflow: "hidden",
- whiteSpace: "nowrap",
- textOverflow: "ellipsis",
- },
- };
-};
-
-export const columnsConfig = {
- "0": [
- {
- title: "职位名称",
- dataIndex: "name",
- key: "name",
- align: "center",
- className: "edu-txt-center font-14",
- onCell: oncell,
- render: (text, record) => (
-
- {text}
-
- ),
- },
- {
- title: "发布者单位",
- dataIndex: "department",
- key: "department",
- align: "center",
- className: "edu-txt-center font-14",
- onCell: oncell,
- render: (text, record) => (
-
- {text}
-
- ),
- },
- {
- title: "工作地点",
- dataIndex: "city",
- key: "city",
- align: "center",
- className: "edu-txt-center font-14",
- onCell: oncell,
- render: (text, record) => (
-
- {text}
-
- ),
- },
- {
- title: "薪资范围",
- dataIndex: "salary",
- key: "salary",
- align: "center",
- className: "edu-txt-center font-14",
- onCell: oncell,
- render: (text, record) => (
-
- {text}
-
- ),
- },
- {
- title: "发布时间",
- dataIndex: "updated_at",
- key: "updated_at",
- align: "center",
- className: "edu-txt-center font-14",
- onCell: oncell,
- render: (text, record) => (
-
- {text}
-
- ),
- },
- ],
- "1": {
- drafted: [
- {
- title: "职位名称",
- dataIndex: "name",
- key: "name",
- align: "center",
- className: "edu-txt-center font-14",
- onCell: oncell,
- render: (text, record) => (
-
- {text}
-
- ),
- },
- {
- title: "发布者",
- dataIndex: "user_name",
- key: "user_name",
- align: "center",
- className: "edu-txt-center font-14",
- onCell: oncell,
- render: (text, record) => (
-
- {text}
-
- ),
- },
- {
- title: "创建时间",
- dataIndex: "created_at",
- key: "created_at",
- align: "center",
- className: "edu-txt-center font-14",
- onCell: oncell,
- render: (text, record) => (
-
- {text}
-
- ),
- },
- ],
- published: [
- {
- title: "职位名称",
- dataIndex: "name",
- key: "name",
- align: "center",
- className: "edu-txt-center font-14",
- onCell: oncell,
- render: (text, record) => (
-
- {text}
-
- ),
- },
- {
- title: "发布者",
- dataIndex: "user_name",
- key: "user_name",
- align: "center",
- className: "edu-txt-center font-14",
- onCell: oncell,
- render: (text, record) => (
-
- {text}
-
- ),
- },
- {
- title: "更新时间",
- dataIndex: "updated_at",
- key: "updated_at",
- align: "center",
- className: "edu-txt-center font-14",
- onCell: oncell,
- render: (text, record) => (
-
- {text}
-
- ),
- },
- {
- title: "投递人数",
- dataIndex: "apply_count",
- key: "apply_count",
- align: "center",
- className: "edu-txt-center font-14",
- onCell: oncell,
- render: (text, record) => (
-
-
- {text}
-
-
- ),
- },
- ],
- rejected: [
- {
- title: "职位名称",
- dataIndex: "name",
- key: "name",
- align: "center",
- className: "edu-txt-center font-14",
- onCell: oncell,
- render: (text, record) => (
-
- {text}
-
- ),
- },
- {
- title: "发布者",
- dataIndex: "user_name",
- key: "user_name",
- align: "center",
- className: "edu-txt-center font-14",
- onCell: oncell,
- render: (text, record) => (
-
- {text}
-
- ),
- },
- {
- title: "创建时间",
- dataIndex: "created_at",
- key: "created_at",
- align: "center",
- className: "edu-txt-center font-14",
- onCell: oncell,
- render: (text, record) => (
-
- {text}
-
- ),
- },
- {
- title: "未通过原因",
- dataIndex: "reject_reason",
- key: "reject_reason",
- align: "center",
- className: "edu-txt-center font-14",
- onCell: oncell,
- render: (text, record) => (
-
- {text}
-
- ),
- },
- ],
- offline: [
- {
- title: "职位名称",
- dataIndex: "name",
- key: "name",
- align: "center",
- className: "edu-txt-center font-14",
- onCell: oncell,
- render: (text, record) => (
-
- {text}
-
- ),
- },
- {
- title: "发布者",
- dataIndex: "user_name",
- key: "user_name",
- align: "center",
- className: "edu-txt-center font-14",
- onCell: oncell,
- render: (text, record) => (
-
- {text}
-
- ),
- },
- {
- title: "创建时间",
- dataIndex: "created_at",
- key: "created_at",
- align: "center",
- className: "edu-txt-center font-14",
- onCell: oncell,
- render: (text, record) => (
-
- {text}
-
- ),
- },
- {
- title: "下线时间",
- dataIndex: "updated_at",
- key: "updated_at",
- align: "center",
- className: "edu-txt-center font-14",
- onCell: oncell,
- render: (text, record) => (
-
- {text}
-
- ),
- },
- {
- title: "投递人数",
- dataIndex: "apply_count",
- key: "apply_count",
- align: "center",
- className: "edu-txt-center font-14",
- onCell: oncell,
- render: (text, record) => (
-
-
- {text}
-
-
- ),
- },
- ],
- },
- "2": [
- {
- title: "职位名称",
- dataIndex: "name",
- key: "name",
- align: "center",
- className: "edu-txt-center font-14",
- onCell: oncell,
- render: (text, record) => (
-
- {text}
-
- ),
- },
- {
- title: "发布者单位",
- dataIndex: "company",
- key: "company",
- align: "center",
- className: "edu-txt-center font-14",
- onCell: oncell,
- render: (text, record) => (
-
- {text}
-
- ),
- },
- {
- title: "工作地点",
- dataIndex: "city",
- key: "city",
- align: "center",
- className: "edu-txt-center font-14",
- onCell: oncell,
- render: (text, record) => (
-
- {text}
-
- ),
- },
- {
- title: "薪资范围",
- dataIndex: "salary",
- key: "salary",
- align: "center",
- className: "edu-txt-center font-14",
- onCell: oncell,
- render: (text, record) => (
-
- {text}
-
- ),
- },
- {
- title: "发布时间",
- dataIndex: "publish_at",
- key: "publish_at",
- align: "center",
- className: "edu-txt-center font-14",
- onCell: oncell,
- render: (text, record) => (
-
- {text}
-
- ),
- },
- {
- title: "投递时间",
- dataIndex: "apply_at",
- key: "apply_at",
- align: "center",
- className: "edu-txt-center font-14",
- onCell: oncell,
- render: (text, record) => (
-
- {text}
-
- ),
- },
- {
- title: "是否看简历",
- dataIndex: "is_viewd",
- key: "is_viewd",
- align: "center",
- className: "edu-txt-center font-14",
- onCell: oncell,
- render: (text, record) => (
-
- {text ? "是" : "否"}
-
- ),
- },
- ],
-};
-export default columnsConfig;
diff --git a/src/modules/recruitment/util/Button.js b/src/modules/recruitment/util/Button.js
deleted file mode 100644
index 5c43fdb3..00000000
--- a/src/modules/recruitment/util/Button.js
+++ /dev/null
@@ -1,14 +0,0 @@
-import styled from 'styled-components';
-import { pointerMixin, alignTextMixin } from './cssMixin';
-
-export const TextButton = styled.div`
- color:${p => p.color};
- font-size:14px;
- font-family:MicrosoftYaHei;
- ${pointerMixin}
-`;
-
-export const BtnBase = styled.div`
- ${alignTextMixin}
- ${pointerMixin}
-`;
\ No newline at end of file
diff --git a/src/modules/recruitment/util/GeneralButton.js b/src/modules/recruitment/util/GeneralButton.js
deleted file mode 100644
index 6fda2e32..00000000
--- a/src/modules/recruitment/util/GeneralButton.js
+++ /dev/null
@@ -1,53 +0,0 @@
-import { BtnBase } from "./Button";
-import styled from 'styled-components';
-import React from "react";
-
-const Button = styled(BtnBase)`
- width:90px;
- border-radius:5px;
- font-size:16px;
- font-family:MicrosoftYaHei;
- color:rgba(255,255,255,1);
- margin-left:20px;
- margin-right:20px;
-`;
-const Ok = styled(Button)`
- background:rgba(76,172,255,1);
-`;
-export const OkBtn = (props) =>
确定;
-const Cancel = styled(Button)`
- background:rgba(204,204,204,1);
-`;
-export const SaveBtn = (props) =>
保存;
-
-export const CancelBtn = (props) =>
取消;
-export const CenterBtnGrp = styled.div`
- margin:10px auto;
- display:flex;
- justify-content: center;
-`;
-
-const OutlineBtn = styled.div`
- min-width: 150px;
- height: 46px;
- border-radius: 28px;
- border:1px solid ${p => p.isSelected ? "rgba(76,172,255,1)" : "rgba(221,221,221,1)"};
- color:${p => p.isSelected ? "rgba(76,172,255,1)" : "rgba(51,51,51,1)"};
- font-size: 14px;
- font-family: MicrosoftYaHei;
- margin-top: 20px;
- margin-left: 47.5px;
- &:hover {
- cursor: pointer;
- }
- display: flex;
- justify-content: center;
- align-items: center;
- text-align:center;
- padding-left:15px;
- padding-right:15px;
-`;
-
-export const JobBtn = ({ children, ...props }) => {
- return
{children};
-}
diff --git a/src/modules/recruitment/util/Layout.js b/src/modules/recruitment/util/Layout.js
deleted file mode 100644
index d6165702..00000000
--- a/src/modules/recruitment/util/Layout.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import styled from "styled-components";
-import React from "react";
-
-export const FullScreen = styled.div`
- min-width: 100vw;
- min-height: 100vh;
-`;
diff --git a/src/modules/recruitment/util/Loading.js b/src/modules/recruitment/util/Loading.js
deleted file mode 100644
index 4a233f35..00000000
--- a/src/modules/recruitment/util/Loading.js
+++ /dev/null
@@ -1,12 +0,0 @@
-import React from 'react';
-import { Spin } from 'antd';
-import styled from 'styled-components';
-import { allCenterMixin } from './cssMixin';
-
-const Mid = styled.div`
- width:100%;
- height:100%;
- ${allCenterMixin}
-`;
-
-export default () =>
;
diff --git a/src/modules/recruitment/util/Modal.js b/src/modules/recruitment/util/Modal.js
deleted file mode 100644
index 7841152c..00000000
--- a/src/modules/recruitment/util/Modal.js
+++ /dev/null
@@ -1,22 +0,0 @@
-import React from "react";
-import { Modal } from 'antd';
-import styled from 'styled-components';
-
-const Box = styled.div`
- width:clac(100%+80px);
- margin:-24px -24px;
-`;
-const Title = styled.div`
- font-size:18px;
- width:100%;
- font-family:MicrosoftYaHeiSemibold;
- color:rgba(51,51,51,1);
- text-align:center;
-`;
-
-//visible,title,onCancel,width
-export default ({ children, title, ...props }) => {
- return
{title}} closable={false} {...props} maskClosable={false} keyboard={false}>
- {children}
- ;
-};
diff --git a/src/modules/recruitment/util/Nav.js b/src/modules/recruitment/util/Nav.js
deleted file mode 100644
index ed26ef20..00000000
--- a/src/modules/recruitment/util/Nav.js
+++ /dev/null
@@ -1,22 +0,0 @@
-import styled from 'styled-components';
-import React from "react";
-import { Breadcrumb } from 'antd';
-import { betweenMixin } from "./cssMixin";
-import { TextButton } from './Button';
-
-const Nav = styled.div`
- width:1200px;
- margin:0 auto;
- font-size:12px;
- font-family:MicrosoftYaHei;
- padding-top:20px;
- padding-bottom:20px;
- ${betweenMixin}
-`;
-export default ({ breadcrunmb, back }) =>
;
-
diff --git a/src/modules/recruitment/util/cssMixin.js b/src/modules/recruitment/util/cssMixin.js
deleted file mode 100644
index 027e0cc8..00000000
--- a/src/modules/recruitment/util/cssMixin.js
+++ /dev/null
@@ -1,24 +0,0 @@
-import { css } from 'styled-components';
-
-export const pointerMixin = css`
- &:hover{
- cursor:pointer;
- }
-`;
-export const betweenMixin = css`
- display:flex;
- justify-content:space-between;
- align-items:center;
-`;
-
-export const alignTextMixin = css`
- height:${p => p.height};
- text-align:center;
- line-height:${p => p.height};
-`;
-
-export const allCenterMixin = css`
- display:flex;
- justify-content:center;
- align-items:center;
-`;
\ No newline at end of file
diff --git a/src/modules/recruitment/util/hooks.js b/src/modules/recruitment/util/hooks.js
deleted file mode 100644
index 1c315318..00000000
--- a/src/modules/recruitment/util/hooks.js
+++ /dev/null
@@ -1,65 +0,0 @@
-import { useState, useCallback, useEffect, useRef } from "react";
-
-export function useToggle(init = false) {
- const [bool, setBool] = useState(init);
- const toggle = useCallback(() => {
- setBool((old) => !old);
- }, []);
- return [bool, toggle];
-}
-
-export function useForceUpdate() {
- const [_, setVer] = useState(0);
- return useCallback(() => {
- setVer((v) => v + 1);
- }, []);
-}
-
-export function useMap(canAdd, canRemove = () => true) {
- const mapRef = useRef(new Map());
- const forceUpdate = useForceUpdate();
- const add = useCallback((key, item) => {
- if (!canAdd(mapRef.current)) {
- return;
- }
- mapRef.current.set(key, item);
- forceUpdate();
- }, []);
- const remove = useCallback((key) => {
- mapRef.current.delete(key);
- forceUpdate();
- }, []);
- return { map: mapRef.current, add, remove };
-}
-
-export function useLoaded(promiseFac, dependsLst) {
- const [isLoaded, setLoaded] = useState(false);
- const dataRef = useRef(null);
- useEffect(() => {
- const f = async () => {
- dataRef.current = await promiseFac(...dependsLst);
- setLoaded(true);
- };
- f();
- return () => {
- setLoaded(false);
- };
- }, dependsLst);
- return { isLoaded, data: dataRef.current };
-}
-
-export function useSet(canAdd = () => true) {
- const setRef = useRef(new Set());
- const forceUpdate = useForceUpdate();
- const add = useCallback((key) => {
- if(canAdd(setRef.current)){
- setRef.current.add(key);
- forceUpdate();
- }
- }, []);
- const remove = useCallback((key) => {
- setRef.current.delete(key);
- forceUpdate();
- }, []);
- return { set: setRef.current, add, remove };
-}
diff --git a/src/modules/tpm/NewHeader.js b/src/modules/tpm/NewHeader.js
index fe763f58..2ead4e4f 100644
--- a/src/modules/tpm/NewHeader.js
+++ b/src/modules/tpm/NewHeader.js
@@ -49,11 +49,6 @@ class NewHeader extends Component {
visiblemyss: false,
}
}
- componentDidUpdate = (prevProps) => {
- if (this.state.mygetHelmetapi2 === undefined) {
- this.getAppdata();
- }
- }
componentDidMount() {
this.getAppdata();
window._header_componentHandler = this;
@@ -79,13 +74,10 @@ class NewHeader extends Component {
}, 800)
});
-
//获取游览器地址
try {
window.sessionStorage.setItem("yslgeturls", JSON.stringify(window.location.href))
- } catch (e) {
-
- }
+ } catch (e) {}
}
openNotification = (messge) => {
@@ -125,16 +117,15 @@ class NewHeader extends Component {
const url = `/accounts/logout.json`
this.delCookie("autologin_trustie")
axios.get(url, {
- })
- .then((response) => {
- if (response.data.status === 1) {
- this.setState({
- user: undefined
- })
- window.location.href = "/login"
- message.success('退出成功');
- }
- });
+ }).then((response) => {
+ if (response.data.status === 1) {
+ this.setState({
+ user: undefined
+ })
+ window.location.href = "/login"
+ message.success('退出成功');
+ }
+ });
}
tojoinclass = () => {
@@ -151,14 +142,12 @@ class NewHeader extends Component {
})
return;
}
-
if (user && user.profile_completed === false) {
this.setState({
AccountProfiletype: true
})
return;
}
-
this.setState({
Addcoursestypes: true,
})
@@ -345,7 +334,7 @@ class NewHeader extends Component {
let pamst = [];
let num = 0;
for (var i = 0; i < newrolearr.length; i++) {
- if (newrolearr[i] != "") {
+ if (newrolearr[i] !== "") {
pamst.push(newrolearr[i])
} else {
num = num + 1
@@ -416,7 +405,6 @@ class NewHeader extends Component {
this.setState({
showSearchOpentype: true
})
-
}
hideshowSearchOpen = (e) => {
@@ -426,7 +414,6 @@ class NewHeader extends Component {
showSearchOpentype: false,
setevaluatinghides: false
})
-
}
}
@@ -436,19 +423,15 @@ class NewHeader extends Component {
}
onKeywordSearchKeyDowns = () => {
- this.setState(
- {
- setevaluatinghides: false
- }
- )
+ this.setState({
+ setevaluatinghides: false
+ })
}
setevaluatinghides = () => {
- this.setState(
- {
- setevaluatinghides: true
- }
- )
+ this.setState({
+ setevaluatinghides: true
+ })
}
//头部获取是否已经登录了
getUser = (url, type) => {
@@ -538,15 +521,12 @@ class NewHeader extends Component {
document.head.appendChild(link);
}
-
handleVisibleChanges = (boll) => {
this.setState({
visiblemyss: boll,
})
-
}
-
getAppdata = () => {
try {
var chromesettingArray = JSON.parse(localStorage.getItem('chromesetting'));
@@ -583,19 +563,12 @@ class NewHeader extends Component {
} catch (e) {
this.gettablogourlnull();
}
-
-
} else {
-
this.gettablogourlnull();
-
}
-
} else {
this.gettablogourlnull();
-
}
-
}).catch((error) => {
this.gettablogourlnull();
@@ -617,6 +590,8 @@ class NewHeader extends Component {
return true
} else if (url.startsWith('/statistics') && match.path.startsWith('/statistics')) {
return true
+ } else if (url.startsWith('/users') && match.path.startsWith('/users')) {
+ return true
} else {
return false
}
@@ -681,7 +656,6 @@ class NewHeader extends Component {
}
let headtypes = '/';
-
if (mygetHelmetapi2) {
if (mygetHelmetapi2.navbar) {
if (mygetHelmetapi2.navbar.length > 0) {
@@ -729,26 +703,14 @@ class NewHeader extends Component {
}
})
}
-
- const contents = (
-
- );
return (