Servicenow:表格中的自定义附件小部件未在提交时上传文档

Posted

技术标签:

【中文标题】Servicenow:表格中的自定义附件小部件未在提交时上传文档【英文标题】:Servicenow: Custom attachment widget in table not uploading documents onSubmit 【发布时间】:2020-04-28 05:32:31 【问题描述】:

我们的团队正在开发 ServiceNow 的纽约版本,并尝试将附件合并到表格小部件中。我们通过复制此post 中所做的内容创建了一个自定义附件小部件。该附件小部件的代码如下:

<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>

最终结果如下所示:

现在,这允许我们按行“附加”文档,这正是我们想要的。然而,一旦我们按下提交,什么也没有发生。一旦用户点击提交,我们希望为表中的每一行创建一个新案例,并将相应的附件上传并附加到每个新案例。我们在添加附件小部件之前的代码创建了案例,但现在什么都没有创建,也没有任何反应。控制台中也没有错误,所以我们不确定到底发生了什么。有什么建议吗?

【问题讨论】:

【参考方案1】:

目前您似乎没有指定任何服务器端代码来处理提交。是否有您排除的其他代码可以通过?

如果没有,您似乎需要编写一个处理程序来为您创建记录,另一个处理程序上传附件,然后将它们添加到创建的记录中。

【讨论】:

以上是关于Servicenow:表格中的自定义附件小部件未在提交时上传文档的主要内容,如果未能解决你的问题,请参考以下文章

更改 uitableviewcell 中的自定义附件视图?

QtDesigner 中的自定义 qt 小部件

PHP WordPress中的自定义小部件

Qt:QScrollArea 中的自定义小部件

树视图小部件中的自定义项目

调查 js 中矩阵日期选择器类型的自定义小部件