Commit a3005602 authored by Samir Sadyhov's avatar Samir Sadyhov 🤔

запуск маршрута с предварительными этапами (часть 1)

parent 5ffb7eb4
...@@ -36,6 +36,22 @@ const createDialog = (dialogTitle, body) => { ...@@ -36,6 +36,22 @@ const createDialog = (dialogTitle, body) => {
return dialog; return dialog;
} }
const getRegistryRoute = async registryID => {
return new Promise(resolve => {
rest.synergyGet(`api/registry/route?registryID=${registryID}&type=ACTIVATE&locale=${AS.OPTIONS.locale}`, res => {
if(res.hasOwnProperty('errorCode')) {
console.log(`ERROR [ getRegistryRoute ]: ${JSON.stringify(res)}`);
resolve(null);
} else {
resolve(res);
}
}, err => {
console.log(`ERROR [ getRegistryRoute ]: ${JSON.stringify(err)}`);
resolve(null);
});
});
}
const getFileModels = player => { const getFileModels = player => {
const result = []; const result = [];
player.model.models[0].modelBlocks[0].forEach(block => { player.model.models[0].modelBlocks[0].forEach(block => {
...@@ -377,29 +393,48 @@ const cutText = text => { ...@@ -377,29 +393,48 @@ const cutText = text => {
return text; return text;
} }
const isShowRoute = (registryRoute) => {
if(registryRoute && registryRoute.hasOwnProperty('before')) {
if(registryRoute.action.showOnSave == 'true') return true;
if(registryRoute.after.showOnSave == 'true') return true;
if(registryRoute.before.showOnSave == 'true') return true;
if(registryRoute.before.items.length) return true;
if(registryRoute.after.items.length) return true;
return false;
}
return false;
}
const activateDocument = async _doc => { const activateDocument = async _doc => {
const {formPlayer} = _doc; const {formPlayer, registryRoute} = _doc;
if(!formPlayer.model.isValid()) { if(!formPlayer.model.isValid()) {
showMessage(i18n.tr("Заполните обязательные поля!"), 'warn'); showMessage(i18n.tr("Заполните обязательные поля!"), 'warn');
return; return;
} }
Cons.showLoader();
try { try {
Cons.showLoader();
const asfData = formPlayer.model.getAsfData(); const asfData = formPlayer.model.getAsfData();
await AS.FORMS.ApiUtils.saveAsfData(asfData.data, asfData.form, asfData.uuid); await AS.FORMS.ApiUtils.saveAsfData(asfData.data, asfData.form, asfData.uuid);
await appAPI.activateDoc(asfData.uuid);
Cons.hideLoader(); if(isShowRoute(registryRoute)) {
showMessage(`<svg width="35" height="35" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" stroke="#49B785" stroke-width="1.1" points="4,10 8,15 17,4"></polyline></svg> ${i18n.tr('Успешно')}`, 'success'); _doc.closeDocument = closeDocument;
new StartRegistryRoute(_doc);
} else {
await appAPI.activateDoc(asfData.uuid);
Cons.hideLoader();
showMessage(`<svg width="35" height="35" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" stroke="#49B785" stroke-width="1.1" points="4,10 8,15 17,4"></polyline></svg> ${i18n.tr('Успешно')}`, 'success');
//закрыть окно после активации //закрыть окно после активации
closeDocument(_doc); closeDocument(_doc);
}
} catch (err) { } catch (err) {
Cons.hideLoader(); Cons.hideLoader();
showMessage(i18n.tr("Произошла ошибка при создании заявки, обратитесь к администратору"), 'error'); showMessage(i18n.tr("Произошла ошибка при запуске маршрута"), 'error');
console.log(err.message); console.log(err.message);
} }
} }
...@@ -1457,7 +1492,7 @@ class ARMDocument { ...@@ -1457,7 +1492,7 @@ class ARMDocument {
e.preventDefault(); e.preventDefault();
e.target.blur(); e.target.blur();
Cons.showLoader(); Cons.showLoader();
try { try {
const versionAsfData = await appAPI.getFile(item.identifier, 'json'); const versionAsfData = await appAPI.getFile(item.identifier, 'json');
const newAsfData = versionAsfData.data.filter(x => x.type != 'label'); const newAsfData = versionAsfData.data.filter(x => x.type != 'label');
...@@ -1997,6 +2032,8 @@ class ARMFooter { ...@@ -1997,6 +2032,8 @@ class ARMFooter {
_doc.meaning = await appAPI.getDocMeaningContent(_doc.dataUUID); _doc.meaning = await appAPI.getDocMeaningContent(_doc.dataUUID);
if(_doc.workInfo) _doc.workInfo.dataUUID = _doc.dataUUID; if(_doc.workInfo) _doc.workInfo.dataUUID = _doc.dataUUID;
_doc.registryRoute = await getRegistryRoute(_doc.registryInfo.registryID);
_doc.formPlayer = AS.FORMS.createPlayer(); _doc.formPlayer = AS.FORMS.createPlayer();
_doc.documentName = _doc.meaning || _doc.formName; _doc.documentName = _doc.meaning || _doc.formName;
......
const isShowRoute = (registryRoute) => {
if(registryRoute && registryRoute.hasOwnProperty('before')) {
if(registryRoute.action.showOnSave == 'true') return true;
if(registryRoute.after.showOnSave == 'true') return true;
if(registryRoute.before.showOnSave == 'true') return true;
return false;
}
return false;
}
const parseRouteData = data => {
const removeUserName = items => {
for(let i = 0; i < items.length; i++) {
items[i].users.forEach(user => {
delete user["userName"];
});
}
return items;
}
const result = {
before: {
routeID: data.before.routeID,
items: removeUserName(data.before.items)
},
after: {
routeID: data.after.routeID,
items: removeUserName(data.after.items)
}
}
return JSON.stringify(result);
}
this.StartRegistryRoute = class {
constructor(_doc) {
this._doc = _doc;
this.init();
}
async startRoute() {
Cons.showLoader();
try {
const param = new URLSearchParams();
param.append("data", parseRouteData(this.registryRoute));
param.append("dataUUID", this.dataUUID);
param.append("documentID", this.documentID);
param.append("registryID", this.registryInfo.registryID);
param.append("subject", this.documentName);
param.append("type", "ACTIVATE");
const {login, password} = Cons.creds;
const url = `../Synergy/rest/api/registry/route/start?locale=${AS.OPTIONS.locale}`;
const headers = new Headers();
headers.append("Authorization", "Basic " + btoa(unescape(encodeURIComponent(`${login}:${password}`))));
headers.append("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
const response = await fetch(url, {method: 'POST', headers, body: param});
if(!response.ok) throw new Error(await response.text());
const result = await response.json();
if(result.hasOwnProperty('errorCode') && result.errorCode != 0) throw new Error(result.errorMessage);
Cons.hideLoader();
this.closeDocument(this._doc);
} catch (err) {
Cons.hideLoader();
UIkit.notification.closeAll();
showMessage(i18n.tr(err.message), 'error');
console.log(err);
}
}
init(){
try {
const {registryInfo, registryRoute, documentID, dataUUID, documentName, closeDocument} = this._doc;
this.registryInfo = registryInfo;
this.registryRoute = registryRoute;
this.documentID = documentID;
this.dataUUID = dataUUID;
this.documentName = documentName;
this.closeDocument = closeDocument;
console.log('startRegistryRoute', {
_doc: this._doc
});
if(isShowRoute(registryRoute)) {
console.log('рисуем окно с маршрутами');
} else {
this.startRoute();
}
} catch (err) {
UIkit.notification.closeAll();
showMessage(i18n.tr(err.message), 'error');
console.log(err);
}
}
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment