Commit c399aa0d authored by 姜春辉's avatar 姜春辉

完成度75%

parent b0057a76
Design @ d818dd2a
Subproject commit 23b4e1552047da6689d94e81b225bc6a85983f0f Subproject commit d818dd2a50f8e4676ceb1e747fe55f9f84d28ad1
...@@ -31,6 +31,12 @@ ...@@ -31,6 +31,12 @@
</Style> </Style>
<!-- 系统名称--> <!-- 系统名称-->
<Style x:Key="MainShell_LogoText" TargetType="TextBlock"> <Style x:Key="MainShell_LogoText" TargetType="TextBlock">
</Style>
<Style x:Key="MainShell_HeadLeft" TargetType="Grid">
<Setter Property="Width" Value="900"/>
</Style>
<Style x:Key="MainShell_HeadRight" TargetType="Grid">
<Setter Property="Grid.Column" Value="1"/>
</Style> </Style>
</ResourceDictionary> </ResourceDictionary>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8" ?> <?xml version="1.0" encoding="utf-8" ?>
<configuration> <configuration>
<startup> <startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup> </startup>
<appSettings>
<add key="WebPath" value="http://192.168.1.112:5000/"/>
<add key="tCode" value="LCFK"/>
</appSettings>
</configuration> </configuration>
\ No newline at end of file
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
</Declare> </Declare>
<Datas> <Datas>
<Data Description="获取人员有效预约单" Key="VisitorAvailableAppointment" ServiceUri="/api/GS.Sub.Vistor/VisitorSelfServiceTerminal/VisitorAvailableAppointment" /> <Data Description="获取人员有效预约单" Key="VisitorAvailableAppointment" ServiceUri="/api/GS.Sub.Vistor/VisitorSelfServiceTerminal/VisitorAvailableAppointment" />
<Data Description="提交预约单到访" Key="SubmitVisitInfo" ServiceUri="/api/GS.Sub.Vistor/VisitorSelfServiceTerminal/SubmitVisitInfo" />
</Datas> </Datas>
</Structure> </Structure>
</Structures> </Structures>
......
using GS.Terminal.LogicShell.Interface; using GS.Terminal.LogicShell.Interface;
using GS.Terminal.VisitorSelfService.Logic.Remote;
using GS.Terminal.VisitorSelfService.Logic.Remote.Models; using GS.Terminal.VisitorSelfService.Logic.Remote.Models;
using GS.Terminal.VisitorSelfService.Logic.ThirdAddon; using GS.Terminal.VisitorSelfService.Logic.ThirdAddon;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Drawing.Imaging;
using System.IO;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
...@@ -22,7 +25,48 @@ namespace GS.Terminal.VisitorSelfService.Logic.Core ...@@ -22,7 +25,48 @@ namespace GS.Terminal.VisitorSelfService.Logic.Core
private void VM_OnSubmitClick(AppointmentItem info) private void VM_OnSubmitClick(AppointmentItem info)
{ {
var photoContent = "";
using (var photo = FaceRecognization.GetCurrentVideoFrame())
{
using (MemoryStream ms = new MemoryStream())
{
photo.Save(ms, ImageFormat.Jpeg);
photoContent = Convert.ToBase64String(ms.ToArray());
}
}
MainShell.ShowLoading("提交中...");
Submit(info.id, photoContent).ContinueWith(task =>
{
MainShell.HideLoading();
if (task.Result)
{
Handlers.GetHandler<SubmitVisitInfoResultHandler>()?.ShowView();
}
});
}
private async Task<bool> Submit(Guid appointmentId, string photo)
{
var serviceUrl = LocalSetting.ServiceList.GetSerivceUri("SubmitVisitInfo");
var result = await WebApi.PostAsync<WebApiResponseBody>(serviceUrl, new
{
LocalSetting.AppConfig.tCode,
appointmentId,
livePhoto = photo
});
if (result == null)
{
MainShell.ShowPrompt("通讯异常.请重试");
return false;
}
if (result.Status) return result.Status;
if (!result.Status && !string.IsNullOrEmpty(result.Message))
{
MainShell.ShowPrompt(result.Message);
return false;
}
MainShell.ShowPrompt("数据提交失败");
return false;
} }
private void VM_OnExitClick() private void VM_OnExitClick()
...@@ -43,12 +87,13 @@ namespace GS.Terminal.VisitorSelfService.Logic.Core ...@@ -43,12 +87,13 @@ namespace GS.Terminal.VisitorSelfService.Logic.Core
VM.Datas = datas.Select(ss => VM.Datas = datas.Select(ss =>
{ {
var item = new AppointmentItem(); var item = new AppointmentItem();
item.id = ss.id;
item.areaName = ss.visitArea; item.areaName = ss.visitArea;
item.beVisitPerson = ss.visitPerson; item.beVisitPerson = ss.visitPerson;
item.endDate = ss.endDate; item.endDate = ss.endDate;
item.idCardNum = ss.visitorIdNum; item.idCardNum = ss.visitorIdNum;
item.phoneNum = ss.visitorPhone; item.phoneNum = ss.visitorPhone;
item.photoUrl = ss.photo; item.photoUrl = productPhotoUrl(ss.photo);
item.startDate = ss.startDate; item.startDate = ss.startDate;
item.visitorName = ss.visitorName; item.visitorName = ss.visitorName;
item.visitPeople = ss.numberOfPeople; item.visitPeople = ss.numberOfPeople;
...@@ -61,7 +106,7 @@ namespace GS.Terminal.VisitorSelfService.Logic.Core ...@@ -61,7 +106,7 @@ namespace GS.Terminal.VisitorSelfService.Logic.Core
items = g.Select(content => new ViewModels.Pages.AppointmentDetailPage.AppointmentExtendInfo items = g.Select(content => new ViewModels.Pages.AppointmentDetailPage.AppointmentExtendInfo
{ {
title = content.title, title = content.title,
content = content.content, content = content.type == "image" ? productPhotoUrl(content.content) : content.content,
infotype = content.type infotype = content.type
}).ToList() }).ToList()
}).ToList(); }).ToList();
...@@ -72,5 +117,10 @@ namespace GS.Terminal.VisitorSelfService.Logic.Core ...@@ -72,5 +117,10 @@ namespace GS.Terminal.VisitorSelfService.Logic.Core
VM.Appointment = VM.Datas[0]; VM.Appointment = VM.Datas[0];
ShowView(); ShowView();
} }
private string productPhotoUrl(string origin)
{
return $"{LocalSetting.AppConfig.WebPath.TrimEnd('/')}/FileStore/Image/{origin}?q=H";
}
} }
} }
using GalaSoft.MvvmLight.Threading; using GalaSoft.MvvmLight.Threading;
using GS.Terminal.LogicShell.Interface; using GS.Terminal.LogicShell.Interface;
using GS.Terminal.VisitorSelfService.Logic.ThirdAddon;
using Newtonsoft.Json; using Newtonsoft.Json;
using OpenCvSharp; using OpenCvSharp;
using OpenCvSharp.Extensions; using OpenCvSharp.Extensions;
...@@ -33,13 +34,15 @@ namespace GS.Terminal.VisitorSelfService.Logic.Core ...@@ -33,13 +34,15 @@ namespace GS.Terminal.VisitorSelfService.Logic.Core
/*读取二代证任务*/ /*读取二代证任务*/
private WebSocket _faceWebSocket; private WebSocket _faceWebSocket;
private bool _faceValidating = false; private bool _faceValidating = false;
private string _fid = "";
private byte[] _currentFeature = null;
public override void Init() public override void Init()
{ {
VM.OnExitClick += VM_OnExitClick; VM.OnExitClick += VM_OnExitClick;
VM.OnNavigateInto += VM_OnNavigateInto; VM.OnNavigateInto += VM_OnNavigateInto;
VM.OnNavigateOut += VM_OnNavigateOut; VM.OnNavigateOut += VM_OnNavigateOut;
VM.OnAuthModeChanged += VM_OnAuthModeChanged; VM.OnAuthModeChanged += VM_OnAuthModeChanged;
_FaceEngineId = ThirdAddon.FastRecognization.CreateFastFaceRecognized(null, null, null, 0.85f); _FaceEngineId = ThirdAddon.FastRecognization.CreateFastFaceRecognized(null, FaceAlivness, null, 0.85f);
ThirdAddon.FastRecognization.Pause(_FaceEngineId); ThirdAddon.FastRecognization.Pause(_FaceEngineId);
ThirdAddon.FastRecognization.RegistFeatureExtracted(_FaceEngineId, FaceFeatureExtracted); ThirdAddon.FastRecognization.RegistFeatureExtracted(_FaceEngineId, FaceFeatureExtracted);
_secondCardReader = Task.Factory.StartNew(_SecondCardRead); _secondCardReader = Task.Factory.StartNew(_SecondCardRead);
...@@ -59,7 +62,8 @@ namespace GS.Terminal.VisitorSelfService.Logic.Core ...@@ -59,7 +62,8 @@ namespace GS.Terminal.VisitorSelfService.Logic.Core
try try
{ {
var result = JsonConvert.DeserializeObject<FaceValidateResult>(e.Message); var result = JsonConvert.DeserializeObject<FaceValidateResult>(e.Message);
if (result?.result != null) if (result?.result != null &&
result.score >= LocalSetting.AddonDefaultConfig.FaceMinValue)
{ {
_faceValidating = true; _faceValidating = true;
if (_AuthSuccessCallback != null) if (_AuthSuccessCallback != null)
...@@ -72,10 +76,11 @@ namespace GS.Terminal.VisitorSelfService.Logic.Core ...@@ -72,10 +76,11 @@ namespace GS.Terminal.VisitorSelfService.Logic.Core
} }
} }
} }
catch (Exception) catch (Exception ex)
{ {
Program._Context.Logger.Error($"查询有效预约单异常", ex);
throw; MainShell.ShowPrompt($"通讯异常");
_faceValidating = false;
} }
} }
...@@ -101,6 +106,7 @@ namespace GS.Terminal.VisitorSelfService.Logic.Core ...@@ -101,6 +106,7 @@ namespace GS.Terminal.VisitorSelfService.Logic.Core
_faceWebSocket.Open(); _faceWebSocket.Open();
ThirdAddon.FaceRecognization.RegistOutPutMatEvent(VideoOut); ThirdAddon.FaceRecognization.RegistOutPutMatEvent(VideoOut);
ThirdAddon.FastRecognization.Restart(_FaceEngineId); ThirdAddon.FastRecognization.Restart(_FaceEngineId);
_faceValidating = false;
} }
else else
{ {
...@@ -122,9 +128,21 @@ namespace GS.Terminal.VisitorSelfService.Logic.Core ...@@ -122,9 +128,21 @@ namespace GS.Terminal.VisitorSelfService.Logic.Core
private void FaceFeatureExtracted(byte[] feature, string fid) private void FaceFeatureExtracted(byte[] feature, string fid)
{ {
if (!_faceValidating) if (!_faceValidating)
_faceWebSocket.Send(feature, 0, feature.Length); {
_currentFeature = feature;
_fid = fid;
}
} }
private void FaceAlivness(string fid, int result)
{
if (!_faceValidating)
{
if (fid == _fid && result == 1)
_faceWebSocket.Send(_currentFeature, 0, _currentFeature.Length);
}
}
/// <summary> /// <summary>
/// 开始进行身份认证 /// 开始进行身份认证
/// </summary> /// </summary>
......
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GS.Terminal.VisitorSelfService.Logic.Core
{
public class FootHandler : Corebase<ViewModels.Foot>
{
public override void Init()
{
VM.TCODE = LocalSetting.AppConfig.tCode;
}
}
}
...@@ -11,14 +11,14 @@ namespace GS.Terminal.VisitorSelfService.Logic.Core ...@@ -11,14 +11,14 @@ namespace GS.Terminal.VisitorSelfService.Logic.Core
{ {
public partial class MenuPageHandler public partial class MenuPageHandler
{ {
private async Task<List<Appointment>> Find(string key, AuthenticationMode mode) private async Task<List<Appointment>> Find(string keyvalue, AuthenticationMode mode)
{ {
var type = "idnum"; var type = "idnum";
if (mode == AuthenticationMode.QRCode) if (mode == AuthenticationMode.QRCode)
type = "qrcode"; type = "qrcode";
var serviceUrl = LocalSetting.ServiceList.GetSerivceUri("VisitorAvailableAppointment"); var serviceUrl = LocalSetting.ServiceList.GetSerivceUri("VisitorAvailableAppointment");
var result = await WebApi.GetTAsync<List<Appointment>>($"{serviceUrl}{(serviceUrl.Contains("?") ? "&" : "?")}searchkey={key}&searchvalue={type}"); var result = await WebApi.GetTAsync<WebApiCollectionResponseBody<Appointment>>($"{serviceUrl}{(serviceUrl.Contains("?") ? "&" : "?")}searchkey={type}&searchvalue={keyvalue}");
return result; return result?.records;
} }
} }
} }
...@@ -35,14 +35,18 @@ namespace GS.Terminal.VisitorSelfService.Logic.Core ...@@ -35,14 +35,18 @@ namespace GS.Terminal.VisitorSelfService.Logic.Core
private async Task<bool> AuthSuccess(AuthenticationMode mode, object data) private async Task<bool> AuthSuccess(AuthenticationMode mode, object data)
{ {
//((dynamic)data).cardid 身份证芯片号
MainShell.ShowLoading("正在查找"); MainShell.ShowLoading("正在查找");
var findResult = await Find(data.ToString(), mode); var findResult = await Find(mode == AuthenticationMode.IdCard ? ((dynamic)data).number : data.ToString(), mode);
MainShell.ShowPrompt($"查找完成");
MainShell.HideLoading(); MainShell.HideLoading();
if (findResult?.Count > 0) if (findResult?.Count > 0)
{ {
Handlers.GetHandler<AppointmentDetailPageHandler>()?.ShowDetail(findResult); Handlers.GetHandler<AppointmentDetailPageHandler>()?.ShowDetail(findResult);
} }
else
{
MainShell.ShowPrompt($"没有找到有效的预约单");
}
return findResult?.Count > 0; return findResult?.Count > 0;
} }
......
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GS.Terminal.VisitorSelfService.Logic.Core
{
public class SubmitVisitInfoResultHandler : Corebase<ViewModels.Pages.SubmitVisitInfoResult.ViewModel>
{
public override void Init()
{
}
}
}
...@@ -109,16 +109,21 @@ ...@@ -109,16 +109,21 @@
<Compile Include="Core\AuthenticationPageHandler.cs" /> <Compile Include="Core\AuthenticationPageHandler.cs" />
<Compile Include="Core\Corebase.cs" /> <Compile Include="Core\Corebase.cs" />
<Compile Include="Core\FeatureCompareHandler.cs" /> <Compile Include="Core\FeatureCompareHandler.cs" />
<Compile Include="Core\FootHandler.cs" />
<Compile Include="Core\HistoryAppointmentPageHandler.cs" /> <Compile Include="Core\HistoryAppointmentPageHandler.cs" />
<Compile Include="Core\HistoryMenuPageHandler.cs" /> <Compile Include="Core\HistoryMenuPageHandler.cs" />
<Compile Include="Core\HistoryVisitPageHandler.cs" /> <Compile Include="Core\HistoryVisitPageHandler.cs" />
<Compile Include="Core\MenuPageHandler.cs" /> <Compile Include="Core\MenuPageHandler.cs" />
<Compile Include="Core\MenuPageHandler.FindAppointment.cs" /> <Compile Include="Core\MenuPageHandler.FindAppointment.cs" />
<Compile Include="Core\SubmitVisitInfoResultHandler.cs" />
<Compile Include="Handlers.cs" /> <Compile Include="Handlers.cs" />
<Compile Include="LocalSetting.cs" /> <Compile Include="LocalSetting.cs" />
<Compile Include="Program.cs" /> <Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Remote\Models\Appointment.cs" /> <Compile Include="Remote\Models\Appointment.cs" />
<Compile Include="Remote\Models\WebApiCollectionResponseBody.cs" />
<Compile Include="Remote\Models\WebApiPagingResponseBody.cs" />
<Compile Include="Remote\Models\WebApiResponseBody.cs" />
<Compile Include="Remote\WebApi.cs" /> <Compile Include="Remote\WebApi.cs" />
<Compile Include="ThirdAddon\DeviceManager.cs" /> <Compile Include="ThirdAddon\DeviceManager.cs" />
<Compile Include="ThirdAddon\FaceRecognization.cs" /> <Compile Include="ThirdAddon\FaceRecognization.cs" />
......
...@@ -31,7 +31,7 @@ namespace GS.Terminal.VisitorSelfService.Logic ...@@ -31,7 +31,7 @@ namespace GS.Terminal.VisitorSelfService.Logic
{ {
public string WebPath { get; set; } public string WebPath { get; set; }
public string ServerIP { get; set; } public string ServerIP { get; set; }
public string dCode { get; set; } public string tCode { get; set; }
} }
public class ServiceList : IStructureSetting<ServiceListItem> public class ServiceList : IStructureSetting<ServiceListItem>
......
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GS.Terminal.VisitorSelfService.Logic.Remote.Models
{
public class WebApiCollectionResponseBody<RECORDT> : WebApiResponseBody
{
public List<RECORDT> records { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Drawing.Imaging;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GS.Terminal.VisitorSelfService.Logic.Remote.Models
{
public class WebApiPagingResponseBody<RECORDT> : WebApiCollectionResponseBody<RECORDT>
{
public Paging paging { get; set; }
}
public class Paging
{
public int currentIndex { get; set; }
public int totalPage { get; set; }
public int totalRecord { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GS.Terminal.VisitorSelfService.Logic.Remote.Models
{
public class WebApiResponseBody
{
public bool Status { get; set; }
public string Message { get; set; }
}
}
...@@ -60,5 +60,13 @@ namespace GS.Terminal.VisitorSelfService.Logic.ThirdAddon ...@@ -60,5 +60,13 @@ namespace GS.Terminal.VisitorSelfService.Logic.ThirdAddon
{ {
return _Service?.MathFaceData(origin, toMatch); return _Service?.MathFaceData(origin, toMatch);
} }
/// <summary>
/// 拍照
/// </summary>
/// <returns></returns>
public static Bitmap GetCurrentVideoFrame()
{
return _Service?.GetCurrentVideoFrame();
}
} }
} }
...@@ -12,6 +12,14 @@ namespace ViewModels ...@@ -12,6 +12,14 @@ namespace ViewModels
{ {
public string ViewID => "7ba312aa-b0a2-4136-badc-52e362ddedad"; public string ViewID => "7ba312aa-b0a2-4136-badc-52e362ddedad";
private string _TCODE;
public string TCODE
{
get { return _TCODE; }
set { _TCODE = value; RaisePropertyChanged("TCODE"); }
}
public void Reset() public void Reset()
{ {
......
using GalaSoft.MvvmLight;
using GS.Terminal.LogicShell.Interface;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ViewModels
{
public class Head : ViewModelBase, IViewModel
{
public string ViewID => "e6e8e46f-c8e6-4f34-b088-bba5b9276276";
public void Reset()
{
}
}
}
...@@ -18,6 +18,7 @@ namespace ViewModels ...@@ -18,6 +18,7 @@ namespace ViewModels
{ {
ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default); ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
CheckRegistVM<Foot>(); CheckRegistVM<Foot>();
CheckRegistVM<Head>();
CheckRegistVM<Pages.MenuPage.ViewModel>(); CheckRegistVM<Pages.MenuPage.ViewModel>();
CheckRegistVM<Pages.AuthenticationPage.ViewModel>(); CheckRegistVM<Pages.AuthenticationPage.ViewModel>();
CheckRegistVM<Pages.AppointmentDetailPage.ViewModel>(); CheckRegistVM<Pages.AppointmentDetailPage.ViewModel>();
...@@ -25,6 +26,7 @@ namespace ViewModels ...@@ -25,6 +26,7 @@ namespace ViewModels
CheckRegistVM<Pages.HistoryAppointmentPage.ViewModel>(); CheckRegistVM<Pages.HistoryAppointmentPage.ViewModel>();
CheckRegistVM<Pages.HistoryMenuPage.ViewModel>(); CheckRegistVM<Pages.HistoryMenuPage.ViewModel>();
CheckRegistVM<PopWindows.FeatureCompare.ViewModel>(); CheckRegistVM<PopWindows.FeatureCompare.ViewModel>();
CheckRegistVM<Pages.SubmitVisitInfoResult.ViewModel>();
} }
private void CheckRegistVM<T>() where T : class private void CheckRegistVM<T>() where T : class
...@@ -46,6 +48,13 @@ namespace ViewModels ...@@ -46,6 +48,13 @@ namespace ViewModels
} }
} }
public Head Head
{
get
{
return SimpleIoc.Default.GetInstance<Head>();
}
}
public Pages.MenuPage.ViewModel MenuPage public Pages.MenuPage.ViewModel MenuPage
{ {
get get
...@@ -101,5 +110,13 @@ namespace ViewModels ...@@ -101,5 +110,13 @@ namespace ViewModels
return SimpleIoc.Default.GetInstance<PopWindows.FeatureCompare.ViewModel>(); return SimpleIoc.Default.GetInstance<PopWindows.FeatureCompare.ViewModel>();
} }
} }
public Pages.SubmitVisitInfoResult.ViewModel SubmitVisitInfoResult
{
get
{
return SimpleIoc.Default.GetInstance<Pages.SubmitVisitInfoResult.ViewModel>();
}
}
} }
} }
...@@ -27,11 +27,20 @@ namespace ViewModels.Pages.AppointmentDetailPage ...@@ -27,11 +27,20 @@ namespace ViewModels.Pages.AppointmentDetailPage
RaisePropertyChanged("Appointment"); RaisePropertyChanged("Appointment");
RaisePropertyChanged(nameof(ShowLeftBtn)); RaisePropertyChanged(nameof(ShowLeftBtn));
RaisePropertyChanged(nameof(ShowRightBtn)); RaisePropertyChanged(nameof(ShowRightBtn));
RaisePropertyChanged(nameof(HasExtendInfo));
ShowExtendInfo = Visibility.Collapsed; ShowExtendInfo = Visibility.Collapsed;
} }
} }
private Visibility ShowLeftBtn public bool HasExtendInfo
{
get
{
return Appointment?.extends?.Count > 0;
}
}
public Visibility ShowLeftBtn
{ {
get get
{ {
...@@ -48,7 +57,7 @@ namespace ViewModels.Pages.AppointmentDetailPage ...@@ -48,7 +57,7 @@ namespace ViewModels.Pages.AppointmentDetailPage
} }
} }
private Visibility ShowRightBtn public Visibility ShowRightBtn
{ {
get get
{ {
...@@ -73,6 +82,14 @@ namespace ViewModels.Pages.AppointmentDetailPage ...@@ -73,6 +82,14 @@ namespace ViewModels.Pages.AppointmentDetailPage
set { _ShowExtendInfo = value; RaisePropertyChanged("ShowExtendInfo"); } set { _ShowExtendInfo = value; RaisePropertyChanged("ShowExtendInfo"); }
} }
private bool _ShowConfirm;
public bool ShowConfirm
{
get { return _ShowConfirm; }
set { _ShowConfirm = value; RaisePropertyChanged("ShowConfirm"); }
}
public RelayCommand ShowExtendInfoCommand => new RelayCommand(() => public RelayCommand ShowExtendInfoCommand => new RelayCommand(() =>
{ {
...@@ -103,9 +120,21 @@ namespace ViewModels.Pages.AppointmentDetailPage ...@@ -103,9 +120,21 @@ namespace ViewModels.Pages.AppointmentDetailPage
}); });
public event Action<AppointmentItem> OnSubmitClick; public event Action<AppointmentItem> OnSubmitClick;
public RelayCommand<AppointmentItem> SubmitCommand => new RelayCommand<AppointmentItem>(info => public RelayCommand SubmitCommand => new RelayCommand(() =>
{
ShowConfirm = true;
//OnSubmitClick?.Invoke(info);
});
public RelayCommand ConfirmClose => new RelayCommand(() =>
{
ShowConfirm = false;
});
public RelayCommand ConfirmYes => new RelayCommand(() =>
{ {
OnSubmitClick?.Invoke(info); ShowConfirm = false;
OnSubmitClick?.Invoke(Appointment);
}); });
public void Reset() public void Reset()
...@@ -117,6 +146,7 @@ namespace ViewModels.Pages.AppointmentDetailPage ...@@ -117,6 +146,7 @@ namespace ViewModels.Pages.AppointmentDetailPage
public class AppointmentItem public class AppointmentItem
{ {
public Guid id { get; set; }
public string visitorName { get; set; } public string visitorName { get; set; }
public string photoUrl { get; set; } public string photoUrl { get; set; }
public string idCardNum { get; set; } public string idCardNum { get; set; }
......
using GalaSoft.MvvmLight;
using GS.Terminal.LogicShell.Interface;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ViewModels.Pages.SubmitVisitInfoResult
{
public class ViewModel : ViewModelBase, IViewModel
{
public string ViewID => "cc808936-9d19-4e9c-86b7-3620cedd72fe";
public void Reset()
{
}
}
}
...@@ -65,6 +65,7 @@ ...@@ -65,6 +65,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="Foot.cs" /> <Compile Include="Foot.cs" />
<Compile Include="Head.cs" />
<Compile Include="Locator.cs" /> <Compile Include="Locator.cs" />
<Compile Include="Pages\AppointmentDetailPage\ViewModel.cs" /> <Compile Include="Pages\AppointmentDetailPage\ViewModel.cs" />
<Compile Include="Pages\AuthenticationPage\ViewModel.cs" /> <Compile Include="Pages\AuthenticationPage\ViewModel.cs" />
...@@ -72,6 +73,7 @@ ...@@ -72,6 +73,7 @@
<Compile Include="Pages\HistoryMenuPage\ViewModel.cs" /> <Compile Include="Pages\HistoryMenuPage\ViewModel.cs" />
<Compile Include="Pages\HistoryVisitPage\ViewModel.cs" /> <Compile Include="Pages\HistoryVisitPage\ViewModel.cs" />
<Compile Include="Pages\MenuPage\ViewModel.cs" /> <Compile Include="Pages\MenuPage\ViewModel.cs" />
<Compile Include="Pages\SubmitVisitInfoResult\ViewModel.cs" />
<Compile Include="PopWindows\FeatureCompare\ViewModel.cs" /> <Compile Include="PopWindows\FeatureCompare\ViewModel.cs" />
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup> </ItemGroup>
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
d:DesignHeight="45" d:DesignWidth="1080" d:DesignHeight="45" d:DesignWidth="1080"
Title="Foot"> Title="Foot">
<Grid> <Grid>
<TextBlock Text="设备编号: SYL106" Foreground="White" HorizontalAlignment="Right" VerticalAlignment="Center" FontSize="24"/> <TextBlock Text="{Binding TCODE,StringFormat={}设备编号: {0}}" Foreground="White" HorizontalAlignment="Right" VerticalAlignment="Center" FontSize="24"/>
<TextBlock Text="青岛通软网络科技有限公司" Foreground="White" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="24"/> <TextBlock Text="青岛通软网络科技有限公司" Foreground="White" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="24"/>
</Grid> </Grid>
</Page> </Page>
<Page x:Class="Views.Head"
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:local="clr-namespace:Views"
mc:Ignorable="d"
d:DesignHeight="180" d:DesignWidth="800"
Title="Head">
<Grid>
<Border Width="100" Height="100" CornerRadius="50"
HorizontalAlignment="Right" Margin="0,0,30,0"
BorderThickness="4" BorderBrush="#4070ff">
<TextBlock Foreground="#4070ff" HorizontalAlignment="Center" VerticalAlignment="Center"
FontSize="60"
Text="59">
</TextBlock>
</Border>
</Grid>
</Page>
using GS.Terminal.LogicShell.Attributes;
using GS.Terminal.LogicShell.Interface;
using GS.Unitive.Framework.Security.Core;
using System;
using System.Collections.Generic;
using System.ComponentModel.Composition;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace Views
{
/// <summary>
/// Head.xaml 的交互逻辑
/// </summary>
[MainShellPartView(PartType.HEAD)]
[Export(typeof(IView))]
[UnitiveView("头部", "", "e6e8e46f-c8e6-4f34-b088-bba5b9276276", null)]
public partial class Head : Page, IView
{
public Head()
{
InitializeComponent();
}
public void BindDataContext(IViewModel vm)
{
DataContext = vm;
}
public object Clone()
{
throw new NotImplementedException();
}
public void GoBack()
{
throw new NotImplementedException();
}
public void GoForward()
{
throw new NotImplementedException();
}
public void NavigateToContent(object content)
{
throw new NotImplementedException();
}
public void Reset()
{
throw new NotImplementedException();
}
}
}
...@@ -13,8 +13,34 @@ ...@@ -13,8 +13,34 @@
<ResourceDictionary.MergedDictionaries> <ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Style.xaml"/> <ResourceDictionary Source="Style.xaml"/>
</ResourceDictionary.MergedDictionaries> </ResourceDictionary.MergedDictionaries>
<BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/>
<Storyboard x:Key="SB_ConfirmIn">
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)" Storyboard.TargetName="confirm">
<EasingDoubleKeyFrame KeyTime="0:0:0.2" Value="0">
<EasingDoubleKeyFrame.EasingFunction>
<BackEase EasingMode="EaseOut" Amplitude="1"/>
</EasingDoubleKeyFrame.EasingFunction>
</EasingDoubleKeyFrame>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
<Storyboard x:Key="SB_ConfirmOut">
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)" Storyboard.TargetName="confirm">
<EasingDoubleKeyFrame KeyTime="0" Value="0"/>
<EasingDoubleKeyFrame KeyTime="0:0:0.1" Value="475"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</ResourceDictionary> </ResourceDictionary>
</Page.Resources> </Page.Resources>
<Page.Triggers>
<EventTrigger RoutedEvent="ToggleButton.Checked" SourceName="chk_showconfirm">
<BeginStoryboard Storyboard="{StaticResource SB_ConfirmIn}"/>
</EventTrigger>
<EventTrigger RoutedEvent="ToggleButton.Unchecked" SourceName="chk_showconfirm">
<BeginStoryboard x:Name="SB_ConfirmOut_BeginStoryboard" Storyboard="{StaticResource SB_ConfirmOut}"/>
</EventTrigger>
</Page.Triggers>
<Grid> <Grid>
<Grid Margin="0,110,0,0"> <Grid Margin="0,110,0,0">
<Grid.RowDefinitions> <Grid.RowDefinitions>
...@@ -34,22 +60,19 @@ ...@@ -34,22 +60,19 @@
<Border Grid.Column="1" CornerRadius="5" <Border Grid.Column="1" CornerRadius="5"
Padding="31,31,31,0" BorderThickness="4" BorderBrush="#e5e4e6"> Padding="31,31,31,0" BorderThickness="4" BorderBrush="#e5e4e6">
<StackPanel> <StackPanel>
<Image Source="{Binding Appointment.photoUrl}" Width="260" Height="370"/> <Image Source="{Binding Appointment.photoUrl}" Stretch="Fill" Width="260" Height="370"/>
<TextBlock Text="{Binding Appointment.visitorName}" FontSize="42" HorizontalAlignment="Center" Margin="0,5,0,0"/> <TextBlock Text="{Binding Appointment.visitorName}" FontSize="42" HorizontalAlignment="Center" Margin="0,5,0,0"/>
</StackPanel> </StackPanel>
</Border> </Border>
<Button Width="100" Height="100" HorizontalAlignment="Left" <Button Width="100" Height="100" HorizontalAlignment="Left"
Command="{Binding ShowExtendInfoCommand}" Command="{Binding ShowExtendInfoCommand}"
Visibility="{Binding HasExtendInfo, Converter={StaticResource BooleanToVisibilityConverter}}"
VerticalAlignment="Bottom" Margin="20,0,0,0" Grid.Column="2"> VerticalAlignment="Bottom" Margin="20,0,0,0" Grid.Column="2">
<Button.Template> <Button.Template>
<ControlTemplate TargetType="Button"> <ControlTemplate TargetType="{x:Type Button}">
<Border x:Name="PART_bg" BorderThickness="1" BorderBrush="#e1e0df" CornerRadius="5"> <Border x:Name="PART_bg" BorderThickness="1" BorderBrush="#e1e0df" CornerRadius="5">
<TextBlock FontSize="26" <TextBlock FontSize="26"
HorizontalAlignment="Center" VerticalAlignment="Center"> HorizontalAlignment="Center" VerticalAlignment="Center"><Run Text="附加"/><LineBreak/><Run Text="信息"/></TextBlock>
<Run Text="附加"/>
<LineBreak/>
<Run Text="信息"/>
</TextBlock>
</Border> </Border>
<ControlTemplate.Triggers> <ControlTemplate.Triggers>
<Trigger Property="IsPressed" Value="True"> <Trigger Property="IsPressed" Value="True">
...@@ -89,37 +112,41 @@ ...@@ -89,37 +112,41 @@
<ContentControl Grid.Row="2" Template="{StaticResource AppointmentDetailPage_Line}" Grid.ColumnSpan="2"/> <ContentControl Grid.Row="2" Template="{StaticResource AppointmentDetailPage_Line}" Grid.ColumnSpan="2"/>
<TextBlock Text="来访日期" Grid.Row="3" Style="{StaticResource AppointmentDetailPage_Title}"/> <TextBlock Text="来访日期" Grid.Row="3" Style="{StaticResource AppointmentDetailPage_Title}"/>
<TextBlock Grid.Row="3" Style="{StaticResource AppointmentDetailPage_Value}"> <TextBlock Grid.Row="3" Style="{StaticResource AppointmentDetailPage_Value}"><Run Text="{Binding Appointment.startDate, StringFormat=\{0:yyyy-MM-dd\}}"/><Run Text=" "/><Run Text=" 到 "/><Run Text=" "/><Run Text="{Binding Appointment.endDate, StringFormat=\{0:yyyy-MM-dd\}}"/></TextBlock>
<Run Text="{Binding Appointment.startDate,StringFormat={}{0:yyyy-MM-dd}}"/>
<Run Text=" 到 "/>
<Run Text="{Binding Appointment.endDate,StringFormat={}{0:yyyy-MM-dd}}"/>
</TextBlock>
<TextBlock Text="来访区域" Grid.Row="4" Style="{StaticResource AppointmentDetailPage_Title}"/> <TextBlock Text="来访区域" Grid.Row="4" Style="{StaticResource AppointmentDetailPage_Title}"/>
<TextBlock Text="{Binding Appointment.photoUrl}" Grid.Row="4" Style="{StaticResource AppointmentDetailPage_Value}"/> <TextBlock Text="{Binding Appointment.areaName}" Grid.Row="4" Style="{StaticResource AppointmentDetailPage_Value}"/>
<TextBlock Text="来访人数" Grid.Row="5" Style="{StaticResource AppointmentDetailPage_Title}"/> <TextBlock Text="来访人数" Grid.Row="5" Style="{StaticResource AppointmentDetailPage_Title}"/>
<TextBlock Text="{Binding Appointment.photoUrl,StringFormat={}{0}人}" Grid.Row="5" Style="{StaticResource AppointmentDetailPage_Value}"/> <TextBlock Text="{Binding Appointment.visitPeople, StringFormat=\{0\}人}" Grid.Row="5" Style="{StaticResource AppointmentDetailPage_Value}"/>
<ContentControl Grid.Row="6" Template="{StaticResource AppointmentDetailPage_Line}" Grid.ColumnSpan="2"/> <ContentControl Grid.Row="6" Template="{StaticResource AppointmentDetailPage_Line}" Grid.ColumnSpan="2"/>
<TextBlock Text="被访人" Grid.Row="7" Style="{StaticResource AppointmentDetailPage_Title}"/> <TextBlock Text="被访人" Grid.Row="7" Style="{StaticResource AppointmentDetailPage_Title}"/>
<TextBlock Text="{Binding Appointment.photoUrl}" TextWrapping="WrapWithOverflow" Grid.Row="7" Style="{StaticResource AppointmentDetailPage_Value}"/> <TextBlock Text="{Binding Appointment.beVisitPerson}" TextWrapping="WrapWithOverflow" Grid.Row="7" Style="{StaticResource AppointmentDetailPage_Value}"/>
</Grid> </Grid>
<!--按钮--> <!--按钮-->
<StackPanel Grid.Row="2"> <StackPanel Grid.Row="2">
<gs:ImageButtonFix Width="1010" Height="230" Image="/Views;component/Resources/detail_submit.png"/> <gs:ImageButtonFix Command="{Binding SubmitCommand}" Width="1010" Height="230" Image="/Views;component/Resources/detail_submit.png"/>
<gs:ImageButtonFix Command="{Binding ExitCommand}" Width="1010" Height="190" Image="/Views;component/Resources/detail_cancel.png"/> <gs:ImageButtonFix Command="{Binding ExitCommand}" Width="1010" Height="190" Image="/Views;component/Resources/detail_cancel.png"/>
</StackPanel> </StackPanel>
</Grid> </Grid>
<!--附加信息--> <!--附加信息-->
<Grid Background="Transparent" Grid.RowSpan="3"> <ContentControl d:IsHidden="True" Template="{StaticResource AppointmentDetailPage_ExtendInfo}" Visibility="{Binding ShowExtendInfo}"/>
<Border Width="920" Height="1630" BorderThickness="6" <ContentControl Template="{StaticResource AppointmentDetailPage_Confirm}"
CornerRadius="10" x:Name="confirm"
Background="#ffffff" BorderBrush="#f1f1f1"> RenderTransformOrigin="0.5,0.5">
<ContentControl.RenderTransform>
<TransformGroup>
<ScaleTransform/>
<SkewTransform/>
<RotateTransform/>
<TranslateTransform Y="475"/>
</TransformGroup>
</ContentControl.RenderTransform>
</Border> </ContentControl>
</Grid> <CheckBox x:Name="chk_showconfirm" IsChecked="{Binding ShowConfirm}" Visibility="Collapsed"/>
</Grid> </Grid>
</Page> </Page>
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:gs="clr-namespace:Develop.Extension.Wpf;assembly=Develop.Extension.Wpf"
xmlns:local="clr-namespace:Views.Pages.AppointmentDetailPage"> xmlns:local="clr-namespace:Views.Pages.AppointmentDetailPage">
<ControlTemplate x:Key="AppointmentDetailPage_Line" TargetType="ContentControl"> <ControlTemplate x:Key="AppointmentDetailPage_Line" TargetType="ContentControl">
<StackPanel VerticalAlignment="Center"> <StackPanel VerticalAlignment="Center">
...@@ -24,4 +25,144 @@ ...@@ -24,4 +25,144 @@
<Setter Property="TextTrimming" Value="CharacterEllipsis"/> <Setter Property="TextTrimming" Value="CharacterEllipsis"/>
<Setter Property="Foreground" Value="#2a2b2d"/> <Setter Property="Foreground" Value="#2a2b2d"/>
</Style> </Style>
<ControlTemplate x:Key="AppointmentDetailPage_ExtendInfoListTemplate" TargetType="ListView">
<ScrollViewer HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto"
Style="{DynamicResource scrollviewerStyle}">
<ItemsPresenter/>
</ScrollViewer>
</ControlTemplate>
<ItemsPanelTemplate x:Key="AppointmentDetailPage_ExtendInfoListItemsPanel">
<StackPanel/>
</ItemsPanelTemplate>
<Style x:Key="AppointmentDetailPage_ExtendInfoListItemStyle" TargetType="ListViewItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListViewItem">
<Border VerticalAlignment="Top" Margin="0,60,0,0"
BorderThickness="0,0,0,2" BorderBrush="#e1e2e3">
<Border BorderThickness="0,0,0,2" BorderBrush="#f4f4f4"
Padding="0,0,0,20">
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<TextBlock Text="{Binding groupName}" FontSize="40"/>
<ListView Grid.Row="1" ItemsSource="{Binding items}">
<ListView.Template>
<ControlTemplate TargetType="ListView">
<ItemsPresenter/>
</ControlTemplate>
</ListView.Template>
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel/>
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Style.Triggers>
<DataTrigger Binding="{Binding infotype}" Value="text">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListViewItem">
<Grid Margin="0,20,0,20" Height="auto">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="2*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding title}" Foreground="#787f8e" FontSize="36"
TextWrapping="Wrap"
HorizontalAlignment="Left"/>
<TextBlock Text="{Binding content}"
TextWrapping="NoWrap" TextTrimming="CharacterEllipsis"
Foreground="#2a2b2d" FontSize="36"
Grid.Column="1" HorizontalAlignment="Right"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
<DataTrigger Binding="{Binding infotype}" Value="image">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListViewItem">
<Grid Margin="0,20,0,20" Height="auto">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="2*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding title}"
TextWrapping="Wrap" VerticalAlignment="Center"
Foreground="#787f8e" FontSize="36"
HorizontalAlignment="Left"/>
<Image Grid.Column="1" Margin="80,0,0,0"
HorizontalAlignment="Right" Stretch="Fill"
Source="{Binding content}"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</ListView.ItemContainerStyle>
</ListView>
</Grid>
</Border>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<ControlTemplate x:Key="AppointmentDetailPage_ExtendInfo" TargetType="ContentControl">
<Grid Background="Transparent" >
<Border Width="920" Height="1630" BorderThickness="6"
CornerRadius="15" Padding="45,25,45,25"
Background="#ffffff" BorderBrush="#f1f1f1">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="100"/>
<RowDefinition/>
</Grid.RowDefinitions>
<TextBlock Text="附加信息" Foreground="#2a2b2d" HorizontalAlignment="Left" VerticalAlignment="Center" FontSize="48"/>
<gs:IconButton Icon="圆圈叉号" HorizontalAlignment="Right"
Command="{Binding CloseExtendInfoCommand}"
VerticalAlignment="Center" FontSize="100"/>
<ListView Grid.Row="1" Template="{StaticResource AppointmentDetailPage_ExtendInfoListTemplate}"
ItemsSource="{Binding Appointment.extends}"
ItemsPanel="{StaticResource AppointmentDetailPage_ExtendInfoListItemsPanel}"
ItemContainerStyle="{StaticResource AppointmentDetailPage_ExtendInfoListItemStyle}"/>
</Grid>
</Border>
</Grid>
</ControlTemplate>
<ControlTemplate x:Key="AppointmentDetailPage_Confirm" TargetType="ContentControl">
<Border Grid.Row="2" Height="420" Background="White"
BorderThickness="6" CornerRadius="15" BorderBrush="#f1f1f1"
Margin="50,0,50,50" Padding="50"
VerticalAlignment="Bottom" >
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition Height="160"/>
</Grid.RowDefinitions>
<TextBlock Text="确定提交到访信息?" FontSize="48"
HorizontalAlignment="Center" VerticalAlignment="Center"
TextWrapping="Wrap"/>
<StackPanel Grid.Row="1" Orientation="Horizontal" HorizontalAlignment="Center">
<gs:ImageButtonFix Command="{Binding ConfirmClose}" Width="360" Height="160" Image="/Views;component/Resources/confirm-no.png"/>
<gs:ImageButtonFix Command="{Binding ConfirmYes}" Width="360" Height="160" Image="/Views;component/Resources/confirm-yes.png"/>
</StackPanel>
</Grid>
</Border>
</ControlTemplate>
</ResourceDictionary> </ResourceDictionary>
\ No newline at end of file
<Page x:Class="Views.Pages.SubmitVisitInfoResult.Index"
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:local="clr-namespace:Views.Pages.SubmitVisitInfoResult"
mc:Ignorable="d"
d:DesignHeight="1695" d:DesignWidth="1080"
Title="Index">
<Page.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Style.xaml"/>
<ResourceDictionary Source="../../Resources/CommonDictionary.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Page.Resources>
<Grid>
<StackPanel VerticalAlignment="Center">
<Image Source="/Views;component/Resources/result_correct.png"
Width="330" Height="330"
HorizontalAlignment="Center" VerticalAlignment="Center"/>
<TextBlock Text="登记成功!" Foreground="#62ba67" FontSize="72" Margin="0,50,0,0"/>
<TextBlock Text="欢迎来访,您已获得通行权限可以在来访区域通行了!" FontSize="36" Margin="0,70,0,0"/>
<TextBlock Text="5秒后自动跳转至首页" Margin="0,216,0,0" FontSize="24"/>
<Button Width="460" Height="80" Margin="0,70,0,0" Template="{StaticResource CommonButton}" Content="返回首页" FontSize="36"/>
</StackPanel>
</Grid>
</Page>
using GS.Terminal.LogicShell.Interface;
using GS.Unitive.Framework.Security.Core;
using System;
using System.Collections.Generic;
using System.ComponentModel.Composition;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace Views.Pages.SubmitVisitInfoResult
{
/// <summary>
/// Index.xaml 的交互逻辑
/// </summary>
[Export(typeof(IView))]
[UnitiveView("登记结果显示", "", "cc808936-9d19-4e9c-86b7-3620cedd72fe", null)]
public partial class Index : Page, IView
{
public Index()
{
InitializeComponent();
}
public void BindDataContext(IViewModel vm)
{
DataContext = vm;
}
public object Clone()
{
throw new NotImplementedException();
}
public void GoBack()
{
throw new NotImplementedException();
}
public void GoForward()
{
throw new NotImplementedException();
}
public void NavigateToContent(object content)
{
throw new NotImplementedException();
}
public void Reset()
{
throw new NotImplementedException();
}
}
}
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:Views.Pages.SubmitVisitInfoResult">
<Style TargetType="TextBlock">
<Setter Property="HorizontalAlignment" Value="Center"/>
<Setter Property="Foreground" Value="#2a2b2d"/>
</Style>
</ResourceDictionary>
\ No newline at end of file
...@@ -67,6 +67,9 @@ ...@@ -67,6 +67,9 @@
<Compile Include="Foot.xaml.cs"> <Compile Include="Foot.xaml.cs">
<DependentUpon>Foot.xaml</DependentUpon> <DependentUpon>Foot.xaml</DependentUpon>
</Compile> </Compile>
<Compile Include="Head.xaml.cs">
<DependentUpon>Head.xaml</DependentUpon>
</Compile>
<Compile Include="Pages\AppointmentDetailPage\Index.xaml.cs"> <Compile Include="Pages\AppointmentDetailPage\Index.xaml.cs">
<DependentUpon>Index.xaml</DependentUpon> <DependentUpon>Index.xaml</DependentUpon>
</Compile> </Compile>
...@@ -85,6 +88,9 @@ ...@@ -85,6 +88,9 @@
<Compile Include="Pages\MenuPage\Index.xaml.cs"> <Compile Include="Pages\MenuPage\Index.xaml.cs">
<DependentUpon>Index.xaml</DependentUpon> <DependentUpon>Index.xaml</DependentUpon>
</Compile> </Compile>
<Compile Include="Pages\SubmitVisitInfoResult\Index.xaml.cs">
<DependentUpon>Index.xaml</DependentUpon>
</Compile>
<Compile Include="PopWindows\FeatureCompare\Index.xaml.cs"> <Compile Include="PopWindows\FeatureCompare\Index.xaml.cs">
<DependentUpon>Index.xaml</DependentUpon> <DependentUpon>Index.xaml</DependentUpon>
</Compile> </Compile>
...@@ -116,6 +122,10 @@ ...@@ -116,6 +122,10 @@
<SubType>Designer</SubType> <SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
</Page> </Page>
<Page Include="Head.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Pages\AppointmentDetailPage\Index.xaml"> <Page Include="Pages\AppointmentDetailPage\Index.xaml">
<SubType>Designer</SubType> <SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
...@@ -152,6 +162,14 @@ ...@@ -152,6 +162,14 @@
<SubType>Designer</SubType> <SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
</Page> </Page>
<Page Include="Pages\SubmitVisitInfoResult\Index.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Pages\SubmitVisitInfoResult\Style.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="PopWindows\FeatureCompare\Index.xaml"> <Page Include="PopWindows\FeatureCompare\Index.xaml">
<SubType>Designer</SubType> <SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
...@@ -165,7 +183,10 @@ ...@@ -165,7 +183,10 @@
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
</Page> </Page>
</ItemGroup> </ItemGroup>
<ItemGroup /> <ItemGroup>
<Resource Include="Resources\confirm-no.png" />
<Resource Include="Resources\confirm-yes.png" />
</ItemGroup>
<ItemGroup> <ItemGroup>
<Resource Include="Resources\menu_btn_has.png" /> <Resource Include="Resources\menu_btn_has.png" />
<Resource Include="Resources\menu_btn_no.png" /> <Resource Include="Resources\menu_btn_no.png" />
...@@ -194,5 +215,8 @@ ...@@ -194,5 +215,8 @@
<Resource Include="Resources\detail_left.png" /> <Resource Include="Resources\detail_left.png" />
<Resource Include="Resources\detail_right.png" /> <Resource Include="Resources\detail_right.png" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<Resource Include="Resources\result_correct.png" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project> </Project>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment