@rnga/orders
Version:
## Get schema from @prisma-cms 1. yarn get-api-schema -e http://localhost:4000 2. yarn build-api-fragments
625 lines (502 loc) • 18.6 kB
JavaScript
;
exports.__esModule = true;
exports.OrdersItemPageView = undefined;
var _regenerator = require('babel-runtime/regenerator');
var _regenerator2 = _interopRequireDefault(_regenerator);
var _class, _temp;
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
// import {
// styles,
// TableView,
// } from '../../DataList/View/Table';
// import Body from "./TableBody";
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _propTypes = require('prop-types');
var _propTypes2 = _interopRequireDefault(_propTypes);
var _styles = require('material-ui/styles');
var _Pagination = require('Pagination');
var _Pagination2 = _interopRequireDefault(_Pagination);
var _Table = require('apollo-cms/src/DataView/List/Table');
var _reactRouterDom = require('react-router-dom');
var _materialUi = require('material-ui');
var _Delete = require('material-ui-icons/Delete');
var _Delete2 = _interopRequireDefault(_Delete);
var _Import = require('./Import');
var _Import2 = _interopRequireDefault(_Import);
var _Link = require('ui/User/Link');
var _Link2 = _interopRequireDefault(_Link);
var _moment = require('moment');
var _moment2 = _interopRequireDefault(_moment);
var _OrderNumber = require('ui/OrderNumber');
var _OrderNumber2 = _interopRequireDefault(_OrderNumber);
var _SelectField = require('ui/OrderItem/Status/SelectField');
var _SelectField2 = _interopRequireDefault(_SelectField);
var _Autocomplete = require('ui/Users/Autocomplete');
var _Autocomplete2 = _interopRequireDefault(_Autocomplete);
var _FilterList = require('material-ui-icons/FilterList');
var _FilterList2 = _interopRequireDefault(_FilterList);
var _ArrowBack = require('material-ui-icons/ArrowBack');
var _ArrowBack2 = _interopRequireDefault(_ArrowBack);
var _query = require('query');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
var customStyles = function customStyles(theme) {
var _theme$palette$orderI = theme.palette.orderItemStatus,
Vydan = _theme$palette$orderI.Vydan,
Sobrano = _theme$palette$orderI.Sobrano,
GreidConfirmed = _theme$palette$orderI.GreidConfirmed,
Otkaz = _theme$palette$orderI.Otkaz,
OtkazVydan = _theme$palette$orderI.OtkazVydan;
return _extends({}, (0, _Table.styles)(theme), {
// table: {
// // color: "red",
// },
row: {
// color: "red",
// Стили в зависимости от статуса
// "&.orderItem-status--Vydan": {
// backgroundColor: "#43a047",
// "& *": {
// color: "#fff",
// },
// "&:hover": {
// backgroundColor: "#00701a",
// },
// },
"&.orderItem-status--Vydan": Vydan.tr,
"&.orderItem-status--Sobrano": Sobrano.tr,
"&.orderItem-status--GreidConfirmed": GreidConfirmed.tr,
"&.orderItem-status--Otkaz": Otkaz.tr,
"&.orderItem-status--OtkazVydan": OtkazVydan.tr
}
});
};
var renderWithLink = function renderWithLink(value, record) {
var _ref = record || {},
id = _ref.id;
return value && _react2.default.createElement(
_reactRouterDom.Link,
{
to: '/orders_items/' + id
},
value
) || value;
};
var OrdersItemPageView = exports.OrdersItemPageView = (_temp = _class = function (_TableView) {
_inherits(OrdersItemPageView, _TableView);
function OrdersItemPageView() {
_classCallCheck(this, OrdersItemPageView);
return _possibleConstructorReturn(this, _TableView.apply(this, arguments));
}
OrdersItemPageView.prototype.deleteOrderItem = function () {
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee2(orderItemId) {
var _this2 = this;
var client;
return _regenerator2.default.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
if (!window.confirm("Удалить данную позицию?")) {
_context2.next = 4;
break;
}
client = this.context.client;
_context2.next = 4;
return client.mutate({
mutation: _query.deleteOrderItem,
variables: {
where: {
id: orderItemId
}
}
}).then(function () {
var _ref3 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee(r) {
return _regenerator2.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
_context.next = 2;
return client.reFetchObservableQueries();
case 2:
return _context.abrupt('return', r);
case 3:
case 'end':
return _context.stop();
}
}
}, _callee, _this2);
}));
return function (_x2) {
return _ref3.apply(this, arguments);
};
}()).catch(function (error) {
console.error("Error", error);
});
case 4:
case 'end':
return _context2.stop();
}
}
}, _callee2, this);
}));
function deleteOrderItem(_x) {
return _ref2.apply(this, arguments);
}
return deleteOrderItem;
}();
OrdersItemPageView.prototype.getFilters = function getFilters() {
var _props = this.props,
getFilters = _props.getFilters,
setFilters = _props.setFilters,
cleanFilters = _props.cleanFilters,
showFilters = _props.showFilters;
if (!showFilters) {
return null;
}
var _getFilters = getFilters(),
number = _getFilters.number,
status = _getFilters.status,
contractor = _getFilters.contractor;
var filters = _react2.default.createElement(
_materialUi.Grid,
{
container: true,
spacing: 8,
alignItems: 'flex-end'
},
_react2.default.createElement(
_materialUi.Grid,
{
item: true
},
_react2.default.createElement(_materialUi.TextField, {
label: '\u041F\u043E\u0438\u0441\u043A',
style: {
marginLeft: 10,
width: 200
},
name: 'number',
value: number || "",
onChange: function onChange(event) {
var value = event.target.value;
setFilters({
number: value
});
}
})
),
_react2.default.createElement(
_materialUi.Grid,
{
item: true
},
_react2.default.createElement(_SelectField2.default, {
label: '\u0421\u0442\u0430\u0442\u0443\u0441',
style: {
marginLeft: 10,
width: 200
},
name: 'status',
value: status || "",
onChange: function onChange(event) {
var value = event.target.value;
setFilters({
status: value
});
}
})
),
_react2.default.createElement(
_materialUi.Grid,
{
item: true
},
_react2.default.createElement(_Autocomplete2.default, {
inputProps: {
label: "Контрагент",
style: {
marginLeft: 10,
width: 200
}
},
name: 'contractor',
value: contractor || ""
// onChange={event => {
// const {
// value,
// } = event.target;
// setFilters({
// contractor: value,
// });
// }}
, onSelect: function onSelect(value) {
// const {
// value,
// } = event.target;
setFilters({
contractor: value
});
}
// onSubmit={user => {
// const {
// id: value,
// } = user;
// setFilters({
// contractor: value,
// });
// }}
})
),
_react2.default.createElement(
_materialUi.Grid,
{
item: true
},
_react2.default.createElement(
_materialUi.Button,
{
onClick: function onClick(event) {
return cleanFilters({
// where: null,
// extraWhere: null,
});
}
},
'\u0421\u0431\u0440\u043E\u0441'
)
),
_react2.default.createElement(_materialUi.Grid, {
item: true,
xs: true
}),
_react2.default.createElement(
_materialUi.Grid,
{
item: true
},
_react2.default.createElement(_Import2.default, null)
)
);
return filters;
};
OrdersItemPageView.prototype.render = function render() {
var _props2 = this.props,
first = _props2.first,
page = _props2.page,
data = _props2.data;
var objectsConnection = data.objectsConnection,
variables = data.variables;
var _ref4 = variables || {},
limit = _ref4.first;
var _ref5 = objectsConnection || {},
aggregate = _ref5.aggregate;
var _ref6 = aggregate || {},
count = _ref6.count;
var content = _TableView.prototype.render.call(this);
return _react2.default.createElement(
'div',
null,
content,
count && limit ? _react2.default.createElement(_Pagination2.default, {
limit: limit,
total: count,
page: page || 1
}) : null
);
};
return OrdersItemPageView;
}(_Table.TableView), _class.propTypes = _extends({}, _Table.TableView.propTypes, {
limit: _propTypes2.default.number,
showFilters: _propTypes2.default.bool.isRequired
}), _class.contextTypes = _extends({}, _Table.TableView.contextTypes, {
user: _propTypes2.default.object,
client: _propTypes2.default.object.isRequired
}), _class.defaultProps = _extends({}, _Table.TableView.defaultProps, {
showFilters: true,
// listName: "orderItemsConnection",
title: "Элементы заказа",
// Body,
columnData: [{
id: 'actions', numeric: false, disablePadding: false, label: '',
renderer: function renderer(value, record, scope) {
var id = record.id;
if (!id) {
return null;
}
var currentUser = scope.context.user;
var _ref7 = currentUser || {},
sudo = _ref7.sudo;
if (!sudo) {
return null;
}
var actions = [];
actions.push(_react2.default.createElement(
_materialUi.IconButton,
{
onClick: function onClick(event) {
event.preventDefault();
event.stopPropagation();
scope.deleteOrderItem(id);
}
},
_react2.default.createElement(_Delete2.default, null)
));
return actions;
}
}, {
id: 'externalKey', numeric: false, disablePadding: false, label: '№',
renderer: function renderer(value, record) {
var id = record.id;
return value ? _react2.default.createElement(
_reactRouterDom.Link,
{
to: '/orders_items/' + id
},
value
) : null;
}
}, {
id: 'slab', numeric: false, disablePadding: false, label: '№ слаба',
renderer: function renderer(value, record) {
var id = record.id;
return value ? _react2.default.createElement(
_reactRouterDom.Link,
{
to: '/orders_items/' + id
},
_react2.default.createElement(_OrderNumber2.default, {
value: value,
displayType: 'text'
})
) : null;
}
}, {
id: 'User', numeric: false, disablePadding: true, label: 'Заказчик',
renderer: function renderer(value, record) {
var content = void 0;
var _ref8 = record && record.Order || {},
User = _ref8.User;
if (User) {
content = _react2.default.createElement(_Link2.default, {
user: User
});
}
return content;
}
}, {
id: 'status', numeric: false, disablePadding: false, label: 'Готовность',
renderer: function renderer(value, record) {
return value && _react2.default.createElement(_SelectField2.default, {
value: value,
disabled: true,
onChange: function onChange() {}
}) || null;
}
},
// { id: 'frez', numeric: false, disablePadding: false, label: 'Фрез' },
// { id: 'nakl', numeric: false, disablePadding: false, label: 'Накл' },
{
id: 'date', numeric: false, disablePadding: true, label: 'Дата (по договору)',
renderer: function renderer(value, record) {
var date = record && record.Order && record.Order.date || null;
return date && (0, _moment2.default)(date).format('DD.MM.YYYY') || null;
}
}, {
id: 'Order', numeric: false, disablePadding: true, label: '№ договора',
renderer: function renderer(value, record, scope) {
var _ref9 = value || {},
orderId = _ref9.id,
number = _ref9.number;
var _scope$props = scope.props,
setFilters = _scope$props.setFilters,
getFilters = _scope$props.getFilters,
history = _scope$props.history;
var _getFilters2 = getFilters(),
filterOrderId = _getFilters2.orderId;
return number && _react2.default.createElement(
'span',
null,
_react2.default.createElement(
_reactRouterDom.Link,
{
to: '/orders/' + orderId
},
_react2.default.createElement(_OrderNumber2.default, {
value: number,
displayType: 'text'
})
),
filterOrderId ? _react2.default.createElement(
_materialUi.IconButton,
{
onClick: function onClick(event) {
// setFilters({
// orderId: undefined,
// });
history.goBack();
}
},
_react2.default.createElement(_FilterList2.default, {
color: 'secondary'
})
) : _react2.default.createElement(
_materialUi.IconButton,
{
onClick: function onClick(event) {
setFilters({
orderId: orderId
});
}
},
_react2.default.createElement(_FilterList2.default, null)
)
) || null;
}
}, {
id: 'number', numeric: false, disablePadding: true, label: '№ в договоре',
renderer: renderWithLink
}, {
id: 'title',
numeric: false,
disablePadding: false,
label: 'Номинал',
renderer: renderWithLink
}, { id: 'year', numeric: false, disablePadding: false, label: 'Год' }, { id: 'diametr', numeric: false, disablePadding: false, label: 'Диаметр' }, { id: 'thingh', numeric: false, disablePadding: false, label: 'Толщина' }, { id: 'weight', numeric: false, disablePadding: false, label: 'Вес' }, { id: 'price', numeric: false, disablePadding: false, label: 'Оценочная стоимость' }, { id: 'ensure_price', numeric: false, disablePadding: false, label: 'Страховая стоимость' }, {
id: 'type', numeric: false, disablePadding: false, label: 'мон|мед|ж',
style: {
whiteSpace: "nowrap"
},
renderer: function renderer(value, record) {
switch (value) {
case "10":
value = "Монета";
break;
case "20":
value = "Медаль";
break;
case "30":
value = "Жетон";
break;
}
return value;
}
}, { id: 'coin_num', numeric: false, disablePadding: false, label: '№ монеты' }, { id: 'preGrade', numeric: false, disablePadding: false, label: 'Прегрейд' }, { id: 'sheldon_grade', numeric: false, disablePadding: false, label: 'Грейд по Шелдону' }, { id: 'bitkin', numeric: false, disablePadding: false, label: '№ по Биткину' }, { id: 'expertize', numeric: false, disablePadding: false, label: 'Эксперт. закл.' }],
// where:{
// name_contains: "немо"
// },
rowRenderer: function rowRenderer(n, index, renderer) {
var status = n.status;
var rowProps = {
className: status ? 'orderItem-status--' + status : undefined,
style: {
color: "red"
}
};
return renderer(n, index, rowProps);
}
}), _temp);
exports.default = (0, _styles.withStyles)(customStyles)(OrdersItemPageView);