weaver_trunk_cli/pc4mobx/hrm/stores/payrollDetailBp.js

140 lines
3.2 KiB
JavaScript

import {
observable,
action,
computed,
} from 'mobx';
import {
WeaLocaleProvider,
} from 'ecCom';
import {message,Button} from 'antd';
import {isEmpty} from "lodash";
import {DialogStore} from '../public/valhalla/stores/index.js';
import FinanceExpand from './financeExpand.js';
import * as api from '../apis/payrollDetail.js';
const getLabel = WeaLocaleProvider.getLabel;
class HrmPayrollDetailBp{
@observable loading = false;
@observable notAuth = false;
@observable firstCol = [];
@observable otherCols = [];
@observable data = [];
@observable payrollDetail = {};
@observable financeExpand = new FinanceExpand(this.init);
@computed get hasPayrollDetail(){
return !isEmpty(this.payrollDetail)
}
init = () => {
this.getPayrollDetail();
}
getPayrollDetail = () => {
this.loading = true;
api.readRecord(this.params).then(datas => {
const {data,status,displayType} = datas;
this.notAuth = (status == '0');
if (status ==='1') {
this.payrollDetail = data;
this.displayType = displayType;
data && Object.keys(data).forEach(key => {
this[key] = data[key];
})
this.splitData()
}else{
datas.message && message.warning(datas.message);
}
this.loading = false;
})
}
splitData = () => {
let arr = [];
this.data && !isEmpty(this.data) && JSON.parse(this.data).forEach(item => {
const datas = item.slice(1);
//纵向
if (this.displayType == '1' && datas.some(data => data)) {
this.firstCol.push(item[0]);
datas.map((val,index) => {
if ( (this.otherCols.length -1) < index ) {
this.otherCols.push([val]);
}else{
this.otherCols[index].push(val);
}
})
}
//横向
if (this.displayType == '0') {
item.map((val,index) => {
if ( (arr.length -1) < index ) {
arr.push([val]);
}else{
arr[index].push(val);
}
})
this.firstCol = arr[0];
arr.slice(1).map(data => {
if(data.slice(1).some(d => d)){
this.otherCols.push(data);
}
})
}
})
}
setTargetId = (params) => {
this.params = params;
}
get DialogButtons(){
return [<Button ecId={`${this && this.props && this.props.ecId || ''}_Button@rg333o@${'save'}`} type="primary" onClick={this.saveFeedback}>{getLabel(-1,"保存")}</Button>]
}
@observable fbDialogStore = new DialogStore(this);
confirmRecord = () => {
api.confirmRecord({targetId: this.params.targetId}).then(res => {
if (res.status == "1") {
message.success(getLabel('524279','确定成功'));
this.getPayrollDetail();
}else{
message.error(res.message);
}
})
}
feedback = () => {
const config = {
title: getLabel('524278','反馈信息'),
style: { height: 200 }
}
this.remark = "";
this.fbDialogStore.init(config);
this.fbDialogStore.openDialog();
}
handleTextareaChange = (text) => {
this.remark = text;
}
saveFeedback = () => {
api.feedback({targetId: this.params.targetId, remark: this.remark}).then(res => {
if (res.status == "1") {
message.success(getLabel('524280','信息已反馈'));
this.getPayrollDetail();
this.fbDialogStore.closeDialog();
}else{
message.error(res.message);
}
})
}
}
export const hrmPayrollDetailBpStore = new HrmPayrollDetailBp();