增加操作日志

This commit is contained in:
Chengliang 2022-07-07 18:06:02 +08:00
parent 0f4c438bbf
commit dd023861d7
17 changed files with 275 additions and 66 deletions

View File

@ -4,9 +4,9 @@ import {
} from 'ecCom'
export const getLogList = (params) => {
return WeaTools.callApi('/api/bs/hrmorganization/hrmresource/listPage', 'GET', params);
return WeaTools.callApi('/api/bs/hrmorganization/log/listPage', 'GET', params);
}
export const getAdvanceSearchCondition = (params) => {
return WeaTools.callApi('/api/bs/hrmorganization/hrmresource/getSearchCondition', 'GET', params);
return WeaTools.callApi('/api/bs/hrmorganization/log/getSearchCondition', 'GET', params);
}

View File

@ -12,7 +12,7 @@ const WeaLogViewComp = WeaLogView.Component;
const {
LogStore
} = WeaLogView;
import LogView from "./log/logView";
import LogView from "./log/LogView";
import {LogViewStore} from "../stores/logview"

View File

@ -65,7 +65,7 @@ export default class NewAndEditDialog extends React.Component {
if(moduleName == 'department' && data.parent_comp ){
bindChangeEnvent(data.parent_comp.value);
}
if(moduleName == 'job' && (data.sequence_id)){
if(moduleName == 'job' && (data.sequence_id || data.level_id)){
bindChangeEnvent(data);
}
};

View File

@ -1,7 +1,7 @@
/**
* @Author: 程亮
* @Date: 2022-05-18 16:23:32
* @LastEditTime: 2022-06-24 16:47:53
* @LastEditTime: 2022-07-06 10:48:30
* @Description:
* @FilePath: /trunk/src4js/pc4mobx/organization/components/company/company.js
*/
@ -104,6 +104,14 @@ export default class Company extends React.Component {
return btns;
}
log = () => {
window.setLogViewProp({
logMoudleType: 8,
keys: new Date().getTime(),
});
}
handleClick(item) {
const {
company

View File

@ -1,7 +1,7 @@
/**
* @Author: 程亮
* @Date: 2022-06-02 09:19:37
* @LastEditTime: 2022-06-24 13:46:13
* @LastEditTime: 2022-07-06 10:48:46
* @Description:
* @FilePath: /trunk/src4js/pc4mobx/organization/components/department/department.js
*/
@ -225,6 +225,14 @@
})
return arr;
}
log = () => {
window.setLogViewProp({
logMoudleType: 9,
keys: new Date().getTime(),
});
}
batchDelete() {
const {

View File

@ -1,7 +1,7 @@
/**
* @Author: 程亮
* @Date: 2022-05-26 14:05:59
* @LastEditTime: 2022-06-27 11:23:42
* @LastEditTime: 2022-07-06 10:49:02
* @Description:
* @FilePath: /trunk/src4js/pc4mobx/organization/components/job/Job.js
*/
@ -524,6 +524,14 @@ export default class Job extends React.Component {
}
log = () => {
window.setLogViewProp({
logMoudleType: 10,
keys: new Date().getTime(),
});
}
render() {

View File

@ -9,7 +9,8 @@ import {
WeaTab,
WeaFormItem,
WeaDialog,
WeaSearchGroup
WeaSearchGroup,
WeaProgress
} from 'ecCom'
import {
Row,
@ -39,9 +40,14 @@ export default class LogView extends React.Component {
constructor(props) {
super(props);
this.state = ({
height: 402,
height: 502,
width: 1075,
dialogTitle: '日志查看',
showSearchAd: false,
//**** */
detailDialogTitle: "",
detailVisible: false,
record:{}
})
}
@ -54,11 +60,31 @@ export default class LogView extends React.Component {
}
componentWillReceiveProps(nextProps) {
this.setState({ showSearchAd: false })
if (this.props.keys !== nextProps.keys) {
nextProps.logViewStore.init(nextProps.logMoudleType);
}
}
doView(record) {
this.setState({
record:record,
detailVisible: true,
detailDialogTitle: record.operate_typespan + " - " + record.operate_module_name + " : "+record.value
})
}
reRenderColumns(columns) {
let _this = this;
columns.forEach((c, index) => {
if (c.dataIndex == 'message') {
c.render = function (text, record) {
return <a href='javascript:void(0);' className="common" onClick={() => { _this.doView(record) }}>查看</a>
}
};
})
}
getPanelComponents() {
const {
logViewStore
@ -89,7 +115,6 @@ export default class LogView extends React.Component {
</Col>)
})
})
if (searchConditionLoading) {
return (
<div className='hrm-loading-center-small' style={{ top: '25%' }}>
@ -100,7 +125,7 @@ export default class LogView extends React.Component {
return <Row ecId={`${this && this.props && this.props.ecId || ''}_Row@ppeb6z`} onKeyDown={(e) => {
if (e.keyCode == 13 && e.target.tagName === "INPUT") {
logViewStore.getTableInfo();
logViewStore.setPanelStatus(false)
this.setState({ showSearchAd: false })
}
}}>{arr}</Row>
}
@ -116,9 +141,9 @@ export default class LogView extends React.Component {
} = logViewStore;
const btn = [
(<Button ecId={`${this && this.props && this.props.ecId || ''}_Button@bx87i8`} type="primary" onClick={() => { logViewStore.getTableInfo(); logViewStore.setPanelStatus(false) }}>{i18n.button.search()}</Button>),
(<Button ecId={`${this && this.props && this.props.ecId || ''}_Button@bx87i8`} type="primary" onClick={() => { logViewStore.getTableInfo(); this.setState({ showSearchAd: false }) }}>{i18n.button.search()}</Button>),
(<Button ecId={`${this && this.props && this.props.ecId || ''}_Button@218ju6`} onClick={() => form.reset()}>{i18n.button.reset()}</Button>),
(<Button ecId={`${this && this.props && this.props.ecId || ''}_Button@5u9mfz`} onClick={() => logViewStore.setPanelStatus(false)}>{i18n.button.cancel()}</Button>),
(<Button ecId={`${this && this.props && this.props.ecId || ''}_Button@5u9mfz`} onClick={() => this.setState({ showSearchAd: false })}>{i18n.button.cancel()}</Button>),
];
return btn;
@ -130,38 +155,58 @@ export default class LogView extends React.Component {
const {
visible, onCancel, logViewStore
} = this.props, {
tableStore,isPanelShow,conditionNum
tableStore, conditionNum
} = logViewStore, {
height, dialogTitle, width,
height, dialogTitle, width, showSearchAd, detailDialogTitle, detailVisible,record
} = this.state;
return (
<WeaDialog ecId={`${this && this.props && this.props.ecId || ''}_WeaDialog@1txk5f`}
title={dialogTitle}
icon="icon-coms-currency"
iconBgcolor="#217346"
visible={visible}
closable={true}
hasScroll={true}
onCancel={() => onCancel()}
style={{ height: height, width: width }}
>
<WeaTab ecId={`${this && this.props && this.props.ecId || ''}_WeaTab@9c3zts`}
searchType={['advanced']}
showSearchAd={isPanelShow}
setShowSearchAd={bool => logViewStore.setPanelStatus(bool)}
hideSearchAd={() => logViewStore.setPanelStatus(false)}
searchsAd={isPanelShow ? this.getPanelComponents() : <div></div>}
advanceHeight={Math.ceil(conditionNum / 2) * 52 + 20}
hasMask={false}
buttonsAd={this.getTabBtn()}
onSearch={() => logViewStore.getTableInfo()}
/>
<WeaTable ecId={`${this && this.props && this.props.ecId || ''}_WeaTable@pgmg3x`}
comsWeaTableStore={tableStore}
hasOrder={true}
needScroll={true}
/>
</WeaDialog>)
<div>
<WeaDialog ecId={`${this && this.props && this.props.ecId || ''}_WeaDialog@1txk5f`}
title={dialogTitle}
icon="icon-coms-currency"
iconBgcolor="#217346"
visible={visible}
closable={true}
hasScroll={true}
onCancel={() => onCancel()}
style={{ height: height, width: width }}
>
<WeaTab ecId={`${this && this.props && this.props.ecId || ''}_WeaTab@9c3zts`}
searchType={['advanced']}
showSearchAd={showSearchAd}
setShowSearchAd={bool => { this.setState({ showSearchAd: bool }) }}
advanceHeight={161}
searchsAd={showSearchAd ? this.getPanelComponents() : <div></div>}
buttonsAd={this.getTabBtn()}
/>
<WeaTable ecId={`${this && this.props && this.props.ecId || ''}_WeaTable@pgmg3x`}
comsWeaTableStore={tableStore}
hasOrder={true}
needScroll={true}
getColumns={c => this.reRenderColumns(c)}
/>
</WeaDialog>
<WeaDialog ecId={`${this && this.props && this.props.ecId || ''}_WeaDialog@1txk5f`}
title={detailDialogTitle}
icon="icon-coms-currency"
iconBgcolor="#217346"
visible={detailVisible}
closable={true}
hasScroll={true}
onCancel={() => this.setState({
detailVisible: false
})}
style={{ height: 676, width: 1000 }}
>
<div className='content' style={{ "padding": "20px","height": "100%" }}>
<div style={{ "height": "40%","overflow-x": "auto"}} dangerouslySetInnerHTML={{ __html: record.message }} ></div>
{/* <WeaProgress percent={100} strokeColor="#217346" /> */}
<div style={{"marginTop":"20px","fontSize":"20px","color":"#217346"}}>原始参数查看</div>
<div dangerouslySetInnerHTML={{ __html: record.params_str }} style={{"overflow-x": "auto","height":"50%","marginTop":"20px"}}></div>
</div>
</WeaDialog>
</div>
)
}
}

View File

@ -58,6 +58,13 @@ export default class OfficeManage extends Component {
return menus;
};
showlog = () => {
window.setLogViewProp({
logMoudleType: 6,
keys: new Date().getTime(),
});
}
handleMenuClick = key => {
const { officeManageStore } = this.props;
const { isPanelShow, tableStore } = officeManageStore;
@ -68,6 +75,9 @@ export default class OfficeManage extends Component {
officeManageStore.setVisible(true);
officeManageStore.setNeDialogTitle(i18n.label.newOfficeName());
break;
case "log":
this.showlog();
break;
case "custom":
tableStore.setColSetVisible(true);
tableStore.tableColSet(true);
@ -235,7 +245,7 @@ export default class OfficeManage extends Component {
let _this = this;
columns.forEach((c, index) => {
if (c.dataIndex == "forbidden_tag") {
c.render = function(text, record) {
c.render = function (text, record) {
return (
<Switch
checked={record.forbidden_tag == "0" ? true : false}

View File

@ -309,6 +309,14 @@ export default class JobGrade extends React.Component {
!isNew && jobGrade.edit();
}
log = () => {
window.setLogViewProp({
logMoudleType: 3,
keys: new Date().getTime(),
});
}
getPanelComponents() {
const {
jobGrade

View File

@ -361,6 +361,12 @@ export default class JobLevel extends React.Component {
}
log = () => {
window.setLogViewProp({
logMoudleType: 2,
keys: new Date().getTime(),
});
}
render() {

View File

@ -287,6 +287,14 @@ export default class RankScheme extends React.Component {
}
log = () => {
window.setLogViewProp({
logMoudleType: 1,
keys: new Date().getTime(),
});
}
handleSave() {
const {
rankScheme

View File

@ -163,6 +163,14 @@ export default class Resource extends React.Component {
this[item.menuFun] && this[item.menuFun]();
}
log = () => {
window.setLogViewProp({
logMoudleType: 11,
keys: new Date().getTime(),
});
}
new() {
const {
resource

View File

@ -362,6 +362,12 @@ export default class Sequence extends React.Component {
log = () => {
window.setLogViewProp({
logMoudleType: 4,
keys: new Date().getTime(),
});
}
render() {

View File

@ -118,6 +118,14 @@ export default class Staff extends React.Component {
staff.getForm();
}
log = () => {
window.setLogViewProp({
logMoudleType: 13,
keys: new Date().getTime(),
});
}
batchDelete() {
const {
staff

View File

@ -267,7 +267,7 @@ export default class StaffScheme extends React.Component {
log = () => {
window.setLogViewProp({
logMoudleType: '0',
logMoudleType: 12,
keys: new Date().getTime(),
});
}

View File

@ -63,7 +63,8 @@ export class JobStore {
@observable defaultShowLeft = true;
@observable companysId = 1
@observable hasRight = '';
@observable key = '';
@observable key1 = '';
@observable selectTreeNodeInfo;
saveAndSetting = false;
@ -304,10 +305,96 @@ export class JobStore {
}
updateConditions(data) {
const label = "等级方案"
const index = findIndex(this.condition[0].items, { label });
this.condition[0].items[index].browserConditionParam.replaceDatas = [{ name: data.sequence_id.valueObj[0].scheme_ids, id: data.sequence_id.valueObj[0].scheme_values }];
this.setCondition(this.condition,false);
if (data.sequence_id) {
let label = "等级方案"
const index = findIndex(this.condition[1].items, { label });
const schemeId = data.sequence_id.valueObj[0].scheme_values;
this.condition[1].items[index].browserConditionParam.replaceDatas = [{ name: data.sequence_id.valueObj[0].scheme_ids, id: schemeId }];
//清空职等并限制范围
label = "职等"
const index1 = findIndex(this.condition[1].items, { label });
let currenttime = Date.now();
let key = `scheme_id_${currenttime}`;
const lastKey = this.key;
this.setKey(key);
Reflect.deleteProperty(this.condition[1].items[index1].browserConditionParam.completeParams, lastKey);
Reflect.deleteProperty(this.condition[1].items[index1].browserConditionParam.conditionDataParams, lastKey);
Reflect.deleteProperty(this.condition[1].items[index1].browserConditionParam.dataParams, lastKey);
Reflect.deleteProperty(this.condition[1].items[index1].browserConditionParam.destDataParams, lastKey);
this.condition[1].items[index1].browserConditionParam.completeParams = {
[key]: schemeId,
...this.condition[1].items[index1].browserConditionParam.completeParams,
currenttime: currenttime
}
this.condition[1].items[index1].browserConditionParam.conditionDataParams = {
[key]: schemeId,
...this.condition[1].items[index1].browserConditionParam.conditionDataParams,
currenttime: currenttime
}
this.condition[1].items[index1].browserConditionParam.dataParams = {
[key]: schemeId,
...this.condition[1].items[index1].browserConditionParam.dataParams,
currenttime: currenttime
}
this.condition[1].items[index1].browserConditionParam.destDataParams = {
[key]: schemeId,
...this.condition[1].items[index1].browserConditionParam.destDataParams,
currenttime: currenttime
}
this.form.updateFields({
levelId: {
value: ''
},
grade_id: {
value: ''
}
});
} else {
//清空职级并限制范围
let label = "职级"
const index2 = findIndex(this.condition[1].items, { label });
let currenttime = Date.now();
let key1 = `level_id_${currenttime}`;
const lastKey = this.key1;
this.key1 = key1;
const levelId = data.level_id.value;
Reflect.deleteProperty(this.condition[1].items[index2].browserConditionParam.completeParams, lastKey);
Reflect.deleteProperty(this.condition[1].items[index2].browserConditionParam.conditionDataParams, lastKey);
Reflect.deleteProperty(this.condition[1].items[index2].browserConditionParam.dataParams, lastKey);
Reflect.deleteProperty(this.condition[1].items[index2].browserConditionParam.destDataParams, lastKey);
this.condition[1].items[index2].browserConditionParam.completeParams = {
[key1]: levelId,
...this.condition[1].items[index2].browserConditionParam.completeParams,
currenttime: currenttime
}
this.condition[1].items[index2].browserConditionParam.conditionDataParams = {
[key1]: levelId,
...this.condition[1].items[index2].browserConditionParam.conditionDataParams,
currenttime: currenttime
}
this.condition[1].items[index2].browserConditionParam.dataParams = {
[key1]: levelId,
...this.condition[1].items[index2].browserConditionParam.dataParams,
currenttime: currenttime
}
this.condition[1].items[index2].browserConditionParam.destDataParams = {
[key]: levelId,
...this.condition[1].items[index2].browserConditionParam.destDataParams,
currenttime: currenttime
}
this.form.updateFields({
grade_id: {
value: ''
}
});
}
this.setCondition(this.condition, false);
this.form1.initFormFields(this.condition);
}
@ -478,4 +565,8 @@ export class JobStore {
this.mergeCondition = mergeCondition;
}
setKey(key) {
this.key = key;
}
}

View File

@ -26,14 +26,13 @@ const {
export class LogViewStore {
@observable tableStore = new TableStore();
@observable searchCondition = [];
@observable isPanelShow = false; //高级搜索面板
@observable form = new WeaForm();
@observable conditionNum = 20;
@observable searchConditionLoading = true;
@observable searchConditionLoading = false;
@observable visible = false;
@observable dialogLoading = false;
@observable moduleType = ""; //模块类型
init(logMoudleType) {
this.setModuleType(logMoudleType);
this.getTableInfo();
@ -43,9 +42,9 @@ export class LogViewStore {
@action getTableInfo() {
let params = {
...this.form.getFormParams(),
moduleType:this.moduleType
moduleType: this.moduleType
}
this.tableStore = new TableStore();
this.tableStore = new TableStore();
Api.getLogList(params).then(res => {
if (res.code === 200) {
res.data.datas && this.tableStore.getDatas(res.data.datas, 1);
@ -58,12 +57,11 @@ export class LogViewStore {
}
@action getSearchCondition() {
this.setDialogLoading(true);
this.setSearchConditionLoading(true);
Api.getAdvanceSearchCondition().then(res => {
if (res.code === 200) {
this.setDialogLoading(false);
this.setSearchConditionLoading(false);
res.data.conditions && this.setSearchCondition(res.data.conditions);
res.data.conditions && this.form.initFormFields(res.data.conditions);
} else {
@ -75,18 +73,11 @@ export class LogViewStore {
}
setDialogLoading(bool) {
this.dialogLoading = bool;
}
setPanelStatus(bool) {
this.isPanelShow = bool;
bool && this.getSearchCondition();
if (!bool) {
this.scLoadingReset();
}
}
isEmptyObject(obj) {
for (let key in obj) {
@ -99,6 +90,10 @@ export class LogViewStore {
this.searchCondition = searchCondition;
}
setSearchConditionLoading(bool) {
this.searchConditionLoading = bool;
}
scLoadingReset() {
this.searchConditionLoading = true;
}