华为云ASTRO轻应用-组装“待处理工单”页面:实现“处理工单”

时间:2025-05-29 11:36:05

实现“处理工单”

通过定义“处理”按钮的“点击”事件,可以实现接单、处理工单的能力。

  1. 在“设计视图”中,选中“处理”按钮。
  2. 在右侧“事件”页签中,单击“点击”后的“+”。
  3. 在添加事件弹窗中,输入如下脚本代码。

    脚本中红色内容请替换为实际的页面名。

    //获取当前组件(即button)
    let _component = context.$component.current;
    // 配置页面的bpm参数
    context.$page.params["bp.name"] = "HW__WorkOrderBpm";
    //获取当前行id
    let 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__ CS T;
        }
    }); 
    //打开处理弹框
    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);
                });
            });
        }
    });

  4. 单击“创建”,退出事件编排窗口。
support.huaweicloud.com/bestpractice-astrozero/astrozero_07_1071.html