Merge branch 'release/3.0.1.2504.01-合并业务线' into custom-中航富士达最新

This commit is contained in:
lys 2025-10-23 13:26:21 +08:00
commit a7ab42452d
16 changed files with 82 additions and 40 deletions

View File

@ -127,7 +127,7 @@ class AssociativeSearchMult extends Component {
}
let options = data.map(d => <Option key={d.id} title={d.name}>{d.name}</Option>);
!tags && selectedValues && selectedValues.map((v) => {
v && options.unshift(<Option key={v} title={datas[v].name}>{datas[v].name}</Option>);
v && datas[v] && options.unshift(<Option key={v} title={datas[v].name}>{datas[v].name}</Option>);
});
const select = <Select
{...this.props}

View File

@ -91,11 +91,11 @@ class CustomBrowserDialog extends Component {
this.props.onCancel && this.props.onCancel();
};
getItemById = (id) => {
const { listDatas } = this.state;
const { listDatas } = this.state, dataSource = [...listDatas, ..._.values(this.props.datas)];
if (this.selectedData[id]) return this.selectedData[id];
if (!_.isEmpty(listDatas)) {
for (let i = 0; i < listDatas.length; i++) {
if (String(id) === String(listDatas[i].id)) return listDatas[i];
if (!_.isEmpty(dataSource)) {
for (let i = 0; i < dataSource.length; i++) {
if (String(id) === String(dataSource[i].id)) return dataSource[i];
}
}
};

View File

@ -62,7 +62,7 @@ class Index extends Component {
if (o.dataIndex === "username") {
return { ...o, width: 150, fixed: "left" };
}
return { ...o, width: 150 };
return { ...o, width: 150, render: (v) => (<span title={v}>{v}</span>) };
}), {
dataIndex: "options", title: getLabel(30585, "操作"),
width: 120, render: (_, record) => (

View File

@ -43,5 +43,15 @@
}
}
.wea-new-table {
.ant-table-tbody > tr > td,
.ant-table-thead > tr > th {
width: 100%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
}
}

View File

@ -125,7 +125,8 @@ class EditCalcTable extends Component {
}, 500);
});
const { routeParams: { salaryAcctRecordId } } = this.props;
updateLockStatus({ ...payload, salaryAcctRecordId }).then(({ status, errormsg }) => {
updateLockStatus({ ...payload, salaryAcctRecordId, acctEmpIds: this.state.selectedRowKeys })
.then(({ status, errormsg }) => {
if (status) {
clearInterval(this.timerLock);
this.setState({

View File

@ -43,7 +43,7 @@ class EditSalaryCalcSlide extends Component {
});
};
renderTitle = () => {
const { loading } = this.state, { viewAttr } = this.props;
const { loading, itemsByGroup } = this.state, { viewAttr } = this.props;
return <div className="titleDialog">
<div className="titleCol titleLeftBox">
<div className="titleIcon"><i className="icon-coms-fa"/></div>
@ -52,7 +52,7 @@ class EditSalaryCalcSlide extends Component {
<div className="titleCol titleRightBox">
{
viewAttr === 2 &&
<Button type="primary" onClick={this.save} loading={loading}>{getLabel(537558, "保存")}</Button>
<Button type="primary" disabled={_.isEmpty(itemsByGroup)} onClick={this.save} loading={loading}>{getLabel(537558, "保存")}</Button>
}
</div>
</div>;

View File

@ -239,6 +239,8 @@
position: relative;
margin-top: 10px;
transition: margin-top .3s;
max-height: 80vh;
overflow: auto;
.anchor-list-ink {
position: absolute;

View File

@ -2,6 +2,7 @@ import React from "react";
import { inject, observer } from "mobx-react";
import { WeaLocaleProvider, WeaTable, WeaTop } from "ecCom";
import { getQueryString } from "../../util/url";
import { sysinfo } from "../../apis/ruleconfig";
import * as API from "../../apis/declare";
import { Button } from "antd";
import "./index.less";
@ -14,15 +15,21 @@ export default class GenerateDeclarationDetail extends React.Component {
super(props);
this.state = {
loading: false, dataSource: [], columns: [], declareInfo: {},
pageInfo: { current: 1, pageSize: 10, total: 0 }
pageInfo: { current: 1, pageSize: 10, total: 0 }, sysinfo: {}
};
}
componentDidMount() {
this.getDetailList();
this.getDeclareInfo();
this.getSysinfo();
}
getSysinfo = () => {
sysinfo().then(({ status, data: sysinfo }) => {
if (status) this.setState({ sysinfo });
});
};
getDetailList = () => {
const { pageInfo } = this.state;
const payload = {
@ -64,17 +71,18 @@ export default class GenerateDeclarationDetail extends React.Component {
window.open(url, "_self");
};
renderTitle = () => {
const { declareInfo } = this.state;
const { declareInfo, sysinfo } = this.state;
const title = sysinfo["TAX_DECLARATION_DATE_TYPE"] === "1" ? getLabel(111, "税款所属期") : getLabel(111, "薪资所属月");
return (<React.Fragment>
<span>{getLabel(111, "薪资所属月")}{declareInfo.salaryMonth}</span>
<span>{title}{declareInfo.salaryMonth}</span>
<span style={{ marginLeft: "10px" }}>{getLabel(111, "个税扣缴义务人")}{declareInfo.taxAgentName}</span>
</React.Fragment>);
};
render() {
const { loading, pageInfo, columns, dataSource } = this.state;
const { taxAgentStore: { showOperateBtn } } = this.props;
const buttons = showOperateBtn ? [<Button type="primary"
const { taxAgentStore: { PageAndOptAuth } } = this.props;
const buttons = !!PageAndOptAuth.opts.length ? [<Button type="primary"
onClick={this.handleExport}>{getLabel(111, "导出全部")}</Button>] : [];
const pagination = {
...pageInfo,

View File

@ -13,6 +13,7 @@ import Content from "../../components/pcTemplate/content";
import { confirmSalaryBill, feedBackSalaryBill, payrollCheckType } from "../../apis/payroll";
import CaptchaModal from "../../components/captchaModal";
import "./index.less";
import { getQueryString } from "../../util/url";
const isIPhone = new RegExp("\\biPhone\\b|\\biPod\\b", "i").test(window.navigator.userAgent);
const isEm = window.navigator.userAgent.indexOf("E-Mobile7") >= 0;
@ -84,7 +85,18 @@ class MySalaryView extends Component {
const { captchaVisible, mySalaryStore } = this.state;
const { params: { salaryInfoId } } = this.props;
if (_.isEmpty(mySalaryStore)) {
return <div></div>;
return <div>
<CaptchaModal
visible={captchaVisible} id={salaryInfoId}
onCancel={() => this.setState({ captchaVisible: false })}
onConfirm={() => {
this.props.mySalaryStore.setInitEmVerify();
this.props.mySalaryStore.getMySalaryBill(Number(salaryInfoId)).then(data => {
this.setState({ mySalaryStore: data });
});
}}
/>
</div>;
}
const { salaryTemplate, salaryGroups, employeeInformation, sendTime } = mySalaryStore;
const salaryProps = {
@ -106,11 +118,6 @@ class MySalaryView extends Component {
</Content>
</div>
</Authority>
<CaptchaModal
visible={captchaVisible} id={salaryInfoId}
onCancel={() => this.setState({ captchaVisible: false })}
onConfirm={() => mySalaryStore.setInitEmVerify()}
/>
</React.Fragment>
);
}

View File

@ -60,7 +60,8 @@ class PayrollDetail extends Component {
render() {
const { salarySendDetailBaseInfo, showSearchAd, conditions, isQuery, showTotalCell } = this.state;
const { taxAgentStore: { showOperateBtn } } = this.props;
const { taxAgentStore: { PageAndOptAuth } } = this.props;
const showOperateBtn = PageAndOptAuth.opts.length;
const { salaryMonth, template } = salarySendDetailBaseInfo;
const dropMenuDatas = [
{

View File

@ -70,10 +70,10 @@ class StatisticalMicroSettingsSlide extends Component {
getTaxAgentSelectList = async (props) => {
const [salarySobList, empStatusList] = await Promise.all([
postFetch("/api/bs/hrmsalary/salarysob/listAuth", { filterType: "QUERY_DATA" }),
postFetch("/api/bs/hrmsalary/salarysob/listAuth", { filterType: "QUERY_DATA", isShare: props.isShare }),
commonEnumList({ enumClass: "com.engine.salary.enums.salarysob.SalaryEmployeeStatusEnum" })
]);
postFetch("/api/bs/hrmsalary/taxAgent/listAuth", { filterType: "QUERY_DATA" })
postFetch("/api/bs/hrmsalary/taxAgent/listAuth", { filterType: "QUERY_DATA", isShare: props.isShare })
.then(({ status, data }) => {
if (status) {
const conditions = _.map(condition, item => {

View File

@ -30,7 +30,7 @@ class SalaryItemForm extends Component {
componentDidMount() {
const { salaryItemFieldsList } = this.state;
const { request, editable, record, isAdd = false, taxAgentAdminOption, isLedger = false } = this.props;
const { systemType = "", sharedType, valueType, useInEmployeeSalary, dataType } = request;
const { systemType = "", sharedType, valueType, useInEmployeeSalary, dataType, pattern } = request;
this.setState({
salaryItemFieldsList: _.map(salaryItemFieldsList, item => {
const { key } = item;
@ -87,6 +87,7 @@ class SalaryItemForm extends Component {
case "defaultValue":
return {
...item,
precision: pattern ? pattern : item.precision,
type: dataType === "number" ? "INPUTNUMBER" : "INPUT",
display: valueType && valueType.toString() === "1" && useInEmployeeSalary == 0,
viewAttr: (isLedger && record.canEdit) || (editable && record.canEdit) || isAdd ? 2 : 1

View File

@ -22,6 +22,9 @@ export const socialAccountConditions = [
lanId: 537996,
labelcol: 6,
options: [],
otherParams: {
showSearch: true, optionFilterProp: "children"
},
rules: "required|string",
viewAttr: 3
},

View File

@ -27,7 +27,7 @@ class MakeupDifference extends Component {
tmpUrl: "exportSiaccountWelfarebalanceimporttemplatetetemplate",
cacheUrl: "cacheBalanceWelfareList",
importUrl: "importBalanceInsuranceDetail",
importparams: {}
importparams: {}, ..._.pick(this.props, ["billMonth", "paymentOrganization"])
},
returnEditPersonSlide: {
title: "", editId: "", visible: false

View File

@ -54,6 +54,12 @@ class WelfareAdvanceSearchPannel extends Component {
viewAttr: 2
}
};
} else if (getKey(o) === "siSchemeId" || getKey(o) === "fundSchemeId" || getKey(o) === "otherSchemeId" || getKey(o) === "taxAgentId") {
return {
...o, otherParams: {
showSearch: true, optionFilterProp: "children"
}
};
}
return { ...o };
})

View File

@ -113,7 +113,10 @@ class Index extends Component {
return {
...g, label: getLabel(g.lanId, g.label),
viewAttr: (runStatuses === "4,5" || !showOperateBtn) ? 1 : g.viewAttr,
options: _.find(props[`${o.title}Items`], j => j.domkey[0] === key).options
options: _.find(props[`${o.title}Items`], j => j.domkey[0] === key).options,
otherParams: {
showSearch: true, optionFilterProp: "children"
}
};
} else if (getKey(g).indexOf("StartTime") !== -1) {
return {