From 17e23fc0146bc52c6540968dabb3f5acb1e55c79 Mon Sep 17 00:00:00 2001 From: liyongshun <971387674@qq.com> Date: Thu, 2 Jun 2022 14:48:55 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=97=E8=A1=A8=E5=88=86=E9=A1=B5=E4=BB=A5?= =?UTF-8?q?=E5=8F=8A=E6=9D=83=E9=99=90=E7=9A=84=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pc4mobx/hrmSalary/apis/cumDeduct.js | 153 ++-- pc4mobx/hrmSalary/apis/cumSituation.js | 155 ++-- pc4mobx/hrmSalary/apis/index.js | 21 +- pc4mobx/hrmSalary/apis/otherDeduct.js | 159 ++-- pc4mobx/hrmSalary/apis/taxAgent.js | 103 ++- .../cumDeduct/editSlideContent.js | 338 ++++---- .../pages/dataAcquisition/cumDeduct/index.js | 604 +++++++++----- .../dataAcquisition/cumDeduct/index.less | 68 +- .../cumSituation/editSlideContent.js | 348 ++++---- .../dataAcquisition/cumSituation/index.js | 586 +++++++++----- .../otherDeduct/editSlideContent.js | 339 ++++---- .../dataAcquisition/otherDeduct/index.js | 584 +++++++++----- .../dataAcquisition/otherDeduct/index.less | 11 + .../hrmSalary/pages/ledger/calcRulesForm.js | 8 +- pc4mobx/hrmSalary/pages/ledger/index.js | 684 ++++++++++------ pc4mobx/hrmSalary/pages/ledger/index.less | 281 ++++--- .../hrmSalary/pages/ledger/salaryItemForm.js | 9 +- .../hrmSalary/pages/ledger/slideBaseForm.js | 454 +++++++---- .../hrmSalary/pages/ledger/slideRefereUser.js | 10 +- .../pages/ledger/step3/canMoveItem.js | 22 +- .../pages/taxAgent/addTaxAgentModal.js | 144 ++++ .../pages/taxAgent/editConditions.js | 65 ++ pc4mobx/hrmSalary/pages/taxAgent/editModal.js | 253 ++++-- pc4mobx/hrmSalary/pages/taxAgent/index.js | 590 +++++++++----- pc4mobx/hrmSalary/pages/taxAgent/index.less | 92 ++- .../hrmSalary/pages/taxAgent/personalScope.js | 218 +++++ .../pages/taxAgent/slideTaxagentUser.js | 201 +++++ pc4mobx/hrmSalary/stores/cumDeduct.js | 209 +++-- pc4mobx/hrmSalary/stores/cumSituation.js | 199 +++-- pc4mobx/hrmSalary/stores/ledger.js | 763 +++++++++--------- pc4mobx/hrmSalary/stores/otherDeduct.js | 207 +++-- pc4mobx/hrmSalary/stores/taxAgent.js | 206 ++--- 32 files changed, 5339 insertions(+), 2745 deletions(-) create mode 100644 pc4mobx/hrmSalary/pages/taxAgent/addTaxAgentModal.js create mode 100644 pc4mobx/hrmSalary/pages/taxAgent/editConditions.js create mode 100644 pc4mobx/hrmSalary/pages/taxAgent/personalScope.js create mode 100644 pc4mobx/hrmSalary/pages/taxAgent/slideTaxagentUser.js diff --git a/pc4mobx/hrmSalary/apis/cumDeduct.js b/pc4mobx/hrmSalary/apis/cumDeduct.js index 8e5dd048..be04bdad 100644 --- a/pc4mobx/hrmSalary/apis/cumDeduct.js +++ b/pc4mobx/hrmSalary/apis/cumDeduct.js @@ -1,85 +1,102 @@ -import { WeaTools } from 'ecCom'; +import { WeaTools } from "ecCom"; //数据采集-累计专项附加扣除列表 -export const getCumDeductList = params => { - return fetch('/api/bs/hrmsalary/addUpDeduction/list', { - method: 'POST', - mode: 'cors', - headers: { - 'Content-Type': 'application/json' - }, - body: JSON.stringify(params) - }).then(res => res.json()) -} +export const getCumDeductList = (params) => { + return fetch("/api/bs/hrmsalary/addUpDeduction/list", { + method: "POST", + mode: "cors", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify(params), + }).then((res) => res.json()); +}; //数据采集-累计专项附加扣除列表的高级搜索 -export const getCumDeductSaCondition = params => { - return WeaTools.callApi('/api/bs/hrmsalary/addUpDeduction/getSearchCondition', 'get', params); -} +export const getCumDeductSaCondition = (params) => { + return WeaTools.callApi( + "/api/bs/hrmsalary/addUpDeduction/getSearchCondition", + "get", + params + ); +}; //数据采集-累计专项附加扣除-导出 export const exportCumDeductList = (ids = "") => { - fetch('/api/bs/hrmsalary/addUpDeduction/export?ids=' + ids).then(res => res.blob().then(blob => { - var filename=`累计专项附加扣除.xlsx` - var a = document.createElement('a'); - var url = window.URL.createObjectURL(blob); - a.href = url; - a.download = filename; - a.click(); - window.URL.revokeObjectURL(url); - })) -} + fetch("/api/bs/hrmsalary/addUpDeduction/export?ids=" + ids).then((res) => + res.blob().then((blob) => { + var filename = `累计专项附加扣除.xlsx`; + var a = document.createElement("a"); + var url = window.URL.createObjectURL(blob); + a.href = url; + a.download = filename; + a.click(); + window.URL.revokeObjectURL(url); + }) + ); +}; //数据采集-累计专项附加扣除-获取导入参数 -export const getImportCumDeductParam = params => { - return WeaTools.callApi('/api/bs/hrmsalary/addUpDeduction/getImportParams', 'get', params); -} +export const getImportCumDeductParam = (params) => { + return WeaTools.callApi( + "/api/bs/hrmsalary/addUpDeduction/getImportParams", + "get", + params + ); +}; //数据采集-获取累计专项附加扣除记录 -export const getCumDeductDetailList = params => { - return fetch('/api/bs/hrmsalary/addUpDeduction/getDetailList', { - method: 'POST', - mode: 'cors', - headers: { - 'Content-Type': 'application/json' - }, - body: JSON.stringify(params) - }).then(res => res.json()) -} +export const getCumDeductDetailList = (params) => { + return fetch("/api/bs/hrmsalary/addUpDeduction/getDetailList", { + method: "POST", + mode: "cors", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify(params), + }).then((res) => res.json()); +}; //数据采集-累计专项附加扣除-导出明细 -export const exportCumDeductDetailList = (id, ids="") => { - fetch('/api/bs/hrmsalary/addUpDeduction/exportDetail?accumulatedSpecialAdditionalDeductionId='+id+'&ids=' + ids).then(res => res.blob().then(blob => { - var filename=`累计专项附加扣除.xlsx` - var a = document.createElement('a'); - var url = window.URL.createObjectURL(blob); - a.href = url; - a.download = filename; - a.click(); - window.URL.revokeObjectURL(url); - })) -} +export const exportCumDeductDetailList = (id, ids = "") => { + fetch( + "/api/bs/hrmsalary/addUpDeduction/exportDetail?accumulatedSpecialAdditionalDeductionId=" + + id + + "&ids=" + + ids + ).then((res) => + res.blob().then((blob) => { + var filename = `累计专项附加扣除.xlsx`; + var a = document.createElement("a"); + var url = window.URL.createObjectURL(blob); + a.href = url; + a.download = filename; + a.click(); + window.URL.revokeObjectURL(url); + }) + ); +}; // 数据采集-获取累计专项附加扣除-导入 -export const importCumDeductParam = params => { - return fetch('/api/bs/hrmsalary/addUpDeduction/importAddUpDeduction', { - method: 'POST', - mode: 'cors', - headers: { - 'Content-Type': 'application/json' - }, - body: JSON.stringify(params) - }).then(res => res.json()) -} +export const importCumDeductParam = (params) => { + return fetch("/api/bs/hrmsalary/addUpDeduction/importAddUpDeduction", { + method: "POST", + mode: "cors", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify(params), + }).then((res) => res.json()); +}; // 数据采集-获取累计专项附加扣除-导入预览 -export const importCumDeductPreview = params => { - return fetch('/api/bs/hrmsalary/addUpDeduction/preview', { - method: 'POST', - mode: 'cors', - headers: { - 'Content-Type': 'application/json' - }, - body: JSON.stringify(params) - }).then(res => res.json()) -} +export const importCumDeductPreview = (params) => { + return fetch("/api/bs/hrmsalary/addUpDeduction/preview", { + method: "POST", + mode: "cors", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify(params), + }).then((res) => res.json()); +}; diff --git a/pc4mobx/hrmSalary/apis/cumSituation.js b/pc4mobx/hrmSalary/apis/cumSituation.js index 3af18fe9..aef62744 100644 --- a/pc4mobx/hrmSalary/apis/cumSituation.js +++ b/pc4mobx/hrmSalary/apis/cumSituation.js @@ -1,85 +1,102 @@ -import { WeaTools } from 'ecCom'; +import { WeaTools } from "ecCom"; //数据采集-累计情况列表 -export const getCumSituationList = params => { - return fetch('/api/bs/hrmsalary/addUpSituation/list', { - method: 'POST', - mode: 'cors', - headers: { - 'Content-Type': 'application/json' - }, - body: JSON.stringify(params) - }).then(res => res.json()) -} +export const getCumSituationList = (params) => { + return fetch("/api/bs/hrmsalary/addUpSituation/list", { + method: "POST", + mode: "cors", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify(params), + }).then((res) => res.json()); +}; //数据采集-累计情况列表的高级搜索 -export const getCumSituationSaCondition = params => { - return WeaTools.callApi('/api/bs/hrmsalary/addUpSituation/getSearchCondition', 'get', params); -} +export const getCumSituationSaCondition = (params) => { + return WeaTools.callApi( + "/api/bs/hrmsalary/addUpSituation/getSearchCondition", + "get", + params + ); +}; //数据采集-累计情况-导出 -export const exportCumSituationList = ids => { - fetch('/api/bs/hrmsalary/addUpSituation/export?ids=' + ids).then(res => res.blob().then(blob => { - var filename=`往期累计情况(工资、薪金).xlsx` - var a = document.createElement('a'); - var url = window.URL.createObjectURL(blob); - a.href = url; - a.download = filename; - a.click(); - window.URL.revokeObjectURL(url); - })) -} +export const exportCumSituationList = (ids) => { + fetch("/api/bs/hrmsalary/addUpSituation/export?ids=" + ids).then((res) => + res.blob().then((blob) => { + var filename = `往期累计情况(工资、薪金).xlsx`; + var a = document.createElement("a"); + var url = window.URL.createObjectURL(blob); + a.href = url; + a.download = filename; + a.click(); + window.URL.revokeObjectURL(url); + }) + ); +}; //数据采集-累计情况-获取导入参数 -export const getImportCumSituationParam = params => { - return WeaTools.callApi('/api/bs/hrmsalary/addUpSituation/getImportParams', 'get', params); -} +export const getImportCumSituationParam = (params) => { + return WeaTools.callApi( + "/api/bs/hrmsalary/addUpSituation/getImportParams", + "get", + params + ); +}; //数据采集-获取累计情况记录 -export const getCumSituationDetailList = params => { - return fetch('/api/bs/hrmsalary/addUpSituation/getDetailList', { - method: 'POST', - mode: 'cors', - headers: { - 'Content-Type': 'application/json' - }, - body: JSON.stringify(params) - }).then(res => res.json()) -} +export const getCumSituationDetailList = (params) => { + return fetch("/api/bs/hrmsalary/addUpSituation/getDetailList", { + method: "POST", + mode: "cors", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify(params), + }).then((res) => res.json()); +}; //数据采集-累计情况-导出明细 -export const exportCumSituationDetailList = (id, ids="") => { - fetch('/api/bs/hrmsalary/addUpSituation/exportDetail?accumulatedSituationId='+id+'&ids=' + ids).then(res => res.blob().then(blob => { - var filename=`往期累计情况(工资、薪金).xlsx` - var a = document.createElement('a'); - var url = window.URL.createObjectURL(blob); - a.href = url; - a.download = filename; - a.click(); - window.URL.revokeObjectURL(url); - })) -} +export const exportCumSituationDetailList = (id, ids = "") => { + fetch( + "/api/bs/hrmsalary/addUpSituation/exportDetail?accumulatedSituationId=" + + id + + "&ids=" + + ids + ).then((res) => + res.blob().then((blob) => { + var filename = `往期累计情况(工资、薪金).xlsx`; + var a = document.createElement("a"); + var url = window.URL.createObjectURL(blob); + a.href = url; + a.download = filename; + a.click(); + window.URL.revokeObjectURL(url); + }) + ); +}; // 数据采集-累计情况-导入 -export const importCumSituationParam = params => { - return fetch('/api/bs/hrmsalary/addUpSituation/importAddUpSituation', { - method: 'POST', - mode: 'cors', - headers: { - 'Content-Type': 'application/json' - }, - body: JSON.stringify(params) - }).then(res => res.json()) -} +export const importCumSituationParam = (params) => { + return fetch("/api/bs/hrmsalary/addUpSituation/importAddUpSituation", { + method: "POST", + mode: "cors", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify(params), + }).then((res) => res.json()); +}; // 数据采集-累计情况-导入预览 -export const importCumSituationPreview = params => { - return fetch('/api/bs/hrmsalary/addUpSituation/preview', { - method: 'POST', - mode: 'cors', - headers: { - 'Content-Type': 'application/json' - }, - body: JSON.stringify(params) - }).then(res => res.json()) -} \ No newline at end of file +export const importCumSituationPreview = (params) => { + return fetch("/api/bs/hrmsalary/addUpSituation/preview", { + method: "POST", + mode: "cors", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify(params), + }).then((res) => res.json()); +}; diff --git a/pc4mobx/hrmSalary/apis/index.js b/pc4mobx/hrmSalary/apis/index.js index ad9e15d5..854c9bf6 100644 --- a/pc4mobx/hrmSalary/apis/index.js +++ b/pc4mobx/hrmSalary/apis/index.js @@ -1,22 +1,21 @@ -import { WeaTools } from 'ecCom'; +import { WeaTools } from "ecCom"; // form基础数据 -export const getBaseForm = params => { - return WeaTools.callApi('/api/demo01/getFormDemo', 'GET', params); +export const getBaseForm = (params) => { + return WeaTools.callApi("/api/demo01/getFormDemo", "GET", params); }; // form保存 -export const doSaveBaseSet = params => { - return WeaTools.callApi('/api/demo01/saveFormDemo', 'POST', params); +export const doSaveBaseSet = (params) => { + return WeaTools.callApi("/api/demo01/saveFormDemo", "POST", params); }; - // 获取高级搜索条件 -export const getCondition = params => { - return WeaTools.callApi('/api/demo03/weatableConditonDemo', 'GET', params); +export const getCondition = (params) => { + return WeaTools.callApi("/api/demo03/weatableConditonDemo", "GET", params); }; // 获取table数据 -export const getTableDatas = params => { - return WeaTools.callApi('/api/demo03/weatableDemo', 'GET', params); -}; \ No newline at end of file +export const getTableDatas = (params) => { + return WeaTools.callApi("/api/demo03/weatableDemo", "GET", params); +}; diff --git a/pc4mobx/hrmSalary/apis/otherDeduct.js b/pc4mobx/hrmSalary/apis/otherDeduct.js index 346b6c72..e74f7e66 100644 --- a/pc4mobx/hrmSalary/apis/otherDeduct.js +++ b/pc4mobx/hrmSalary/apis/otherDeduct.js @@ -1,88 +1,107 @@ -import { WeaTools } from 'ecCom'; - +import { WeaTools } from "ecCom"; //数据采集-其他免税扣除列表 -export const getOtherDeductList = params => { - return fetch('/api/bs/hrmsalary/otherDeduction/list', { - method: 'POST', - mode: 'cors', - headers: { - 'Content-Type': 'application/json' - }, - body: JSON.stringify(params) - }).then(res => res.json()) -} +export const getOtherDeductList = (params) => { + return fetch("/api/bs/hrmsalary/otherDeduction/list", { + method: "POST", + mode: "cors", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify(params), + }).then((res) => res.json()); +}; //数据采集-其他免税扣除列表的高级搜索 -export const getOtherDeductSaCondition = params => { - return WeaTools.callApi('/api/bs/hrmsalary/otherDeduction/getSearchCondition', 'get', params); -} +export const getOtherDeductSaCondition = (params) => { + return WeaTools.callApi( + "/api/bs/hrmsalary/otherDeduction/getSearchCondition", + "get", + params + ); +}; //数据采集-其他免税扣除-获取导入参数 -export const getImportOtherDeductParam = params => { - return WeaTools.callApi('/api/bs/hrmsalary/otherDeduction/getImportParams', 'get', params); -} +export const getImportOtherDeductParam = (params) => { + return WeaTools.callApi( + "/api/bs/hrmsalary/otherDeduction/getImportParams", + "get", + params + ); +}; //数据采集-其他免税扣除-导出 export const exportOtherDeductList = (ids = "") => { - fetch('/api/bs/hrmsalary/otherDeduction/export?ids=' + ids).then(res => res.blob().then(blob => { - var filename=`其他免税扣除.xlsx` - var a = document.createElement('a'); - var url = window.URL.createObjectURL(blob); - a.href = url; - a.download = filename; - a.click(); - window.URL.revokeObjectURL(url); - })) - return WeaTools.callApi('/api/bs/hrmsalary/otherDeduction/export', 'POST', params); -} + fetch("/api/bs/hrmsalary/otherDeduction/export?ids=" + ids).then((res) => + res.blob().then((blob) => { + var filename = `其他免税扣除.xlsx`; + var a = document.createElement("a"); + var url = window.URL.createObjectURL(blob); + a.href = url; + a.download = filename; + a.click(); + window.URL.revokeObjectURL(url); + }) + ); + return WeaTools.callApi( + "/api/bs/hrmsalary/otherDeduction/export", + "POST", + params + ); +}; //数据采集-获取其他免税扣除记录 -export const getOtherDeductDetailList = params => { - return fetch('/api/bs/hrmsalary/otherDeduction/getDetailList', { - method: 'POST', - mode: 'cors', - headers: { - 'Content-Type': 'application/json' - }, - body: JSON.stringify(params) - }).then(res => res.json()) -} +export const getOtherDeductDetailList = (params) => { + return fetch("/api/bs/hrmsalary/otherDeduction/getDetailList", { + method: "POST", + mode: "cors", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify(params), + }).then((res) => res.json()); +}; //数据采集-其他免税扣除-导出明细 export const exportOtherDeductDetailList = (id, ids) => { - fetch('/api/bs/hrmsalary/otherDeduction/exportDetail?otherTaxExemptDeductionId='+id+'&ids=' + ids).then(res => res.blob().then(blob => { - var filename=`其他免税扣除.xlsx` - var a = document.createElement('a'); - var url = window.URL.createObjectURL(blob); - a.href = url; - a.download = filename; - a.click(); - window.URL.revokeObjectURL(url); - })) -} + fetch( + "/api/bs/hrmsalary/otherDeduction/exportDetail?otherTaxExemptDeductionId=" + + id + + "&ids=" + + ids + ).then((res) => + res.blob().then((blob) => { + var filename = `其他免税扣除.xlsx`; + var a = document.createElement("a"); + var url = window.URL.createObjectURL(blob); + a.href = url; + a.download = filename; + a.click(); + window.URL.revokeObjectURL(url); + }) + ); +}; // 数据采集-其他免税扣除-导入 -export const importOtherDeductionParam = params => { - return fetch('/api/bs/hrmsalary/otherDeduction/importData', { - method: 'POST', - mode: 'cors', - headers: { - 'Content-Type': 'application/json' - }, - body: JSON.stringify(params) - }).then(res => res.json()) -} - +export const importOtherDeductionParam = (params) => { + return fetch("/api/bs/hrmsalary/otherDeduction/importData", { + method: "POST", + mode: "cors", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify(params), + }).then((res) => res.json()); +}; // 数据采集-其他免税扣除-导入预览 -export const importOtherDeductionPreview = params => { - return fetch('/api/bs/hrmsalary/otherDeduction/preview', { - method: 'POST', - mode: 'cors', - headers: { - 'Content-Type': 'application/json' - }, - body: JSON.stringify(params) - }).then(res => res.json()) -} +export const importOtherDeductionPreview = (params) => { + return fetch("/api/bs/hrmsalary/otherDeduction/preview", { + method: "POST", + mode: "cors", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify(params), + }).then((res) => res.json()); +}; diff --git a/pc4mobx/hrmSalary/apis/taxAgent.js b/pc4mobx/hrmSalary/apis/taxAgent.js index 3b2fda39..09dc15fa 100644 --- a/pc4mobx/hrmSalary/apis/taxAgent.js +++ b/pc4mobx/hrmSalary/apis/taxAgent.js @@ -1,41 +1,86 @@ -import { WeaTools } from 'ecCom'; -import { formPost } from '../util/request'; - +import { WeaTools } from "ecCom"; +import { formPost, postFetch } from "../util/request"; //个税扣缴义务人列表 -export const getTaxAgentList = params => { - return WeaTools.callApi('/api/bs/hrmsalary/taxAgent/list', 'GET', params); -} +export const getTaxAgentList = (params) => { + return fetch("/api/bs/hrmsalary/taxAgent/list", { + method: "POST", + mode: "cors", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify(params), + }).then((res) => res.json()); +}; + +// 系统管理员权限 +export const getPermission = (params) => { + return WeaTools.callApi( + "/api/bs/hrmsalary/taxAgent/permission", + "GET", + params + ); +}; //获取个税扣缴义务人表单 -export const getTaxAgentForm = params => { - return WeaTools.callApi('/api/bs/hrmsalary/taxAgent/getForm', 'get', params); -} +export const getTaxAgentForm = (params) => { + return WeaTools.callApi("/api/bs/hrmsalary/taxAgent/getForm", "get", params); +}; + +//获取个税扣缴义务人基础信息表单 +export const getTaxAgentBaseForm = (params) => { + return WeaTools.callApi( + "/api/bs/hrmsalary/taxAgent/base/getForm", + "get", + params + ); +}; //新建个税扣缴义务人 -export const saveTaxAgent = params => { - return formPost('/api/bs/hrmsalary/taxAgent/save', params) - // return WeaTools.callApi('/api/bs/hrmsalary/taxAgent/save', 'POST', params); -} +export const saveTaxAgent = (params) => { + return postFetch("/api/bs/hrmsalary/taxAgent/save", params); +}; //编辑个税扣缴义务人 -export const updateTaxAgent = params => { - return formPost('/api/bs/hrmsalary/taxAgent/update', params) -} +export const updateTaxAgent = (params) => { + return postFetch("/api/bs/hrmsalary/taxAgent/update", params); +}; +//保存个税扣缴义务人基础信息 +export const taxAgentBaseSave = (params) => { + return postFetch("/api/bs/hrmsalary/taxAgent/base/save", params); +}; //删除个税扣缴义务人 -export const deleteTaxAgent = params => { - return fetch('/api/bs/hrmsalary/taxAgent/delete', { - method: 'POST', - mode: 'cors', - headers: { - 'Content-Type': 'application/json' - }, - body: JSON.stringify(params) - }).then(res => res.json()) -} +export const deleteTaxAgent = (params) => { + return postFetch("/api/bs/hrmsalary/taxAgent/delete", params); +}; + +//人员范围保存 +export const taxAgentRangeSave = (params) => { + return postFetch("/api/bs/hrmsalary/taxAgent/range/save", params); +}; +//人员范围删除 +export const taxAgentRangeDelete = (params) => { + return postFetch("/api/bs/hrmsalary/taxAgent/range/delete", params); +}; +//人员范围列表 +export const getTaxAgentRangeListInclude = (params) => { + return postFetch("/api/bs/hrmsalary/taxAgent/range/listInclude", params); +}; +//人员范围排除列表 +export const getTaxAgentRangeListExclude = (params) => { + return postFetch("/api/bs/hrmsalary/taxAgent/range/listExclude", params); +}; +//获取人员范围表单 +export const getTaxAgentRangeForm = (params) => { + return postFetch("/api/bs/hrmsalary/taxAgent/range/getForm", params); +}; //个税扣缴义务人下拉列表 -export const getTaxAgentSelectList = params => { - return WeaTools.callApi('/api/bs/hrmsalary/taxAgent/selectList', 'GET', params); -} \ No newline at end of file +export const getTaxAgentSelectList = (params) => { + return WeaTools.callApi( + "/api/bs/hrmsalary/taxAgent/selectList", + "GET", + params + ); +}; diff --git a/pc4mobx/hrmSalary/pages/dataAcquisition/cumDeduct/editSlideContent.js b/pc4mobx/hrmSalary/pages/dataAcquisition/cumDeduct/editSlideContent.js index 3774fa18..6618d60b 100644 --- a/pc4mobx/hrmSalary/pages/dataAcquisition/cumDeduct/editSlideContent.js +++ b/pc4mobx/hrmSalary/pages/dataAcquisition/cumDeduct/editSlideContent.js @@ -1,153 +1,217 @@ -import React from 'react'; -import { Row, Col, Table, DatePicker } from "antd" -import { inject, observer } from 'mobx-react'; -import { WeaInput, WeaTextarea, WeaSearchGroup, WeaSelect } from "ecCom"; -import { slideColumns} from './columns'; -import "./editSlideContent.less" -import { WeaTableNew } from "comsMobx" -const WeaTable = WeaTableNew.WeaTable; -import moment from 'moment' +import React from "react"; +import { Row, Col, Table, DatePicker } from "antd"; +import { inject, observer } from "mobx-react"; +import { + WeaInput, + WeaTextarea, + WeaSearchGroup, + WeaSelect, + WeaTable, +} from "ecCom"; +import "./editSlideContent.less"; +import moment from "moment"; const { MonthPicker } = DatePicker; - let emptyItem = { - incomeLowerLimit: "0.00", - incomeUpperLimit: "0.00", - dutyFreeValue: "0.00", - dutyFreeRate: "0.00", - taxableIncomeLl: "0.00", - taxableIncomeUl: "0.00", - taxRate: "0.00", - taxDeduction: "0.00" -} + incomeLowerLimit: "0.00", + incomeUpperLimit: "0.00", + dutyFreeValue: "0.00", + dutyFreeRate: "0.00", + taxableIncomeLl: "0.00", + taxableIncomeUl: "0.00", + taxRate: "0.00", + taxDeduction: "0.00", +}; -@inject('cumDeductStore', "taxAgentStore") +@inject("cumDeductStore", "taxAgentStore") @observer export default class EditSlideContent extends React.Component { + constructor(props) { + super(props); + this.state = { + taxAgentId: "", + startDate: "", + endDate: "", + editable: + this.props.editable === undefined ? "true" : this.props.editable, + }; + } - constructor(props) { - super(props); - this.state = { - taxAgentId: "", - startDate: "", - endDate: "", - editable: this.props.editable === undefined ? "true": this.props.editable - } + componentWillMount() { + // 初始化渲染页面 + const { + taxAgentStore: { fetchTaxAgentOption }, + } = this.props; + fetchTaxAgentOption(); + } + + addItem() { + const { + taxRateStore: { setDataSource }, + } = this.props; + let dataSource = [...this.props.taxRateStore.dataSource]; + let indexNum = 1; + if (dataSource.length > 0) { + indexNum = dataSource[dataSource.length - 1].indexNum + 1; + } + let item = { ...emptyItem }; + item.indexNum = indexNum; + dataSource.push(item); + setDataSource(dataSource); + } + + fetchCumDeductDetailList(param) { + const { cumDeductStore } = this.props; + const { getCumDeductDetailList, currentRecord } = cumDeductStore; + getCumDeductDetailList(currentRecord.id, param); + } + + // 日期格式变化加载数据 + handleFetchCumDeductDetailList(startDate, endDate, taxAgentId) { + let declareMonth = []; + if (startDate != "" && startDate != undefined) { + declareMonth.push(startDate); } - componentWillMount() { // 初始化渲染页面 - const { taxAgentStore: { fetchTaxAgentOption } } = this.props; - fetchTaxAgentOption(); + if (endDate != "" && endDate != undefined) { + declareMonth.push(endDate); } - - addItem() { - const { taxRateStore: {setDataSource}} = this.props; - let dataSource = [...this.props.taxRateStore.dataSource]; - let indexNum = 1; - if(dataSource.length > 0) { - indexNum = dataSource[dataSource.length - 1].indexNum + 1 - } - let item = {...emptyItem} - item.indexNum = indexNum - dataSource.push(item); - setDataSource(dataSource) + let item = { + taxAgentId: taxAgentId, + }; + if (declareMonth.length != 0) { + item.declareMonth = declareMonth; } + this.fetchCumDeductDetailList(item); + } - fetchCumDeductDetailList(param) { - const { cumDeductStore} = this.props; - const { getCumDeductDetailList, currentRecord } = cumDeductStore; - getCumDeductDetailList(currentRecord.id, param); - } + onSelectChange = (val) => { + const { onChangeSlideSelectKey } = this.props; + onChangeSlideSelectKey && onChangeSlideSelectKey(val); + }; - // 日期格式变化加载数据 - handleFetchCumDeductDetailList(startDate, endDate, taxAgentId) { - let declareMonth = [] - if(startDate != "" && startDate != undefined) { - declareMonth.push(startDate); - } + render() { + const { + taxAgentStore: { taxAgentOption }, + } = this.props; + const { cumDeductStore } = this.props; + const { + slideTableStore, + currentRecord, + slideColumns, + slidePageObj, + slideTableDataSource, + setSlidePageObj, + slideLoading, + } = cumDeductStore; + const { startDate, endDate, taxAgentId } = this.state; - if(endDate != "" && endDate != undefined) { - declareMonth.push(endDate); - } - let item = { - taxAgentId: taxAgentId - } - if(declareMonth.length != 0) { - item.declareMonth = declareMonth - } - this.fetchCumDeductDetailList(item) - } + const pagination = { + total: slidePageObj.total, + showTotal: (total) => `共 ${total} 条`, + showSizeChanger: true, + onShowSizeChange(current, pageSize) { + setSlidePageObj({ ...slidePageObj, current, pageSize }); + }, + onChange(current) { + setSlidePageObj({ + ...slidePageObj, + current, + pageSize: slidePageObj.pageSize, + }); + }, + }; + const newColumns = _.map([...slideColumns], (item) => { + if (item.dataIndex === "declareMonth") { + return { + ...item, + width: 120, + fixed: "left", + }; + } else { + return { ...item }; + } + }); + const rowSelection = { + selectedRowKeys: this.props.slideSelectedKey, + onChange: this.onSelectChange, + }; + return ( +
+ + + {currentRecord.username} + + + 申报月份 +
+
+ { + let startDate = ""; + if (v != "" && v != undefined) { + startDate = moment(v).format("YYYY-MM"); + } + this.setState({ startDate }); + this.handleFetchCumDeductDetailList( + startDate, + endDate, + taxAgentId + ); + }} + /> +
+ +
+ { + let endDate = ""; + if (v != "" && v != undefined) { + endDate = moment(v).format("YYYY-MM"); + } + this.setState({ endDate }); + this.handleFetchCumDeductDetailList( + startDate, + endDate, + taxAgentId + ); + }} + /> +
+
+ + + 个税扣缴义务人 + { + this.setState({ taxAgentId: v }); + this.handleFetchCumDeductDetailList(startDate, endDate, v); + }} + /> + +
- - render() { - const { taxAgentStore: {taxAgentOption}} = this.props; - const { cumDeductStore } = this.props; - const { slideTableStore, currentRecord } = cumDeductStore; - const { startDate, endDate, taxAgentId } = this.state; - return ( -
- - - {currentRecord.username} - - - 申报月份 -
-
- { - let startDate = ""; - if(v != "" && v!= undefined) { - startDate = moment(v).format("YYYY-MM") - } - this.setState({startDate}) - this.handleFetchCumDeductDetailList(startDate, endDate, taxAgentId) - }} - /> -
- - 至 - -
- { - let endDate = "" - if(v != "" && v!= undefined) { - endDate = moment(v).format("YYYY-MM") - } - this.setState({endDate}) - this.handleFetchCumDeductDetailList(startDate, endDate, taxAgentId) - }} - /> -
-
- - - 个税扣缴义务人 - { - this.setState({taxAgentId: v}) - this.handleFetchCumDeductDetailList(startDate, endDate, v) - }} - /> - -
- -
- -
-
- ) - } -} \ No newline at end of file +
+ +
+
+ ); + } +} diff --git a/pc4mobx/hrmSalary/pages/dataAcquisition/cumDeduct/index.js b/pc4mobx/hrmSalary/pages/dataAcquisition/cumDeduct/index.js index f88551b2..c4afce66 100644 --- a/pc4mobx/hrmSalary/pages/dataAcquisition/cumDeduct/index.js +++ b/pc4mobx/hrmSalary/pages/dataAcquisition/cumDeduct/index.js @@ -1,63 +1,73 @@ -import React from 'react'; -import { inject, observer } from 'mobx-react'; -import { toJS } from 'mobx'; - -import { Button, Table, DatePicker, Dropdown, Menu, Modal, message, Row, Col } from 'antd'; - -import { WeaTop, WeaTab, WeaRightMenu, WeaRangePicker, WeaDatePicker, WeaSelect, WeaHelpfulTip, WeaSlideModal } from 'ecCom'; -import { WeaTableNew } from "comsMobx" -import moment from 'moment'; - -const WeaTable = WeaTableNew.WeaTable; - -import { renderNoright, getSearchs } from '../../../util'; // 渲染form数据的方法:因为多个页面都会使用,所以抽的公共方法在util中 -import CustomTab from '../../../components/customTab'; -import ContentWrapper from '../../../components/contentWrapper'; -import ImportModal from '../../../components/importModal' -import { columns, dataSource, modalColumns } from './columns'; +import React from "react"; +import { inject, observer } from "mobx-react"; +import { toJS } from "mobx"; +import { Button, DatePicker, Dropdown, Menu, message, Row, Col } from "antd"; +import { + WeaTop, + WeaTab, + WeaRightMenu, + WeaDatePicker, + WeaSelect, + WeaHelpfulTip, + WeaSlideModal, + WeaTable, +} from "ecCom"; +import moment from "moment"; +import { renderNoright, getSearchs } from "../../../util"; // 渲染form数据的方法:因为多个页面都会使用,所以抽的公共方法在util中 +import CustomTab from "../../../components/customTab"; +import ContentWrapper from "../../../components/contentWrapper"; +import ImportModal from "../../../components/importModal"; +import { modalColumns } from "./columns"; const { MonthPicker } = DatePicker; -import "./index.less" +import "./index.less"; -import SlideModalTitle from '../../../components/slideModalTitle'; -import EditSlideContent from './editSlideContent'; +import SlideModalTitle from "../../../components/slideModalTitle"; +import EditSlideContent from "./editSlideContent"; - -@inject('cumDeductStore', "taxAgentStore") +@inject("cumDeductStore", "taxAgentStore") @observer export default class CumDeduct extends React.Component { constructor(props) { super(props); this.state = { value: "", - selectedKey: "0", + selectedKey: [], + slideSelectedKey: [], //详情表格的选中项 visiable: false, - monthValue: moment(new Date()).format("YYYY-MM"), + monthValue: "", taxAgentId: "", datetime: "", inited: false, modalParam: { declareMonth: "", - taxAgentId: "" - } - } + taxAgentId: "", + }, + }; } - componentWillMount() { // 初始化渲染页面 - const { cumDeductStore: { doInit }, taxAgentStore: { fetchTaxAgentOption } } = this.props; + componentWillMount() { + // 初始化渲染页面 + const { + cumDeductStore: { doInit }, + taxAgentStore: { fetchTaxAgentOption }, + } = this.props; doInit(); - fetchTaxAgentOption().then(() => { + fetchTaxAgentOption().then((res) => { this.setState({ - inited: true - }) - }) + inited: true, + }); + }); } getSearchsAdQuick() { const { monthValue, taxAgentId } = this.state; - const { taxAgentStore: { taxAgentOption }, cumDeductStore: {form, getTableDatas} } = this.props; + const { + taxAgentStore: { taxAgentOption }, + cumDeductStore: { form, getTableDatas }, + } = this.props; return (
@@ -66,9 +76,9 @@ export default class CumDeduct extends React.Component { value={monthValue} format="YYYY-MM" width={200} - onChange={v => { - this.setState({monthValue: v}) - getTableDatas({declareMonth: [v], taxAgentId}) + onChange={(v) => { + this.setState({ monthValue: v }); + getTableDatas({ declareMonth: v && [v], taxAgentId }); }} />
@@ -83,206 +93,364 @@ export default class CumDeduct extends React.Component {
个税扣缴义务人: - - { - this.state.inited && { - this.setState({taxAgentId: v}) - getTableDatas({taxAgentId: v, declareMonth: [monthValue]}) + onChange={(v) => { + this.setState({ taxAgentId: v }); + getTableDatas({ + taxAgentId: v, + declareMonth: monthValue && [monthValue], + }); }} /> - } + )}
- ) + ); } renderFormComponent() { - const { modalParam } = this.state - const { taxAgentStore: {taxAgentOption} } = this.props; + const { modalParam } = this.state; + const { + taxAgentStore: { taxAgentOption }, + } = this.props; return ( - - - 税款所属期 - this.setState({ modalParam: {...modalParam, declareMonth: value} })} - /> - - - 个税扣缴义务人 - { - this.setState({ modalParam: {...modalParam, taxAgentId: v} }); - }} - /> - - - ) -} + + + + 税款所属期 + + + this.setState({ + modalParam: { ...modalParam, declareMonth: value }, + }) + } + /> + + + + 个税扣缴义务人 + + { + this.setState({ modalParam: { ...modalParam, taxAgentId: v } }); + }} + /> + + + ); + } onEdit = (record) => { - const { cumDeductStore: { slideVisiable, setSlideVisiable, getCumDeductDetailList, setCurrentRecord } } = this.props; - setSlideVisiable(true) - setCurrentRecord(record) + const { + cumDeductStore: { + slideVisiable, + setSlideVisiable, + getCumDeductDetailList, + setCurrentRecord, + }, + } = this.props; + setSlideVisiable(true); + setCurrentRecord(record); getCumDeductDetailList(record.id); - } + }; // 增加编辑功能,重写columns绑定事件 getColumns = (columns) => { - let newColumns = ''; - newColumns = columns.map(column => { + let newColumns = ""; + newColumns = columns.map((column) => { let newColumn = column; - newColumn.render = (text, record, index) => { //前端元素转义 - let valueSpan = record[newColumn.dataIndex + "span"] !== undefined ? record[newColumn.dataIndex + "span"] : record[newColumn.dataIndex]; - switch(newColumn.dataIndex) { + newColumn.render = (text, record, index) => { + //前端元素转义 + let valueSpan = + record[newColumn.dataIndex + "span"] !== undefined + ? record[newColumn.dataIndex + "span"] + : record[newColumn.dataIndex]; + switch (newColumn.dataIndex) { case "username": - return {this.onEdit(record)}} - >{text} + return ( + { + this.onEdit(record); + }}> + {text} + + ); case "operate": - return {this.onEdit(record)}}>查看明细 + return ( + { + this.onEdit(record); + }}> + 查看明细 + + ); default: - return
+ return
; } - } + }; return newColumn; }); - console.log("newColumns:", newColumns) + console.log("newColumns:", newColumns); return newColumns; - } + }; handleCancel() { const { cumDeductStore } = this.props; - const { modalVisiable, setModalVisiable, setStep } = cumDeductStore + const { modalVisiable, setModalVisiable, setStep } = cumDeductStore; setModalVisiable(false); setStep(0); } - onOperatesClick = (record, index, operate, flag) => { - switch(operate.index.toString()){ - case '0': // 查看明细 + switch (operate.index.toString()) { + case "0": // 查看明细 this.onEdit(record); break; } }; - showColumn = () => { - const { cumDeductStore: { tableStore } } = this.props; + const { + cumDeductStore: { tableStore }, + } = this.props; tableStore.setColSetVisible(true); tableStore.tableColSet(true); - } + }; // 初始化导入参数 handleInitModal() { - const { cumDeductStore: { setSlideDataSource, setImportResult }} = this.props; - setSlideDataSource([]) - setImportResult({}) + const { + cumDeductStore: { setSlideDataSource, setImportResult }, + } = this.props; + setSlideDataSource([]); + setImportResult({}); } + onSelectChange = (val) => { + this.setState({ + selectedKey: val, + }); + }; + render() { - const { modalParam } = this.state; + const { modalParam, slideSelectedKey, monthValue, taxAgentId } = this.state; const { cumDeductStore, taxAgentStore } = this.props; - const { loading, hasRight, form, condition, tableStore, showSearchAd, getTableDatas, doSearch, setShowSearchAd, previewImport, importFile } = cumDeductStore; - const { taxAgentOption } = taxAgentStore - const { slideVisiable, setSlideVisiable, modalVisiable, setModalVisiable, slideTableStore, step, setStep, slideDataSource, importResult } = cumDeductStore - const selectedRowKeys = toJS(tableStore.selectedRowKeys) || []; + const { + loading, + dataSource, + columns, + pageObj, + hasRight, + form, + condition, + tableStore, + showSearchAd, + getTableDatas, + doSearch, + setShowSearchAd, + previewImport, + importFile, + } = cumDeductStore; + const { taxAgentOption } = taxAgentStore; + const { + slideVisiable, + setSlideVisiable, + modalVisiable, + setModalVisiable, + slideTableStore, + step, + setStep, + slideDataSource, + importResult, + setPageObj, + } = cumDeductStore; + const selectedRowKeys = toJS(tableStore.selectedRowKeys) || []; const detailSelectedRowKeys = toJS(slideTableStore.selectedRowKeys) || []; - if (!hasRight && !loading) { // 无权限处理 + if (!hasRight && !loading) { + // 无权限处理 return renderNoright(); } - const rightMenu = [// 右键菜单 - { - key: 'BTN_COLUMN', - icon: , - content: '显示列定制', - onClick: this.showColumn - }, + const rightMenu = [ + // 右键菜单 + // { + // key: "BTN_COLUMN", + // icon: , + // content: "显示列定制", + // onClick: this.showColumn, + // }, ]; - const adBtn = [ // 高级搜索内部按钮 - , - , - , + const adBtn = [ + // 高级搜索内部按钮 + , + , + , ]; - const topTab = [ - ]; + const topTab = []; const renderSearchOperationItem = () => { - return
- } + return
; + }; const handleButtonClick = () => { - const { cumDeductStore: {exportCumDeductList}} = this.props; + const { + cumDeductStore: { exportCumDeductList }, + } = this.props; exportCumDeductList(); - } + }; const handleMenuClick = () => { - if(selectedRowKeys.length == 0) { - message.warning("未选择条目") - return + if (this.state.selectedKey.length == 0) { + message.warning("未选择条目"); + return; } - const { cumDeductStore: { exportCumDeductList } } = this.props; - exportCumDeductList(selectedRowKeys.join(",")) - } + const { + cumDeductStore: { exportCumDeductList }, + } = this.props; + exportCumDeductList(this.state.selectedKey.join(",")); + }; const handleBtnImport = () => { - const { cumDeductStore: { setModalVisiable, setStep } } = this.props; + const { + cumDeductStore: { setModalVisiable, setStep }, + } = this.props; setStep(0); - setModalVisiable(true) - } - - + setModalVisiable(true); + }; const btns = [ - , - - 导出选中 - - } type="ghost"> + , + + 导出选中 + + } + type="ghost"> 导出全部 - - ] + , + ]; const handleExportAllDetailClick = () => { - const {cumDeductStore: {exportCumDeductDetailList, currentRecord} } =this.props; + const { + cumDeductStore: { exportCumDeductDetailList, currentRecord }, + } = this.props; exportCumDeductDetailList(currentRecord.id); - } + }; const handleExportSelectedDetailClick = () => { - if(detailSelectedRowKeys.length == 0) { - message.warning("未选择条目") - return + if (this.state.slideSelectedKey.length == 0) { + message.warning("未选择条目"); + return; } - const { cumDeductStore: { exportCumDeductDetailList, currentRecord } } = this.props; - exportCumDeductDetailList(currentRecord.id, detailSelectedRowKeys.join(",")) - } + const { + cumDeductStore: { exportCumDeductDetailList, currentRecord }, + } = this.props; + exportCumDeductDetailList( + currentRecord.id, + this.state.slideSelectedKey.join(",") + ); + }; const renderBtns = () => { return ( - - 导出选中 - - } type="ghost"> + + 导出选中 + + } + type="ghost"> 导出全部 - - ) - } + + ); + }; + const pagination = { + total: pageObj.total, + showTotal: (total) => `共 ${total} 条`, + showSizeChanger: true, + onShowSizeChange(current, pageSize) { + setPageObj({ ...pageObj, current, pageSize }); + }, + onChange(current) { + setPageObj({ ...pageObj, current, pageSize: pageObj.pageSize }); + }, + }; + const rowSelection = { + selectedRowKeys: this.state.selectedKey, + onChange: this.onSelectChange, + }; + const newColumns = _.map([...columns], (item) => { + if (item.dataIndex === "username") { + return { + ...item, + width: 100, + fixed: "left", + render: (text, record) => ( +
+ this.onEdit(record)}> + {text} + +
+ ), + }; + } else if (item.dataIndex === "taxAgentName") { + return { + ...item, + width: 180, + fixed: "left", + }; + } else if (item.dataIndex === "operate") { + return { + ...item, + width: 100, + fixed: "right", + render: (text, record) => ( +
+ this.onEdit(record)}> + 查看明细 + +
+ ), + }; + } else { + return { ...item }; + } + }); return (
@@ -291,39 +459,44 @@ export default class CumDeduct extends React.Component { > } // 左侧图标 - iconBgcolor='#F14A2D' // 左侧图标背景色 + icon={} // 左侧图标 + iconBgcolor="#F14A2D" // 左侧图标背景色 showDropIcon={true} // 是否显示下拉按钮 dropMenuDatas={rightMenu} // 下拉菜单(和页面的右键菜单相同) - buttons={btns} - > - + buttons={btns}>
setShowSearchAd(bool)} //高级搜索面板受控 + setShowSearchAd={(bool) => setShowSearchAd(bool)} //高级搜索面板受控 searchsAd={getSearchs(form, toJS(condition), 2)} // 高级搜索内部数据 buttonsAd={adBtn} // 高级搜索内部按钮 - onSearch={getTableDatas} // 点搜索按钮时的回调 + onSearch={() => + getTableDatas({ + taxAgentId, + declareMonth: monthValue && [monthValue], + }) + } // 点搜索按钮时的回调 searchsAdQuick={this.getSearchsAdQuick()} - onSearchChange={v => form.updateFields({ username: v })} // 在搜索框中输入的文字改变时的回调: 这里需要同步高级搜索和外部搜索框的值 + onSearchChange={(v) => form.updateFields({ username: v })} // 在搜索框中输入的文字改变时的回调: 这里需要同步高级搜索和外部搜索框的值 searchsBaseValue={form.getFormParams().username} // 外部input搜索值受控: 这里和高级搜索的requestname同步 />
-
- { - modalVisiable && { - this.handleInitModal() + this.handleInitModal(); }} params={modalParam} columns={modalColumns} @@ -331,40 +504,59 @@ export default class CumDeduct extends React.Component { setStep={setStep} slideDataSource={slideDataSource} importResult={importResult} - onFinish={() => {setModalVisiable(false); setStep(0); doSearch();}} - previewImport={(params) => {previewImport(params)}} - importFile={(params) => {importFile(params)}} + onFinish={() => { + setModalVisiable(false); + setStep(0); + doSearch(); + }} + previewImport={(params) => { + previewImport(params); + }} + importFile={(params) => { + importFile(params); + }} templateLink={"/api/bs/hrmsalary/addUpDeduction/downloadTemplate"} - renderFormComponent={() => this.renderFormComponent()} - visiable={modalVisiable} - onCancel={() => { this.handleCancel() }} - /> - } - - { - slideVisiable && {this.state.currentOperate == "add" ? doSave() : doUpdate()}} - editable={false} - btns={ - renderBtns() - } - /> - } - content={()} - onClose={() => setSlideVisiable(false)} - showMask={true} - closeMaskOnClick={() => setSlideVisiable(false)} /> - } + renderFormComponent={() => this.renderFormComponent()} + visiable={modalVisiable} + onCancel={() => { + this.handleCancel(); + }} + /> + )} + + {slideVisiable && ( + { + this.state.currentOperate == "add" ? doSave() : doUpdate(); + }} + editable={false} + btns={renderBtns()} + /> + } + content={ + + this.setState({ slideSelectedKey: val }) + } + /> + } + onClose={() => setSlideVisiable(false)} + showMask={true} + closeMaskOnClick={() => setSlideVisiable(false)} + /> + )}
- ) + ); } } diff --git a/pc4mobx/hrmSalary/pages/dataAcquisition/cumDeduct/index.less b/pc4mobx/hrmSalary/pages/dataAcquisition/cumDeduct/index.less index 9663398d..ef51e77f 100644 --- a/pc4mobx/hrmSalary/pages/dataAcquisition/cumDeduct/index.less +++ b/pc4mobx/hrmSalary/pages/dataAcquisition/cumDeduct/index.less @@ -1,31 +1,47 @@ .cumDeductWrapper { - .weaTabWrapper { - position: relative; - .searchConditionWrapper { - width: 600px; - margin-left: 10px; - margin-top: 8px; - } - .searchConditionItem { - float: left; - } - .conditionFormLabel { - margin-right: 10px; - } - .helperWrapper { - float: left; - margin-left: 10px; - margin-right: 10px; - margin-top: 6px; - } + .weaTabWrapper { + position: relative; + + .searchConditionWrapper { + width: 600px; + margin-left: 10px; + margin-top: 8px; } - .wea-tab-search-ad-quick { - .wea-tab-right-search-ad-quick { - margin-top: 0px; - } - .wea-search-container-search-ad-quick { - top: 46px; - } + .searchConditionItem { + float: left; } + + .conditionFormLabel { + margin-right: 10px; + } + + .helperWrapper { + float: left; + margin-left: 10px; + margin-right: 10px; + margin-top: 6px; + } + } + + .wea-tab-search-ad-quick { + .wea-tab-right-search-ad-quick { + margin-top: 0px; + } + + .wea-search-container-search-ad-quick { + top: 46px; + } + } + + .linkWapper { + a { + color: #4d7ad8; + } + + a:hover { + text-decoration: none; + } + } + } \ No newline at end of file diff --git a/pc4mobx/hrmSalary/pages/dataAcquisition/cumSituation/editSlideContent.js b/pc4mobx/hrmSalary/pages/dataAcquisition/cumSituation/editSlideContent.js index 2fe86804..863f5cdc 100644 --- a/pc4mobx/hrmSalary/pages/dataAcquisition/cumSituation/editSlideContent.js +++ b/pc4mobx/hrmSalary/pages/dataAcquisition/cumSituation/editSlideContent.js @@ -1,156 +1,222 @@ -import React from 'react'; -import { Row, Col, Table, DatePicker } from "antd" -import { inject, observer } from 'mobx-react'; -import { WeaInput, WeaTextarea, WeaSearchGroup, WeaSelect } from "ecCom"; -import { slideColumns} from './columns'; -import "./editSlideContent.less" -import { WeaTableNew } from "comsMobx" -const WeaTable = WeaTableNew.WeaTable; -import moment from 'moment' +import React from "react"; +import { Row, Col, Table, DatePicker } from "antd"; +import { inject, observer } from "mobx-react"; +import { + WeaInput, + WeaTextarea, + WeaSearchGroup, + WeaSelect, + WeaTable, +} from "ecCom"; +import { slideColumns } from "./columns"; +import "./editSlideContent.less"; +import moment from "moment"; const { MonthPicker } = DatePicker; - let emptyItem = { - incomeLowerLimit: "0.00", - incomeUpperLimit: "0.00", - dutyFreeValue: "0.00", - dutyFreeRate: "0.00", - taxableIncomeLl: "0.00", - taxableIncomeUl: "0.00", - taxRate: "0.00", - taxDeduction: "0.00" -} + incomeLowerLimit: "0.00", + incomeUpperLimit: "0.00", + dutyFreeValue: "0.00", + dutyFreeRate: "0.00", + taxableIncomeLl: "0.00", + taxableIncomeUl: "0.00", + taxRate: "0.00", + taxDeduction: "0.00", +}; -@inject('cumSituationStore', "taxAgentStore") +@inject("cumSituationStore", "taxAgentStore") @observer export default class EditSlideContent extends React.Component { - constructor(props) { - super(props); - this.state = { - taxAgentId: "", - startDate: "", - endDate: "", - editable: this.props.editable === undefined ? "true": this.props.editable - } + constructor(props) { + super(props); + this.state = { + taxAgentId: "", + startDate: "", + endDate: "", + editable: + this.props.editable === undefined ? "true" : this.props.editable, + }; + } + + componentWillMount() { + // 初始化渲染页面 + const { + taxAgentStore: { fetchTaxAgentOption }, + } = this.props; + fetchTaxAgentOption(); + } + + addItem() { + const { + taxRateStore: { setDataSource }, + } = this.props; + let dataSource = [...this.props.taxRateStore.dataSource]; + let indexNum = 1; + if (dataSource.length > 0) { + indexNum = dataSource[dataSource.length - 1].indexNum + 1; + } + let item = { ...emptyItem }; + item.indexNum = indexNum; + dataSource.push(item); + setDataSource(dataSource); + } + + fetchCumDeductDetailList(param) { + const { cumSituationStore } = this.props; + const { getCumDeductDetailList, currentRecord } = cumSituationStore; + getCumDeductDetailList(currentRecord.id, param); + } + + // 日期格式变化加载数据 + handleFetchCumDeductDetailList(startDate, endDate, taxAgentId) { + let declareMonth = []; + if (startDate != "" && startDate != undefined) { + declareMonth.push(startDate); } - componentWillMount() { // 初始化渲染页面 - const { taxAgentStore: { fetchTaxAgentOption } } = this.props; - fetchTaxAgentOption(); + if (endDate != "" && endDate != undefined) { + declareMonth.push(endDate); } - - addItem() { - const { taxRateStore: {setDataSource}} = this.props; - let dataSource = [...this.props.taxRateStore.dataSource]; - let indexNum = 1; - if(dataSource.length > 0) { - indexNum = dataSource[dataSource.length - 1].indexNum + 1 - } - let item = {...emptyItem} - item.indexNum = indexNum - dataSource.push(item); - setDataSource(dataSource) + let item = { + taxAgentId: taxAgentId, + }; + if (declareMonth.length != 0) { + item.taxYearMonth = declareMonth; } + this.fetchCumDeductDetailList(item); + } - fetchCumDeductDetailList(param) { - const { cumSituationStore} = this.props; - const { getCumDeductDetailList, currentRecord } = cumSituationStore; - getCumDeductDetailList(currentRecord.id, param); - } + onSelectChange = (val) => { + const { onChangeSlideSelectKey } = this.props; + onChangeSlideSelectKey && onChangeSlideSelectKey(val); + }; + render() { + const { + taxAgentStore: { taxAgentOption }, + } = this.props; + const { cumSituationStore } = this.props; + const { + slideTableStore, + currentRecord, + slideColumns, + slidePageObj, + slideTableDataSource, + setSlidePageObj, + slideLoading, + } = cumSituationStore; + const { startDate, endDate, taxAgentId } = this.state; - // 日期格式变化加载数据 - handleFetchCumDeductDetailList(startDate, endDate, taxAgentId) { - let declareMonth = [] - if(startDate != "" && startDate != undefined) { - declareMonth.push(startDate); - } + const pagination = { + total: slidePageObj.total, + showTotal: (total) => `共 ${total} 条`, + showSizeChanger: true, + onShowSizeChange(current, pageSize) { + setSlidePageObj({ ...slidePageObj, current, pageSize }); + }, + onChange(current) { + setSlidePageObj({ + ...slidePageObj, + current, + pageSize: slidePageObj.pageSize, + }); + }, + }; + const newColumns = _.map([...slideColumns], (item) => { + if (item.dataIndex === "declareMonth") { + return { + ...item, + width: 120, + fixed: "left", + }; + } else { + return { ...item }; + } + }); + const rowSelection = { + selectedRowKeys: this.props.slideSelectedKey, + onChange: this.onSelectChange, + }; + return ( +
+ + + {currentRecord.username} + + + 申报月份 +
+
+ { + let startDate = ""; + if (v != "" && v != undefined) { + startDate = moment(v).format("YYYY-MM"); + } + this.setState({ startDate }); + this.handleFetchCumDeductDetailList( + startDate, + endDate, + taxAgentId + ); + }} + /> +
+ +
+ { + let endDate = ""; + if (v != "" && v != undefined) { + endDate = moment(v).format("YYYY-MM"); + } + this.setState({ endDate }); + this.handleFetchCumDeductDetailList( + startDate, + endDate, + taxAgentId + ); + }} + /> +
+
+ + + 个税扣缴义务人 + { + this.setState({ taxAgentId: v }); + this.fetchCumDeductDetailList({ + declareMonth: [startDate, endDate], + taxAgentId: v, + }); + }} + /> + +
- if(endDate != "" && endDate != undefined) { - declareMonth.push(endDate); - } - let item = { - taxAgentId: taxAgentId - } - if(declareMonth.length != 0) { - item.taxYearMonth = declareMonth - } - this.fetchCumDeductDetailList(item) - } - - - render() { - const { taxAgentStore: {taxAgentOption}} = this.props; - const { cumSituationStore } = this.props; - const { slideTableStore, currentRecord } = cumSituationStore; - const { startDate, endDate, taxAgentId } = this.state; - return ( -
- - - {currentRecord.username} - - - 申报月份 -
-
- { - let startDate = ""; - if(v != "" && v!= undefined) { - startDate = moment(v).format("YYYY-MM") - } - this.setState({startDate}) - this.handleFetchCumDeductDetailList(startDate, endDate, taxAgentId) - }} - /> -
- - 至 - -
- { - let endDate = "" - if(v != "" && v!= undefined) { - endDate = moment(v).format("YYYY-MM") - } - this.setState({endDate}) - this.handleFetchCumDeductDetailList(startDate, endDate, taxAgentId) - }} - /> -
-
- - - 个税扣缴义务人 - { - this.setState({taxAgentId: v}) - this.fetchCumDeductDetailList({ - declareMonth: [startDate, endDate], - taxAgentId: v - }) - }} - /> - -
- -
- -
-
- ) - } -} \ No newline at end of file +
+ +
+
+ ); + } +} diff --git a/pc4mobx/hrmSalary/pages/dataAcquisition/cumSituation/index.js b/pc4mobx/hrmSalary/pages/dataAcquisition/cumSituation/index.js index 80fda3d4..5a61ce1c 100644 --- a/pc4mobx/hrmSalary/pages/dataAcquisition/cumSituation/index.js +++ b/pc4mobx/hrmSalary/pages/dataAcquisition/cumSituation/index.js @@ -1,61 +1,84 @@ -import React from 'react'; -import { inject, observer } from 'mobx-react'; -import { toJS } from 'mobx'; +import React from "react"; +import { inject, observer } from "mobx-react"; +import { toJS } from "mobx"; -import { Button, Table, DatePicker, Dropdown, Menu, Modal, message, Row, Col } from 'antd'; +import { + Button, + Table, + DatePicker, + Dropdown, + Menu, + Modal, + message, + Row, + Col, +} from "antd"; -import { WeaTop, WeaTab, WeaRightMenu, WeaRangePicker, WeaDatePicker, WeaSelect, WeaHelpfulTip, WeaSlideModal } from 'ecCom'; -import { WeaTableNew } from "comsMobx" -import moment from 'moment'; - -const WeaTable = WeaTableNew.WeaTable; - -import { renderNoright, getSearchs } from '../../../util'; // 渲染form数据的方法:因为多个页面都会使用,所以抽的公共方法在util中 -import CustomTab from '../../../components/customTab'; -import ContentWrapper from '../../../components/contentWrapper'; -import ImportModal from '../../../components/importModal' -import { columns, dataSource, modalColumns } from './columns'; +import { + WeaTop, + WeaTab, + WeaRightMenu, + WeaRangePicker, + WeaDatePicker, + WeaSelect, + WeaHelpfulTip, + WeaSlideModal, + WeaTable, +} from "ecCom"; +import moment from "moment"; +import { renderNoright, getSearchs } from "../../../util"; // 渲染form数据的方法:因为多个页面都会使用,所以抽的公共方法在util中 +import CustomTab from "../../../components/customTab"; +import ContentWrapper from "../../../components/contentWrapper"; +import ImportModal from "../../../components/importModal"; +import { modalColumns } from "./columns"; const { MonthPicker } = DatePicker; -import "./index.less" +import "./index.less"; -import SlideModalTitle from '../../../components/slideModalTitle'; -import EditSlideContent from './editSlideContent'; +import SlideModalTitle from "../../../components/slideModalTitle"; +import EditSlideContent from "./editSlideContent"; - -@inject('cumSituationStore', "taxAgentStore") +@inject("cumSituationStore", "taxAgentStore") @observer export default class CumSituation extends React.Component { constructor(props) { super(props); this.state = { value: "", - selectedKey: "0", + selectedKey: [], + slideSelectedKey: [], //详情表格的选中项 visiable: false, inited: false, - monthValue: moment(new Date()).format("YYYY-MM"), + monthValue: "", taxAgentId: "", modalParam: { taxYearMonth: "", - } - } + }, + }; } - componentWillMount() { // 初始化渲染页面 - const { cumSituationStore: { doInit }, taxAgentStore: { fetchTaxAgentOption } } = this.props; + componentWillMount() { + // 初始化渲染页面 + const { + cumSituationStore: { doInit }, + taxAgentStore: { fetchTaxAgentOption }, + } = this.props; doInit(); fetchTaxAgentOption().then(() => { this.setState({ - inited: true - }) - }) + inited: true, + }); + }); } getSearchsAdQuick() { const { monthValue, taxAgentId } = this.state; - const { taxAgentStore: { taxAgentOption }, cumSituationStore: {form, getTableDatas} } = this.props; + const { + taxAgentStore: { taxAgentOption }, + cumSituationStore: { form, getTableDatas }, + } = this.props; return (
@@ -64,9 +87,9 @@ export default class CumSituation extends React.Component { value={monthValue} format="YYYY-MM" width={200} - onChange={v => { - this.setState({monthValue: v}) - getTableDatas({ taxYearMonth: [v], taxAgentId }) + onChange={(v) => { + this.setState({ monthValue: v }); + getTableDatas({ taxYearMonth: v && [v], taxAgentId }); }} />
@@ -81,203 +104,354 @@ export default class CumSituation extends React.Component {
个税扣缴义务人: - { - this.state.inited && { - this.setState({taxAgentId: v}) - getTableDatas({ taxAgentId: v, taxYearMonth: [monthValue]}) + onChange={(v) => { + this.setState({ taxAgentId: v }); + getTableDatas({ + taxAgentId: v, + taxYearMonth: monthValue && [monthValue], + }); }} /> - } + )}
- ) + ); } - renderFormComponent() { - const { modalParam } = this.state - const { taxAgentStore: {taxAgentOption} } = this.props; + const { modalParam } = this.state; + const { + taxAgentStore: { taxAgentOption }, + } = this.props; return ( - - - 税款所属期 - this.setState({ modalParam: {taxYearMonth: value} })} - /> - - - ) + + + + 税款所属期 + + + this.setState({ modalParam: { taxYearMonth: value } }) + } + /> + + + ); } onEdit = (record) => { - const { cumSituationStore: { slideVisiable, setSlideVisiable, getCumDeductDetailList, setCurrentRecord } } = this.props; - setSlideVisiable(true) - setCurrentRecord(record) + const { + cumSituationStore: { + slideVisiable, + setSlideVisiable, + getCumDeductDetailList, + setCurrentRecord, + }, + } = this.props; + setSlideVisiable(true); + setCurrentRecord(record); getCumDeductDetailList(record.id); - } + }; // 增加编辑功能,重写columns绑定事件 getColumns = (columns) => { let newColumns = []; - if(!columns) { - return [] + if (!columns) { + return []; } - newColumns = columns.map(column => { + newColumns = columns.map((column) => { let newColumn = column; - newColumn.render = (text, record, index) => { //前端元素转义 - let valueSpan = record[newColumn.dataIndex + "span"] !== undefined ? record[newColumn.dataIndex + "span"] : record[newColumn.dataIndex]; - switch(newColumn.dataIndex) { + newColumn.render = (text, record, index) => { + //前端元素转义 + let valueSpan = + record[newColumn.dataIndex + "span"] !== undefined + ? record[newColumn.dataIndex + "span"] + : record[newColumn.dataIndex]; + switch (newColumn.dataIndex) { case "username": - return {this.onEdit(record)}} - dangerouslySetInnerHTML={{ __html: valueSpan }} /> + return ( + { + this.onEdit(record); + }} + dangerouslySetInnerHTML={{ __html: valueSpan }} + /> + ); case "operate": - return {this.onEdit(record)}}>查看明细 + return ( + { + this.onEdit(record); + }}> + 查看明细 + + ); default: - return
+ return
; } - } + }; return newColumn; }); - console.log("newColumns: ", newColumns); return newColumns; - } - + }; handleCancel() { const { cumSituationStore } = this.props; - const { modalVisiable, setModalVisiable, setStep } = cumSituationStore + const { modalVisiable, setModalVisiable, setStep } = cumSituationStore; setModalVisiable(false); setStep(0); } - onOperatesClick = (record, index, operate, flag) => { - switch(operate.index.toString()){ - case '0': // 查看明细 + switch (operate.index.toString()) { + case "0": // 查看明细 this.onEdit(record); break; } }; showColumn = () => { - const { cumSituationStore: { tableStore } } = this.props; + const { + cumSituationStore: { tableStore }, + } = this.props; tableStore.setColSetVisible(true); tableStore.tableColSet(true); - } + }; // 导入参数初始化 handleInitImport = () => { - const { cumSituationStore: { setSlideDataSource, setImportResult } } = this.props; - setSlideDataSource([]) - setImportResult({}) - } + const { + cumSituationStore: { setSlideDataSource, setImportResult }, + } = this.props; + setSlideDataSource([]); + setImportResult({}); + }; + + onSelectChange = (val) => { + this.setState({ + selectedKey: val, + }); + }; render() { - const { cumSituationStore, taxAgentStore } = this.props; - const { loading, hasRight, form, condition, tableStore, showSearchAd, getTableDatas, doSearch, setShowSearchAd, previewImport, importFile } = cumSituationStore; - const { taxAgentOption } = taxAgentStore - const { slideVisiable, setSlideVisiable, modalVisiable, setModalVisiable, slideTableStore, step, setStep, slideDataSource, importResult } = cumSituationStore - const selectedRowKeys = toJS(tableStore.selectedRowKeys) || []; - const { modalParam } = this.state; + const { cumSituationStore, taxAgentStore, slideSelectedKey } = this.props; + const { + loading, + dataSource, + columns, + pageObj, + hasRight, + form, + condition, + tableStore, + showSearchAd, + getTableDatas, + doSearch, + setShowSearchAd, + previewImport, + importFile, + } = cumSituationStore; + const { taxAgentOption } = taxAgentStore; + const { + slideVisiable, + setSlideVisiable, + modalVisiable, + setModalVisiable, + slideTableStore, + step, + setStep, + slideDataSource, + importResult, + setPageObj, + } = cumSituationStore; + const selectedRowKeys = toJS(tableStore.selectedRowKeys) || []; + const { modalParam, monthValue, taxAgentId } = this.state; const detailSelectedRowKeys = toJS(slideTableStore.selectedRowKeys) || []; - if (!hasRight && !loading) { // 无权限处理 + if (!hasRight && !loading) { + // 无权限处理 return renderNoright(); } - const rightMenu = [// 右键菜单 - { - key: 'BTN_COLUMN', - icon: , - content: '显示列定制', - onClick: this.showColumn - }, + const rightMenu = [ + // 右键菜单 + // { + // key: "BTN_COLUMN", + // icon: , + // content: "显示列定制", + // onClick: this.showColumn, + // }, ]; - const collectParams = { // 收藏功能配置 - favname: '往期累计情况(工资、薪金)', + const collectParams = { + // 收藏功能配置 + favname: "往期累计情况(工资、薪金)", favouritetype: 1, objid: 0, - link: 'wui/index.html#/ns_demo03/index', + link: "wui/index.html#/ns_demo03/index", importantlevel: 1, }; - const adBtn = [ // 高级搜索内部按钮 - , - , - , + const adBtn = [ + // 高级搜索内部按钮 + , + , + , ]; - const topTab = [ - ]; + const topTab = []; const renderSearchOperationItem = () => { - return
- } + return
; + }; const handleButtonClick = () => { - const { cumSituationStore: {exportCumDeductList}} = this.props; + const { + cumSituationStore: { exportCumDeductList }, + } = this.props; exportCumDeductList(); - } + }; const handleMenuClick = () => { - if(selectedRowKeys.length == 0) { - message.warning("未选择条目") - return + if (selectedRowKeys.length == 0) { + message.warning("未选择条目"); + return; } - const { cumSituationStore: { exportCumDeductList } } = this.props; - exportCumDeductList(selectedRowKeys.join(",")) - } + const { + cumSituationStore: { exportCumDeductList }, + } = this.props; + exportCumDeductList(selectedRowKeys.join(",")); + }; const handleBtnImport = () => { - const { cumSituationStore: { setModalVisiable, setStep } } = this.props; + const { + cumSituationStore: { setModalVisiable, setStep }, + } = this.props; setStep(0); - setModalVisiable(true) - } - - + setModalVisiable(true); + }; const btns = [ - , - - 导出选中 - - } type="ghost"> + , + + 导出选中 + + } + type="ghost"> 导出全部 - - ] + , + ]; const handleExportAllDetailClick = () => { - const {cumSituationStore: {exportCumSituationDetailList, currentRecord} } =this.props; + const { + cumSituationStore: { exportCumSituationDetailList, currentRecord }, + } = this.props; exportCumSituationDetailList(currentRecord.id); - } + }; const handleExportSelectedDetailClick = () => { - if(detailSelectedRowKeys.length == 0) { - message.warning("未选择条目") - return + if (this.state.slideSelectedKey.length == 0) { + message.warning("未选择条目"); + return; } - const { cumSituationStore: { exportCumSituationDetailList, currentRecord } } = this.props; - exportCumSituationDetailList(currentRecord.id, detailSelectedRowKeys.join(",")) - } + const { + cumSituationStore: { exportCumSituationDetailList, currentRecord }, + } = this.props; + exportCumSituationDetailList( + currentRecord.id, + this.state.slideSelectedKey.join(",") + ); + }; const renderBtns = () => { return ( - - 导出选中 - - } type="ghost"> + + 导出选中 + + } + type="ghost"> 导出全部 - - ) - } + + ); + }; + const pagination = { + total: pageObj.total, + showTotal: (total) => `共 ${total} 条`, + showSizeChanger: true, + onShowSizeChange(current, pageSize) { + setPageObj({ ...pageObj, current, pageSize }); + }, + onChange(current) { + setPageObj({ ...pageObj, current, pageSize: pageObj.pageSize }); + }, + }; + const rowSelection = { + selectedRowKeys: this.state.selectedKey, + onChange: this.onSelectChange, + }; + const newColumns = _.map([...columns], (item) => { + if (item.dataIndex === "username") { + return { + ...item, + width: 100, + fixed: "left", + render: (text, record) => ( + + ), + }; + } else if (item.dataIndex === "taxAgentName") { + return { + ...item, + width: 180, + fixed: "left", + }; + } else if (item.dataIndex === "operate") { + return { + ...item, + width: 100, + fixed: "right", + render: (text, record) => ( + + ), + }; + } else { + return { ...item, width: 150 }; + } + }); return (
@@ -286,80 +460,104 @@ export default class CumSituation extends React.Component { > } // 左侧图标 - iconBgcolor='#F14A2D' // 左侧图标背景色 + icon={} // 左侧图标 + iconBgcolor="#F14A2D" // 左侧图标背景色 showDropIcon={true} // 是否显示下拉按钮 dropMenuDatas={rightMenu} // 下拉菜单(和页面的右键菜单相同) dropMenuProps={{ collectParams }} // 收藏功能: 配置之后显示 收藏、帮助、显示页面地址 这3个功能 - buttons={btns} - > - + buttons={btns}>
setShowSearchAd(bool)} //高级搜索面板受控 + setShowSearchAd={(bool) => setShowSearchAd(bool)} //高级搜索面板受控 searchsAd={getSearchs(form, toJS(condition), 2)} // 高级搜索内部数据 buttonsAd={adBtn} // 高级搜索内部按钮 - onSearch={getTableDatas} // 点搜索按钮时的回调 + onSearch={() => + getTableDatas({ + taxAgentId, + declareMonth: monthValue && [monthValue], + }) + } // 点搜索按钮时的回调 searchsAdQuick={this.getSearchsAdQuick()} - onSearchChange={v => form.updateFields({ username: v })} // 在搜索框中输入的文字改变时的回调: 这里需要同步高级搜索和外部搜索框的值 + onSearchChange={(v) => form.updateFields({ username: v })} // 在搜索框中输入的文字改变时的回调: 这里需要同步高级搜索和外部搜索框的值 searchsBaseValue={form.getFormParams().username} // 外部input搜索值受控: 这里和高级搜索的requestname同步 />
-
- { - modalVisiable && { - this.handleInitImport() + this.handleInitImport(); }} templateLink={"/api/bs/hrmsalary/addUpSituation/downloadTemplate"} params={modalParam} columns={modalColumns} step={step} setStep={setStep} - onFinish={() => {setModalVisiable(false); setStep(0); doSearch();}} + onFinish={() => { + setModalVisiable(false); + setStep(0); + doSearch(); + }} slideDataSource={slideDataSource} importResult={importResult} - previewImport={(params) => {previewImport(params)}} - importFile={(params) => {importFile(params)}} - renderFormComponent={() => this.renderFormComponent()} - visiable={modalVisiable} - onCancel={() => { this.handleCancel() }} /> - } - { - slideVisiable && {this.state.currentOperate == "add" ? doSave() : doUpdate()}} - editable={false} - btns={ - renderBtns() - } - /> - } - content={()} - onClose={() => setSlideVisiable(false)} - showMask={true} - closeMaskOnClick={() => setSlideVisiable(false)} /> - } + previewImport={(params) => { + previewImport(params); + }} + importFile={(params) => { + importFile(params); + }} + renderFormComponent={() => this.renderFormComponent()} + visiable={modalVisiable} + onCancel={() => { + this.handleCancel(); + }} + /> + )} + {slideVisiable && ( + { + this.state.currentOperate == "add" ? doSave() : doUpdate(); + }} + editable={false} + btns={renderBtns()} + /> + } + content={ + + this.setState({ slideSelectedKey: val }) + } + /> + } + onClose={() => setSlideVisiable(false)} + showMask={true} + closeMaskOnClick={() => setSlideVisiable(false)} + /> + )}
- ) + ); } } diff --git a/pc4mobx/hrmSalary/pages/dataAcquisition/otherDeduct/editSlideContent.js b/pc4mobx/hrmSalary/pages/dataAcquisition/otherDeduct/editSlideContent.js index 58f3ca02..15cfaf74 100644 --- a/pc4mobx/hrmSalary/pages/dataAcquisition/otherDeduct/editSlideContent.js +++ b/pc4mobx/hrmSalary/pages/dataAcquisition/otherDeduct/editSlideContent.js @@ -1,153 +1,218 @@ -import React from 'react'; -import { Row, Col, Table, DatePicker } from "antd" -import { inject, observer } from 'mobx-react'; -import { WeaInput, WeaTextarea, WeaSearchGroup, WeaSelect } from "ecCom"; -import { slideColumns} from './columns'; -import "./editSlideContent.less" -import { WeaTableNew } from "comsMobx" -const WeaTable = WeaTableNew.WeaTable; -import moment from 'moment' +import React from "react"; +import { Row, Col, Table, DatePicker } from "antd"; +import { inject, observer } from "mobx-react"; +import { + WeaInput, + WeaTextarea, + WeaSearchGroup, + WeaSelect, + WeaTable, +} from "ecCom"; +import "./editSlideContent.less"; +import moment from "moment"; const { MonthPicker } = DatePicker; - let emptyItem = { - incomeLowerLimit: "0.00", - incomeUpperLimit: "0.00", - dutyFreeValue: "0.00", - dutyFreeRate: "0.00", - taxableIncomeLl: "0.00", - taxableIncomeUl: "0.00", - taxRate: "0.00", - taxDeduction: "0.00" -} + incomeLowerLimit: "0.00", + incomeUpperLimit: "0.00", + dutyFreeValue: "0.00", + dutyFreeRate: "0.00", + taxableIncomeLl: "0.00", + taxableIncomeUl: "0.00", + taxRate: "0.00", + taxDeduction: "0.00", +}; -@inject('otherDeductStore', "taxAgentStore") +@inject("otherDeductStore", "taxAgentStore") @observer export default class EditSlideContent extends React.Component { + constructor(props) { + super(props); + this.state = { + taxAgentId: "", + startDate: "", + endDate: "", + editable: + this.props.editable === undefined ? "true" : this.props.editable, + }; + } - constructor(props) { - super(props); - this.state = { - taxAgentId: "", - startDate: "", - endDate: "", - editable: this.props.editable === undefined ? "true": this.props.editable - } + componentWillMount() { + // 初始化渲染页面 + const { + taxAgentStore: { fetchTaxAgentOption }, + } = this.props; + fetchTaxAgentOption(); + } + + addItem() { + const { + taxRateStore: { setDataSource }, + } = this.props; + let dataSource = [...this.props.taxRateStore.dataSource]; + let indexNum = 1; + if (dataSource.length > 0) { + indexNum = dataSource[dataSource.length - 1].indexNum + 1; + } + let item = { ...emptyItem }; + item.indexNum = indexNum; + dataSource.push(item); + setDataSource(dataSource); + } + + fetchCumDeductDetailList(param) { + const { otherDeductStore } = this.props; + const { getOtherDeductDetailList, currentRecord } = otherDeductStore; + getOtherDeductDetailList(currentRecord.id, param); + } + + // 日期格式变化加载数据 + handleFetchCumDeductDetailList(startDate, endDate, taxAgentId) { + let declareMonth = []; + if (startDate != "" && startDate != undefined) { + declareMonth.push(startDate); } - componentWillMount() { // 初始化渲染页面 - const { taxAgentStore: { fetchTaxAgentOption } } = this.props; - fetchTaxAgentOption(); + if (endDate != "" && endDate != undefined) { + declareMonth.push(endDate); } - - addItem() { - const { taxRateStore: {setDataSource}} = this.props; - let dataSource = [...this.props.taxRateStore.dataSource]; - let indexNum = 1; - if(dataSource.length > 0) { - indexNum = dataSource[dataSource.length - 1].indexNum + 1 - } - let item = {...emptyItem} - item.indexNum = indexNum - dataSource.push(item); - setDataSource(dataSource) + let item = { + taxAgentId: taxAgentId, + }; + if (declareMonth.length != 0) { + item.declareMonth = declareMonth; } + this.fetchCumDeductDetailList(item); + } - fetchCumDeductDetailList(param) { - const { otherDeductStore} = this.props; - const { getOtherDeductDetailList, currentRecord } = otherDeductStore; - getOtherDeductDetailList(currentRecord.id, param); - } + onSelectChange = (val) => { + const { onChangeSlideSelectKey } = this.props; + onChangeSlideSelectKey && onChangeSlideSelectKey(val); + }; - // 日期格式变化加载数据 - handleFetchCumDeductDetailList(startDate, endDate, taxAgentId) { - let declareMonth = [] - if(startDate != "" && startDate != undefined) { - declareMonth.push(startDate); - } + render() { + const { + taxAgentStore: { taxAgentOption }, + } = this.props; + const { otherDeductStore } = this.props; + const { + slideTableStore, + currentRecord, + slideColumns, + slidePageObj, + slideTableDataSource, + setSlidePageObj, + slideLoading, + } = otherDeductStore; + const { startDate, endDate, taxAgentId } = this.state; - if(endDate != "" && endDate != undefined) { - declareMonth.push(endDate); - } - let item = { - taxAgentId: taxAgentId - } - if(declareMonth.length != 0) { - item.declareMonth = declareMonth - } - this.fetchCumDeductDetailList(item) - } + const pagination = { + total: slidePageObj.total, + showTotal: (total) => `共 ${total} 条`, + showSizeChanger: true, + onShowSizeChange(current, pageSize) { + setSlidePageObj({ ...slidePageObj, current, pageSize }); + }, + onChange(current) { + setSlidePageObj({ + ...slidePageObj, + current, + pageSize: slidePageObj.pageSize, + }); + }, + }; + const newColumns = _.map([...slideColumns], (item) => { + if (item.dataIndex === "declareMonth") { + return { + ...item, + width: 120, + fixed: "left", + }; + } else { + return { ...item }; + } + }); + const rowSelection = { + selectedRowKeys: this.props.slideSelectedKey, + onChange: this.onSelectChange, + }; + return ( +
+ + + {currentRecord.username} + + + 申报月份 +
+
+ { + let startDate = ""; + if (v != "" && v != undefined) { + startDate = moment(v).format("YYYY-MM"); + } + this.setState({ startDate }); + this.handleFetchCumDeductDetailList( + startDate, + endDate, + taxAgentId + ); + }} + /> +
+ +
+ { + let endDate = ""; + if (v != "" && v != undefined) { + endDate = moment(v).format("YYYY-MM"); + } + this.setState({ endDate }); + this.handleFetchCumDeductDetailList( + startDate, + endDate, + taxAgentId + ); + }} + /> +
+
+ + + 个税扣缴义务人 + { + this.setState({ taxAgentId: v }); + this.handleFetchCumDeductDetailList(startDate, endDate, v); + }} + /> + +
- - render() { - const { taxAgentStore: {taxAgentOption}} = this.props; - const { otherDeductStore } = this.props; - const { slideTableStore, currentRecord } = otherDeductStore; - const { startDate, endDate, taxAgentId } = this.state; - return ( -
- - - {currentRecord.username} - - - 申报月份 -
-
- { - let startDate = ""; - if(v != "" && v!= undefined) { - startDate = moment(v).format("YYYY-MM") - } - this.setState({startDate}) - this.handleFetchCumDeductDetailList(startDate, endDate, taxAgentId) - }} - /> -
- - 至 - -
- { - let endDate = "" - if(v != "" && v!= undefined) { - endDate = moment(v).format("YYYY-MM") - } - this.setState({endDate}) - this.handleFetchCumDeductDetailList(startDate, endDate, taxAgentId) - }} - /> -
-
- - - 个税扣缴义务人 - { - this.setState({taxAgentId: v}) - this.handleFetchCumDeductDetailList(startDate, endDate, v) - }} - /> - -
- -
- -
-
- ) - } -} \ No newline at end of file +
+ +
+
+ ); + } +} diff --git a/pc4mobx/hrmSalary/pages/dataAcquisition/otherDeduct/index.js b/pc4mobx/hrmSalary/pages/dataAcquisition/otherDeduct/index.js index e1958e8c..b053cf46 100644 --- a/pc4mobx/hrmSalary/pages/dataAcquisition/otherDeduct/index.js +++ b/pc4mobx/hrmSalary/pages/dataAcquisition/otherDeduct/index.js @@ -1,61 +1,81 @@ -import React from 'react'; -import { inject, observer } from 'mobx-react'; -import { toJS } from 'mobx'; - -import { Button, Table, DatePicker, Dropdown, Menu, Modal, message, Row, Col } from 'antd'; - -import { WeaTop, WeaTab, WeaRightMenu, WeaRangePicker, WeaDatePicker, WeaSelect, WeaHelpfulTip, WeaSlideModal } from 'ecCom'; -import { WeaTableNew } from "comsMobx" -import moment from 'moment'; - -const WeaTable = WeaTableNew.WeaTable; - -import { renderNoright, getSearchs } from '../../../util'; // 渲染form数据的方法:因为多个页面都会使用,所以抽的公共方法在util中 -import CustomTab from '../../../components/customTab'; -import ContentWrapper from '../../../components/contentWrapper'; -import ImportModal from '../../../components/importModal' -import { columns, dataSource, modalColumns } from './columns'; - +import React from "react"; +import { inject, observer } from "mobx-react"; +import { toJS } from "mobx"; +import { + Button, + Table, + DatePicker, + Dropdown, + Menu, + Modal, + message, + Row, + Col, +} from "antd"; +import { + WeaTop, + WeaTab, + WeaRightMenu, + WeaRangePicker, + WeaDatePicker, + WeaSelect, + WeaHelpfulTip, + WeaSlideModal, + WeaTable, +} from "ecCom"; +import moment from "moment"; +import { renderNoright, getSearchs } from "../../../util"; // 渲染form数据的方法:因为多个页面都会使用,所以抽的公共方法在util中 +import CustomTab from "../../../components/customTab"; +import ContentWrapper from "../../../components/contentWrapper"; +import ImportModal from "../../../components/importModal"; +import { modalColumns } from "./columns"; const { MonthPicker } = DatePicker; -import "./index.less" +import "./index.less"; -import SlideModalTitle from '../../../components/slideModalTitle'; -import EditSlideContent from './editSlideContent'; +import SlideModalTitle from "../../../components/slideModalTitle"; +import EditSlideContent from "./editSlideContent"; - -@inject('otherDeductStore', "taxAgentStore") +@inject("otherDeductStore", "taxAgentStore") @observer export default class OtherDeduct extends React.Component { constructor(props) { super(props); this.state = { value: "", - selectedKey: "0", + selectedKey: [], + slideSelectedKey: [], //详情表格的选中项 visiable: false, - monthValue: moment(new Date()).format("YYYY-MM"), + monthValue: "", taxAgentId: "", inited: false, modalParam: { declareMonth: "", - } - } + }, + }; } - componentWillMount() { // 初始化渲染页面 - const { otherDeductStore: { doInit }, taxAgentStore: { fetchTaxAgentOption } } = this.props; + componentWillMount() { + // 初始化渲染页面 + const { + otherDeductStore: { doInit }, + taxAgentStore: { fetchTaxAgentOption }, + } = this.props; doInit(); fetchTaxAgentOption().then(() => { this.setState({ - inited: true - }) - }) + inited: true, + }); + }); } getSearchsAdQuick() { const { monthValue, taxAgentId } = this.state; - const { taxAgentStore: { taxAgentOption }, otherDeductStore: {form, getTableDatas} } = this.props; + const { + taxAgentStore: { taxAgentOption }, + otherDeductStore: { form, getTableDatas }, + } = this.props; return (
@@ -64,9 +84,9 @@ export default class OtherDeduct extends React.Component { value={monthValue} format="YYYY-MM" width={200} - onChange={v => { - this.setState({monthValue: v}) - getTableDatas({ declareMonth: [v], taxAgentId }) + onChange={(v) => { + this.setState({ monthValue: v }); + getTableDatas({ declareMonth: v && [v], taxAgentId }); }} />
@@ -81,199 +101,353 @@ export default class OtherDeduct extends React.Component {
个税扣缴义务人: - { - this.state.inited && { - this.setState({taxAgentId: v}) - getTableDatas({ taxAgentId: v, declareMonth: [monthValue]}) + onChange={(v) => { + this.setState({ taxAgentId: v }); + getTableDatas({ + taxAgentId: v, + declareMonth: monthValue && [monthValue], + }); }} /> - } + )}
- ) + ); } onEdit = (record) => { - const { otherDeductStore: { slideVisiable, setSlideVisiable, getOtherDeductDetailList, setCurrentRecord } } = this.props; - setSlideVisiable(true) - setCurrentRecord(record) + const { + otherDeductStore: { + slideVisiable, + setSlideVisiable, + getOtherDeductDetailList, + setCurrentRecord, + }, + } = this.props; + setSlideVisiable(true); + setCurrentRecord(record); getOtherDeductDetailList(record.id); - } + }; // 增加编辑功能,重写columns绑定事件 getColumns = (columns) => { - let newColumns = ''; - newColumns = columns.map(column => { + let newColumns = ""; + newColumns = columns.map((column) => { let newColumn = column; - newColumn.render = (text, record, index) => { //前端元素转义 - let valueSpan = record[newColumn.dataIndex + "span"] !== undefined ? record[newColumn.dataIndex + "span"] : record[newColumn.dataIndex]; - switch(newColumn.dataIndex) { + newColumn.render = (text, record, index) => { + //前端元素转义 + let valueSpan = + record[newColumn.dataIndex + "span"] !== undefined + ? record[newColumn.dataIndex + "span"] + : record[newColumn.dataIndex]; + switch (newColumn.dataIndex) { case "username": - return {this.onEdit(record)}} - dangerouslySetInnerHTML={{ __html: valueSpan }} /> + return ( + { + this.onEdit(record); + }} + dangerouslySetInnerHTML={{ __html: valueSpan }} + /> + ); case "operate": - return {this.onEdit(record)}}>查看明细 + return ( + { + this.onEdit(record); + }}> + 查看明细 + + ); default: - return
+ return
; } - } + }; return newColumn; }); return newColumns; - } + }; handleCancel() { const { otherDeductStore } = this.props; - const { modalVisiable, setModalVisiable, setStep } = otherDeductStore + const { modalVisiable, setModalVisiable, setStep } = otherDeductStore; setModalVisiable(false); setStep(0); } - onOperatesClick = (record, index, operate, flag) => { - switch(operate.index.toString()){ - case '0': // 查看明细 + switch (operate.index.toString()) { + case "0": // 查看明细 this.onEdit(record); break; } }; renderFormComponent() { - const { modalParam } = this.state - const { taxAgentStore: {taxAgentOption} } = this.props; + const { modalParam } = this.state; + const { + taxAgentStore: { taxAgentOption }, + } = this.props; return ( - - - 税款所属期 - this.setState({ modalParam: {declareMonth: value} })} - /> - - - - ) + + + + 税款所属期 + + + this.setState({ modalParam: { declareMonth: value } }) + } + /> + + + ); } showColumn = () => { - const { otherDeductStore: { tableStore } } = this.props; + const { + otherDeductStore: { tableStore }, + } = this.props; tableStore.setColSetVisible(true); tableStore.tableColSet(true); - } + }; // 初始化导入参数 handleInitImport() { - const { otherDeductStore: {setSlideDataSource, setImportResult}} = this.props; - setSlideDataSource([]) - setImportResult({}) + const { + otherDeductStore: { setSlideDataSource, setImportResult }, + } = this.props; + setSlideDataSource([]); + setImportResult({}); } + onSelectChange = (val) => { + this.setState({ + selectedKey: val, + }); + }; + render() { - const { otherDeductStore, taxAgentStore } = this.props; - const { loading, hasRight, form, condition, tableStore, showSearchAd, getTableDatas, doSearch, setShowSearchAd, previewImport, importFile } = otherDeductStore; - const { taxAgentOption } = taxAgentStore - const { slideVisiable, setSlideVisiable, modalVisiable, setModalVisiable, slideTableStore, step, setStep, slideDataSource, importResult } = otherDeductStore - const selectedRowKeys = toJS(tableStore.selectedRowKeys) || []; - const { modalParam } = this.state; + const { otherDeductStore, taxAgentStore, slideSelectedKey } = this.props; + const { + loading, + dataSource, + columns, + pageObj, + hasRight, + form, + condition, + tableStore, + showSearchAd, + getTableDatas, + doSearch, + setShowSearchAd, + previewImport, + importFile, + } = otherDeductStore; + const { taxAgentOption } = taxAgentStore; + const { + slideVisiable, + setSlideVisiable, + modalVisiable, + setModalVisiable, + slideTableStore, + step, + setStep, + slideDataSource, + importResult, + setPageObj, + } = otherDeductStore; + const selectedRowKeys = toJS(tableStore.selectedRowKeys) || []; + const { modalParam, monthValue, taxAgentId } = this.state; const detailSelectedRowKeys = toJS(slideTableStore.selectedRowKeys) || []; - if (!hasRight && !loading) { // 无权限处理 + if (!hasRight && !loading) { + // 无权限处理 return renderNoright(); } - const rightMenu = [// 右键菜单 - { - key: 'BTN_COLUMN', - icon: , - content: '显示列定制', - onClick: this.showColumn - }, + const rightMenu = [ + // 右键菜单 + // { + // key: "BTN_COLUMN", + // icon: , + // content: "显示列定制", + // onClick: this.showColumn, + // }, ]; - const collectParams = { // 收藏功能配置 - favname: '其他免税扣除', + const collectParams = { + // 收藏功能配置 + favname: "其他免税扣除", favouritetype: 1, objid: 0, - link: 'wui/index.html#/ns_demo03/index', + link: "wui/index.html#/ns_demo03/index", importantlevel: 1, }; - const adBtn = [ // 高级搜索内部按钮 - , - , - , + const adBtn = [ + // 高级搜索内部按钮 + , + , + , ]; - const topTab = [ - ]; + const topTab = []; const renderSearchOperationItem = () => { - return
- } + return
; + }; const handleButtonClick = () => { - const { otherDeductStore: {exportOtherDeductList}} = this.props; + const { + otherDeductStore: { exportOtherDeductList }, + } = this.props; exportOtherDeductList(); - } + }; const handleMenuClick = () => { - if(selectedRowKeys.length == 0) { - message.warning("未选择条目") - return + if (selectedRowKeys.length == 0) { + message.warning("未选择条目"); + return; } - const { otherDeductStore: { exportOtherDeductList } } = this.props; - exportOtherDeductList(selectedRowKeys.join(",")) - } + const { + otherDeductStore: { exportOtherDeductList }, + } = this.props; + exportOtherDeductList(selectedRowKeys.join(",")); + }; const handleBtnImport = () => { - const { otherDeductStore: { setModalVisiable, setStep } } = this.props; + const { + otherDeductStore: { setModalVisiable, setStep }, + } = this.props; setStep(0); - setModalVisiable(true) - } - - + setModalVisiable(true); + }; const btns = [ - , - - 导出选中 - - } type="ghost"> + , + + 导出选中 + + } + type="ghost"> 导出全部 - - ] + , + ]; const handleExportAllDetailClick = () => { - const {otherDeductStore: {exportOtherDeductDetailList, currentRecord} } =this.props; + const { + otherDeductStore: { exportOtherDeductDetailList, currentRecord }, + } = this.props; exportOtherDeductDetailList(currentRecord.id); - } + }; const handleExportSelectedDetailClick = () => { - if(detailSelectedRowKeys.length == 0) { - message.warning("未选择条目") - return + if (this.state.slideSelectedKey.length == 0) { + message.warning("未选择条目"); + return; } - const { otherDeductStore: { exportOtherDeductDetailList, currentRecord } } = this.props; - exportOtherDeductDetailList(currentRecord.id, detailSelectedRowKeys.join(",")) - } + const { + otherDeductStore: { exportOtherDeductDetailList, currentRecord }, + } = this.props; + exportOtherDeductDetailList( + currentRecord.id, + this.state.slideSelectedKey.join(",") + ); + }; const renderBtns = () => { return ( - - 导出选中 - - } type="ghost"> + + 导出选中 + + } + type="ghost"> 导出全部 - - ) - } + + ); + }; + const rowSelection = { + selectedRowKeys: this.state.selectedKey, + onChange: this.onSelectChange, + }; + const pagination = { + total: pageObj.total, + showTotal: (total) => `共 ${total} 条`, + showSizeChanger: true, + onShowSizeChange(current, pageSize) { + setPageObj({ ...pageObj, current, pageSize }); + }, + onChange(current) { + setPageObj({ ...pageObj, current, pageSize: pageObj.pageSize }); + }, + }; + + const newColumns = _.map([...columns], (item) => { + if (item.dataIndex === "username") { + return { + ...item, + width: 100, + fixed: "left", + render: (text, record) => ( + + ), + }; + } else if (item.dataIndex === "taxAgentName") { + return { + ...item, + width: 180, + fixed: "left", + }; + } else if (item.dataIndex === "operate") { + return { + ...item, + width: 100, + fixed: "right", + render: (text, record) => ( + + ), + }; + } else { + return { ...item }; + } + }); return (
@@ -282,80 +456,104 @@ export default class OtherDeduct extends React.Component { > } // 左侧图标 - iconBgcolor='#F14A2D' // 左侧图标背景色 + icon={} // 左侧图标 + iconBgcolor="#F14A2D" // 左侧图标背景色 showDropIcon={true} // 是否显示下拉按钮 dropMenuDatas={rightMenu} // 下拉菜单(和页面的右键菜单相同) dropMenuProps={{ collectParams }} // 收藏功能: 配置之后显示 收藏、帮助、显示页面地址 这3个功能 - buttons={btns} - > - + buttons={btns}>
setShowSearchAd(bool)} //高级搜索面板受控 + setShowSearchAd={(bool) => setShowSearchAd(bool)} //高级搜索面板受控 searchsAd={getSearchs(form, toJS(condition), 2)} // 高级搜索内部数据 buttonsAd={adBtn} // 高级搜索内部按钮 - onSearch={getTableDatas} // 点搜索按钮时的回调 + onSearch={() => + getTableDatas({ + taxAgentId, + declareMonth: monthValue && [monthValue], + }) + } // 点搜索按钮时的回调 searchsAdQuick={this.getSearchsAdQuick()} - onSearchChange={v => form.updateFields({ username: v })} // 在搜索框中输入的文字改变时的回调: 这里需要同步高级搜索和外部搜索框的值 + onSearchChange={(v) => form.updateFields({ username: v })} // 在搜索框中输入的文字改变时的回调: 这里需要同步高级搜索和外部搜索框的值 searchsBaseValue={form.getFormParams().username} // 外部input搜索值受控: 这里和高级搜索的requestname同步 />
-
- { - modalVisiable && { - this.handleInitImport() + this.handleInitImport(); }} templateLink={"/api/bs/hrmsalary/otherDeduction/downloadTemplate"} params={modalParam} columns={modalColumns} step={step} setStep={setStep} - onFinish={() => {setModalVisiable(false); setStep(0); doSearch();}} + onFinish={() => { + setModalVisiable(false); + setStep(0); + doSearch(); + }} importResult={importResult} slideDataSource={slideDataSource} - previewImport={(params) => {previewImport(params)}} - importFile={(params) => {importFile(params)}} - renderFormComponent={() => this.renderFormComponent()} - visiable={modalVisiable} - onCancel={() => { this.handleCancel() }} - /> - } - { - slideVisiable && {this.state.currentOperate == "add" ? doSave() : doUpdate()}} - editable={false} - btns={ - renderBtns() - } - /> - } - content={()} - onClose={() => setSlideVisiable(false)} - showMask={true} - closeMaskOnClick={() => setSlideVisiable(false)} /> - } + previewImport={(params) => { + previewImport(params); + }} + importFile={(params) => { + importFile(params); + }} + renderFormComponent={() => this.renderFormComponent()} + visiable={modalVisiable} + onCancel={() => { + this.handleCancel(); + }} + /> + )} + {slideVisiable && ( + { + this.state.currentOperate == "add" ? doSave() : doUpdate(); + }} + editable={false} + btns={renderBtns()} + /> + } + content={ + + this.setState({ slideSelectedKey: val }) + } + /> + } + onClose={() => setSlideVisiable(false)} + showMask={true} + closeMaskOnClick={() => setSlideVisiable(false)} + /> + )}
- ) + ); } } diff --git a/pc4mobx/hrmSalary/pages/dataAcquisition/otherDeduct/index.less b/pc4mobx/hrmSalary/pages/dataAcquisition/otherDeduct/index.less index e69de29b..bb9f7d42 100644 --- a/pc4mobx/hrmSalary/pages/dataAcquisition/otherDeduct/index.less +++ b/pc4mobx/hrmSalary/pages/dataAcquisition/otherDeduct/index.less @@ -0,0 +1,11 @@ +.cumDeductWrapper { + .linkWapper { + a { + color: #4d7ad8; + } + + a:hover { + text-decoration: none; + } + } +} \ No newline at end of file diff --git a/pc4mobx/hrmSalary/pages/ledger/calcRulesForm.js b/pc4mobx/hrmSalary/pages/ledger/calcRulesForm.js index 26c4a86a..7bc4bdb8 100644 --- a/pc4mobx/hrmSalary/pages/ledger/calcRulesForm.js +++ b/pc4mobx/hrmSalary/pages/ledger/calcRulesForm.js @@ -77,12 +77,16 @@ export default class CalRulesForm extends React.Component { } render() { - const { ledgerStore: {sobItemRuleDataSource}} = this.props; + const { ledgerStore: {sobItemRuleDataSource,baseInfoRequest}} = this.props; + const { canEdit="true" } = baseInfoRequest; let datas = this.convertDataSource(sobItemRuleDataSource) return (
- {this.setState({modalVisible: true})}}/> + { + canEdit ==='true'&& + {this.setState({modalVisible: true})}}/> + }
diff --git a/pc4mobx/hrmSalary/pages/ledger/index.js b/pc4mobx/hrmSalary/pages/ledger/index.js index 1f92dad4..8dc84b74 100644 --- a/pc4mobx/hrmSalary/pages/ledger/index.js +++ b/pc4mobx/hrmSalary/pages/ledger/index.js @@ -1,30 +1,36 @@ -import React from 'react'; -import { inject, observer } from 'mobx-react'; -import { toJS } from 'mobx'; +import React from "react"; +import { inject, observer } from "mobx-react"; +import { toJS } from "mobx"; -import { Button, Table, DatePicker, Switch, Modal } from 'antd'; +import { Button, Table, DatePicker, Switch, Modal, Dropdown, Menu } from "antd"; -import { WeaTop, WeaTab, WeaRightMenu, WeaRangePicker, WeaInputSearch, WeaSlideModal } from 'ecCom'; -import { WeaTableNew } from "comsMobx" -import { renderNoright, getSearchs } from '../../util'; // 渲染form数据的方法:因为多个页面都会使用,所以抽的公共方法在util中 -import CustomTab from '../../components/customTab'; -import ContentWrapper from '../../components/contentWrapper'; -import StepSlide from '../../components/stepSlide' -import SlideBaseForm from './slideBaseForm' -import SlideRefereUser from './slideRefereUser' +import { + WeaTop, + WeaTab, + WeaRightMenu, + WeaRangePicker, + WeaInputSearch, + WeaSlideModal, + WeaTable, +} from "ecCom"; +import { renderNoright, getSearchs } from "../../util"; // 渲染form数据的方法:因为多个页面都会使用,所以抽的公共方法在util中 +import CustomTab from "../../components/customTab"; +import ContentWrapper from "../../components/contentWrapper"; +import StepSlide from "../../components/stepSlide"; +import SlideBaseForm from "./slideBaseForm"; +import SlideRefereUser from "./slideRefereUser"; -import { columns, dataSource } from './columns'; -import SalaryItemForm from './salaryItemForm'; -import CalRulesForm from './calcRulesForm'; -import ValidRulesForm from './validRulesForm'; -import SlideModalTitle from '../../components/slideModalTitle' -import CopyFormModal from './copyFormModal' +import { columns } from "./columns"; +import SalaryItemForm from "./salaryItemForm"; +import CalRulesForm from "./calcRulesForm"; +import ValidRulesForm from "./validRulesForm"; +import SlideModalTitle from "../../components/slideModalTitle"; +import CopyFormModal from "./copyFormModal"; +import "./index.less"; const { MonthPicker } = DatePicker; -const WeaTable = WeaTableNew.WeaTable; - -@inject('ledgerStore') +@inject("ledgerStore", "taxAgentStore") @observer export default class Ledger extends React.Component { constructor(props) { @@ -39,224 +45,393 @@ export default class Ledger extends React.Component { selectedTab: 0, currentReocrd: {}, searchValue: "", - step1Request: {} - } + step1Request: {}, + }; } handleSearch(value) { - const{ ledgerStore: {getTableDatas}} = this.props; - getTableDatas({name: value}) + const { + ledgerStore: { getTableDatas }, + } = this.props; + getTableDatas({ name: value }); } refereUser() { this.setState({ editSlideVisible: true, - selectedTab: 1 - }) + selectedTab: 1, + }); } onEdit() { this.setState({ - editSlideVisible: true - }) + editSlideVisible: true, + }); } componentWillMount() { - const { ledgerStore : {doInit}} = this.props; - doInit() + const { + ledgerStore: { doInit }, + taxAgentStore: { fetchTaxAgentOption }, + } = this.props; + doInit(); + fetchTaxAgentOption(); } - handleItemStatusChange(value, record) { - const { ledgerStore: { changeLedgerStatus }} = this.props; + const { + ledgerStore: { changeLedgerStatus }, + } = this.props; changeLedgerStatus(record.id, value ? 0 : 1); } - handleItemClick(record, selectedTab = 0) { - const { ledgerStore: {setSalarySobId} } = this.props; - setSalarySobId(record.id) + const { + ledgerStore: { setSalarySobId }, + } = this.props; + setSalarySobId(record.id); this.setState({ selectedTab, editSlideVisible: true, - request: record - }) + request: record, + }); } // 编辑Slide保存按钮 handleEditSlideSave() { const { selectedTab, step1Request } = this.state; - const { ledgerStore: {saveLedgerItem, saveAdjustmentRule, saveLedgerBasic, baseInfoRequest}} = this.props; - if(selectedTab == 0) { - saveLedgerBasic(baseInfoRequest) - } else if(selectedTab == 2) { - saveLedgerItem() - } else if(selectedTab == 3) { - saveAdjustmentRule() - } + const { + ledgerStore: { + saveLedgerItem, + saveAdjustmentRule, + saveLedgerBasic, + baseInfoRequest, + }, + } = this.props; + if (selectedTab == 0) { + saveLedgerBasic(baseInfoRequest); + } else if (selectedTab == 2) { + saveLedgerItem(); + } else if (selectedTab == 3) { + saveAdjustmentRule(); + } } // 增加编辑功能,重写columns绑定事件 getColumns = (columns) => { - let newColumns = ''; - newColumns = columns.map(column => { + let newColumns = ""; + newColumns = columns.map((column) => { let newColumn = column; - newColumn.render = (text, record, index) => { //前端元素转义 - let valueSpan = record[newColumn.dataIndex + "span"] !== undefined ? record[newColumn.dataIndex + "span"] : record[newColumn.dataIndex]; - switch(newColumn.dataIndex) { - case 'name': - return {this.handleItemClick(record)}}>{text} + newColumn.render = (text, record, index) => { + //前端元素转义 + let valueSpan = + record[newColumn.dataIndex + "span"] !== undefined + ? record[newColumn.dataIndex + "span"] + : record[newColumn.dataIndex]; + switch (newColumn.dataIndex) { + case "name": + return ( + { + this.handleItemClick(record); + }}> + {text} + + ); case "disable": - return {this.handleItemStatusChange(value, record)}}/> + return ( + { + this.handleItemStatusChange(value, record); + }} + /> + ); case "operate": - return {this.handleItemClick(record, 1)}}>关联人员 + return ( + { + this.handleItemClick(record, 1); + }}> + 关联人员 + + ); default: - return
+ return
; } - } + }; return newColumn; }); return newColumns; - } + }; - - onOperatesClick = (record, index, operate, flag) => { - const { ledgerStore: { deleteLedger }} = this.props; - switch(operate.index.toString()){ + onOperatesClick = (record, type) => { + const { + ledgerStore: { deleteLedger }, + } = this.props; + switch (type.toString()) { case "0": // 编辑 - this.handleItemClick(record) + this.handleItemClick(record); break; - case '1': // 复制 + case "1": // 复制 this.setState({ copyFormVisible: true, - currentReocrd: record - }) + currentReocrd: record, + }); break; case "3": // 关联人员 - this.handleItemClick(record, 1) + this.handleItemClick(record, 1); break; case "4": // 删除 Modal.confirm({ - title: '信息确认', - content: '确认删除', - onOk:() => { - deleteLedger([record.id]) - }, - onCancel: () => { - + title: "信息确认", + content: "确认删除", + onOk: () => { + deleteLedger([record.id]); }, + onCancel: () => {}, }); - + break; } }; handleCopySave = (value) => { - const { ledgerStore: { doCopy}} = this.props + const { + ledgerStore: { doCopy }, + } = this.props; doCopy(this.state.currentReocrd.id, value).then(() => { - this.setState({copyFormVisible: false}) - }) - } + this.setState({ copyFormVisible: false }); + }); + }; handleNew = () => { - const { ledgerStore: { initSlideData }} = this.props; + const { + ledgerStore: { initSlideData }, + } = this.props; initSlideData(); - this.setState({stepSlideVisible: true, currentStep: 0}) - } + this.setState({ stepSlideVisible: true, currentStep: 0 }); + }; render() { const { ledgerStore } = this.props; - const { loading, hasRight, form, condition, tableStore, showSearchAd, getTableDatas, doSearch, setShowSearchAd } = ledgerStore; + const { + loading, + dataSource, + columns, + pageObj, + setPageObj, + hasRight, + form, + condition, + tableStore, + showSearchAd, + getTableDatas, + doSearch, + setShowSearchAd, + baseInfoRequest, + } = ledgerStore; + const { canEdit = "true" } = baseInfoRequest; const { currentStep, selectedTab } = this.state; - if (!hasRight && !loading) { // 无权限处理 + if (!hasRight && !loading) { + // 无权限处理 return renderNoright(); } - const rightMenu = [// 右键菜单 - { - key: 'BTN_COLUMN', - icon: , - content: '显示列定制', - onClick: this.showColumn + const rightMenu = [ + // 右键菜单 + { + key: "BTN_COLUMN", + icon: , + content: "显示列定制", + onClick: this.showColumn, }, ]; - const collectParams = { // 收藏功能配置 - favname: '薪资账套', + const collectParams = { + // 收藏功能配置 + favname: "薪资账套", favouritetype: 1, objid: 0, - link: 'wui/index.html#/ns_demo03/index', + link: "wui/index.html#/ns_demo03/index", importantlevel: 1, }; - const adBtn = [ // 高级搜索内部按钮 - , - , - , + const adBtn = [ + // 高级搜索内部按钮 + , + , + , ]; - const topTab = [ - ]; + const topTab = []; const renderRightOperation = () => { return ( -
- - {this.setState({searchValue: value})}} onSearch={(value) => {this.handleSearch(value)}}/> +
+ + { + this.setState({ searchValue: value }); + }} + onSearch={(value) => { + this.handleSearch(value); + }} + />
- ) - } + ); + }; const nextStep = () => { const { currentStep } = this.state; - this.setState({currentStep: currentStep + 1}) - } + this.setState({ currentStep: currentStep + 1 }); + }; const prevStep = () => { const { currentStep } = this.state; - this.setState({currentStep: currentStep - 1}); - } + this.setState({ currentStep: currentStep - 1 }); + }; const steps = [ "基础设置", "关联人员", "薪资项目", "调薪记薪规则", // "校验规则", - ] + ]; const handleStep1Save = () => { const { step1Request } = this.state; - const { ledgerStore: {saveLedgerBasic, baseInfoRequest} } = this.props; + const { + ledgerStore: { saveLedgerBasic, baseInfoRequest }, + } = this.props; saveLedgerBasic(baseInfoRequest).then(() => { nextStep(); - }) - } - + }); + }; const handleStep3Save = () => { - const { ledgerStore: {saveAdjustmentRule} } = this.props; + const { + ledgerStore: { saveAdjustmentRule }, + } = this.props; saveAdjustmentRule().then(() => { - nextStep() - }) - } + nextStep(); + }); + }; const handleStepSave = () => { const { currentStep } = this.state; - const { ledgerStore: { saveLedgerBasic, saveLedgerItem, saveAdjustmentRule, baseInfoRequest }} = this.props; - if(currentStep == 0) { + const { + ledgerStore: { + saveLedgerBasic, + saveLedgerItem, + saveAdjustmentRule, + baseInfoRequest, + }, + } = this.props; + if (currentStep == 0) { saveLedgerBasic(baseInfoRequest).then(() => { nextStep(); - }) - } else if(currentStep == 1) { - nextStep() - }else if(currentStep == 2) { + }); + } else if (currentStep == 1) { + nextStep(); + } else if (currentStep == 2) { saveLedgerItem().then(() => { - nextStep() - }) - } else if(currentStep == 3) { + nextStep(); + }); + } else if (currentStep == 3) { saveAdjustmentRule().then(() => { - this.setState({stepSlideVisible: false}) - }) - } - } + this.setState({ stepSlideVisible: false }); + }); + } + }; + + const pagination = { + total: pageObj.total, + showTotal: (total) => `共 ${total} 条`, + showSizeChanger: true, + onShowSizeChange(current, pageSize) { + setPageObj({ ...pageObj, current, pageSize }); + getTableDatas({ current, pageSize, name: this.state.searchValue }); + }, + onChange(current) { + setPageObj({ ...pageObj, current, pageSize: pageObj.pageSize }); + getTableDatas({ + current, + pageSize: pageObj.pageSize, + name: this.state.searchValue, + }); + }, + }; + const newColumns = _.map([...columns], (item) => { + if (item.dataIndex === "name") { + return { + ...item, + render: (text, record) => ( + + ), + }; + } else if (item.dataIndex === "disable") { + return { + ...item, + render: (text, record) => ( + { + this.handleItemStatusChange(value, record); + }} + /> + ), + }; + } else if (item.dataIndex === "operate") { + return { + ...item, + render: (text, record) => ( +
+ { + this.handleItemClick(record, 1); + }}> + 关联人员 + + this.onOperatesClick(record, item.key)}> + 编辑 + 复制 + 关联人员 + 删除 + + }> + + + + +
+ ), + }; + } else { + return { ...item }; + } + }); return (
@@ -266,140 +441,181 @@ export default class Ledger extends React.Component { > } // 左侧图标 - iconBgcolor='#F14A2D' // 左侧图标背景色 + icon={} // 左侧图标 + iconBgcolor="#F14A2D" // 左侧图标背景色 showDropIcon={true} // 是否显示下拉按钮 dropMenuDatas={rightMenu} // 下拉菜单(和页面的右键菜单相同) dropMenuProps={{ collectParams }} // 收藏功能: 配置之后显示 收藏、帮助、显示页面地址 这3个功能 > - { - - }} - /> - {}} /> - { - this.state.stepSlideVisible && {this.setState({stepSlideVisible: false})}} - customOperate = { -
- { - currentStep == 0 && - } - { - currentStep == 1 &&
- - -
- } - { - currentStep == 2 &&
- - - + + {this.state.stepSlideVisible && ( + { + this.setState({ stepSlideVisible: false }); + }} + customOperate={ +
+ {currentStep == 0 && ( + + )} + {currentStep == 1 && ( +
+ +
- } - { - currentStep == 3 && + )} + {currentStep == 2 && (
- - + + +
- - } -
- } - title="新建账套" - content={ -
- { - currentStep == 0 && - } - { - currentStep == 1 && - } - { - currentStep == 2 && - } - { - currentStep == 3 && - } - {/* { + )} + {currentStep == 3 && ( +
+ + +
+ )} +
+ } + title="新建账套" + content={ +
+ {currentStep == 0 && } + {currentStep == 1 && } + {currentStep == 2 && } + {currentStep == 3 && } + {/* { currentStep == 4 && } */} - -
- - } +
+ } /> - } + )} - { - this.state.editSlideVisible && - this.handleEditSlideSave()} - subItemChange={ - (item) => {this.setState({selectedTab: item.key})} - } + subItemChange={(item) => { + this.setState({ selectedTab: item.key }); + }} /> } - content={
- { - selectedTab == 0 && - } - { - selectedTab == 1 && - } - { - selectedTab == 2 && - } - { - selectedTab == 3 && - } - {/* { + content={ +
+ {selectedTab == 0 && } + {selectedTab == 1 && } + {selectedTab == 2 && } + {selectedTab == 3 && } + {/* { selectedTab == 4 && } */} -
} - onClose={() => this.setState({editSlideVisible: false})} +
+ } + onClose={() => this.setState({ editSlideVisible: false })} showMask={true} - closeMaskOnClick={() => this.setState({editSlideVisible: false})} /> - } + closeMaskOnClick={() => + this.setState({ editSlideVisible: false }) + } + /> + )} - { - this.state.copyFormVisible && - this.handleCopySave(value)} - onCancel={() => {this.setState({copyFormVisible: false})}} + onCancel={() => { + this.setState({ copyFormVisible: false }); + }} /> - } + )}
- ) + ); } } diff --git a/pc4mobx/hrmSalary/pages/ledger/index.less b/pc4mobx/hrmSalary/pages/ledger/index.less index 19d0e653..66478c8e 100644 --- a/pc4mobx/hrmSalary/pages/ledger/index.less +++ b/pc4mobx/hrmSalary/pages/ledger/index.less @@ -1,146 +1,187 @@ .slideBaseForm { - .leftContentWrapper { - margin: 10px; - border: 1px solid #eee; - border-radius: 5px; - padding: 10px; - } - .rightContentWrapper { - margin: 10px; - } + .leftContentWrapper { + margin: 10px; + border: 1px solid #eee; + border-radius: 5px; + padding: 10px; + } + + .rightContentWrapper { + margin: 10px; + } } .rightContentWrapper { - .greytip { - color: #999; - line-height: 24px; - font-size: 12px; - } - .tipLabel { - color: #333; - font-size: 14px; - line-height: 26px; - } - .higelinered { - color: red; - } + .greytip { + color: #999; + line-height: 24px; + font-size: 12px; + } + + .tipLabel { + color: #333; + font-size: 14px; + line-height: 26px; + } + + .higelinered { + color: red; + } } .slideRefereUser { - .tabItem { - cursor: pointer; + .tabItem { + cursor: pointer; + } + + .refereUserHeader { + height: 47px; + line-height: 47px; + padding-left: 10px; + padding-right: 10px; + } + + .headerLeft { + display: inline-block; + color: #666; + + .selectedCrumbs { + color: #4ba9f2; } - .refereUserHeader { - height: 47px; - line-height: 47px; - padding-left: 10px; - padding-right: 10px; - } - .headerLeft { - display: inline-block; - color: #666; - .selectedCrumbs { - color: #4ba9f2; - } - - } - .headerIcon { - float: right; - } - .searchInput { - margin-top: 10px; - float: right; - } - .headerIcon { - color: #4ba9f2; - display: inline-block; - .iconItem { - cursor: pointer; - margin-right: 10px; - } + + } + + .headerIcon { + float: right; + } + + .searchInput { + margin-top: 10px; + float: right; + } + + .headerIcon { + color: #4ba9f2; + display: inline-block; + + .iconItem { + cursor: pointer; + margin-right: 10px; } + } } .salaryItemForm { - padding: 10px 20px; - .btnBar { - height: 47px; - .btns { - display: inline-block; - } - .searchInputWrapper { - float: right; - display: inline-block; - } + padding: 10px 20px; + + .btnBar { + height: 47px; + + .btns { + display: inline-block; } - .userInfoWrapper { - overflow: hidden; - .rightBtnsWrapper { - float: right; - display: inline-block; - .iconItem { - margin-right: 10px; - color: #2db7f5; - } - } + + .searchInputWrapper { + float: right; + display: inline-block; } - .userInfoSelected { - margin-top: 10px; - margin-bottom: 10px; - padding: 10px; - border: 1px solid #eee; - border-radius: 5px; + } + + .userInfoWrapper { + overflow: hidden; + + .rightBtnsWrapper { + float: right; + display: inline-block; + + .iconItem { + margin-right: 10px; + color: #2db7f5; + } } - .tableItemWrapper { - margin-top: 10px; - .rightBtnsWrapper { - float: right; - .iconItem { - margin-right: 10px; - color: #2db7f5; - } - } - .itemTitle { - font-size: 14px; - font-weight: 500; - } - + } + + .userInfoSelected { + margin-top: 10px; + margin-bottom: 10px; + padding: 10px; + border: 1px solid #eee; + border-radius: 5px; + } + + .tableItemWrapper { + margin-top: 10px; + + .rightBtnsWrapper { + float: right; + + .iconItem { + margin-right: 10px; + color: #2db7f5; + } } + + .itemTitle { + font-size: 14px; + font-weight: 500; + } + + } } .calRulesForm { - padding: 10px 20px; - .headerIcon { - float: right; - .iconItem { - margin-right: 10px; - color: #2db7f5; - } - } - .tableWrapper { - margin-top: 20px; + padding: 10px 20px; + + .headerIcon { + float: right; + + .iconItem { + margin-right: 10px; + color: #2db7f5; } + } + + .tableWrapper { + margin-top: 20px; + } } .validRulesForm { - padding: 10px 20px; - .headerBar { - height: 47px; - line-height: 47px; - .inputSearch { - margin-top: 8px; - float: right; - } - .btnsWrapper { - float: right; - .iconItem { - margin-right: 10px; - cursor: pointer; - color: #2db7f5; - } - } + padding: 10px 20px; + + .headerBar { + height: 47px; + line-height: 47px; + + .inputSearch { + margin-top: 8px; + float: right; } - .tableWrapper { - margin-top: 20px; + + .btnsWrapper { + float: right; + + .iconItem { + margin-right: 10px; + cursor: pointer; + color: #2db7f5; + } } + } + + .tableWrapper { + margin-top: 20px; + } +} + +.mySalaryBenefitsWrapper { + .linkWapper { + a { + color: #4d7ad8; + } + + a:hover { + text-decoration: none; + } + } } \ No newline at end of file diff --git a/pc4mobx/hrmSalary/pages/ledger/salaryItemForm.js b/pc4mobx/hrmSalary/pages/ledger/salaryItemForm.js index 3c7643a6..a92d7c90 100644 --- a/pc4mobx/hrmSalary/pages/ledger/salaryItemForm.js +++ b/pc4mobx/hrmSalary/pages/ledger/salaryItemForm.js @@ -83,14 +83,15 @@ export default class SalaryItemForm extends React.Component { } render() { - const {ledgerStore: {itemGroups, salaryItems, empBrowserList, setAddCategoryVisible, addCategoryVisible}} = this.props; + const {ledgerStore: {itemGroups, salaryItems, empBrowserList, setAddCategoryVisible, addCategoryVisible, baseInfoRequest}} = this.props; + const { canEdit="true" } = baseInfoRequest; const { previewVisible } = this.state; return (
- - + +
@@ -120,7 +121,7 @@ export default class SalaryItemForm extends React.Component { if(item.items) { item.items.map(i => {i.key = i.id}) return ( - {this.handleItemDataSourceChange(dataSource, item)}} title={item.name} onGroupDelete={() => {this.handleGroupDelete(item)}} onTitleChange={(value) => {this.handleItemTitleChange(item, value)}} onChange={(dataSource) => {this.handleCanMoveItemChange(dataSource, item)}}/> + {this.handleItemDataSourceChange(dataSource, item)}} title={item.name} onGroupDelete={() => {this.handleGroupDelete(item)}} onTitleChange={(value) => {this.handleItemTitleChange(item, value)}} onChange={(dataSource) => {this.handleCanMoveItemChange(dataSource, item)}}/> ) } return "" diff --git a/pc4mobx/hrmSalary/pages/ledger/slideBaseForm.js b/pc4mobx/hrmSalary/pages/ledger/slideBaseForm.js index 71d02cbe..10042c72 100644 --- a/pc4mobx/hrmSalary/pages/ledger/slideBaseForm.js +++ b/pc4mobx/hrmSalary/pages/ledger/slideBaseForm.js @@ -1,151 +1,319 @@ -import React from 'react' -import { Row, Col } from 'antd' -import { WeaSelect, WeaTextarea, WeaInput, WeaCheckbox } from "ecCom" -import "./index.less" -import TipLabel from '../../components/TipLabel' -import { daysOptions, cycleTypeOption } from './options' -import { inject, observer } from 'mobx-react'; -import RequiredLabelTip from "../../components/requiredLabelTip" -import { getCurrentYearMonth, getCurrentMonth, getSubtractMonthYearMonth, getAddMonthYearMonth} from '../../util/date' +import React from "react"; +import { Row, Col } from "antd"; +import { toJS } from "mobx"; +import { WeaSelect, WeaTextarea, WeaInput, WeaCheckbox } from "ecCom"; +import "./index.less"; +import TipLabel from "../../components/TipLabel"; +import { daysOptions, cycleTypeOption } from "./options"; +import { inject, observer } from "mobx-react"; +import RequiredLabelTip from "../../components/requiredLabelTip"; +import { + getCurrentYearMonth, + getCurrentMonth, + getSubtractMonthYearMonth, + getAddMonthYearMonth, +} from "../../util/date"; -@inject('ledgerStore') +@inject("ledgerStore", "taxAgentStore") @observer export default class SlideBaseForm extends React.Component { - constructor(props) { - super(props) - this.state = { - name: "", - taxableItems: 1 - } + constructor(props) { + super(props); + this.state = { + name: "", + taxableItems: 1, + }; + } + componentWillMount() { + const { edit } = this.props; + const { + ledgerStore: { initBaseInfoRequest }, + } = this.props; + if (edit) { + const { + ledgerStore: { getLedgerBasicForm }, + } = this.props; + getLedgerBasicForm(); + } else { + initBaseInfoRequest(); } - componentWillMount() { - const { edit } = this.props; - const { ledgerStore: {initBaseInfoRequest}} = this.props; - if(edit) { - const { ledgerStore: { getLedgerBasicForm }} = this.props; - getLedgerBasicForm() - } else { - initBaseInfoRequest(); - } + } + + handleChange(params) { + const { + ledgerStore: { baseInfoRequest, setBaseInfoRequest }, + } = this.props; + let request = { ...baseInfoRequest }; + Object.keys(params).map((key) => { + request[key] = params[key]; + }); + setBaseInfoRequest(request); + } + + // 获取开始日期 + getStartDate(salaryCycleType, day) { + day = Number(day); + return this.getMonth(salaryCycleType) + "-" + (day < 10 ? "0" + day : day); + } + + // 获取开始月份 + getMonth(salaryCycleType) { + switch (salaryCycleType) { + case "1": // 上上月 + return getSubtractMonthYearMonth(2); + case "2": // 上月 + return getSubtractMonthYearMonth(1); + case "3": // 本月 + return getCurrentYearMonth(); + case "4": // 下月 + return getAddMonthYearMonth(1); } + } - handleChange(params) { - const { ledgerStore: {baseInfoRequest, setBaseInfoRequest}} = this.props; - let request= {...baseInfoRequest} - Object.keys(params).map(key => { - request[key] = params[key] - }) - setBaseInfoRequest(request) - } + render() { + const { request, ledgerStore, taxAgentStore, edit } = this.props; + const { baseInfoRequest } = ledgerStore; + const { taxAgentOption } = taxAgentStore; + const { + canEdit="true", + name, + taxAgentId, + taxableItems, + salaryCycleType, + salaryCycleFromDay, + taxCycleType, + attendCycleType, + attendCycleFromDay, + socialSecurityCycleType, + description, + } = baseInfoRequest; + return ( +
+ + +
+ + + 账套名称 + + + + { + this.handleChange({ name: value }); + }} + /> + + + + + 个税扣缴义务人 + + + + { + this.handleChange({ taxAgentId: v }); + }} + /> + + + + + 薪资类型 + + + + { + this.handleChange({ taxableItems: value }); + }} + /> + + + + + 薪资周期 + + + + { + this.handleChange({ salaryCycleType: value }); + }} + /> + { + this.handleChange({ salaryCycleFromDay: value }); + }} + /> + 至本月最后一天 + + + + + 税款所属期 + + + + { + this.handleChange({ taxCycleType: value }); + }} + /> + + + + + 考勤周期 + + + + { + this.handleChange({ attendCycleType: value }); + }} + /> + { + this.handleChange({ attendCycleFromDay: value }); + }} + /> + 至本月最后一天 + + + + + 福利台账月份 + + + + { + this.handleChange({ socialSecurityCycleType: value }); + }} + /> + + - // 获取开始日期 - getStartDate(salaryCycleType, day) { - day = Number(day) - return this.getMonth(salaryCycleType) + "-" + (day < 10 ? "0" + day : day) - } - - // 获取开始月份 - getMonth(salaryCycleType) { - switch(salaryCycleType) { - case "1": // 上上月 - return getSubtractMonthYearMonth(2) - case "2": // 上月 - return getSubtractMonthYearMonth(1) - case "3": // 本月 - return getCurrentYearMonth() - case "4": // 下月 - return getAddMonthYearMonth(1) - } - } - - render() { - const { request, ledgerStore } = this.props; - const { baseInfoRequest } = ledgerStore; - const { name, taxableItems, salaryCycleType, salaryCycleFromDay, - taxCycleType, attendCycleType, attendCycleFromDay, socialSecurityCycleType, - description} = baseInfoRequest - return ( -
- - -
- - 账套名称 - - {this.handleChange({name: value})}}/> - - - - 薪资类型 - - {this.handleChange({taxableItems: value})}}/> - - - - 薪资周期 - - {this.handleChange({salaryCycleType: value})}}/> - {this.handleChange({salaryCycleFromDay: value})}}/> - 至本月最后一天 - - - - 税款所属期 - - {this.handleChange({taxCycleType: value})}}/> - - - - 考勤周期 - - {this.handleChange({attendCycleType: value})}}/> - {this.handleChange({attendCycleFromDay: value})}}/> - 至本月最后一天 - - - - 福利台账月份 - - {this.handleChange({socialSecurityCycleType: value})}}/> - - - - - 核算人员范围 - - - - - - 备注 - - {this.handleChange({description: value})}} /> - - -
- - -
- -

