mh-sms-web/src/components/MainPage/FoUserInfoShow.js

144 lines
6.2 KiB
JavaScript
Raw Normal View History

2024-01-22 09:18:38 +08:00
import React, { Component } from 'react';
import { connect } from 'dva';
import { withRouter } from 'dva/router';
import { initFilter, extendRule, extendInclude, setDataFieldValue, guid, initQueryFilter } from "../../utils/common";
import { Modal, Upload, Form, Button, Descriptions, Icon, message } from 'antd';
import config from "../../config.js";
import storage from '../../utils/storage'
class FoUserInfoShow extends React.Component {
constructor(props) {
super(props)
this.state = {
data: null,
userPhone: "",
Department: "",
teamName: "",
postName: "",
SignPhoto: 0,
SignaturePhoto: "",
visible: false
}
}
handleOk = e => {
this.setState({
visible: false,
});
};
handleCancel = e => {
this.setState({
visible: false,
});
};
showModal = () => {
this.setState({
visible: true,
});
var orgId = this.props.login ? this.props.login.OrgId : ''; //登录后有存储登录信息
var userId = this.props.login ? this.props.login.userId : ''; //登录后有存储登录信息
let json = initFilter(orgId);
extendRule(json, 'ID', 1, userId); //ID=‘’,字段,等于,条件值, 1代表=2代表不等于3小于4小于等于5大于6大于等于7以开始的Like,8以结束的Like9包含
extendInclude(json, 'Nav_Department');
extendInclude(json, 'Nav_Person.Nav_Post');
extendInclude(json, 'Nav_Person.Nav_TeamPersons.Nav_Team');
extendInclude(json, 'Nav_UserSignFiles.Nav_ImgFile.Nav_File');
this.props.dispatch({
type: 'app/getDataByPost',
payload: json,
url: 'FM/User/OrderPaged',
onComplete: (ret) => { //返回查询结果ret
if (ret) { //判断是否有记录
let teamName = "";
let postName = "";
if (ret[0]?.Nav_Person?.Nav_TeamPersons && ret[0]?.Nav_Person?.Nav_TeamPersons.length > 0) {
teamName = ret[0].Nav_Person.Nav_TeamPersons[0].Nav_Team?.NAME
}
postName = ret[0]?.Nav_Person.Nav_Post?.NAME
this.setState({ //设置setState全局变量
userPhone: ret[0]?.PHONE,
Department: ret[0]?.Nav_Department.NAME,
teamName: teamName,
postName: postName,
})
if (ret[0]?.Nav_UserSignFiles.length > 0) {
if ((ret[0].Nav_UserSignFiles[0].Nav_ImgFile.Nav_File.FILE_PATH).length > 0) {
this.setState({
SignPhoto: 1,
SignaturePhoto: config.picServerHost + ret[0].Nav_UserSignFiles[0].Nav_ImgFile.Nav_File.FILE_PATH,
})
}
}
}
}
});
};
render() {
const Tenant = storage('lacal').getItem('Tenant').val;
const that = this;
const uploadprops = {
name: 'file',
action: config.serviceHost('api/PF/File/UploadFileEditSign'),
data: { OrgId: this.props.login.OrgId, userID: this.props.login.userId },
headers: {
Tenant: Tenant,
},
showUploadList:false,
beforeUpload(file) {
const isJpgOrPng = file.type === 'image/jpeg' || file.type === 'image/png';
if (!isJpgOrPng) {
message.error('只能上传jpg或者png格式图片!');
}
const isLt2M = file.size / 1024 / 1024 < 0.5;
if (!isLt2M) {
message.error('只能上传小于500k图片!');
}
return isJpgOrPng && isLt2M;
},
onChange(info) {
if (info.file.status === 'done') {
that.setState({
SignPhoto: 1,
SignaturePhoto: config.picServerHost + info.file.response.Data.imgFilePath,
})
message.success(`${info.file.name} 上传成功!`);
} else if (info.file.status === 'error') {
message.error(`${info.file.name} 上传失败!`);
}
},
};
return (
<div>
<span onClick={this.showModal}>我的资料</span>
<Modal title="我的资料" width={'800px'} visible={this.state.visible}
onOk={this.handleOk}
onCancel={this.handleCancel}>
<Descriptions bordered>
<Descriptions.Item label="编码">{this.props.login.user.CODE}</Descriptions.Item>
<Descriptions.Item label="姓名">{this.props.login.user.NAME}</Descriptions.Item>
<Descriptions.Item label="手机">{this.state.userPhone}</Descriptions.Item>
<Descriptions.Item label="部门">{this.state.Department}</Descriptions.Item>
<Descriptions.Item label="班组">{this.state.teamName}</Descriptions.Item>
<Descriptions.Item label="岗位">{this.state.postName}</Descriptions.Item>
<Descriptions.Item label="签名" span={3}>{this.state.SignPhoto === 1 ? <img width='30%' src={this.state.SignaturePhoto} /> : ""}</Descriptions.Item>
<Descriptions.Item label="">
{this.state.SignPhoto === 1 ?
<Upload {...uploadprops}><Button><Icon type="upload" /> 重新上传签名照</Button></Upload> :
<Upload {...uploadprops}><Button><Icon type="upload" /> 上传签名照</Button></Upload>
}
</Descriptions.Item>
</Descriptions>
</Modal>
</div>
);
}
}
export default withRouter(connect(({ login }) => ({ login }))(FoUserInfoShow))