关联摄像头

This commit is contained in:
李超 2023-02-01 16:23:55 +08:00
parent 1d18cfbbf1
commit 9cd1860db1
16 changed files with 829 additions and 69 deletions

View File

@ -0,0 +1,44 @@
CREATE TABLE [dbo].[Information_UrgeReport](
[UrgeReportId] [nvarchar](50) NOT NULL,
[UnitId] [nvarchar](50) NULL,
[ReprotType] [nvarchar](50) NULL,
[YearId] [nvarchar](50) NULL,
[MonthId] [nvarchar](50) NULL,
[QuarterId] [nvarchar](50) NULL,
[HalfYearId] [nvarchar](50) NULL,
[UrgeDate] [datetime] NULL,
[IsComplete] [bit] NULL,
[IsCancel] [bit] NULL,
CONSTRAINT [PK_Information_UrgeReport] PRIMARY KEY CLUSTERED
(
[UrgeReportId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[Information_UrgeReport] WITH CHECK ADD CONSTRAINT [FK_Information_UrgeReport_Base_Unit] FOREIGN KEY([UnitId])
REFERENCES [dbo].[Base_Unit] ([UnitId])
GO
ALTER TABLE [dbo].[Information_UrgeReport] CHECK CONSTRAINT [FK_Information_UrgeReport_Base_Unit]
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'催报id' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Information_UrgeReport', @level2type=N'COLUMN',@level2name=N'UrgeReportId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'单位id' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Information_UrgeReport', @level2type=N'COLUMN',@level2name=N'UnitId'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N' 报表类型' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Information_UrgeReport', @level2type=N'COLUMN',@level2name=N'ReprotType'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'是否上报' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Information_UrgeReport', @level2type=N'COLUMN',@level2name=N'IsComplete'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'安全信息催报表' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Information_UrgeReport'
GO

View File

@ -0,0 +1,41 @@
ALTER VIEW [dbo].[View_Training_TestTrainingItem] AS
/*ÅàѵÊÔÌâÐÅÏ¢ÊÓͼ*/
SELECT Training.TrainingId
,Training.TrainingCode
,Training.TrainingName
,Item.TrainingItemId
,Item.TrainingItemCode
,Item.TrainingItemName
,Item.Abstracts
,Item.AbstractsEng
,Item.AttachUrl
,Item.VersionNum
,Item.TestType
,Item.WorkPostIds
,Item.WorkPostNames
,Item.AItem
,Item.BItem
,Item.CItem
,Item.DItem
,Item.EItem
,Item.AItemEng
,Item.BItemEng
,Item.CItemEng
,Item.DItemEng
,Item.EItemEng
--,Item.Score
,Item.AnswerItems
,Item.DepartIds
,Item.DepartNames
FROM dbo.Training_TestTrainingItem AS Item
LEFT JOIN Training_TestTraining AS Training ON Item.TrainingId = Training.TrainingId

View File

@ -637,6 +637,9 @@ namespace BLL
/// <returns></returns>
public static string CreateGetHttpResponse(string url)
{
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, errors) => true;
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;//创建请求对象
request.Method = "Get";//请求方式
request.ContentType = "application/x-www-form-urlencoded";//链接类型

View File

@ -1638,3 +1638,41 @@ IP地址:::1
出错时间:01/13/2023 09:07:08
错误信息开始=====>
错误类型:NullReferenceException
错误信息:未将对象引用设置到对象的实例。
错误堆栈:
在 FineUIPro.Web.indexProject.Page_Load(Object sender, EventArgs e) 位置 D:\project\vs\sggl_cd\SGGL\FineUIPro.Web\indexProject.aspx.cs:行号 354
在 System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
在 System.EventHandler.Invoke(Object sender, EventArgs e)
在 System.Web.UI.Control.OnLoad(EventArgs e)
在 System.Web.UI.Control.LoadRecursive()
在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
出错时间:02/01/2023 14:45:44
出错文件:http://localhost:8119/indexProject.aspx
IP地址:::1
出错时间:02/01/2023 14:45:44
错误信息开始=====>
错误类型:InvalidCastException
错误信息:无法将类型为“System.String”的对象强制转换为类型“Newtonsoft.Json.Linq.JObject”。
错误堆栈:
在 FineUIPro.Web.ProjectData.ProjectMonitorList.get_Devices() 位置 D:\project\vs\sggl_cd\SGGL\FineUIPro.Web\ProjectData\ProjectMonitorList.aspx.cs:行号 48
在 FineUIPro.Web.ProjectData.ProjectMonitorList.BindGrid() 位置 D:\project\vs\sggl_cd\SGGL\FineUIPro.Web\ProjectData\ProjectMonitorList.aspx.cs:行号 157
在 FineUIPro.Web.ProjectData.ProjectMonitorList.Page_Load(Object sender, EventArgs e) 位置 D:\project\vs\sggl_cd\SGGL\FineUIPro.Web\ProjectData\ProjectMonitorList.aspx.cs:行号 103
在 System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
在 System.EventHandler.Invoke(Object sender, EventArgs e)
在 System.Web.UI.Control.OnLoad(EventArgs e)
在 System.Web.UI.Control.LoadRecursive()
在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
出错时间:02/01/2023 15:55:02
出错文件:http://localhost:8119/ProjectData/ProjectMonitorList.aspx?ProjectCode=E22039&Id=19&URLToken=O3oKppv2KKXDL5EcBs7re7C2JCwujSEhBzJelpGw-EV.oxNjc1ODQyODk5LCJwIjoiNGEyZDhmYThiNWU1ZDNkMGFjNTAxODA5YmRjMWE5MzI3N2EyZDk1ZGM4ZDc0OWUxNjkxZTcxMDcyOGE0M2Q1NyIsInQiOjE2NzUyMzgwOTksInUiOiIxOTc4ZDBmMmU5In0eyJlIj.GciOiJIUzI1NiIsInR5cCI6IkpXVCJ9eyJhb
IP地址:::1
操作人员:JT
出错时间:02/01/2023 15:55:02

View File

@ -1391,6 +1391,7 @@
<Content Include="ProjectData\MainItemView.aspx" />
<Content Include="ProjectData\ProjectInformation.aspx" />
<Content Include="ProjectData\ProjectList.aspx" />
<Content Include="ProjectData\ProjectMonitorList.aspx" />
<Content Include="ProjectData\ProjectSet.aspx" />
<Content Include="ProjectData\ProjectSetMap.aspx" />
<Content Include="ProjectData\ProjectSetSave.aspx" />
@ -13787,6 +13788,13 @@
<Compile Include="ProjectData\ProjectList.aspx.designer.cs">
<DependentUpon>ProjectList.aspx</DependentUpon>
</Compile>
<Compile Include="ProjectData\ProjectMonitorList.aspx.cs">
<DependentUpon>ProjectMonitorList.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="ProjectData\ProjectMonitorList.aspx.designer.cs">
<DependentUpon>ProjectMonitorList.aspx</DependentUpon>
</Compile>
<Compile Include="ProjectData\ProjectSet.aspx.cs">
<DependentUpon>ProjectSet.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
@ -16207,7 +16215,6 @@
</FlavorProperties>
</VisualStudio>
</ProjectExtensions>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">

View File

@ -125,6 +125,9 @@
<f:MenuButton ID="btnEnter" EnablePostBack="true" runat="server" Icon="Outline" Text="进入项目"
OnClick="btnEnter_Click">
</f:MenuButton>
<f:MenuButton ID="btnMonitor" EnablePostBack="true" runat="server" Icon="Outline" Text="关联摄像头"
OnClick="btnMonitor_Click">
</f:MenuButton>
<f:MenuButton ID="btnView" EnablePostBack="true" runat="server" Icon="Find" Text="查看"
OnClick="btnView_Click">
</f:MenuButton>

View File

@ -1,6 +1,8 @@
using BLL;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
@ -9,6 +11,20 @@ namespace FineUIPro.Web.ProjectData
{
public partial class ProjectList : PageBase
{
/// <summary>
/// 定义项
/// </summary>
public string URLToken
{
get
{
return (string)ViewState["URLToken"];
}
set
{
ViewState["URLToken"] = value;
}
}
#region
/// <summary>
/// 加载页面
@ -116,6 +132,47 @@ namespace FineUIPro.Web.ProjectData
}
PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("ProjectSetView.aspx?ProjectId={0}", Grid1.SelectedRowID, "查看 - ")));
}
/// <summary>
/// 关联摄像头
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnMonitor_Click(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(Grid1.SelectedRowID))
{
string url = ConfigurationManager.AppSettings["Video_URL"];
string username = ConfigurationManager.AppSettings["Video_USER"];
string password = ConfigurationManager.AppSettings["Video_PW"];
if (string.IsNullOrEmpty(URLToken))
{
String res = BLL.CommonService.CreateGetHttpResponse(url + "api/v1/login?username=" + username + "&password=" + Funs.EncryptionPassword(password));
Dictionary<string, string> dicres = JsonConvert.DeserializeObject<Dictionary<string, string>>(res);
URLToken = dicres["URLToken"];
}
var project = Funs.DB.Base_Project.FirstOrDefault(x => x.ProjectId == Grid1.SelectedRowID);
string resUserInfor = BLL.CommonService.CreateGetHttpResponse(url + "api/v1/user/info?token=" + URLToken + "&username=" + project.ProjectCode);
if ("user not found".Equals(resUserInfor) || "远程服务器返回错误: (400) 错误的请求。".Equals(resUserInfor))
{
string resUserSave = BLL.CommonService.CreateGetHttpResponse(url + "api/v1/user/save?token=" + URLToken + "&ID=0&Username=" + project.ProjectCode + "&Role=操作员,观众&Enable=true");
Dictionary<string, string> dicUserSave = JsonConvert.DeserializeObject<Dictionary<string, string>>(resUserSave);
project.MonitorId = dicUserSave["ID"];
string newPassWord = Funs.EncryptionPassword(DateTime.Now.Ticks.ToString());
newPassWord = newPassWord.Substring(newPassWord.Length - 9, 8);
string resResPS = BLL.CommonService.CreateGetHttpResponse(url + "api/v1/user/resetpassword?token=" + URLToken + "&id=" + dicUserSave["ID"] + "&password="+ newPassWord);
project.MonitorPW = newPassWord;
Funs.DB.SubmitChanges();
}
PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("ProjectMonitorList.aspx?ProjectCode={0}&Id={1}&URLToken={2}", project.ProjectCode, project.MonitorId, URLToken, "查看 - ")));
}
else
{
ShowNotify("请选择项目进入!", MessageBoxIcon.Warning);
}
}
/// <summary>
/// 查看

