@rnga/orders
Version:
## Get schema from @prisma-cms 1. yarn get-api-schema -e http://localhost:4000 2. yarn build-api-fragments
213 lines (153 loc) • 4.64 kB
JavaScript
import React, { Component } from 'react'
import PropTypes from 'prop-types'
export default class TarifSelect extends Component {
static propTypes = {
// slabConfirmed: PropTypes.bool.isRequired,
slabRejected: PropTypes.bool.isRequired,
tarifsSelectionOpen: PropTypes.bool.isRequired,
selectedSlabTarif: PropTypes.object,
SlabServiceOrder: PropTypes.object,
SlabServiceOrdered: PropTypes.bool.isRequired,
slabTarif: PropTypes.string,
slabTarifs: PropTypes.array.isRequired,
price: PropTypes.number,
onSlabClick: PropTypes.func.isRequired,
setTarif: PropTypes.func.isRequired,
resetOrder: PropTypes.func.isRequired,
updateObject: PropTypes.func.isRequired,
rejectSlabOrder: PropTypes.func.isRequired,
canEdit: PropTypes.bool.isRequired,
}
setTarif(n) {
const {
setTarif,
} = this.props;
return setTarif(n);
}
// componentDidUpdate(prevProps, prevState) {
// }
render() {
const {
tarifsSelectionOpen,
selectedSlabTarif,
SlabServiceOrder,
SlabServiceOrdered,
slabTarif,
slabTarifs,
price,
onSlabClick,
// resetOrder,
// updateObject,
slabRejected,
rejectSlabOrder,
canEdit,
} = this.props;
let onClickHandler;
const {
// id: slabServiceId,
// confirmDate,
rejectDate: slabServiceOrderRejectDate,
Tarif,
} = SlabServiceOrder || {};
/**
* Если тариф сохранен, нельзя его менять
*/
if (!Tarif && !slabServiceOrderRejectDate && canEdit) {
// if (!confirmDate && !slabServiceOrderRejectDate) {
onClickHandler = event => {
event.preventDefault();
event.stopPropagation();
// this.setState({
// tarifsSelectionOpen: !tarifsSelectionOpen,
// });
onSlabClick(event);
}
}
let expander;
if (onClickHandler) {
expander = <i className="menu-expand"></i>
}
return (
<div
className={["selection-block", tarifsSelectionOpen ? "open" : ""].join(" ")}
// ref={node => {
// this.selectTarifWrapper = node;
// }}
>
<div
className={["visible-selection", selectedSlabTarif ? "selected-item" : "", SlabServiceOrdered && (!slabTarif || slabServiceOrderRejectDate) && canEdit ? "atantion-flash" : ""].join(" ")}
onClick={onClickHandler}
>
{expander}
<span >
{slabServiceOrderRejectDate ? "Отказ" : (selectedSlabTarif && selectedSlabTarif.name) || (slabRejected || canEdit ? "Выбрать" : "")}
</span>
</div>
<ul>
{slabTarifs.map(n => {
const {
id,
name,
code,
} = n;
let disabled = false;
if (price >= 100000 && code !== "premium") {
disabled = true;
}
else if (price < 100000 && code === "premium") {
disabled = true;
}
return <li
key={id}
// disabled={disabled ? "true" : undefined}
className={disabled ? "disabled" : undefined}
onClick={event => {
event.preventDefault();
event.stopPropagation();
if (disabled) {
return false;
}
this.setTarif(n);
// this.setState({
// tarifsSelectionOpen: false,
// });
}}
>
{name.toUpperCase()}
</li>
})}
<li
className="visible-selection atantion-flash"
onClick={event => {
event.preventDefault();
event.stopPropagation();
// resetOrder();
// updateObject({
// rejectSlabService: slabServiceId,
// });
rejectSlabOrder();
}}
>
Отказ
</li>
{/* <li
className="visible-selection atantion-flash"
onClick={event => {
event.preventDefault();
event.stopPropagation();
// if (disabled) {
// return false;
// }
resetOrder();
// this.setState({
// tarifsSelectionOpen: false,
// });
}}
>
Отмена
</li> */}
</ul>
</div>
)
}
}