From 25ce139a0c7abc4c26ade0d0746616d85c08f9ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E6=B0=B8=E9=A1=BA?= <971387674@qq.com> Date: Mon, 21 Aug 2023 10:53:19 +0800 Subject: [PATCH 01/12] =?UTF-8?q?=E4=BA=A7=E5=93=81-=E5=B7=A5=E8=B5=84?= =?UTF-8?q?=E5=8D=95=E4=BA=A7=E7=9C=8B=E9=A1=B5=E9=9D=A2dom=E6=B8=B2?= =?UTF-8?q?=E6=9F=93=E9=A1=BA=E5=BA=8F=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pc4mobx/hrmSalary/pages/mobilePayroll/index.js | 4 ++-- pc4mobx/hrmSalary/pages/mySalary/mySalaryView.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pc4mobx/hrmSalary/pages/mobilePayroll/index.js b/pc4mobx/hrmSalary/pages/mobilePayroll/index.js index 7ad8bb01..8116c06a 100644 --- a/pc4mobx/hrmSalary/pages/mobilePayroll/index.js +++ b/pc4mobx/hrmSalary/pages/mobilePayroll/index.js @@ -189,7 +189,7 @@ export default class MobilePayroll extends React.Component { salaryItemSet={!_.isEmpty(salaryGroups) ? JSON.stringify([employeeInformation, ...salaryGroups]) : []} > { - (_.isNil(mySalaryBillData.confirmStatus) || mySalaryBillData.confirmStatus === "0") && + (!_.isEmpty(salaryGroups) && (_.isNil(mySalaryBillData.confirmStatus) || mySalaryBillData.confirmStatus === "0")) && { - (_.isNil(mySalaryBillData.confirmStatus) || mySalaryBillData.confirmStatus === "0") && + (!_.isEmpty(salaryGroups) && (_.isNil(mySalaryBillData.confirmStatus) || mySalaryBillData.confirmStatus === "0")) && { - (_.isNil(mySalaryStore.confirmStatus) || mySalaryStore.confirmStatus === "0") && + (!_.isEmpty(salaryGroups) && (_.isNil(mySalaryStore.confirmStatus) || mySalaryStore.confirmStatus === "0")) && Date: Fri, 25 Aug 2023 16:12:05 +0800 Subject: [PATCH 02/12] =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E6=95=B0=E5=AD=97?= =?UTF-8?q?=E8=BE=93=E5=85=A5=E6=A1=86=E4=BF=9D=E7=95=99=E5=B0=8F=E6=95=B0?= =?UTF-8?q?=E4=BD=8D=E6=95=B0=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pc4mobx/hrmSalary/index.js | 12 ++----- .../hrmSalary/pages/calculateDetail/index.js | 24 +++++-------- .../pages/calculateDetail/index.less | 36 ++++++++++++++++--- .../calculateDetail/issuedAndReissueTable.js | 4 +-- .../calculateDetail/payrollItemsTable.js | 4 +-- .../calculateDetail/placeOnFileDetail.js | 3 +- .../components/ledgerSalaryItemNormal.js | 4 +-- .../components/ledgerSalaryItemTable.js | 4 +-- .../pages/salaryFile/saralyFileViewSlide.js | 2 +- 9 files changed, 52 insertions(+), 41 deletions(-) diff --git a/pc4mobx/hrmSalary/index.js b/pc4mobx/hrmSalary/index.js index d004267c..bd2d3c12 100644 --- a/pc4mobx/hrmSalary/index.js +++ b/pc4mobx/hrmSalary/index.js @@ -129,16 +129,8 @@ const Routes = ( - - + + diff --git a/pc4mobx/hrmSalary/pages/calculateDetail/index.js b/pc4mobx/hrmSalary/pages/calculateDetail/index.js index d43cfb66..5b882dee 100644 --- a/pc4mobx/hrmSalary/pages/calculateDetail/index.js +++ b/pc4mobx/hrmSalary/pages/calculateDetail/index.js @@ -353,18 +353,10 @@ export default class CalculateDetail extends React.Component { onClick={() => this.downloadTxtfile(accountExceptInfo)}/>); return buttons; }; - const topTab = [ - { - title: "人员确认", - viewcondition: "0" - }, - { - title: "薪资核算", - viewcondition: "1" - } + { title: "人员确认", viewcondition: "0" }, + { title: "薪资核算", viewcondition: "1" } ]; - const adBtn = [ // 高级搜索内部按钮 } ; diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemTable.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemTable.js index 57522e83..55892da2 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemTable.js +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemTable.js @@ -255,9 +255,9 @@ class LedgerSalaryItemTable extends Component { dataIndex: "valueType", key: "valueType", render: (e, record) => { - const { valueType } = record; + const { valueType, formulaContent } = record; const key = !_.isNil(valueType) ? valueType : ""; - return {key.toString() === "1" ? "输入" : key.toString() === "2" ? "自定义公式" : key.toString() === "3" ? "SQL" : ""} ; + return {key.toString() === "1" ? "输入" : key.toString() === "2" ? formulaContent : key.toString() === "3" ? formulaContent : ""} ; } }, { diff --git a/pc4mobx/hrmSalary/pages/salaryFile/saralyFileViewSlide.js b/pc4mobx/hrmSalary/pages/salaryFile/saralyFileViewSlide.js index 32a53167..59428135 100644 --- a/pc4mobx/hrmSalary/pages/salaryFile/saralyFileViewSlide.js +++ b/pc4mobx/hrmSalary/pages/salaryFile/saralyFileViewSlide.js @@ -152,7 +152,7 @@ export default class SalaryFileViewSlide extends React.Component { item.dataType === "number" ? { item.value = value; From 85ab34565135973543fe1979cc9142047024ecba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E6=B0=B8=E9=A1=BA?= <971387674@qq.com> Date: Mon, 28 Aug 2023 10:08:28 +0800 Subject: [PATCH 03/12] =?UTF-8?q?=E4=B8=AA=E7=A8=8E-release=E5=BC=80?= =?UTF-8?q?=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../employeeDeclareDetailSchemaEditDialog.js | 36 ++++++++++++++++--- 1 file changed, 32 insertions(+), 4 deletions(-) diff --git a/pc4mobx/hrmSalary/pages/employeedeclareDetail/components/employeeDeclareDetailSchemaEditDialog.js b/pc4mobx/hrmSalary/pages/employeedeclareDetail/components/employeeDeclareDetailSchemaEditDialog.js index 7099560a..a76fecfa 100644 --- a/pc4mobx/hrmSalary/pages/employeedeclareDetail/components/employeeDeclareDetailSchemaEditDialog.js +++ b/pc4mobx/hrmSalary/pages/employeedeclareDetail/components/employeeDeclareDetailSchemaEditDialog.js @@ -22,12 +22,15 @@ class EmployeeDeclareDetailSchemaEditDialog extends Component { super(props); this.state = { loading: false, - eConditions: [] + eConditions: [], + employeeInfo: {} }; + this.employeeChangeInfo = {}; } componentWillReceiveProps(nextProps, nextContext) { if (nextProps.visible !== this.props.visible && nextProps.visible) this.employeedeclareGetForm(nextProps); + if (nextProps.visible !== this.props.visible && !nextProps.visible) this.employeeChangeInfo = {}; } employeedeclareGetForm = (props) => { @@ -86,7 +89,8 @@ class EmployeeDeclareDetailSchemaEditDialog extends Component { return { ...child }; }) }; - }) + }), + employeeInfo: data.data }, () => { const { data: result, columns } = data; const { employeeDeclareStore: { declareForm } } = this.props; @@ -129,7 +133,12 @@ class EmployeeDeclareDetailSchemaEditDialog extends Component { const { employeeDeclareStore: { declareForm } } = this.props; const key = Object.keys(res)[0]; const value = res[key].value; - console.log(132, res, declareForm.getFormParams()); + if (key === "employeeType") { + const [v1, v2] = value; + this.employeeChangeInfo = { + employee: [{ _entityType: v1, name: v2[1], id: v2[0] }] + }; + } switch (key) { case "employmentStatus": this.setState({ @@ -148,8 +157,17 @@ class EmployeeDeclareDetailSchemaEditDialog extends Component { }; }) }, () => { - console.log(150, this.state.eConditions); declareForm.initFormFields(this.state.eConditions); + const [employeeData] = this.state.employeeInfo["employee"] || this.employeeChangeInfo["employee"] || []; + !_.isEmpty(employeeData) && declareForm.updateFields({ + employeeType: { + value: [employeeData._entityType, [employeeData.id, employeeData.name, [{ + id: employeeData.id, + lastname: employeeData.name + }]]], + valueSpan: ["employeeId"] + } + }); }); break; case "employmentType": @@ -170,6 +188,16 @@ class EmployeeDeclareDetailSchemaEditDialog extends Component { }) }, () => { declareForm.initFormFields(this.state.eConditions); + const [employeeData] = this.state.employeeInfo["employee"] || this.employeeChangeInfo["employee"] || []; + !_.isEmpty(employeeData) && declareForm.updateFields({ + employeeType: { + value: [employeeData._entityType, [employeeData.id, employeeData.name, [{ + id: employeeData.id, + lastname: employeeData.name + }]]], + valueSpan: ["employeeId"] + } + }); }); break; default: From 62921ad80ff338297b42da61c88888296b65d8e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E6=B0=B8=E9=A1=BA?= <971387674@qq.com> Date: Mon, 28 Aug 2023 16:22:22 +0800 Subject: [PATCH 04/12] =?UTF-8?q?=E4=B8=AA=E7=A8=8E-=E4=BA=BA=E5=91=98?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E6=8A=A5=E9=80=81=E5=88=97=E8=A1=A8=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=E5=88=97=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hrmSalary/pages/employeedeclareDetail/index.js | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/pc4mobx/hrmSalary/pages/employeedeclareDetail/index.js b/pc4mobx/hrmSalary/pages/employeedeclareDetail/index.js index 73539c8d..7280fec4 100644 --- a/pc4mobx/hrmSalary/pages/employeedeclareDetail/index.js +++ b/pc4mobx/hrmSalary/pages/employeedeclareDetail/index.js @@ -178,7 +178,7 @@ class Index extends Component { pageInfo: { ...pageInfo, current, pageSize, total } }, () => { const payload = { - dataSource, selectedRowKeys, + dataSource, selectedRowKeys, selectedKey, pageInfo: this.state.pageInfo, columns: _.map(columns, it => { if (it.dataIndex === "employeeName" || it.dataIndex === "subCompanyName") { @@ -208,7 +208,6 @@ class Index extends Component { }; this.setState({ loading: { ...this.state.loading, refresh: true } }); employeedeclareRefresh(payload).then(async ({ status, data, errormsg }) => { - this.setState({ loading: { ...this.state.loading, refresh: false } }); if (status) { message.destroy(); message.loading(getLabel(111, "刷新中..."), 0); @@ -217,12 +216,14 @@ class Index extends Component { const { status: rateStatus, finish, msg } = result; if (resStatus && rateStatus) { if (finish) { + this.setState({ loading: { ...this.state.loading, refresh: false } }); clearInterval(this.timer); message.destroy(); message.success(getLabel(111, "刷新成功!")); this.queryEmployeeList(); } } else { + this.setState({ loading: { ...this.state.loading, refresh: false } }); clearInterval(this.timer); message.destroy(); message.warning(msg || getLabel(111, "刷新失败!")); @@ -230,6 +231,7 @@ class Index extends Component { } }, 1000); } else { + this.setState({ loading: { ...this.state.loading, refresh: false } }); clearInterval(this.timer); message.destroy(); message.error(errormsg); @@ -253,7 +255,6 @@ class Index extends Component { }; this.setState({ loading: { ...this.state.loading, feedback: true } }); getDeclareFeedback(payload).then(async ({ status, data, errormsg }) => { - this.setState({ loading: { ...this.state.loading, feedback: false } }); if (status) { message.destroy(); message.loading(getLabel(111, "获取报送中..."), 0); @@ -262,12 +263,14 @@ class Index extends Component { const { status: rateStatus, finish, msg } = result; if (resStatus && rateStatus) { if (finish) { + this.setState({ loading: { ...this.state.loading, feedback: false } }); clearInterval(this.timer); message.destroy(); message.success(getLabel(111, "获取报送结果成功!")); this.queryEmployeeList(); } } else { + this.setState({ loading: { ...this.state.loading, feedback: false } }); clearInterval(this.timer); message.destroy(); message.warning(msg || getLabel(111, "获取失败!")); @@ -275,6 +278,7 @@ class Index extends Component { } }, 1000); } else { + this.setState({ loading: { ...this.state.loading, feedback: false } }); clearInterval(this.timer); message.destroy(); message.error(errormsg); @@ -324,7 +328,6 @@ class Index extends Component { }; this.setState({ loading: { ...this.state.loading, declare: true } }); employeedeclareDeclare(payload).then(async ({ status, data, errormsg }) => { - this.setState({ loading: { ...this.state.loading, declare: false } }); if (status) { message.destroy(); message.loading(getLabel(111, "报送中..."), 0); @@ -333,12 +336,14 @@ class Index extends Component { const { status: rateStatus, finish, msg } = result; if (resStatus && rateStatus) { if (finish) { + this.setState({ loading: { ...this.state.loading, declare: false } }); clearInterval(this.timer); message.destroy(); message.success(getLabel(111, "全部报送成功!")); this.queryEmployeeList(); } } else { + this.setState({ loading: { ...this.state.loading, declare: false } }); clearInterval(this.timer); message.destroy(); message.warning(msg || getLabel(111, "报送失败!")); @@ -346,6 +351,7 @@ class Index extends Component { } }, 1000); } else { + this.setState({ loading: { ...this.state.loading, declare: false } }); clearInterval(this.timer); message.destroy(); message.error(errormsg); From a2c1b9969cfefd663131d03872a5e3d8979760f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E6=B0=B8=E9=A1=BA?= <971387674@qq.com> Date: Tue, 29 Aug 2023 11:34:45 +0800 Subject: [PATCH 05/12] =?UTF-8?q?=E6=99=BA=E8=83=BD=E7=AE=97=E8=96=AA-?= =?UTF-8?q?=E5=85=B6=E4=BB=96=E4=B8=89=E4=B8=AAtab=E4=B8=8B=E7=9A=84?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../intelligentCalculateSalarySettings.js | 12 ++ pc4mobx/hrmSalary/common/purchased.png | Bin 0 -> 6429 bytes pc4mobx/hrmSalary/common/remaining.png | Bin 0 -> 6581 bytes pc4mobx/hrmSalary/common/traffic.png | Bin 0 -> 6694 bytes .../components/constants.js | 55 ++++++++ .../components/enableSettings.js | 1 - .../components/index.less | 58 -------- .../components/insufficientTrafficAlert.js | 44 +++++- .../components/interfaceFlowStatistics.js | 82 +++++++++++ .../components/trafficUsageRecords.js | 113 +++++++++++++++ .../index.js | 32 ++++- .../index.less | 131 ++++++++++++++++++ pc4mobx/hrmSalary/stores/index.js | 4 +- pc4mobx/hrmSalary/stores/intelligent.js | 13 ++ 14 files changed, 475 insertions(+), 70 deletions(-) create mode 100644 pc4mobx/hrmSalary/common/purchased.png create mode 100644 pc4mobx/hrmSalary/common/remaining.png create mode 100644 pc4mobx/hrmSalary/common/traffic.png create mode 100644 pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/constants.js delete mode 100644 pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/index.less create mode 100644 pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/interfaceFlowStatistics.js create mode 100644 pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/trafficUsageRecords.js create mode 100644 pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/index.less create mode 100644 pc4mobx/hrmSalary/stores/intelligent.js diff --git a/pc4mobx/hrmSalary/apis/intelligentCalculateSalarySettings.js b/pc4mobx/hrmSalary/apis/intelligentCalculateSalarySettings.js index d545b9bb..04f0dae4 100644 --- a/pc4mobx/hrmSalary/apis/intelligentCalculateSalarySettings.js +++ b/pc4mobx/hrmSalary/apis/intelligentCalculateSalarySettings.js @@ -17,3 +17,15 @@ export const apiflowBillingConfigSave = (params) => { export const apiflowBillingConfigEnable = (params) => { return postFetch("/api/bs/hrmsalary/taxdeclaration/apiflow/billing/config/enable", params); }; +//智能算薪-流量不足提醒初始化表单 +export const apiflowWarnConfigGetForm = (params) => { + return WeaTools.callApi("/api/bs/hrmsalary/taxdeclaration/apiflow/warn/config/getForm", "GET", params); +}; +//智能算薪-接口流量使用记录 +export const apiflowRecordList = (params) => { + return postFetch("/api/bs/hrmsalary/taxdeclaration/apiflow/record/list", params); +}; +//智能算薪-接口流量使用记录 +export const apiflowStatisticsInfo = (params) => { + return postFetch("/api/bs/hrmsalary/taxdeclaration/apiflow/statistics/info", params); +}; diff --git a/pc4mobx/hrmSalary/common/purchased.png b/pc4mobx/hrmSalary/common/purchased.png new file mode 100644 index 0000000000000000000000000000000000000000..64223fdc137ae99fe0f7d7b4550471394aba917b GIT binary patch literal 6429 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 literal 0 HcmV?d00001 diff --git a/pc4mobx/hrmSalary/common/remaining.png b/pc4mobx/hrmSalary/common/remaining.png new file mode 100644 index 0000000000000000000000000000000000000000..655818c014c148c19c63abb1a61a747359d5aea9 GIT binary patch literal 6581 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 literal 0 HcmV?d00001 diff --git a/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/constants.js b/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/constants.js new file mode 100644 index 00000000..fa776272 --- /dev/null +++ b/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/constants.js @@ -0,0 +1,55 @@ +export const trafficUsageConditions = [ + { + items: [ + { + colSpan: 1, + conditionType: "RANGEPICKER", + domkey: ["startDate", "endDate"], + fieldcol: 22, + label: "", + labelcol: 0, + value: "" + }, + { + colSpan: 1, + conditionType: "SELECT", + domkey: ["taxAgentId"], + fieldcol: 22, + label: "", + labelcol: 0, + value: "", + options: [] + }, + { + colSpan: 1, + conditionType: "SELECT", + domkey: ["businessType"], + fieldcol: 22, + label: "", + labelcol: 0, + value: "", + options: [ + { key: "", showname: "全部(接口业务)", lanId: 111 }, + { key: "1", showname: "累计专项附加扣除", lanId: 538006 }, + { key: "2", showname: "人员信息报送", lanId: 544289 }, + { key: "3", showname: "个税申报", lanId: 543353 } + ] + }, + { + colSpan: 1, + conditionType: "SELECT", + domkey: ["result"], + fieldcol: 22, + label: "", + labelcol: 0, + value: "", + options: [ + { key: "", showname: "全部(结果)", lanId: 111 }, + { key: "20", showname: "成功", lanId: 111 }, + { key: "30", showname: "失败", lanId: 25009 } + ] + } + ], + defaultshow: true + } +]; diff --git a/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/enableSettings.js b/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/enableSettings.js index ed849754..61961807 100644 --- a/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/enableSettings.js +++ b/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/enableSettings.js @@ -13,7 +13,6 @@ import { apiflowBillingConfigGet, apiflowBillingConfigSave } from "../../../apis/intelligentCalculateSalarySettings"; -import "./index.less"; const getLabel = WeaLocaleProvider.getLabel; diff --git a/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/index.less b/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/index.less deleted file mode 100644 index 461a27cc..00000000 --- a/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/index.less +++ /dev/null @@ -1,58 +0,0 @@ -.enable-settings { - .swith-area, .userinfo { - display: flex; - align-items: center; - justify-content: space-between; - padding: 10px 16px; - background-color: #fff; - box-sizing: border-box; - height: 80px; - border: 2px solid #e5e5e5; - border-left-color: #5d9cec; - - .left { - padding: 10px 0; - display: flex; - flex-direction: column; - justify-content: space-around; - - .title { - font-size: 14px; - margin-bottom: 4px; - } - - .info { - font-size: 12px; - color: #999; - } - } - } - - .userinfo { - margin-top: 16px; - - .left { - flex: 1 !important; - - .wea-search-group, .wea-form-cell { - padding: 0; - } - } - } -} - -.insufficientAlertWrapper { - background: #fff; - padding: 0; - border: 1px solid #f2f2f2; - border-bottom: none; - - .wea-content { - padding: 0; - - .wea-form-item { - padding: 5px 12px; - border-bottom: 1px solid #f2f2f2; - } - } -} diff --git a/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/insufficientTrafficAlert.js b/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/insufficientTrafficAlert.js index 9649f2f2..655cc93d 100644 --- a/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/insufficientTrafficAlert.js +++ b/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/insufficientTrafficAlert.js @@ -6,7 +6,8 @@ */ import React, { Component } from "react"; import { WeaCheckbox, WeaFormItem, WeaHelpfulTip, WeaLocaleProvider, WeaSearchGroup } from "ecCom"; -import "./index.less"; +import { Modal } from "antd"; +import { apiflowWarnConfigGetForm } from "../../../apis/intelligentCalculateSalarySettings"; const getLabel = WeaLocaleProvider.getLabel; @@ -14,19 +15,52 @@ class InsufficientTrafficAlert extends Component { constructor(props) { super(props); this.state = { - remind: "0" + enable: "0", + remindEvent: { businessId: "", eventId: "", moduleId: "", id: "" } }; } + componentDidMount() { + this.apiflowWarnConfigGetForm(); + } + + apiflowWarnConfigGetForm = () => { + const { remindEvent } = this.state; + apiflowWarnConfigGetForm().then(({ status, data }) => { + if (status) { + const { enable, businessId, eventId, moduleId, id } = data; + this.setState({ + enable: enable ? "1" : "0", + remindEvent: { ...remindEvent, businessId, eventId, moduleId, id } + }); + } + }); + }; + handleEnale = (enable) => { + if (enable === "1") { + this.setState({ enable }); + } else { + Modal.confirm({ + title: getLabel(131329, "信息确认"), + content: getLabel(111, "确认关闭提醒吗?关闭并保存后,流量不足时将无法及时提醒。"), + onOk: () => { + }, + onCancel: () => { + this.setState({ enable: this.state.enable }); + } + }); + } + }; + render() { - const { remind } = this.state; + const { enable } = this.state; return ( - this.setState({ remind })}/> + { - remind === "1" && + enable === "1" && { + const { statisticsInfo } = this.state; + apiflowStatisticsInfo().then(({ status, data }) => { + if (status) { + const { lastUpdateTime, ...extraData } = data; + this.setState({ + statisticsInfo: { + ...statisticsInfo, + lastUpdateTime, + staticData: _.map(statisticsInfo.staticData, item => ({ + ...item, + value: extraData[item["key"]] + })) + } + }, () => this.props.updateTime(this.state.statisticsInfo)); + } + }); + }; + + render() { + const { statisticsInfo } = this.state; + const { staticData } = statisticsInfo; + + return ( +
+
+ { + _.map(staticData, item => { + const { label, icon, value } = item; + return ( +
+
+
+
{value}
+
{label}
+
+
+ ); + }) + } +
+
+
+ ); + } +} + +export default InterfaceFlowStatistics; diff --git a/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/trafficUsageRecords.js b/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/trafficUsageRecords.js new file mode 100644 index 00000000..27678e84 --- /dev/null +++ b/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/trafficUsageRecords.js @@ -0,0 +1,113 @@ +/* + * Author: 黎永顺 + * name: 智能算薪-流量使用记录 + * Description: + * Date: 2023/8/28 + */ +import React, { Component } from "react"; +import { inject, observer } from "mobx-react"; +import { WeaLocaleProvider, WeaTable } from "ecCom"; +import { trafficUsageConditions } from "./constants"; +import { getSearchs } from "../../../util"; +import moment from "moment"; +import { apiflowRecordList } from "../../../apis/intelligentCalculateSalarySettings"; + +const getLabel = WeaLocaleProvider.getLabel; + +@inject("taxAgentStore", "intelligentStore") +@observer +class TrafficUsageRecords extends Component { + constructor(props) { + super(props); + this.state = { + conditions: [], columns: [], dataSource: [], + pageInfo: { current: 1, pageSize: 10, total: 0 }, + loading: false + }; + } + + componentDidMount() { + const { taxAgentStore: { fetchTaxAgentOption }, intelligentStore: { form } } = this.props; + fetchTaxAgentOption().then(({ data }) => { + this.setState({ + conditions: _.map(trafficUsageConditions, item => { + return { + ...item, + items: _.map(item.items, o => { + if (o.conditionType === "SELECT" && o.domkey[0] === "taxAgentId") { + return { + ...o, + options: [ + { key: "", showname: getLabel(111, "全部(个税扣缴义务人)") }, + ..._.map(data, (i) => ({ key: i.id, showname: i.content })) + ] + }; + } else if (o.conditionType === "SELECT" && o.domkey[0] !== "taxAgentId") { + return { + ...o, + options: _.map(o.options, it => ({ ...it, showname: getLabel(it.lanId, it.showname) })) + }; + } + return { ...o }; + }) + }; + }) + }, () => { + form.initFormFields(this.state.conditions); + form.updateFields({ + ["startDate__endDate"]: { + value: [moment().startOf("month").format("YYYY-MM-DD"), moment().format("YYYY-MM-DD")] + } + }); + this.apiflowRecordList(); + }); + }); + } + + apiflowRecordList = () => { + const { pageInfo } = this.state; + const { intelligentStore: { form } } = this.props; + const payload = { ...form.getFormParams(), ...pageInfo }; + this.setState({ loading: true }); + apiflowRecordList(payload).then(({ status, data }) => { + this.setState({ loading: false }); + if (status) { + console.log(data); + } + }).catch(() => this.setState({ loading: false })); + }; + + render() { + const { intelligentStore: { form } } = this.props; + const { conditions, loading, pageInfo } = this.state; + const pagination = { + ...pageInfo, + showTotal: total => `${getLabel(18609, "共")} ${total} ${getLabel(18256, "条")}`, + showQuickJumper: true, + showSizeChanger: true, + pageSizeOptions: ["10", "20", "50", "100"], + onShowSizeChange: (current, pageSize) => { + this.setState({ + pageInfo: { ...pageInfo, current, pageSize } + }, () => this.apiflowRecordList()); + }, + onChange: current => { + this.setState({ + pageInfo: { ...pageInfo, current } + }, () => this.apiflowRecordList()); + } + }; + return ( +
+
{getSearchs(form, conditions, 4, false, this.apiflowRecordList)}
+ +
+ ); + } +} + +export default TrafficUsageRecords; diff --git a/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/index.js b/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/index.js index f6c2984c..60bfb99a 100644 --- a/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/index.js +++ b/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/index.js @@ -1,21 +1,25 @@ import React, { Component } from "react"; import { WeaLocaleProvider, WeaReqTop } from "ecCom"; +import { Button } from "antd"; import EnableSettings from "./components/enableSettings"; import InsufficientTrafficAlert from "./components/insufficientTrafficAlert"; +import TrafficUsageRecords from "./components/trafficUsageRecords"; +import InterfaceFlowStatistics from "./components/interfaceFlowStatistics"; +import "./index.less"; const getLabel = WeaLocaleProvider.getLabel; const tabs = [ { key: "ENABLE_SETTINGS", title: getLabel(111, "启用设置") }, - // { key: "INTERFACE_FLOW_STATISTICS", title: getLabel(111, "接口流量统计") }, - // { key: "INSUFFICIENT_TRAFFIC_ALERT", title: getLabel(111, "流量不足提醒") }, - // { key: "TRAFFIC_USAGE_RECORD", title: getLabel(111, "流量使用记录") } + { key: "INTERFACE_FLOW_STATISTICS", title: getLabel(111, "接口流量统计") }, + { key: "INSUFFICIENT_TRAFFIC_ALERT", title: getLabel(111, "流量不足提醒") }, + { key: "TRAFFIC_USAGE_RECORD", title: getLabel(111, "流量使用记录") } ]; class Index extends Component { constructor(props) { super(props); this.state = { - selectedKey: "ENABLE_SETTINGS" + selectedKey: "ENABLE_SETTINGS", lastUpdateTime: "" }; } @@ -26,9 +30,16 @@ class Index extends Component { case "ENABLE_SETTINGS": CurrentDom = ; break; + case "INTERFACE_FLOW_STATISTICS": + CurrentDom = + this.setState({ lastUpdateTime: data.lastUpdateTime })}/>; + break; case "INSUFFICIENT_TRAFFIC_ALERT": CurrentDom = ; break; + case "TRAFFIC_USAGE_RECORD": + CurrentDom = ; + break; default: CurrentDom = null; break; @@ -37,12 +48,23 @@ class Index extends Component { }; render() { - const { selectedKey } = this.state; + const { selectedKey, lastUpdateTime } = this.state; + const buttons = selectedKey === "INSUFFICIENT_TRAFFIC_ALERT" ? + [] : + selectedKey === "TRAFFIC_USAGE_RECORD" ? + [] : + selectedKey === "INTERFACE_FLOW_STATISTICS" ? [ + + {getLabel(111, "最后统计时间:")} + {lastUpdateTime} + + ] : []; return ( } iconBgcolor="#F14A2D" tabDatas={tabs} onChange={selectedKey => this.setState({ selectedKey })} + buttons={buttons} className="intelligentSetting-layout" >
{this.renderChildren()}
diff --git a/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/index.less b/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/index.less new file mode 100644 index 00000000..b29fee75 --- /dev/null +++ b/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/index.less @@ -0,0 +1,131 @@ +.intelligentSetting-layout { + .wea-new-top-req-title > div:last-child { + right: 16px !important; + } + + .statistic-time { + display: flex; + align-items: center; + justify-content: flex-end; + font-size: 12px; + } +} + +.enable-settings { + .swith-area, .userinfo { + display: flex; + align-items: center; + justify-content: space-between; + padding: 10px 16px; + background-color: #fff; + box-sizing: border-box; + height: 80px; + border: 2px solid #e5e5e5; + border-left-color: #5d9cec; + + .left { + padding: 10px 0; + display: flex; + flex-direction: column; + justify-content: space-around; + + .title { + font-size: 14px; + margin-bottom: 4px; + } + + .info { + font-size: 12px; + color: #999; + } + } + } + + .userinfo { + margin-top: 16px; + + .left { + flex: 1 !important; + + .wea-search-group, .wea-form-cell { + padding: 0; + } + } + } +} + +.insufficientAlertWrapper { + background: #fff; + padding: 0; + border: 1px solid #f2f2f2; + border-bottom: none; + + .wea-content { + padding: 0; + + .wea-form-item { + padding: 5px 12px; + border-bottom: 1px solid #f2f2f2; + } + } +} + +.trafficUsageRecords-layout { + height: 100%; + box-sizing: border-box; + + .head { + margin-bottom: 16px; + + .wea-search-group { + width: 80%; + } + + .wea-search-group, .wea-content, .wea-form-cell, .wea-form-item { + padding: 0; + } + } +} + +.statisticsInfo-layout { + width: 100%; + height: 100%; + display: flex; + flex-direction: column; + + .static-data { + display: flex; + align-items: center; + justify-content: space-around; + height: 80px; + background-color: #fff; + border: 2px solid #e5e5e5; + + .item { + display: flex; + + .left { + width: 65px; + height: 65px; + + img { + width: 100%; + height: 100% + } + } + + .right { + margin-left: 8px; + display: flex; + flex-direction: column; + justify-content: center; + + .title { + margin-top: 8px; + color: #999; + font-size: 14px; + } + } + } + } +} diff --git a/pc4mobx/hrmSalary/stores/index.js b/pc4mobx/hrmSalary/stores/index.js index 7d14ab86..fdc926a3 100644 --- a/pc4mobx/hrmSalary/stores/index.js +++ b/pc4mobx/hrmSalary/stores/index.js @@ -20,6 +20,7 @@ import { PayrollFilesStore } from "./payrollFiles"; import { SpecialAddStore } from "./specialAdd"; import { ExternalPersonManageStore } from "./externalPersonManage"; import { EmployeeDeclareStore } from "./employeeDeclare"; +import { IntelligentStore } from "./intelligent"; module.exports = { baseFormStore: new BaseFormStore(), @@ -43,5 +44,6 @@ module.exports = { payrollFilesStore: new PayrollFilesStore(), specialAddStore: new SpecialAddStore(), externalPersonManageStore: new ExternalPersonManageStore(), - employeeDeclareStore: new EmployeeDeclareStore() + employeeDeclareStore: new EmployeeDeclareStore(), + intelligentStore: new IntelligentStore(), }; diff --git a/pc4mobx/hrmSalary/stores/intelligent.js b/pc4mobx/hrmSalary/stores/intelligent.js new file mode 100644 index 00000000..4181fcf8 --- /dev/null +++ b/pc4mobx/hrmSalary/stores/intelligent.js @@ -0,0 +1,13 @@ +import { action, observable } from "mobx"; +import { WeaForm, WeaTableNew } from "comsMobx"; + +const { TableStore } = WeaTableNew; + +export class IntelligentStore { + @observable form = new WeaForm(); //流量使用记录查询form实例 + @observable tableStore = new TableStore(); + + @action("...") + Init = () => { + }; +} From 6493e32314ea0e564025d25afa7c8f7836c873ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E6=B0=B8=E9=A1=BA?= <971387674@qq.com> Date: Tue, 29 Aug 2023 14:21:52 +0800 Subject: [PATCH 06/12] =?UTF-8?q?=E6=99=BA=E8=83=BD=E7=AE=97=E8=96=AA-?= =?UTF-8?q?=E6=B5=81=E9=87=8F=E7=9B=B8=E5=85=B3=E5=8A=9F=E8=83=BD=E7=9A=84?= =?UTF-8?q?=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../intelligentCalculateSalarySettings.js | 4 + .../components/insufficientTrafficAlert.js | 20 ++++- .../components/interfaceFlowStatistics.js | 89 +++++++++++++++++-- .../components/trafficUsageRecords.js | 31 ++++++- .../index.less | 41 +++++++++ 5 files changed, 171 insertions(+), 14 deletions(-) diff --git a/pc4mobx/hrmSalary/apis/intelligentCalculateSalarySettings.js b/pc4mobx/hrmSalary/apis/intelligentCalculateSalarySettings.js index 04f0dae4..dd7d0a9f 100644 --- a/pc4mobx/hrmSalary/apis/intelligentCalculateSalarySettings.js +++ b/pc4mobx/hrmSalary/apis/intelligentCalculateSalarySettings.js @@ -29,3 +29,7 @@ export const apiflowRecordList = (params) => { export const apiflowStatisticsInfo = (params) => { return postFetch("/api/bs/hrmsalary/taxdeclaration/apiflow/statistics/info", params); }; +//智能算薪-接口流量使用明细 +export const apiflowStatisticsList = (params) => { + return postFetch("/api/bs/hrmsalary/taxdeclaration/apiflow/statistics/list", params); +}; diff --git a/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/insufficientTrafficAlert.js b/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/insufficientTrafficAlert.js index 655cc93d..5e7cb1eb 100644 --- a/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/insufficientTrafficAlert.js +++ b/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/insufficientTrafficAlert.js @@ -5,7 +5,7 @@ * Date: 2023/7/19 */ import React, { Component } from "react"; -import { WeaCheckbox, WeaFormItem, WeaHelpfulTip, WeaLocaleProvider, WeaSearchGroup } from "ecCom"; +import { WeaCheckbox, WeaFormItem, WeaHelpfulTip, WeaInputNumber, WeaLocaleProvider, WeaSearchGroup } from "ecCom"; import { Modal } from "antd"; import { apiflowWarnConfigGetForm } from "../../../apis/intelligentCalculateSalarySettings"; @@ -66,7 +66,7 @@ class InsufficientTrafficAlert extends Component { label={getLabel(544288, "提醒规则")} labelCol={{ span: 4 }} wrapperCol={{ span: 20 }} > - +
{ + const { onChange, value } = props; + return ( +
+ {getLabel(111, "流量不足")} + + {getLabel(111, "时提醒")} + {getLabel(111, "为确保智能算薪正常使用,设置建议:若每个月消耗流量10,000,则不足10,000时提醒,以此预留一个月时间续流量")} +
+ ); +}; + + diff --git a/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/interfaceFlowStatistics.js b/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/interfaceFlowStatistics.js index 71366383..9c0a5edd 100644 --- a/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/interfaceFlowStatistics.js +++ b/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/interfaceFlowStatistics.js @@ -5,7 +5,11 @@ * Date: 2023/8/29 */ import React, { Component } from "react"; -import { apiflowStatisticsInfo } from "../../../apis/intelligentCalculateSalarySettings"; +import { Button, message } from "antd"; +import { WeaLocaleProvider, WeaTable } from "ecCom"; +import { apiflowStatisticsInfo, apiflowStatisticsList } from "../../../apis/intelligentCalculateSalarySettings"; + +const getLabel = WeaLocaleProvider.getLabel; class InterfaceFlowStatistics extends Component { constructor(props) { @@ -15,21 +19,28 @@ class InterfaceFlowStatistics extends Component { lastUpdateTime: "", staticData: [ { - key: "total", label: "购买接口总流量", value: "", icon: require("../../../common/purchased.png") + key: "total", + label: getLabel(111, "购买接口总流量"), + value: "", + icon: require("../../../common/purchased.png") }, { - key: "remain", label: "剩余总流量", value: "", icon: require("../../../common/remaining.png") + key: "remain", label: getLabel(111, "剩余总流量"), value: "", icon: require("../../../common/remaining.png") }, { - key: "used", label: "已使用总流量", value: "", icon: require("../../../common/traffic.png") + key: "used", label: getLabel(111, "已使用总流量"), value: "", icon: require("../../../common/traffic.png") } ] - } + }, + columns: [], dataSource: [], + pageInfo: { current: 1, pageSize: 10, total: 0 }, + loading: false }; } componentDidMount() { this.apiflowStatisticsInfo(); + this.apiflowStatisticsList(); } apiflowStatisticsInfo = () => { @@ -50,11 +61,57 @@ class InterfaceFlowStatistics extends Component { } }); }; + apiflowStatisticsList = () => { + const { pageInfo } = this.state; + const payload = { ...pageInfo }; + this.setState({ loading: true }); + apiflowStatisticsList(payload).then(({ status, data, errormsg }) => { + this.setState({ loading: false }); + if (status) { + const { columns, list: dataSource, pageNum: current, pageSize, total } = data; + this.setState({ + dataSource, pageInfo: { ...pageInfo, current, pageSize, total }, + columns: _.map(columns, item => { + const { dataIndex } = item; + let width = ""; + switch (dataIndex) { + case "taxAgentName": + case "used": + width = "40%"; + break; + default: + width = "10%"; + break; + } + return { ...item, width }; + }) + }); + } else { + message.error(errormsg); + } + }).catch(() => this.setState({ loading: false })); + }; render() { - const { statisticsInfo } = this.state; + const { statisticsInfo, pageInfo, loading, dataSource, columns } = this.state; const { staticData } = statisticsInfo; - + const pagination = { + ...pageInfo, + showTotal: total => `${getLabel(18609, "共")} ${total} ${getLabel(18256, "条")}`, + showQuickJumper: true, + showSizeChanger: true, + pageSizeOptions: ["10", "20", "50", "100"], + onShowSizeChange: (current, pageSize) => { + this.setState({ + pageInfo: { ...pageInfo, current, pageSize } + }, () => this.apiflowStatisticsList()); + }, + onChange: current => { + this.setState({ + pageInfo: { ...pageInfo, current } + }, () => this.apiflowStatisticsList()); + } + }; return (
@@ -73,7 +130,23 @@ class InterfaceFlowStatistics extends Component { }) }
-
+
+
+
{getLabel(111, "使用明细")}
+ +
+ ({getLabel(111, "月统计详情")}) + } + ]} + scroll={{ y: `calc(100vh - 190px)` }} + /> +
); } diff --git a/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/trafficUsageRecords.js b/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/trafficUsageRecords.js index 27678e84..6ea92377 100644 --- a/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/trafficUsageRecords.js +++ b/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/trafficUsageRecords.js @@ -72,14 +72,37 @@ class TrafficUsageRecords extends Component { apiflowRecordList(payload).then(({ status, data }) => { this.setState({ loading: false }); if (status) { - console.log(data); + const { columns, list: dataSource, pageNum: current, pageSize, total } = data; + this.setState({ + dataSource, pageInfo: { ...pageInfo, current, pageSize, total }, + columns: _.map(columns, item => { + const { dataIndex } = item; + let width = ""; + switch (dataIndex) { + case "indexNum": + case "taxAgentName": + case "employeeName": + case "businessTypeName": + case "creator": + case "result": + width = "10%"; + break; + case "idCardNo": + width = "20%"; + break; + default: + break; + } + return { ...item, width }; + }) + }); } }).catch(() => this.setState({ loading: false })); }; render() { const { intelligentStore: { form } } = this.props; - const { conditions, loading, pageInfo } = this.state; + const { conditions, loading, pageInfo, dataSource, columns } = this.state; const pagination = { ...pageInfo, showTotal: total => `${getLabel(18609, "共")} ${total} ${getLabel(18256, "条")}`, @@ -101,9 +124,9 @@ class TrafficUsageRecords extends Component {
{getSearchs(form, conditions, 4, false, this.apiflowRecordList)}
); diff --git a/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/index.less b/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/index.less index b29fee75..6fff3639 100644 --- a/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/index.less +++ b/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/index.less @@ -68,6 +68,26 @@ border-bottom: 1px solid #f2f2f2; } } + + .threshold { + display: flex; + align-items: center; + + .before { + margin-right: 6px; + } + + .after { + margin-left: 6px; + margin-right: 16px; + } + + .tip { + display: inline-block; + color: #999; + padding: 6px 0; + } + } } .trafficUsageRecords-layout { @@ -120,6 +140,11 @@ flex-direction: column; justify-content: center; + .data { + color: #111; + font-size: 14px; + } + .title { margin-top: 8px; color: #999; @@ -128,4 +153,20 @@ } } } + + .detail-area { + margin-top: 8px; + + .title { + height: 40px; + display: flex; + align-items: center; + justify-content: space-between; + + .text { + font-size: 14px; + color: #111; + } + } + } } From ecc20219169d42c58c2da9520b6b0688fc319884 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E6=B0=B8=E9=A1=BA?= <971387674@qq.com> Date: Tue, 29 Aug 2023 14:24:43 +0800 Subject: [PATCH 07/12] =?UTF-8?q?2.9.42308.02bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pages/socialSecurityBenefits/programme/defaultSlideForm.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/programme/defaultSlideForm.js b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/programme/defaultSlideForm.js index 3e7ebcfa..fabf6a86 100644 --- a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/programme/defaultSlideForm.js +++ b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/programme/defaultSlideForm.js @@ -203,7 +203,7 @@ export default class DefaultSlideForm extends React.Component { return ( { this.updateDataSource(record, v, "paymentProportion"); From 50c880d86890d1fd1e32adf67d0ef9a8b9c7b9b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E6=B0=B8=E9=A1=BA?= <971387674@qq.com> Date: Wed, 30 Aug 2023 10:34:16 +0800 Subject: [PATCH 08/12] =?UTF-8?q?=E6=99=BA=E8=83=BD=E7=AE=97=E8=96=AA-?= =?UTF-8?q?=E5=85=B6=E4=BB=96=E4=B8=89=E4=B8=AAtab=E9=A1=B5=E7=9A=84?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../intelligentCalculateSalarySettings.js | 8 + .../components/constants.js | 39 +++++ .../components/editBeRemindObjDialog.js | 44 +++++ .../components/insufficientTrafficAlert.js | 156 +++++++++++++++--- .../components/interfaceFlowStatistics.js | 33 ++-- .../index.js | 60 ++++++- .../index.less | 45 ++++- pc4mobx/hrmSalary/stores/intelligent.js | 1 + 8 files changed, 343 insertions(+), 43 deletions(-) create mode 100644 pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/editBeRemindObjDialog.js diff --git a/pc4mobx/hrmSalary/apis/intelligentCalculateSalarySettings.js b/pc4mobx/hrmSalary/apis/intelligentCalculateSalarySettings.js index dd7d0a9f..0c2daeab 100644 --- a/pc4mobx/hrmSalary/apis/intelligentCalculateSalarySettings.js +++ b/pc4mobx/hrmSalary/apis/intelligentCalculateSalarySettings.js @@ -33,3 +33,11 @@ export const apiflowStatisticsInfo = (params) => { export const apiflowStatisticsList = (params) => { return postFetch("/api/bs/hrmsalary/taxdeclaration/apiflow/statistics/list", params); }; +//智能算薪-流量不足提醒编辑或保存 +export const apiflowWarnConfigSave = (params) => { + return postFetch("/api/bs/hrmsalary/taxdeclaration/apiflow/warn/config/save", params); +}; +//智能算薪-流量不足提醒对象列表 +export const apiflowWarnReceiverList = (params) => { + return WeaTools.callApi("/api/bs/hrmsalary/taxdeclaration/apiflow/warn/receiver/list", "GET", params); +}; diff --git a/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/constants.js b/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/constants.js index fa776272..8ec20f66 100644 --- a/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/constants.js +++ b/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/constants.js @@ -53,3 +53,42 @@ export const trafficUsageConditions = [ defaultshow: true } ]; +export const remindObjConditions = [ + { + items: [ + { + browserConditionParam: { + completeParams: {}, + conditionDataParams: {}, + dataParams: {}, + destDataParams: {}, + hasAddBtn: false, + hasAdvanceSerach: true, + idSeparator: ",", + isAutoComplete: 1, + isDetail: 0, + isMultCheckbox: false, + isSingle: true, + linkUrl: "", + pageSize: 10, + quickSearchName: "", + replaceDatas: [], + title: "", + type: "1", + viewAttr: 3, + rules: "required" + }, + colSpan: 1, + conditionType: "BROWSER", + rules: "required|string", + domkey: ["adminUserIds"], + fieldcol: 12, + label: "提醒对象", + lanId: 111, + labelcol: 6, + viewAttr: 3 + } + ], + defaultshow: true + } +]; diff --git a/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/editBeRemindObjDialog.js b/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/editBeRemindObjDialog.js new file mode 100644 index 00000000..79a41221 --- /dev/null +++ b/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/editBeRemindObjDialog.js @@ -0,0 +1,44 @@ +/* + * Author: 黎永顺 + * name: 智能算薪-添加提醒对象 + * Description: + * Date: 2023/8/29 + */ +import React, { Component } from "react"; +import { inject, observer } from "mobx-react"; +import { WeaDialog, WeaLocaleProvider } from "ecCom"; +import { Button } from "antd"; +import { getSearchs } from "../../../util"; +import { remindObjConditions } from "./constants"; + +const getLabel = WeaLocaleProvider.getLabel; + +@inject("intelligentStore") +@observer +class EditBeRemindObjDialog extends Component { + componentWillReceiveProps(nextProps, nextContext) { + const { intelligentStore: { remindObjform } } = nextProps; + if (nextProps.visible !== this.props.visible && nextProps.visible) { + remindObjform.initFormFields(remindObjConditions); + } + if (nextProps.visible !== this.props.visible && !nextProps.visible) { + remindObjform.resetForm(); + } + } + + render() { + const { intelligentStore: { remindObjform } } = this.props; + return ( + {getLabel(537558, "保存")}]} + > +
+ {getSearchs(remindObjform, remindObjConditions, 1)} +
+
+ ); + } +} + +export default EditBeRemindObjDialog; diff --git a/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/insufficientTrafficAlert.js b/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/insufficientTrafficAlert.js index 5e7cb1eb..05589caf 100644 --- a/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/insufficientTrafficAlert.js +++ b/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/insufficientTrafficAlert.js @@ -5,9 +5,18 @@ * Date: 2023/7/19 */ import React, { Component } from "react"; -import { WeaCheckbox, WeaFormItem, WeaHelpfulTip, WeaInputNumber, WeaLocaleProvider, WeaSearchGroup } from "ecCom"; +import { + WeaButtonIcon, + WeaCheckbox, + WeaFormItem, + WeaInputNumber, + WeaLocaleProvider, + WeaSearchGroup, + WeaTable +} from "ecCom"; import { Modal } from "antd"; -import { apiflowWarnConfigGetForm } from "../../../apis/intelligentCalculateSalarySettings"; +import EditBeRemindObjDialog from "./editBeRemindObjDialog"; +import { apiflowWarnConfigGetForm, apiflowWarnReceiverList } from "../../../apis/intelligentCalculateSalarySettings"; const getLabel = WeaLocaleProvider.getLabel; @@ -16,7 +25,14 @@ class InsufficientTrafficAlert extends Component { super(props); this.state = { enable: "0", - remindEvent: { businessId: "", eventId: "", moduleId: "", id: "" } + remindEvent: { businessId: "", eventId: "", moduleId: "", id: "" }, + threshold: null, channelList: [ + { label: "EMobile", type: "IM", channel: "1", value: "1", config: {} }, + { label: "邮件", type: "email", channel: "3", value: "1", config: {} }, + { label: "短信", type: "message", channel: "4", value: "1", config: {} } + ], columns: [], dataSource: [], + pageInfo: { current: 1, pageSize: 10, total: 0 }, + loading: false, remindObjDialog: { visible: false, title: "" } }; } @@ -28,22 +44,39 @@ class InsufficientTrafficAlert extends Component { const { remindEvent } = this.state; apiflowWarnConfigGetForm().then(({ status, data }) => { if (status) { - const { enable, businessId, eventId, moduleId, id } = data; + const { enable, businessId, eventId, moduleId, id, threshold } = data; this.setState({ enable: enable ? "1" : "0", - remindEvent: { ...remindEvent, businessId, eventId, moduleId, id } + remindEvent: { ...remindEvent, businessId, eventId, moduleId, id }, + threshold + }, () => { + this.state.enable === "1" && this.apiflowWarnReceiverList(); }); } }); }; + apiflowWarnReceiverList = () => { + const { pageInfo, remindEvent } = this.state; + const { id } = remindEvent; + const payload = { + warnConfigId: id || this.props.warnConfigId, + ...pageInfo + }; + apiflowWarnReceiverList(payload).then(({ status, data }) => { + if (status) { + console.log(data); + } + }); + }; handleEnale = (enable) => { if (enable === "1") { - this.setState({ enable }); + this.setState({ enable }, () => this.apiflowWarnReceiverList()); } else { Modal.confirm({ title: getLabel(131329, "信息确认"), content: getLabel(111, "确认关闭提醒吗?关闭并保存后,流量不足时将无法及时提醒。"), onOk: () => { + this.setState({ enable }); }, onCancel: () => { this.setState({ enable: this.state.enable }); @@ -51,9 +84,39 @@ class InsufficientTrafficAlert extends Component { }); } }; + handleChangeChannel = (o) => { + const { channelList } = this.state; + this.setState({ + channelList: _.map(channelList, item => { + if (item.type === o.type) { + return { ...item, ...o }; + } + return { ...item }; + }) + }); + }; render() { - const { enable } = this.state; + const { enable, channelList, threshold, pageInfo, loading, columns, dataSource, remindObjDialog } = this.state; + const pagination = { + ...pageInfo, + showTotal: total => `${getLabel(18609, "共")} ${total} ${getLabel(18256, "条")}`, + showQuickJumper: true, + showSizeChanger: true, + pageSizeOptions: ["10", "20", "50", "100"], + onShowSizeChange: (current, pageSize) => { + this.setState({ + pageInfo: { ...pageInfo, current, pageSize } + }, () => { + }); + }, + onChange: current => { + this.setState({ + pageInfo: { ...pageInfo, current } + }, () => { + }); + } + }; return ( @@ -66,23 +129,55 @@ class InsufficientTrafficAlert extends Component { label={getLabel(544288, "提醒规则")} labelCol={{ span: 4 }} wrapperCol={{ span: 20 }} > - - - - - + this.setState({ threshold: o })}/> + {/**/} + {/* {getLabel(544287, "提醒推送方式")}:*/} + {/* */} + {/* */} + {/* }*/} + {/*>*/} + {/* */} + {/*
*/}
} + { + enable === "1" && +
+
+ {getLabel(111, "提醒对象设置")} + this.setState({ + remindObjDialog: { + ...remindObjDialog, visible: true, title: getLabel(111, "添加提醒对象") + } + })} + /> + {/* 添加提醒对象*/} + this.setState({ + remindObjDialog: { + ...remindObjDialog, visible: false, title: "" + } + })} + /> +
+ +
+ }
); } @@ -96,7 +191,7 @@ const ReminderRules = (props) => { return (
{getLabel(111, "流量不足")} - + {getLabel(111, "时提醒")} {getLabel(111, "为确保智能算薪正常使用,设置建议:若每个月消耗流量10,000,则不足10,000时提醒,以此预留一个月时间续流量")} @@ -104,4 +199,21 @@ const ReminderRules = (props) => { ); }; +const Pushmethod = (props) => { + const { onChange, channelList } = props; + return
+ { + _.map(channelList, item => { + const { label, type, value } = item; + return ( +
+ onChange({ ...item, value: o })}/> + {(type !== "email" && value === "1") && } +
+ ); + }) + } +
; +}; + diff --git a/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/interfaceFlowStatistics.js b/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/interfaceFlowStatistics.js index 9c0a5edd..f96dc3ea 100644 --- a/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/interfaceFlowStatistics.js +++ b/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/interfaceFlowStatistics.js @@ -5,7 +5,7 @@ * Date: 2023/8/29 */ import React, { Component } from "react"; -import { Button, message } from "antd"; +import { Button, message, Spin } from "antd"; import { WeaLocaleProvider, WeaTable } from "ecCom"; import { apiflowStatisticsInfo, apiflowStatisticsList } from "../../../apis/intelligentCalculateSalarySettings"; @@ -91,6 +91,9 @@ class InterfaceFlowStatistics extends Component { } }).catch(() => this.setState({ loading: false })); }; + handleExport = () => { + window.open(`${window.ecologyContentPath || ""}/api/bs/hrmsalary/taxdeclaration/apiflow/statistics/export`, "_blank"); + }; render() { const { statisticsInfo, pageInfo, loading, dataSource, columns } = this.state; @@ -133,19 +136,23 @@ class InterfaceFlowStatistics extends Component {
{getLabel(111, "使用明细")}
- +
- ({getLabel(111, "月统计详情")}) - } - ]} - scroll={{ y: `calc(100vh - 190px)` }} - /> + { + loading ?
+ +
: ({getLabel(111, "月统计详情")}) + } + ]} + scroll={{ y: `calc(100vh - 190px)` }} + /> + }
); diff --git a/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/index.js b/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/index.js index 60bfb99a..6d3625a1 100644 --- a/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/index.js +++ b/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/index.js @@ -1,11 +1,14 @@ import React, { Component } from "react"; +import { inject, observer } from "mobx-react"; import { WeaLocaleProvider, WeaReqTop } from "ecCom"; -import { Button } from "antd"; +import { Button, message, Modal } from "antd"; import EnableSettings from "./components/enableSettings"; import InsufficientTrafficAlert from "./components/insufficientTrafficAlert"; import TrafficUsageRecords from "./components/trafficUsageRecords"; import InterfaceFlowStatistics from "./components/interfaceFlowStatistics"; +import { apiflowWarnConfigSave } from "../../apis/intelligentCalculateSalarySettings"; import "./index.less"; +import { convertToUrlString } from "../../util/url"; const getLabel = WeaLocaleProvider.getLabel; const tabs = [ @@ -15,16 +18,55 @@ const tabs = [ { key: "TRAFFIC_USAGE_RECORD", title: getLabel(111, "流量使用记录") } ]; +@inject("intelligentStore") +@observer class Index extends Component { constructor(props) { super(props); this.state = { - selectedKey: "ENABLE_SETTINGS", lastUpdateTime: "" + selectedKey: "ENABLE_SETTINGS", lastUpdateTime: "", + loading: false, warnConfigId: "" }; + this.alertRef = null; } + /* + * Author: 黎永顺 + * Description:流量不足提醒 - 基础信息保存 + * Params: + * Date: 2023/8/29 + */ + saveItaBaseInfo = () => { + const { channelList, enable, threshold, remindEvent } = this.alertRef.state; + const validateError = (enable === "1") && (_.every(channelList, o => o.channel !== "1") || _.isNil(threshold)); + if (validateError) { + Modal.warning({ + title: getLabel(131329, "信息确认"), + content: getLabel(518702, "必要信息不完整,红色*为必填项!") + }); + return; + } + const { businessId, id } = remindEvent; + const config = _.map(_.filter(channelList, p => p.value === "1"), o => ({ channel: o.channel, config: o.config })); + const payload = { + id, businessId, threshold, + enable: enable === "1", + config: JSON.stringify(config) + }; + this.setState({ loading: true }); + apiflowWarnConfigSave(payload).then(({ status, data, errormsg }) => { + this.setState({ loading: false }); + if (status) { + message.success(getLabel(22619, "保存成功!")); + this.setState({ warnConfigId: data }); + payload.enable && this.alertRef.apiflowWarnReceiverList(); + } else { + message.error(errormsg); + } + }).catch(() => this.setState({ loading: false })); + }; renderChildren = () => { - const { selectedKey } = this.state; + const { selectedKey, warnConfigId } = this.state; let CurrentDom = null; switch (selectedKey) { case "ENABLE_SETTINGS": @@ -35,7 +77,7 @@ class Index extends Component { this.setState({ lastUpdateTime: data.lastUpdateTime })}/>; break; case "INSUFFICIENT_TRAFFIC_ALERT": - CurrentDom = ; + CurrentDom = this.alertRef = dom} warnConfigId={warnConfigId}/>; break; case "TRAFFIC_USAGE_RECORD": CurrentDom = ; @@ -46,13 +88,17 @@ class Index extends Component { } return CurrentDom; }; + handleExport = () => { + const { intelligentStore: { form } } = this.props; + window.open(`${window.ecologyContentPath || ""}/api/bs/hrmsalary/taxdeclaration/apiflow/record/export?${convertToUrlString(form.getFormParams())}`, "_blank"); + }; render() { - const { selectedKey, lastUpdateTime } = this.state; + const { selectedKey, lastUpdateTime, loading } = this.state; const buttons = selectedKey === "INSUFFICIENT_TRAFFIC_ALERT" ? - [] : + [] : selectedKey === "TRAFFIC_USAGE_RECORD" ? - [] : + [] : selectedKey === "INTERFACE_FLOW_STATISTICS" ? [ {getLabel(111, "最后统计时间:")} diff --git a/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/index.less b/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/index.less index 6fff3639..e8cc4773 100644 --- a/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/index.less +++ b/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/index.less @@ -60,6 +60,14 @@ border: 1px solid #f2f2f2; border-bottom: none; + .flex { + display: flex; + } + + .items-center { + align-items: center; + } + .wea-content { padding: 0; @@ -78,7 +86,7 @@ } .after { - margin-left: 6px; + margin-left: 16px; margin-right: 16px; } @@ -88,6 +96,41 @@ padding: 6px 0; } } + + .channel-list { + display: flex; + align-items: center; + + & > .channel-item:not(:first-child) { + margin-left: 16px; + } + + .channel-item { + display: inline-flex; + align-items: center; + min-height: 30px; + } + + .icon-coms-Flow-setting { + font-size: 16px; + cursor: pointer; + margin-top: 5px; + } + } + + .table { + .title { + height: 40px; + justify-content: space-between; + background: #f6f6f6; + + .titleLeft { + font-size: 14px; + color: #111; + padding: 0; + } + } + } } .trafficUsageRecords-layout { diff --git a/pc4mobx/hrmSalary/stores/intelligent.js b/pc4mobx/hrmSalary/stores/intelligent.js index 4181fcf8..7d0caf9b 100644 --- a/pc4mobx/hrmSalary/stores/intelligent.js +++ b/pc4mobx/hrmSalary/stores/intelligent.js @@ -5,6 +5,7 @@ const { TableStore } = WeaTableNew; export class IntelligentStore { @observable form = new WeaForm(); //流量使用记录查询form实例 + @observable remindObjform = new WeaForm(); //流量使用记录查询form实例 @observable tableStore = new TableStore(); @action("...") From cf06016fa2a503cc16d86985dd514be5d5dde5a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E6=B0=B8=E9=A1=BA?= <971387674@qq.com> Date: Wed, 30 Aug 2023 16:28:33 +0800 Subject: [PATCH 09/12] =?UTF-8?q?=E6=99=BA=E8=83=BD=E7=AE=97=E8=96=AA-?= =?UTF-8?q?=E5=85=B6=E4=BB=96=E4=B8=89=E4=B8=AAtab=E4=B8=8B=E7=9A=84?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../intelligentCalculateSalarySettings.js | 12 ++ .../components/constants.js | 2 +- .../components/editBeRemindObjDialog.js | 56 ++++++++- .../components/insufficientTrafficAlert.js | 115 ++++++++++++------ .../index.less | 9 ++ 5 files changed, 155 insertions(+), 39 deletions(-) diff --git a/pc4mobx/hrmSalary/apis/intelligentCalculateSalarySettings.js b/pc4mobx/hrmSalary/apis/intelligentCalculateSalarySettings.js index 0c2daeab..cd51bce3 100644 --- a/pc4mobx/hrmSalary/apis/intelligentCalculateSalarySettings.js +++ b/pc4mobx/hrmSalary/apis/intelligentCalculateSalarySettings.js @@ -41,3 +41,15 @@ export const apiflowWarnConfigSave = (params) => { export const apiflowWarnReceiverList = (params) => { return WeaTools.callApi("/api/bs/hrmsalary/taxdeclaration/apiflow/warn/receiver/list", "GET", params); }; +//智能算薪-编辑保存流量不足提醒对象 +export const apiflowWarnReceiverSave = (params) => { + return postFetch("/api/bs/hrmsalary/taxdeclaration/apiflow/warn/receiver/save", params); +}; +//智能算薪-编辑保存流量不足提醒对象 +export const apiflowWarnReceiverGetForm = (params) => { + return postFetch("/api/bs/hrmsalary/taxdeclaration/apiflow/warn/receiver/getForm", params); +}; +//智能算薪-流量不足提醒对象-删除 +export const apiflowWarnReceiverDelete = (params) => { + return WeaTools.callApi("/api/bs/hrmsalary/taxdeclaration/apiflow/warn/receiver/delete", "GET", params); +}; diff --git a/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/constants.js b/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/constants.js index 8ec20f66..fb7c89c6 100644 --- a/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/constants.js +++ b/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/constants.js @@ -81,7 +81,7 @@ export const remindObjConditions = [ colSpan: 1, conditionType: "BROWSER", rules: "required|string", - domkey: ["adminUserIds"], + domkey: ["employeeId"], fieldcol: 12, label: "提醒对象", lanId: 111, diff --git a/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/editBeRemindObjDialog.js b/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/editBeRemindObjDialog.js index 79a41221..7342b369 100644 --- a/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/editBeRemindObjDialog.js +++ b/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/editBeRemindObjDialog.js @@ -7,31 +7,81 @@ import React, { Component } from "react"; import { inject, observer } from "mobx-react"; import { WeaDialog, WeaLocaleProvider } from "ecCom"; -import { Button } from "antd"; +import { Button, message } from "antd"; import { getSearchs } from "../../../util"; import { remindObjConditions } from "./constants"; +import { apiflowWarnReceiverGetForm, apiflowWarnReceiverSave } from "../../../apis/intelligentCalculateSalarySettings"; const getLabel = WeaLocaleProvider.getLabel; @inject("intelligentStore") @observer class EditBeRemindObjDialog extends Component { + constructor(props) { + super(props); + this.state = { + loading: false + }; + } + componentWillReceiveProps(nextProps, nextContext) { - const { intelligentStore: { remindObjform } } = nextProps; + const { intelligentStore: { remindObjform }, id } = nextProps; if (nextProps.visible !== this.props.visible && nextProps.visible) { remindObjform.initFormFields(remindObjConditions); + id && this.apiflowWarnReceiverGetForm(nextProps); } if (nextProps.visible !== this.props.visible && !nextProps.visible) { remindObjform.resetForm(); } } + apiflowWarnReceiverGetForm = (props) => { + const { intelligentStore: { remindObjform } } = this.props; + const { id } = props; + apiflowWarnReceiverGetForm({ id }).then(({ status, data }) => { + if (status) { + const { employee } = data; + remindObjform.updateFields({ + "employeeId": { + value: employee[0].id, + valueSpan: employee[0].content, + valueObj: [{ id: employee[0].id, name: employee[0].content }] + } + }); + } + }); + }; + + save = () => { + const { intelligentStore: { remindObjform }, warnConfigId, id } = this.props; + remindObjform.validateForm().then(f => { + const { employeeId } = remindObjform.getFormParams(); + if (f.isValid) { + this.setState({ loading: true }); + apiflowWarnReceiverSave({ employeeId, warnConfigId, id }).then(({ status, errormsg }) => { + this.setState({ loading: false }); + if (status) { + message.success(getLabel(22619, "保存成功!")); + this.props.updateWarnList(); + this.props.onCancel(); + } else { + message.error(errormsg); + } + }).catch(() => this.setState({ loading: false })); + } else { + f.showErrors(); + } + }); + }; + render() { const { intelligentStore: { remindObjform } } = this.props; return ( {getLabel(537558, "保存")}]} + style={{ width: 550 }} + buttons={[]} >
{getSearchs(remindObjform, remindObjConditions, 1)} diff --git a/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/insufficientTrafficAlert.js b/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/insufficientTrafficAlert.js index 05589caf..c725a669 100644 --- a/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/insufficientTrafficAlert.js +++ b/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/components/insufficientTrafficAlert.js @@ -14,9 +14,13 @@ import { WeaSearchGroup, WeaTable } from "ecCom"; -import { Modal } from "antd"; +import { message, Modal, Spin } from "antd"; import EditBeRemindObjDialog from "./editBeRemindObjDialog"; -import { apiflowWarnConfigGetForm, apiflowWarnReceiverList } from "../../../apis/intelligentCalculateSalarySettings"; +import { + apiflowWarnConfigGetForm, + apiflowWarnReceiverDelete, + apiflowWarnReceiverList +} from "../../../apis/intelligentCalculateSalarySettings"; const getLabel = WeaLocaleProvider.getLabel; @@ -31,8 +35,7 @@ class InsufficientTrafficAlert extends Component { { label: "邮件", type: "email", channel: "3", value: "1", config: {} }, { label: "短信", type: "message", channel: "4", value: "1", config: {} } ], columns: [], dataSource: [], - pageInfo: { current: 1, pageSize: 10, total: 0 }, - loading: false, remindObjDialog: { visible: false, title: "" } + loading: false, remindObjDialog: { visible: false, title: "", warnConfigId: "", id: "" } }; } @@ -56,15 +59,49 @@ class InsufficientTrafficAlert extends Component { }); }; apiflowWarnReceiverList = () => { - const { pageInfo, remindEvent } = this.state; + const { remindEvent } = this.state; const { id } = remindEvent; const payload = { - warnConfigId: id || this.props.warnConfigId, - ...pageInfo + warnConfigId: id || this.props.warnConfigId }; apiflowWarnReceiverList(payload).then(({ status, data }) => { if (status) { - console.log(data); + const { columns, list: dataSource } = data; + this.setState({ + dataSource, + columns: _.map(columns, item => { + const { dataIndex } = item; + let width = ""; + switch (dataIndex) { + case "employeeName": + case "mobile": + width = "30%"; + break; + case "email": + width = "40%"; + break; + default: + break; + } + return { ...item, width }; + }) + }); + } + }); + }; + apiflowWarnReceiverDelete = (id) => { + Modal.confirm({ + title: getLabel(131329, "信息确认"), + content: getLabel(111, "确定删除吗?删除后数据不可找回"), + onOk: () => { + apiflowWarnReceiverDelete({ id }).then(({ status, errormsg }) => { + if (status) { + message.success(getLabel(502230, "删除成功!")); + this.apiflowWarnReceiverList(); + } else { + message.error(errormsg || getLabel(20462, "删除失败!")); + } + }); } }); }; @@ -97,26 +134,11 @@ class InsufficientTrafficAlert extends Component { }; render() { - const { enable, channelList, threshold, pageInfo, loading, columns, dataSource, remindObjDialog } = this.state; - const pagination = { - ...pageInfo, - showTotal: total => `${getLabel(18609, "共")} ${total} ${getLabel(18256, "条")}`, - showQuickJumper: true, - showSizeChanger: true, - pageSizeOptions: ["10", "20", "50", "100"], - onShowSizeChange: (current, pageSize) => { - this.setState({ - pageInfo: { ...pageInfo, current, pageSize } - }, () => { - }); - }, - onChange: current => { - this.setState({ - pageInfo: { ...pageInfo, current } - }, () => { - }); - } - }; + const { + remindEvent, enable, channelList, threshold, + loading, columns, dataSource, remindObjDialog + } = this.state; + const { id } = remindEvent; return ( @@ -157,25 +179,48 @@ class InsufficientTrafficAlert extends Component { buttonType="add" type="primary" onClick={() => this.setState({ remindObjDialog: { - ...remindObjDialog, visible: true, title: getLabel(111, "添加提醒对象") + ...remindObjDialog, visible: true, title: getLabel(111, "添加提醒对象"), + warnConfigId: id || this.props.warnConfigId } })} /> {/* 添加提醒对象*/} this.setState({ remindObjDialog: { - ...remindObjDialog, visible: false, title: "" + ...remindObjDialog, visible: false, title: "", warnConfigId: "", id: "" } })} />
- + { + loading ?
+ +
: () + } + ]} pagination={false} + scroll={{ y: `calc(100vh - 190px)` }} + /> + } } diff --git a/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/index.less b/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/index.less index e8cc4773..971e3b4e 100644 --- a/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/index.less +++ b/pc4mobx/hrmSalary/pages/intelligentCalculateSalarySettings/index.less @@ -9,6 +9,15 @@ justify-content: flex-end; font-size: 12px; } + + .space { + display: flex; + align-items: center; + + .mr10 { + margin-right: 10px; + } + } } .enable-settings { From f65b7979d76c18aa260ca8948a7f95eeda6c2bf3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E6=B0=B8=E9=A1=BA?= <971387674@qq.com> Date: Thu, 31 Aug 2023 09:40:09 +0800 Subject: [PATCH 10/12] =?UTF-8?q?hotfix-=E8=96=AA=E8=B5=84=E6=A0=B8?= =?UTF-8?q?=E7=AE=97=E8=AF=A6=E6=83=85=E9=A1=B5=E9=9D=A2=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E5=88=B7=E6=96=B0=E5=88=86=E9=A1=B5=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pc4mobx/hrmSalary/pages/calculateDetail/salaryDetail.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/pc4mobx/hrmSalary/pages/calculateDetail/salaryDetail.js b/pc4mobx/hrmSalary/pages/calculateDetail/salaryDetail.js index bbcdaad6..327d9b72 100644 --- a/pc4mobx/hrmSalary/pages/calculateDetail/salaryDetail.js +++ b/pc4mobx/hrmSalary/pages/calculateDetail/salaryDetail.js @@ -151,6 +151,7 @@ export default class SalaryDetail extends React.Component { progressVisible: false, progress: 0 }, () => { + const { current, pageSize } = this.pageInfo; const childFrameObj = document.getElementById("atdTable"); const payload = { type: "PR", @@ -158,7 +159,8 @@ export default class SalaryDetail extends React.Component { url: "/api/bs/hrmsalary/salaryacct/acctresult/list", queryParams: { salaryAcctRecordId, - ...this.props.employeeName + ...this.props.employeeName, + current, pageSize } }; childFrameObj.contentWindow.postMessage(JSON.stringify(payload), "*"); @@ -186,13 +188,15 @@ export default class SalaryDetail extends React.Component { this.setState({ loading: false }); const childFrameObj = document.getElementById("atdTable"); const salaryAcctRecordId = getQueryString("id"); + const { current, pageSize } = this.pageInfo; const payload = { type: "PR", listType: "", url: "/api/bs/hrmsalary/salaryacct/acctresult/list", queryParams: { salaryAcctRecordId, - ...this.props.employeeName + ...this.props.employeeName, + current, pageSize } }; childFrameObj.contentWindow.postMessage(JSON.stringify(payload), "*"); From b6ac297242f4af24d003f554972633c083522c7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E6=B0=B8=E9=A1=BA?= <971387674@qq.com> Date: Thu, 31 Aug 2023 11:15:32 +0800 Subject: [PATCH 11/12] =?UTF-8?q?hotfix-=E7=A4=BE=E4=BF=9D=E7=A6=8F?= =?UTF-8?q?=E5=88=A9=E6=A1=A3=E6=A1=88=E4=BB=A5=E5=8F=8A=E8=96=AA=E8=B5=84?= =?UTF-8?q?=E6=A1=A3=E6=A1=88=E7=9A=84=E5=AF=BC=E5=85=A5=E4=B8=8B=E8=BD=BD?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=E5=8A=9F=E8=83=BD=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pages/calculateDetail/index.less | 6 ++ .../pages/calculateDetail/salaryDetail.js | 17 ++---- .../pages/calculateDetail/userSure.js | 59 +++++++++++++++---- .../payrollFiles/components/importMenu.js | 6 +- pc4mobx/hrmSalary/pages/payrollFiles/index.js | 3 + .../socialSecurityBenefits/archives/index.js | 4 +- .../standingBookDetail/components/index.less | 26 +++++++- .../standingBookDetail/index.js | 58 +++++++++--------- 8 files changed, 120 insertions(+), 59 deletions(-) diff --git a/pc4mobx/hrmSalary/pages/calculateDetail/index.less b/pc4mobx/hrmSalary/pages/calculateDetail/index.less index 64b163fa..37d09d86 100644 --- a/pc4mobx/hrmSalary/pages/calculateDetail/index.less +++ b/pc4mobx/hrmSalary/pages/calculateDetail/index.less @@ -270,3 +270,9 @@ } } } + +.salaryMonthTip-layout{ + display: flex; + flex-direction: column; + +} diff --git a/pc4mobx/hrmSalary/pages/calculateDetail/salaryDetail.js b/pc4mobx/hrmSalary/pages/calculateDetail/salaryDetail.js index 327d9b72..84e7dbf5 100644 --- a/pc4mobx/hrmSalary/pages/calculateDetail/salaryDetail.js +++ b/pc4mobx/hrmSalary/pages/calculateDetail/salaryDetail.js @@ -6,9 +6,10 @@ import EditSalaryDetail from "./editSalaryDetail"; import SlideModalTitle from "../../components/slideModalTitle"; import { getQueryString } from "../../util/url"; import { inject, observer } from "mobx-react"; +import ProgressModal from "../../components/progressModal"; +import { SalaryMonthTip } from "./userSure"; import { toJS } from "mobx"; import "./index.less"; -import ProgressModal from "../../components/progressModal"; @inject("calculateStore", "taxAgentStore") @observer @@ -215,17 +216,9 @@ export default class SalaryDetail extends React.Component {
薪资所属月:{baseSalarySobCycle.salaryMonth} : ""} placement="topLeft" /> {/*暂时隐藏*/} diff --git a/pc4mobx/hrmSalary/pages/calculateDetail/userSure.js b/pc4mobx/hrmSalary/pages/calculateDetail/userSure.js index 89f77d11..b7c3ac5f 100644 --- a/pc4mobx/hrmSalary/pages/calculateDetail/userSure.js +++ b/pc4mobx/hrmSalary/pages/calculateDetail/userSure.js @@ -1,10 +1,20 @@ import React from "react"; import { Button, Col, Icon, message, Modal, Row } from "antd"; -import { WeaBrowser, WeaFormItem, WeaHelpfulTip, WeaInput, WeaSearchGroup, WeaSelect, WeaTab } from "ecCom"; +import { + WeaBrowser, + WeaFormItem, + WeaHelpfulTip, + WeaInput, + WeaLocaleProvider, + WeaSearchGroup, + WeaSelect, + WeaTab +} from "ecCom"; import { inject, observer } from "mobx-react"; -import "./index.less"; import { getQueryString } from "../../util/url"; +import "./index.less"; +const { getLabel } = WeaLocaleProvider; @inject("calculateStore", "salaryFileStore") @observer export default class UserSure extends React.Component { @@ -120,7 +130,7 @@ export default class UserSure extends React.Component { url: "/api/bs/hrmsalary/salaryacct/acctemployee/list", queryParams: { salaryAcctRecordId, - ...this.state.searchItemsValue, + ...this.state.searchItemsValue } }; childFrameObj.contentWindow.postMessage(JSON.stringify(payload), "*"); //window.postMessage @@ -375,12 +385,8 @@ export default class UserSure extends React.Component { 薪资所属月: : ""} placement="topLeft" /> @@ -430,7 +436,7 @@ export default class UserSure extends React.Component { url: "/api/bs/hrmsalary/salaryacct/acctemployee/list", queryParams: { salaryAcctRecordId, - ...this.state.searchItemsValue, + ...this.state.searchItemsValue } }; childFrameObj.contentWindow.postMessage(JSON.stringify(payload), "*"); //window.postMessage @@ -460,7 +466,7 @@ export default class UserSure extends React.Component { url: "/api/bs/hrmsalary/salaryacct/reducedemployee/list", queryParams: { salaryAcctRecordId, - ...this.state.searchItemsValue, + ...this.state.searchItemsValue } }; childFrameObj.contentWindow.postMessage(JSON.stringify(payload), "*"); @@ -490,7 +496,7 @@ export default class UserSure extends React.Component { url: "/api/bs/hrmsalary/salaryacct/addedemployee/list", queryParams: { salaryAcctRecordId, - ...this.state.searchItemsValue, + ...this.state.searchItemsValue } }; childFrameObj.contentWindow.postMessage(JSON.stringify(payload), "*"); @@ -587,3 +593,32 @@ export default class UserSure extends React.Component { ); } } + +export const SalaryMonthTip = (props) => { + const { baseSalarySobCycle } = props; + const { salaryCycle, taxCycle, attendCycle, socialSecurityCycle } = baseSalarySobCycle; + const { fromDate: salaryCycleFromDate, endDate: salaryCycleEndDate } = salaryCycle; + const { fromDate: attendCycleFromDate, endDate: attendCycleEndDate } = attendCycle; + return ( +
+
+
{getLabel(543375, "薪资周期")}
+
{`${salaryCycleFromDate}${getLabel(15322, "至")}${salaryCycleEndDate}`}
+
+
+
{getLabel(542240, "税款所属期")}
+
{taxCycle}
+
+
+
{getLabel(543475, "考勤取值周期")}
+
{`${attendCycleFromDate}${getLabel(15322, "至")}${attendCycleEndDate}`}
+
+
+
{getLabel(543466, "福利台账月份")}
+
+ {`${getLabel(19422, "引用")}${socialSecurityCycle}${getLabel(543476, "的福利台账数据")}`} +
+
+
+ ); +}; diff --git a/pc4mobx/hrmSalary/pages/payrollFiles/components/importMenu.js b/pc4mobx/hrmSalary/pages/payrollFiles/components/importMenu.js index 42f95e62..2e0b01d6 100644 --- a/pc4mobx/hrmSalary/pages/payrollFiles/components/importMenu.js +++ b/pc4mobx/hrmSalary/pages/payrollFiles/components/importMenu.js @@ -3,6 +3,7 @@ import ImportModal from "../../../components/importModal"; import * as API from "../../../apis/payrollFiles"; import { Menu, Modal } from "antd"; import "../index.less"; +import { convertToUrlString } from "../../../util/url"; class ImportMenu extends Component { constructor(props) { @@ -114,7 +115,7 @@ class ImportMenu extends Component { }; render() { - const { importType, refreshList, isExtEmp } = this.props; + const { importType, refreshList, isExtEmp, searchItemsValue = {} } = this.props; const { importParams, previewColumns, previewDataSource } = this.state; let params = ""; if (importParams.importType === "init" || importParams.importType === "salaryItemAdjust") { @@ -153,8 +154,7 @@ class ImportMenu extends Component { }} previewImport={(params) => this.salaryArchivePreview(params)} importFile={(params) => this.handleImportFile(params)} - templateLink={ - "/api/bs/hrmsalary/salaryArchive/downloadTemplate?importType=" + params + templateLink={`/api/bs/hrmsalary/salaryArchive/downloadTemplate?importType=${params}&${convertToUrlString(searchItemsValue)}` } visiable={importParams.visible} onCancel={() => { diff --git a/pc4mobx/hrmSalary/pages/payrollFiles/index.js b/pc4mobx/hrmSalary/pages/payrollFiles/index.js index 1cf37553..74326a8f 100644 --- a/pc4mobx/hrmSalary/pages/payrollFiles/index.js +++ b/pc4mobx/hrmSalary/pages/payrollFiles/index.js @@ -433,6 +433,7 @@ class Index extends Component { { this.query(); this.setState({ selectedRowKeys: [] }); @@ -523,6 +524,7 @@ class Index extends Component { { this.query(); this.setState({ selectedRowKeys: [] }); @@ -834,6 +836,7 @@ class Index extends Component {
this.importRef = dom} + searchItemsValue={this.state.searchItemsValue} refreshList={() => { this.query(); this.setState({ selectedRowKeys: [] }); diff --git a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/archives/index.js b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/archives/index.js index 8b078187..cab89a87 100644 --- a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/archives/index.js +++ b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/archives/index.js @@ -293,8 +293,10 @@ export default class Archives extends React.Component { // 模板点击 handleTemplateLinkClick = (exportData) => { + const { archivesStore: { form } } = this.props; + const formParams = form.getFormParams() || {}; const { selectedKey } = this.state; - let url = `/api/bs/hrmsalary/scheme/template/export?exportData=${exportData}&runStatuses=${selectedKey === "pending" ? "1" : "2,3"}`; + let url = `/api/bs/hrmsalary/scheme/template/export?exportData=${exportData}&runStatuses=${selectedKey === "pending" ? "1" : "2,3"}&${convertToUrlString(formParams)}`; window.open(`${window.location.origin}${url}`); }; diff --git a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/index.less b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/index.less index 9ed9d668..7bb28208 100644 --- a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/index.less +++ b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/index.less @@ -2,12 +2,26 @@ display: flex; flex-direction: column; height: 100%; + background: #f6f6f6; + + .wea-new-top-req-wapper .wea-new-top-req-main { + background: #f6f6f6 !important; + } + + .wea-new-top-req-wapper .wea-new-top-req { + z-index: 0 !important; + } + + .wea-search-tab, .wea-input-focus { + background: #f6f6f6; + } .normalWapper { - flex: 1; + height: 100%; display: flex; flex-direction: column; overflow: hidden; + padding: 0 16px; .tableWrapper { flex: 1; @@ -16,12 +30,18 @@ .ant-spin-nested-loading, .ant-spin-container { height: 100%; } + + .wea-new-table { + background: #fff; + } } .topContent { padding: 8px 20px; display: flex; align-items: center; + background: #fff; + margin-top: 16px; .month { margin-right: 26px; @@ -69,14 +89,16 @@ //退差;补差 .regressionWrapper, .differenceWrapper { - flex: 1; + height: 100%; overflow: hidden; display: flex; flex-direction: column; + padding: 16px; .tableWrapper { flex: 1; overflow: hidden; + .ant-spin-nested-loading, .ant-spin-container { height: 100%; } diff --git a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/index.js b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/index.js index a5ae1a93..f58a9740 100644 --- a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/index.js +++ b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/index.js @@ -6,13 +6,15 @@ */ import React, { Component } from "react"; import { inject, observer } from "mobx-react"; -import { WeaTab } from "ecCom"; +import { WeaLocaleProvider, WeaReqTop } from "ecCom"; import NormalIndex from "./components/normal"; import OverViewIndex from "./components/overView"; import AbnormalListIndex from "./components/abnormalList"; import Regression from "./components/regression"; import MakeupDifference from "./components/makeupDifference"; +const { getLabel } = WeaLocaleProvider; + @inject("standingBookStore") @observer class StandingBookDetail extends Component { @@ -43,7 +45,7 @@ class StandingBookDetail extends Component { newTabList.push(newTabList.splice(_.findIndex(newTabList, it => it.id === "4"), 1)[0]); this.setState({ selectedKey: newTabList[0].id, - tabList: _.map(newTabList, it => ({ title: it.content, viewcondition: it.id })), + tabList: _.map(newTabList, it => ({ title: it.content, key: it.id })), remarks, billMonth }); }); @@ -53,33 +55,31 @@ class StandingBookDetail extends Component { const { selectedKey, tabList, remarks, billMonth } = this.state; return (
- { - this.setState({ selectedKey }); - }} - /> - { - (selectedKey === "1" || selectedKey === "3") && - - } - { - selectedKey === "2" && - - } - { - selectedKey === "4" && - - } - { - selectedKey === "5" && - } - { - selectedKey === "6" && - } + } + iconBgcolor="#F14A2D" showDropIcon={false} tabDatas={tabList} selectedKey={selectedKey} + onChange={selectedKey => this.setState({ selectedKey })} + > + { + (selectedKey === "1" || selectedKey === "3") && + + } + { + selectedKey === "2" && + + } + { + selectedKey === "4" && + + } + { + selectedKey === "5" && + } + { + selectedKey === "6" && + } +
); } From a5e0ca30845e79993c6423751f8698d0bd245a8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E6=B0=B8=E9=A1=BA?= <971387674@qq.com> Date: Thu, 31 Aug 2023 15:02:56 +0800 Subject: [PATCH 12/12] =?UTF-8?q?=E8=96=AA=E8=B5=84=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E5=85=AC=E5=BC=8F=E4=BF=9D=E5=AD=98=E5=8F=82=E6=95=B0=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/ledgerSalaryItemEditSlide.js | 2 +- .../ledgerPage/components/ledgerSalaryItemTable.js | 9 +++++---- .../pages/salaryItem/customSalaryItemSlide.js | 14 +++++++++----- .../hrmSalary/pages/salaryItem/formalFormModal.js | 2 +- .../hrmSalary/pages/salaryItem/salaryItemForm.js | 2 +- 5 files changed, 17 insertions(+), 12 deletions(-) diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemEditSlide.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemEditSlide.js index de0c2871..d476edbd 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemEditSlide.js +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemEditSlide.js @@ -23,7 +23,7 @@ class LedgerSalaryItemEditSlide extends Component { const key = Object.keys(params)[0]; this.props.onUpdateRequest(request, key); }; - handleShowFormal = () => this.props.onEditFormnul(); + handleShowFormal = (salaryItemName) => this.props.onEditFormnul(salaryItemName); render() { return ( diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemTable.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemTable.js index 55892da2..123b74ab 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemTable.js +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemTable.js @@ -28,7 +28,8 @@ class LedgerSalaryItemTable extends Component { visible: false, formulaId: "", valueType: "", - dataType: "" + dataType: "", + name: "" } }; } @@ -163,13 +164,13 @@ class LedgerSalaryItemTable extends Component { originSqlContent: ((valueType.toString() === "2" && (!originFormulaContent || originFormulaContent === " ")) || (valueType.toString() === "1") || (valueType.toString() === "2" && originFormulaContent)) ? " " : originSqlContent }, salaryItemId); }; - handleEditFormnul = () => { + handleEditFormnul = (salaryItemName) => { const { salaryItemPayload, editFormulModal } = this.state; const { record } = salaryItemPayload; const { valueType, formulaId, dataType, originFormulaContent, originSqlContent } = record; this.setState({ editFormulModal: { - ...editFormulModal, visible: true, valueType, dataType, + ...editFormulModal, visible: true, valueType, dataType, name: salaryItemName, formulaId: ((valueType.toString() === "2" && (originFormulaContent || originFormulaContent !== " ")) || valueType.toString() === "3" && (originSqlContent || originSqlContent === " ")) ? formulaId : "" } }); @@ -180,7 +181,7 @@ class LedgerSalaryItemTable extends Component { editFormulModal: { ...editFormulModal, visible: false, - formulaId: "", + formulaId: "", name: "", valueType: "", dataType: "" } }); diff --git a/pc4mobx/hrmSalary/pages/salaryItem/customSalaryItemSlide.js b/pc4mobx/hrmSalary/pages/salaryItem/customSalaryItemSlide.js index fe601cc5..9e407f56 100644 --- a/pc4mobx/hrmSalary/pages/salaryItem/customSalaryItemSlide.js +++ b/pc4mobx/hrmSalary/pages/salaryItem/customSalaryItemSlide.js @@ -8,7 +8,8 @@ export default class CustomSalaryItemSlide extends React.Component { super(props); this.state = { showForm: false, - formalModalVisible: false + formalModalVisible: false, + salaryItemName: "" }; } @@ -16,9 +17,10 @@ export default class CustomSalaryItemSlide extends React.Component { this.props.onChange({ ...this.props.request, ...params }); }; - handleShowFormal = () => { + handleShowFormal = (salaryItemName) => { this.setState({ - formalModalVisible: true + formalModalVisible: true, + salaryItemName }); }; @@ -34,12 +36,13 @@ export default class CustomSalaryItemSlide extends React.Component { render() { const { request } = this.props; const { valueType, dataType, formulaId } = request; - const { formalModalVisible } = this.state; + const { formalModalVisible, salaryItemName } = this.state; return (
{formalModalVisible && this.setState({ - formalModalVisible: false + formalModalVisible: false, + salaryItemName: "" })} />}
diff --git a/pc4mobx/hrmSalary/pages/salaryItem/formalFormModal.js b/pc4mobx/hrmSalary/pages/salaryItem/formalFormModal.js index 58808c61..98c706fc 100644 --- a/pc4mobx/hrmSalary/pages/salaryItem/formalFormModal.js +++ b/pc4mobx/hrmSalary/pages/salaryItem/formalFormModal.js @@ -208,7 +208,7 @@ export default class FormalFormModal extends React.Component { }); this.parameters = result; let params = { - name: "公式1", + name: this.props.name || "公式1", description: "备注", module: "salary", useFor: "salaryitem", diff --git a/pc4mobx/hrmSalary/pages/salaryItem/salaryItemForm.js b/pc4mobx/hrmSalary/pages/salaryItem/salaryItemForm.js index 73418bad..16a8a099 100644 --- a/pc4mobx/hrmSalary/pages/salaryItem/salaryItemForm.js +++ b/pc4mobx/hrmSalary/pages/salaryItem/salaryItemForm.js @@ -133,7 +133,7 @@ class SalaryItemForm extends Component { (type === "INPUT" && display) ? (key === "originSqlContent" || key === "originFormulaContent") && onShowFormal()} + onClick={() => (key === "originSqlContent" || key === "originFormulaContent") && onShowFormal(request["name"])} onChange={v => this.handleChangeSalaryFiledItems(key, v)}/> : (type === "SWITCH" && display) ?