chr
2024-08-21 04504670fcafceb4e9d8a660d5db3f65bc135455
新增非审核人员的送审记录查询;
2个文件已添加
7个文件已修改
680 ■■■■■ 已修改文件
.vs/SwPlugin/v17/DocumentLayout.json 106 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
InnoSetupScript/PdmSwPlugin.iss 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
PdmSwPlugin.Common/Entity/DrawAudit/DrawAudit.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PdmSwPlugin.DrawApprove/DrawAuditHisControl.xaml 144 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PdmSwPlugin.DrawApprove/DrawAuditHisControl.xaml.cs 367 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PdmSwPlugin.DrawApprove/PdmSwPlugin.DrawApprove.csproj 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PdmSwPlugin.Main/Constant/PluginConst.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
PdmSwPlugin.Main/SwAddIn/MainControl.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PdmSwPlugin.PDM/PdmControl.xaml.cs 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.vs/SwPlugin/v17/DocumentLayout.json
@@ -3,28 +3,40 @@
  "WorkspaceRootPath": "C:\\Workspace\\PdmSwPlugin2\\",
  "Documents": [
    {
      "AbsoluteMoniker": "D:0:0:{E17EF6B6-EE83-45AA-B0C0-E3A097089E97}|PdmSwPlugin.Common\\PdmSwPlugin.Common.csproj|c:\\workspace\\pdmswplugin2\\pdmswplugin.common\\entity\\drawaudit\\drawaudit.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{E17EF6B6-EE83-45AA-B0C0-E3A097089E97}|PdmSwPlugin.Common\\PdmSwPlugin.Common.csproj|solutionrelative:pdmswplugin.common\\entity\\drawaudit\\drawaudit.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{BE239D32-7253-4D19-8793-159E98545B55}|PdmSwPlugin.DrawApprove\\PdmSwPlugin.DrawApprove.csproj|c:\\workspace\\pdmswplugin2\\pdmswplugin.drawapprove\\drawapprove.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}",
      "RelativeMoniker": "D:0:0:{BE239D32-7253-4D19-8793-159E98545B55}|PdmSwPlugin.DrawApprove\\PdmSwPlugin.DrawApprove.csproj|solutionrelative:pdmswplugin.drawapprove\\drawapprove.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{BE239D32-7253-4D19-8793-159E98545B55}|PdmSwPlugin.DrawApprove\\PdmSwPlugin.DrawApprove.csproj|c:\\workspace\\pdmswplugin2\\pdmswplugin.drawapprove\\drawapprove.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{BE239D32-7253-4D19-8793-159E98545B55}|PdmSwPlugin.DrawApprove\\PdmSwPlugin.DrawApprove.csproj|solutionrelative:pdmswplugin.drawapprove\\drawapprove.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
      "AbsoluteMoniker": "D:0:0:{6E609A8C-583B-4607-A510-FA84218C4A31}|PdmSwPlugin.Main\\PdmSwPlugin.Main.csproj|C:\\Workspace\\PdmSwPlugin2\\pdmswplugin.main\\constant\\pluginconst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{6E609A8C-583B-4607-A510-FA84218C4A31}|PdmSwPlugin.Main\\PdmSwPlugin.Main.csproj|solutionrelative:pdmswplugin.main\\constant\\pluginconst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{1033FBD8-8700-4CD0-808A-BB97DB057A6B}|PdmSwPlugin.PDM\\PdmSwPlugin.PDM.csproj|c:\\workspace\\pdmswplugin2\\pdmswplugin.pdm\\pdmcontrol.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{1033FBD8-8700-4CD0-808A-BB97DB057A6B}|PdmSwPlugin.PDM\\PdmSwPlugin.PDM.csproj|solutionrelative:pdmswplugin.pdm\\pdmcontrol.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{E17EF6B6-EE83-45AA-B0C0-E3A097089E97}|PdmSwPlugin.Common\\PdmSwPlugin.Common.csproj|c:\\workspace\\pdmswplugin2\\pdmswplugin.common\\entity\\drawaudit\\drawauditorder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{E17EF6B6-EE83-45AA-B0C0-E3A097089E97}|PdmSwPlugin.Common\\PdmSwPlugin.Common.csproj|solutionrelative:pdmswplugin.common\\entity\\drawaudit\\drawauditorder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
      "AbsoluteMoniker": "D:0:0:{BE239D32-7253-4D19-8793-159E98545B55}|PdmSwPlugin.DrawApprove\\PdmSwPlugin.DrawApprove.csproj|c:\\workspace\\pdmswplugin2\\pdmswplugin.drawapprove\\drawaudithiscontrol.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{BE239D32-7253-4D19-8793-159E98545B55}|PdmSwPlugin.DrawApprove\\PdmSwPlugin.DrawApprove.csproj|solutionrelative:pdmswplugin.drawapprove\\drawaudithiscontrol.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{6E609A8C-583B-4607-A510-FA84218C4A31}|PdmSwPlugin.Main\\PdmSwPlugin.Main.csproj|c:\\workspace\\pdmswplugin2\\pdmswplugin.main\\constant\\pluginconst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{6E609A8C-583B-4607-A510-FA84218C4A31}|PdmSwPlugin.Main\\PdmSwPlugin.Main.csproj|solutionrelative:pdmswplugin.main\\constant\\pluginconst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
      "AbsoluteMoniker": "D:0:0:{E17EF6B6-EE83-45AA-B0C0-E3A097089E97}|PdmSwPlugin.Common\\PdmSwPlugin.Common.csproj|C:\\Workspace\\PdmSwPlugin2\\pdmswplugin.common\\entity\\drawaudit\\drawaudit.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{E17EF6B6-EE83-45AA-B0C0-E3A097089E97}|PdmSwPlugin.Common\\PdmSwPlugin.Common.csproj|solutionrelative:pdmswplugin.common\\entity\\drawaudit\\drawaudit.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{6E609A8C-583B-4607-A510-FA84218C4A31}|PdmSwPlugin.Main\\PdmSwPlugin.Main.csproj|c:\\workspace\\pdmswplugin2\\pdmswplugin.main\\swaddin\\maincontrol.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{6E609A8C-583B-4607-A510-FA84218C4A31}|PdmSwPlugin.Main\\PdmSwPlugin.Main.csproj|solutionrelative:pdmswplugin.main\\swaddin\\maincontrol.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{6E609A8C-583B-4607-A510-FA84218C4A31}|PdmSwPlugin.Main\\PdmSwPlugin.Main.csproj|c:\\workspace\\pdmswplugin2\\pdmswplugin.main\\maincontrol.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{6E609A8C-583B-4607-A510-FA84218C4A31}|PdmSwPlugin.Main\\PdmSwPlugin.Main.csproj|solutionrelative:pdmswplugin.main\\maincontrol.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{BE239D32-7253-4D19-8793-159E98545B55}|PdmSwPlugin.DrawApprove\\PdmSwPlugin.DrawApprove.csproj|C:\\Workspace\\PdmSwPlugin2\\pdmswplugin.drawapprove\\drawapprove.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{BE239D32-7253-4D19-8793-159E98545B55}|PdmSwPlugin.DrawApprove\\PdmSwPlugin.DrawApprove.csproj|solutionrelative:pdmswplugin.drawapprove\\drawapprove.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{BE239D32-7253-4D19-8793-159E98545B55}|PdmSwPlugin.DrawApprove\\PdmSwPlugin.DrawApprove.csproj|C:\\Workspace\\PdmSwPlugin2\\pdmswplugin.drawapprove\\drawapprove.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}",
      "RelativeMoniker": "D:0:0:{BE239D32-7253-4D19-8793-159E98545B55}|PdmSwPlugin.DrawApprove\\PdmSwPlugin.DrawApprove.csproj|solutionrelative:pdmswplugin.drawapprove\\drawapprove.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{E17EF6B6-EE83-45AA-B0C0-E3A097089E97}|PdmSwPlugin.Common\\PdmSwPlugin.Common.csproj|C:\\Workspace\\PdmSwPlugin2\\pdmswplugin.common\\entity\\drawaudit\\drawauditorder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{E17EF6B6-EE83-45AA-B0C0-E3A097089E97}|PdmSwPlugin.Common\\PdmSwPlugin.Common.csproj|solutionrelative:pdmswplugin.common\\entity\\drawaudit\\drawauditorder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    }
  ],
  "DocumentGroupContainers": [
@@ -38,19 +50,57 @@
          "Children": [
            {
              "$type": "Document",
              "DocumentIndex": 1,
              "DocumentIndex": 2,
              "Title": "DrawAuditHisControl.xaml.cs",
              "DocumentMoniker": "C:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.DrawApprove\\DrawAuditHisControl.xaml.cs",
              "RelativeDocumentMoniker": "PdmSwPlugin.DrawApprove\\DrawAuditHisControl.xaml.cs",
              "ToolTip": "C:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.DrawApprove\\DrawAuditHisControl.xaml.cs",
              "RelativeToolTip": "PdmSwPlugin.DrawApprove\\DrawAuditHisControl.xaml.cs",
              "ViewState": "AQIAABYBAAAAAAAAAAAiwCgBAAAgAAAA",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2024-08-21T08:12:02.317Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 4,
              "Title": "MainControl.cs",
              "DocumentMoniker": "C:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Main\\SwAddIn\\MainControl.cs",
              "RelativeDocumentMoniker": "PdmSwPlugin.Main\\SwAddIn\\MainControl.cs",
              "ToolTip": "C:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Main\\SwAddIn\\MainControl.cs",
              "RelativeToolTip": "PdmSwPlugin.Main\\SwAddIn\\MainControl.cs",
              "ViewState": "AQIAAHAAAAAAAAAAAAAAAHgAAABHAAAA",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2024-08-21T07:59:50.181Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 5,
              "Title": "MainControl.xaml.cs",
              "DocumentMoniker": "C:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Main\\MainControl.xaml.cs",
              "RelativeDocumentMoniker": "PdmSwPlugin.Main\\MainControl.xaml.cs",
              "ToolTip": "C:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Main\\MainControl.xaml.cs",
              "RelativeToolTip": "PdmSwPlugin.Main\\MainControl.xaml.cs",
              "ViewState": "AQIAAKAAAAAAAAAAAAAowBEAAAAAAAAA",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2024-08-21T07:59:44.275Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 7,
              "Title": "DrawApprove.xaml",
              "DocumentMoniker": "C:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.DrawApprove\\DrawApprove.xaml",
              "RelativeDocumentMoniker": "PdmSwPlugin.DrawApprove\\DrawApprove.xaml",
              "ToolTip": "C:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.DrawApprove\\DrawApprove.xaml",
              "RelativeToolTip": "PdmSwPlugin.DrawApprove\\DrawApprove.xaml",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|",
              "WhenOpened": "2024-08-20T03:02:33.757Z",
              "EditorCaption": ""
              "WhenOpened": "2024-08-20T03:02:33.757Z"
            },
            {
              "$type": "Document",
              "DocumentIndex": 4,
              "DocumentIndex": 8,
              "Title": "DrawAuditOrder.cs",
              "DocumentMoniker": "C:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Common\\Entity\\DrawAudit\\DrawAuditOrder.cs",
              "RelativeDocumentMoniker": "PdmSwPlugin.Common\\Entity\\DrawAudit\\DrawAuditOrder.cs",
@@ -58,12 +108,11 @@
              "RelativeToolTip": "PdmSwPlugin.Common\\Entity\\DrawAudit\\DrawAuditOrder.cs",
              "ViewState": "AQIAAAAAAAAAAAAAAAAAAAkAAAAFAAAA",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2024-08-20T02:13:49.926Z",
              "EditorCaption": ""
              "WhenOpened": "2024-08-20T02:13:49.926Z"
            },
            {
              "$type": "Document",
              "DocumentIndex": 5,
              "DocumentIndex": 0,
              "Title": "PluginConst.cs",
              "DocumentMoniker": "C:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Main\\Constant\\PluginConst.cs",
              "RelativeDocumentMoniker": "PdmSwPlugin.Main\\Constant\\PluginConst.cs",
@@ -76,39 +125,38 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 3,
              "DocumentIndex": 1,
              "Title": "PdmControl.xaml.cs",
              "DocumentMoniker": "C:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.PDM\\PdmControl.xaml.cs",
              "RelativeDocumentMoniker": "PdmSwPlugin.PDM\\PdmControl.xaml.cs",
              "ToolTip": "C:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.PDM\\PdmControl.xaml.cs",
              "RelativeToolTip": "PdmSwPlugin.PDM\\PdmControl.xaml.cs",
              "ViewState": "AQIAAMoEAAAAAAAAAAApwNoEAAAAAAAA",
              "ViewState": "AQIAAFMEAAAAAAAAAAAAALEGAAAAAAAA",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2024-08-18T08:40:17.518Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 2,
              "DocumentIndex": 6,
              "Title": "DrawApprove.xaml.cs",
              "DocumentMoniker": "C:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.DrawApprove\\DrawApprove.xaml.cs",
              "RelativeDocumentMoniker": "PdmSwPlugin.DrawApprove\\DrawApprove.xaml.cs",
              "ToolTip": "C:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.DrawApprove\\DrawApprove.xaml.cs",
              "RelativeToolTip": "PdmSwPlugin.DrawApprove\\DrawApprove.xaml.cs",
              "ViewState": "AQIAABoBAAAAAAAAAAAcwCUBAAAdAAAA",
              "ViewState": "AQIAAAEBAAAAAAAAAAAkwBcBAAA2AAAA",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2024-08-18T08:30:42.283Z",
              "EditorCaption": ""
              "WhenOpened": "2024-08-18T08:30:42.283Z"
            },
            {
              "$type": "Document",
              "DocumentIndex": 0,
              "DocumentIndex": 3,
              "Title": "DrawAudit.cs",
              "DocumentMoniker": "C:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Common\\Entity\\DrawAudit\\DrawAudit.cs",
              "RelativeDocumentMoniker": "PdmSwPlugin.Common\\Entity\\DrawAudit\\DrawAudit.cs",
              "ToolTip": "C:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Common\\Entity\\DrawAudit\\DrawAudit.cs",
              "RelativeToolTip": "PdmSwPlugin.Common\\Entity\\DrawAudit\\DrawAudit.cs",
              "ViewState": "AQIAAAYAAAAAAAAAAAAAABAAAAAfAAAA",
              "ViewState": "AQIAAAYAAAAAAAAAAAAAABAAAAAWAAAA",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2024-08-18T08:28:05.337Z",
              "EditorCaption": ""
InnoSetupScript/PdmSwPlugin.iss
@@ -7,7 +7,7 @@
; 自动更新程序路径
#define AutoUpdaterDir = "C:\Workspace\PdmSwPlugin2\PdmSw\bin\x64\Release\Release\AutoUpdater\"
; 版本
#define Version = "0.0.0.35"
#define Version = "_TEST"
; 生成的Installer存放路径
#define OutPutDir = "Z:\Main\Workspace\Output"
PdmSwPlugin.Common/Entity/DrawAudit/DrawAudit.cs
@@ -12,6 +12,14 @@
            set { _id = value; }
        }
        private string _orderId;
        public string orderId
        {
            get => _orderId;
            set => RaiseAndSetIfChanged(ref _orderId, value);
        }
        private string _orderCode;
        public string orderCode
@@ -50,6 +58,14 @@
            set => RaiseAndSetIfChanged(ref _requestUser, value);
        }
        private string _requestUserId;
        public string requestUserId
        {
            get { return _requestUserId; }
            set => RaiseAndSetIfChanged(ref _requestUserId, value);
        }
        private string _auditUser;
        public string auditUser
PdmSwPlugin.DrawApprove/DrawAuditHisControl.xaml
New file
@@ -0,0 +1,144 @@
<UserControl x:Class="PdmSwPlugin.DrawApprove.DrawAuditHisControl"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             xmlns:treeData="clr-namespace:PdmSwPlugin.Common.Control.TreeGrid;assembly=PdmSwPlugin.Common"
             xmlns:system="clr-namespace:PdmSwPlugin.DrawApprove"
             d:DataContext="{d:DesignInstance Type=system:DrawAuditHisControl}"
             mc:Ignorable="d"
             d:DesignHeight="900" d:DesignWidth="800">
    <UserControl.Resources>
        <ResourceDictionary>
            <!-- 底部状态栏样式 -->
            <Style x:Key="StatusBarTextBox" TargetType="TextBox">
                <Setter Property="Control.Background" Value="#FFF1EDED"/>
                <Setter Property="Control.BorderThickness" Value="0"/>
                <Setter Property="TextBlock.TextTrimming" Value="CharacterEllipsis"/>
            </Style>
            <Style x:Key ="statusSlot" TargetType="TextBlock">
                <Setter Property="Foreground" Value="White"/>
                <Style.Triggers>
                    <DataTrigger Binding="{Binding status}" Value="submitted">
                        <Setter Property="Text" Value="已提交"/>
                        <Setter Property="Foreground" Value="Black"/>
                        <Setter Property="Background" Value="Orange"/>
                    </DataTrigger>
                    <DataTrigger Binding="{Binding status}" Value="rejected">
                        <Setter Property="Text" Value="已驳回"/>
                        <Setter Property="Foreground" Value="White"/>
                        <Setter Property="Background" Value="Red"/>
                    </DataTrigger>
                    <DataTrigger Binding="{Binding status}" Value="resubmitted">
                        <Setter Property="Text" Value="重新提交"/>
                        <Setter Property="Foreground" Value="Black"/>
                        <Setter Property="Background" Value="Orange"/>
                    </DataTrigger>
                    <DataTrigger Binding="{Binding status}" Value="completed">
                        <Setter Property="Text" Value="已完成"/>
                        <Setter Property="Foreground" Value="Black"/>
                        <Setter Property="Background" Value="Green"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
            <treeData:TreeItemDataConverter x:Key="TreeItemDataConverter"/>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="/PdmSwPlugin.Common;component/Control/TreeGrid/Themes/TreeGrid.xaml"/>
                <ResourceDictionary Source="/PdmSwPlugin.Common;component/Control/TreeGrid/Themes/TreeItemContentControl.xaml"/>
                <ResourceDictionary Source="/PdmSwPlugin.Common;component/Style/ToolBar.xaml"/>
                <ResourceDictionary Source="/PdmSwPlugin.Common;component/Style/LinkButton.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </UserControl.Resources>
    <AdornerDecorator>
        <Grid x:Name="sb">
            <DockPanel x:Name="content" LastChildFill="True">
                <ToolBarTray DockPanel.Dock="Top" Background="#FFF" ToolBarTray.IsLocked="True" >
                    <ToolBar Style="{StaticResource CommonToolBar}" ToolBar.OverflowMode="Never" Band="1" BandIndex="1" Height="30" Background="#FFF">
                        <Button ToolTip="刷新" Content="&#xe631;刷新" FontFamily="{StaticResource iconfont}" FontSize="16"
                    Click="Button_Click"/>
                    </ToolBar>
                </ToolBarTray>
                <!-- 树结构 -->
                <treeData:TreeDataGrid x:Name="treeDataGrid" DockPanel.Dock="Top"
                                       ColumnWidth="*"
                               ItemsSource="{Binding dataSource,Converter={StaticResource TreeItemDataConverter},ConverterParameter=children}"
                                    AutoGenerateColumns="False"
                                    CanUserAddRows="False"
                                    CanUserSortColumns="False"
                                    CanUserDeleteRows="False">
                    <treeData:TreeDataGrid.Columns>
                        <DataGridTemplateColumn Width="25">
                            <DataGridTemplateColumn.Header>
                                <CheckBox Checked="GlobalCheckBox_Checked" Unchecked="GlobalCheckBox_Checked" />
                            </DataGridTemplateColumn.Header>
                            <DataGridTemplateColumn.CellTemplate>
                                <DataTemplate>
                                    <CheckBox DataContext="{Binding Data}"
                      IsChecked="{Binding selected}" Checked="SingleCheckBox_Event" Unchecked="SingleCheckBox_Event"/>
                                </DataTemplate>
                            </DataGridTemplateColumn.CellTemplate>
                        </DataGridTemplateColumn>
                        <DataGridTemplateColumn Header="物料编号" IsReadOnly="True">
                            <DataGridTemplateColumn.CellTemplate>
                                <DataTemplate>
                                    <StackPanel Orientation="Horizontal">
                                        <TextBox IsReadOnly="True" BorderThickness="0" HorizontalContentAlignment="Stretch" Text="{Binding Data.materialCode,Mode=OneWay}"/>
                                    </StackPanel>
                                </DataTemplate>
                            </DataGridTemplateColumn.CellTemplate>
                        </DataGridTemplateColumn>
                        <DataGridTextColumn Header="流水单号" Width="80" IsReadOnly="True" Binding="{Binding Data.orderCode}"/>
                        <DataGridTextColumn Header="前一申请人" Width="80" IsReadOnly="True" Binding="{Binding Data.requestUser}"/>
                        <DataGridTextColumn Header="前一审核人" Width="80" IsReadOnly="True" Binding="{Binding Data.auditUser}"/>
                        <DataGridTextColumn Header="提交时间" Width="130" IsReadOnly="True" Binding="{Binding Data.updateTime}"/>
                        <DataGridTemplateColumn Header="状态" Width="60" IsReadOnly="True">
                            <DataGridTemplateColumn.CellTemplate>
                                <DataTemplate>
                                    <TextBlock Style="{StaticResource statusSlot}" DataContext="{Binding Data}"
                                               MouseLeftButtonDown="TextBlock_MouseLeftButtonDown"/>
                                </DataTemplate>
                            </DataGridTemplateColumn.CellTemplate>
                        </DataGridTemplateColumn>
                        <DataGridTemplateColumn Header="操作" Width="200" IsReadOnly="True">
                            <DataGridTemplateColumn.CellTemplate>
                                <DataTemplate>
                                    <StackPanel Orientation="Horizontal">
                                        <Button Style="{StaticResource LinkButton}" DataContext="{Binding Data}" Click="Detail_Click">审核详情</Button>
                                    </StackPanel>
                                </DataTemplate>
                            </DataGridTemplateColumn.CellTemplate>
                        </DataGridTemplateColumn>
                    </treeData:TreeDataGrid.Columns>
                </treeData:TreeDataGrid>
                <StatusBar DockPanel.Dock="Bottom" Height="20">
                    <StatusBarItem >
                        <TextBox x:Name="activeDocPath" IsReadOnly="True" Style="{StaticResource StatusBarTextBox}" Text="{Binding SelectBomText}"/>
                    </StatusBarItem>
                    <Separator/>
                    <StatusBarItem>
                        <TextBox x:Name="statusBarText" IsReadOnly="True" Style="{StaticResource StatusBarTextBox}" Text="{Binding StatusBarText}"/>
                    </StatusBarItem>
                </StatusBar>
                <Border></Border>
                <!--<TextBox x:Name="console"></TextBox>-->
            </DockPanel>
        </Grid>
    </AdornerDecorator>
</UserControl>
PdmSwPlugin.DrawApprove/DrawAuditHisControl.xaml.cs
New file
@@ -0,0 +1,367 @@
using log4net;
using PdmSwPlugin.Commmon.Control;
using PdmSwPlugin.Commmon.Util.UI;
using PdmSwPlugin.Common;
using PdmSwPlugin.Common.Entity.DrawAudit;
using PdmSwPlugin.Common.Entity.Pdm;
using PdmSwPlugin.Common.Entity.System;
using PdmSwPlugin.Common.Interface;
using PdmSwPlugin.Common.Setting;
using PdmSwPlugin.Common.Util;
using PdmSwPlugin.Common.Util.Http;
using SolidWorks.Interop.sldworks;
using SolidWorks.Interop.swconst;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.IO;
using System.Linq;
using System.Net.Http;
using System.Runtime.CompilerServices;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Markup;
namespace PdmSwPlugin.DrawApprove
{
    /// <summary>
    /// UserControl1.xaml 的交互逻辑
    /// </summary>
    [PdmSwPlugin(Title = "送审记录")]
    public partial class DrawAuditHisControl : UserControl, ISwAppSetter, INotifyPropertyChanged
    {
        #region ...
        public virtual event PropertyChangedEventHandler PropertyChanged;
        public virtual void RaisePropertyChanged(string name)
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
        }
        public void RaiseAndSetIfChanged<T>(ref T old, T @new, [CallerMemberName] string propertyName = null)
        {
            old = @new;
            if (propertyName != null)
            {
                RaisePropertyChanged(propertyName);
            }
        }
        #endregion
        private static ILog Logger = LogManager.GetLogger("DrawAuditHis");
        SldWorks SwApp;
        SldWorks ISwAppSetter.SwApp => SwApp;
        private readonly HttpClient Client;
        private HttpClientCreator clientCreator { get; set; }
        /// <summary>
        /// 全部BOM树状结构
        /// </summary>
        private ObservableCollection<DrawAudit> _dataSource = new ObservableCollection<DrawAudit>();
        public ObservableCollection<DrawAudit> dataSource
        {
            get => _dataSource;
            set
            {
                RaiseAndSetIfChanged(ref _dataSource, value);
                if (value == null)
                {
                    StatusBarText = $"共 0 条";
                }
                else
                {
                    StatusBarText = $"共 {value.Count} 条";
                }
                RefreshSelectedCount();
            }
        }
        private string _SelectBomText = "已选中 0 条";
        public string SelectBomText
        {
            get => _SelectBomText;
            set => RaiseAndSetIfChanged(ref _SelectBomText, value);
        }
        private string _StatusBarText = "共 0 条";
        public string StatusBarText
        {
            get { return _StatusBarText; }
            set => RaiseAndSetIfChanged(ref _StatusBarText, value);
        }
        public DrawAuditHisControl() : this(null)
        {
        }
        public DrawAuditHisControl(SldWorks swAddin)
        {
            SwApp = swAddin;
            InitializeComponent();
            clientCreator = new HttpClientCreator(new HttpConfig(PluginSetting.Instance.BaseAddress));
            Client = clientCreator.GetClient();
            DataContext = this;
        }
        public void SetSwApp(SldWorks SwApp)
        {
            this.SwApp = SwApp;
        }
        /// <summary>
        /// 全选事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void GlobalCheckBox_Checked(object sender, RoutedEventArgs e)
        {
            CheckBox cb = sender as CheckBox;
            List<DrawAudit> datas = dataSource.ToList();
            foreach (DrawAudit data in datas)
            {
                data.selected = cb.IsChecked.Value;
            }
            int count = cb.IsChecked.Value ? (dataSource == null ? 0 : dataSource.Count) : 0;
            SelectBomText = $"已选中 {count} 条";
        }
        private void RefreshSelectedCount()
        {
            if (dataSource == null || dataSource.Count <= 0)
            {
                SelectBomText = "已选中 0 条";
                return;
            }
            int count = dataSource.Where(e => e.selected).Count();
            SelectBomText = $"已选中 {count} 条";
        }
        /// <summary>
        /// 单个点选事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void SingleCheckBox_Event(object sender, RoutedEventArgs e)
        {
            RefreshSelectedCount();
        }
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            MaskAdorner.ShowMask(content, "请求中,请稍后...");
            Task.Run(() =>
            {
                try
                {
                    List<DrawAudit> datas = RefreshList();
                    Dispatcher.Invoke(() =>
                    {
                        dataSource = new ObservableCollection<DrawAudit>(datas);
                    });
                }
                catch (Exception ex)
                {
                    Logger.Error("UI update failed.", ex);
                    this.Error($"UI更新列表失败!异常:{ex}");
                    dataSource = new ObservableCollection<DrawAudit>();
                }
                finally
                {
                    MaskAdorner.HideMask(content);
                }
            });
        }
        private void OpenDocMayError(string filePath, int docType, int option, string config)
        {
            int err = 0, warn = 0;
            SwApp.OpenDoc6(filePath, docType, option, config, ref err, ref warn);
            if (err == (int)swFileLoadError_e.swAddinInteruptError)
            {
                this.Error("打开失败!用户尝试打开文件,然后中断打开文件例程以打开其他文件");
            }
            else if (err == (int)swFileLoadError_e.swApplicationBusy)
            {
                this.Error("打开失败!Solidworks繁忙");
            }
            else if (err == (int)swFileLoadError_e.swFileCriticalDataRepairError)
            {
                this.Error("打开失败!文档存在严重数据损坏");
            }
            else if (err == (int)swFileLoadError_e.swFileNotFoundError)
            {
                this.Error("打开失败!无法找到文件;未加载文件或禁止显示引用的文件(即组件)");
            }
            else if (err == (int)swFileLoadError_e.swFileRequiresRepairError)
            {
                this.Error("打开失败!文档具有非关键自定义属性数据损坏");
            }
            else if (err == (int)swFileLoadError_e.swFutureVersion)
            {
                this.Error("打开失败!文档已保存在 SOLIDWORKS 的未来版本中");
            }
            else if (err == (int)swFileLoadError_e.swInvalidFileTypeError)
            {
                this.Error("打开失败!文件类型参数无效");
            }
            else if (err == (int)swFileLoadError_e.swLiquidMachineDoc)
            {
                this.Error("打开失败!由 Liquid Machines 加密的文件");
            }
            else if (err == (int)swFileLoadError_e.swLowResourcesError)
            {
                this.Error("打开失败!文件被打开并被阻止,因为系统内存不足,或者 GDI 句柄数已超过允许的最大值");
            }
            else if (err == (int)swFileLoadError_e.swNoDisplayData)
            {
                this.Error("打开失败!文件不包含显示数据");
            }
            else if (err == (int)swFileLoadError_e.swFileWithSameTitleAlreadyOpen)
            {
                this.Error("打开失败!具有相同名称的文档已打开");
                //SwApp.ActivateDoc3(filePath, false, 0, ref err);
                //if (err == 2)
                //{
                //    this.Error("需要重新生成已激活的文档");
                //}
                //else if (err == 1)
                //{
                //    this.Error("遇到不明错误,并且未激活文档");
                //}
            }
            else if (err != 0)
            {
                Logger.Error($"OpenDoc6 Failed,Error:{err}.See Solidworks Doc.");
            }
            else if (warn == 128)
            {
                SwApp.ActivateDoc3(filePath, false, 0, ref err);
                if (err == 2)
                {
                    this.Error("需要重新生成已激活的文档");
                }
                else if (err == 1)
                {
                    this.Error("遇到不明错误,并且未激活文档");
                }
            }
        }
        private void Detail_Click(object sender, RoutedEventArgs e)
        {
            Button btn = sender as Button;
            DrawAudit da = btn.DataContext as DrawAudit;
            GetAuditHisDetailAndOpen(da);
        }
        private string GetRealFilePath(string dbPath)
        {
            string fileName = Path.GetFileName(dbPath);
            string filePath = Path.Combine(PluginSetting.Instance.SwFilePath, fileName);
            return filePath;
        }
        private void OpenDoc_Click(object sender, RoutedEventArgs e)
        {
            Button btn = sender as Button;
            DrawAudit da = btn.DataContext as DrawAudit;
            string filePath = GetRealFilePath(da.d3RelativePath);
            if (!File.Exists(filePath))
            {
                this.Error($"服务器中未找到图纸文件,路径:{filePath}");
                return;
            }
            OpenDocMayError(filePath, (int)swDocumentTypes_e.swDocPART, (int)swOpenDocOptions_e.swOpenDocOptions_ReadOnly,
                 "");
        }
        public List<DrawAudit> RefreshList()
        {
            try
            {
                Result<List<DrawAudit>> res = Client.GetSyncAction<List<DrawAudit>>("drawAudit/listQuery", new DrawAudit
                {
                    requestUserId = PdmUser.LoginUser.id
                });
                return res.HandleResult();
            }
            catch (Exception ex)
            {
                Logger.Error("Get draw audit data list failed.", ex);
                this.Error($"刷新列表失败!异常:{ex.Message}");
                return new List<DrawAudit>();
            }
        }
        public void CloseAuditedDoc(DrawAudit da)
        {
            try
            {
                string modelPath = Path.Combine(PluginSetting.Instance.SwFilePath, Path.GetFileName(da.d3RelativePath));
                string drawingPath = Path.Combine(PluginSetting.Instance.SwFilePath, Path.GetFileName(da.d2RelativePath));
                SwApp.CloseDoc(modelPath);
                SwApp.CloseDoc(drawingPath);
            }
            catch (Exception exx)
            {
                Logger.Error("Auto close open doc failed.", exx);
            }
        }
        /// <summary>
        /// 查询送审图纸的审核详情并在新窗口打开
        /// </summary>
        /// <param name="da"></param>
        private void GetAuditHisDetailAndOpen(DrawAudit da)
        {
            MaskAdorner.ShowMask(content, "请求中,请稍后...");
            Task.Run(() =>
            {
                try
                {
                    Result<List<DrawAuditHis>> res = Client.GetSyncAction<List<DrawAuditHis>>("drawAudit/listTaskHis", new DrawAudit
                    {
                        id = da.id
                    });
                    var datas = res.HandleResult();
                    Dispatcher.Invoke(() =>
                    {
                        //DrawAuditHisWindow window = new DrawAuditHisWindow(this, $"【{bom.partModel}】审核详情", datas);
                        RichHisWindow window = new RichHisWindow(this, $"【{da.materialCode}】审核详情", datas);
                        window.ShowDialog();
                    });
                }
                catch (Exception ex)
                {
                    Logger.Error("Get draw audit history failed.", ex);
                    this.Error($"获取审核历史失败!{ex.Message}");
                }
                finally
                {
                    MaskAdorner.HideMask(content);
                }
            });
        }
        private void TextBlock_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
        {
            // 检查是否是双击
            if (e.ClickCount == 2)
            {
                TextBlock textBlock = sender as TextBlock;
                DrawAudit data = textBlock.DataContext as DrawAudit;
                GetAuditHisDetailAndOpen(data);
            }
        }
    }
}
PdmSwPlugin.DrawApprove/PdmSwPlugin.DrawApprove.csproj
@@ -81,6 +81,9 @@
    <Reference Include="PresentationFramework" />
  </ItemGroup>
  <ItemGroup>
    <Compile Include="DrawAuditHisControl.xaml.cs">
      <DependentUpon>DrawAuditHisControl.xaml</DependentUpon>
    </Compile>
    <Compile Include="RejectWindow.xaml.cs">
      <DependentUpon>RejectWindow.xaml</DependentUpon>
    </Compile>
