Files
tnsu-approval-route/frontend/lib-commonjs/webparts/approvalAdmin/components/screens/ResolveScreen.js
T
2026-07-29 12:30:40 +05:00

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