Browse Source

fix

old_master
Listat.an 5 years ago
parent
commit
2553791864
  1. 2
      src/components/Fields/ImageField.jsx
  2. 6
      src/containers/Ips/actions.js
  3. 44
      src/containers/Ips/components/Contexmenu/index.jsx
  4. 41
      src/containers/Ips/components/Data/index.jsx
  5. 7
      src/containers/Ips/index.jsx
  6. 2
      src/containers/Ips/reducer.js
  7. 4
      src/containers/Logs/components/Contexmenu/index.jsx
  8. 10
      src/containers/Profile/components/Actions/index.jsx
  9. 8
      src/containers/Profile/components/Avatar/index.jsx
  10. 13
      src/containers/Profile/components/FormUser/index.jsx
  11. 4
      src/containers/Task/components/PrintComponent/components/Item/index.jsx
  12. 20
      src/containers/Task/components/View/index.jsx
  13. 4
      src/containers/User/components/FormUser/index.jsx

2
src/components/Fields/ImageField.jsx

@ -145,7 +145,7 @@ class ImageField extends Component { @@ -145,7 +145,7 @@ class ImageField extends Component {
<div className="form__form-group">
<ModalComponent show={showModal} toggle={() => this.setState({showModal: false})}>
<p>{this.state.error}</p>
<p>Бажаєте автоматично обрізати фото до певних параметрів?</p>
<p>Ви бажаєте автоматично зменшити та завантажити фото?</p>
<ButtonToolbar className="form__button-toolbar">
<Button color="primary" type="button" onClick={this.clickBtn}>Так</Button>
<Button onClick={() => this.setState({showModal: false})}>Ні</Button>

6
src/containers/Ips/actions.js

@ -57,4 +57,10 @@ export function showModal(status) { @@ -57,4 +57,10 @@ export function showModal(status) {
};
}
export function clearIps() {
return (dispatch) => {
dispatch({ type: 'CLEAR_IPS' });
};
}
export default {};

44
src/containers/Ips/components/Contexmenu/index.jsx

@ -28,7 +28,7 @@ class Contexmenu extends Component { @@ -28,7 +28,7 @@ class Contexmenu extends Component {
if(this.props.mode == 'horizontal'){
return null;
}
if(this.props.selectedUserIds.indexOf(this.props.item) == -1)
if(this.props.selectedIpIds.indexOf(this.props.item) == -1)
this.props.setIpSelectedIds([this.props.item])
}
@ -85,24 +85,23 @@ class Contexmenu extends Component { @@ -85,24 +85,23 @@ class Contexmenu extends Component {
}
delete = async () => {
let {item, users, profile, selectedUserIds, mode, data, ban_ip} = this.props;
await this.props.deleteIp({id: selectedUserIds});
let {item, users, profile, selectedIpIds, mode, data, ban_ip} = this.props;
await this.props.deleteIp({id: selectedIpIds});
this.setState({warningDelete: false});
}
handleMenuClick = async (e) => {
let {item, users, profile, selectedUserIds, mode, data, ban_ip} = this.props;
let {item, users, profile, selectedIpIds, mode, data, ban_ip} = this.props;
switch (e.key) {
case 'delete':
await this.props.deleteIp({id: selectedUserIds});
await this.props.deleteIp({id: selectedIpIds});
break;
case 'delete2':
this.props.handleMenuClick();
this.setState({warningDelete: true})
break;
case 'is_ban':
for(let item_id of selectedUserIds){
for(let item_id of selectedIpIds){
let index = _.findIndex(data, ['id', item_id]);
let log_item = index > -1 ? data[index] : null;
if(log_item){
@ -112,7 +111,7 @@ class Contexmenu extends Component { @@ -112,7 +111,7 @@ class Contexmenu extends Component {
await this.props.getIps()
break;
case 'is_white':
for(let item_id of selectedUserIds){
for(let item_id of selectedIpIds){
let index = _.findIndex(data, ['id', item_id]);
let log_item = index > -1 ? data[index] : null;
if(log_item){
@ -129,7 +128,7 @@ class Contexmenu extends Component { @@ -129,7 +128,7 @@ class Contexmenu extends Component {
render() {
let {warningDelete} = this.state;
let {item, users, profile, selectedUserIds, mode, data, ban_ip} = this.props;
let {item, users, profile, selectedIpIds, mode, data, ban_ip} = this.props;
if(!mode){
mode = "vertical";
@ -143,6 +142,13 @@ class Contexmenu extends Component { @@ -143,6 +142,13 @@ class Contexmenu extends Component {
}
});
let ips = [];
data.forEach(element => {
if(~selectedIpIds.indexOf(element.id)){
ips.push(element.ip.replace(/:/g, '').replace('ffff', ''))
}
});
@ -161,8 +167,8 @@ class Contexmenu extends Component { @@ -161,8 +167,8 @@ class Contexmenu extends Component {
>
<div className="modal__body">
{selectedUserIds.length > 1 ?
<h4 style={{color: 'white', fontWeight: 300}} key="msg1">Ви справді бажаєте видалити Ip?</h4> : <h4 style={{color: 'white', fontWeight: 300}}>Ви справді бажаєте видалити Ip</h4>}
{selectedIpIds.length > 1 ?
<h4 style={{color: 'white', fontWeight: 300}} key="msg1">Ви справді бажаєте видалити Ip: {ips.join(', ')} ?</h4> : <h4 style={{color: 'white', fontWeight: 300}}>Ви справді бажаєте видалити Ip {log.ip.replace(/:/g, '').replace('ffff', '')} ?</h4>}
</div>
<ButtonToolbar className="modal__footer">
<Button onClick={() => {this.setState({warningDelete: false})}}>Ні</Button>{' '}
@ -171,7 +177,7 @@ class Contexmenu extends Component { @@ -171,7 +177,7 @@ class Contexmenu extends Component {
</Modal>
<Menu onClick={this.handleMenuClick} selectable={false} mode={mode || "vertical"}>
{ selectedUserIds.length >= 1 && !is_white ?
{ selectedIpIds.length >= 1 && !is_white ?
<Item key='delete'>
<Tooltip placement="bottom" title={mode != "vertical" ? ' Розблокувати ip' : null}>
<i className="fal fa-lock-open-alt"></i>{mode == "vertical" ? ' Розблокувати ip' : null}
@ -179,7 +185,7 @@ class Contexmenu extends Component { @@ -179,7 +185,7 @@ class Contexmenu extends Component {
</Item>
: null}
{ selectedUserIds.length >= 1 && !is_white ?
{ selectedIpIds.length >= 1 && !is_white ?
<Item key='is_white'>
<Tooltip placement="bottom" title={mode != "vertical" ? ' Додати в білий список' : null}>
<i className="fal fa-notes-medical"></i>{mode == "vertical" ? ' Додати в білий список' : null}
@ -187,7 +193,7 @@ class Contexmenu extends Component { @@ -187,7 +193,7 @@ class Contexmenu extends Component {
</Item>
: null}
{ selectedUserIds.length >= 1 && is_white ?
{ selectedIpIds.length >= 1 && is_white ?
<Item key='is_ban'>
<Tooltip placement="bottom" title={mode != "vertical" ? ' Заблокувати ip' : null}>
<i className="fal fa-lock-alt"></i>{mode == "vertical" ? ' Заблокувати ip' : null}
@ -195,7 +201,7 @@ class Contexmenu extends Component { @@ -195,7 +201,7 @@ class Contexmenu extends Component {
</Item>
: null}
{ selectedUserIds.length >= 1 ?
{ selectedIpIds.length >= 1 ?
<Item key='delete2'>
<Tooltip placement="bottom" title={mode != "vertical" ? ' Видалити' : null}>
<i className="fal fa-trash-alt"></i>{mode == "vertical" ? ' Видалити' : null}
@ -203,7 +209,7 @@ class Contexmenu extends Component { @@ -203,7 +209,7 @@ class Contexmenu extends Component {
</Item>
: null}
{/* {getPermissionCheck('user', 'update', profile) && selectedUserIds.length == 1 && log.user_id && log.user_id.is_ban ?
{/* {getPermissionCheck('user', 'update', profile) && selectedIpIds.length == 1 && log.user_id && log.user_id.is_ban ?
<Item key='notban'>
<Tooltip placement="bottom" title={mode != "vertical" ? ' Розблокувати користувача' : null}>
<i className="fal fa-lock-open-alt"></i>{mode == "vertical" ? ' Розблокувати користувача' : null}
@ -211,7 +217,7 @@ class Contexmenu extends Component { @@ -211,7 +217,7 @@ class Contexmenu extends Component {
</Item>
: null}
{getPermissionCheck('user', 'update', profile) && selectedUserIds.length == 1 && find_index < 0 ?
{getPermissionCheck('user', 'update', profile) && selectedIpIds.length == 1 && find_index < 0 ?
<Item key='isban_ip'>
<Tooltip placement="bottom" title={mode != "vertical" ? ' Заблокувати ip' : null}>
<i className="fal fa-lock-alt"></i>{mode == "vertical" ? ' Заблокувати ip' : null}
@ -219,7 +225,7 @@ class Contexmenu extends Component { @@ -219,7 +225,7 @@ class Contexmenu extends Component {
</Item>
: null}
{getPermissionCheck('user', 'update', profile) && selectedUserIds.length == 1 && find_index > -1 ?
{getPermissionCheck('user', 'update', profile) && selectedIpIds.length == 1 && find_index > -1 ?
<Item key='notban_ip'>
<Tooltip placement="bottom" title={mode != "vertical" ? ' Розблокувати ip' : null}>
<i className="fal fa-lock-open-alt"></i>{mode == "vertical" ? ' Розблокувати ip' : null}
@ -239,7 +245,7 @@ Contexmenu.propTypes = { @@ -239,7 +245,7 @@ Contexmenu.propTypes = {
const mapStateToProps = (state, ownProps) => ({
selectedUserIds: state.ips.ip_selected_ids,
selectedIpIds: state.ips.ip_selected_ids,
data: state.ips.data,
ban_ip: state.ips.ban_ip,
profile: state.auth.profile,

41
src/containers/Ips/components/Data/index.jsx

@ -133,41 +133,32 @@ class Data extends Component { @@ -133,41 +133,32 @@ class Data extends Component {
row.ip.replace('::ffff:', '')
),
},
{
name: 'Дії',
key: 'action',
width: 45,
formatter: ({row}) => (
<span>
// {
// name: 'Дії',
// key: 'action',
// width: 45,
// formatter: ({row}) => (
// <span>
{getPermissionCheck('factory', 'destroy', profile) ? <Popconfirm
title="Ви справді хочете видалити?"
onConfirm={() => {this.props.deleteIp({id: row.id})}}
>
<a style={{color: '#3498DB'}} className="lnr lnr-trash" href="javascript:;"></a>
</Popconfirm> : null}
</span>
),
}
// {getPermissionCheck('factory', 'destroy', profile) ? <Popconfirm
// title="Ви справді хочете видалити?"
// onConfirm={() => {this.props.deleteIp({id: row.id})}}
// >
// <a style={{color: '#3498DB'}} className="lnr lnr-trash" href="javascript:;"></a>
// </Popconfirm> : null}
// </span>
// ),
// }
];
const components = {
body: {
row: (props) => (<Row {...props} popup={this.state.popup} setContentMenu={this.setContentMenu} contentMenu={this.state.contentMenu} setIpSelectedIds={this.props.setIpSelectedIds}/>),
cell: ({children}) => (<td>{children}</td>),
},
};
let clientHeight = document.body.clientHeight - 128 - 52 - 120;
let collumsList = [
{title: 'Ip', key: 'ip'},
{title: 'Дії', key: 'action'},
];
let defaultCollumsActive = ['ip', 'action'];
let defaultCollumsActive = ['ip'];

7
src/containers/Ips/index.jsx

@ -2,7 +2,7 @@ import React, { Component } from 'react'; @@ -2,7 +2,7 @@ import React, { Component } from 'react';
import { Col, Container, Row, Card, CardBody, Button } from 'reactstrap';
import Data from './components/Data';
import { connect } from 'react-redux'
import { getIps, showModal } from './actions';
import { getIps, showModal, clearIps } from './actions';
import { Radio, Modal } from 'antd';
import histoty from '../../lib/histoty';
import Form from './components/Form';
@ -13,6 +13,10 @@ class Ips extends Component { @@ -13,6 +13,10 @@ class Ips extends Component {
this.props.getIps({populate: 'user_id'});
}
componentWillUnmount(){
this.props.clearIps();
}
render() {
const {profile, ip_selected_ids} = this.props;
@ -46,6 +50,7 @@ const mapStateToProps = (state, ownProps) => ({ @@ -46,6 +50,7 @@ const mapStateToProps = (state, ownProps) => ({
const mapDispatchToProps = {
getIps,
clearIps,
showModal
}

2
src/containers/Ips/reducer.js

@ -27,6 +27,8 @@ export default function (state = initialState, action) { @@ -27,6 +27,8 @@ export default function (state = initialState, action) {
return {...state, ip_selected_ids: action.data}
case 'IP_SHOW_MODAL':
return {...state, show_modal: action.status}
case 'CLEAR_IPS':
return initialState;
default:
return state;
}

4
src/containers/Logs/components/Contexmenu/index.jsx

@ -221,7 +221,7 @@ class Contexmenu extends Component { @@ -221,7 +221,7 @@ class Contexmenu extends Component {
{getPermissionCheck('user', 'update', profile) && selectedUserIds.length == 1 && log.user_id && !log.user_id.is_ban ?
<Item key='isban'>
<Tooltip placement="bottom" title={mode != "vertical" ? ' Заблокувати користувача' : null}>
<i className="fal fa-lock-alt"></i>{mode == "vertical" ? ' Заблокувати користувача' : null}
<i className="fal fa-user-lock"></i>{mode == "vertical" ? ' Заблокувати користувача' : null}
</Tooltip>
</Item>
: null}
@ -229,7 +229,7 @@ class Contexmenu extends Component { @@ -229,7 +229,7 @@ class Contexmenu extends Component {
{getPermissionCheck('user', 'update', profile) && selectedUserIds.length == 1 && log.user_id && log.user_id.is_ban ?
<Item key='notban'>
<Tooltip placement="bottom" title={mode != "vertical" ? ' Розблокувати користувача' : null}>
<i className="fal fa-lock-open-alt"></i>{mode == "vertical" ? ' Розблокувати користувача' : null}
<i className="fal fa-user-unlock"></i>{mode == "vertical" ? ' Розблокувати користувача' : null}
</Tooltip>
</Item>
: null}

10
src/containers/Profile/components/Actions/index.jsx

@ -24,18 +24,20 @@ class Actions extends Component { @@ -24,18 +24,20 @@ class Actions extends Component {
<div>
Статус: <strong>{profile.is_ban ? "Заблокований" : "Активний"}</strong>
</div>
{profile.id == login_profile.id && <div>
{/* {profile.id == login_profile.id && <div>
Ваш IP: <strong>{(login_profile.ip || '').replace('::ffff:', '')}</strong>
</div>}
</div>} */}
<Button color={profile.is_ban ? "success" : "danger"} onClick={() => {
this.props.updateUser(profile.id, {is_ban: !profile.is_ban});
if(!profile.is_ban){
this.props.logoutUser(profile.id);
}
}} className="icon profile__btn">{!profile.is_ban ? 'Заблокувати' : 'Розблокувати'}</Button>
}} className="icon profile__btn"
title={!profile.is_ban ? 'Заблокувати користувача' : 'Розблокувати користувача'}
>{!profile.is_ban ? 'Заблокувати' : 'Розблокувати'}</Button>
<Button color={"danger"} onClick={() => {
this.props.logoutUser(profile.id);
}} className="icon profile__btn">Розлогінити</Button>
}} className="icon profile__btn" title="Розлогінити на всіх пристроях">Розлогінити</Button>
</CardBody>
</Card>
</Col>

8
src/containers/Profile/components/Avatar/index.jsx

@ -113,12 +113,13 @@ class Avatar extends Component { @@ -113,12 +113,13 @@ class Avatar extends Component {
}
return (
<div className="profile__avatar" style={{width: '100px', height: '100px', position: 'relative'}}>
{isUpdate && is_avatar ? <div style={{color: 'red', position: 'absolute', zIndex: 99, cursor: 'pointer', right: 0}}>
<div style={{position: 'relative'}}>
{isUpdate && is_avatar ? <div style={{color: 'red', position: 'absolute', zIndex: 99, cursor: 'pointer', left: 110}}>
<Tooltip placement="bottom" title={'Видалити аватар'}> <i className="fal fa-trash-alt" onClick={() => {
this.props.deleteAvatar(profile.id, profile_login.id)
}} ></i></Tooltip></div> : null}
<div className="profile__avatar" style={{width: '100px', height: '100px', position: 'relative'}}>
<label>
{/* <div className="avatar-img" style={{backgroundImage: `url(${Ava+'?id=' + profile.id})`}}></div> */}
<div style={{width: 100, display: 'flex'}}>
@ -128,13 +129,14 @@ class Avatar extends Component { @@ -128,13 +129,14 @@ class Avatar extends Component {
</label>
<ModalComponent show={showModal} toggle={() => this.setState({showModal: false})}>
<p>{this.state.error}</p>
<p>Бажаєте автоматично обрізати фото до певних параметрів?</p>
<p>Ви бажаєте автоматично зменшити та завантажити фото?</p>
<ButtonToolbar className="form__button-toolbar">
<Button color="primary" type="button" onClick={this.clickBtn}>Так</Button>
<Button onClick={() => this.setState({showModal: false})}>Ні</Button>
</ButtonToolbar>
</ModalComponent>
</div>
</div>
)
}
}

13
src/containers/Profile/components/FormUser/index.jsx

@ -12,7 +12,7 @@ import _ from 'lodash' @@ -12,7 +12,7 @@ import _ from 'lodash'
import InputMask from '../../../../components/Fields/InputMask';
import InputPhone from '../../../../components/Fields/InputPhone';
import { logout } from '../../../App/actions';
import { sendEmail } from '../../../User/actions';
import { sendEmail, sendSms } from '../../../User/actions';
class FormUser extends Component {
constructor(props) {
@ -50,6 +50,8 @@ class FormUser extends Component { @@ -50,6 +50,8 @@ class FormUser extends Component {
this.props.logout();
this.props.logoutUser(values.id, false);
}
this.props.change('password', '');
this.props.change('password_confirm', '');
this.setState({disabled: false})
});
}
@ -124,14 +126,14 @@ class FormUser extends Component { @@ -124,14 +126,14 @@ class FormUser extends Component {
/>
<ButtonToolbar className="form__button-toolbar">
<Button disabled={this.state.disabled} color="primary" type="submit">Зберегти</Button>
<Button color="primary" type="button" disabled={btnSendDisabled} onClick={() => {
<Button color="primary" type="button" disabled={btnSendDisabled || this.state.disabled} onClick={() => {
handleSubmit(this.submit)();
this.props.sendEmail(returForm);
}}>Зберігти і надіслати повідомлення</Button>
<Button color="primary" type="button" disabled={btnSendDisabled} onClick={() => {
}}>Зберігти <i className="fal fa-envelope"></i></Button>
<Button color="primary" type="button" disabled={btnSendDisabled || this.state.disabled} onClick={() => {
handleSubmit(this.submit)();
this.props.sendSms(returForm);
}}>Зберегти і надіслати данні на мобільний телефон</Button>
}}>Зберегти <i className="fal fa-sms"></i></Button>
</ButtonToolbar>
</form>
)
@ -206,6 +208,7 @@ const mapDispatchToProps = { @@ -206,6 +208,7 @@ const mapDispatchToProps = {
updateUser,
logout,
sendEmail,
sendSms,
logoutUser
// createUser,
}

4
src/containers/Task/components/PrintComponent/components/Item/index.jsx

@ -115,10 +115,10 @@ class Item extends Component { @@ -115,10 +115,10 @@ class Item extends Component {
<td colSpan={3} style={styles.td}><strong>Ініціатор: </strong>{user_iniciator.name}</td>
<td></td>
</tr>
<tr style={{pageBreakInside: 'avoid', pageBreakAfter: 'auto', fontSize: '14px'}}>
{base && <tr style={{pageBreakInside: 'avoid', pageBreakAfter: 'auto', fontSize: '14px'}}>
<td colSpan={3} style={styles.td}><strong>На підставі: </strong>{base}</td>
<td></td>
</tr>
</tr>}
<tr style={{pageBreakInside: 'avoid', pageBreakAfter: 'auto', fontSize: '14px' }}>
<td colSpan={4} style={{...styles.td }}>{task.description || ' '}</td>

20
src/containers/Task/components/View/index.jsx

@ -165,22 +165,20 @@ class View extends Component { @@ -165,22 +165,20 @@ class View extends Component {
</div>
<div style={{display: 'flex', marginTop: '10px'}}>
<div className='col-6' style={{padding: 0}}>
<div className='col-12' style={{padding: 0}}>
<p><strong>Група:</strong> {item.type}</p>
</div>
<div className='col-6' style={{padding: 0}}>
<p></p>
</div>
</div>
<div style={{display: 'flex',}}>
<br/>
<div className='col-6' style={{padding: 0}}>
{item.base && <div style={{display: 'flex',}}>
<div className='col-12' style={{padding: 0}}>
<p><strong>Підстава:</strong> {item.base}</p>
</div>
<div className='col-6' style={{padding: 0}}>
<p><strong>Статус:</strong> {item.status_title}</p>
</div>
</div>
</div>}
<br/>
<div style={{display: 'flex',}}>
<div className='col-6' style={{padding: 0}}>
<p><strong>Хто створив:</strong> { item.user_created_title}</p>
@ -194,7 +192,7 @@ class View extends Component { @@ -194,7 +192,7 @@ class View extends Component {
<p><strong>Ініціатор:</strong> { item.iniciator_id_title}</p>
</div>
<div className='col-6' style={{padding: 0}}>
<p></p>
<p><strong>Статус:</strong> {item.status_title}</p>
</div>
</div>
</div>

4
src/containers/User/components/FormUser/index.jsx

@ -300,11 +300,11 @@ class FormUser extends Component { @@ -300,11 +300,11 @@ class FormUser extends Component {
<Button color="primary" type="button" disabled={btnSendDisabled} onClick={() => {
handleSubmit(this.submit)();
this.props.sendEmail(returForm);
}}>Зберігти і надіслати повідомлення</Button>
}}>Зберігти <i className="fal fa-envelope"></i></Button>
<Button color="primary" type="button" disabled={btnSendDisabled} onClick={() => {
handleSubmit(this.submit)();
this.props.sendSms(returForm);
}}>Зберегти і надіслати данні на мобільний телефон</Button>
}}>Зберегти <i className="fal fa-sms"></i></Button>
</ButtonToolbar>
</form>
)

Loading…
Cancel
Save