weaver_trunk_cli/pc4mobx/hrm/stores/cardInfo4Formal.js

418 lines
11 KiB
JavaScript

import {
observable,
action
} from 'mobx';
import {
WeaTools
} from 'ecCom';
import isEmpty from 'lodash/isEmpty';
import {
validate,
getFormParamValue
} from '../util'
import * as PublicFunc from '../util/pulic-func';
import {
WeaForm
} from 'comsMobx';
import {
message,
Modal
} from 'antd';
import * as api from '../apis/card';
import {
i18n
} from '../public/i18n';
import {
indexOf
} from 'lodash';
import * as mobx from 'mobx';
import isArray from 'lodash/isArray';
import {WeaLocaleProvider} from 'ecCom';
const getLabel = WeaLocaleProvider.getLabel;
const toJS = mobx.toJS;
const confirm = Modal.confirm;
export class HrmCardInfo4Formal {
loading = false;
@observable isSelf = false;
@observable modelItems = []
@observable infoGroup = []
@observable infoGroup2 = []
@observable imgSrc = null
@observable sendButtons = []
@observable accountInfo = []
@observable showSQR = false
@observable showBigImg = false
@observable showAccountInfo = false
@observable isEditor = false
@observable buttons = {}
@observable hideBelongto = true
@observable rightMenus = []
@observable conditioninfo = []
@observable form = new WeaForm()
@observable QRCodeOptions = {};
@observable hasQRCode = false;
@observable remarkInfo = {}
@observable tagInfo = {}
@observable visibleWeiXin = false;
hrmId = undefined;
validate;
@action
updateVisibleWeiXin(bool) {
this.visibleWeiXin = bool;
}
updateHideBelongto(bool) {
this.hideBelongto = bool;
}
@action
updateShowAccountInfo(bool) {
this.showAccountInfo = bool;
}
@action
updateShowBigImg(bool) {
this.showBigImg = bool;
}
@action
updateIsEditor(bool) {
this.isEditor = bool || false;
}
@action
updateShowSQR(bool) {
this.showSQR = bool;
}
format(datas) {
let infoGroup = []; //信息组
let imgSrc = null; //人员照片
let sendButtons = [];
let accountInfo = [];
let hrmInfo = [];
datas && datas.forEach(d => {
if (d.id == 'item1') {
hrmInfo = d.items;
}
if (d.id == 'item2') {
d.items.forEach(d2 => {
d2.name == 'resourceimageid' && (imgSrc = d2.value)
isArray(d2.options) && (sendButtons = d2.options);
d2.accountinfo && (accountInfo = d2.accountinfo)
})
}
//old
if (d.id == 'item4' || d.id == 'item5') infoGroup.push(d);
//专长介绍-modify by sunjun
if (d.id === 'item6') {
this.remarkInfo = d.items[0];
this.tagInfo = d.items[1];
}
})
this.infoGroup = infoGroup;
this.imgSrc = imgSrc;
this.sendButtons = sendButtons;
this.accountInfo = accountInfo;
}
@action
edit(hrmId) {
WeaTools.callApi('/api/hrm/resource/getResourceCard', 'GET', {
operation: 'getResourceBaseView',
//isFormal: '1',
is_multilang_set:true,
viewattr: 2,
id: hrmId
}).then((data) => {
this.form = new WeaForm();
this.form.initFormFields(data.result.conditions);
let resourceimageid = getFormParamValue(data.result.conditions, 'resourceimageid');
this.form.updateFields({
resourceimageid: {
name: 'resourceimageid',
value: resourceimageid
}
});
const params = this.form.getFormParams();
this.conditioninfo = data.result.conditions;
this.hrmId = data.result.id;
this.editcontact = data.result.editcontact;
let accounttype = params.accounttype || '0'
this.hideBelongto = accounttype == '0'
})
this.isEditor = true;
}
saveEditCard(cb) {
if(this.loading)
return;
this.loading = true;
let __this = this;
const fieldParams = this.form.getFormParams();
const conditioninfo = this.conditioninfo;
const editcontact = this.editcontact;
const hrmId = this.hrmId;
const lastname = fieldParams.lastname || '';
const workcode = fieldParams.workcode || '';
const managerid = fieldParams.managerid || '';
const accounttype = fieldParams.accounttype || '';
const belongto = fieldParams.belongto || '';
const email = fieldParams.email || '';
const mobile = fieldParams.mobile || '';
const mobilecall = fieldParams.mobilecall||'';
if (!PublicFunc.chkMail(email)){
this.loading = false;
return false;
};
if (validate(conditioninfo, fieldParams)) {
//选次账号后,必须选主账号
if (accounttype && accounttype == 1) {
if (!belongto || belongto == '') {
message.warning(getLabel('386411',"主账号未填写"));
__this.loading = false;
return;
}
}
if (managerid == '' && (!editcontact || editcontact == '')) {
confirm({
title: i18n.confirm.systemhints(),
content:getLabel('16072',"此员工还没有输入直接上级,确定不输入吗?"),
onOk() {
WeaTools.callApi('/api/hrm/resource/hrmResourceCheck', 'GET', { ...{
id: hrmId,
lastname,
workcode,
managerid,
mobile,
mobilecall,
sensitiveWordconfirm: 1
}
}).
then(data => {
if (data.status == '-1') {
if (data.messagetype == 'confirm') {
confirm({
title: i18n.confirm.systemhints(),
content: data.message,
onOk() {
__this.doSave(cb);
},
onCancel() {},
});
} else {
message.warning(data.message);
__this.loading = false;
}
} else {
__this.doSave(cb);
}
}, error => {
message.warning(error.message);
__this.loading = false;
})
},
onCancel() {
__this.loading = false;
},
});
} else {
WeaTools.callApi('/api/hrm/resource/hrmResourceCheck', 'GET', { ...{
id: hrmId,
lastname,
workcode,
managerid,
mobile,
mobilecall,
sensitiveWordconfirm: 1
}
}).
then(data => {
if (data.status == '-1') {
if (data.messagetype == 'confirm') {
confirm({
title: i18n.confirm.systemhints(),
content: data.message,
onOk() {
__this.doSave(cb);
},
onCancel() {
__this.loading = false;
},
});
} else {
message.warning(data.message);
__this.loading = false;
}
} else {
__this.doSave(cb);
}
}, error => {
message.warning(error.message);
__this.loading = false;
})
}
}else{
__this.loading = false;
}
}
doSave(cb) {
const fieldParams = this.form.getFormParams();
const editcontact = this.editcontact;
const hrmId = this.hrmId;
WeaTools.callApi('/api/hrm/resource/editResource', 'POST', { ...{
operation: 'editresourcebasicinfo',
id: hrmId,
//isFormal: '1',
editcontact
},
...fieldParams
}).
then(data => {
if (data.status == '1') {
message.success(i18n.message.saveSuccess());
this.isEditor = false;
this.getData(hrmId);
cb();
} else {
message.warning(data.message);
}
this.loading = false;
}, error => {
message.warning(error.message);
this.loading = false;
})
}
@action
getRightMenu(hrmId) {
WeaTools.callApi('/api/hrm/resource/getRightMenu', 'GET', {
id: hrmId
}).then(data => {
this.rightMenus = data.rightMenus;
})
}
@action
qrcode(hrmId) {
WeaTools.callApi('/api/hrm/resource/getQRCode', 'GET', {
id: hrmId
}).then(obj => {
this.QRCodeOptions = obj.options;
}).catch(err => {
message.error(err);
})
}
@action
getData(hrmId) {
this.hrmId = hrmId;
this.hideBelongto = true;
Promise.all([
WeaTools.callApi('/api/hrm/resource4formal/getResourceCard', 'GET', {
operation: 'getResourceBaseView',
id: hrmId,
noLoadData: 1
}),
WeaTools.callApi('/api/hrm/resource4formal/getResourceCard', 'GET', {
operation: 'getResourceBaseView',
id: hrmId,
cmd: 'getResourceBaseData',
noLoadData: 1
}),
WeaTools.callApi('/api/hrm/resource/getHrmResourceItem', 'GET', {
id: hrmId,
noLoadData: 1
})
]).then(res => {
this.isSelf = res[0].isSelf || false;
this.format(res[0].result);
this.infoGroup2 = res[1].result;
this.buttons = res[0].buttons;
this.modelItems = res[2];
WeaTools.callApi('/api/hrm/resource4formal/getResourceCard', 'GET', {
operation: 'getResourceBaseView',
id: hrmId
}).then(datas => {
this.format(datas.result);
this.validate = datas.validate;
}),
WeaTools.callApi('/api/hrm/resource4formal/getResourceCard', 'GET', {
operation: 'getResourceBaseView',
id: hrmId,
cmd: 'getResourceBaseData'
}).then(datas => {
this.infoGroup2 = datas.result;
})
WeaTools.callApi('/api/hrm/resource/getHrmResourceItem', 'GET', {
id: hrmId
}).then(datas => {
this.modelItems = datas;
})
this.qrcode(hrmId);
})
}
@action saveRemark = (params) => {
api.saveRemark(params).then(data => {
if (data.status === '1') {
this.remarkInfo.value = params.remark;
message.success(i18n.message.saveSuccess());
} else
message.error(data.message);
}, error => {
})
}
@action saveTag = (dom) => {
let params = {
tag: dom.value
}
if (params.tag === '' || params.tag.trim().length === 0)
return;
this.hrmId != '' && Object.assign(params, {
id: this.hrmId
})
const arr = toJS(this.tagInfo.value);
if (indexOf(arr, params.tag) >= 0) {
message.error(getLabel('386438',"已存在相同标签"));
dom.value = '';
} else {
api.saveTag(params).then(data => {
if (data.status === '1') {
dom.value = '';
message.success(i18n.message.saveSuccess());
this.tagInfo.value.push(params.tag);
} else
message.error(data.message);
}, error => {
})
}
}
@action delTag = (params) => {
this.hrmId != '' && Object.assign(params, {
id: this.hrmId
})
api.delTag(params).then(data => {
if (data.status === '1') {
message.success(i18n.message.saveSuccess());
this.tagInfo.value.splice(indexOf(this.tagInfo.value, params.tag), 1);
} else
message.error(data.message);
}, error => {
})
}
}