例:薪资所属月是{getCurrentYearMonth()}(即核算员工{getCurrentMonth()}月的工资)

-

根据您当前的选择,相应的周期为:

-
薪资周期
-

{this.getStartDate(salaryCycleType, salaryCycleFromDay)}{this.getMonth(salaryCycleType)}-30

-
税款所属期
-

{this.getMonth(taxCycleType)}

-
考勤取值周期
-

{this.getStartDate(attendCycleType, attendCycleFromDay)}{this.getMonth(attendCycleType)}-30

-
福利台账月份
-

引用{this.getMonth(socialSecurityCycleType)}的福利台账数据

-
-
- -
+ + + 核算人员范围 + + + + + + + + 备注 + + { + this.handleChange({ description: value }); + }} + /> + +
- ) - } -} \ No newline at end of file + + +
+ +

+ 例:薪资所属月是 + {getCurrentYearMonth()} + (即核算员工 + {getCurrentMonth()} + 月的工资) +

+

根据您当前的选择,相应的周期为:

+
薪资周期
+

+ + {this.getStartDate(salaryCycleType, salaryCycleFromDay)} + + 至 + + {this.getMonth(salaryCycleType)}-30 + +

+
税款所属期
+

+ {this.getMonth(taxCycleType)} +

+
考勤取值周期
+

