Merge branch 'release/2.16.1.2410.01' into feature/2.15.2.2409.01合并业务线测试

# Conflicts:
#	pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSearchComp.js
#	pc4mobx/hrmSalary/pages/ledgerPage/index.less
#	pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBook/components/welfareRecordQuery.js
#	pc4mobx/hrmSalary/pages/variableSalary/components/salaryFileDialog/index.js
#	pc4mobx/hrmSalary/pages/variableSalary/components/salaryFileList/index.js
This commit is contained in:
lys 2024-10-25 09:43:15 +08:00
commit 368542a52b
24 changed files with 194 additions and 169 deletions

View File

@ -235,6 +235,10 @@ export const updateLockStatus = (params) => {
export const updateLockEmpStatus = (params) => {
return postFetch("/api/bs/hrmsalary/salaryacct/acctresult/lockEmp", params);
};
// 单元格锁定
export const updateLockEmpCellStatus = (params) => {
return postFetch("/api/bs/hrmsalary/salaryacct/acctresult/lock", params);
};
// 导入薪资核算添加表头字段缓存
export const cacheImportField = (params) => {
return postFetch("/api/bs/hrmsalary/salaryacct/acctresult/cacheImportField", params);

View File

@ -8,7 +8,12 @@ import React, { Component } from "react";
import { WeaLocaleProvider, WeaTools } from "ecCom";
import { message, Modal, Spin } from "antd";
import { inject, observer } from "mobx-react";
import { acctResultList, updateLockEmpStatus, updateLockStatus } from "../../../../../apis/calculate";
import {
acctResultList,
updateLockEmpCellStatus,
updateLockEmpStatus,
updateLockStatus
} from "../../../../../apis/calculate";
import ProgressModal from "../../../../../components/progressModal";
import BatchUpdateSalaryItemValDialog from "./batchUpdateSalaryItemValDialog";
import EditSalaryCalcSlide from "./editSalaryCalcSlide";
@ -135,7 +140,7 @@ class EditCalcTable extends Component {
});
};
updateEmpLockStatus = (payload) => {
const { lockStatus } = payload;
const { lockStatus, salaryItemId } = payload;
Modal.confirm({
title: getLabel(131329, "信息确认"),
content: <div>
@ -166,13 +171,16 @@ class EditCalcTable extends Component {
}, 500);
});
const { routeParams: { salaryAcctRecordId } } = this.props;
updateLockEmpStatus({ ...payload, salaryAcctRecordId }).then(({ status, errormsg }) => {
const params = salaryItemId ? payload : { ...payload, salaryAcctRecordId };
const APIFunction = salaryItemId ? updateLockEmpCellStatus : updateLockEmpStatus;
APIFunction(params).then(({ status, errormsg }) => {
clearInterval(this.timerLock);
this.setState({
progressVisible: false,
progress: 0
});
if (status) {
clearInterval(this.timerLock);
this.setState({
progressVisible: false,
progress: 0
}, () => this.queryCalcResultList());
this.queryCalcResultList();
} else {
message.error(errormsg);
}
@ -224,8 +232,8 @@ class EditCalcTable extends Component {
"点击锁定所有解锁的项目值": getLabel(543649, "点击锁定所有解锁的项目值"),
"点击解锁所有锁定的项目值": getLabel(543648, "点击解锁所有锁定的项目值"),
"锁定的项目值": getLabel(543647, "锁定的项目值"),
"当前状态锁定,击解锁": getLabel(111, "当前状态锁定,击解锁"),
"当前状态未锁定,击锁定": getLabel(111, "当前状态未锁定,击锁定"),
"当前状态锁定,击解锁": getLabel(111, "当前状态锁定,击解锁"),
"当前状态未锁定,击锁定": getLabel(111, "当前状态未锁定,击锁定"),
"共": getLabel(18609, "共"), "条": getLabel(18256, "条"),
"总计": getLabel(523, "总计"), "批量解锁": getLabel(111, "批量解锁"),
"批量锁定": getLabel(111, "批量锁定"), "批量更新": getLabel(111, "批量更新"),
@ -324,7 +332,7 @@ const traverse = (arr, calcDetail) => {
return _.map(arr, item => {
if (!_.isEmpty(item.children)) {
return {
title: item.text, width: item.width + "px", ellipsis: true,
title: item.text, width: item.width + "px", ellipsis: true, calcDetail,
dataIndex: item.column, children: traverse(item.children, calcDetail),
fixed: item.fixed || false, dataType: item.dataType, align: "center"
};

View File

@ -76,6 +76,8 @@
height: 100%;
width: 100%;
overflow-y: auto;
padding: 8px 16px 0 16px;
background: #F6F6F6;
.wea-new-table {
background: #fff;
@ -83,7 +85,7 @@
.ant-table-tbody {
.ant-table-row-indent {
display: none!important;
display: none !important;
}
td:not(.ant-table-selection-column) {

View File

@ -1,7 +1,8 @@
.generateDeclarationDetail {
.tabWrapper{
.tabWrapper {
padding-left: 10px
}
.tableWrapper {
height: calc(100vh - 48px);
overflow: auto;
@ -34,7 +35,8 @@
.declare-body {
height: 100%;
width: 100%;
padding: 16px;
padding: 8px 16px 0 16px;
background: #F6F6F6;
overflow-y: auto;
.wea-new-table {

View File

@ -127,7 +127,7 @@ class FieldTable extends Component {
pagination={pagination}
loading={loading}
columns={this.getColumns()}
scroll={{ y: "calc(100vh - 152px)" }}
scroll={{ y: "calc(100vh - 175px)" }}
/>
);
}

View File

@ -99,7 +99,7 @@ class FieldManagement extends Component {
];
return (
<WeaTop
title="字段管理" icon={<i className="icon-coms-fa"/>} iconBgcolor="#F14A2D"
title="字段管理" icon={<i className="icon-coms-fa"/>} iconBgcolor="#F14A2D" className="fieldManageWrapper"
buttons={(showSalaryItemBtn || showOperateBtn) ? btns : btns.slice(-1)}
showDropIcon onDropMenuClick={this.onDropMenuClick}
dropMenuDatas={[
@ -109,26 +109,23 @@ class FieldManagement extends Component {
}
]}
>
<div className="fieldManageWrapper">
<FieldTable name={searchVal} doSearch={doSearch} onEditLedger={this.handleEditField}
onDeleteLedger={(record) => this.handleDeleteField([record.id])}
onFilterLog={(type, targetid) => this.onDropMenuClick(type, targetid)}
/>
<FieldSlide
{...slideparams}
onChangeRecord={(record) => this.setState({
slideparams: {
...slideparams,
record: { ...slideparams.record, ...record }
}
})}
onCancel={this.handleResetField}
onRefreshList={() => this.setState({ doSearch: !doSearch })}
/>
{/*操作日志*/}
<LogDialog visible={logDialogVisible} logFunction="salarcfield" filterConditions={filterConditions}
onCancel={() => this.setState({ logDialogVisible: false })}/>
</div>
<FieldTable name={searchVal} doSearch={doSearch} onEditLedger={this.handleEditField}
onDeleteLedger={(record) => this.handleDeleteField([record.id])}
onFilterLog={(type, targetid) => this.onDropMenuClick(type, targetid)}/>
<FieldSlide
{...slideparams}
onChangeRecord={(record) => this.setState({
slideparams: {
...slideparams,
record: { ...slideparams.record, ...record }
}
})}
onCancel={this.handleResetField}
onRefreshList={() => this.setState({ doSearch: !doSearch })}
/>
{/*操作日志*/}
<LogDialog visible={logDialogVisible} logFunction="salarcfield" filterConditions={filterConditions}
onCancel={() => this.setState({ logDialogVisible: false })}/>
</WeaTop>
);
}

View File

@ -1,3 +1,15 @@
.fieldManageWrapper {
.wea-new-top-content {
background: #F6F6F6;
padding: 8px 16px 0 16px;
}
.wea-new-table {
background: #FFF;
}
}
.slideOuterWrapper {
.wea-form-item-group {
margin: 16px;

View File

@ -232,11 +232,11 @@ const TitleNormalComp = (props) => {
<i className="icon-coms-Delete" title="删除" onClick={() => onDeleteCategory(uuid)}/>
}
{
sortedIndex !== 0 && showOperateBtn &&
name !== getLabel(111, "未分类") && sortedIndex !== 0 && showOperateBtn &&
<i className="icon-coms-Reverse" title="向上移动" onClick={() => onUpgo(sortedIndex)}/>
}
{
sortedIndex !== dataSourceLen - 1 && showOperateBtn &&
name !== getLabel(111, "未分类") && sortedIndex !== dataSourceLen - 2 && showOperateBtn &&
<i className="icon-coms-positive-sequence" title="向下移动" onClick={() => onDowngo(sortedIndex)}/>
}
</div>

View File

@ -61,19 +61,16 @@ class LedgerSearchComp extends Component {
let items = [];
c.items.map(fields => {
items.push({
com: (
<WeaFormItem label={`${fields.label}`} labelCol={{ span: `${fields.labelcol}` }}
wrapperCol={{ span: `${fields.fieldcol}` }} error={form.getError(fields)}
tipPosition="bottom"
>
<WeaSwitch fieldConfig={fields} form={form} formParams={formParams}/>
</WeaFormItem>),
colSpan: 2
com: (<WeaFormItem label={`${fields.label}`} labelCol={{ span: `${fields.labelcol}` }}
wrapperCol={{ span: `${fields.fieldcol}` }} error={form.getError(fields)}
tipPosition="bottom">
<WeaSwitch fieldConfig={fields} form={form} formParams={formParams}
onChange={_.debounce(this.props.onSearch, 500)}/>
</WeaFormItem>), colSpan: 2
});
});
group.push(
<WeaSearchGroup col={2} needTigger={true} title={c.title} showGroup={c.defaultshow} center={false}
items={items}/>);
group.push(<WeaSearchGroup col={2} needTigger={true} title={c.title} showGroup={c.defaultshow} center={false}
items={items}/>);
});
return group;
};
@ -81,12 +78,7 @@ class LedgerSearchComp extends Component {
render() {
const { conditions } = this.state;
const { ledgerStore: { searchForm } } = this.props;
return (
<div className="ledgerSearch-Wrapper">
{this.formRender(searchForm, conditions)}
<Button type="primary" onClick={this.props.onSearch}>{getLabel(388113, "搜索")}</Button>
</div>
);
return (<div className="ledgerSearch-Wrapper">{this.formRender(searchForm, conditions)}</div>);
}
}

View File

@ -107,9 +107,9 @@ class LedgerSlide extends Component {
if (!it.salarySobId) delete it.id;
return { ...it };
}),
itemGroups: _.map(_.filter(itemGroups, it => it.name !== "未分类"), item => {
itemGroups: _.map(_.filter(itemGroups, it => it.name !== "未分类"), (item, index) => {
return {
...item,
...item, sortedIndex: index,
items: _.map(item.items, it => {
delete it.originFormulaContent;
delete it.originSqlContent;

View File

@ -57,10 +57,9 @@ class Index extends Component {
const { PageAndOptAuth } = taxAgentStore;
const admin = PageAndOptAuth.opts.includes("admin");
const btns = [
<Button
type="primary"
onClick={() => this.setState({ slideparams: { ...slideparams, visible: true } })}
>新建</Button>,
<Button type="primary" onClick={() => this.setState({ slideparams: { ...slideparams, visible: true } })}>
{getLabel(111, "新建")}
</Button>,
<LedgerSearchComp onSearch={() => this.setState({ doSearch: !doSearch })}/>
];
return (

View File

@ -1,5 +1,11 @@
.ledgerWrapper {
height: 100%;
padding: 8px 16px 0 16px;
background: #F6F6F6;
.wea-new-table {
background: #FFF;
}
.tdEllipsis {
display: inline-block;
@ -12,7 +18,6 @@
.ledgerSearch-Wrapper {
min-width: 350px;
margin-right: 70px;
position: relative;
& > button {

View File

@ -46,7 +46,7 @@ class Index extends Component {
if (it.column === "salaryYearMonth" || it.column === "sendTime") {
return {
dataIndex: it.column, title: it.text, width: it.width,
render: (__, record) => (<span>{moment(record[it["column"]]).format("YYYY-MM")}</span>)
render: (__, record) => (<span>{record[it["column"]]}</span>)
};
}
return {

View File

@ -1,4 +1,8 @@
.mySalary_wrapper {
.wea-new-top-req-content {
padding: 8px 16px;
}
.wea-transfer-list-wrapper {
border: none;
}

View File

@ -26,6 +26,11 @@
padding: 5px 16px;
border-bottom: 1px solid #e5e5e5;
.wea-select {
width: 120px !important;
margin-left: 10px;
}
.wea-input-number {
width: 80px !important;
margin: 0 10px;

View File

@ -106,7 +106,7 @@ class TemplateBaseSettings extends Component {
render() {
const { watermarkStatus, watermark, watermarkSet, ackFeedbackSetting, salaryBillViewingLimitSetting } = this.state;
const { ackStatus, feedbackStatus, autoAckDays, feedBackUrl, mobileFeedbackUrl } = ackFeedbackSetting;
const { limitMonth, burningAfterReadingMin } = salaryBillViewingLimitSetting;
const { monthType = "SALARY_DATE", limitMonth, burningAfterReadingMin } = salaryBillViewingLimitSetting;
return (
<React.Fragment>
<WeaSearchGroup title={getLabel(111, "水印设置")} showGroup needTigger className="waterMarkWrapper">
@ -204,6 +204,14 @@ class TemplateBaseSettings extends Component {
<WeaSearchGroup title={getLabel(111, "工资单时效设置")} showGroup needTigger className="waterMarkWrapper">
<div className="agingBox">
<span>{getLabel(111, "仅可查看")}</span>
<WeaSelect
value={monthType} onChange={monthType => this.setState({
salaryBillViewingLimitSetting: { ...salaryBillViewingLimitSetting, monthType }
})}
options={[
{ key: "SALARY_DATE", showname: getLabel(111, "薪资所属月"), selected: true },
{ key: "SEND_DATE", showname: getLabel(111, "发放日期") }
]}/>
<WeaInputNumber min={0} value={limitMonth}
onChange={limitMonth => this.setState({
salaryBillViewingLimitSetting: {

View File

@ -27,6 +27,7 @@
.salary-payroll-content {
padding: 8px 16px;
height: 100%;
overflow-y: auto;
& > .wea-search-group {
background: #FFF;

View File

@ -64,28 +64,22 @@ class WelfareRecordQuery extends Component {
let items = [];
c.items.map(fields => {
items.push({
com: (
<WeaFormItem label={`${fields.label}`} labelCol={{ span: `${fields.labelcol}` }}
wrapperCol={{ span: `${fields.fieldcol}` }} error={form.getError(fields)} tipPosition="bottom"
>
<WeaSwitch fieldConfig={fields} form={form} formParams={formParams}
onChange={this.getWelfareRecordList}/>
</WeaFormItem>)
com: (<WeaFormItem label={`${fields.label}`} labelCol={{ span: `${fields.labelcol}` }}
wrapperCol={{ span: `${fields.fieldcol}` }} error={form.getError(fields)}
tipPosition="bottom">
<WeaSwitch fieldConfig={fields} form={form} formParams={formParams} onChange={this.getWelfareRecordList}/>
</WeaFormItem>)
});
});
group.push(
<WeaSearchGroup col={3} needTigger showGroup={c.defaultshow}
items={[
{
com: (<WeaFormItem label={getLabel(542443, "账单月份")} labelCol={{ span: 4 }}
wrapperCol={{ span: 16 }}>
<MonthRangePicker dateRange={dateRange} viewAttr={2}
onChange={v => this.setState({ dateRange: v }, () => this.getWelfareRecordList())}/>
</WeaFormItem>)
},
...items
]}
/>);
group.push(<WeaSearchGroup col={3} needTigger showGroup={c.defaultshow}
items={[{
com: (<WeaFormItem label={getLabel(542443, "账单月份")} labelCol={{ span: 4 }}
wrapperCol={{ span: 16 }}>
<MonthRangePicker dateRange={dateRange} viewAttr={2}
onChange={v => this.setState({ dateRange: v }, () => this.getWelfareRecordList())}/>
</WeaFormItem>)
}, ...items]}
/>);
});
return group;
};
@ -102,9 +96,7 @@ class WelfareRecordQuery extends Component {
render() {
const { standingBookStore: { welfareRQForm } } = this.props;
const { conditions } = this.state;
return (
<div className="salary-welfare-record-query">{this.renderForm(welfareRQForm, conditions)}</div>
);
return (<div className="salary-welfare-record-query">{this.renderForm(welfareRQForm, conditions)}</div>);
}
}

View File

@ -57,24 +57,22 @@
//社保福利台账页面重构
.salary-welfare-record {
min-width: 1000px;
overflow: auto;
width: 100%;
height: 100%;
background: #f6f6f6;
.salary-welfare-record-content {
width: 100%;
height: 100%;
padding: 8px 16px;
padding: 8px 16px 0 16px;
background: #F6F6F6;
display: flex;
flex-direction: column;
.salary-welfare-record-query {
width: 100%;
padding: 0 8px;
margin-bottom: 8px;
height: 46px;
display: flex;
align-items: center;
background: #FFF;
.wea-search-group {
width: 100%;

View File

@ -124,50 +124,45 @@ class StandingBook extends Component {
const rightBtns = [<Button type="primary" onClick={() => this.setState({
accountDialog: { ...accountDialog, visible: true, title: getLabel(538780, "核算") }
})}>{getLabel(538780, "核算")}</Button>];
return (
<div className="salary-welfare-record">
<WeaTop title={getLabel(538002, "社保福利台账")} icon={<i className="icon-coms-fa"/>}
iconBgcolor="#F14A2D" buttons={showOperateBtn ? rightBtns : []}
showDropIcon onDropMenuClick={this.onDropMenuClick}
dropMenuDatas={[
{
key: "log", icon: <i className="iconfont icon-caozuorizhi32"/>,
content: getLabel(545781, "操作日志")
}
]}
>
<div className="salary-welfare-record-content">
<WelfareRecordQuery
onSearch={(payload) => {
this.setState({
queryForm: { ...queryForm, ...payload }
}, () => this.wfListRef.wrappedInstance.getWelfareRecordList());
}}
onPutAccountOptions={options => this.setState({ accountDialog: { ...accountDialog, options } })}
/>
<WelfareRecordList ref={dom => this.wfListRef = dom} queryForm={queryForm}
onFilterLog={(type, targetid) => this.onDropMenuClick(type, targetid)}/>
</div>
<Accountdialog {...accountDialog}
onCancel={() => this.setState({
accountDialog: { ...accountDialog, visible: false, title: "", loading: false }
})} onOk={this.handleAccount}
/>
{/*操作日志*/}
<LogDialog visible={logDialogVisible} logFunction="siAccount" filterConditions={filterConditions}
onCancel={() => this.setState({ logDialogVisible: false })}/>
{/*核算进度条*/}
{
this.state.progressVisible &&
<ProgressModal visible={this.state.progressVisible} progress={this.state.progress}
onCancel={() => {
this.setState({ progressVisible: false, progress: 0 }, () => clearInterval(this.timer));
}}
/>
}
</WeaTop>
return (<WeaTop title={getLabel(538002, "社保福利台账")} icon={<i className="icon-coms-fa"/>}
iconBgcolor="#F14A2D" buttons={showOperateBtn ? rightBtns : []} className="salary-welfare-record"
showDropIcon onDropMenuClick={this.onDropMenuClick}
dropMenuDatas={[
{
key: "log", icon: <i className="iconfont icon-caozuorizhi32"/>,
content: getLabel(545781, "操作日志")
}
]}>
<div className="salary-welfare-record-content">
<WelfareRecordQuery
onSearch={(payload) => {
this.setState({
queryForm: { ...queryForm, ...payload }
}, () => this.wfListRef.wrappedInstance.getWelfareRecordList());
}}
onPutAccountOptions={options => this.setState({ accountDialog: { ...accountDialog, options } })}
/>
<WelfareRecordList ref={dom => this.wfListRef = dom} queryForm={queryForm}
onFilterLog={(type, targetid) => this.onDropMenuClick(type, targetid)}/>
</div>
);
<Accountdialog {...accountDialog}
onCancel={() => this.setState({
accountDialog: { ...accountDialog, visible: false, title: "", loading: false }
})} onOk={this.handleAccount}
/>
{/*操作日志*/}
<LogDialog visible={logDialogVisible} logFunction="siAccount" filterConditions={filterConditions}
onCancel={() => this.setState({ logDialogVisible: false })}/>
{/*核算进度条*/}
{
this.state.progressVisible &&
<ProgressModal visible={this.state.progressVisible} progress={this.state.progress}
onCancel={() => {
this.setState({ progressVisible: false, progress: 0 }, () => clearInterval(this.timer));
}}
/>
}
</WeaTop>);
}
}

View File

@ -99,7 +99,7 @@ class Index extends Component {
}, {});
};
save = () => {
const { baseTableStore: { VSSalaryFileForm }, onSearch, id } = this.props;
const { baseTableStore: { VSSalaryFileForm }, onSearch, detail: { id } } = this.props;
VSSalaryFileForm.validateForm().then(f => {
if (f.isValid) {
const payload = VSSalaryFileForm.getFormParams();
@ -120,7 +120,7 @@ class Index extends Component {
});
};
renderTitle = () => {
const { loading } = this.state, { title, detail } = this.props;
const { loading } = this.state, { title } = this.props;
return <div className="titleDialog">
<div className="titleCol titleLeftBox">
<div className="titleIcon"><i className="icon-coms-fa"/></div>
@ -138,7 +138,7 @@ class Index extends Component {
return (<WeaSlideModal
className="variable_salary_file_dialog" {...this.props} direction="right" onClose={() => onClose()}
top={0} width={800} height={100} measureT="%" measureX="px" measureY="%" title={this.renderTitle()}
content={<div className="form-dialog-layout">{getSearchs(VSSalaryFileForm, conditions)}</div>}
content={<div className="form-dialog-layout">{getSearchs(VSSalaryFileForm, conditions, 2, false)}</div>}
/>);
}
}

View File

@ -113,9 +113,8 @@ class Index extends Component {
const { pageInfo: result } = data;
const { list: dataSource, pageNum: current, pageSize, total } = result;
this.setState({
pageInfo: { ...pageInfo, current, pageSize, total }, dataSource
}
);
pageInfo: { ...pageInfo, current, pageSize, total }, dataSource
});
}
});
};
@ -173,30 +172,32 @@ class Index extends Component {
if (dom && dataSource.length > 0) {
height = (parseFloat(dom.style.height) > 620 && dataSource.length === 10) ? dataSource.length * 46 + 108 : dataSource.length < 10 ? dataSource.length * 46 + 108 : parseFloat(dom.style.height) - 62;
}
return (
<React.Fragment>
<div className="extraFormQuery form-dialog-layout">
{getSearchs(VExtraSalryForm, condtions, 2, false, () => this.getVariableSalaryList())}
<AdvanceInputBtn searchType="advance" onOpenAdvanceSearch={() => this.openAdvanceSearch()}
onAdvanceSearch={() => this.getVariableSalaryList()}/>
</div>
<div className={cs("searchAdvanced-condition-container", { "searchAdvanced-condition-hide": !showSearchAd })}>
<SearchPannel onCancel={() => this.setState({ showSearchAd: false })} onAdSearch={this.handleAdvanceSearch}/>
</div>
<div style={{ height: height + "px" }}>
<Spin spinning={loading}>
<iframe
style={{ border: 0, width: "100%", height: "100%" }}
// src="http://localhost:7607/#/unitTable"
src="/spa/hrmSalary/hrmSalaryCalculateDetail/index.html#/unitTable"
id="unitTable"
/>
</Spin>
</div>
<WeaTableComx style={{ display: "none" }} comsWeaTableStore={SFTableStore} needScroll={true}
columns={this.getColumns()}/>
</React.Fragment>
);
return (<React.Fragment>
<div className="extraFormQuery form-dialog-layout">
{getSearchs(VExtraSalryForm, condtions, 2, false, () => this.getVariableSalaryList())}
<AdvanceInputBtn searchType="advance" onOpenAdvanceSearch={() => this.openAdvanceSearch()}
onAdvanceSearch={this.getVariableSalaryList}/>
</div>
<div className={cs("searchAdvanced-condition-container", { "searchAdvanced-condition-hide": !showSearchAd })}>
<SearchPannel onCancel={() => this.setState({ showSearchAd: false })}
onAdSearch={() => {
this.openAdvanceSearch();
this.getVariableSalaryList();
}}/>
</div>
<div style={{ height: height + "px" }}>
<Spin spinning={loading}>
<iframe
style={{ border: 0, width: "100%", height: "100%" }}
// src="http://localhost:7607/#/unitTable"
src="/spa/hrmSalary/hrmSalaryCalculateDetail/index.html#/unitTable"
id="unitTable"
/>
</Spin>
</div>
<WeaTableComx style={{ display: "none" }} comsWeaTableStore={SFTableStore} needScroll={true}
columns={this.getColumns()}/>
</React.Fragment>);
}
}

View File

@ -179,7 +179,7 @@ export const salaryFileConditions = [
labelcol: 8,
value: "",
options: [],
rules: "required|string",
rules: "required",
viewAttr: 3
},
{

View File

@ -45,7 +45,7 @@ class Index extends Component {
this.setState({
SFDialog: {
...this.state.SFDialog, visible: true, detail,
title: _.isEmpty(detail) ? getLabel(111, "新增薪资档案") : getLabel(111, "编辑薪资档案")
title: _.isEmpty(detail) ? getLabel(111, "新增浮动数据") : getLabel(111, "编辑浮动数据")
}
});
break;