78 lines
6.5 KiB
JavaScript
78 lines
6.5 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.ResolveScreen = void 0;
|
|
var tslib_1 = require("tslib");
|
|
var React = tslib_1.__importStar(require("react"));
|
|
var models_1 = require("../../models");
|
|
var ui_1 = require("../ui");
|
|
var STATUS_OPTIONS = [models_1.RouteStepStatus.Approval, models_1.RouteStepStatus.Execution]
|
|
.map(function (v) { return ({ value: v, label: models_1.routeStepStatusLabels[v] }); });
|
|
var ResolveScreen = function (_a) {
|
|
var api = _a.api, currentUserEmail = _a.currentUserEmail;
|
|
var _b = React.useState([]), requestTypes = _b[0], setRequestTypes = _b[1];
|
|
var _c = React.useState(''), requestTypeId = _c[0], setRequestTypeId = _c[1];
|
|
var _d = React.useState(''), userEmail = _d[0], setUserEmail = _d[1];
|
|
var _e = React.useState(''), projectId = _e[0], setProjectId = _e[1];
|
|
var _f = React.useState(models_1.RouteStepStatus.Approval), status = _f[0], setStatus = _f[1];
|
|
var _g = React.useState(false), busy = _g[0], setBusy = _g[1];
|
|
var _h = React.useState(), error = _h[0], setError = _h[1];
|
|
var _j = React.useState(), result = _j[0], setResult = _j[1];
|
|
React.useEffect(function () {
|
|
api.requestTypes.list().then(setRequestTypes).catch(function () { });
|
|
}, [api]);
|
|
var run = function () {
|
|
if (!requestTypeId) {
|
|
setError('Выберите тип заявки.');
|
|
return;
|
|
}
|
|
setBusy(true);
|
|
setError(undefined);
|
|
setResult(undefined);
|
|
api.templateRoutes
|
|
.resolve({
|
|
requestTypeId: Number(requestTypeId),
|
|
userEmail: userEmail.trim() || undefined,
|
|
projectId: projectId.trim() || undefined,
|
|
status: status
|
|
})
|
|
.then(setResult)
|
|
.catch(function (e) { return setError(e.message); })
|
|
.finally(function () { return setBusy(false); });
|
|
};
|
|
return (React.createElement("div", null,
|
|
React.createElement(ui_1.Breadcrumbs, { items: [{ label: 'Главная' }, { label: 'Проверка маршрута' }] }),
|
|
React.createElement(ui_1.PageHeader, { icon: "search", subtitle: "\u0414\u0438\u0430\u0433\u043D\u043E\u0441\u0442\u0438\u043A\u0430", title: "\u041F\u0440\u043E\u0432\u0435\u0440\u043A\u0430 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u0438\u044F \u043C\u0430\u0440\u0448\u0440\u0443\u0442\u0430" }),
|
|
React.createElement("div", { style: { background: '#fff', borderRadius: 14, padding: 26, boxShadow: 'var(--sh-1)', border: '1px solid var(--gray-200)', marginBottom: 24 } },
|
|
React.createElement(ui_1.FormGrid, null,
|
|
React.createElement(ui_1.Field, { label: "\u0422\u0438\u043F \u0437\u0430\u044F\u0432\u043A\u0438", required: true, full: true },
|
|
React.createElement(ui_1.Select, { options: requestTypes.map(function (rt) { return ({ value: String(rt.id), label: rt.name }); }), placeholder: "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0442\u0438\u043F \u0437\u0430\u044F\u0432\u043A\u0438", value: requestTypeId, onChange: function (e) { return setRequestTypeId(e.target.value); } })),
|
|
React.createElement(ui_1.Field, { label: "Email \u0438\u043D\u0438\u0446\u0438\u0430\u0442\u043E\u0440\u0430", hint: currentUserEmail ? "\u041F\u0443\u0441\u0442\u043E = \u0442\u0435\u043A\u0443\u0449\u0438\u0439 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C (".concat(currentUserEmail, ").") : 'Пусто = текущий пользователь из токена.' },
|
|
React.createElement(ui_1.TextInput, { value: userEmail, onChange: function (e) { return setUserEmail(e.target.value); }, placeholder: "user@tnsu.kz" })),
|
|
React.createElement(ui_1.Field, { label: "Id \u043F\u0440\u043E\u0435\u043A\u0442\u0430 (Guid)", hint: "\u0417\u0430\u043F\u043E\u043B\u043D\u0438\u0442\u0435, \u0435\u0441\u043B\u0438 \u043C\u0430\u0440\u0448\u0440\u0443\u0442 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043E\u0442 \u043F\u0440\u043E\u0435\u043A\u0442\u0430." },
|
|
React.createElement(ui_1.TextInput, { value: projectId, onChange: function (e) { return setProjectId(e.target.value); }, placeholder: "\u041D\u0435\u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u043E" })),
|
|
React.createElement(ui_1.Field, { label: "\u0421\u0442\u0430\u0442\u0443\u0441", required: true },
|
|
React.createElement(ui_1.Select, { options: STATUS_OPTIONS, value: status, onChange: function (e) { return setStatus(e.target.value); } }))),
|
|
React.createElement("div", { style: { marginTop: 18 } },
|
|
React.createElement(ui_1.Button, { variant: "accent", icon: "search", onClick: run, disabled: busy }, busy ? 'Проверка...' : 'Проверить'))),
|
|
error && React.createElement(ui_1.Alert, { kind: "err" }, error),
|
|
result && (React.createElement(React.Fragment, null,
|
|
React.createElement(ui_1.Alert, { kind: "ok" },
|
|
"\u041C\u0430\u0440\u0448\u0440\u0443\u0442 #",
|
|
result.routeId,
|
|
" \u00B7 ",
|
|
models_1.routeTypeLabels[result.routeType],
|
|
result.requiresControl ? ' · требуется контроль исполнения' : ''),
|
|
React.createElement(ui_1.DataTable, { columns: [
|
|
{ key: 'order', header: '№', width: '50px', render: function (r) { return r.orderNo; } },
|
|
{ key: 'executor', header: 'Исполнитель', render: function (r) { var _a; return React.createElement(ui_1.PrimaryCell, null, (_a = r.executorEmail) !== null && _a !== void 0 ? _a : '—'); } },
|
|
{ key: 'position', header: 'Должность', render: function (r) { var _a; return (_a = r.position) !== null && _a !== void 0 ? _a : '—'; } },
|
|
{
|
|
key: 'reassign',
|
|
header: 'Переназначение',
|
|
align: 'center',
|
|
render: function (r) { return (r.allowReassignToOtherApprovers ? 'Разрешено' : 'Нет'); }
|
|
}
|
|
], rows: result.steps, keyOf: function (r) { return r.id; }, emptyMessage: "\u041C\u0430\u0440\u0448\u0440\u0443\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u043B\u0441\u044F \u0431\u0435\u0437 \u0448\u0430\u0433\u043E\u0432 \u0434\u043B\u044F \u044D\u0442\u043E\u0433\u043E \u0441\u0442\u0430\u0442\u0443\u0441\u0430." })))));
|
|
};
|
|
exports.ResolveScreen = ResolveScreen;
|
|
//# sourceMappingURL=ResolveScreen.js.map
|