Merge branch 'hotfix/2.9.42309.01' into develop
This commit is contained in:
commit
089bed1f53
|
|
@ -8,6 +8,7 @@ import React, { Component } from "react";
|
|||
import { WeaBrowser, WeaDialog, WeaFormItem, WeaSearchGroup, WeaSelect } from "ecCom";
|
||||
import { Button, message, Modal } from "antd";
|
||||
import { getTaxAgentRangeForm } from "../../apis/taxAgent";
|
||||
import { commonEnumList } from "../../apis/ruleconfig";
|
||||
import { SelectWithAll } from "../../pages/socialSecurityBenefits/standingBookDetail/components/regAddEmployee";
|
||||
import "./index.less";
|
||||
|
||||
|
|
@ -31,41 +32,74 @@ class PersonalScopeModal extends Component {
|
|||
if (isTaxgent) {
|
||||
this.getTaxAgentRangeForm();
|
||||
} else {
|
||||
const employeeStatus = [
|
||||
{ key: "TRIAL", showname: "试用" },
|
||||
{ key: "FORMAL", showname: "正式" },
|
||||
{ key: "TEMPORARY", showname: "临时" },
|
||||
{ key: "DELAY", showname: "试用延期" },
|
||||
{ key: "FIRE", showname: "解雇" },
|
||||
{ key: "DEPARTURE", showname: "离职" },
|
||||
{ key: "RETIRED", showname: "退休" }
|
||||
];
|
||||
const targetTypeList = [
|
||||
{
|
||||
key: "EMPLOYEE",
|
||||
showname: "人员",
|
||||
selected: false
|
||||
},
|
||||
{
|
||||
key: "SUBCOMPANY",
|
||||
showname: "分部",
|
||||
selected: false
|
||||
},
|
||||
{
|
||||
key: "DEPT",
|
||||
showname: "部门",
|
||||
selected: false
|
||||
},
|
||||
{
|
||||
key: "POSITION",
|
||||
showname: "岗位",
|
||||
selected: false
|
||||
}
|
||||
];
|
||||
this.setState({ targetTypeList, employeeStatus });
|
||||
this.commonEnumList();
|
||||
// const employeeStatus = [
|
||||
// { key: "TRIAL", showname: "试用" },
|
||||
// { key: "FORMAL", showname: "正式" },
|
||||
// { key: "TEMPORARY", showname: "临时" },
|
||||
// { key: "DELAY", showname: "试用延期" },
|
||||
// { key: "FIRE", showname: "解雇" },
|
||||
// { key: "DEPARTURE", showname: "离职" },
|
||||
// { key: "RETIRED", showname: "退休" }
|
||||
// ];
|
||||
// const targetTypeList = [
|
||||
// {
|
||||
// key: "EMPLOYEE",
|
||||
// showname: "人员",
|
||||
// selected: false
|
||||
// },
|
||||
// {
|
||||
// key: "SUBCOMPANY",
|
||||
// showname: "分部",
|
||||
// selected: false
|
||||
// },
|
||||
// {
|
||||
// key: "DEPT",
|
||||
// showname: "部门",
|
||||
// selected: false
|
||||
// },
|
||||
// {
|
||||
// key: "POSITION",
|
||||
// showname: "岗位",
|
||||
// selected: false
|
||||
// }
|
||||
// ];
|
||||
// this.setState({ targetTypeList, employeeStatus });
|
||||
}
|
||||
}
|
||||
|
||||
commonEnumList = () => {
|
||||
commonEnumList({ enumClass: "com.engine.salary.enums.UserStatusEnum" }).then(({ status, data }) => {
|
||||
if (status) {
|
||||
const targetTypeList = [
|
||||
{
|
||||
key: "EMPLOYEE",
|
||||
showname: "人员",
|
||||
selected: false
|
||||
},
|
||||
{
|
||||
key: "SUBCOMPANY",
|
||||
showname: "分部",
|
||||
selected: false
|
||||
},
|
||||
{
|
||||
key: "DEPT",
|
||||
showname: "部门",
|
||||
selected: false
|
||||
},
|
||||
{
|
||||
key: "POSITION",
|
||||
showname: "岗位",
|
||||
selected: false
|
||||
}
|
||||
];
|
||||
this.setState({
|
||||
targetTypeList,
|
||||
employeeStatus: _.map(_.filter(data, o => o.value !== 7), it => ({ key: it.enum, showname: it.defaultLabel }))
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
||||
getTaxAgentRangeForm = () => {
|
||||
getTaxAgentRangeForm().then(({ status, data }) => {
|
||||
if (status) {
|
||||
|
|
@ -91,7 +125,7 @@ class PersonalScopeModal extends Component {
|
|||
employeeStatus: status.split(","),
|
||||
includeType,
|
||||
targetParams: _.map(targetTypeIds.split(","), it => ({ targetType, targetId: it })),
|
||||
[saveKeyVal["key"]]: saveKeyVal["value"],
|
||||
[saveKeyVal["key"]]: saveKeyVal["value"]
|
||||
};
|
||||
this.setState({ loading: true });
|
||||
APISaveFox["save"](payload).then(({ status, errormsg }) => {
|
||||
|
|
|
|||
|
|
@ -93,7 +93,7 @@ export default class MobilePayroll extends React.Component {
|
|||
const params = this.getUrlkey();
|
||||
const payload = {
|
||||
salaryInfoId,
|
||||
..._.omit(params, ["id", "_key", "type"])
|
||||
..._.pick(params, ["recipient"])
|
||||
};
|
||||
getMySalaryBill(payload).then(result => {
|
||||
this.setState({
|
||||
|
|
|
|||
|
|
@ -133,7 +133,7 @@ export default class PayrollDetail extends React.Component {
|
|||
<Button type="ghost" onClick={() => setDetailListShowSearchAd(false)}>取消</Button>
|
||||
];
|
||||
return (
|
||||
<div className="payrollGrant">
|
||||
<div className="payrollDetail">
|
||||
<WeaTab
|
||||
searchType={["base", "advanced"]} searchsBasePlaceHolder="请输入姓名"
|
||||
buttons={[<Button type="primary" onClick={this.handleExportAll}>导出全部</Button>]}
|
||||
|
|
|
|||
|
|
@ -1,12 +1,17 @@
|
|||
.payrollGrant {
|
||||
.payrollDetail {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
height: 100%;
|
||||
background: #f6f6f6;
|
||||
|
||||
.wea-tab .wea-tab-right, .wea-input-focus {
|
||||
background: #f6f6f6;
|
||||
}
|
||||
|
||||
.titleBar {
|
||||
height: 47px;
|
||||
line-height: 47px;
|
||||
padding: 0 10px;
|
||||
padding: 0 16px;
|
||||
|
||||
.titleBarLeft {
|
||||
float: left;
|
||||
|
|
@ -19,6 +24,7 @@
|
|||
|
||||
.tableWrapper {
|
||||
flex: 1;
|
||||
padding: 0 16px;
|
||||
|
||||
.ant-spin-nested-loading, .ant-spin-container {
|
||||
height: 100%;
|
||||
|
|
|
|||
|
|
@ -595,6 +595,7 @@ export default class PayrollGrant extends React.Component {
|
|||
this.pageInfo = { current, pageSize };
|
||||
this.handleShowSizeChange(this.pageInfo);
|
||||
}}
|
||||
scroll={{ y: `calc(100vh - 236px)` }}
|
||||
/> : renderLoading()
|
||||
}
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,8 +1,15 @@
|
|||
.payrollGrant_new {
|
||||
background: #f6f6f6;
|
||||
height: 100%;
|
||||
|
||||
.wea-tab .wea-tab-right, .wea-input-focus {
|
||||
background: #f6f6f6;
|
||||
}
|
||||
|
||||
.titleBar {
|
||||
height: 47px;
|
||||
line-height: 47px;
|
||||
padding: 0 10px;
|
||||
padding: 0 16px;
|
||||
|
||||
.titleBarLeft {
|
||||
float: left;
|
||||
|
|
@ -14,8 +21,11 @@
|
|||
}
|
||||
|
||||
.tableWrapper {
|
||||
height: calc(100vh - 180.22px);
|
||||
overflow: auto;
|
||||
padding: 0 16px;
|
||||
|
||||
.wea-new-table {
|
||||
background: #FFF;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -86,9 +86,11 @@ class SalaryItemSettings extends Component {
|
|||
}
|
||||
});
|
||||
this.setState({
|
||||
dataList: resultSalaryItemSet
|
||||
dataList: resultSalaryItemSet,
|
||||
itemShowNamesetting: _.filter(this.state.itemShowNamesetting, it => it.salaryItemId !== item.id)
|
||||
}, () => {
|
||||
this.props.onChangeSalaryItem(resultSalaryItemSet);
|
||||
this.props.onChangeSalaryItemShowNamesetting(this.state.itemShowNamesetting);
|
||||
});
|
||||
};
|
||||
handleCloseModal = () => {
|
||||
|
|
|
|||
|
|
@ -94,7 +94,7 @@ export default class ComputerTemplate extends React.Component {
|
|||
<div className="sobItemWrapper">
|
||||
{
|
||||
salaryItemSet.length > 0 &&
|
||||
salaryItemSet.map((group, index) => {
|
||||
_.filter(salaryItemSet, it => (!_.isNil(it) && !_.isEmpty(it))).map((group, index) => {
|
||||
return <div className="sobItem">
|
||||
<div className="descript-title">{group.groupName}</div>
|
||||
<div className="descriptions-view">
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@ export default class PhoneTemplate extends React.Component {
|
|||
<div className="sobItemWrapper">
|
||||
{
|
||||
salaryItemSet.length > 0 &&
|
||||
salaryItemSet.map((group, index) => (
|
||||
_.filter(salaryItemSet, it => (!_.isNil(it) && !_.isEmpty(it))).map((group, index) => (
|
||||
<div className="sobItem">
|
||||
<div className="descript-title">{group.groupName}</div>
|
||||
<div className="descriptions-view">
|
||||
|
|
|
|||
|
|
@ -11,15 +11,16 @@ class AllWithoutPay extends Component {
|
|||
message.warning("未选择条目");
|
||||
return;
|
||||
}
|
||||
API.gotoStop(selectedRowKeys).then(({ status, errormsg }) => {
|
||||
API.gotoStop(selectedRowKeys).then(({ status, data, errormsg }) => {
|
||||
if (status) {
|
||||
message.success("操作成功!");
|
||||
const { msg } = data;
|
||||
message.info(msg || "操作成功!");
|
||||
refreshList();
|
||||
} else {
|
||||
message.error(errormsg || "操作失败!");
|
||||
}
|
||||
});
|
||||
}else{
|
||||
} else {
|
||||
const { pageInfo } = this.props;
|
||||
if (pageInfo.total === 0) {
|
||||
message.warning("您没有需要处理的待停薪人员!");
|
||||
|
|
@ -31,7 +32,7 @@ class AllWithoutPay extends Component {
|
|||
onOk: () => {
|
||||
API.allGotoStop({}).then(({ status, data, errormsg }) => {
|
||||
if (status) {
|
||||
const { msg }= data;
|
||||
const { msg } = data;
|
||||
message.info(msg || "操作成功!");
|
||||
refreshList();
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -30,8 +30,8 @@ import AllWithoutPay from "./components/allWithoutPay";
|
|||
import BatchSuspendsPay from "./components/batchSuspendsPay";
|
||||
import SlideModalTitle from "../../components/slideModalTitle";
|
||||
import SalaryFileViewSlide from "../salaryFile/saralyFileViewSlide";
|
||||
import ChangeSalaryModal from "../salaryFile/changeSalaryModal";
|
||||
import { sysinfo } from "../../apis/ruleconfig";
|
||||
import SalaryArchiveEditAdjLogRecord from "../salaryFile/salaryArchiveEditAdjLogRecord";
|
||||
import "./index.less";
|
||||
|
||||
const getLabel = WeaLocaleProvider.getLabel;
|
||||
|
|
@ -77,7 +77,9 @@ class Index extends Component {
|
|||
subcompanyIds: ""
|
||||
},
|
||||
salaryAdjustmentInfo: {},
|
||||
changeSalaryVisible: false,
|
||||
adjLogRecordDialog: {
|
||||
visible: false, title: "", id: "", salaryArchiveId: ""
|
||||
},
|
||||
noPayDate: "",
|
||||
slideParams: {
|
||||
visible: false,
|
||||
|
|
@ -624,7 +626,12 @@ class Index extends Component {
|
|||
}
|
||||
if (showOperateBtn && (selectedKey === "fixed" || selectedKey === "ext")) {
|
||||
arrList.push(<Button type="primary" onClick={() => {
|
||||
this.setState({ changeSalaryVisible: true });
|
||||
this.setState({
|
||||
adjLogRecordDialog: {
|
||||
...this.state.adjLogRecordDialog,
|
||||
visible: true, title: getLabel(542686, "调薪"), salaryArchiveId: this.state.slideParams.id
|
||||
}
|
||||
});
|
||||
}}>调薪</Button>);
|
||||
}
|
||||
selectedKey !== "stop" && arrList.push(<Button type="primary" onClick={this.handleSave}>保存</Button>);
|
||||
|
|
@ -719,7 +726,7 @@ class Index extends Component {
|
|||
pageInfo,
|
||||
showSearchAd,
|
||||
slideParams,
|
||||
changeSalaryVisible,
|
||||
adjLogRecordDialog,
|
||||
paysetParams,
|
||||
extEmpsWitch
|
||||
} = this.state;
|
||||
|
|
@ -884,15 +891,14 @@ class Index extends Component {
|
|||
}}
|
||||
/>
|
||||
)}
|
||||
{changeSalaryVisible && (
|
||||
<ChangeSalaryModal
|
||||
currentId={slideParams.id}
|
||||
visible={changeSalaryVisible}
|
||||
onCancel={() => {
|
||||
this.setState({ changeSalaryVisible: false });
|
||||
}}
|
||||
/>
|
||||
)}
|
||||
<SalaryArchiveEditAdjLogRecord
|
||||
{...adjLogRecordDialog}
|
||||
onCancel={() => this.setState({
|
||||
adjLogRecordDialog: {
|
||||
adjLogRecordDialog, visible: false, title: "", id: "", salaryArchiveId: ""
|
||||
}
|
||||
})}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ export default class Index extends Component {
|
|||
orderRule: "",
|
||||
ascOrDesc: "",
|
||||
rule: "",
|
||||
enctry: "",
|
||||
enctry: "1",
|
||||
operateTaxDeclaration: "1",
|
||||
matchRule: "",
|
||||
confValue: "0",
|
||||
|
|
@ -56,7 +56,7 @@ export default class Index extends Component {
|
|||
ascOrDesc = "", orderRule = "", showEncryptOperationButton, matchEmployeeMode: rule = "",
|
||||
taxDeclarationFunction: operateTaxDeclaration = "1", salaryArchiveDelete: confValue,
|
||||
salaryAcctEmployeeRule: matchRule, WITHDRAW_TAX_DECLARATION: withDrawTaxDeclaration = "0",
|
||||
OPEN_APPLICATION_ENCRYPT: enctry = "0", extEmpsWitch = "0"
|
||||
OPEN_APPLICATION_ENCRYPT: enctry = "1", extEmpsWitch = "0"
|
||||
}
|
||||
} = sysInfo;
|
||||
// const { data: { ascOrDesc, orderRule } } = orderRules;
|
||||
|
|
|
|||
|
|
@ -1,175 +1,203 @@
|
|||
export const columns = [
|
||||
{
|
||||
title: "姓名",
|
||||
dataIndex: 'title',
|
||||
key: 'title',
|
||||
},
|
||||
{
|
||||
title: "个税扣缴义务人",
|
||||
dataIndex: 'title',
|
||||
key: 'title',
|
||||
},
|
||||
{
|
||||
title: "部门",
|
||||
dataIndex: 'title',
|
||||
key: 'title',
|
||||
},
|
||||
{
|
||||
title: "手机号",
|
||||
dataIndex: 'title',
|
||||
key: 'title',
|
||||
},
|
||||
{
|
||||
title: "员工状态",
|
||||
dataIndex: 'title',
|
||||
key: 'title',
|
||||
},
|
||||
{
|
||||
title: "基本工资",
|
||||
dataIndex: 'title',
|
||||
key: 'title',
|
||||
},
|
||||
{
|
||||
title: "操作",
|
||||
dataIndex: 'cz',
|
||||
key: 'cz',
|
||||
}
|
||||
]
|
||||
{
|
||||
title: "姓名",
|
||||
dataIndex: "title",
|
||||
key: "title"
|
||||
},
|
||||
{
|
||||
title: "个税扣缴义务人",
|
||||
dataIndex: "title",
|
||||
key: "title"
|
||||
},
|
||||
{
|
||||
title: "部门",
|
||||
dataIndex: "title",
|
||||
key: "title"
|
||||
},
|
||||
{
|
||||
title: "手机号",
|
||||
dataIndex: "title",
|
||||
key: "title"
|
||||
},
|
||||
{
|
||||
title: "员工状态",
|
||||
dataIndex: "title",
|
||||
key: "title"
|
||||
},
|
||||
{
|
||||
title: "基本工资",
|
||||
dataIndex: "title",
|
||||
key: "title"
|
||||
},
|
||||
{
|
||||
title: "操作",
|
||||
dataIndex: "cz",
|
||||
key: "cz"
|
||||
}
|
||||
];
|
||||
|
||||
export const changeSalaryModalColumns = [
|
||||
{
|
||||
title: '薪资项目',
|
||||
dataIndex: 'title',
|
||||
key: 'title'
|
||||
},
|
||||
{
|
||||
title: '调整前',
|
||||
dataIndex: 'title',
|
||||
key: 'title'
|
||||
},
|
||||
{
|
||||
title: '调整后',
|
||||
dataIndex: 'title',
|
||||
key: 'title'
|
||||
}
|
||||
]
|
||||
export const adjCondition = [
|
||||
{
|
||||
items: [
|
||||
{
|
||||
colSpan: 1,
|
||||
conditionType: "DATEPICKER",
|
||||
domkey: ["effectiveTime"],
|
||||
fieldcol: 18,
|
||||
label: "生效日期",
|
||||
lanId: 19548,
|
||||
labelcol: 6,
|
||||
rules: "required",
|
||||
value: "",
|
||||
viewAttr: 3
|
||||
},
|
||||
{
|
||||
colSpan: 1,
|
||||
checkbox: false,
|
||||
checkboxValue: false,
|
||||
conditionType: "SELECT",
|
||||
domkey: ["adjustReason"],
|
||||
fieldcol: 18,
|
||||
label: "调整原因",
|
||||
lanId: 1897,
|
||||
labelcol: 6,
|
||||
options: [],
|
||||
rules: "required",
|
||||
viewAttr: 3
|
||||
},
|
||||
{
|
||||
colSpan: 1,
|
||||
conditionType: "INPUT",
|
||||
domkey: ["description"],
|
||||
fieldcol: 18,
|
||||
label: "说明",
|
||||
lanId: 25734,
|
||||
labelcol: 6,
|
||||
value: "",
|
||||
viewAttr: 2
|
||||
}
|
||||
],
|
||||
title: "调薪信息",
|
||||
defaultshow: true
|
||||
}
|
||||
];
|
||||
|
||||
export const slideSalaryItemColumns = [
|
||||
{
|
||||
title: "姓名",
|
||||
dataIndex: 'title',
|
||||
key: 'title'
|
||||
},
|
||||
{
|
||||
title: "员工状态",
|
||||
dataIndex: 'title',
|
||||
key: 'title'
|
||||
},
|
||||
{
|
||||
title: "部门",
|
||||
dataIndex: 'title',
|
||||
key: 'title'
|
||||
},
|
||||
{
|
||||
title: "薪资项目",
|
||||
dataIndex: 'title',
|
||||
key: 'title'
|
||||
},
|
||||
{
|
||||
title: "调整前",
|
||||
dataIndex: 'title',
|
||||
key: 'title'
|
||||
},
|
||||
{
|
||||
title: "调整后",
|
||||
dataIndex: 'title',
|
||||
key: 'title'
|
||||
},
|
||||
{
|
||||
title: "调整原因",
|
||||
dataIndex: 'title',
|
||||
key: 'title'
|
||||
},
|
||||
{
|
||||
title: "生效日期",
|
||||
dataIndex: 'title',
|
||||
key: 'title'
|
||||
},
|
||||
{
|
||||
title: "操作人",
|
||||
dataIndex: 'title',
|
||||
key: 'title'
|
||||
},
|
||||
{
|
||||
title: "操作日期",
|
||||
dataIndex: 'title',
|
||||
key: 'title'
|
||||
},
|
||||
{
|
||||
title: "说明",
|
||||
dataIndex: 'title',
|
||||
key: 'title'
|
||||
}
|
||||
]
|
||||
{
|
||||
title: "姓名",
|
||||
dataIndex: "title",
|
||||
key: "title"
|
||||
},
|
||||
{
|
||||
title: "员工状态",
|
||||
dataIndex: "title",
|
||||
key: "title"
|
||||
},
|
||||
{
|
||||
title: "部门",
|
||||
dataIndex: "title",
|
||||
key: "title"
|
||||
},
|
||||
{
|
||||
title: "薪资项目",
|
||||
dataIndex: "title",
|
||||
key: "title"
|
||||
},
|
||||
{
|
||||
title: "调整前",
|
||||
dataIndex: "title",
|
||||
key: "title"
|
||||
},
|
||||
{
|
||||
title: "调整后",
|
||||
dataIndex: "title",
|
||||
key: "title"
|
||||
},
|
||||
{
|
||||
title: "调整原因",
|
||||
dataIndex: "title",
|
||||
key: "title"
|
||||
},
|
||||
{
|
||||
title: "生效日期",
|
||||
dataIndex: "title",
|
||||
key: "title"
|
||||
},
|
||||
{
|
||||
title: "操作人",
|
||||
dataIndex: "title",
|
||||
key: "title"
|
||||
},
|
||||
{
|
||||
title: "操作日期",
|
||||
dataIndex: "title",
|
||||
key: "title"
|
||||
},
|
||||
{
|
||||
title: "说明",
|
||||
dataIndex: "title",
|
||||
key: "title"
|
||||
}
|
||||
];
|
||||
|
||||
export const slieAgentColumns = [
|
||||
{
|
||||
title: "姓名",
|
||||
dataIndex: 'title',
|
||||
key: 'title'
|
||||
},
|
||||
{
|
||||
title: "员工状态",
|
||||
dataIndex: 'title',
|
||||
key: 'title'
|
||||
},
|
||||
{
|
||||
title: "部门",
|
||||
dataIndex: 'title',
|
||||
key: 'title'
|
||||
},
|
||||
{
|
||||
title: "调整前",
|
||||
dataIndex: 'title',
|
||||
key: 'title'
|
||||
},
|
||||
{
|
||||
title: "调整后",
|
||||
dataIndex: 'title',
|
||||
key: 'title'
|
||||
},
|
||||
{
|
||||
title: "调整原因",
|
||||
dataIndex: 'title',
|
||||
key: 'title'
|
||||
},
|
||||
{
|
||||
title: "生效日期",
|
||||
dataIndex: 'title',
|
||||
key: 'title'
|
||||
},
|
||||
{
|
||||
title: "操作人",
|
||||
dataIndex: 'title',
|
||||
key: 'title'
|
||||
},
|
||||
{
|
||||
title: "操作日期",
|
||||
dataIndex: 'title',
|
||||
key: 'title'
|
||||
},
|
||||
{
|
||||
title: "说明",
|
||||
dataIndex: 'title',
|
||||
key: 'title'
|
||||
}
|
||||
]
|
||||
{
|
||||
title: "姓名",
|
||||
dataIndex: "title",
|
||||
key: "title"
|
||||
},
|
||||
{
|
||||
title: "员工状态",
|
||||
dataIndex: "title",
|
||||
key: "title"
|
||||
},
|
||||
{
|
||||
title: "部门",
|
||||
dataIndex: "title",
|
||||
key: "title"
|
||||
},
|
||||
{
|
||||
title: "调整前",
|
||||
dataIndex: "title",
|
||||
key: "title"
|
||||
},
|
||||
{
|
||||
title: "调整后",
|
||||
dataIndex: "title",
|
||||
key: "title"
|
||||
},
|
||||
{
|
||||
title: "调整原因",
|
||||
dataIndex: "title",
|
||||
key: "title"
|
||||
},
|
||||
{
|
||||
title: "生效日期",
|
||||
dataIndex: "title",
|
||||
key: "title"
|
||||
},
|
||||
{
|
||||
title: "操作人",
|
||||
dataIndex: "title",
|
||||
key: "title"
|
||||
},
|
||||
{
|
||||
title: "操作日期",
|
||||
dataIndex: "title",
|
||||
key: "title"
|
||||
},
|
||||
{
|
||||
title: "说明",
|
||||
dataIndex: "title",
|
||||
key: "title"
|
||||
}
|
||||
];
|
||||
|
||||
|
||||
export const dataSource = [
|
||||
{
|
||||
title: "测试"
|
||||
}
|
||||
{
|
||||
title: "测试"
|
||||
}
|
||||
];
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -73,7 +73,6 @@
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
.salaryFileSlide {
|
||||
padding: 10px 20px;
|
||||
|
||||
|
|
@ -125,7 +124,6 @@
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
.salaryFileTabWrapper {
|
||||
.searchPanel {
|
||||
position: absolute;
|
||||
|
|
@ -169,3 +167,55 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
.adjustItem-layout {
|
||||
.ant-table-fixed td {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
}
|
||||
|
||||
.adjLogRecordDialogContent {
|
||||
background: #f6f6f6;
|
||||
padding: 16px;
|
||||
height: 100%;
|
||||
overflow-y: auto;
|
||||
|
||||
.empty {
|
||||
text-align: center;
|
||||
background: transparent;
|
||||
margin-bottom: 20px;
|
||||
padding: 30px 50px;
|
||||
}
|
||||
|
||||
.wea-search-group:first-child {
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.wea-search-group {
|
||||
background: #FFF;
|
||||
padding: 0;
|
||||
border: 1px solid #e5e5e5;
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.wea-content, .wea-form-cell {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.wea-form-item {
|
||||
padding: 5px 16px;
|
||||
border-bottom: 1px solid #e5e5e5;
|
||||
}
|
||||
|
||||
.wea-select, .ant-select {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.ant-select-selection {
|
||||
width: 100%;
|
||||
height: 30px;
|
||||
border-radius: 0;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,221 @@
|
|||
/*
|
||||
* Author: 黎永顺
|
||||
* name: 薪资档案-调薪
|
||||
* Description:
|
||||
* Date: 2023/9/4
|
||||
*/
|
||||
import React, { Component } from "react";
|
||||
import { WeaDialog, WeaLocaleProvider, WeaSearchGroup, WeaTableEdit, WeaTools } from "ecCom";
|
||||
import { Button, message, Spin } from "antd";
|
||||
import {
|
||||
editSingleSalaryItem,
|
||||
getSalaryItemAdjustBeforeValue,
|
||||
getSalaryItemForm,
|
||||
getSingleSalaryItemInfo,
|
||||
saveSalaryItem
|
||||
} from "../../apis/archive";
|
||||
import { inject, observer } from "mobx-react";
|
||||
import { adjCondition } from "./columns";
|
||||
import { getDomkes, getSearchs } from "../../util";
|
||||
import moment from "moment";
|
||||
|
||||
const { getLabel } = WeaLocaleProvider;
|
||||
const getKey = WeaTools.getKey;
|
||||
const APIFox = {
|
||||
save: saveSalaryItem,
|
||||
edit: editSingleSalaryItem,
|
||||
saveForm: getSalaryItemForm,
|
||||
editForm: getSingleSalaryItemInfo
|
||||
};
|
||||
|
||||
@inject("salaryFileStore")
|
||||
@observer
|
||||
class SalaryArchiveEditAdjLogRecordDialog extends Component {
|
||||
constructor(props) {
|
||||
super(props);
|
||||
this.state = {
|
||||
conditions: [], loading: false, saveLoading: false,
|
||||
salaryArchiveItemDetail: {}, canOperator: false
|
||||
};
|
||||
}
|
||||
|
||||
componentWillReceiveProps(nextProps, nextContext) {
|
||||
const { id, visible, salaryFileStore: { adjForm, initAdjForm } } = nextProps;
|
||||
if (nextProps.visible !== this.props.visible && visible) {
|
||||
this.getSingleSalaryItemInfo(nextProps);
|
||||
} else {
|
||||
adjForm.resetForm();
|
||||
initAdjForm();
|
||||
}
|
||||
}
|
||||
|
||||
getSingleSalaryItemInfo = (props) => {
|
||||
const { salaryFileStore: { adjForm }, id, salaryArchiveId: salaryArchiveItemId } = props;
|
||||
this.setState({ loading: true });
|
||||
APIFox[id ? "editForm" : "saveForm"](id ? { id } : { salaryArchiveItemId })
|
||||
.then(({ status, data }) => {
|
||||
this.setState({ loading: false });
|
||||
if (status) {
|
||||
const { salaryArchiveItemForm, salaryArchiveItemDetail, canOperator } = data;
|
||||
const { adjustReasonList } = salaryArchiveItemForm;
|
||||
this.setState({
|
||||
canOperator, salaryArchiveItemDetail,
|
||||
conditions: _.map(adjCondition, item => {
|
||||
return {
|
||||
...item,
|
||||
title: getLabel(111, "调薪信息"),
|
||||
items: _.map(item.items, o => {
|
||||
if (getKey(o) === "adjustReason") {
|
||||
return {
|
||||
...o,
|
||||
options: _.map(adjustReasonList, it => ({ key: it.id, showname: it.content }))
|
||||
};
|
||||
}
|
||||
return { ...o };
|
||||
})
|
||||
};
|
||||
})
|
||||
}, () => {
|
||||
adjForm.initFormFields(this.state.conditions);
|
||||
_.map(getDomkes(this.state.conditions), domkey => {
|
||||
adjForm.updateFields({
|
||||
[domkey]: salaryArchiveItemForm[domkey] || ""
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
}).catch(() => this.setState({ loading: false }));
|
||||
};
|
||||
getSalaryItemAdjustBeforeValue = (salaryItemId) => {
|
||||
const payload = {
|
||||
salaryArchiveId: this.props.salaryArchiveId,
|
||||
salaryItemId
|
||||
};
|
||||
getSalaryItemAdjustBeforeValue(payload).then(({ status, data }) => {
|
||||
if (status) {
|
||||
const { salaryArchiveItemDetail } = this.state;
|
||||
const { list } = salaryArchiveItemDetail;
|
||||
this.setState({
|
||||
salaryArchiveItemDetail: {
|
||||
...salaryArchiveItemDetail,
|
||||
list: _.map(list, o => {
|
||||
if (o.salaryItem === salaryItemId) {
|
||||
return { ...o, salaryBefore: data };
|
||||
}
|
||||
return { ...o };
|
||||
})
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
||||
save = () => {
|
||||
const { salaryFileStore: { adjForm, fetchSingleSalaryItemList, getArchiveForm } } = this.props;
|
||||
const { pass } = this.tableEdit.refs.edit.doRequiredCheck();
|
||||
adjForm.validateForm().then(f => {
|
||||
if (f.isValid) {
|
||||
if (!pass) return;
|
||||
const { salaryArchiveId, id: salaryArchiveItemId } = this.props;
|
||||
const { salaryArchiveItemDetail, canOperator } = this.state;
|
||||
const { list } = salaryArchiveItemDetail;
|
||||
let payload = {
|
||||
...adjForm.getFormParams(), salaryArchiveId,
|
||||
effectiveTime: moment(new Date(adjForm.getFormParams().effectiveTime)).format("YYYY-MM-DD"),
|
||||
salaryArchiveItems: _.map(list, o => ({ salaryItemId: o.salaryItem, adjustValue: o.adjustAfter }))
|
||||
};
|
||||
if (salaryArchiveItemId) {
|
||||
payload = { ...payload, canOperator, salaryArchiveItemId };
|
||||
}
|
||||
this.setState({ saveLoading: true });
|
||||
APIFox[salaryArchiveItemId ? "edit" : "save"](payload).then(({ status, errormsg }) => {
|
||||
this.setState({ saveLoading: false });
|
||||
if (status) {
|
||||
message.success(getLabel(22619, "保存成功!"));
|
||||
this.props.onCancel();
|
||||
fetchSingleSalaryItemList({ salaryArchiveId });
|
||||
getArchiveForm(salaryArchiveId);
|
||||
} else {
|
||||
message.error(errormsg);
|
||||
}
|
||||
}).catch(() => this.setState({ saveLoading: false }));
|
||||
} else {
|
||||
f.showErrors();
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
render() {
|
||||
const { salaryFileStore: { adjForm }, id } = this.props;
|
||||
const { loading, saveLoading, salaryArchiveItemDetail, conditions } = this.state;
|
||||
const { salaryItemList, list } = salaryArchiveItemDetail;
|
||||
const adjColumns = [
|
||||
{
|
||||
title: "薪资项目",
|
||||
dataIndex: "salaryItem",
|
||||
key: "salaryItem",
|
||||
com: [{
|
||||
options: _.map(salaryItemList, o => ({ key: o.id, showname: o.content })),
|
||||
type: "SELECT", viewAttr: id ? 1 : 3, key: "salaryItem",
|
||||
onChange: (v) => this.getSalaryItemAdjustBeforeValue(v)
|
||||
}],
|
||||
colSpan: 1,
|
||||
width: "40%"
|
||||
},
|
||||
{
|
||||
title: getLabel(111, "调整前"),
|
||||
dataIndex: "salaryBefore",
|
||||
key: "salaryBefore",
|
||||
com: [{ label: "", type: "INPUT", viewAttr: 1, key: "salaryBefore" }],
|
||||
colSpan: 1,
|
||||
width: "30%"
|
||||
},
|
||||
{
|
||||
title: getLabel(111, "调整后"),
|
||||
dataIndex: "adjustAfter",
|
||||
key: "adjustAfter",
|
||||
com: [{ label: "", type: "INPUTNUMBER", otherParams: { precision: 3 }, viewAttr: 3, key: "adjustAfter" }],
|
||||
colSpan: 1,
|
||||
width: "30%"
|
||||
}
|
||||
];
|
||||
return (
|
||||
<WeaDialog
|
||||
{...this.props}
|
||||
scalable hasScroll className="declareResultDialog" initLoadCss
|
||||
style={{
|
||||
width: 800,
|
||||
height: 406.6,
|
||||
minHeight: 200,
|
||||
minWidth: 380,
|
||||
maxHeight: "80%",
|
||||
maxWidth: "80%",
|
||||
overflow: "hidden",
|
||||
transform: "translate(0px, 0px)"
|
||||
}}
|
||||
buttons={[<Button type="primary" onClick={this.save} loading={saveLoading}>{getLabel(537558, "保存")}</Button>]}
|
||||
>
|
||||
<div className="adjLogRecordDialogContent">
|
||||
{
|
||||
!loading ? <React.Fragment>
|
||||
{getSearchs(adjForm, conditions, 1)}
|
||||
<WeaSearchGroup title={getLabel(543333, "调薪明细")} showGroup needTigger={false}>
|
||||
<WeaTableEdit
|
||||
ref={dom => this.tableEdit = dom} deleteConfirm
|
||||
columns={adjColumns} datas={list} showCopy={false}
|
||||
showAdd={!id} showDelete={!id}
|
||||
onChange={o => this.setState({
|
||||
salaryArchiveItemDetail: {
|
||||
...salaryArchiveItemDetail, list: o
|
||||
}
|
||||
})}
|
||||
/>
|
||||
</WeaSearchGroup>
|
||||
</React.Fragment> : <div className="empty"><Spin/></div>
|
||||
}
|
||||
</div>
|
||||
</WeaDialog>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export default SalaryArchiveEditAdjLogRecordDialog;
|
||||
|
|
@ -1,10 +1,11 @@
|
|||
import React from "react";
|
||||
import { Menu, message, Modal, Popover } from "antd";
|
||||
import { message, Modal } from "antd";
|
||||
import { WeaLocaleProvider, WeaTable } from "ecCom";
|
||||
import { inject, observer } from "mobx-react";
|
||||
import ChangeSalaryModal from "./changeSalaryModal";
|
||||
import { deleteSalaryItem } from "../../apis/archive";
|
||||
import UnifiedTable from "../../components/UnifiedTable";
|
||||
import SalaryArchiveEditAdjLogRecord from "./salaryArchiveEditAdjLogRecord";
|
||||
|
||||
const { getLabel } = WeaLocaleProvider;
|
||||
@inject("salaryFileStore")
|
||||
@observer
|
||||
export default class SalaryItemChangeList extends React.Component {
|
||||
|
|
@ -12,6 +13,9 @@ export default class SalaryItemChangeList extends React.Component {
|
|||
super(props);
|
||||
this.state = {
|
||||
changeSalaryVisible: false,
|
||||
adjLogRecordDialog: {
|
||||
visible: false, title: "", id: "", salaryArchiveId: ""
|
||||
},
|
||||
recordId: ""
|
||||
};
|
||||
this.searchParams = {};
|
||||
|
|
@ -25,11 +29,11 @@ export default class SalaryItemChangeList extends React.Component {
|
|||
|
||||
handleEdit = (record) => {
|
||||
this.setState({
|
||||
recordId: record.id
|
||||
}, () => {
|
||||
this.setState({
|
||||
changeSalaryVisible: true
|
||||
});
|
||||
adjLogRecordDialog: {
|
||||
...this.state.adjLogRecordDialog,
|
||||
visible: true, title: getLabel(542686, "调薪"), id: record.id,
|
||||
salaryArchiveId: this.props.id
|
||||
}
|
||||
});
|
||||
};
|
||||
deleteSalaryItem = (salaryArchiveItemId) => {
|
||||
|
|
@ -58,22 +62,35 @@ export default class SalaryItemChangeList extends React.Component {
|
|||
const { salaryFileStore: { singleSalaryItemList }, selectedKey } = this.props;
|
||||
let columns = [];
|
||||
if (singleSalaryItemList.columns) {
|
||||
columns = [...singleSalaryItemList.columns];
|
||||
columns = _.map([...singleSalaryItemList.columns], o => {
|
||||
const { dataIndex } = o;
|
||||
if (dataIndex === "adjustItem") {
|
||||
return { ...o, width: 100, fixed: "left", render: text => (<span title={text}>{text}</span>) };
|
||||
}
|
||||
let width = "";
|
||||
switch (o) {
|
||||
case "adjustBefore":
|
||||
case "adjustAfter":
|
||||
case "operateTime":
|
||||
width = "20%";
|
||||
break;
|
||||
case "effectiveTime":
|
||||
width = "15%";
|
||||
break;
|
||||
default:
|
||||
width = "10%";
|
||||
break;
|
||||
}
|
||||
return { ...o, width, render: text => (<span title={text}>{text}</span>) };
|
||||
});
|
||||
if (selectedKey === "fixed") {
|
||||
columns = [...columns, {
|
||||
dataIndex: "operate",
|
||||
title: "操作",
|
||||
dataIndex: "operate", fixed: "right", width: 120, title: "操作",
|
||||
render: (text, record) => {
|
||||
return <div className="optWrapper">
|
||||
<a href="javascript:void(0);" className="mr10" onClick={() => this.handleEdit(record)}>编辑</a>
|
||||
<Popover
|
||||
overlayClassName="moreIconWrapper"
|
||||
placement="bottomRight"
|
||||
content={<Menu onClick={(e) => this.deleteSalaryItem(record.id)}>
|
||||
<Menu.Item key="delete">删除</Menu.Item>
|
||||
</Menu>} title="">
|
||||
<i className="icon-coms-more"/>
|
||||
</Popover>
|
||||
<a href="javascript:void(0);"
|
||||
onClick={() => this.deleteSalaryItem(record.id)}>{getLabel(535052, "删除")}</a>
|
||||
</div>;
|
||||
}
|
||||
}];
|
||||
|
|
@ -90,45 +107,29 @@ export default class SalaryItemChangeList extends React.Component {
|
|||
}
|
||||
|
||||
render() {
|
||||
const { salaryFileStore } = this.props;
|
||||
const { salaryFileStore } = this.props, { adjLogRecordDialog } = this.state;
|
||||
const { singleSalaryItemList } = salaryFileStore;
|
||||
const pageInfo = { current: singleSalaryItemList.pageNum, pageSize: 10, total: singleSalaryItemList.total };
|
||||
const pagination = {
|
||||
...pageInfo,
|
||||
showTotal: total => `${getLabel(18609, "共")} ${total} ${getLabel(18256, "条")}`,
|
||||
showQuickJumper: true,
|
||||
onChange: current => this.handlePageChange(current)
|
||||
};
|
||||
return (
|
||||
<div>
|
||||
<UnifiedTable
|
||||
columns={
|
||||
_.map(this.getColumns(), item => {
|
||||
if (item.dataIndex !== "operate") {
|
||||
return {
|
||||
...item,
|
||||
render: (text) => {
|
||||
return <span className="ellipsis" title={text}>{text}</span>;
|
||||
}
|
||||
};
|
||||
}
|
||||
return { ...item };
|
||||
})
|
||||
}
|
||||
dataSource={singleSalaryItemList.list ? singleSalaryItemList.list : []}
|
||||
pagination={{
|
||||
onChange: (value) => {
|
||||
this.handlePageChange(value);
|
||||
},
|
||||
total: singleSalaryItemList.total,
|
||||
showTotal: (total) => `共 ${total} 条`,
|
||||
current: singleSalaryItemList.pageNum
|
||||
}}
|
||||
xWidth={this.getColumns().length * 100}
|
||||
<WeaTable
|
||||
columns={this.getColumns()} dataSource={singleSalaryItemList.list ? singleSalaryItemList.list : []}
|
||||
pagination={pagination} scroll={{ x: 800 }} className="adjustItem-layout"
|
||||
/>
|
||||
<SalaryArchiveEditAdjLogRecord
|
||||
{...adjLogRecordDialog}
|
||||
onCancel={() => this.setState({
|
||||
adjLogRecordDialog: {
|
||||
adjLogRecordDialog, visible: false, title: "", id: "", salaryArchiveId: ""
|
||||
}
|
||||
})}
|
||||
/>
|
||||
{
|
||||
this.state.changeSalaryVisible && <ChangeSalaryModal
|
||||
currentId={this.props.id}
|
||||
recordId={this.state.recordId}
|
||||
visible={this.state.changeSalaryVisible}
|
||||
onCancel={() => {
|
||||
this.setState({ changeSalaryVisible: false });
|
||||
}}
|
||||
/>
|
||||
}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -36,7 +36,6 @@ class SalaryItemForm extends Component {
|
|||
const { key } = item;
|
||||
switch (key) {
|
||||
case "useDefault":
|
||||
case "sortedIndex":
|
||||
case "dataType":
|
||||
case "description":
|
||||
return {
|
||||
|
|
@ -44,6 +43,8 @@ class SalaryItemForm extends Component {
|
|||
viewAttr: (!isLedger && ((editable && record.canEdit) || isAdd)) ? 2 : 1,
|
||||
display: !isLedger
|
||||
};
|
||||
case "sortedIndex":
|
||||
return { ...item };
|
||||
case "useInEmployeeSalary":
|
||||
return {
|
||||
...item,
|
||||
|
|
|
|||
|
|
@ -1,114 +1,10 @@
|
|||
// 社保
|
||||
export const socialSecurityColumns = [{
|
||||
title: "方案名称",
|
||||
dataIndex: "title",
|
||||
key: "title"
|
||||
}, {
|
||||
title: "缴纳类型",
|
||||
dataIndex: "username",
|
||||
key: "username"
|
||||
}, {
|
||||
title: "缴纳范围",
|
||||
dataIndex: "projectName",
|
||||
key: "projectName"
|
||||
}, {
|
||||
title: "备注",
|
||||
dataIndex: "customer",
|
||||
key: "customer"
|
||||
}, {
|
||||
title: "操作",
|
||||
dataIndex: "customer",
|
||||
key: "customer"
|
||||
}];
|
||||
|
||||
// 公积金
|
||||
export const accumulationFundColumns = [{
|
||||
title: "方案名称",
|
||||
dataIndex: "title",
|
||||
key: "title"
|
||||
}, {
|
||||
title: "缴纳类型",
|
||||
dataIndex: "username",
|
||||
key: "username"
|
||||
}, {
|
||||
title: "缴纳范围",
|
||||
dataIndex: "projectName",
|
||||
key: "projectName"
|
||||
}, {
|
||||
title: "备注",
|
||||
dataIndex: "customer",
|
||||
key: "customer"
|
||||
}, {
|
||||
title: "操作",
|
||||
dataIndex: "customer",
|
||||
key: "customer"
|
||||
}];
|
||||
|
||||
// 企业年金及其他福利
|
||||
export const otherBenefitsColumns = [
|
||||
{
|
||||
title: "方案名称",
|
||||
dataIndex: "title",
|
||||
key: "title"
|
||||
|
||||
},
|
||||
{
|
||||
title: "缴纳类型",
|
||||
dataIndex: "title",
|
||||
key: "title"
|
||||
},
|
||||
{
|
||||
title: "缴纳范围",
|
||||
dataIndex: "title",
|
||||
key: "title"
|
||||
},
|
||||
{
|
||||
title: "备注",
|
||||
dataIndex: "title",
|
||||
key: "title"
|
||||
},
|
||||
{
|
||||
title: "操作",
|
||||
dataIndex: "title",
|
||||
key: "title"
|
||||
}
|
||||
];
|
||||
|
||||
export const CustomBenefitsColumns = [
|
||||
{
|
||||
title: "福利名称",
|
||||
dataIndex: "title",
|
||||
key: "title"
|
||||
},
|
||||
{
|
||||
title: "启用",
|
||||
dataIndex: "title",
|
||||
key: "title"
|
||||
},
|
||||
{
|
||||
title: "类型",
|
||||
dataIndex: "title",
|
||||
key: "title"
|
||||
},
|
||||
{
|
||||
title: "缴纳对象",
|
||||
dataIndex: "title",
|
||||
key: "title"
|
||||
},
|
||||
{
|
||||
title: "操作",
|
||||
dataIndex: "title",
|
||||
key: "title"
|
||||
}
|
||||
];
|
||||
|
||||
export const insertUpdateColumns = [
|
||||
{
|
||||
title: "类型名称",
|
||||
dataIndex: "insuranceName",
|
||||
key: "insuranceName",
|
||||
width: 120,
|
||||
fixed: 'left'
|
||||
fixed: "left"
|
||||
},
|
||||
{
|
||||
title: "是否缴费",
|
||||
|
|
@ -172,8 +68,39 @@ export const insertUpdateColumns = [
|
|||
}
|
||||
];
|
||||
|
||||
|
||||
export const dataSource = [];
|
||||
export const conditons = [
|
||||
{
|
||||
items: [
|
||||
{
|
||||
colSpan: 2,
|
||||
conditionType: "INPUT",
|
||||
domkey: ["schemeName"],
|
||||
fieldcol: 12,
|
||||
isQuickSearch: true,
|
||||
label: "方案名称",
|
||||
lanId: 33162,
|
||||
labelcol: 6,
|
||||
value: "",
|
||||
viewAttr: 2
|
||||
},
|
||||
{
|
||||
colSpan: 2,
|
||||
conditionType: "SELECT",
|
||||
domkey: ["paymentType"],
|
||||
fieldcol: 12,
|
||||
isQuickSearch: true,
|
||||
label: "缴纳类型",
|
||||
lanId: 543163,
|
||||
labelcol: 6,
|
||||
value: "",
|
||||
options: [],
|
||||
viewAttr: 2
|
||||
}
|
||||
],
|
||||
title: "",
|
||||
defaultshow: true
|
||||
}
|
||||
];
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -141,6 +141,11 @@ export default class DefaultSlideForm extends React.Component {
|
|||
key: "2",
|
||||
selected: true,
|
||||
showname: "2"
|
||||
},
|
||||
{
|
||||
key: "3",
|
||||
selected: false,
|
||||
showname: "3"
|
||||
}
|
||||
];
|
||||
item.render = (text, record) => {
|
||||
|
|
|
|||
|
|
@ -2,9 +2,8 @@ import React from "react";
|
|||
import { inject, observer } from "mobx-react";
|
||||
import { toJS } from "mobx";
|
||||
import { Button, Dropdown, Menu, message, Modal } from "antd";
|
||||
import { WeaLocaleProvider, WeaNewScroll, WeaSelect, WeaSlideModal, WeaTop } from "ecCom";
|
||||
import { renderNoright } from "../../../util";
|
||||
import CustomTab from "../../../components/customTab";
|
||||
import { WeaLocaleProvider, WeaNewScroll, WeaSelect, WeaSlideModal, WeaTab, WeaTools, WeaTop } from "ecCom";
|
||||
import { getSearchs, renderNoright } from "../../../util";
|
||||
import SlideModalTitle from "../../../components/slideModalTitle";
|
||||
import TipLabel from "../../../components/TipLabel";
|
||||
import DefaultSlideForm from "./defaultSlideForm";
|
||||
|
|
@ -14,8 +13,10 @@ import CustomPaginationTable from "../../../components/customPaginationTable";
|
|||
import TwoColContent from "../../../components/twoColContent";
|
||||
import CopySchemaModal from "./copySchemaModal";
|
||||
import CustomBenefitsTable from "./customBenefitsTable";
|
||||
import { conditons } from "./columns";
|
||||
import "./index.less";
|
||||
|
||||
const getKey = WeaTools.getKey;
|
||||
const { getLabel } = WeaLocaleProvider;
|
||||
@inject("programmeStore", "taxAgentStore", "salaryFileStore")
|
||||
@observer
|
||||
|
|
@ -30,7 +31,8 @@ export default class Programme extends React.Component {
|
|||
copyModalValue: "",
|
||||
copyId: "",
|
||||
customNewVisible: false,
|
||||
customEdit: false
|
||||
customEdit: false,
|
||||
showSearchAd: false
|
||||
};
|
||||
|
||||
this.pageInfo = { current: 1, pageSize: 10 };
|
||||
|
|
@ -38,12 +40,29 @@ export default class Programme extends React.Component {
|
|||
|
||||
componentWillMount() {
|
||||
const { programmeStore, salaryFileStore, taxAgentStore } = this.props;
|
||||
const { doInit } = programmeStore;
|
||||
const { doInit, planSearchForm } = programmeStore;
|
||||
doInit();
|
||||
const { commonEnumList } = salaryFileStore;
|
||||
commonEnumList("user", { enumClass: "com.engine.salary.enums.sicategory.SharedTypeEnum" });
|
||||
const { getTaxAgentSelectListAsAdmin } = taxAgentStore;
|
||||
getTaxAgentSelectListAsAdmin();
|
||||
planSearchForm.initFormFields(_.map(conditons, item => {
|
||||
return {
|
||||
...item,
|
||||
items: _.map(item.items, o => {
|
||||
if (getKey(o) === "paymentType") {
|
||||
return {
|
||||
...o,
|
||||
options: [
|
||||
{ key: "SCHEME_TOWN", showname: getLabel(19702, "城镇") },
|
||||
{ key: "SCHEME_VILLAGE", showname: getLabel(19703, "农村") }
|
||||
]
|
||||
};
|
||||
}
|
||||
return { ...o };
|
||||
})
|
||||
};
|
||||
}));
|
||||
}
|
||||
|
||||
// 增加编辑功能,重写columns绑定事件
|
||||
|
|
@ -173,6 +192,7 @@ export default class Programme extends React.Component {
|
|||
}
|
||||
|
||||
render() {
|
||||
const { showSearchAd } = this.state;
|
||||
const { programmeStore, taxAgentStore: { showOperateBtn } } = this.props;
|
||||
const { loading, hasRight, form, getTableDatas } = programmeStore;
|
||||
const {
|
||||
|
|
@ -187,7 +207,8 @@ export default class Programme extends React.Component {
|
|||
customNewVisible,
|
||||
tableDataSource,
|
||||
tableColumns,
|
||||
tablePageInfo
|
||||
tablePageInfo,
|
||||
planSearchForm
|
||||
} = programmeStore;
|
||||
if (!hasRight && !loading) return renderNoright();
|
||||
|
||||
|
|
@ -317,59 +338,65 @@ export default class Programme extends React.Component {
|
|||
const { programmeStore: { initSlideParms } } = this.props;
|
||||
initSlideParms();
|
||||
};
|
||||
|
||||
const customButtons = [
|
||||
<WeaSelect
|
||||
options={options}
|
||||
value={customSelectkey}
|
||||
style={{ width: "150px" }}
|
||||
onChange={v => {
|
||||
setCustomSelectkey(v);
|
||||
this.customBenefitsTableRef.getCustomCategoryList({ current: 1, welfareTypeEnum: v });
|
||||
}}
|
||||
/>
|
||||
];
|
||||
const tabButtons = [
|
||||
<Button type="primary" onClick={() => {
|
||||
selectedKey === "custom" ? handleCustomNewClick() : handleNewClick();
|
||||
}}>{getLabel(365, "新建")}</Button>
|
||||
];
|
||||
return (
|
||||
<div className="socialSecurityAndWelfareSchemeWrapper">
|
||||
<WeaTop
|
||||
title="社保福利方案" // 文字
|
||||
icon={<i className="icon-coms-fa"/>} // 左侧图标
|
||||
iconBgcolor="#F14A2D" // 左侧图标背景色
|
||||
showDropIcon={false} // 是否显示下拉按钮
|
||||
title="社保福利方案" icon={<i className="icon-coms-fa"/>}
|
||||
iconBgcolor="#F14A2D" showDropIcon={false}
|
||||
>
|
||||
<CustomTab
|
||||
topTab={topTab}
|
||||
searchOperationItem={
|
||||
<div>
|
||||
{/* 操作按钮权限 */}
|
||||
{showOperateBtn &&
|
||||
<Button
|
||||
type="primary"
|
||||
style={{ marginRight: "10px" }}
|
||||
onClick={() => {
|
||||
if (selectedKey == "custom") {
|
||||
handleCustomNewClick();
|
||||
} else {
|
||||
handleNewClick();
|
||||
}
|
||||
}}>
|
||||
新建
|
||||
</Button>}
|
||||
|
||||
{selectedKey == "custom" &&
|
||||
<WeaSelect
|
||||
options={options}
|
||||
value={customSelectkey}
|
||||
style={{ width: "150px" }}
|
||||
onChange={v => {
|
||||
setCustomSelectkey(v);
|
||||
this.customBenefitsTableRef.getCustomCategoryList({ current: 1, welfareTypeEnum: v });
|
||||
}}
|
||||
/>}
|
||||
</div>
|
||||
}
|
||||
<WeaTab
|
||||
datas={topTab} keyParam="viewcondition" selectedKey={selectedKey}
|
||||
searchType={selectedKey !== "custom" ? ["base", "advanced"] : []}
|
||||
showSearchAd={showSearchAd}
|
||||
setShowSearchAd={bool => this.setState({ showSearchAd: bool })}
|
||||
advanceHeight={200} searchsAd={getSearchs(planSearchForm, _.map(conditons, item => {
|
||||
return {
|
||||
...item,
|
||||
items: _.map(item.items, o => {
|
||||
if (getKey(o) === "paymentType") {
|
||||
return {
|
||||
...o,
|
||||
options: [
|
||||
{ key: "SCHEME_TOWN", showname: getLabel(19702, "城镇") },
|
||||
{ key: "SCHEME_VILLAGE", showname: getLabel(19703, "农村") }
|
||||
]
|
||||
};
|
||||
}
|
||||
return { ...o };
|
||||
})
|
||||
};
|
||||
}), 2, false)}
|
||||
onAdSearch={() => getTableDatas(selectedKey)}
|
||||
onAdReset={v => planSearchForm.resetForm()}
|
||||
onSearch={() => getTableDatas(selectedKey)}
|
||||
onChange={v => {
|
||||
setSelectedKey(v);
|
||||
handleSlideClose();
|
||||
if (v == "custom") {
|
||||
// 自定义福利
|
||||
} else {
|
||||
getTableDatas(v);
|
||||
}
|
||||
v !== "custom" && getTableDatas(v);
|
||||
}}
|
||||
onSearchChange={v => planSearchForm.updateFields({ schemeName: v })} // 在搜索框中输入的文字改变时的回调: 这里需要同步高级搜索和外部搜索框的值
|
||||
searchsBaseValue={planSearchForm.getFormParams().schemeName}
|
||||
buttons={!showOperateBtn ? [] : selectedKey !== "custom" ? tabButtons : [...tabButtons, ...customButtons]}
|
||||
/>
|
||||
<div className="tableWrapper">
|
||||
<WeaNewScroll height="100%">
|
||||
{selectedKey == "custom"
|
||||
{selectedKey === "custom"
|
||||
? <TwoColContent
|
||||
leftContent={
|
||||
<CustomBenefitsTable
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@ class AdjustmentSlide extends Component {
|
|||
const { data: dataMsg, errorMessage = [] } = data;
|
||||
const msg = dataMsg + errorMessage.join(",");
|
||||
!_.isEmpty(errorMessage) ? message.error(msg) : message.success(msg || "保存成功");
|
||||
_.isEmpty(errorMessage) &&
|
||||
// _.isEmpty(errorMessage) &&
|
||||
this.adjustTableRef.getCompensationList().then(r => {
|
||||
});
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -4,10 +4,6 @@
|
|||
height: 100%;
|
||||
background: #f6f6f6;
|
||||
|
||||
.wea-new-top-req-wapper .wea-new-top-req-main {
|
||||
background: #f6f6f6 !important;
|
||||
}
|
||||
|
||||
.wea-new-top-req-wapper .wea-new-top-req {
|
||||
z-index: 0 !important;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -235,7 +235,7 @@ export default class NormalIndex extends Component {
|
|||
};
|
||||
getNormalList = async (payload = {}) => {
|
||||
const { getNormalList } = this.props.standingBookStore;
|
||||
getNormalList({ ...payload }).then(({ list, columns = [], total }) => {
|
||||
getNormalList({ ...payload, pageSize: this.state.pageSize }).then(({ list, columns = [], total }) => {
|
||||
this.setState({
|
||||
tableData: { list, total, columns }
|
||||
}, () => this.postMessageToChild());
|
||||
|
|
@ -244,7 +244,7 @@ export default class NormalIndex extends Component {
|
|||
getSupplementaryList = async (payload = {}) => {
|
||||
const { getSupplementaryList } = this.props.standingBookStore;
|
||||
getSupplementaryList({
|
||||
...payload
|
||||
...payload, pageSize: this.state.pageSize
|
||||
}).then(({ list, columns = [], total }) => {
|
||||
this.setState({
|
||||
tableData: { list, columns, total }
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ import { message } from "antd";
|
|||
import { WeaForm, WeaTableNew } from "comsMobx";
|
||||
|
||||
import * as API from "../apis/calculate";
|
||||
import { toDecimal_n } from "../util";
|
||||
|
||||
const { TableStore } = WeaTableNew;
|
||||
|
||||
|
|
@ -492,7 +493,7 @@ export class calculateStore {
|
|||
..._.map(cur.salaryItems, it => {
|
||||
return {
|
||||
salaryItemId: it.salaryItemId,
|
||||
resultValue: it.resultValue
|
||||
resultValue: (it.dataType === "number" && !!it.resultValue) ? toDecimal_n(it.resultValue, it.pattern || 2) : it.resultValue
|
||||
};
|
||||
})
|
||||
];
|
||||
|
|
@ -501,7 +502,7 @@ export class calculateStore {
|
|||
const issuedAndReissueItems = this.acctresultDetailForm.issuedAndReissueItems.map(item => {
|
||||
let record = {};
|
||||
record.salaryItemId = item.salaryItemId;
|
||||
record.resultValue = item.resultValue;
|
||||
record.resultValue = (item.dataType === "number" && !!item.resultValue) ? toDecimal_n(item.resultValue, item.pattern || 2) : item.resultValue;
|
||||
return record;
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -8,6 +8,10 @@ import { notNull } from "../util/validate";
|
|||
const { TableStore } = WeaTableNew;
|
||||
|
||||
export class ProgrammeStore {
|
||||
//lys-表单初始化(方案查询表单)
|
||||
@observable planSearchForm = new WeaForm();
|
||||
|
||||
|
||||
@observable tableStore = new TableStore(); // new table
|
||||
@observable condition = []; // 存储后台得到的form数据
|
||||
@observable hasRight = true; // 判断用户是有权限查看当前页面: 没有权限渲染无权限页面,有权限渲染数据
|
||||
|
|
@ -94,20 +98,18 @@ export class ProgrammeStore {
|
|||
@action
|
||||
getTableDatas = (selectKey = "SOCIAL_SECURITY", params) => {
|
||||
this.loading = true;
|
||||
const formParams = this.form.getFormParams() || {};
|
||||
params = params || formParams;
|
||||
params.welfareTypeEnum = selectKey;
|
||||
API.getTable(params).then(action(res => {
|
||||
if (res.status) { // 接口请求成功/失败处理
|
||||
// this.tableStore.getDatas(res.data.datas); // table 请求数据
|
||||
this.tableDataSource = res.data.list ? res.data.list : [];
|
||||
this.tableColumns = res.data.columns;
|
||||
this.tablePageInfo = res.data;
|
||||
} else {
|
||||
message.error(res.errormsg || "接口调用失败!");
|
||||
}
|
||||
this.loading = false;
|
||||
}));
|
||||
API.getTable({ ...params, ...this.planSearchForm.getFormParams(), welfareTypeEnum: selectKey })
|
||||
.then(action(res => {
|
||||
if (res.status) { // 接口请求成功/失败处理
|
||||
// this.tableStore.getDatas(res.data.datas); // table 请求数据
|
||||
this.tableDataSource = res.data.list ? res.data.list : [];
|
||||
this.tableColumns = res.data.columns;
|
||||
this.tablePageInfo = res.data;
|
||||
} else {
|
||||
message.error(res.errormsg || "接口调用失败!");
|
||||
}
|
||||
this.loading = false;
|
||||
}));
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -9,6 +9,9 @@ import { notNull } from "../util/validate";
|
|||
const { TableStore } = WeaTableNew;
|
||||
|
||||
export class salaryFileStore {
|
||||
@observable adjForm = new WeaForm(); // 调薪form
|
||||
|
||||
|
||||
@observable tableStore = new TableStore(); // new table
|
||||
@observable form = new WeaForm(); // nrew 一个form
|
||||
@observable condition = []; // 存储后台得到的form数据
|
||||
|
|
@ -41,6 +44,8 @@ export class salaryFileStore {
|
|||
setSalaryIncreaseUrl = data => (this.salaryIncreaseUrl = data);
|
||||
@action("设置薪资档案项")
|
||||
setAdjustSalaryItems = data => (this.adjustSalaryItems = data);
|
||||
@action("调薪初始化form")
|
||||
initAdjForm = () => (this.adjForm = new WeaForm());
|
||||
// ** 设置导入参数 start **
|
||||
@action
|
||||
setPreviewDataSource = (previewDataSource) => {
|
||||
|
|
|
|||
|
|
@ -106,3 +106,27 @@ export const format_with_regex = (number) => {
|
|||
});
|
||||
};
|
||||
|
||||
export const getDomkes = (conditions) => {
|
||||
return _.map(conditions[0].items, it => it.domkey[0]);
|
||||
};
|
||||
|
||||
export const padding0 = (num, length) => {
|
||||
for (let len = ("" + num).length; len < length; len++) {
|
||||
num = "0" + num;
|
||||
}
|
||||
return "0." + num;
|
||||
};
|
||||
export const toDecimal_n = (x, num) => {
|
||||
if (isNaN(parseFloat(x))) return false;
|
||||
let f = Math.round(x * 100) / 100;
|
||||
let s = f.toString();
|
||||
let rs = s.indexOf(".");
|
||||
if (rs < 0) {
|
||||
rs = s.length;
|
||||
s += ".";
|
||||
}
|
||||
while (s.length <= rs + num) {
|
||||
s += "0";
|
||||
}
|
||||
return s;
|
||||
};
|
||||
|
|
|
|||
Loading…
Reference in New Issue