View File

@ -7,11 +7,13 @@
// </自动生成>
//------------------------------------------------------------------------------
namespace FineUIPro.Web.ProjectData {
public partial class ProjectList {
namespace FineUIPro.Web.ProjectData
{
public partial class ProjectList
{
/// <summary>
/// form1 控件。
/// </summary>
@ -20,7 +22,7 @@ namespace FineUIPro.Web.ProjectData {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlForm form1;
/// <summary>
/// PageManager1 控件。
/// </summary>
@ -29,7 +31,7 @@ namespace FineUIPro.Web.ProjectData {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.PageManager PageManager1;
/// <summary>
/// Panel1 控件。
/// </summary>
@ -38,7 +40,7 @@ namespace FineUIPro.Web.ProjectData {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Panel Panel1;
/// <summary>
/// Grid1 控件。
/// </summary>
@ -47,7 +49,7 @@ namespace FineUIPro.Web.ProjectData {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Grid Grid1;
/// <summary>
/// Toolbar2 控件。
/// </summary>
@ -56,7 +58,7 @@ namespace FineUIPro.Web.ProjectData {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Toolbar Toolbar2;
/// <summary>
/// ckState 控件。
/// </summary>
@ -65,7 +67,7 @@ namespace FineUIPro.Web.ProjectData {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.RadioButtonList ckState;
/// <summary>
/// txtProjectName 控件。
/// </summary>
@ -74,7 +76,7 @@ namespace FineUIPro.Web.ProjectData {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtProjectName;
/// <summary>
/// btnOut 控件。
/// </summary>
@ -83,7 +85,7 @@ namespace FineUIPro.Web.ProjectData {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnOut;
/// <summary>
/// lblNumber 控件。
/// </summary>
@ -92,7 +94,7 @@ namespace FineUIPro.Web.ProjectData {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.WebControls.Label lblNumber;
/// <summary>
/// lblCM 控件。
/// </summary>
@ -101,7 +103,7 @@ namespace FineUIPro.Web.ProjectData {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.WebControls.Label lblCM;
/// <summary>
/// Label1 控件。
/// </summary>
@ -110,7 +112,7 @@ namespace FineUIPro.Web.ProjectData {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.WebControls.Label Label1;
/// <summary>
/// Label2 控件。
/// </summary>
@ -119,7 +121,7 @@ namespace FineUIPro.Web.ProjectData {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.WebControls.Label Label2;
/// <summary>
/// ToolbarSeparator1 控件。
/// </summary>
@ -128,7 +130,7 @@ namespace FineUIPro.Web.ProjectData {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ToolbarSeparator ToolbarSeparator1;
/// <summary>
/// ToolbarText1 控件。
/// </summary>
@ -137,7 +139,7 @@ namespace FineUIPro.Web.ProjectData {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ToolbarText ToolbarText1;
/// <summary>
/// ddlPageSize 控件。
/// </summary>
@ -146,7 +148,7 @@ namespace FineUIPro.Web.ProjectData {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DropDownList ddlPageSize;
/// <summary>
/// Window1 控件。
/// </summary>
@ -155,7 +157,7 @@ namespace FineUIPro.Web.ProjectData {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Window Window1;
/// <summary>
/// Menu1 控件。
/// </summary>
@ -164,7 +166,7 @@ namespace FineUIPro.Web.ProjectData {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Menu Menu1;
/// <summary>
/// btnEnter 控件。
/// </summary>
@ -173,7 +175,16 @@ namespace FineUIPro.Web.ProjectData {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.MenuButton btnEnter;
/// <summary>
/// btnMonitor 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.MenuButton btnMonitor;
/// <summary>
/// btnView 控件。
/// </summary>

View File

@ -0,0 +1,84 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ProjectMonitorList.aspx.cs" Inherits="FineUIPro.Web.ProjectData.ProjectMonitorList" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>项目清单</title>
<link href="../res/css/common.css" rel="stylesheet" type="text/css" />
<style type="text/css">
.f-grid-row .f-grid-cell-inner {
white-space: normal;
word-break: break-all;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<f:PageManager ID="PageManager1" AutoSizePanelID="Panel1" runat="server" />
<f:Panel ID="Panel1" runat="server" Margin="5px" BodyPadding="5px" ShowBorder="false"
ShowHeader="false" Layout="VBox" BoxConfigAlign="Stretch" >
<Items>
<f:Grid ID="Grid1" ShowBorder="true" ShowHeader="false" Title="项目信息" IsFluid="true"
runat="server" BoxFlex="1" EnableColumnLines="true"
DataKeyNames="id" DataIDField="id" AllowSorting="true" SortField="id" SortDirection="DESC" EnableCheckBoxSelect="true"
OnSort="Grid1_Sort" AllowPaging="true" IsDatabasePaging="true" PageSize="10" OnPageIndexChange="Grid1_PageIndexChange"
OnRowSelect="Grid1_RowSelect" EnableMultiSelect="true" EnableRowSelectEvent="true"
EnableRowDeselectEvent ="true" OnRowDeselect="Grid1_RowDeselect"
EnableTextSelection="True">
<Toolbars>
<f:Toolbar ID="Toolbar2" Position="Top" runat="server" ToolbarAlign="Left">
<Items>
<f:TextBox runat="server" Label="项目名称" ID="txtProjectName" EmptyText="输入查询条件"
Width="200px" LabelWidth="80px"></f:TextBox>
<f:Button ID="btnSearch" OnClick="btnSearch_Click" runat="server" ToolTip="搜索" Icon="SystemSearch"
EnableAjax="false" DisableControlBeforePostBack="false">
</f:Button>
</Items>
</f:Toolbar>
</Toolbars>
<Columns>
<f:TemplateField ColumnID="tfNumber" Width="55px" HeaderText="序号" HeaderTextAlign="Center"
TextAlign="Center">
<ItemTemplate>
<asp:Label ID="lblNumber" runat="server" Text='<%# Grid1.PageIndex * Grid1.PageSize + Container.DataItemIndex + 1 %>'></asp:Label>
</ItemTemplate>
</f:TemplateField>
<f:RenderField Width="200px" ColumnID="serial" DataField="serial" SortField="serial"
FieldType="String" HeaderText="通道国标编码" HeaderTextAlign="Center" TextAlign="Left">
</f:RenderField>
<f:RenderField Width="200px" ColumnID="deviceName" DataField="deviceName" HeaderTextAlign="Center" SortField="deviceName" FieldType="String" TextAlign="Left"
HeaderText="项目名称">
</f:RenderField>
<f:RenderField Width="200px" ColumnID="name" DataField="name" SortField="name" FieldType="String" HeaderTextAlign="Center" ExpandUnusedSpace="true" TextAlign="Left"
HeaderText="设备名称">
</f:RenderField>
</Columns>
<PageItems>
<f:ToolbarSeparator ID="ToolbarSeparator1" runat="server">
</f:ToolbarSeparator>
<f:ToolbarText ID="ToolbarText1" runat="server" Text="每页记录数:">
</f:ToolbarText>
<f:DropDownList runat="server" ID="ddlPageSize" Width="80px" AutoPostBack="true"
OnSelectedIndexChanged="ddlPageSize_SelectedIndexChanged">
</f:DropDownList>
</PageItems>
</f:Grid>
</Items>
</f:Panel>
</form>
<script type="text/javascript">
function reloadGrid() {
__doPostBack(null, 'reloadGrid');
}
</script>
</body>
</html>

View File

@ -0,0 +1,216 @@
using BLL;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
namespace FineUIPro.Web.ProjectData
{
public partial class ProjectMonitorList : PageBase
{
/// <summary>
/// 定义项
/// </summary>
public string ProjectCode
{
get
{
return (string)ViewState["ProjectCode"];
}
set
{
ViewState["ProjectCode"] = value;
}
}
public string Id
{
get
{
return (string)ViewState["Id"];
}
set
{
ViewState["Id"] = value;
}
}
public string Devices
{
get
{
string url = ConfigurationManager.AppSettings["Video_URL"];
string res = APIGetHttpService.Http(url + "api/v1/user/channellist?token=" + URLToken + "&id=" + Id + "&related=true");
string devices = "";
JObject jObject = (JObject)JsonConvert.DeserializeObject(res);
JArray channelList = jObject.Value<JArray>("ChannelList");
HashSet<string> set = new HashSet<string>();
foreach (var c in channelList)
{
set.Add(c["DeviceID"] + ":" + c["ID"]);
}
if (set.Count > 0)
{
devices = string.Join(",", set);
}
return devices;
}
set
{
ViewState["Devices"] = value;
}
}
/// <summary>
/// 定义项
/// </summary>
public string URLToken
{
get
{
return (string)ViewState["URLToken"];
}
set
{
ViewState["URLToken"] = value;
}
}
#region
/// <summary>
/// 加载页面
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
this.ProjectCode = Request.QueryString["ProjectCode"];
this.URLToken = Request.QueryString["URLToken"];
this.Id = Request.QueryString["Id"];
Funs.DropDownPageSize(this.ddlPageSize);
if (this.CurrUser != null && this.CurrUser.PageSize.HasValue)
{
Grid1.PageSize = this.CurrUser.PageSize.Value;
}
this.ddlPageSize.SelectedValue = Grid1.PageSize.ToString();
// 绑定表格
this.BindGrid();
}
}
#endregion
#region
/// <summary>
/// 绑定数据
/// </summary>
private void BindGrid()
{
DataTable dt = new DataTable();
dt.Columns.Add("id");
dt.Columns.Add("name");
dt.Columns.Add("serial");
dt.Columns.Add("deviceName");
string url = ConfigurationManager.AppSettings["Video_URL"];
List<string> urls = new List<string>();
string res = APIGetHttpService.Http(url + "api/v1/device/channeltree?token=" + URLToken);
List<Dictionary<string, string>> jsonNvr = JsonConvert.DeserializeObject<List<Dictionary<string, string>>>(res);
foreach (Dictionary<string, string> nvr in jsonNvr)
{
if (string.IsNullOrEmpty(txtProjectName.Text.Trim()) || nvr["customName"].Contains(txtProjectName.Text.Trim()))
{
string jsonCameras = APIGetHttpService.Http(url + "api/v1/device/channeltree?token=" + URLToken + "&serial=" + nvr["serial"]);
List<Dictionary<string, string>> jsonDiv = JsonConvert.DeserializeObject<List<Dictionary<string, string>>>(jsonCameras);
foreach (Dictionary<string, string> div in jsonDiv)
{
var rowDiv = dt.NewRow();
rowDiv["id"] = div["id"];
rowDiv["deviceName"] = nvr["customName"];
if (!string.IsNullOrEmpty(div["customName"]))
{
rowDiv["name"] = div["customName"];
}
else
{
rowDiv["name"] = div["name"];
}
rowDiv["serial"] = div["code"];
dt.Rows.Add(rowDiv);
}
}
}
Grid1.RecordCount = dt.Rows.Count;
Grid1.DataSource = this.GetPagedDataTable(Grid1, dt);
Grid1.DataBind();
if (!string.IsNullOrEmpty(Devices))
{
Grid1.SelectedRowIDArray = Devices.Split(',');
}
}
#endregion
#region Grid
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e)
{
BindGrid();
}
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e)
{
Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue);
BindGrid();
}
protected void Grid1_Sort(object sender, FineUIPro.GridSortEventArgs e)
{
BindGrid();
}
#endregion
protected void btnSearch_Click(object sender, EventArgs e)
{
BindGrid();
}
protected void Grid1_RowSelect(object sender, GridRowSelectEventArgs e)
{
string url = ConfigurationManager.AppSettings["Video_URL"];
APIGetHttpService.Http(url + "api/v1/user/savechannels?token=" + URLToken + "&id=" + Id + "&channels[]=" + e.RowID);
}
protected void Grid1_RowDeselect(object sender, GridRowSelectEventArgs e)
{
string url = ConfigurationManager.AppSettings["Video_URL"];
APIGetHttpService.Http(url + "api/v1/user/removechannels?token=" + URLToken + "&id=" + Id + "&channels[]=" + e.RowID);
}
}
}

View File

@ -0,0 +1,116 @@
//------------------------------------------------------------------------------
// <自动生成>
// 此代码由工具生成。
//
// 对此文件的更改可能导致不正确的行为,如果
// 重新生成代码,则所做更改将丢失。
// </自动生成>
//------------------------------------------------------------------------------
namespace FineUIPro.Web.ProjectData
{
public partial class ProjectMonitorList
{
/// <summary>
/// form1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlForm form1;
/// <summary>
/// PageManager1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.PageManager PageManager1;
/// <summary>
/// Panel1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Panel Panel1;
/// <summary>
/// Grid1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Grid Grid1;
/// <summary>
/// Toolbar2 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Toolbar Toolbar2;
/// <summary>
/// txtProjectName 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtProjectName;
/// <summary>
/// btnSearch 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnSearch;
/// <summary>
/// lblNumber 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.WebControls.Label lblNumber;
/// <summary>
/// ToolbarSeparator1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ToolbarSeparator ToolbarSeparator1;
/// <summary>
/// ToolbarText1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ToolbarText ToolbarText1;
/// <summary>
/// ddlPageSize 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DropDownList ddlPageSize;
}
}

View File

@ -26,7 +26,9 @@
<!--附件上传物理路径-->
<add key="localRoot" value="D:\ChengDa\SGGL_CD\SGGL\FineUIPro.Web\" />
<!--视频服务器-->
<add key="Video_URL" value="http://sggljk.chengda.com:10000/" />
<add key="Video_URL" value="https://sggl.hfnbd.com/" />
<add key="Video_USER" value="admin"/>
<add key="Video_PW" value="admin"/>
<!--跳转小程序类型developer为开发版trial为体验版formal为正式版默认为正式版-->
<add key="miniprogram_state" value="developer" />
</appSettings>

View File

@ -420,6 +420,13 @@
EnableMaximize="true" EnableResize="false">
</f:Window>
<asp:XmlDataSource ID="XmlDataSource1" runat="server" EnableCaching="false"></asp:XmlDataSource>
<f:SimpleForm ID="SimpleForm1" runat="server" ShowBorder="true" ShowHeader="false" Hidden="true"
LabelWidth="80px" BodyPadding="5px" Width="350px">
<Items>
<f:HiddenField runat="server" ID="hfProjectCode" ></f:HiddenField>
<f:HiddenField runat="server" ID="hfMonitorPW" ></f:HiddenField>
</Items>
</f:SimpleForm>
</form>
<script type="text/javascript">
var toolRefreshClientID = '<%= toolRefresh.ClientID %>';
@ -640,12 +647,18 @@
var videoURL ='<%=VideoURL %>'
function openVideo() {
if (videoURL) {
window.open(videoURL, '_blank');
}
else {
alert("您没有权限!");
}
}
var username = $('#<%= hfProjectCode.ClientID %>-inputEl').val()
var password = $('#<%= hfMonitorPW.ClientID %>-inputEl').val();
if (password != "") {
window.open(videoURL + "login.html?username=" + username + "&password=" + password, '_blank');
} else {
alert("该项目未关联监控信息!");
}
}
else {
alert("您没有权限!");
}
}
// 激活选项卡,并刷新其中的内容,示例:表格控件->杂项->在新标签页中打开(关闭后更新父选项卡中的表格)
function activeTabAndUpdate(tabId, param1) {

View File

@ -4,6 +4,7 @@ using System;
using System.Collections.Generic;
using System.Configuration;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Web;
@ -387,7 +388,31 @@ namespace FineUIPro.Web
Alert.ShowInTop("当前密码不安全,请尽快更改!", MessageBoxIcon.Warning);
}
if (CurrUser.IsOffice.HasValue && CurrUser.IsOffice.Value)
{
string username = ConfigurationManager.AppSettings["Video_USER"];
string password = ConfigurationManager.AppSettings["Video_PW"];
this.hfProjectCode.Text = username;
this.hfMonitorPW.Text = Funs.EncryptionPassword(password);
}
else
{
var project = Funs.DB.Base_Project.FirstOrDefault(x => x.ProjectId == CurrUser.LoginProjectId);
if (project != null && !string.IsNullOrEmpty(project.ProjectCode))
{
this.hfProjectCode.Text = project.ProjectCode;
}
if (project != null && !string.IsNullOrEmpty(project.MonitorPW))
{
this.hfMonitorPW.Text = Funs.EncryptionPassword(project.MonitorPW);
}
else
{
this.hfMonitorPW.Text = "";
}
}
}
}
@ -587,6 +612,31 @@ namespace FineUIPro.Web
this.CurrUser.LoginProjectId = this.drpProject.SelectedValue;
PageContext.RegisterStartupScript("parent.removeActiveTab();");
MenuSwitchMethod(this.CurrUser.LastMenuType);
if (CurrUser.IsOffice.HasValue && CurrUser.IsOffice.Value)
{
string username = ConfigurationManager.AppSettings["Video_USER"];
string password = ConfigurationManager.AppSettings["Video_PW"];
this.hfProjectCode.Text = username;
this.hfMonitorPW.Text = Funs.EncryptionPassword(password);
}
else
{
var project = Funs.DB.Base_Project.FirstOrDefault(x => x.ProjectId == CurrUser.LoginProjectId);
if (project != null && !string.IsNullOrEmpty(project.ProjectCode))
{
this.hfProjectCode.Text = project.ProjectCode;
}
if (project != null && !string.IsNullOrEmpty(project.MonitorPW))
{
this.hfMonitorPW.Text = Funs.EncryptionPassword(project.MonitorPW);
}
else
{
this.hfMonitorPW.Text = "";
}
}
}
/// <summary>
@ -776,7 +826,7 @@ namespace FineUIPro.Web
{
if (CommonService.IsHaveSystemPower(this.CurrUser.UserId, Const.Menu_Video, this.drpProject.SelectedValue))
{
return ConfigurationManager.AppSettings["Video_URL"] + "#/screen";
return ConfigurationManager.AppSettings["Video_URL"] ;
}
else
{

View File

@ -499,5 +499,32 @@ namespace FineUIPro.Web
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.WebControls.XmlDataSource XmlDataSource1;
/// <summary>
/// SimpleForm1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.SimpleForm SimpleForm1;
/// <summary>
/// hfProjectCode 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.HiddenField hfProjectCode;
/// <summary>
/// hfMonitorPW 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.HiddenField hfMonitorPW;
}
}

View File

@ -23849,6 +23849,10 @@ namespace Model
private System.Nullable<decimal> _Progress;
private string _MonitorPW;
private string _MonitorId;
private EntitySet<Accident_AccidentHandle> _Accident_AccidentHandle;
private EntitySet<Accident_AccidentPersonRecord> _Accident_AccidentPersonRecord;
@ -24467,6 +24471,10 @@ namespace Model
partial void OnProjectState2Changed();
partial void OnProgressChanging(System.Nullable<decimal> value);
partial void OnProgressChanged();
partial void OnMonitorPWChanging(string value);
partial void OnMonitorPWChanged();
partial void OnMonitorIdChanging(string value);
partial void OnMonitorIdChanged();
#endregion
public Base_Project()
@ -25378,6 +25386,46 @@ namespace Model
}
}
[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_MonitorPW", DbType="NVarChar(50)")]
public string MonitorPW
{
get
{
return this._MonitorPW;
}
set
{
if ((this._MonitorPW != value))
{
this.OnMonitorPWChanging(value);
this.SendPropertyChanging();
this._MonitorPW = value;
this.SendPropertyChanged("MonitorPW");
this.OnMonitorPWChanged();
}
}
}
[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_MonitorId", DbType="NVarChar(50)")]
public string MonitorId
{
get
{
return this._MonitorId;
}
set
{
if ((this._MonitorId != value))
{
this.OnMonitorIdChanging(value);
this.SendPropertyChanging();
this._MonitorId = value;
this.SendPropertyChanged("MonitorId");
this.OnMonitorIdChanged();
}
}
}
[global::System.Data.Linq.Mapping.AssociationAttribute(Name="FK_Accident_AccidentHandle_Base_Project", Storage="_Accident_AccidentHandle", ThisKey="ProjectId", OtherKey="ProjectId", DeleteRule="NO ACTION")]
public EntitySet<Accident_AccidentHandle> Accident_AccidentHandle
{
@ -389192,10 +389240,6 @@ namespace Model
private string _WorkPostNames;
private string _DepartIds;
private string _DepartNames;
private string _AItem;
private string _BItem;
@ -389218,6 +389262,10 @@ namespace Model
private string _AnswerItems;
private string _DepartIds;
private string _DepartNames;
public View_Training_TestTrainingItem()
{
}
@ -389430,38 +389478,6 @@ namespace Model
}
}
[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_DepartIds", DbType="NVarChar(4000)")]
public string DepartIds
{
get
{
return this._DepartIds;
}
set
{
if ((this._DepartIds != value))
{
this._DepartIds = value;
}
}
}
[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_DepartNames", DbType="NVarChar(MAX)", UpdateCheck=UpdateCheck.Never)]
public string DepartNames
{
get
{
return this._DepartNames;
}
set
{
if ((this._DepartNames != value))
{
this._DepartNames = value;
}
}
}
[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_AItem", DbType="NVarChar(500)")]
public string AItem
{
@ -389637,6 +389653,38 @@ namespace Model
}
}
}
[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_DepartIds", DbType="NVarChar(4000)")]
public string DepartIds
{
get
{
return this._DepartIds;
}
set
{
if ((this._DepartIds != value))
{
this._DepartIds = value;
}
}
}
[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_DepartNames", DbType="NVarChar(MAX)", UpdateCheck=UpdateCheck.Never)]
public string DepartNames
{
get
{
return this._DepartNames;
}
set
{
if ((this._DepartNames != value))
{
this._DepartNames = value;
}
}
}
}
[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.View_Training_TrainingItem")]