diff --git a/pc4mobx/hrmSalary/apis/statistics.js b/pc4mobx/hrmSalary/apis/statistics.js
index f5f4aff6..6297dfa8 100644
--- a/pc4mobx/hrmSalary/apis/statistics.js
+++ b/pc4mobx/hrmSalary/apis/statistics.js
@@ -78,3 +78,31 @@ export const statisticsEmployeeDetailList = (params) => {
export const getDataPerspective = (params) => {
return postFetch("/api/bs/hrmsalary/report/statistics/report/getDataPerspective", params);
};
+//报表分享-确认分享
+export const salaryStatisticsPushSendMsg = (params) => {
+ return postFetch("/api/bs/salaryreport/salary/statistics/push/sendMsg", params);
+};
+//报表分享-表单数据
+export const salaryStatisticsPushGetForm = (params) => {
+ return WeaTools.callApi("/api/bs/salaryreport/salary/statistics/push/getForm", "GET", params);
+};
+//报表记录-全部撤回
+export const salaryStatisticsPushcancelAll = (params) => {
+ return WeaTools.callApi("/api/bs/salaryreport/salary/statistics/push/cancelAll", "GET", params);
+};
+//报表记录-撤回单条记录
+export const salaryStatisticsPushcancel = (params) => {
+ return WeaTools.callApi("/api/bs/salaryreport/salary/statistics/push/cancel", "GET", params);
+};
+//报表记录-列表数据
+export const salaryStatisticsPushGetTable = (params) => {
+ return postFetch("/api/bs/salaryreport/salary/statistics/push/getTable", params);
+};
+//报表记录-查看分享记录详情
+export const salaryStatisticsPushGetDetail = (params) => {
+ return postFetch("/api/bs/salaryreport/salary/statistics/push/getDetail", params);
+};
+//报表记录-追加被分享人
+export const salaryStatisticsPushAddSharedSendMsg = (params) => {
+ return postFetch("/api/bs/salaryreport/salary/statistics/push/addSharedSendMsg", params);
+};
diff --git a/pc4mobx/hrmSalary/pages/reportView/components/condition.js b/pc4mobx/hrmSalary/pages/reportView/components/condition.js
index 103793c3..816dec2d 100644
--- a/pc4mobx/hrmSalary/pages/reportView/components/condition.js
+++ b/pc4mobx/hrmSalary/pages/reportView/components/condition.js
@@ -152,6 +152,185 @@ export const condition = [
defaultshow: true
}
];
+export const shareCondition = [
+ {
+ items: [
+ {
+ colSpan: 1,
+ checkbox: false,
+ checkboxValue: false,
+ conditionType: "SELECT",
+ domkey: ["reportIds"],
+ fieldcol: 12,
+ label: "分享报表",
+ lanId: 111,
+ labelcol: 6,
+ options: [],
+ multiple: true,
+ rules: "required|string",
+ viewAttr: 3
+ },
+ {
+ colSpan: 1,
+ checkbox: false,
+ checkboxValue: false,
+ conditionType: "INPUT",
+ domkey: ["pushTitle"],
+ fieldcol: 18,
+ label: "主题",
+ lanId: 111,
+ labelcol: 6,
+ rules: "required|string",
+ viewAttr: 3
+ },
+ {
+ browserConditionParam: {
+ completeParams: {},
+ conditionDataParams: {},
+ dataParams: {},
+ destDataParams: {},
+ hasAddBtn: false,
+ hasAdvanceSerach: true,
+ idSeparator: ",",
+ isAutoComplete: 1,
+ isDetail: 0,
+ isMultCheckbox: false,
+ isSingle: false,
+ linkUrl: "",
+ pageSize: 10,
+ quickSearchName: "",
+ replaceDatas: [],
+ type: "17",
+ viewAttr: 3
+ },
+ colSpan: 1,
+ conditionType: "BROWSER",
+ domkey: ["sharedBy"],
+ fieldcol: 14,
+ isQuickSearch: false,
+ label: "被分享人",
+ lanId: 111,
+ labelcol: 6,
+ rules: "required|string",
+ viewAttr: 3
+ },
+ {
+ colSpan: 1,
+ conditionType: "RANGEPICKER",
+ domkey: ["startTime", "endTime"],
+ fieldcol: 12,
+ label: "报表查看有效时间",
+ lanId: 111,
+ labelcol: 6,
+ value: "",
+ rules: "required",
+ viewAttr: 3
+ },
+ {
+ colSpan: 1,
+ checkbox: false,
+ checkboxValue: false,
+ conditionType: "INPUT",
+ domkey: ["mark"],
+ fieldcol: 18,
+ label: "分享说明",
+ lanId: 111,
+ labelcol: 6,
+ viewAttr: 2
+ }
+ // {
+ // colSpan: 1,
+ // conditionType: "SWITCH",
+ // domkey: ["remind"],
+ // fieldcol: 12,
+ // isQuickSearch: false,
+ // label: "已查看提醒",
+ // lanId: 111,
+ // labelcol: 6,
+ // viewAttr: 2
+ // }
+ ],
+ title: "",
+ defaultshow: true
+ }
+];
+export const sharePersonCondition = [
+ {
+ items: [
+ {
+ browserConditionParam: {
+ completeParams: {},
+ conditionDataParams: {},
+ dataParams: {},
+ destDataParams: {},
+ hasAddBtn: false,
+ hasAdvanceSerach: true,
+ idSeparator: ",",
+ isAutoComplete: 1,
+ isDetail: 0,
+ isMultCheckbox: false,
+ isSingle: false,
+ linkUrl: "",
+ pageSize: 10,
+ quickSearchName: "",
+ replaceDatas: [],
+ type: "17",
+ viewAttr: 3
+ },
+ colSpan: 1,
+ conditionType: "BROWSER",
+ domkey: ["sharedBy"],
+ fieldcol: 14,
+ isQuickSearch: false,
+ label: "被分享人",
+ lanId: 111,
+ labelcol: 6,
+ rules: "required|string",
+ viewAttr: 3
+ }
+ ],
+ title: "",
+ defaultshow: true
+ }
+];
+export const shareLogCondition = [
+ {
+ items: [
+ {
+ colSpan: 1,
+ conditionType: "INPUT",
+ domkey: ["reportName"],
+ fieldcol: 12,
+ label: "分享报表",
+ lanId: 111,
+ labelcol: 6,
+ viewAttr: 1
+ },
+ {
+ colSpan: 1,
+ conditionType: "INPUT",
+ domkey: ["effectiveTime"],
+ fieldcol: 12,
+ label: "报表查看有效时间",
+ lanId: 111,
+ labelcol: 6,
+ viewAttr: 1
+ },
+ {
+ colSpan: 1,
+ conditionType: "INPUT",
+ domkey: ["remark"],
+ fieldcol: 12,
+ label: "分享说明",
+ lanId: 111,
+ labelcol: 6,
+ viewAttr: 1
+ }
+ ],
+ title: "",
+ defaultshow: true
+ }
+];
const colorList = ["#709DF7", "#73DEB3", "#7585A2", "#F7C739", "#5FC3E3", "#AEE279", "#FF7F81"];
export const mapBarOptions = (params) => ({
@@ -292,7 +471,7 @@ export const mapBarOptions = (params) => ({
{
type: "slider",
show: true,
- bottom: 20,
+ bottom: 20
}
]
});
diff --git a/pc4mobx/hrmSalary/pages/reportView/components/index.less b/pc4mobx/hrmSalary/pages/reportView/components/index.less
index 322df827..d77aab7f 100644
--- a/pc4mobx/hrmSalary/pages/reportView/components/index.less
+++ b/pc4mobx/hrmSalary/pages/reportView/components/index.less
@@ -63,3 +63,134 @@
height: 100%;
}
}
+
+.shareDialogWrapper {
+ .wea-dialog-body {
+ background: #f6f6f6;
+ overflow-y: hidden;
+ }
+
+ .wea-search-group {
+ border: 1px solid #e5e5e5;
+ border-bottom: none;
+ background: #FFF;
+ }
+
+ .wea-search-group, .wea-content, .wea-form-cell {
+ padding: 0;
+ }
+
+ .wea-form-item {
+ padding: 8px 16px;
+ border-bottom: 1px solid #e5e5e5;
+ }
+
+ .wea-select, .ant-select, .ant-select-selection {
+ width: 100%;
+ }
+
+ .wea-select .wea-select-input .arrow {
+ position: absolute;
+ right: 4px;
+ top: 8px;
+ color: #666;
+ }
+
+ .wea-select .wdb {
+ word-break: break-all !important;
+ word-wrap: break-word !important;
+ }
+
+ .wea-select .wea-select-input {
+ height: 30px;
+ white-space: nowrap;
+ min-width: 100px;
+ max-width: 345px;
+ width: 100%;
+ display: inline-block;
+ padding: 4px 17px 4px 4px;
+ position: relative;
+ min-height: 30px;
+ border: 1px solid #d9d9d9;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ -o-text-overflow: ellipsis;
+ text-overflow: ellipsis;
+ overflow: hidden;
+ }
+
+ .shareLogGroupWrapper {
+ margin-top: 16px;
+
+ .logtitleHeader {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+
+ .right {
+ display: flex;
+ align-items: center;
+ }
+ }
+ }
+}
+
+.shareRecordWrapper {
+ z-index: 111;
+
+ .wea-slide-modal-title {
+ height: auto !important;
+ line-height: normal !important;
+ }
+
+ .titleDialog {
+ display: flex;
+ padding: 10px 16px 10px 0;
+ position: relative;
+ background-color: #FFF;
+ border-bottom: 1px solid #e5e5e5;
+
+ .titleCol {
+ flex: 1;
+
+ .titleLeftBox {
+ display: flex;
+ height: 100%;
+ align-items: center;
+ padding-left: 16px;
+
+ .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;
+ }
+ }
+ }
+ }
+
+ .ant-table-tbody {
+ & > tr {
+ & > td {
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ }
+ }
+ }
+}
diff --git a/pc4mobx/hrmSalary/pages/reportView/components/salaryStatisticsDetailShareDialog.js b/pc4mobx/hrmSalary/pages/reportView/components/salaryStatisticsDetailShareDialog.js
new file mode 100644
index 00000000..32f40c66
--- /dev/null
+++ b/pc4mobx/hrmSalary/pages/reportView/components/salaryStatisticsDetailShareDialog.js
@@ -0,0 +1,139 @@
+/*
+ * Author: 黎永顺
+ * name: 分享记录
+ * Description:
+ * Date: 2023/9/19
+ */
+import React, { Component } from "react";
+import { inject, observer } from "mobx-react";
+import { WeaDialog, WeaLocaleProvider, WeaTools } from "ecCom";
+import { Button, message } from "antd";
+import { shareCondition } from "./condition";
+import { getSearchs } from "../../../util";
+import { salaryStatisticsPushGetForm, salaryStatisticsPushSendMsg } from "../../../apis/statistics";
+import "./index.less";
+
+const getKey = WeaTools.getKey;
+const { getLabel } = WeaLocaleProvider;
+
+@inject("attendanceStore")
+@observer
+class SalaryStatisticsDetailShareDialog extends Component {
+ constructor(props) {
+ super(props);
+ this.state = {
+ conditions: [], loading: false
+ };
+ }
+
+ componentWillReceiveProps(nextProps, nextContext) {
+ const { attendanceStore: { initShareForm } } = nextProps;
+ if (nextProps.visible !== this.props.visible && nextProps.visible) {
+ this.salaryStatisticsPushGetForm(nextProps);
+ } else {
+ initShareForm();
+ }
+ }
+
+ salaryStatisticsPushGetForm = (props) => {
+ const { attendanceStore: { shareForm } } = props;
+ salaryStatisticsPushGetForm().then(({ status, data }) => {
+ if (status) {
+ const { reportOptions } = data;
+ this.setState({
+ conditions: _.map(shareCondition, item => {
+ return {
+ ...item,
+ items: _.map(item.items, o => {
+ if (getKey(o) === "sharedBy") {
+ return {
+ ...o,
+ helpfulTitle: getLabel(111, "被分享人收到您分享的报表后,会默认赋予您的数据权限,但还需要有【薪酬统计分析】的菜单权限才可以查看报表。菜单权限设置路径:后台管理中心-【权限管理中心】-【角色设置】,建议创建一个仅查看报表的角色,这个角色只有薪酬管理模块的【薪酬统计分析】菜单权限。\n" +
+ "为了避免所选的人同名导致选错人,可在后台管理中心-【组织架构设置】-【浏览框显示字段定义】中人员浏览框的显示字段多勾选几个能区别人员的字段")
+ };
+ } else if (getKey(o) === "startTime__endTime") {
+ return {
+ ...o,
+ helpfulTitle: getLabel(111, "有效时间之外,被分享人无法查看您分享的报表")
+ };
+ } else if (getKey(o) === "remind") {
+ return {
+ ...o,
+ helpfulTitle: getLabel(111, "开启后,被分享人查看报表时,系统自动通过系统消息提醒分享人。")
+ };
+ } else if (getKey(o) === "reportIds") {
+ return {
+ ...o,
+ options: _.map(reportOptions, it => ({ key: it.id, showname: it.reportName }))
+ };
+ }
+ return { ...o };
+ })
+ };
+ })
+ }, () => {
+ shareForm.initFormFields(this.state.conditions);
+ shareForm.updateFields({ pushTitle: data["pushTitle"] || "" });
+ shareForm.updateFields({ mark: data["mark"] || "" });
+ });
+ }
+ });
+ };
+ salaryStatisticsPushSendMsg = () => {
+ const { attendanceStore: { shareForm } } = this.props;
+ shareForm.validateForm().then(f => {
+ if (f.isValid) {
+ const { sharedBy, reportIds, ...extraFormparams } = shareForm.getFormParams();
+ const payload = {
+ sharedBy: sharedBy.split(","),
+ reportIds: reportIds.split(","),
+ ...extraFormparams
+ };
+ this.setState({ loading: true });
+ salaryStatisticsPushSendMsg(payload).then(({ status, errormsg }) => {
+ this.setState({ loading: false });
+ if (status) {
+ message.success(getLabel(111, "分享成功"));
+ this.props.onCancel();
+ } else {
+ message.error(errormsg);
+ }
+ }).catch(() => this.setState({ loading: false }));
+ } else {
+ f.showErrors();
+ }
+ });
+ };
+
+ render() {
+ const { attendanceStore: { shareForm } } = this.props;
+ const { conditions, loading } = this.state;
+ return (
+
{getLabel(111, "1、分享状态为成功且撤回状态为空时,可操作撤回;")}
+{getLabel(111, "2、撤回后不可重新分享;")}
+{getLabel(111, "3、分享状态为失败,可操作重新分享;")}
+{getLabel(111, "4、重新分享:以当前分享记录的分享报表、有效时间、渠道和说明重新分享,分享后自动刷新分享时间和分享状态")}
+