Browse Source

修改我的绩效记录页面

luocaiyang 4 năm trước cách đây
mục cha
commit
b7b53fe485

+ 6 - 5
wispro.sp.api/Controllers/PerformanceItemController.cs

@@ -13,7 +13,7 @@ namespace wispro.sp.api.Controllers
 {
     [Route("api/[controller]/[action]")]
     [ApiController]
-    [Authorize]
+    //[Authorize]
     public class PerformanceItemController : ControllerBase
     {
         spDbContext Context;
@@ -108,8 +108,9 @@ namespace wispro.sp.api.Controllers
         {
             ListApiResponse<PerformanceItem> ret = new ListApiResponse<PerformanceItem>();
             var results = Context.PerformanceItems
-                .Where<PerformanceItem>(s => s.ItemStaffs
-                    .Where<ItemStaff>(iStaff => iStaff.DoPerson.Name == User.Identity.Name).Count() > 0 && s.Month == 7 && s.Year == 2021);
+                .Where<PerformanceItem>(s => 
+                    (s.ItemStaffs.Where<ItemStaff>(iStaff => iStaff.DoPerson.Name == User.Identity.Name).Count() > 0 || s.Reviewer.Name == User.Identity.Name) 
+                    && s.Month == 7 && s.Year == 2021);
 
             ret.TotalCount = results.Count();
 
@@ -132,8 +133,8 @@ namespace wispro.sp.api.Controllers
             ret.TotalCount = Context.PerformanceItems.Count<PerformanceItem>();
 
             List<PerformanceItem> retList = Context.PerformanceItems
-                //.Where<PerformanceItem>(s => s.ItemStaffs
-                //    .Where<ItemStaff>(iStaff => iStaff.DoPerson.Name == "李申").Count() > 0 && s.Month== 7 && s.Year == 2021)
+                .Where<PerformanceItem>(s => (s.ItemStaffs
+                    .Where<ItemStaff>(iStaff => iStaff.DoPerson.Name == queryFilter.PersonName) .Count() > 0 || s.Reviewer.Name == queryFilter.PersonName) && s.Month == queryFilter.Month && s.Year == queryFilter.Year)
                 .Include(pi => pi.ItemStaffs).ThenInclude(iStaff => iStaff.DoPerson)
                 .Include(pi => pi.Reviewer)
                 .Include(pi => pi.Customer)

+ 2 - 2
wispro.sp.share/webViewObject/loginDto.cs

@@ -9,10 +9,10 @@ namespace wispro.sp.share.webViewObject
 {
     public class loginDto
     {
-        [Required(ErrorMessage = "请填写Email")]
+        [Required(ErrorMessage = "请填写登录账号")]
         public string Name { get; set; }
 
-        [Required(ErrorMessage = "请填写Password")]
+        [Required(ErrorMessage = "请填写密码")]
         public string Password { get; set; }
     }
 }

+ 163 - 0
wispro.sp.utility/Linq.Easy.cs

@@ -0,0 +1,163 @@
+using System;
+using System.Collections.ObjectModel;
+using System.Linq.Expressions;
+using System.Reflection;
+
+namespace wispro.sp.utility
+{
+    public class Query
+    {
+        public enum Operators
+        {
+            None = 0,
+            Equal = 1,
+            GreaterThan = 2,
+            GreaterThanOrEqual = 3,
+            LessThan = 4,
+            LessThanOrEqual = 5,
+            Contains = 6,
+            StartWith = 7,
+            EndWidth = 8,
+            Range = 9
+        }
+        public enum Condition
+        {
+            OrElse = 1,
+            AndAlso = 2
+        }
+        public string Name { get; set; }
+        public Operators Operator { get; set; }
+        public object Value { get; set; }
+        public object ValueMin { get; set; }
+        public object ValueMax { get; set; }
+
+        public class QueryCollection : Collection<Query>
+        {
+            public Expression<Func<T, bool>> AsExpression<T>(Query.Condition? condition = Query.Condition.OrElse) where T : class
+            {
+                Type targetType = typeof(T);
+                TypeInfo typeInfo = targetType.GetTypeInfo();
+                var parameter = Expression.Parameter(targetType, "m");
+                Expression expression = null;
+                Func<Expression, Expression, Expression> Append = (exp1, exp2) =>
+                {
+                    if (exp1 == null)
+                    {
+                        return exp2;
+                    }
+                    return (condition ?? Query.Condition.OrElse) == Query.Condition.OrElse ? Expression.OrElse(exp1, exp2) : Expression.AndAlso(exp1, exp2);
+                };
+                foreach (var item in this)
+                {
+                    var property = typeInfo.GetProperty(item.Name);
+                    if (property == null ||
+                        !property.CanRead ||
+                        (item.Operator != Query.Operators.Range && item.Value == null) ||
+                        (item.Operator == Query.Operators.Range && item.ValueMin == null && item.ValueMax == null))
+                    {
+                        continue;
+                    }
+                    Type realType = Nullable.GetUnderlyingType(property.PropertyType) ?? property.PropertyType;
+                    if (item.Value != null)
+                    {
+                        item.Value = Convert.ChangeType(item.Value, realType);
+                    }
+                    Expression<Func<object>> valueLamba = () => item.Value;
+                    switch (item.Operator)
+                    {
+                        case Query.Operators.Equal:
+                            {
+                                expression = Append(expression, Expression.Equal(Expression.Property(parameter, item.Name),
+                                    Expression.Convert(valueLamba.Body, property.PropertyType)));
+                                break;
+                            }
+                        case Query.Operators.GreaterThan:
+                            {
+                                expression = Append(expression, Expression.GreaterThan(Expression.Property(parameter, item.Name),
+                                    Expression.Convert(valueLamba.Body, property.PropertyType)));
+                                break;
+                            }
+                        case Query.Operators.GreaterThanOrEqual:
+                            {
+                                expression = Append(expression, Expression.GreaterThanOrEqual(Expression.Property(parameter, item.Name),
+                                    Expression.Convert(valueLamba.Body, property.PropertyType)));
+                                break;
+                            }
+                        case Query.Operators.LessThan:
+                            {
+                                expression = Append(expression, Expression.LessThan(Expression.Property(parameter, item.Name),
+                                    Expression.Convert(valueLamba.Body, property.PropertyType)));
+                                break;
+                            }
+                        case Query.Operators.LessThanOrEqual:
+                            {
+                                expression = Append(expression, Expression.LessThanOrEqual(Expression.Property(parameter, item.Name),
+                                    Expression.Convert(valueLamba.Body, property.PropertyType)));
+                                break;
+                            }
+                        case Query.Operators.Contains:
+                            {
+                                var nullCheck = Expression.Not(Expression.Call(typeof(string), "IsNullOrEmpty", null, Expression.Property(parameter, item.Name)));
+                                var contains = Expression.Call(Expression.Property(parameter, item.Name), "Contains", null,
+                                    Expression.Convert(valueLamba.Body, property.PropertyType));
+                                expression = Append(expression, Expression.AndAlso(nullCheck, contains));
+                                break;
+                            }
+                        case Query.Operators.StartWith:
+                            {
+                                var nullCheck = Expression.Not(Expression.Call(typeof(string), "IsNullOrEmpty", null, Expression.Property(parameter, item.Name)));
+                                var startsWith = Expression.Call(Expression.Property(parameter, item.Name), "StartsWith", null,
+                                    Expression.Convert(valueLamba.Body, property.PropertyType));
+                                expression = Append(expression, Expression.AndAlso(nullCheck, startsWith));
+                                break;
+                            }
+                        case Query.Operators.EndWidth:
+                            {
+                                var nullCheck = Expression.Not(Expression.Call(typeof(string), "IsNullOrEmpty", null, Expression.Property(parameter, item.Name)));
+                                var endsWith = Expression.Call(Expression.Property(parameter, item.Name), "EndsWith", null,
+                                    Expression.Convert(valueLamba.Body, property.PropertyType));
+                                expression = Append(expression, Expression.AndAlso(nullCheck, endsWith));
+                                break;
+                            }
+                        case Query.Operators.Range:
+                            {
+                                Expression minExp = null, maxExp = null;
+                                if (item.ValueMin != null)
+                                {
+                                    var minValue = Convert.ChangeType(item.ValueMin, realType);
+                                    Expression<Func<object>> minValueLamda = () => minValue;
+                                    minExp = Expression.GreaterThanOrEqual(Expression.Property(parameter, item.Name), Expression.Convert(minValueLamda.Body, property.PropertyType));
+                                }
+                                if (item.ValueMax != null)
+                                {
+                                    var maxValue = Convert.ChangeType(item.ValueMax, realType);
+                                    Expression<Func<object>> maxValueLamda = () => maxValue;
+                                    maxExp = Expression.LessThanOrEqual(Expression.Property(parameter, item.Name), Expression.Convert(maxValueLamda.Body, property.PropertyType));
+                                }
+
+                                if (minExp != null && maxExp != null)
+                                {
+                                    expression = Append(expression, Expression.AndAlso(minExp, maxExp));
+                                }
+                                else if (minExp != null)
+                                {
+                                    expression = Append(expression, minExp);
+                                }
+                                else if (maxExp != null)
+                                {
+                                    expression = Append(expression, maxExp);
+                                }
+
+                                break;
+                            }
+                    }
+                }
+                if (expression == null)
+                {
+                    return null;
+                }
+                return ((Expression<Func<T, bool>>)Expression.Lambda(expression, parameter));
+            }
+        }
+    }
+}

+ 68 - 0
wispro.sp.web/Components/PerformanceItemRow.razor

@@ -0,0 +1,68 @@
+<Selection Key="@(EditingItem.Id.ToString())" Width="50" Fixed="left"/>
+<AntDesign.Column Title="我方文号" @bind-Field="@EditingItem.CaseNo" Width="150" Sortable Filterable Fixed="left" />
+<AntDesign.Column Title="案件类型" @bind-Field="@EditingItem.CaseType" Width="120" Sortable Filterable />
+<AntDesign.Column Title="案件系数" @bind-Field="@EditingItem.CaseCoefficient" Width="120" Sortable Filterable />
+<AntDesign.Column Title="处理事项" @bind-Field="@EditingItem.DoItem" Width="120" Sortable Filterable />
+<AntDesign.Column Title="处理事项系数" @bind-Field="@EditingItem.DoItemCoefficient" Width="150" Sortable Filterable />
+<AntDesign.Column Title="处理人" TData="string" DataIndex="@nameof(EditingItem.ItemStaffs)" Width="150">
+    @if (EditingItem.ItemStaffs != null)
+    {
+        foreach (ItemStaff itemStaff in EditingItem.ItemStaffs)
+        {
+            <span>@(itemStaff.DoPerson.Name)&nbsp;</span>
+        }
+    }
+</AntDesign.Column>
+<AntDesign.Column Title="核稿人" TData="string" Width="100">@(EditingItem.Reviewer ==null?"": EditingItem.Reviewer.Name)</AntDesign.Column>
+<AntDesign.Column Title="基础点数" TData="string" Width="100">@(EditingItem.BasePoint ==null?"": EditingItem.BasePoint)</AntDesign.Column>
+<AntDesign.Column Title="完成时间" TData="string" Width="100">@(EditingItem.FinishedDate.HasValue? EditingItem.FinishedDate.Value.ToString("yyyy-MM-dd"):"")</AntDesign.Column>
+<AntDesign.Column Title="返稿日" TData="string" Width="100">@(EditingItem.ReturnDate .HasValue? EditingItem.ReturnDate.Value.ToString("yyyy-MM-dd"):"")</AntDesign.Column>
+<AntDesign.Column Title="客户期限" TData="string" Width="100">@(EditingItem.CustomerLimitDate .HasValue? EditingItem.CustomerLimitDate.Value.ToString("yyyy-MM-dd"):"")</AntDesign.Column>
+<AntDesign.Column Title="初稿日" TData="string" Width="100">@(EditingItem.FirstDraftDate .HasValue? EditingItem.FirstDraftDate.Value.ToString("yyyy-MM-dd"):"")</AntDesign.Column>
+<AntDesign.Column Title="内部期限" TData="string" Width="100">@(EditingItem.InternalDate .HasValue? EditingItem.InternalDate.Value.ToString("yyyy-MM-dd"):"")</AntDesign.Column>
+<AntDesign.Column Title="案件阶段" TData="string" Width="100">@EditingItem.CaseStage</AntDesign.Column>
+<AntDesign.Column Title="案件名称" TData="string" @bind-Field="EditingItem.CaseName" Width="250"></AntDesign.Column>
+<AntDesign.Column Title="案件状态" @bind-Field="EditingItem.CaseState" Width="100"></AntDesign.Column>
+<AntDesign.Column Title=" 申请人" @bind-Field="EditingItem.ApplicationName" Width="200"></AntDesign.Column>
+<AntDesign.Column Title="备注" @bind-Field="EditingItem.CaseMemo"></AntDesign.Column>
+
+<ActionColumn Fixed="right" Title="绩效特殊字段填写与操作" Width="350">
+    <Space>
+        <SpaceItem>
+            <Select DataSource="@_Reasons"
+                    @bind-Value="@EditingItem.AgentFeedbackMemo"
+                    LabelName="@nameof(Reason.Name)"
+                    ValueName="@nameof(Reason.Value)"
+                    Placeholder="请选项一项"
+                    DefaultActiveFirstItem="false"
+                    EnableSearch ="true"
+                    AllowClear="true"
+                    Style="width:220px;">
+            </Select>
+        </SpaceItem>
+
+        @if ((!EditingItem.CaseNo.Contains("CN") || EditingItem.CaseNo.Contains("WO")) && EditingItem.DoItem == "新申请")
+        {
+            <SpaceItem>
+                <DropdownButton OnClick="OnsubShensu" Type="@((ButtonType.Primary, ButtonType.Default))" ButtonsStyle="@("background-color: #1890ff;")">
+                    <Overlay>
+                        <Menu>
+                            @*<MenuItem Key="1" icon="plus" Click="OnsubShensu"></MenuItem>*@
+                            <MenuItem Key="2" icon="plus" OnClick="OnSWJXType">涉外绩效按字数计算</MenuItem>
+                        </Menu>
+                    </Overlay>
+                    <Unbound>
+                        申诉
+                    </Unbound>
+                </DropdownButton>
+            </SpaceItem>
+        }
+        else
+        {
+            <SpaceItem>
+                <Button Type="primary" OnClick="OnsubShensu" Style="float:right" Size="small">申诉</Button>
+            </SpaceItem>
+        }
+    </Space>
+</ActionColumn>
+

+ 75 - 0
wispro.sp.web/Components/PerformanceItemRow.razor.cs

@@ -0,0 +1,75 @@
+using Microsoft.AspNetCore.Components;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using wispro.sp.entity;
+
+namespace wispro.sp.web.Components
+{
+    public partial class PerformanceItemRow
+    {
+        [Parameter]
+        public PerformanceItem EditingItem { get; set; }
+
+        [Parameter]
+        public EventCallback<PerformanceItem> OnSubmitShenSu { get; set; }
+
+        [Parameter]
+        public EventCallback<PerformanceItem> OnSWJXSF { get; set; }
+
+        class Reason
+        {
+            public string Value { get; set; }
+            public string Name { get; set; }
+        }
+
+        List<Reason> _Reasons = new List<Reason>()
+        {
+            new Reason(){Name="PCT首次英文案",Value="PCT首次英文案"},
+            new Reason(){Name="我方转格式、复核",Value="我方转格式、复核"},
+            new Reason(){Name="台湾案转大陆案",Value="台湾案转大陆案"},
+            new Reason(){Name="大陆案转台湾案",Value="大陆案转台湾案"},
+            new Reason(){Name="同套大陆+台湾",Value="同套大陆+台湾"},
+            new Reason(){Name="不请款",Value="不请款"},
+            new Reason(){Name="撤回后重新递交",Value="撤回后重新递交"},
+            new Reason(){Name="发文后客户取消申请",Value="发文后客户取消申请"},
+            new Reason(){Name="发文后客户原因取消申请,系统结案",Value="发文后客户原因取消申请,系统结案"},
+            new Reason(){Name="改权",Value="改权"},
+            new Reason(){Name="改权+改说明书",Value="改权+改说明书"},
+            new Reason(){Name="客户不进行答辩",Value="客户不进行答辩"},
+            new Reason(){Name="客户提供答辩点,撰写英文报导函",Value="客户提供答辩点,撰写英文报导函"},
+            new Reason(){Name="客户未提供答辩点,撰写英文报导函",Value="客户未提供答辩点,撰写英文报导函辩"},
+            new Reason(){Name="内-外",Value="内-外"},
+            new Reason(){Name="外-内",Value="外-内"},
+            new Reason(){Name="外-内首次申请",Value="外-内首次申请"},
+            new Reason(){Name="请款",Value="请款"},
+            new Reason(){Name="涉外OA不答辩,发报导函结案",Value="涉外OA不答辩,发报导函结案"},
+            new Reason(){Name="涉外实质改权",Value="涉外实质改权"},
+            new Reason(){Name="首次中文案",Value="首次中文案"},
+            new Reason(){Name="我方转格式、复核",Value="我方转格式、复核"},
+            new Reason(){Name="外所/他人首次转入OA",Value="外所/他人首次转入OA"},
+            new Reason(){Name="我方代交",Value="我方代交"},
+            new Reason(){Name="转格式",Value="转格式"},
+            new Reason(){Name="撰写中客户取消申请",Value="撰写中客户取消申请"}
+
+
+        };
+        bool isChecked = false;
+        private void OnsubShensu()
+        {
+            if (OnSubmitShenSu.HasDelegate)
+            {
+                OnSubmitShenSu.InvokeAsync(EditingItem);
+            }
+        }
+
+        private void OnSWJXType()
+        {
+            if (OnSWJXSF.HasDelegate)
+            {
+                OnSWJXSF.InvokeAsync(EditingItem);
+            }
+        }
+    }
+}

+ 1 - 1
wispro.sp.web/Components/RightContent.razor

@@ -9,7 +9,7 @@
                       Options="DefaultOptions" />
     </SpaceItem>
     <SpaceItem>
-        <AntDesign.Tooltip Title="@("Help")" Placement="@PlacementType.Bottom">
+        <AntDesign.Tooltip Title="@("Help")" Placement="@Placement.Bottom">
             <Unbound>
                 <span @ref="@context.Current" class="action">
                     <Icon Type="question-circle" Theme="outline" />

+ 2 - 0
wispro.sp.web/Layouts/BasicLayout.razor

@@ -22,7 +22,9 @@
         <NotAuthorized>
             <wispro.sp.web.Pages.LoginPages />
         </NotAuthorized>
+        
     </AuthorizeView>
+    
 </CascadingAuthenticationState>
 @code
 {

+ 2 - 0
wispro.sp.web/Models/ProjectInfo.cs

@@ -33,6 +33,8 @@ namespace wispro.sp.web.Models
         public int Id { get; set; }
         public string Name { get; set; }
 
+        public string Creater { get; set; }
+
         public string ResponseMan { get; set; }
 
         public string UIUrl { get; set; }

+ 71 - 4
wispro.sp.web/Pages/AppCase/MyCaselist.razor

@@ -22,22 +22,83 @@
                 <TabPane Key="1" Tab="待确认绩效清单">
                     <ChildContent>
                         <Card>
-                            <Pagination @bind-Current="@_pageIndex" @bind-Total="@_total" ShowSizeChanger OnChange="OnChange" />
+                            @*<Pagination @bind-Current="@_pageIndex" @bind-Total="@_total" ShowSizeChanger OnChange="OnChange" />*@
                             @if (_Datas == null)
                             {
                                 <center><Spin /></center>
                             }
                             else
                             {
-
-                                <AntList TItem="PerformanceItem"
+                                <PageHeader >
+                                    <PageHeaderTitle>基础点数统计</PageHeaderTitle>
+                                    <PageHeaderExtra><Button Type="@ButtonType.Primary">缺失数据提报</Button></PageHeaderExtra>
+                                    <PageHeaderContent>
+                                        <div style="border:1px solid #000000">
+                                            <AntDesign.Row Align="center" Justify="center">
+                                                <AntDesign.Col Span="3" style="border-left:1px solid #000000"><center></center></AntDesign.Col>
+                                                <AntDesign.Col Span="4" style="border:1px solid #000000"><center>新申请</center></AntDesign.Col>
+                                                <AntDesign.Col Span="4" style="border:1px solid #000000"><center>OA(国内、涉外)</center></AntDesign.Col>
+                                                <AntDesign.Col Span="4" style="border:1px solid #000000"><center>其它</center></AntDesign.Col>
+                                                <AntDesign.Col Span="3" style="border:1px solid #000000"></AntDesign.Col>
+                                                <AntDesign.Col Span="3" style="border:1px solid #000000"></AntDesign.Col>
+                                                <AntDesign.Col Span="3" style="border:1px solid #000000"></AntDesign.Col>
+                                            </AntDesign.Row>
+                                            <AntDesign.Row>
+                                                <AntDesign.Col Span="3" style="border:1px solid #000000"><center></center></AntDesign.Col>
+                                                <AntDesign.Col Span="2" style="border:1px solid #000000"><center>承办点数</center></AntDesign.Col>
+                                                <AntDesign.Col Span="2" style="border:1px solid #000000"><center>核稿点数</center></AntDesign.Col>
+                                                <AntDesign.Col Span="2" style="border:1px solid #000000"><center>承办点数</center></AntDesign.Col>
+                                                <AntDesign.Col Span="2" style="border:1px solid #000000"><center>核稿点数</center></AntDesign.Col>
+                                                <AntDesign.Col Span="2" style="border:1px solid #000000"><center>承办点数</center></AntDesign.Col>
+                                                <AntDesign.Col Span="2" style="border:1px solid #000000"><center>核稿点数</center></AntDesign.Col>
+                                                <AntDesign.Col Span="3" style="border:1px solid #000000"><center>调查案</center></AntDesign.Col>
+                                                <AntDesign.Col Span="3" style="border:1px solid #000000"><center>一次OA授权</center></AntDesign.Col>
+                                                <AntDesign.Col Span="3" style="border:1px solid #000000"><center>总计</center></AntDesign.Col>
+                                            </AntDesign.Row>
+                                            <AntDesign.Row>
+                                                <AntDesign.Col Span="3" style="border:1px solid #000000"><center>基础点数</center></AntDesign.Col>
+                                                <AntDesign.Col Span="2" style="border:1px solid #000000"><center>3.23</center></AntDesign.Col>
+                                                <AntDesign.Col Span="2" style="border:1px solid #000000"></AntDesign.Col>
+                                                <AntDesign.Col Span="2" style="border:1px solid #000000"><center>1.8</center></AntDesign.Col>
+                                                <AntDesign.Col Span="2" style="border:1px solid #000000"><center>1.63</center></AntDesign.Col>
+                                                <AntDesign.Col Span="2" style="border:1px solid #000000"><center>0.2</center></AntDesign.Col>
+                                                <AntDesign.Col Span="2" style="border:1px solid #000000"></AntDesign.Col>
+                                                <AntDesign.Col Span="3" style="border:1px solid #000000"><center>2.0</center></AntDesign.Col>
+                                                <AntDesign.Col Span="3" style="border:1px solid #000000"></AntDesign.Col>
+                                                <AntDesign.Col Span="3" style="border:1px solid #000000"><center>8.86</center></AntDesign.Col>
+                                            </AntDesign.Row>
+                                            <AntDesign.Row>
+                                                <AntDesign.Col Span="3" style="border:1px solid #000000"><center>调整后点数</center></AntDesign.Col>
+                                                <AntDesign.Col Span="2" style="border:1px solid #000000"><center>3.23</center></AntDesign.Col>
+                                                <AntDesign.Col Span="2" style="border:1px solid #000000"></AntDesign.Col>
+                                                <AntDesign.Col Span="2" style="border:1px solid #000000"><center>1.8</center></AntDesign.Col>
+                                                <AntDesign.Col Span="2" style="border:1px solid #000000"><center>1.63</center></AntDesign.Col>
+                                                <AntDesign.Col Span="2" style="border:1px solid #000000"><center>0.2</center></AntDesign.Col>
+                                                <AntDesign.Col Span="2" style="border:1px solid #000000"></AntDesign.Col>
+                                                <AntDesign.Col Span="3" style="border:1px solid #000000"><center>2.0</center></AntDesign.Col>
+                                                <AntDesign.Col Span="3" style="border:1px solid #000000"></AntDesign.Col>
+                                                <AntDesign.Col Span="3" style="border:1px solid #000000"><center>8.86</center></AntDesign.Col>
+                                            </AntDesign.Row>
+                                        </div>
+                                    </PageHeaderContent>
+                                </PageHeader>
+                                @*<AntList TItem="PerformanceItem"
                                          DataSource="@_Datas"
                                          Class="activitiesList"
                                          Size="large"
                                          ItemLayout="ListItemLayout.Horizontal">
                                     <PerformanceItemDescriptionItem EditingItem="context" OnSubmitShenSu="OnsubShensu" OnSWJXSF="OnJXCal"></PerformanceItemDescriptionItem>
-                                </AntList>
+                                </AntList>*@
                                 @*<Pagination @bind-Current="_pageIndex"  @bind-Total="@_total"  ShowSizeChanger  OnChange="OnChange"/>*@
+                        <AntDesign.Table DataSource="_Datas" TItem="PerformanceItem"
+                                         PageIndex="_pageIndex"
+                                         PageSize="_pageSize" Total="_total"
+                                         ScrollX="3800" Size="TableSize.Small" Bordered
+                                         @bind-SelectedRows="selectedItems"
+                                         Loading="_loading" RowClassName="@(x => x.Data.isDanger()?"danger":"")">
+                                         @*OnChange="HandleTableChange" RemoteDataSource>*@
+                            <PerformanceItemRow EditingItem="context" OnSubmitShenSu="OnsubShensu" OnSWJXSF="OnJXCal"></PerformanceItemRow>
+                        </AntDesign.Table>
                             }
                         </Card>
                     </ChildContent>
@@ -50,6 +111,12 @@
     </ChildContent>
 </PageContainer>
 
+<style>
+    .danger {
+        background-color: #fa3d2c;
+    }
+</style>
+
 <Modal Title="涉外新申请算法备注" Visible="_ShowJXModal"
        OnOk="@HandleOk1"
        OnCancel="@HandleCancel1"

+ 22 - 4
wispro.sp.web/Pages/AppCase/MyCaselist.razor.cs

@@ -1,5 +1,6 @@
 using AntDesign;
 using AntDesign.ProLayout;
+using AntDesign.TableModels;
 using Microsoft.AspNetCore.Authorization;
 using Microsoft.AspNetCore.Components;
 using Microsoft.AspNetCore.Components.Web;
@@ -33,21 +34,38 @@ namespace wispro.sp.web.Pages.AppCase
 
 
 
-        
+        private bool isFirstInit = true;
         protected async override Task OnInitializedAsync()
         {
+            if (isFirstInit)
+            {
+                _loading = true;
 
-            _loading = true;
+                var data = await _ItemService.GetItems(_pageIndex, _pageSize);
+
+
+                _Datas = data.Results;
+                _total = data.TotalCount;
+                _loading = false;
+            }
+
+            isFirstInit = false;
+        }
 
-            var data = await _ItemService.GetItems(_pageIndex, _pageSize);
+        private async Task HandleTableChange(QueryModel<PerformanceItem> queryModel)
+        {
+            _loading = true;
 
+            var data = await _ItemService.GetItems(queryModel.PageIndex ,queryModel.PageSize);
 
+            _pageIndex = queryModel.PageIndex;
+            _pageSize = queryModel.PageSize;
             _Datas = data.Results;
             _total = data.TotalCount;
             _loading = false;
+            StateHasChanged();
         }
 
-
         private void OnsubShensu(PerformanceItem Item)
         {
             EditingItem = Item;

+ 3 - 3
wispro.sp.web/Pages/AppCase/ShensuReview.razor

@@ -60,14 +60,14 @@
             </Card>
             <Card>
                 <span>审核说明:</span>
-                <TextArea @bind-Value="@Memo" rows="6"></TextArea>
+                <TextArea @bind-Value="@Memo" Rows="6"></TextArea>
                 <br/><br />
                 <center>
                     <Space>
                         <SpaceItem>
-                            <Tooltip Title=@("系统通过后,将改变的栏位值保存到流程管理系统")>
+                            <AntDesign.Tooltip Title=@("系统通过后,将改变的栏位值保存到流程管理系统")>
                                 <Button Type="primary">通过</Button>
-                            </Tooltip>
+                            </AntDesign.Tooltip>
                         </SpaceItem>
                         <SpaceItem><Button Danger Type="primary">不通过</Button></SpaceItem>
                     </Space>

+ 3 - 2
wispro.sp.web/Pages/AppCase/ShensuReview.razor.cs

@@ -45,9 +45,10 @@ namespace wispro.sp.web.Pages.AppCase
                 }
             };
 
-        protected override void OnInitialized()
+
+        protected override void OnParametersSet()
         {
-            base.OnInitialized();
+            base.OnParametersSet();
             _task = taskService.GetTask(Id);
         }
 

+ 140 - 22
wispro.sp.web/Services/TaskService.cs

@@ -8,42 +8,160 @@ namespace wispro.sp.web.Services
 {
     public class TaskService
     {
-        public Models.Task GetTask(int id)
+        private static ProjectInfo project = new ProjectInfo()
         {
-            ProjectInfo project = new ProjectInfo()
-            {
-                CaseNo = "WOCN2111703",
-                CaseName = "NETWORK SWITCHING METHOD, APPARATUS, USER EQUIPTMENT, AND STORAGE MEDIUM",
-                DoItem = "新申请",
-                DoPerson = new List<string>() { "李申" }, ResponseMan = ""
-            };
+            CaseNo = "WOCN2111703",
+            CaseName = "NETWORK SWITCHING METHOD, APPARATUS, USER EQUIPTMENT, AND STORAGE MEDIUM",
+            DoItem = "新申请",
+            DoPerson = new List<string>() { "李申" },
+            ResponseMan = ""
+        };
 
-            switch (id)
-            {
-                case 1:
-                    return new Models.Task()
+        private List<Models.Task> Tasks = new List<Models.Task>()
+        {
+            new Models.Task()
                     {
                         Id =1,
                         ProjectInfo = project,
                         Name =$"案件{project.CaseNo}申诉审核",
+                        Creater = "李申",
                         ResponseMan ="李丽",
                         LimiteDate = new DateTime(2021,10,20),
-                        Type ="申诉审核", CreateTime = DateTime.Now, State="待处理", 
+                        Type ="申诉审核", CreateTime = DateTime.Now, State="待处理",
                         InputFields = new List<InputField>()
                         {
                             new(){ FieldName ="申诉类型", FieldType="string", FieldValue="案件系数申诉"},
                             new(){ FieldName ="案件系数变更为", FieldType="string", FieldValue="A"}
                         }
-                        
-                    };
-                    break;
-                case 2:
-                    break;
-                case 3:
-                    break;
-                case 4:
-                    break;
 
+                    },
+            new Models.Task()
+                    {
+                        Id = 1,
+                        ProjectInfo = project,
+                        Name = $"案件{project.CaseNo}申诉审核",
+                        Creater = "李申",
+                        ResponseMan = "李丽",
+                        LimiteDate = new DateTime(2021, 10, 20),
+                        Type = "申诉审核",
+                        CreateTime = DateTime.Now,
+                        State = "待处理",
+                        InputFields = new List<InputField>()
+                        {
+                            new(){ FieldName ="申诉类型", FieldType="string", FieldValue="案件系数申诉"},
+                            new(){ FieldName ="处理事项系数变更为", FieldType="string", FieldValue="A"}
+                        }
+
+                    }, new Models.Task()
+                    {
+                        Id = 1,
+                        ProjectInfo = project,
+                        Name = $"案件{project.CaseNo}申诉审核",
+                        Creater = "李申",
+                        ResponseMan = "李丽",
+                        LimiteDate = new DateTime(2021, 10, 20),
+                        Type = "申诉审核",
+                        CreateTime = DateTime.Now,
+                        State = "待处理",
+                        InputFields = new List<InputField>()
+                        {
+                            new(){ FieldName ="申诉类型", FieldType="string", FieldValue="案件系数申诉"},
+                            new(){ FieldName ="处理人变更为", FieldType="string", FieldValue="何倚雯"}
+                        }
+
+                    }, new Models.Task()
+                    {
+                        Id = 1,
+                        ProjectInfo = project,
+                        Name = $"案件{project.CaseNo}申诉审核",
+                        Creater = "李申",
+                        ResponseMan = "李丽",
+                        LimiteDate = new DateTime(2021, 10, 20),
+                        Type = "申诉审核",
+                        CreateTime = DateTime.Now,
+                        State = "待处理",
+                        InputFields = new List<InputField>()
+                        {
+                            new(){ FieldName ="申诉类型", FieldType="string", FieldValue="案件系数申诉"},
+                            new(){ FieldName ="核稿人变更为", FieldType="string", FieldValue="钟子敏"}
+                        }
+
+                    }, new Models.Task()
+                    {
+                        Id = 1,
+                        ProjectInfo = project,
+                        Name = $"案件{project.CaseNo}申诉审核",
+                        Creater = "李申",
+                        ResponseMan = "李丽",
+                        LimiteDate = new DateTime(2021, 10, 20),
+                        Type = "申诉审核",
+                        CreateTime = DateTime.Now,
+                        State = "待处理",
+                        InputFields = new List<InputField>()
+                        {
+                            new(){ FieldName ="超期原因", FieldType="string", FieldValue="客户看稿超过一个月才回复!"}
+                        }
+
+                    }, new Models.Task()
+                    {
+                        Id = 1,
+                        ProjectInfo = project,
+                        Name = $"案件{project.CaseNo}申诉审核",
+                        Creater = "李申",
+                        ResponseMan = "李丽",
+                        LimiteDate = new DateTime(2021, 10, 20),
+                        Type = "申诉审核",
+                        CreateTime = DateTime.Now,
+                        State = "待处理",
+                        InputFields = new List<InputField>()
+                        {
+                            new(){ FieldName ="分配比率", FieldType="string", FieldValue="按照李申(2),何倚雯(1)的比例分配!"}
+                        }
+
+                    }, new Models.Task()
+                    {
+                        Id = 1,
+                        ProjectInfo = project,
+                        Name = $"案件{project.CaseNo}申诉审核",
+                        Creater = "李申",
+                        ResponseMan = "李丽",
+                        LimiteDate = new DateTime(2021, 10, 20),
+                        Type = "申诉审核",
+                        CreateTime = DateTime.Now,
+                        State = "待处理",
+                        InputFields = new List<InputField>()
+                        {
+                            new(){ FieldName ="申诉类型", FieldType="string", FieldValue="缺失案件提报"},
+                            new(){ FieldName ="我方文号", FieldType="string", FieldValue="PACN1810394"}                            ,
+                            new(){ FieldName ="处理事项", FieldType="string", FieldValue="处理审查意见"}
+                        }
+
+                    },new Models.Task()
+                    {
+                        Id = 1,
+                        ProjectInfo = project,
+                        Name = $"案件{project.CaseNo}申诉审核",
+                        Creater = "李申",
+                        ResponseMan = "李丽",
+                        LimiteDate = new DateTime(2021, 10, 20),
+                        Type = "申诉审核",
+                        CreateTime = DateTime.Now,
+                        State = "待处理",
+                        InputFields = new List<InputField>()
+                        {
+                            new(){ FieldName ="申诉类型", FieldType="string", FieldValue="涉外案件点数算法备注"},
+                            new(){ FieldName ="算法备注", FieldType="string", FieldValue="按字数计算"}                            ,
+                            new(){ FieldName ="字数", FieldType="string", FieldValue="18000"}
+                        }
+
+                    }
+        };
+
+        public Models.Task GetTask(int id)
+        {
+            if(id <= Tasks.Count)
+            {
+                return Tasks[id - 1];
             }
 
             return null;

+ 1 - 1
wispro.sp.web/wispro.sp.web.csproj

@@ -12,7 +12,7 @@
 
   <ItemGroup>
     <PackageReference Include="AntDesign.Charts" Version="0.2.1" />
-    <PackageReference Include="AntDesign.ProLayout" Version="0.1.4" />
+    <PackageReference Include="AntDesign.ProLayout" Version="0.1.8" />
     <PackageReference Include="Blazored.LocalStorage" Version="4.1.5" />
     <PackageReference Include="Microsoft.AspNetCore.Authorization" Version="5.0.9" />
     <PackageReference Include="Microsoft.AspNetCore.Authorization.Policy" Version="2.2.0" />

+ 44 - 0
wospro.sp.entity/PerformanceItem.cs

@@ -189,6 +189,50 @@ namespace wispro.sp.entity
         /// 核稿人
         /// </summary>
         public virtual Staff Reviewer { get; set; }
+
+        public bool isDanger()
+        {
+            if (DoItem.ToString() == "新申请")
+            {
+                DateTime dt1 = DateTime.MinValue;
+                if (ReturnDate != null)
+                {
+                    dt1 = ReturnDate.Value;
+                }
+
+                DateTime dt2 = DateTime.MinValue;
+                if (CustomerLimitDate != null)
+                {
+                    dt2 = CustomerLimitDate.Value;
+                }
+                else
+                {
+                    if (InternalDate !=null)
+                    {
+                        dt2 = InternalDate.Value;
+                    }
+                    else
+                    {
+                        if (EntrustingDate !=null)
+                        {
+                            dt2 = EntrustingDate.Value;
+                        }
+                    }
+                }
+                
+                if ((dt1 - dt2).TotalDays > 30 )
+                {
+                    
+                    return true;
+                }
+                else
+                {
+                    return false;
+                }
+            }
+
+            return false;
+        }
     }
 }