From d98f86be176f09f935e9f2c4bee0099ed558765e Mon Sep 17 00:00:00 2001 From: Chengliang <1546584672@qq.com> Date: Fri, 6 Jan 2023 18:01:46 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8A=B1=E5=90=8D=E5=86=8C=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/resource/Customization.js | 43 ++++ .../components/resource/PersonnelResume.js | 4 +- .../components/resource/SearchCustomDialog.js | 15 +- .../components/resource/resource.js | 63 +++--- pc4mobx/organization/stores/resource.js | 199 +++++++++++++++++- pc4mobx/organization/style/common.less | 15 ++ 6 files changed, 287 insertions(+), 52 deletions(-) create mode 100644 pc4mobx/organization/components/resource/Customization.js 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 63f8db2..31a1d9c 100644 --- a/pc4mobx/organization/components/resource/PersonnelResume.js +++ b/pc4mobx/organization/components/resource/PersonnelResume.js @@ -270,7 +270,7 @@ export default class PersonnelResume extends React.Component { } //合并导出 - MergeExport() { + mergeExport() { const { personnelResume } = this.props; @@ -278,7 +278,7 @@ export default class PersonnelResume extends React.Component { } //全部导出 - AllExport() { + allExport() { const { personnelResume } = this.props; diff --git a/pc4mobx/organization/components/resource/SearchCustomDialog.js b/pc4mobx/organization/components/resource/SearchCustomDialog.js index ff83614..cd8b39b 100644 --- a/pc4mobx/organization/components/resource/SearchCustomDialog.js +++ b/pc4mobx/organization/components/resource/SearchCustomDialog.js @@ -4,6 +4,7 @@ import { import { WeaDialog, } from 'ecCom'; +import Customization from './Customization'; @observer export default class SearchCustomDialog extends React.Component { @@ -13,15 +14,19 @@ export default class SearchCustomDialog extends React.Component { render() { const { - DIALOG, - dialog - } = this.props + store + } = this.props, { + SEARCHDIALOG, + searchDialog + } = store; return ( + ); } diff --git a/pc4mobx/organization/components/resource/resource.js b/pc4mobx/organization/components/resource/resource.js index f7de10c..aa7427d 100644 --- a/pc4mobx/organization/components/resource/resource.js +++ b/pc4mobx/organization/components/resource/resource.js @@ -12,7 +12,8 @@ import { WeaLeftRightLayout, WeaOrgTree, WeaDropdown, - WeaSelect + WeaSelect, + WeaSearchGroup } from 'ecCom' import { Row, @@ -289,7 +290,7 @@ export default class Resource extends React.Component { const btn = [ (), - (), + (), (), (), (), @@ -387,9 +388,10 @@ export default class Resource extends React.Component { resource } = this.props; const { - searchCondition, + defaultCondition, form2, - searchConditionLoading + searchConditionLoading, + templates } = resource; let arr = []; @@ -398,47 +400,39 @@ 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 => { + isFormInit && defaultCondition.map((c, i) => { + let _arr = []; c.items.map((field, index) => { - arr.push( -
+ _arr.push({ + com: ( {} -
- ) + ), + }) }) + arr.push() }) + if (searchConditionLoading) { return (
@@ -446,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}
} } @@ -467,11 +461,12 @@ export default class Resource extends React.Component { render() { const { - resource + resource, + resource: store } = this.props; const { isPanelShow, form2, lastName, conditionNum, tableStore, nEdialogTitle, visible, condition, - form, dialogLoading, isEdit, date, hasRight, defaultShowLeft,SEARCHDIALOG,searchDialog + form, dialogLoading, isEdit, date, hasRight, defaultShowLeft } = resource; if (hasRight === false) { @@ -534,9 +529,7 @@ export default class Resource extends React.Component { /> + store={store} /> ) } diff --git a/pc4mobx/organization/stores/resource.js b/pc4mobx/organization/stores/resource.js index de8cb09..8041274 100644 --- a/pc4mobx/organization/stores/resource.js +++ b/pc4mobx/organization/stores/resource.js @@ -1,24 +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 { @@ -32,6 +38,8 @@ const { @observable rightMenu = []; @observable condition = []; @observable searchCondition = []; + @observable defaultCondition = []; + @observable templates=[]; @observable isEdit = true; @observable isNew = true; @observable isPanelShow = false; //高级搜索面板 @@ -131,12 +139,17 @@ const { } @action("高级搜索表单") getSearchCondition() { - this.setScLoadingStatus(false); - Api.getAdvanceSearchCondition().then(res => { + 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); } @@ -181,7 +194,7 @@ const { } - /** ================================================================= */ + /** ====================================================================================== */ @observable searchDialog = { visible: false, title: '常用条件定制', @@ -202,14 +215,172 @@ const { buttons: [], } - @action("常用条件定制保存") saveHrmSearchUserDefine = () => { + 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 (
+
{label}
+
{title}
+
) + }; + + 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 = () => { @@ -231,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