release 1.2
This commit is contained in:
@@ -1,3 +0,0 @@
|
|||||||
# medods_m3health_extension
|
|
||||||
|
|
||||||
Расширение для МИС Медодс в рамках интеграции с N3.Health
|
|
||||||
+26
-9
@@ -1,5 +1,7 @@
|
|||||||
// content.js
|
// content.js
|
||||||
console.log('[EXT][content] loaded');
|
if (isDocumentsPage()) {
|
||||||
|
console.log('[EXT][content] loaded');
|
||||||
|
}
|
||||||
|
|
||||||
const dataType = 'metaData';
|
const dataType = 'metaData';
|
||||||
const userDataType = 'userData';
|
const userDataType = 'userData';
|
||||||
@@ -38,19 +40,26 @@ window.addEventListener('message', (event) => {
|
|||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
async function loadPageData() {
|
async function loadStorageData() {
|
||||||
storageData = await chrome.storage.local.get(dataType);
|
storageData = await chrome.storage.local.get(dataType);
|
||||||
|
|
||||||
const userData = await chrome.storage.local.get(userDataType);
|
const userData = await chrome.storage.local.get(userDataType);
|
||||||
storageData.userData = userData[userDataType];
|
storageData.userData = userData[userDataType];
|
||||||
|
}
|
||||||
|
|
||||||
if (!storageData || !storageData.metaData || Object.keys(storageData.metaData).length === 0) {
|
async function updateStorageData() {
|
||||||
console.log(`[EXT][content] no data for ${dataType}, injecting...`);
|
if (!storageData.metaData || !storageData.userData) {
|
||||||
injectScript(`${dataType}.js`);
|
await loadStorageData();
|
||||||
} else {
|
|
||||||
console.log(`[EXT][content] metadata already exists in storage`);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function loadPageData() {
|
||||||
|
console.log(`[EXT][content] renew data for ${dataType}, injecting...`);
|
||||||
|
injectScript(`${dataType}.js`);
|
||||||
|
|
||||||
|
await loadStorageData();
|
||||||
|
}
|
||||||
|
|
||||||
function isDocumentsPage() {
|
function isDocumentsPage() {
|
||||||
return (
|
return (
|
||||||
location.href.includes('/clients/') &&
|
location.href.includes('/clients/') &&
|
||||||
@@ -89,6 +98,8 @@ window.addEventListener('message', async (event) => {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
await updateStorageData();
|
||||||
|
|
||||||
// Получаем данные из storage
|
// Получаем данные из storage
|
||||||
if (!storageData.metaData) {
|
if (!storageData.metaData) {
|
||||||
window.postMessage({
|
window.postMessage({
|
||||||
@@ -171,6 +182,8 @@ window.addEventListener('message', async (event) => {
|
|||||||
}
|
}
|
||||||
}, '*');
|
}, '*');
|
||||||
|
|
||||||
|
await updateStorageData();
|
||||||
|
|
||||||
// Фильтруем документы по номерам
|
// Фильтруем документы по номерам
|
||||||
const filteredDocs = storageData.metaData.docs.filter(doc =>
|
const filteredDocs = storageData.metaData.docs.filter(doc =>
|
||||||
event.data.payload.docNumbers.includes(parseInt(doc.number, 10))
|
event.data.payload.docNumbers.includes(parseInt(doc.number, 10))
|
||||||
@@ -223,10 +236,10 @@ window.addEventListener('message', async (event) => {
|
|||||||
}, 0);
|
}, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
// В content.js, в основном обработчике window.addEventListener добавьте:
|
|
||||||
|
|
||||||
// ОБРАБОТЧИК ПОДГОТОВКИ ДОКУМЕНТОВ (используем существующие метаданные)
|
// ОБРАБОТЧИК ПОДГОТОВКИ ДОКУМЕНТОВ (используем существующие метаданные)
|
||||||
if (event.data.type === 'prepareDocuments') {
|
if (event.data.type === 'prepareDocuments') {
|
||||||
|
await updateStorageData();
|
||||||
|
|
||||||
// Проверяем наличие метаданных
|
// Проверяем наличие метаданных
|
||||||
if (!storageData.metaData) {
|
if (!storageData.metaData) {
|
||||||
window.postMessage({
|
window.postMessage({
|
||||||
@@ -287,6 +300,8 @@ window.addEventListener('message', async (event) => {
|
|||||||
|
|
||||||
// ОБРАБОТЧИК ПРОВЕРКИ ПРАВ НА ОТЗЫВ
|
// ОБРАБОТЧИК ПРОВЕРКИ ПРАВ НА ОТЗЫВ
|
||||||
if (event.data.type === 'checkRevokePermission') {
|
if (event.data.type === 'checkRevokePermission') {
|
||||||
|
await updateStorageData();
|
||||||
|
|
||||||
const hasPermission = String(storageData.userData?.id) === String(event.data.payload.userIdLpu);
|
const hasPermission = String(storageData.userData?.id) === String(event.data.payload.userIdLpu);
|
||||||
|
|
||||||
window.postMessage({
|
window.postMessage({
|
||||||
@@ -328,6 +343,8 @@ window.addEventListener('message', async (event) => {
|
|||||||
|
|
||||||
// ОБРАБОТЧИК ПОИСКА ПОЛУЧАТЕЛЕЙ ПО ТЕЛЕФОНУ
|
// ОБРАБОТЧИК ПОИСКА ПОЛУЧАТЕЛЕЙ ПО ТЕЛЕФОНУ
|
||||||
if (event.data.type === 'searchRecipients') {
|
if (event.data.type === 'searchRecipients') {
|
||||||
|
await updateStorageData();
|
||||||
|
|
||||||
const data = {
|
const data = {
|
||||||
...event.data.payload,
|
...event.data.payload,
|
||||||
idPatientMis: storageData.metaData.patient.idPatientMis
|
idPatientMis: storageData.metaData.patient.idPatientMis
|
||||||
|
|||||||
+10
-1
@@ -708,10 +708,19 @@
|
|||||||
const tableRows = data.map((singing, index) => {
|
const tableRows = data.map((singing, index) => {
|
||||||
// Определяем последний статус
|
// Определяем последний статус
|
||||||
const commonStatuses = singing.statuses.filter(s => s.idPatientMis === null);
|
const commonStatuses = singing.statuses.filter(s => s.idPatientMis === null);
|
||||||
const lastStatus = commonStatuses.reduce((max, status) =>
|
let lastStatus = commonStatuses.reduce((max, status) =>
|
||||||
status.id > max.id ? status : max
|
status.id > max.id ? status : max
|
||||||
, commonStatuses[0] || singing.statuses[0]);
|
, commonStatuses[0] || singing.statuses[0]);
|
||||||
|
|
||||||
|
|
||||||
|
if (!lastStatus) {
|
||||||
|
lastStatus = {
|
||||||
|
category: 'processing',
|
||||||
|
description: 'Неизвестный статус',
|
||||||
|
created_at: singing.created_at
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const statusClass = getStatusClass(lastStatus.category);
|
const statusClass = getStatusClass(lastStatus.category);
|
||||||
const statusIcon = getStatusIcon(lastStatus.category);
|
const statusIcon = getStatusIcon(lastStatus.category);
|
||||||
const statusColor = lastStatus.category === 'completed' ? '#67C23A' :
|
const statusColor = lastStatus.category === 'completed' ? '#67C23A' :
|
||||||
|
|||||||
+1
-1
@@ -700,7 +700,7 @@
|
|||||||
addBtn.style.cssText = 'height: 24px; padding: 0 8px;';
|
addBtn.style.cssText = 'height: 24px; padding: 0 8px;';
|
||||||
|
|
||||||
// Проверяем, не добавлен ли уже этот получатель
|
// Проверяем, не добавлен ли уже этот получатель
|
||||||
const alreadyAdded = recipients.some(r => r.id === person.id);
|
const alreadyAdded = recipients.some(r => r.idPatientMis === person.idPatientMis);
|
||||||
if (alreadyAdded) {
|
if (alreadyAdded) {
|
||||||
addBtn.disabled = true;
|
addBtn.disabled = true;
|
||||||
addBtn.classList.add('is-disabled');
|
addBtn.classList.add('is-disabled');
|
||||||
|
|||||||
Reference in New Issue
Block a user