Servicenow: пользовательский виджет вложения в таблице, не загружающий документы на отправку - PullRequest
0 голосов
/ 10 января 2020

Наша команда разрабатывает версию ServiceNow для Нью-Йорка и пытается включить вложения в виджет таблицы. Мы создали собственный виджет вложения, скопировав то, что было сделано в этом посте . Наш код для этого виджета вложения выглядит следующим образом:

<now-attachments-list template="sp_attachment_single_line" ></now-attachments-list>
<label style="float:left;font-weight:normal;cursor:pointer;">
  <sp-attachment-button></sp-attachment-button>
  <!--<span style="padding-left:4px;">${please fill them in excel and attach it to this request.}<br>Click <a>here</a> to add an attachment</span>-->
</label>
<sp-message-dialog name="delete_attachment"
                   title=""
                   message=""
                   ok=""
                   cancel=""
                   dialog-class="delete-dialog"/>
function ($scope, $http, spUtil, nowAttachmentHandler, $rootScope, $sanitize, $window, $sce) {
  var c = this;
  c.quantity = 1;
  //$scope.data.sc_cat_item.description = $sce.trustAsHtml($scope.data.sc_cat_item.description);
  $scope.m = $scope.data.msgs;
  $scope.submitButtonMsg = $scope.m.submitMsg;
  var ah = $scope.attachmentHandler = new nowAttachmentHandler(setAttachments, function() {});
  ah.setParams('sp_portal', $scope.data._attachmentGUID, 1024 * 1024 * 24);
  function setAttachments(attachments, action) {
  $scope.attachments = attachments;
  }
  $scope.attachmentHandler.getAttachmentList();
  $scope.confirmDeleteAttachment = function(attachment, $event) {
      $rootScope.$broadcast("dialog.delete_attachment.show", {
          parms: {
              ok: function() {
                  $scope.attachmentHandler.deleteAttachment(attachment);
                  $rootScope.$broadcast("dialog.delete_attachment.close");
              },
              cancel: function() {
                  $rootScope.$broadcast("dialog.delete_attachment.close");
              },
              details: attachment.name
          }
      })
  }
}
(function() {
    var m = data.msgs = {};
    m.submitMsg = gs.getMessage("Submit");
    m.submittedMsg = gs.getMessage("Submitted");
    m.createdMsg = gs.getMessage("Created");
    m.trackMsg = gs.getMessage("track using 'Requests' in the header or");
    m.clickMsg = gs.getMessage("click here to view");
    m.dialogTitle = gs.getMessage("Delete Attachment");
    m.dialogMessage = gs.getMessage("Are you sure?");
    m.dialogOK = gs.getMessage("OK");
    m.dialogCancel = gs.getMessage("Cancel");

    if (input)
        data.sys_id = input.sys_id;
    else
        data.sys_id = $sp.getParameter("sys_id") || $sp.getParameter('sl_sys_id');
    data._attachmentGUID = gs.generateGUID();
    // portal can specify a catalog home page
    data.sc_catalog_page = $sp.getDisplayValue("sc_catalog_page") || "sc_home";
    var validatedItem = new GlideappCatalogItem.get(data.sys_id);
    if (!validatedItem.canView())
        return;
})()

В нашем табличном виджете мы встроили указанный выше виджет вложения в столбец:

<td>
  <widget id="custom-attachments"></widget>
</td>

и конечный результат выглядит следующим образом:

enter image description here

Прямо сейчас это позволяет нам «прикреплять» документы по строкам, что мы и хотим. Однако, как только мы нажмем кнопку «Отправить», ничего не происходит Как только пользователь нажимает «Отправить», мы хотим, чтобы для каждой строки в таблице было создано новое дело, и для каждого нового дела были загружены соответствующие вложения. Наш код до добавления в виджет вложения создавал кейсы, но теперь ничего не создается и ничего не происходит. В консоли также нет ошибок, поэтому мы не уверены, что именно происходит. Есть предложения?

1 Ответ

0 голосов
/ 20 января 2020

В настоящее время не похоже, что у вас есть какой-либо серверный код, предназначенный для обработки отправки. Есть ли дополнительный код, который вы исключили, который вы могли бы пропустить?

Если нет, похоже, вам нужно написать обработчик, который создает ваши записи для вас, и другой, который загружает вложения, а затем добавляет их в созданные записи.

...