You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Power Apps:如何查看基于提交工单的表单响应编辑历史

基于工单ID的表单响应编辑历史实现方案

一、Dataverse表结构调整

在现有响应表中新增3个字段,用于关联同一工单的所有版本记录:

  • PrimaryTicketID:类型为「唯一标识符(GUID)」,作为工单的核心关联ID,同一工单的所有版本共用此ID
  • VersionNumber:类型为「数字」,标记当前记录是该工单的第几个版本,首次提交设为1,每次编辑自动递增
  • VersionNote:类型为「文本」(可选),让用户填写编辑原因,方便追溯变更背景

二、提交与编辑的Patch逻辑调整

1. 首次提交(新建工单)

用户第一次提交表单时,生成新的GUID作为主工单ID,同时创建版本号为1的初始记录:

Patch(
    你的Dataverse表名,
    Defaults(你的Dataverse表名),
    {
        // 映射表单字段
        Title: Form1.LastSubmit.Title,
        联系人电话: Form1.LastSubmit.联系人电话,
        // 历史关联字段
        PrimaryTicketID: GUID(),
        VersionNumber: 1,
        VersionNote: "首次提交"
    }
)

2. 编辑现有工单(生成历史版本)

用户从Gallery选中记录进入编辑时,不修改原记录,而是基于原记录的PrimaryTicketID创建新版本:

Patch(
    你的Dataverse表名,
    Defaults(你的Dataverse表名),
    {
        // 继承并替换为编辑后的字段值
        Title: Form1.Updates.Title,
        联系人电话: Form1.Updates.联系人电话,
        // 复用主工单ID,版本号递增
        PrimaryTicketID: Gallery1.Selected.PrimaryTicketID,
        VersionNumber: Gallery1.Selected.VersionNumber + 1,
        VersionNote: TextInput_EditReason.Text // 绑定用户填写的编辑原因输入框
    }
)

可选优化:如果需要区分活跃/归档记录,可以新增「RecordStatus」选项字段(值为「活跃」/「归档」),首次提交设为「活跃」,创建新版本后将原记录标记为「归档」:

// 先创建新版本
Patch(...)
// 再归档原记录
Patch(
    你的Dataverse表名,
    Gallery1.Selected,
    {RecordStatus: 'Record Status'.归档}
)

三、主Gallery展示逻辑(仅显示工单最新版本)

主Gallery只需展示每个工单的最新版本,避免出现重复Tile。将Gallery的Items属性设置为:

Sort(
    ForAll(
        GroupBy(你的Dataverse表名, "PrimaryTicketID", "AllVersions"),
        First(Sort(AllVersions, VersionNumber, Descending))
    ),
    Created, Descending
)

这段代码会按PrimaryTicketID分组,每组取版本号最高的记录,再按创建时间倒序排列。

四、查看编辑历史功能实现

在主Gallery的每个Tile中添加「查看历史」按钮,点击后打开模态弹窗,弹窗内放置子Gallery展示该工单的所有版本:

1. 子Gallery的Items属性

Sort(
    Filter(你的Dataverse表名, PrimaryTicketID = Gallery1.Selected.PrimaryTicketID),
    VersionNumber, Descending
)

2. 子Gallery布局建议

  • 显示版本号:"版本 " & ThisItem.VersionNumber
  • 显示修改时间:"修改于: " & Text(ThisItem.Modified, "yyyy-mm-dd hh:mm")
  • 显示编辑原因:"备注: " & ThisItem.VersionNote
  • 可添加「查看详情」按钮,点击后跳转至表单展示该版本的完整字段内容

五、可选:版本差异对比

如果需要直观展示版本间的变更,可在弹窗中添加两个下拉框(分别选择旧版本和新版本),通过判断字段值差异高亮显示:

// 示例:对比联系人电话字段的变更
If(
    Dropdown_Old.Selected.联系人电话 <> Dropdown_New.Selected.联系人电话,
    "*" & Dropdown_Old.Selected.联系人电话 & " → " & Dropdown_New.Selected.联系人电话 & "*",
    Dropdown_Old.Selected.联系人电话
)

内容的提问来源于stack exchange,提问作者littleshareef

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 08:55:37