Merge branch 'feature/2.8.3.2308-薪资账套薪资项目项添加编辑的功能'
This commit is contained in:
commit
a2f81296d8
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
/>
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,13 @@
|
|||
.ledgerOuter {
|
||||
.wea-new-top {
|
||||
.ant-col-10 {
|
||||
span:nth-child(2) {
|
||||
margin-top: -6px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.ledgerWrapper {
|
||||
height: 100%;
|
||||
|
||||
|
|
|
|||
|
|
@ -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 });
|
||||
|
|
|
|||
Loading…
Reference in New Issue