Merge branch 'feature/2.8.3.2308-薪资账套薪资项目项添加编辑的功能'

This commit is contained in:
黎永顺 2023-07-24 10:57:50 +08:00
commit a2f81296d8
8 changed files with 243 additions and 41 deletions

View File

@ -168,6 +168,11 @@
}
.categroyListWrapper {
.wea-search-group {
padding-left: 0;
padding-right: 0;
}
.titleNormalWrapper {
display: flex;
justify-content: space-between;
@ -180,6 +185,11 @@
}
.titleWrapper {
span {
font-weight: 600;
color: #111;
}
i {
font-size: 16px;
color: #333;
@ -201,6 +211,16 @@
align-items: center;
width: 100%;
.topTitle {
padding: 5px 12px;
margin-right: 10px;
}
.active {
background: #e9f7ff;
color: #5d9cec;
}
.titleLeft {
display: flex;
align-items: center;
@ -236,11 +256,28 @@
.moveModalWrapper {
.ant-radio-group {
display: flex;
flex-direction: column;
display: grid;
grid-template-columns: repeat(3, 33.33%);
.ant-radio-wrapper {
margin: 4px 16px;
margin: 4px 0;
}
}
}
.salaryItemEditWrapper {
.wea-search-group {
padding: 0;
border: 1px solid #e5e5e5;
border-bottom: none;
.wea-content {
padding: 0;
.wea-form-item {
padding: 4px 16px;
border-bottom: 1px solid #e5e5e5;
}
}
}
}

View File

@ -24,7 +24,12 @@ class LedgerMovoTo extends Component {
>
<WeaSearchGroup showGroup needTigger={false}>
<WeaSelect
options={dataList}
options={_.filter(dataList, item => item.showname === "未分类")}
detailtype={3} value={value}
onChange={onChangeMoveVal}
/>
<WeaSelect
options={_.filter(dataList, item => item.showname !== "未分类")}
detailtype={3} value={value}
onChange={onChangeMoveVal}
/>

View File

@ -0,0 +1,57 @@
/*
* Author: 黎永顺
* name: 薪资账套-编辑薪资项目项
* Description:
* Date: 2023/07/19
*/
import React, { Component } from "react";
import { WeaLocaleProvider, WeaSlideModal } from "ecCom";
import SlideModalTitle from "../../../components/slideModalTitle";
import SalaryItemForm from "../../salaryItem/salaryItemForm";
import "./index.less";
const getLabel = WeaLocaleProvider.getLabel;
class LedgerSalaryItemEditSlide extends Component {
constructor(props) {
super(props);
this.state = {};
}
handleChange = (params) => {
const request = { ...this.props.request, ...params };
console.log(this.props.request, params);
this.props.onUpdateRequest(request);
};
handleShowFormal = () => this.props.onEditFormnul();
render() {
return (
<WeaSlideModal
{...this.props}
className="salaryItemEditWrapper"
top={0} width={80} height={100}
direction="right" measure="%"
title={
<SlideModalTitle
subtitle={getLabel(111, "编辑薪资项目")} showOperateBtn
loading={this.props.loading} editable onSave={this.props.onSave}
/>
}
content={
<div style={{ padding: 16 }}>
{
this.props.visible &&
<SalaryItemForm
{...this.props}
onChangeFieldsItem={this.handleChange} onShowFormal={this.handleShowFormal}
/>
}
</div>
}
/>
);
}
}
export default LedgerSalaryItemEditSlide;

View File

@ -306,7 +306,7 @@ const TitleNormalComp = (props) => {
const TitleComp = (props) => {
const { onAddCategory, titleName, showOperateBtn } = props;
return <div className="titleWrapper">
<span>{titleName}</span>
<div><span className="topTitle active">{titleName}</span></div>
{
showOperateBtn &&
<Button type="ghost" onClick={() => onAddCategory()}>新增分类</Button>

View File

@ -5,13 +5,25 @@
* Date: 2022/12/13
*/
import React, { Component } from "react";
import { WeaCheckbox, WeaHelpfulTip, WeaTable } from "ecCom";
import { message } from "antd";
import { WeaCheckbox, WeaHelpfulTip, WeaLocaleProvider, WeaTable } from "ecCom";
import LedgerSalaryItemEditSlide from "./ledgerSalaryItemEditSlide";
import { getSalaryFieldForm } from "../../../apis/fieldManage";
import { commonEnumList } from "../../../apis/ruleconfig";
import { saveItem } from "../../../apis/item";
const getLabel = WeaLocaleProvider.getLabel;
class LedgerSalaryItemTable extends Component {
constructor(props) {
super(props);
this.state = {
selectedRowKeys: []
selectedRowKeys: [],
salaryItemPayload: {
visible: false, record: {},
request: {}, isLedger: true,
userStatusList: [], loading: false
}
};
}
@ -26,6 +38,7 @@ class LedgerSalaryItemTable extends Component {
onHandleItemhide(
_.map([...dataSource], item => {
if (id === item.id || id === item.key) {
alert(1);
return {
...item,
itemHide: String(value)
@ -46,8 +59,62 @@ class LedgerSalaryItemTable extends Component {
})
);
};
/*
* Author: 黎永顺
* Description: 编辑薪资项目
* Params:
* Date: 2023/7/19
*/
handleEditSalaryItem = async (record) => {
const { data: userStatusList } = await commonEnumList({ enumClass: "com.engine.salary.enums.sicategory.SharedTypeEnum" });
getSalaryFieldForm({ id: record.salaryItemId }).then(({ status, data }) => {
if (status) {
this.setState({
salaryItemPayload: {
...this.state.salaryItemPayload,
visible: true, request: data, record,
userStatusList: _.map(userStatusList, it => ({ key: it.value.toString(), showname: it.defaultLabel }))
}
});
}
});
};
/*
* Author: 黎永顺
* Description: 保存薪资项目
* Params:
* Date: 2023/7/19
*/
handleSaveItem = () => {
const { salaryItemPayload } = this.state;
const { request, record } = salaryItemPayload;
this.setState({
salaryItemPayload: { ...salaryItemPayload, loading: true }
});
saveItem(request).then(({ status, errorMsg }) => {
if (status) {
message.success(getLabel(22619, "保存成功"));
this.setState({
salaryItemPayload: { ...salaryItemPayload, loading: false, visible: false }
});
const { id } = record;
const { hideDefault } = request;
this.handleChangeItem(hideDefault.toString(), id);
console.log(this.props, this.state);
//TODO:渲染列表数据
} else {
this.setState({
salaryItemPayload: { ...salaryItemPayload, loading: false }
});
message.error(errorMsg || getLabel(22620, "保存失败"));
}
}).catch(() => this.setState({
salaryItemPayload: { ...salaryItemPayload, loading: false }
}));
};
render() {
const { salaryItemPayload } = this.state;
const {
dataSource,
onDropCategoryItem,
@ -77,18 +144,11 @@ class LedgerSalaryItemTable extends Component {
<span style={{ marginRight: 8 }}>核算公式</span>
<WeaHelpfulTip title={<HelpContent/>} placement="bottom" width={200}/>
</span>,
dataIndex: "formulaContent",
key: "formulaContent",
render: (text, record) => {
if (record.canEdit) {
return (
<span className="linkWapper">
<a href="javascript: void(0);" onClick={() => onEditFormnul(record)}> {text} </a>
</span>
);
} else {
return <span> {text} </span>;
}
dataIndex: "valueType",
key: "valueType",
render: (_, record) => {
const { valueType } = record;
return <span> {valueType === 1 ? "输入" : valueType === 2 ? "自定义公式" : valueType === 3 ? "SQL" : ""} </span>;
}
},
{
@ -116,26 +176,49 @@ class LedgerSalaryItemTable extends Component {
title: "操作",
dataIndex: "operate",
key: "operate",
width: 100,
width: 120,
render: (_, record) => (
<a href="javascript:void(0);" onClick={() => onMoveTo(record)}>移动到</a>
<React.Fragment>
<a href="javascript:void(0);" onClick={() => this.handleEditSalaryItem(record)}
style={{ marginRight: 10 }}>编辑</a>
<a href="javascript:void(0);" onClick={() => onMoveTo(record)}>移动到</a>
</React.Fragment>
)
}
];
return (
<WeaTable
rowKey={record => record.id || record.key}
rowSelection={rowSelection}
dataSource={dataSource}
columns={columns}
onRow={(record, index) => ({
index,
moveRow: record
})}
pagination={false}
onDrop={onDropCategoryItem}
draggable={true}
/>
<React.Fragment>
<WeaTable
rowKey={record => record.id || record.key}
rowSelection={rowSelection}
dataSource={dataSource}
columns={columns}
onRow={(record, index) => ({
index,
moveRow: record
})}
pagination={false}
onDrop={onDropCategoryItem}
draggable={true}
/>
<LedgerSalaryItemEditSlide
{...salaryItemPayload}
onUpdateRequest={request => {
this.setState({
salaryItemPayload: {
...salaryItemPayload, request
}
});
}}
onEditFormnul={() => onEditFormnul(salaryItemPayload.record)}
onSave={this.handleSaveItem}
onClose={() => this.setState({
salaryItemPayload: {
...salaryItemPayload, visible: false
}
})}
/>
</React.Fragment>
);
}
}

View File

@ -10,6 +10,7 @@ import { WeaInputSearch, WeaTop } from "ecCom";
import { Button } from "antd";
import LedgerTable from "./components/ledgerTable";
import LedgerSlide from "./components/ledgerSlide";
import "./index.less";
@inject("taxAgentStore")
@observer
@ -67,7 +68,7 @@ class Index extends Component {
];
return (
<WeaTop
title="薪资账套"
title="薪资账套" className="ledgerOuter"
icon={<i className="icon-coms-fa"/>}
iconBgcolor="#F14A2D"
showDropIcon={false}

View File

@ -1,3 +1,13 @@
.ledgerOuter {
.wea-new-top {
.ant-col-10 {
span:nth-child(2) {
margin-top: -6px;
}
}
}
}
.ledgerWrapper {
height: 100%;

View File

@ -18,12 +18,20 @@ class SalaryItemForm extends Component {
componentDidMount() {
const { salaryItemFieldsList } = this.state;
const { request, editable, record, isAdd, taxAgentAdminOption } = this.props;
const { systemType, sharedType, valueType } = request;
const { request, editable, record, isAdd = false, taxAgentAdminOption, isLedger = false } = this.props;
const { systemType = "", sharedType, valueType } = request;
this.setState({
salaryItemFieldsList: _.map(salaryItemFieldsList, item => {
const { key } = item;
switch (key) {
case "useDefault":
case "sortedIndex":
case "description":
return {
...item,
viewAttr: (!isLedger && ((editable && record.canEdit) || isAdd)) ? 2 : 1,
display: !isLedger
};
case "useInEmployeeSalary":
return {
...item,
@ -44,16 +52,17 @@ class SalaryItemForm extends Component {
display: (!_.isNil(sharedType) && sharedType.toString() === "1") && (!_.isNil(systemType) && systemType.toString() === "0"),
options: taxAgentAdminOption
};
case "hideDefault":
case "valueType":
return {
...item,
viewAttr: isAdd ? 2 : 1
viewAttr: (isLedger && record.canEdit) || (editable && record.canEdit) || isAdd ? 2 : 1
};
case "formulaContent":
return {
...item,
display: valueType === "2" || valueType === "3",
viewAttr: (editable && record.canEdit) || isAdd ? 2 : 1
display: valueType && (valueType.toString() === "2" || valueType.toString() === "3"),
viewAttr: (isLedger && record.canEdit) || (editable && record.canEdit) || isAdd ? 2 : 1
};
default:
break;
@ -83,7 +92,7 @@ class SalaryItemForm extends Component {
return { ...item };
})
}, () => {
if (key === "valueType") {
if (key === "valueType" && !this.props.isLedger) {
onChangeFieldsItem({ formulaContent: "", formulaId: 0, valueType: v });
} else {
onChangeFieldsItem({ [key]: (key === "useDefault" || key === "useInEmployeeSalary" || key === "hideDefault") ? Number(v) : v });