字段和表单规则 - 支持的 JavaScript 函数

我们已在全局作用域中添加了 jQuery$CS ,允许用户使用 jQuery(v 1.8.3)和 $CS 库编写代码。

您不能使用 $ 来访问使用 jQuery 的元素。

$CS 库中的 JavaScript 函数

要求

函数

示例

备注

获取字段值

$CS.getValue(field)

  • var statusId=$CS.getValue("STATUS");
  • var subject= $CS.getValue("SUBJECT");
  • var created_date=$CS.getValue("CREATEDDATE"); //这将返回一个 JavaScript Date 对象
  • var additional_hardware=$CS.getValue("RES_3_QUS_3"); //对于复选框类型的资源字段,返回所选资源的数组

要保留现有已选中的资源,请将它们存储在数组中,并向其中添加资源。然后,使用这个更新后的数组来设置资源字段。

获取请求者字段值

$CS.getValue(field.attribute)

  • var email_id=$CS.getValue("REQUESTER.EMAILID");
  • vardepartment=$CS.getValue("REQUESTER.DEPARTMENT");
  • varjob_title=$CS.getValue("REQUESTER.JOBTITLE");
  • varmobile_number=$CS.getValue("REQUESTER.MOBILE");
  • var phone =$CS.getValue("REQUESTER.CONTACTNUMBER");
  • var requester=$CS.getValue("REQUESTER");
  • var employeeID=$CS.getValue(“REQUESTER.EMPLOYEEID”);
  • var site=$CS.getValue(“REQUESTER.SITE”);
  • var is_vipuser=$CS.getValue(“REQUESTER.ISVIPUSER”);
  • var user_name=$CS.getValue("REQUESTER.USERNAME");
  • var userID=$CS.getValue("REQUESTER.USERID");
  • var login_name=$CS.getValue("REQUESTER.LOGINNAME");
  • var domain=$CS.getValue("REQUESTER.DOMAINNAME");

 

设置字段值

$CS.setValue(field,value)

  • $CS.setValue("STATUS","1"); $CS.setValue("SUBJECT","测试请求");
  • $CS.setValue("UDF_DATE1", new Date());
  • $CS.setValue("RES_3_QUS_3", ["CD RW", "External Harddisk" , "Optical Mouse"]); //将使用提供的输入替换现有资源。

 

获取文本

$CS.getText(field)

var status=$CS.getText("STATUS"); var impactdetail=$CS.getText("IMPACTDETAILS");

 

设置文本

$CS.setText(field,text)

$CS.setText("STATUS","Open");

 

添加选项

$CS.addOptions(field,options)

$CS.addOptions("STATUS",["Open","Closed"]);

请确保它们是选择类型字段,并且参数为数组。

移除选项

$CS.removeOptions(field,options)

$CS.removeOptions("STATUS",["Open","Closed"]);

与上面相同。

移除所有选项

CS.removeAllOptions(fields)

$CS.removeAllOptions(["STATUS"]); // 如果移除了状态字段的所有选项,则无法创建新请求。因为每个请求都应具有一个状态。 $CS.removeAllOptions(["STATUS","PRIORITY"]);
与上面相同。

启用字段

$CS.enableField(fields)

$CS.enableField(["LEVEL","PRIORITY","URGENCY"]);

 

禁用字段

$CS.disableField(fields)

$CS.disableField(["LEVEL","PRIORITY","URGENCY"]);

 

隐藏字段

$CS.hideField(fields)

$CS.hideField(["LEVEL","PRIORITY","URGENCY"]);

 

显示字段

$CS.showField(fields)

$CS.showField(["LEVEL","PRIORITY","URGENCY"])

 

必填字段

$CS.mandateField(fields)

$CS.mandateField(["LEVEL","PRIORITY","URGENCY"]);

 

将字段设为可选

$CS.nonMandateField(fields)

$CS.nonMandateField(["LEVEL","PRIORITY","URGENCY"]);

 

阻止表单提交

$CS.stopFormSubmission()

