云服务器内容精选
-
操作步骤 在“我的应用”中,单击“设备维修管理系统”,进入应用。 鼠标放在“Page”上,单击界面上出现的“+”,在弹出菜单中选择“标准页面”。 在“标签”和“名称”文本框中输入“workOrderProcess”,单击“添加”。 当编辑已有标准页面时,为防止编辑时多人篡改,编辑前请单击进行锁定。 单击页面右上部的,切换到手机端设计模式。 图2 切换手机端设计模式 定义模型“statusInfo”。 在“模型视图”中,单击“新增模型”。 添加自定义模型,模型名称“statusInfo”,单击“下一步”。 单击“新增节点”,为模型添加节点“id”和“HW__status__ CS T”字段,字段类型都采用默认的Text。单击“下一步”,再单击“确定”,加粗斜体内容请替换为实际命名空间前缀。 单击页面上方的,保存模型。 定义模型“statusOptions”。 在“模型视图”中,单击“新增模型”。 添加服务模型,模型名称“statusOptions”,单击“下一步”, “服务类型”选择“公共接口”,“选择项目”为“设备维修管理系统”,“搜索”中的接口选择“judgeNextStatus”,单击“下一步”,再单击“确定”。 单击页面上方的,保存模型。 拖拽页面组件。 从“模型视图”切换到“设计视图”。 从左侧基本组件列表区中,拖拽1个“表单”到“页面内容”中。 因为当前还没有定义数据源,单击“取消”元数据表单配置向导弹窗,创建一个空的表单控件。 拖拽1个“分栏”到“表单”。 修改“分栏”为1栏(1行1列)。 图3 设置分栏为1行1列 拖拽1个“下拉框”到分栏的“栏”中,然后选中下拉框,在右侧属性面板中,对下拉框进行以下配置。 添加值绑定。 单击“数据绑定”下“值绑定”的,在弹窗中选择“ statusInfo”下的“HW__status__CST”字段。 添加属性值绑定。 单击“属性值绑定”的“+”,设置“属性”为“选项”,“模型字段”为“statusOptions”下“outputParam”节点的“statusList”。 图4 属性值绑定 修改“标签”为“选择下一步操作”,并设置“选项”为“user1,user1”、“user2,user2”。 图5 设置选项值 单击页面上方的,保存设置。 定义页面事件代码。 在“设计视图”中,选中最外层的“页面”。 在右侧“事件”页签中,单击“加载”后的“+”。 在添加动作弹窗中,输入如下事件代码。 let id = Page.params.id; $model.ref("statusInfo").setData({ "id": id }); $model.ref('statusOptions').setData({ inputParam: { "id": id } }); $model.ref('statusOptions').run(); 单击“创建”,退出事件编排窗口。 单击页面上方的,保存页面。
-
页面模型分析 页面模型负责与页面组件交互,传递处理工单需要的工单ID、工单状态等信息。结合页面需求,“处理工单”对话框页面,需要创建如下模型: 表1 模型分析 模型名称 作用 详细定义 statusInfo 保存派单的参数。 自定义模型,包含的计算节点如下,这些节点与派单接口的输入参数名称一一对应。 id:工单ID HW__status__CST:下一环节状态 须知: 加粗斜体内容请替换为实际命名空间前缀。 statusOptions 判断下一步状态。 服务模型,绑定公共接口“judgeNextStatus”,调用“judgeNextStatus”脚本,判断下一步状态。
-
创建“判断下一步状态”脚本 在“我的应用”中,单击“设备维修管理系统”,进入应用。 在“WorkOrder”目录中,将鼠标放在“Script”上,单击界面上出现的“+”,在弹出菜单中选择“脚本”。 在弹窗中,选中“创建一个新脚本”,在“名称”文本框中输入“judgeNextStatus”,单击“添加”。 当编辑已有脚本时,为防止编辑时多人篡改,编辑前请单击进行锁定。 在代码编辑器中插入如下脚本代码。 脚本中红色内容请替换为实际的对象名、字段名。 //本脚本用于判断下一步状态变化 import * as db from 'db';//导入处理object相关的标准库 import * as context from 'context';//导入上下文相关的标准库 //定义入参结构,入参包含1个参数:workOrder对象,为必填字段 @action.object({ type: "param" }) export class ActionInput { @action.param({ type: 'String', required: true, label: 'String' }) id: string; } //定义出参结构,出参包含1个参数,workOrder的记录id @action.object({ type: "param" }) export class ActionOutput { @action.param({ type: 'Any', label: 'Object', isCollection: true }) statusList: object[]; } //使用数据对象HW__WorkOrder__CST @useObject(['HW__WorkOrder__CST']) @action.object({ type: "method" }) export class JudgeNextStatus { //定义接口类,接口的入参为ActionInput,出参为ActionOutput @action.method({ input: 'ActionInput', output: 'ActionOutput' }) public judgeNextStatus(input: ActionInput): ActionOutput { let out = new ActionOutput(); //新建出参ActionOutput类型的实例,作为返回值 let error = new Error(); //新建错误类型的实例,用于在发生错误时保存错误信息 try { let id = input.id; let s = db.object('HW__WorkOrder__CST'); //获取HW__WorkOrder__CST这个Object的操作实例 //查询条件 let condition = { "conjunction": "AND", "conditions": [{ "field": "id", "operator": "eq", "value": id }] }; let workOrder = s.queryByCondition(condition); if (workOrder) { if (workOrder[0].HW__status__CST == "待接单") { out.statusList = [ { 'value': "接单", 'display': "接单" }, { 'value': "拒单", 'display': "拒单" }]; } if (workOrder[0].HW__status__CST == "处理中") { out.statusList = [{ 'value': "关单", 'display': "关单" }]; } } } catch (error) { console.error(error.name, error.message); context.setError(error.name, error.message); } return out; } } 单击编辑器上方的,保存脚本。 测试脚本能否正常执行。 单击编辑器上方的,执行脚本。 在界面底部,输入如下输出参数报文,单击测试窗口右上角执行图标,“ceHg000000e0glLbDQ2K”则是派单员操作的当前工单记录的工单id,您可以在处理工单脚本的测试结果中获取一个id值。 { "id": "ceHg000000e0glLbDQ2K" } 执行成功,会在“输出”页签返回查询结果。 图1 返回下一步状态 测试成功,单击编辑器上方的,启用发布脚本。 父主题: 开发“维修工程师处理工单”功能
-
实现“按标题查询工单” 通过定义“查询”按钮的“点击”事件,可以实现根据工单标题查询工单的能力。 在“设计视图”中,选中“查询”按钮。 在右侧“事件”页签中,单击“点击”后的“+”。 在添加事件弹窗中,输入如下脚本代码。 let queryTitle = $model.ref('queryCondition').getData().title;$model.ref('queryWorkOrder').setData({ inputParam: { "title": queryTitle, "isFME": true } });$model.ref('queryWorkOrder').run().then(function (data) { if (data && data.workOrderList) { //将查询到的数据赋值给页面模型来展示 $model.ref('workOrderList').setData(data.workOrderList); }}).catch(function (error) { console.log('error is', error);}); 单击页面上方的,并退出事件编排。
-
定义页面中的事件代码 通过定义页面的on-load事件,可以实现打开页面即自动展示当前工程师的待处理工单。 定义页面事件代码。 在“设计视图”中,选中最外层的“页面”。 在右侧“事件”页签中,单击“加载”后的“+”。 在添加事件弹窗中,输入如下脚本代码。 $model.ref('queryWorkOrder').setData({inputParam: {"isFME": true}});$model.ref('queryWorkOrder').run().then(function (data) { if (data && data.workOrderList) { //将查询到的数据赋值给页面模型来展示 $model.ref('workOrderList').setData(data.workOrderList); }}).catch(function (error) { console.log('error is', error);}); 单击页面上方的,并退出事件编排。
-
实现“处理工单” 通过定义“处理”按钮的“点击”事件,可以实现接单、处理工单的能力。 在“设计视图”中,选中“处理”按钮。 在右侧“事件”页签中,单击“点击”后的“+”。 在添加事件弹窗中,输入如下脚本代码。 脚本中红色内容请替换为实际的页面名。 //获取当前组件(即button)let _component = context.$component.current;// 配置页面的bpm参数context.$page.params["bp.name"] = "HW__WorkOrderBpm";//获取当前行idlet id = _component.$attrs.row.id;let taskId = "";let instanceId = "";//遍历获取当前行内容let row = {};let workorders = $model.ref('workOrderList').getData();workorders.forEach(function (wo, idx) { if (wo.id == id) { row = wo; instanceId = wo.HW__instanceId__CST; }}); //打开处理弹框context.$dialog.popup({ title: '处理工单', page: 'HW__workOrderProcess', footerHide: false, width: 20, height: 180, okText: '提交', cancelText: '取消', params: { id: id, row: row }, onCancel: function () { }, onOk: function () { let statusInfo = { "statusInfo": $model.ref("statusInfo").getData() }; let taskData = { "action": "complete", "variables": statusInfo }; // 获取csrf token context.$utils.getCSRFToken().then(function (token) { let url = '/u-route/baas/bp/v2.0/query/tasks?flag=activeTask&rootID=' + instanceId; fetch(url, { method: 'GET', headers: { 'Content-Type': 'application/json', 'CSRF-Token': token } }).then(function (resp) { resp.json().then(function (data) { taskId = data.result.Recs[0].id; let url2 = '/u-route/baas/bp/v2.0/runtime/tasks/' + taskId; fetch(url2, { method: 'PUT', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(taskData) }).then(function (resp) { context.$message.success('处理成功'); $model.ref('queryWorkOrder').setData({ inputParam: {"isFME": true} }); $model.ref('queryWorkOrder').run().then(function (data) { if (data && data.workOrderList) { //将查询到的数据赋值给页面模型来展示 $model.ref('workOrderList').setData(data.workOrderList); } }).catch(function (error) { console.log('error is', error); }); }).catch(function (error) { console.log('error is', error); }); }); }).catch(function (error) { console.log('error is', error); }); }); }}); 单击页面上方的,并退出事件编排 。
-
定义模型并绑定页面组件 页面模型负责与页面组件交互,获取显示工单需要的数据。结合页面展示需求,可知需要创建如下模型: 表2 模型分析 模型名称 作用 详细定义 workOrderList 保存工单的基本信息。 自定义模型,包含的字段节点如下,这些节点与工单对象的字段名称相同,加粗斜体内容请替换为实际命名空间前缀: HW__title__CST:工单标题,字段类型Text。 HW__workOrderId__CST:工单ID,字段类型Text。 HW__priority__CST:工单优先级,字段类型Text。 id:记录ID,字段类型Text。 HW__recoveryTime__CST:要求解决时间,字段类型Text。 HW__faultPhenomenon__CST:现场故障说明,字段类型Text。 HW__status__CST:工单状态,字段类型Text。 HW__instanceId__CST:工单绑定的BPM实例的id,字段类型Text。 HW__arriveTime__CST:要求到达时间,字段类型Text。 isDeal:判断工单状态字段,字段类型Bool。 queryCondition 查询条件。 自定义模型,包含字段节点:title,字段类型Text,与页面上的查询条件对应。 queryWorkOrder 查询工单。 服务模型,绑定公共接口“ queryWorkOrder”,调用查询工单逻辑。 total 保存满足查询条件的记录数,作为Scroll组件滚动显示时的累计记录数。 自定义模型,包含的字段节点如下: currentTotal:当前页显示的数量,字段类型Text。 actualTotal:实际总数量,字段类型Text。 定义模型“workOrderList”。 单击“模型视图”,切换到模型视图。 在模型视图中,单击“新增模型”。 添加自定义模型,模型名称“workOrderList”,单击“下一步”。 单击“新增节点”,依次增加表2中列出的字段名称,单击“下一步”,再单击“确定”。 单击页面上方的,保存模型。 定义模型“queryCondition”。 在“模型视图”中,单击“新增模型”。 添加自定义模型,模型名称“queryCondition”,单击“下一步”。 单击“新增节点”,依次增加表2中列出的字段名称,单击“下一步”,再单击“确定”。 单击页面上方的,保存模型。 定义模型“total”。 在“模型视图”中,单击“新增模型”。 添加自定义模型,模型名称“total”,单击“下一步”。 单击“新增节点”,依次增加表2中列出的字段名称,单击“下一步”,再单击“确定”。 单击页面上方的,保存模型。 定义模型“queryWorkOrder”。 在“模型视图”中,单击“新增模型”。 添加服务模型,模型名称“queryWorkOrder”,单击“下一步”, “服务类型”选择“API”,“选择项目”为“设备维修管理系统”,“搜索”中的API,选择“queryWorkOrder”,单击“下一步”,再单击“确定”。 单击页面上方的,保存模型。 绑定模型“workOrderList”。 单击“设计视图”,从“模型视图”切换到“设计视图”。 选中“列表视图容器”标签中的“列表视图”标签(不要选择列表视图容器),为其绑定“workOrderList”。 图11 绑定数据模型 如图12所示,选中“标题:”后的标签组件label,在右侧“属性”页签,单击“+”,增加属性值绑定:设置“属性”为“文本内容”,“模型字段”为“workOrderList”下的“HW__title__CST”。 图12 为标签绑定模型 依次为其他标签添加属性值绑定,具体绑定的字段如表3所示。 表3 标签的属性值绑定 所在分栏 第一栏 第二栏 第二栏标签绑定的字段 1 标题: label workOrderList.HW__title__CST 2 单号: label workOrderList.HW__workOrderId__CST 3 状态: label workOrderList.HW__status__CST 4 要求到达时间: label workOrderList.HW__arriveTime__CST 5 要求解决时间: label workOrderList.HW__recoveryTime__CST 6 现场故障说明: label workOrderList.HW__faultPhenomenon__CST 7 优先级: label workOrderList.HW__priority__CST 为“处理”按钮添加属性值绑定,“属性”设置为“禁用”,绑定“workOrderList”的“isDeal”字段,绑定后为“workOrderList.isDeal”。 图13 添加属性值绑定 单击页面上方的,保存设置。 绑定模型“queryCondition”。 选中“请输入工单完整标题”输入框,为其进行值绑定,绑定字段为“queryCondition.title”。 图14 绑定工单标题 单击页面上方的,保存设置。
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格