diff --git a/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/components/dimensionSlide.js b/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/components/dimensionSlide.js
index c3ba1159..16866f49 100644
--- a/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/components/dimensionSlide.js
+++ b/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/components/dimensionSlide.js
@@ -5,18 +5,27 @@
* Date: 2023/4/11
*/
import React, { Component } from "react";
-import { WeaDialog } from "ecCom";
-import { Button, message } from "antd";
+import { WeaDialog, WeaSearchGroup } from "ecCom";
+import { Button, message, Modal } from "antd";
import { dimensionGetForm, dimensionSave } from "../../../apis/statistics";
import { getSearchs } from "../../../util";
+import GroupSpacingEditTable from "./groupSpacingEditTable";
+import GroupIndividualEditTable from "./groupIndividualEditTable";
import "../index.less";
+const keyObj = {
+ "RATION_GROUP_SPACING": "setting4RationGroupSpacing",
+ "RATION_GROUP_INDIVIDUAL": "setting4RationGroupIndividual"
+};
+
class DimensionSlide extends Component {
constructor(props) {
super(props);
this.state = {
loading: false,
- date: ""
+ dimType: "QUALITATIVE",
+ setting4RationGroupSpacing: [],
+ setting4RationGroupIndividual: []
};
}
@@ -32,72 +41,131 @@ class DimensionSlide extends Component {
});
nextProps.onChangeCondition("QUALITATIVE");
}
+ if (nextProps.visible !== this.props.visible && !nextProps.visible) {
+ this.setState({
+ loading: false,
+ dimType: "QUALITATIVE",
+ setting4RationGroupSpacing: [],
+ setting4RationGroupIndividual: []
+ });
+ }
}
+
dimensionGetForm = (payload) => {
dimensionGetForm(payload).then(({ status, data }) => {
if (status) {
const { baseForm: { data: formData } } = data;
- const fields = _.map(this.props.condition[0].items, it => {
- return it.domkey[0];
- });
- fields.map(item => {
- if (item !== "setting4Qualitative") {
- this.props.form.updateFields({
- [item]: formData[item] || ""
- });
- } else {
- this.props.form.updateFields({
- setting4Qualitative: formData.statsDim
- });
- }
- });
+ const setting = JSON.parse(formData.setting);
this.props.onChangeCondition(formData["dimType"], 1);
+ this.setState({
+ dimType: formData.dimType,
+ [keyObj[formData["dimType"]]]: setting
+ }, () => {
+ const fields = _.map(this.props.condition[0].items, it => {
+ return it.domkey[0];
+ });
+ fields.map(item => {
+ if (item !== "setting4Qualitative") {
+ this.props.form.updateFields({
+ [item]: formData[item] || ""
+ });
+ } else if (item === "setting4Qualitative" && formData.statsDim) {
+ this.props.form.updateFields({
+ setting4Qualitative: formData.statsDim
+ });
+ }
+ });
+ });
}
});
};
-
handleSave = () => {
+ const { dimType } = this.state;
const { condition, onCancel, formId } = this.props;
- this.props.form.validateForm().then(f => {
- console.log(f);
- console.log(this.props.form.getFormParams());
- if (f.isValid) {
- console.log(this.props.form.getFormParams());
+ const { setting4Qualitative, dimCode, ...extraParams } = this.props.form.getFormParams();
+ let payload = { id: formId, ...extraParams };
+ if (dimType === "QUALITATIVE") {
+ if (!setting4Qualitative || !extraParams.dimName) {
+ Modal.warning({
+ title: "信息确认",
+ content: "必要信息不完整,红色*为必填项!"
+ });
return;
- const { setting4Qualitative, ...extraParams } = this.props.form.getFormParams();
- const options = _.find(condition[0].items, item => item.domkey[0] === "setting4Qualitative").options;
- const obj = _.find(options, item => item.key === setting4Qualitative);
- const payload = {
- id: formId,
- ...extraParams,
- setting4Qualitative: { id: obj.key, name: obj.showname }
- };
- this.setState({ loading: true });
- dimensionSave(payload).then(({ status, errormsg }) => {
- this.setState({ loading: false });
- if (status) {
- message.success("保存成功");
- onCancel(true);
- this.props.form.resetForm();
- } else {
- message.error(errormsg || "保存失败");
- }
- }).catch(() => this.setState({ loading: false }));
- } else {
- f.showErrors();
- this.setState({ date: new Date() });
}
- });
+ const tjOptions = _.find(condition[0].items, item => item.domkey[0] === "setting4Qualitative").options;
+ const tjObj = _.find(tjOptions, item => item.key === setting4Qualitative);
+ payload = { ...payload, setting4Qualitative: { id: tjObj.key, name: tjObj.showname } };
+ } else {
+ if (!extraParams.dimName) {
+ Modal.warning({
+ title: "信息确认",
+ content: "必要信息不完整,红色*为必填项!"
+ });
+ return;
+ }
+ if (dimType === "RATION_GROUP_SPACING") {
+ const { setting4RationGroupSpacing } = this.state;
+ const bool = _.every(setting4RationGroupSpacing, it => it.startValue !== "" && it.endValue !== "" && it.startValue <= it.endValue);
+ if (_.isEmpty(setting4RationGroupSpacing) || !bool) {
+ message.warning("请完善分组设置相关数据!分组设置不能为空,起始值结束值必填,且起始值需小于结束值!");
+ return;
+ } else {
+ payload = {
+ ...payload, dimCode,
+ setting4RationGroupSpacing: _.map(setting4RationGroupSpacing, (it, index) => ({
+ id: index + 1,
+ endValue: it.endValue,
+ startValue: it.startValue,
+ includeEnd: it.includeEnd === "1",
+ includeStart: it.includeStart === "1"
+ }))
+ };
+ }
+ } else if (dimType === "RATION_GROUP_INDIVIDUAL") {
+ const { setting4RationGroupIndividual } = this.state;
+ const bool = _.every(setting4RationGroupIndividual, it => it.value !== "");
+ if (_.isEmpty(setting4RationGroupIndividual) || !bool) {
+ message.warning("请完善分组设置相关数据!分组设置不能为空,且数值必填");
+ return;
+ } else {
+ payload = {
+ ...payload, dimCode,
+ setting4RationGroupIndividual: _.map(setting4RationGroupIndividual, (it, index) => ({ id: index + 1, ...it }))
+ };
+ }
+ }
+ }
+ this.setState({ loading: true });
+ dimensionSave(payload).then(({ status, errormsg }) => {
+ this.setState({ loading: false });
+ if (status) {
+ message.success("保存成功");
+ onCancel(true);
+ this.props.form.resetForm();
+ } else {
+ message.error(errormsg || "保存失败");
+ }
+ }).catch(() => this.setState({ loading: false }));
};
formItemChange = (formObj) => {
const { onChangeCondition } = this.props;
const filedKey = _.keys(formObj)[0];
- if (filedKey === "dimType") onChangeCondition(formObj[filedKey].value);
+ if (filedKey === "dimType") {
+ this.setState({
+ dimType: formObj[filedKey].value,
+ setting4RationGroupSpacing: [],
+ setting4RationGroupIndividual: []
+ }, () => onChangeCondition(formObj[filedKey].value));
+ }
+ };
+ handleConvertGroupDatasource = (data) => {
+ const { dimType } = this.state;
+ this.setState({ [keyObj[dimType]]: data });
};
render() {
- const { loading } = this.state;
+ const { loading, dimType, setting4RationGroupSpacing, setting4RationGroupIndividual } = this.state;
const { form, condition } = this.props;
return (
{getSearchs(form, condition, 1, false, this.formItemChange)}
+ {
+ dimType !== "QUALITATIVE" &&
+
+ {
+ dimType === "RATION_GROUP_SPACING" &&
+
+ }
+ {
+ dimType === "RATION_GROUP_INDIVIDUAL" &&
+
+ }
+
+ }
);
}
diff --git a/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/components/groupIndividualEditTable.js b/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/components/groupIndividualEditTable.js
new file mode 100644
index 00000000..5d2ba0e3
--- /dev/null
+++ b/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/components/groupIndividualEditTable.js
@@ -0,0 +1,51 @@
+/*
+ * Author: 黎永顺
+ * name: 分组设置-定量-单项式分组编辑表格
+ * Description:
+ * Date: 2023/4/12
+ */
+import React, { Component } from "react";
+import { WeaTableEdit } from "ecCom";
+
+class GroupIndividualEditTable extends Component {
+ constructor(props) {
+ super(props);
+ this.state = {
+ dataSource: []
+ };
+ }
+
+ componentDidMount() {
+ const { setting4RationGroupIndividual } = this.props;
+ this.setState({
+ dataSource: setting4RationGroupIndividual
+ });
+ }
+
+ handleChangeTableData = (dataSource) => {
+ const { onChange } = this.props;
+ this.setState({ dataSource }, () => onChange(this.state.dataSource));
+ };
+
+ render() {
+ const { dataSource } = this.state;
+ const columns = [
+ {
+ title: "分组设置值",
+ dataIndex: "value",
+ key: "value",
+ com: [
+ { label: "", key: "value", type: "INPUTNUMBER" }
+ ]
+ }
+ ];
+ return (
+
+ );
+ }
+}
+
+export default GroupIndividualEditTable;
diff --git a/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/components/groupSpacingEditTable.js b/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/components/groupSpacingEditTable.js
new file mode 100644
index 00000000..76720774
--- /dev/null
+++ b/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/components/groupSpacingEditTable.js
@@ -0,0 +1,98 @@
+/*
+ * Author: 黎永顺
+ * name: 分组设置-定量-组距式分组编辑表格
+ * Description:
+ * Date: 2023/4/12
+ */
+import React, { Component } from "react";
+import { WeaTableEdit } from "ecCom";
+
+class GroupSpacingEditTable extends Component {
+ constructor(props) {
+ super(props);
+ this.state = {
+ dataSource: []
+ };
+ }
+
+ componentDidMount() {
+ const { setting4RationGroupSpacing } = this.props;
+ this.setState({
+ dataSource: _.map(setting4RationGroupSpacing, item => {
+ return {
+ ...item,
+ includeStart: item.includeStart ? "1" : "0",
+ includeEnd: item.includeEnd ? "1" : "0"
+ };
+ })
+ });
+ }
+
+ handleChangeTableData = (dataSource) => {
+ const { onChange } = this.props;
+ this.setState({ dataSource }, () => onChange(this.state.dataSource));
+ };
+
+ render() {
+ const { dataSource } = this.state;
+ const columns = [
+ {
+ title: "起始值",
+ dataIndex: "startValue",
+ key: "startValue",
+ com: [
+ { label: "", key: "startValue", type: "INPUTNUMBER" }
+ ]
+ },
+ {
+ title: "含",
+ dataIndex: "includeStart",
+ key: "includeStart",
+ com: [
+ {
+ type: "CHECKBOX",
+ key: "includeStart",
+ otherParams: { content: "含" }
+ }
+ ]
+ },
+ {
+ title: "至",
+ dataIndex: "to",
+ key: "to",
+ com: [
+ { label: "", type: "TEXT" }
+ ]
+ },
+ {
+ title: "结束值",
+ dataIndex: "endValue",
+ key: "endValue",
+ com: [
+ { label: "", key: "endValue", type: "INPUTNUMBER" }
+ ]
+ },
+ {
+ title: "含",
+ dataIndex: "includeEnd",
+ key: "includeEnd",
+ com: [
+ {
+ type: "CHECKBOX",
+ key: "includeEnd",
+ otherParams: { content: "含" }
+ }
+ ]
+ }
+ ];
+ return (
+ ({ ...item, to: "至" }))}
+ showCopy={false} onChange={this.handleChangeTableData}
+ />
+ );
+ }
+}
+
+export default GroupSpacingEditTable;
diff --git a/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/index.js b/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/index.js
index bb6fe300..4bdd4f6e 100644
--- a/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/index.js
+++ b/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/index.js
@@ -92,8 +92,7 @@ class Index extends Component {
return dimensionGetForm();
};
handleChangeCondition = (val, viewAttr) => {
- const { attendanceStore: { statisticsForm, initStatisticsForm } } = this.props;
- console.log(val);
+ const { attendanceStore: { statisticsForm } } = this.props;
const helpfulTitle = val === "RATION_GROUP_SPACING" ?
"例:\n" +
" 若:所属字段为【工龄】,分组设置为【0-5】,【5-10】;统计项为【税前薪资】,对应的统计规则为【求和】; 则统计结果为:【工龄】为【0-5】的所有人的【税前薪资】求和,【工龄】为【5-10】的所有人的【税前薪资】求和;\n" +
@@ -117,7 +116,7 @@ class Index extends Component {
};
})
}, () => {
- initStatisticsForm(this.state.conditions);
+ statisticsForm.setCondition(this.state.conditions);
});
} else {
this.setState({
@@ -135,8 +134,7 @@ class Index extends Component {
};
})
}, () => {
- initStatisticsForm(this.state.conditions);
- // statisticsForm.initFormFields(this.state.conditions);
+ statisticsForm.setCondition(this.state.conditions);
});
}
};
diff --git a/pc4mobx/hrmSalary/stores/attendanceStore.js b/pc4mobx/hrmSalary/stores/attendanceStore.js
index 48730bb5..ed18f076 100644
--- a/pc4mobx/hrmSalary/stores/attendanceStore.js
+++ b/pc4mobx/hrmSalary/stores/attendanceStore.js
@@ -1,4 +1,4 @@
-import { action, observable } from "mobx";
+import { observable } from "mobx";
import { WeaForm } from "comsMobx";
@@ -7,11 +7,4 @@ export class AttendanceStore {
@observable refenceform = new WeaForm();
//薪酬统计 新增form
@observable statisticsForm = new WeaForm();
-
- @action
- initStatisticsForm = (condition) => {
- this.statisticsForm && this.statisticsForm.updateIsFormInit(false);
- this.statisticsForm = new WeaForm();
- this.statisticsForm.setCondition(condition, true);
- };
}