From a88de27c3502c68b520781bc612139b31fc3f6e7 Mon Sep 17 00:00:00 2001 From: Chengliang <1546584672@qq.com> Date: Thu, 5 Jan 2023 18:02:33 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8A=B1=E5=90=8D=E5=86=8C=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pc4mobx/organization/apis/personnelResume.js | 12 ++++ .../components/resource/PersonnelResume.js | 19 +++++- .../components/resource/SearchCustomDialog.js | 28 +++++++++ .../components/resource/resource.js | 59 +++++++++++++++---- pc4mobx/organization/public/i18n.js | 2 + .../organization/stores/personnelResume.js | 4 ++ pc4mobx/organization/stores/resource.js | 54 ++++++++++++++--- 7 files changed, 158 insertions(+), 20 deletions(-) create mode 100644 pc4mobx/organization/components/resource/SearchCustomDialog.js 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/PersonnelResume.js b/pc4mobx/organization/components/resource/PersonnelResume.js index 1a46fb8..63f8db2 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..ff83614 --- /dev/null +++ b/pc4mobx/organization/components/resource/SearchCustomDialog.js @@ -0,0 +1,28 @@ +import { + observer +} from 'mobx-react'; +import { + WeaDialog, +} from 'ecCom'; + +@observer +export default class SearchCustomDialog extends React.Component { + constructor(props) { + super(props); + } + + render() { + const { + DIALOG, + dialog + } = this.props + + 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..f7de10c 100644 --- a/pc4mobx/organization/components/resource/resource.js +++ b/pc4mobx/organization/components/resource/resource.js @@ -11,7 +11,8 @@ import { WeaRightMenu, WeaLeftRightLayout, WeaOrgTree, - WeaDropdown + WeaDropdown, + WeaSelect } from 'ecCom' import { Row, @@ -21,6 +22,7 @@ import { Button, message, Switch, + Select, Menu, Dropdown, Icon } from 'antd' import { @@ -36,6 +38,7 @@ import '../../style/common.less'; import NewAndEditDialog from '../NewAndEditDialog'; import { renderNoright } from '../../util'; import DatasImport from '../import/datasImport'; +import SearchCustomDialog from './SearchCustomDialog'; @@ -74,14 +77,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 +192,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 +231,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 +289,9 @@ export default class Resource extends React.Component { const btn = [ (), - (), + (), + (), + (), (), ]; @@ -372,7 +377,8 @@ export default class Resource extends React.Component { !isNew && resource.edit(); } - handleSaveAndSetting() { + //高级搜索模板修改 + handleTemplateChange() { } @@ -392,6 +398,32 @@ export default class Resource extends React.Component { isFormInit } = form2; + const options002 = [ + { + key: "1", + selected: true, + showname: "简单模板" + }, + { + key: "2", + selected: false, + showname: "复杂模板" + } + ]; + arr.push( + 选择过滤模板 + + { + + }} + /> + + + ) + isFormInit && searchCondition.map(c => { c.items.map((field, index) => { arr.push( @@ -439,7 +471,7 @@ export default class Resource extends React.Component { } = this.props; const { isPanelShow, form2, lastName, conditionNum, tableStore, nEdialogTitle, visible, condition, - form, dialogLoading, isEdit, date, hasRight, defaultShowLeft + form, dialogLoading, isEdit, date, hasRight, defaultShowLeft,SEARCHDIALOG,searchDialog } = resource; if (hasRight === false) { @@ -499,9 +531,12 @@ 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..de8cb09 100644 --- a/pc4mobx/organization/stores/resource.js +++ b/pc4mobx/organization/stores/resource.js @@ -13,6 +13,7 @@ import { import { Modal, message, + Button } from 'antd' import { i18n @@ -53,7 +54,7 @@ const { @observable selectTreeNodeInfo; - @action getTableInfo() { + @action("列表") getTableInfo() { let params; this.tableStore = new TableStore(); if (this.isEmptyObject(this.form2.getFormParams())) { @@ -83,7 +84,7 @@ const { this.getTableInfo(); } - save() { + @action("保存") save() { let params = { ...this.form.getFormParams() }; @@ -109,7 +110,7 @@ const { }); } - getForm() { + @action("新增表单") getForm() { let params = this.isNew ? {} : { id: this.userId } @@ -129,7 +130,7 @@ const { } - getSearchCondition() { + @action("高级搜索表单") getSearchCondition() { this.setScLoadingStatus(false); Api.getAdvanceSearchCondition().then(res => { if (res.code === 200) { @@ -145,7 +146,7 @@ const { } - @action getHasRight() { + @action("顶部按钮") getHasRight() { Api.getHasRight().then(res => { if (res.code === 200) { this.setHasRight(res.data.hasRight); @@ -159,7 +160,7 @@ const { }) } - @action export(){ + @action("导出") export(){ const params = { ...this.form.getFormParams() } @@ -177,7 +178,46 @@ 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: [], + } + + @action("常用条件定制保存") saveHrmSearchUserDefine = () => { + + } + + + + @action openSearchDialog = () => { + this.searchDialog.visible = true; + } + + @action closeSearchDialog = () => { + this.searchDialog.visible = false; + } + + + updateFields(val) { this.form2.updateFields({