+ + {this.getStartDate(attendCycleType, attendCycleFromDay)} + + 至 + + {this.getMonth(attendCycleType)}-30 + +

+
福利台账月份
+

+ 引用 + + {this.getMonth(socialSecurityCycleType)} + + 的福利台账数据 +

+
+
+ + +
+ ); + } +} diff --git a/pc4mobx/hrmSalary/pages/ledger/slideRefereUser.js b/pc4mobx/hrmSalary/pages/ledger/slideRefereUser.js index f327b13b..2bf2c6a0 100644 --- a/pc4mobx/hrmSalary/pages/ledger/slideRefereUser.js +++ b/pc4mobx/hrmSalary/pages/ledger/slideRefereUser.js @@ -56,7 +56,8 @@ export default class SlideRefereUser extends React.Component { } render() { - const { ledgerStore: {includeType, userTableStore, addUserModalVisible, setAddUserModalVisible}} = this.props; + const { ledgerStore: {includeType, userTableStore, addUserModalVisible, setAddUserModalVisible, baseInfoRequest}} = this.props; + const { canEdit="true" } = baseInfoRequest; let { columns, list} = userTableStore const { selectedRowKeys } = this.state columns = columns || [] @@ -74,10 +75,13 @@ export default class SlideRefereUser extends React.Component {
{this.handleTabClick(1)}}>关联人员范围 {' '} | {' '} {this.handleTabClick(0)}}>从范围中排除
{this.setState({searchValue: value})}} onSearch={(value) => {this.handleSearch(value)}}/> -
+ { + canEdit === 'true' && +
{this.handleTabDelete()}}/> {setAddUserModalVisible(true)}}/> -
+
+ }
{this.props.title} { this.props.title !== "未分类" && - {this.handleEditGroupIconClick(this.props.title)}}/> - {this.handleDeleteGroupIconClick()}}/> + { + !disabled && + + {this.handleEditGroupIconClick(this.props.title)}}/> + {this.handleDeleteGroupIconClick()}}/> + + } } - {this.handleDelete()}}/> - { this.setState({addItemVisible: true}) }}/> + { + !disabled && + + {this.handleDelete()}}/> + { this.setState({addItemVisible: true}) }}/> + + } {this.handleTiggleContent()}}/> diff --git a/pc4mobx/hrmSalary/pages/taxAgent/addTaxAgentModal.js b/pc4mobx/hrmSalary/pages/taxAgent/addTaxAgentModal.js new file mode 100644 index 00000000..d41b4e7d --- /dev/null +++ b/pc4mobx/hrmSalary/pages/taxAgent/addTaxAgentModal.js @@ -0,0 +1,144 @@ +import React from "react"; +import { Modal, Button, Row, Col, Radio, Checkbox } from "antd"; +import { WeaSelect, WeaBrowser } from "ecCom"; +import { inject, observer } from "mobx-react"; +import RequiredLabelTip from "../../components/requiredLabelTip"; + +const CheckboxGroup = Checkbox.Group; + +export default class AddTaxAgentModal extends React.Component { + constructor(props) { + super(props); + this.state = { + selectedKey: "EMPLOYEE", + checkboxValue: [], + ids: "", + }; + } + + onCheckboxChange = (checkboxValue) => { + this.setState({ checkboxValue }); + }; + + // 保存 + handleSave = () => { + const { onTaxAgentSave } = this.props; + const { checkboxValue, ids, selectedKey } = this.state; + const payload = { + employeeStatus: checkboxValue, + targetParams: _.map(ids.split(","), (it) => ({ + targetType: selectedKey, + targetId: it, + })), + }; + onTaxAgentSave && onTaxAgentSave(payload); + }; + + // 重置 + handleReset = () => { + this.setState({ + selectedKey: "EMPLOYEE", + checkboxValue: [], + ids: "", + }); + }; + + render() { + const { employeeStatus, targetTypeList, visible, onCancel, loading } = + this.props; + return ( + + + + + }> +
+ +
+ 对象类型 + + + +
+ ({ + ...it, + key: it.id, + showname: it.name, + selected: false, + }))} + value={this.state.selectedKey} + onChange={(value) => { + this.setState({ selectedKey: value, ids: "" }); + }} + /> +
+
+ {this.state.selectedKey == "EMPLOYEE" && ( + { + this.setState({ ids }); + }} + /> + )} + {this.state.selectedKey == "DEPT" && ( + { + this.setState({ ids }); + }} + /> + )} + {this.state.selectedKey == "POSITION" && ( + { + this.setState({ ids }); + }} + /> + )} +
+ + + +
+ 选择员工状态 + + + + ({ + label: it.name, + value: it.id, + }))} + value={this.state.checkboxValue} + onChange={(e) => this.onCheckboxChange(e)} + /> + + + + + ); + } +} diff --git a/pc4mobx/hrmSalary/pages/taxAgent/editConditions.js b/pc4mobx/hrmSalary/pages/taxAgent/editConditions.js new file mode 100644 index 00000000..f9afbe87 --- /dev/null +++ b/pc4mobx/hrmSalary/pages/taxAgent/editConditions.js @@ -0,0 +1,65 @@ +/* + * Author: 黎永顺 + * Description: 表单渲染condition + * Date: 2022-05-30 22:39:03 + * LastEditTime: 2022-05-31 20:34:07 + */ +export const editConditions = [ + { + items: [ + { + colSpan: 1, + conditionType: "INPUT", + domkey: ["name"], + fieldcol: 14, + rules: "required|string", + label: "名称", + labelcol: 6, + value: "", + viewAttr: 3, + }, + { + browserConditionParam: { + completeParams: {}, + conditionDataParams: {}, + dataParams: {}, + destDataParams: {}, + hasAddBtn: false, + hasAdvanceSerach: true, + idSeparator: ",", + isAutoComplete: 1, + isDetail: 0, + isMultCheckbox: false, + isSingle: false, + linkUrl: "/hrm/resource/HrmResource.jsp?id=", + pageSize: 10, + quickSearchName: "", + replaceDatas: [], + title: "人力资源", + type: "1", + viewAttr: 3, + rules: "required", + }, + colSpan: 1, + conditionType: "BROWSER", + rules: "required|string", + domkey: ["adminUserIds"], + fieldcol: 14, + label: "管理员", + labelcol: 6, + viewAttr: 3, + }, + { + colSpan: 1, + conditionType: "TEXTAREA", + domkey: ["description"], + fieldcol: 14, + label: "备注", + labelcol: 6, + value: "", + viewAttr: 2, + }, + ], + defaultshow: true, + }, +]; diff --git a/pc4mobx/hrmSalary/pages/taxAgent/editModal.js b/pc4mobx/hrmSalary/pages/taxAgent/editModal.js index 52d382c4..71c19d90 100644 --- a/pc4mobx/hrmSalary/pages/taxAgent/editModal.js +++ b/pc4mobx/hrmSalary/pages/taxAgent/editModal.js @@ -1,82 +1,179 @@ -import React from 'react' -import { Button, Modal, Row, Col, message } from 'antd'; -import { WeaTextarea, WeaInput } from "ecCom"; -import { logColumns, dataSource } from "../../common/columns" -import RequiredLabelTip from "../../components/requiredLabelTip" +import React from "react"; +import { Button, Row, Col, message } from "antd"; +import { + WeaDialog, + WeaFormItem, + WeaSearchGroup, + WeaSteps, + WeaTab, +} from "ecCom"; +import { WeaSwitch } from "comsMobx"; +import PersonalScope from "./personalScope"; + +const titleOuter = { + display: "flex", + justifyContent: "space-between", + alignItems: "center", +}; +const left = { + display: "flex", + flexDirection: "column", +}; +const stepWrapper = { + padding: "20px 200px", +}; + +const Step = WeaSteps.Step; export default class EditModal extends React.Component { - constructor(props) { - super(props) - this.state = { - name: "", - remark: "" + constructor(props) { + super(props); + this.state = { + date: "", + }; + } + + handleSubmit = () => { + const { onSubmit, btnType, onPrev } = this.props; + const { form } = this.props.taxAgentStore; + if (btnType === "prev") { + onPrev && onPrev(); + return; + } + form.validateForm().then((f) => { + if (f.isValid) { + const formData = form.getFormParams(); + const { adminUserIds, ...extraVal } = formData; + onSubmit && + onSubmit({ adminUserIds: adminUserIds.split(","), ...extraVal }); + } else { + f.showErrors(); + this.setState({ date: new Date() }); // 改变一个state的变量,强制页面刷新 + } + }); + }; + + renderEditForm = () => { + const { editConditions } = this.props; + const { form } = this.props.taxAgentStore; + const { isFormInit } = form; + let group = []; + isFormInit && + editConditions.map((c, index) => { + let items = []; + c.items.map((field, idx) => { + items.push({ + com: ( + + + + ), + col: 1, + hide: form.isHide(field, (keys, allParams) => { + return false; + }), + }); + }); + group.push( + + ); + }); + return group; + }; + + render() { + const { date } = this.state; + const { + visible, + title, + current, + btnType, + editType, + editId, + saveloading, + onClose, + onChangeTab, + taxAgentStore, + editConditions, + } = this.props; + const { form } = taxAgentStore; + return ( + { + form.resetForm(); + onClose && onClose(); + }} + title={ +
+
+
{title}
+
+
+ {editType !== "set" && ( + + )} +
+
} - } - - componentWillMount() { // 初始化渲染页面 - this.setState({ - name: this.props.name, - remark: this.props.remark - }) - } - - validate() { - if(this.state.name == "") { - message.warning("个税扣缴义务人名称不能为空"); - return false; - } - return true; - } - - submitAdd() { - if(this.validate()) { - this.props.onSubmitAdd({name: this.state.name, description: this.state.remark}) - } - } - - submitUpdate() { - if(this.validate) { - this.props.onSubmitUpdate({id: this.props.currentId, name: this.state.name, description: this.state.remark}) - } - } - - render() { - return ( - { - this.props.operate == "add" ? this.submitAdd() : this.submitUpdate(); - }} onCancel={this.props.onCancel} - > - -
-
名称:
- -
- {this.setState({ - name: v - })}} - /> - - - - - -
备注:
- -
- { - this.setState({ - remark: v - }) - } - } /> - - - - ) - } + visible={visible} + style={{ width: 800, minHeight: 350 }} + hasScroll> + {title.indexOf("编辑") >= 0 && ( + onChangeTab && onChangeTab(v)} + /> + )} + {(btnType === "save" || title.indexOf("编辑") < 0) && ( +
+ + + + +
+ )} + {current == 0 ? ( + this.renderEditForm() + ) : ( + + )} + + ); + } } diff --git a/pc4mobx/hrmSalary/pages/taxAgent/index.js b/pc4mobx/hrmSalary/pages/taxAgent/index.js index f53c3fe3..f4580d2b 100644 --- a/pc4mobx/hrmSalary/pages/taxAgent/index.js +++ b/pc4mobx/hrmSalary/pages/taxAgent/index.js @@ -1,225 +1,451 @@ -import React from 'react'; -import { inject, observer } from 'mobx-react'; -import { toJS } from 'mobx'; +import React from "react"; +import { inject, observer } from "mobx-react"; +import { toJS } from "mobx"; +import { Row, Col, Switch, message, Modal, Menu, Dropdown } from "antd"; +import { + WeaTop, + WeaRightMenu, + WeaSearchGroup, + WeaFormItem, + WeaTable, +} from "ecCom"; +import { renderNoright } from "../../util"; // 渲染form数据的方法:因为多个页面都会使用,所以抽的公共方法在util中 +import EditModal from "./editModal"; +import TipLabel from "../../components/TipLabel"; +import { editConditions } from "./editConditions"; +import "./index.less"; -import { Button, Table, DatePicker, Row, Col, Modal, Form, Input } from 'antd'; -const { TextArea } = Input; - -import { WeaTop, WeaTab, WeaRightMenu, WeaRangePicker, WeaInputSearch, WeaInput, WeaTextarea } from 'ecCom'; - -import { WeaTableNew } from 'comsMobx'; - -const WeaTable = WeaTableNew.WeaTable; -import { renderNoright, getSearchs } from '../../util'; // 渲染form数据的方法:因为多个页面都会使用,所以抽的公共方法在util中 -import CustomTab from '../../components/customTab'; -import ContentWrapper from '../../components/contentWrapper'; -import "./index.less" - -import { columns, dataSource } from './columns'; - -import { logColumns } from '../../common/columns' -import LogViewModal from '../../components/logViewModal'; -import EditModal from './editModal' -import TipLabel from '../../components/TipLabel' - -const { MonthPicker } = DatePicker; - -@inject('taxAgentStore') +@inject("taxAgentStore") @observer export default class TaxAgent extends React.Component { constructor(props) { super(props); this.state = { - value: "", - selectedKey: "0", - searchValue: "", - logViewVisiable: false, - modalVisiable: false, - remarkValue: "", - nameValue: "", - title: "新增个税扣缴义务人", - currentOperate: "add", - currentId: "", - } + editModalProps: { + title: "新增个税扣缴义务人", + visible: false, + current: 0, + btnType: "save", //save: 添加, edit: 编辑, prev: '上一步' + editId: "", + editType: "save", + }, + editModalLoading: { + saveloading: false, + }, + devolutionStatus: 0, + conditions: editConditions, + permission: {}, + }; } - componentWillMount() { // 初始化渲染页面 - const { taxAgentStore: { doInit } } = this.props; + componentWillMount() { + const { taxAgentStore } = this.props; + const { doInit } = taxAgentStore; doInit(); + this.getPermission(); } - showLogView = () => { - this.setState({logViewVisiable: true}) - } - - onEdit = (record) => { - this.setState({ - remarkValue: record.description, - nameValue: record.name, - title: "编辑个税扣缴义务人", - currentOperate: "update", - currentId: record.id - }) - const {taxAgentStore : { setModalVisiable }} = this.props - setModalVisiable(true) - } - - // 增加编辑功能,重写columns绑定事件 - getColumns = (columns) => { - let newColumns = ''; - newColumns = columns.map(column => { - let newColumn = column; - newColumn.render = (text, record, index) => { //前端元素转义 - let valueSpan = record[newColumn.dataIndex + "span"] !== undefined ? record[newColumn.dataIndex + "span"] : record[newColumn.dataIndex]; - switch(newColumn.dataIndex) { - case "name": - return {this.onEdit(record)}} - dangerouslySetInnerHTML={{ __html: valueSpan }} /> - case "operate": - return {this.onEdit(record)}}>编辑 - default: - return
- } - } - return newColumn; - }); - return newColumns; - } - - onOperatesClick = (record, index, operate, flag) => { - const {taxAgentStore : {doDelete}} = this.props; - switch(operate.index.toString()){ - case '0': // 删除 - Modal.confirm({ - title: "信息确认", - content: "确认删除吗?", - onOk() { - doDelete([record.id]) - }, - onCancel() {} + getPermission = () => { + const { getPermission } = this.props.taxAgentStore; + getPermission().then(({ status, data }) => { + if (status) { + this.setState({ permission: data }, () => { + this.getTaxAgentBaseForm(); }); + } + }); + }; + + getTaxAgentBaseForm = () => { + const { taxAgentStore } = this.props; + const { getTaxAgentBaseForm } = taxAgentStore; + getTaxAgentBaseForm().then(({ status, data }) => { + if (status && !_.isEmpty(data)) { + const { devolutionStatus } = data; + this.setState({ devolutionStatus }); + } + }); + }; + + taxAgentBaseSave = (devolutionStatus) => { + Modal.confirm({ + title: "信息确认", + content: `确认${!devolutionStatus ? "停用" : "启用"}分权?`, + onOk: () => { + const paylaod = { devolutionStatus }; + const { taxAgentStore } = this.props; + const { taxAgentBaseSave, doInit, pageObj } = taxAgentStore; + taxAgentBaseSave(paylaod).then(({ status, errormsg }) => { + if (status) { + message.success(`${!devolutionStatus ? "停用" : "启用"}分权成功`); + this.getTaxAgentBaseForm(); + doInit({ current: pageObj.current, pageSize: pageObj.pageSize }); + } else { + message.error( + errormsg || `${!devolutionStatus ? "停用" : "启用"}分权失败` + ); + } + }); + }, + onCancel() {}, + }); + }; + + getTaxAgentForm = (id, current) => { + const { conditions } = this.state; + const { taxAgentStore } = this.props; + const { getTaxAgentForm, getCondition } = taxAgentStore; + getTaxAgentForm({ id }).then(({ status, data }) => { + if (status && !_.isEmpty(data)) { + const [conditionItem] = conditions; + const conditionMap = _.map(conditionItem.items, (it) => { + const key = it.domkey.join(""); + if (it.conditionType === "BROWSER") { + return { + ...it, + browserConditionParam: { + ...it.browserConditionParam, + replaceDatas: _.map(data[key], (b) => ({ + id: b.id, + name: b.content, + })), + }, + viewAttr: current == 1 ? 1 : it.viewAttr, + }; + } else { + if (data[key]) { + return { + ...it, + value: data[key], + viewAttr: current == 1 ? 1 : it.viewAttr, + }; + } + } + return { ...it, viewAttr: current == 1 ? 1 : it.viewAttr }; + }); + this.setState( + { + conditions: [{ defaultshow: true, items: conditionMap }], + }, + () => { + getCondition(this.state.conditions); + } + ); + } + }); + }; + + showEditModal = (editId, current) => { + this.setState( + { + editModalProps: { + ...this.state.editModalProps, + visible: true, + title: editId ? "编辑个税扣缴义务人" : "新增个税扣缴义务人", + btnType: editId ? "edit" : "save", + editId: editId, + editType: current ? "set" : editId && !current ? "edit" : "save", + current: current ? current : 0, + }, + }, + () => { + editId && this.getTaxAgentForm(editId, current); + } + ); + }; + + closeModal = () => { + const { taxAgentStore } = this.props; + const { form, getCondition } = taxAgentStore; + this.setState( + { + editModalProps: { + ...this.state.editModalProps, + title: "新增个税扣缴义务人", + current: 0, + btnType: "save", + editId: "", + editType: "save", + visible: false, + }, + conditions: editConditions, + }, + () => { + form.resetForm(); + getCondition(this.state.conditions); + } + ); + }; + /** + * name:表单提交 + * return {*} + */ + handleSubmit = (module) => { + const { taxAgentStore } = this.props; + const { editModalProps } = this.state; + const { doInit, saveTaxAgent, updateTaxAgent, pageObj } = taxAgentStore; + const { btnType, editId, editType } = editModalProps; + if (btnType === "save") { + // 新增 + this.setState({ + editModalLoading: { + saveloading: true, + }, + }); + const payload = { ...module }; + saveTaxAgent(payload).then(({ status, errormsg, data }) => { + this.setState({ + editModalLoading: { + saveloading: false, + }, + }); + if (status) { + message.success("新增成功"); + this.setState({ + editModalProps: { + ...editModalProps, + editId: data, + current: 1, + btnType: "prev", + }, + }); + doInit({ current: pageObj.current, pageSize: pageObj.pageSize }); + } else { + message.error(errormsg || "新增失败"); + } + }); + } else if (btnType === "edit") { + // 编辑 + this.setState({ + editModalLoading: { + saveloading: true, + }, + }); + const payload = { ...module, id: editId }; + updateTaxAgent(payload).then(({ status, errormsg }) => { + this.setState({ + editModalLoading: { + saveloading: false, + }, + }); + if (status) { + message.success("更新成功"); + if (editType === "edit") { + this.closeModal(); + } else { + this.setState({ + editModalProps: { + ...editModalProps, + current: 1, + btnType: "prev", + }, + }); + } + doInit({ current: pageObj.current, pageSize: pageObj.pageSize }); + } else { + message.error(errormsg || "更新失败"); + } + }); } }; + /** + * name: 删除个税扣缴义务人 + * param {*} agentId + * return {*} + */ + deleteTaxAgent = (agentId) => { + const { taxAgentStore } = this.props; + const { deleteTaxAgent, pageObj, doInit } = taxAgentStore; + Modal.confirm({ + title: "信息确认", + content: `确认要删除吗?`, + onOk: () => { + deleteTaxAgent([agentId]).then(({ status, errormsg }) => { + if (status) { + message.success("删除成功"); + doInit({ current: pageObj.current, pageSize: pageObj.pageSize }); + } else { + message.error(errormsg || "删除失败"); + } + }); + }, + }); + }; render() { const { taxAgentStore } = this.props; - const { loading, hasRight, form, tableStore, showSearchAd, getTableDatas, doSearch, setShowSearchAd, doInsert } = taxAgentStore; - const { modalVisiable, setModalVisiable, doUpdate } = taxAgentStore; + const { + editModalProps, + editModalLoading, + devolutionStatus, + conditions, + permission, + } = this.state; + const { loading, pageObj, dataSource, columns, doInit, hasRight } = + taxAgentStore; - const topTab = [ - ]; - - - - if (!hasRight && !loading) { // 无权限处理 + if (!hasRight && !loading) { + // 无权限处理 return renderNoright(); } - const rightMenu = [// 右键菜单 - // { - // key: 'BTN_COLUMN', - // icon: , - // content: '操作日志', - // onClick: this.showLogView - // }, - ]; - - const initEditModal = () => { - this.setState({ - nameValue: '', - remarkValue: "", - title: "新增个税扣缴义务人", - currentOperate: "add" - }) - } - - const showEditModal = () => { - - initEditModal(); - setModalVisiable(true) - } - - const renderSearchOperationItem = () => { - return
- - {' '} - doSearch(name)} - /> -
- } - const renderTipsLabel = () => { const tipList = [ "1、个税扣缴义务人与档案中的个税扣缴义务人匹配,修改个税扣缴义务人名称,薪资档案的个税扣缴义务人数据同步更新;", - "2、删除个税扣缴义务人需先确认档案里无人员使用该个税扣缴义务人,否则不予删除;" - ] - return ( - - ) - } + "2、删除个税扣缴义务人需先确认档案里无人员使用该个税扣缴义务人,否则不予删除;", + ]; + return ; + }; + + const pagination = { + total: pageObj.total, + showTotal: (total) => `共 ${total} 条`, + showSizeChanger: true, + onShowSizeChange(current, pageSize) { + doInit({ current, pageSize }); + }, + onChange(current) { + doInit({ current, pageSize: pageObj.pageSize }); + }, + }; + const newColumns = _.map( + [ + ...columns, + { + title: "操作", + key: "operation", + render: (text, record) => ( + + ), + }, + ], + (item) => { + if (item.dataIndex === "employeeRange") { + return { + ...item, + render: (text, record) => { + return ( + + ); + }, + }; + } else { + return { ...item }; + } + } + ); return (
- + } // 左侧图标 - iconBgcolor='#F14A2D' // 左侧图标背景色 + icon={} // 左侧图标 + iconBgcolor="#F14A2D" // 左侧图标背景色 showDropIcon={true} // 是否显示下拉按钮 - dropMenuDatas={rightMenu} // 下拉菜单(和页面的右键菜单相同) > - { - this.setState({ selectedKey: v }) - }} - /> - +
- +
+ {permission.isChief && ( + + + + + + )} + +
个税扣缴义务人
+ this.showEditModal()} + /> +
+ } + showGroup> + + +
{renderTipsLabel()} - - - { - modalVisiable && {setModalVisiable(false)}} - onSubmitAdd={(params) => {doInsert(params)}} - operate={this.state.currentOperate} - onSubmitUpdate={(params) => {doUpdate(params)}} - currentId={this.state.currentId} - /> - } - {this.setState({logViewVisiable: false})}} - /> + {editModalProps.visible && ( + + this.setState({ + editModalProps: { + ...editModalProps, + current: 0, + btnType: "edit", + }, + }) + } + onChangeTab={(current) => { + this.setState({ + editModalProps: { + ...editModalProps, + current, + }, + }); + }} + onClose={this.closeModal} + onSubmit={this.handleSubmit} + /> + )} - ) + ); } } diff --git a/pc4mobx/hrmSalary/pages/taxAgent/index.less b/pc4mobx/hrmSalary/pages/taxAgent/index.less index b8805555..e8a39031 100644 --- a/pc4mobx/hrmSalary/pages/taxAgent/index.less +++ b/pc4mobx/hrmSalary/pages/taxAgent/index.less @@ -1,21 +1,81 @@ -.logViewModal { - .searchBar { +.mySalaryBenefitsWrapper { + height: 100%; + + .wea-new-top-wapper { + height: 100%; + } + + .mySalaryTableWrapper { + .wea-search-group { + padding: 0; + + .wea-content { + padding-left: 16px; + + .ant-switch { + margin-top: 5px; + } + } + + .titleWrapper { + width: 100%; display: flex; + justify-content: space-between; + align-items: center; + + i { + color: #2db7f5; + font-size: 18px; + } + } } - .searchBarLabel { - margin-bottom: 10px; + + .ant-table-row:hover { + a.ant-dropdown-link { + display: inline-block; + } } - .searchBarItem { - position: relative; - width: 200px; - margin-left: 10px; - margin-right: 10px; - } - .searchDateRange { - width: 300px; - } - .searchBtn { - position: absolute; - bottom: 0px; + + .operationWapper, + .employeeRangeWapper { + a { + color: #4d7ad8; + } + + a:hover { + text-decoration: none; + } + + a.ant-dropdown-link { + margin-left: 18px; + display: none; + } } + } } + +.logViewModal { + .searchBar { + display: flex; + } + + .searchBarLabel { + margin-bottom: 10px; + } + + .searchBarItem { + position: relative; + width: 200px; + margin-left: 10px; + margin-right: 10px; + } + + .searchDateRange { + width: 300px; + } + + .searchBtn { + position: absolute; + bottom: 0px; + } +} \ No newline at end of file diff --git a/pc4mobx/hrmSalary/pages/taxAgent/personalScope.js b/pc4mobx/hrmSalary/pages/taxAgent/personalScope.js new file mode 100644 index 00000000..304adb8d --- /dev/null +++ b/pc4mobx/hrmSalary/pages/taxAgent/personalScope.js @@ -0,0 +1,218 @@ +/* + * Author: 黎永顺 + * Description: 个税扣缴义务人-人员范围 + * Date: 2022-05-31 09:51:59 + * LastEditTime: 2022-06-01 17:57:42 + */ +import React, { Component } from "react"; +import { message, Modal } from "antd"; +import { inject, observer } from "mobx-react"; +import SlideTaxagentUser from "./slideTaxagentUser"; +import "./index.less"; + +const personScopeWarrper = { + padding: "0 25px", +}; + +@inject("taxAgentStore", "ledgerStore") +@observer +export default class PersonalScope extends Component { + constructor() { + super(); + this.state = { + queryLoading: false, + submitLoading: false, + targetTypeList: [], + employeeStatus: [], + dataSource: [], + columns: [], + pageObj: { + current: 1, + pageSize: 10, + total: 0, + }, + }; + } + componentDidMount() { + this.getTaxAgentRangeForm(); + this.getTaxAgentRangeListInclude(); + } + + getTaxAgentRangeForm = () => { + const { getTaxAgentRangeForm } = this.props.taxAgentStore; + getTaxAgentRangeForm().then(({ status, data }) => { + if (status) { + const { employeeStatus, targetTypeList } = data; + this.setState({ employeeStatus, targetTypeList }); + } + }); + }; + + getTaxAgentRangeListInclude = (pageModule = {}) => { + const { taxAgentId } = this.props; + const { getTaxAgentRangeListInclude } = this.props.taxAgentStore; + this.setState({ queryLoading: true }); + getTaxAgentRangeListInclude({ ...pageModule, taxAgentId }).then( + ({ status, data }) => { + this.setState({ queryLoading: false }); + if (status && !_.isEmpty(data)) { + const { + columns, + list: dataSource, + pageNum: current, + pageSize, + total, + } = data; + this.setState({ + columns, + dataSource, + pageObj: { + current, + pageSize, + total, + }, + }); + } + } + ); + }; + getTaxAgentRangeListExclude = (pageModule = {}) => { + const { taxAgentId } = this.props; + const { getTaxAgentRangeListExclude } = this.props.taxAgentStore; + this.setState({ queryLoading: true }); + getTaxAgentRangeListExclude({ ...pageModule, taxAgentId }).then( + ({ status, data }) => { + this.setState({ queryLoading: false }); + if (status && !_.isEmpty(data)) { + const { + columns, + list: dataSource, + pageNum: current, + pageSize, + total, + } = data; + this.setState({ + columns, + dataSource, + pageObj: { + current, + pageSize, + total, + }, + }); + } + } + ); + }; + + taxAgentRangeDelete = ({ ids, tab }) => { + const { taxAgentRangeDelete } = this.props.taxAgentStore; + const { pageObj } = this.state; + Modal.confirm({ + title: "信息确认", + content: `确认删除该条数据吗?`, + onOk: () => { + taxAgentRangeDelete(ids).then(({ status, errorMsg }) => { + if (status) { + message.success("删除成功"); + tab == "1" + ? this.getTaxAgentRangeListInclude({ + current: pageObj.current, + pageSize: pageObj.pageSize, + }) + : this.getTaxAgentRangeListExclude({ + current: pageObj.current, + pageSize: pageObj.pageSize, + }); + } else { + message.error(errorMsg || "删除失败"); + } + }); + }, + onCancel() {}, + }); + }; + + taxAgentRangeSave = (module) => { + const { taxAgentId } = this.props; + const { pageObj } = this.state; + const { includeType } = module; + const { taxAgentRangeSave } = this.props.taxAgentStore; + this.setState({ submitLoading: true }); + taxAgentRangeSave({ ...module, taxAgentId }).then( + ({ status, errorMsg }) => { + this.setState({ submitLoading: false }); + if (status) { + this.tagAgentRef.closeModal(); + message.success("新增成功"); + includeType == "1" + ? this.getTaxAgentRangeListInclude({ + current: pageObj.current, + pageSize: pageObj.pageSize, + }) + : this.getTaxAgentRangeListExclude({ + current: pageObj.current, + pageSize: pageObj.pageSize, + }); + } else { + message.error(errorMsg || "新增失败"); + } + } + ); + }; + + render() { + const { + dataSource, + columns, + pageObj, + employeeStatus, + targetTypeList, + submitLoading, + queryLoading, + } = this.state; + return ( +
+ (this.tagAgentRef = dom)} + dataSource={dataSource} + columns={columns} + pageObj={pageObj} + submitLoading={submitLoading} + queryLoading={queryLoading} + setPageObj={(params) => { + const { current, pageSize, tab } = params; + this.setState( + { + pageObj: { + ...pageObj, + current, + pageSize, + }, + }, + () => { + tab == "1" + ? this.getTaxAgentRangeListInclude({ ...pageObj, ...params }) + : this.getTaxAgentRangeListExclude({ ...pageObj, ...params }); + } + ); + }} + employeeStatus={employeeStatus} + targetTypeList={targetTypeList} + onDeleteTaxAgent={this.taxAgentRangeDelete} + onTaxAgentSave={this.taxAgentRangeSave} + onTaxAngetSearch={({ targetName, tab }) => { + tab == "1" + ? this.getTaxAgentRangeListInclude({ targetName }) + : this.getTaxAgentRangeListExclude({ targetName }); + }} + onChangeTab={(tab) => { + tab == "1" + ? this.getTaxAgentRangeListInclude() + : this.getTaxAgentRangeListExclude(); + }} + /> +
+ ); + } +} diff --git a/pc4mobx/hrmSalary/pages/taxAgent/slideTaxagentUser.js b/pc4mobx/hrmSalary/pages/taxAgent/slideTaxagentUser.js new file mode 100644 index 00000000..a2c6254b --- /dev/null +++ b/pc4mobx/hrmSalary/pages/taxAgent/slideTaxagentUser.js @@ -0,0 +1,201 @@ +import React from "react"; +import { Icon, Table, message } from "antd"; +import { WeaInputSearch } from "ecCom"; +import AddTaxAgentModal from "./addTaxAgentModal"; + +export default class SlideTaxagentUser extends React.Component { + constructor(props) { + super(props); + this.state = { + addTaxagentModalVisible: false, + includeType: 1, + selectedRowKeys: [], + searchValue: "", + }; + } + + handleTabClick(includeType) { + const { onChangeTab } = this.props; + this.setState( + { + includeType, + }, + () => { + onChangeTab && onChangeTab(includeType); + } + ); + } + + onSelectChange = (selectedRowKeys) => { + this.setState({ selectedRowKeys }); + }; + + handleTabDelete = () => { + const { onDeleteTaxAgent } = this.props; + const { includeType } = this.state; + if (this.state.selectedRowKeys.length == 0) { + message.warning("未选择条目"); + return; + } + onDeleteTaxAgent({ ids: this.state.selectedRowKeys, tab: includeType }); + }; + + handleSearch = (value) => { + const { includeType } = this.state; + const { onTaxAngetSearch } = this.props; + onTaxAngetSearch({ + tab: includeType, + targetName: value, + }); + }; + + closeModal = () => { + this.setState({ + addTaxagentModalVisible: false, + }); + }; + + render() { + const { + includeType, + selectedRowKeys, + searchValue, + addTaxagentModalVisible, + } = this.state; + const { + submitLoading, + queryLoading, + dataSource, + columns: taxAgentColumns, + pageObj, + setPageObj, + employeeStatus, + targetTypeList, + onTaxAgentSave, + } = this.props; + + const rowSelection = { + selectedRowKeys, + onChange: this.onSelectChange, + }; + const pagination = { + total: pageObj.total, + showTotal: (total) => `共 ${total} 条`, + showSizeChanger: true, + onShowSizeChange: (current, pageSize) => { + setPageObj && + setPageObj({ + current, + pageSize, + tab: includeType, + targetName: searchValue, + }); + }, + onChange: (current) => { + setPageObj && + setPageObj({ + current, + tab: includeType, + targetName: searchValue, + }); + }, + }; + + return ( +
+
+
+ { + this.handleTabClick(1); + }}> + 关联人员范围 + {" "} + {" "} | {" "}{" "} + { + this.handleTabClick(0); + }}> + 从范围中排除 + +
+
+
+ { + this.handleTabDelete(); + }} + /> + this.setState({ addTaxagentModalVisible: true })} + /> +
+ { + this.setState({ searchValue: value }); + }} + onSearch={(value) => { + this.handleSearch(value); + }} + /> +
+
+
+
+ + + + onTaxAgentSave && + onTaxAgentSave({ ...val, includeType: includeType }) + } + visible={addTaxagentModalVisible} + onCancel={() => { + this.setState({ addTaxagentModalVisible: false }); + }} + /> + + ); + } +} diff --git a/pc4mobx/hrmSalary/stores/cumDeduct.js b/pc4mobx/hrmSalary/stores/cumDeduct.js index 42ba3d22..6803d625 100644 --- a/pc4mobx/hrmSalary/stores/cumDeduct.js +++ b/pc4mobx/hrmSalary/stores/cumDeduct.js @@ -1,10 +1,10 @@ -import { observable, action, toJS } from 'mobx'; -import { message } from 'antd'; -import { WeaForm, WeaTableNew } from 'comsMobx'; +import { observable, action, toJS } from "mobx"; +import { message } from "antd"; +import { WeaForm, WeaTableNew } from "comsMobx"; -import * as API from '../apis/cumDeduct'; // 引入API接口文件 -import * as TaxAgentApi from '../apis/taxAgent' -import { removePropertyCondition } from '../util/response'; +import * as API from "../apis/cumDeduct"; // 引入API接口文件 +import * as TaxAgentApi from "../apis/taxAgent"; +import { removePropertyCondition } from "../util/response"; const { TableStore } = WeaTableNew; @@ -16,61 +16,87 @@ export class CumDeductStore { @observable hasRight = true; // 判断用户是有权限查看当前页面: 没有权限渲染无权限页面,有权限渲染数据 @observable showSearchAd = false; // 高级搜索面板显示 @observable loading = true; // 数据加载状态 + @observable slideLoading = true; // 详情数据加载状态 @observable step = 0; // 当前所在第几步 @observable slideVisiable = false; // slide 是否隐藏 - @observable slideDataSource = []; - - @observable importResult = {} + @observable importResult = {}; @observable modalVisiable = false; // 模态框显示 - @observable currentRecord = {}; // 当前record + @observable columns = []; + @observable pageObj = {}; //列表数据 + @observable dataSource = []; //列表数据 + @observable slideColumns = []; //详情列数据 + @observable slidePageObj = {}; //详情分页列表数据 + @observable slideTableDataSource = []; //详情列表数据 - // ** 设置导入参数 start ** + // ** 设置导入参数 start ** @action setSlideDataSource = (slideDataSource) => { - this.slideDataSource = slideDataSource - } + this.slideDataSource = slideDataSource; + }; @action setImportResult = (importResult) => { - this.importResult = importResult - } - // ** 设置导入参数 end ** + this.importResult = importResult; + }; + // ** 设置导入参数 end ** @action - setCurrentRecord = currentRecord => this.currentRecord = currentRecord; + setColumns = (columns) => (this.columns = columns); @action - setModalVisiable = visiable => this.modalVisiable = visiable + setPageObj = (pageObj) => (this.pageObj = pageObj); @action - setStep = step => this.step = step; + setDataSource = (dataSource) => (this.dataSource = dataSource); + + // 详情列表数据 + @action + setSlideColumns = (columns) => (this.slideColumns = columns); @action - setSlideVisiable = slideVisiable => this.slideVisiable = slideVisiable; + setSlidePageObj = (pageObj) => (this.slidePageObj = pageObj); + @action + setSlideTableDataSource = (dataSource) => + (this.slideTableDataSource = dataSource); + + @action + setCurrentRecord = (currentRecord) => (this.currentRecord = currentRecord); + + @action + setModalVisiable = (visiable) => (this.modalVisiable = visiable); + + @action + setStep = (step) => (this.step = step); + + @action + setSlideVisiable = (slideVisiable) => (this.slideVisiable = slideVisiable); // 初始化操作 @action doInit = () => { this.getCondition(); this.getTableDatas(); - } + }; // 获得高级搜索表单数据 @action getCondition = () => { - API.getCumDeductSaCondition().then(action(res => { - if (res.status) { // 接口请求成功/失败处理 - let condition = removePropertyCondition(res.data.condition) - this.condition = condition; - this.form.initFormFields(condition); // 渲染高级搜索form表单 - } else { - message.error(res.errormsg || '接口调用失败!') - } - })); - } + API.getCumDeductSaCondition().then( + action((res) => { + if (res.status) { + // 接口请求成功/失败处理 + let condition = removePropertyCondition(res.data.condition); + this.condition = condition; + this.form.initFormFields(condition); // 渲染高级搜索form表单 + } else { + message.error(res.errormsg || "接口调用失败!"); + } + }) + ); + }; // 渲染table数据 @action @@ -78,71 +104,106 @@ export class CumDeductStore { params = params || {}; this.loading = true; let requestParams = this.form.getFormParams() || {}; - requestParams = {...requestParams, ...params} - API.getCumDeductList(requestParams).then(action(res => { - if (res.status) { // 接口请求成功/失败处理 - this.tableStore.getDatas(res.data.datas); // table 请求数据 - } else { - message.error(res.errormsg || '接口调用失败!') - } - this.loading = false; - })); - } + requestParams = { + ...requestParams, + ...params, + current: this.pageObj.current, + pageSize: this.pageObj.pageSize, + }; + API.getCumDeductList(requestParams).then( + action(({ status, data, errormsg }) => { + this.loading = false; + if (status) { + // 接口请求成功/失败处理 + const { columns, list, total, pageNum: current, pageSize } = data; + this.setColumns(columns); + this.setDataSource(list); + this.setPageObj({ + total, + current, + pageSize, + }); + } else { + this.setDataSource([]); + this.setPageObj({ + ...this.pageObj, + total: 0, + }); + message.error(errormsg || "接口调用失败!"); + } + }) + ); + }; @action - setShowSearchAd = bool => this.showSearchAd = bool; + setShowSearchAd = (bool) => (this.showSearchAd = bool); // 高级搜索 - 搜索 @action doSearch = () => { this.getTableDatas(); this.showSearchAd = false; - } + }; // 导入 @action importFile = (params) => { - API.importCumDeductParam(params).then(action(res => { - if(res.status) { - this.importResult = res.data - } - })) - } + API.importCumDeductParam(params).then( + action((res) => { + if (res.status) { + this.importResult = res.data; + } + }) + ); + }; // 导入预览 @action previewImport = (params) => { - API.importCumDeductPreview(params).then(action(res => { - if(res.status) { - this.slideDataSource = res.data.preview - } else { - message.error(res.errormsg || '预览失败') - } - })) - } + API.importCumDeductPreview(params).then( + action((res) => { + if (res.status) { + this.slideDataSource = res.data.preview; + } else { + message.error(res.errormsg || "预览失败"); + } + }) + ); + }; // 导出 @action exportCumDeductList = (ids = "") => { - API.exportCumDeductList(ids) - } + API.exportCumDeductList(ids); + }; // 查询明细 @action getCumDeductDetailList = (id, param = {}) => { - let requestParams = {"accumulatedSpecialAdditionalDeductionId": id}; - requestParams = {...requestParams, ...param} - API.getCumDeductDetailList(requestParams).then(res => { - if(res.status) { - if (res.status) { // 接口请求成功/失败处理 - this.slideTableStore.getDatas(res.data.datas); // table 请求数据 + let requestParams = { accumulatedSpecialAdditionalDeductionId: id }; + requestParams = { ...requestParams, ...param }; + this.slideLoading = true; + API.getCumDeductDetailList(requestParams).then( + ({ data, status, errormsg }) => { + this.slideLoading = false; + if (status) { + const { columns, list, total, pageNum: current, pageSize } = data; + this.setSlideColumns(columns); + this.setSlideTableDataSource(list); + this.setSlidePageObj({ + total, + current, + pageSize, + }); } else { - message.error(res.errormsg || '接口调用失败!') + this.setSlideTableDataSource(list); + this.setSlidePageObj({ + ...this.slidePageObj, + total: 0, + }); + message.error(errormsg || "接口调用失败!"); } } - }) - } + ); + }; // 导出明细 @action exportCumDeductDetailList = (id, ids = "") => { - API.exportCumDeductDetailList(id, ids) - } - - - -} \ No newline at end of file + API.exportCumDeductDetailList(id, ids); + }; +} diff --git a/pc4mobx/hrmSalary/stores/cumSituation.js b/pc4mobx/hrmSalary/stores/cumSituation.js index 500ad050..999a367a 100644 --- a/pc4mobx/hrmSalary/stores/cumSituation.js +++ b/pc4mobx/hrmSalary/stores/cumSituation.js @@ -1,10 +1,9 @@ -import { observable, action, toJS } from 'mobx'; -import { message } from 'antd'; -import { WeaForm, WeaTableNew } from 'comsMobx'; -import { removePropertyCondition } from '../util/response'; +import { observable, action, toJS } from "mobx"; +import { message } from "antd"; +import { WeaForm, WeaTableNew } from "comsMobx"; +import { removePropertyCondition } from "../util/response"; -import * as API from '../apis/cumSituation'; // 引入API接口文件 -import * as TaxAgentApi from '../apis/taxAgent' +import * as API from "../apis/cumSituation"; // 引入API接口文件 const { TableStore } = WeaTableNew; @@ -19,56 +18,84 @@ export class CumSituationStore { @observable step = 0; // 当前所在第几步 @observable slideVisiable = false; // slide 是否隐藏 @observable slideDataSource = []; - @observable importResult = {} + @observable importResult = {}; @observable modalVisiable = false; // 模态框显示 @observable currentRecord = {}; // 当前record + @observable columns = []; + @observable pageObj = {}; //列表数据 + @observable dataSource = []; //列表数据 + @observable slideColumns = []; //详情列数据 + @observable slidePageObj = {}; //详情分页列表数据 + @observable slideTableDataSource = []; //详情列表数据 // ** 设置导入参数 start ** @action setSlideDataSource = (slideDataSource) => { - this.slideDataSource = slideDataSource - } + this.slideDataSource = slideDataSource; + }; @action setImportResult = (importResult) => { - this.importResult = importResult - } + this.importResult = importResult; + }; // ** 设置导入参数 end ** @action - setCurrentRecord = currentRecord => this.currentRecord = currentRecord; + setColumns = (columns) => (this.columns = columns); @action - setModalVisiable = visiable => this.modalVisiable = visiable + setPageObj = (pageObj) => (this.pageObj = pageObj); @action - setStep = step => this.step = step; + setDataSource = (dataSource) => (this.dataSource = dataSource); + + // 详情列表数据 + @action + setSlideColumns = (columns) => (this.slideColumns = columns); @action - setSlideVisiable = slideVisiable => this.slideVisiable = slideVisiable; + setSlidePageObj = (pageObj) => (this.slidePageObj = pageObj); + @action + setSlideTableDataSource = (dataSource) => + (this.slideTableDataSource = dataSource); + + @action + setCurrentRecord = (currentRecord) => (this.currentRecord = currentRecord); + + @action + setModalVisiable = (visiable) => (this.modalVisiable = visiable); + + @action + setStep = (step) => (this.step = step); + + @action + setSlideVisiable = (slideVisiable) => (this.slideVisiable = slideVisiable); // 初始化操作 @action doInit = () => { this.getCondition(); this.getTableDatas(); - } + }; // 获得高级搜索表单数据 @action getCondition = () => { - API.getCumSituationSaCondition().then(action(res => { - if (res.status) { // 接口请求成功/失败处理 - let condition = removePropertyCondition(res.data.condition) - this.condition = condition; - this.form.initFormFields(condition); // 渲染高级搜索form表单 - } else { - message.error(res.errormsg || '接口调用失败!') - } - })); - } + API.getCumSituationSaCondition().then( + action((res) => { + if (res.status) { + // 接口请求成功/失败处理 + let condition = removePropertyCondition(res.data.condition); + this.condition = condition; + this.form.initFormFields(condition); // 渲染高级搜索form表单 + } else { + message.error(res.errormsg || "接口调用失败!"); + } + }) + ); + }; // 渲染table数据 @action @@ -76,72 +103,102 @@ export class CumSituationStore { params = params || {}; this.loading = true; let requestParams = this.form.getFormParams() || {}; - requestParams = {...requestParams, ...params} - API.getCumSituationList(requestParams).then(action(res => { - if (res.status) { // 接口请求成功/失败处理 - this.tableStore.getDatas(res.data.datas); // table 请求数据 - } else { - message.error(res.errormsg || '接口调用失败!') - } - this.loading = false; - })); - } + requestParams = { ...requestParams, ...params }; + API.getCumSituationList(requestParams).then( + action(({ status, data, errormsg }) => { + this.loading = false; + if (status) { + // 接口请求成功/失败处理 + const { columns, list, total, pageNum: current, pageSize } = data; + this.setColumns(columns); + this.setDataSource(list); + this.setPageObj({ + total, + current, + pageSize, + }); + } else { + this.setDataSource([]); + this.setPageObj({ + ...this.pageObj, + total: 0, + }); + message.error(errormsg || "接口调用失败!"); + } + }) + ); + }; @action - setShowSearchAd = bool => this.showSearchAd = bool; + setShowSearchAd = (bool) => (this.showSearchAd = bool); // 高级搜索 - 搜索 @action doSearch = () => { this.getTableDatas(); this.showSearchAd = false; - } + }; -// 导入 + // 导入 @action importFile = (params) => { - API.importCumSituationParam(params).then(action(res => { - if(res.status) { - this.importResult = res.data - } else { - message.error(res.errormsg || '接口调用失败!') - } - })) - } + API.importCumSituationParam(params).then( + action((res) => { + if (res.status) { + this.importResult = res.data; + } else { + message.error(res.errormsg || "接口调用失败!"); + } + }) + ); + }; // 导入预览 @action previewImport = (params) => { - API.importCumSituationPreview(params).then(action(res => { - if(res.status) { - this.slideDataSource = res.data.preview - } else { - message.error(res.errormsg || '接口调用失败!') - } - })) - } + API.importCumSituationPreview(params).then( + action((res) => { + if (res.status) { + this.slideDataSource = res.data.preview; + } else { + message.error(res.errormsg || "接口调用失败!"); + } + }) + ); + }; // 导出 @action exportCumSituationList = (ids = "") => { - API.exportCumSituationList(ids) - } + API.exportCumSituationList(ids); + }; // 查询明细 @action getCumDeductDetailList = (id, param = {}) => { - let requestParams = {"accumulatedSituationId": id}; - requestParams = {...requestParams, ...param} - API.getCumSituationDetailList(requestParams).then(res => { - if(res.status) { - if (res.status) { // 接口请求成功/失败处理 - this.slideTableStore.getDatas(res.data.datas); // table 请求数据 + let requestParams = { accumulatedSituationId: id }; + requestParams = { ...requestParams, ...param }; + API.getCumSituationDetailList(requestParams).then( + ({ status, data, errormsg }) => { + if (status) { + // 接口请求成功/失败处理 + const { columns, list, total, pageNum: current, pageSize } = data; + this.setSlideColumns(columns); + this.setSlideTableDataSource(list); + this.setSlidePageObj({ + total, + current, + pageSize, + }); } else { - message.error(res.errormsg || '接口调用失败!') + this.setSlideTableDataSource([]); + this.setSlidePageObj({ + ...this.slidePageObj, + total: 0, + }); + message.error(errormsg || "接口调用失败!"); } } - }) - } + ); + }; // 导出明细 @action exportCumSituationDetailList = (id, ids = "") => { - API.exportCumSituationDetailList(id, ids) - } - - -} \ No newline at end of file + API.exportCumSituationDetailList(id, ids); + }; +} diff --git a/pc4mobx/hrmSalary/stores/ledger.js b/pc4mobx/hrmSalary/stores/ledger.js index 33279240..ca3b7b94 100644 --- a/pc4mobx/hrmSalary/stores/ledger.js +++ b/pc4mobx/hrmSalary/stores/ledger.js @@ -1,10 +1,10 @@ -import { observable, action, toJS } from 'mobx'; -import { message } from 'antd'; -import { WeaForm, WeaTableNew } from 'comsMobx'; +import { observable, action, toJS } from "mobx"; +import { message } from "antd"; +import { WeaForm, WeaTableNew } from "comsMobx"; -import * as API from '../apis/ledger'; // 引入API接口文件 -import { tempateColumns } from '../pages/payroll/columns'; -import { notNull } from '../util/validate'; +import * as API from "../apis/ledger"; // 引入API接口文件 +import { tempateColumns } from "../pages/payroll/columns"; +import { notNull } from "../util/validate"; const { TableStore } = WeaTableNew; @@ -16,20 +16,20 @@ export class LedgerStore { @observable showSearchAd = false; // 高级搜索面板显示 @observable loading = true; // 数据加载状态 @observable salarySobId = ""; - @observable includeType=1; // 0:排除、1:包含 + @observable includeType = 1; // 0:排除、1:包含 @observable userTableStore = {}; @observable addUserModalVisible = false; @observable itemGroups = [ { - id:"default", + id: "default", name: "未分类", - items: [] - } + items: [], + }, ]; @observable salaryItemTableStore = new TableStore(); - @observable empBrowserList = [] - @observable empFields = [] - @observable excludeIds = [] + @observable empBrowserList = []; + @observable empFields = []; + @observable excludeIds = []; @observable addCategoryVisible = false; // 薪资项目-添加分类Modal @observable ruleOptionList = []; // 第四步规则可选项目列表 @@ -47,144 +47,163 @@ export class LedgerStore { @action initSlideData = () => { this.salarySobId = ""; - this.includeType = 1 - this.userTableStore = {} - this.addUserModalVisible = false + this.includeType = 1; + this.userTableStore = {}; + this.addUserModalVisible = false; this.itemGroups = [ { - id:"default", + id: "default", name: "未分类", - items: [] - } + items: [], + }, ]; - this.empBrowserList = [] - this.empFields = [] - this.excludeIds = [] - this.ruleOptionList = [] + this.empBrowserList = []; + this.empFields = []; + this.excludeIds = []; + this.ruleOptionList = []; this.sobItemRuleDataSource = []; // 第四步规则列表 this.ledgerRuleList = []; this.baseInfoRequest = {}; this.userSelectedList = []; - } + }; + @observable columns = []; + @observable pageObj = {}; //列表数据 + @observable dataSource = []; //列表数据 + + @action + setColumns = (columns) => (this.columns = columns); + + @action + setPageObj = (pageObj) => (this.pageObj = pageObj); + + @action + setDataSource = (dataSource) => (this.dataSource = dataSource); // 设置员工字段 @action - setEmpFields = (empFields) => this.empFields = empFields + setEmpFields = (empFields) => (this.empFields = empFields); @action - setUserSelectedList = userSelectedList => this.userSelectedList = userSelectedList + setUserSelectedList = (userSelectedList) => + (this.userSelectedList = userSelectedList); @action - setBaseInfoRequest = baseInfoRequest => this.baseInfoRequest = baseInfoRequest + setBaseInfoRequest = (baseInfoRequest) => + (this.baseInfoRequest = baseInfoRequest); @action - setSobItemRuleDataSource = sobItemRuleDataSource => this.sobItemRuleDataSource = sobItemRuleDataSource + setSobItemRuleDataSource = (sobItemRuleDataSource) => + (this.sobItemRuleDataSource = sobItemRuleDataSource); @action - setAddCategoryVisible = addCategoryVisible => this.addCategoryVisible = addCategoryVisible + setAddCategoryVisible = (addCategoryVisible) => + (this.addCategoryVisible = addCategoryVisible); @action - setExcludeIds = excludeIds => this.excludeIds = excludeIds - + setExcludeIds = (excludeIds) => (this.excludeIds = excludeIds); + @action - addExcludeIds = id => { - let excludeIds = [...this.excludeIds] - excludeIds.push(id) - this.excludeIds = excludeIds - } + addExcludeIds = (id) => { + let excludeIds = [...this.excludeIds]; + excludeIds.push(id); + this.excludeIds = excludeIds; + }; @action addEmpFields = (fieldId) => { let sortedIndex = 1; - if(this.empFields.length > 0) { - let lastSortedIndex = this.empFields[this.empFields.length - 1].sortedIndex - sortedIndex = parseInt(lastSortedIndex) + 1 + if (this.empFields.length > 0) { + let lastSortedIndex = + this.empFields[this.empFields.length - 1].sortedIndex; + sortedIndex = parseInt(lastSortedIndex) + 1; } let item = { fieldId, sortedIndex, - canDelete: true - } - let result = [...this.empFields] - result.push(item) - this.empFields = result - this.userSelectedList = this.empFields.map(item => { - item = {...item} - item.key = item.fieldId - if(!item.showname || item.showname == "") { - this.empBrowserList.map(bitem => { - if(bitem.key == item.fieldId) { - item.showname = bitem.showname + canDelete: true, + }; + let result = [...this.empFields]; + result.push(item); + this.empFields = result; + this.userSelectedList = this.empFields.map((item) => { + item = { ...item }; + item.key = item.fieldId; + if (!item.showname || item.showname == "") { + this.empBrowserList.map((bitem) => { + if (bitem.key == item.fieldId) { + item.showname = bitem.showname; } - }) + }); } return item; - }) - } + }); + }; @action - setItemGroups = itemGroups => this.itemGroups = itemGroups + setItemGroups = (itemGroups) => (this.itemGroups = itemGroups); @action - addItemGroup = name => { - if(!name || name == "" || name.trim() == "") { - message.warning("分类名称不能为空") - return + addItemGroup = (name) => { + if (!name || name == "" || name.trim() == "") { + message.warning("分类名称不能为空"); + return; } - let itemGroups = [...this.itemGroups] + let itemGroups = [...this.itemGroups]; let flag = false; - itemGroups.map(item => { - if(item.name == name) { + itemGroups.map((item) => { + if (item.name == name) { flag = true; } - }) - if(flag) { - message.warning("分类已存在") - return + }); + if (flag) { + message.warning("分类已存在"); + return; } - let item = {name, items: []} - itemGroups.unshift(item) - this.setItemGroups(itemGroups) - this.addCategoryVisible = false - } + let item = { name, items: [] }; + itemGroups.unshift(item); + this.setItemGroups(itemGroups); + this.addCategoryVisible = false; + }; @action addItemsToGroup = (title, list) => { - let itemGroups = [...this.itemGroups] - itemGroups.map(item => { - if(item.name == title) { - item.items = item.items ? item.items.concat(list) : list + let itemGroups = [...this.itemGroups]; + itemGroups.map((item) => { + if (item.name == title) { + item.items = item.items ? item.items.concat(list) : list; } - }) + }); this.setItemGroups(itemGroups); - } + }; @action - addCategoryList = item => { - let list = [...this.categoryList] - list.push(item) - this.categoryList = list - } - - @action - removeCategoryList = item => { - let list = [...this.categoryList] - list.filter(i => item.name != i.name) + addCategoryList = (item) => { + let list = [...this.categoryList]; + list.push(item); this.categoryList = list; - } + }; @action - setAddUserModalVisible = addUserModalVisible => this.addUserModalVisible = addUserModalVisible; + removeCategoryList = (item) => { + let list = [...this.categoryList]; + list.filter((i) => item.name != i.name); + this.categoryList = list; + }; @action - setUserTableStore = userTableStore => this.userTableStore = userTableStore; + setAddUserModalVisible = (addUserModalVisible) => + (this.addUserModalVisible = addUserModalVisible); @action - setIncludeType = includeType => this.includeType = includeType + setUserTableStore = (userTableStore) => + (this.userTableStore = userTableStore); @action - setSalarySobId = salarySobId => this.salarySobId = salarySobId; + setIncludeType = (includeType) => (this.includeType = includeType); + + @action + setSalarySobId = (salarySobId) => (this.salarySobId = salarySobId); // 初始化操作 @action @@ -201,9 +220,9 @@ export class LedgerStore { attendCycleType: "1", attendCycleFromDay: "1", socialSecurityCycleType: "1", - description: "" - }) - } + description: "", + }); + }; @action initBaseInfoRequest = () => { @@ -216,468 +235,488 @@ export class LedgerStore { attendCycleType: "1", attendCycleFromDay: "1", socialSecurityCycleType: "1", - description: "" - }) - } + description: "", + }); + }; // 获得高级搜索表单数据 @action getCondition = () => { - API.getCondition().then(action(res => { - if (res.api_status) { // 接口请求成功/失败处理 - this.condition = res.condition; - this.form.initFormFields(res.condition); // 渲染高级搜索form表单 - } else { - message.error(res.errormsg || '接口调用失败!') - } - })); - } + API.getCondition().then( + action((res) => { + if (res.api_status) { + // 接口请求成功/失败处理 + this.condition = res.condition; + this.form.initFormFields(res.condition); // 渲染高级搜索form表单 + } else { + message.error(res.errormsg || "接口调用失败!"); + } + }) + ); + }; // 渲染table数据 @action getTableDatas = (params) => { this.loading = true; - API.getLedgerList(params).then(action(res => { - if (res.status) { // 接口请求成功/失败处理 - this.tableStore.getDatas(res.data.datas); // table 请求数据 - } else { - message.error(res.errormsg || '接口调用失败!') - } - this.loading = false; - })); - } + API.getLedgerList(params).then( + action(({ status, data, errormsg }) => { + this.loading = false; + if (status) { + // 接口请求成功/失败处理 + const { columns, list, total, pageNum: current, pageSize } = data; + this.setColumns(columns); + this.setDataSource(list); + this.setPageObj({ + total, + current, + pageSize, + }); + } else { + this.setDataSource([]); + this.setPageObj({ + ...this.pageObj, + total: 0, + }); + message.error(errormsg || "接口调用失败!"); + } + }) + ); + }; @action - setShowSearchAd = bool => this.showSearchAd = bool; + setShowSearchAd = (bool) => (this.showSearchAd = bool); // 高级搜索 - 搜索 @action doSearch = () => { this.getTableDatas(); this.showSearchAd = false; - } + }; // 复制 @action doCopy = (id, name) => { return new Promise((resolve, reject) => { - API.duplicateLedger({id, name}).then(res => { - if(res.status) { - message.success("复制成功") + API.duplicateLedger({ id, name }).then((res) => { + if (res.status) { + message.success("复制成功"); this.getTableDatas({}); resolve(); } else { - message.error(res.errormsg || "复制失败") + message.error(res.errormsg || "复制失败"); reject(); } - }) - }) - - } - + }); + }); + }; //启用/禁用薪资帐套 @action changeLedgerStatus = (id, disable) => { - API.changeLedgerStatus({id, disable}).then(res => { - if(res.status) { + API.changeLedgerStatus({ id, disable }).then((res) => { + if (res.status) { this.getTableDatas({}); - message.success("修改成功") + message.success("修改成功"); } else { - message.error(res.errormsg || "修改失败") + message.error(res.errormsg || "修改失败"); } - }) - } + }); + }; validateBaseFrom(params) { - if(!notNull(params.name)) { + if (!notNull(params.name)) { message.warning("名称不能为空"); - return false + return false; } - if(!notNull(params.taxableItems)) { + if (!notNull(params.taxableItems)) { message.warning("薪资类型不能为空"); - return false + return false; } - if(!notNull(params.salaryCycleType)) { + if (!notNull(params.salaryCycleType)) { message.warning("薪资周期不能为空"); - return false + return false; } - if(!notNull(params.salaryCycleFromDay)) { + if (!notNull(params.salaryCycleFromDay)) { message.warning("薪资周期不能为空"); - return false + return false; } - if(!notNull(params.taxCycleType)) { + if (!notNull(params.taxCycleType)) { message.warning("税款所属期不能为空"); - return false + return false; } - if(!notNull(params.attendCycleType)) { + if (!notNull(params.attendCycleType)) { message.warning("考勤周期不能为空"); - return false + return false; } - if(!notNull(params.attendCycleFromDay)) { + if (!notNull(params.attendCycleFromDay)) { message.warning("考勤周期不能为空"); - return false + return false; } - if(!notNull(params.socialSecurityCycleType)) { + if (!notNull(params.socialSecurityCycleType)) { message.warning("福利台账月份不能为空"); - return false + return false; } - return true + return true; } - //保存薪资帐套基本信息 @action saveLedgerBasic = (params) => { - if(!this.validateBaseFrom(params)) { - return + if (!this.validateBaseFrom(params)) { + return; } return new Promise((resolve, reject) => { - API.saveLedgerBasic(params).then(res => { - if(res.status) { + API.saveLedgerBasic(params).then((res) => { + if (res.status) { this.salarySobId = res.data; - resolve() - this.getTableDatas({}) - message.success("保存成功") + resolve(); + this.getTableDatas({}); + message.success("保存成功"); } else { - reject(res.errormsg || "保存失败") - message.error(res.errormsg || "保存失败") + reject(res.errormsg || "保存失败"); + message.error(res.errormsg || "保存失败"); } - }) - }) - - } + }); + }); + }; //删除薪资帐套 @action deleteLedger = (params) => { - API.deleteLedger(params).then(res => { - if(res.status) { - message.success("删除成功") + API.deleteLedger(params).then((res) => { + if (res.status) { + message.success("删除成功"); this.getTableDatas({}); } else { - message.error(res.errormsg || "删除失败") + message.error(res.errormsg || "删除失败"); } - }) - } + }); + }; validateLedgerPersonRange(params) { - if(!notNull(params.includeType)) { - message.warning("对象类型不能为空") - return false + if (!notNull(params.includeType)) { + message.warning("对象类型不能为空"); + return false; } - if(!notNull(params.targetParams)) { - message.warning("对象类型不能为空") - return false + if (!notNull(params.targetParams)) { + message.warning("对象类型不能为空"); + return false; } - if(!notNull(params.employeeStatus)) { - message.warning("选择员工状态不能为空") - return false + if (!notNull(params.employeeStatus)) { + message.warning("选择员工状态不能为空"); + return false; } - return true + return true; } //保存薪资帐套人员范围 @action saveLedgerPersonRange = (params) => { - if(!this.validateLedgerPersonRange(params)) { - return + if (!this.validateLedgerPersonRange(params)) { + return; } - API.saveLedgerPersonRange(params).then(res => { - if(res.status) { - if(this.includeType == 1) { - this.getLedgerPersonRangeInclude({salarySobId: this.salarySobId}) + API.saveLedgerPersonRange(params).then((res) => { + if (res.status) { + if (this.includeType == 1) { + this.getLedgerPersonRangeInclude({ salarySobId: this.salarySobId }); } else { - this.getLedgerPersonRangeExclude({salarySobId: this.salarySobId}) + this.getLedgerPersonRangeExclude({ salarySobId: this.salarySobId }); } this.addUserModalVisible = false; - message.success("添加成功") + message.success("添加成功"); } else { - message.error(res.errormsg || "添加失败") + message.error(res.errormsg || "添加失败"); } - }) - } + }); + }; //薪资帐套人员范围(包含)列表 getLedgerPersonRangeInclude = (params) => { - API.getLedgerPersonRangeInclude(params).then(res => { - if(res.status) { - this.setUserTableStore(res.data) + API.getLedgerPersonRangeInclude(params).then((res) => { + if (res.status) { + this.setUserTableStore(res.data); } else { - message.error(res.errormsg || "获取失败") + message.error(res.errormsg || "获取失败"); } - }) - } + }); + }; //薪资帐套人员范围(排除)列表 getLedgerPersonRangeExclude = (params) => { - API.getLedgerPersonRangeExclude(params).then(res => { - if(res.status) { - this.setUserTableStore(res.data) + API.getLedgerPersonRangeExclude(params).then((res) => { + if (res.status) { + this.setUserTableStore(res.data); } else { - message.error(res.errormsg || "获取失败") + message.error(res.errormsg || "获取失败"); } - }) - } + }); + }; //删除薪资帐套人员范围 deleteLedgerPersonRange = (params) => { - API.deleteLedgerPersonRange(params).then(res => { - if(res.status) { - if(this.includeType == 1) { - this.getLedgerPersonRangeInclude({salarySobId: this.salarySobId}) + API.deleteLedgerPersonRange(params).then((res) => { + if (res.status) { + if (this.includeType == 1) { + this.getLedgerPersonRangeInclude({ salarySobId: this.salarySobId }); } else { - this.getLedgerPersonRangeExclude({salarySobId: this.salarySobId}) + this.getLedgerPersonRangeExclude({ salarySobId: this.salarySobId }); } - message.success("删除成功") + message.success("删除成功"); } else { - message.error(res.errormsg || "删除失败") + message.error(res.errormsg || "删除失败"); } - }) - } + }); + }; - // 薪资项目可选列表 + // 薪资项目可选列表 @action listSalaryItem = (searchValue = "", current = 1) => { - let excludeIds = [] - this.itemGroups.map(item => { - item.items.map(i => { - excludeIds.push(i.salaryItemId) - }) - }) - this.loading = true - API.listSalaryItem({name:searchValue, excludeIds, current}).then(res => { - if(res.status) { - if(res.data.list) { - this.addSalaryItemDataSource = res.data.list.map(item => { - item = {...item} - item.key = item.id - return item; - }); + let excludeIds = []; + this.itemGroups.map((item) => { + item.items.map((i) => { + excludeIds.push(i.salaryItemId); + }); + }); + this.loading = true; + API.listSalaryItem({ name: searchValue, excludeIds, current }).then( + (res) => { + if (res.status) { + if (res.data.list) { + this.addSalaryItemDataSource = res.data.list.map((item) => { + item = { ...item }; + item.key = item.id; + return item; + }); + } else { + this.addSalaryItemDataSource = []; + } + + this.addSalaryItemColumns = res.data.columns; + this.addSalaryItemPageInfo = res.data; + // this.salaryItemTableStore.getDatas(res.data.datas); } else { - this.addSalaryItemDataSource = [] + message.error(res.errormsg || "获取数据失败"); } - - this.addSalaryItemColumns = res.data.columns; - this.addSalaryItemPageInfo = res.data - // this.salaryItemTableStore.getDatas(res.data.datas); - } else { - message.error(res.errormsg || "获取数据失败") + this.loading = false; } - this.loading = false - }) - } + ); + }; @action empFieldList = () => { - API.empFieldList().then(res => { - if(res.status) { - this.empBrowserList = res.data.map(item => {return {showname: item.name, key: item.id, selected: false}}) + API.empFieldList().then((res) => { + if (res.status) { + this.empBrowserList = res.data.map((item) => { + return { showname: item.name, key: item.id, selected: false }; + }); } else { - message.error(res.errormsg || "获取失败") + message.error(res.errormsg || "获取失败"); } - }) - } + }); + }; @action saveLedgerItem = () => { - let itemGroups = [...this.itemGroups] - itemGroups = itemGroups.map(item => { - let result = {...item} - if(result.items) { - result.items = result.items.map((i,index) => ( - { + let itemGroups = [...this.itemGroups]; + itemGroups = itemGroups + .map((item) => { + let result = { ...item }; + if (result.items) { + result.items = result.items.map((i, index) => ({ salaryItemId: i.salaryItemId, sortedIndex: index + 1, - formulaId: i.formulaId - } - )) - return result; - } - }).filter(item => item) + formulaId: i.formulaId, + })); + return result; + } + }) + .filter((item) => item); let params = { salarySobId: this.salarySobId, empFields: this.empFields, - itemGroups: itemGroups.filter(item => item.id != "default"), - items: itemGroups.filter(item => item.id == 'default')[0].items - } + itemGroups: itemGroups.filter((item) => item.id != "default"), + items: itemGroups.filter((item) => item.id == "default")[0].items, + }; return new Promise((resolve, reject) => { - API.saveLedgerItem(params).then(res => { - if(res.status) { - resolve() + API.saveLedgerItem(params).then((res) => { + if (res.status) { + resolve(); message.success("保存成功"); } else { - reject() - message.error(res.errormsg || "保存失败") + reject(); + message.error(res.errormsg || "保存失败"); } - }) - }) - - } - + }); + }); + }; + // 调薪计薪规则可选的薪资项目列表 @action listSalarySobItem = () => { let params = { salarySobId: this.salarySobId, - excludeSalaryItemIds: this.sobItemRuleDataSource.map(item => item.salaryItemId) - } + excludeSalaryItemIds: this.sobItemRuleDataSource.map( + (item) => item.salaryItemId + ), + }; return new Promise((resolve, reject) => { - API.listSalarySobItem(params).then(res => { - if(res.status) { - this.ruleOptionList = res.data.map(item => { + API.listSalarySobItem(params).then((res) => { + if (res.status) { + this.ruleOptionList = res.data.map((item) => { return { key: item.salaryItemId.toString(), showname: item.salaryItemName, - selected: false - } - }) - resolve() + selected: false, + }; + }); + resolve(); } else { - reject() - message.error(res.errormsg || "获取失败") + reject(); + message.error(res.errormsg || "获取失败"); } - }) - }) - } + }); + }); + }; // 调薪计薪规则保存 @action saveAdjustmentRule = () => { let params = { - salarySobId:this.salarySobId, - ruleParams:this.sobItemRuleDataSource - } + salarySobId: this.salarySobId, + ruleParams: this.sobItemRuleDataSource, + }; return new Promise((resolve, reject) => { - API.saveAdjustmentRule(params).then(res => { - if(res.status) { - resolve() - message.success("保存成功") + API.saveAdjustmentRule(params).then((res) => { + if (res.status) { + resolve(); + message.success("保存成功"); } else { - reject() - message.error(res.errormsg || "获取失败") + reject(); + message.error(res.errormsg || "获取失败"); } - }) - }) - } + }); + }); + }; @action listAdjustmentRule = () => { let params = { - salarySobId: this.salarySobId - } - API.listAdjustmentRule(params).then(res => { - if(res.status) { - this.sobItemRuleDataSource = res.data + salarySobId: this.salarySobId, + }; + API.listAdjustmentRule(params).then((res) => { + if (res.status) { + this.sobItemRuleDataSource = res.data; } - }) - } + }); + }; // 保存薪资帐套校验规则 @action saveLedgerRule = (params) => { params.salarySobId = this.salarySobId; - API.saveLedgerRule(params).then(res => { - if(res.status) { - this.getLedgerRuleList() - message.success("保存成功") + API.saveLedgerRule(params).then((res) => { + if (res.status) { + this.getLedgerRuleList(); + message.success("保存成功"); } else { - message.error(res.errormsg || "保存失败") + message.error(res.errormsg || "保存失败"); } - }) - } + }); + }; //薪资帐套校验规则列表 @action getLedgerRuleList = (name = "") => { let params = { salarySobId: this.salarySobId, - name - } - API.getLedgerRuleList(params).then(res => { - if(res.status) { - this.ledgerRuleList = res.data + name, + }; + API.getLedgerRuleList(params).then((res) => { + if (res.status) { + this.ledgerRuleList = res.data; } else { - message.error(res.errormsg || "获取数据失败") + message.error(res.errormsg || "获取数据失败"); } - }) - } + }); + }; //删除薪资帐套校验规则 @action deleteLedgerRule = (ids) => { - API.deleteLedgerRule(ids).then(res => { - if(res.status) { - message.success("删除成功") + API.deleteLedgerRule(ids).then((res) => { + if (res.status) { + message.success("删除成功"); this.getLedgerRuleList(); } else { - message.error(res.errormsg || "删除失败") + message.error(res.errormsg || "删除失败"); } - }) - } + }); + }; // 获取基本信息 @action getLedgerBasicForm = () => { - API.getLedgerBasicForm(this.salarySobId).then(res => { - if(res.status) { - let basicForm = res.data.basicForm - Object.keys(basicForm).map(key => { - if(basicForm[key]) { + API.getLedgerBasicForm(this.salarySobId).then((res) => { + if (res.status) { + let basicForm = res.data.basicForm; + Object.keys(basicForm).map((key) => { + if (basicForm[key]) { basicForm[key] = basicForm[key].toString(); } - }) - this.baseInfoRequest = basicForm + }); + this.baseInfoRequest = basicForm; } else { - messsage.error(res.errormsg || "获取失败") + message.error(res.errormsg || "获取失败"); } - }) - } + }); + }; //薪资帐套薪资项目详情 @action getLedgerItemForm = () => { - API.getLedgerItemForm({salarySobId: this.salarySobId}).then(res => { - if(res.status) { - this.empFields = res.data.empFields - this.itemGroups = res.data.itemGroups + API.getLedgerItemForm({ salarySobId: this.salarySobId }).then((res) => { + if (res.status) { + this.empFields = res.data.empFields; + this.itemGroups = res.data.itemGroups; let defaultItems = { - id:"default", + id: "default", name: "未分类", - items:res.data.items - } - this.itemGroups.unshift(defaultItems) - API.empFieldList().then(ires => { - if(res.status) { - this.empBrowserList = ires.data.map(item => {return {showname: item.name, key: item.id, selected: false}}) - this.userSelectedList = this.empFields.map(item => { - item = {...item} - item.key = item.fieldId - this.empBrowserList.map(bitem => { - if(bitem.key == item.fieldId) { - item.showname = bitem.showname - } - }) - return item; - }) - console.log("this.userSelectedList: " ,toJS(this.userSelectedList)); + items: res.data.items, + }; + this.itemGroups.unshift(defaultItems); + API.empFieldList().then((ires) => { + if (res.status) { + this.empBrowserList = ires.data.map((item) => { + return { showname: item.name, key: item.id, selected: false }; + }); + this.userSelectedList = this.empFields.map((item) => { + item = { ...item }; + item.key = item.fieldId; + this.empBrowserList.map((bitem) => { + if (bitem.key == item.fieldId) { + item.showname = bitem.showname; + } + }); + return item; + }); + console.log("this.userSelectedList: ", toJS(this.userSelectedList)); } else { - message.error(res.errormsg || "获取失败") + message.error(res.errormsg || "获取失败"); } - }) + }); } else { - message.error(res.errormsg || "获取失败") + message.error(res.errormsg || "获取失败"); } - }) - } - -} \ No newline at end of file + }); + }; +} diff --git a/pc4mobx/hrmSalary/stores/otherDeduct.js b/pc4mobx/hrmSalary/stores/otherDeduct.js index e85429b9..79609e7b 100644 --- a/pc4mobx/hrmSalary/stores/otherDeduct.js +++ b/pc4mobx/hrmSalary/stores/otherDeduct.js @@ -1,10 +1,10 @@ -import { observable, action, toJS } from 'mobx'; -import { message } from 'antd'; -import { WeaForm, WeaTableNew } from 'comsMobx'; -import { removePropertyCondition } from '../util/response'; +import { observable, action, toJS } from "mobx"; +import { message } from "antd"; +import { WeaForm, WeaTableNew } from "comsMobx"; +import { removePropertyCondition } from "../util/response"; -import * as API from '../apis/otherDeduct'; // 引入API接口文件 -import * as TaxAgentApi from '../apis/taxAgent' +import * as API from "../apis/otherDeduct"; // 引入API接口文件 +import * as TaxAgentApi from "../apis/taxAgent"; const { TableStore } = WeaTableNew; @@ -16,60 +16,88 @@ export class OtherDeductStore { @observable hasRight = true; // 判断用户是有权限查看当前页面: 没有权限渲染无权限页面,有权限渲染数据 @observable showSearchAd = false; // 高级搜索面板显示 @observable loading = true; // 数据加载状态 + @observable slideLoading = true; // 详情数据加载状态 @observable step = 0; // 当前所在第几步 @observable slideVisiable = false; // slide 是否隐藏 - @observable slideDataSource = []; - - @observable importResult = {} + @observable importResult = {}; @observable modalVisiable = false; // 模态框显示 - @observable currentRecord = {}; // 当前record - // ** 设置导入参数 start ** + @observable columns = []; + @observable pageObj = {}; //列表数据 + @observable dataSource = []; //列表数据 + @observable slideColumns = []; //详情列数据 + @observable slidePageObj = {}; //详情分页列表数据 + @observable slideTableDataSource = []; //详情列表数据 + + // ** 设置导入参数 start ** @action setSlideDataSource = (slideDataSource) => { - this.slideDataSource = slideDataSource - } + this.slideDataSource = slideDataSource; + }; @action setImportResult = (importResult) => { - this.importResult = importResult - } - // ** 设置导入参数 end ** + this.importResult = importResult; + }; @action - setCurrentRecord = currentRecord => this.currentRecord = currentRecord; + setColumns = (columns) => (this.columns = columns); @action - setModalVisiable = visiable => this.modalVisiable = visiable + setPageObj = (pageObj) => (this.pageObj = pageObj); @action - setStep = step => this.step = step; + setDataSource = (dataSource) => (this.dataSource = dataSource); + + // 详情列表数据 + @action + setSlideColumns = (columns) => (this.slideColumns = columns); @action - setSlideVisiable = slideVisiable => this.slideVisiable = slideVisiable; + setSlidePageObj = (pageObj) => (this.slidePageObj = pageObj); + @action + setSlideTableDataSource = (dataSource) => + (this.slideTableDataSource = dataSource); + + // ** 设置导入参数 end ** + + @action + setCurrentRecord = (currentRecord) => (this.currentRecord = currentRecord); + + @action + setModalVisiable = (visiable) => (this.modalVisiable = visiable); + + @action + setStep = (step) => (this.step = step); + + @action + setSlideVisiable = (slideVisiable) => (this.slideVisiable = slideVisiable); // 初始化操作 @action doInit = () => { this.getCondition(); this.getTableDatas(); - } + }; // 获得高级搜索表单数据 @action getCondition = () => { - API.getOtherDeductSaCondition().then(action(res => { - if (res.status) { // 接口请求成功/失败处理 - let condition = removePropertyCondition(res.data.condition) - this.condition = condition; - this.form.initFormFields(condition); // 渲染高级搜索form表单 - } else { - message.error(res.errormsg || '接口调用失败!') - } - })); - } + API.getOtherDeductSaCondition().then( + action((res) => { + if (res.status) { + // 接口请求成功/失败处理 + let condition = removePropertyCondition(res.data.condition); + this.condition = condition; + this.form.initFormFields(condition); // 渲染高级搜索form表单 + } else { + message.error(res.errormsg || "接口调用失败!"); + } + }) + ); + }; // 渲染table数据 @action @@ -77,72 +105,101 @@ export class OtherDeductStore { params = params || {}; this.loading = true; let requestParams = this.form.getFormParams() || {}; - requestParams = {...requestParams, ...params} - API.getOtherDeductList(requestParams).then(action(res => { - if (res.status) { // 接口请求成功/失败处理 - this.tableStore.getDatas(res.data.datas); // table 请求数据 - } else { - message.error(res.errormsg || '接口调用失败!') - } - this.loading = false; - })); - } + requestParams = { ...requestParams, ...params }; + API.getOtherDeductList(requestParams).then( + action(({ status, data, errormsg }) => { + if (status) { + const { columns, list, total, pageNum: current, pageSize } = data; + this.setColumns(columns); + this.setDataSource(list); + this.setPageObj({ + total, + current, + pageSize, + }); + } else { + this.setDataSource([]); + this.setPageObj({ + ...this.pageObj, + total: 0, + }); + message.error(errormsg || "接口调用失败!"); + } + this.loading = false; + }) + ); + }; @action - setShowSearchAd = bool => this.showSearchAd = bool; + setShowSearchAd = (bool) => (this.showSearchAd = bool); // 高级搜索 - 搜索 @action doSearch = () => { this.getTableDatas(); this.showSearchAd = false; - } + }; // 导入 @action importFile = (params) => { - API.importOtherDeductionParam(params).then(action(res => { - if(res.status) { - this.importResult = res.data - } else { - message.error(res.errormsg || '接口调用失败!') - } - })) - } + API.importOtherDeductionParam(params).then( + action((res) => { + if (res.status) { + this.importResult = res.data; + } else { + message.error(res.errormsg || "接口调用失败!"); + } + }) + ); + }; // 导入预览 @action previewImport = (params) => { - API.importOtherDeductionPreview(params).then(action(res => { - if(res.status) { - this.slideDataSource = res.data.preview - } else { - message.error(res.errormsg || '接口调用失败!') - } - })) - } + API.importOtherDeductionPreview(params).then( + action((res) => { + if (res.status) { + this.slideDataSource = res.data.preview; + } else { + message.error(res.errormsg || "接口调用失败!"); + } + }) + ); + }; // 导出 @action exportOtherDeductList = (ids = "") => { - API.exportOtherDeductList(ids) - } + API.exportOtherDeductList(ids); + }; // 查询明细 @action getOtherDeductDetailList = (id, param = {}) => { - let requestParams = {"otherTaxExemptDeductionId": id}; - requestParams = {...requestParams, ...param} - API.getOtherDeductDetailList(requestParams).then(res => { - if(res.status) { - if (res.status) { // 接口请求成功/失败处理 - this.slideTableStore.getDatas(res.data.datas); // table 请求数据 + let requestParams = { otherTaxExemptDeductionId: id }; + requestParams = { ...requestParams, ...param }; + this.slideLoading = true; + API.getOtherDeductDetailList(requestParams).then( + ({ status, data, errormsg }) => { + if (status) { + const { columns, list, total, pageNum: current, pageSize } = data; + this.setSlideColumns(columns); + this.setSlideTableDataSource(list); + this.setSlidePageObj({ + total, + current, + pageSize, + }); } else { - message.error(res.errormsg || '接口调用失败!') + this.setSlideTableDataSource([]); + this.setSlidePageObj({ + ...this.slidePageObj, + total: 0, + }); + message.error(errormsg || "接口调用失败!"); } } - }) - } + ); + }; // 导出明细 @action exportOtherDeductDetailList = (id, ids = "") => { - API.exportOtherDeductDetailList(id, ids) - } - - -} \ No newline at end of file + API.exportOtherDeductDetailList(id, ids); + }; +} diff --git a/pc4mobx/hrmSalary/stores/taxAgent.js b/pc4mobx/hrmSalary/stores/taxAgent.js index ab00ab2d..e4de51b0 100644 --- a/pc4mobx/hrmSalary/stores/taxAgent.js +++ b/pc4mobx/hrmSalary/stores/taxAgent.js @@ -1,137 +1,155 @@ -import { observable, action, toJS } from 'mobx'; -import { message } from 'antd'; -import { WeaForm, WeaTableNew } from 'comsMobx'; -import moment from 'moment' +import { observable, action, toJS } from "mobx"; +import { message } from "antd"; +import { WeaForm, WeaTableNew } from "comsMobx"; +import moment from "moment"; -import * as API from '../apis/taxAgent'; // 引入API接口文件 -import { columns } from '../pages/socialSecurityBenefits/archives/columns'; -import { dataSource } from '../pages/mySalary/columns'; +import * as API from "../apis/taxAgent"; // 引入API接口文件 +import { columns } from "../pages/socialSecurityBenefits/archives/columns"; +import { dataSource } from "../pages/mySalary/columns"; +import { editConditions } from "../pages/taxAgent/editConditions"; const { TableStore } = WeaTableNew; export class TaxAgentStore { @observable tableStore = new TableStore(); // new table - @observable form = new WeaForm(); // nrew 一个form + @observable form = new WeaForm(); //表单实体 @observable condition = []; // 存储后台得到的form数据 @observable hasRight = true; // 判断用户是有权限查看当前页面: 没有权限渲染无权限页面,有权限渲染数据 @observable showSearchAd = false; // 高级搜索面板显示 - @observable loading = true; // 数据加载状态 - - @observable modalVisiable = false; // EditModal 模态框 - + @observable loading = false; // 数据加载状态 + @observable modalVisiable = false; // EditModal 模态框 @observable columns = []; - @observable dataSource = []; + @observable pageObj = {}; //列表数据 + @observable dataSource = []; //列表数据 @observable taxAgentOption = []; // 个税扣缴义务人 + @action + setModalVisiable = (visiable) => (this.modalVisiable = visiable); @action - setModalVisiable = visiable => this.modalVisiable = visiable; + setColumns = (columns) => (this.columns = columns); @action - setColumns = columns => this.columns = columns; + setPageObj = (pageObj) => (this.pageObj = pageObj); @action - setDataSource = dataSource => this.dataSource = dataSource; + setDataSource = (dataSource) => (this.dataSource = dataSource); // 初始化操作 @action - doInit = () => { - this.getTableDatas(); - } + doInit = (params) => { + this.getTaxAgentList(params); + this.getCondition(editConditions); + }; // 获得高级搜索表单数据 @action - getCondition = () => { - API.getCondition().then(action(res => { - if (res.api_status) { // 接口请求成功/失败处理 - this.condition = res.condition; - this.form.initFormFields(res.condition); // 渲染高级搜索form表单 - } else { - message.error(res.msg || '接口调用失败!') - } - })); - } + getCondition = (condition) => { + this.form.initFormFields(condition); + }; // 渲染table数据 @action - getTableDatas = (params) => { + getTaxAgentList = (params) => { this.loading = true; params = params || {}; - API.getTaxAgentList(params).then(action(res => { - if (res.status) { // 接口请求成功/失败处理 - let current = this.tableStore.current || 1; - let sortParams = this.tableStore.sortParams.toJS() || []; - this.tableStore.getDatas(res.data.datas) - } else { - message.error(res.msg || '接口调用失败!') - } - this.loading = false; - })); - } + API.getTaxAgentList(params).then( + action(({ data, status }) => { + this.loading = false; + if (status) { + // 接口请求成功/失败处理 + const { columns, list, total, pageNum: current, pageSize } = data; + this.setColumns(columns); + this.setDataSource(list); + this.setPageObj({ + total, + current, + pageSize, + }); + } else { + message.error(res.msg || "接口调用失败!"); + } + }) + ); + }; @action - setShowSearchAd = bool => this.showSearchAd = bool; + setShowSearchAd = (bool) => (this.showSearchAd = bool); // 高级搜索 - 搜索 @action doSearch = (name) => { - this.getTableDatas({name}); + this.getTaxAgentList({ name }); this.showSearchAd = false; - } + }; // 新增 - @action doInsert = (params) => { - API.saveTaxAgent(params).then(res => { - if(res.status) { - message.success("新增成功"); - this.setModalVisiable(false) - this.getTableDatas(); - this.showSearchAd = false; - } else { - message.error( res.errormsg || "新增失败"); - } - }) - } + @action saveTaxAgent = (params) => { + return API.saveTaxAgent(params); + }; // 更新 - @action doUpdate = (params) => { - API.updateTaxAgent(params).then(res => { - if(res.status) { - message.success("更新成功"); - this.setModalVisiable(false) - this.getTableDatas(); - this.showSearchAd = false; - } else { - message.error(res.errormsg || "新增失败"); - } - }) - } + @action updateTaxAgent = (params) => { + return API.updateTaxAgent(params); + }; - @action doDelete = (params) => { - API.deleteTaxAgent(params).then(res => { - if(res.status) { - message.success("删除成功"); - this.setModalVisiable(false) - this.getTableDatas(); - this.showSearchAd = false; - } else { - message.error( res.errormsg || "删除失败"); - } - }) - } + // 获取个税扣缴义务人基础信息表单 + @action getTaxAgentBaseForm = (params) => { + return API.getTaxAgentBaseForm(params); + }; + + // 获取个税扣缴义务人表单 + @action getTaxAgentForm = (params) => { + return API.getTaxAgentForm(params); + }; + + // 保存个税扣缴义务人基础信息 + @action taxAgentBaseSave = (params) => { + return API.taxAgentBaseSave(params); + }; + + @action deleteTaxAgent = (params) => { + return API.deleteTaxAgent(params); + }; + + @action getPermission = (params) => { + return API.getPermission(params); + }; + // 人员范围列表 + @action getTaxAgentRangeListInclude = (params) => { + return API.getTaxAgentRangeListInclude(params); + }; + // 人员范围排除列表 + @action getTaxAgentRangeListExclude = (params) => { + return API.getTaxAgentRangeListExclude(params); + }; + // 获取人员范围表单 + @action getTaxAgentRangeForm = (params) => { + return API.getTaxAgentRangeForm(params); + }; + // 人员范围保存 + @action taxAgentRangeSave = (params) => { + return API.taxAgentRangeSave(params); + }; + // 人员范围删除 + @action taxAgentRangeDelete = (params) => { + return API.taxAgentRangeDelete(params); + }; @action fetchTaxAgentOption = () => { return new Promise((resolve, reject) => { - API.getTaxAgentSelectList().then(action(res => { - if(res.status) { - this.taxAgentOption = res.data.list.map(item => {return {key: item.id, showname: item.content}}) - resolve() - } else { - message.error(res.errormsg || "获取失败") - reject() - } - })) - }) - - } - -} \ No newline at end of file + API.getTaxAgentSelectList().then( + action((res) => { + if (res.status) { + this.taxAgentOption = res.data.map((item) => { + return { key: item.id, showname: item.content }; + }); + resolve(); + } else { + message.error(res.errormsg || "获取失败"); + reject(); + } + }) + ); + }); + }; +}