@@ -93,6 +96,10 @@
    <Compile Include="XamlWindow.xaml.cs">
      <DependentUpon>XamlWindow.xaml</DependentUpon>
    </Compile>
    <Page Include="DrawAuditHisControl.xaml">
      <Generator>MSBuild:Compile</Generator>
      <SubType>Designer</SubType>
    </Page>
    <Page Include="DrawApprove.xaml">
      <Generator>MSBuild:Compile</Generator>
      <SubType>Designer</SubType>
PdmSwPlugin.Main/Constant/PluginConst.cs
@@ -3,6 +3,6 @@
    public class PluginConst
    {
        public static readonly string AppId = "DF23E96F-A469-4302-8367-7FA2F798CD09";
        public static readonly string Version = "0.0.0.36";
        public static readonly string Version = "0.0.0.37";
    }
}
PdmSwPlugin.Main/SwAddIn/MainControl.cs
@@ -126,6 +126,14 @@
                /*UserSettingControl userSettingControl = new UserSettingControl();
                HandlePlugin(userSettingControl, tabControl);*/
            }
            if (permissions.Contains("PDM:PLUGIN:CONTROL:DrawAuditHisQuery"))
            {
                // 图纸审核
                DrawAuditHisControl drawAuditHisControl = new DrawAuditHisControl(SwApp);
                HandlePlugin(drawAuditHisControl, tabControl);
                /*UserSettingControl userSettingControl = new UserSettingControl();
                HandlePlugin(userSettingControl, tabControl);*/
            }
        }
        private void SetPlugin()
