云服务器内容精选
-
创建“查询工单”脚本 在“我的应用”中,单击“设备维修管理系统”,进入应用。 在“WorkOrder”目录中,将鼠标放在“Script”上,单击界面上出现的“+”,在弹出菜单中选择“脚本”。 在弹窗中,选中“创建一个新脚本”,在“名称”文本框中输入“queryWorkOrder”,单击“添加”。 系统实际创建的脚本名称为“HW__queryWorkOrder”,“HW__”前缀由租户命名空间namespace决定。新建创建的脚本,默认是当前用户锁定状态,可以进行编辑保存等操作。 当编辑已有脚本时,为防止编辑时多人篡改,编辑前请单击进行锁定。 在代码编辑器中插入如下脚本代码。 脚本中红色内容请替换为实际的对象名、字段名。 import * as context from 'context'; import * as db from 'db'; import * as decimal from 'decimal';//导入decimal数据类型相关的标准库 @useObject(['HW__WorkOrder__ CS T']) @action.object({ type: "param" }) export class ActionInput { @action.param({ type: 'String' }) title: string; @action.param({ type: 'String' }) status: string; @action.param({ type: 'String' }) createdBy: string; @action.param({ type: 'Boolean' }) isFME: boolean; @action.param({ type: 'Number', min: 0 }) start: decimal.Decimal;//分页信息,表示从第几条数据开始查询 @action.param({ type: 'Number', min: 0 }) limit: decimal.Decimal;//分页信息,表示一次查询几条数据 } @action.object({ type: "param" }) export class ActionOutput { @action.param({ type: 'Any', label: 'object', isCollection: true }) workOrderList: object[]; @action.param({ type: 'String' }) total: string;//总共查到几条数据 } @action.object({ type: "method" }) export class QueryWorkOrder { @action.method({ input: 'ActionInput', output: 'ActionOutput' }) public queryWorkOrder(input: ActionInput): ActionOutput { let out = new ActionOutput(); //新建出参ActionOutput类型的实例,作为返回值 let error = new Error(); //新建错误类型的实例,用于在发生错误时保存错误信息 try { let s = db.object('HW__WorkOrder__CST'); //获取HW__WorkOrder__CST这个Object的操作实例 //condition是db标准库queryByCondition方法的入参(查询条件) let condition = { "conjunction": "AND", "conditions": [] }; //基本查询条件 condition.conditions.push({ "field": "id", "operator": "isnotnull", }); condition.conditions.push({ "field": "id", "operator": "ne", "value": "" }); //按title查询 if (input.title && input.title != "") { condition.conditions.push({ "field": "HW__title__CST",//与对象中的字段名保持一致 "operator": "contains", "value": input.title }); } //按status查询 if (input.status && input.status != "") { condition.conditions.push({ "field": "HW__status__CST",//与对象中的字段名保持一致 "operator": "eq", "value": input.status }); } //按title查询 if (input.createdBy && input.createdBy != "") { condition.conditions.push({ "field": "createdBy",//与对象中的字段名保持一致 "operator": "eq", "value": input.createdBy }); } if (input.isFME) { condition.conditions.push({ "field": "HW__assignedFme__CST", "operator": "eq", "value": context.getUserName() }); } let option = { "options": { "orderby": [{ "field": "createdDate", "order": "desc" }] } }; //如果有分页 if (input.start && input.limit) { let start = decimal.toNumber(input.start);//将decimal类型转换为接口需要的number类型 let limit = decimal.toNumber(input.limit); option.options['limit'] = limit; option.options['skip'] = start; } let workOrderList = s.queryByCondition(condition, option); for (let i in workOrderList) { if (workOrderList[i].HW__status__CST == "关闭") { workOrderList[i].isDeal = true; } } out.workOrderList = workOrderList; //调用查询符合condition条件的数据总数的接口 out.total = s.count(condition) + ""; } catch (error) { console.error(error.name, error.message); context.setError(error.name, error.message); } return out; } } 单击编辑器上方的,保存图标。 测试脚本能否正常执行。 单击编辑器上方的,执行脚本。 在界面底部,查询脚本可以不提供输入参数,直接单击测试窗口右上角执行图标。 执行成功,会在“输出”页签返回查询结果。 图1 输出结果示例 测试成功,单击编辑器上方的,启用发布脚本。
-
创建“查询工单”公共接口 在“我的应用”中,单击“设备维修管理系统”,进入应用。 单击页面下方的“服务”,进入公共接口创建页面。 单击“新建”,创建“查询工单”脚本“HW__queryWorkOrder”的公共接口。 设置接口参数信息:操作名称为“queryWorkOrder”,版本为“1.0.0”,URL为“/queryWorkOrder”,“类型”选择“脚本”,“资源”为“HW__queryWorkOrder”,方法为“POST”,然后单击“保存”。 其中,“HW__”前缀由租户命名空间namespace决定,请根据实际情况进行选择。 图2 新建queryWorkOrder接口
-
操作步骤 在“我的应用”中,单击“设备维修管理系统”,进入应用。 在“WorkOrder”中,在鼠标放在“Page”上,单击界面上出现的“+”,在弹出菜单中选择“标准页面”。 在“标签”和“名称”文本框中输入“workOrderList”,单击“添加”。 当编辑已有标准页面时,为防止编辑时多人篡改,编辑前请单击进行锁定。 定义模型“queryWorkOrder”。 在“模型视图”中,单击“新增模型”。 添加服务模型,模型名称“queryWorkOrder”,单击“下一步”。 “选择服务类型”为“公共接口”,“项目”为“设备维修管理系统”,“选择服务”为“queryWorkOrder”,单击“下一步”,再单击“确定”。 单击页面上方的,保存模型。 定义模型“workOrderInstance”。 在“模型视图”中,单击“新增模型”。 来源选择“自定义”,模型名称“workOrderInstance”,单击“下一步”。 单击模型名后的“新增节点”,新增表1所示的节点,然后单击“下一步”,再单击“确定”。 以下字段要与“工单对象”中的字段一致,其中加粗斜体内容部分要替换为当前账号对应的命名空间前缀。 表1 新增节点 字段名称 字段类型 字段描述 id Text 记录ID HW__workOrderId__CST Text 工单Id HW__priority__CST Text 优先级 HW__title__CST Text 工单标题 HW__status__CST Text 状态 HW__assignedFme__CST Text 当前处理人 createdDate 日期/时间 创单时间 HW__createdBy__CST Text 创建人 单击页面上方的,保存模型。 单击“设计视图”,从“模型视图”切换到“设计视图”。 拖拽页面标题。 从基本组件列表区拖拽一个“标题”组件到“页面内容”中。 在右侧“属性”页签中,将“标题内容”修改为“现场工单列表”。 单击页面上方的,保存页面标题。 从组件列表区拖拽一个“表格”组件到“标题”的下方。 绑定表格数据模型,并设置查询结果区域。 在“设计视图”中,选中“表格”,单击右侧“属性”页签,如图2所示。 图2 为表格绑定数据模型 在“选择模型”对话框中,选中“workOrderInstance”模型,单击“确定”。绑定模型后,系统自动将模型的所有字段添加为查询结果列。 单击上图中每个字段后的,修改列标题等字段属性。 以“工单ID”为例,其属性配置如图3所示,各个字段及修改后的列名如表2所示。 图3 设置“工单ID”列的属性 表2 修改各字段的显示属性 字段名 列标题 备注 id 记录ID 启用“隐藏”属性,即设置为true HW__workOrderId__CST 工单Id - HW__priority__CST 优先级 - HW__title__CST 工单标题 - HW__status__CST 状态 - HW__assignedFme__CST 当前处理人 - createdDate 创单时间 - HW__createdBy__CST 创建人 - 单击页面上方的,保存设置。 添加“创建工单”按钮。 选中“表格”,单击右侧“属性”页签中“表格区块”中“工具栏”后的“添加”按钮。 图4 增加查询条件区域 删除工具栏中多余的按钮,只保留“新增行”。 修改“新增行”的“显示名称”为“创建工单”。 单击页面上方的,保存设置。 创建查询条件区域。 单击“模型视图”,切换到模型视图,在表格模型“table_0_condition”后,单击编辑图标。 表格组件拖入后,页面将自动生成一个表格模型。“table_0_condition”即是在前面拖入的表格对应的表格模型,模型名可能跟拖入顺序及个数有关,一般情况下模型名称为“table_0_condition”,如果名称不一致,请根据实际情况修改。 图5 编辑表格模型 在表格模型“table_0_condition”中,单击“新增节点”,添加一个“queryInfo”节点,“数据类型”为“Any”,然后在“queryInfo”下,再单击“新增节点”添加3个子节点“createdBy”、“ title”、“status”。 图6 创建完成后的模型节点 单击页面上方的,保存设置。 单击“设计视图”,切换到设计视图,从左侧组件列表中,拖一个“表单”组件到“表格容器”的最上部(表格容器内部最上部),在“元数据表单配置向导”弹窗中,单击“取消”。 图7 向表格容器拖入表单 选中表单,在属性中“数据绑定”下,单击,为表单绑定“table_0_condition”中的“queryInfo”节点,并在提示弹窗中,单击“绑定并生成表单”,单击“确定”。 在表单中,分别选中并删除“createdBy”、“重置”按钮。 调整“title”、“status”、“保存”为1行,并删除多余分栏及容器,调整后,如图8所示。 图8 调整后表单 修改表单中输入框属性。 修改“title”的“标签”为“工单标题”。 修改“status”的“标签”修改为“状态”。 选中“保存”按钮,修改“显示名称”为“搜索”,设置单击“事件”页签,再单击,删除“提交表单”事件,然后单击“点击”后的“+”,进入事件编排页面,在“自定义动作”中,输入以下事件代码,单击“创建”。 图9 修改按钮事件代码 脚本中红色内容请替换为实际的对象名、字段名、页面名、组件ID。其中“table_0_condition”为当前表格组件的ID号,中间数字默认为“0”,如果有多次修改或创建该ID号会变化,选中表格后,在组件树上可以查看实际组件ID。 let pageInfo = $model.ref('table_0_condition').getData().pageInfo; let queryInfo = $model.ref('table_0_condition').getData().queryInfo; if (!queryInfo) { queryInfo = {}; } let queryData = { "title": queryInfo.title, "status": queryInfo.status, "createdBy": queryInfo.createdBy, "start": 0, "limit": pageInfo.pageSize }; $model.ref('queryWorkOrder').setData({ inputParam: queryData }); $model.ref('queryWorkOrder').run().then(function (data) { $model.ref('workOrderInstance').setData(data.workOrderList); pageInfo.total = parseInt(data.total); $model.ref('table_0_condition').setData({ "pageInfo": pageInfo }); }).catch(function (error) { console.log('error is', error); }); 选中“搜索”按钮所在的栏,在右侧“样式”下的“布局”中,设置上方外边距为“30”,使“搜索”按钮上下居中显示。 图10 设置搜索按钮布局样式(位置) 查询条件区域创建后,如图11所示。 图11 查询区域 单击页面上方的,保存设置。 添加页面事件代码。 在“设计视图”中选中最外层的“页面”,在右侧“事件”页签中,单击“加载”后的“+”,进入编辑动作页面。 在“自定义动作”中,输入如下脚本代码。 let pageInfo = $model.ref('table_0_condition').getData().pageInfo; let queryData = { "start": (pageInfo.curPage - 1) * pageInfo.pageSize, "limit": pageInfo.pageSize }; $model.ref('queryWorkOrder').setData({ inputParam: queryData }); $model.ref('queryWorkOrder').run().then(function (data) { $model.ref('workOrderInstance').setData(data.workOrderList); pageInfo.total = parseInt(data.total); $model.ref('table_0_condition').setData({ "pageInfo": pageInfo }); }).catch(function (error) { console.log('error is', error); }); 单击页面上方的,并退出事件编排。 添加“创建工单”按钮跳转事件,跳转事件功能是将页面跳转到“生成工单”页面。 选中“创建工单”按钮,在右侧“事件”页签中,单击“新增行”后的,进入事件编排页面。 在“自定义动作”中,输入以下事件代码,单击“保存”。 //打开创建工单页面,需要根据实际页面名称修改 context.$page.load('/besBaas/page#/HW__createWorkOrder') 单击页面上方的,并退出事件编排。
-
创建“查询工单”公共接口 在APP视图下,单击下方“服务”,进入公共接口创建页面。 单击“新建”,创建“查询工单”脚本“HW__queryWorkOrder”的公共接口。 设置接口参数信息:操作名称为“queryWorkOrder”,版本为“1.0.0”,URL为“/queryWorkOrder”,“类型”选择“脚本”,“资源”为“HW__queryWorkOrder”,方法为“POST”,然后单击“保存”。 图2 新建queryWorkOrder接口
-
创建“查询工单”脚本 在“我的应用”中,单击“设备维修管理系统”,进入应用。 在“WorkOrder”目录中,将鼠标放在“Script”上,单击界面上出现的“+”,在弹出菜单中选择“脚本”。 在弹窗中,选中“创建一个新脚本”,在“名称”文本框中输入“queryWorkOrder”,单击“添加”。 系统实际创建的脚本名称为“HW__queryWorkOrder”,“HW__”前缀由租户命名空间namespace决定。新建创建的脚本,默认是当前用户锁定状态,可以进行编辑保存等操作。 当编辑已有脚本时,为防止编辑时多人篡改,编辑前请单击进行锁定。 在代码编辑器中插入如下脚本代码。 脚本中红色内容请替换为实际的对象名、字段名。 import * as context from 'context';import * as db from 'db';import * as decimal from 'decimal';//导入decimal数据类型相关的标准库 @useObject(['HW__WorkOrder__CST']) @action.object({ type: "param" })export class ActionInput { @action.param({ type: 'String' }) title: string; @action.param({ type: 'String' }) status: string; @action.param({ type: 'String' }) createdBy: string; @action.param({ type: 'Boolean' }) isFME: boolean; @action.param({ type: 'Number', min: 0 }) start: decimal.Decimal;//分页信息,表示从第几条数据开始查询 @action.param({ type: 'Number', min: 0 }) limit: decimal.Decimal;//分页信息,表示一次查询几条数据} @action.object({ type: "param" })export class ActionOutput { @action.param({ type: 'Any', label: 'object', isCollection: true }) workOrderList: object[]; @action.param({ type: 'String' }) total: string;//总共查到几条数据} @action.object({ type: "method" })export class QueryWorkOrder { @action.method({ input: 'ActionInput', output: 'ActionOutput' }) public queryWorkOrder(input: ActionInput): ActionOutput { let out = new ActionOutput(); //新建出参ActionOutput类型的实例,作为返回值 let error = new Error(); //新建错误类型的实例,用于在发生错误时保存错误信息 try { let s = db.object('HW__WorkOrder__CST'); //获取HW__WorkOrder__CST这个Object的操作实例 //condition是db标准库queryByCondition方法的入参(查询条件) let condition = { "conjunction": "AND", "conditions": [] }; //基本查询条件 condition.conditions.push({ "field": "id", "operator": "isnotnull", }); condition.conditions.push({ "field": "id", "operator": "ne", "value": "" }); //按title查询 if (input.title && input.title != "") { condition.conditions.push({ "field": "HW__title__CST",//与对象中的字段名保持一致 "operator": "contains", "value": input.title }); } //按status查询 if (input.status && input.status != "") { condition.conditions.push({ "field": "HW__status__CST",//与对象中的字段名保持一致 "operator": "eq", "value": input.status }); } //按title查询 if (input.createdBy && input.createdBy != "") { condition.conditions.push({ "field": "createdBy",//与对象中的字段名保持一致 "operator": "eq", "value": input.createdBy }); } if (input.isFME) { condition.conditions.push({ "field": "HW__assignedFme__CST", "operator": "eq", "value": context.getUserName() }); } let option = { "options": { "orderby": [{ "field": "createdDate", "order": "desc" }] } }; //如果有分页 if (input.start && input.limit) { let start = decimal.toNumber(input.start);//将decimal类型转换为接口需要的number类型 let limit = decimal.toNumber(input.limit); option.options['limit'] = limit; option.options['skip'] = start; } let workOrderList = s.queryByCondition(condition, option); for (let i in workOrderList) { if (workOrderList[i].HW__status__CST == "关闭") { workOrderList[i].isDeal = true; } } out.workOrderList = workOrderList; //调用查询符合condition条件的数据总数的接口 out.total = s.count(condition) + ""; } catch (error) { console.error(error.name, error.message); context.setError(error.name, error.message); } return out; }} 单击编辑器上方的,保存图标。 测试脚本能否正常执行。 单击编辑器上方的,执行脚本。 在界面底部,查询脚本可以不提供输入参数,直接单击测试窗口右上角执行图标。 执行成功,会在“输出”页签返回查询结果。 图1 输出结果示例 测试成功,单击编辑器上方的,启用发布脚本。
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格