diff --git a/pc4mobx/organization/apis/personnelResume.js b/pc4mobx/organization/apis/personnelResume.js
index 7b3d0b4..c445ede 100644
--- a/pc4mobx/organization/apis/personnelResume.js
+++ b/pc4mobx/organization/apis/personnelResume.js
@@ -14,4 +14,16 @@ export const getPersonnelResume = (params) => {
export const getAdvanceSearchCondition = (params) => {
return WeaTools.callApi('/api/bs/hrmorganization/personnelresume/personnelScreening', 'GET', params);
+}
+
+export const downloadPerResume = (type) => {
+ fetch(`/api/bs/hrmorganization/personnelresume/downloadPerResume?type=${type}`).then(res => res.blob().then(blob => {
+ var filename= type == 0 ? `人员简历合并导出.docx` : `全部简历.zip`
+ var a = document.createElement('a');
+ var url = window.URL.createObjectURL(blob);
+ a.href = url;
+ a.download = filename;
+ a.click();
+ window.URL.revokeObjectURL(url);
+ }))
}
\ No newline at end of file
diff --git a/pc4mobx/organization/components/resource/Customization.js b/pc4mobx/organization/components/resource/Customization.js
new file mode 100644
index 0000000..51c3b21
--- /dev/null
+++ b/pc4mobx/organization/components/resource/Customization.js
@@ -0,0 +1,43 @@
+import {
+ observer
+} from 'mobx-react';
+import {
+ WeaTransfer,
+} from 'ecCom';
+import {
+ toJS
+} from 'mobx';
+import isEmpty from 'lodash/isEmpty'
+
+@observer
+export default class Customization extends React.Component {
+ constructor(props) {
+ super(props);
+ }
+
+ render() {
+ const {
+ store
+ } = this.props, {
+ TRANSFER,
+ transfer,
+ leftHeader,
+ rightHeader,
+ } = store, {
+ transferDatas,
+ transferKeys
+ } = transfer;
+
+ return (
+
+
+
+ );
+ }
+}
\ No newline at end of file
diff --git a/pc4mobx/organization/components/resource/PersonnelResume.js b/pc4mobx/organization/components/resource/PersonnelResume.js
index 1a46fb8..31a1d9c 100644
--- a/pc4mobx/organization/components/resource/PersonnelResume.js
+++ b/pc4mobx/organization/components/resource/PersonnelResume.js
@@ -193,6 +193,7 @@ export default class PersonnelResume extends React.Component {
this[item.menuFun] && this[item.menuFun]();
}
+ //模板修改
handleChange(value) {
}
@@ -268,6 +269,22 @@ export default class PersonnelResume extends React.Component {
})
}
+ //合并导出
+ mergeExport() {
+ const {
+ personnelResume
+ } = this.props;
+ personnelResume.downloadPerResume(0);
+ }
+
+ //全部导出
+ allExport() {
+ const {
+ personnelResume
+ } = this.props;
+ personnelResume.downloadPerResume(1);
+ }
+
isEmptyObject(obj) {
for (let key in obj) {
return false;
@@ -413,7 +430,7 @@ export default class PersonnelResume extends React.Component {
form={form}
isFormInit={form.isFormInit}
loading={dialogLoading}
- height={200}
+ height={120}
conditionLen={1}
search={() => this.onSelect()}
onCancel={() => personnelResume.show = ! show}
diff --git a/pc4mobx/organization/components/resource/SearchCustomDialog.js b/pc4mobx/organization/components/resource/SearchCustomDialog.js
new file mode 100644
index 0000000..cd8b39b
--- /dev/null
+++ b/pc4mobx/organization/components/resource/SearchCustomDialog.js
@@ -0,0 +1,33 @@
+import {
+ observer
+} from 'mobx-react';
+import {
+ WeaDialog,
+} from 'ecCom';
+import Customization from './Customization';
+
+@observer
+export default class SearchCustomDialog extends React.Component {
+ constructor(props) {
+ super(props);
+ }
+
+ render() {
+ const {
+ store
+ } = this.props, {
+ SEARCHDIALOG,
+ searchDialog
+ } = store;
+
+ return (
+
+
+
+ );
+ }
+}
\ No newline at end of file
diff --git a/pc4mobx/organization/components/resource/resource.js b/pc4mobx/organization/components/resource/resource.js
index 78be5e6..aa7427d 100644
--- a/pc4mobx/organization/components/resource/resource.js
+++ b/pc4mobx/organization/components/resource/resource.js
@@ -11,7 +11,9 @@ import {
WeaRightMenu,
WeaLeftRightLayout,
WeaOrgTree,
- WeaDropdown
+ WeaDropdown,
+ WeaSelect,
+ WeaSearchGroup
} from 'ecCom'
import {
Row,
@@ -21,6 +23,7 @@ import {
Button,
message,
Switch,
+ Select,
Menu, Dropdown, Icon
} from 'antd'
import {
@@ -36,6 +39,7 @@ import '../../style/common.less';
import NewAndEditDialog from '../NewAndEditDialog';
import { renderNoright } from '../../util';
import DatasImport from '../import/datasImport';
+import SearchCustomDialog from './SearchCustomDialog';
@@ -74,14 +78,14 @@ export default class Resource extends React.Component {
resource
} = this.props;
resource.getHasRight();
- let {hash} = window.location;
+ let { hash } = window.location;
hash = hash.split("?")[1].split("&");
- if(hash.length >= 2) {
+ if (hash.length >= 2) {
let params = {};
- let arr = hash[0].split("=");
+ let arr = hash[0].split("=");
params[arr[0]] = arr[1];
resource.doSearch(params);
- }else {
+ } else {
resource.getTableInfo();
}
}
@@ -189,11 +193,11 @@ export default class Resource extends React.Component {
if (key == "1") {
resource.export();
}
- if(key == "2") {
+ if (key == "2") {
tableStore.selectedRowKeys.length > 0 ? resource.export() : message.error("请选择需要导出的数据")
}
}}
- menuOnClick={(key, e) => key == '1' ? tableStore.selectedRowKeys = []: ''}
+ menuOnClick={(key, e) => key == '1' ? tableStore.selectedRowKeys = [] : ''}
/>)
return btns;
@@ -228,7 +232,7 @@ export default class Resource extends React.Component {
// resource.setIsNew(true);
// resource.setVisible(true);
// resource.getForm();
- window.open("/spa/hrm/index_mobx.html#/main/hrm/add","_blank")
+ window.open("/spa/hrm/index_mobx.html#/main/hrm/add", "_blank")
}
import() {
@@ -286,7 +290,9 @@ export default class Resource extends React.Component {
const btn = [
(),
- (),
+ (),
+ (),
+ (),
(),
];
@@ -372,7 +378,8 @@ export default class Resource extends React.Component {
!isNew && resource.edit();
}
- handleSaveAndSetting() {
+ //高级搜索模板修改
+ handleTemplateChange() {
}
@@ -381,9 +388,10 @@ export default class Resource extends React.Component {
resource
} = this.props;
const {
- searchCondition,
+ defaultCondition,
form2,
- searchConditionLoading
+ searchConditionLoading,
+ templates
} = resource;
let arr = [];
@@ -392,21 +400,39 @@ export default class Resource extends React.Component {
isFormInit
} = form2;
- isFormInit && searchCondition.map(c => {
+
+ arr.push(
+ 选择过滤模板
+
+ {
+
+ }}
+ />
+
+
+
)
+
+ isFormInit && defaultCondition.map((c, i) => {
+ let _arr = [];
c.items.map((field, index) => {
- arr.push(
-
+ _arr.push({
+ com: (
{}
-
- )
+ ),
+ })
})
+ arr.push()
})
+
if (searchConditionLoading) {
return (
@@ -414,12 +440,12 @@ export default class Resource extends React.Component {
)
} else {
- return {
+ return {
if (e.keyCode == 13 && e.target.tagName === "INPUT") {
- resource.getTableInfo();
- resource.setPanelStatus(false)
+ rankScheme.getTableInfo();
+ rankScheme.setPanelStatus(false)
}
- }}>{arr}
+ }}>{arr}
}
}
@@ -435,7 +461,8 @@ export default class Resource extends React.Component {
render() {
const {
- resource
+ resource,
+ resource: store
} = this.props;
const {
isPanelShow, form2, lastName, conditionNum, tableStore, nEdialogTitle, visible, condition,
@@ -499,9 +526,10 @@ export default class Resource extends React.Component {
conditionLen={2}
save={() => this.handleSave()}
onCancel={() => resource.setVisible(false)}
- // saveAndSetting={() => this.handleSaveAndSetting()}
/>
+
)
}
diff --git a/pc4mobx/organization/public/i18n.js b/pc4mobx/organization/public/i18n.js
index 82db8c0..49f7e74 100644
--- a/pc4mobx/organization/public/i18n.js
+++ b/pc4mobx/organization/public/i18n.js
@@ -875,6 +875,8 @@ export const i18n = {
editTypeInfo: () => getLabel(32732, '编辑类型'),
nextStep:() => getLabel(30131, '下一步'),
version:() => getLabel(30131, '查看历史版本'),
+ saveTemplate:() => getLabel(30131, '存为模板'),
+ conditionSet:() => getLabel(30131, '常用条件定制'),
batchOpen: () => getLabel(534249, '批量解锁'),
collect: () => getLabel(28111, '收藏'),
diff --git a/pc4mobx/organization/stores/personnelResume.js b/pc4mobx/organization/stores/personnelResume.js
index 749d111..7ba2df5 100644
--- a/pc4mobx/organization/stores/personnelResume.js
+++ b/pc4mobx/organization/stores/personnelResume.js
@@ -305,6 +305,10 @@ export class PersonnelResumeStore {
})
}
+ @action("合并导出和全部导出") downloadPerResume(type) {
+ Api.downloadPerResume(type);
+ }
+
setCondition(condition) {
this.condition = condition;
diff --git a/pc4mobx/organization/stores/resource.js b/pc4mobx/organization/stores/resource.js
index 9dfa973..8041274 100644
--- a/pc4mobx/organization/stores/resource.js
+++ b/pc4mobx/organization/stores/resource.js
@@ -1,23 +1,30 @@
import {
observable,
- action
+ action,
+ computed
} from 'mobx';
import * as mobx from 'mobx';
import * as Api from '../apis/resource'; // 引入API接口文件
import {
- WeaForm
-} from 'comsMobx';
-import {
- WeaTableNew
+ WeaForm,WeaTableNew
} from 'comsMobx';
import {
Modal,
message,
+ Button
} from 'antd'
+import {
+ WeaSelect,
+ WeaInputSearch,
+ WeaLocaleProvider,
+} from 'ecCom';
import {
i18n
} from '../public/i18n';
+import trim from 'lodash/trim';
import {getSecondPath} from '../util/index'
+import cloneDeep from 'lodash/cloneDeep';
+
const toJS = mobx.toJS;
const {
@@ -31,6 +38,8 @@ const {
@observable rightMenu = [];
@observable condition = [];
@observable searchCondition = [];
+ @observable defaultCondition = [];
+ @observable templates=[];
@observable isEdit = true;
@observable isNew = true;
@observable isPanelShow = false; //高级搜索面板
@@ -53,7 +62,7 @@ const {
@observable selectTreeNodeInfo;
- @action getTableInfo() {
+ @action("列表") getTableInfo() {
let params;
this.tableStore = new TableStore();
if (this.isEmptyObject(this.form2.getFormParams())) {
@@ -83,7 +92,7 @@ const {
this.getTableInfo();
}
- save() {
+ @action("保存") save() {
let params = {
...this.form.getFormParams()
};
@@ -109,7 +118,7 @@ const {
});
}
- getForm() {
+ @action("新增表单") getForm() {
let params = this.isNew ? {} : {
id: this.userId
}
@@ -129,13 +138,18 @@ const {
}
- getSearchCondition() {
- this.setScLoadingStatus(false);
- Api.getAdvanceSearchCondition().then(res => {
+ @action("高级搜索表单") getSearchCondition() {
+ this.setScLoadingStatus(true);
+ const params = {
+ selectKeys:this.transfer.transferKeys
+ }
+ Api.getAdvanceSearchCondition(params).then(res => {
if (res.code === 200) {
this.setScLoadingStatus(false);
res.data.conditions && this.setSearchCondition(res.data.conditions);
- res.data.conditions && this.form2.initFormFields(res.data.conditions);
+ res.data.defaultcondition && this.setDefaultCondition(res.data.defaultcondition);
+ res.data.defaultcondition && this.form2.initFormFields(res.data.defaultcondition);
+ res.data.templates && this.setTemplates(res.data.templates);
} else {
message.warning(res.msg);
}
@@ -145,7 +159,7 @@ const {
}
- @action getHasRight() {
+ @action("顶部按钮") getHasRight() {
Api.getHasRight().then(res => {
if (res.code === 200) {
this.setHasRight(res.data.hasRight);
@@ -159,7 +173,7 @@ const {
})
}
- @action export(){
+ @action("导出") export(){
const params = {
...this.form.getFormParams()
}
@@ -177,7 +191,204 @@ const {
}, error => {
message.warning(error.msg);
})
- }
+ }
+
+
+ /** ====================================================================================== */
+ @observable searchDialog = {
+ visible: false,
+ title: '常用条件定制',
+ }
+
+ SEARCHDIALOG = {
+ hasScroll: false,
+ icon: 'icon-coms-hrm',
+ iconBgcolor: '#217346',
+ onCancel: () => this.closeSearchDialog(),
+ style: {
+ width: 700,
+ height: 450
+ },
+ moreBtn: {
+ datas: []
+ },
+ buttons: [],
+ }
+
+
+ TRANSFER = {
+ height: 350,
+ renderItem: (items) => this.renderItem(items),
+ filterLeft: (items) => this.filterLeft(items),
+ filterRight: (items) => this.filterRight(items),
+ onChange: (v) => this.updateTransferKeys(v)
+ }
+
+ @observable transfer = {
+ transferDatas: [],
+ transferKeys: [],
+ transferOptions: [],
+ transferSelectedKey: '0',
+ transferleftIptVal: '',
+ transferRightIptVal: ''
+ }
+
+ @action("常用条件定制保存") saveHrmSearchUserDefine = () => {
+ this.closeSearchDialog();
+ this.getSearchCondition();
+ }
+
+ @action("常用条件定制") formatTransfer = () => {
+ const transferDatas = []
+ const transferKeys = []
+ const transferOptions = [{
+ key: "",
+ showname: ""
+ }]
+ this.transfer.transferSelectedKey = '0';
+ this.transfer.transferleftIptVal = '';
+ this.transfer.transferRightIptVal = '';
+ this.searchCondition.forEach((c, idx) => {
+ transferOptions.push({
+ key: `${idx}`,
+ showname: c.title,
+ })
+ c.items.forEach((i) => {
+ transferDatas.push({
+ id: i.domkey[0],
+ label: i.label,
+ title: c.title,
+ idx: `${idx}`
+ })
+ })
+ })
+ this.defaultCondition.forEach((c, idx) => {
+ c.items.forEach((i) => {
+ transferKeys.push(i.domkey[0]);
+ })
+ })
+ this.transfer.transferDatas = transferDatas;
+ this.transfer.transferKeys = transferKeys;
+ this.transfer.transferOptions = transferOptions;
+ }
+
+ inputSearchStyle = {
+ width:"105px",
+ float:"right",
+ marginTop:"5px",
+ marginLeft:"10px"
+ }
+ selectStyle={
+ marginTop:"-1px",
+ width:"85px",
+ float:"right"
+ }
+ @computed get leftHeader() {
+ const {
+ transferleftIptVal,
+ transferOptions,
+ transferSelectedKey
+ } = this.transfer;
+ return (
+
+ 待选
+
+
+
+ )
+ }
+
+ @computed get rightHeader() {
+ const {
+ transferRightIptVal
+ } = this.transfer;
+ return (
+
+ 已选
+
+
+ )
+ }
+ renderItem = (item) => {
+ const {
+ label,
+ title
+ } = item;
+ return ()
+ };
+
+ filterLeft = (items) => {
+ let leftItems = cloneDeep(items);
+ const {
+ transferleftIptVal,
+ transferSelectedKey
+ } = this.transfer;
+ if (transferSelectedKey) {
+ leftItems = leftItems.filter((item) => item.idx == transferSelectedKey)
+ }
+ if (trim(transferleftIptVal)) {
+ leftItems = leftItems.filter((item) => item.label.indexOf(trim(transferleftIptVal)) > -1)
+ }
+ return leftItems
+ }
+
+ filterRight = (items) => {
+ let rightItems = cloneDeep(items);
+ const {
+ transferRightIptVal
+ } = this.transfer;
+ if (trim(transferRightIptVal)) {
+ rightItems = rightItems.filter((item) => item.label.indexOf(trim(transferRightIptVal)) > -1)
+ }
+ return rightItems
+ }
+
+ @action("穿梭框变化回调") updateTransferKeys = (v) => {
+ this.transfer.transferKeys = v;
+ }
+
+ @action updateTransferleftIptVal = (v) => {
+ this.transfer.transferleftIptVal = v;
+ }
+
+ @action updateTransferSelectedKey = (v) => {
+ this.transfer.transferSelectedKey = v;
+ }
+
+ @action updateTransferRightptVal = (v) => {
+ this.transfer.transferRightIptVal = v;
+ }
+
+
+
+ @action openSearchDialog = () => {
+ this.searchDialog.visible = true;
+ this.formatTransfer();
+
+ }
+
+ @action closeSearchDialog = () => {
+ this.searchDialog.visible = false;
+ }
+
+
+
updateFields(val) {
this.form2.updateFields({
@@ -191,6 +402,14 @@ const {
this.searchCondition = condition;
}
+ setDefaultCondition(defaultcondition) {
+ this.defaultCondition = defaultcondition;
+ }
+
+ setTemplates(templates) {
+ this.templates = templates;
+ }
+
setScLoadingStatus(bool) {
this.searchConditionLoading = bool;
}
diff --git a/pc4mobx/organization/style/common.less b/pc4mobx/organization/style/common.less
index 0b7049a..84aa123 100644
--- a/pc4mobx/organization/style/common.less
+++ b/pc4mobx/organization/style/common.less
@@ -95,3 +95,18 @@
text-overflow: ellipsis;
white-space: nowrap;overflow: hidden;
}
+
+ //列定制
+ // .trasfer-header{
+ // .wea-input-focus {
+ // width: 105px;
+ // float: right;
+ // margin-top: 5px;
+ // margin-left: 10px;
+ // }
+ // .wea-select{
+ // margin-top: -1px;
+ // width: 85px;
+ // float: right;
+ // }
+ // }
\ No newline at end of file