var status=$CS.getText("STATUS"); if(status==="Closed"){ $CS.stopFormSubmission(); }

 

查找请求人的登录状态

$CS.isRequester()

 

 

检查技术人员登录

$CS.isTechnician()

 

 

查找用户角色

$CS.hasRole(role)

$CS.hasRole("SDAdmin");

 

查找已登录用户 ID

$CS.getLoggedInUserName()

var userName= $CS.getLoggedInUserName();

 

设置字段依赖对象

$CS.setFieldDependency(dependencyObject)

var dependencyObj= {
  'FIELDS': [
    'Country',
    'City',
    'Support Rep'
  ],
  'VALUES': {
    'India': {
      'Mumbai': [
        'Ali Hassan',
        'Neha Agarwal'
      ],
      'Chennai': [
        'Guru Prasath',
        'Ramesh Kumar'
      ]
    },
    'America': {
      'California': [
        'Donald Miller',
        'Lisa Turner'
      ],
      'Chicago': [
        'Margaret Taylor',
        'Ronald Lewis'
      ]
    },
    'Russia': {}
  }
};
$CS.setFieldDependency(dependencyObj);

在这里,同一个函数既适用于两个字段依赖,也适用于三个字段依赖。此方法仅用于在附加字段之间创建依赖关系。依赖对象的格式应如下所示:应在 FIELDS 数组中按从右到左的顺序提供依赖字段,即 FIELDS 数组中第二个位置的字段应依赖于第一个位置的字段。此外,VALUES 中最右侧字段的选项应采用数组格式,而所有其他字段的选项应采用 JSON 对象格式。请为字段标签和选项标签提供正确的大小写形式。否则,依赖关系将无法正常工作。请参考上面的示例了解依赖对象格式。

设置任务

$CS.setTasks(tasksArray)

$CS.setTasks(["templateTask1","templateTask2","templateTask3"]);

 

取消设置任务

$CS.unSetTasks(tasksArray)

$CS.unSetTasks(["templateTask1","templateTask2","templateTask3"]);

 

添加描述

$CS.setDescription(description)

$CS.setDescription("应用程序在用户环境中频繁崩溃/挂起,导致系统不稳定。");
 

获取描述

$CS.getDescription()

var descriptionContent=$CS.getDescription();

 

禁用选项

$CS.disableOptions(fieldId,options)

$CS.disableOptions("STATUS",["Open","Closed"]);

 

启用选项

$CS.enableOptions(fieldId,options)

$CS.enableOptions("STATUS",["Open","Closed"]);

 

检查字段可见性

$CS.isVisible(field)

var isPriorityFieldVisiable=$CS.isVisible("PRIORITY");

 

检查资源编辑状态

$CS.isEnabled(field)

$CS.isEnabled("PRIORITY");

 

检查必填状态

$CS.isMandated(field).

$CS.isMandated("PRIORITY");

 

 

$CS.getLoggedInUserEmailId()

var userEmail= $CS.getLoggedInUserEmailId();

 

查找已登录用户的域名

$CS.getLoggedInUserDomainName()

var userDomainName= $CS.getLoggedInUserDomainName();

 

获取Server时间

$CS.getServerTime()

var ServerTime=$CS.getServerTime();

 

 

脚本执行期间的错误将显示在控制台中。

 

模块/部分

触发事件

使用场景

脚本

字段和表单规则中的自定义事件

资产详情

 

在资产详情页面中隐藏供应商字段。

$CS.findElement("asset_detailview").on("page:load",()=>{
//资产页面加载后应运行的代码
$CS.hideElement("vendor");
})
tab_

更改角色

当“更改角色”页面加载时触发。

 

$CS.executeEvent("change_roles_container","page:load",()=>{
    $CS.hideElement("change_manager");
}) ;

更改备注

当“更改备注”部分分阶段加载时触发。

在备注页面中隐藏删除按钮。

$CS.executeEvent("change_notes_container").on("page:load",()=>{
//更改备注渲染后应运行的代码
});

更改工作日志

在工作日志列表视图页面加载后触发。

在工作日志页面中隐藏删除按钮。

