@andrey4emk/npm-app-front-b24 0.1.14 → 0.1.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,9 +1,9 @@
1
- import { createElementBlock as o, openBlock as r, createElementVNode as e, createCommentVNode as f, withDirectives as g, vModelCheckbox as I, createTextVNode as p, toDisplayString as u, Fragment as D, renderList as T, normalizeClass as S } from "vue";
1
+ import { createElementBlock as o, openBlock as r, createElementVNode as e, createCommentVNode as f, withDirectives as I, vModelCheckbox as g, createTextVNode as p, toDisplayString as u, Fragment as D, renderList as T, normalizeClass as S } from "vue";
2
2
  const m = (l, t) => {
3
- const E = l.__vccOpts || l;
4
- for (const [c, n] of t)
5
- E[c] = n;
6
- return E;
3
+ const b = l.__vccOpts || l;
4
+ for (const [E, n] of t)
5
+ b[E] = n;
6
+ return b;
7
7
  }, N = {
8
8
  name: "Subscriptions",
9
9
  // props: {
@@ -73,17 +73,16 @@ const m = (l, t) => {
73
73
  }
74
74
  },
75
75
  async loadOfflineEntitiesList() {
76
- console.log("Запустили loadOfflineEntitiesList");
77
76
  let t = await $b24.callListMethod(
78
77
  "event.offline.list",
79
78
  {
80
79
  start: 0,
81
80
  auth_connector: this.auth_connector
82
81
  // clear: 0,
83
- },
84
- (E) => {
85
- console.log(`Загрузка: ${E.toFixed(0)}%`, "debug");
86
82
  }
83
+ // (progress) => {
84
+ // console.log(`Загрузка: ${progress.toFixed(0)}%`);
85
+ // }
87
86
  );
88
87
  this.entities.list = t.getData(), this.entities.total = t.getData().length;
89
88
  },