PdmSwPlugin.PDM/PdmControl.xaml.cs
@@ -1080,7 +1080,7 @@
                    // 不是历史数据并且有未通过的,标记为false
                    allSuccess = false;
                }
                if (!properties[key].HistoryData && msgs != null && msgs.Count > 0)
                {
                    foreach (string msg in msgs)
@@ -1245,6 +1245,7 @@
                    ConcurrentQueue<string> errs = new ConcurrentQueue<string>();
                    CountdownEvent counter = new CountdownEvent(boms.Count);
                    int successCount = 0;
                    foreach (PdmBom bom in boms)
                    {
                        Task.Run(() =>
@@ -1275,6 +1276,7 @@
                                Result<DrawAudit> res = Client.PostSyncAction<DrawAudit>("drawAudit/add", httpContent);
                                DrawAudit da = res.HandleResult();
                                Interlocked.Increment(ref successCount);
                            }
                            catch (Exception ex)
                            {
@@ -1289,18 +1291,22 @@
                    }
                    counter.Wait();
                    counter.Dispose();
                    try
                    if (successCount > 0)
                    {
                        var param = new DrawAudit
                        try
                        {
                            count = boms.Count
                        };
                        var msgRes = Client.PostSyncAction<object>(param, "drawAudit/sendToAuditor");
                        msgRes.HandleResult();
                    }
                    catch (Exception ig)
                    {
                        Logger.Error("发送送审消息异常", ig);
                            var param = new DrawAudit
                            {
                                orderId = daOrder.id,
                                count = successCount
                            };
                            var msgRes = Client.PostSyncAction<object>(param, "drawAudit/sendToAuditor");
                            msgRes.HandleResult();
                        }
                        catch (Exception ig)
                        {
                            Logger.Error("发送送审消息异常", ig);
                        }
                    }
                    // 刷新服务器上的BOM信息
                    RefreshWebBomInfo();