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