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 HrmPayrollDetail{ @observable loading = false; @observable notAuth = false; @observable data = []; @observable payrollDetail = {}; @observable displayType = ""; @observable financeExpand = new FinanceExpand(this.init); @computed get hasPayrollDetail(){ return !isEmpty(this.payrollDetail) } @computed get longTxtColIndexs(){ const indexs = []; this.data.forEach(item => { item.forEach( (val,index) => { if (val.length > 15) { indexs.push(index) } }) }) return [...new Set(indexs )]; } @computed get cols(){ return this.data[0].length; } @computed get colDatas() { const arr = []; this.data.forEach((item, index) => { if (index === 0) { } else { item.forEach((val, index) => { if (!arr[index]) { arr.push([]); } arr[index].push(val) }) } }); return arr; } @computed get rowDatas(){ const arr = []; for(let i =0;i < this.data.length; i++){ arr.push([]); } this.data.forEach((item,oindex)=>{ item.forEach((val,index)=>{ if (index > 0) { arr[oindex].push(val); } } ) }); return arr; } init = () => { this.getPayrollDetail(); } getPayrollDetail = () => { this.loading = true; api.readRecord(this.params).then(datas => { const {data,status} = datas; this.notAuth = (status == '0'); if (status ==='1') { this.payrollDetail = data; data && Object.keys(data).forEach(key => { if (key === 'data') { this[key] = JSON.parse(data[key]); } else { this[key] = data[key]; } }) }else{ datas.message && message.warning(datas.message); } this.loading = false; }) } get DialogButtons(){ return [] } @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 = () => { if(!this.remark || !this.remark.trim()){ message.error(getLabel(508896,'反馈内容不能为空')); return ; } 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); } }) } setTargetId = (params) => { this.params = params; } } export const hrmPayrollDetailStore = new HrmPayrollDetail();