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

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

parent 5ffb7eb4
......@@ -36,6 +36,22 @@ const createDialog = (dialogTitle, body) => {
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 result = [];
player.model.models[0].modelBlocks[0].forEach(block => {
......@@ -377,18 +393,36 @@ const cutText = 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 {formPlayer} = _doc;
const {formPlayer, registryRoute} = _doc;
if(!formPlayer.model.isValid()) {
showMessage(i18n.tr("Заполните обязательные поля!"), 'warn');
return;
}
Cons.showLoader();
try {
Cons.showLoader();
const asfData = formPlayer.model.getAsfData();
await AS.FORMS.ApiUtils.saveAsfData(asfData.data, asfData.form, asfData.uuid);
if(isShowRoute(registryRoute)) {
_doc.closeDocument = closeDocument;
new StartRegistryRoute(_doc);
} else {
await appAPI.activateDoc(asfData.uuid);
Cons.hideLoader();
......@@ -396,10 +430,11 @@ const activateDocument = async _doc => {
//закрыть окно после активации
closeDocument(_doc);
}
} catch (err) {
Cons.hideLoader();
showMessage(i18n.tr("Произошла ошибка при создании заявки, обратитесь к администратору"), 'error');
showMessage(i18n.tr("Произошла ошибка при запуске маршрута"), 'error');
console.log(err.message);
}
}
......@@ -1997,6 +2032,8 @@ class ARMFooter {
_doc.meaning = await appAPI.getDocMeaningContent(_doc.dataUUID);
if(_doc.workInfo) _doc.workInfo.dataUUID = _doc.dataUUID;
_doc.registryRoute = await getRegistryRoute(_doc.registryInfo.registryID);
_doc.formPlayer = AS.FORMS.createPlayer();
_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