256 lines
6.0 KiB
JavaScript
256 lines
6.0 KiB
JavaScript
|
|
import {
|
|||
|
|
observable,
|
|||
|
|
action,
|
|||
|
|
computed
|
|||
|
|
} from 'mobx';
|
|||
|
|
import {
|
|||
|
|
WeaSwitch
|
|||
|
|
} from 'comsMobx';
|
|||
|
|
import {WeaTools} from 'ecCom';
|
|||
|
|
import {
|
|||
|
|
Button,
|
|||
|
|
message
|
|||
|
|
} from 'antd';
|
|||
|
|
import HrmBaseStore from './baseStore';
|
|||
|
|
import * as api from '../apis/orgChart';
|
|||
|
|
import {
|
|||
|
|
i18n
|
|||
|
|
} from '../public/i18n';
|
|||
|
|
|
|||
|
|
export class HrmOrgChart extends HrmBaseStore {
|
|||
|
|
/********************* unobservable list *********************/
|
|||
|
|
topBtnAndMenu = () => {
|
|||
|
|
let btns = [
|
|||
|
|
]
|
|||
|
|
let menus = [];
|
|||
|
|
btns.map((btn, index) => {
|
|||
|
|
const {
|
|||
|
|
props
|
|||
|
|
} = btn;
|
|||
|
|
menus.push({
|
|||
|
|
key: index.toString(),
|
|||
|
|
content: props.children,
|
|||
|
|
icon: <i className={this.menuIconCollection[props.op]}/>,
|
|||
|
|
onClick: props.onClick,
|
|||
|
|
disabled: props.disabled || false
|
|||
|
|
});
|
|||
|
|
})
|
|||
|
|
return {
|
|||
|
|
btns,
|
|||
|
|
menus: [...menus, ...this.getBasicMenus()]
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
tabConfig = {
|
|||
|
|
tabs: [],
|
|||
|
|
keyParam: 'viewCondition',
|
|||
|
|
activeTabKey: '1'
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
iframe;
|
|||
|
|
/********************* unobservable list *********************/
|
|||
|
|
|
|||
|
|
/********************* dialog info setting *********************/
|
|||
|
|
|
|||
|
|
/********************* dialog info setting *********************/
|
|||
|
|
|
|||
|
|
/********************* observable list *********************/
|
|||
|
|
@observable spinning = false;
|
|||
|
|
@observable refreshOrgForm = new Date().getTime();
|
|||
|
|
@observable refreshTab = new Date().getTime();
|
|||
|
|
|
|||
|
|
/********************* observable list *********************/
|
|||
|
|
|
|||
|
|
/********************* computed list *********************/
|
|||
|
|
/********************* computed list *********************/
|
|||
|
|
|
|||
|
|
/********************* action list *********************/
|
|||
|
|
initData = (refresh = false) => {
|
|||
|
|
this.iframe = null;
|
|||
|
|
this.containerInitFinished = {
|
|||
|
|
...this.containerInitFinished,
|
|||
|
|
authorized: true,
|
|||
|
|
init: true
|
|||
|
|
}
|
|||
|
|
this.callInitData();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
callInitData = () => {
|
|||
|
|
if(this.spinning)
|
|||
|
|
return;
|
|||
|
|
this.spinning = true;
|
|||
|
|
api.initData().then(rs => {
|
|||
|
|
rs.map((result, index) => {
|
|||
|
|
if (result.status === '1') {
|
|||
|
|
switch (index) {
|
|||
|
|
case 0:
|
|||
|
|
this.setFormData('orgForm', result.conditions);
|
|||
|
|
this.refreshOrgForm = new Date().getTime();
|
|||
|
|
break;
|
|||
|
|
case 1:
|
|||
|
|
this.setFormData('settingForm', result.conditions);
|
|||
|
|
break;
|
|||
|
|
case 2:
|
|||
|
|
this.tabConfig.tabs.length = 0;
|
|||
|
|
this.tabConfig.buttons = this.generateTabBtn();
|
|||
|
|
result.tabs.map(tab => {
|
|||
|
|
this.tabConfig.tabs.push({
|
|||
|
|
color: '#000000',
|
|||
|
|
groupId: tab.key,
|
|||
|
|
title: tab.title,
|
|||
|
|
viewCondition: tab.key,
|
|||
|
|
searchType: ['advanced'],
|
|||
|
|
doSearch: (params) => this.getChartData(true)
|
|||
|
|
})
|
|||
|
|
});
|
|||
|
|
this.setActiveTab('1');
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
generateTabBtn = () => {
|
|||
|
|
const {
|
|||
|
|
orgForm,
|
|||
|
|
orgFormFields
|
|||
|
|
} = this.formTarget;
|
|||
|
|
return [<WeaSwitch ecId={`${this && this.props && this.props.ecId || ''}_WeaSwitch@h1wbcq@1`} fieldConfig={orgFormFields[0].items[0]} form={orgForm} onChange={() => this.getChartData()}/>]
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
setIframe = (iframe) => {
|
|||
|
|
if(iframe == null || this.iframe != null)
|
|||
|
|
return;
|
|||
|
|
this.iframe = iframe;
|
|||
|
|
this.callInitData();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
tabChangeHandle = (key) => {
|
|||
|
|
this.setActiveTab(key);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
@action setActiveTab = (key) => {
|
|||
|
|
this.tabConfig.activeTabKey = key || this.tabConfig.tabs[0].viewCondition;
|
|||
|
|
const tabIndex = this.getTabIndex(this.tabConfig.tabs, key);
|
|||
|
|
if (tabIndex < 0) return;
|
|||
|
|
let cmd;
|
|||
|
|
switch(key){
|
|||
|
|
case '2':
|
|||
|
|
cmd = 'doc';
|
|||
|
|
break;
|
|||
|
|
case '3':
|
|||
|
|
cmd = 'customer';
|
|||
|
|
break;
|
|||
|
|
case '4':
|
|||
|
|
cmd = 'project';
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
api.getOrgChartSearchCondition({cmd}).then(data => {
|
|||
|
|
if(data.status === '1'){
|
|||
|
|
this.setFormData('conditionForm', data.conditions);
|
|||
|
|
this.getChartData();
|
|||
|
|
}else{
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
this.refreshTab = new Date().getTime();
|
|||
|
|
}, error => {
|
|||
|
|
this.refreshTab = new Date().getTime();
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
@action getChartData = (reset = false) => {
|
|||
|
|
this.spinning = true;
|
|||
|
|
const orgFormParams = this.formTarget.orgForm.getFormParams();
|
|||
|
|
const settingFormParams = this.formTarget.settingForm.getFormParams();
|
|||
|
|
const condtionFormParams = this.formTarget.conditionForm.getFormParams();
|
|||
|
|
const params = Object.assign({}, {
|
|||
|
|
arg0: orgFormParams.sOrg,
|
|||
|
|
arg1: settingFormParams.shownum,
|
|||
|
|
arg3: orgFormParams.sOrg < 0 ? false : true,
|
|||
|
|
arg11: !reset ? ';;P' : ';;B'
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
switch(this.tabConfig.activeTabKey){
|
|||
|
|
case '1':
|
|||
|
|
Object.assign(params, {
|
|||
|
|
arg4: reset ? condtionFormParams.status : ''
|
|||
|
|
});
|
|||
|
|
break;
|
|||
|
|
case '2':
|
|||
|
|
Object.assign(params, {
|
|||
|
|
arg5: condtionFormParams.docStatus,
|
|||
|
|
arg10: 'doc'
|
|||
|
|
});
|
|||
|
|
break;
|
|||
|
|
case '3':
|
|||
|
|
Object.assign(params, {
|
|||
|
|
arg6: condtionFormParams.customerType,
|
|||
|
|
arg7: condtionFormParams.customerStatus,
|
|||
|
|
arg10: 'customer'
|
|||
|
|
});
|
|||
|
|
break;
|
|||
|
|
case '4':
|
|||
|
|
Object.assign(params, {
|
|||
|
|
arg8: condtionFormParams.workType,
|
|||
|
|
arg9: condtionFormParams.projectStatus,
|
|||
|
|
arg10: 'project'
|
|||
|
|
});
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
api.getOrgChartData(params).then(data => {
|
|||
|
|
if (data.status === '1') {
|
|||
|
|
const msgData = {
|
|||
|
|
act: 'orgChart', // 自定义的消息类型、行为,用于switch条件判断等。。
|
|||
|
|
orgData: data.data,
|
|||
|
|
params: {
|
|||
|
|
sorgid: orgFormParams.sOrg,
|
|||
|
|
isShow: params.arg11,
|
|||
|
|
showNum: 'true',
|
|||
|
|
shownum: settingFormParams.shownum
|
|||
|
|
},
|
|||
|
|
client: {
|
|||
|
|
browser: WeaTools.ua.browser,
|
|||
|
|
browserVersion: {
|
|||
|
|
browser: WeaTools.ua.browser,
|
|||
|
|
version: parseInt(WeaTools.ua.version)
|
|||
|
|
},
|
|||
|
|
version: parseInt(WeaTools.ua.version),
|
|||
|
|
os: WeaTools.ua.os
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
let tryCount = 0;
|
|||
|
|
const sendMsg = setInterval(() => {
|
|||
|
|
if($('#orgChartFrame')[0] != null){
|
|||
|
|
clearInterval(sendMsg);
|
|||
|
|
$('#orgChartFrame')[0].contentWindow.postMessage(msgData, '*');
|
|||
|
|
}
|
|||
|
|
}, 500);
|
|||
|
|
} else {
|
|||
|
|
this.spinning = false;
|
|||
|
|
}
|
|||
|
|
}, error => {
|
|||
|
|
this.spinning = false;
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
onInitOrgChart = (status) => {
|
|||
|
|
this.spinning = false;
|
|||
|
|
switch (status) {
|
|||
|
|
case 0:
|
|||
|
|
message.error(i18n.message.dataNone());
|
|||
|
|
break;
|
|||
|
|
case -1:
|
|||
|
|
message.error(i18n.message.dataConstructError());
|
|||
|
|
break
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
showSpin = (val) => {
|
|||
|
|
this.spinning = (val === '0');
|
|||
|
|
}
|
|||
|
|
/********************* action list *********************/
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
export const hrmOrgChart = new HrmOrgChart();
|