@@ -101,13 +100,13 @@ const m = (l, t) => {
101
100
  let l = this.entities.total / 50 + 1;
102
101
  console.log("Всего страниц для удаления:", l);
103
102
  for (let t = 1; t <= l; t++) {
104
- let c = (await $b24.callMethod("event.offline.list", {
103
+ let E = (await $b24.callMethod("event.offline.list", {
105
104
  start: 0
106
105
  })).getData().result.map((s) => s.PROCESS_ID).filter((s) => s);
107
- console.log("PROCESS_ID для удаления:", c);
106
+ console.log("PROCESS_ID для удаления:", E);
108
107
  let n = {};
109
- c.forEach((s, b) => {
110
- n[`clear_${b}`] = {
108
+ E.forEach((s, c) => {
109
+ n[`clear_${c}`] = {
111
110
  method: "event.offline.clear",
112
111
  params: {
113
112
  process_id: s
@@ -136,11 +135,11 @@ const m = (l, t) => {
136
135
  }, 3e3);
137
136
  },
138
137
  async entityUpdate(l) {
139
- var E, c, n, i, s, b, h;
138
+ var b, E, n, i, s, c, h;
140
139
  let t = !1;
141
- console.log("Запущена функция entityUpdate для изменения сущности с ID:", (E = l.EVENT_DATA.FIELDS) == null ? void 0 : E.ID);
140
+ console.log("Запущена функция entityUpdate для изменения сущности с ID:", (b = l.EVENT_DATA.FIELDS) == null ? void 0 : b.ID);
142
141
  try {
143
- if ((c = l.EVENT_DATA.FIELDS) != null && c.ENTITY_TYPE_ID && ((n = l.EVENT_DATA.FIELDS) == null ? void 0 : n.ENTITY_TYPE_ID) > 0) {
142
+ if ((E = l.EVENT_DATA.FIELDS) != null && E.ENTITY_TYPE_ID && ((n = l.EVENT_DATA.FIELDS) == null ? void 0 : n.ENTITY_TYPE_ID) > 0) {
144
143
  let a = await $b24.callMethod("crm.item.get", {
145
144
  entityTypeId: l.EVENT_DATA.FIELDS.ENTITY_TYPE_ID,
146
145
  id: l.EVENT_DATA.FIELDS.ID
@@ -160,7 +159,7 @@ const m = (l, t) => {
160
159
  let a = await $b24.callMethod("crm.deal.get", {
161
160
  id: (s = l.EVENT_DATA.FIELDS) == null ? void 0 : s.ID
162
161
  });
163
- if (a = a.getData().result, console.log("Данные сделки до изменения:", a), a.ID == ((b = l.EVENT_DATA.FIELDS) == null ? void 0 : b.ID)) {
162
+ if (a = a.getData().result, console.log("Данные сделки до изменения:", a), a.ID == ((c = l.EVENT_DATA.FIELDS) == null ? void 0 : c.ID)) {
164
163
  let d = await $b24.callMethod("crm.deal.update", {
165
164
  id: (h = l.EVENT_DATA.FIELDS) == null ? void 0 : h.ID,
166
165
  fields: {
@@ -184,7 +183,7 @@ const m = (l, t) => {
184
183
  }, k = { class: "Subscriptions" }, v = { key: 0 }, L = ["disabled"], C = {
185
184
  class: "switch tooltipParent",
186
185
  style: { top: "12px" }
187
- }, O = { key: 0 }, w = {
186
+ }, w = { key: 0 }, O = {
188
187
  key: 0,
189
188
  class: "main"
190
189
  }, V = ["onClick"], y = ["onClick"], M = ["href"], R = {
@@ -197,7 +196,7 @@ const m = (l, t) => {
197
196
  key: 0,
198
197
  class: "main"
199
198
  }, z = ["onClick", "disabled"], j = { key: 1 }, q = { key: 2 };
200
- function G(l, t, E, c, n, i) {
199
+ function G(l, t, b, E, n, i) {
201
200
  return r(), o("div", k, [
202
201
  t[15] || (t[15] = e("h1", null, "Страница подписок", -1)),
203
202
  e("button", {
@@ -216,18 +215,18 @@ function G(l, t, E, c, n, i) {
216
215
  disabled: l.loading
217
216
  }, "Обновить", 8, L),
218
217
  e("label", C, [
219
- g(e("input", {
218
+ I(e("input", {
220
219
  type: "checkbox",
221
220
  "onUpdate:modelValue": t[3] || (t[3] = (s) => n.autoRefresh = s),
222
221
  onChange: t[4] || (t[4] = (...s) => i.autoRefreshEntities && i.autoRefreshEntities(...s))
223
222
  }, null, 544), [
224
- [I, n.autoRefresh]
223
+ [g, n.autoRefresh]
225
224
  ]),
226
225
  t[7] || (t[7] = e("span", { class: "slider" }, null, -1)),
227
226
  t[8] || (t[8] = e("span", { class: "tooltip" }, "Автообновление каждые 3 секунды", -1))
228
227
  ])
229
228
  ]),
230
- n.entities.list.length > 0 ? (r(), o("div", O, [
229
+ n.entities.list.length > 0 ? (r(), o("div", w, [
231
230
  e("p", null, [
232
231
  e("button", {
233
232
  onClick: t[5] || (t[5] = (...s) => i.deleteOfflineEntitiesAll && i.deleteOfflineEntitiesAll(...s))
@@ -237,7 +236,7 @@ function G(l, t, E, c, n, i) {
237
236
  }, "Удалить все пустые"),
238
237
  p(" Всего измененных сущностей " + u(n.entities.total), 1)
239
238
  ]),
240
- n.entities.list.length ? (r(), o("table", w, [
239
+ n.entities.list.length ? (r(), o("table", O, [
241
240
  t[10] || (t[10] = e("thead", null, [
242
241
  e("tr", null, [
243
242
  e("th", null, "#"),
@@ -252,12 +251,12 @@ function G(l, t, E, c, n, i) {
252
251
  ])
253
252
  ], -1)),
254
253
  e("tbody", null, [
255
- (r(!0), o(D, null, T(n.entities.list, (s, b) => {
254
+ (r(!0), o(D, null, T(n.entities.list, (s, c) => {
256
255
  var h, a, d, _;
257
256
  return r(), o("tr", {
258
257
  key: s.PROCESS_ID + "-" + s.ID
259
258
  }, [
260
- e("td", null, u(b + 1), 1),
259
+ e("td", null, u(c + 1), 1),
261
260
  e("td", null, [
262
261
  e("button", {
263
262
  onClick: (A) => i.deleteOfflineEntities(s)
@@ -312,7 +311,7 @@ function G(l, t, E, c, n, i) {
312
311
  e("td", null, u(s.offline), 1),
313
312
  e("td", null, [
314
313
  e("button", {
315
- onClick: (b) => i.unbindSubscribedEvents(s)
314
+ onClick: (c) => i.unbindSubscribedEvents(s)
316
315
  }, "Отписаться от событий", 8, x)
317
316
  ])
318
317
  ]))), 128))
@@ -333,7 +332,7 @@ function G(l, t, E, c, n, i) {
333
332
  e("td", null, u(s), 1),
334
333
  e("td", null, [
335
334
  e("button", {
336
- onClick: (b) => i.subscribeToEvents(s),
335
+ onClick: (c) => i.subscribeToEvents(s),
337
336
  disabled: i.isSubscribed(s),
338
337
  class: S({ "disabled-button": i.isSubscribed(s) })
339
338
  }, "Подписаться", 10, z)
@@ -1 +1 @@
1
- (function(c,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],e):(c=typeof globalThis<"u"?globalThis:c||self,e(c.NpmAppFrontB24={},c.Vue))})(this,function(c,e){"use strict";const f=(l,t)=>{const a=l.__vccOpts||l;for(const[d,o]of t)a[d]=o;return a},V={name:"Subscriptions",data(){return{events:[],subscribedEvents:[],entities:{list:[],total:0},autoRefresh:!0,auth_connector:""}},computed:{},methods:{pause(l){return new Promise(t=>setTimeout(t,l))},async eventsList(){console.log("Запускаем eventsList");try{let l=await $b24.callMethod("events",{});this.events=l.getData().result}catch(l){console.error("Ошибка при получении списка событий:",l)}},async subscribeToEvents(l){try{await $b24.callMethod("event.bind",{event:l,event_type:"offline",auth_connector:this.auth_connector}),console.log(`Подписались на событие ${l}.`)}catch(t){console.error("Ошибка при подписке на события:",t)}await this.pause(1e3),await this.getSubscribedEvents()},async getSubscribedEvents(){try{let l=await $b24.callMethod("event.get",{});this.subscribedEvents=l.getData().result,console.log("Подписанные события:",this.subscribedEvents)}catch(l){console.error("Ошибка при получении подписанных событий:",l)}},async unbindSubscribedEvents(l){try{await $b24.callMethod("event.unbind",{event:l.event,event_type:l.offline==1?"offline":"online",auth_connector:l.connector_id}),await this.pause(1e3),await this.getSubscribedEvents()}catch(t){console.error("Ошибка при отписке от событий:",t)}},async loadOfflineEntitiesList(){console.log("Запустили loadOfflineEntitiesList");let t=await $b24.callListMethod("event.offline.list",{start:0,auth_connector:this.auth_connector},a=>{console.log(`Загрузка: ${a.toFixed(0)}%`,"debug")});this.entities.list=t.getData(),this.entities.total=t.getData().length},async deleteOfflineEntities(l){let t=await $b24.callMethod("event.offline.clear",{process_id:l.PROCESS_ID,id:[l.ID],auth_connector:this.auth_connector});console.log("Удалили сущности из оффлан событий:",t.getData()),await this.pause(1e3),await this.loadOfflineEntitiesList()},async deleteOfflineEntitiesAll(){if(!confirm("Вы уверены, что хотите удалить все НЕ обработанные сущности? Это действие необратимо!"))return;let l=this.entities.total/50+1;console.log("Всего страниц для удаления:",l);for(let t=1;t<=l;t++){let d=(await $b24.callMethod("event.offline.list",{start:0})).getData().result.map(n=>n.PROCESS_ID).filter(n=>n);console.log("PROCESS_ID для удаления:",d);let o={};d.forEach((n,E)=>{o[`clear_${E}`]={method:"event.offline.clear",params:{process_id:n}}}),console.log("batchCommands:",o);let s=await $b24.callBatch(o);console.log("Результат batch удаления сущностей:",s.getData())}await this.pause(500),await this.loadOfflineEntitiesList()},async deleteOfflineEntitiesAllEmpty(){if(!confirm("Вы уверены, что хотите удалить все пустые НЕ обработанные сущности? Это действие необратимо!"))return;let l=await $b24.callMethod("event.offline.clear",{process_id:""});console.log("Результат удаления сущностей с пустым PROCESS_ID:",l.getData())},isSubscribed(l){return this.subscribedEvents.some(t=>t.event==l)},autoRefreshEntities(){this.autoRefresh&&setTimeout(async()=>{await this.loadOfflineEntitiesList(),this.autoRefreshEntities()},3e3)},async entityUpdate(l){var a,d,o,s,n,E,m;let t=!1;console.log("Запущена функция entityUpdate для изменения сущности с ID:",(a=l.EVENT_DATA.FIELDS)==null?void 0:a.ID);try{if((d=l.EVENT_DATA.FIELDS)!=null&&d.ENTITY_TYPE_ID&&((o=l.EVENT_DATA.FIELDS)==null?void 0:o.ENTITY_TYPE_ID)>0){let r=await $b24.callMethod("crm.item.get",{entityTypeId:l.EVENT_DATA.FIELDS.ENTITY_TYPE_ID,id:l.EVENT_DATA.FIELDS.ID});if(r=r.getData().result.item,console.log("Данные смарт процесса до изменения:",r),r.id==((s=l.EVENT_DATA.FIELDS)==null?void 0:s.ID)){let i=await $b24.callMethod("crm.item.update",{entityTypeId:l.EVENT_DATA.FIELDS.ENTITY_TYPE_ID,id:l.EVENT_DATA.FIELDS.ID,fields:{title:r.title+"123"}});console.log("Результат обновления смарт процесса:",i.getData()),i.id===r.id?(console.log("Сущность успешно обновлена."),t=!0):(console.error("Ошибка при обновлении сущности."),t=!0)}else t=!0}else{let r=await $b24.callMethod("crm.deal.get",{id:(n=l.EVENT_DATA.FIELDS)==null?void 0:n.ID});if(r=r.getData().result,console.log("Данные сделки до изменения:",r),r.ID==((E=l.EVENT_DATA.FIELDS)==null?void 0:E.ID)){let i=await $b24.callMethod("crm.deal.update",{id:(m=l.EVENT_DATA.FIELDS)==null?void 0:m.ID,fields:{TITLE:r.TITLE}});console.log("Результат обновления сделки:",i.getData()),i=i.getData().result,i===!0?console.log("Сущность успешно обновлена."):(console.error("Ошибка при обновлении сущности."),t=!0)}else t=!0}}catch(r){console.error("Ошибка при обновлении сущности:",r),r=!0}t||await this.deleteOfflineEntities(l)}},watch:{},mounted(){this.getSubscribedEvents(),this.eventsList(),this.loadOfflineEntitiesList(),this.autoRefreshEntities()}},D={class:"Subscriptions"},h={key:0},p=["disabled"],T={class:"switch tooltipParent",style:{top:"12px"}},k={key:0},g={key:0,class:"main"},_=["onClick"],u=["onClick"],A=["href"],S={class:"tooltipParent",style:{}},I={class:"tooltip"},y={key:1},B={key:1},C={key:0,class:"main"},L=["onClick"],O={key:1},w={key:0,class:"main"},M=["onClick","disabled"],R={key:1},F={key:2};function P(l,t,a,d,o,s){return e.openBlock(),e.createElementBlock("div",D,[t[15]||(t[15]=e.createElementVNode("h1",null,"Страница подписок",-1)),e.createElementVNode("button",{onClick:t[0]||(t[0]=n=>l.selectTab("tab1"))},"Сущности"),e.createElementVNode("button",{onClick:t[1]||(t[1]=n=>l.selectTab("tab2"))},"События"),t[16]||(t[16]=e.createElementVNode("br",null,null,-1)),t[17]||(t[17]=e.createElementVNode("br",null,null,-1)),t[18]||(t[18]=e.createElementVNode("br",null,null,-1)),l.tabs.tab1?(e.openBlock(),e.createElementBlock("div",h,[e.createElementVNode("div",null,[e.createElementVNode("button",{onClick:t[2]||(t[2]=(...n)=>s.loadOfflineEntitiesList&&s.loadOfflineEntitiesList(...n)),disabled:l.loading},"Обновить",8,p),e.createElementVNode("label",T,[e.withDirectives(e.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":t[3]||(t[3]=n=>o.autoRefresh=n),onChange:t[4]||(t[4]=(...n)=>s.autoRefreshEntities&&s.autoRefreshEntities(...n))},null,544),[[e.vModelCheckbox,o.autoRefresh]]),t[7]||(t[7]=e.createElementVNode("span",{class:"slider"},null,-1)),t[8]||(t[8]=e.createElementVNode("span",{class:"tooltip"},"Автообновление каждые 3 секунды",-1))])]),o.entities.list.length>0?(e.openBlock(),e.createElementBlock("div",k,[e.createElementVNode("p",null,[e.createElementVNode("button",{onClick:t[5]||(t[5]=(...n)=>s.deleteOfflineEntitiesAll&&s.deleteOfflineEntitiesAll(...n))},"Удалить все"),e.createElementVNode("button",{onClick:t[6]||(t[6]=(...n)=>s.deleteOfflineEntitiesAllEmpty&&s.deleteOfflineEntitiesAllEmpty(...n))},"Удалить все пустые"),e.createTextVNode(" Всего измененных сущностей "+e.toDisplayString(o.entities.total),1)]),o.entities.list.length?(e.openBlock(),e.createElementBlock("table",g,[t[10]||(t[10]=e.createElementVNode("thead",null,[e.createElementVNode("tr",null,[e.createElementVNode("th",null,"#"),e.createElementVNode("th",null,"Удалить"),e.createElementVNode("th",null,"Обновить"),e.createElementVNode("th",null,"PROCESS_ID"),e.createElementVNode("th",null,"EVENT_NAME"),e.createElementVNode("th",null,"Ссылка"),e.createElementVNode("th",null,"EVENT_DATA"),e.createElementVNode("th",null,"who_update"),e.createElementVNode("th",null,"entity")])],-1)),e.createElementVNode("tbody",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.entities.list,(n,E)=>{var m,r,i,b;return e.openBlock(),e.createElementBlock("tr",{key:n.PROCESS_ID+"-"+n.ID},[e.createElementVNode("td",null,e.toDisplayString(E+1),1),e.createElementVNode("td",null,[e.createElementVNode("button",{onClick:U=>s.deleteOfflineEntities(n)},"Удалить",8,_)]),e.createElementVNode("td",null,[(m=n.EVENT_DATA.FIELDS)!=null&&m.ID&&(n.EVENT_NAME=="ONCRMDEALUPDATE"||n.EVENT_NAME.includes("ONCRMDYNAMICITEMUPDATE_"))?(e.openBlock(),e.createElementBlock("button",{key:0,onClick:U=>s.entityUpdate(n)},"Изменить",8,u)):e.createCommentVNode("",!0)]),e.createElementVNode("td",null,e.toDisplayString(n.PROCESS_ID),1),e.createElementVNode("td",null,e.toDisplayString(n.EVENT_NAME),1),e.createElementVNode("td",null,[(r=n.EVENT_DATA.FIELDS)!=null&&r.ID&&n.EVENT_NAME=="ONCRMDEALUPDATE"?(e.openBlock(),e.createElementBlock("a",{key:0,href:"https://repacheb.bitrix24.ru/crm/deal/details/"+((i=n.EVENT_DATA.FIELDS)==null?void 0:i.ID)+"/",target:"_blank",rel:"noopener noreferrer"},e.toDisplayString((b=n.EVENT_DATA.FIELDS)==null?void 0:b.ID),9,A)):e.createCommentVNode("",!0)]),e.createElementVNode("td",null,e.toDisplayString(n.EVENT_DATA),1),e.createElementVNode("td",null,e.toDisplayString(n.EVENT_ADDITIONAL.user_id),1),e.createElementVNode("td",S,[t[9]||(t[9]=e.createElementVNode("span",null,"Подробней",-1)),e.createElementVNode("span",I,e.toDisplayString(n),1)])])}),128))])])):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock("div",y,"Список сущностей пуст."))])):e.createCommentVNode("",!0),l.tabs.tab2?(e.openBlock(),e.createElementBlock("div",B,[e.createElementVNode("div",null,[t[12]||(t[12]=e.createElementVNode("h3",null,"Подписаны на события:",-1)),o.subscribedEvents.length?(e.openBlock(),e.createElementBlock("table",C,[t[11]||(t[11]=e.createElementVNode("thead",null,[e.createElementVNode("tr",null,[e.createElementVNode("th",null,"Событие"),e.createElementVNode("th",null,"connector_id"),e.createElementVNode("th",null,"offline"),e.createElementVNode("th",null,"Отписаться")])],-1)),e.createElementVNode("tbody",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.subscribedEvents,n=>(e.openBlock(),e.createElementBlock("tr",{key:n.id},[e.createElementVNode("td",null,e.toDisplayString(n.event),1),e.createElementVNode("td",null,e.toDisplayString(n.connector_id),1),e.createElementVNode("td",null,e.toDisplayString(n.offline),1),e.createElementVNode("td",null,[e.createElementVNode("button",{onClick:E=>s.unbindSubscribedEvents(n)},"Отписаться от событий",8,L)])]))),128))])])):(e.openBlock(),e.createElementBlock("p",O,"Подписок на события нет."))]),e.createElementVNode("div",null,[t[14]||(t[14]=e.createElementVNode("h3",null,"На какие события можно подписаться:",-1)),o.events.length?(e.openBlock(),e.createElementBlock("table",w,[t[13]||(t[13]=e.createElementVNode("thead",null,[e.createElementVNode("tr",null,[e.createElementVNode("th",null,"Событие"),e.createElementVNode("th",null,"Подписаться")])],-1)),e.createElementVNode("tbody",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.events,n=>(e.openBlock(),e.createElementBlock("tr",{key:n},[e.createElementVNode("td",null,e.toDisplayString(n),1),e.createElementVNode("td",null,[e.createElementVNode("button",{onClick:E=>s.subscribeToEvents(n),disabled:s.isSubscribed(n),class:e.normalizeClass({"disabled-button":s.isSubscribed(n)})},"Подписаться",10,M)])]))),128))])])):(e.openBlock(),e.createElementBlock("p",R,"Список событий пуст."))])])):e.createCommentVNode("",!0),l.tabs.tab3?(e.openBlock(),e.createElementBlock("div",F)):e.createCommentVNode("",!0)])}const N=f(V,[["render",P]]),Y={install(l,t={}){l.component("Subscriptions",N),t.b24&&(l.config.globalProperties.$b24=t.b24)}};c.Subscriptions=N,c.default=Y,Object.defineProperties(c,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
1
+ (function(a,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],e):(a=typeof globalThis<"u"?globalThis:a||self,e(a.NpmAppFrontB24={},a.Vue))})(this,function(a,e){"use strict";const f=(l,t)=>{const E=l.__vccOpts||l;for(const[c,o]of t)E[c]=o;return E},V={name:"Subscriptions",data(){return{events:[],subscribedEvents:[],entities:{list:[],total:0},autoRefresh:!0,auth_connector:""}},computed:{},methods:{pause(l){return new Promise(t=>setTimeout(t,l))},async eventsList(){console.log("Запускаем eventsList");try{let l=await $b24.callMethod("events",{});this.events=l.getData().result}catch(l){console.error("Ошибка при получении списка событий:",l)}},async subscribeToEvents(l){try{await $b24.callMethod("event.bind",{event:l,event_type:"offline",auth_connector:this.auth_connector}),console.log(`Подписались на событие ${l}.`)}catch(t){console.error("Ошибка при подписке на события:",t)}await this.pause(1e3),await this.getSubscribedEvents()},async getSubscribedEvents(){try{let l=await $b24.callMethod("event.get",{});this.subscribedEvents=l.getData().result,console.log("Подписанные события:",this.subscribedEvents)}catch(l){console.error("Ошибка при получении подписанных событий:",l)}},async unbindSubscribedEvents(l){try{await $b24.callMethod("event.unbind",{event:l.event,event_type:l.offline==1?"offline":"online",auth_connector:l.connector_id}),await this.pause(1e3),await this.getSubscribedEvents()}catch(t){console.error("Ошибка при отписке от событий:",t)}},async loadOfflineEntitiesList(){let t=await $b24.callListMethod("event.offline.list",{start:0,auth_connector:this.auth_connector});this.entities.list=t.getData(),this.entities.total=t.getData().length},async deleteOfflineEntities(l){let t=await $b24.callMethod("event.offline.clear",{process_id:l.PROCESS_ID,id:[l.ID],auth_connector:this.auth_connector});console.log("Удалили сущности из оффлан событий:",t.getData()),await this.pause(1e3),await this.loadOfflineEntitiesList()},async deleteOfflineEntitiesAll(){if(!confirm("Вы уверены, что хотите удалить все НЕ обработанные сущности? Это действие необратимо!"))return;let l=this.entities.total/50+1;console.log("Всего страниц для удаления:",l);for(let t=1;t<=l;t++){let c=(await $b24.callMethod("event.offline.list",{start:0})).getData().result.map(n=>n.PROCESS_ID).filter(n=>n);console.log("PROCESS_ID для удаления:",c);let o={};c.forEach((n,d)=>{o[`clear_${d}`]={method:"event.offline.clear",params:{process_id:n}}}),console.log("batchCommands:",o);let s=await $b24.callBatch(o);console.log("Результат batch удаления сущностей:",s.getData())}await this.pause(500),await this.loadOfflineEntitiesList()},async deleteOfflineEntitiesAllEmpty(){if(!confirm("Вы уверены, что хотите удалить все пустые НЕ обработанные сущности? Это действие необратимо!"))return;let l=await $b24.callMethod("event.offline.clear",{process_id:""});console.log("Результат удаления сущностей с пустым PROCESS_ID:",l.getData())},isSubscribed(l){return this.subscribedEvents.some(t=>t.event==l)},autoRefreshEntities(){this.autoRefresh&&setTimeout(async()=>{await this.loadOfflineEntitiesList(),this.autoRefreshEntities()},3e3)},async entityUpdate(l){var E,c,o,s,n,d,m;let t=!1;console.log("Запущена функция entityUpdate для изменения сущности с ID:",(E=l.EVENT_DATA.FIELDS)==null?void 0:E.ID);try{if((c=l.EVENT_DATA.FIELDS)!=null&&c.ENTITY_TYPE_ID&&((o=l.EVENT_DATA.FIELDS)==null?void 0:o.ENTITY_TYPE_ID)>0){let r=await $b24.callMethod("crm.item.get",{entityTypeId:l.EVENT_DATA.FIELDS.ENTITY_TYPE_ID,id:l.EVENT_DATA.FIELDS.ID});if(r=r.getData().result.item,console.log("Данные смарт процесса до изменения:",r),r.id==((s=l.EVENT_DATA.FIELDS)==null?void 0:s.ID)){let i=await $b24.callMethod("crm.item.update",{entityTypeId:l.EVENT_DATA.FIELDS.ENTITY_TYPE_ID,id:l.EVENT_DATA.FIELDS.ID,fields:{title:r.title+"123"}});console.log("Результат обновления смарт процесса:",i.getData()),i.id===r.id?(console.log("Сущность успешно обновлена."),t=!0):(console.error("Ошибка при обновлении сущности."),t=!0)}else t=!0}else{let r=await $b24.callMethod("crm.deal.get",{id:(n=l.EVENT_DATA.FIELDS)==null?void 0:n.ID});if(r=r.getData().result,console.log("Данные сделки до изменения:",r),r.ID==((d=l.EVENT_DATA.FIELDS)==null?void 0:d.ID)){let i=await $b24.callMethod("crm.deal.update",{id:(m=l.EVENT_DATA.FIELDS)==null?void 0:m.ID,fields:{TITLE:r.TITLE}});console.log("Результат обновления сделки:",i.getData()),i=i.getData().result,i===!0?console.log("Сущность успешно обновлена."):(console.error("Ошибка при обновлении сущности."),t=!0)}else t=!0}}catch(r){console.error("Ошибка при обновлении сущности:",r),r=!0}t||await this.deleteOfflineEntities(l)}},watch:{},mounted(){this.getSubscribedEvents(),this.eventsList(),this.loadOfflineEntitiesList(),this.autoRefreshEntities()}},D={class:"Subscriptions"},h={key:0},p=["disabled"],T={class:"switch tooltipParent",style:{top:"12px"}},k={key:0},_={key:0,class:"main"},g=["onClick"],u=["onClick"],A=["href"],S={class:"tooltipParent",style:{}},I={class:"tooltip"},y={key:1},B={key:1},C={key:0,class:"main"},L=["onClick"],O={key:1},w={key:0,class:"main"},M=["onClick","disabled"],R={key:1},F={key:2};function P(l,t,E,c,o,s){return e.openBlock(),e.createElementBlock("div",D,[t[15]||(t[15]=e.createElementVNode("h1",null,"Страница подписок",-1)),e.createElementVNode("button",{onClick:t[0]||(t[0]=n=>l.selectTab("tab1"))},"Сущности"),e.createElementVNode("button",{onClick:t[1]||(t[1]=n=>l.selectTab("tab2"))},"События"),t[16]||(t[16]=e.createElementVNode("br",null,null,-1)),t[17]||(t[17]=e.createElementVNode("br",null,null,-1)),t[18]||(t[18]=e.createElementVNode("br",null,null,-1)),l.tabs.tab1?(e.openBlock(),e.createElementBlock("div",h,[e.createElementVNode("div",null,[e.createElementVNode("button",{onClick:t[2]||(t[2]=(...n)=>s.loadOfflineEntitiesList&&s.loadOfflineEntitiesList(...n)),disabled:l.loading},"Обновить",8,p),e.createElementVNode("label",T,[e.withDirectives(e.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":t[3]||(t[3]=n=>o.autoRefresh=n),onChange:t[4]||(t[4]=(...n)=>s.autoRefreshEntities&&s.autoRefreshEntities(...n))},null,544),[[e.vModelCheckbox,o.autoRefresh]]),t[7]||(t[7]=e.createElementVNode("span",{class:"slider"},null,-1)),t[8]||(t[8]=e.createElementVNode("span",{class:"tooltip"},"Автообновление каждые 3 секунды",-1))])]),o.entities.list.length>0?(e.openBlock(),e.createElementBlock("div",k,[e.createElementVNode("p",null,[e.createElementVNode("button",{onClick:t[5]||(t[5]=(...n)=>s.deleteOfflineEntitiesAll&&s.deleteOfflineEntitiesAll(...n))},"Удалить все"),e.createElementVNode("button",{onClick:t[6]||(t[6]=(...n)=>s.deleteOfflineEntitiesAllEmpty&&s.deleteOfflineEntitiesAllEmpty(...n))},"Удалить все пустые"),e.createTextVNode(" Всего измененных сущностей "+e.toDisplayString(o.entities.total),1)]),o.entities.list.length?(e.openBlock(),e.createElementBlock("table",_,[t[10]||(t[10]=e.createElementVNode("thead",null,[e.createElementVNode("tr",null,[e.createElementVNode("th",null,"#"),e.createElementVNode("th",null,"Удалить"),e.createElementVNode("th",null,"Обновить"),e.createElementVNode("th",null,"PROCESS_ID"),e.createElementVNode("th",null,"EVENT_NAME"),e.createElementVNode("th",null,"Ссылка"),e.createElementVNode("th",null,"EVENT_DATA"),e.createElementVNode("th",null,"who_update"),e.createElementVNode("th",null,"entity")])],-1)),e.createElementVNode("tbody",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.entities.list,(n,d)=>{var m,r,i,b;return e.openBlock(),e.createElementBlock("tr",{key:n.PROCESS_ID+"-"+n.ID},[e.createElementVNode("td",null,e.toDisplayString(d+1),1),e.createElementVNode("td",null,[e.createElementVNode("button",{onClick:U=>s.deleteOfflineEntities(n)},"Удалить",8,g)]),e.createElementVNode("td",null,[(m=n.EVENT_DATA.FIELDS)!=null&&m.ID&&(n.EVENT_NAME=="ONCRMDEALUPDATE"||n.EVENT_NAME.includes("ONCRMDYNAMICITEMUPDATE_"))?(e.openBlock(),e.createElementBlock("button",{key:0,onClick:U=>s.entityUpdate(n)},"Изменить",8,u)):e.createCommentVNode("",!0)]),e.createElementVNode("td",null,e.toDisplayString(n.PROCESS_ID),1),e.createElementVNode("td",null,e.toDisplayString(n.EVENT_NAME),1),e.createElementVNode("td",null,[(r=n.EVENT_DATA.FIELDS)!=null&&r.ID&&n.EVENT_NAME=="ONCRMDEALUPDATE"?(e.openBlock(),e.createElementBlock("a",{key:0,href:"https://repacheb.bitrix24.ru/crm/deal/details/"+((i=n.EVENT_DATA.FIELDS)==null?void 0:i.ID)+"/",target:"_blank",rel:"noopener noreferrer"},e.toDisplayString((b=n.EVENT_DATA.FIELDS)==null?void 0:b.ID),9,A)):e.createCommentVNode("",!0)]),e.createElementVNode("td",null,e.toDisplayString(n.EVENT_DATA),1),e.createElementVNode("td",null,e.toDisplayString(n.EVENT_ADDITIONAL.user_id),1),e.createElementVNode("td",S,[t[9]||(t[9]=e.createElementVNode("span",null,"Подробней",-1)),e.createElementVNode("span",I,e.toDisplayString(n),1)])])}),128))])])):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock("div",y,"Список сущностей пуст."))])):e.createCommentVNode("",!0),l.tabs.tab2?(e.openBlock(),e.createElementBlock("div",B,[e.createElementVNode("div",null,[t[12]||(t[12]=e.createElementVNode("h3",null,"Подписаны на события:",-1)),o.subscribedEvents.length?(e.openBlock(),e.createElementBlock("table",C,[t[11]||(t[11]=e.createElementVNode("thead",null,[e.createElementVNode("tr",null,[e.createElementVNode("th",null,"Событие"),e.createElementVNode("th",null,"connector_id"),e.createElementVNode("th",null,"offline"),e.createElementVNode("th",null,"Отписаться")])],-1)),e.createElementVNode("tbody",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.subscribedEvents,n=>(e.openBlock(),e.createElementBlock("tr",{key:n.id},[e.createElementVNode("td",null,e.toDisplayString(n.event),1),e.createElementVNode("td",null,e.toDisplayString(n.connector_id),1),e.createElementVNode("td",null,e.toDisplayString(n.offline),1),e.createElementVNode("td",null,[e.createElementVNode("button",{onClick:d=>s.unbindSubscribedEvents(n)},"Отписаться от событий",8,L)])]))),128))])])):(e.openBlock(),e.createElementBlock("p",O,"Подписок на события нет."))]),e.createElementVNode("div",null,[t[14]||(t[14]=e.createElementVNode("h3",null,"На какие события можно подписаться:",-1)),o.events.length?(e.openBlock(),e.createElementBlock("table",w,[t[13]||(t[13]=e.createElementVNode("thead",null,[e.createElementVNode("tr",null,[e.createElementVNode("th",null,"Событие"),e.createElementVNode("th",null,"Подписаться")])],-1)),e.createElementVNode("tbody",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.events,n=>(e.openBlock(),e.createElementBlock("tr",{key:n},[e.createElementVNode("td",null,e.toDisplayString(n),1),e.createElementVNode("td",null,[e.createElementVNode("button",{onClick:d=>s.subscribeToEvents(n),disabled:s.isSubscribed(n),class:e.normalizeClass({"disabled-button":s.isSubscribed(n)})},"Подписаться",10,M)])]))),128))])])):(e.openBlock(),e.createElementBlock("p",R,"Список событий пуст."))])])):e.createCommentVNode("",!0),l.tabs.tab3?(e.openBlock(),e.createElementBlock("div",F)):e.createCommentVNode("",!0)])}const N=f(V,[["render",P]]),Y={install(l,t={}){l.component("Subscriptions",N),t.b24&&(l.config.globalProperties.$b24=t.b24)}};a.Subscriptions=N,a.default=Y,Object.defineProperties(a,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@andrey4emk/npm-app-front-b24",
3
- "version": "0.1.14",
3
+ "version": "0.1.16",
4
4
  "description": "Vue 3 Subscriptions component for Bitrix24",
5
5
  "main": "dist/npm-app-front-b24.umd.js",
6
6
  "module": "dist/npm-app-front-b24.es.js",