$CS.executeEvent("worklog_listview","page:load",()=>{//代码 })

 

任务列表视图

在任务列表视图页面加载后触发。

隐藏任务列表视图页面中的“新建”按钮。

$CS.findElement("task_listview").on("page:load",()=>{//code})

 

标签切换自定义事件

标签切换事件

当任一阶段标签发生切换时触发。

 

console.log("stage changed " + data);
  let active_tab = data;
  $CS.findElement("stages-tabs-panel").off("tab_change").on("tab_change", function (e, d) {
    active_tab = window.location.hash && window.location.hash.split("/")[0].substring(1);
    e.stopPropagation();
    $CS.findElement(active_tab + "-tabs-panel").on("tab_change", function (e, d) {
      console.log("sub tab changed " + d);
    })
    console.log(`stage tab changed ${d}`);
  })
})

隐藏变更中的任意子标签。

//变更模块
$CS.executeEvent("change_stage", "tab_change", function (e, data) {
$CS.hideElement("approvals-tab")
})

隐藏 Releases 中的任意子选项卡。

//release
$CS.executeEvent("release_stage", "tab_change", function (e, data) {
$CS.hideElement("approvals-tab")
})

listen:click 事件

服务目录

当点击任意服务类别时触发。

listen:click 事件

$CS.findElement("service_category","starts_with").on("listen:click",function(event){console.log("clicked");})

请求

当在请求详情页面点击“全部回复”按钮时触发。

 

$CS.findElement("reply_btn").on("listen:click",()=>{//code});

当在请求详情页面点击“推荐”按钮时触发。

 

$CS.findElement("recommend_btn").on("listen:click",()=>{//code});

当在请求详情页面点击“回复给”按钮时触发。

 

$CS.findElement("reply_to_btn").on("listen:click",()=>{//code});

在“请求详细信息”页面中单击“转发”按钮时触发。

 

$CS.findElement("forward_btn").on("listen:click",()=>{});

在“请求详细信息”页面中单击“重新发送”按钮时触发。

 

$CS.findElement("resend_btn").on("listen:click",()=>{});//No I18N

Outlook 页面事件

Outlook 页面

仅在 Outlook 页面上触发。此事件中会传递表单部分元数据,其中包含 Outlook 数据。

 

$CS.findElement("outlook_page").off("outlook_request_form").on("outlook_request_form",
function(evnt,data,meta){ console.log(data);$CS.setText("SUBJECT",$CS.getText("SUBJECT")+" "+data.user_email); });

字段和表单规则函数

函数

备注

参数

脚本

readAndPopulateData

读取 CSV 文件,并将 CSV 中的值作为选项填充到单行字段中。readAndPopulateData(path, map, options)

path 参数是 CSV 文件路径。CSV 文件必须放置在 custom 文件夹中。map 参数包含 CSV 与字段的映射关系。第一个键被视为主字段,并且应当唯一。options 参数为字段填充时的依赖顺序。此对象中应提供 primarykey 字段和表单规则键。若 Map 中配置的任一字段发生更改,将触发 onchange 函数。autopopulate 参数用于主键更改时;如果 autopopulate 设置为 True,则会根据 Map 提供相应的选项。

$CS.readAndPopulateData("Catalog.csv",{
"WorkOrder_Fields_UDF_CHAR3":"Incident Type",
"CATEGORY": "Service Category",
"SUBCATEGORY": "Sub Category",
"ITEM": "Sub Sub Category",
},{
dependency:["WorkOrder_Fields_UDF_CHAR3","CATEGORY","SUBCATEGORY"],
default_value:"Unable to launch MS Excel",
primarykey:"WorkOrder_Fields_UDF_CHAR3",
onChange:(a,b)=>{
//代码
}
})

referField

将 API 中的选项填充到单行字段。函数:(fieldId, entityName, options)

fieldId - 应提供 FAFR 键 entityName - 应提供实体名称。例如:("udf_pick_119", "requests", 等) options 对象类型为 select2 - 应提供带有 url 的选项。

$CS.referField("WorkOrder_Fields_UDF_CHAR1","udf_pick_119",{url:"api/v3/requests/udf_pick_119"})

 

函数名称备注参数示例
   名称/类型说明  
GetText 返回字段的文本值。 field/String 必须提供该字段的 data-cs-field。

$CS.getText("change_requester","change_view") $CS.getText("stage")

form/String getText 用于从 PageScript 表单中获取值。要从表单中获取值,此参数是必填项。
getValue 返回用于进行 API 调用的 ID。 field/String 必须提供该字段的 data-cs-field,或使用 FAFR 中建议的 FieldName。

$CS.getValue("stage") $CS.getValue("change_requester","change_view")

form/String getText 用于从 PageScript 表单中获取值。要从表单中获取值,此参数是必填项
setValue 用于使用方法中传入的 ID 更新 formValue。 field/String 必须提供该字段的 data-cs-field,或使用 FAFR 中建议的 FieldName。

$CS.setText("title","sds","change_edit")

value/String or Array 必须传入 ID。
用于取消设置/字符串  
setText 用于根据输入的文本参数为表单字段设置值。 fieldValue/字符串 必须提供该字段的 data-cs-field,或者使用 FAFR 中建议的 FieldName。  
  需要为相应字段设置的文本值。
hideElements 根据匹配到的元素属性 data-cs-field>data-name>data-id>id 隐藏字段。如果元素匹配这些属性中的任意一个,则字段将被隐藏。 field/字符串或数组 元素的 data-cs-field。

$CS.hideElement("request_type")

showElement showElement 方法根据匹配到的元素属性 data-cs-field>data-name>data-id>id 显示已隐藏的字段。如果元素匹配这些属性中的任意一个,则隐藏的字段将被显示。 field/字符串或数组 元素的 data-cs-field。

$CS.showElement("request_type")

addElement 在给定元素之前或之后追加一个元素。 selector/字符串 必须提供 jQuery 选择器。  
element/字符串 必须提供一个 HTML 字符串。
position/字符串 JQuery 函数名称,例如("after"、"before"、"html")
ajax ajax 方法用于对某个 URL 发起 get 调用,并以同步方式返回响应。 URL/字符串 需要发起 get 调用的 URL。

$CS.ajax("/api/v3/requests");

addButton addButton 函数用于在给定位置添加按钮。 selector/字符串 需要提供 jQuery 选择器。

$CS.addButton("reply_btn","samplebtn",()=>{})

name/字符串 按钮的名称。
callback/函数 单击按钮时会触发回调函数。
options/对象
class 按钮的 CSS 类
position CSS 位置,例如 before、after
executeEvent executeEvent 方法用于在 window 上绑定动态事件,即使元素不存在也可以绑定。 elementId/字符串 需要提供要触发动态事件的元素的 data-cs-field。  
eventType/String 应提供动态事件名称。  
callback/function 当动态事件被触发时,将触发回调函数。  
addTab 在请求、变更和发布模块的详情页面中添加一个选项卡。 content/String 单击选项卡时显示的内容。注意:url 可以作为内容类型,但 type 参数必须指定为 url。

$CS.addTab("hello world","html","sampleTab","history-tab")

  type/String 应根据使用场景提供 HTML 或 URL。  
  name/function 当动态事件被触发时,将触发回调函数。  
  selector/String 应提供自定义选项卡渲染完成后其后方选项卡的 data-cs-filed。  
  callback/function 单击选项卡后会调用回调函数。  
addWidget 在所选元素的 HTML 上添加一个小部件。支持 URL 类型的小部件。 content/String 单击选项卡时要显示的内容。注意:URL 可以作为内容类型,但 type 参数必须指定为 url。

$CS.addWidget("hello world","html","resourceWidget","#tab-content",{position:"html"})

type/String 应根据使用场景提供 HTML 或 URL。  
name/function 当动态事件被触发时执行的回调函数。  
selector/String jQuery 选择器  
options/object

参数

类型

说明

header

boolean

指示是否需要显示标题

位置

字符串

CSS 位置,例如 before、after 和 prepend

 
isAttachmentEmpty isAttachmentEmpty 方法用于返回表单中的附件字段是否为空。 布尔值  

$CS.isAttachmentEmpty();

collapseTab collapseTab 方法用于折叠 zcollasapanel。必须将 zcollapllapsable 面板的 data-cs-field 作为参数提供。    

$CS.collapseTab("change_description")

expandTab expandTab 方法用于展开 zcollasapanel。必须将 zcollapllapsable 面板的 data-cs-field 作为参数提供。    

$CS.expandTab("change_description");

disableField disableField 方法用于禁用表单字段。必须在参数中传入 FieldId 以禁用字段。若要禁用多个字段,可以将字段 ID 作为数组传入。    

$CS.disableField("STATUS"); $CS.disableField(["STATUS","PRIORITY"])

enableField enableField 方法用于启用已禁用的表单字段。必须在参数中传入 FieldId 才能启用字段。若要启用多个字段,可将 Field ID 作为数组传入。    

$CS.enableField("STATUS"); $CS.enableField(["STATUS","PRIORITY"])

hideSection hideSection 方法用于隐藏表单中的某个部分。必须将 data-section 作为参数传入。    

$CS.hideSection("Requester Details")

showSection showSection 方法用于显示已隐藏的部分。必须将 data-section 作为参数传入。    

$CS.showSection("Requester Details")

disableSection disableSection 方法用于禁用某个部分。必须将该部分的 data-section 作为参数提供。    

$CS.disableSection("Requester Details")

addMoreResource addMoreResource 方法用于将资源字段数据以表格格式追加到描述中。使用场景:假设创建了一个差旅申请表单。用户需要为一次行程选择酒店,因为一次行程中可能会入住多家酒店。针对这一业务需求,我们可以在可编辑表格中填充给定字段的值,并且相同的表格数据将被复制到描述中。 resource/String 应添加按钮的部分 ID

 var fields = [

  { display_name: "项目", fafrKey: "ITEM" },

  { display_name: "子类别", fafrKey: "SUBCATEGORY" },

  { display_name: "类别", fafrKey: "CATEGORY" },

  { display_name: "供应商名称", fafrKey: "WorkOrder_Fields_UDF_CHAR11" },

  { display_name: "来源", fafrKey: "WorkOrder_Fields_UDF_CHAR2" },

  { display_name: "目的地", fafrKey: "WorkOrder_Fields_UDF_CHAR3" },

];

var options = {

  section: "WorkOrder_Fields_UDF_CHAR1",

  individualValidation: false,

  resetVal: false,

  table: fields,

  addButton: function () {

    var self = this;

    var element = jQuery(

      '<div class="form-footer" style="border: 1px solid #cccccc"><input type="button" id="addButtonCUB" value="' +

        "添加" +

        '" class="btn btn-primary"></div>'

    );

    element.on("click", function () {

      self.constructRow();

    });

    $CS.findElement("#addButtonCUB").length == 0 &&

      $CS.findElement("submit").before(element);

  },

};

$CS.addMoreResource("", options);

  选项/对象

名称

类型

说明

单个

验证

布尔值

需要单独验证

section

字符串

资源节名称

按钮

对象

可传入名称和 jQuery 元素

resetVal

布尔值

重置该字段

addButton

函数
(可选)

初始时会调用 add 函数来添加按钮,该按钮用于添加表格数据。

getVal

函数

(可选)

将提供数据和键,而提取的数据必须提供给 getValue。

验证

函数

(可选)

在添加表格数据之前要执行的验证

添加行

函数

(可选)

在表格 HTML 中执行 addRow,提供了 index、data、type 参数

构造行

函数

(可选)

constructionRow 函数用于为表格构造行

var fields = [

  { display_name: "项目", fafrKey: "ITEM" },

  { display_name: "子类别", fafrKey: "SUBCATEGORY" },

  { display_name: "类别", fafrKey: "CATEGORY" },

  { display_name: "供应商名称", fafrKey: "WorkOrder_Fields_UDF_CHAR11" },

  { display_name: "来源", fafrKey: "WorkOrder_Fields_UDF_CHAR2" },

  { display_name: "目的地", fafrKey: "WorkOrder_Fields_UDF_CHAR3" },

];

var options = {

  section: "WorkOrder_Fields_UDF_CHAR1",

  individualValidation: false,

  resetVal: false,

  table: fields,

  addButton: function () {

    var self = this;

    var element = jQuery(

      '<div class="form-footer" style="border: 1px solid #cccccc"><input type="button" id="addButtonCUB" value="' +

        "添加" +

        '" class="btn btn-primary"></div>'

    );

    element.on("click", function () {

      self.constructRow();

    });

    $CS.findElement("#addButtonCUB").length == 0 &&

      $CS.findElement("submit").before(element);

  },

};

$CS.addMoreResource("", options);

getApprovalStatus getApprovalStatus 方法返回当前审批状态。注意:仅适用于请求页面。    

$CS.getApprovalStatus()

 

获取登录名

 

返回已登录用户的用户名。    

$CS.getLoggedInUserLoginName()

getDescription 以字符串形式返回 Description 值。    

$CS.getDescription();

 

字段依赖关系

 

setFieldDependency 方法用于设置字段依赖关系。例如:category、subcategory、item。   此方法仅用于在附加字段之间创建依赖关系。依赖对象的格式应如下所示:应在 FIELDS 数组中按从右到左的顺序提供依赖字段;FIELDS 数组中第二个位置的字段应依赖于第一个位置的字段。对于最右侧字段,VALUES 中的选项应采用数组格式;对于其他所有字段,VALUES 中的选项应采用 JSON 对象格式。请为字段标签和选项标签提供正确的字母大小写,否则依赖关系将无法正常工作。

var dependencyObj= {

  'FIELDS' :['Country','City','Support Rep'],           'VALUES':{

    'India':{

      'Mumbai':['Ali Hassan','Neha Agarwal'],               'Chennai':['Guru Prasath','Ramesh Kumar']          }

,  'America':{

      'California':['Donald Miller','Lisa Turner'],         'Chicago':['Margaret Taylor','Ronald Lewis']        }

,  'Russia':{

}

,  'China':{

}

,  'England':{

}

}

}

;

$CS.setFieldDependency(dependencyObj);

getApprovalStatusValue getApprovalStatusValue 方法可用于获取审批状态 ID。    

$CS.getApprovalStatusValue();

mandateField mandateField 函数用于将表单字段设为必填。必须将字段名作为参数传递。若要将多个字段设为必填,则应以数组形式传递参数。    

$CS.mandateField("DESCRIPTION") $CS.mandateField(["DESCRIPTION","ATTACHMENT"])

isMandated isMandated 方法用于判断某个表单字段是否为必填。    

$CS.isMandated("DESCRIPTION")

nonMandateField   nonMandateField 方法用于取消表单字段的必填状态。必须将字段名作为参数传递。若要将多个字段设为必填,则应以数组形式传递参数。    

$CS.nonMandateField("DESCRIPTION") $CS.nonMandateField(["DESCRIPTION","ATTACHMENT"])

exportPdf exportPdf 函数用于将任何页面导出为 PDF。 options/object

{ url: //页面 url  非必填
fileName: //pdf 的文件名 

page_settings:{ 

timeout : 100 // 超时时间(毫秒)

}

}

$CS.exportPdf({
url:"/WorkOrder.do?woMode=viewWO&woID=1",
fileName:"request_1"
})

"field:change" 事件

 

在内联编辑期间执行脚本操作。  

语法 $CS.findElement("${fieldName}").on("field:change",()=>{ 

// 字段更改时需要执行的处理 

})

 

$CS.executeEvent("change_view","form:load",()=>{
console.log($CS.getText("change_type","change_view"));
 
//  category 字段在视图模式下被编辑
    $CS.findElement("category").off("field:change").on("field:change",()=>{
        console.log($CS.getText("category","change_view"))
    })
})