From 4139d1b8d4ef9de055a81cae84be1894afebaf7d Mon Sep 17 00:00:00 2001
From: luosongbai <15272473386@163.com>
Date: Thu, 10 Nov 2022 11:31:43 +0800
Subject: [PATCH] =?UTF-8?q?=E5=89=8D=E7=AB=AF=E6=8F=90=E4=BA=A4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/App.css | 2 +
src/AppLayOut.jsx | 1 -
.../AddPosition/PositionResponsble/index.jsx | 2 +-
src/components/CandidateTable/index.jsx | 14 +-
src/components/Editresume/index.css | 2 +-
.../EnclosureTabs/index.jsx | 9 +-
.../InterviewerInfoPop/Feedback/index.jsx | 73 +--
.../InterviewTabs/index.jsx | 75 ++-
.../InterviewerInfoPop/OfferTabs/index.jsx | 21 +-
src/components/InterviewerInfoPop/index.jsx | 29 +-
.../StandardResume/index.css | 9 +
.../StandardResume/index.jsx | 540 ++++++++++++++++++
src/components/Manualaddcandidate/index.css | 25 +
src/components/Manualaddcandidate/index.jsx | 267 +++++++++
src/components/NavHeader/index.jsx | 1 +
src/components/Originalresume/index.jsx | 5 +-
src/components/ResumeUploadPop/index.jsx | 34 +-
src/components/Uploadresume/index.jsx | 12 +-
src/pages/ResumeUpload/index.jsx | 2 +-
src/pages/admin/Candidate/index.jsx | 5 +-
src/pages/admin/Interview/index.jsx | 16 +-
src/pages/admin/Overview/index.jsx | 120 ++--
src/pages/admin/Resumescreen/index.css | 4 +-
src/pages/admin/Resumescreen/index.jsx | 182 +++---
src/pages/admin/Talent_pool/index.css | 2 +
src/pages/admin/Talent_pool/index.jsx | 400 ++++++++-----
src/setupProxy.js | 6 +-
src/util/request.js | 4 +-
src/util/requestURL.js | 9 +
29 files changed, 1509 insertions(+), 362 deletions(-)
create mode 100644 src/components/Manualaddcandidate/StandardResume/index.css
create mode 100644 src/components/Manualaddcandidate/StandardResume/index.jsx
create mode 100644 src/components/Manualaddcandidate/index.css
create mode 100644 src/components/Manualaddcandidate/index.jsx
diff --git a/src/App.css b/src/App.css
index 621fb31..73c9886 100644
--- a/src/App.css
+++ b/src/App.css
@@ -114,6 +114,8 @@
.backgroundcolor .ant-tree{ background-color: rgba(255, 255, 255, 0) !important; }
+.textindent7{text-indent: 7px;}
+
.fontweight{font-weight: bold;}
.padding24 { padding: 24px; }
.margin24 { margin: 24px; }
diff --git a/src/AppLayOut.jsx b/src/AppLayOut.jsx
index 5bd67a1..3621981 100644
--- a/src/AppLayOut.jsx
+++ b/src/AppLayOut.jsx
@@ -49,7 +49,6 @@ function AppLayOut() {
// 鼠标移出
const handlMouseLeave = () => {
- console.log(11111)
setCollapsed(true)
}
diff --git a/src/components/AddPosition/PositionResponsble/index.jsx b/src/components/AddPosition/PositionResponsble/index.jsx
index fe295eb..b8ec83a 100644
--- a/src/components/AddPosition/PositionResponsble/index.jsx
+++ b/src/components/AddPosition/PositionResponsble/index.jsx
@@ -71,7 +71,7 @@ export default function PositionResponsble({ updataPosition, postdata }) {
} else {
data['list'] = gatuserlist
}
- console.log(data)
+ // console.log(data)
setUserlist(data)
setVisible(true)
},
diff --git a/src/components/CandidateTable/index.jsx b/src/components/CandidateTable/index.jsx
index 719b144..f22affd 100644
--- a/src/components/CandidateTable/index.jsx
+++ b/src/components/CandidateTable/index.jsx
@@ -20,6 +20,7 @@ import {
interviewupdate,
sendinterviewee,
} from '../../util/requestURL'
+import PubSub from 'pubsub-js'
const { confirm } = Modal
export default class CandidateTable extends Component {
@@ -100,6 +101,14 @@ export default class CandidateTable extends Component {
}
componentDidMount() {
this.PostInterviewwaiteinfind()
+ this.updatacandidate = PubSub.subscribe('updatacandidate',(_,stateObj)=>{
+ this.props.updatainterviewstagenum()
+ this.PostInterviewwaiteinfind()
+ })
+ }
+
+ componentWillUnmount(){
+ PubSub.unsubscribe(this.updatacandidate)
}
componentDidUpdate() {
@@ -651,7 +660,10 @@ export default class CandidateTable extends Component {
onCancel={() => {
this.setState({
interviewerInfo: false,
- })
+ },()=>{
+ this.props.updatainterviewstagenum()
+ this.PostInterviewwaiteinfind()
+ })
}}
onEditresume={() => {
onEditresume()
diff --git a/src/components/Editresume/index.css b/src/components/Editresume/index.css
index 498e96b..603421f 100644
--- a/src/components/Editresume/index.css
+++ b/src/components/Editresume/index.css
@@ -39,5 +39,5 @@
.upload-button-box button { width: 100%; }
.upload-button-box .ant-upload-list {display: none;}
.resume-energy-box { display: flex; justify-content: space-between; }
-.resume-xq-box { height: 625px; overflow-x: hidden; overflow-y: auto; }
+.resume-xq-box { width: 50%; height: 625px; overflow-x: hidden; overflow-y: auto; }
.width700 { width: 700px; }
diff --git a/src/components/InterviewerInfoPop/EnclosureTabs/index.jsx b/src/components/InterviewerInfoPop/EnclosureTabs/index.jsx
index 6068406..b9a502c 100644
--- a/src/components/InterviewerInfoPop/EnclosureTabs/index.jsx
+++ b/src/components/InterviewerInfoPop/EnclosureTabs/index.jsx
@@ -1,10 +1,12 @@
import React,{useEffect} from 'react'
import './index.css'
import { UploadOutlined } from '@ant-design/icons'
+import memoryUtils from '../../../util/memoryUtils'
import { Button, message, Upload,Input } from 'antd'
export default function EnclosureTabs({data, Tabsnum}) {
-
+ let userInfo = memoryUtils.userInfo
+ const token = userInfo.token_type + ' ' + userInfo.token || ''
useEffect(() => {
if (Tabsnum === '6') {
// getoperatelog({ user_id: data }).then(
@@ -21,13 +23,14 @@ export default function EnclosureTabs({data, Tabsnum}) {
const props = {
name: 'file',
+ // action: 'http://10.0.0.240:7800/api/v1/itr/resume_affix',
// action: 'http://myip.legu.cc:7800/api/v1/itr/resume_affix',
action: 'http://10.0.0.4:7800/api/v1/itr/resume_affix',
data:{
- uid: data.uid
+ uid: data
},
headers: {
- authorization: 'authorization-text',
+ Authorization: token,
},
onChange(info) {
diff --git a/src/components/InterviewerInfoPop/Feedback/index.jsx b/src/components/InterviewerInfoPop/Feedback/index.jsx
index e993b7c..52f562c 100644
--- a/src/components/InterviewerInfoPop/Feedback/index.jsx
+++ b/src/components/InterviewerInfoPop/Feedback/index.jsx
@@ -9,31 +9,30 @@ import storageUtils from '../../../util/storageUtils'
import './index.css'
const { TextArea } = Input
-export default function Feedback({ visible, onClose, uid }) {
+export default function Feedback({ visible, onClose, uid,setuserid }) {
var userInfo = storageUtils.getUser()
const [voice, setvoice] = useState(1)
const [thought, setthought] = useState(1)
const [diathesis, setdiathesis] = useState(1)
const [evaluate, setevaluate] = useState('')
const [teacherback, setteacherback] = useState(1)
- const [isupdata, setisupdata] = useState(0)
-
+ // const [isupdata, setisupdata] = useState(0)
useEffect(() => {
if (uid) {
getteacher({ uid: uid }).then(
(res) => {
if (res.msg === 'ok') {
- if (res.data.uid) {
- const user_id = userInfo.user_id
- if (res.data['survey']['']) {
- setisupdata(1)
- setvoice(res.data['survey'][user_id].voice || 1)
- setthought(res.data['survey'][user_id].thought || 1)
+ if (res.data[0].uid) {
+ const user_id = setuserid.user_id
+ if (res.data[0]['survey'][user_id]) {
+ // setisupdata(1)
+ setvoice(res.data[0]['survey'][user_id].voice || 1)
+ setthought(res.data[0]['survey'][user_id].thought || 1)
setdiathesis(
- res.data['survey'][user_id].diathesis || 1
+ res.data[0]['survey'][user_id].diathesis || 1
)
- setevaluate(res.data['survey'][user_id].evaluate)
- setteacherback(res.data['survey'][user_id].teacher_back)
+ setevaluate(res.data[0]['survey'][user_id].evaluate)
+ setteacherback(res.data[0]['survey'][user_id].teacher_back)
}
}
}
@@ -47,47 +46,51 @@ export default function Feedback({ visible, onClose, uid }) {
const handelFeedback = () => {
const date = {
- name: userInfo.name,
+ user_id:setuserid.user_id,
+ name: setuserid.name,
voice,
thought,
diathesis,
evaluate,
- teacher_back: teacherback,
+ teacher_back: teacherback
}
- if (isupdata === 0) {
- interviewteacher({
- uid: uid,
- survey: {
- [userInfo.user_id]: date,
- },
- }).then(
- (res) => {
- if (res.msg === 'ok') {
- message.success('添加成功')
- onClose()
- }
- },
- (err) => {
- message.error('网络加载失败,请稍后再试')
- }
- )
- } else {
+ // if (isupdata === 0) {
+ // interviewteacher({
+ // uid: uid,
+ // survey: {
+ // [setuserid.user_id]: date,
+ // },
+ // }).then(
+ // (res) => {
+ // if (res.msg === 'ok') {
+ // message.success('添加成功')
+ // onClose()
+ // }
+ // },
+ // (err) => {
+ // message.error('网络加载失败,请稍后再试')
+ // }
+ // )
+ // } else {
upteacher({
uid: uid,
- [userInfo.user_id]: date,
+ survey: date,
+ relevancy_id: setuserid.relevancy_id
}).then(
(res) => {
if (res.msg === 'ok') {
message.success('修改成功')
onClose()
- }
+ }else {
+ message.success(res.msg)
+ }
},
(err) => {
message.error('网络加载失败,请稍后再试')
}
)
- }
+ // }
}
return (
diff --git a/src/components/InterviewerInfoPop/InterviewTabs/index.jsx b/src/components/InterviewerInfoPop/InterviewTabs/index.jsx
index 0b55d05..e2af09b 100644
--- a/src/components/InterviewerInfoPop/InterviewTabs/index.jsx
+++ b/src/components/InterviewerInfoPop/InterviewTabs/index.jsx
@@ -1,4 +1,9 @@
-import React, { useState, useEffect } from 'react'
+import React, {
+ useState,
+ useEffect,
+ forwardRef,
+ useImperativeHandle,
+} from 'react'
import { Button, Collapse, Divider, message, Tag, Empty } from 'antd'
import Enterthenextstage from '../../Enterthenextstage'
import { record, teacherstate } from '../../../util/requestURL'
@@ -13,29 +18,34 @@ import {
const { Panel } = Collapse
-export default function InterviewTabs({
- data,
- Tabsnum,
- setisfeedback,
- seefeedback,
-}) {
+const InterviewTabs = ({ data, Tabsnum, setisfeedback, seefeedback },ref) => {
const [isenterthenextstage, setisenterthenextstage] = useState(false)
const [datalist, setdatalist] = useState([])
let userinfo = storageUtils.getUser()
+
+ console.log(ref)
+ useImperativeHandle(ref, () => ({
+ getData: updatarecord
+ }))
+
useEffect(() => {
if (Tabsnum === '2') {
- record({ uid: data.uid }).then(
- (res) => {
- // console.log(res)
- setdatalist(res.data)
- },
- (err) => {
- message.error('网络错误,请稍后再试')
- }
- )
+ updatarecord()
}
}, [Tabsnum])
+ const updatarecord = () => {
+ record({ uid: data.uid }).then(
+ (res) => {
+ // console.log(res)
+ setdatalist(res.data)
+ },
+ (err) => {
+ message.error('网络错误,请稍后再试')
+ }
+ )
+ }
+
const handelFeedback = (record) => {
teacherstate({
user_id: [record.interview_id],
@@ -134,7 +144,7 @@ export default function InterviewTabs({
/>{' '}
未评估
- ) : item.teacher_back ===
+ ) : items.teacher_back ===
1 ? (
{' '}
满意
- ) : item.teacher_back ===
+ ) : items.teacher_back ===
2 ? (
{' '}
非常满意
- ) : item.teacher_back ===
+ ) : items.teacher_back ===
3 ? (
- {item.back_status ===
- 0 ? (
+ {!items.type ? (
- {userinfo.id ===
- items.user_id || userinfo.name === 'root' ? (
+ {userinfo.user_id ===
+ items.user_id ||
+ userinfo.name ===
+ 'root' ? (
)
}
+
+export default forwardRef(InterviewTabs)
diff --git a/src/components/InterviewerInfoPop/OfferTabs/index.jsx b/src/components/InterviewerInfoPop/OfferTabs/index.jsx
index 762e717..46b2736 100644
--- a/src/components/InterviewerInfoPop/OfferTabs/index.jsx
+++ b/src/components/InterviewerInfoPop/OfferTabs/index.jsx
@@ -31,7 +31,7 @@ import {
const { Option } = Select
const dateFormat = 'YYYY/MM/DD'
-export default function OfferTabs({ data }) {
+export default function OfferTabs({ data , updata }) {
const [OfferPostList, setOfferPostList] = useState([]) //offer发送记录
const [Offerstate, setOfferstate] = useState(false)
const [offerdata, setoffdata] = useState({
@@ -92,8 +92,11 @@ export default function OfferTabs({ data }) {
job_id: data.job_id,
}).then(
(res) => {
- console.log(res.data)
- // setOfferPostList(res.data)
+
+ if(res.msg === 'ok'){
+ message.success('操作成功')
+ updata();
+ }
},
(err) => {
message.error('网络加载错误,请稍后再试')
@@ -153,7 +156,15 @@ export default function OfferTabs({ data }) {
入职记录
-
尚未确定候选人是否入职
+ {
+ data.interview_stage === 7 ? (
+
已入职
+ ): data.interview_stage === 11 ? (
+
已淘汰
+ ): (
+
尚未确定候选人是否入职
+ )
+ }
{
@@ -164,7 +175,7 @@ export default function OfferTabs({ data }) {
{
- postupdataentry(6)
+ postupdataentry(11)
}}
>
放弃入职
diff --git a/src/components/InterviewerInfoPop/index.jsx b/src/components/InterviewerInfoPop/index.jsx
index 1d53a09..40f3728 100644
--- a/src/components/InterviewerInfoPop/index.jsx
+++ b/src/components/InterviewerInfoPop/index.jsx
@@ -1,4 +1,4 @@
-import React, { useState, useEffect } from 'react'
+import React, { useState, useEffect, useRef } from 'react'
import { Button, Form, Input, Modal, Tabs, Badge, message, Avatar } from 'antd'
import Steptone from '../Steptone'
import InterviewTabs from './InterviewTabs'
@@ -37,6 +37,8 @@ export default function InterviewerInfoPop({
const [isremarks, setisremarks] = useState(false)
const [Tabsnum, setTabsnum] = useState(0)
const [isfeedback, setisfeedback] = useState(false)
+ const [userid , setuserid] = useState();
+ const updatarecord = useRef()
const onChange = (key) => {
// console.log(key)
@@ -87,6 +89,11 @@ export default function InterviewerInfoPop({
const onClose = () => {
setisremarks(false)
}
+
+ //添加反馈后更新面试信息
+ const updatarecordlist = ()=>{
+ updatarecord.current.getData();
+ }
return (
@@ -492,18 +499,24 @@ export default function InterviewerInfoPop({
{
+ setuserid= {userid}
+ ref={updatarecord}
+ setisfeedback={(userid) => {
setisfeedback(true)
+ setuserid(userid)
}}
- seefeedback={() => {
+ seefeedback={(userid) => {
setisfeedback(true)
postfindcriterion()
+ setuserid(userid)
}}
/>
-
+ {
+ postfindcriterion()
+ }}/>
进入下一阶段
@@ -559,7 +572,7 @@ export default function InterviewerInfoPop({
''
)}
- {candidateinfo.teacher_state != 2 ? (
+ {/* {candidateinfo.teacher_state != 2 ? (
{
@@ -579,7 +592,7 @@ export default function InterviewerInfoPop({
>
修改反馈
- )}
+ )} */}
{
setisfeedback(false)
postfindcriterion()
+ updatarecordlist()
}}
/>
diff --git a/src/components/Manualaddcandidate/StandardResume/index.css b/src/components/Manualaddcandidate/StandardResume/index.css
new file mode 100644
index 0000000..6095842
--- /dev/null
+++ b/src/components/Manualaddcandidate/StandardResume/index.css
@@ -0,0 +1,9 @@
+.StandardResume-box .ant-row { margin-left: 0 !important; margin-right: 0 !important; }
+
+.resume-pop-box .ant-tabs-content-holder { overflow-y: scroll; max-height: calc( 100vh - 375px); }
+.from-label {padding: 0 0 8px; line-height: 1.5715; white-space: initial; text-align: left; display: inline-block; margin-top: 12px;}
+.textalignright { text-align: right; }
+.select-box div {
+ width: 100%;
+}
+.StandardResume-box { width: 100%; }
diff --git a/src/components/Manualaddcandidate/StandardResume/index.jsx b/src/components/Manualaddcandidate/StandardResume/index.jsx
new file mode 100644
index 0000000..77c9cec
--- /dev/null
+++ b/src/components/Manualaddcandidate/StandardResume/index.jsx
@@ -0,0 +1,540 @@
+import React, { useState, useEffect } from 'react'
+import {
+ Form,
+ Input,
+ Row,
+ Col,
+ Divider,
+ Button,
+ Space,
+ DatePicker,
+ Select,
+} from 'antd'
+import { PlusOutlined, MinusCircleOutlined } from '@ant-design/icons'
+import 'moment/locale/zh-cn'
+import locale from 'antd/es/date-picker/locale/zh_CN'
+import moment from 'moment'
+import './index.css'
+const dateFormat = 'YYYY-MM-DD'
+
+export default function StandardResume({ data, updataPosition }) {
+ const [form] = Form.useForm()
+ const { TextArea } = Input
+ const { Option } = Select
+ const { RangePicker } = DatePicker
+ const typelist = {
+ work_list: {
+ company_name: '',
+ duty: '',
+ position_name: '',
+ },
+ project_undergo: {
+ time: '',
+ name: '',
+ work: '',
+ comment: '',
+ duty: '',
+ },
+ language: {
+ language_name: '',
+ has_sleep: 1,
+ reading: 1,
+ writing: 1,
+ },
+ remembrance: {
+ prize_name: '',
+ prize_time: '',
+ },
+ }
+
+ const [worklist, setworklist] = useState([])
+ const [projectundergo, setprojectundergo] = useState([])
+ const [language, setlanguage] = useState([])
+ const [remembrance, setremembrance] = useState([])
+
+ useEffect(() => {
+ // updataPosition({...data.data,work_list:worklist,project_undergo:projectundergo,language_list:language,remembrance_list:remembrance})
+ }, [])
+
+ const onValuesChange = (type, e, valuestype, index) => {
+ switch (type) {
+ case 'work_list':
+ const newworklist = worklist.map((item, key) => {
+ if (index === key) return { ...item, [valuestype]: e }
+ else return item
+ })
+ setworklist(newworklist)
+ updataPosition({ work_list: newworklist })
+ break
+ case 'project_undergo':
+ const newprojectundergo = projectundergo.map((item, key) => {
+ if (index === key)
+ return valuestype !== 'time'
+ ? { ...item, [valuestype]: e }
+ : { ...item, [valuestype]: e }
+ else return item
+ })
+ setprojectundergo(newprojectundergo)
+ updataPosition({ project_undergo: newprojectundergo })
+ break
+ case 'language':
+ const newlanguage = language.map((item, key) => {
+ if (index === key) return { ...item, [valuestype]: e }
+ else return item
+ })
+ setlanguage(newlanguage)
+ updataPosition({ language_list: newlanguage })
+ break
+ case 'remembrance':
+ const newremembrance = remembrance.map((item, key) => {
+ if (index === key)
+ return valuestype !== 'prize_time'
+ ? { ...item, [valuestype]: e }
+ : { ...item, [valuestype]: e }
+ else return item
+ })
+ setremembrance(newremembrance)
+ updataPosition({ remembrance_list: newremembrance })
+ break
+ default:
+ break
+ }
+ }
+
+ const add = (type) => {
+ switch (type) {
+ case 'work_list':
+ const newworklist = [...worklist, typelist[type]]
+ setworklist(newworklist)
+ break
+ case 'project_undergo':
+ const newprojectundergo = [...projectundergo, typelist[type]]
+ setprojectundergo(newprojectundergo)
+ break
+ case 'language':
+ const newlanguage = [...language, typelist[type]]
+ setlanguage(newlanguage)
+ break
+ case 'remembrance':
+ const newremembrance = [...remembrance, typelist[type]]
+ setremembrance(newremembrance)
+ break
+ default:
+ break
+ }
+ }
+
+ const remove = (type, index) => {
+ switch (type) {
+ case 'work_list':
+ const newworklist = worklist.filter((item, key) => {
+ return key !== index
+ })
+ setworklist(newworklist)
+ break
+ case 'project_undergo':
+ const newprojectundergo = projectundergo.filter((item, key) => {
+ return key !== index
+ })
+ setprojectundergo(newprojectundergo)
+ break
+ case 'language':
+ const newlanguage = language.filter((item, key) => {
+ return key !== index
+ })
+ setlanguage(newlanguage)
+ break
+ case 'remembrance':
+ const newremembrance = remembrance.filter((item, key) => {
+ return key !== index
+ })
+ setremembrance(newremembrance)
+ break
+ default:
+ break
+ }
+ }
+
+ return (
+
+
+ {/*
+ add('work_list')}
+ block
+ icon={}
+ >
+ 添加
+
+
+
+
+
项目经验
+ {projectundergo.map((item, key) => {
+ return (
+
+
+
+
+ 0
+ ? [
+ moment(
+ item.time.split(
+ '/'
+ )[0],
+ dateFormat
+ ),
+ moment(
+ item.time.split(
+ '/'
+ )[1],
+ dateFormat
+ ),
+ ]
+ : ''
+ }
+ onChange={(date, dateString) => {
+ console.log(dateString)
+ onValuesChange(
+ 'project_undergo',
+ dateString[0] +
+ '/' +
+ dateString[1],
+ 'time',
+ key
+ )
+ }}
+ />
+
+
+
+
+ remove('project_undergo', key)
+ }
+ />
+
+
+
+
+ {
+ onValuesChange(
+ 'project_undergo',
+ e.target.value,
+ 'name',
+ key
+ )
+ }}
+ />
+
+
+
+
+ {
+ onValuesChange(
+ 'project_undergo',
+ e.target.value,
+ 'work',
+ key
+ )
+ }}
+ />
+
+
+
+
+
+ )
+ })}
+
+
+ add('project_undergo')}
+ block
+ icon={}
+ >
+ 添加
+
+
+
+
+
语言能力
+ {language.map((item, key) => {
+ return (
+
+
+
+ {
+ onValuesChange(
+ 'language',
+ e.target.value,
+ 'language_name',
+ key
+ )
+ }}
+ />
+
+
+
+
+
+
+
+
+
+
+ remove('language', key)}
+ />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ )
+ })}
+
+
+ add('language')}
+ block
+ icon={}
+ >
+ 添加
+
+
+
+
自我描述
+
+
+
+ {
+ updataPosition({ review: e.target.value })
+ }}
+ />
+
+
+
获奖经历
+ {remembrance.map((item, key) => {
+ return (
+
+
+
+
+ {
+ onValuesChange(
+ 'remembrance',
+ dateString[0],
+ 'prize_time',
+ key
+ )
+ }}
+ />
+
+
+
+
+
+ {
+ onValuesChange(
+ 'remembrance',
+ e.target.value,
+ 'prize_name',
+ key
+ )
+ }}
+ />
+
+
+
+
+
+ remove('remembrance', key)
+ }
+ />
+
+
+
+ )
+ })}
+
+
+
+ add('remembrance')}
+ block
+ icon={}
+ >
+ 添加
+
+
+
+
+
+ )
+}
diff --git a/src/components/Manualaddcandidate/index.css b/src/components/Manualaddcandidate/index.css
new file mode 100644
index 0000000..60e5342
--- /dev/null
+++ b/src/components/Manualaddcandidate/index.css
@@ -0,0 +1,25 @@
+.resume-pop-box {
+ display: flex;
+ justify-content: space-between;
+}
+.resume-img-box {
+ width: 40%;
+}
+.resume-content-box {
+ /* width: 55%; */
+}
+.resume-energy-box2 {
+ width: 100%;
+
+}
+.ant-tabs {
+ width: 80%;
+}
+.resume-right-box {
+ width: 20%;
+ background-color: #eee;
+ margin-top: 46px;
+}
+.resume-xq-box2 { width: 100%; height: 625px; overflow-x: hidden; overflow-y: auto; }
+.resume-energy-box2 .ant-tabs { width: 100%; display: flex; justify-content: space-between; }
+.ResumeUpload-box .resume-pop-box .ant-tabs-content-holder{overflow-y:scroll; max-height: calc( 100vh - 375px);}
diff --git a/src/components/Manualaddcandidate/index.jsx b/src/components/Manualaddcandidate/index.jsx
new file mode 100644
index 0000000..08b7f55
--- /dev/null
+++ b/src/components/Manualaddcandidate/index.jsx
@@ -0,0 +1,267 @@
+import React, { useState, Component } from 'react'
+import {
+ Form,
+ Input,
+ Modal,
+ Radio,
+ Row,
+ Col,
+ Select,
+ DatePicker,
+ Tabs,
+ Button,
+ message,
+} from 'antd'
+import 'moment/locale/zh-cn'
+import moment from 'moment'
+import locale from 'antd/es/date-picker/locale/zh_CN'
+import StandardResume from './StandardResume'
+import { manual_resume } from '../../util/requestURL'
+import './index.css'
+const { Option } = Select
+const dateFormat = 'YYYY-MM-DD'
+
+export default class Manualaddcandidate extends Component {
+ state = {
+ hope_money: '',
+ feedback: 0,
+ name: '',
+ phone: '',
+ job_name: '',
+ work_exp: 0,
+ work_undergo: [],
+ project_undergo: [],
+ work_list: [],
+ school: '',
+ at_school: '',
+ specialty: '',
+ specialty_do: [],
+ mail: '',
+ gender: '',
+ age: 0,
+ nation: '',
+ review: '',
+ pass_text: '',
+ file_url: '',
+ now_address: '',
+ birthday: '',
+ accounts: '',
+ remembrance: [],
+ language: [],
+ }
+
+ updataPosition = (item) => {
+ this.setState(item, () => {
+ // console.log(this.state)
+ })
+ }
+
+ onValuesChange = (item) => {
+ this.setState(item, () => {
+ // console.log(this.state)
+ })
+ }
+
+ render() {
+ const { visible, onCancel } = this.props
+ return (
+
+
+ 取消
+ ,
+ {
+ var data = this.state
+ console.log(data)
+ if(data.name === "" || data.job_name === "" || data.phone === "" || data.mail ===""){
+ message.warning('姓名,职位,电话,邮箱必填')
+ return;
+ }
+ manual_resume({data_in:this.state}).then((res)=>{
+ if(res.msg === "ok"){
+ message.success("添加成功!")
+ onCancel();
+ }
+ },(err)=>{
+ message.error('网络加载错误,请稍后再试')
+ })
+ }}
+ >
+ 保存
+ ,
+ ]}
+ >
+
+
+
+ )
+ }
+}
diff --git a/src/components/NavHeader/index.jsx b/src/components/NavHeader/index.jsx
index 718d28c..e1043f5 100644
--- a/src/components/NavHeader/index.jsx
+++ b/src/components/NavHeader/index.jsx
@@ -9,6 +9,7 @@ import {
AlertOutlined,
} from '@ant-design/icons'
+
const { Search } = Input
// const suffix = (
//
diff --git a/src/components/ResumeUploadPop/index.jsx b/src/components/ResumeUploadPop/index.jsx
index 267eade..a0bf3db 100644
--- a/src/components/ResumeUploadPop/index.jsx
+++ b/src/components/ResumeUploadPop/index.jsx
@@ -1,24 +1,29 @@
import React, { useState } from 'react'
import ResumeUpload from '../../pages/ResumeUpload'
import Uploadresume from '../Uploadresume'
+import Manualaddcandidate from '../Manualaddcandidate'
import { Button, Dropdown, Menu } from 'antd'
import { useNavigate } from 'react-router-dom'
-
import { PlusOutlined } from '@ant-design/icons'
+import PubSub from 'pubsub-js'
export default function ResumeUploadPop() {
const navigate = useNavigate()
const [visible, setVisible] = useState(false)
const [usvisible, setusvisible] = useState(false)
+ const [Manualvisible,setManualvisible] = useState(false)
//上传简历导出的数据
const [data, setdata] = useState([])
const onCreate = (values) => {
- console.log('Received values of form: ', values)
setVisible(false)
}
+ const ManualonCreate = () =>{
+ setManualvisible(false)
+ }
+
const UsonCreate = (values) => {
setusvisible(false)
}
@@ -26,7 +31,8 @@ export default function ResumeUploadPop() {
const onMenuClick = (e) => {
console.log('click', e)
if (e.key == 1) {
- setVisible(true)
+ // setVisible(true)
+ setManualvisible(true)
} else if (e.key == 2) {
//跳转到添加职位界面
navigate('/admin/position/addposition')
@@ -39,10 +45,10 @@ export default function ResumeUploadPop() {
+ {
+ PubSub.publish('updatacandidate', {isupdata: true})
+ setManualvisible(false)
+ }}
+ onReupload={() => {
+ //重新上传
+ setManualvisible(false)
+ }}
+ />
+
{
setusvisible(false)
diff --git a/src/components/Uploadresume/index.jsx b/src/components/Uploadresume/index.jsx
index f12fac1..cb77639 100644
--- a/src/components/Uploadresume/index.jsx
+++ b/src/components/Uploadresume/index.jsx
@@ -37,9 +37,9 @@ export default class Candidate extends Component {
const props = {
name: 'file',
multiple: true,
- action: 'http://10.0.0.240:7800/api/v1/itr/file_to_hw',
+ // action: 'http://10.0.0.240:7800/api/v1/itr/file_to_hw',
// action: 'http://myip.legu.cc:7800/api/v1/itr/file_to_hw',
- // action: 'http://10.0.0.4:7800/api/v1/itr/file_to_hw',
+ action: 'http://10.0.0.4:7800/api/v1/itr/file_to_hw',
headers: {
Authorization: token,
},
@@ -66,9 +66,9 @@ export default class Candidate extends Component {
candidatedata.data['uid'] =
info.file.response.data.uid
candidatedata.data['owner_name'] =
- this.state.owner_name
+ that.state.owner_name
candidatedata.data['resume_affix_id'] =
- this.state.resume_affix_id
+ that.state.resume_affix_id
that.props.onResumeUpload(candidatedata)
}
} else {
@@ -115,9 +115,9 @@ export default class Candidate extends Component {
const propss = {
name: 'file',
multiple: true,
- action: 'http://10.0.0.240:7800/api/v1/itr/resume_affix',
+ // action: 'http://10.0.0.240:7800/api/v1/itr/resume_affix',
// action: 'http://myip.legu.cc:7800/api/v1/itr/resume_affix',
- // action: 'http://10.0.0.4:7800/api/v1/itr/resume_affix',
+ action: 'http://10.0.0.4:7800/api/v1/itr/resume_affix',
headers: {
Authorization: token,
},
diff --git a/src/pages/ResumeUpload/index.jsx b/src/pages/ResumeUpload/index.jsx
index 3f07440..293b77f 100644
--- a/src/pages/ResumeUpload/index.jsx
+++ b/src/pages/ResumeUpload/index.jsx
@@ -40,7 +40,7 @@ export default class ResumeUpload extends Component {
render(){
const { visible, onCancel, onCreate,onReupload, data } = this.props
-
+ // console.log(data)
return(
{
const data = res.data
@@ -93,8 +95,6 @@ export default class Candidate extends Component {
const onSelect = (selectedKeys, info) => {
// console.log(selectedKeys)
if(selectedKeys[0].length > 3){
- console.log(selectedKeys)
- console.log(info.node.title)
this.setState({
job_names:info.node.title
})
@@ -106,6 +106,7 @@ export default class Candidate extends Component {
this.setState({
step: key,
})
+ this.updatainterviewstagenum()
}
const treeSeletData = [
diff --git a/src/pages/admin/Interview/index.jsx b/src/pages/admin/Interview/index.jsx
index 8331727..4aa26f2 100644
--- a/src/pages/admin/Interview/index.jsx
+++ b/src/pages/admin/Interview/index.jsx
@@ -151,7 +151,7 @@ function Interview() {
// 查看详情里面编辑按钮
const onEditresume = (data) => {
setInterviewerInfo(false)
- console.log(data)
+ // console.log(data)
setTimeout(() => {
setEditresume(true)
}, 500)
@@ -318,11 +318,15 @@ function Interview() {
render: (text, record, index) => (
{text.type === 0 ? (
-
+
+ 未全部反馈
+
) : (
-
+
+ 已全部反馈
+
)}
- {text.name}
+
),
},
@@ -338,13 +342,13 @@ function Interview() {
>
查看详情
- handelFeedback(record, index)}
>
{text.type === 0 ? '催促反馈' : ''}
-
+ */}
),
},
diff --git a/src/pages/admin/Overview/index.jsx b/src/pages/admin/Overview/index.jsx
index 463dd5a..8a3b06f 100644
--- a/src/pages/admin/Overview/index.jsx
+++ b/src/pages/admin/Overview/index.jsx
@@ -23,16 +23,11 @@ import {
} from '@ant-design/icons'
import { interviewstagenu } from '../../../util/requestURL'
import { Link } from 'react-router-dom'
+import storageUtils from '../../../util/storageUtils'
import './index.css'
const { TabPane } = Tabs
const { CheckableTag } = Tag
-const tagsData = [
- '面试反馈',
- '安排面试',
- '通讯记录',
- '面试官拒绝面试',
- '其它',
-]
+const tagsData = ['面试反馈', '安排面试', '通讯记录', '面试官拒绝面试', '其它']
export default class Overview extends Component {
state = {
@@ -52,14 +47,17 @@ export default class Overview extends Component {
},
],
data: [],
+ userinfo:{rank:1}
}
componentDidMount() {
PubSub.publish('headtitle', { headtitle: '总览' })
+ let userinfo = storageUtils.getUser()
interviewstagenu({ date: {} }).then(
(res) => {
this.setState({
data: res.data,
+ userinfo: userinfo,
})
},
(err) => {
@@ -69,7 +67,7 @@ export default class Overview extends Component {
}
render() {
- const { data } = this.state
+ const { data, userinfo } = this.state
const onChange = (key) => {
console.log(key)
@@ -115,11 +113,19 @@ export default class Overview extends Component {
}}
/>
+
-
-
{data[1]}
-
今日待筛选申请
-
+ {userinfo.rank === 1 ? (
+
+
{data[1]}
+
今日待筛选申请
+
+ ) : (
+
+
{data[1]}
+
今日待筛选申请
+
+ )}
@@ -133,10 +139,17 @@ export default class Overview extends Component {
/>
-
-
{data.now}
-
今日面试
-
+ {userinfo.rank === 1 ? (
+
+
{data.now}
+
今日面试
+
+ ) : (
+
+
{data.now}
+
今日面试
+
+ )}
@@ -147,16 +160,30 @@ export default class Overview extends Component {
-
-
{data.offer}
-
待发送Offer
-
+ {userinfo.rank === 1 ? (
+
+
{data.offer}
+
待发送Offer
+
+ ) : (
+
+
{data.offer}
+
待发送Offer
+
+ )}
-
-
{data[6]}
-
待入职
-
+ {userinfo.rank === 1 ? (
+
+
{data[6]}
+
待入职
+
+ ) : (
+
+
{data[6]}
+
待入职
+
+ )}
@@ -167,22 +194,43 @@ export default class Overview extends Component {
-
-
0
-
待面试
-
+ {userinfo.rank === 1 ? (
+
+
0
+
待面试
+
+ ) : (
+
+
0
+
待面试
+
+ )}
-
-
0
-
待反馈
-
+ {userinfo.rank === 1 ? (
+
+
0
+
待反馈
+
+ ) : (
+
+
0
+
待反馈
+
+ )}
-
-
0
-
待处理
-
+ {userinfo.rank === 1 ? (
+
+
0
+
待处理
+
+ ) : (
+
+
0
+
待处理
+
+ )}
diff --git a/src/pages/admin/Resumescreen/index.css b/src/pages/admin/Resumescreen/index.css
index aa1e34c..7f1b6d8 100644
--- a/src/pages/admin/Resumescreen/index.css
+++ b/src/pages/admin/Resumescreen/index.css
@@ -19,5 +19,5 @@
.Resumescreen-list-data-box .CandidateTable-owner { width: 10%; }
.Resumescreen-list-data-box .CandidateTable-list-box { align-items: center; }
.Resumescreen-list-data-box .CandidateTable-info { margin-left: 0; }
-
-
+.tongyi { color: rgb(12, 140, 246); }
+.jvj { color: #ff4d4f; }
diff --git a/src/pages/admin/Resumescreen/index.jsx b/src/pages/admin/Resumescreen/index.jsx
index 1785113..8688b47 100644
--- a/src/pages/admin/Resumescreen/index.jsx
+++ b/src/pages/admin/Resumescreen/index.jsx
@@ -36,8 +36,9 @@ export default class Resumescreen extends Component {
job_id: '',
hr_manner: 2,
userInfo: storageUtils.getUser(),
- interviewerInfo: false,
- uid: 0
+ interviewerInfo: false,
+ uid: 0,
+ types: true,
}
componentDidMount() {
@@ -55,15 +56,27 @@ export default class Resumescreen extends Component {
}
Updatalist = () => {
- const { name, job_id, hr_manner, userInfo } = this.state
- interviewfind({
- interview_query: {
+ const { name, job_id, hr_manner, userInfo, types } = this.state
+ const interview_query = types === "true" ? (
+ {
interview_stage: 1,
- department: userInfo.user_id,
- name: name,
- job_id: job_id,
- hr_manner: hr_manner,
- },
+ department: userInfo.user_id,
+ name: name,
+ job_id: job_id,
+ hr_manner: hr_manner,
+ }
+ ):(
+ {
+ department: userInfo.user_id,
+ name: name,
+ job_id: job_id,
+ hr_manner: hr_manner,
+ }
+ );
+
+
+ interviewfind({
+ interview_query: interview_query,
data_in: {},
}).then(
(res) => {
@@ -75,34 +88,34 @@ export default class Resumescreen extends Component {
)
interviewmannernum({
- interview_query: {
- interview_stage: 1,
- department: userInfo.user_id,
+ data: {
name: name,
- job_id: job_id
+ job_id: job_id,
+ hr_manner: hr_manner,
+ department: userInfo.user_id,
},
- data_in: {},
+ types: types,
}).then(
(res) => {
- console.log(res.data)
- this.setState({
- manner_2_num : res.data.manner_2_num,
- manner_01_num : res.data.manner_01_num
- })
- },
+ this.setState({
+ manner_2_num: res.data.manner_2_num,
+ manner_01_num: res.data.manner_01_num,
+ })
+ },
(err) => {}
)
}
onValuesChange = (e) => {
- // console.log(e)
- this.setState(e,()=>{
- this.Updatalist()
- })
+ // console.log(e)
+ this.setState(e, () => {
+ this.Updatalist()
+ })
}
handeleditstate = (uid, hr_manner) => {
+ const interview_stage = hr_manner === 1 ? 2 : 11
interviewupdate({
- data_in: { hr_manner: hr_manner, interview_stage:2 },
+ data_in: { hr_manner: hr_manner, interview_stage: interview_stage },
interview_query: { uid: uid },
}).then(
(res) => {
@@ -120,9 +133,21 @@ export default class Resumescreen extends Component {
}
handelonChange = (e) => {
+ const { hr_manner } = this.state
+ var newhr_manner = 0;
+ if(hr_manner === 2 && e === "true"){
+ newhr_manner = 2
+ }else if(hr_manner !== 2 && e === "true"){
+ newhr_manner = 2
+ }else if(hr_manner === 2 && e === "false" ){
+ newhr_manner = ""
+ }else {
+ newhr_manner = hr_manner
+ }
this.setState(
{
- hr_manner: e,
+ types: e,
+ hr_manner: newhr_manner,
},
() => {
this.Updatalist()
@@ -130,16 +155,16 @@ export default class Resumescreen extends Component {
)
}
- handelCandidateClick = (uid) =>{
- console.log(uid)
- this.setState({
- interviewerInfo: true,
- uid : uid
- })
- }
+ handelCandidateClick = (uid) => {
+ this.setState({
+ interviewerInfo: true,
+ uid: uid,
+ })
+ }
render() {
- const { getjoblist, data, manner_2_num, manner_01_num } = this.state
+ const { getjoblist, data, manner_2_num, manner_01_num, hr_manner } =
+ this.state
const onSearch = (value) => console.log(value)
return (
@@ -193,7 +218,7 @@ export default class Resumescreen extends Component {
this.handelonChange(e)}
>
待筛选的候选人
}
- key={2}
+ key={true}
>
筛选记录
}
- key=""
+ key={false}
>
@@ -241,7 +266,9 @@ export default class Resumescreen extends Component {
className="CandidateTable-list-box"
key={item.uid}
onClick={() =>
- this.handelCandidateClick(item.uid)
+ this.handelCandidateClick(
+ item.uid
+ )
}
>
@@ -354,34 +381,52 @@ export default class Resumescreen extends Component {
{item.interview_stage}
-
- {
- e.stopPropagation()
- this.handeleditstate(
- item.uid,
- 1
- )
- }}
- >
- 同意
-
- {
- e.stopPropagation()
- this.handeleditstate(
- item.uid,
- 0
- )
- }}
- >
- 拒绝
-
-
+ {hr_manner === 2 ? (
+
+ {
+ e.stopPropagation()
+ this.handeleditstate(
+ item.uid,
+ 1
+ )
+ }}
+ >
+ 同意
+
+ {
+ e.stopPropagation()
+ this.handeleditstate(
+ item.uid,
+ 0
+ )
+ }}
+ >
+ 拒绝
+
+
+ ) : item.hr_manner === 1 ? (
+
+
+ 同意
+
+
+ ) : (
+
+
+ 拒绝
+
+
+ )}
)
})
@@ -393,7 +438,7 @@ export default class Resumescreen extends Component {
- {/* 查看面试人信息弹窗 */}
+ {/* 查看面试人信息弹窗 */}
{
@@ -407,7 +452,6 @@ export default class Resumescreen extends Component {
interviewerInfo: false,
})
}}
-
/>
)
diff --git a/src/pages/admin/Talent_pool/index.css b/src/pages/admin/Talent_pool/index.css
index 0a7368b..dba1f2f 100644
--- a/src/pages/admin/Talent_pool/index.css
+++ b/src/pages/admin/Talent_pool/index.css
@@ -124,6 +124,8 @@
.talentpool-table-action {
display: flex;
+ justify-content: space-between;
+ align-items: center;
border-bottom: 1px solid #f4f4f5; padding: 10px 0;
}
diff --git a/src/pages/admin/Talent_pool/index.jsx b/src/pages/admin/Talent_pool/index.jsx
index 3be4cb1..297a7b8 100644
--- a/src/pages/admin/Talent_pool/index.jsx
+++ b/src/pages/admin/Talent_pool/index.jsx
@@ -7,6 +7,7 @@ import {
message,
Pagination,
Modal,
+ Button,
} from 'antd'
import Addscreen from './Addscreen'
import {
@@ -14,7 +15,8 @@ import {
talent_pool,
talent_pool_nu,
option,
- get_number
+ get_number,
+ send_talent_pool,
} from '../../../util/requestURL'
import {
PrinterFilled,
@@ -39,23 +41,25 @@ export default class Talent_pool extends Component {
datalist: [],
pages: 1,
total: 0,
- candidate:0,
- now:0
+ candidate: 0,
+ now: 0,
}
componentDidMount() {
PubSub.publish('headtitle', { headtitle: '人才库' })
- get_number().then((res)=>{
- console.log(res)
- this.setState({
- candidate: res.data.candidate,
- now: res.data.now
- })
- },
- (err)=>{
- message.error('网络错误,请稍后再试')
- })
- this.handelupdatascreen()
+ get_number().then(
+ (res) => {
+ console.log(res)
+ this.setState({
+ candidate: res.data.candidate,
+ now: res.data.now,
+ })
+ },
+ (err) => {
+ message.error('网络错误,请稍后再试')
+ }
+ )
+ this.handelupdatascreen()
this.posttalentpool()
}
@@ -151,7 +155,68 @@ export default class Talent_pool extends Component {
}
render() {
- const { data, datalist,candidate,now } = this.state
+ const { data, datalist, candidate, now } = this.state
+ //数据个数
+ const todata = datalist.length
+ // 全选框
+ const onAllChange = (e) => {
+ const type = e.target.checked
+ const { datalist } = this.state
+ const newData = datalist.map((dataObj) => {
+ return { ...dataObj, choice: type }
+ })
+ this.setState({ datalist: newData })
+ }
+
+ //已勾选个数
+ let choiceCount = 0
+ if (datalist.length > 0) {
+ choiceCount = datalist.reduce(
+ (pre, item) => pre + (item.choice ? 1 : 0),
+ 0
+ )
+ }
+
+ //单个选择框
+ const onChange = (e) => {
+ const type = e.target.checked
+ const id = e.target.value
+ const { datalist } = this.state
+ const newData = datalist.map((dataObj) => {
+ if (dataObj.id_card === id) return { ...dataObj, choice: type }
+ else return dataObj
+ })
+ this.setState({
+ datalist: newData,
+ })
+ }
+
+ const handeladdCandidate = (e) => {
+ const { datalist } = this.state
+ const newdatalist = []
+ for (let i in datalist) {
+ if (datalist[i].choice) {
+ newdatalist.push(datalist[i])
+ }
+ }
+ if (newdatalist.length > 0) {
+ send_talent_pool({ send: newdatalist }).then(
+ (res) => {
+ console.log(res)
+ if (res.msg === 'ok') {
+ message.success('操作成功')
+ this.handelupdatascreen()
+ }
+ },
+ (err) => {
+ message.error('网络错误,请稍后再试')
+ }
+ )
+ } else {
+ message.warning('选择候选人')
+ }
+ }
+
return (
{/*
*/}
@@ -293,152 +358,192 @@ export default class Talent_pool extends Component {
-
+
+
+
+ {' '}
+ + 添加到候选人
+
+
- {datalist.map((item, key) => {
- return (
-
-
-
-
-
-
+ {datalist.length > 0 ? (
+ datalist.map((item, key) => {
+ return (
+
+
-
- {item.name}
-
-
- {item.gander}
-
-
- | {item.age}
-
-
- {item.work_exp === 0
- ? '| 实习生'
- : item.work_exp ===
- 1
- ? '1-3年'
- : item.work_exp ===
- 2
- ? '3-5年'
- : '5年以上'}
-
-
- {' '}
- {' '}
-
- {item.similarity}
- 位相似候选人
+
+
+
+
+
+ {item.name}
+
+
+ {item.gander}
+
+
+ | {item.age}
+
+
+ {item.work_exp ===
+ 0
+ ? '| 实习生'
+ : item.work_exp ===
+ 1
+ ? '1-3年'
+ : item.work_exp ===
+ 2
+ ? '3-5年'
+ : '5年以上'}
+
+
+ {' '}
+ {' '}
+
+ {
+ item.similarity
+ }
+ 位相似候选人
+
+
+ {item.work_list.map(
+ (items, index) => {
+ return (
+
+
+
+ {
+ items.company_name
+ }
+
+
+ |{' '}
+ {
+ items.position_name
+ }
+
+
+ |
+ {
+ items.time
+ }
+
+
+ )
+ }
+ )}
+
+
+
+
+ {item.school}
+
+
+ |{' '}
+ {item.specialty}
+
+
+ |{' '}
+ {item.education}
+
+
+ |
+ {item.at_school}
+
+
+
+
+
+
+
+ 申请日期:
+
+ {item.event_time}
- {item.work_list.map(
- (items, index) => {
- return (
-
-
-
- {
- items.company_name
- }
-
-
- |{' '}
- {
- items.position_name
- }
-
-
- |
- {
- items.time
- }
-
-
- )
- }
- )}
+
+ 应聘职位:
+
+ {item.job_name}
+
+
+
+ 归档人才库:
+
+ 系统公共人才库
+
+
+
-
-
+
+
+ 归档日期:
- {item.school}
+ {item.pass_time}
+
+
+ 归档前阶段:
- | {item.specialty}
+ {item.ago === 0
+ ? '人才推荐'
+ : item.ago === 1
+ ? '初筛'
+ : item.ago === 2
+ ? '复筛'
+ : item.ago === 3
+ ? '面试'
+ : item.ago === 4
+ ? '沟通Offer'
+ : '待入职'}
+
+
+ 归档原因:
- | {item.education}
-
-
- |{item.at_school}
+ {item.pass_why}
-
-
-
- 申请日期:
-
- {item.event_time}
-
-
-
- 应聘职位:
- {item.job_name}
-
-
- 归档人才库:
- 系统公共人才库
-
-
-
-
-
- 归档日期:
-
- {item.pass_time}
-
-
-
- 归档前阶段:
-
- {item.ago === 0
- ? '人才推荐'
- : item.ago === 1
- ? '初筛'
- : item.ago === 2
- ? '复筛'
- : item.ago === 3
- ? '面试'
- : item.ago === 4
- ? '沟通Offer'
- : '待入职'}
-
-
-
- 归档原因:
-
- {item.pass_why}
-
-
-
-
- )
- })}
+ )
+ })
+ ) : (
+
+
+
+ )}
@@ -458,11 +563,14 @@ export default class Talent_pool extends Component {
visible={this.state.isaddscreen}
data={this.state.data}
onCancel={() => {
- this.setState({
- isaddscreen: false,
- },()=>{
- this.handelupdatascreen()
- })
+ this.setState(
+ {
+ isaddscreen: false,
+ },
+ () => {
+ this.handelupdatascreen()
+ }
+ )
}}
/>
diff --git a/src/setupProxy.js b/src/setupProxy.js
index 953c886..c1c4250 100644
--- a/src/setupProxy.js
+++ b/src/setupProxy.js
@@ -1,12 +1,12 @@
const { createProxyMiddleware } = require('http-proxy-middleware')
// https://legu-cdn-source.obs.cn-east-2.myhuaweicloud.com
module.exports = function(app){
- debugger
app.use(
- createProxyMiddleware('/pdf',{ //遇见/api1前缀的请求,就会触发该代理配置
+ createProxyMiddleware('/pdf',{ //遇见/pdf前缀的请求,就会触发该代理配置
target:'https://legu-cdn-source.obs.cn-east-2.myhuaweicloud.com', //请求转发给谁
changeOrigin:true,//控制服务器收到的请求头中Host的值
- pathRewrite:{'^/pdf':''} //重写请求路径(必须)
+ pathRewrite:{'^/pdf':''}, //重写请求路径(必须)
+ logLevel: "debug",
}),
)
}
\ No newline at end of file
diff --git a/src/util/request.js b/src/util/request.js
index 4c0d636..0c4b836 100644
--- a/src/util/request.js
+++ b/src/util/request.js
@@ -28,9 +28,9 @@ import memoryUtils from './memoryUtils'
import storageUtils from './storageUtils'
// const baseURL = 'http://10.0.0.94:7800/api/v1'
-const baseURL = 'http://10.0.0.240:7800/api/v1'
+// const baseURL = 'http://10.0.0.240:7800/api/v1'
// const baseURL = 'http://myip.legu.cc:7800/api/v1'
-// const baseURL = 'http://10.0.0.4:7800/api/v1'
+const baseURL = 'http://10.0.0.4:7800/api/v1'
axios.defaults.timeout = 600000
axios.defaults.baseURL = baseURL
diff --git a/src/util/requestURL.js b/src/util/requestURL.js
index 51ba4f6..3a1b9d5 100644
--- a/src/util/requestURL.js
+++ b/src/util/requestURL.js
@@ -17,6 +17,11 @@ export function resumeaffix(params){
return request('post','/itr/resume_affix',params)
}
+// 手动添加候选人
+export function manual_resume(params){
+ return request('post','/forms/manual_resume',params)
+}
+
//面试安排
//获取用户名
@@ -243,5 +248,9 @@ export function get_number(params){
return request('get','/itr/get_number',params)
}
+export function send_talent_pool(params){
+ return request('post','/itr/send_talent_pool',params)
+}
+