Merge pull request 'feature/cl' (#29) from feature/cl into dev
Reviewed-on: http://221.226.25.34:3000/liang.cheng/trunk/pulls/29
This commit is contained in:
commit
bd5d3b1704
|
|
@ -5,6 +5,7 @@
|
|||
"packages": {
|
||||
"": {
|
||||
"dependencies": {
|
||||
"baidu-template-pro": "^1.0.0",
|
||||
"dom-to-image": "^2.6.0",
|
||||
"file-saver": "^2.0.5",
|
||||
"lodash": "^4.17.21",
|
||||
|
|
@ -301,6 +302,11 @@
|
|||
"resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
|
||||
"integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg=="
|
||||
},
|
||||
"node_modules/baidu-template-pro": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/baidu-template-pro/-/baidu-template-pro-1.0.0.tgz",
|
||||
"integrity": "sha512-gnw6uvCn4CvZZ9d1Tu+a0B7BjQuNXvDcxsJk7bwxTpNutj6JFIxcy2sS0rB2/0/t9GwatoEIXd8HV0qkXpdRow=="
|
||||
},
|
||||
"node_modules/base64-arraybuffer": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmmirror.com/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz",
|
||||
|
|
@ -2213,6 +2219,11 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"baidu-template-pro": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/baidu-template-pro/-/baidu-template-pro-1.0.0.tgz",
|
||||
"integrity": "sha512-gnw6uvCn4CvZZ9d1Tu+a0B7BjQuNXvDcxsJk7bwxTpNutj6JFIxcy2sS0rB2/0/t9GwatoEIXd8HV0qkXpdRow=="
|
||||
},
|
||||
"base64-arraybuffer": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmmirror.com/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz",
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
{
|
||||
"dependencies": {
|
||||
"baidu-template-pro": "^1.0.0",
|
||||
"dom-to-image": "^2.6.0",
|
||||
"file-saver": "^2.0.5",
|
||||
"lodash": "^4.17.21",
|
||||
|
|
|
|||
|
|
@ -3,6 +3,15 @@ import {
|
|||
WeaTools
|
||||
} from 'ecCom'
|
||||
|
||||
export const getHasRight = (params) => {
|
||||
return WeaTools.callApi('/api/bs/hrmorganization/personnelresume/hasRight', 'GET', params);
|
||||
export const getHasRight = () => {
|
||||
return WeaTools.callApi('/api/bs/hrmorganization/personnelresume/hasRight', 'GET');
|
||||
}
|
||||
|
||||
|
||||
export const getPersonnelResume = (params) => {
|
||||
return WeaTools.callApi('/api/bs/hrmorganization/personnelresume/getResumeList', 'GET', params);
|
||||
}
|
||||
|
||||
export const getAdvanceSearchCondition = (params) => {
|
||||
return WeaTools.callApi('/api/bs/hrmorganization/personnelresume/personnelScreening', 'GET', params);
|
||||
}
|
||||
|
|
@ -0,0 +1,135 @@
|
|||
import {
|
||||
WeaDialog,
|
||||
WeaFormItem,
|
||||
WeaNewScroll,
|
||||
WeaSearchGroup,
|
||||
WeaMoreButton,
|
||||
WeaPopoverHrm
|
||||
} from 'ecCom'
|
||||
|
||||
import {
|
||||
Row,
|
||||
Col,
|
||||
Spin,
|
||||
Button,
|
||||
} from 'antd'
|
||||
|
||||
import {
|
||||
WeaSwitch
|
||||
} from 'comsMobx'
|
||||
|
||||
import {
|
||||
i18n
|
||||
} from '../public/i18n';
|
||||
import AttachToNumberField from './NewNumberField';
|
||||
import "../style/common.less";
|
||||
|
||||
export default class SearchPanelDialog extends React.Component {
|
||||
constructor(props) {
|
||||
super(props);
|
||||
this.state = {
|
||||
width: 700,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
getForm() {
|
||||
const {
|
||||
condition,
|
||||
form,
|
||||
isFormInit,
|
||||
} = this.props;
|
||||
|
||||
let arr = [];
|
||||
isFormInit && condition.map(c => {
|
||||
c.items.map((field, index) => {
|
||||
arr.push(<Col ecId={`${this && this.props && this.props.ecId || ''}_Col@4cc308@${index}`} span={(index % 2 == 0) ? 10 : 11} offset={1}>
|
||||
<div style={{ marginTop: 20 }}>
|
||||
<WeaFormItem ecId={`${this && this.props && this.props.ecId || ''}_WeaFormItem@u6ex85@${index}`}
|
||||
label={`${field.label}`}
|
||||
labelCol={{ span: `${field.labelcol}` }}
|
||||
wrapperCol={{ span: `${field.fieldcol}` }}>
|
||||
{<WeaSwitch ecId={`${this && this.props && this.props.ecId || ''}_WeaSwitch@p7d3td@${index}`} fieldConfig={field} form={form} formParams={form.getFormParams()} />}
|
||||
</WeaFormItem>
|
||||
</div>
|
||||
</Col>)
|
||||
})
|
||||
})
|
||||
return <Row ecId={`${this && this.props && this.props.ecId || ''}_Row@ppeb6z`}>{arr}</Row>
|
||||
}
|
||||
|
||||
getSearchGroupForm() {
|
||||
const {
|
||||
condition,
|
||||
form,
|
||||
isFormInit,
|
||||
} = this.props;
|
||||
|
||||
let arr = [];
|
||||
isFormInit && condition.map((c, i) => {
|
||||
let _arr = [];
|
||||
c.items.map((field, index) => {
|
||||
_arrarr.push(<Col ecId={`${this && this.props && this.props.ecId || ''}_Col@4cc308@${index}`} span={(index % 2 == 0) ? 10 : 11} offset={1}>
|
||||
<div style={{ marginTop: 20 }}>
|
||||
<WeaFormItem ecId={`${this && this.props && this.props.ecId || ''}_WeaFormItem@u6ex85@${index}`}
|
||||
label={`${field.label}`}
|
||||
labelCol={{ span: `${field.labelcol}` }}
|
||||
wrapperCol={{ span: `${field.fieldcol}` }}>
|
||||
{<WeaSwitch ecId={`${this && this.props && this.props.ecId || ''}_WeaSwitch@p7d3td@${index}`} fieldConfig={field} form={form} formParams={form.getFormParams()} />}
|
||||
</WeaFormItem>
|
||||
</div>
|
||||
</Col>)
|
||||
})
|
||||
arr.push(<WeaSearchGroup ecId={`${this && this.props && this.props.ecId || ''}_WeaSearchGroup@qaih5l@${i}`} needTigger={true} title={c.title} showGroup={c.defaultshow} items={_arr} col={1} />)
|
||||
})
|
||||
|
||||
return <Row ecId={`${this && this.props && this.props.ecId || ''}_Row@ppeb6z`}>{arr}</Row>;
|
||||
}
|
||||
|
||||
|
||||
|
||||
render() {
|
||||
const {
|
||||
title,
|
||||
visible,
|
||||
search,
|
||||
onCancel,
|
||||
loading,
|
||||
height,
|
||||
conditionLen,
|
||||
form
|
||||
} = this.props, {
|
||||
width,
|
||||
} = this.state;
|
||||
|
||||
const buttons = [
|
||||
(<Button ecId={`${this && this.props && this.props.ecId || ''}_Button@jd6baw`} type="primary" onClick={() => search()} disabled={loading}>{i18n.button.search()}</Button>),
|
||||
(<Button ecId={`${this && this.props && this.props.ecId || ''}_Button@jd6baw`} onClick={() => form.reset()} disabled={loading}>{i18n.button.reset()}</Button>),
|
||||
(<Button ecId={`${this && this.props && this.props.ecId || ''}_Button@jd6baw`} onClick={() => onCancel()} disabled={loading}>{i18n.button.cancel()}</Button>)
|
||||
];
|
||||
|
||||
return (
|
||||
<WeaDialog ecId={`${this && this.props && this.props.ecId || ''}_WeaDialog@1txk5f`}
|
||||
className="new-edit-wrapper"
|
||||
title={title}
|
||||
icon="icon-coms-hrm"
|
||||
iconBgcolor="#217346"
|
||||
visible={visible}
|
||||
closable={true}
|
||||
hasScroll={true}
|
||||
onCancel={() => onCancel()}
|
||||
buttons={buttons}
|
||||
style={{ width: width, height: height }}
|
||||
initLoadCss
|
||||
>
|
||||
{
|
||||
loading ? <div className='hrm-loading-center-small'>
|
||||
<Spin ecId={`${this && this.props && this.props.ecId || ''}_Spin@4ygl4a`} spinning={loading}></Spin>
|
||||
</div>
|
||||
: conditionLen > 1 ? this.getSearchGroupForm() : this.getForm()}
|
||||
|
||||
|
||||
</WeaDialog>
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,57 @@
|
|||
|
||||
;(function(window){
|
||||
//符合commonjs规范引入依赖
|
||||
if(typeof module !== 'undefined'){
|
||||
window.saveAs = require('file-saver')
|
||||
window.baidu = require('baidu-template-pro')
|
||||
}
|
||||
function getModelHtml(mhtml,style=''){
|
||||
return`
|
||||
Content-Type: text/html; charset="utf-8"
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<style>
|
||||
${style}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
${mhtml}
|
||||
</body>
|
||||
</html>
|
||||
`
|
||||
}
|
||||
//主函数
|
||||
let exportWord = ({mhtml,style,filename,data,selector})=>{
|
||||
|
||||
if(selector){
|
||||
let nodes = window.document.querySelectorAll(selector)
|
||||
mhtml = nodes.length>0?Array.from(nodes).reduce((a,b)=>a+b.innerHTML,''):''
|
||||
|
||||
}
|
||||
|
||||
//没有baiduTemplatePro.js依赖时必须传入selector
|
||||
if (!selector && typeof baidu === 'undefined') {
|
||||
console.error("wordExport : missing (selector) for params without depandency (baiduTemplatePro.js)");
|
||||
return;
|
||||
}
|
||||
if (typeof saveAs === "undefined") {
|
||||
console.error("wordExport : missing dependency (FileSaver.js)");
|
||||
return;
|
||||
}
|
||||
|
||||
//没有模板引擎时,将获取节点的html字符串生成模板
|
||||
let html = typeof baidu !== 'undefined'?baidu.template(getModelHtml(mhtml,style),data):getModelHtml(mhtml)
|
||||
|
||||
let blob = new Blob([html],{type:'application/msword;charset=utf-8'})
|
||||
saveAs(blob,filename+'.doc')
|
||||
}
|
||||
//添加exportWord到全局对象
|
||||
window.exportWord = window.exportWord||exportWord
|
||||
|
||||
//如果符合commonjs规范,exports出去
|
||||
if(typeof module==='object'&&typeof module.exports==='object'){
|
||||
module.exports = {exportWord}
|
||||
}
|
||||
|
||||
})(window)
|
||||
|
|
@ -20,7 +20,7 @@ import {
|
|||
Button,
|
||||
message,
|
||||
Switch,
|
||||
Menu, Dropdown, Icon, Select
|
||||
Menu, Dropdown, Icon, Select,Progress
|
||||
} from 'antd'
|
||||
import {
|
||||
WeaSwitch,
|
||||
|
|
@ -31,7 +31,10 @@ import {
|
|||
} from '../../public/i18n';
|
||||
|
||||
import '../../style/resume.less';
|
||||
import SearchPanelDialog from '../SearchPanelDialog';
|
||||
|
||||
import { renderNoright } from '../../util';
|
||||
import { exportWord } from '../mhtmlToWord'
|
||||
|
||||
|
||||
const toJS = mobx.toJS;
|
||||
|
|
@ -73,6 +76,22 @@ export default class PersonnelResume extends React.Component {
|
|||
personnelResume.getHasRight();
|
||||
}
|
||||
|
||||
onSelect = (e) => {
|
||||
const {
|
||||
personnelResume
|
||||
} = this.props,{
|
||||
form,
|
||||
show
|
||||
} = personnelResume;
|
||||
|
||||
personnelResume.show = ! show;
|
||||
personnelResume.params = {
|
||||
...form.getFormParams()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
//左侧树
|
||||
getTree = () => {
|
||||
const {
|
||||
|
|
@ -80,7 +99,9 @@ export default class PersonnelResume extends React.Component {
|
|||
} = this.props;
|
||||
const {
|
||||
companysId,
|
||||
} = personnelResume
|
||||
params
|
||||
} = personnelResume;
|
||||
|
||||
|
||||
let tree = (
|
||||
<WeaOrgTree ecId={`${this && this.props && this.props.ecId || ''}_WeaOrgTree@dhi1ro`}
|
||||
|
|
@ -89,6 +110,8 @@ export default class PersonnelResume extends React.Component {
|
|||
loading
|
||||
needSearch
|
||||
noCache={true}
|
||||
params={params}
|
||||
onSelect={this.onSelect}
|
||||
needDropMenu={false}
|
||||
isLoadSubDepartment={true}
|
||||
topPrefix={'hrmSearch'}
|
||||
|
|
@ -122,7 +145,10 @@ export default class PersonnelResume extends React.Component {
|
|||
personnelResume.nodeType = type;
|
||||
if (type == '4') {
|
||||
personnelResume.resourceId = id;
|
||||
personnelResume.getPersonnelResume();
|
||||
setTimeout(function() {
|
||||
personnelResume.getPersonnelResume();
|
||||
},1000)
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -151,7 +177,11 @@ export default class PersonnelResume extends React.Component {
|
|||
</Select>)
|
||||
|
||||
topMenu.map((item, i) => {
|
||||
btns.push(<Button type='primary' onClick={() => this.handleClick(item)}>{item.menuName}</Button>);
|
||||
if (item.menuFun === 'screening') {
|
||||
btns.push(<Button id="top-screening" type='primary' onClick={() => this.handleClick(item)}>{item.menuName}</Button>);
|
||||
}else {
|
||||
btns.push(<Button type='primary' onClick={() => this.handleClick(item)}>{item.menuName}</Button>);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
|
@ -202,6 +232,42 @@ export default class PersonnelResume extends React.Component {
|
|||
this[key] && this[key]();
|
||||
}
|
||||
|
||||
//人员筛选
|
||||
screening() {
|
||||
const {
|
||||
personnelResume
|
||||
} = this.props,{
|
||||
show,form
|
||||
} = personnelResume;
|
||||
form.reset();
|
||||
personnelResume.show = ! show;
|
||||
personnelResume.getSearchCondition();
|
||||
|
||||
}
|
||||
|
||||
//导出当前
|
||||
currentExport() {
|
||||
const {
|
||||
personnelResume
|
||||
} = this.props;
|
||||
const {
|
||||
resumeList
|
||||
} = personnelResume;
|
||||
exportWord({
|
||||
filename:`人员简历-${resumeList.lastName}`,
|
||||
selector:"#personnel-resume",
|
||||
style:`.title {
|
||||
font-size: 18px;
|
||||
font-weight: 900;
|
||||
text-align: center;
|
||||
}
|
||||
.photos{
|
||||
width: 100px;
|
||||
height: 120px;
|
||||
}`
|
||||
})
|
||||
}
|
||||
|
||||
isEmptyObject(obj) {
|
||||
for (let key in obj) {
|
||||
return false;
|
||||
|
|
@ -216,7 +282,7 @@ export default class PersonnelResume extends React.Component {
|
|||
personnelResume
|
||||
} = this.props;
|
||||
const {
|
||||
hasRight, defaultShowLeft, resumeList
|
||||
hasRight, defaultShowLeft, resumeList,percent,show,form,condition,dialogLoading
|
||||
} = personnelResume;
|
||||
|
||||
if (hasRight === false) {
|
||||
|
|
@ -241,105 +307,117 @@ export default class PersonnelResume extends React.Component {
|
|||
onDropMenuClick={(e) => this.handleMenuClick(e)}
|
||||
>
|
||||
<WeaLeftRightLayout ecId={`${this && this.props && this.props.ecId || ''}_WeaLeftRightLayout@7muhhb`} isNew={true} showLeft={defaultShowLeft} leftCom={this.getTree()}>
|
||||
<div id='personnel-resume'>
|
||||
<div className='content'>
|
||||
<p className='title'>人员简历信息</p>
|
||||
<table border="1" align="center" width="750" cellspacing='0' className='resume-table'>
|
||||
<tr align="center" height='50'>
|
||||
<td colspan="7">一、基本信息</td>
|
||||
</tr>
|
||||
<tr align="center" height='50'>
|
||||
<td width="100" >姓名</td>
|
||||
<td width="100">{resumeList.lastName}</td>
|
||||
<td width="100">性别</td>
|
||||
<td width="100">{resumeList.sex}</td>
|
||||
<td width="100">出生年月</td>
|
||||
<td width="100">{resumeList.birthday}</td>
|
||||
<td rowspan="3"><img style={{ "width": "100px", "height": "120px" }} src={resumeList.image} /></td>
|
||||
</tr>
|
||||
<tr align="center" height='50'>
|
||||
<td width="100" >籍贯</td>
|
||||
<td width="100">{resumeList.native}</td>
|
||||
<td width="100">政治面貌</td>
|
||||
<td width="100">{resumeList.politics}</td>
|
||||
<td width="100">部门</td>
|
||||
<td width="100">{resumeList.department}</td>
|
||||
</tr>
|
||||
<tr align="center" height='50'>
|
||||
<td width="100">婚姻状况</td>
|
||||
<td width="100">{resumeList.marriage}</td>
|
||||
<td width="100">岗位</td>
|
||||
<td width="100">{resumeList.jobtitle}</td>
|
||||
<td width="100">入职时间</td>
|
||||
<td width="100">{resumeList.companystartdate}</td>
|
||||
</tr>
|
||||
<tr align="center" height='50'>
|
||||
<td width="100">参加工作时间</td>
|
||||
<td width="100" colspan="2">{resumeList.workstartdate}</td>
|
||||
<td width="100" colspan="2">身份证号</td>
|
||||
<td width="100" colspan="2">{resumeList.idCard}</td>
|
||||
</tr>
|
||||
<tr align="center" height='50'>
|
||||
<td width="100" rowspan="2">家庭地址</td>
|
||||
<td width="100" rowspan="2" colspan="2">{resumeList.address}</td>
|
||||
<td width="100" colspan="2">联系电话</td>
|
||||
<td width="100" colspan="2">{resumeList.telephone}</td>
|
||||
</tr>
|
||||
<tr align="center" height='50'>
|
||||
<td width="100" colspan="2">E-mail</td>
|
||||
<td width="100" colspan="2">{resumeList.email}</td>
|
||||
</tr>
|
||||
{
|
||||
!this.isEmptyObject(resumeList) ? <div id='personnel-resume'>
|
||||
<div className='content'>
|
||||
<p className='title'>人员简历信息</p>
|
||||
<table border="1" align="center" width="750" cellspacing='0' className='resume-table'>
|
||||
<tr align="center" height='50'>
|
||||
<td colspan="7">一、基本信息</td>
|
||||
</tr>
|
||||
<tr align="center" height='50'>
|
||||
<td width="100" >姓名</td>
|
||||
<td width="100">{resumeList.lastName}</td>
|
||||
<td width="100">性别</td>
|
||||
<td width="100">{resumeList.sex}</td>
|
||||
<td width="100">出生年月</td>
|
||||
<td width="100">{resumeList.birthday}</td>
|
||||
<td rowspan="3"><img className='photos' src={resumeList.image} /></td>
|
||||
</tr>
|
||||
<tr align="center" height='50'>
|
||||
<td width="100" >籍贯</td>
|
||||
<td width="100">{resumeList.native}</td>
|
||||
<td width="100">政治面貌</td>
|
||||
<td width="100">{resumeList.politics}</td>
|
||||
<td width="100">部门</td>
|
||||
<td width="100">{resumeList.department}</td>
|
||||
</tr>
|
||||
<tr align="center" height='50'>
|
||||
<td width="100">婚姻状况</td>
|
||||
<td width="100">{resumeList.marriage}</td>
|
||||
<td width="100">岗位</td>
|
||||
<td width="100">{resumeList.jobtitle}</td>
|
||||
<td width="100">入职时间</td>
|
||||
<td width="100">{resumeList.companystartdate}</td>
|
||||
</tr>
|
||||
<tr align="center" height='50'>
|
||||
<td width="100">参加工作时间</td>
|
||||
<td width="100" colspan="2">{resumeList.workstartdate}</td>
|
||||
<td width="100" colspan="2">身份证号</td>
|
||||
<td width="100" colspan="2">{resumeList.idCard}</td>
|
||||
</tr>
|
||||
<tr align="center" height='50'>
|
||||
<td width="100" rowspan="2">家庭地址</td>
|
||||
<td width="100" rowspan="2" colspan="2">{resumeList.address}</td>
|
||||
<td width="100" colspan="2">联系电话</td>
|
||||
<td width="100" colspan="2">{resumeList.telephone}</td>
|
||||
</tr>
|
||||
<tr align="center" height='50'>
|
||||
<td width="100" colspan="2">E-mail</td>
|
||||
<td width="100" colspan="2">{resumeList.email}</td>
|
||||
</tr>
|
||||
|
||||
{
|
||||
resumeList.tables.map((item, index) => {
|
||||
return (
|
||||
<React.Fragment key={index}>
|
||||
<tr align="center" height='50'>
|
||||
<td colspan="7">{item.title}</td>
|
||||
</tr>
|
||||
<tr align="center" height='50'>
|
||||
{
|
||||
item.columns.map(column => {
|
||||
return (
|
||||
<td width="100" rowspan={column.rowspans} colspan={column.colspans}>{column.name}</td>
|
||||
)
|
||||
})
|
||||
}
|
||||
</tr>
|
||||
{
|
||||
resumeList.tables.map((item, index) => {
|
||||
return (
|
||||
<React.Fragment key={index}>
|
||||
<tr align="center" height='50'>
|
||||
<td colspan="7">{item.title}</td>
|
||||
</tr>
|
||||
<tr align="center" height='50'>
|
||||
{
|
||||
item.columns.map(column => {
|
||||
return (
|
||||
<td width="100" rowspan={column.rowspans} colspan={column.colspans}>{column.name}</td>
|
||||
)
|
||||
})
|
||||
}
|
||||
</tr>
|
||||
|
||||
{
|
||||
item.datas.map(data => {
|
||||
return (
|
||||
<tr align="center" height='50'>
|
||||
{
|
||||
data.map((row, index) => {
|
||||
return (
|
||||
<td width="100" rowspan={row.rowspans} colspan={row.colspans}>{row.value}</td>
|
||||
)
|
||||
})
|
||||
}
|
||||
</tr>
|
||||
)
|
||||
})
|
||||
}
|
||||
{
|
||||
item.datas.map(data => {
|
||||
return (
|
||||
<tr align="center" height='50'>
|
||||
{
|
||||
data.map((row, index) => {
|
||||
return (
|
||||
<td width="100" rowspan={row.rowspans} colspan={row.colspans}>{row.value}</td>
|
||||
)
|
||||
})
|
||||
}
|
||||
</tr>
|
||||
)
|
||||
})
|
||||
}
|
||||
|
||||
</React.Fragment>
|
||||
)
|
||||
})
|
||||
}
|
||||
<tr align="center" height='200'>
|
||||
<td width="100">个人自述</td>
|
||||
<td width="100" colspan="6">{resumeList.selfStatement}</td>
|
||||
</tr>
|
||||
</React.Fragment>
|
||||
)
|
||||
})
|
||||
}
|
||||
<tr align="center" height='200'>
|
||||
<td width="100">个人自述</td>
|
||||
<td width="100" colspan="6">{resumeList.selfStatement}</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
: <Progress percent={percent} strokeWidth={10} />}
|
||||
</WeaLeftRightLayout>
|
||||
</WeaTop>
|
||||
</WeaRightMenu>
|
||||
<SearchPanelDialog ecId={`${this && this.props && this.props.ecId || ''}_SearchPanelDialog@q4rrwm`}
|
||||
title={"人员筛选"}
|
||||
visible={show}
|
||||
condition={toJS(condition)}
|
||||
form={form}
|
||||
isFormInit={form.isFormInit}
|
||||
loading={dialogLoading}
|
||||
height={200}
|
||||
conditionLen={1}
|
||||
search={() => this.onSelect()}
|
||||
onCancel={() => personnelResume.show = ! show}
|
||||
/>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
|
|
|||
Binary file not shown.
|
After Width: | Height: | Size: 174 KiB |
|
|
@ -32,196 +32,203 @@ export class PersonnelResumeStore {
|
|||
@observable form = new WeaForm();
|
||||
@observable loading = true;
|
||||
@observable resourceId = '';
|
||||
@observable resumeList = {
|
||||
lastName: '徐凤年',
|
||||
sex: '男',
|
||||
birthday: '1999-10-10',
|
||||
image: '/weaver/weaver.file.FileDownload?fileid=1538',
|
||||
native: '上海',
|
||||
politics: '党员',
|
||||
department: '财务部',
|
||||
marriage: '已婚',
|
||||
jobtitle: '剑道第一人',
|
||||
companystartdate: '2020-12-31',
|
||||
workstartdate: '2011-10-10',
|
||||
idCard: '3409871298377483992',
|
||||
address: '江苏省南京市雨花台区润和创智中心',
|
||||
telephone: '19823045643',
|
||||
email: '16378324@163.com',
|
||||
selfStatement:'本人性格开朗,秦武大帝转世,世间武道的第一人',
|
||||
tables: [
|
||||
{
|
||||
title: '二、社会保险及住房公积金缴纳情况(单位/元)',
|
||||
columns: [
|
||||
{
|
||||
name: '首次参保时间',
|
||||
colspans: 2,
|
||||
rowspans: 1
|
||||
},
|
||||
{
|
||||
name: '养老保险',
|
||||
colspans: 1,
|
||||
rowspans: 1
|
||||
},
|
||||
{
|
||||
name: '医疗保险',
|
||||
colspans: 1,
|
||||
rowspans: 1
|
||||
},
|
||||
{
|
||||
name: '失业保险',
|
||||
colspans: 1,
|
||||
rowspans: 1
|
||||
},
|
||||
{
|
||||
name: '住房公积金',
|
||||
colspans: 1,
|
||||
rowspans: 1
|
||||
},
|
||||
{
|
||||
name: '企业年金',
|
||||
colspans: 1,
|
||||
rowspans: 1
|
||||
},
|
||||
],
|
||||
datas: [
|
||||
[{
|
||||
value: '2022-10-02',
|
||||
colspans: 2,
|
||||
rowspans: 1
|
||||
}, {
|
||||
value: '80',
|
||||
colspans: 1,
|
||||
rowspans: 1
|
||||
},
|
||||
{
|
||||
value: '36',
|
||||
colspans: 1,
|
||||
rowspans: 1
|
||||
}, {
|
||||
value: '360',
|
||||
colspans: 1,
|
||||
rowspans: 1
|
||||
}, {
|
||||
value: '180',
|
||||
colspans: 1,
|
||||
rowspans: 1
|
||||
}, {
|
||||
value: '20000',
|
||||
colspans: 2,
|
||||
rowspans: 1
|
||||
}]
|
||||
]
|
||||
},
|
||||
{
|
||||
title: '三、家庭成员信息(包括父母、配偶、子女)',
|
||||
columns: [
|
||||
{
|
||||
name: '关系',
|
||||
colspans: 2,
|
||||
rowspans: 1
|
||||
},
|
||||
{
|
||||
name: '姓名',
|
||||
colspans: 1,
|
||||
rowspans: 1
|
||||
},
|
||||
{
|
||||
name: '工作单位及职务',
|
||||
colspans: 1,
|
||||
rowspans: 1
|
||||
},
|
||||
{
|
||||
name: '联系电话',
|
||||
colspans: 1,
|
||||
rowspans: 1
|
||||
},
|
||||
{
|
||||
name: '住址',
|
||||
colspans: 2,
|
||||
rowspans: 1
|
||||
}
|
||||
],
|
||||
datas: [
|
||||
[
|
||||
{
|
||||
value: '父子',
|
||||
colspans: 2,
|
||||
rowspans: 1
|
||||
}, {
|
||||
value: '徐晓',
|
||||
colspans: 1,
|
||||
rowspans: 1
|
||||
},
|
||||
{
|
||||
value: '北凉王',
|
||||
colspans: 1,
|
||||
rowspans: 1
|
||||
}, {
|
||||
value: '1589756859',
|
||||
colspans: 1,
|
||||
rowspans: 1
|
||||
}, {
|
||||
value: '江苏省南京市北凉军营',
|
||||
colspans: 2,
|
||||
rowspans: 1
|
||||
}
|
||||
],
|
||||
[
|
||||
{
|
||||
value: '母子',
|
||||
colspans: 2,
|
||||
rowspans: 1
|
||||
}, {
|
||||
value: '吴素',
|
||||
colspans: 1,
|
||||
rowspans: 1
|
||||
},
|
||||
{
|
||||
value: '北凉王妃',
|
||||
colspans: 1,
|
||||
rowspans: 1
|
||||
}, {
|
||||
value: '15897566487',
|
||||
colspans: 1,
|
||||
rowspans: 1
|
||||
}, {
|
||||
value: '江苏省南京市北凉龙雀军团',
|
||||
colspans: 2,
|
||||
rowspans: 1
|
||||
}
|
||||
],
|
||||
[
|
||||
{
|
||||
value: '女儿',
|
||||
colspans: 2,
|
||||
rowspans: 1
|
||||
}, {
|
||||
value: '徐念凉',
|
||||
colspans: 1,
|
||||
rowspans: 1
|
||||
},
|
||||
{
|
||||
value: '北凉公主',
|
||||
colspans: 1,
|
||||
rowspans: 1
|
||||
}, {
|
||||
value: '15897566587',
|
||||
colspans: 1,
|
||||
rowspans: 1
|
||||
}, {
|
||||
value: '莽荒之地',
|
||||
colspans: 2,
|
||||
rowspans: 1
|
||||
}
|
||||
]
|
||||
]
|
||||
@observable resumeList = {};
|
||||
@observable percent = 0;
|
||||
@observable visible = false;
|
||||
@observable show = false;
|
||||
@observable params = {};
|
||||
@observable condition = [];
|
||||
@observable dialogLoading = true;
|
||||
// @observable resumeList = {
|
||||
// lastName: '徐凤年',
|
||||
// sex: '男',
|
||||
// birthday: '1999-10-10',
|
||||
// image:'',
|
||||
// native: '上海',
|
||||
// politics: '党员',
|
||||
// department: '财务部',
|
||||
// marriage: '已婚',
|
||||
// jobtitle: '剑道第一人',
|
||||
// companystartdate: '2020-12-31',
|
||||
// workstartdate: '2011-10-10',
|
||||
// idCard: '3409871298377483992',
|
||||
// address: '江苏省南京市雨花台区润和创智中心',
|
||||
// telephone: '19823045643',
|
||||
// email: '16378324@163.com',
|
||||
// selfStatement:'本人性格开朗,秦武大帝转世,世间武道的第一人',
|
||||
// tables: [
|
||||
// {
|
||||
// title: '二、社会保险及住房公积金缴纳情况(单位/元)',
|
||||
// columns: [
|
||||
// {
|
||||
// name: '首次参保时间',
|
||||
// colspans: 2,
|
||||
// rowspans: 1
|
||||
// },
|
||||
// {
|
||||
// name: '养老保险',
|
||||
// colspans: 1,
|
||||
// rowspans: 1
|
||||
// },
|
||||
// {
|
||||
// name: '医疗保险',
|
||||
// colspans: 1,
|
||||
// rowspans: 1
|
||||
// },
|
||||
// {
|
||||
// name: '失业保险',
|
||||
// colspans: 1,
|
||||
// rowspans: 1
|
||||
// },
|
||||
// {
|
||||
// name: '住房公积金',
|
||||
// colspans: 1,
|
||||
// rowspans: 1
|
||||
// },
|
||||
// {
|
||||
// name: '企业年金',
|
||||
// colspans: 1,
|
||||
// rowspans: 1
|
||||
// },
|
||||
// ],
|
||||
// datas: [
|
||||
// [{
|
||||
// value: '2022-10-02',
|
||||
// colspans: 2,
|
||||
// rowspans: 1
|
||||
// }, {
|
||||
// value: '80',
|
||||
// colspans: 1,
|
||||
// rowspans: 1
|
||||
// },
|
||||
// {
|
||||
// value: '36',
|
||||
// colspans: 1,
|
||||
// rowspans: 1
|
||||
// }, {
|
||||
// value: '360',
|
||||
// colspans: 1,
|
||||
// rowspans: 1
|
||||
// }, {
|
||||
// value: '180',
|
||||
// colspans: 1,
|
||||
// rowspans: 1
|
||||
// }, {
|
||||
// value: '20000',
|
||||
// colspans: 2,
|
||||
// rowspans: 1
|
||||
// }]
|
||||
// ]
|
||||
// },
|
||||
// {
|
||||
// title: '三、家庭成员信息(包括父母、配偶、子女)',
|
||||
// columns: [
|
||||
// {
|
||||
// name: '关系',
|
||||
// colspans: 2,
|
||||
// rowspans: 1
|
||||
// },
|
||||
// {
|
||||
// name: '姓名',
|
||||
// colspans: 1,
|
||||
// rowspans: 1
|
||||
// },
|
||||
// {
|
||||
// name: '工作单位及职务',
|
||||
// colspans: 1,
|
||||
// rowspans: 1
|
||||
// },
|
||||
// {
|
||||
// name: '联系电话',
|
||||
// colspans: 1,
|
||||
// rowspans: 1
|
||||
// },
|
||||
// {
|
||||
// name: '住址',
|
||||
// colspans: 2,
|
||||
// rowspans: 1
|
||||
// }
|
||||
// ],
|
||||
// datas: [
|
||||
// [
|
||||
// {
|
||||
// value: '父子',
|
||||
// colspans: 2,
|
||||
// rowspans: 1
|
||||
// }, {
|
||||
// value: '徐晓',
|
||||
// colspans: 1,
|
||||
// rowspans: 1
|
||||
// },
|
||||
// {
|
||||
// value: '北凉王',
|
||||
// colspans: 1,
|
||||
// rowspans: 1
|
||||
// }, {
|
||||
// value: '1589756859',
|
||||
// colspans: 1,
|
||||
// rowspans: 1
|
||||
// }, {
|
||||
// value: '江苏省南京市北凉军营',
|
||||
// colspans: 2,
|
||||
// rowspans: 1
|
||||
// }
|
||||
// ],
|
||||
// [
|
||||
// {
|
||||
// value: '母子',
|
||||
// colspans: 2,
|
||||
// rowspans: 1
|
||||
// }, {
|
||||
// value: '吴素',
|
||||
// colspans: 1,
|
||||
// rowspans: 1
|
||||
// },
|
||||
// {
|
||||
// value: '北凉王妃',
|
||||
// colspans: 1,
|
||||
// rowspans: 1
|
||||
// }, {
|
||||
// value: '15897566487',
|
||||
// colspans: 1,
|
||||
// rowspans: 1
|
||||
// }, {
|
||||
// value: '江苏省南京市北凉龙雀军团',
|
||||
// colspans: 2,
|
||||
// rowspans: 1
|
||||
// }
|
||||
// ],
|
||||
// [
|
||||
// {
|
||||
// value: '女儿',
|
||||
// colspans: 2,
|
||||
// rowspans: 1
|
||||
// }, {
|
||||
// value: '徐念凉',
|
||||
// colspans: 1,
|
||||
// rowspans: 1
|
||||
// },
|
||||
// {
|
||||
// value: '北凉公主',
|
||||
// colspans: 1,
|
||||
// rowspans: 1
|
||||
// }, {
|
||||
// value: '15897566587',
|
||||
// colspans: 1,
|
||||
// rowspans: 1
|
||||
// }, {
|
||||
// value: '莽荒之地',
|
||||
// colspans: 2,
|
||||
// rowspans: 1
|
||||
// }
|
||||
// ]
|
||||
// ]
|
||||
|
||||
}
|
||||
]
|
||||
// }
|
||||
// ]
|
||||
|
||||
|
||||
}
|
||||
// }
|
||||
|
||||
|
||||
@observable defaultShowLeft = true;
|
||||
|
|
@ -231,12 +238,15 @@ export class PersonnelResumeStore {
|
|||
|
||||
|
||||
@action("获取操作按钮") getHasRight() {
|
||||
let _this = this;
|
||||
Api.getHasRight().then(res => {
|
||||
if (res.code === 200) {
|
||||
this.setHasRight(res.data.hasRight);
|
||||
res.data.rightMenu && this.setRightMenu(res.data.rightMenu);
|
||||
res.data.topMenu && this.setTopMenu(res.data.topMenu);
|
||||
res.data.hasRight && this.getPersonnelResume();
|
||||
setTimeout(function() {
|
||||
res.data.hasRight && _this.getPersonnelResume();
|
||||
},1000)
|
||||
} else {
|
||||
message.warning(res.msg);
|
||||
}
|
||||
|
|
@ -246,8 +256,58 @@ export class PersonnelResumeStore {
|
|||
}
|
||||
|
||||
@action("获取人员简历") getPersonnelResume() {
|
||||
this.resumeList = {};
|
||||
this.percent = 0;
|
||||
this.visible = false;
|
||||
this.interval = setInterval(() => this.getImportProcess(), 200);
|
||||
let params = {
|
||||
id:this.resourceId
|
||||
}
|
||||
Api.getPersonnelResume(params).then(res => {
|
||||
if (res.code === 200) {
|
||||
this.percent = 100;
|
||||
this.visible = true;
|
||||
this.resumeList = res.data;
|
||||
} else {
|
||||
clearInterval(this.interval);
|
||||
message.warning("简历模板加载失败");
|
||||
}
|
||||
}, error => {
|
||||
message.warning(error.msg);
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
@action("头部加载进度条") getImportProcess() {
|
||||
if(this.visible) {
|
||||
clearInterval(this.interval);
|
||||
}else {
|
||||
let max = 95;
|
||||
let min = this.percent;
|
||||
if(this.percent < max) {
|
||||
this.percent = Math.floor(Math.random() * (max - min)) + min;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@action("人员筛选表单") getSearchCondition() {
|
||||
this.dialogLoading = true;
|
||||
Api.getAdvanceSearchCondition().then(res => {
|
||||
if (res.code === 200) {
|
||||
this.dialogLoading = false;
|
||||
res.data.conditions && this.setCondition(res.data.conditions);
|
||||
res.data.conditions && this.form.initFormFields(res.data.conditions);
|
||||
} else {
|
||||
message.warning(res.msg);
|
||||
}
|
||||
}, error => {
|
||||
message.warning(error.msg);
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
setCondition(condition) {
|
||||
this.condition = condition;
|
||||
}
|
||||
|
||||
setTopMenu(topMenu) {
|
||||
|
|
|
|||
|
|
@ -190,7 +190,7 @@ export class RankSchemeStore {
|
|||
}
|
||||
|
||||
getSearchCondition() {
|
||||
this.setScLoadingStatus(false);
|
||||
this.setScLoadingStatus(true);
|
||||
Api.getAdvanceSearchCondition().then(res => {
|
||||
if (res.code === 200) {
|
||||
this.setScLoadingStatus(false);
|
||||
|
|
|
|||
|
|
@ -22,6 +22,19 @@
|
|||
}
|
||||
.resume-table {
|
||||
margin-top: 20px;
|
||||
.photos{
|
||||
width: 100px;
|
||||
height: 120px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.search-group{
|
||||
width: 420px;
|
||||
height: 200px;
|
||||
position: absolute;
|
||||
left: 44%;
|
||||
box-shadow: 2px 2px 10px #909090;
|
||||
background-color: #FFFFFF;
|
||||
}
|
||||
Loading…
Reference in New Issue