+
}
- {currentStep == 2 &&
+ {(currentStep == 2 || currentStep == 3) &&
}
- {currentStep == 3 &&
+ {currentStep == 4 &&
diff --git a/pc4mobx/hrmSalary/pages/ledger/index.less b/pc4mobx/hrmSalary/pages/ledger/index.less
index 66478c8e..592d97c2 100644
--- a/pc4mobx/hrmSalary/pages/ledger/index.less
+++ b/pc4mobx/hrmSalary/pages/ledger/index.less
@@ -184,4 +184,14 @@
text-decoration: none;
}
}
-}
\ No newline at end of file
+}
+
+.addRule-wrapper {
+ .ant-modal-body {
+ padding: 16px !important;
+
+ .addRule-top-row {
+ margin-bottom: 10px;
+ }
+ }
+}
diff --git a/pc4mobx/hrmSalary/pages/ledger/slideBaseForm.js b/pc4mobx/hrmSalary/pages/ledger/slideBaseForm.js
index b09577d2..9da5f44f 100644
--- a/pc4mobx/hrmSalary/pages/ledger/slideBaseForm.js
+++ b/pc4mobx/hrmSalary/pages/ledger/slideBaseForm.js
@@ -1,18 +1,13 @@
import React from "react";
-import { Row, Col } from "antd";
-import { toJS } from "mobx";
-import { WeaSelect, WeaTextarea, WeaInput, WeaCheckbox } from "ecCom";
+import {Col, Row} from "antd";
+import {WeaCheckbox, WeaInput, WeaSelect, WeaTextarea} from "ecCom";
import "./index.less";
import TipLabel from "../../components/TipLabel";
-import { daysOptions, cycleTypeOption } from "./options";
-import { inject, observer } from "mobx-react";
+import {cycleTypeOption, daysOptions} from "./options";
+import {inject, observer} from "mobx-react";
import RequiredLabelTip from "../../components/requiredLabelTip";
-import {
- getCurrentYearMonth,
- getCurrentMonth,
- getSubtractMonthYearMonth,
- getAddMonthYearMonth
-} from "../../util/date";
+import {getAddMonthYearMonth, getCurrentMonth, getCurrentYearMonth, getSubtractMonthYearMonth} from "../../util/date";
+import moment from "moment";
@inject("ledgerStore", "taxAgentStore")
@observer
@@ -24,11 +19,12 @@ export default class SlideBaseForm extends React.Component {
taxableItems: 1
};
}
+
componentWillMount() {
- const { edit } = this.props;
- const { ledgerStore: { initBaseInfoRequest } } = this.props;
+ const {edit} = this.props;
+ const {ledgerStore: {initBaseInfoRequest}} = this.props;
if (edit) {
- const { ledgerStore: { getLedgerBasicForm } } = this.props;
+ const {ledgerStore: {getLedgerBasicForm}} = this.props;
getLedgerBasicForm();
} else {
initBaseInfoRequest();
@@ -36,8 +32,8 @@ export default class SlideBaseForm extends React.Component {
}
handleChange(params) {
- const { ledgerStore: { baseInfoRequest, setBaseInfoRequest } } = this.props;
- let request = { ...baseInfoRequest };
+ const {ledgerStore: {baseInfoRequest, setBaseInfoRequest}} = this.props;
+ let request = {...baseInfoRequest};
Object.keys(params).map(key => {
request[key] = params[key];
});
@@ -64,10 +60,70 @@ export default class SlideBaseForm extends React.Component {
}
}
+ initPeriodStr = (periodStrType, type, fromDay) => {
+ let str = "", tmpDate = null;
+ switch (type) {
+ case "1":
+ tmpDate = moment().subtract(2, "month");
+ const is_31H = moment(tmpDate, "YYYY-MM").daysInMonth() === 31;
+ if (fromDay == 1) {
+ tmpDate = moment().subtract(2, "month").endOf("month");
+ str = `至上上月最后一天`;
+ } else {
+ tmpDate = moment(new Date(`${moment(tmpDate).format("YYYY-MM")}-0${fromDay}`))
+ .add(is_31H ? 30 : 29, "days");
+ str = `至上月${moment(tmpDate).date()}号`;
+ }
+ break;
+ case "2":
+ tmpDate = moment().subtract(1, "month");
+ const is_31 = moment(tmpDate, "YYYY-MM").daysInMonth() === 31;
+ if (fromDay == 1) {
+ tmpDate = moment().subtract(1, "month").endOf("month");
+ str = `至上月最后一天`;
+ } else {
+ tmpDate = moment(new Date(`${moment(tmpDate).format("YYYY-MM")}-0${fromDay}`))
+ .add(is_31 ? 30 : 29, "days");
+ str = `至本月${moment(tmpDate).date()}号`;
+ }
+ break;
+ case "3":
+ tmpDate = moment().add(0, "month");
+ const is_31K = moment(tmpDate, "YYYY-MM").daysInMonth() === 31;
+ if (fromDay == 1) {
+ tmpDate = moment().endOf("month");
+ str = `至本月最后一天`;
+ } else {
+ tmpDate = moment(new Date(`${moment(tmpDate).format("YYYY-MM")}-0${fromDay}`))
+ .add(is_31K ? 30 : 29, "days");
+ str = `至下月${moment(tmpDate).date()}号`;
+ }
+ break;
+ case "4":
+ tmpDate = moment().add(1, "month");
+ const is_31L = moment(tmpDate, "YYYY-MM").daysInMonth() === 31;
+ if (fromDay == 1) {
+ tmpDate = moment().add(1, "month").endOf("month");
+ str = `至下月最后一天`;
+ } else {
+ tmpDate = moment(new Date(`${moment(tmpDate).format("YYYY-MM")}-0${fromDay}`))
+ .add(is_31L ? 30 : 29, "days");
+ str = `至下下月${moment(tmpDate).date()}号`;
+ }
+ break;
+ default:
+ break;
+ }
+ return {
+ [periodStrType]: str,
+ date: moment(tmpDate).format("YYYY-MM-DD")
+ };
+ };
+
render() {
- const { request, ledgerStore, taxAgentStore, edit } = this.props;
- const { baseInfoRequest } = ledgerStore;
- const { taxAgentOption } = taxAgentStore;
+ const {request, ledgerStore, taxAgentStore, edit} = this.props;
+ const {baseInfoRequest} = ledgerStore;
+ const {taxAgentOption} = taxAgentStore;
const {
canEdit = "true",
name,
@@ -81,6 +137,8 @@ export default class SlideBaseForm extends React.Component {
socialSecurityCycleType,
description
} = baseInfoRequest;
+ const salaryCycleStrObj = this.initPeriodStr("salaryCycleStr", salaryCycleType, salaryCycleFromDay);
+ const attendCycleStrObj = this.initPeriodStr("attendCycleStr", attendCycleType, attendCycleFromDay);
return (
@@ -89,15 +147,15 @@ export default class SlideBaseForm extends React.Component {
账套名称
-
+
{
- this.handleChange({ name: value });
+ this.handleChange({name: value});
}}
/>
@@ -105,17 +163,17 @@ export default class SlideBaseForm extends React.Component {
个税扣缴义务人
-
+
{
- this.handleChange({ taxAgentId: v });
+ this.handleChange({taxAgentId: v});
}}
/>
@@ -123,7 +181,7 @@ export default class SlideBaseForm extends React.Component {
薪资类型
-
+
{
- this.handleChange({ taxableItems: value });
+ this.handleChange({taxableItems: value});
}}
/>
@@ -146,43 +204,43 @@ export default class SlideBaseForm extends React.Component {
薪资周期
-
+
{
- this.handleChange({ salaryCycleType: value });
+ this.handleChange({salaryCycleType: value});
}}
/>
{
- this.handleChange({ salaryCycleFromDay: value });
+ this.handleChange({salaryCycleFromDay: value});
}}
/>
- 至本月最后一天
+ {salaryCycleStrObj.salaryCycleStr}
税款所属期
-
+
{
- this.handleChange({ taxCycleType: value });
+ this.handleChange({taxCycleType: value});
}}
/>
@@ -190,43 +248,43 @@ export default class SlideBaseForm extends React.Component {
考勤周期
-
+
{
- this.handleChange({ attendCycleType: value });
+ this.handleChange({attendCycleType: value});
}}
/>
{
- this.handleChange({ attendCycleFromDay: value });
+ this.handleChange({attendCycleFromDay: value});
}}
/>
- 至本月最后一天
+ {attendCycleStrObj.attendCycleStr}
福利台账月份
-
+
{
- this.handleChange({ socialSecurityCycleType: value });
+ this.handleChange({socialSecurityCycleType: value});
}}
/>
@@ -235,7 +293,7 @@ export default class SlideBaseForm extends React.Component {
核算人员范围
-
+
{
- this.handleChange({ description: value });
+ this.handleChange({description: value});
}}
/>
@@ -278,7 +336,7 @@ export default class SlideBaseForm extends React.Component {
至
- {this.getMonth(salaryCycleType)}-30
+ {salaryCycleStrObj.date}
税款所属期
@@ -292,7 +350,7 @@ export default class SlideBaseForm extends React.Component {
至
- {this.getMonth(attendCycleType)}-30
+ {attendCycleStrObj.date}
福利台账月份
diff --git a/pc4mobx/hrmSalary/pages/ledger/step5/ValidRuleEditModal.js b/pc4mobx/hrmSalary/pages/ledger/step5/ValidRuleEditModal.js
index c45ede8e..589aae7c 100644
--- a/pc4mobx/hrmSalary/pages/ledger/step5/ValidRuleEditModal.js
+++ b/pc4mobx/hrmSalary/pages/ledger/step5/ValidRuleEditModal.js
@@ -1,84 +1,96 @@
-import React from 'react'
-import { Modal, Row, Col, Button, message } from 'antd'
-import { WeaInput } from 'ecCom'
-import { inject, observer } from 'mobx-react';
-import RequiredLabelTip from '../../../components/requiredLabelTip';
-import { notNull } from '../../../util/validate';
+import React from "react";
+import {Button, Col, message, Modal, Row} from "antd";
+import {WeaInput} from "ecCom";
+import {inject, observer} from "mobx-react";
+import RequiredLabelTip from "../../../components/requiredLabelTip";
+import {notNull} from "../../../util/validate";
-@inject('ledgerStore')
+@inject("ledgerStore")
@observer
export default class ValidRuleEditModal extends React.Component {
- constructor(props) {
- super(props);
- this.state = {
- name: "",
- formulaId: "",
- description: ""
- }
- }
- validateForm() {
- const { name, formulaId} = this.state;
- if(!notNull(name)) {
- message.warning("规则名称不能为空")
- return false;
- }
+ constructor(props) {
+ super(props);
+ this.state = {
+ name: "",
+ formulaId: "",
+ description: ""
+ };
+ }
- // if(!notNull(formulaId)) {
- // message.warning("校验规则不能为空")
- // return false;
- // }
-
- return true;
+ validateForm() {
+ const {name, formulaId} = this.state;
+ if (!notNull(name)) {
+ message.warning("规则名称不能为空");
+ return false;
}
+ // if(!notNull(formulaId)) {
+ // message.warning("校验规则不能为空")
+ // return false;
+ // }
- handleSave() {
- if(!this.validateForm()) {
- return;
- }
- const { ledgerStore: {saveLedgerRule}} = this.props;
- saveLedgerRule({
- name: this.state.name,
- formulaId: this.state.formulaId,
- description: this.state.description
- })
+ return true;
+ }
+
+
+ handleSave() {
+ if (!this.validateForm()) {
+ return;
+ }
+ const {ledgerStore: {saveLedgerRule}} = this.props;
+ saveLedgerRule({
+ name: this.state.name,
+ formulaId: this.state.formulaId,
+ description: this.state.description
+ });
+ this.props.onCancel();
+ }
+
+ render() {
+ return (
+ {
this.props.onCancel();
- }
-
- render() {
- return (
- {this.props.onCancel()}}
- width={800} title="添加校验规则"
- footer={
-
-
- 薪资核算时,不符合校验规则将反馈为异常
-
-
-
- }
- >
-
-
- 规则名称
-
- {this.setState({name: value})}}/>
-
-
-
- 校验规则
-
- {this.setState({formulaId: value})}}/>
-
-
-
- 备注
-
- {this.setState({description: value})}}/>
-
-
-
-
- )
- }
+ }}
+ width={800} title="添加校验规则"
+ footer={
+
+
+ 薪资核算时,不符合校验规则将反馈为异常
+
+
+
+ }
+ >
+
+
+ 规则名称
+
+ {
+ this.setState({name: value});
+ }}/>
+
+
+
+ 校验规则
+
+ {
+ // this.setState({formulaId: value});
+ this.props.onAddValidRule && this.props.onAddValidRule(true);
+ }}/>
+
+
+
+ 备注
+
+ {
+ this.setState({description: value});
+ }}/>
+
+
+
+
+ );
+ }
}
\ No newline at end of file
diff --git a/pc4mobx/hrmSalary/pages/ledger/validRulesForm.js b/pc4mobx/hrmSalary/pages/ledger/validRulesForm.js
index b3bcb7a3..6676ff8a 100644
--- a/pc4mobx/hrmSalary/pages/ledger/validRulesForm.js
+++ b/pc4mobx/hrmSalary/pages/ledger/validRulesForm.js
@@ -1,118 +1,138 @@
-import React from 'react'
-import { WeaInputSearch } from 'ecCom'
-import { Table, Icon, message, Modal } from 'antd'
-import { dataSource, slideStep5Columns} from './columns'
-import ValidRuleEditModal from './step5/ValidRuleEditModal'
-import { inject, observer } from 'mobx-react';
+import React from "react";
+import {WeaInputSearch} from "ecCom";
+import {Icon, message, Modal, Table} from "antd";
+import ValidRuleEditModal from "./step5/ValidRuleEditModal";
+import AddValidRuleModal from "./addValidRuleModal";
+import {inject, observer} from "mobx-react";
-@inject('ledgerStore')
+@inject("ledgerStore")
@observer
export default class ValidRulesForm extends React.Component {
- constructor(props) {
- super(props)
- this.state = {
- modalVisible: false,
- selectedRowKeys: [],
- searchValue: ""
- }
- }
-
- componentWillMount() {
- const { ledgerStore: {getLedgerRuleList} } = this.props;
- getLedgerRuleList()
- }
-
- handleItemDelete(record) {
- const { ledgerStore: {deleteLedgerRule}} = this.props;
- deleteLedgerRule([record.id])
- }
-
- onSelectChange(selectedRowKeys) {
- this.setState({ selectedRowKeys });
+ constructor(props) {
+ super(props);
+ this.state = {
+ modalVisible: false,
+ ruleVisible: false,
+ selectedRowKeys: [],
+ searchValue: ""
};
+ }
- handleBatchDelete() {
- const { ledgerStore: { deleteLedgerRule } } = this.props;
- const { selectedRowKeys } = this.state;
- if(selectedRowKeys.length == 0) {
- message.warning("未选择条目")
- return
- }
- Modal.confirm({
- title: '信息确认',
- content: '确认删除',
- onOk:() => {
- deleteLedgerRule(selectedRowKeys)
- },
- onCancel: () => {
+ componentWillMount() {
+ const {ledgerStore: {getLedgerRuleList}} = this.props;
+ getLedgerRuleList();
+ }
- },
- });
+ handleItemDelete(record) {
+ const {ledgerStore: {deleteLedgerRule}} = this.props;
+ deleteLedgerRule([record.id]);
+ }
+
+ onSelectChange(selectedRowKeys) {
+ this.setState({selectedRowKeys});
+ };
+
+ handleBatchDelete() {
+ const {ledgerStore: {deleteLedgerRule}} = this.props;
+ const {selectedRowKeys} = this.state;
+ if (selectedRowKeys.length == 0) {
+ message.warning("未选择条目");
+ return;
}
+ Modal.confirm({
+ title: "信息确认",
+ content: "确认删除",
+ onOk: () => {
+ deleteLedgerRule(selectedRowKeys);
+ },
+ onCancel: () => {
- handeSearch() {
- const { ledgerStore: { getLedgerRuleList } } = this.props;
- const { searchValue } = this.state;
- getLedgerRuleList(searchValue)
- }
+ }
+ });
+ }
- render() {
- const { ledgerStore } = this.props;
- const { ledgerRuleList } = ledgerStore
- const { selectedRowKeys } = this.state;
- let columns = ledgerRuleList.columns ? ledgerRuleList.columns.filter(item => item.dataIndex != "id") : []
+ handeSearch() {
+ const {ledgerStore: {getLedgerRuleList}} = this.props;
+ const {searchValue} = this.state;
+ getLedgerRuleList(searchValue);
+ }
- if(columns.length > 0) {
- columns.push({
- title: "操作",
- key: 'cz',
- render: (text, record) => (
- {this.handleItemDelete(record)}}>删除
- )
- })
- }
+ render() {
+ const {ledgerStore} = this.props;
+ const {ledgerRuleList} = ledgerStore;
+ const {selectedRowKeys} = this.state;
+ let columns = ledgerRuleList.columns ? ledgerRuleList.columns.filter(item => item.dataIndex != "id") : [];
-
- let dataSource = ledgerRuleList.list ? ledgerRuleList.list : []
- dataSource.map(item => item.key = item.id)
-
- const rowSelection = {
- selectedRowKeys,
- onChange: this.onSelectChange.bind(this),
- };
- return (
-
-
- {this.setState({searchValue: value})}}
- onSearch={(value) => {this.handeSearch(value)}}/>
-
- {
- dataSource.length > 0 && {this.handleBatchDelete()}}/>
- }
- {this.setState({
- modalVisible: true
- })}}/>
-
-
-
- {
- ledgerRuleList.list &&
`共 ${total} 条`,
- current: ledgerRuleList.pageNum
- }}/>
- }
-
-
- {
- this.state.modalVisible &&
- {this.setState({modalVisible: false})}}
- />
- }
-
+ if (columns.length > 0) {
+ columns.push({
+ title: "操作",
+ key: "cz",
+ render: (text, record) => (
+ {
+ this.handleItemDelete(record);
+ }}>删除
)
-
+ });
}
+
+
+ let dataSource = ledgerRuleList.list ? ledgerRuleList.list : [];
+ dataSource.map(item => item.key = item.id);
+
+ const rowSelection = {
+ selectedRowKeys,
+ onChange: this.onSelectChange.bind(this)
+ };
+ return (
+
+
+ {
+ this.setState({searchValue: value});
+ }}
+ onSearch={(value) => {
+ this.handeSearch(value);
+ }}
+ />
+
+ {
+ dataSource.length > 0 &&
+ {
+ this.handleBatchDelete();
+ }}/>
+ }
+ {
+ this.setState({
+ modalVisible: true
+ });
+ }}/>
+
+
+
+ {
+ ledgerRuleList.list &&
+
`共 ${total} 条`,
+ current: ledgerRuleList.pageNum
+ }}/>
+ }
+
+
+ {
+ this.setState({modalVisible: false});
+ }}
+ onAddValidRule={() => this.setState({ruleVisible: true})}
+ />
+ {
+ this.setState({ruleVisible: false});
+ }}
+ />
+
+ );
+
+ }
}
\ No newline at end of file