weaver_trunk_cli/pc4mobx/hrm/stores/cardInfo.js

364 lines
11 KiB
JavaScript

import { observable, action } from 'mobx';
import { WeaTools } from 'ecCom';
import isEmpty from 'lodash/isEmpty';
import isArray from 'lodash/isArray'
import {validate,getFormParamValue} from '../util'
import * as PublicFunc from '../util/pulic-func';
import {WeaForm} from 'comsMobx';
import {message,Modal} from 'antd';
import * as mobx from 'mobx';
import {i18n} from '../public/i18n';
const toJS = mobx.toJS;
const confirm = Modal.confirm;
import {WeaLocaleProvider} from 'ecCom';
const getLabel = WeaLocaleProvider.getLabel;
export class HrmCardInfo {
loading = 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 = {};
validate;
hrmId = undefined;
@action
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)
})
}
if(d.id != 'item1' && d.id != 'item2' && d.id != 'item3') {
infoGroup.push(d);
}
})
this.infoGroup = infoGroup;
this.imgSrc = imgSrc;
this.sendButtons = sendButtons;
this.accountInfo = accountInfo;
}
@action
edit(hrmId){
this.conditioninfo = [];
WeaTools.callApi('/api/hrm/resource/getResourceCard', 'GET', {
operation: 'getResourceBaseView', is_multilang_set:true, viewattr: 2, id: hrmId
}).then((data)=>{
this.hasJobTitlesAdd = data.result.hasJobTitlesAdd;
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 = this.processCondition(data.result.conditions) ;
this.hrmId = data.result.id;
this.editcontact = data.result.editcontact;
let accounttype = params.accounttype || '0'
this.hideBelongto = accounttype == '0'
this.collectShowFields(data.result.conditions);
})
this.isEditor = true;
}
@observable jobtitleVisible = false;
processCondition = (condition) => {
condition.map(c => c.items.map(item => {
if (item.domkey[0] === "jobtitle" && this.hasJobTitlesAdd) {
item.otherParams = {
hasAddBtn:true,
addOnClick:()=>{
this.openJobtitleDialog()
}
}
}
}));
return condition;
}
openJobtitleDialog = () => {
this.jobtitleVisible = true;
}
closeJobtitleDialog = () => {
this.jobtitleVisible = false;
}
collectShowFields = (conditions) => {
this.showFormFields = [];
conditions.map(c => c.items.map(item => {
const {otherParams,domkey} = item;
if (
!otherParams ||
(otherParams && !otherParams.hide)
) {
this.showFormFields.push(domkey[0]);
}
}));
}
// 验证座机
is_tel=(str)=>{
let fax = /^(([0\+]\d{2,3}-)?(0\d{2,3})-)(\d{7,8})(-(\d{3,}))?$/;
return fax.test(str);
}
// 验证手机
is_phone=(str)=>{
let phone =/^((\+?[0-9]{1,4})|(\(\+86\)))?(13[0-9]|14[57]|15[012356789]|17[0-9]|18[0-9]|19[0-9])\d{8}$/;
return phone.test(str);
}
validateTelIphone = (telephone,mobile) => {
// if(this.showFormFields.includes('mobile') && mobile && !this.is_phone(mobile) ){
// message.warning('移动电话的格式不正确');
// return false;
// }
// if(this.showFormFields.includes('telephone') && telephone && !this.is_tel(telephone)){
// message.warning('办公室电话的格式不正确');
// return false;
// }
return 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 mobilecall = fieldParams.mobilecall||'';
const mobile = fieldParams.mobile||'';
if (validate(conditioninfo, fieldParams)){
if(!this.validateTelIphone(fieldParams.telephone,mobile)){
this.loading = false;
return false;
}
if( email && validator && this.showFormFields.includes('email') && !validator.isEmail(email)) {
this.loading = false;
message.warning(getLabel('24570', "邮箱地址的格式不正确"));
return false;
}
//选次账号后,必须选主账号
if(this.showFormFields.includes('accounttype') && accounttype && accounttype==1){
if(!belongto || belongto==''){
message.warning(getLabel('386411',"主账号未填写"));
__this.loading = false;
return;
}
}
if(this.showFormFields.includes('managerid') && managerid=='' && (!editcontact || editcontact=='')){
confirm({
title: i18n.confirm.systemhints(),
content: getLabel('16072',"此员工还没有输入直接上级,确定不输入吗?"),
onOk(){
WeaTools.callApi('/api/hrm/resource/hrmResourceCheck','GET',
{...{id: hrmId,lastname,workcode,managerid,mobilecall,mobile,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;
})
},
onCancel(){
__this.loading = false;
},
});
}else{
const params = {
id: hrmId
};
['lastname','workcode','managerid','mobile','mobilecall'].forEach(val => {
if(this.showFormFields.includes(val)){
Object.assign(params,{
[val]:fieldParams[val]
});
}
})
params.sensitiveWordconfirm=1;
WeaTools.callApi('/api/hrm/resource/hrmResourceCheck','GET',params).
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){
let __this = this;
const fieldParams = this.form.getFormParams();
const conditioninfo = this.conditioninfo;
const editcontact = this.editcontact;
const hrmId = this.hrmId;
WeaTools.callApi('/api/hrm/resource/editResource','POST',
{...{operation:'editresourcebasicinfo', id: hrmId, 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.hideBelongto = true;
this.hrmId = hrmId;
Promise.all([
WeaTools.callApi('/api/hrm/resource/getResourceCard','GET',
{operation:'getResourceBaseView',id:hrmId, noLoadData: 1})
,
WeaTools.callApi('/api/hrm/resource/getResourceCard','GET',
{operation:'getResourceBaseView',id:hrmId, cmd:'getResourceBaseData', noLoadData: 1})
,
WeaTools.callApi('/api/hrm/resource/getHrmResourceItem','GET',{id:hrmId, noLoadData: 1})
]).then(res=> {
this.format(res[0].result);
this.buttons = res[0].buttons;
this.modelItems = res[2];
WeaTools.callApi('/api/hrm/resource/getResourceCard','GET',{operation:'getResourceBaseView',id:hrmId}).then(datas=>{
this.format(datas.result);
this.validate = datas.validate;
}),
WeaTools.callApi('/api/hrm/resource/getResourceCard','GET',{operation:'getResourceBaseView',id:hrmId,cmd:'getResourceBaseData'}).then(datas=>{
this.format(datas.result);
})
WeaTools.callApi('/api/hrm/resource/getHrmResourceItem','GET',{id:hrmId}).then(datas=>{
this.modelItems = datas;
})
this.qrcode(hrmId);
})
}
}