From 452c22c262de65b6c4df4c3e211968a799e2433f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=BB=8E=E6=B0=B8=E9=A1=BA?= <971387674@qq.com>
Date: Mon, 23 Oct 2023 15:29:26 +0800
Subject: [PATCH 01/10] =?UTF-8?q?feature/2.9.42310.01-=E7=A4=BE=E4=BF=9D?=
=?UTF-8?q?=E6=A1=A3=E6=A1=88=E6=93=8D=E4=BD=9C=E6=97=A5=E5=BF=97?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../pages/socialSecurityBenefits/archives/index.js | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)
diff --git a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/archives/index.js b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/archives/index.js
index 66ce8099..61f508cc 100644
--- a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/archives/index.js
+++ b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/archives/index.js
@@ -814,10 +814,15 @@ export default class Archives extends React.Component {
return (
} // 左侧图标
- iconBgcolor="#F14A2D" // 左侧图标背景色
- showDropIcon={false} // 是否显示下拉按钮
+ title="社保福利档案" icon={} iconBgcolor="#F14A2D" showDropIcon={true}
+ dropMenuDatas={[
+ {
+ key: "log",
+ icon: ,
+ content: getLabel(111, "操作日志"),
+ onClick: key => alert(`点击了搜索 key = ${key}`)
+ }
+ ]}
>
Date: Mon, 23 Oct 2023 17:37:17 +0800
Subject: [PATCH 02/10] =?UTF-8?q?feature/2.9.42310.01-=E7=A4=BE=E4=BF=9D?=
=?UTF-8?q?=E6=A1=A3=E6=A1=88=E6=93=8D=E4=BD=9C=E6=97=A5=E5=BF=97?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pc4mobx/hrmSalary/apis/archive.js | 361 +++++++++---------
.../archives/config/index.js | 67 +++-
.../socialSecurityBenefits/archives/index.js | 13 +-
.../archives/index.less | 19 +
.../archives/operateLogDialog/index.js | 118 ++++++
pc4mobx/hrmSalary/stores/archives.js | 7 +
6 files changed, 403 insertions(+), 182 deletions(-)
create mode 100644 pc4mobx/hrmSalary/pages/socialSecurityBenefits/archives/operateLogDialog/index.js
diff --git a/pc4mobx/hrmSalary/apis/archive.js b/pc4mobx/hrmSalary/apis/archive.js
index 5ce04a25..9ea65461 100644
--- a/pc4mobx/hrmSalary/apis/archive.js
+++ b/pc4mobx/hrmSalary/apis/archive.js
@@ -1,4 +1,5 @@
-import { WeaTools } from 'ecCom';
+import { WeaTools } from "ecCom";
+import { postFetch } from "../util/request";
/**
* 薪资档案api
@@ -7,120 +8,120 @@ import { WeaTools } from 'ecCom';
//薪资档案-薪资档案列表
export const getArchiveList = params => {
- return fetch('/api/bs/hrmsalary/salaryArchive/list', {
- method: 'POST',
- mode: 'cors',
- headers: {
- 'Content-Type': 'application/json'
- },
- body: JSON.stringify(params)
- }).then(res => res.json())
-}
+ return fetch("/api/bs/hrmsalary/salaryArchive/list", {
+ method: "POST",
+ mode: "cors",
+ headers: {
+ "Content-Type": "application/json"
+ },
+ body: JSON.stringify(params)
+ }).then(res => res.json());
+};
//薪资档案的高级搜索
export const getSaCondition = params => {
- return WeaTools.callApi('/api/bs/hrmsalary/archives/getSearchCondition', 'get', params);
-}
+ return WeaTools.callApi("/api/bs/hrmsalary/archives/getSearchCondition", "get", params);
+};
//薪资档案-导出薪资档案
export const exportArchiveList = params => {
- return WeaTools.callApi('/api/bs/hrmsalary/salaryArchive/exportList', 'POST', params);
-}
+ return WeaTools.callApi("/api/bs/hrmsalary/salaryArchive/exportList", "POST", params);
+};
//薪资档案-获取导入参数
export const getImportArchiveParam = params => {
- return WeaTools.callApi('/api/bs/hrmsalary/salaryArchive/getImportParams', 'get', params);
-}
+ return WeaTools.callApi("/api/bs/hrmsalary/salaryArchive/getImportParams", "get", params);
+};
//薪资档案-获取薪资档案详情表单
export const getArchiveForm = params => {
- return WeaTools.callApi('/api/bs/hrmsalary/salaryArchive/getForm', 'get', params);
-}
+ return WeaTools.callApi("/api/bs/hrmsalary/salaryArchive/getForm", "get", params);
+};
//薪资档案-获取薪资项目调整表单
export const getSalaryItemForm = params => {
- return WeaTools.callApi('/api/bs/hrmsalary/salaryArchive/getSalaryItemForm', 'GET', params);
-}
+ return WeaTools.callApi("/api/bs/hrmsalary/salaryArchive/getSalaryItemForm", "GET", params);
+};
//薪资档案-保存薪资项目调整
export const saveSalaryItem = params => {
- return fetch('/api/bs/hrmsalary/salaryArchive/saveSalaryItem', {
- method: 'POST',
- mode: 'cors',
- headers: {
- 'Content-Type': 'application/json'
- },
- body: JSON.stringify(params)
- }).then(res => res.json())
-}
+ return fetch("/api/bs/hrmsalary/salaryArchive/saveSalaryItem", {
+ method: "POST",
+ mode: "cors",
+ headers: {
+ "Content-Type": "application/json"
+ },
+ body: JSON.stringify(params)
+ }).then(res => res.json());
+};
//薪资档案-获取个税扣缴义务人调整表单
export const getTaxAgentForm = params => {
- return WeaTools.callApi('/api/bs/hrmsalary/salaryArchive/getTaxAgentForm', 'GET', params);
-}
+ return WeaTools.callApi("/api/bs/hrmsalary/salaryArchive/getTaxAgentForm", "GET", params);
+};
//薪资档案-保存个税扣缴义务人调整
export const saveTaxAgent = params => {
- return fetch('/api/bs/hrmsalary/salaryArchive/saveTaxAgent', {
- method: 'POST',
- mode: 'cors',
- headers: {
- 'Content-Type': 'application/json'
- },
- body: JSON.stringify(params)
- }).then(res => res.json())
-}
+ return fetch("/api/bs/hrmsalary/salaryArchive/saveTaxAgent", {
+ method: "POST",
+ mode: "cors",
+ headers: {
+ "Content-Type": "application/json"
+ },
+ body: JSON.stringify(params)
+ }).then(res => res.json());
+};
//薪资档案-删除个税扣缴义务人调整
export const deleteTaxAgent = params => {
- return WeaTools.callApi('/api/bs/hrmsalary/salaryArchive/deleteTaxAgent', 'GET', params);
-}
+ return WeaTools.callApi("/api/bs/hrmsalary/salaryArchive/deleteTaxAgent", "GET", params);
+};
//薪资档案操作记录-薪资项目操作记录列表
export const getItemAdjustList = params => {
- return WeaTools.callApi('/api/bs/hrmsalary/salaryArchiveOperateLog/salaryItemList', 'POST', params);
-}
+ return WeaTools.callApi("/api/bs/hrmsalary/salaryArchiveOperateLog/salaryItemList", "POST", params);
+};
//薪资档案操作记录-薪资项目操作记录列表的高级搜索
export const getItemAdjustSaCondition = params => {
- return WeaTools.callApi('/api/bs/hrmsalary/salaryArchiveOperateLog/getSalaryItemSearchCondition', 'GET', params);
-}
+ return WeaTools.callApi("/api/bs/hrmsalary/salaryArchiveOperateLog/getSalaryItemSearchCondition", "GET", params);
+};
//薪资档案操作记录-导出-薪资项目操作记录列表
export const exportItemAdjust = params => {
- return WeaTools.callApi('/api/bs/hrmsalary/salaryArchiveOperateLog/exportSalaryItemList', 'POST', params);
-}
+ return WeaTools.callApi("/api/bs/hrmsalary/salaryArchiveOperateLog/exportSalaryItemList", "POST", params);
+};
//薪资档案操作记录-个税扣缴义务人操作记录列表
export const getPersonAdjustList = params => {
- return WeaTools.callApi('/api/bs/hrmsalary/salaryArchiveOperateLog/salaryItemList', 'POST', params);
-}
+ return WeaTools.callApi("/api/bs/hrmsalary/salaryArchiveOperateLog/salaryItemList", "POST", params);
+};
//薪资档案操作记录-个税扣缴义务人操作记录列表的高级搜索
export const getPersonAdjustSaCondition = params => {
- return WeaTools.callApi('/api/bs/hrmsalary/salaryArchiveOperateLog/getTaxAgentSearchCondition', 'GET', params);
-}
+ return WeaTools.callApi("/api/bs/hrmsalary/salaryArchiveOperateLog/getTaxAgentSearchCondition", "GET", params);
+};
//薪资档案操作记录-导出-个税扣缴义务人操作记录列表
export const exportPersonAdjust = params => {
- return WeaTools.callApi('/api/bs/hrmsalary/salaryArchiveOperateLog/exportTaxAgentList', 'POST', params);
-}
+ return WeaTools.callApi("/api/bs/hrmsalary/salaryArchiveOperateLog/exportTaxAgentList", "POST", params);
+};
//薪资档案-获取设置表单
export const getSettingForm = params => {
- return WeaTools.callApi('/api/bs/hrmsalary/salaryArchive/getDimissionSetForm', 'GET', params);
-}
+ return WeaTools.callApi("/api/bs/hrmsalary/salaryArchive/getDimissionSetForm", "GET", params);
+};
//薪资档案-保存离职时段设置
export const saveSetting = params => {
- return WeaTools.callApi('/api/bs/hrmsalary/salaryArchive/saveDimissionSet', 'POST', params);
-}
+ return WeaTools.callApi("/api/bs/hrmsalary/salaryArchive/saveDimissionSet", "POST", params);
+};
//薪资档案-模版下载链接(无数据)
@@ -128,166 +129,170 @@ export const downloadSalaryArchiveTemplateurl = `/api/bs/hrmsalary/salaryArchive
// 薪资档案- 模版下载 (有之前数据)
export const downloadsalaryArchiveDetail = params => {
- return WeaTools.callApi('/api/bs/hrmsalary/salaryArchive/exportList', 'POST', params);
-}
+ return WeaTools.callApi("/api/bs/hrmsalary/salaryArchive/exportList", "POST", params);
+};
// 获取导入类型
export const getImportTypes = () => {
- return WeaTools.callApi('/api/bs/hrmsalary/salaryArchive/getImportTypes', 'GET', {});
-}
+ return WeaTools.callApi("/api/bs/hrmsalary/salaryArchive/getImportTypes", "GET", {});
+};
// 获取档案和人员状态类型
export const commonEnumList = (params) => {
- return WeaTools.callApi('/api/bs/hrmsalary/common/enum/list', 'GET', params);
-}
+ return WeaTools.callApi("/api/bs/hrmsalary/common/enum/list", "GET", params);
+};
// 发起调薪地址
export const salaryAdjustmentInfo = (params) => {
- return WeaTools.callApi('/api/bs/hrmsalary/process/salaryAdjustmentInfo', 'GET', params);
-}
+ return WeaTools.callApi("/api/bs/hrmsalary/process/salaryAdjustmentInfo", "GET", params);
+};
// 导入预览
export const importPreview = (params) => {
- return fetch('/api/bs/hrmsalary/salaryArchive/preview', {
- method: 'POST',
- mode: 'cors',
- headers: {
- 'Content-Type': 'application/json'
- },
- body: JSON.stringify(params)
- }).then(res => res.json())
-}
+ return fetch("/api/bs/hrmsalary/salaryArchive/preview", {
+ method: "POST",
+ mode: "cors",
+ headers: {
+ "Content-Type": "application/json"
+ },
+ body: JSON.stringify(params)
+ }).then(res => res.json());
+};
// 导入档案
export const importSalaryArchive = (params) => {
- return fetch('/api/bs/hrmsalary/salaryArchive/importSalaryArchive', {
- method: 'POST',
- mode: 'cors',
- headers: {
- 'Content-Type': 'application/json'
- },
- body: JSON.stringify(params)
- }).then(res => res.json())
-}
+ return fetch("/api/bs/hrmsalary/salaryArchive/importSalaryArchive", {
+ method: "POST",
+ mode: "cors",
+ headers: {
+ "Content-Type": "application/json"
+ },
+ body: JSON.stringify(params)
+ }).then(res => res.json());
+};
// 导出档案
export const exportSalaryArchive = (ids = "") => {
- fetch('/api/bs/hrmsalary/salaryArchive/exportList?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/salaryArchive/exportList?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 adjustRecordTaxAgentList = (params) => {
- return fetch('/api/bs/hrmsalary/salaryArchive/adjustRecord/taxAgentList', {
- method: 'POST',
- mode: 'cors',
- headers: {
- 'Content-Type': 'application/json'
- },
- body: JSON.stringify(params)
- }).then(res => res.json())
-}
+ return fetch("/api/bs/hrmsalary/salaryArchive/adjustRecord/taxAgentList", {
+ method: "POST",
+ mode: "cors",
+ headers: {
+ "Content-Type": "application/json"
+ },
+ body: JSON.stringify(params)
+ }).then(res => res.json());
+};
// 调整记录-薪资项目-列表
export const adjustRecordSalaryItemList = (params) => {
- return fetch('/api/bs/hrmsalary/salaryArchive/adjustRecord/salaryItemList', {
- method: 'POST',
- mode: 'cors',
- headers: {
- 'Content-Type': 'application/json'
- },
- body: JSON.stringify(params)
- }).then(res => res.json())
-}
+ return fetch("/api/bs/hrmsalary/salaryArchive/adjustRecord/salaryItemList", {
+ method: "POST",
+ mode: "cors",
+ headers: {
+ "Content-Type": "application/json"
+ },
+ body: JSON.stringify(params)
+ }).then(res => res.json());
+};
// 调整记录-薪资项目-单个
export const singleSalaryItemList = (params) => {
- return fetch('/api/bs/hrmsalary/salaryArchive/adjustRecord/singleSalaryItemList', {
- method: 'POST',
- mode: 'cors',
- headers: {
- 'Content-Type': 'application/json'
- },
- body: JSON.stringify(params)
- }).then(res => res.json())
-}
+ return fetch("/api/bs/hrmsalary/salaryArchive/adjustRecord/singleSalaryItemList", {
+ method: "POST",
+ mode: "cors",
+ headers: {
+ "Content-Type": "application/json"
+ },
+ body: JSON.stringify(params)
+ }).then(res => res.json());
+};
// 调整记录-个税扣缴义务人-单个
export const singleTaxAgentList = (params) => {
- return fetch('/api/bs/hrmsalary/salaryArchive/adjustRecord/singleTaxAgentList', {
- method: 'POST',
- mode: 'cors',
- headers: {
- 'Content-Type': 'application/json'
- },
- body: JSON.stringify(params)
- }).then(res => res.json())
-}
+ return fetch("/api/bs/hrmsalary/salaryArchive/adjustRecord/singleTaxAgentList", {
+ method: "POST",
+ mode: "cors",
+ headers: {
+ "Content-Type": "application/json"
+ },
+ body: JSON.stringify(params)
+ }).then(res => res.json());
+};
// 调整-义务扣缴人-通过薪资档案的个税扣缴义务人id获取个税扣缴义务人调整表单
export const getTaxAgentFormBySalaryArchiveTaxAgentId = (params) => {
- return WeaTools.callApi('/api/bs/hrmsalary/salaryArchive/getTaxAgentFormBySalaryArchiveTaxAgentId', 'GET', params);
-}
+ return WeaTools.callApi("/api/bs/hrmsalary/salaryArchive/getTaxAgentFormBySalaryArchiveTaxAgentId", "GET", params);
+};
// 调整-薪资项目-获取调整前的值
export const getSalaryItemAdjustBeforeValue = (params) => {
- return fetch('/api/bs/hrmsalary/salaryArchive/getSalaryItemAdjustBeforeValue', {
- method: 'POST',
- mode: 'cors',
- headers: {
- 'Content-Type': 'application/json'
- },
- body: JSON.stringify(params)
- }).then(res => res.json())
-}
+ return fetch("/api/bs/hrmsalary/salaryArchive/getSalaryItemAdjustBeforeValue", {
+ method: "POST",
+ mode: "cors",
+ headers: {
+ "Content-Type": "application/json"
+ },
+ body: JSON.stringify(params)
+ }).then(res => res.json());
+};
// 停薪
export const stopSalary = (params) => {
- return fetch('/api/bs/hrmsalary/salaryArchive/stopSalary', {
- method: 'POST',
- mode: 'cors',
- headers: {
- 'Content-Type': 'application/json'
- },
- body: JSON.stringify(params)
- }).then(res => res.json())
-}
+ return fetch("/api/bs/hrmsalary/salaryArchive/stopSalary", {
+ method: "POST",
+ mode: "cors",
+ headers: {
+ "Content-Type": "application/json"
+ },
+ body: JSON.stringify(params)
+ }).then(res => res.json());
+};
// 调整-薪资项目-通过薪资档案的薪资项目id获取薪资项目调整表单
export const getSalaryItemFormByItemId = (params) => {
- return WeaTools.callApi('/api/bs/hrmsalary/salaryArchive/getSalaryItemFormBySalaryArchiveItemId', 'GET', params);
-}
+ return WeaTools.callApi("/api/bs/hrmsalary/salaryArchive/getSalaryItemFormBySalaryArchiveItemId", "GET", params);
+};
// 删除薪资项目调薪
export const deleteSalaryItem = (params) => {
- return fetch(`/api/bs/hrmsalary/salaryArchive/deleteSalaryItem?salaryArchiveItemId=${params.salaryArchiveItemId}`, {
- method: 'GET',
- mode: 'cors',
- headers: {
- 'Content-Type': 'application/json'
- },
- }).then(res => res.json())
-}
+ return fetch(`/api/bs/hrmsalary/salaryArchive/deleteSalaryItem?salaryArchiveItemId=${params.salaryArchiveItemId}`, {
+ method: "GET",
+ mode: "cors",
+ headers: {
+ "Content-Type": "application/json"
+ }
+ }).then(res => res.json());
+};
export const getSingleSalaryItemInfo = (params) => {
- return fetch('/api/bs/hrmsalary/salaryArchive/adjustRecord/getSingleSalaryItemInfo', {
- method: 'POST',
- mode: 'cors',
- headers: {
- 'Content-Type': 'application/json'
- },
- body: JSON.stringify(params)
- }).then(res => res.json())
-}
+ return fetch("/api/bs/hrmsalary/salaryArchive/adjustRecord/getSingleSalaryItemInfo", {
+ method: "POST",
+ mode: "cors",
+ headers: {
+ "Content-Type": "application/json"
+ },
+ body: JSON.stringify(params)
+ }).then(res => res.json());
+};
export const editSingleSalaryItem = (params) => {
- return fetch('/api/bs/hrmsalary/salaryArchive/adjustRecord/editSingleSalaryItem', {
- method: 'POST',
- mode: 'cors',
- headers: {
- 'Content-Type': 'application/json'
- },
- body: JSON.stringify(params)
- }).then(res => res.json())
-}
+ return fetch("/api/bs/hrmsalary/salaryArchive/adjustRecord/editSingleSalaryItem", {
+ method: "POST",
+ mode: "cors",
+ headers: {
+ "Content-Type": "application/json"
+ },
+ body: JSON.stringify(params)
+ }).then(res => res.json());
+};
+// 基数调整记录列表
+export const getAdjustHistoryList = (params) => {
+ return postFetch("/api/bs/hrmsalary/archives/getAdjustHistoryList", params);
+};
diff --git a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/archives/config/index.js b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/archives/config/index.js
index 84bcb6ff..84443fb2 100644
--- a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/archives/config/index.js
+++ b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/archives/config/index.js
@@ -33,5 +33,70 @@ export const tabCondition = [
showcount: true,
title: "非系统人员",
viewcondition: "ext"
- },
+ }
+];
+export const logConditions = [
+ {
+ items: [
+ {
+ colSpan: 1,
+ conditionType: "BROWSER",
+ browserConditionParam: {
+ completeParams: {},
+ conditionDataParams: {},
+ dataParams: {},
+ destDataParams: {},
+ hasAddBtn: false,
+ hasAdvanceSerach: true,
+ idSeparator: ",",
+ isAutoComplete: 1,
+ isDetail: 0,
+ isMultCheckbox: false,
+ isSingle: true,
+ linkUrl: "/hrm/resource/HrmResource.jsp?id=",
+ pageSize: 10,
+ quickSearchName: "",
+ replaceDatas: [],
+ title: "",
+ type: "1"
+ },
+ domkey: ["employeeId"],
+ fieldcol: 10,
+ label: "对象",
+ lanId: 106,
+ labelcol: 4,
+ value: ""
+ },
+ {
+ colSpan: 1,
+ conditionType: "BROWSER",
+ browserConditionParam: {
+ completeParams: {},
+ conditionDataParams: {},
+ dataParams: {},
+ destDataParams: {},
+ hasAddBtn: false,
+ hasAdvanceSerach: true,
+ idSeparator: ",",
+ isAutoComplete: 1,
+ isDetail: 0,
+ isMultCheckbox: false,
+ isSingle: true,
+ linkUrl: "/hrm/resource/HrmResource.jsp?id=",
+ pageSize: 10,
+ quickSearchName: "",
+ replaceDatas: [],
+ title: "",
+ type: "1"
+ },
+ domkey: ["operator"],
+ fieldcol: 10,
+ label: "操作人",
+ lanId: 111,
+ labelcol: 4,
+ value: ""
+ }
+ ],
+ defaultshow: true
+ }
];
diff --git a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/archives/index.js b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/archives/index.js
index 61f508cc..e676e5c4 100644
--- a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/archives/index.js
+++ b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/archives/index.js
@@ -17,6 +17,7 @@ import UnifiedTable from "../../../components/UnifiedTable";
import { convertToUrlString, getURLParameters } from "../../../util/url";
import { salaryArchiveDelete } from "../../../apis/payrollFiles";
import ImportDialog from "../../../components/importDialog";
+import OperateLogDialog from "./operateLogDialog";
import "./index.less";
import { sysinfo } from "../../../apis/ruleconfig";
@@ -66,7 +67,8 @@ export default class Archives extends React.Component {
link: "", importResult: {}, imageId: "",
previewUrl: "/api/bs/hrmsalary/scheme/preview"
},
- extEmpsWitch: "1" //非系统人员开关, 1: 开启, 0:关闭
+ extEmpsWitch: "1", //非系统人员开关, 1: 开启, 0:关闭
+ logDialog: { visible: false }
};
this.record = {};
}
@@ -627,7 +629,8 @@ export default class Archives extends React.Component {
tabCount,
loading,
importDialog,
- extEmpsWitch
+ extEmpsWitch,
+ logDialog
} = this.state;
const {
form, condition, showSearchAd, setShowSearchAd,
@@ -820,7 +823,7 @@ export default class Archives extends React.Component {
key: "log",
icon: ,
content: getLabel(111, "操作日志"),
- onClick: key => alert(`点击了搜索 key = ${key}`)
+ onClick: key => this.setState({ logDialog: { ...logDialog, visible: true } })
}
]}
>
@@ -871,6 +874,10 @@ export default class Archives extends React.Component {
+ {/*操作日志*/}
+ this.setState({ logDialog: { ...logDialog, visible: false } })}
+ />
{
this.state.editSlideVisible &&
({
+ ...it, items: _.map(it.items, o => ({ ...o, label: getLabel(o.lanId, o.label) }))
+ }))
+ }, () => logForm.initFormFields(this.state.conditions));
+ }
+
+ componentWillReceiveProps(nextProps, nextContext) {
+ if (nextProps.visible !== this.props.visible && nextProps.visible) this.getAdjustHistoryList();
+ if (nextProps.visible !== this.props.visible && !nextProps.visible) {
+ this.setState({
+ dataSource: [], columns: [], pageInfo: { current: 0, pageSize: 10, total: 0 },
+ loading: false
+ });
+ }
+ }
+
+ getAdjustHistoryList = () => {
+ const { pageInfo } = this.state;
+ const payload = { ...pageInfo };
+ this.setState({ loading: true });
+ getAdjustHistoryList(payload).then(({ status, data }) => {
+ this.setState({ loading: false });
+ if (status) {
+ const { columns, list: dataSource, pageNum: current, pageSize, total } = data;
+ this.setState({
+ pageInfo: { ...pageInfo, current, pageSize, total },
+ dataSource, columns: _.map(columns, it => {
+ if (it.dataIndex === "operateTime") {
+ return { ...it, render: (text) => ({moment(text).format("YYYY-MM-DD")}) };
+ }
+ return { ...it };
+ })
+ });
+ }
+ }).catch(() => this.setState({ loading: false }));
+ };
+
+
+ render() {
+ const { loading, dataSource, columns, pageInfo, conditions } = this.state;
+ const { archivesStore: { logForm } } = this.props;
+ const pagination = {
+ ...pageInfo,
+ showTotal: total => `${getLabel(18609, "共")} ${total} ${getLabel(18256, "条")}`,
+ showQuickJumper: true,
+ showSizeChanger: true,
+ pageSizeOptions: ["10", "20", "50", "100"],
+ onShowSizeChange: (current, pageSize) => {
+ this.setState({
+ pageInfo: { ...pageInfo, current, pageSize }
+ }, () => this.getAdjustHistoryList());
+ },
+ onChange: current => {
+ this.setState({
+ pageInfo: { ...pageInfo, current }
+ }, () => this.getAdjustHistoryList());
+ }
+ };
+ const scrollHeight = this.logRef ? this.logRef.state.height - 135 : 606.6;
+ return (
+ this.logRef = dom} className="logDialog" initLoadCss
+ style={{
+ width: 1150,
+ height: 606.6,
+ minHeight: 200,
+ minWidth: 380,
+ maxHeight: "90%",
+ maxWidth: "90%",
+ overflow: "hidden",
+ transform: "translate(0px, 0px)"
+ }}
+ >
+
+ {getSearchs(logForm, conditions, 4, false)}
+
+
+
+ );
+ }
+}
+
+export default Index;
diff --git a/pc4mobx/hrmSalary/stores/archives.js b/pc4mobx/hrmSalary/stores/archives.js
index 383e585d..096a5ab7 100644
--- a/pc4mobx/hrmSalary/stores/archives.js
+++ b/pc4mobx/hrmSalary/stores/archives.js
@@ -8,6 +8,13 @@ import * as API from "../apis/welfareArchive"; // 引入API接口文件
const { TableStore } = WeaTableNew;
export class ArchivesStore {
+ @observable logForm = new WeaForm(); // 社保福利档案重构-日志查询条件log
+
+
+
+
+
+
@observable tableStore = new TableStore(
// {dataHandle: (datas) => {
// return dataSource;
From 510e46045e174eef78caebca58e0649f286807a8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=BB=8E=E6=B0=B8=E9=A1=BA?= <971387674@qq.com>
Date: Mon, 23 Oct 2023 18:06:09 +0800
Subject: [PATCH 03/10] =?UTF-8?q?feature/2.9.42310.01-=E7=A4=BE=E4=BF=9D?=
=?UTF-8?q?=E6=A1=A3=E6=A1=88=E6=93=8D=E4=BD=9C=E6=97=A5=E5=BF=97?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../archives/config/index.js | 44 +++++++++++++++++--
.../archives/index.less | 14 ++++++
.../archives/operateLogDialog/index.js | 10 ++---
3 files changed, 59 insertions(+), 9 deletions(-)
diff --git a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/archives/config/index.js b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/archives/config/index.js
index 84443fb2..e4e94622 100644
--- a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/archives/config/index.js
+++ b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/archives/config/index.js
@@ -1,3 +1,10 @@
+import { WeaSwitch } from "comsMobx";
+import { Button } from "antd";
+import { WeaFormItem, WeaLocaleProvider, WeaSearchGroup, WeaTools } from "ecCom";
+
+const getKey = WeaTools.getKey;
+const getLabel = WeaLocaleProvider.getLabel;
+
export const tabCondition = [
{
color: "#000000",
@@ -61,10 +68,10 @@ export const logConditions = [
type: "1"
},
domkey: ["employeeId"],
- fieldcol: 10,
+ fieldcol: 17,
label: "对象",
lanId: 106,
- labelcol: 4,
+ labelcol: 7,
value: ""
},
{
@@ -90,13 +97,42 @@ export const logConditions = [
type: "1"
},
domkey: ["operator"],
- fieldcol: 10,
+ fieldcol: 17,
label: "操作人",
lanId: 111,
- labelcol: 4,
+ labelcol: 7,
value: ""
}
],
defaultshow: true
}
];
+export const getLogSearchsForm = (form, condition, onSearch = () => void (0)) => {
+ const { isFormInit } = form;
+ const formParams = form.getFormParams();
+ let group = [];
+ isFormInit && condition && condition.map(c => {
+ let items = [];
+ c.items.map(fields => {
+ items.push({
+ com: (
+
+
+ {
+ getKey(fields) === "operator" &&
+
+ }
+ ),
+ colSpan: 1
+ });
+ });
+ group.push(
+ );
+ });
+ return group;
+};
diff --git a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/archives/index.less b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/archives/index.less
index 6d62dff0..59293057 100644
--- a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/archives/index.less
+++ b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/archives/index.less
@@ -99,6 +99,20 @@
width: 100%;
height: 100%;
+ .wea-search-group {
+ padding: 0;
+ margin-bottom: 10px;
+ background: #FFF;
+
+ .wea-form-cell {
+ padding: 0;
+
+ .wea-form-item {
+ padding: 10px;
+ }
+ }
+ }
+
.logTable {
background: #FFFFFF;
}
diff --git a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/archives/operateLogDialog/index.js b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/archives/operateLogDialog/index.js
index 99f93e32..d7f65def 100644
--- a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/archives/operateLogDialog/index.js
+++ b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/archives/operateLogDialog/index.js
@@ -8,8 +8,7 @@ import React, { Component } from "react";
import { inject, observer } from "mobx-react";
import { WeaDialog, WeaLocaleProvider, WeaTable } from "ecCom";
import { getAdjustHistoryList } from "../../../../apis/archive";
-import { logConditions } from "../config";
-import { getSearchs } from "../../../../util";
+import { getLogSearchsForm, logConditions } from "../config";
import moment from "moment";
const getLabel = WeaLocaleProvider.getLabel;
@@ -46,7 +45,8 @@ class Index extends Component {
getAdjustHistoryList = () => {
const { pageInfo } = this.state;
- const payload = { ...pageInfo };
+ const { archivesStore: { logForm } } = this.props;
+ const payload = { ...pageInfo, ...logForm.getFormParams() };
this.setState({ loading: true });
getAdjustHistoryList(payload).then(({ status, data }) => {
this.setState({ loading: false });
@@ -86,7 +86,7 @@ class Index extends Component {
}, () => this.getAdjustHistoryList());
}
};
- const scrollHeight = this.logRef ? this.logRef.state.height - 135 : 606.6;
+ const scrollHeight = this.logRef ? this.logRef.state.height - 210 : 606.6;
return (
- {getSearchs(logForm, conditions, 4, false)}
+ {getLogSearchsForm(logForm, conditions, () => this.getAdjustHistoryList())}
Date: Mon, 23 Oct 2023 18:28:29 +0800
Subject: [PATCH 04/10] =?UTF-8?q?feature/2.9.42310.01-=E7=A4=BE=E4=BF=9D?=
=?UTF-8?q?=E6=A1=A3=E6=A1=88=E6=93=8D=E4=BD=9C=E6=97=A5=E5=BF=97?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../archives/operateLogDialog/index.js | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/archives/operateLogDialog/index.js b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/archives/operateLogDialog/index.js
index d7f65def..6f1ab4ed 100644
--- a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/archives/operateLogDialog/index.js
+++ b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/archives/operateLogDialog/index.js
@@ -43,10 +43,10 @@ class Index extends Component {
}
}
- getAdjustHistoryList = () => {
+ getAdjustHistoryList = (extra = {}) => {
const { pageInfo } = this.state;
const { archivesStore: { logForm } } = this.props;
- const payload = { ...pageInfo, ...logForm.getFormParams() };
+ const payload = { ...pageInfo, ...logForm.getFormParams(), ...extra };
this.setState({ loading: true });
getAdjustHistoryList(payload).then(({ status, data }) => {
this.setState({ loading: false });
@@ -65,7 +65,6 @@ class Index extends Component {
}).catch(() => this.setState({ loading: false }));
};
-
render() {
const { loading, dataSource, columns, pageInfo, conditions } = this.state;
const { archivesStore: { logForm } } = this.props;
@@ -103,7 +102,7 @@ class Index extends Component {
}}
>
- {getLogSearchsForm(logForm, conditions, () => this.getAdjustHistoryList())}
+ {getLogSearchsForm(logForm, conditions, () => this.getAdjustHistoryList({ current: 1 }))}
Date: Thu, 2 Nov 2023 14:30:18 +0800
Subject: [PATCH 05/10] =?UTF-8?q?feature/2.9.42310.02-=E8=96=AA=E9=85=AC?=
=?UTF-8?q?=E7=BB=9F=E8=AE=A1=E6=8A=A5=E8=A1=A8=E7=BB=9F=E8=AE=A1=E9=A1=B9?=
=?UTF-8?q?=E7=9B=AE=E8=AE=BE=E7=BD=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pc4mobx/hrmSalary/apis/statistics.js | 4 +
...atisticsItemsModal-统计范围设置弹框重构.js | 422 ++++++++++++++++++
.../components/customStatisticsItemsModal.js | 50 ++-
.../statisticalMicroSettingsSlide.js | 26 +-
pc4mobx/hrmSalary/pages/reportView/index.less | 19 +
5 files changed, 499 insertions(+), 22 deletions(-)
create mode 100644 pc4mobx/hrmSalary/pages/reportView/components/customStatisticsItemsModal-统计范围设置弹框重构.js
diff --git a/pc4mobx/hrmSalary/apis/statistics.js b/pc4mobx/hrmSalary/apis/statistics.js
index 6297dfa8..034dd649 100644
--- a/pc4mobx/hrmSalary/apis/statistics.js
+++ b/pc4mobx/hrmSalary/apis/statistics.js
@@ -106,3 +106,7 @@ export const salaryStatisticsPushGetDetail = (params) => {
export const salaryStatisticsPushAddSharedSendMsg = (params) => {
return postFetch("/api/bs/salaryreport/salary/statistics/push/addSharedSendMsg", params);
};
+//薪酬统计维度-切换薪资项目
+export const statisticsItemChangetab = (params) => {
+ return WeaTools.callApi("/api/bs/hrmsalary/report/statistics/item/changeTab", "GET", params);
+};
diff --git a/pc4mobx/hrmSalary/pages/reportView/components/customStatisticsItemsModal-统计范围设置弹框重构.js b/pc4mobx/hrmSalary/pages/reportView/components/customStatisticsItemsModal-统计范围设置弹框重构.js
new file mode 100644
index 00000000..49f5a462
--- /dev/null
+++ b/pc4mobx/hrmSalary/pages/reportView/components/customStatisticsItemsModal-统计范围设置弹框重构.js
@@ -0,0 +1,422 @@
+/*
+ * Author: 黎永顺
+ * name: 新建自定义统计项目弹框
+ * Description:
+ * Date: 2023/4/10
+ */
+import React, { Component } from "react";
+import { Button, message, Modal } from "antd";
+import {
+ WeaBrowser,
+ WeaCheckbox,
+ WeaDialog,
+ WeaError,
+ WeaFormItem,
+ WeaHelpfulTip,
+ WeaInput,
+ WeaInputNumber,
+ WeaLocaleProvider,
+ WeaTable
+} from "ecCom";
+import { reportStatisticsItemSave, statisticsItemGetform } from "../../../apis/statistics";
+import "../index.less";
+
+const { getLabel } = WeaLocaleProvider;
+
+class CustomStatisticsItemsModal extends Component {
+ constructor(props) {
+ super(props);
+ this.state = {
+ loading: false,
+ columns: [],
+ dataSource: [],
+ formData: {
+ itemValue: "", itemValueSpan: "",
+ itemName: ""
+ }
+ };
+ }
+
+ componentWillReceiveProps(nextProps, nextContext) {
+ if (nextProps.visible !== this.props.visible && nextProps.visible) {
+ this.statisticsItemGetform({ id: nextProps.statisticsItemId });
+ } else {
+ this.setState({
+ columns: [],
+ dataSource: [],
+ formData: {
+ itemValue: "", itemValueSpan: "",
+ itemName: ""
+ }
+ });
+ }
+ }
+
+ handleSaveStatisticalItems = () => {
+ const { dataSource, formData } = this.state;
+ const { id: statReportId, statisticsItemId } = this.props;
+ const { itemValue, itemName } = formData;
+ const isNoRules = _.some(dataSource, it => !!it.m2mValue || !!it.ratioValue || !!it.totalValue || !!it.y2yValue);
+ const isChainRequired = _.some(dataSource, it => !!it.m2mValue && (!it.m2mLowerLimit || !it.m2mUpperLimit));
+ const isChainValRight = _.some(dataSource, it => !!it.m2mValue && it.m2mLowerLimit !== 0 && it.m2mUpperLimit !== 0 && (Number(it.m2mLowerLimit) > Number(it.m2mUpperLimit)));
+ const isYoyRequired = _.some(dataSource, it => !!it.y2yValue && (!it.y2yLowerLimit || !it.y2yUpperLimit));
+ const isYoyValRight = _.some(dataSource, it => !!it.y2yValue && it.y2yLowerLimit !== 0 && it.y2yUpperLimit !== 0 && (Number(it.y2yLowerLimit) > Number(it.y2yUpperLimit)));
+ if (!itemValue && !itemName) {
+ this.refs.proError.showError();
+ this.refs.nameError.showError();
+ return;
+ }
+ if (!itemValue) {
+ this.refs.proError.showError();
+ return;
+ }
+ if (!itemName) {
+ this.refs.nameError.showError();
+ return;
+ }
+ if (!isNoRules) {
+ message.warning(getLabel(111, "请至少设置一个统计规则"));
+ return;
+ }
+ if (isChainRequired) {
+ message.warning(getLabel(111, "请完善环比增幅正常区间设置上下限"));
+ return;
+ }
+ if (isChainValRight) {
+ message.warning(getLabel(111, "环比增幅上下限设置错误"));
+ return;
+ }
+ if (isYoyRequired) {
+ message.warning(getLabel(111, "请完善同比增幅正常区间设置上下限"));
+ return;
+ }
+ if (isYoyValRight) {
+ message.warning(getLabel(111, "同比增幅上下限设置错误"));
+ return;
+ }
+ let payload = { statReportId, itemValue: itemValue.split(","), itemName };
+ payload = {
+ id: statisticsItemId,
+ ...payload,
+ ..._.reduce(dataSource, (pre, cur) => {
+ if (!!cur.m2mValue || !!cur.ratioValue || !!cur.totalValue || !!cur.y2yValue) {
+ const { y2yLowerLimit, y2yUpperLimit, m2mLowerLimit, m2mUpperLimit } = cur;
+ if (!!cur.m2mValue) {
+ return {
+ ...pre,
+ [`${cur["id"]}Rule`]: {
+ m2mValue: cur.m2mValue.toString(),
+ ratioValue: cur.ratioValue.toString(),
+ totalValue: cur.totalValue.toString(),
+ y2yValue: cur.y2yValue.toString(),
+ m2mLowerLimit: m2mLowerLimit.toString(),
+ m2mUpperLimit: m2mUpperLimit.toString()
+ }
+ };
+ }
+ if (!!cur.m2mValue) {
+ return {
+ ...pre,
+ [`${cur["id"]}Rule`]: {
+ m2mValue: cur.m2mValue.toString(),
+ ratioValue: cur.ratioValue.toString(),
+ totalValue: cur.totalValue.toString(),
+ y2yValue: cur.y2yValue.toString(),
+ y2yLowerLimit: y2yLowerLimit.toString(),
+ y2yUpperLimit: y2yUpperLimit.toString()
+ }
+ };
+ }
+ if (!!cur.y2yValue && !!cur.y2yValue) {
+ return {
+ ...pre,
+ [`${cur["id"]}Rule`]: {
+ m2mValue: cur.m2mValue.toString(),
+ ratioValue: cur.ratioValue.toString(),
+ totalValue: cur.totalValue.toString(),
+ y2yValue: cur.y2yValue.toString(),
+ m2mLowerLimit: m2mLowerLimit.toString(),
+ m2mUpperLimit: m2mUpperLimit.toString(),
+ y2yLowerLimit: y2yLowerLimit.toString(),
+ y2yUpperLimit: y2yUpperLimit.toString()
+ }
+ };
+ }
+ return {
+ ...pre,
+ [`${cur["id"]}Rule`]: {
+ m2mValue: cur.m2mValue.toString(),
+ ratioValue: cur.ratioValue.toString(),
+ totalValue: cur.totalValue.toString(),
+ y2yValue: cur.y2yValue.toString()
+ }
+ };
+ }
+ return { ...pre };
+ }, {})
+ };
+ if (statisticsItemId) {
+ Modal.confirm({
+ title: getLabel(111, "信息确认"),
+ content: getLabel(111, `确定要编辑统计项吗?编辑后,可能需要重新设置分析图设置。`),
+ onOk: () => this.reportStatisticsItemSave(payload)
+ });
+ } else {
+ this.reportStatisticsItemSave(payload);
+ }
+ };
+ reportStatisticsItemSave = (payload) => {
+ this.setState({ loading: true });
+ reportStatisticsItemSave(payload).then(({ status, errormsg }) => {
+ this.setState({ loading: false });
+ if (status) {
+ this.setState({
+ formData: {
+ itemValue: "", itemName: ""
+ }
+ }, () => this.props.onCancel(true));
+ } else {
+ message.error(errormsg);
+ }
+ }).catch(() => this.setState({ loading: false }));
+ };
+
+
+ statisticsItemGetform = (payload) => {
+ statisticsItemGetform(payload).then(({ status, data }) => {
+ if (status) {
+ const { formData } = this.state;
+ const { ruleData, baseForm } = data;
+ const { data: dataDetail } = baseForm;
+ const { columns, data: dataSource } = ruleData;
+ this.setState({
+ columns, dataSource,
+ formData: {
+ ...formData,
+ itemName: dataDetail ? dataDetail.itemName : "",
+ itemValue: dataDetail ? _.map(dataDetail.itemValue, it => it.id).join() : "",
+ itemValueSpan: dataDetail ? _.map(dataDetail.itemValue, it => it.name).join() : ""
+ }
+ });
+ }
+ });
+ };
+ handleChangeColumnCheckBox = (key, value, id) => {
+ const { dataSource } = this.state;
+ this.setState({
+ dataSource: _.map(dataSource, it => {
+ if (it.id === id) {
+ if (key !== "totalValue" && !!value && value !== "0") {
+ return {
+ ...it,
+ totalValue: Number(value),
+ [key]: Number(value)
+ };
+ }
+ return {
+ ...it,
+ [key]: Number(value)
+ };
+ }
+ return { ...it };
+ })
+ });
+ };
+ handleChangeColumnAllChecked = (key, val) => {
+ const { dataSource } = this.state;
+ this.setState({
+ dataSource: _.map(dataSource, it => {
+ if (key !== "totalValue" && !!val && val !== "0") {
+ return {
+ ...it,
+ totalValue: Number(val),
+ [key]: Number(val)
+ };
+ }
+ return {
+ ...it,
+ [key]: Number(val)
+ };
+ })
+ });
+ };
+ handleChangeColumnM2MValue = (key, value, id) => {
+ const { dataSource } = this.state;
+ this.setState({
+ dataSource: _.map(dataSource, it => {
+ if (it.id === id) {
+ return {
+ ...it,
+ [key]: value
+ };
+ }
+ return { ...it };
+ })
+ });
+ };
+ handleChangeStatisticalItems = (itemValue, _names, datas) => {
+ const { formData } = this.state;
+ this.setState({
+ formData: {
+ ...formData,
+ itemValue,
+ itemValueSpan: _.map(datas, it => it.name).join(","),
+ itemName: datas.length === 1 ? _.map(datas, it => it.names).join(",") : ""
+ }
+ });
+ };
+
+ render() {
+ const { loading, columns, dataSource, formData } = this.state;
+ const { itemName, itemValue, itemValueSpan } = formData;
+ const { statisticsItemId, isShare } = this.props;
+ const cols = _.map(columns, it => {
+ const { text, column } = it;
+ if (column === "ruleName" || column === "ratio" || column === "m2m" || column === "y2y") {
+ const key = column === "ruleName" ? "total" : column;
+ return {
+ ...it,
+ title:
+ !!child[`${key}Value`])}
+ onChange={val => this.handleChangeColumnAllChecked(`${key}Value`, val)}
+ />
+ {text}
+ ,
+ render: (txt, record) => {
+ return
+ this.handleChangeColumnCheckBox(`${key}Value`, val, record.id)}
+ />
+
+ {column === "ruleName" ? record["ruleName"] : text}
+
+ ;
+ }
+ };
+ } else if (column === "m2mLimit") {
+ return {
+ ...it,
+ title:
+ {text}
+ 10%,差值和增幅标记为红色,增幅<-10%标记为绿色")}
+ placement="top" width={200}/>
+ ,
+ render: (txt, record) => {
+ return !!record["m2mValue"] && this.handleChangeColumnM2MValue(`${column.replace("Limit", "")}${type === "min" ? "LowerLimit" : "UpperLimit"}`, val, record.id)}
+ />;
+ }
+ };
+ } else if (column === "y2yLimit") {
+ return {
+ ...it,
+ title:
+ {text}
+ 10%,差值和增幅标记为红色,增幅<-10%标记为绿色")}
+ placement="top" width={200}/>
+ ,
+ render: (txt, record) => {
+ return !!record["y2yValue"] && this.handleChangeColumnM2MValue(`${column.replace("Limit", "")}${type === "min" ? "LowerLimit" : "UpperLimit"}`, val, record.id)}
+ />;
+ }
+ };
+ }
+ });
+ return (
+
+ {statisticsItemId ? getLabel(111, "编辑自定义统计项目") : getLabel(111, "新建自定义统计项目")}
+ {
+ !isShare &&
+ }
+
+ }
+ style={{ width: 900, height: 450 }}
+ className="statisticItemsWrapper"
+ >
+
+
+
+ ({
+ id: it,
+ name: itemValueSpan.split(",")[idx]
+ })) : []}
+ completeParams={{
+ type: 162,
+ fielddbtype: "browser.salaryItemBrowser",
+ f_weaver_belongto_usertype: "0"
+ }}
+ conditionDataParams={{
+ type: "browser.salaryItemBrowser",
+ fielddbtype: "browser.salaryItemBrowser",
+ f_weaver_belongto_usertype: "0"
+ }}
+ dataParams={{
+ type: "browser.salaryItemBrowser",
+ f_weaver_belongto_usertype: "0"
+ }}
+ destDataParams={{
+ type: "browser.salaryItemBrowser",
+ f_weaver_belongto_usertype: "0"
+ }}
+ isMultCheckbox
+ inputStyle={{ width: "100%" }}
+ onChange={this.handleChangeStatisticalItems}
+ />
+
+
+
+
+ this.setState({ formData: { ...formData, itemName } })}/>
+
+
+
+
+
+
+
+ );
+ }
+}
+
+export default CustomStatisticsItemsModal;
+/*
+ * Author: 黎永顺
+ * Description: 区间设置
+ * Params:
+ * Date: 2023/4/23
+ */
+const IntervalSettingsComp = (props) => {
+ const { LowerLimit, UpperLimit, onChange, isShare } = props;
+ return
+ onChange("min", val)} disabled={isShare}/>
+ {`% <${getLabel(111, "增幅")}<`}
+ onChange("max", val)} disabled={isShare}/>
+ %
+
;
+};
diff --git a/pc4mobx/hrmSalary/pages/reportView/components/customStatisticsItemsModal.js b/pc4mobx/hrmSalary/pages/reportView/components/customStatisticsItemsModal.js
index 49f5a462..a94d2a07 100644
--- a/pc4mobx/hrmSalary/pages/reportView/components/customStatisticsItemsModal.js
+++ b/pc4mobx/hrmSalary/pages/reportView/components/customStatisticsItemsModal.js
@@ -18,7 +18,7 @@ import {
WeaLocaleProvider,
WeaTable
} from "ecCom";
-import { reportStatisticsItemSave, statisticsItemGetform } from "../../../apis/statistics";
+import { reportStatisticsItemSave, statisticsItemChangetab, statisticsItemGetform } from "../../../apis/statistics";
import "../index.less";
const { getLabel } = WeaLocaleProvider;
@@ -142,15 +142,24 @@ class CustomStatisticsItemsModal extends Component {
}
};
}
- return {
- ...pre,
- [`${cur["id"]}Rule`]: {
- m2mValue: cur.m2mValue.toString(),
- ratioValue: cur.ratioValue.toString(),
- totalValue: cur.totalValue.toString(),
- y2yValue: cur.y2yValue.toString()
- }
- };
+ if (_.isNil(cur.m2mValue) && _.isNil(cur.ratioValue) && _.isNil(cur.y2yValue)) {
+ return {
+ ...pre,
+ [`${cur["id"]}Rule`]: {
+ totalValue: cur.totalValue.toString()
+ }
+ };
+ } else {
+ return {
+ ...pre,
+ [`${cur["id"]}Rule`]: {
+ m2mValue: cur.m2mValue.toString(),
+ ratioValue: cur.ratioValue.toString(),
+ totalValue: cur.totalValue.toString(),
+ y2yValue: cur.y2yValue.toString()
+ }
+ };
+ }
}
return { ...pre };
}, {})
@@ -194,8 +203,8 @@ class CustomStatisticsItemsModal extends Component {
formData: {
...formData,
itemName: dataDetail ? dataDetail.itemName : "",
- itemValue: dataDetail ? _.map(dataDetail.itemValue, it => it.id).join() : "",
- itemValueSpan: dataDetail ? _.map(dataDetail.itemValue, it => it.name).join() : ""
+ itemValue: dataDetail ? dataDetail.itemValue.id : "",
+ itemValueSpan: dataDetail ? dataDetail.itemValue.name : ""
}
});
}
@@ -263,6 +272,16 @@ class CustomStatisticsItemsModal extends Component {
itemValueSpan: _.map(datas, it => it.name).join(","),
itemName: datas.length === 1 ? _.map(datas, it => it.names).join(",") : ""
}
+ }, () => {
+ statisticsItemChangetab({ itemId: itemValue }).then(({ status, data }) => {
+ if (status) {
+ const { ruleData } = data;
+ const { columns, data: dataSource } = ruleData;
+ this.setState({
+ columns, dataSource
+ });
+ }
+ });
});
};
@@ -352,10 +371,7 @@ class CustomStatisticsItemsModal extends Component {
({
id: it,
@@ -379,7 +395,7 @@ class CustomStatisticsItemsModal extends Component {
type: "browser.salaryItemBrowser",
f_weaver_belongto_usertype: "0"
}}
- isMultCheckbox
+ // isMultCheckbox
inputStyle={{ width: "100%" }}
onChange={this.handleChangeStatisticalItems}
/>
diff --git a/pc4mobx/hrmSalary/pages/reportView/components/statisticalMicroSettingsSlide.js b/pc4mobx/hrmSalary/pages/reportView/components/statisticalMicroSettingsSlide.js
index 32f074d1..aae94c87 100644
--- a/pc4mobx/hrmSalary/pages/reportView/components/statisticalMicroSettingsSlide.js
+++ b/pc4mobx/hrmSalary/pages/reportView/components/statisticalMicroSettingsSlide.js
@@ -47,6 +47,7 @@ class StatisticalMicroSettingsSlide extends Component {
dataSource: [],
unitTypeList: [],
salaryMonth: [],
+ showMonthRange: true,
statisticalItemPayload: {
visible: false, id: "", dimension: "",
statisticsItemId: "", isShare: false
@@ -232,7 +233,7 @@ class StatisticalMicroSettingsSlide extends Component {
render() {
const {
- salaryMonth, conditions, selectedRowKeys, loading,
+ salaryMonth, showMonthRange, conditions, selectedRowKeys, loading,
statisticalItemPayload, dataSource, unitTypeList
} = this.state;
const { id, dimension, isShare } = this.props;
@@ -287,10 +288,25 @@ class StatisticalMicroSettingsSlide extends Component {
-
- this.setState({ salaryMonth: v })}/>
-
+
+
+
+ this.setState({ salaryMonth: [v, v], showMonthRange: false })}/>
+
+
+
+
{
diff --git a/pc4mobx/hrmSalary/pages/reportView/index.less b/pc4mobx/hrmSalary/pages/reportView/index.less
index ecf9b997..721a4331 100644
--- a/pc4mobx/hrmSalary/pages/reportView/index.less
+++ b/pc4mobx/hrmSalary/pages/reportView/index.less
@@ -304,6 +304,25 @@
display: flex;
align-items: center;
}
+
+ .date-set-area {
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+
+ .date-item:first-child {
+ margin-bottom: 10px;
+ }
+
+ .date-item:last-child {
+ display: flex;
+ align-items: center;
+
+ a {
+ margin-right: 10px;
+ }
+ }
+ }
}
//新建自定义统计项目
From 8bd1cd51af2b5fea55d0529cf43d7dfcaf0b41e9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=BB=8E=E6=B0=B8=E9=A1=BA?= <971387674@qq.com>
Date: Mon, 6 Nov 2023 17:05:26 +0800
Subject: [PATCH 06/10] =?UTF-8?q?feature/2.9.42310.02-=E8=96=AA=E9=85=AC?=
=?UTF-8?q?=E7=BB=9F=E8=AE=A1=E6=8A=A5=E8=A1=A8=E7=BB=9F=E8=AE=A1=E9=A1=B9?=
=?UTF-8?q?=E7=9B=AE=E8=AE=BE=E7=BD=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../statisticalMicroSettingsSlide.js | 33 +++++++++++++------
1 file changed, 23 insertions(+), 10 deletions(-)
diff --git a/pc4mobx/hrmSalary/pages/reportView/components/statisticalMicroSettingsSlide.js b/pc4mobx/hrmSalary/pages/reportView/components/statisticalMicroSettingsSlide.js
index aae94c87..cdbe05c9 100644
--- a/pc4mobx/hrmSalary/pages/reportView/components/statisticalMicroSettingsSlide.js
+++ b/pc4mobx/hrmSalary/pages/reportView/components/statisticalMicroSettingsSlide.js
@@ -47,6 +47,7 @@ class StatisticalMicroSettingsSlide extends Component {
dataSource: [],
unitTypeList: [],
salaryMonth: [],
+ salaryMonthDefault: "",
showMonthRange: true,
statisticalItemPayload: {
visible: false, id: "", dimension: "",
@@ -99,7 +100,8 @@ class StatisticalMicroSettingsSlide extends Component {
if (status && !_.isEmpty(data)) {
const { salaryEndMonth, salaryStartMonth, ...formData } = data.data;
this.setState({
- salaryMonth: [salaryStartMonth || moment().startOf("year").format("YYYY-MM"), salaryEndMonth || moment().format("YYYY-MM")]
+ salaryMonth: [salaryStartMonth || moment().startOf("year").format("YYYY-MM"), salaryEndMonth || moment().format("YYYY-MM")],
+ salaryMonthDefault: salaryStartMonth || moment().startOf("year").format("YYYY-MM")
});
const fields = _.map(conditions[0].items, it => it.domkey[0]);
fields.map(item => {
@@ -119,12 +121,12 @@ class StatisticalMicroSettingsSlide extends Component {
});
};
reportStatisticsSaveSearchCondition = () => {
- const { salaryMonth, dataSource } = this.state;
+ const { salaryMonth, salaryMonthDefault, dataSource } = this.state;
const { form, id, dimension, onClose } = this.props;
const [salaryStartMonth, salaryEndMonth] = salaryMonth;
const { department, employee, position, subCompany, taxAgent, ...extra } = form.getFormDatas();
const { value, valueSpan } = taxAgent;
- if (!salaryEndMonth || !salaryStartMonth) {
+ if ((!salaryEndMonth || !salaryStartMonth) && !salaryMonthDefault) {
this.refs.weaError.showError();
return;
}
@@ -137,13 +139,14 @@ class StatisticalMicroSettingsSlide extends Component {
subCompany: _.map(subCompany.valueObj, it => ({ id: it.id, name: it.name })),
taxAgent: value ? _.map(value.split(","), (it, idx) => ({ id: it, name: valueSpan.split(",")[idx] })) : [],
items: dataSource,
- salaryEndMonth: salaryEndMonth + "-01",
- salaryStartMonth: salaryStartMonth + "-01"
+ salaryEndMonth: (salaryEndMonth || salaryMonthDefault) + "-01",
+ salaryStartMonth: (salaryStartMonth || salaryMonthDefault) + "-01"
};
this.setState({ loading: true });
reportStatisticsSaveSearchCondition(payload).then(({ status, errormsg }) => {
this.setState({ loading: false });
if (status) {
+ this.setState({ showMonthRange: true });
onClose(true);
message.success(getLabel(111, "保存成功"));
} else {
@@ -233,7 +236,7 @@ class StatisticalMicroSettingsSlide extends Component {
render() {
const {
- salaryMonth, showMonthRange, conditions, selectedRowKeys, loading,
+ salaryMonth, salaryMonthDefault, showMonthRange, conditions, selectedRowKeys, loading,
statisticalItemPayload, dataSource, unitTypeList
} = this.state;
const { id, dimension, isShare } = this.props;
@@ -275,7 +278,9 @@ class StatisticalMicroSettingsSlide extends Component {
this.props.onClose()}
+ onClose={() => {
+ this.setState({ showMonthRange: true }, () => this.props.onClose());
+ }}
top={0}
measureT="%"
width={800}
@@ -291,13 +296,21 @@ class StatisticalMicroSettingsSlide extends Component {
- this.setState({ salaryMonth: [v, v], showMonthRange: false })}/>
+ this.setState({
+ salaryMonth: [v, v],
+ salaryMonthDefault: v,
+ showMonthRange: !v
+ })}/>
this.setState({ showMonthRange: true })}>{getLabel(111, "指定日期范围")}
+ onClick={() => this.setState({
+ showMonthRange: true,
+ salaryMonth: []
+ })}>{getLabel(111, "指定日期范围")}
{
showMonthRange &&
From 5fd2120f14ddf9330516a96bfe4cd60222e695a9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=BB=8E=E6=B0=B8=E9=A1=BA?= <971387674@qq.com>
Date: Tue, 7 Nov 2023 16:21:17 +0800
Subject: [PATCH 07/10] =?UTF-8?q?feature/2.9.42310.01-=E7=BB=9F=E8=AE=A1?=
=?UTF-8?q?=E7=BB=B4=E5=BA=A6=E7=AE=A1=E7=90=86=E5=BC=B9=E6=A1=86=E4=BF=AE?=
=?UTF-8?q?=E6=94=B9=E4=BB=A5=E5=8F=8A=E6=B7=BB=E5=8A=A0=E4=BA=BA=E5=91=98?=
=?UTF-8?q?=E7=9A=84=E6=89=A9=E5=B1=95=E5=B1=9E=E6=80=A7=E8=AE=BE=E7=BD=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pc4mobx/hrmSalary/apis/statistics.js | 12 ++
.../components/conditions.js | 35 ++++-
.../dimensionExtensionAttrsDialog.js | 142 ++++++++++++++++++
.../components/dimensionTable.js | 30 ++--
.../components/reportList.js | 17 ++-
.../components/statisticsModal.js | 42 ++++--
.../pages/analysisOfSalaryStatistics/index.js | 4 +-
.../analysisOfSalaryStatistics/index.less | 72 +++++++++
pc4mobx/hrmSalary/stores/attendanceStore.js | 3 +
9 files changed, 331 insertions(+), 26 deletions(-)
create mode 100644 pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/components/dimensionExtensionAttrsDialog.js
diff --git a/pc4mobx/hrmSalary/apis/statistics.js b/pc4mobx/hrmSalary/apis/statistics.js
index 6297dfa8..80007822 100644
--- a/pc4mobx/hrmSalary/apis/statistics.js
+++ b/pc4mobx/hrmSalary/apis/statistics.js
@@ -106,3 +106,15 @@ export const salaryStatisticsPushGetDetail = (params) => {
export const salaryStatisticsPushAddSharedSendMsg = (params) => {
return postFetch("/api/bs/salaryreport/salary/statistics/push/addSharedSendMsg", params);
};
+//报表记录-扩展人员维度显示值
+export const saveExpandFieldSettings = (params) => {
+ return postFetch("/api/bs/hrmsalary/report/statistics/dimension/saveExpandFieldSettings", params);
+};
+//报表记录-查询薪酬统计维度扩展字段设置
+export const getExpandFieldSettings = (params) => {
+ return WeaTools.callApi("/api/bs/hrmsalary/report/statistics/dimension/getExpandFieldSettings", "GET", params);
+};
+//报表记录-复制薪酬统计报表
+export const statisticsReportDuplicate = (params) => {
+ return WeaTools.callApi("/api/bs/hrmsalary/report/statistics/report/duplicate", "GET", params);
+};
diff --git a/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/components/conditions.js b/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/components/conditions.js
index 7bcac916..fe2554e4 100644
--- a/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/components/conditions.js
+++ b/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/components/conditions.js
@@ -49,7 +49,7 @@ export const condition = [
labelcol: 6,
options: [],
viewAttr: 2,
- helpfulTip: "",
+ helpfulTip: ""
},
{
colSpan: 1,
@@ -90,10 +90,41 @@ export const reportCondition = [
options: [],
rules: "required|string",
viewAttr: 3,
- helpfulTip: "",
+ helpfulTip: ""
}
],
title: "",
defaultshow: true
}
];
+export const extensionCondition = [
+ {
+ items: [
+ {
+ colSpan: 1,
+ conditionType: "INPUT",
+ domkey: ["pk"],
+ fieldcol: 14,
+ label: "主键",
+ lanId: 111,
+ labelcol: 6,
+ value: "",
+ rules: "required|string",
+ viewAttr: 3
+ },
+ {
+ colSpan: 1,
+ conditionType: "TEXTAREA",
+ domkey: ["expandSql"],
+ fieldcol: 14,
+ label: "sql",
+ lanId: 111,
+ labelcol: 6,
+ value: "",
+ rules: "required|string",
+ viewAttr: 3
+ }
+ ],
+ defaultshow: true
+ }
+];
diff --git a/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/components/dimensionExtensionAttrsDialog.js b/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/components/dimensionExtensionAttrsDialog.js
new file mode 100644
index 00000000..700dfa73
--- /dev/null
+++ b/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/components/dimensionExtensionAttrsDialog.js
@@ -0,0 +1,142 @@
+/*
+ * Author: 黎永顺
+ * name: 统计维度-新增扩展属性
+ * Description:
+ * Date: 2023/11/7
+ */
+import React, { Component } from "react";
+import { inject, observer } from "mobx-react";
+import { WeaDialog, WeaLocaleProvider, WeaTableEdit } from "ecCom";
+import { Button, message } from "antd";
+import { getExpandFieldSettings, saveExpandFieldSettings } from "../../../apis/statistics";
+import { extensionCondition } from "./conditions";
+import { getConditionDomkeys, getSearchs } from "../../../util";
+
+const getLabel = WeaLocaleProvider.getLabel;
+
+@inject("attendanceStore")
+@observer
+class DimensionExtensionAttrsDialog extends Component {
+ constructor(props) {
+ super(props);
+ this.state = {
+ conditions: [], loading: false, datas: [], extensionId: ""
+ };
+ }
+
+ componentWillReceiveProps(nextProps, nextContext) {
+ if (nextProps.visible !== this.props.visible && nextProps.visible) this.getExpandFieldSettings(nextProps);
+ if (nextProps.visible !== this.props.visible && !nextProps.visible) {
+ this.setState({ extensionId: "", datas: [] });
+ nextProps.attendanceStore.initExtensionForm();
+ }
+ }
+
+ getExpandFieldSettings = (props) => {
+ getExpandFieldSettings({ module: "dim_employee" }).then(({ status, data }) => {
+ if (status) {
+ const { id: extensionId = "", fieldSettings: datas = [] } = data || {};
+ this.setState({
+ extensionId, datas,
+ conditions: _.map(extensionCondition, o => {
+ return {
+ ...o,
+ items: _.map(o.items, g => {
+ return { ...g, label: getLabel(g.lanId, g.label) };
+ })
+ };
+ })
+ }, () => {
+ const { attendanceStore: { extensionForm } } = props;
+ extensionForm.initFormFields(this.state.conditions);
+ if (!_.isNil(data))
+ _.map(getConditionDomkeys(this.state.conditions), o => {
+ extensionForm.updateFields({ [o]: data[o] || "" });
+ });
+ });
+ }
+ });
+ };
+ save = () => {
+ const { attendanceStore: { extensionForm } } = this.props;
+ const { datas, extensionId: id } = this.state;
+ const { pass } = this.tableEdit.refs.edit.doRequiredCheck();
+ extensionForm.validateForm().then(f => {
+ if (f.isValid && pass) {
+ const paylaod = {
+ fieldSettings: _.map(datas, (o, i) => ({ ...o, index: i + 1 })),
+ module: "dim_employee", moduleInfo: "", id,
+ ...extensionForm.getFormParams()
+ };
+ this.setState({ loading: true });
+ saveExpandFieldSettings(paylaod).then(({ status, errormsg }) => {
+ this.setState({ loading: false });
+ if (status) {
+ message.success(getLabel(30700, "操作成功!"));
+ this.props.onCancel();
+ } else {
+ message.error(errormsg);
+ }
+ }).catch(() => this.setState({ loading: false }));
+ } else {
+ f.showErrors();
+ }
+ });
+ };
+
+ render() {
+ const { attendanceStore: { extensionForm } } = this.props;
+ const { conditions, loading, datas } = this.state;
+ const columns = [
+ {
+ title: getLabel(33439, "名称"),
+ dataIndex: "name",
+ key: "name",
+ com: [
+ { label: "", type: "INPUT", viewAttr: 3, key: "name" }
+ ],
+ colSpan: 1,
+ width: "50%"
+ },
+ {
+ title: getLabel(111, "字段"),
+ dataIndex: "field",
+ key: "field",
+ com: [
+ { label: "", type: "INPUT", viewAttr: 3, key: "field" }
+ ],
+ colSpan: 1,
+ width: "50%"
+ }
+ ];
+ return (
+ {getLabel(537558, "保存")}
+ ]}
+ style={{
+ width: 850,
+ height: 606.6,
+ minHeight: 200,
+ minWidth: 380,
+ maxHeight: "90%",
+ maxWidth: "90%",
+ overflow: "hidden",
+ transform: "translate(0px, 0px)"
+ }}
+ >
+
+ {getSearchs(extensionForm, conditions, 1, false)}
+ this.tableEdit = el} showCopy={false} draggable deleteConfirm
+ columns={columns} datas={datas} onChange={datas => this.setState({ datas })}
+ />
+
+
+ );
+ }
+}
+
+export default DimensionExtensionAttrsDialog;
diff --git a/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/components/dimensionTable.js b/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/components/dimensionTable.js
index 48eecf43..0f217371 100644
--- a/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/components/dimensionTable.js
+++ b/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/components/dimensionTable.js
@@ -8,6 +8,7 @@ import React, { Component } from "react";
import { WeaLocaleProvider, WeaTable } from "ecCom";
import { message, Modal } from "antd";
import { dimensionDelete, dimensionList } from "../../../apis/statistics";
+import DimensionExtensionAttrsDialog from "./dimensionExtensionAttrsDialog";
import "../index.less";
const { getLabel } = WeaLocaleProvider;
@@ -16,8 +17,7 @@ class DimensionTable extends Component {
constructor(props) {
super(props);
this.state = {
- loading: false,
- dataSource: [],
+ loading: false, dataSource: [], visible: false,
pageInfo: {
current: 1, pageSize: 10, total: 0
}
@@ -63,7 +63,7 @@ class DimensionTable extends Component {
};
render() {
- const { dataSource, loading, pageInfo } = this.state;
+ const { dataSource, loading, pageInfo, visible } = this.state;
const { onEdit } = this.props;
const pagination = {
...pageInfo,
@@ -100,20 +100,28 @@ class DimensionTable extends Component {
this.dimensionDelete([record.id])}>{getLabel(111, "删除")}
}
+ {
+ record.dimName === getLabel(30042, "人员") && record.dimType === getLabel(111, "定性") &&
+ this.setState({ visible: true })}>{getLabel(111, "扩展属性")}
+ }
);
}
}
];
return (
-
+
+
+ this.setState({ visible: false })}/>
+
);
}
}
diff --git a/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/components/reportList.js b/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/components/reportList.js
index af813553..ba66eec2 100644
--- a/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/components/reportList.js
+++ b/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/components/reportList.js
@@ -7,7 +7,11 @@
import React, { Component } from "react";
import { WeaLocaleProvider } from "ecCom";
import { Button, Col, Dropdown, Menu, message, Modal, Row } from "antd";
-import { reportStatisticsReportDelete, reportStatisticsReportList } from "../../../apis/statistics";
+import {
+ reportStatisticsReportDelete,
+ reportStatisticsReportList,
+ statisticsReportDuplicate
+} from "../../../apis/statistics";
import "../index.less";
const SubMenu = Menu.SubMenu;
@@ -26,10 +30,20 @@ class ReportList extends Component {
}
handleOptsClick = ({ key }, id, dimensionId) => {
+ const { reportName = "" } = this.props;
if (key === "delete") {
this.reportStatisticsReportDelete(id.split(","));
} else if (key === "edit") {
this.props.onEdit("addReport", id);
+ } else if (key === "copy") {
+ statisticsReportDuplicate({ id }).then(({ status, errormsg }) => {
+ if (status) {
+ message.success(getLabel(30700, "操作成功!"));
+ this.reportStatisticsReportList({ reportName });
+ } else {
+ message.error(errormsg);
+ }
+ });
}
};
reportStatisticsReportDelete = (payload) => {
@@ -90,6 +104,7 @@ class ReportList extends Component {
this.handleOptsClick(e, id, dimensionId)}>
{getLabel(111, "编辑")}
+ {getLabel(77, "复制")}
{getLabel(111, "删除")}
}>
diff --git a/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/components/statisticsModal.js b/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/components/statisticsModal.js
index c8920887..1f333b7c 100644
--- a/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/components/statisticsModal.js
+++ b/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/components/statisticsModal.js
@@ -6,7 +6,7 @@
*/
import React, { Component } from "react";
import { Button, message, Modal } from "antd";
-import { WeaDialog, WeaLocaleProvider } from "ecCom";
+import { WeaDialog, WeaLocaleProvider, WeaSlideModal } from "ecCom";
import { reportStatisticsReportSave } from "../../../apis/ruleconfig";
import "../index.less";
@@ -45,6 +45,17 @@ class StatisticsModal extends Component {
}
});
};
+ renderTitle = () => {
+ return
+
+
+
{getLabel(543313, "统计维度管理")}
+
+
+
+
+
;
+ };
render() {
const { loading } = this.state;
@@ -53,16 +64,25 @@ class StatisticsModal extends Component {
] : [];
return (
-
- {this.props.children}
-
+
+ {
+ typeKey === "addReport" ?
+ {this.props.children}
+ :
+
+ }
+
);
}
}
diff --git a/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/index.js b/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/index.js
index 20748a27..f9a073e5 100644
--- a/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/index.js
+++ b/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/index.js
@@ -287,7 +287,9 @@ class Index extends Component {
keyword={keyword} year={year}
/>
}
-
+
{
modalReq.typeKey === "dimension" &&
this.dimensionTableRef = dom}
diff --git a/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/index.less b/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/index.less
index 5a3c335e..8f71d224 100644
--- a/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/index.less
+++ b/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/index.less
@@ -1,4 +1,8 @@
.xc_tj_fx_wrapper {
+ .wea-new-top-req {
+ z-index: 0 !important;
+ }
+
.search {
top: -3px;
margin-right: 10px;
@@ -180,6 +184,45 @@
}
}
+ .titleDialog {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding: 0 46px 0 16px;
+
+ .titleCol {
+ flex: 1;
+ display: flex;
+ align-items: center;
+ }
+
+ .titleLeftBox {
+ .titleIcon {
+ color: #fff;
+ margin: 0;
+ width: 40px;
+ height: 40px;
+ line-height: 40px;
+ font-size: 22px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ background: #F14A2D;
+ border-radius: 50%;
+ }
+
+ .title {
+ font-size: 14px;
+ color: #333;
+ padding-left: 6px;
+ }
+ }
+
+ .titleRightBox {
+ justify-content: flex-end;
+ }
+ }
+
}
.dimensionSlideWrapper, .dimensionModalWrapper {
@@ -217,3 +260,32 @@
}
}
}
+
+//重构-社保福利档案
+.extensionAttrsDialog {
+ .extensionAttrsDialogContent {
+ background: #F6F6F6;
+ padding: 16px;
+ width: 100%;
+ height: 100%;
+
+ .wea-table-edit {
+ background: #FFF;
+ }
+
+ .wea-search-group {
+ padding: 0;
+ margin-bottom: 10px;
+ background: #FFF;
+
+ .wea-form-cell {
+ padding: 0;
+
+ .wea-form-item {
+ padding: 10px;
+ }
+ }
+ }
+
+ }
+}
diff --git a/pc4mobx/hrmSalary/stores/attendanceStore.js b/pc4mobx/hrmSalary/stores/attendanceStore.js
index 451cb234..f309619e 100644
--- a/pc4mobx/hrmSalary/stores/attendanceStore.js
+++ b/pc4mobx/hrmSalary/stores/attendanceStore.js
@@ -14,6 +14,9 @@ export class AttendanceStore {
@observable shareForm = new WeaForm();
@observable shareLogForm = new WeaForm();
@observable sharePerForm = new WeaForm();
+ @observable extensionForm = new WeaForm(); //扩展属性
+ @action("报表查看-扩展属性表单初始化")
+ initExtensionForm = () => this.extensionForm = new WeaForm();
@action("报表查看-分享报表表单初始化")
initShareForm = () => this.shareForm = new WeaForm();
From 8252cebd98c9e5a2d8969dda712ffd27cc0a57f8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=BB=8E=E6=B0=B8=E9=A1=BA?= <971387674@qq.com>
Date: Wed, 8 Nov 2023 18:11:38 +0800
Subject: [PATCH 08/10] 1release/2.9.42311.01
---
.../statisticalMicroSettingsSlide.js | 168 +++++++++++++-----
pc4mobx/hrmSalary/pages/reportView/index.less | 25 ++-
2 files changed, 143 insertions(+), 50 deletions(-)
diff --git a/pc4mobx/hrmSalary/pages/reportView/components/statisticalMicroSettingsSlide.js b/pc4mobx/hrmSalary/pages/reportView/components/statisticalMicroSettingsSlide.js
index cdbe05c9..261330e2 100644
--- a/pc4mobx/hrmSalary/pages/reportView/components/statisticalMicroSettingsSlide.js
+++ b/pc4mobx/hrmSalary/pages/reportView/components/statisticalMicroSettingsSlide.js
@@ -32,6 +32,7 @@ import {
import { commonEnumList } from "../../../apis/ruleconfig";
import { getTaxAgentSelectList } from "../../../apis/taxAgent";
import { condition } from "./condition";
+import cs from "classnames";
import "../index.less";
const getKey = WeaTools.getKey;
@@ -47,8 +48,7 @@ class StatisticalMicroSettingsSlide extends Component {
dataSource: [],
unitTypeList: [],
salaryMonth: [],
- salaryMonthDefault: "",
- showMonthRange: true,
+ timeType: 10,
statisticalItemPayload: {
visible: false, id: "", dimension: "",
statisticsItemId: "", isShare: false
@@ -98,10 +98,10 @@ class StatisticalMicroSettingsSlide extends Component {
const { form } = this.props;
reportStatisticsGetSearchCondition({ id }).then(({ status, data }) => {
if (status && !_.isEmpty(data)) {
- const { salaryEndMonth, salaryStartMonth, ...formData } = data.data;
+ const { salaryEndMonth, salaryStartMonth, timeType, ...formData } = data.data;
this.setState({
- salaryMonth: [salaryStartMonth || moment().startOf("year").format("YYYY-MM"), salaryEndMonth || moment().format("YYYY-MM")],
- salaryMonthDefault: salaryStartMonth || moment().startOf("year").format("YYYY-MM")
+ timeType,
+ salaryMonth: [salaryStartMonth || moment().startOf("year").format("YYYY-MM"), salaryEndMonth || moment().format("YYYY-MM")]
});
const fields = _.map(conditions[0].items, it => it.domkey[0]);
fields.map(item => {
@@ -121,17 +121,17 @@ class StatisticalMicroSettingsSlide extends Component {
});
};
reportStatisticsSaveSearchCondition = () => {
- const { salaryMonth, salaryMonthDefault, dataSource } = this.state;
+ const { salaryMonth, timeType, dataSource } = this.state;
const { form, id, dimension, onClose } = this.props;
const [salaryStartMonth, salaryEndMonth] = salaryMonth;
const { department, employee, position, subCompany, taxAgent, ...extra } = form.getFormDatas();
const { value, valueSpan } = taxAgent;
- if ((!salaryEndMonth || !salaryStartMonth) && !salaryMonthDefault) {
+ if (!salaryEndMonth || !salaryStartMonth) {
this.refs.weaError.showError();
return;
}
const payload = {
- dimension, id,
+ dimension, id, timeType,
hiredate: extra["hiredate1__hiredate2"].value || [],
department: _.map(department.valueObj, it => ({ id: it.id, name: it.name })),
employee: _.map(employee.valueObj, it => ({ id: it.id, name: it.name })),
@@ -139,14 +139,13 @@ class StatisticalMicroSettingsSlide extends Component {
subCompany: _.map(subCompany.valueObj, it => ({ id: it.id, name: it.name })),
taxAgent: value ? _.map(value.split(","), (it, idx) => ({ id: it, name: valueSpan.split(",")[idx] })) : [],
items: dataSource,
- salaryEndMonth: (salaryEndMonth || salaryMonthDefault) + "-01",
- salaryStartMonth: (salaryStartMonth || salaryMonthDefault) + "-01"
+ salaryEndMonth: salaryEndMonth + "-01",
+ salaryStartMonth: salaryStartMonth + "-01"
};
this.setState({ loading: true });
reportStatisticsSaveSearchCondition(payload).then(({ status, errormsg }) => {
this.setState({ loading: false });
if (status) {
- this.setState({ showMonthRange: true });
onClose(true);
message.success(getLabel(111, "保存成功"));
} else {
@@ -236,8 +235,8 @@ class StatisticalMicroSettingsSlide extends Component {
render() {
const {
- salaryMonth, salaryMonthDefault, showMonthRange, conditions, selectedRowKeys, loading,
- statisticalItemPayload, dataSource, unitTypeList
+ salaryMonth, conditions, selectedRowKeys, loading,
+ statisticalItemPayload, dataSource, unitTypeList, timeType
} = this.state;
const { id, dimension, isShare } = this.props;
const columns = [
@@ -278,9 +277,7 @@ class StatisticalMicroSettingsSlide extends Component {
{
- this.setState({ showMonthRange: true }, () => this.props.onClose());
- }}
+ onClose={() => this.props.onClose()}
top={0}
measureT="%"
width={800}
@@ -293,33 +290,10 @@ class StatisticalMicroSettingsSlide extends Component {
-
-
-
- this.setState({
- salaryMonth: [v, v],
- salaryMonthDefault: v,
- showMonthRange: !v
- })}/>
-
-
-
-
+
+ this.setState({ salaryMonth: v, timeType })}/>
+
{
@@ -373,6 +347,69 @@ const TitleDialog = (props) => {
;
};
+const StatisticalScopePicker = (props) => {
+ const scopeBtns = [
+ { key: 1, label: getLabel(111, "上月") },
+ { key: 2, label: getLabel(111, "本月") },
+ { key: 3, label: getLabel(111, "一季度") },
+ { key: 4, label: getLabel(111, "二季度") },
+ { key: 5, label: getLabel(111, "三季度") },
+ { key: 6, label: getLabel(111, "四季度") },
+ { key: 7, label: getLabel(111, "上半年") },
+ { key: 8, label: getLabel(111, "下半年") },
+ { key: 9, label: getLabel(111, "本年") }
+ ];
+ const { timeType, dateRange, onChange, viewAttr, disabled = false } = props;
+ const [startDate, endDate] = dateRange || [];
+ return
+
+ {
+ _.map(scopeBtns.slice(0, 2), o => (
+ ))
+ }
+
+
+ {
+ _.map(scopeBtns.slice(2, 6), o => (
+ ))
+ }
+
+
+ {
+ _.map(scopeBtns.slice(6), o => (
+ ))
+ }
+
+
+
onChange([], 10)}>{getLabel(111, "指定月份")}
+
+ {
+ return current && endDate && current.getTime() > new Date(endDate).getTime();
+ }}
+ format="YYYY-MM"
+ onChange={(val) => onChange([val, endDate], timeType)}
+ viewAttr={viewAttr}
+ />
+ 至
+ {
+ return current && startDate && current.getTime() < new Date(startDate).getTime();
+ }}
+ format="YYYY-MM"
+ viewAttr={viewAttr}
+ onChange={(val) => onChange([startDate, val], timeType)}
+ />
+
+
+
;
+};
export const MonthRangePicker = (props) => {
const { dateRange, onChange, viewAttr, disabled = false } = props;
const [startDate, endDate] = dateRange || [];
@@ -398,3 +435,48 @@ export const MonthRangePicker = (props) => {
/>
;
};
+// 获取所属月份值
+const getSalaryMonthValue = (dateType) => {
+ let start = "", end = "";
+ switch (dateType) {
+ case 1:
+ start = moment().add(-1, "month").startOf("month").format("YYYY-MM");
+ end = moment().add(-1, "month").endOf("month").format("YYYY-MM");
+ break;
+ case 2:
+ start = moment().startOf("month").format("YYYY-MM");
+ end = moment().endOf("month").format("YYYY-MM");
+ break;
+ case 3:
+ start = moment().year() + "-01";
+ end = moment().year() + "-03";
+ break;
+ case 4:
+ start = moment().year() + "-04";
+ end = moment().year() + "-06";
+ break;
+ case 5:
+ start = moment().year() + "-07";
+ end = moment().year() + "-09";
+ break;
+ case 6:
+ start = moment().year() + "-10";
+ end = moment().year() + "-12";
+ break;
+ case 7:
+ start = moment().startOf("year").format("YYYY-MM");
+ end = moment().endOf("year").subtract(6, "month").format("YYYY-MM");
+ break;
+ case 8:
+ start = moment().startOf("year").add(6, "month").format("YYYY-MM");
+ end = moment().endOf("year").format("YYYY-MM");
+ break;
+ case 9:
+ start = moment().startOf("year").format("YYYY-MM");
+ end = moment().endOf("year").format("YYYY-MM");
+ break;
+ default:
+ break;
+ }
+ return [start, end];
+};
diff --git a/pc4mobx/hrmSalary/pages/reportView/index.less b/pc4mobx/hrmSalary/pages/reportView/index.less
index 721a4331..e1e94313 100644
--- a/pc4mobx/hrmSalary/pages/reportView/index.less
+++ b/pc4mobx/hrmSalary/pages/reportView/index.less
@@ -306,21 +306,32 @@
}
.date-set-area {
- width: 100%;
- display: flex;
- flex-direction: column;
+ .date-item {
+ margin-bottom: 5px;
- .date-item:first-child {
- margin-bottom: 10px;
+ button {
+ margin-right: 10px;
+ }
}
- .date-item:last-child {
+ .data-picker {
display: flex;
align-items: center;
- a {
+ .title {
+ color: #5d9cec;
+ cursor: pointer;
+ font-size: 12px;
margin-right: 10px;
}
+
+ .show-data-picker {
+ display: flex;
+ }
+
+ .hide-data-picker {
+ display: none !important;
+ }
}
}
}
From 1afaa041294e64e1d5ea9c587d122caa4b17bb05 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=BB=8E=E6=B0=B8=E9=A1=BA?= <971387674@qq.com>
Date: Thu, 9 Nov 2023 15:36:13 +0800
Subject: [PATCH 09/10] 1release/2.9.42311.01
---
.../reportView/components/reportContent.js | 19 ++++++++++++-------
.../statisticalMicroSettingsSlide.js | 2 +-
pc4mobx/hrmSalary/pages/reportView/index.js | 4 ++--
3 files changed, 15 insertions(+), 10 deletions(-)
diff --git a/pc4mobx/hrmSalary/pages/reportView/components/reportContent.js b/pc4mobx/hrmSalary/pages/reportView/components/reportContent.js
index 70980238..37700a22 100644
--- a/pc4mobx/hrmSalary/pages/reportView/components/reportContent.js
+++ b/pc4mobx/hrmSalary/pages/reportView/components/reportContent.js
@@ -12,6 +12,7 @@ import ChartsRangeSettingsModal from "./chartsRangeSettingsModal";
import { mapBarOptions, mapLineOptions, mapPieOptions } from "./condition";
import { queryRangeSetting, reportStatisticsReportGetData } from "../../../apis/statistics";
import PovitpivotChartModal from "./povitpivotChartModal";
+import { getSalaryMonthValue } from "./statisticalMicroSettingsSlide";
import "../index.less";
class ReportContent extends Component {
@@ -43,7 +44,7 @@ class ReportContent extends Component {
componentWillReceiveProps(nextProps, nextContext) {
if (nextProps.report !== this.props.report && nextProps.report.dimensionId) {
- this.reportStatisticsReportGetData(nextProps.report.id, nextProps.report.dimensionId, nextProps.report.isShare);
+ this.reportStatisticsReportGetData(nextProps.report);
this.setState({ viewType: "dataView", chartsInfo: {} });
}
}
@@ -81,8 +82,13 @@ class ReportContent extends Component {
dataSource, columns, showSum, countResult
}), "*");
};
- reportStatisticsReportGetData = (id, dimensionId, isShare) => {
- const payload = { id, dimensionId, isShare };
+ reportStatisticsReportGetData = (params) => {
+ const { id, dimensionId, isShare, timeType, salaryEndMonth: end, salaryStartMonth: start } = params;
+ const [salaryStartMonth, salaryEndMonth] = getSalaryMonthValue(timeType);
+ const payload = {
+ id, dimensionId, isShare,
+ salaryStartMonth: (salaryStartMonth || start) + "-01", salaryEndMonth: (salaryEndMonth || end) + "-01"
+ };
this.setState({ loading: true });
reportStatisticsReportGetData(payload).then(({ status, data }) => {
this.setState({ loading: false });
@@ -191,13 +197,13 @@ class ReportContent extends Component {
handleChangeChartOpts = (chartsType, viewType) => {
this.setState({ chartsInfo: {} });
if (this.refs.chart && viewType !== "setting" && viewType !== "dataView" && !this.state.rangSet.visible) this.refs.chart.clear();
- const { report: { id: reportId, dimensionId, isShare } } = this.props;
+ const { report: { id: reportId } } = this.props;
const { rangSet } = this.state;
viewType !== "setting" && this.setState({ chartsType, viewType }, () => {
const { viewType, chartsType } = this.state;
viewType !== "dataView" ?
this.queryRangeSetting({ reportId, chartsType }, true) :
- this.reportStatisticsReportGetData(reportId, dimensionId, isShare);
+ this.reportStatisticsReportGetData(this.props.report);
});
viewType === "setting" && this.setState({ rangSet: { ...rangSet, visible: true, reportId } }, () => {
this.queryRangeSetting({ reportId, chartsType });
@@ -213,8 +219,7 @@ class ReportContent extends Component {
};
handleGetData = () => {
const { report } = this.props;
- const { id, dimensionId, isShare } = report;
- this.setState({ viewType: "dataView" }, () => this.reportStatisticsReportGetData(id, dimensionId, isShare));
+ this.setState({ viewType: "dataView" }, () => this.reportStatisticsReportGetData(report));
};
renderCharts = () => {
const { chartsInfo, viewType } = this.state;
diff --git a/pc4mobx/hrmSalary/pages/reportView/components/statisticalMicroSettingsSlide.js b/pc4mobx/hrmSalary/pages/reportView/components/statisticalMicroSettingsSlide.js
index 261330e2..35b36fa5 100644
--- a/pc4mobx/hrmSalary/pages/reportView/components/statisticalMicroSettingsSlide.js
+++ b/pc4mobx/hrmSalary/pages/reportView/components/statisticalMicroSettingsSlide.js
@@ -436,7 +436,7 @@ export const MonthRangePicker = (props) => {
;
};
// 获取所属月份值
-const getSalaryMonthValue = (dateType) => {
+export const getSalaryMonthValue = (dateType) => {
let start = "", end = "";
switch (dateType) {
case 1:
diff --git a/pc4mobx/hrmSalary/pages/reportView/index.js b/pc4mobx/hrmSalary/pages/reportView/index.js
index ffe5a3db..14be4f97 100644
--- a/pc4mobx/hrmSalary/pages/reportView/index.js
+++ b/pc4mobx/hrmSalary/pages/reportView/index.js
@@ -113,7 +113,7 @@ class Index extends Component {
ref={dom => this.leftTabRef = dom}
onChangeTab={report =>
this.setState({
- report,
+ report: !_.isNil(report) ? report : this.state.report,
statisticalPayload: { visible: false, id: "", dimension: "" }
})}
/>
@@ -152,7 +152,7 @@ class Index extends Component {
taxAgentAdminOption={taxAgentOption} isShare={isShare}
onClose={(isRefresh) => this.setState({
statisticalPayload: { visible: false, id: "", dimension: "" }
- }, () => isRefresh && this.reportRef.reportStatisticsReportGetData(report.id, report.dimensionId, report.isShare))}
+ }, () => isRefresh && this.leftTabRef.reportStatisticsReportList())}
/>
From 7908f925ea33ed3ba2f0162c37b896da9987a243 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=BB=8E=E6=B0=B8=E9=A1=BA?= <971387674@qq.com>
Date: Thu, 9 Nov 2023 16:27:33 +0800
Subject: [PATCH 10/10] release/2.9.42311.01
---
pc4mobx/hrmSalary/pages/reportView/index.js | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)
diff --git a/pc4mobx/hrmSalary/pages/reportView/index.js b/pc4mobx/hrmSalary/pages/reportView/index.js
index 14be4f97..82f935e5 100644
--- a/pc4mobx/hrmSalary/pages/reportView/index.js
+++ b/pc4mobx/hrmSalary/pages/reportView/index.js
@@ -10,9 +10,10 @@ import { WeaLeftRightLayout, WeaLocaleProvider, WeaSelect, WeaTop } from "ecCom"
import { message, Modal } from "antd";
import LeftTab from "./components/leftTab";
import ReportContent from "./components/reportContent";
-import StatisticalMicroSettingsSlide from "./components/statisticalMicroSettingsSlide";
-import TopBtns from "./components/topBtns";
+import StatisticalMicroSettingsSlide, { getSalaryMonthValue } from "./components/statisticalMicroSettingsSlide";
import { reportGetForm, reportStatisticsReportSave } from "../../apis/ruleconfig";
+import { convertToUrlString } from "../../util/url";
+import TopBtns from "./components/topBtns";
import "./index.less";
@@ -92,8 +93,13 @@ class Index extends Component {
*/
exportData = () => {
const { report } = this.state;
- const { id, dimensionId, isShare } = report;
- window.open(`${window.location.origin}/api/bs/hrmsalary/report/statistics/report/exportData?id=${id}&dimensionId=${dimensionId}&isShare=${isShare}`, "_blank");
+ const { id, dimensionId, isShare, timeType, salaryEndMonth: end, salaryStartMonth: start } = report;
+ const [salaryStartMonth, salaryEndMonth] = getSalaryMonthValue(timeType);
+ const payload = {
+ id, dimensionId, isShare,
+ salaryStartMonth: (salaryStartMonth || start) + "-01", salaryEndMonth: (salaryEndMonth || end) + "-01"
+ };
+ window.open(`${window.location.origin}/api/bs/hrmsalary/report/statistics/report/exportData?${convertToUrlString(payload)}`, "_blank");
};
render() {